From 2e9c442b4961dc30423e8b8fa1361c45e63ef620 Mon Sep 17 00:00:00 2001 From: jiangqs <jiangqs> Date: 星期三, 16 八月 2023 19:52:00 +0800 Subject: [PATCH] bug --- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java | 395 ++++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 270 insertions(+), 125 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 4b67f95..a94f3ca 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 @@ -41,6 +41,7 @@ import com.ruoyi.system.api.domain.poji.goods.Goods; import com.ruoyi.system.api.domain.poji.goods.GoodsFile; import com.ruoyi.system.api.domain.poji.goods.ShopGoods; +import com.ruoyi.system.api.domain.poji.member.BirthdayCard; import com.ruoyi.system.api.domain.poji.member.Member; import com.ruoyi.system.api.domain.poji.member.MemberCoupon; import com.ruoyi.system.api.domain.poji.member.MemberGiftRecord; @@ -163,7 +164,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; } } @@ -218,6 +219,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()); @@ -274,9 +276,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) { @@ -311,15 +313,19 @@ for (AppMemberCouponVo entity : appMemberCouponVoList) { if (StringUtils.isBlank(entity.getRelGoodsIds()) || entity.getRelGoodsIds().contains(sureOrderGoodsVo.getGoodsId())) { if (entity.getCouponType() == 1) { - if (entity.getMoneyThreshold().compareTo(sureOrderGoodsVo.getGoodsTotalPrice()) < 0 && entity.getDiscountMoney().compareTo(sureOrderGoodsVo.getGoodsTotalPrice()) < 0) { + if (entity.getMoneyThreshold().compareTo(sureOrderGoodsVo.getGoodsTotalPrice()) <= 0) { appGoodsMemberCouponVoList.add(entity); } + /*if (entity.getMoneyThreshold().compareTo(sureOrderGoodsVo.getGoodsTotalPrice()) < 0 && entity.getDiscountMoney().compareTo(sureOrderGoodsVo.getGoodsTotalPrice()) < 0) { + appGoodsMemberCouponVoList.add(entity); + }*/ } else if (entity.getCouponType() == 2) { appGoodsMemberCouponVoList.add(entity); } else if (entity.getCouponType() == 3) { - if (entity.getDiscountMoney().compareTo(sureOrderGoodsVo.getGoodsTotalPrice()) < 0) { + appGoodsMemberCouponVoList.add(entity); + /*if (entity.getDiscountMoney().compareTo(sureOrderGoodsVo.getGoodsTotalPrice()) < 0) { appGoodsMemberCouponVoList.add(entity); - } + }*/ } } @@ -443,6 +449,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()); @@ -615,6 +622,10 @@ goodsRealPrice = goodsTotalPrice.subtract(discountMoney); useCoupon = 1; } + if(goodsRealPrice.compareTo(BigDecimal.ZERO)<0){ + goodsRealPrice = BigDecimal.ZERO; + discountMoney = goodsTotalPrice; + } } memberCouponSJ.add(memberCouponId); } @@ -694,12 +705,14 @@ order.setDiscountMoney(couponDiscount); order.setReceivableMoney(orderPayMoney); order.setReceivableDeposit(orderPayDeposit); + order.setOfflinePayMoney(BigDecimal.ZERO); // 根据支付类型计算支付金额 if (appPlaceOrderDto.getPayType() == 1) { order.setPayMoney(orderPayMoney); order.setOnlinePayMoney(orderPayMoney); appPlaceOrderVo.setPayMoney(orderPayMoney); appPlaceOrderVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getPayMoney())); + order.setChangeReceivableMoney(orderGoodsMoney.subtract(couponDiscount)); order.setPayType(1); order.setCloseFlag(1); } else if (appPlaceOrderDto.getPayType() == 2) { @@ -707,10 +720,10 @@ order.setOnlinePayMoney(orderPayDeposit); appPlaceOrderVo.setPayMoney(orderPayDeposit); appPlaceOrderVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getPayMoney())); + order.setChangeReceivableMoney(orderGoodsMoney.subtract(couponDiscount).subtract(orderPayDeposit)); order.setPayType(2); order.setCloseFlag(0); } - order.setChangeReceivableMoney(appPlaceOrderVo.getUnpaidMoney()); order.setOrderRemark(appPlaceOrderDto.getOrderRemark()); order.setGoodsNum(goodsNum); order.setCreateTime(new Date()); @@ -1030,6 +1043,7 @@ order.setReceivableDeposit(orderPayDeposit); order.setActivityId(activityId); order.setActivityName(activityGoodsGetVo.getActivityName()); + order.setOfflinePayMoney(BigDecimal.ZERO); // 根据支付类型设置订单支付金额,在线支付金额,订单支付金额,未支付金额,关闭标志 if (appPlaceActivityDto.getPayType() == 1) { order.setPayMoney(orderPayMoney); @@ -1289,6 +1303,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) { @@ -1307,7 +1324,11 @@ merVerifyOrderVo.setOrderGoodsMoney(order.getOrderMoney()); merVerifyOrderVo.setCouponDiscount(order.getCouponMoney()); merVerifyOrderVo.setReceivableDeposit(order.getReceivableDeposit()); - merVerifyOrderVo.setReceivableMoney(order.getReceivableMoney()); + if(order.getPayType()==1){ + merVerifyOrderVo.setReceivableMoney(order.getReceivableMoney()); + }else{ + merVerifyOrderVo.setReceivableMoney(order.getOrderMoney().subtract(order.getCouponMoney()).subtract(order.getReceivableDeposit())); + } merVerifyOrderVo.setPayMoney(order.getPayMoney()); merVerifyOrderVo.setOrderRemark(order.getOrderRemark()); merVerifyOrderVo.setCreateTime(order.getCreateTime()); @@ -1325,7 +1346,7 @@ merVerifyOrderVo.setReceiveMoney(BigDecimal.ZERO); } } - merVerifyOrderVo.setUnReceiveMoney(merVerifyOrderVo.getRealReceiveMoney().subtract(order.getReceivableMoney())); + merVerifyOrderVo.setUnReceiveMoney(merVerifyOrderVo.getRealReceiveMoney().subtract(merVerifyOrderVo.getReceiveMoney())); // 根据订单用户ID获取用户信息 Member member = remoteMemberService.getMember(order.getUserId()).getData(); merVerifyOrderVo.setUserId(order.getUserId()); @@ -1451,7 +1472,11 @@ merVerifyOrderVo.setOrderGoodsMoney(order.getOrderMoney()); merVerifyOrderVo.setCouponDiscount(order.getCouponMoney()); merVerifyOrderVo.setReceivableDeposit(order.getReceivableDeposit()); - merVerifyOrderVo.setReceivableMoney(order.getReceivableMoney()); + if(order.getPayType()==1){ + merVerifyOrderVo.setReceivableMoney(order.getOrderMoney().subtract(order.getPayMoney())); + }else{ + merVerifyOrderVo.setReceivableMoney(order.getOrderMoney().subtract(order.getCouponMoney()).subtract(order.getReceivableDeposit())); + } merVerifyOrderVo.setPayMoney(order.getPayMoney()); merVerifyOrderVo.setOrderRemark(order.getOrderRemark()); merVerifyOrderVo.setAppUserOrderGoodsPageVoList(appUserOrderGoodsPageVoList); @@ -1469,7 +1494,7 @@ merVerifyOrderVo.setReceiveMoney(BigDecimal.ZERO); } } - merVerifyOrderVo.setUnReceiveMoney(merVerifyOrderVo.getRealReceiveMoney().subtract(order.getReceivableMoney())); + merVerifyOrderVo.setUnReceiveMoney(merVerifyOrderVo.getRealReceiveMoney().subtract(merVerifyOrderVo.getReceiveMoney())); Member member = remoteMemberService.getMember(order.getUserId()).getData(); merVerifyOrderVo.setUserId(order.getUserId()); merVerifyOrderVo.setUserName(member.getRealName()); @@ -1481,14 +1506,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; @@ -1582,22 +1608,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.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(memberCoupon.getShopId().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 -> { @@ -1619,7 +1664,6 @@ .collect(Collectors.toList()); // 设置merVerifyCouponVo的goodsList属性为merCouponGoodsList merVerifyCouponVo.setGoodsList(merCouponGoodsList); - MemberCoupon memberCoupon = verifyCouponGetVo.getMemberCoupon(); //生成服务 ConsumerGoods consumerGoods; String consumerGoodsId; @@ -1660,7 +1704,19 @@ consumerGoods.setSourceFrom(1); consumerGoodsList.add(consumerGoods); } + 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.setShopId(shop.getShopId()); + appMemberBindingDto.setShopName(shop.getShopName()); + appMemberBindingDto.setUserId(memberCoupon.getUserId()); + remoteMemberService.updateMemberBinding(appMemberBindingDto); + } merVerifyCouponVo.setVerifyStatus(2); return merVerifyCouponVo; } @@ -1682,10 +1738,32 @@ throw new ServiceException(AppErrorConstant.COUPON_USED); } ShopRelUserVo shopRelUserVo = remoteShopService.getShopByUserId(merVerifyPrizeDto.getUserId()).getData(); - if (!shopRelUserVo.getShopId().equals(memberGiftRecord.getShopId())) { + Long shopId = shopRelUserVo.getShopId(); + Shop shop = remoteShopService.getShop(shopId).getData(); + //平台奖品判断 + if (memberGiftRecord.getGiftFrom() == 1) { + BirthdayCard birthdayCard = remoteMemberService.getBirthdayCard().getData(); + //判断生日活动状态 + 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(),shopId.toString())){ + throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + } + }else{ + throw new ServiceException(AppErrorConstant.BIRTHDAY_CARD_ERROR); + } + } + //商户奖品判断 + if (memberGiftRecord.getGiftFrom() == 2 && !memberGiftRecord.getShopId().equals(shopId)) { throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } Member member = remoteMemberService.getMember(memberGiftRecord.getUserId()).getData(); + merVerifyAwardVo.setUserName(member.getRealName()); merVerifyAwardVo.setUserMobile(member.getMobile()); if (memberGiftRecord.getGiftFrom() == 1) { @@ -1743,15 +1821,16 @@ break; } merVerifyAwardVo.setCreateTime(memberGiftRecord.getCreateTime()); - memberGiftRecord.setVerifyStatus(2); - memberGiftRecord.setVerifyTime(new Date()); + MerVerifyPrizeFinalDto merVerifyPrizeFinalDto = new MerVerifyPrizeFinalDto(); + merVerifyPrizeFinalDto.setPrizeId(memberGiftRecord.getPrizeId()); + merVerifyPrizeFinalDto.setShopId(shop.getShopId()); + remoteMemberService.verifyPrize(merVerifyPrizeFinalDto); if (member.getBindingFlag() != 1) { AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto(); appMemberBindingDto.setBindingFlag(1); - appMemberBindingDto.setShopId(merVerifyPrizeDto.getShopId()); - Shop shop = remoteShopService.getShop(merVerifyPrizeDto.getShopId()).getData(); + appMemberBindingDto.setShopId(shop.getShopId()); appMemberBindingDto.setShopName(shop.getShopName()); - appMemberBindingDto.setUserId(merVerifyPrizeDto.getUserId()); + appMemberBindingDto.setUserId(memberGiftRecord.getUserId()); remoteMemberService.updateMemberBinding(appMemberBindingDto); } merVerifyAwardVo.setPrizeId(merVerifyPrizeDto.getPrizeId()); @@ -1770,15 +1849,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; } @@ -1794,9 +1875,9 @@ order.setOffPayTime(new Date()); order.setPayMoney(order.getPayMoney().add(merCloseOrderDto.getPayMoney())); if (order.getPayMoney().compareTo(order.getChangeReceivableMoney()) >= 0) { - order.setCloseFlag(0); - } else { order.setCloseFlag(1); + } else { + order.setCloseFlag(0); } this.saveOrUpdate(order); //创建支付记录 @@ -1893,6 +1974,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(); @@ -1927,14 +2014,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"); @@ -1946,6 +2037,7 @@ couponDiscount = couponDiscount.add(discountMoney); orderPayDeposit = orderPayDeposit.add(goodsDeposit); orderPayMoney = orderPayMoney.add(goodsRealPrice); + //创建OrderGoods orderGoods = new OrderGoods(); orderGoodsId = IdUtils.simpleUUID(); @@ -1967,7 +2059,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()); @@ -1998,16 +2146,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); @@ -2016,75 +2162,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(0); - } else { 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) { //绑定商户 @@ -2095,6 +2190,7 @@ appMemberBindingDto.setBindingFlag(1); remoteMemberService.updateMemberBinding(appMemberBindingDto); } + //更新商户统计 ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto(); shopTotalChangeDto.setShopId(order.getShopId()); shopTotalChangeDto.setOrderType(1); @@ -2108,8 +2204,8 @@ payRecord.setDelFlag(0); payRecord.setOrderId(orderId); payRecord.setPayMoney(order.getPayMoney()); - payRecord.setPayTime(order.getPayTime()); - payRecord.setPayType(2); + payRecord.setPayTime(order.getOffPayTime()); + payRecord.setPayType(merNewOrderDto.getPayType()); payRecordService.save(payRecord); } @@ -2148,7 +2244,6 @@ if (orderFrom == 1) { orderFromDesc = "商城订单"; } else if(orderFrom == 2){ - orderFromDesc = "店铺砍价活动("+merOrderPageVo.getActivityName()+")"; } else { orderFromDesc = "线下创建"; @@ -2157,8 +2252,10 @@ orderFromDesc = "商城订单"; } merOrderPageVo.setOrderFromDesc(orderFromDesc); - merOrderPageVo.setUnPaidMoney(merOrderPageVo.getPayMoney().subtract(merOrderPageVo.getReceiveMoney())); if (merOrderPageVo.getUnPaidMoney() == null) { + merOrderPageVo.setUnPaidMoney(zeroBig); + } + if(merOrderPageVo.getUnPaidMoney().compareTo(zeroBig)<0){ merOrderPageVo.setUnPaidMoney(zeroBig); } } @@ -2186,13 +2283,15 @@ * @return */ @Override - public List<MerMemberNoClearOrderVo> pageMerMemberOrder(Page page, MerMemberNoClearOrderDto merMemberNoClearOrderDto) { - List<MerMemberNoClearOrderVo> merMemberNoClearOrderVoList = orderMapper.pageMerMemberOrder(page, merMemberNoClearOrderDto.getMemberUserId()); + public List<MerMemberOrderVo> pageMerMemberOrder(Page page, MerMemberNoClearOrderDto merMemberNoClearOrderDto) { + List<MerMemberOrderVo> merMemberNoClearOrderVoList = orderMapper.pageMerMemberOrder(page, merMemberNoClearOrderDto.getMemberUserId(),merMemberNoClearOrderDto.getShopId()); if (merMemberNoClearOrderVoList != null && !merMemberNoClearOrderVoList.isEmpty()) { BigDecimal zeroBig = new BigDecimal("0.00"); - for (MerMemberNoClearOrderVo merMemberNoClearOrderVo : merMemberNoClearOrderVoList) { - merMemberNoClearOrderVo.setUnPaidMoney(merMemberNoClearOrderVo.getReceivableMoney().subtract(merMemberNoClearOrderVo.getPayMoney())); + for (MerMemberOrderVo merMemberNoClearOrderVo : merMemberNoClearOrderVoList) { if (merMemberNoClearOrderVo.getUnPaidMoney() == null) { + merMemberNoClearOrderVo.setUnPaidMoney(zeroBig); + } + if(merMemberNoClearOrderVo.getUnPaidMoney().compareTo(zeroBig)<0){ merMemberNoClearOrderVo.setUnPaidMoney(zeroBig); } } @@ -3120,6 +3219,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对象 @@ -3134,28 +3236,40 @@ } 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.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(memberCoupon.getShopId().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()); - 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 -> { 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) { @@ -3172,6 +3286,7 @@ // 设置merVerifyCouponVo的goodsList属性为merCouponGoodsList merVerifyCouponVo.setGoodsList(merCouponGoodsList); merVerifyCouponVo.setVerifyStatus(1); + merVerifyCouponVo.setMemberCouponId(memberCoupon.getId()); return merVerifyCouponVo; } @@ -3190,10 +3305,37 @@ if (memberGiftRecord == null || memberGiftRecord.getVerifyStatus() != 1) { throw new ServiceException(AppErrorConstant.COUPON_USED); } + 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&&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(),shopId.toString())){ + throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + } + }else{ + throw new ServiceException(AppErrorConstant.BIRTHDAY_CARD_ERROR); + } + } + //商户奖品判断 if (memberGiftRecord.getGiftFrom() == 2 && !memberGiftRecord.getShopId().equals(shopId)) { throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } - Member member = remoteMemberService.getMember(memberGiftRecord.getUserId()).getData(); + merVerifyAwardVo.setUserName(member.getRealName()); merVerifyAwardVo.setUserMobile(member.getMobile()); if (memberGiftRecord.getGiftFrom() == 1) { @@ -3201,8 +3343,8 @@ } else { merVerifyAwardVo.setGiftFrom("商户生日卡"); } - merVerifyAwardVo.setGiftType(memberGiftRecord.getGiftType()); + //礼物类型1优惠券2商品3现金4实物 switch (memberGiftRecord.getGiftType()) { case 1: merVerifyAwardVo.setGiftName(memberGiftRecord.getCouponName()); @@ -4364,6 +4506,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