From 687dbd8e6ababc010a3da5503b95cd62cecf9f02 Mon Sep 17 00:00:00 2001 From: jiangqs <jiangqs> Date: 星期二, 23 五月 2023 18:06:45 +0800 Subject: [PATCH] 拆分订单和商品服务 --- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java | 171 ++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 134 insertions(+), 37 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 567cf17..3005650 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 @@ -8,32 +8,27 @@ import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.uuid.IdUtils; +import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.order.domain.dto.*; -import com.ruoyi.order.domain.pojo.goods.Goods; -import com.ruoyi.order.domain.pojo.goods.GoodsFile; -import com.ruoyi.order.domain.pojo.goods.ShopGoods; import com.ruoyi.order.domain.pojo.order.ConsumerGoods; import com.ruoyi.order.domain.pojo.order.Order; import com.ruoyi.order.domain.pojo.order.OrderGoods; import com.ruoyi.order.domain.vo.*; -import com.ruoyi.order.service.goods.GoodsFileService; -import com.ruoyi.order.service.goods.ShopGoodsService; import com.ruoyi.order.service.order.ConsumerGoodsService; import com.ruoyi.order.service.order.OrderGoodsService; import com.ruoyi.order.util.CodeFactoryUtil; -import com.ruoyi.system.api.RemoteMemberService; -import com.ruoyi.system.api.RemoteShopService; -import com.ruoyi.system.api.RemoteUserService; +import com.ruoyi.system.api.domain.dto.*; +import com.ruoyi.system.api.service.*; import com.ruoyi.system.api.constant.AppErrorConstant; -import com.ruoyi.system.api.domain.dto.AppBaseGetDto; -import com.ruoyi.system.api.domain.dto.AppMemberBindingDto; +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.Member; import com.ruoyi.system.api.domain.poji.shop.Shop; import com.ruoyi.system.api.domain.poji.sys.SysUser; import com.ruoyi.system.api.domain.vo.AppOrderTotalVo; import com.ruoyi.system.api.domain.vo.AppUserCouponVo; import com.ruoyi.order.mapper.order.OrderMapper; -import com.ruoyi.order.service.goods.GoodsService; import com.ruoyi.order.service.order.OrderService; import com.ruoyi.system.api.domain.vo.MerHomeShopTotalVo; import org.springframework.stereotype.Service; @@ -59,16 +54,7 @@ private OrderMapper orderMapper; @Resource - private GoodsService goodsService; - - @Resource - private ShopGoodsService shopGoodsService; - - @Resource private RemoteMemberService remoteMemberService; - - @Resource - private GoodsFileService goodsFileService; @Resource private OrderGoodsService orderGoodsService; @@ -81,6 +67,13 @@ @Resource private ConsumerGoodsService consumerGoodsService; + + @Resource + private RemoteGoodsService remoteGoodsService; + + @Resource + private RemoteShoppingCartService remoteShoppingCartService; + /** * @description: buyGoods @@ -125,19 +118,22 @@ goodsId = appBuyGoodsDto.getGoodsId(); buyNum = appBuyGoodsDto.getBuyNum(); userCouponId = appBuyGoodsDto.getUserCouponId(); - goods = goodsService.getById(goodsId); + goods = remoteGoodsService.getGoods(goodsId).getData(); appSureOrderGoodsVo.setGoodsId(goodsId); appSureOrderGoodsVo.setGoodsName(goods.getGoodsName()); appSureOrderGoodsVo.setGoodsIntroduction(goods.getGoodsIntroduction()); appSureOrderGoodsVo.setGoodsType(goods.getGoodsType()); //商品图片 - goodsFile = goodsFileService.getGoodsPicture(goodsId); + goodsFile = remoteGoodsService.getGoodsFile(goodsId).getData(); appSureOrderGoodsVo.setGoodsPicture(goodsFile.getFileUrl()); buyNum = appBuyGoodsDto.getBuyNum(); appSureOrderGoodsVo.setBuyNum(buyNum); goodsPrice = goods.getSalesPrice(); //商户定制价格 - ShopGoods shopGoods = shopGoodsService.getByShopIdAndGoodsId(appSureOrderDto.getShopId(),goods.getGoodsId()); + AppShopGoodsGetDto appShopGoodsGetDto = new AppShopGoodsGetDto(); + appShopGoodsGetDto.setGoodsId(goods.getGoodsId()); + appShopGoodsGetDto.setShopId(appSureOrderDto.getShopId()); + ShopGoods shopGoods = remoteGoodsService.getShopGoods(appShopGoodsGetDto).getData(); if(shopGoods!=null){ goodsPrice = shopGoods.getSalesPrice(); } @@ -243,25 +239,29 @@ String orderNo = CodeFactoryUtil.getShopOrderNo(); OrderGoods orderGoods; String orderGoodsId; + HashSet<String> goodsTypeSet = new HashSet<>(); for(AppBuyGoodsDto appBuyGoodsDto : appBuyGoodsDtoList){ appSureOrderGoodsVo = new AppSureOrderGoodsVo(); useCoupon = 0; goodsId = appBuyGoodsDto.getGoodsId(); userCouponId = appBuyGoodsDto.getUserCouponId(); - goods = goodsService.getById(goodsId); + goods = remoteGoodsService.getGoods(goodsId).getData(); appSureOrderGoodsVo.setGoodsId(goodsId); appSureOrderGoodsVo.setGoodsName(goods.getGoodsName()); appSureOrderGoodsVo.setGoodsIntroduction(goods.getGoodsIntroduction()); appSureOrderGoodsVo.setGoodsType(goods.getGoodsType()); //商品图片 - goodsFile = goodsFileService.getGoodsPicture(goodsId); + goodsFile = remoteGoodsService.getGoodsFile(goodsId).getData(); appSureOrderGoodsVo.setGoodsPicture(goodsFile.getFileUrl()); buyNum = appBuyGoodsDto.getBuyNum(); appSureOrderGoodsVo.setBuyNum(buyNum); goodsPrice = goods.getSalesPrice(); serviceNum = goods.getServiceNum(); //商户定制价格 - ShopGoods shopGoods = shopGoodsService.getByShopIdAndGoodsId(appPlaceOrderDto.getShopId(),goods.getGoodsId()); + AppShopGoodsGetDto appShopGoodsGetDto = new AppShopGoodsGetDto(); + appShopGoodsGetDto.setGoodsId(goods.getGoodsId()); + appShopGoodsGetDto.setShopId(appPlaceOrderDto.getShopId()); + ShopGoods shopGoods = remoteGoodsService.getShopGoods(appShopGoodsGetDto).getData(); if(shopGoods!=null){ goodsPrice = shopGoods.getSalesPrice(); serviceNum = shopGoods.getServiceNum(); @@ -325,6 +325,20 @@ orderGoods.setServiceNum(serviceNum); orderGoods.setGoodsType(goods.getGoodsType()); orderGoodsService.save(orderGoods); + //清空购物车 + AppShoppingCartDelDto appShoppingCartDelDto = new AppShoppingCartDelDto(); + appShoppingCartDelDto.setGoodsId(goodsId); + appShoppingCartDelDto.setUserId(userId); + remoteShoppingCartService.deleteShoppingCart(appShoppingCartDelDto); + if(goods.getGoodsType()==1){ + goodsTypeSet.add("周期"); + }else if(goods.getGoodsType()==2){ + goodsTypeSet.add("服务"); + }else if(goods.getGoodsType()==3){ + goodsTypeSet.add("体验"); + }else if(goods.getGoodsType()==4){ + goodsTypeSet.add("单品"); + } } Order order = new Order(); order.setOrderId(orderId); @@ -339,6 +353,7 @@ order.setCouponMoney(couponDiscount); order.setDiscountMoney(couponDiscount); order.setReceivableMoney(orderPayMoney); + order.setReceivableDeposit(orderPayDeposit); order.setPayType(appPlaceOrderDto.getPayType()); if(order.getPayType()==1){ order.setPayMoney(orderPayMoney); @@ -357,10 +372,18 @@ order.setGoodsNum(goodsNum); order.setCreateTime(new Date()); this.save(order); + //更新用户商品类型 + if(goodsTypeSet!=null&&goodsTypeSet.size()>0){ + AppMemberGoodsTypeDto appMemberGoodsTypeDto = new AppMemberGoodsTypeDto(); + appMemberGoodsTypeDto.setUserId(userId); + appMemberGoodsTypeDto.setGoodsTypeSet(goodsTypeSet); + remoteMemberService.updateMemberGoodsType(appMemberGoodsTypeDto); + } appPlaceOrderVo.setOrderId(orderId); appPlaceOrderVo.setOrderNo(orderNo); //调用支付 + return appPlaceOrderVo; } @@ -425,6 +448,11 @@ appUserOrderGetVo.setPayMoney(order.getPayMoney()); appUserOrderGetVo.setOrderRemark(order.getOrderRemark()); appUserOrderGetVo.setShopId(order.getShopId()); + appUserOrderGetVo.setCreateTime(order.getCreateTime()); + appUserOrderGetVo.setPayTime(order.getCreateTime()); + appUserOrderGetVo.setUseTime(order.getUseTime()); + appUserOrderGetVo.setCancelTime(order.getCancelTime()); + appUserOrderGetVo.setOrderRemark(order.getOrderRemark()); Shop shop = remoteShopService.getShop(order.getShopId()).getData(); appUserOrderGetVo.setShopName(shop.getShopName()); appUserOrderGetVo.setAppUserOrderGoodsPageVoList(appUserOrderGoodsPageVoList); @@ -507,6 +535,9 @@ merVerifyOrderVo.setReceivableMoney(order.getReceivableMoney()); merVerifyOrderVo.setPayMoney(order.getPayMoney()); merVerifyOrderVo.setOrderRemark(order.getOrderRemark()); + merVerifyOrderVo.setCreateTime(order.getCreateTime()); + merVerifyOrderVo.setPayTime(order.getPayTime()); + merVerifyOrderVo.setUseTime(order.getUseTime()); merVerifyOrderVo.setAppUserOrderGoodsPageVoList(appUserOrderGoodsPageVoList); SysUser sysUser = remoteUserService.getSysUser(order.getUserId()).getData(); merVerifyOrderVo.setUserName(sysUser.getNickName()); @@ -524,14 +555,15 @@ public MerVerifyOrderVo sureVerifyOrder(MerVerifyOrderDto merVerifyOrderDto){ String orderId = merVerifyOrderDto.getOrderId(); BigDecimal relReceiveMoney = merVerifyOrderDto.getRelReceiveMoney(); + BigDecimal relPayMoney = merVerifyOrderDto.getRelPayMoney(); Date nowTime = new Date(); //更新订单信息 Order order = this.getById(orderId); order.setOrderStatus(3); order.setUseTime(nowTime); order.setUseUserId(merVerifyOrderDto.getUserId()); - order.setOfflinePayMoney(relReceiveMoney); - order.setPayMoney(order.getPayMoney().add(relReceiveMoney)); + order.setOfflinePayMoney(relPayMoney); + order.setPayMoney(relReceiveMoney.add(relPayMoney)); order.setCloseFlag(1); this.saveOrUpdate(order); //创建服务商品 @@ -570,6 +602,9 @@ merVerifyOrderVo.setPayMoney(order.getPayMoney()); merVerifyOrderVo.setOrderRemark(order.getOrderRemark()); merVerifyOrderVo.setAppUserOrderGoodsPageVoList(appUserOrderGoodsPageVoList); + merVerifyOrderVo.setCreateTime(order.getCreateTime()); + merVerifyOrderVo.setPayTime(order.getPayTime()); + merVerifyOrderVo.setUseTime(order.getUseTime()); SysUser sysUser = remoteUserService.getSysUser(order.getUserId()).getData(); merVerifyOrderVo.setUserName(sysUser.getNickName()); merVerifyOrderVo.setUserMobile(sysUser.getPhonenumber()); @@ -586,8 +621,12 @@ public List<MerMemberNoClearOrderVo> pageMerMemberNoClearOrder(Page page, MerMemberNoClearOrderDto merMemberNoClearOrderDto){ List<MerMemberNoClearOrderVo> merMemberNoClearOrderVoList = orderMapper.pageMerMemberNoClearOrder(page,merMemberNoClearOrderDto.getMemberUserId()); 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); + } } } return merMemberNoClearOrderVoList; @@ -613,6 +652,27 @@ @Override public void createNewOrder(MerNewOrderDto merNewOrderDto){ Long userId = merNewOrderDto.getBuyUserId(); + if(userId==null){ + String name = merNewOrderDto.getName(); + String mobile = merNewOrderDto.getMobile(); + SysUser sysUser = remoteUserService.getSysUserByMobile(mobile).getData(); + if(sysUser==null){ + //创建新用户 + String memberId = IdUtils.simpleUUID(); + sysUser = new SysUser(); + sysUser.setUserName(mobile); + sysUser.setUserType("03"); + sysUser.setNickName(name); + 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(); + userId = sysUser.getUserId(); + }else{ + userId = sysUser.getUserId(); + } + } //创建订单 List<AppBuyGoodsDto> appBuyGoodsDtoList = merNewOrderDto.getAppBuyGoodsDtoList(); String goodsId; @@ -626,7 +686,11 @@ BigDecimal goodsTotalPrice; BigDecimal goodsRealPrice; List<AppUserCouponVo> appUserCouponVoList = remoteMemberService.listVoUserCouponByUserId(userId).getData(); - Map<Long,AppUserCouponVo> appUserCouponVoMap = appUserCouponVoList.stream().collect(Collectors.toMap(AppUserCouponVo::getUserCouponId, Function.identity())); + Map<Long,AppUserCouponVo> appUserCouponVoMap = new HashMap<>(); + if(null != appUserCouponVoList){ + appUserCouponVoMap = appUserCouponVoList.stream().collect(Collectors.toMap(AppUserCouponVo::getUserCouponId, Function.identity())); + } + AppUserCouponVo appUserCouponVo; Integer couponType; BigDecimal moneyThreshold; @@ -644,12 +708,15 @@ for(AppBuyGoodsDto appBuyGoodsDto : appBuyGoodsDtoList){ goodsId = appBuyGoodsDto.getGoodsId(); userCouponId = appBuyGoodsDto.getUserCouponId(); - goods = goodsService.getById(goodsId); + goods = remoteGoodsService.getGoods(goodsId).getData(); buyNum = appBuyGoodsDto.getBuyNum(); goodsPrice = goods.getSalesPrice(); serviceNum = goods.getServiceNum(); //商户定制价格 - ShopGoods shopGoods = shopGoodsService.getByShopIdAndGoodsId(merNewOrderDto.getShopId(),goods.getGoodsId()); + AppShopGoodsGetDto appShopGoodsGetDto = new AppShopGoodsGetDto(); + appShopGoodsGetDto.setGoodsId(goods.getGoodsId()); + appShopGoodsGetDto.setShopId(merNewOrderDto.getShopId()); + ShopGoods shopGoods = remoteGoodsService.getShopGoods(appShopGoodsGetDto).getData(); if(shopGoods!=null){ goodsPrice = shopGoods.getSalesPrice(); serviceNum = shopGoods.getServiceNum(); @@ -659,7 +726,7 @@ goodsRealPrice = goodsTotalPrice; if(userCouponId!=null){ appUserCouponVo = appUserCouponVoMap.get(userCouponId); - if(StringUtils.isBlank(appUserCouponVo.getRelGoodsIds()) || appUserCouponVo.getRelGoodsIds().contains(goodsId)){ + if(null != appUserCouponVo && (StringUtils.isBlank(appUserCouponVo.getRelGoodsIds()) || appUserCouponVo.getRelGoodsIds().contains(goodsId))){ couponType = appUserCouponVo.getCouponType(); if(couponType == 1 && appUserCouponVo.getMoneyThreshold()!=null && appUserCouponVo.getDiscountMoney()!=null){ moneyThreshold = appUserCouponVo.getMoneyThreshold(); @@ -695,7 +762,9 @@ orderGoods.setOrderId(orderId); orderGoods.setGoodsId(goodsId); orderGoods.setBuyNum(buyNum); - orderGoods.setCouponId(userCouponId.toString()); + if(null != userCouponId){ + orderGoods.setCouponId(userCouponId.toString()); + } orderGoods.setGoodsPrice(goodsPrice); orderGoods.setGoodsTotalMoney(orderGoodsMoney); orderGoods.setGoodsReceivableMoney(goodsRealPrice); @@ -716,6 +785,7 @@ order.setCouponMoney(couponDiscount); order.setDiscountMoney(couponDiscount); order.setReceivableMoney(orderPayMoney); + order.setReceivableDeposit(new BigDecimal("0.00")); order.setPayType(1); if(order.getPayType()==1){ order.setPayMoney(orderPayMoney); @@ -761,7 +831,7 @@ consumerGoodsService.save(consumerGoods); } Member member = remoteMemberService.getMember(userId).getData(); - if(member.getBindingFlag()!=1){ + if(member!=null&&member.getBindingFlag()!=1){ //绑定商户 AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto(); appMemberBindingDto.setShopId(merNewOrderDto.getShopId()); @@ -785,14 +855,37 @@ Member member; Integer orderFrom; String orderFromDesc; + BigDecimal zeroBig = new BigDecimal("0.00"); for(MerOrderPageVo merOrderPageVo : merOrderPageVoList){ userId = merOrderPageVo.getUserId(); member = remoteMemberService.getMember(userId).getData(); - merOrderPageVo.setUserName(member.getNickName()); - merOrderPageVo.setUserMobile(member.getMobile()); + if(member!=null){ + if(StringUtils.isNotBlank(member.getNickName())){ + merOrderPageVo.setUserName(member.getNickName()); + } + merOrderPageVo.setUserMobile(member.getMobile()); + }else{ + SysUser sysUser = remoteUserService.getSysUser(userId).getData(); + if(StringUtils.isNotBlank(sysUser.getNickName())){ + merOrderPageVo.setUserName(sysUser.getNickName()); + } + merOrderPageVo.setUserMobile(sysUser.getPhonenumber()); + } orderFrom = merOrderPageVo.getOrderFrom(); - orderFromDesc = "商城订单"; + if(orderFrom!=null){ + if(orderFrom == 1){ + orderFromDesc = "商城订单"; + }else{ + orderFromDesc = "线下创建"; + } + }else{ + orderFromDesc = "商城订单"; + } merOrderPageVo.setOrderFromDesc(orderFromDesc); + merOrderPageVo.setUnPaidMoney(merOrderPageVo.getReceivableMoney().subtract(merOrderPageVo.getPayMoney())); + if(merOrderPageVo.getUnPaidMoney()==null){ + merOrderPageVo.setUnPaidMoney(zeroBig); + } } } return merOrderPageVoList; @@ -808,8 +901,12 @@ public List<MerMemberNoClearOrderVo> pageMerMemberOrder(Page page, MerMemberNoClearOrderDto merMemberNoClearOrderDto){ List<MerMemberNoClearOrderVo> merMemberNoClearOrderVoList = orderMapper.pageMerMemberOrder(page,merMemberNoClearOrderDto.getMemberUserId()); 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); + } } } return merMemberNoClearOrderVoList; -- Gitblit v1.7.1