From afb9e02b207bbfe2866994fea4797e51e866f0b2 Mon Sep 17 00:00:00 2001 From: yuanye <418471657@qq.com> Date: Tue, 6 Aug 2024 18:06:27 +0800 Subject: [PATCH 1/2] 1 --- .../com/bweb/controller/TestController.java | 55 +- .../controller/goods/GoodsController.java | 36 + .../main/java/com/cweb/config/AuthConfig.java | 1 + .../discount/DiscountController.java | 62 ++ .../qianZhu/StarbucksController.java | 218 +++++ hs_err_pid3479.log | 807 ++++++++++++++++++ .../business/BsOrderGoodsController.java | 4 +- .../com/hfkj/common/utils/CommonUtil.java | 19 + .../com/hfkj/common/utils/StarbucksUtil.java | 146 ++++ .../java/com/hfkj/config/CommonSysConfig.java | 1 + .../java/com/hfkj/dao/BsOrderMapperExt.java | 46 +- .../dao/CouponDiscountGoodsRelMapperExt.java | 27 + .../com/hfkj/model/goods/GoodsModelSpecs.java | 5 + .../hfkj/qianzhu/channel/QianZhuService.java | 25 +- .../qianzhu/channel/StarbucksService.java | 183 ++++ .../discount/CouponDiscountService.java | 8 + .../impl/CouponDiscountServiceImpl.java | 5 +- .../CouponDiscountUserRelServiceImpl.java | 3 + .../goods/BsOrderStarbucksService.java | 95 +++ .../hfkj/service/goods/GoodsJumpService.java | 83 ++ .../impl/BsOrderStarbucksServiceImpl.java | 108 +++ .../goods/impl/GoodsJumpServiceImpl.java | 69 ++ .../goods/impl/GoodsMsgServiceImpl.java | 23 + .../service/order/OrderCreateService.java | 147 +++- .../service/order/OrderPaySuccessService.java | 23 +- .../order/impl/BsOrderChildServiceImpl.java | 97 ++- .../order/impl/BsOrderServiceImpl.java | 13 +- .../order/OrderChildProductTypeEnum.java | 1 + .../order/OrderStarbucksStatusEnum.java | 54 ++ .../resources/dev/commonConfig.properties | 11 +- .../resources/prod/commonConfig.properties | 1 + 31 files changed, 2320 insertions(+), 56 deletions(-) create mode 100644 cweb/src/main/java/com/cweb/controller/qianZhu/StarbucksController.java create mode 100644 hs_err_pid3479.log create mode 100644 service/src/main/java/com/hfkj/common/utils/CommonUtil.java create mode 100644 service/src/main/java/com/hfkj/common/utils/StarbucksUtil.java create mode 100644 service/src/main/java/com/hfkj/qianzhu/channel/StarbucksService.java create mode 100644 service/src/main/java/com/hfkj/service/goods/BsOrderStarbucksService.java create mode 100644 service/src/main/java/com/hfkj/service/goods/GoodsJumpService.java create mode 100644 service/src/main/java/com/hfkj/service/goods/impl/BsOrderStarbucksServiceImpl.java create mode 100644 service/src/main/java/com/hfkj/service/goods/impl/GoodsJumpServiceImpl.java create mode 100644 service/src/main/java/com/hfkj/sysenum/order/OrderStarbucksStatusEnum.java diff --git a/bweb/src/main/java/com/bweb/controller/TestController.java b/bweb/src/main/java/com/bweb/controller/TestController.java index 2f64fd3..10b66ee 100644 --- a/bweb/src/main/java/com/bweb/controller/TestController.java +++ b/bweb/src/main/java/com/bweb/controller/TestController.java @@ -1,13 +1,17 @@ package com.bweb.controller; - import com.alibaba.fastjson.JSONObject; - import com.hfkj.common.exception.ErrorCode; import com.hfkj.common.exception.ErrorHelp; import com.hfkj.common.exception.SysCode; import com.hfkj.common.utils.OrderUtil; import com.hfkj.common.utils.ResponseMsgUtil; +import com.hfkj.entity.CouponDiscountGoodsRel; +import com.hfkj.entity.GoodsMsg; +import com.hfkj.entity.GoodsSpecs; import com.hfkj.model.ResponseData; +import com.hfkj.service.discount.CouponDiscountService; +import com.hfkj.service.goods.GoodsMsgService; +import com.hfkj.service.goods.GoodsSpecsService; import com.hfkj.service.hlt.HltCanteenService; import com.hfkj.service.hlt.HuiLianTongUnionCardService; import io.swagger.annotations.Api; @@ -21,6 +25,9 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; @Controller @RequestMapping(value="/test") @@ -28,6 +35,15 @@ import org.springframework.web.bind.annotation.ResponseBody; public class TestController { private static Logger log = LoggerFactory.getLogger(TestController.class); + @Resource + private GoodsMsgService goodsMsgService; + + @Resource + private GoodsSpecsService goodsSpecsService; + + @Resource + private CouponDiscountService couponDiscountService; + @RequestMapping(value="/canteenConsume",method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "食堂消费") @@ -49,4 +65,39 @@ public class TestController { return ResponseMsgUtil.exception(e); } } + + @RequestMapping(value="/bindDiscountSpecs",method = RequestMethod.GET) + @ResponseBody + @ApiOperation(value = "根据类型绑定") + public ResponseData bindDiscountSpecs(@RequestParam(value = "goodsType" , required = false) Integer goodsType , + @RequestParam(value = "discountId" , required = false) Long discountId) { + try { + + Map map = new HashMap<>(); + map.put("goodsType" , goodsType); + List goodsMsg = goodsMsgService.getList(map); + List specsList = goodsSpecsService.getList(map); + + List goodsRelList = new ArrayList<>(); + for (GoodsMsg goods : goodsMsg) { + List list = specsList.stream().filter(specs -> specs.getGoodsId().equals(goods.getId())). + collect(Collectors.toList()); + for (GoodsSpecs goodsSpecs : list) { + CouponDiscountGoodsRel goodsRel = new CouponDiscountGoodsRel(); + goodsRel.setDiscountId(discountId); + goodsRel.setSpecsId(goodsSpecs.getId()); + goodsRel.setCreateTime(new Date()); + goodsRel.setStatus(1); + goodsRelList.add(goodsRel); + + } + } + couponDiscountService.insertGoodsRelBatch(goodsRelList); + return ResponseMsgUtil.success("成功"); + + } catch (Exception e) { + log.error("error!",e); + return ResponseMsgUtil.exception(e); + } + } } diff --git a/bweb/src/main/java/com/bweb/controller/goods/GoodsController.java b/bweb/src/main/java/com/bweb/controller/goods/GoodsController.java index 584f6b8..0206c5e 100644 --- a/bweb/src/main/java/com/bweb/controller/goods/GoodsController.java +++ b/bweb/src/main/java/com/bweb/controller/goods/GoodsController.java @@ -60,6 +60,9 @@ public class GoodsController { @Resource private GoodsUserAddressService deliveryAddressService; + @Resource + private GoodsJumpService goodsJumpService; + @RequestMapping(value="/editGoodsMsg",method = RequestMethod.POST) @ResponseBody @ApiOperation(value = "编辑商品信息") @@ -171,6 +174,7 @@ public class GoodsController { GoodsSpecs goodsSpecs; GoodsVpd goodsVpd; + GoodsJump goodsJump; if (body.getId() != null) { // 查询规格 @@ -200,6 +204,34 @@ public class GoodsController { goodsSpecsService.create(goodsSpecs); } + // 判断产品是否是实物产品 + if (goodsMsg.getType() == 1) { + // 判断必填项 + if ( goodsSpecs.getId() == null) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, ""); + } + + // 查询实物产品跳转内容 + goodsJump = goodsJumpService.queryDetailBySpecsId(goodsSpecs.getId()); + if (goodsJump == null) { + goodsJump = new GoodsJump(); + goodsJump.setCreateTime(new Date()); + } + + goodsJump.setSpecsId(goodsSpecs.getId()); + goodsJump.setBtnName(body.getBtnName()); + goodsJump.setJumpType(body.getJumpType()); + goodsJump.setJumpUrl(body.getJumpUrl()); + goodsJump.setAppid(body.getAppid()); + goodsJump.setUpdateTime(new Date()); + + if (goodsJump.getId() != null) { + goodsJumpService.update(goodsJump); + } else { + goodsJumpService.create(goodsJump); + } + } + // 判断当前商品是否是虚拟商品 if(goodsMsg.getType() == 2) { // 判断必填项 @@ -316,6 +348,10 @@ public class GoodsController { if (goodsVpd != null) { BeanUtils.copyProperties(goodsVpd, goodsModelSpec); } + GoodsJump goodsJump = goodsJumpService.queryDetailBySpecsId(goodsSpec.getId()); + if (goodsJump != null) { + BeanUtils.copyProperties(goodsJump, goodsModelSpec); + } goodsModelSpec.setSpecsId(goodsSpec.getId()); goodsModelSpecs.add(goodsModelSpec); } diff --git a/cweb/src/main/java/com/cweb/config/AuthConfig.java b/cweb/src/main/java/com/cweb/config/AuthConfig.java index 7cfd592..a39b69e 100644 --- a/cweb/src/main/java/com/cweb/config/AuthConfig.java +++ b/cweb/src/main/java/com/cweb/config/AuthConfig.java @@ -92,6 +92,7 @@ public class AuthConfig implements WebMvcConfigurer { .excludePathPatterns("/fileUpload/*") .excludePathPatterns("/wxMsg/*") .excludePathPatterns("/cinema/*") + .excludePathPatterns("/starbucks/*") ; } diff --git a/cweb/src/main/java/com/cweb/controller/discount/DiscountController.java b/cweb/src/main/java/com/cweb/controller/discount/DiscountController.java index 2637692..07032b3 100644 --- a/cweb/src/main/java/com/cweb/controller/discount/DiscountController.java +++ b/cweb/src/main/java/com/cweb/controller/discount/DiscountController.java @@ -14,6 +14,9 @@ import com.hfkj.model.ResponseData; import com.hfkj.model.SecUserSessionObject; import com.hfkj.model.UserSessionObject; import com.hfkj.model.discount.DiscountGoodsModel; +import com.hfkj.service.CommonService; +import com.hfkj.service.SecDictionaryService; +import com.hfkj.service.discount.CouponDiscountPackageService; import com.hfkj.service.discount.CouponDiscountService; import com.hfkj.service.discount.CouponDiscountUserRelService; import com.hfkj.service.goods.impl.GoodsMsgServiceImpl; @@ -51,6 +54,11 @@ public class DiscountController { private CouponDiscountUserRelService discountUserRelService; @Resource private CouponDiscountService couponDiscountService; + @Resource + private CouponDiscountPackageService couponDiscountPackageService; + + @Resource + private SecDictionaryService dictionaryService; @RequestMapping(value = "/getListUserDiscount", method = RequestMethod.GET) @ResponseBody @@ -136,11 +144,65 @@ public class DiscountController { } } + @RequestMapping(value = "/giveDiscountPackage", method = RequestMethod.POST) + @ResponseBody + @ApiOperation(value = "赠送券包") + public ResponseData giveDiscountPackage(@RequestBody JSONObject body) { + try { + + if ( body == null + || body.getInteger("discountPackageId") == null + || body.getString("phone") == null + ) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, ""); + } + + couponDiscountPackageService.giveDiscountPackage(body.getInteger("discountPackageId") , body.getString("phone")); + + return ResponseMsgUtil.success("成功!"); + + } catch (Exception e) { + log.error("HighOrderController --> getUserOrderList() error!", e); + return ResponseMsgUtil.exception(e); + } + } + private static Predicate distinctByKey(Function keyExtractor) { Set seen = ConcurrentHashMap.newKeySet(); return t -> seen.add(keyExtractor.apply(t)); } + @RequestMapping(value = "/userDiscount", method = RequestMethod.GET) + @ResponseBody + @ApiOperation(value = "用户送券") + public ResponseData userDiscount(@RequestParam(value = "code", required = true) String code) { + try { + // 用户session + UserSessionObject userSession = userCenter.getSessionModel(UserSessionObject.class); + List dictionary = dictionaryService.getDictionary(code); + + if (!dictionary.isEmpty()) { + for (SecDictionary secDictionary : dictionary) { + Map map = new HashMap<>(); + map.put("userId", userSession.getUser().getId()); + map.put("status", 1); + map.put("discountId", secDictionary.getCodeValue()); + + List list = discountUserRelService.getList(map); + if (!list.isEmpty()) { + couponDiscountPackageService.giveDiscountPackage(Integer.valueOf(secDictionary.getCodeName()), userSession.getUser().getPhone()); + } + + } + } + + return ResponseMsgUtil.success("送券成功"); + + } catch (Exception e) { + log.error("GoodsDetailController --> getListUser() error!", e); + return ResponseMsgUtil.exception(e); + } + } } diff --git a/cweb/src/main/java/com/cweb/controller/qianZhu/StarbucksController.java b/cweb/src/main/java/com/cweb/controller/qianZhu/StarbucksController.java new file mode 100644 index 0000000..434c5b0 --- /dev/null +++ b/cweb/src/main/java/com/cweb/controller/qianZhu/StarbucksController.java @@ -0,0 +1,218 @@ +package com.cweb.controller.qianZhu; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.hfkj.common.utils.PageUtil; +import com.hfkj.common.utils.ResponseMsgUtil; +import com.hfkj.common.utils.StarbucksUtil; +import com.hfkj.entity.BsProductConfig; +import com.hfkj.model.ResponseData; +import com.hfkj.qianzhu.channel.StarbucksService; +import com.hfkj.service.BsProductConfigService; +import com.hfkj.sysenum.order.OrderChildProductTypeEnum; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.atomic.AtomicReference; +import java.util.stream.Collectors; + +@Controller +@RequestMapping(value="/starbucks") +@Api(value="星巴克") +public class StarbucksController { + private static Logger log = LoggerFactory.getLogger(StarbucksController.class); + @Resource + private BsProductConfigService productConfigService; + + @RequestMapping(value="/starbucksStores",method = RequestMethod.GET) + @ResponseBody + @ApiOperation(value = "查询星巴克门店") + public ResponseData starbucksStores(@RequestParam(name = "name", required = false) String name, + @RequestParam(name = "lat", required = true) String lat, + @RequestParam(name = "lon", required = true) String lon , + @RequestParam(value = "pageNum" , required = true) Integer pageNum, + @RequestParam(value = "pageSize" , required = true) Integer pageSize) { + try { + + Map params = new HashMap<>(); + + params.put("lat", lat); + params.put("lon", lon); + List list = StarbucksService.starbucksStoresList(params); + if (name != null) { + list = list.stream() + .filter(s -> s.getString("name").contains(name)) // 使用contains方法进行模糊查询 + .collect(Collectors.toList()); // 将结果收集到列表中 + } + + return ResponseMsgUtil.success(PageUtil.initPageInfoObj(pageNum, list.size(), pageSize, new PageInfo<>(list))); + + } catch (Exception e) { + log.error("error!",e); + return ResponseMsgUtil.exception(e); + } + } + + @RequestMapping(value="/starbucksProducts",method = RequestMethod.GET) + @ResponseBody + @ApiOperation(value = "查询星巴克产品") + public ResponseData starbucksProducts( + @RequestParam(name = "code", required = false) String code, + @RequestParam(name = "lat", required = true) String lat, + @RequestParam(name = "lon", required = true) String lon) { + try { + + Map params = new HashMap<>(); + + params.put("lat", lat); + params.put("lon", lon); + + List list = StarbucksService.starbucksStoresList(params); + + if (code != null) { + list = list.stream() + .filter(s -> s.getString("code").equals(code)) + .collect(Collectors.toList()); // 将结果收集到列表中 + } + + + List products = new ArrayList<>(); + JSONObject product = new JSONObject(); + if (!list.isEmpty()) { + JSONObject data = list.get(0); + product.put("store", data); + // 查询产品配置 + BsProductConfig productConfig = productConfigService.queryDetail(OrderChildProductTypeEnum.type4.getCode()); + + // 查询产品 + Map map = new HashMap<>(); + map.put("pageIndex", 1); + map.put("pageSize", 100000); + JSONObject object = StarbucksService.starbucksProducts(map); + if (object.getJSONObject("data") != null) { + JSONArray jsonArray = object.getJSONObject("data").getJSONArray("items"); + // 判断数据不为空 + if (!jsonArray.isEmpty()) { + for(Object obj : jsonArray) { + JSONObject item = (JSONObject) obj; + if (item.getInteger("shelfStatus") == 5) { + // 中杯售卖价 + BigDecimal tallPrice = StarbucksUtil.calculatePrice(productConfig.getDiscount() , item.getBigDecimal("salesTallPrice")); + + // 判断如果卖家 大于 原价 展示原价 + if (tallPrice.compareTo(item.getBigDecimal("marketTallPrice")) > 0) { + item.put("tallPrice" , item.getBigDecimal("marketTallPrice")); + } else { + item.put("tallPrice" , tallPrice); + } + + // 大杯销售价 + BigDecimal grandePrice = StarbucksUtil.calculatePrice(productConfig.getDiscount() , item.getBigDecimal("salesGrandePrice")); + if (grandePrice.compareTo(item.getBigDecimal("marketGrandePrice")) > 0) { + item.put("grandePrice" , item.getBigDecimal("marketGrandePrice")); + } else { + item.put("grandePrice" , grandePrice); + } + + // 超大杯销售价 + BigDecimal ventiPrice = StarbucksUtil.calculatePrice(productConfig.getDiscount() , item.getBigDecimal("salesVentiPrice")); + if (ventiPrice.compareTo(item.getBigDecimal("marketVentiPrice")) > 0) { + item.put("ventiPrice" , item.getBigDecimal("marketVentiPrice")); + } else { + item.put("ventiPrice" , ventiPrice); + } + + List dataList = new ArrayList<>(); + + JSONObject jsonObject ; + if (StringUtils.isNotBlank(item.getString("cupSize"))) { + jsonObject = new JSONObject(); + jsonObject.put("name" , "杯型"); + jsonObject.put("type" , 1); + jsonObject.put("data" , StarbucksUtil.unitLengthTransform(item.getString("cupSize") , item.getBigDecimal("tallPrice") , item.getBigDecimal("grandePrice") , item.getBigDecimal("ventiPrice"))); + dataList.add(jsonObject); + } + if (StringUtils.isNotBlank(item.getString("temperature"))) { + jsonObject = new JSONObject(); + jsonObject.put("name" , "温度"); + jsonObject.put("type" , 2); + jsonObject.put("data" , item.getString("temperature").split(",")); + dataList.add(jsonObject); + } + if (StringUtils.isNotBlank(item.getString("cream"))) { + jsonObject = new JSONObject(); + jsonObject.put("name" , "奶油"); + jsonObject.put("type" , 2); + jsonObject.put("data" , item.getString("cream").split(",")); + dataList.add(jsonObject); + } + if (StringUtils.isNotBlank(item.getString("espresso"))) { + jsonObject = new JSONObject(); + jsonObject.put("name" , "浓缩咖啡"); + jsonObject.put("type" , 2); + jsonObject.put("data" , item.getString("espresso").split(",")); + dataList.add(jsonObject); + } + if (StringUtils.isNotBlank(item.getString("milk"))) { + jsonObject = new JSONObject(); + jsonObject.put("name" , "牛奶"); + jsonObject.put("type" , 2); + jsonObject.put("data" , item.getString("milk").split(",")); + dataList.add(jsonObject); + } + if (StringUtils.isNotBlank(item.getString("milkBubble"))) { + jsonObject = new JSONObject(); + jsonObject.put("name" , "奶泡"); + jsonObject.put("type" , 2); + jsonObject.put("data" , item.getString("milkBubble").split(",")); + dataList.add(jsonObject); + } + item.put("saleData" , dataList); + + products.add(item); + + } + } + } + } + + } + + Map> collect = products.stream().collect(Collectors.groupingBy(jsonObject -> jsonObject.getString("categoryName"))); + + AtomicReference i = new AtomicReference<>(1); + List countRecords = collect.keySet().stream().map(key -> { + JSONObject goodObject = new JSONObject(true); + goodObject.put("name",key.toUpperCase()); + goodObject.put("id",i.getAndSet(i.get() + 1)); + goodObject.put("list",collect.get(key)); + return goodObject; + }).collect(Collectors.toList()); + + product.put("products", countRecords); + + return ResponseMsgUtil.success(product); + + } catch (Exception e) { + log.error("error!",e); + return ResponseMsgUtil.exception(e); + } + } +} diff --git a/hs_err_pid3479.log b/hs_err_pid3479.log new file mode 100644 index 0000000..8d24b66 --- /dev/null +++ b/hs_err_pid3479.log @@ -0,0 +1,807 @@ +# +# A fatal error has been detected by the Java Runtime Environment: +# +# SIGBUS (0xa) at pc=0x00000001022129d4, pid=3479, tid=0x0000000000007b03 +# +# JRE version: Java(TM) SE Runtime Environment (8.0_411) (build 1.8.0_411-b09) +# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.411-b09 mixed mode bsd-aarch64 compressed oops) +# Problematic frame: +# C [libzip.dylib+0x69d4] newEntry+0x68 +# +# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again +# +# If you would like to submit a bug report, please visit: +# http://bugreport.java.com/bugreport/crash.jsp +# The crash happened outside the Java Virtual Machine in native code. +# See problematic frame for where to report the bug. +# + +--------------- T H R E A D --------------- + +Current thread (0x000000012881b000): JavaThread "RMI TCP Connection(1)-192.168.0.104" daemon [_thread_in_native, id=31491, stack(0x0000000170f8c000,0x000000017118f000)] + +siginfo: si_signo: 10 (SIGBUS), si_code: 1 (BUS_ADRALN), si_addr: 0x00000001021a8d9c + +Registers: + x0=0x0000600000d1fbb0 x1=0x0000000000000000 x2=0x0000000000000000 x3=0x0000600000d1fbc0 + x4=0x0000600000d1fc00 x5=0x0000000000003bb0 x6=0x7373616c632e726f x7=0x000000012881b000 + x8=0x00000001022a0d80 x9=0x00000000000f8000 x10=0x0000f44901c90000 x11=0x0000000000000050 +x12=0x0000600002c9c734 x13=0x00000000001ff800 x14=0x00000000000007fb x15=0x00000000970068c0 +x16=0x00000001842cae70 x17=0x00000001f648a348 x18=0x00000007725c61e6 x19=0x0000600000d1fbb0 +x20=0x0000000000000000 x21=0x0000600001b94000 x22=0x00000001021a8d80 x23=0x000000002343f75b +x24=0x000000000000002f x25=0x0000000000000038 x26=0x0000000000000005 x27=0x0000600000d1fbd8 +x28=0x00000006c0053d78 fp=0x00000001711898f0 lr=0x2e608001022129a0 sp=0x0000000171189870 +pc=0x00000001022129d4 cpsr=0x0000000060001000 +Top of Stack: (sp=0x0000000171189870) +0x0000000171189870: 0000000000000000 0000000000000000 +0x0000000171189880: 0000000000000000 0000000000000000 +0x0000000171189890: 0000000000000000 0000000000000000 +0x00000001711898a0: 00000006c0053d78 000000012d008200 +0x00000001711898b0: 0000000000000005 0000000000000038 +0x00000001711898c0: 000000000000002f 000000002343f75b +0x00000001711898d0: 0000600000deedf0 0000000000000000 +0x00000001711898e0: 000000013c4d1a80 0000600001b94000 +0x00000001711898f0: 0000000171189950 0000000102212850 +0x0000000171189900: 00000006c0053d78 000060000009f200 +0x0000000171189910: 0000600001180230 0000000000000000 +0x0000000171189920: 000000013c4d1a80 0000000000000006 +0x0000000171189930: 0000600001b94000 000000013c4d1a80 +0x0000000171189940: 0000000171189a7c 000000017118999c +0x0000000171189950: 0000000171189980 00000001022131ec +0x0000000171189960: 0000000171189a7c 000000013c4d1a80 +0x0000000171189970: 0000600002e80040 0000000000000000 +0x0000000171189980: 0000000171189a60 000000010343b04c +0x0000000171189990: 0000000000000000 0000000000000000 +0x00000001711899a0: 000000012881b000 62053b8cfefe00ff +0x00000001711899b0: 000000013c01e190 0000000000000100 +0x00000001711899c0: 00000001711899e0 334280010376ceb0 +0x00000001711899d0: 0000000103885415 0000000000000100 +0x00000001711899e0: 0000000171189a00 000000010361cea8 +0x00000001711899f0: 0000000103885415 0000000171189a80 +0x0000000171189a00: 0000000171189a50 00000001037ce588 +0x0000000171189a10: 0000000000000000 0000000800000001 +0x0000000171189a20: 00000000632ac433 62053b8cfefe00ff +0x0000000171189a30: 000000013c4d1a80 0000000000000006 +0x0000000171189a40: 0000600001b98480 000000012881b000 +0x0000000171189a50: 000000012881b000 0000600002e80040 +0x0000000171189a60: 0000000171189aa0 000000010343b1f8 + +Instructions: (pc=0x00000001022129d4) +0x00000001022128d4: e0 01 00 54 15 00 80 52 98 6a 39 78 39 07 00 91 +0x00000001022128e4: e8 6a 1b 53 08 01 17 4b 17 bd 00 11 68 42 40 f9 +0x00000001022128f4: 69 8a 40 b9 ea 0a c9 1a 49 dd 09 1b 08 49 29 8b +0x0000000102212904: bc ff ff 17 7f 4e 00 f9 02 00 00 14 16 00 80 d2 +0x0000000102212914: 60 2a 40 f9 38 03 00 94 e0 03 16 aa fd 7b 45 a9 +0x0000000102212924: f4 4f 44 a9 f6 57 43 a9 f8 5f 42 a9 fa 67 41 a9 +0x0000000102212934: fc 6f c6 a8 c0 03 5f d6 3f 00 03 6b e1 00 00 54 +0x0000000102212944: 21 04 00 71 eb 00 00 54 08 14 40 38 49 14 40 38 +0x0000000102212954: 1f 01 09 6b 60 ff ff 54 00 00 80 52 c0 03 5f d6 +0x0000000102212964: 20 00 80 52 c0 03 5f d6 ff 43 02 d1 fc 6f 03 a9 +0x0000000102212974: fa 67 04 a9 f8 5f 05 a9 f6 57 06 a9 f4 4f 07 a9 +0x0000000102212984: fd 7b 08 a9 fd 03 02 91 f4 03 02 aa f6 03 01 aa +0x0000000102212994: f5 03 00 aa 00 09 80 52 5f 03 00 94 f3 03 00 aa +0x00000001022129a4: e0 12 00 b4 7f 02 00 f9 fb 03 13 aa 7f 8f 02 f8 +0x00000001022129b4: 7f 1a 00 f9 a8 c2 40 39 88 02 00 34 a8 0e 40 f9 +0x00000001022129c4: c9 06 40 f9 08 01 09 8b a9 16 40 f9 16 01 09 cb +0x00000001022129d4: d8 3a 40 79 da 7a 40 39 dc 7e 40 39 c8 42 40 79 +0x00000001022129e4: e8 17 00 f9 c8 0e 40 b9 68 06 00 f9 c8 1a 40 b9 +0x00000001022129f4: e8 0f 00 f9 68 0a 00 f9 c8 16 40 79 88 04 00 34 +0x0000000102212a04: c8 16 40 b9 23 00 00 14 d7 06 40 f9 14 0d 00 34 +0x0000000102212a14: a8 1e 40 f9 88 02 00 b4 a9 22 40 f9 3f 01 17 eb +0x0000000102212a24: 2c 02 00 54 4a fa 83 52 2a 01 0a 8b 5f 01 17 eb +0x0000000102212a34: ab 01 00 54 2a 09 40 91 08 01 17 8b 16 01 09 cb +0x0000000102212a44: c8 3a 40 79 c9 3e 40 79 cb 42 40 79 e8 02 08 8b +0x0000000102212a54: 08 01 09 8b 08 01 0b 8b 08 b9 00 91 1f 01 0a eb +0x0000000102212a64: 0d 0b 00 54 e0 03 15 aa e1 03 17 aa 02 00 84 52 +0x0000000102212a74: 7c 02 00 94 f6 03 00 aa 60 0a 00 b4 a0 1e 40 f9 +0x0000000102212a84: 0a 03 00 94 b6 de 03 a9 d2 ff ff 17 08 00 80 d2 +0x0000000102212a94: f7 03 08 aa 68 0e 00 f9 c8 12 40 b9 68 22 00 b9 +0x0000000102212aa4: c9 a2 42 b8 a8 5e 40 f9 e9 0b 00 f9 08 01 09 8b +0x0000000102212ab4: e8 03 08 cb 68 1e 00 f9 c8 12 40 79 68 42 00 b9 +0x0000000102212ac4: 00 07 00 91 14 03 00 94 f9 03 00 aa 60 02 00 f9 + + +Register to memory mapping: + + x0=0x0000600000d1fbb0 is an unknown value + x1=0x0000000000000000 is an unknown value + x2=0x0000000000000000 is an unknown value + x3=0x0000600000d1fbc0 is an unknown value + x4=0x0000600000d1fc00 is an unknown value + x5=0x0000000000003bb0 is an unknown value + x6=0x7373616c632e726f is an unknown value + x7=0x000000012881b000 is a thread + x8=0x00000001022a0d80: index2jdwp+0x13f90 in /Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/libjdwp.dylib at 0x000000010225c000 + x9=0x00000000000f8000 is an unknown value +x10=0x0000f44901c90000 is an unknown value +x11=0x0000000000000050 is an unknown value +x12=0x0000600002c9c734 is an unknown value +x13=0x00000000001ff800 is an unknown value +x14=0x00000000000007fb is an unknown value +x15=0x00000000970068c0 is an unknown value +x16=0x00000001842cae70: __bzero+0 in /usr/lib/system/libsystem_platform.dylib at 0x00000001842c7000 +x17=0x00000001f648a348 is an unknown value +x18=0x00000007725c61e6 is an unknown value +x19=0x0000600000d1fbb0 is an unknown value +x20=0x0000000000000000 is an unknown value +x21=0x0000600001b94000 is an unknown value +x22=0x00000001021a8d80 is an unknown value +x23=0x000000002343f75b is an unknown value +x24=0x000000000000002f is an unknown value +x25=0x0000000000000038 is an unknown value +x26=0x0000000000000005 is an unknown value +x27=0x0000600000d1fbd8 is an unknown value +x28=0x00000006c0053d78 is an oop +[I + - klass: {type array int} + - length: 0 + + +Stack: [0x0000000170f8c000,0x000000017118f000], sp=0x0000000171189870, free space=2038k +Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) +C [libzip.dylib+0x69d4] newEntry+0x68 +C [libzip.dylib+0x6850] ZIP_GetEntry2+0xec +C [libzip.dylib+0x71ec] ZIP_FindEntry+0x3c +V [libjvm.dylib+0x12b04c] ClassPathZipEntry::open_entry(char const*, int*, bool, Thread*)+0x70 +V [libjvm.dylib+0x12b1f8] ClassPathZipEntry::open_stream(char const*, Thread*)+0x28 +V [libjvm.dylib+0x12d568] ClassLoader::load_classfile(Symbol*, Thread*)+0x130 +V [libjvm.dylib+0x4ffcf4] SystemDictionary::load_instance_class(Symbol*, Handle, Thread*)+0x1f0 +V [libjvm.dylib+0x4fef3c] SystemDictionary::resolve_instance_class_or_null(Symbol*, Handle, Handle, Thread*)+0x400 +V [libjvm.dylib+0x4fe748] SystemDictionary::resolve_or_fail(Symbol*, Handle, Handle, bool, Thread*)+0x24 +V [libjvm.dylib+0x183b7c] ConstantPool::klass_at_impl(constantPoolHandle, int, Thread*)+0x28c +V [libjvm.dylib+0x4bc610] ConstantPool::klass_at(int, Thread*)+0x98 +V [libjvm.dylib+0x2822c4] InterpreterRuntime::_new(JavaThread*, ConstantPool*, int)+0x60 +j org.jetbrains.capture.org.objectweb.asm.SymbolTable.(Lorg/jetbrains/capture/org/objectweb/asm/ClassWriter;Lorg/jetbrains/capture/org/objectweb/asm/ClassReader;)V+46 +j org.jetbrains.capture.org.objectweb.asm.ClassWriter.(Lorg/jetbrains/capture/org/objectweb/asm/ClassReader;I)V+28 +j com.intellij.rt.debugger.agent.CaptureAgent$CaptureTransformer.transform(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/Class;Ljava/security/ProtectionDomain;[B)[B+57 +J 5 C1 sun.instrument.TransformerManager.transform(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/Class;Ljava/security/ProtectionDomain;[B)[B (98 bytes) @ 0x00000001041b0eb0 [0x00000001041b0dc0+0xf0] +J 4 C1 sun.instrument.InstrumentationImpl.transform(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/Class;Ljava/security/ProtectionDomain;[BZ)[B (38 bytes) @ 0x00000001041aeea8 [0x00000001041aedc0+0xe8] +v ~StubRoutines::call_stub +V [libjvm.dylib+0x28c4dc] JavaCalls::call_helper(JavaValue*, methodHandle*, JavaCallArguments*, Thread*)+0x764 +V [libjvm.dylib+0x2b83a4] jni_invoke_nonstatic(JNIEnv_*, JavaValue*, _jobject*, JNICallType, _jmethodID*, JNI_ArgumentPusher*, Thread*)+0x46c +V [libjvm.dylib+0x2b9e18] jni_CallObjectMethod+0x1bc +C [libinstrument.dylib+0xad74] transformClassFile+0x1e8 +C [libinstrument.dylib+0x9c18] eventHandlerClassFileLoadHook+0x88 +V [libjvm.dylib+0x36bf60] JvmtiClassFileLoadHookPoster::post_to_env(JvmtiEnv*, bool)+0xa8 +V [libjvm.dylib+0x36be00] JvmtiClassFileLoadHookPoster::post_all_envs()+0x114 +V [libjvm.dylib+0x3636a4] JvmtiExport::post_class_file_load_hook(Symbol*, Handle, Handle, unsigned char**, unsigned char**, JvmtiCachedClassFileData**)+0x88 +V [libjvm.dylib+0x1277fc] ClassFileParser::parseClassFile(Symbol*, ClassLoaderData*, Handle, KlassHandle, GrowableArray*, TempNewSymbol&, bool, Thread*)+0x1e4 +V [libjvm.dylib+0x12d600] ClassLoader::load_classfile(Symbol*, Thread*)+0x1c8 +V [libjvm.dylib+0x4ffcf4] SystemDictionary::load_instance_class(Symbol*, Handle, Thread*)+0x1f0 +V [libjvm.dylib+0x4fef3c] SystemDictionary::resolve_instance_class_or_null(Symbol*, Handle, Handle, Thread*)+0x400 +V [libjvm.dylib+0x4ff428] SystemDictionary::resolve_super_or_fail(Symbol*, Symbol*, Handle, Handle, bool, Thread*)+0x198 +V [libjvm.dylib+0x128170] ClassFileParser::parseClassFile(Symbol*, ClassLoaderData*, Handle, KlassHandle, GrowableArray*, TempNewSymbol&, bool, Thread*)+0xb58 +V [libjvm.dylib+0x12d600] ClassLoader::load_classfile(Symbol*, Thread*)+0x1c8 +V [libjvm.dylib+0x4ffcf4] SystemDictionary::load_instance_class(Symbol*, Handle, Thread*)+0x1f0 +V [libjvm.dylib+0x4fef3c] SystemDictionary::resolve_instance_class_or_null(Symbol*, Handle, Handle, Thread*)+0x400 +V [libjvm.dylib+0x4fe748] SystemDictionary::resolve_or_fail(Symbol*, Handle, Handle, bool, Thread*)+0x24 +V [libjvm.dylib+0x183b7c] ConstantPool::klass_at_impl(constantPoolHandle, int, Thread*)+0x28c +V [libjvm.dylib+0x4bc610] ConstantPool::klass_at(int, Thread*)+0x98 +V [libjvm.dylib+0x2822c4] InterpreterRuntime::_new(JavaThread*, ConstantPool*, int)+0x60 +j java.util.concurrent.ScheduledThreadPoolExecutor.scheduleWithFixedDelay(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;+32 +j sun.rmi.transport.DGCImpl.dirty([Ljava/rmi/server/ObjID;JLjava/rmi/dgc/Lease;)Ljava/rmi/dgc/Lease;+225 +j sun.rmi.transport.DGCImpl_Skel.dispatch(Ljava/rmi/Remote;Ljava/rmi/server/RemoteCall;IJ)V+274 +j sun.rmi.server.UnicastServerRef.oldDispatch(Ljava/rmi/Remote;Ljava/rmi/server/RemoteCall;I)V+137 +j sun.rmi.server.UnicastServerRef.dispatch(Ljava/rmi/Remote;Ljava/rmi/server/RemoteCall;)V+44 +j sun.rmi.transport.Transport$1.run()Ljava/lang/Void;+23 +j sun.rmi.transport.Transport$1.run()Ljava/lang/Object;+1 +v ~StubRoutines::call_stub +V [libjvm.dylib+0x28c4dc] JavaCalls::call_helper(JavaValue*, methodHandle*, JavaCallArguments*, Thread*)+0x764 +V [libjvm.dylib+0x300bb0] JVM_DoPrivileged+0x744 +J 519 java.security.AccessController.doPrivileged(Ljava/security/PrivilegedExceptionAction;Ljava/security/AccessControlContext;)Ljava/lang/Object; (0 bytes) @ 0x00000001042707d8 [0x0000000104270740+0x98] +C 0x00000006c0020cc0 + +Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) +j org.jetbrains.capture.org.objectweb.asm.SymbolTable.(Lorg/jetbrains/capture/org/objectweb/asm/ClassWriter;Lorg/jetbrains/capture/org/objectweb/asm/ClassReader;)V+46 +j org.jetbrains.capture.org.objectweb.asm.ClassWriter.(Lorg/jetbrains/capture/org/objectweb/asm/ClassReader;I)V+28 +j com.intellij.rt.debugger.agent.CaptureAgent$CaptureTransformer.transform(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/Class;Ljava/security/ProtectionDomain;[B)[B+57 +J 5 C1 sun.instrument.TransformerManager.transform(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/Class;Ljava/security/ProtectionDomain;[B)[B (98 bytes) @ 0x00000001041b0eb0 [0x00000001041b0dc0+0xf0] +J 4 C1 sun.instrument.InstrumentationImpl.transform(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/Class;Ljava/security/ProtectionDomain;[BZ)[B (38 bytes) @ 0x00000001041aeea8 [0x00000001041aedc0+0xe8] +v ~StubRoutines::call_stub +j java.util.concurrent.ScheduledThreadPoolExecutor.scheduleWithFixedDelay(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;+32 +j sun.rmi.transport.DGCImpl.dirty([Ljava/rmi/server/ObjID;JLjava/rmi/dgc/Lease;)Ljava/rmi/dgc/Lease;+225 +j sun.rmi.transport.DGCImpl_Skel.dispatch(Ljava/rmi/Remote;Ljava/rmi/server/RemoteCall;IJ)V+274 +j sun.rmi.server.UnicastServerRef.oldDispatch(Ljava/rmi/Remote;Ljava/rmi/server/RemoteCall;I)V+137 +j sun.rmi.server.UnicastServerRef.dispatch(Ljava/rmi/Remote;Ljava/rmi/server/RemoteCall;)V+44 +j sun.rmi.transport.Transport$1.run()Ljava/lang/Void;+23 +j sun.rmi.transport.Transport$1.run()Ljava/lang/Object;+1 +v ~StubRoutines::call_stub +J 519 java.security.AccessController.doPrivileged(Ljava/security/PrivilegedExceptionAction;Ljava/security/AccessControlContext;)Ljava/lang/Object; (0 bytes) @ 0x000000010427079c [0x0000000104270740+0x5c] +j sun.rmi.transport.Transport.serviceCall(Ljava/rmi/server/RemoteCall;)Z+157 +j sun.rmi.transport.tcp.TCPTransport.handleMessages(Lsun/rmi/transport/Connection;Z)V+185 +j sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0()V+696 +j sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0()Ljava/lang/Void;+1 +j sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$$Lambda$142.run()Ljava/lang/Object;+4 +v ~StubRoutines::call_stub +J 1222 java.security.AccessController.doPrivileged(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)Ljava/lang/Object; (0 bytes) @ 0x000000010437bbdc [0x000000010437bb80+0x5c] +j sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run()V+58 +j java.util.concurrent.ThreadPoolExecutor.runWorker(Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V+95 +j java.util.concurrent.ThreadPoolExecutor$Worker.run()V+5 +j java.lang.Thread.run()V+11 +v ~StubRoutines::call_stub + +--------------- P R O C E S S --------------- + +Java Threads: ( => current thread ) +=>0x000000012881b000 JavaThread "RMI TCP Connection(1)-192.168.0.104" daemon [_thread_in_native, id=31491, stack(0x0000000170f8c000,0x000000017118f000)] + 0x000000012800d800 JavaThread "Attach Listener" daemon [_thread_blocked, id=32007, stack(0x0000000170d80000,0x0000000170f83000)] + 0x000000013ca69000 JavaThread "RMI TCP Accept-0" daemon [_thread_in_native, id=22787, stack(0x0000000170968000,0x0000000170b6b000)] + 0x000000013c3a9000 JavaThread "Service Thread" daemon [_thread_blocked, id=22275, stack(0x000000017075c000,0x000000017095f000)] + 0x000000012d308800 JavaThread "C1 CompilerThread3" daemon [_thread_blocked, id=21763, stack(0x0000000170550000,0x0000000170753000)] + 0x000000013c97d800 JavaThread "C2 CompilerThread2" daemon [_thread_blocked, id=18435, stack(0x0000000170344000,0x0000000170547000)] + 0x000000013c99b000 JavaThread "C2 CompilerThread1" daemon [_thread_blocked, id=17667, stack(0x0000000170138000,0x000000017033b000)] + 0x000000013c3c0800 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=21255, stack(0x000000016ff2c000,0x000000017012f000)] + 0x000000013c82f800 JavaThread "JDWP Command Reader" daemon [_thread_in_native, id=17411, stack(0x000000016fd20000,0x000000016ff23000)] + 0x000000013c82f000 JavaThread "JDWP Event Helper Thread" daemon [_thread_blocked, id=19459, stack(0x000000016fb14000,0x000000016fd17000)] + 0x000000013c829800 JavaThread "JDWP Transport Listener: dt_socket" daemon [_thread_blocked, id=19715, stack(0x000000016f908000,0x000000016fb0b000)] + 0x000000013c06a800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=19971, stack(0x000000016f6fc000,0x000000016f8ff000)] + 0x000000013c069800 JavaThread "Finalizer" daemon [_thread_blocked, id=13315, stack(0x000000016f3d8000,0x000000016f5db000)] + 0x000000013c067000 JavaThread "Reference Handler" daemon [_thread_blocked, id=14851, stack(0x000000016f1cc000,0x000000016f3cf000)] + 0x000000013c808800 JavaThread "main" [_thread_in_native, id=4355, stack(0x000000016dd54000,0x000000016df57000)] + +Other Threads: + 0x000000013c060000 VMThread [stack: 0x000000016efc0000,0x000000016f1c3000] [id=15107] + 0x000000012c1af800 WatcherThread [stack: 0x0000000170b74000,0x0000000170d77000] [id=32515] + +VM state:not at safepoint (normal execution) + +VM Mutex/Monitor currently owned by a thread: None + +heap address: 0x00000006c0000000, size: 4096 MB, Compressed Oops mode: Zero based, Oop shift amount: 3 +Narrow klass base: 0x0000000800000000, Narrow klass shift: 0 +Compressed class space size: 1073741824 Address: 0x0000000800000000 + +Heap: + PSYoungGen total 271360K, used 24093K [0x000000076ab00000, 0x000000077d100000, 0x00000007c0000000) + eden space 257024K, 3% used [0x000000076ab00000,0x000000076b48a118,0x000000077a600000) + from space 14336K, 99% used [0x000000077b900000,0x000000077c6fd6c0,0x000000077c700000) + to space 19456K, 0% used [0x000000077a600000,0x000000077a600000,0x000000077b900000) + ParOldGen total 73728K, used 16785K [0x00000006c0000000, 0x00000006c4800000, 0x000000076ab00000) + object space 73728K, 22% used [0x00000006c0000000,0x00000006c10647b8,0x00000006c4800000) + Metaspace used 23865K, capacity 24642K, committed 24832K, reserved 1071104K + class space used 3096K, capacity 3307K, committed 3328K, reserved 1048576K + +Card table byte_map: [0x0000000102650000,0x0000000102e54000] byte_map_base: 0x00000000ff050000 + +Marking Bits: (ParMarkBitMap*) 0x00000001039d3d20 + Begin Bits: [0x000000010c590000, 0x0000000110590000) + End Bits: [0x0000000110590000, 0x0000000114590000) + +Polling page: 0x0000000102164000 + +CodeCache: size=131072Kb used=5748Kb max_used=5748Kb free=125323Kb + bounds [0x0000000104038000, 0x00000001045d8000, 0x000000010c038000] + total_blobs=2740 nmethods=2345 adapters=319 + compilation: enabled + +Compilation events (10 events): +Event: 362.213 Thread 0x000000012d308800 2340 1 java.util.zip.ZipCoder::getBytes (192 bytes) +Event: 362.214 Thread 0x000000012d308800 nmethod 2340 0x00000001045d0150 code [0x00000001045d0400, 0x00000001045d1110] +Event: 362.214 Thread 0x000000012d308800 2341 ! 1 java.lang.StringCoding$StringEncoder::encode (179 bytes) +Event: 362.215 Thread 0x000000012d308800 nmethod 2341 0x00000001045d1e50 code [0x00000001045d20c0, 0x00000001045d2be0] +Event: 362.215 Thread 0x000000012d308800 2338 1 java.lang.invoke.MemberName::access$002 (7 bytes) +Event: 362.215 Thread 0x000000012d308800 nmethod 2338 0x00000001045d37d0 code [0x00000001045d3900, 0x00000001045d3990] +Event: 362.215 Thread 0x000000012d308800 2342 1 java.lang.reflect.AccessibleObject::setAccessible0 (42 bytes) +Event: 362.215 Thread 0x000000012d308800 nmethod 2342 0x00000001045d3a10 code [0x00000001045d3b80, 0x00000001045d3d28] +Event: 362.215 Thread 0x000000012d308800 2343 1 java.lang.reflect.AccessibleObject::setAccessible (21 bytes) +Event: 362.215 Thread 0x000000012d308800 nmethod 2343 0x00000001045d3e90 code [0x00000001045d4000, 0x00000001045d4148] + +GC Heap History (10 events): +Event: 361.632 GC heap before +{Heap before GC invocations=3 (full 0): + PSYoungGen total 76288K, used 40019K [0x000000076ab00000, 0x0000000774000000, 0x00000007c0000000) + eden space 65536K, 47% used [0x000000076ab00000,0x000000076c994010,0x000000076eb00000) + from space 10752K, 80% used [0x000000076f580000,0x000000076fe00fe8,0x0000000770000000) + to space 10752K, 0% used [0x000000076eb00000,0x000000076eb00000,0x000000076f580000) + ParOldGen total 175104K, used 88K [0x00000006c0000000, 0x00000006cab00000, 0x000000076ab00000) + object space 175104K, 0% used [0x00000006c0000000,0x00000006c0016010,0x00000006cab00000) + Metaspace used 20624K, capacity 21204K, committed 21296K, reserved 1067008K + class space used 2711K, capacity 2870K, committed 2944K, reserved 1048576K +Event: 361.637 GC heap after +Heap after GC invocations=3 (full 0): + PSYoungGen total 76288K, used 7645K [0x000000076ab00000, 0x0000000774000000, 0x00000007c0000000) + eden space 65536K, 0% used [0x000000076ab00000,0x000000076ab00000,0x000000076eb00000) + from space 10752K, 71% used [0x000000076eb00000,0x000000076f2775e8,0x000000076f580000) + to space 10752K, 0% used [0x0000000773580000,0x0000000773580000,0x0000000774000000) + ParOldGen total 175104K, used 96K [0x00000006c0000000, 0x00000006cab00000, 0x000000076ab00000) + object space 175104K, 0% used [0x00000006c0000000,0x00000006c0018010,0x00000006cab00000) + Metaspace used 20624K, capacity 21204K, committed 21296K, reserved 1067008K + class space used 2711K, capacity 2870K, committed 2944K, reserved 1048576K +} +Event: 361.637 GC heap before +{Heap before GC invocations=4 (full 1): + PSYoungGen total 76288K, used 7645K [0x000000076ab00000, 0x0000000774000000, 0x00000007c0000000) + eden space 65536K, 0% used [0x000000076ab00000,0x000000076ab00000,0x000000076eb00000) + from space 10752K, 71% used [0x000000076eb00000,0x000000076f2775e8,0x000000076f580000) + to space 10752K, 0% used [0x0000000773580000,0x0000000773580000,0x0000000774000000) + ParOldGen total 175104K, used 96K [0x00000006c0000000, 0x00000006cab00000, 0x000000076ab00000) + object space 175104K, 0% used [0x00000006c0000000,0x00000006c0018010,0x00000006cab00000) + Metaspace used 20624K, capacity 21204K, committed 21296K, reserved 1067008K + class space used 2711K, capacity 2870K, committed 2944K, reserved 1048576K +Event: 361.655 GC heap after +Heap after GC invocations=4 (full 1): + PSYoungGen total 76288K, used 0K [0x000000076ab00000, 0x0000000774000000, 0x00000007c0000000) + eden space 65536K, 0% used [0x000000076ab00000,0x000000076ab00000,0x000000076eb00000) + from space 10752K, 0% used [0x000000076eb00000,0x000000076eb00000,0x000000076f580000) + to space 10752K, 0% used [0x0000000773580000,0x0000000773580000,0x0000000774000000) + ParOldGen total 73728K, used 7381K [0x00000006c0000000, 0x00000006c4800000, 0x000000076ab00000) + object space 73728K, 10% used [0x00000006c0000000,0x00000006c0735778,0x00000006c4800000) + Metaspace used 20624K, capacity 21204K, committed 21296K, reserved 1067008K + class space used 2711K, capacity 2870K, committed 2944K, reserved 1048576K +} +Event: 361.740 GC heap before +{Heap before GC invocations=5 (full 1): + PSYoungGen total 76288K, used 65536K [0x000000076ab00000, 0x0000000774000000, 0x00000007c0000000) + eden space 65536K, 100% used [0x000000076ab00000,0x000000076eb00000,0x000000076eb00000) + from space 10752K, 0% used [0x000000076eb00000,0x000000076eb00000,0x000000076f580000) + to space 10752K, 0% used [0x0000000773580000,0x0000000773580000,0x0000000774000000) + ParOldGen total 73728K, used 7381K [0x00000006c0000000, 0x00000006c4800000, 0x000000076ab00000) + object space 73728K, 10% used [0x00000006c0000000,0x00000006c0735778,0x00000006c4800000) + Metaspace used 22432K, capacity 23072K, committed 23424K, reserved 1069056K + class space used 2930K, capacity 3092K, committed 3200K, reserved 1048576K +Event: 361.745 GC heap after +Heap after GC invocations=5 (full 1): + PSYoungGen total 141824K, used 5971K [0x000000076ab00000, 0x0000000774000000, 0x00000007c0000000) + eden space 131072K, 0% used [0x000000076ab00000,0x000000076ab00000,0x0000000772b00000) + from space 10752K, 55% used [0x0000000773580000,0x0000000773b54e18,0x0000000774000000) + to space 10752K, 0% used [0x0000000772b00000,0x0000000772b00000,0x0000000773580000) + ParOldGen total 73728K, used 7389K [0x00000006c0000000, 0x00000006c4800000, 0x000000076ab00000) + object space 73728K, 10% used [0x00000006c0000000,0x00000006c0737778,0x00000006c4800000) + Metaspace used 22432K, capacity 23072K, committed 23424K, reserved 1069056K + class space used 2930K, capacity 3092K, committed 3200K, reserved 1048576K +} +Event: 361.842 GC heap before +{Heap before GC invocations=6 (full 1): + PSYoungGen total 141824K, used 136873K [0x000000076ab00000, 0x0000000774000000, 0x00000007c0000000) + eden space 131072K, 99% used [0x000000076ab00000,0x0000000772ad55e8,0x0000000772b00000) + from space 10752K, 55% used [0x0000000773580000,0x0000000773b54e18,0x0000000774000000) + to space 10752K, 0% used [0x0000000772b00000,0x0000000772b00000,0x0000000773580000) + ParOldGen total 73728K, used 7389K [0x00000006c0000000, 0x00000006c4800000, 0x000000076ab00000) + object space 73728K, 10% used [0x00000006c0000000,0x00000006c0737778,0x00000006c4800000) + Metaspace used 22647K, capacity 23256K, committed 23424K, reserved 1069056K + class space used 2952K, capacity 3112K, committed 3200K, reserved 1048576K +Event: 361.850 GC heap after +Heap after GC invocations=6 (full 1): + PSYoungGen total 141824K, used 10729K [0x000000076ab00000, 0x000000077c700000, 0x00000007c0000000) + eden space 131072K, 0% used [0x000000076ab00000,0x000000076ab00000,0x0000000772b00000) + from space 10752K, 99% used [0x0000000772b00000,0x000000077357a718,0x0000000773580000) + to space 14336K, 0% used [0x000000077b900000,0x000000077b900000,0x000000077c700000) + ParOldGen total 73728K, used 11731K [0x00000006c0000000, 0x00000006c4800000, 0x000000076ab00000) + object space 73728K, 15% used [0x00000006c0000000,0x00000006c0b74f18,0x00000006c4800000) + Metaspace used 22647K, capacity 23256K, committed 23424K, reserved 1069056K + class space used 2952K, capacity 3112K, committed 3200K, reserved 1048576K +} +Event: 362.217 GC heap before +{Heap before GC invocations=7 (full 1): + PSYoungGen total 141824K, used 141801K [0x000000076ab00000, 0x000000077c700000, 0x00000007c0000000) + eden space 131072K, 100% used [0x000000076ab00000,0x0000000772b00000,0x0000000772b00000) + from space 10752K, 99% used [0x0000000772b00000,0x000000077357a718,0x0000000773580000) + to space 14336K, 0% used [0x000000077b900000,0x000000077b900000,0x000000077c700000) + ParOldGen total 73728K, used 11731K [0x00000006c0000000, 0x00000006c4800000, 0x000000076ab00000) + object space 73728K, 15% used [0x00000006c0000000,0x00000006c0b74f18,0x00000006c4800000) + Metaspace used 23865K, capacity 24642K, committed 24832K, reserved 1071104K + class space used 3096K, capacity 3307K, committed 3328K, reserved 1048576K +Event: 362.231 GC heap after +Heap after GC invocations=7 (full 1): + PSYoungGen total 271360K, used 14325K [0x000000076ab00000, 0x000000077d100000, 0x00000007c0000000) + eden space 257024K, 0% used [0x000000076ab00000,0x000000076ab00000,0x000000077a600000) + from space 14336K, 99% used [0x000000077b900000,0x000000077c6fd6c0,0x000000077c700000) + to space 19456K, 0% used [0x000000077a600000,0x000000077a600000,0x000000077b900000) + ParOldGen total 73728K, used 16785K [0x00000006c0000000, 0x00000006c4800000, 0x000000076ab00000) + object space 73728K, 22% used [0x00000006c0000000,0x00000006c10647b8,0x00000006c4800000) + Metaspace used 23865K, capacity 24642K, committed 24832K, reserved 1071104K + class space used 3096K, capacity 3307K, committed 3328K, reserved 1048576K +} + +Deoptimization events (0 events): +No events + +Classes redefined (0 events): +No events + +Internal exceptions (10 events): +Event: 361.442 Thread 0x000000013c808800 Exception (0x000000076b9ee748) thrown at [/System/Volumes/Data/jenkins/workspace/8-2-build-macosx-aarch64-Xcode12.4-sans-NAS/jdk8u411/893/hotspot/src/share/vm/interpreter/linkResolve +Event: 361.482 Thread 0x000000013c808800 Exception (0x000000076c93cf90) thrown at [/System/Volumes/Data/jenkins/workspace/8-2-build-macosx-aarch64-Xcode12.4-sans-NAS/jdk8u411/893/hotspot/src/share/v +Event: 361.622 Thread 0x000000013c808800 Exception (0x000000076c37a0c0) thrown at [/System/Volumes/Data/jenkins/workspace/8-2-build-macosx-aarch64-Xcode12.4-sans-NAS/jdk8u411/893/hotspot/src/share/vm/classfile/systemDictionary.cp +Event: 361.625 Thread 0x000000013c808800 Exception (0x000000076c4a0420) thrown at [/System/Volumes/Data/jenkins/workspace/8-2-build-macosx-aarch64-Xcode12.4-sans-NAS/jdk8u411/ +Event: 361.627 Thread 0x000000013c808800 Exception (0x000000076c56d4f0) thrown at [/System/Volumes/Data/jenkins/workspace/8-2-build-macosx-aarch64-Xcode12.4-sans-NAS/jd +Event: 361.628 Thread 0x000000013c808800 Exception (0x000000076c65b528) thrown at [/System/Volumes/Data/jenkins/workspace/8-2-build-macosx-aarch64-Xcode12.4-sans-NAS/jdk8u411/893/hotspot/src/share/vm/class +Event: 361.628 Thread 0x000000013c808800 Exception (0x000000076c68be48) thrown at [/System/Volumes/Data/jenkins/workspace/8-2-build-macosx-aarch64-Xcode12.4-sans-NAS/jdk8u411/893/hotspot/src/share/v +Event: 361.629 Thread 0x000000013c808800 Exception (0x000000076c6c2638) thrown at [/System/Volumes/Data/jenkins/workspace/8-2-build-macosx-aarch64-Xcode12.4-sans-NAS/jdk8u411/893/hotspot/src/ +Event: 361.629 Thread 0x000000013c808800 Exception (0x000000076c6f2380) thrown at [/System/Volumes/Data/jenkins/workspace/8-2-build-macosx-aarch64-Xcode12.4-sans-NAS/jdk8u411/893/hotspot/src/share/vm/c +Event: 361.717 Thread 0x000000013c536000 Exception (0x000000076cce9ad8) thrown at [/System/Volumes/Data/jenkins/workspace/8-2-build-macosx-aarch64-Xcode12.4-sans-NAS/jdk8u411/893/hotspot/src/sh + +Events (10 events): +Event: 362.216 loading class org/jetbrains/capture/org/objectweb/asm/Label done +Event: 362.216 loading class org/jetbrains/capture/org/objectweb/asm/ClassWriter +Event: 362.217 loading class org/jetbrains/capture/org/objectweb/asm/ClassVisitor +Event: 362.217 loading class org/jetbrains/capture/org/objectweb/asm/ClassVisitor done +Event: 362.217 loading class org/jetbrains/capture/org/objectweb/asm/ClassWriter done +Event: 362.217 loading class org/jetbrains/capture/org/objectweb/asm/SymbolTable +Event: 362.217 loading class org/jetbrains/capture/org/objectweb/asm/SymbolTable done +Event: 362.217 Executing VM operation: ParallelGCFailedAllocation +Event: 362.231 Executing VM operation: ParallelGCFailedAllocation done +Event: 362.234 loading class org/jetbrains/capture/org/objectweb/asm/ByteVector + + +Dynamic libraries: +0x000000019e5f7000 /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa +0x0000000187b9e000 /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit +0x000000018ac0a000 /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData +0x0000000185451000 /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation +0x0000000190f18000 /usr/lib/libSystem.B.dylib +0x0000000188edb000 /System/Library/PrivateFrameworks/UIFoundation.framework/Versions/A/UIFoundation +0x000000021fabb000 /System/Library/PrivateFrameworks/CollectionViewCore.framework/Versions/A/CollectionViewCore +0x0000000198191000 /System/Library/PrivateFrameworks/RemoteViewServices.framework/Versions/A/RemoteViewServices +0x000000018edc5000 /System/Library/PrivateFrameworks/XCTTargetBootstrap.framework/Versions/A/XCTTargetBootstrap +0x0000000193554000 /System/Library/PrivateFrameworks/InternationalSupport.framework/Versions/A/InternationalSupport +0x00000001935a8000 /System/Library/PrivateFrameworks/UserActivity.framework/Versions/A/UserActivity +0x0000000243f12000 /System/Library/PrivateFrameworks/WindowManagement.framework/Versions/A/WindowManagement +0x00000001850d1000 /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration +0x00000001929c2000 /usr/lib/libspindump.dylib +0x0000000189090000 /System/Library/Frameworks/UniformTypeIdentifiers.framework/Versions/A/UniformTypeIdentifiers +0x000000018cc3c000 /usr/lib/libapp_launch_measurement.dylib +0x000000018c062000 /System/Library/PrivateFrameworks/CoreAnalytics.framework/Versions/A/CoreAnalytics +0x000000018cc43000 /System/Library/PrivateFrameworks/CoreAutoLayout.framework/Versions/A/CoreAutoLayout +0x000000018e5e5000 /System/Library/Frameworks/Metal.framework/Versions/A/Metal +0x000000018f56d000 /usr/lib/liblangid.dylib +0x000000018edcb000 /System/Library/PrivateFrameworks/CoreSVG.framework/Versions/A/CoreSVG +0x0000000189a55000 /System/Library/PrivateFrameworks/SkyLight.framework/Versions/A/SkyLight +0x0000000189ef6000 /System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics +0x000000019886b000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate +0x000000019281c000 /System/Library/PrivateFrameworks/IconServices.framework/Versions/A/IconServices +0x000000018e5c3000 /System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface +0x000000018c091000 /usr/lib/libDiagnosticMessagesClient.dylib +0x0000000190e5a000 /usr/lib/libz.1.dylib +0x000000019c010000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices +0x000000018edad000 /System/Library/PrivateFrameworks/DFRFoundation.framework/Versions/A/DFRFoundation +0x00000001873f8000 /usr/lib/libicucore.A.dylib +0x00000001945b2000 /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox +0x0000000193563000 /System/Library/PrivateFrameworks/DataDetectorsCore.framework/Versions/A/DataDetectorsCore +0x00000001acfd6000 /System/Library/PrivateFrameworks/TextInput.framework/Versions/A/TextInput +0x00000001899a6000 /usr/lib/libMobileGestalt.dylib +0x000000018eae9000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox +0x000000018c568000 /System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore +0x0000000187025000 /System/Library/Frameworks/Security.framework/Versions/A/Security +0x00000001981d1000 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SpeechRecognition.framework/Versions/A/SpeechRecognition +0x000000018c96a000 /System/Library/PrivateFrameworks/CoreUI.framework/Versions/A/CoreUI +0x000000018691e000 /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio +0x000000018c175000 /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration +0x0000000192e1e000 /System/Library/PrivateFrameworks/MultitouchSupport.framework/Versions/A/MultitouchSupport +0x00000001899a4000 /usr/lib/libenergytrace.dylib +0x00000001a26cf000 /System/Library/PrivateFrameworks/RenderBox.framework/Versions/A/RenderBox +0x0000000187a52000 /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit +0x00000001985a6000 /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices +0x000000018cbc8000 /System/Library/PrivateFrameworks/PerformanceAnalysis.framework/Versions/A/PerformanceAnalysis +0x00000001daf7b000 /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL +0x000000018cc8d000 /usr/lib/libxml2.2.dylib +0x000000019029c000 /System/Library/PrivateFrameworks/MobileKeyBag.framework/Versions/A/MobileKeyBag +0x0000000183ebc000 /usr/lib/libobjc.A.dylib +0x00000001841b0000 /usr/lib/libc++.1.dylib +0x0000000198523000 /System/Library/Frameworks/Accessibility.framework/Versions/A/Accessibility +0x000000018a5d6000 /System/Library/Frameworks/ColorSync.framework/Versions/A/ColorSync +0x00000001842fc000 /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation +0x000000018f128000 /System/Library/Frameworks/CoreImage.framework/Versions/A/CoreImage +0x0000000186729000 /System/Library/Frameworks/CoreText.framework/Versions/A/CoreText +0x00000001df7da000 /System/Library/Frameworks/CoreTransferable.framework/Versions/A/CoreTransferable +0x00000001dfc9f000 /System/Library/Frameworks/DeveloperToolsSupport.framework/Versions/A/DeveloperToolsSupport +0x000000018ee06000 /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO +0x0000000219c5b000 /System/Library/Frameworks/Symbols.framework/Versions/A/Symbols +0x0000000190f1e000 /System/Library/PrivateFrameworks/SoftLinking.framework/Versions/A/SoftLinking +0x0000000193f64000 /usr/lib/swift/libswiftCore.dylib +0x00000001a9c63000 /usr/lib/swift/libswiftCoreFoundation.dylib +0x00000001a76cc000 /usr/lib/swift/libswiftCoreGraphics.dylib +0x00000001a9cad000 /usr/lib/swift/libswiftCoreImage.dylib +0x00000001a76d3000 /usr/lib/swift/libswiftDarwin.dylib +0x0000000199c16000 /usr/lib/swift/libswiftDispatch.dylib +0x00000001a9cae000 /usr/lib/swift/libswiftIOKit.dylib +0x00000001b5708000 /usr/lib/swift/libswiftMetal.dylib +0x00000001c2dcd000 /usr/lib/swift/libswiftOSLog.dylib +0x000000019c48b000 /usr/lib/swift/libswiftObjectiveC.dylib +0x00000001b9e3c000 /usr/lib/swift/libswiftQuartzCore.dylib +0x00000001bdf41000 /usr/lib/swift/libswiftUniformTypeIdentifiers.dylib +0x00000001a9c75000 /usr/lib/swift/libswiftXPC.dylib +0x000000024c3b9000 /usr/lib/swift/libswift_Concurrency.dylib +0x000000019c48f000 /usr/lib/swift/libswiftos.dylib +0x00000001acf3a000 /usr/lib/swift/libswiftsimd.dylib +0x00000001910cd000 /usr/lib/libcompression.dylib +0x00000001934ae000 /System/Library/PrivateFrameworks/TextureIO.framework/Versions/A/TextureIO +0x00000001924c8000 /usr/lib/libate.dylib +0x0000000190f12000 /usr/lib/system/libcache.dylib +0x0000000190ecc000 /usr/lib/system/libcommonCrypto.dylib +0x0000000190ef8000 /usr/lib/system/libcompiler_rt.dylib +0x0000000190eee000 /usr/lib/system/libcopyfile.dylib +0x0000000184000000 /usr/lib/system/libcorecrypto.dylib +0x00000001840e6000 /usr/lib/system/libdispatch.dylib +0x00000001842a1000 /usr/lib/system/libdyld.dylib +0x0000000190f08000 /usr/lib/system/libkeymgr.dylib +0x0000000190ea4000 /usr/lib/system/libmacho.dylib +0x0000000190384000 /usr/lib/system/libquarantine.dylib +0x0000000190f05000 /usr/lib/system/libremovefile.dylib +0x0000000189a1c000 /usr/lib/system/libsystem_asl.dylib +0x0000000183f95000 /usr/lib/system/libsystem_blocks.dylib +0x0000000184131000 /usr/lib/system/libsystem_c.dylib +0x0000000190efc000 /usr/lib/system/libsystem_collections.dylib +0x000000018f55c000 /usr/lib/system/libsystem_configuration.dylib +0x000000018e598000 /usr/lib/system/libsystem_containermanager.dylib +0x0000000190b3b000 /usr/lib/system/libsystem_coreservices.dylib +0x00000001876bf000 /usr/lib/system/libsystem_darwin.dylib +0x000000024c706000 /usr/lib/system/libsystem_darwindirectory.dylib +0x0000000190f09000 /usr/lib/system/libsystem_dnssd.dylib +0x000000024c70a000 /usr/lib/system/libsystem_eligibility.dylib +0x000000018412e000 /usr/lib/system/libsystem_featureflags.dylib +0x00000001842cf000 /usr/lib/system/libsystem_info.dylib +0x0000000190e69000 /usr/lib/system/libsystem_m.dylib +0x00000001840a9000 /usr/lib/system/libsystem_malloc.dylib +0x0000000189989000 /usr/lib/system/libsystem_networkextension.dylib +0x0000000187b35000 /usr/lib/system/libsystem_notify.dylib +0x000000018f561000 /usr/lib/system/libsystem_sandbox.dylib +0x000000024c70e000 /usr/lib/system/libsystem_sanitizers.dylib +0x0000000190f01000 /usr/lib/system/libsystem_secinit.dylib +0x0000000184259000 /usr/lib/system/libsystem_kernel.dylib +0x00000001842c7000 /usr/lib/system/libsystem_platform.dylib +0x0000000184294000 /usr/lib/system/libsystem_pthread.dylib +0x000000018b40c000 /usr/lib/system/libsystem_symptoms.dylib +0x0000000183fe5000 /usr/lib/system/libsystem_trace.dylib +0x0000000190eda000 /usr/lib/system/libunwind.dylib +0x0000000183f9a000 /usr/lib/system/libxpc.dylib +0x000000018423d000 /usr/lib/libc++abi.dylib +0x0000000190ee6000 /usr/lib/liboah.dylib +0x0000000192374000 /usr/lib/liblzma.5.dylib +0x0000000190f1a000 /usr/lib/libfakelink.dylib +0x00000001895b5000 /System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork +0x0000000190f6e000 /usr/lib/libarchive.2.dylib +0x00000001964a4000 /System/Library/Frameworks/Combine.framework/Versions/A/Combine +0x000000021facf000 /System/Library/PrivateFrameworks/CollectionsInternal.framework/Versions/A/CollectionsInternal +0x000000023647f000 /System/Library/PrivateFrameworks/ReflectionInternal.framework/Versions/A/ReflectionInternal +0x0000000236a11000 /System/Library/PrivateFrameworks/RuntimeInternal.framework/Versions/A/RuntimeInternal +0x000000024c50d000 /usr/lib/swift/libswift_StringProcessing.dylib +0x00000001879d0000 /System/Library/PrivateFrameworks/CoreServicesInternal.framework/Versions/A/CoreServicesInternal +0x00000001903ab000 /usr/lib/libbsm.0.dylib +0x0000000190eac000 /usr/lib/system/libkxld.dylib +0x000000018cc04000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/FSEvents +0x00000001876ca000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore +0x000000018c0da000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata +0x0000000190b41000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices +0x0000000190ff7000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit +0x000000018b38d000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE +0x00000001847d5000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices +0x000000019231d000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices +0x000000018cc11000 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SharedFileList.framework/Versions/A/SharedFileList +0x0000000191097000 /usr/lib/libapple_nghttp2.dylib +0x000000018b001000 /usr/lib/libsqlite3.dylib +0x000000018b415000 /System/Library/Frameworks/Network.framework/Versions/A/Network +0x000000024adca000 /usr/lib/libCoreEntitlements.dylib +0x0000000231389000 /System/Library/PrivateFrameworks/MessageSecurity.framework/Versions/A/MessageSecurity +0x000000018afe7000 /System/Library/PrivateFrameworks/ProtocolBuffer.framework/Versions/A/ProtocolBuffer +0x0000000190a6a000 /System/Library/PrivateFrameworks/AppleFSCompression.framework/Versions/A/AppleFSCompression +0x0000000190393000 /usr/lib/libcoretls.dylib +0x0000000192393000 /usr/lib/libcoretls_cfhelpers.dylib +0x00000001910c7000 /usr/lib/libpam.2.dylib +0x0000000192405000 /usr/lib/libxar.1.dylib +0x00000001927f3000 /usr/lib/libheimdal-asn1.dylib +0x00000001895b4000 /usr/lib/libnetwork.dylib +0x0000000190f1f000 /usr/lib/libpcap.A.dylib +0x000000018b401000 /usr/lib/libdns_services.dylib +0x000000018f569000 /System/Library/PrivateFrameworks/AppleSystemInfo.framework/Versions/A/AppleSystemInfo +0x0000000190091000 /System/Library/PrivateFrameworks/IOMobileFramebuffer.framework/Versions/A/IOMobileFramebuffer +0x000000024c464000 /usr/lib/swift/libswift_RegexParser.dylib +0x0000000190b2e000 /usr/lib/libbz2.1.0.dylib +0x0000000190387000 /usr/lib/libCheckFix.dylib +0x0000000189a34000 /System/Library/PrivateFrameworks/TCC.framework/Versions/A/TCC +0x000000018f56f000 /System/Library/PrivateFrameworks/CoreNLP.framework/Versions/A/CoreNLP +0x000000018c093000 /System/Library/PrivateFrameworks/MetadataUtilities.framework/Versions/A/MetadataUtilities +0x00000001903bd000 /usr/lib/libmecab.dylib +0x0000000185165000 /usr/lib/libCRFSuite.dylib +0x0000000190419000 /usr/lib/libgermantok.dylib +0x000000019106e000 /usr/lib/libThaiTokenizer.dylib +0x000000018c17e000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage +0x000000019857d000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib +0x000000019244c000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib +0x000000018ff6c000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib +0x0000000184bdc000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib +0x00000001911a2000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib +0x000000019041c000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLinearAlgebra.dylib +0x00000001910b2000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparseBLAS.dylib +0x000000019119d000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libQuadrature.dylib +0x000000018f698000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBNNS.dylib +0x000000018506a000 /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparse.dylib +0x000000022fad8000 /System/Library/PrivateFrameworks/MIL.framework/Versions/A/MIL +0x0000000190f55000 /usr/lib/libiconv.2.dylib +0x0000000190ea0000 /usr/lib/libcharset.1.dylib +0x000000018cbe4000 /System/Library/Frameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory +0x000000018cbd4000 /System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory +0x0000000192395000 /System/Library/PrivateFrameworks/APFS.framework/Versions/A/APFS +0x00000001902c3000 /System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation +0x0000000192414000 /usr/lib/libutil.dylib +0x000000022dc39000 /System/Library/PrivateFrameworks/InstalledContentLibrary.framework/Versions/A/InstalledContentLibrary +0x0000000187a11000 /System/Library/PrivateFrameworks/CoreServicesStore.framework/Versions/A/CoreServicesStore +0x000000021d27c000 /System/Library/PrivateFrameworks/AppleMobileFileIntegrity.framework/Versions/A/AppleMobileFileIntegrity +0x00000001a9c31000 /usr/lib/libmis.dylib +0x00000001ba323000 /System/Library/PrivateFrameworks/MobileSystemServices.framework/Versions/A/MobileSystemServices +0x00000001d8385000 /System/Library/PrivateFrameworks/ConfigProfileHelper.framework/Versions/A/ConfigProfileHelper +0x0000000191070000 /System/Library/PrivateFrameworks/AppleSauce.framework/Versions/A/AppleSauce +0x00000001860af000 /System/Library/PrivateFrameworks/LanguageModeling.framework/Versions/A/LanguageModeling +0x0000000192418000 /usr/lib/libxslt.1.dylib +0x0000000190f5c000 /usr/lib/libcmph.dylib +0x000000019005d000 /System/Library/PrivateFrameworks/CoreEmoji.framework/Versions/A/CoreEmoji +0x000000018f692000 /System/Library/PrivateFrameworks/LinguisticData.framework/Versions/A/LinguisticData +0x0000000184f78000 /System/Library/PrivateFrameworks/Lexicon.framework/Versions/A/Lexicon +0x0000000190351000 /System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/BackgroundTaskManagement +0x000000024afb4000 /usr/lib/libTLE.dylib +0x0000000192ce4000 /System/Library/PrivateFrameworks/AppleJPEG.framework/Versions/A/AppleJPEG +0x00000001927d8000 /usr/lib/libexpat.1.dylib +0x000000019330c000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib +0x0000000193337000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib +0x0000000193422000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib +0x0000000192d2a000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.dylib +0x00000001933c7000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib +0x00000001933be000 /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib +0x000000018e984000 /System/Library/PrivateFrameworks/FontServices.framework/libFontParser.dylib +0x000000018b326000 /System/Library/PrivateFrameworks/RunningBoardServices.framework/Versions/A/RunningBoardServices +0x000000019eed1000 /System/Library/PrivateFrameworks/IOSurfaceAccelerator.framework/Versions/A/IOSurfaceAccelerator +0x0000000192e1a000 /System/Library/PrivateFrameworks/WatchdogClient.framework/Versions/A/WatchdogClient +0x0000000186295000 /System/Library/Frameworks/CoreDisplay.framework/Versions/A/CoreDisplay +0x000000018e83b000 /System/Library/Frameworks/CoreMedia.framework/Versions/A/CoreMedia +0x000000018e5db000 /System/Library/PrivateFrameworks/IOAccelerator.framework/Versions/A/IOAccelerator +0x000000018cd77000 /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo +0x00000001910c5000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/MetalPerformanceShaders +0x0000000192e5d000 /System/Library/Frameworks/VideoToolbox.framework/Versions/A/VideoToolbox +0x000000018ce13000 /System/Library/PrivateFrameworks/UserManagement.framework/Versions/A/UserManagement +0x000000018b24d000 /System/Library/PrivateFrameworks/BaseBoard.framework/Versions/A/BaseBoard +0x000000018f567000 /System/Library/PrivateFrameworks/AggregateDictionary.framework/Versions/A/AggregateDictionary +0x000000021d0b6000 /System/Library/PrivateFrameworks/AppleKeyStore.framework/Versions/A/AppleKeyStore +0x00000001933b9000 /System/Library/PrivateFrameworks/GPUWrangler.framework/Versions/A/GPUWrangler +0x0000000193399000 /System/Library/PrivateFrameworks/IOPresentment.framework/Versions/A/IOPresentment +0x00000001933c1000 /System/Library/PrivateFrameworks/DSExternalDisplay.framework/Versions/A/DSExternalDisplay +0x0000000229cc6000 /System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/32023/Libraries/libllvm-flatbuffers.dylib +0x00000001daf6e000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreFSCache.dylib +0x000000022692a000 /System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/32023/Libraries/libGPUCompilerUtils.dylib +0x0000000193428000 /System/Library/PrivateFrameworks/CMCaptureCore.framework/Versions/A/CMCaptureCore +0x00000001dfdc2000 /System/Library/Frameworks/ExtensionFoundation.framework/Versions/A/ExtensionFoundation +0x000000019a47f000 /System/Library/PrivateFrameworks/CoreTime.framework/Versions/A/CoreTime +0x00000001929ac000 /System/Library/PrivateFrameworks/AppServerSupport.framework/Versions/A/AppServerSupport +0x0000000194f40000 /System/Library/PrivateFrameworks/perfdata.framework/Versions/A/perfdata +0x00000001863b9000 /System/Library/PrivateFrameworks/AudioToolboxCore.framework/Versions/A/AudioToolboxCore +0x000000018e811000 /System/Library/PrivateFrameworks/caulk.framework/Versions/A/caulk +0x00000001947ae000 /usr/lib/libAudioStatistics.dylib +0x00000001a8f6a000 /System/Library/PrivateFrameworks/SystemPolicy.framework/Versions/A/SystemPolicy +0x0000000194a87000 /usr/lib/libSMC.dylib +0x000000019e479000 /System/Library/Frameworks/CoreMIDI.framework/Versions/A/CoreMIDI +0x00000001932d3000 /usr/lib/libAudioToolboxUtility.dylib +0x00000001a436b000 /System/Library/PrivateFrameworks/OSAServicesClient.framework/Versions/A/OSAServicesClient +0x0000000194f4e000 /usr/lib/libperfcheck.dylib +0x0000000199f36000 /System/Library/PrivateFrameworks/BoardServices.framework/Versions/A/BoardServices +0x00000001926c0000 /System/Library/PrivateFrameworks/PlugInKit.framework/Versions/A/PlugInKit +0x00000001902b5000 /System/Library/PrivateFrameworks/AssertionServices.framework/Versions/A/AssertionServices +0x000000019d58a000 /System/Library/PrivateFrameworks/ASEProcessing.framework/Versions/A/ASEProcessing +0x00000001c6254000 /System/Library/PrivateFrameworks/Symbolication.framework/Versions/A/Symbolication +0x000000023526c000 /System/Library/PrivateFrameworks/PhotosensitivityProcessing.framework/Versions/A/PhotosensitivityProcessing +0x000000019295d000 /System/Library/PrivateFrameworks/GraphVisualizer.framework/Versions/A/GraphVisualizer +0x00000001dafd0000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib +0x00000001daf8f000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.dylib +0x00000001db168000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib +0x00000001daf98000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib +0x00000001daf8c000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCVMSPluginSupport.dylib +0x000000024af6c000 /usr/lib/libRosetta.dylib +0x00000001daf75000 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreVMClient.dylib +0x0000000224b30000 /System/Library/PrivateFrameworks/FontServices.framework/Versions/A/FontServices +0x0000000192969000 /System/Library/PrivateFrameworks/OTSVG.framework/Versions/A/OTSVG +0x000000018c918000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontRegistry.dylib +0x00000001929b7000 /System/Library/PrivateFrameworks/FontServices.framework/libhvf.dylib +0x0000000224b31000 /System/Library/PrivateFrameworks/FontServices.framework/libXTFontStaticRegistryData.dylib +0x000000018f4ae000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSCore.framework/Versions/A/MPSCore +0x00000001909d8000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSImage.framework/Versions/A/MPSImage +0x0000000190431000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSNeuralNetwork.framework/Versions/A/MPSNeuralNetwork +0x000000019087c000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSMatrix.framework/Versions/A/MPSMatrix +0x0000000190687000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSRayIntersector.framework/Versions/A/MPSRayIntersector +0x00000001908ae000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSNDArray.framework/Versions/A/MPSNDArray +0x00000001e169c000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSFunctions.framework/Versions/A/MPSFunctions +0x00000001e1681000 /System/Library/Frameworks/MetalPerformanceShaders.framework/Versions/A/Frameworks/MPSBenchmarkLoop.framework/Versions/A/MPSBenchmarkLoop +0x0000000184a90000 /System/Library/PrivateFrameworks/MetalTools.framework/Versions/A/MetalTools +0x00000001ae113000 /System/Library/PrivateFrameworks/IOAccelMemoryInfo.framework/Versions/A/IOAccelMemoryInfo +0x00000001ba21c000 /System/Library/PrivateFrameworks/kperf.framework/Versions/A/kperf +0x00000001a9c56000 /System/Library/PrivateFrameworks/GPURawCounter.framework/Versions/A/GPURawCounter +0x000000019a351000 /System/Library/PrivateFrameworks/CoreSymbolication.framework/Versions/A/CoreSymbolication +0x00000001a9c02000 /System/Library/PrivateFrameworks/MallocStackLogging.framework/Versions/A/MallocStackLogging +0x0000000192562000 /System/Library/PrivateFrameworks/CrashReporterSupport.framework/Versions/A/CrashReporterSupport +0x000000019a30c000 /System/Library/PrivateFrameworks/DebugSymbols.framework/Versions/A/DebugSymbols +0x00000001b8b83000 /System/Library/PrivateFrameworks/OSAnalytics.framework/Versions/A/OSAnalytics +0x0000000242165000 /System/Library/PrivateFrameworks/VideoToolboxParavirtualizationSupport.framework/Versions/A/VideoToolboxParavirtualizationSupport +0x000000019278c000 /System/Library/PrivateFrameworks/AppleVA.framework/Versions/A/AppleVA +0x00000001947f6000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS +0x000000018a785000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices +0x0000000193436000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore +0x0000000194be0000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD +0x0000000194bd4000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ColorSyncLegacy.framework/Versions/A/ColorSyncLegacy +0x00000001947c6000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesis +0x00000001933f2000 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATSUI.framework/Versions/A/ATSUI +0x0000000194b67000 /usr/lib/libcups.2.dylib +0x0000000194f5c000 /System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos +0x0000000194f6d000 /System/Library/Frameworks/GSS.framework/Versions/A/GSS +0x0000000194875000 /usr/lib/libresolv.9.dylib +0x00000001929c8000 /System/Library/PrivateFrameworks/Heimdal.framework/Versions/A/Heimdal +0x000000019c3f8000 /System/Library/Frameworks/Kerberos.framework/Versions/A/Libraries/libHeimdalProxy.dylib +0x0000000194fc7000 /System/Library/PrivateFrameworks/CommonAuth.framework/Versions/A/CommonAuth +0x00000001deba8000 /System/Library/Frameworks/AVFAudio.framework/Versions/A/AVFAudio +0x00000001a43ba000 /System/Library/PrivateFrameworks/AXCoreUtilities.framework/Versions/A/AXCoreUtilities +0x000000022f1b0000 /System/Library/PrivateFrameworks/IsolatedCoreAudioClient.framework/Versions/A/IsolatedCoreAudioClient +0x0000000194732000 /System/Library/PrivateFrameworks/AudioSession.framework/Versions/A/AudioSession +0x0000000196243000 /System/Library/Frameworks/IOBluetooth.framework/Versions/A/IOBluetooth +0x0000000192897000 /System/Library/PrivateFrameworks/MediaExperience.framework/Versions/A/MediaExperience +0x0000000194571000 /System/Library/PrivateFrameworks/AudioSession.framework/libSessionUtility.dylib +0x0000000194bec000 /System/Library/PrivateFrameworks/AudioResourceArbitration.framework/Versions/A/AudioResourceArbitration +0x00000001992c4000 /System/Library/PrivateFrameworks/PowerLog.framework/Versions/A/PowerLog +0x00000001991e2000 /System/Library/Frameworks/CoreBluetooth.framework/Versions/A/CoreBluetooth +0x000000019c3f9000 /System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit +0x000000019011e000 /System/Library/PrivateFrameworks/CoreUtils.framework/Versions/A/CoreUtils +0x0000000222d7b000 /System/Library/PrivateFrameworks/CoreUtilsExtras.framework/Versions/A/CoreUtilsExtras +0x000000022dac6000 /System/Library/PrivateFrameworks/IO80211.framework/Versions/A/IO80211 +0x0000000199e7a000 /System/Library/PrivateFrameworks/FrontBoardServices.framework/Versions/A/FrontBoardServices +0x000000019b9c1000 /System/Library/PrivateFrameworks/BackBoardServices.framework/Versions/A/BackBoardServices +0x00000001927fe000 /System/Library/PrivateFrameworks/IconFoundation.framework/Versions/A/IconFoundation +0x00000001981bd000 /System/Library/PrivateFrameworks/SpeechRecognitionCore.framework/Versions/A/SpeechRecognitionCore +0x00000001a43d9000 /usr/lib/libAccessibility.dylib +0x00000001988b7000 /System/Library/Frameworks/MediaAccessibility.framework/Versions/A/MediaAccessibility +0x00000001c9908000 /System/Library/Frameworks/OSLog.framework/Versions/A/OSLog +0x00000001a9b90000 /System/Library/PrivateFrameworks/LoggingSupport.framework/Versions/A/LoggingSupport +0x0000000103310000 /Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/server/libjvm.dylib +0x000000010217c000 /Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/libverify.dylib +0x00000001021d0000 /Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/libjava.dylib +0x000000010225c000 /Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/libjdwp.dylib +0x0000000102194000 /Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/libnpt.dylib +0x00000001022ac000 /Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/libinstrument.dylib +0x000000010220c000 /Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/libzip.dylib +0x00000001021bc000 /Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/libdt_socket.dylib +0x0000000117c84000 /Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/libnet.dylib +0x0000000117ca8000 /Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/libmanagement.dylib +0x0000000117cc4000 /Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/libnio.dylib +0x0000000193f06000 /usr/lib/libusrtcp.dylib +0x00000001894eb000 /usr/lib/libboringssl.dylib + +VM Arguments: +jvm_args: -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:60210,suspend=y,server=n -XX:TieredStopAtLevel=1 -Xverify:none -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true -Dmanagement.endpoints.jmx.exposure.include=* -javaagent:/Users/chenyao/Library/Caches/JetBrains/IntelliJIdea2024.1/captureAgent/debugger-agent.jar -Dfile.encoding=UTF-8 +java_command: com.BWebApplication +java_class_path (initial): /Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/deploy.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/ext/cldrdata.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/ext/dnsns.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/ext/jaccess.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/ext/jfxrt.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/ext/localedata.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/ext/nashorn.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/ext/sunec.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/ext/zipfs.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/javaws.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/jfxswt.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/management-agent.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/plugin.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/jre/lib/rt.jar:/Users/chenyao/Desktop/work/puhui-go/bweb/target/classes:/Users/chenyao/Desktop/work/puhui-go/service/target/classes:/Users/chenyao/.m2/repository/org/springframework/boot/spring-boot-starter/2.0.5.RELEASE/spring-boot-starter-2.0.5.RELEASE.jar:/Users/ch +Launcher Type: SUN_STANDARD + +Environment Variables: +JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home +CLASSPATH=/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/lib/tools.jar:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/lib/dt.jar:. +PATH=/Users/chenyao/Downloads/apache-maven-3.6.3/bin:/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Applications/VMware Fusion.app/Contents/Public:.:. +SHELL=/bin/zsh + +Signal Handlers: +SIGSEGV: [libjvm.dylib+0x55b890], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_ONSTACK|SA_RESTART|SA_SIGINFO +SIGBUS: [libjvm.dylib+0x55b890], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO +SIGFPE: [libjvm.dylib+0x55b890], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO +SIGPIPE: [libjvm.dylib+0x458d5c], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO +SIGXFSZ: [libjvm.dylib+0x458d5c], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO +SIGILL: [libjvm.dylib+0x55b890], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO +SIGUSR1: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none +SIGUSR2: [libjvm.dylib+0x4593a8], sa_mask[0]=00100000000000000000000000000000, sa_flags=SA_RESTART|SA_SIGINFO +SIGHUP: [libjvm.dylib+0x4573a0], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO +SIGINT: [libjvm.dylib+0x4573a0], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO +SIGTERM: [libjvm.dylib+0x4573a0], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO +SIGQUIT: [libjvm.dylib+0x4573a0], sa_mask[0]=11111111011111110111111111111111, sa_flags=SA_RESTART|SA_SIGINFO + + +--------------- S Y S T E M --------------- + +OS:Bsduname:Darwin 23.5.0 Darwin Kernel Version 23.5.0: Wed May 1 20:16:51 PDT 2024; root:xnu-10063.121.3~5/RELEASE_ARM64_T8103 arm64 +rlimit: STACK 8176k, CORE 0k, NPROC 2666, NOFILE 10240, AS infinity +load average:2.02 2.54 3.05 + +CPU:total 8 (initial active 8) + +Memory: 16k page, physical 16777216k(51520k free) + +/proc/meminfo: + + +vm_info: Java HotSpot(TM) 64-Bit Server VM (25.411-b09) for bsd-aarch64 JRE (1.8.0_411-b09), built on Mar 13 2024 07:21:14 by "java_re" with gcc Apple LLVM 12.0.0 (clang-1200.0.32.29) + +time: Thu Aug 1 11:07:41 2024 +timezone: CST +elapsed time: 362.276898 seconds (0d 0h 6m 2s) + diff --git a/order/src/main/java/com/order/controller/business/BsOrderGoodsController.java b/order/src/main/java/com/order/controller/business/BsOrderGoodsController.java index 1d1b4c5..87dcc58 100644 --- a/order/src/main/java/com/order/controller/business/BsOrderGoodsController.java +++ b/order/src/main/java/com/order/controller/business/BsOrderGoodsController.java @@ -122,7 +122,9 @@ public class BsOrderGoodsController { throw ErrorHelp.genException(SysCode.System , ErrorCode.COMMON_ERROR , "信息错误!"); } - goodsOrder.setLogisticsNo(body.getLogisticsNo()); + String logisticsNo = body.getLogisticsNo().replaceAll("\\s+", ""); + + goodsOrder.setLogisticsNo(logisticsNo); goodsOrder.setUpdateTime(new Date()); if (goodsOrder.getStatus() == OrderGoodsStatusEnum.status1.getCode()) { goodsOrder.setStatus(OrderGoodsStatusEnum.status2.getCode()); diff --git a/service/src/main/java/com/hfkj/common/utils/CommonUtil.java b/service/src/main/java/com/hfkj/common/utils/CommonUtil.java new file mode 100644 index 0000000..a1f5efc --- /dev/null +++ b/service/src/main/java/com/hfkj/common/utils/CommonUtil.java @@ -0,0 +1,19 @@ +package com.hfkj.common.utils; + +import java.math.BigDecimal; +import java.math.RoundingMode; + +public class CommonUtil { + + public static String unitLengthTransform(BigDecimal length){ + + if(length==null){ + return null; + } + if (length.compareTo(new BigDecimal(1000)) > 0) { + return length.divide(new BigDecimal(1000), 2, RoundingMode.HALF_UP) + "千米"; + } + + return length + "米"; + } +} diff --git a/service/src/main/java/com/hfkj/common/utils/StarbucksUtil.java b/service/src/main/java/com/hfkj/common/utils/StarbucksUtil.java new file mode 100644 index 0000000..31802fd --- /dev/null +++ b/service/src/main/java/com/hfkj/common/utils/StarbucksUtil.java @@ -0,0 +1,146 @@ +package com.hfkj.common.utils; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.mysql.jdbc.StringUtils; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.*; + +public class StarbucksUtil { + + private static String tall = "starbucks/tall.png"; + private static String tallSelect = "starbucks/tallSelect.png"; + private static String grande = "starbucks/grande.png"; + private static String grandeSelect = "starbucks/grandeSelect.png"; + private static String venti = "starbucks/venti.png"; + private static String ventiSelect = "starbucks/ventiSelect.png"; + + /** + * @MethodName unitLengthTransform + * @Description: 组装数据 + * @param cupSize 杯型 + * @param tallPrice 中杯价格 + * @param grandePrice 大杯价格 + * @param ventiPrice 超大杯价格 + * @return: java.util.List + * @Author: Sum1Dream + * @Date: 2024/8/2 上午11:33 + */ + public static List unitLengthTransform(String cupSize , BigDecimal tallPrice , BigDecimal grandePrice , BigDecimal ventiPrice){ + + List list = new ArrayList<>(); + + String[] cpuS = cupSize.split(","); + + for (String cup : cpuS) { + JSONObject obj = new JSONObject(); + switch (cup) { + case "中杯": + obj.put("cpu", "中杯"); + obj.put("notSelect", tall); + obj.put("select", tallSelect); + obj.put("volume", "355ml"); + obj.put("price", tallPrice); + break; + case "大杯": + obj.put("cpu", "大杯"); + obj.put("notSelect", grande); + obj.put("select", grandeSelect); + obj.put("volume", "473ml"); + obj.put("price", grandePrice); + break; + case "超大杯": + obj.put("cpu", "超大杯"); + obj.put("notSelect", venti); + obj.put("select", ventiSelect); + obj.put("volume", "473ml"); + obj.put("price", ventiPrice); + break; + default: + obj.put("cpu", "特殊杯"); + obj.put("notSelect", venti); + obj.put("select", ventiSelect); + obj.put("volume", "∞ml"); + obj.put("price", ventiPrice); + break; + } + list.add(obj); + } + + return list; + } + + /** + * @MethodName calculatePrice + * @Description: 计算售卖价格 + * @param discount 利润 + * @param Price 成本价 + * @return: java.math.BigDecimal + * @Author: Sum1Dream + * @Date: 2024/8/2 上午11:32 + */ + public static BigDecimal calculatePrice(BigDecimal discount , BigDecimal Price) { + return Price.add(Price.multiply(discount).divide(new BigDecimal(100) , 2, RoundingMode.HALF_UP)); + } + + /** + * @MethodName findPrice + * @Description: 查询价格 + * @param item + * @param cupSize + * @return: java.math.BigDecimal + * @Author: Sum1Dream + * @Date: 2024/8/5 下午3:42 + */ + public static BigDecimal findPrice(JSONObject item , String cupSize) { + if (Objects.equals(cupSize, "中杯")) { + return item.getBigDecimal("salesTallPrice"); + } + if (Objects.equals(cupSize, "大杯")) { + return item.getBigDecimal("salesGrandePrice"); + } + if (Objects.equals(cupSize, "超大杯")) { + return item.getBigDecimal("salesVentiPrice"); + } + return null; + + } + + /** + * @MethodName speString + * @Description: 规格 + * @param cupSize + * @param temperature + * @param cream + * @param espresso + * @param milk + * @param milkBubble + * @param separation + * @return: java.lang.String + * @Author: Sum1Dream + * @Date: 2024/8/6 下午2:54 + */ + public static String speString(String cupSize , String temperature , String cream , String espresso , String milk , String milkBubble , String separation) { + StringBuilder sb = new StringBuilder(); + if (!StringUtils.isNullOrEmpty(cupSize)) { + sb.append(cupSize).append(temperature).append(separation); + } + if (!StringUtils.isNullOrEmpty(cream)) { + sb.append(cupSize).append(separation); + } + if (!StringUtils.isNullOrEmpty(espresso)) { + sb.append(espresso).append(separation); + } + if (!StringUtils.isNullOrEmpty(milk)) { + sb.append(milk).append(separation); + } + if (!StringUtils.isNullOrEmpty(milkBubble)) { + sb.append(milkBubble).append(separation); + } + + sb.delete(sb.length()- separation.length() , sb.length()); + return sb.toString(); + } +} diff --git a/service/src/main/java/com/hfkj/config/CommonSysConfig.java b/service/src/main/java/com/hfkj/config/CommonSysConfig.java index ec29b42..54b6e89 100644 --- a/service/src/main/java/com/hfkj/config/CommonSysConfig.java +++ b/service/src/main/java/com/hfkj/config/CommonSysConfig.java @@ -118,6 +118,7 @@ public class CommonSysConfig { */ private String qianZhuUrl; private String qianZhuH5url; + private String qinzhuUrlToken; private String qianZhuPlatformId; private String qianZhuSecret; private String qianZhuCinemaNotify; diff --git a/service/src/main/java/com/hfkj/dao/BsOrderMapperExt.java b/service/src/main/java/com/hfkj/dao/BsOrderMapperExt.java index d03de78..7a768ed 100644 --- a/service/src/main/java/com/hfkj/dao/BsOrderMapperExt.java +++ b/service/src/main/java/com/hfkj/dao/BsOrderMapperExt.java @@ -25,28 +25,30 @@ public interface BsOrderMapperExt { "ext_3)", "values ", "", - "(#{item.userId,jdbcType=BIGINT}, " + - "#{item.userName,jdbcType=VARCHAR}, ", - "#{item.userPhone,jdbcType=VARCHAR}, " + - "#{item.orderNo,jdbcType=VARCHAR}, ", - "#{item.payChannel,jdbcType=INTEGER}, " + - "#{item.payChannelOrderNo,jdbcType=VARCHAR}, ", - "#{item.paySerialNo,jdbcType=VARCHAR}, " + - "#{item.payType,jdbcType=INTEGER}, ", - "#{item.totalPrice,jdbcType=DECIMAL}, " + - "#{item.payRealPrice,jdbcType=DECIMAL}, ", - "#{item.productTotalPrice,jdbcType=DECIMAL}," + - "#{item.createTime,jdbcType=TIMESTAMP}, ", - "#{item.updateTime,jdbcType=TIMESTAMP}, " + - "#{item.payTime,jdbcType=TIMESTAMP}, ", - "#{item.finishTime,jdbcType=TIMESTAMP}, " + - "#{item.cancelTime,jdbcType=TIMESTAMP}, ", - "#{item.refundTime,jdbcType=TIMESTAMP}, " + - "#{item.orderStatus,jdbcType=INTEGER}, ", - "#{item.remarks,jdbcType=VARCHAR}, " + - "#{item.ext1,jdbcType=VARCHAR}, " + - "#{item.ext2,jdbcType=VARCHAR}, ", - "#{item.ext3,jdbcType=VARCHAR})", + "(" + + "#{item.userId,jdbcType=BIGINT}, " + + "#{item.userName,jdbcType=VARCHAR}, ", + "#{item.userPhone,jdbcType=VARCHAR}, " + + "#{item.orderNo,jdbcType=VARCHAR}, ", + "#{item.payChannel,jdbcType=INTEGER}, " + + "#{item.payChannelOrderNo,jdbcType=VARCHAR}, ", + "#{item.paySerialNo,jdbcType=VARCHAR}, " + + "#{item.payType,jdbcType=INTEGER}, ", + "#{item.totalPrice,jdbcType=DECIMAL}, " + + "#{item.payRealPrice,jdbcType=DECIMAL}, ", + "#{item.productTotalPrice,jdbcType=DECIMAL}," + + "#{item.createTime,jdbcType=TIMESTAMP}, ", + "#{item.updateTime,jdbcType=TIMESTAMP}, " + + "#{item.payTime,jdbcType=TIMESTAMP}, ", + "#{item.finishTime,jdbcType=TIMESTAMP}, " + + "#{item.cancelTime,jdbcType=TIMESTAMP}, ", + "#{item.refundTime,jdbcType=TIMESTAMP}, " + + "#{item.orderStatus,jdbcType=INTEGER}, ", + "#{item.remarks,jdbcType=VARCHAR}, " + + "#{item.ext1,jdbcType=VARCHAR}, " + + "#{item.ext2,jdbcType=VARCHAR}, ", + "#{item.ext3,jdbcType=VARCHAR}" + + ")", "", "" }) diff --git a/service/src/main/java/com/hfkj/dao/CouponDiscountGoodsRelMapperExt.java b/service/src/main/java/com/hfkj/dao/CouponDiscountGoodsRelMapperExt.java index 274d160..ddf6d7b 100644 --- a/service/src/main/java/com/hfkj/dao/CouponDiscountGoodsRelMapperExt.java +++ b/service/src/main/java/com/hfkj/dao/CouponDiscountGoodsRelMapperExt.java @@ -1,7 +1,34 @@ package com.hfkj.dao; +import com.hfkj.entity.CouponDiscountGoodsRel; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + /** * mapper扩展类 */ public interface CouponDiscountGoodsRelMapperExt { + + @Insert({ + "" + }) + void insertGoodsRelBatch(@Param(value = "list") List list); } \ No newline at end of file diff --git a/service/src/main/java/com/hfkj/model/goods/GoodsModelSpecs.java b/service/src/main/java/com/hfkj/model/goods/GoodsModelSpecs.java index b03b161..458a2c1 100644 --- a/service/src/main/java/com/hfkj/model/goods/GoodsModelSpecs.java +++ b/service/src/main/java/com/hfkj/model/goods/GoodsModelSpecs.java @@ -19,6 +19,11 @@ public class GoodsModelSpecs extends GoodsSpecs { */ private Long specsId; + /** + * 按钮名称 + */ + private String btnName; + /** * 编号 */ diff --git a/service/src/main/java/com/hfkj/qianzhu/channel/QianZhuService.java b/service/src/main/java/com/hfkj/qianzhu/channel/QianZhuService.java index f6e2cf1..1579417 100644 --- a/service/src/main/java/com/hfkj/qianzhu/channel/QianZhuService.java +++ b/service/src/main/java/com/hfkj/qianzhu/channel/QianZhuService.java @@ -57,7 +57,7 @@ public class QianZhuService { Map param = new HashMap<>(); param.put("platformId", CommonSysConst.getSysConfig().getQianZhuPlatformId()); param.put("timestamp", new Date().getTime()); - map.put("action", postUrl); + param.put("action", postUrl); param.put("content", JSON.toJSONString(map)); param.put("version", "1.0"); param.put("traceId", WxUtils.makeNonStr()); @@ -74,6 +74,29 @@ public class QianZhuService { } + public static JSONObject requestToken(String postUrl, Map map) throws Exception { + + log.info("============ 千猪请求-START ============="); + Map param = new HashMap<>(); + param.put("platformId", CommonSysConst.getSysConfig().getQianZhuPlatformId()); + param.put("timestamp", new Date().getTime()); + param.put("action", postUrl); + param.put("content", JSON.toJSONString(map)); + param.put("version", "1.0"); + param.put("traceId", WxUtils.makeNonStr()); + param.put("sign", MD5Util.encode(GenerateSign.paramSort(param,CommonSysConst.getSysConfig().getQianZhuSecret()).getBytes()).toLowerCase()); + + log.info("请求接口:" + postUrl); + log.info("请求参数:" + JSONObject.toJSONString(param)); + + JSONObject response = HttpsUtils.doPost(CommonSysConst.getSysConfig().getQinzhuUrlToken(), JSONObject.toJSONString(param)); + + log.info("响应参数:" + response.toJSONString()); + log.info("============ 千猪请求-END =============="); + return response; + + } + /** * @Author Sum1Dream * @name getAllCities.java diff --git a/service/src/main/java/com/hfkj/qianzhu/channel/StarbucksService.java b/service/src/main/java/com/hfkj/qianzhu/channel/StarbucksService.java new file mode 100644 index 0000000..adf7df0 --- /dev/null +++ b/service/src/main/java/com/hfkj/qianzhu/channel/StarbucksService.java @@ -0,0 +1,183 @@ +package com.hfkj.qianzhu.channel; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.hfkj.common.exception.ErrorCode; +import com.hfkj.common.exception.ErrorHelp; +import com.hfkj.common.exception.SysCode; +import com.hfkj.common.utils.CommonUtil; +import com.hfkj.common.utils.DateUtil; +import com.mysql.jdbc.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.*; + +/** + * @ClassName StarbucksService + * @Author Sum1Dream + * @Description 查询星巴克 + * @Date 2024/8/1 下午2:25 + **/ +public class StarbucksService { + + private static Logger log = LoggerFactory.getLogger(QianZhuService.class); + + /** + * @MethodName starbucksStores + * @Description: 查询星巴克门店 + * @param map + * @return: com.alibaba.fastjson.JSONObject + * @Author: Sum1Dream + * @Date: 2024/8/1 下午2:19 + */ + public static JSONObject starbucksStores(Map map) throws Exception { + + JSONObject object = QianZhuService.requestH5("starbucksStores.listByLonAndLat" , map); + + if (object.getBoolean("success")) { + return object; + } else { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "查询失败!"); + } + + } + + /** + * @MethodName starbucksProducts + * @Description: 查询星巴克产品 + * @param map + * @return: com.alibaba.fastjson.JSONObject + * @Author: Sum1Dream + * @Date: 2024/8/1 下午2:19 + */ + public static JSONObject starbucksProducts(Map map) throws Exception { + + JSONObject object = QianZhuService.requestH5("starbucksProducts.pagedQuery" , map); + + if (object.getBoolean("success")) { + return object; + } else { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "查询失败!"); + } + + } + + public static JSONObject getTokenV2(Map map) throws Exception { + + JSONObject object = QianZhuService.requestToken("users.getTokenV2" , map); + + if (object.getBoolean("success")) { + return object; + } else { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "获取失败!"); + } + + } + + /** + * @MethodName starbucksOrders + * @Description: 星巴克预下单 + * @param map + * @return: com.alibaba.fastjson.JSONObject + * @Author: Sum1Dream + * @Date: 2024/8/1 下午2:20 + */ + public static JSONObject starbucksOrders(Map map) throws Exception { + + JSONObject object = QianZhuService.requestH5("starbucksOrders.createOrderV2" , map); + + if (object.getBoolean("success")) { + return object; + } else { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "下单失败!"); + } + + } + + /** + * @MethodName starbucksOrdersPay + * @Description: 星巴克支付 + * @param map + * @return: com.alibaba.fastjson.JSONObject + * @Author: Sum1Dream + * @Date: 2024/8/1 下午2:21 + */ + public static JSONObject starbucksOrdersPay(Map map) throws Exception { + + JSONObject object = QianZhuService.requestH5("starbucksOrders.pay" , map); + + if (object.getBoolean("success")) { + return object; + } else { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "查询失败!"); + } + + } + + /** + * @MethodName starbucksOrder + * @Description: 查询星巴克订单 + * @param map + * @return: com.alibaba.fastjson.JSONObject + * @Author: Sum1Dream + * @Date: 2024/8/1 下午2:24 + */ + public static JSONObject starbucksOrder(Map map) { + try { + JSONObject object = QianZhuService.requestH5("starbucksOrders.getByOrderNo" , map); + + if (object.getBoolean("success")) { + return object; + } else { + return null; + } + } catch (Exception e) { + return null; + } + + } + + + /** + * @MethodName starbucksStores + * @Description: 查询组装星巴克门店数据 + * @param map + * @return: com.alibaba.fastjson.JSONObject + * @Author: Sum1Dream + * @Date: 2024/8/1 下午2:19 + */ + public static List starbucksStoresList(Map map) throws Exception { + + JSONObject object = starbucksStores(map); + + JSONArray array = object.getJSONArray("data"); + + List list = new ArrayList<>(); + + if (!array.isEmpty()) { + for (Object jsonArray : array) { + JSONObject jsonObject = (JSONObject) jsonArray; + jsonObject.put("distance" , CommonUtil.unitLengthTransform(jsonObject.getBigDecimal("distance"))); + String startDate = DateUtil.date2String(new Date() , DateUtil.Y_M_D) + " " +jsonObject.getString("startTime"); + String endDate = DateUtil.date2String(new Date() , DateUtil.Y_M_D) + " " + jsonObject.getString("endTime"); + Date startTime = DateUtil.format(startDate , DateUtil.Y_M_D_HMS); + Date endTime = DateUtil.format(endDate , DateUtil.Y_M_D_HMS); + if (jsonObject.getBoolean("enabled") && DateUtil.isEffectiveDate(new Date() , startTime, endTime)) { + jsonObject.put("statusDescribe" , "营业中"); + jsonObject.put("status" , true); + } else { + jsonObject.put("statusDescribe" , "未营业"); + jsonObject.put("status" , false); + } + + list.add(jsonObject); + } + } + + return list; + + } + + +} diff --git a/service/src/main/java/com/hfkj/service/discount/CouponDiscountService.java b/service/src/main/java/com/hfkj/service/discount/CouponDiscountService.java index afe5ca5..70a703f 100644 --- a/service/src/main/java/com/hfkj/service/discount/CouponDiscountService.java +++ b/service/src/main/java/com/hfkj/service/discount/CouponDiscountService.java @@ -106,6 +106,14 @@ public interface CouponDiscountService { */ void deleteDiscountGoodsRel(Long id); + /** + * @MethodName insertGoodsRelBatch + * @Description: 批量导入 + * @param list + * @Author: Sum1Dream + * @Date: 2024/8/6 下午5:17 + */ + void insertGoodsRelBatch(List list); /** * @Author Sum1Dream diff --git a/service/src/main/java/com/hfkj/service/discount/impl/CouponDiscountServiceImpl.java b/service/src/main/java/com/hfkj/service/discount/impl/CouponDiscountServiceImpl.java index 3eb4b3c..4dd73d8 100644 --- a/service/src/main/java/com/hfkj/service/discount/impl/CouponDiscountServiceImpl.java +++ b/service/src/main/java/com/hfkj/service/discount/impl/CouponDiscountServiceImpl.java @@ -107,7 +107,10 @@ public class CouponDiscountServiceImpl implements CouponDiscountService { couponDiscountGoodsRelMapper.deleteByPrimaryKey(id); } - + @Override + public void insertGoodsRelBatch(List list) { + couponDiscountGoodsRelMapper.insertGoodsRelBatch(list); + } @Override public void deleteDiscountGoodsRelDiscountId(Long discountId) { diff --git a/service/src/main/java/com/hfkj/service/discount/impl/CouponDiscountUserRelServiceImpl.java b/service/src/main/java/com/hfkj/service/discount/impl/CouponDiscountUserRelServiceImpl.java index e86ef90..74d3641 100644 --- a/service/src/main/java/com/hfkj/service/discount/impl/CouponDiscountUserRelServiceImpl.java +++ b/service/src/main/java/com/hfkj/service/discount/impl/CouponDiscountUserRelServiceImpl.java @@ -42,6 +42,9 @@ public class CouponDiscountUserRelServiceImpl implements CouponDiscountUserRelSe if (MapUtils.getInteger(map, "status") != null) { criteria.andStatusEqualTo(MapUtils.getInteger(map, "status")); } + if (MapUtils.getLong(map, "discountId") != null) { + criteria.andDiscountIdEqualTo(MapUtils.getLong(map, "discountId")); + } if (MapUtils.getInteger(map, "platformCode") != null) { criteria.andPlatformCodeEqualTo(MapUtils.getString(map, "platformCode")); } diff --git a/service/src/main/java/com/hfkj/service/goods/BsOrderStarbucksService.java b/service/src/main/java/com/hfkj/service/goods/BsOrderStarbucksService.java new file mode 100644 index 0000000..459cead --- /dev/null +++ b/service/src/main/java/com/hfkj/service/goods/BsOrderStarbucksService.java @@ -0,0 +1,95 @@ +package com.hfkj.service.goods; + +import com.alibaba.fastjson.JSONObject; +import com.hfkj.entity.BsOrderStarbucks; + +import java.util.List; +import java.util.Map; + +/** + * @ClassName BsOrderStarbucksService + * @Author Sum1Dream + * @Description 星巴克订单 + * @Date 2024/8/5 下午1:56 + **/ +public interface BsOrderStarbucksService { + + /** + * @MethodName create + * @Description: 创建订单 + * @param orderStarbucks + * @Author: Sum1Dream + * @Date: 2024/8/5 下午2:09 + */ + void create(BsOrderStarbucks orderStarbucks); + + /** + * @MethodName update + * @Description: 更新 + * @param orderStarbucks + * @Author: Sum1Dream + * @Date: 2024/7/4 下午2:30 + */ + void update(BsOrderStarbucks orderStarbucks); + + /** + * @MethodName delete + * @Description: 删除 + * @param id + * @param fullDelete + * @Author: Sum1Dream + * @Date: 2024/7/4 下午2:30 + */ + void delete(Long id , Boolean fullDelete); + + /** + * @MethodName queryDetail + * @Description:查询详情 + * @param id + * @return: com.hfkj.entity.BsOrderCinema + * @Author: Sum1Dream + * @Date: 2024/7/4 下午2:30 + */ + BsOrderStarbucks queryDetail(Long id); + + /** + * @MethodName findGoodsOrder + * @Description: + * @param orderNo + * @return: com.hfkj.entity.BsOrderCinema + * @Author: Sum1Dream + * @Date: 2024/7/4 下午2:30 + */ + BsOrderStarbucks findGoodsOrder(String orderNo); + + /** + * @MethodName queryDetailByMap + * @Description: 查询 + * @param map + * @return: com.hfkj.entity.BsOrderCinema + * @Author: Sum1Dream + * @Date: 2024/7/4 下午2:34 + */ + BsOrderStarbucks queryDetailByMap(Map map); + + /** + * @MethodName getList + * @Description: 查询列表 + * @param map + * @return: java.util.List + * @Author: Sum1Dream + * @Date: 2024/7/4 下午2:35 + */ + List getList(Map map); + + /** + * @MethodName updateOrderStatus + * @Description: 更新订单状态 + * @param orderNo + * @param status + * @Author: Sum1Dream + * @Date: 2024/8/6 上午10:20 + */ + void updateOrderStatus(String orderNo , Integer status); + +} diff --git a/service/src/main/java/com/hfkj/service/goods/GoodsJumpService.java b/service/src/main/java/com/hfkj/service/goods/GoodsJumpService.java new file mode 100644 index 0000000..dcc7a3c --- /dev/null +++ b/service/src/main/java/com/hfkj/service/goods/GoodsJumpService.java @@ -0,0 +1,83 @@ +package com.hfkj.service.goods; + + + +import com.hfkj.entity.GoodsJump; + +import java.util.List; +import java.util.Map; + +/** + * @ClassName BsOrderJumpService + * @Author Sum1Dream + * @Description 实物订单跳转服务 + * @Date 2024/8/1 上午9:55 + **/ +public interface GoodsJumpService { + + /** + * @MethodName create + * @Description: 创建 + * @param goodsJump + * @Author: Sum1Dream + * @Date: 2024/8/1 上午9:57 + */ + void create(GoodsJump goodsJump); + + /** + * @MethodName update + * @Description: 更新 + * @param goodsJump + * @Author: Sum1Dream + * @Date: 2024/8/1 上午9:57 + */ + void update(GoodsJump goodsJump); + + /** + * @MethodName delete + * @Description: 删除 + * @param id + * @Author: Sum1Dream + * @Date: 2024/8/1 上午9:57 + */ + void delete(Long id); + + /** + * @MethodName queryDetail + * @Description: 查询详情 + * @param id + * @return: com.hfkj.entity.GoodsJump + * @Author: Sum1Dream + * @Date: 2024/8/1 上午9:57 + */ + GoodsJump queryDetail(Long id); + + /** + * @MethodName deleteSpecsId + * @Description: 删除 + * @param specsId + * @Author: Sum1Dream + * @Date: 2024/8/1 上午9:57 + */ + void deleteSpecsId(Long specsId); + + /** + * @MethodName queryDetailBySpecsId + * @Description: 查询详情 + * @param specsId + * @return: com.hfkj.entity.GoodsJump + * @Author: Sum1Dream + * @Date: 2024/8/1 上午9:57 + */ + GoodsJump queryDetailBySpecsId(Long specsId); + + /** + * @MethodName getList + * @Description: 查询列表 + * @param map + * @return: java.util.List + * @Author: Sum1Dream + * @Date: 2024/8/1 上午9:57 + */ + List getList(Map map); +} diff --git a/service/src/main/java/com/hfkj/service/goods/impl/BsOrderStarbucksServiceImpl.java b/service/src/main/java/com/hfkj/service/goods/impl/BsOrderStarbucksServiceImpl.java new file mode 100644 index 0000000..2beaa4b --- /dev/null +++ b/service/src/main/java/com/hfkj/service/goods/impl/BsOrderStarbucksServiceImpl.java @@ -0,0 +1,108 @@ +package com.hfkj.service.goods.impl; + +import com.alibaba.fastjson.JSONObject; +import com.hfkj.common.exception.ErrorCode; +import com.hfkj.common.exception.ErrorHelp; +import com.hfkj.common.exception.SysCode; +import com.hfkj.dao.BsOrderStarbucksMapper; + +import com.hfkj.entity.BsOrder; +import com.hfkj.entity.BsOrderStarbucks; +import com.hfkj.entity.BsOrderStarbucksExample; +import com.hfkj.service.goods.BsOrderStarbucksService; +import org.apache.commons.collections4.MapUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; + +@Service("bsOrderStarbucksService") +public class BsOrderStarbucksServiceImpl implements BsOrderStarbucksService { + + @Resource + private BsOrderStarbucksMapper bsOrderStarbucksMapper; + + @Override + public void create(BsOrderStarbucks orderStarbucks) { + bsOrderStarbucksMapper.insert(orderStarbucks); + } + + @Override + public void update(BsOrderStarbucks orderStarbucks) { + bsOrderStarbucksMapper.updateByPrimaryKeySelective(orderStarbucks); + } + + @Override + public void delete(Long id, Boolean fullDelete) { + bsOrderStarbucksMapper.deleteByPrimaryKey(id); + } + + @Override + public BsOrderStarbucks queryDetail(Long id) { + return bsOrderStarbucksMapper.selectByPrimaryKey(id); + } + + @Override + public BsOrderStarbucks findGoodsOrder(String orderNo) { + BsOrderStarbucksExample example = new BsOrderStarbucksExample(); + example.createCriteria().andOrderNoEqualTo(orderNo); + + List list = bsOrderStarbucksMapper.selectByExample(example); + + if (!list.isEmpty()) { + return list.get(0); + } + + return null; + } + + @Override + public BsOrderStarbucks queryDetailByMap(Map map) { + return null; + } + + @Override + public List getList(Map map) { + BsOrderStarbucksExample example = new BsOrderStarbucksExample(); + BsOrderStarbucksExample.Criteria criteria = example.createCriteria(); + + if (StringUtils.isNotBlank(MapUtils.getString(map, "orderNo"))) { + criteria.andOrderNoEqualTo(MapUtils.getString(map, "orderNo")); + } + if (StringUtils.isNotBlank(MapUtils.getString(map, "childOrderNo"))) { + criteria.andChildOrderNoEqualTo(MapUtils.getString(map, "childOrderNo")); + } + if (StringUtils.isNotBlank(MapUtils.getString(map, "userPhone"))) { + criteria.andUserPhoneEqualTo(MapUtils.getString(map, "userPhone")); + } + + if (MapUtils.getLong(map, "createTimeS") != null) { + criteria.andCreateTimeGreaterThanOrEqualTo(new Date(MapUtils.getLong(map, "createTimeS"))); + } + if (MapUtils.getLong(map, "createTimeE") != null) { + criteria.andCreateTimeLessThan(new Date(MapUtils.getLong(map, "createTimeE"))); + } + if (MapUtils.getInteger(map, "status") != null) { + criteria.andStatusEqualTo(MapUtils.getInteger(map, "status")); + } + example.setOrderByClause("create_time desc"); + + return bsOrderStarbucksMapper.selectByExample(example); + } + + @Override + public void updateOrderStatus(String orderNo, Integer status) { + // 查询星巴克订单 + Map map = new HashMap<>(); + map.put("orderNo", orderNo); + List list = getList(map); + + for (BsOrderStarbucks orderStarbucks : list) { + orderStarbucks.setUpdateTime(new Date()); + orderStarbucks.setStatus(status); + + update(orderStarbucks); + } + } +} diff --git a/service/src/main/java/com/hfkj/service/goods/impl/GoodsJumpServiceImpl.java b/service/src/main/java/com/hfkj/service/goods/impl/GoodsJumpServiceImpl.java new file mode 100644 index 0000000..6313c78 --- /dev/null +++ b/service/src/main/java/com/hfkj/service/goods/impl/GoodsJumpServiceImpl.java @@ -0,0 +1,69 @@ +package com.hfkj.service.goods.impl; + +import com.hfkj.dao.GoodsJumpMapper; +import com.hfkj.entity.GoodsJump; +import com.hfkj.entity.GoodsJumpExample; +import com.hfkj.service.goods.GoodsJumpService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; + +@Service("orderJumpService") +public class GoodsJumpServiceImpl implements GoodsJumpService { + + @Resource + private GoodsJumpMapper goodsJumpMapper; + + @Override + public void create(GoodsJump goodsJump) { + goodsJumpMapper.insert(goodsJump); + } + + @Override + public void update(GoodsJump goodsJump) { + goodsJumpMapper.updateByPrimaryKeySelective(goodsJump); + } + + @Override + public void delete(Long id) { + goodsJumpMapper.deleteByPrimaryKey(id); + } + + @Override + public GoodsJump queryDetail(Long id) { + return goodsJumpMapper.selectByPrimaryKey(id); + } + + @Override + public void deleteSpecsId(Long specsId) { + GoodsJumpExample example = new GoodsJumpExample(); + example.createCriteria().andSpecsIdEqualTo(specsId); + + List list = goodsJumpMapper.selectByExample(example); + + for (GoodsJump goodsJump : list) { + goodsJumpMapper.deleteByPrimaryKey(goodsJump.getId()); + } + } + + @Override + public GoodsJump queryDetailBySpecsId(Long specsId) { + GoodsJumpExample example = new GoodsJumpExample(); + example.createCriteria().andSpecsIdEqualTo(specsId); + + List list = goodsJumpMapper.selectByExample(example); + + if (!list.isEmpty()) { + return list.get(0); + } + + return null; + } + + @Override + public List getList(Map map) { + return goodsJumpMapper.selectByExample(new GoodsJumpExample()); + } +} diff --git a/service/src/main/java/com/hfkj/service/goods/impl/GoodsMsgServiceImpl.java b/service/src/main/java/com/hfkj/service/goods/impl/GoodsMsgServiceImpl.java index 7a7ecf9..ac28bd1 100644 --- a/service/src/main/java/com/hfkj/service/goods/impl/GoodsMsgServiceImpl.java +++ b/service/src/main/java/com/hfkj/service/goods/impl/GoodsMsgServiceImpl.java @@ -58,6 +58,29 @@ public class GoodsMsgServiceImpl implements GoodsMsgService { @Override public GoodsMsg queryDetailByMap(Map map) { + GoodsMsgExample example = new GoodsMsgExample(); + GoodsMsgExample.Criteria criteria = example.createCriteria(); + + if (MapUtils.getLong(map, "goodsType") != null) { + criteria.andGoodsTypeEqualTo(MapUtils.getLong(map, "goodsType")); + } + if (MapUtils.getLong(map, "goodsTypeParent") != null) { + criteria.andGoodsTypeParentEqualTo(MapUtils.getLong(map, "goodsTypeParent")); + } + if (MapUtils.getInteger(map, "type") != null) { + criteria.andTypeEqualTo(MapUtils.getInteger(map, "type")); + } + if (MapUtils.getLong(map, "goodsBrand") != null) { + criteria.andGoodsBrandEqualTo(MapUtils.getLong(map, "goodsBrand")); + } + if (MapUtils.getLong(map, "merId") != null) { + criteria.andMerIdEqualTo(MapUtils.getLong(map, "merId")); + } + + List list = goodsMsgMapper.selectByExample(example); + if (!list.isEmpty()) { + return list.get(0); + } return null; } diff --git a/service/src/main/java/com/hfkj/service/order/OrderCreateService.java b/service/src/main/java/com/hfkj/service/order/OrderCreateService.java index e47df9d..b055c46 100644 --- a/service/src/main/java/com/hfkj/service/order/OrderCreateService.java +++ b/service/src/main/java/com/hfkj/service/order/OrderCreateService.java @@ -1,5 +1,6 @@ package com.hfkj.service.order; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.hfkj.common.exception.ErrorCode; @@ -7,10 +8,12 @@ import com.hfkj.common.exception.ErrorHelp; import com.hfkj.common.exception.SysCode; import com.hfkj.common.utils.RandomUtils; import com.hfkj.common.utils.RedisUtil; +import com.hfkj.common.utils.StarbucksUtil; import com.hfkj.entity.*; import com.hfkj.model.order.OrderChildModel; import com.hfkj.model.order.OrderModel; import com.hfkj.qianzhu.channel.CinemaService; +import com.hfkj.qianzhu.channel.StarbucksService; import com.hfkj.service.BsMerService; import com.hfkj.service.BsProductConfigService; import com.hfkj.service.coupon.BsOrderCouponNoService; @@ -31,9 +34,8 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; +import java.util.*; +import java.util.stream.Collectors; /** * 创建订单业务 @@ -67,6 +69,10 @@ public class OrderCreateService { private BsOrderCinemaService bsOrderCinemaService; @Resource private BsOrderService bsOrderService; + @Resource + private GoodsJumpService goodsJumpService; + @Resource + private BsOrderStarbucksService orderStarbucksService; /** * 事务产品 @@ -208,9 +214,11 @@ public class OrderCreateService { jsonObject = new JSONObject((Map) orderChild.getBusiness()); } - + // 查询商品虚拟信息 + GoodsJump goodsJump = goodsJumpService.queryDetailBySpecsId(goodsSpecs.getId()); jsonObject.put("address", address); + jsonObject.put("goodsJump", goodsJump); // 创建实物订单 BsOrderGoods orderGoods = new BsOrderGoods(); @@ -327,4 +335,135 @@ public class OrderCreateService { return orderChild; } + + public OrderChildModel starbucks(OrderModel order, OrderChildModel orderChild) throws Exception { + // 获取下单业务参数 + JSONObject object = new JSONObject((Map) orderChild.getBusiness()); + BsProductConfig productConfig = bsProductConfigService.queryDetail(OrderChildProductTypeEnum.type4.getCode()); + + + if ( + StringUtils.isBlank(object.getString("phone")) || + StringUtils.isBlank(object.getString("storeCode")) || + StringUtils.isBlank(object.getString("storeName")) || + StringUtils.isBlank(object.getString("storeAddress")) || + StringUtils.isBlank(object.getString("orderItems")) + ) { + throw ErrorHelp.genException(SysCode.System , ErrorCode.REQ_PARAMS_ERROR ); + } + + // 上传订单数据 + JSONArray orderItems = object.getJSONArray("orderItems"); + if (orderItems == null) { + throw ErrorHelp.genException(SysCode.System , ErrorCode.REQ_PARAMS_ERROR ); + } + + // 查询星巴克产品 + Map map = new HashMap<>(); + map.put("pageIndex", 1); + map.put("pageSize", 100000); + JSONObject jsonObject = StarbucksService.starbucksProducts(map); + if (jsonObject.getJSONObject("data") == null) { + throw ErrorHelp.genException(SysCode.System , ErrorCode.REQ_PARAMS_ERROR ); + } + JSONArray jsonArray = jsonObject.getJSONObject("data").getJSONArray("items"); + if (jsonArray == null) { + throw ErrorHelp.genException(SysCode.System , ErrorCode.REQ_PARAMS_ERROR ); + } + + // 组装数据 + List list = new ArrayList<>(); + List starbucksList; + for (Object json : jsonArray) { + JSONObject starbucksObject = (JSONObject) json; + list.add(starbucksObject); + } + + // 子订单价格 + BigDecimal childPrice = new BigDecimal(0); + + // 筛选数据 + for (Object orderItem : orderItems) { + JSONObject orderItemObject = (JSONObject) orderItem; + + if (orderItemObject.getInteger("productId") == null || + orderItemObject.getInteger("num") == null || + StringUtils.isBlank(orderItemObject.getString("cupSize")) || + StringUtils.isBlank(orderItemObject.getString("name")) || + StringUtils.isBlank(orderItemObject.getString("temperature")) + ) { + throw ErrorHelp.genException(SysCode.System , ErrorCode.REQ_PARAMS_ERROR ); + } + + starbucksList = list.stream(). + filter(o->o.getInteger("id").equals(orderItemObject.getInteger("productId"))). + collect(Collectors.toList()); + if (starbucksList.isEmpty()) { + throw ErrorHelp.genException(SysCode.System , ErrorCode.COMMON_ERROR , orderItemObject.getString("name") + "产品缺货" ); + } + + JSONObject starbucks = starbucksList.get(0); + + BigDecimal price = StarbucksUtil.findPrice(starbucks , ((JSONObject) orderItem).getString("cupSize")); + + if (price == null) { + throw ErrorHelp.genException(SysCode.System , ErrorCode.COMMON_ERROR , "当前产品价格错误!" ); + } + + BsOrderStarbucks bsOrderStarbucks = new BsOrderStarbucks(); + bsOrderStarbucks.setOrderNo(orderChild.getOrderNo()); + bsOrderStarbucks.setChildOrderNo(orderChild.getChildOrderNo()); + bsOrderStarbucks.setMerId(productConfig.getMerId()); + bsOrderStarbucks.setProductId(orderItemObject.getInteger("productId")); + bsOrderStarbucks.setUserId(order.getUserId()); + bsOrderStarbucks.setUserPhone(object.getString("phone")); + bsOrderStarbucks.setStoreCode(object.getString("storeCode")); + bsOrderStarbucks.setStoreName(object.getString("storeName")); + bsOrderStarbucks.setStoreAddress(object.getString("storeAddress")); + bsOrderStarbucks.setCreateTime(new Date()); + bsOrderStarbucks.setUpdateTime(new Date()); + bsOrderStarbucks.setPrice(StarbucksUtil.calculatePrice(productConfig.getDiscount() , price)); + bsOrderStarbucks.setName(starbucks.getString("name")); + bsOrderStarbucks.setImg(starbucks.getString("defaultImage")); + bsOrderStarbucks.setCream(orderItemObject.getString("cream")); + bsOrderStarbucks.setCupSize(orderItemObject.getString("cupSize")); + bsOrderStarbucks.setEspresso(orderItemObject.getString("espresso")); + bsOrderStarbucks.setMilk(orderItemObject.getString("milk")); + bsOrderStarbucks.setMilkBubble(orderItemObject.getString("milkBubble")); + bsOrderStarbucks.setTemperature(orderItemObject.getString("temperature")); + bsOrderStarbucks.setNum(orderItemObject.getInteger("num")); + bsOrderStarbucks.setPlatformUniqueId(order.getUserPhone()); + bsOrderStarbucks.setStatus(OrderStarbucksStatusEnum.status0.getCode()); + + orderStarbucksService.create(bsOrderStarbucks); + + childPrice = childPrice.add(bsOrderStarbucks.getPrice().multiply(orderItemObject.getBigDecimal("num"))); + } + + orderChild.setMerId(productConfig.getMerId()); + orderChild.setProductName("星巴克"); + orderChild.setProductCount(1); + orderChild.setProductSpecName("星巴克"); + + // 星巴克创建订单 + // 获取token + Map mapToken = new HashMap<>(); + mapToken.put("platformUniqueId" , order.getOrderNo()); + mapToken.put("nickname" , order.getUserName()); + mapToken.put("mobile" , order.getUserPhone()); + StarbucksService.getTokenV2(mapToken); + // 查询产品 + Map mapOrder = new HashMap<>(); + mapOrder.put("storeCode", object.getString("storeCode")); + mapOrder.put("customerMobile", object.getString("phone")); + mapOrder.put("platformUniqueId", order.getOrderNo()); + mapOrder.put("orderItems", JSON.toJSONString(object.getJSONArray("orderItems"))); + JSONObject starbucks = StarbucksService.starbucksOrders(mapOrder); + + orderChild.setProductPrice(childPrice); + orderChild.setChannelOrderNo(starbucks.getJSONObject("data").getString("orderNo")); + + return orderChild; + + } } diff --git a/service/src/main/java/com/hfkj/service/order/OrderPaySuccessService.java b/service/src/main/java/com/hfkj/service/order/OrderPaySuccessService.java index 4a4493f..cb3026c 100644 --- a/service/src/main/java/com/hfkj/service/order/OrderPaySuccessService.java +++ b/service/src/main/java/com/hfkj/service/order/OrderPaySuccessService.java @@ -10,22 +10,22 @@ import com.hfkj.config.CommonSysConst; import com.hfkj.entity.*; import com.hfkj.model.order.OrderModel; import com.hfkj.qianzhu.channel.CinemaService; +import com.hfkj.qianzhu.channel.StarbucksService; import com.hfkj.service.coupon.BsOrderCouponNoService; import com.hfkj.service.coupon.BsOrderCouponService; import com.hfkj.service.coupon.channel.ChongQingCNPCCouponService; import com.hfkj.service.coupon.channel.HuiLianTongCouponService; import com.hfkj.service.coupon.channel.PcytCNPCCouponConfig; import com.hfkj.service.coupon.channel.PetroConfig; -import com.hfkj.service.goods.BsOrderCinemaService; -import com.hfkj.service.goods.BsOrderGoodsService; -import com.hfkj.service.goods.GoodsMsgService; -import com.hfkj.service.goods.GoodsVpdService; +import com.hfkj.service.goods.*; +import com.hfkj.service.goods.impl.BsOrderStarbucksServiceImpl; import com.hfkj.service.goods.impl.GoodsSpecsServiceImpl; import com.hfkj.service.hlt.HuiLianTongUnionCardService; import com.hfkj.sysenum.GoodsVpdSourceEnum; import com.hfkj.sysenum.order.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.annotation.Resource; @@ -55,9 +55,11 @@ public class OrderPaySuccessService { @Resource private GoodsVpdService goodsVpdService; @Resource - private GoodsSpecsServiceImpl goodsSpecsService; + private BsOrderStarbucksService orderStarbucksService; @Resource private BsOrderCinemaService bsOrderCinemaService; + @Autowired + private BsOrderStarbucksServiceImpl bsOrderStarbucksService; /** * 订单业务处理 @@ -73,6 +75,8 @@ public class OrderPaySuccessService { product(order, childOrder); } else if (childOrder.getProductType().equals(OrderChildProductTypeEnum.type3.getCode())) { cinema(order, childOrder); + } else if (childOrder.getProductType().equals(OrderChildProductTypeEnum.type4.getCode())) { + starbucks(childOrder); } } catch (Exception e) { @@ -284,4 +288,13 @@ public class OrderPaySuccessService { } + public void starbucks(BsOrderChild childOrder) throws Exception { + // 推送订单 + // 查询星巴克订单 + Map map = new HashMap<>(); + map.put("orderNo", childOrder.getChannelOrderNo()); + StarbucksService.starbucksOrdersPay(map); + } + + } diff --git a/service/src/main/java/com/hfkj/service/order/impl/BsOrderChildServiceImpl.java b/service/src/main/java/com/hfkj/service/order/impl/BsOrderChildServiceImpl.java index e3c194c..33e1536 100644 --- a/service/src/main/java/com/hfkj/service/order/impl/BsOrderChildServiceImpl.java +++ b/service/src/main/java/com/hfkj/service/order/impl/BsOrderChildServiceImpl.java @@ -1,23 +1,25 @@ package com.hfkj.service.order.impl; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.hfkj.common.utils.StarbucksUtil; import com.hfkj.dao.BsOrderChildMapper; import com.hfkj.dao.GoodsUserAddressMapper; -import com.hfkj.entity.BsOrderChild; -import com.hfkj.entity.BsOrderChildExample; -import com.hfkj.entity.BsOrderGoods; -import com.hfkj.entity.GoodsUserAddress; +import com.hfkj.entity.*; import com.hfkj.model.order.OrderChildModel; -import com.hfkj.service.goods.BsOrderGoodsService; -import com.hfkj.service.goods.GoodsUserAddressService; -import com.hfkj.service.goods.GoodsVpdService; +import com.hfkj.qianzhu.channel.StarbucksService; +import com.hfkj.service.BsProductConfigService; +import com.hfkj.service.goods.*; +import com.hfkj.service.goods.impl.BsOrderStarbucksServiceImpl; import com.hfkj.service.order.BsOrderChildService; import com.hfkj.sysenum.order.OrderChildProductTypeEnum; import com.hfkj.sysenum.order.OrderChildStatusEnum; import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.*; /** @@ -37,6 +39,12 @@ public class BsOrderChildServiceImpl implements BsOrderChildService { private BsOrderGoodsService orderGoodsService; @Resource private GoodsVpdService goodsVpdService; + @Resource + private GoodsJumpService goodsJumpService; + @Resource + private BsOrderStarbucksServiceImpl bsOrderStarbucksService; + @Resource + private BsProductConfigService bsProductConfigService; @Override public void editData(BsOrderChild data) { @@ -95,6 +103,10 @@ public class BsOrderChildServiceImpl implements BsOrderChildService { object = new JSONObject((Map) childModel.getBusiness()); } + // 查询商品虚拟信息 + GoodsJump goodsJump = goodsJumpService.queryDetailBySpecsId(orderChild.getProductSpecId()); + + object.put("goodsJump", goodsJump); object.put("address", address); object.put("orderGoodsId", orderGoods.getId()); childModel.setBusiness(object); @@ -102,6 +114,77 @@ public class BsOrderChildServiceImpl implements BsOrderChildService { } } else if (childModel.getProductType().equals(OrderChildProductTypeEnum.type2.getCode())) { childModel.setBusiness(goodsVpdService.queryDetailBySpecsId(childModel.getProductSpecId())); + } else if (childModel.getProductType().equals(OrderChildProductTypeEnum.type4.getCode())) { + BsProductConfig productConfig = bsProductConfigService.queryDetail(OrderChildProductTypeEnum.type4.getCode()); + // 查询星巴克订单列表信息 + Map map = new HashMap<>(); + map.put("orderNo", childModel.getOrderNo()); + List starbucksList = bsOrderStarbucksService.getList(map); + JSONObject object = new JSONObject(); + object.put("storeName", starbucksList.get(0).getStoreName()); + object.put("storeAddress", starbucksList.get(0).getStoreAddress()); + object.put("status", starbucksList.get(0).getStatus()); + // 查询星巴克订单详情 + Map orderMap = new HashMap<>(); + orderMap.put("orderNo" , orderChild.getChannelOrderNo()); + JSONObject objectOrder = StarbucksService.starbucksOrder(orderMap); + // 如果查询上游订单数据不为空 则回填上游数据 + JSONObject orderJson; + List orderItemList = new ArrayList<>(); + if (objectOrder != null) { + // 订单数据 + JSONObject order = objectOrder.getJSONObject("data"); + // 修改订单数据 + bsOrderStarbucksService.updateOrderStatus(orderChild.getOrderNo() , order.getInteger("status")); + // 修改订单状态 + object.put("status", order.getInteger("status")); + // 订单业务数据 + JSONArray orderItems = order.getJSONArray("orderItems"); + + for (Object orderItem : orderItems) { + JSONObject orderItemJson = (JSONObject) orderItem; + orderJson = new JSONObject(); + orderJson.put("name" , orderItemJson.getString("productName")); + orderJson.put("failReason" , orderItemJson.getString("failReason")); + orderJson.put("code" , orderItemJson.getString("code")); + orderJson.put("img" , orderItemJson.getString("imgUrl")); + orderJson.put("num" , orderItemJson.getInteger("quantity")); + orderJson.put("status" , orderItemJson.getInteger("status")); + orderJson.put("price" , StarbucksUtil.calculatePrice(productConfig.getDiscount() , orderItemJson.getBigDecimal("unitPrice"))); + orderJson.put("totalPrice" , orderJson.getBigDecimal("price").multiply(orderJson.getBigDecimal("num"))); + orderJson.put("speList" , StarbucksUtil.speString(orderItemJson.getString("cupSize") , + orderItemJson.getString("temperature") , orderItemJson.getString("cream") , + orderItemJson.getString("espresso") , orderItemJson.getString("milk") , + orderItemJson.getString("milkBubble") , "/")); + orderJson.put("speDetail" , StarbucksUtil.speString(orderItemJson.getString("cupSize") , + orderItemJson.getString("temperature") , orderItemJson.getString("cream") , + orderItemJson.getString("espresso") , orderItemJson.getString("milk") , + orderItemJson.getString("milkBubble") , "
")); + orderItemList.add(orderJson); + } + + + } else { + for (BsOrderStarbucks starbucks : starbucksList) { + orderJson = new JSONObject(); + orderJson.put("name" , starbucks.getName()); + orderJson.put("img" , starbucks.getImg()); + orderJson.put("num" , starbucks.getNum()); + orderJson.put("price" , starbucks.getPrice()); + orderJson.put("totalPrice" , starbucks.getPrice().multiply(new BigDecimal(starbucks.getNum()))); + orderJson.put("speList" , StarbucksUtil.speString(starbucks.getCupSize() , starbucks.getTemperature() , + starbucks.getCream() , starbucks.getEspresso() , + starbucks.getMilk() , starbucks.getMilkBubble() , "/")); + orderJson.put("speDetail" , StarbucksUtil.speString(starbucks.getCupSize() , + starbucks.getTemperature() , starbucks.getCream() , starbucks.getEspresso() , + starbucks.getMilk() , starbucks.getMilkBubble() , "
")); + orderItemList.add(orderJson); + } + } + + object.put("orderItemList", orderItemList); + childModel.setBusiness(object); + } orderChildModelList.add(childModel); } diff --git a/service/src/main/java/com/hfkj/service/order/impl/BsOrderServiceImpl.java b/service/src/main/java/com/hfkj/service/order/impl/BsOrderServiceImpl.java index 46fbe52..6a260f5 100644 --- a/service/src/main/java/com/hfkj/service/order/impl/BsOrderServiceImpl.java +++ b/service/src/main/java/com/hfkj/service/order/impl/BsOrderServiceImpl.java @@ -15,6 +15,7 @@ import com.hfkj.model.order.OrderChildModel; import com.hfkj.model.order.OrderModel; import com.hfkj.mqtopic.OrderTopic; import com.hfkj.qianzhu.channel.CinemaService; +import com.hfkj.qianzhu.channel.StarbucksService; import com.hfkj.service.BsProductConfigService; import com.hfkj.service.coupon.BsOrderCouponNoService; import com.hfkj.service.coupon.BsOrderCouponService; @@ -22,6 +23,7 @@ import com.hfkj.service.discount.CouponDiscountService; import com.hfkj.service.discount.CouponDiscountUserRelService; import com.hfkj.service.goods.BsOrderCinemaService; import com.hfkj.service.goods.BsOrderGoodsService; +import com.hfkj.service.goods.BsOrderStarbucksService; import com.hfkj.service.order.*; import com.hfkj.service.user.UserIntegralService; import com.hfkj.service.user.impl.PhgDataUserServiceImpl; @@ -92,13 +94,7 @@ public class BsOrderServiceImpl implements BsOrderService { @Resource private BsProductConfigService productConfigService; @Resource - private PhgDataUserServiceImpl phgDataUserService; - @Resource - private BsOrderGoodsService bsOrderGoodsService; - @Resource - private BsOrderCouponService bsOrderCouponService; - @Resource - private BsOrderCouponNoService bsOrderCouponNoService; + private BsOrderStarbucksService orderStarbucksService; @Override @@ -157,6 +153,8 @@ public class BsOrderServiceImpl implements BsOrderService { child = orderCreateService.product(order, child); }else if (child.getProductType().equals(OrderChildProductTypeEnum.type3.getCode())) { child = orderCreateService.cinema(order, child); + }else if (child.getProductType().equals(OrderChildProductTypeEnum.type4.getCode())) { + child = orderCreateService.starbucks(order, child); } child.setProductTotalPrice(child.getProductPrice().multiply(new BigDecimal(child.getProductCount().toString()))); child.setStatus(OrderChildStatusEnum.status1.getCode()); @@ -508,7 +506,6 @@ public class BsOrderServiceImpl implements BsOrderService { orderModel.setBusiness(orderChild.getBusiness()); } - if (orderChild.getProductType().equals(OrderChildProductTypeEnum.type3.getCode())) { BsOrderCinema bsOrderCinema = bsOrderCinemaService.findGoodsOrder(orderNo); diff --git a/service/src/main/java/com/hfkj/sysenum/order/OrderChildProductTypeEnum.java b/service/src/main/java/com/hfkj/sysenum/order/OrderChildProductTypeEnum.java index 2f87ac7..48e9aee 100644 --- a/service/src/main/java/com/hfkj/sysenum/order/OrderChildProductTypeEnum.java +++ b/service/src/main/java/com/hfkj/sysenum/order/OrderChildProductTypeEnum.java @@ -14,6 +14,7 @@ public enum OrderChildProductTypeEnum { type1(1, "实物产品"), type2(2, "虚拟产品"), type3(3, "千猪电影票"), + type4(4, "千猪星巴克"), ; private int code; diff --git a/service/src/main/java/com/hfkj/sysenum/order/OrderStarbucksStatusEnum.java b/service/src/main/java/com/hfkj/sysenum/order/OrderStarbucksStatusEnum.java new file mode 100644 index 0000000..f2453b6 --- /dev/null +++ b/service/src/main/java/com/hfkj/sysenum/order/OrderStarbucksStatusEnum.java @@ -0,0 +1,54 @@ +package com.hfkj.sysenum.order; + +import lombok.Getter; + +/** + * @ClassName OrderCinemaStatusEnum + * @Author Sum1Dream + * @Description 电影票状态枚举 + * @Date 2024/7/4 下午3:32 + **/ +@Getter +public enum OrderStarbucksStatusEnum { + /** + * 未上送 + */ + status0(0, "待付款"), + + /** + * 待出票 + */ + status5(5, "已支付"), + + /** + * 已出票 + */ + status10(10, "出单中"), + + /** + * 已退款 + */ + status15(15, "出单成功"), + + /** + * 已取消 + */ + statusNegative5(-5, "已取消"), + + /** + * 代付款 + */ + statusNegative10(-10, "失败"), + + ; + + private final int code; + + private final String name; + + + OrderStarbucksStatusEnum(int code, String name) { + this.code = code; + this.name = name; + } +} diff --git a/service/src/main/resources/dev/commonConfig.properties b/service/src/main/resources/dev/commonConfig.properties index fcd1078..39d0775 100644 --- a/service/src/main/resources/dev/commonConfig.properties +++ b/service/src/main/resources/dev/commonConfig.properties @@ -58,11 +58,12 @@ huiftShopCode=50041b27-f985-dcb0-1cc0-f106b09bf1fe huiftSignSecret=DB4D8069A9AC6DDF9D75667EE5CF182A #QIANZHU -qianZhuUrl=https://live.qianzhu8.com -qianzhuH5url=https://nf.qianzhu8.com/gateway -qianZhuPlatformId=10710 -qianZhuSecret=pgmh5j1cbq2brm08 -qianZhuCinemaNotify=https://phg.dctpay.com/order/cinemaNotify/notify +qianZhuUrl=https://live-test.qianzhu8.com +qianzhuH5url=https://nf-test.qianzhu8.com/gateway +qinzhuUrlToken=https://live-test.qianzhu8.com/gateway +qianZhuPlatformId=10376 +qianZhuSecret=ktxb49sh2jfhgn8g +qianZhuCinemaNotify=https://phgcs.dctpay.com/order/cinemaNotify/notify #CT ctNotifyUrl = 1 diff --git a/service/src/main/resources/prod/commonConfig.properties b/service/src/main/resources/prod/commonConfig.properties index 3af1cb1..87a69bf 100644 --- a/service/src/main/resources/prod/commonConfig.properties +++ b/service/src/main/resources/prod/commonConfig.properties @@ -59,6 +59,7 @@ huiftSignSecret=19C17F9E19B8DDDDF2FD2EE4EA9F6C61 #QIANZHU qianZhuUrl=https://live.qianzhu8.com qianzhuH5url=https://nf.qianzhu8.com/gateway +qinzhuUrlToken=https://live.qianzhu8.com/gateway qianZhuPlatformId=10710 qianZhuSecret=pgmh5j1cbq2brm08 qianZhuCinemaNotify=https://phg.dctpay.com/order/cinemaNotify/notify From ef56c68738c881f5c2b247b4566a9d6970234e2a Mon Sep 17 00:00:00 2001 From: yuanye <418471657@qq.com> Date: Thu, 8 Aug 2024 09:35:48 +0800 Subject: [PATCH 2/2] 1 --- .../discount/DiscountController.java | 16 +- .../qianZhu/StarbucksController.java | 196 ++++++++---------- .../business/BsOrderStarbucksController.java | 118 +++++++++++ .../hfkj/model/order/OrderStarbucksModel.java | 20 ++ .../hfkj/service/SecDictionaryService.java | 11 + .../impl/SecDictionaryServiceImpl.java | 9 + .../service/order/BsOrderChildService.java | 11 + .../service/order/OrderCreateService.java | 6 +- .../order/impl/BsOrderChildServiceImpl.java | 43 ++++ .../order/impl/BsOrderServiceImpl.java | 4 +- 10 files changed, 318 insertions(+), 116 deletions(-) create mode 100644 order/src/main/java/com/order/controller/business/BsOrderStarbucksController.java create mode 100644 service/src/main/java/com/hfkj/model/order/OrderStarbucksModel.java diff --git a/cweb/src/main/java/com/cweb/controller/discount/DiscountController.java b/cweb/src/main/java/com/cweb/controller/discount/DiscountController.java index 07032b3..6822885 100644 --- a/cweb/src/main/java/com/cweb/controller/discount/DiscountController.java +++ b/cweb/src/main/java/com/cweb/controller/discount/DiscountController.java @@ -113,16 +113,24 @@ public class DiscountController { listDiscount.forEach(d -> { Map mapSpecs = new HashMap<>(); mapSpecs.put("discountId", d.getDiscountId()); + mapSpecs.put("specsIds", specsIds); // 查询规格可用优惠券 List couponDiscountGoodsRel = couponDiscountService.getListGoodsRel(mapSpecs); List specsIdList = new ArrayList<>(); + List specsIdListS = new ArrayList<>(); couponDiscountGoodsRel.forEach(dg -> { specsIdList.add(dg.getSpecsId()); }); - String specsIdsStr = StringUtils.join(specsIdList, ","); - if (specsIdsStr.contains(specsIds)) { + String[] s = specsIds.split(","); + + for(String ss : s) { + specsIdListS.add(Long.parseLong(ss)); + } + Collections.sort(specsIdList); + Collections.sort(specsIdListS); + if (specsIdList.toString().equals(specsIdListS.toString())) { listFind.add(d); } }); @@ -179,7 +187,7 @@ public class DiscountController { try { // 用户session UserSessionObject userSession = userCenter.getSessionModel(UserSessionObject.class); - List dictionary = dictionaryService.getDictionary(code); + List dictionary = dictionaryService.getDictionaryByOl(code); if (!dictionary.isEmpty()) { for (SecDictionary secDictionary : dictionary) { @@ -189,7 +197,7 @@ public class DiscountController { map.put("discountId", secDictionary.getCodeValue()); List list = discountUserRelService.getList(map); - if (!list.isEmpty()) { + if (list.isEmpty()) { couponDiscountPackageService.giveDiscountPackage(Integer.valueOf(secDictionary.getCodeName()), userSession.getUser().getPhone()); } diff --git a/cweb/src/main/java/com/cweb/controller/qianZhu/StarbucksController.java b/cweb/src/main/java/com/cweb/controller/qianZhu/StarbucksController.java index 434c5b0..d781a1b 100644 --- a/cweb/src/main/java/com/cweb/controller/qianZhu/StarbucksController.java +++ b/cweb/src/main/java/com/cweb/controller/qianZhu/StarbucksController.java @@ -73,126 +73,104 @@ public class StarbucksController { @RequestMapping(value="/starbucksProducts",method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "查询星巴克产品") - public ResponseData starbucksProducts( - @RequestParam(name = "code", required = false) String code, - @RequestParam(name = "lat", required = true) String lat, - @RequestParam(name = "lon", required = true) String lon) { + public ResponseData starbucksProducts(@RequestParam(name = "code", required = false) String code) { try { - Map params = new HashMap<>(); - - params.put("lat", lat); - params.put("lon", lon); - List list = StarbucksService.starbucksStoresList(params); + List products = new ArrayList<>(); + JSONObject product = new JSONObject(); + // 查询产品配置 + BsProductConfig productConfig = productConfigService.queryDetail(OrderChildProductTypeEnum.type4.getCode()); + // 查询产品 + Map map = new HashMap<>(); + map.put("pageIndex", 1); + map.put("pageSize", 100000); + JSONObject object = StarbucksService.starbucksProducts(map); + if (object.getJSONObject("data") != null) { + JSONArray jsonArray = object.getJSONObject("data").getJSONArray("items"); + // 判断数据不为空 + if (!jsonArray.isEmpty()) { + for(Object obj : jsonArray) { + JSONObject item = (JSONObject) obj; + if (item.getInteger("shelfStatus") == 5) { + // 中杯售卖价 + BigDecimal tallPrice = StarbucksUtil.calculatePrice(productConfig.getDiscount() , item.getBigDecimal("salesTallPrice")); + + // 判断如果卖家 大于 原价 展示原价 + if (tallPrice.compareTo(item.getBigDecimal("marketTallPrice")) > 0) { + item.put("tallPrice" , item.getBigDecimal("marketTallPrice")); + } else { + item.put("tallPrice" , tallPrice); + } - if (code != null) { - list = list.stream() - .filter(s -> s.getString("code").equals(code)) - .collect(Collectors.toList()); // 将结果收集到列表中 - } + // 大杯销售价 + BigDecimal grandePrice = StarbucksUtil.calculatePrice(productConfig.getDiscount() , item.getBigDecimal("salesGrandePrice")); + if (grandePrice.compareTo(item.getBigDecimal("marketGrandePrice")) > 0) { + item.put("grandePrice" , item.getBigDecimal("marketGrandePrice")); + } else { + item.put("grandePrice" , grandePrice); + } + // 超大杯销售价 + BigDecimal ventiPrice = StarbucksUtil.calculatePrice(productConfig.getDiscount() , item.getBigDecimal("salesVentiPrice")); + if (ventiPrice.compareTo(item.getBigDecimal("marketVentiPrice")) > 0) { + item.put("ventiPrice" , item.getBigDecimal("marketVentiPrice")); + } else { + item.put("ventiPrice" , ventiPrice); + } - List products = new ArrayList<>(); - JSONObject product = new JSONObject(); - if (!list.isEmpty()) { - JSONObject data = list.get(0); - product.put("store", data); - // 查询产品配置 - BsProductConfig productConfig = productConfigService.queryDetail(OrderChildProductTypeEnum.type4.getCode()); - - // 查询产品 - Map map = new HashMap<>(); - map.put("pageIndex", 1); - map.put("pageSize", 100000); - JSONObject object = StarbucksService.starbucksProducts(map); - if (object.getJSONObject("data") != null) { - JSONArray jsonArray = object.getJSONObject("data").getJSONArray("items"); - // 判断数据不为空 - if (!jsonArray.isEmpty()) { - for(Object obj : jsonArray) { - JSONObject item = (JSONObject) obj; - if (item.getInteger("shelfStatus") == 5) { - // 中杯售卖价 - BigDecimal tallPrice = StarbucksUtil.calculatePrice(productConfig.getDiscount() , item.getBigDecimal("salesTallPrice")); - - // 判断如果卖家 大于 原价 展示原价 - if (tallPrice.compareTo(item.getBigDecimal("marketTallPrice")) > 0) { - item.put("tallPrice" , item.getBigDecimal("marketTallPrice")); - } else { - item.put("tallPrice" , tallPrice); - } - - // 大杯销售价 - BigDecimal grandePrice = StarbucksUtil.calculatePrice(productConfig.getDiscount() , item.getBigDecimal("salesGrandePrice")); - if (grandePrice.compareTo(item.getBigDecimal("marketGrandePrice")) > 0) { - item.put("grandePrice" , item.getBigDecimal("marketGrandePrice")); - } else { - item.put("grandePrice" , grandePrice); - } - - // 超大杯销售价 - BigDecimal ventiPrice = StarbucksUtil.calculatePrice(productConfig.getDiscount() , item.getBigDecimal("salesVentiPrice")); - if (ventiPrice.compareTo(item.getBigDecimal("marketVentiPrice")) > 0) { - item.put("ventiPrice" , item.getBigDecimal("marketVentiPrice")); - } else { - item.put("ventiPrice" , ventiPrice); - } - - List dataList = new ArrayList<>(); - - JSONObject jsonObject ; - if (StringUtils.isNotBlank(item.getString("cupSize"))) { - jsonObject = new JSONObject(); - jsonObject.put("name" , "杯型"); - jsonObject.put("type" , 1); - jsonObject.put("data" , StarbucksUtil.unitLengthTransform(item.getString("cupSize") , item.getBigDecimal("tallPrice") , item.getBigDecimal("grandePrice") , item.getBigDecimal("ventiPrice"))); - dataList.add(jsonObject); - } - if (StringUtils.isNotBlank(item.getString("temperature"))) { - jsonObject = new JSONObject(); - jsonObject.put("name" , "温度"); - jsonObject.put("type" , 2); - jsonObject.put("data" , item.getString("temperature").split(",")); - dataList.add(jsonObject); - } - if (StringUtils.isNotBlank(item.getString("cream"))) { - jsonObject = new JSONObject(); - jsonObject.put("name" , "奶油"); - jsonObject.put("type" , 2); - jsonObject.put("data" , item.getString("cream").split(",")); - dataList.add(jsonObject); - } - if (StringUtils.isNotBlank(item.getString("espresso"))) { - jsonObject = new JSONObject(); - jsonObject.put("name" , "浓缩咖啡"); - jsonObject.put("type" , 2); - jsonObject.put("data" , item.getString("espresso").split(",")); - dataList.add(jsonObject); - } - if (StringUtils.isNotBlank(item.getString("milk"))) { - jsonObject = new JSONObject(); - jsonObject.put("name" , "牛奶"); - jsonObject.put("type" , 2); - jsonObject.put("data" , item.getString("milk").split(",")); - dataList.add(jsonObject); - } - if (StringUtils.isNotBlank(item.getString("milkBubble"))) { - jsonObject = new JSONObject(); - jsonObject.put("name" , "奶泡"); - jsonObject.put("type" , 2); - jsonObject.put("data" , item.getString("milkBubble").split(",")); - dataList.add(jsonObject); - } - item.put("saleData" , dataList); - - products.add(item); + List dataList = new ArrayList<>(); + JSONObject jsonObject ; + if (StringUtils.isNotBlank(item.getString("cupSize"))) { + jsonObject = new JSONObject(); + jsonObject.put("name" , "杯型"); + jsonObject.put("type" , 1); + jsonObject.put("data" , StarbucksUtil.unitLengthTransform(item.getString("cupSize") , item.getBigDecimal("tallPrice") , item.getBigDecimal("grandePrice") , item.getBigDecimal("ventiPrice"))); + dataList.add(jsonObject); + } + if (StringUtils.isNotBlank(item.getString("temperature"))) { + jsonObject = new JSONObject(); + jsonObject.put("name" , "温度"); + jsonObject.put("type" , 2); + jsonObject.put("data" , item.getString("temperature").split(",")); + dataList.add(jsonObject); + } + if (StringUtils.isNotBlank(item.getString("cream"))) { + jsonObject = new JSONObject(); + jsonObject.put("name" , "奶油"); + jsonObject.put("type" , 2); + jsonObject.put("data" , item.getString("cream").split(",")); + dataList.add(jsonObject); + } + if (StringUtils.isNotBlank(item.getString("espresso"))) { + jsonObject = new JSONObject(); + jsonObject.put("name" , "浓缩咖啡"); + jsonObject.put("type" , 2); + jsonObject.put("data" , item.getString("espresso").split(",")); + dataList.add(jsonObject); } + if (StringUtils.isNotBlank(item.getString("milk"))) { + jsonObject = new JSONObject(); + jsonObject.put("name" , "牛奶"); + jsonObject.put("type" , 2); + jsonObject.put("data" , item.getString("milk").split(",")); + dataList.add(jsonObject); + } + if (StringUtils.isNotBlank(item.getString("milkBubble"))) { + jsonObject = new JSONObject(); + jsonObject.put("name" , "奶泡"); + jsonObject.put("type" , 2); + jsonObject.put("data" , item.getString("milkBubble").split(",")); + dataList.add(jsonObject); + } + item.put("saleData" , dataList); + + products.add(item); + } } } - } Map> collect = products.stream().collect(Collectors.groupingBy(jsonObject -> jsonObject.getString("categoryName"))); diff --git a/order/src/main/java/com/order/controller/business/BsOrderStarbucksController.java b/order/src/main/java/com/order/controller/business/BsOrderStarbucksController.java new file mode 100644 index 0000000..442eef1 --- /dev/null +++ b/order/src/main/java/com/order/controller/business/BsOrderStarbucksController.java @@ -0,0 +1,118 @@ +package com.order.controller.business; + +import com.github.pagehelper.PageInfo; +import com.hfkj.common.security.SessionObject; +import com.hfkj.common.security.UserCenter; +import com.hfkj.common.utils.PageUtil; +import com.hfkj.common.utils.ResponseMsgUtil; +import com.hfkj.entity.BsOrderChild; +import com.hfkj.entity.BsOrderStarbucks; +import com.hfkj.model.ResponseData; +import com.hfkj.model.SecUserSessionObject; +import com.hfkj.model.order.OrderStarbucksModel; +import com.hfkj.service.goods.BsOrderStarbucksService; +import com.hfkj.service.order.BsOrderChildService; +import com.hfkj.sysenum.SecUserObjectTypeEnum; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Controller +@RequestMapping(value="/orderStarbucks") +@Api(value="星巴克订单管理") +public class BsOrderStarbucksController { + + private static final Logger log = LoggerFactory.getLogger(BsOrderStarbucksController.class); + + @Resource + private BsOrderChildService bsOrderChildService; + + @Resource + private BsOrderStarbucksService bsOrderStarbucksService; + + @RequestMapping(value="/getListStarbucks",method = RequestMethod.GET) + @ResponseBody + @ApiOperation(value = "查询列表") + public ResponseData getListStarbucks( + @RequestParam(value = "orderNo" , required = false) String orderNo, + @RequestParam(value = "childOrderNo" , required = false) String childOrderNo, + @RequestParam(value = "userPhone" , required = false) String userPhone, + @RequestParam(value = "productSpecName" , required = false) String productSpecName, + @RequestParam(value = "storeAddress" , required = false) String storeAddress, + @RequestParam(value = "storeName" , required = false) String storeName, + @RequestParam(value = "productName" , required = false) String productName, + @RequestParam(value = "payType" , required = false) Integer payType, + @RequestParam(value = "status" , required = false) Integer status, + @RequestParam(value = "createTimeS" , required = false) Long createTimeS, + @RequestParam(value = "createTimeE" , required = false) Long createTimeE, + @RequestParam(value = "pageNum" , required = true) Integer pageNum, + @RequestParam(value = "pageSize" , required = true) Integer pageSize, HttpServletRequest request) { + try { + + Map map = new HashMap<>(); + map.put("orderNo", orderNo); + map.put("childOrderNo", childOrderNo); + map.put("productType", 4); + map.put("productSpecName", productSpecName); + map.put("productName", productName); + map.put("createTimeS", createTimeS); + map.put("createTimeE", createTimeE); + map.put("status", status); + + List list = bsOrderChildService.getList(map); + List starbucksList = bsOrderStarbucksService.getList(new HashMap<>()); + + List starbucksModelList = new ArrayList<>(); + + for (BsOrderChild bsOrderChild : list) { + OrderStarbucksModel starbucksModel = new OrderStarbucksModel(); + BeanUtils.copyProperties(bsOrderChild, starbucksModel); + + List starbucks= starbucksList.stream().filter(s -> s.getOrderNo().equals(starbucksModel.getOrderNo())). + collect(Collectors.toList()); + if (!starbucks.isEmpty()) { + starbucksModel.setStoreAddress(starbucks.get(0).getStoreAddress()); + starbucksModel.setStoreName(starbucks.get(0).getStoreName()); + starbucksModel.setUserPhone(starbucks.get(0).getUserPhone()); + + starbucksModelList.add(starbucksModel); + } + + } + + if (storeAddress != null) { + starbucksModelList = starbucksModelList.stream().filter(s -> s.getStoreAddress().contains(storeAddress)) // 使用contains方法进行模糊查询 + .collect(Collectors.toList()); + } + if (storeName != null) { + starbucksModelList = starbucksModelList.stream().filter(s -> s.getStoreName().contains(storeName)) // 使用contains方法进行模糊查询 + .collect(Collectors.toList()); + } + if (userPhone != null) { + starbucksModelList = starbucksModelList.stream().filter(s -> s.getUserPhone().contains(userPhone)) // 使用contains方法进行模糊查询 + .collect(Collectors.toList()); + } + + return ResponseMsgUtil.success(PageUtil.initPageInfoObj(pageNum, starbucksModelList.size(), pageSize, new PageInfo<>(starbucksModelList))); + + } catch (Exception e) { + log.error("error!",e); + return ResponseMsgUtil.exception(e); + } + } +} diff --git a/service/src/main/java/com/hfkj/model/order/OrderStarbucksModel.java b/service/src/main/java/com/hfkj/model/order/OrderStarbucksModel.java new file mode 100644 index 0000000..56c49b0 --- /dev/null +++ b/service/src/main/java/com/hfkj/model/order/OrderStarbucksModel.java @@ -0,0 +1,20 @@ +package com.hfkj.model.order; + +import com.hfkj.entity.BsOrderChild; +import lombok.Data; + +@Data +public class OrderStarbucksModel extends BsOrderChild{ + + /** + * 门店地址 + */ + private String storeAddress; + + /** + * 门店名称 + */ + private String storeName; + + private String userPhone; +} diff --git a/service/src/main/java/com/hfkj/service/SecDictionaryService.java b/service/src/main/java/com/hfkj/service/SecDictionaryService.java index 476ce3d..7ca2ffe 100644 --- a/service/src/main/java/com/hfkj/service/SecDictionaryService.java +++ b/service/src/main/java/com/hfkj/service/SecDictionaryService.java @@ -24,6 +24,17 @@ public interface SecDictionaryService { */ List getDictionary(String codeType); + + /** + * @MethodName getDictionaryByOl + * @Description: 查询在线 + * @param codeType + * @return: java.util.List + * @Author: Sum1Dream + * @Date: 2024/8/7 上午10:36 + */ + List getDictionaryByOl(String codeType); + /** * 获取数据字典 * @param codeType diff --git a/service/src/main/java/com/hfkj/service/impl/SecDictionaryServiceImpl.java b/service/src/main/java/com/hfkj/service/impl/SecDictionaryServiceImpl.java index d015640..1108e55 100644 --- a/service/src/main/java/com/hfkj/service/impl/SecDictionaryServiceImpl.java +++ b/service/src/main/java/com/hfkj/service/impl/SecDictionaryServiceImpl.java @@ -8,6 +8,7 @@ import com.hfkj.service.SecDictionaryService; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @@ -44,6 +45,14 @@ public class SecDictionaryServiceImpl implements SecDictionaryService { return getDictionary().stream().filter(o -> o.getCodeType().equals(codeType)).collect(Collectors.toList()); } + @Override + public List getDictionaryByOl(String codeType) { + SecDictionaryExample example = new SecDictionaryExample(); + example.createCriteria().andCodeTypeEqualTo(codeType); + example.or().andCodeTypeEqualTo(codeType); + return secDictionaryMapper.selectByExample(example); + } + @Override public SecDictionary getDictionary(String codeType, String codeValue) { List list = getDictionary().stream() diff --git a/service/src/main/java/com/hfkj/service/order/BsOrderChildService.java b/service/src/main/java/com/hfkj/service/order/BsOrderChildService.java index c075951..64eb61c 100644 --- a/service/src/main/java/com/hfkj/service/order/BsOrderChildService.java +++ b/service/src/main/java/com/hfkj/service/order/BsOrderChildService.java @@ -5,6 +5,7 @@ import com.hfkj.model.order.OrderChildModel; import com.hfkj.model.order.OrderModel; import java.util.List; +import java.util.Map; /** * @className: BsOrderChildService @@ -33,6 +34,16 @@ public interface BsOrderChildService { */ List getOrderChildListByOrderNo(String orderNo); + /** + * @MethodName getList + * @Description: 查询子订单 + * @param map + * @return: java.util.List + * @Author: Sum1Dream + * @Date: 2024/8/7 下午2:55 + */ + List getList(Map map); + /** * 获取未完成的子订单数量 * @param orderNo diff --git a/service/src/main/java/com/hfkj/service/order/OrderCreateService.java b/service/src/main/java/com/hfkj/service/order/OrderCreateService.java index b055c46..ea20595 100644 --- a/service/src/main/java/com/hfkj/service/order/OrderCreateService.java +++ b/service/src/main/java/com/hfkj/service/order/OrderCreateService.java @@ -381,7 +381,8 @@ public class OrderCreateService { // 子订单价格 BigDecimal childPrice = new BigDecimal(0); - + // 产品规格 + StringBuilder productSpecName = new StringBuilder(); // 筛选数据 for (Object orderItem : orderItems) { JSONObject orderItemObject = (JSONObject) orderItem; @@ -438,12 +439,13 @@ public class OrderCreateService { orderStarbucksService.create(bsOrderStarbucks); childPrice = childPrice.add(bsOrderStarbucks.getPrice().multiply(orderItemObject.getBigDecimal("num"))); + productSpecName.append(starbucks.getString("name")).append("*").append(orderItemObject.getInteger("num")).append("/"); } orderChild.setMerId(productConfig.getMerId()); orderChild.setProductName("星巴克"); orderChild.setProductCount(1); - orderChild.setProductSpecName("星巴克"); + orderChild.setProductSpecName(String.valueOf(productSpecName.toString())); // 星巴克创建订单 // 获取token diff --git a/service/src/main/java/com/hfkj/service/order/impl/BsOrderChildServiceImpl.java b/service/src/main/java/com/hfkj/service/order/impl/BsOrderChildServiceImpl.java index 33e1536..84ab6bd 100644 --- a/service/src/main/java/com/hfkj/service/order/impl/BsOrderChildServiceImpl.java +++ b/service/src/main/java/com/hfkj/service/order/impl/BsOrderChildServiceImpl.java @@ -14,6 +14,8 @@ import com.hfkj.service.goods.impl.BsOrderStarbucksServiceImpl; import com.hfkj.service.order.BsOrderChildService; import com.hfkj.sysenum.order.OrderChildProductTypeEnum; import com.hfkj.sysenum.order.OrderChildStatusEnum; +import org.apache.commons.collections4.MapUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -191,6 +193,47 @@ public class BsOrderChildServiceImpl implements BsOrderChildService { return orderChildModelList; } + @Override + public List getList(Map map) { + BsOrderChildExample example = new BsOrderChildExample(); + BsOrderChildExample.Criteria criteria = example.createCriteria(); + + if (MapUtils.getLong(map, "merId") != null) { + criteria.andMerIdEqualTo(MapUtils.getLong(map, "merId")); + } + + if (StringUtils.isNotBlank(MapUtils.getString(map, "orderNo"))) { + criteria.andOrderNoEqualTo(MapUtils.getString(map, "orderNo")); + } + if (StringUtils.isNotBlank(MapUtils.getString(map, "childOrderNo"))) { + criteria.andChildOrderNoEqualTo(MapUtils.getString(map, "childOrderNo")); + } + + if (StringUtils.isNotBlank(MapUtils.getString(map, "productSpecName"))) { + criteria.andProductSpecNameLike(MapUtils.getString(map, "productSpecName")); + } + if (MapUtils.getInteger(map, "productType") != null) { + criteria.andProductTypeEqualTo(MapUtils.getInteger(map, "productType")); + } + + if (StringUtils.isNotBlank(MapUtils.getString(map, "productName"))) { + criteria.andProductNameLike("%"+MapUtils.getString(map, "productName")+"%"); + } + + if (MapUtils.getLong(map, "createTimeS") != null) { + criteria.andCreateTimeGreaterThanOrEqualTo(new Date(MapUtils.getLong(map, "createTimeS"))); + } + if (MapUtils.getLong(map, "createTimeE") != null) { + criteria.andCreateTimeLessThan(new Date(MapUtils.getLong(map, "createTimeE"))); + } + if (MapUtils.getInteger(map, "status") != null) { + criteria.andStatusEqualTo(MapUtils.getInteger(map, "status")); + } + example.setOrderByClause("create_time desc"); + + return orderChildMapper.selectByExample(example); + } + @Override public long getUndoneChildOrder(String orderNo) { BsOrderChildExample example = new BsOrderChildExample(); diff --git a/service/src/main/java/com/hfkj/service/order/impl/BsOrderServiceImpl.java b/service/src/main/java/com/hfkj/service/order/impl/BsOrderServiceImpl.java index 6a260f5..3139569 100644 --- a/service/src/main/java/com/hfkj/service/order/impl/BsOrderServiceImpl.java +++ b/service/src/main/java/com/hfkj/service/order/impl/BsOrderServiceImpl.java @@ -340,9 +340,11 @@ public class BsOrderServiceImpl implements BsOrderService { deduction.setCouponDiscountPrice(discount.getPrice()); // 卡卷类型 1:满减 2:抵扣 3:折扣 if (1 == discount.getType()) { - if (discount.getCondition().compareTo(order.getProductTotalPrice()) < 0) { + + if (order.getProductTotalPrice().compareTo(discount.getCondition()) < 0) { throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未满足优惠券满减条件"); } + deduction.setCouponDiscountActualPrice(discount.getPrice()); } else if (2 == discount.getType()) { deduction.setCouponDiscountActualPrice(discount.getPrice());