From 42521c9b51c1bd9a40036f18fd610cd46601222d Mon Sep 17 00:00:00 2001 From: yanghui <2536613402@qq.com> Date: 星期一, 28 十一月 2022 14:45:22 +0800 Subject: [PATCH] #feat . --- springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComBatteryCommodityOrderServiceImpl.java | 190 ++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 177 insertions(+), 13 deletions(-) diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComBatteryCommodityOrderServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComBatteryCommodityOrderServiceImpl.java index 3b3c716..4c81f60 100644 --- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComBatteryCommodityOrderServiceImpl.java +++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComBatteryCommodityOrderServiceImpl.java @@ -58,22 +58,22 @@ private ComBatteryTradeOrderService tradeOrderService; @Value("${min.app.isTest}") private Boolean isTest; - @Value("${min.app.isRefundTest}") - private Boolean isRefundTest; @Value("${min.app.appid}") private String appid; @Value("${min.app.payKey}") private String payKey; @Value("${min.app.mchId}") private String mchId; - @Value("${min.app.currencyNotifyUrl}") - private String currencyNotifyUrl; +// @Value("${min.app.currencyNotifyUrl}") +// private String currencyNotifyUrl; @Resource private ComBatteryCommodityOrderCollageTeamMapper orderCollageTeamMapper; @Resource private ComBatteryCommodityOrderCollageTeamPeopleMapper orderCollageTeamPeopleMapper; @Resource private ComBatteryCommodityActivityMapper commodityActivityMapper; + @Resource + private ComBatteryCommodityOrderBargainMapper orderBargainMapper; /** * description queryByPage 分页查询 @@ -281,7 +281,7 @@ return R.fail("未查询到用户收货地址"); } //查询用户信息 - SysUser user = userMapper.selectById(createOrderDto.getUserId()); + SysUser user = userMapper.selectOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getUserId,createOrderDto.getUserId())); if (user == null) { return R.fail("未查询到用户信息"); } @@ -366,8 +366,8 @@ money = BigDecimal.valueOf(0.01); } // 调用wx支付 - result = WxPayUtils.getUnifiedorder(appid, mchId, payKey, currencyNotifyUrl + PayCpmstant.BATTERY_STORE_PAY_NOTIFY_URL - , remark, openId, orderNo, money,null); +// result = WxPayUtils.getUnifiedorder(appid, mchId, payKey, currencyNotifyUrl + PayCpmstant.BATTERY_STORE_PAY_NOTIFY_URL +// , remark, openId, orderNo, money,null); log.info("用户购买商品微信支付返回参数:" + result); return result; } @@ -380,7 +380,7 @@ @Override @Transactional(rollbackFor = Exception.class) public R syncCloseOrder() { - log.info("定时器定时关闭超过30分钟未支付订单,并返回商品库存"); + log.info("定时器定时关闭超过5分钟未支付订单,并返回商品库存"); Date nowDate = new Date(); //获取当前时间减30分钟时间 Date oldDate = DateUtils.addMinutes(nowDate, -5); @@ -399,6 +399,13 @@ commoditySpecs.setStock(commoditySpecs.getStock() + commodityOrder.getCount()); commoditySpecs.setUpdateAt(nowDate); commoditySpecsMapper.updateById(commoditySpecs); + } + if(commodityOrder.getActivityId() != null){ + ComBatteryCommodityActivity commodityActivity = commodityActivityMapper.selectById(commodityOrder.getActivityId()); + if(!commodityActivity.getType().equals(ComBatteryCommodityActivity.Type.PT)){ + commodityActivity.setCommoditySaleNum(commodityActivity.getCommoditySaleNum() - commodityOrder.getCount()); + commodityActivityMapper.updateById(commodityActivity); + } } }); return R.ok(); @@ -499,13 +506,10 @@ //用户开团,创建团队信息 orderCollageTeam = getOrderCollageTeam(commodityOrder,nowDate); orderCollageTeamMapper.insert(orderCollageTeam); + commodityOrder.setTeamId(orderCollageTeam.getId()); }else{ //用户参团,查询参加的团队信息 orderCollageTeam = orderCollageTeamMapper.selectById(commodityOrder.getTeamId()); - //判断当前拼团人员是否已足够成团 - syncAssortedDoughStatus(orderCollageTeam.getId(),nowDate); - //判断当前拼团活动是否已完成 - syncAssortedDoughActivityStatus(commodityOrder.getActivityId(),nowDate); } if(orderCollageTeam != null){ //创建用户开团人员记录 @@ -515,6 +519,12 @@ } break; case ComBatteryCommodityOrder.ActivityType.KJ: + //砍价订单成功支付处理 + commodityOrder.setBargainStatus(ComBatteryCommodityOrder.BargainStatus.KJZ); + commodityOrder.setStatus(ComBatteryCommodityOrder.Status.DKJ); + //创建用户发布待砍价记录 + ComBatteryCommodityOrderBargain orderBargain = getOrderBargain(commodityOrder,nowDate); + orderBargainMapper.insert(orderBargain); break; case ComBatteryCommodityOrder.ActivityType.MS: commodityOrder.setStatus(ComBatteryCommodityOrder.Status.DFH); @@ -532,6 +542,15 @@ commodityOrder.setUpdateAt(nowDate); commodityOrder.setPayTime(payTime); this.baseMapper.updateById(commodityOrder); + + if(commodityOrder.getTeamId() != null){ + //判断当前拼团人员是否已足够成团 + syncAssortedDoughStatus(commodityOrder.getTeamId(),nowDate); + } + if(commodityOrder.getActivityId() != null && commodityOrder.getActivityType().equals(ComBatteryCommodityOrder.ActivityType.PT)){ + //判断当前拼团活动是否已完成 + syncAssortedDoughActivityStatus(commodityOrder.getActivityId(),nowDate); + } return R.ok(); } @@ -605,7 +624,7 @@ if(commodityActivity != null){ Integer count = orderCollageTeamPeopleMapper.selectCount(new QueryWrapper<ComBatteryCommodityOrderCollageTeamPeople>() .lambda().eq(ComBatteryCommodityOrderCollageTeamPeople::getTeamId,teamId)); - if(count >= commodityActivity.getCollageNum()){ + if(count >= commodityActivity.getCollagePeopleNum()){ //拼团条件满足,将所有已拼单的用户的订单更新为待发货状态 //更新拼团团队记录 orderCollageTeam.setStatus(ComBatteryCommodityOrderCollageTeam.Status.PTCG); @@ -625,4 +644,149 @@ } } } + + /** + * 初始化砍价记录 + * @param commodityOrder 订单数据 + * @param nowDate 操作时间 + * @return 砍价记录 + */ + private ComBatteryCommodityOrderBargain getOrderBargain(ComBatteryCommodityOrder commodityOrder,Date nowDate){ + ComBatteryCommodityOrderBargain orderBargain = new ComBatteryCommodityOrderBargain(); + BeanUtils.copyProperties(commodityOrder,orderBargain); + orderBargain.setOrderId(commodityOrder.getId()); + orderBargain.setOrderNo(commodityOrder.getOrderNo()); + orderBargain.setCount(0); + orderBargain.setCreateAt(nowDate); + orderBargain.setCreateBy(commodityOrder.getUserId()); + //查询商品信息 + ComBatteryCommodity commodity = commodityMapper.selectById(commodityOrder.getCommodityId()); + if(commodity != null){ + orderBargain.setOriginalPrice(commodity.getPrice()); + orderBargain.setCurrentPrice(commodity.getPrice()); + } + //查询活动信息 + ComBatteryCommodityActivity commodityActivity = commodityActivityMapper.selectById(commodityOrder.getActivityId()); + if(commodityActivity != null){ + orderBargain.setTargetPrice(commodityActivity.getPrice()); + } + return orderBargain; + } + + /** + * 创建秒杀订单 + * @param orderDto 请求参数 + * @return 创建订单结果 + */ + @Override + public R startSeckill(StartSeckillOrderDto orderDto) { + ComBatteryCommodityActivity commodityActivity = commodityActivityMapper.selectById(orderDto.getActivityId()); + if(commodityActivity == null){ + return R.fail("未查询到秒杀活动"); + } + if(commodityActivity.getCommodityNum() <= commodityActivity.getCommoditySaleNum()){ + return R.fail("活动商品已售空"); + } + if(commodityActivity.getEndTime().getTime() - System.currentTimeMillis() <= 0 + || commodityActivity.getStatus().equals(ComBatteryCommodityActivity.Status.YJS)){ + return R.fail("该活动已结束"); + } + if(commodityActivity.getStatus().equals(ComBatteryCommodityActivity.Status.YXJ)){ + return R.fail("该活动已下架"); + } + Integer notSaleNum = commodityActivity.getCommodityNum() - commodityActivity.getCommoditySaleNum(); + if(notSaleNum <= orderDto.getCount()){ + return R.fail("活动商品库存不足"); + } + //查询商品 + ComBatteryCommodity commodity = commodityMapper.selectById(orderDto.getCommodityId()); + if(commodity == null){ + return R.fail("未查询到商品信息"); + } + //查询商品规格信息 + ComBatteryCommoditySpecs commoditySpecs = commoditySpecsMapper.selectById(commodityActivity.getSpecsId()); + if(commoditySpecs == null){ + return R.fail("未查询到商品规格信息"); + } + if(commoditySpecs.getStock() < orderDto.getCount()){ + return R.fail("该商品库存不足,无法下单"); + } + //查询用户信息 + SysUser user = userMapper.selectOne(new QueryWrapper<SysUser>().lambda().eq(SysUser::getUserId,orderDto.getUserId())); + if(user == null){ + return R.fail("未查询到用户信息"); + } + //查询用户收货地址 + ComBatteryUserAddress userAddress = userAddressMapper.selectById(orderDto.getAddressId()); + if(userAddress == null){ + return R.fail("未查询到用户收货地址"); + } + Date nowDate = new Date(); + ComBatteryCommodityOrder commodityOrder = getCreateActivityOrder(commodity,userAddress,user,commoditySpecs,orderDto,nowDate,commodityActivity); + Map<String,Object> resultMap = new HashMap<>(2); + if(this.baseMapper.insert(commodityOrder) > 0){ + //更新活动商品库存 + commodityActivity.setCommoditySaleNum(commodityActivity.getCommoditySaleNum() + orderDto.getCount()); + commodityActivityMapper.updateById(commodityActivity); + //更新商品库存 + commoditySpecs.setStock(commoditySpecs.getStock() - orderDto.getCount()); + commoditySpecsMapper.updateById(commoditySpecs); + //微信支付需要调取小程序微信支付 + String result = getWxPayResult(commodityOrder.getFinalAmount(),commodityOrder.getOpenId() + ,commodityOrder.getOrderNo(),"购买商品"); + resultMap.put("payResult",result); + resultMap.put("orderId",commodityOrder.getId()); + // 添加微信支付交易流水 + String wxTradeOrderNo = "wx" + Snowflake.getId(); + tradeOrderService.addOrderTradeRecord(user.getUserId(), user.getOpenid(), wxTradeOrderNo, ComBatteryTradeOrder.PayType.WX, + commodityOrder.getFinalAmount(), ComBatteryTradeOrder.TradeType.DDC_SHOP, commodityOrder.getId(), + commodityOrder.getOrderNo(), user.getUserId(), nowDate); + } + return R.ok(resultMap); + } + + /** + * 初始化活动订单数据 + * @param commodity 商品数据 + * @param userAddress 用户收货地址信息 + * @param user 用户数据 + * @param commoditySpecs 商品规格数据 + * @param orderDto 用户请求参数 + * @param nowDate 操作时间 + * @param commodityActivity 拼团活动数据 + * @return 初始化订单数据 + */ + public static ComBatteryCommodityOrder getCreateActivityOrder(ComBatteryCommodity commodity, ComBatteryUserAddress userAddress + , SysUser user, ComBatteryCommoditySpecs commoditySpecs, StartSeckillOrderDto orderDto, Date nowDate + ,ComBatteryCommodityActivity commodityActivity){ + ComBatteryCommodityOrder commodityOrder = new ComBatteryCommodityOrder(); + commodityOrder.setUserId(user.getUserId()); + commodityOrder.setOpenId(user.getOpenid()); + commodityOrder.setStoreId(commodity.getStoreId()); + commodityOrder.setActivityId(commodityActivity.getId()); + commodityOrder.setCommodityId(commodity.getId()); + commodityOrder.setSpecsId(commoditySpecs.getId()); + commodityOrder.setOrderNo("PT" + Snowflake.getId()); + commodityOrder.setActivityType(commodityActivity.getType()); + commodityOrder.setStatus(ComBatteryCommodityOrder.Status.DFK); + commodityOrder.setPayStatus(ComBatteryCommodityOrder.PayStatus.WZF); + commodityOrder.setIsDel(ComBatteryCommodityOrder.IsDel.NO); + commodityOrder.setPayType(ComBatteryCommodityOrder.PayType.WX); + commodityOrder.setCount(orderDto.getCount()); + commodityOrder.setPrice(commodityActivity.getPrice()); + commodityOrder.setAmount(commodityActivity.getPrice().multiply(BigDecimal.valueOf(orderDto.getCount()))); + commodityOrder.setFreight(commodity.getPostage()); + commodityOrder.setFinalAmount(commodityOrder.getAmount().add(commodityOrder.getFreight())); + commodityOrder.setCreateAt(nowDate); + commodityOrder.setCreateBy(user.getUserId()); + commodityOrder.setRemark(orderDto.getRemark()); + //收货地址 + commodityOrder.setAddressId(userAddress.getId()); + commodityOrder.setReceivingName(userAddress.getName()); + commodityOrder.setReceivingPhone(userAddress.getPhone()); + commodityOrder.setReceivingRegionCode(userAddress.getProvinceAdcode() + "-" + userAddress.getCityAdcode() + "-" + userAddress.getDistrictAdcode()); + commodityOrder.setReceivingRegion(userAddress.getProvinceName() + userAddress.getCityName() + userAddress.getDistrictName()); + commodityOrder.setReceivingAddress(userAddress.getAddress()); + return commodityOrder; + } } -- Gitblit v1.7.1