From c93e76c57a98e35abbf62d2f514d9ba51efd3243 Mon Sep 17 00:00:00 2001 From: jiangqs <jiangqs> Date: 星期一, 21 八月 2023 19:03:55 +0800 Subject: [PATCH] bug --- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java | 384 +++++++++++++++++++++++++++++++++++------------------- 1 files changed, 245 insertions(+), 139 deletions(-) diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java index 5815a6a..3c83650 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java @@ -5,9 +5,17 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.binarywang.wxpay.bean.ecommerce.PartnerTransactionsRequest; import com.github.binarywang.wxpay.bean.ecommerce.PartnerTransactionsResult; import com.github.binarywang.wxpay.bean.ecommerce.RefundNotifyResult; +import com.github.binarywang.wxpay.bean.ecommerce.TransactionsResult; +import com.github.binarywang.wxpay.bean.ecommerce.enums.TradeTypeEnum; import com.github.binarywang.wxpay.bean.profitsharingV3.ProfitSharingNotifyResult; +import com.github.binarywang.wxpay.config.WxPayConfig; +import com.github.binarywang.wxpay.exception.WxPayException; +import com.github.binarywang.wxpay.service.WxPayService; +import com.google.common.base.Joiner; +import com.google.gson.Gson; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.core.utils.StringUtils; @@ -52,7 +60,6 @@ import lombok.extern.slf4j.Slf4j; import org.redisson.api.RLock; import org.redisson.api.RedissonClient; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -119,11 +126,11 @@ @Resource private PayRecordService payRecordService; - @Autowired + @Resource private RedissonClient redissonClient; - /*@Autowired - private WxPayService wxService;*/ + @Resource + private WxPayService wxService; @Resource private PaymentMessageService paymentMessageService; @@ -164,7 +171,7 @@ .collect(Collectors.toMap(Goods::getGoodsId, Function.identity())); Boolean haveDeposit = false; for (Goods goods : goodsList) { - if (goods.getSubscription() != null && goods.getSubscription().compareTo(BigDecimal.ZERO) > 0) { + if (goods.getSubscriptionFlag()==1&&goods.getSubscription() != null && goods.getSubscription().compareTo(BigDecimal.ZERO) > 0) { haveDeposit = true; } } @@ -219,6 +226,7 @@ appSureOrderGoodsVo.setGoodsName(goods.getGoodsName()); appSureOrderGoodsVo.setGoodsIntroduction(goods.getGoodsIntroduction()); appSureOrderGoodsVo.setGoodsType(goods.getGoodsType()); + appSureOrderGoodsVo.setGoodsTag(goods.getGoodsTags()); // 获取商品图片 goodsFile = remoteGoodsService.getGoodsFile(goodsId).getData(); appSureOrderGoodsVo.setGoodsPicture(goodsFile.getFileUrl()); @@ -275,9 +283,9 @@ appSureOrderGoodsVo.setGoodsTotalPrice(goodsTotalPrice); appSureOrderGoodsVo.setCouponDiscount(discountMoney); appSureOrderGoodsVo.setGoodsRealPrice(goodsRealPrice); - // 获取商品押金 + // 获取商品订金 goodsDeposit = goods.getSubscription(); - if (goodsDeposit != null && goodsDeposit.compareTo(BigDecimal.ZERO) > 0) { + if (goods.getSubscriptionFlag()==1 && goodsDeposit != null && goodsDeposit.compareTo(BigDecimal.ZERO) > 0) { goodsDeposit = goodsDeposit.multiply(buyNumBig); } else { if (haveDeposit) { @@ -448,6 +456,7 @@ appPanicBuyVo.setGoodsName(goods.getGoodsName()); appPanicBuyVo.setGoodsIntroduction(goods.getGoodsIntroduction()); appPanicBuyVo.setGoodsType(goods.getGoodsType()); + appPanicBuyVo.setGoodsTag(goods.getGoodsTags()); //商品图片 goodsFile = remoteGoodsService.getGoodsFile(goodsId).getData(); appPanicBuyVo.setGoodsPicture(goodsFile.getFileUrl()); @@ -738,8 +747,8 @@ appPlaceOrderVo.setOrderNo(orderNo); String goodsName = ""; - if (null != goods) { - goodsName = goods.getGoodsName(); + if (null != goodsNameList) { + goodsName = String.join(",", goodsNameList); } // 小程序微信下单支付 @@ -782,14 +791,14 @@ * @param payerClientIp * @param goodsNameList */ - /*private void createWxPayInfo(AppPlaceOrderVo appPlaceOrderVo, Long userId, Long shopId, + public void createWxPayInfo(AppPlaceOrderVo appPlaceOrderVo, Long userId, Long shopId, String goodsName, String orderNo, String orderId, BigDecimal payMoney, String openid, String payerClientIp, List<String> goodsNameList){ try { // 创建支付订单 - R<String> resultMch = remoteShopService.getShopSubMchId(shopId); - String subMchId = resultMch.getData(); + //R<String> resultMch = remoteShopService.getShopSubMchId(shopId); + String subMchId = "1650744551"; if (StringUtils.isEmpty(subMchId)) { throw new ServiceException("获取微信商户号失败"); } @@ -857,7 +866,7 @@ } catch (WxPayException e) { throw new ServiceException(e.getMessage()); } - }*/ + } /** @@ -1285,9 +1294,15 @@ @Override public MerHomeShopTotalVo getMerHomeTotal(MerHomeShopTotalVo merHomeShopTotalVo) { Long shopId = merHomeShopTotalVo.getShopId(); + //获取今日到店 Integer todayShop = userServiceRecordService.countShopServicePerson(shopId); + //获取待处理订单和营业额 merHomeShopTotalVo = orderMapper.getMerHomeShopTotalVo(shopId); + //获取服务统计 + MerHomeShopTotalVo serviceTotalVo = orderMapper.getMerHomeShopServiceTotalVo(shopId); merHomeShopTotalVo.setTodayShop(todayShop); + merHomeShopTotalVo.setCycleSurp(serviceTotalVo.getCycleSurp()); + merHomeShopTotalVo.setExplorationSurp(serviceTotalVo.getExplorationSurp()); return merHomeShopTotalVo; } @@ -1301,6 +1316,9 @@ public MerVerifyOrderVo verifyOrder(String orderId, Long shopId) { // 创建返回对象 MerVerifyOrderVo merVerifyOrderVo = new MerVerifyOrderVo(); + if(orderId.contains("+")){ + orderId = orderId.substring(0, orderId.indexOf("+")); + } // 根据订单ID获取订单信息 Order order = this.getById(orderId); if (order.getOrderStatus() != 2) { @@ -1501,14 +1519,15 @@ } //创建支付记录 - PayRecord payRecord = new PayRecord(); - payRecord.setDelFlag(0); - payRecord.setOrderId(order.getOrderId()); - payRecord.setPayMoney(merVerifyOrderDto.getRelPayMoney()); - payRecord.setPayTime(new Date()); - payRecord.setPayType(merVerifyOrderDto.getPayType()); - payRecordService.save(payRecord); - + if(merVerifyOrderDto.getRelPayMoney().compareTo(BigDecimal.ZERO)>0){ + PayRecord payRecord = new PayRecord(); + payRecord.setDelFlag(0); + payRecord.setOrderId(order.getOrderId()); + payRecord.setPayMoney(merVerifyOrderDto.getRelPayMoney()); + payRecord.setPayTime(new Date()); + payRecord.setPayType(merVerifyOrderDto.getPayType()); + payRecordService.save(payRecord); + } //submitProfitSharing(orderId, order.getOrderNo(), order.getShopId(), order.getOrderMoney()); return merVerifyOrderVo; @@ -1602,22 +1621,41 @@ @Transactional public MerVerifyCouponVo sureVerifyCoupon(MerVerifyCouponDto merVerifyCouponDto) { MerVerifyCouponGetVo verifyCouponGetVo = remoteCouponService.getVerifyCoupon(merVerifyCouponDto.getMemberCouponId()).getData(); + MemberCoupon memberCoupon = verifyCouponGetVo.getMemberCoupon(); ShopRelUserVo shopRelUserVo = remoteShopService.getShopByUserId(merVerifyCouponDto.getUserId()).getData(); - if (!shopRelUserVo.getShopId().equals(verifyCouponGetVo.getMemberCoupon().getShopId())) { - throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + Long userId = verifyCouponGetVo.getUserId(); + Long shopId = shopRelUserVo.getShopId(); + Shop shop = remoteShopService.getShop(shopId).getData(); + // 调用remoteMemberService的getMember方法获取Member对象 + Member member = remoteMemberService.getMember(userId).getData(); + //如果是商户优惠券,验证商户一致 + if (memberCoupon.getCouponFrom() == 2 && !memberCoupon.getShopId().equals(shopId)) { + if(!memberCoupon.getShopId().equals(member.getRelationShopId())){ + throw new ServiceException(AppErrorConstant.BLINDING_VERIFY_SHOP_ERROR); + } + if(!memberCoupon.getShopId().equals(shopId)){ + throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + } } + //如果是平台优惠券,当用户绑定商户时验证商户一致 + if (memberCoupon.getCouponFrom() == 1 && member.getBindingFlag() == 1) { + /*if(!memberCoupon.getShopId().equals(member.getRelationShopId())){ + throw new ServiceException(AppErrorConstant.BLINDING_VERIFY_SHOP_ERROR); + }*/ + if(!member.getRelationShopId().equals(shopId)){ + throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + } + } + memberCoupon.setShopId(shopId); // 创建MerVerifyCouponVo对象 MerVerifyCouponVo merVerifyCouponVo = new MerVerifyCouponVo(); // 调用remoteCouponService的getVerifyCoupon方法获取MerVerifyCouponGetVo对象 List<Goods> goodsList = verifyCouponGetVo.getGoodsList(); - Long userId = verifyCouponGetVo.getUserId(); - // 调用remoteMemberService的getMember方法获取Member对象 - Member member = remoteMemberService.getMember(userId).getData(); merVerifyCouponVo.setUserName(member.getRealName()); merVerifyCouponVo.setUserMobile(member.getMobile()); merVerifyCouponVo.setCouponFrom(verifyCouponGetVo.getCouponFrom()); - merVerifyCouponVo.setCouponName(verifyCouponGetVo.getMemberCoupon().getCouponName()); - merVerifyCouponVo.setCreateTime(verifyCouponGetVo.getMemberCoupon().getReceiveTime()); + merVerifyCouponVo.setCouponName(memberCoupon.getCouponName()); + merVerifyCouponVo.setCreateTime(memberCoupon.getReceiveTime()); // 将goodsList转换为MerCouponGoodsListVo列表,并设置相应属性 List<MerCouponGoodsListVo> merCouponGoodsList = goodsList.stream() .map(goods -> { @@ -1639,7 +1677,6 @@ .collect(Collectors.toList()); // 设置merVerifyCouponVo的goodsList属性为merCouponGoodsList merVerifyCouponVo.setGoodsList(merCouponGoodsList); - MemberCoupon memberCoupon = verifyCouponGetVo.getMemberCoupon(); //生成服务 ConsumerGoods consumerGoods; String consumerGoodsId; @@ -1680,8 +1717,20 @@ consumerGoods.setSourceFrom(1); consumerGoodsList.add(consumerGoods); } - remoteCouponService.useMemberCoupon(memberCoupon.getId()); + MerVerifyMemberCouponDto merVerifyMemberCouponDto = new MerVerifyMemberCouponDto(); + merVerifyMemberCouponDto.setCouponId(memberCoupon.getId()); + merVerifyMemberCouponDto.setShopId(shopId); + remoteCouponService.sureMemberCoupon(merVerifyMemberCouponDto); consumerGoodsService.saveBatchConsumerGoods(consumerGoodsList); + if (member.getBindingFlag() != 1) { + AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto(); + appMemberBindingDto.setBindingFlag(1); + appMemberBindingDto.setBindingType(4); + appMemberBindingDto.setShopId(shop.getShopId()); + appMemberBindingDto.setShopName(shop.getShopName()); + appMemberBindingDto.setUserId(memberCoupon.getUserId()); + remoteMemberService.updateMemberBinding(appMemberBindingDto); + } merVerifyCouponVo.setVerifyStatus(2); return merVerifyCouponVo; } @@ -1703,38 +1752,32 @@ throw new ServiceException(AppErrorConstant.COUPON_USED); } ShopRelUserVo shopRelUserVo = remoteShopService.getShopByUserId(merVerifyPrizeDto.getUserId()).getData(); - Shop shop = remoteShopService.getShop(shopRelUserVo.getShopId()).getData(); + Long shopId = shopRelUserVo.getShopId(); + Shop shop = remoteShopService.getShop(shopId).getData(); + //平台奖品判断 if (memberGiftRecord.getGiftFrom() == 1) { BirthdayCard birthdayCard = remoteMemberService.getBirthdayCard().getData(); - if(birthdayCard!=null){ + //判断生日活动状态 + if(birthdayCard!=null&&birthdayCard.getCardStatus()==1){ + shop = remoteShopService.getShop(shopId).getData(); //判断指定区域全部店铺 if(birthdayCard.getAreaFlag()==2&&birthdayCard.getShopFlag()==1&&!StringUtils.checkString(birthdayCard.getDesignatedArea(),shop.getShopCityCode())){ throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } //判断指定店铺 - if(birthdayCard.getShopFlag()==2&&!StringUtils.checkString(birthdayCard.getApplicableShop(),shop.getShopId().toString())){ + if(birthdayCard.getShopFlag()==2&&!StringUtils.checkString(birthdayCard.getApplicableShop(),shopId.toString())){ throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } }else{ - throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + throw new ServiceException(AppErrorConstant.BIRTHDAY_CARD_ERROR); } } - if (memberGiftRecord.getGiftFrom() == 2 && !memberGiftRecord.getShopId().equals(shop.getShopId())) { + //商户奖品判断 + if (memberGiftRecord.getGiftFrom() == 2 && !memberGiftRecord.getShopId().equals(shopId)) { throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } Member member = remoteMemberService.getMember(memberGiftRecord.getUserId()).getData(); - if(member.getBindingFlag()==0){ - //绑定用户 - if(shop==null){ - shop = remoteShopService.getShop(shop.getShopId()).getData(); - } - AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto(); - appMemberBindingDto.setBindingFlag(1); - appMemberBindingDto.setShopId(shop.getShopId()); - appMemberBindingDto.setShopName(shop.getShopName()); - appMemberBindingDto.setUserId(memberGiftRecord.getUserId()); - remoteMemberService.updateMemberBinding(appMemberBindingDto); - } + merVerifyAwardVo.setUserName(member.getRealName()); merVerifyAwardVo.setUserMobile(member.getMobile()); if (memberGiftRecord.getGiftFrom() == 1) { @@ -1799,9 +1842,10 @@ if (member.getBindingFlag() != 1) { AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto(); appMemberBindingDto.setBindingFlag(1); - appMemberBindingDto.setShopId(merVerifyPrizeDto.getShopId()); + appMemberBindingDto.setBindingType(5); + appMemberBindingDto.setShopId(shop.getShopId()); appMemberBindingDto.setShopName(shop.getShopName()); - appMemberBindingDto.setUserId(merVerifyPrizeDto.getUserId()); + appMemberBindingDto.setUserId(memberGiftRecord.getUserId()); remoteMemberService.updateMemberBinding(appMemberBindingDto); } merVerifyAwardVo.setPrizeId(merVerifyPrizeDto.getPrizeId()); @@ -1820,15 +1864,17 @@ @Override public List<MerMemberNoClearOrderVo> pageMerMemberNoClearOrder(Page page, MerMemberNoClearOrderDto merMemberNoClearOrderDto) { List<MerMemberNoClearOrderVo> merMemberNoClearOrderVoList = orderMapper.pageMerMemberNoClearOrder(page, merMemberNoClearOrderDto.getMemberUserId()); - /*if (merMemberNoClearOrderVoList != null && !merMemberNoClearOrderVoList.isEmpty()) { + if (merMemberNoClearOrderVoList != null && !merMemberNoClearOrderVoList.isEmpty()) { BigDecimal zeroBig = new BigDecimal("0.00"); for (MerMemberNoClearOrderVo merMemberNoClearOrderVo : merMemberNoClearOrderVoList) { - merMemberNoClearOrderVo.setUnPaidMoney(merMemberNoClearOrderVo.getReceivableMoney().subtract(merMemberNoClearOrderVo.getPayMoney())); if (merMemberNoClearOrderVo.getUnPaidMoney() == null) { merMemberNoClearOrderVo.setUnPaidMoney(zeroBig); } + if(merMemberNoClearOrderVo.getUnPaidMoney().compareTo(zeroBig)<0){ + merMemberNoClearOrderVo.setUnPaidMoney(zeroBig); + } } - }*/ + } return merMemberNoClearOrderVoList; } @@ -1889,7 +1935,6 @@ sysUser.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png"); String password = "hongruitang"; sysUser.setPassword(SecurityUtils.encryptPassword(password)); - log.debug("sysUser" + sysUser.toString()); sysUser = remoteUserService.registerUser(sysUser).getData(); member = new Member(); member.setMemberId(memberId); @@ -1898,6 +1943,7 @@ member.setRealName(name); member.setNickName(name); member.setBindingFlag(1); + member.setBindingType(3); member.setRelationShopId(shopId); member.setRelationShopName(shop.getShopName()); remoteMemberService.createNewMember(member); @@ -1943,6 +1989,12 @@ BigDecimal experienceMoney = new BigDecimal("0.00"); BigDecimal serviceMoney = new BigDecimal("0.00"); BigDecimal goodsMoney = new BigDecimal("0.00"); + List<OrderGoods> orderGoodsList = new ArrayList<>(); + ConsumerGoods consumerGoods; + String consumerGoodsId; + List<ConsumerGoods> consumerGoodsList = new ArrayList<>(); + //使用优惠券 + StringJoiner memberCouponSJ = new StringJoiner(","); for (AppBuyGoodsDto appBuyGoodsDto : appBuyGoodsDtoList) { goodsId = appBuyGoodsDto.getGoodsId(); memberCouponId = appBuyGoodsDto.getMemberCouponId(); @@ -1977,14 +2029,18 @@ } else if (couponType == 2 && appMemberCouponVo.getDiscountPercent() != null) { discountPercent = appMemberCouponVo.getDiscountPercent(); goodsRealPrice = goodsTotalPrice.multiply(discountPercent).divide(BigDecimal.TEN, 2, BigDecimal.ROUND_HALF_UP); - discountMoney = goodsRealPrice.subtract(goodsTotalPrice); + discountMoney = goodsTotalPrice.subtract(goodsRealPrice); } else if (couponType == 3 && appMemberCouponVo.getDiscountMoney() != null) { discountMoney = appMemberCouponVo.getDiscountMoney(); goodsRealPrice = goodsTotalPrice.subtract(discountMoney); } + if(goodsRealPrice.compareTo(BigDecimal.ZERO)<0){ + goodsRealPrice = BigDecimal.ZERO; + discountMoney = goodsTotalPrice.subtract(goodsRealPrice); + } + memberCouponSJ.add(memberCouponId); } } - goodsDeposit = goods.getSubscription(); if (goodsDeposit == null || goodsDeposit.compareTo(BigDecimal.ZERO) == 0) { goodsDeposit = new BigDecimal("0.00"); @@ -1996,6 +2052,7 @@ couponDiscount = couponDiscount.add(discountMoney); orderPayDeposit = orderPayDeposit.add(goodsDeposit); orderPayMoney = orderPayMoney.add(goodsRealPrice); + //创建OrderGoods orderGoods = new OrderGoods(); orderGoodsId = IdUtils.simpleUUID(); @@ -2017,7 +2074,63 @@ orderGoods.setGoodsName(goods.getGoodsName()); orderGoods.setGoodsIntroduction(goods.getGoodsIntroduction()); orderGoods.setGoodsPicture(goodsFile.getFileUrl()); - orderGoodsService.save(orderGoods); + orderGoodsList.add(orderGoods); + + //创建服务 + Integer buyGoodsNum = orderGoods.getBuyNum(); + //判断是否确认次数 + if (orderGoods.getCycleNumFlag() == 0) { + consumerGoods = new ConsumerGoods(); + consumerGoodsId = IdUtils.simpleUUID(); + consumerGoods.setConsumerGoodsId(consumerGoodsId); + consumerGoods.setDelFlag(0); + consumerGoods.setServiceStatus(1); + consumerGoods.setShopId(shopId); + consumerGoods.setUserId(userId); + consumerGoods.setOrderId(orderId); + consumerGoods.setOrderGoodsId(orderGoodsId); + consumerGoods.setGoodsId(orderGoods.getGoodsId()); + consumerGoods.setGoodsName(orderGoods.getGoodsName()); + consumerGoods.setCycleNumFlag(orderGoods.getCycleNumFlag()); + consumerGoods.setServiceNum(orderGoods.getServiceNum()); + consumerGoods.setUsedNum(0); + consumerGoods.setGoodsType(orderGoods.getGoodsType()); + consumerGoods.setGoodsTag(orderGoods.getGoodsTag()); + consumerGoods.setCreateTime(nowTime); + consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction()); + consumerGoods.setGoodsPicture(orderGoods.getGoodsPicture()); + consumerGoods.setGoodsNurses(goods.getGoodsNurses()); + consumerGoods.setSourceFrom(1); + consumerGoods.setSureNum(buyGoodsNum); + consumerGoodsList.add(consumerGoods); + } else { + for (int i = 0; i < buyGoodsNum; i++) { + consumerGoods = new ConsumerGoods(); + consumerGoodsId = IdUtils.simpleUUID(); + consumerGoods.setConsumerGoodsId(consumerGoodsId); + consumerGoods.setDelFlag(0); + consumerGoods.setServiceStatus(1); + consumerGoods.setShopId(shopId); + consumerGoods.setUserId(userId); + consumerGoods.setOrderId(orderId); + consumerGoods.setOrderGoodsId(orderGoodsId); + consumerGoods.setGoodsId(orderGoods.getGoodsId()); + consumerGoods.setGoodsName(orderGoods.getGoodsName()); + consumerGoods.setCycleNumFlag(orderGoods.getCycleNumFlag()); + consumerGoods.setServiceNum(orderGoods.getServiceNum()); + consumerGoods.setUsedNum(0); + consumerGoods.setGoodsType(orderGoods.getGoodsType()); + consumerGoods.setGoodsTag(orderGoods.getGoodsTag()); + consumerGoods.setCreateTime(nowTime); + consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction()); + consumerGoods.setGoodsPicture(orderGoods.getGoodsPicture()); + consumerGoods.setGoodsNurses(goods.getGoodsNurses()); + consumerGoods.setSourceFrom(1); + consumerGoodsList.add(consumerGoods); + } + } + + //商户变更计算 switch (orderGoods.getGoodsType()) { case 1: cycleMoney = cycleMoney.add(orderGoods.getGoodsReceivableMoney()); @@ -2048,16 +2161,14 @@ order.setCouponMoney(couponDiscount); order.setDiscountMoney(couponDiscount); order.setReceivableMoney(orderPayMoney); - order.setReceivableDeposit(new BigDecimal("0.00")); + order.setReceivableDeposit(orderPayDeposit); order.setPayType(1); + //判断实收金额 if (merNewOrderDto.getChangeMoney() != null) { order.setChangeReceivableMoney(merNewOrderDto.getChangeMoney()); } else { order.setChangeReceivableMoney(orderPayMoney); } - order.setPayMoney(orderPayMoney); - order.setOnlinePayMoney(new BigDecimal("0.00")); - order.setOfflinePayMoney(orderPayMoney); order.setOrderRemark(merNewOrderDto.getOrderRemark()); order.setGoodsNum(goodsNum); order.setCreateTime(nowTime); @@ -2066,75 +2177,24 @@ order.setPayMoney(merNewOrderDto.getPayMoney()); order.setOnlinePayMoney(new BigDecimal("0.00")); order.setOfflinePayMoney(merNewOrderDto.getPayMoney()); + order.setPayMoney(merNewOrderDto.getPayMoney()); order.setOffPayTime(nowTime); order.setPayType(1); + //判断结清 if (order.getPayMoney().compareTo(order.getChangeReceivableMoney()) >= 0) { order.setCloseFlag(1); } else { order.setCloseFlag(0); } + //保存订单和服务 this.save(order); - //创建服务 - List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listAppVoByOrderId(orderId); - ConsumerGoods consumerGoods; - String consumerGoodsId; - List<ConsumerGoods> consumerGoodsList = new ArrayList<>(); - for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) { - Integer buyGoodsNum = appUserOrderGoodsPageVo.getBuyNum(); - if (appUserOrderGoodsPageVo.getCycleNumFlag() == 0) { - consumerGoods = new ConsumerGoods(); - goods = remoteGoodsService.getGoods(appUserOrderGoodsPageVo.getGoodsId()).getData(); - consumerGoodsId = IdUtils.simpleUUID(); - consumerGoods.setConsumerGoodsId(consumerGoodsId); - consumerGoods.setDelFlag(0); - consumerGoods.setServiceStatus(1); - consumerGoods.setShopId(order.getShopId()); - consumerGoods.setUserId(order.getUserId()); - consumerGoods.setOrderId(orderId); - consumerGoods.setOrderGoodsId(appUserOrderGoodsPageVo.getOrderGoodsId()); - consumerGoods.setGoodsId(appUserOrderGoodsPageVo.getGoodsId()); - consumerGoods.setGoodsName(appUserOrderGoodsPageVo.getGoodsName()); - consumerGoods.setCycleNumFlag(appUserOrderGoodsPageVo.getCycleNumFlag()); - consumerGoods.setServiceNum(appUserOrderGoodsPageVo.getServiceNum()); - consumerGoods.setUsedNum(0); - consumerGoods.setGoodsType(appUserOrderGoodsPageVo.getGoodsType()); - consumerGoods.setGoodsTag(appUserOrderGoodsPageVo.getGoodsTag()); - consumerGoods.setCreateTime(nowTime); - consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction()); - consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture()); - consumerGoods.setGoodsNurses(goods.getGoodsNurses()); - consumerGoods.setSourceFrom(1); - consumerGoods.setSureNum(buyGoodsNum); - consumerGoodsList.add(consumerGoods); - } else { - for (int i = 0; i < buyGoodsNum; i++) { - consumerGoods = new ConsumerGoods(); - goods = remoteGoodsService.getGoods(appUserOrderGoodsPageVo.getGoodsId()).getData(); - consumerGoodsId = IdUtils.simpleUUID(); - consumerGoods.setConsumerGoodsId(consumerGoodsId); - consumerGoods.setDelFlag(0); - consumerGoods.setServiceStatus(1); - consumerGoods.setShopId(order.getShopId()); - consumerGoods.setUserId(order.getUserId()); - consumerGoods.setOrderId(orderId); - consumerGoods.setOrderGoodsId(appUserOrderGoodsPageVo.getOrderGoodsId()); - consumerGoods.setGoodsId(appUserOrderGoodsPageVo.getGoodsId()); - consumerGoods.setGoodsName(appUserOrderGoodsPageVo.getGoodsName()); - consumerGoods.setCycleNumFlag(appUserOrderGoodsPageVo.getCycleNumFlag()); - consumerGoods.setServiceNum(appUserOrderGoodsPageVo.getServiceNum()); - consumerGoods.setUsedNum(0); - consumerGoods.setGoodsType(appUserOrderGoodsPageVo.getGoodsType()); - consumerGoods.setGoodsTag(appUserOrderGoodsPageVo.getGoodsTag()); - consumerGoods.setCreateTime(nowTime); - consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction()); - consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture()); - consumerGoods.setGoodsNurses(goods.getGoodsNurses()); - consumerGoods.setSourceFrom(1); - consumerGoodsList.add(consumerGoods); - } - } - } + orderGoodsService.saveBatch(orderGoodsList); consumerGoodsService.saveBatchConsumerGoods(consumerGoodsList); + //减去优惠券 + if (StringUtils.isNotBlank(memberCouponSJ.toString())) { + remoteCouponService.useMemberCoupon(memberCouponSJ.toString()); + } + //用户未绑定则绑定商户 Member member = remoteMemberService.getMember(userId).getData(); if (member != null && member.getBindingFlag() != 1) { //绑定商户 @@ -2143,23 +2203,25 @@ appMemberBindingDto.setShopName(shop.getShopName()); appMemberBindingDto.setUserId(userId); appMemberBindingDto.setBindingFlag(1); + appMemberBindingDto.setBindingType(3); remoteMemberService.updateMemberBinding(appMemberBindingDto); } - ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto(); + //更新商户统计 + /*ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto(); shopTotalChangeDto.setShopId(order.getShopId()); shopTotalChangeDto.setOrderType(1); shopTotalChangeDto.setCycleMoney(cycleMoney); shopTotalChangeDto.setServiceMoney(serviceMoney); shopTotalChangeDto.setExperienceMoney(experienceMoney); shopTotalChangeDto.setGoodsMoney(goodsMoney); - remoteShopService.changeShopTotal(shopTotalChangeDto); + remoteShopService.changeShopTotal(shopTotalChangeDto);*/ //创建支付记录 PayRecord payRecord = new PayRecord(); payRecord.setDelFlag(0); payRecord.setOrderId(orderId); payRecord.setPayMoney(order.getPayMoney()); payRecord.setPayTime(order.getOffPayTime()); - payRecord.setPayType(2); + payRecord.setPayType(merNewOrderDto.getPayType()); payRecordService.save(payRecord); } @@ -2171,10 +2233,12 @@ @Override public List<MerOrderPageVo> pageMerOrder(Page page, MerOrderPageDto merOrderPageDto) { if (StringUtils.isNotBlank(merOrderPageDto.getKeyword())) { + // 获取关键字对应的用户ID MgtUserIdByKeywordDto userIdByKeywordDto = new MgtUserIdByKeywordDto(); userIdByKeywordDto.setKeyword(merOrderPageDto.getKeyword()); MgtUserIdByKeywordVo userIdByKeywordVo = remoteMemberService.getUserIdByKeyword(userIdByKeywordDto).getData(); if (StringUtils.isNotBlank(userIdByKeywordVo.getUserIds())) { + // 将用户ID转换成List<Long>类型 List<Long> userIdList = Arrays.stream(userIdByKeywordVo.getUserIds().split(",")) .map(Long::parseLong) .collect(Collectors.toList()); @@ -2182,6 +2246,8 @@ merOrderPageDto.setMemberUserId(null); } } + + // 获取订单列表 List<MerOrderPageVo> merOrderPageVoList = orderMapper.pageMerOrder(page, merOrderPageDto); if (merOrderPageVoList != null && !merOrderPageVoList.isEmpty()) { Long userId; @@ -2190,15 +2256,17 @@ String orderFromDesc; BigDecimal zeroBig = new BigDecimal("0.00"); StringJoiner userIdSj = new StringJoiner(","); + // 遍历订单列表 for (MerOrderPageVo merOrderPageVo : merOrderPageVoList) { userId = merOrderPageVo.getUserId(); userIdSj.add(userId.toString()); orderFrom = merOrderPageVo.getOrderFrom(); + // 根据订单来源设置订单来源描述 if (orderFrom != null) { if (orderFrom == 1) { orderFromDesc = "商城订单"; - } else if(orderFrom == 2){ - orderFromDesc = "店铺砍价活动("+merOrderPageVo.getActivityName()+")"; + } else if (orderFrom == 2) { + orderFromDesc = "店铺砍价活动(" + merOrderPageVo.getActivityName() + ")"; } else { orderFromDesc = "线下创建"; } @@ -2206,15 +2274,22 @@ orderFromDesc = "商城订单"; } merOrderPageVo.setOrderFromDesc(orderFromDesc); + // 设置未支付金额为0.00,如果未支付金额小于0,则设置为0.00 if (merOrderPageVo.getUnPaidMoney() == null) { merOrderPageVo.setUnPaidMoney(zeroBig); } + if (merOrderPageVo.getUnPaidMoney().compareTo(zeroBig) < 0) { + merOrderPageVo.setUnPaidMoney(zeroBig); + } } + + // 根据用户ID列表获取用户信息 MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto(); mgtBaseBathDto.setIds(userIdSj.toString()); List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(mgtBaseBathDto).getData(); Map<Long, MgtSimpleMemberVo> userMap = simpleMemberVoList.stream() .collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity())); + // 遍历订单列表,设置用户信息 for (MerOrderPageVo merOrderPageVo : merOrderPageVoList) { if (merOrderPageVo.getUserId() != null && userMap.get(merOrderPageVo.getUserId()) != null) { merOrderPageVo.setUserName(userMap.get(merOrderPageVo.getUserId()).getRealName()); @@ -2235,11 +2310,14 @@ */ @Override public List<MerMemberOrderVo> pageMerMemberOrder(Page page, MerMemberNoClearOrderDto merMemberNoClearOrderDto) { - List<MerMemberOrderVo> merMemberNoClearOrderVoList = orderMapper.pageMerMemberOrder(page, merMemberNoClearOrderDto.getMemberUserId()); + List<MerMemberOrderVo> merMemberNoClearOrderVoList = orderMapper.pageMerMemberOrder(page, merMemberNoClearOrderDto.getMemberUserId(),merMemberNoClearOrderDto.getShopId()); if (merMemberNoClearOrderVoList != null && !merMemberNoClearOrderVoList.isEmpty()) { BigDecimal zeroBig = new BigDecimal("0.00"); for (MerMemberOrderVo merMemberNoClearOrderVo : merMemberNoClearOrderVoList) { if (merMemberNoClearOrderVo.getUnPaidMoney() == null) { + merMemberNoClearOrderVo.setUnPaidMoney(zeroBig); + } + if(merMemberNoClearOrderVo.getUnPaidMoney().compareTo(zeroBig)<0){ merMemberNoClearOrderVo.setUnPaidMoney(zeroBig); } } @@ -3167,6 +3245,9 @@ */ @Override public MerVerifyCouponVo verifyCoupon(String verifyCode, Long shopId) { + if(verifyCode.contains("+")){ + verifyCode = verifyCode.substring(0, verifyCode.indexOf("+")); + } // 创建MerVerifyCouponVo对象 MerVerifyCouponVo merVerifyCouponVo = new MerVerifyCouponVo(); // 调用remoteCouponService的getVerifyCoupon方法获取MerVerifyCouponGetVo对象 @@ -3181,17 +3262,28 @@ } else if (couponStatus != 1) { throw new ServiceException(AppErrorConstant.COUPON_NO_FIND); } + Long userId = verifyCouponGetVo.getUserId(); + Member member = remoteMemberService.getMember(userId).getData(); + //如果是商户优惠券,验证商户一致 if (memberCoupon.getCouponFrom() == 2 && !memberCoupon.getShopId().equals(shopId)) { - throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + if(!memberCoupon.getShopId().equals(member.getRelationShopId())){ + throw new ServiceException(AppErrorConstant.BLINDING_VERIFY_SHOP_ERROR); + } + if(!memberCoupon.getShopId().equals(shopId)){ + throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + } } - //如果是平台优惠券 - if (memberCoupon.getCouponFrom() == 1 && memberCoupon.getShopId() == null) { - memberCoupon.setShopId(shopId); + //如果是平台优惠券,当用户绑定商户时验证商户一致 + if (memberCoupon.getCouponFrom() == 1 && member.getBindingFlag() == 1) { + /*if(!memberCoupon.getShopId().equals(member.getRelationShopId())){ + throw new ServiceException(AppErrorConstant.BLINDING_VERIFY_SHOP_ERROR); + }*/ + if(!member.getRelationShopId().equals(shopId)){ + throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + } } List<Goods> goodsList = verifyCouponGetVo.getGoodsList(); - Long userId = verifyCouponGetVo.getUserId(); // 调用remoteMemberService的getMember方法获取Member对象 - Member member = remoteMemberService.getMember(userId).getData(); merVerifyCouponVo.setUserName(member.getRealName()); merVerifyCouponVo.setUserMobile(member.getMobile()); merVerifyCouponVo.setCouponFrom(verifyCouponGetVo.getCouponFrom()); @@ -3203,6 +3295,7 @@ MerCouponGoodsListVo merCouponGoods = new MerCouponGoodsListVo(); merCouponGoods.setGoodsId(goods.getGoodsId()); merCouponGoods.setGoodsName(goods.getGoodsName()); + merCouponGoods.setGoodsNum(1); if (goods.getGoodsType() == 1) { merCouponGoods.setGoodsType("周期"); } else if (goods.getGoodsType() == 2) { @@ -3240,9 +3333,17 @@ } Shop shop = null; Member member = remoteMemberService.getMember(memberGiftRecord.getUserId()).getData(); + //判断是否在绑定店铺核销 + if(member.getBindingFlag()==1){ + if(!member.getRelationShopId().equals(shopId)){ + throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + } + } + //平台奖品判断 if (memberGiftRecord.getGiftFrom() == 1) { BirthdayCard birthdayCard = remoteMemberService.getBirthdayCard().getData(); - if(birthdayCard!=null){ + //判断生日活动状态 + if(birthdayCard!=null&&birthdayCard.getCardStatus()==1){ shop = remoteShopService.getShop(shopId).getData(); //判断指定区域全部店铺 if(birthdayCard.getAreaFlag()==2&&birthdayCard.getShopFlag()==1&&!StringUtils.checkString(birthdayCard.getDesignatedArea(),shop.getShopCityCode())){ @@ -3253,13 +3354,13 @@ throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } }else{ - throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + throw new ServiceException(AppErrorConstant.BIRTHDAY_CARD_ERROR); } } + //商户奖品判断 if (memberGiftRecord.getGiftFrom() == 2 && !memberGiftRecord.getShopId().equals(shopId)) { throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } - merVerifyAwardVo.setUserName(member.getRealName()); merVerifyAwardVo.setUserMobile(member.getMobile()); @@ -3333,7 +3434,9 @@ merTotalDto.setShopIdList(shopIdList); merTotalDto.setShopId(null); } + //线上线下活动订单 MerOrderTotalVo orderTotalVo = orderMapper.getMerOrderTotalOrderFrom(merTotalDto); + //分类型订单 MerOrderTotalVo goodsTypeVo = orderMapper.getMerTotalOrderTotalGoodsType(merTotalDto); orderTotalVo.setCycleTotal(goodsTypeVo.getCycleTotal()); orderTotalVo.setCycleMoney(goodsTypeVo.getCycleMoney()); @@ -3740,14 +3843,14 @@ //更新商品统计 remoteGoodsService.changeGoodsTotal(goodsTotalChangeDtoList); // 更新商户统计信息 - ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto(); + /*ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto(); shopTotalChangeDto.setShopId(order.getShopId()); shopTotalChangeDto.setOrderType(1); shopTotalChangeDto.setCycleMoney(cycleMoney); shopTotalChangeDto.setServiceMoney(serviceMoney); shopTotalChangeDto.setExperienceMoney(experienceMoney); shopTotalChangeDto.setGoodsMoney(goodsMoney); - remoteShopService.changeShopTotal(shopTotalChangeDto); + remoteShopService.changeShopTotal(shopTotalChangeDto);*/ // 初始化会员统计信息 MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto(); memberTotalChangeDto.setUserId(order.getUserId()); @@ -3916,14 +4019,14 @@ } } // 更新商户统计信息 - ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto(); + /*ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto(); shopTotalChangeDto.setOrderType(2); shopTotalChangeDto.setShopId(order.getShopId()); shopTotalChangeDto.setCycleMoney(cycleMoney); shopTotalChangeDto.setServiceMoney(serviceMoney); shopTotalChangeDto.setExperienceMoney(experienceMoney); shopTotalChangeDto.setGoodsMoney(goodsMoney); - remoteShopService.changeShopTotal(shopTotalChangeDto); + remoteShopService.changeShopTotal(shopTotalChangeDto);*/ // 初始化会员统计信息 MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto(); memberTotalChangeDto.setUserId(order.getUserId()); @@ -4431,6 +4534,9 @@ if (merOrderPageVo.getUnPaidMoney() == null) { merOrderPageVo.setUnPaidMoney(zeroBig); } + if(merOrderPageVo.getUnPaidMoney().compareTo(zeroBig)<0){ + merOrderPageVo.setUnPaidMoney(zeroBig); + } } MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto(); mgtBaseBathDto.setIds(userIdSj.toString()); -- Gitblit v1.7.1