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 | 133 ++++++++++++++++++++++++++++++-------------- 1 files changed, 90 insertions(+), 43 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 498dc32..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; @@ -740,8 +747,8 @@ appPlaceOrderVo.setOrderNo(orderNo); String goodsName = ""; - if (null != goods) { - goodsName = goods.getGoodsName(); + if (null != goodsNameList) { + goodsName = String.join(",", goodsNameList); } // 小程序微信下单支付 @@ -784,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("获取微信商户号失败"); } @@ -859,7 +866,7 @@ } catch (WxPayException e) { throw new ServiceException(e.getMessage()); } - }*/ + } /** @@ -1287,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; } @@ -1506,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; @@ -1617,18 +1631,18 @@ //如果是商户优惠券,验证商户一致 if (memberCoupon.getCouponFrom() == 2 && !memberCoupon.getShopId().equals(shopId)) { if(!memberCoupon.getShopId().equals(member.getRelationShopId())){ - throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + throw new ServiceException(AppErrorConstant.BLINDING_VERIFY_SHOP_ERROR); } - if(memberCoupon.getShopId().equals(shopId)){ + 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.VERIFY_SHOP_ERROR); - } - if(memberCoupon.getShopId().equals(shopId)){ + /*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); } } @@ -1711,6 +1725,7 @@ 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()); @@ -1827,6 +1842,7 @@ if (member.getBindingFlag() != 1) { AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto(); appMemberBindingDto.setBindingFlag(1); + appMemberBindingDto.setBindingType(5); appMemberBindingDto.setShopId(shop.getShopId()); appMemberBindingDto.setShopName(shop.getShopName()); appMemberBindingDto.setUserId(memberGiftRecord.getUserId()); @@ -1848,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; } @@ -1917,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); @@ -1926,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); @@ -1975,6 +1993,8 @@ ConsumerGoods consumerGoods; String consumerGoodsId; List<ConsumerGoods> consumerGoodsList = new ArrayList<>(); + //使用优惠券 + StringJoiner memberCouponSJ = new StringJoiner(","); for (AppBuyGoodsDto appBuyGoodsDto : appBuyGoodsDtoList) { goodsId = appBuyGoodsDto.getGoodsId(); memberCouponId = appBuyGoodsDto.getMemberCouponId(); @@ -2009,7 +2029,7 @@ } 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); @@ -2018,6 +2038,7 @@ goodsRealPrice = BigDecimal.ZERO; discountMoney = goodsTotalPrice.subtract(goodsRealPrice); } + memberCouponSJ.add(memberCouponId); } } goodsDeposit = goods.getSubscription(); @@ -2169,6 +2190,10 @@ this.save(order); 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) { @@ -2178,17 +2203,18 @@ 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); @@ -2207,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()); @@ -2218,6 +2246,8 @@ merOrderPageDto.setMemberUserId(null); } } + + // 获取订单列表 List<MerOrderPageVo> merOrderPageVoList = orderMapper.pageMerOrder(page, merOrderPageDto); if (merOrderPageVoList != null && !merOrderPageVoList.isEmpty()) { Long userId; @@ -2226,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 = "线下创建"; } @@ -2242,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()); @@ -2276,6 +2315,9 @@ 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); } } @@ -3225,18 +3267,18 @@ //如果是商户优惠券,验证商户一致 if (memberCoupon.getCouponFrom() == 2 && !memberCoupon.getShopId().equals(shopId)) { if(!memberCoupon.getShopId().equals(member.getRelationShopId())){ - throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + throw new ServiceException(AppErrorConstant.BLINDING_VERIFY_SHOP_ERROR); } - if(memberCoupon.getShopId().equals(shopId)){ + 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.VERIFY_SHOP_ERROR); - } - if(memberCoupon.getShopId().equals(shopId)){ + /*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); } } @@ -3392,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()); @@ -3799,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()); @@ -3975,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()); @@ -4490,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