From aed4e4c7d76de4d0fbfe8c0b26fcdeecbd5c5b24 Mon Sep 17 00:00:00 2001 From: jiangqs <jiangqs> Date: 星期五, 26 五月 2023 18:04:47 +0800 Subject: [PATCH] 管理台用户管理 --- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java | 338 ++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 245 insertions(+), 93 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 d8319b0..2c2e93d 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,28 @@ 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.core.utils.uuid.UUID; +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.system.api.domain.vo.AppMemberCouponVo; 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 +55,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 +68,13 @@ @Resource private ConsumerGoodsService consumerGoodsService; + + @Resource + private RemoteGoodsService remoteGoodsService; + + @Resource + private RemoteShoppingCartService remoteShoppingCartService; + /** * @description: buyGoods @@ -99,15 +93,15 @@ String goodsId; Integer buyNum; BigDecimal buyNumBig; - Long userCouponId; + Long memberCouponId; Goods goods; BigDecimal goodsPrice; BigDecimal goodsTotalPrice; BigDecimal goodsRealPrice; - List<AppUserCouponVo> appUserCouponVoList = remoteMemberService.listVoUserCouponByUserId(userId).getData(); - List<AppUserCouponVo> appGoodsUserCouponVoList; - Map<Long,AppUserCouponVo> appUserCouponVoMap = appUserCouponVoList.stream().collect(Collectors.toMap(AppUserCouponVo::getUserCouponId, Function.identity())); - AppUserCouponVo appUserCouponVo; + List<AppMemberCouponVo> appMemberCouponVoList = remoteMemberService.listVoMemberCouponByUserId(userId).getData(); + List<AppMemberCouponVo> appGoodsMemberCouponVoList; + Map<Long,AppMemberCouponVo> appMemberCouponVoMap = appMemberCouponVoList.stream().collect(Collectors.toMap(AppMemberCouponVo::getMemberCouponId, Function.identity())); + AppMemberCouponVo appMemberCouponVo; Integer couponType; BigDecimal moneyThreshold; BigDecimal discountMoney = new BigDecimal("0.00"); @@ -124,20 +118,23 @@ useCoupon = 0; goodsId = appBuyGoodsDto.getGoodsId(); buyNum = appBuyGoodsDto.getBuyNum(); - userCouponId = appBuyGoodsDto.getUserCouponId(); - goods = goodsService.getById(goodsId); + memberCouponId = appBuyGoodsDto.getMemberCouponId(); + 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(); } @@ -145,24 +142,24 @@ buyNumBig = BigDecimal.valueOf(buyNum); goodsTotalPrice = goodsPrice.multiply(buyNumBig); goodsRealPrice = goodsTotalPrice; - if(userCouponId!=null){ - appUserCouponVo = appUserCouponVoMap.get(userCouponId); - if(StringUtils.isBlank(appUserCouponVo.getRelGoodsIds()) || appUserCouponVo.getRelGoodsIds().contains(goodsId)){ - couponType = appUserCouponVo.getCouponType(); - if(couponType == 1 && appUserCouponVo.getMoneyThreshold()!=null && appUserCouponVo.getDiscountMoney()!=null){ - moneyThreshold = appUserCouponVo.getMoneyThreshold(); + if(memberCouponId!=null){ + appMemberCouponVo = appMemberCouponVoMap.get(memberCouponId); + if(StringUtils.isBlank(appMemberCouponVo.getRelGoodsIds()) || appMemberCouponVo.getRelGoodsIds().contains(goodsId)){ + couponType = appMemberCouponVo.getCouponType(); + if(couponType == 1 && appMemberCouponVo.getMoneyThreshold()!=null && appMemberCouponVo.getDiscountMoney()!=null){ + moneyThreshold = appMemberCouponVo.getMoneyThreshold(); if(goodsTotalPrice.compareTo(moneyThreshold)>=0){ - discountMoney = appUserCouponVo.getDiscountMoney(); + discountMoney = appMemberCouponVo.getDiscountMoney(); goodsRealPrice = goodsTotalPrice.subtract(discountMoney); useCoupon = 1; } - }else if(couponType == 2 && appUserCouponVo.getDiscountPercent()!=null){ - discountPercent = appUserCouponVo.getDiscountPercent(); + }else if(couponType == 2 && appMemberCouponVo.getDiscountPercent()!=null){ + discountPercent = appMemberCouponVo.getDiscountPercent(); goodsRealPrice = goodsTotalPrice.multiply(discountPercent).divide(BigDecimal.TEN).setScale(2,BigDecimal.ROUND_HALF_UP); discountMoney = goodsRealPrice.subtract(goodsTotalPrice); useCoupon = 1; - }else if(couponType == 3 && appUserCouponVo.getDiscountMoney()!=null){ - discountMoney = appUserCouponVo.getDiscountMoney(); + }else if(couponType == 3 && appMemberCouponVo.getDiscountMoney()!=null){ + discountMoney = appMemberCouponVo.getDiscountMoney(); goodsRealPrice = goodsTotalPrice.subtract(discountMoney); useCoupon = 1; } @@ -182,16 +179,16 @@ orderPayDeposit = orderPayDeposit.add(goodsDeposit); orderPayMoney = orderPayMoney.add(goodsRealPrice); //商品关联优惠券 - appGoodsUserCouponVoList = new ArrayList<>(); - if(appUserCouponVoList!=null && !appUserCouponVoList.isEmpty()){ - for(AppUserCouponVo entity : appUserCouponVoList){ + appGoodsMemberCouponVoList = new ArrayList<>(); + if(appMemberCouponVoList!=null && !appMemberCouponVoList.isEmpty()){ + for(AppMemberCouponVo entity : appMemberCouponVoList){ if(StringUtils.isBlank(entity.getRelGoodsIds())){ - appGoodsUserCouponVoList.add(entity); + appGoodsMemberCouponVoList.add(entity); }else if(entity.getRelGoodsIds().contains(goodsId)){ - appGoodsUserCouponVoList.add(entity); + appGoodsMemberCouponVoList.add(entity); } } - appSureOrderGoodsVo.setAppUserCouponVoList(appGoodsUserCouponVoList); + appSureOrderGoodsVo.setAppMemberCouponVoList(appGoodsMemberCouponVoList); } appSureOrderGoodsVoList.add(appSureOrderGoodsVo); } @@ -220,14 +217,14 @@ BigDecimal buyNumBig; Integer serviceNum; Integer goodsNum = 0; - Long userCouponId; + Long memberCouponId; Goods goods; BigDecimal goodsPrice; BigDecimal goodsTotalPrice; BigDecimal goodsRealPrice; - List<AppUserCouponVo> appUserCouponVoList = remoteMemberService.listVoUserCouponByUserId(userId).getData(); - Map<Long,AppUserCouponVo> appUserCouponVoMap = appUserCouponVoList.stream().collect(Collectors.toMap(AppUserCouponVo::getUserCouponId, Function.identity())); - AppUserCouponVo appUserCouponVo; + List<AppMemberCouponVo> appMemberCouponVoList = remoteMemberService.listVoMemberCouponByUserId(userId).getData(); + Map<Long,AppMemberCouponVo> appMemberCouponVoMap = appMemberCouponVoList.stream().collect(Collectors.toMap(AppMemberCouponVo::getMemberCouponId, Function.identity())); + AppMemberCouponVo appMemberCouponVo; Integer couponType; BigDecimal moneyThreshold; BigDecimal discountMoney = new BigDecimal("0.00"); @@ -243,25 +240,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); + memberCouponId = appBuyGoodsDto.getMemberCouponId(); + 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(); @@ -270,24 +271,24 @@ buyNumBig = BigDecimal.valueOf(buyNum); goodsTotalPrice = goodsPrice.multiply(buyNumBig); goodsRealPrice = goodsTotalPrice; - if(userCouponId!=null){ - appUserCouponVo = appUserCouponVoMap.get(userCouponId); - if(StringUtils.isBlank(appUserCouponVo.getRelGoodsIds()) || appUserCouponVo.getRelGoodsIds().contains(goodsId)){ - couponType = appUserCouponVo.getCouponType(); - if(couponType == 1 && appUserCouponVo.getMoneyThreshold()!=null && appUserCouponVo.getDiscountMoney()!=null){ - moneyThreshold = appUserCouponVo.getMoneyThreshold(); + if(memberCouponId!=null){ + appMemberCouponVo = appMemberCouponVoMap.get(memberCouponId); + if(StringUtils.isBlank(appMemberCouponVo.getRelGoodsIds()) || appMemberCouponVo.getRelGoodsIds().contains(goodsId)){ + couponType = appMemberCouponVo.getCouponType(); + if(couponType == 1 && appMemberCouponVo.getMoneyThreshold()!=null && appMemberCouponVo.getDiscountMoney()!=null){ + moneyThreshold = appMemberCouponVo.getMoneyThreshold(); if(goodsTotalPrice.compareTo(moneyThreshold)>=0){ - discountMoney = appUserCouponVo.getDiscountMoney(); + discountMoney = appMemberCouponVo.getDiscountMoney(); goodsRealPrice = goodsTotalPrice.subtract(discountMoney); useCoupon = 1; } - }else if(couponType == 2 && appUserCouponVo.getDiscountPercent()!=null){ - discountPercent = appUserCouponVo.getDiscountPercent(); + }else if(couponType == 2 && appMemberCouponVo.getDiscountPercent()!=null){ + discountPercent = appMemberCouponVo.getDiscountPercent(); goodsRealPrice = goodsTotalPrice.multiply(discountPercent).divide(BigDecimal.TEN).setScale(2,BigDecimal.ROUND_HALF_UP); discountMoney = goodsRealPrice.subtract(goodsTotalPrice); useCoupon = 1; - }else if(couponType == 3 && appUserCouponVo.getDiscountMoney()!=null){ - discountMoney = appUserCouponVo.getDiscountMoney(); + }else if(couponType == 3 && appMemberCouponVo.getDiscountMoney()!=null){ + discountMoney = appMemberCouponVo.getDiscountMoney(); goodsRealPrice = goodsTotalPrice.subtract(discountMoney); useCoupon = 1; } @@ -315,7 +316,9 @@ orderGoods.setOrderId(orderId); orderGoods.setGoodsId(goodsId); orderGoods.setBuyNum(buyNum); - orderGoods.setCouponId(userCouponId.toString()); + if(memberCouponId!=null){ + orderGoods.setCouponId(memberCouponId.toString()); + } orderGoods.setGoodsPrice(goodsPrice); orderGoods.setGoodsTotalMoney(orderGoodsMoney); orderGoods.setGoodsReceivableMoney(goodsRealPrice); @@ -323,11 +326,26 @@ 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); order.setDelFlag(0); - order.setOrderStatus(1); + //为对接支付 直接付款成功 + order.setOrderStatus(2); order.setOrderNo(orderNo); order.setOrderFrom(1); order.setShopId(appPlaceOrderDto.getShopId()); @@ -336,26 +354,37 @@ order.setCouponMoney(couponDiscount); order.setDiscountMoney(couponDiscount); order.setReceivableMoney(orderPayMoney); + order.setReceivableDeposit(orderPayDeposit); order.setPayType(appPlaceOrderDto.getPayType()); if(order.getPayType()==1){ order.setPayMoney(orderPayMoney); order.setOnlinePayMoney(orderPayMoney); appPlaceOrderVo.setPayMoney(orderPayMoney); + appPlaceOrderVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getPayMoney())); order.setCloseFlag(1); }else if(order.getPayType()==2){ order.setPayMoney(orderPayDeposit); order.setOnlinePayMoney(orderPayDeposit); appPlaceOrderVo.setPayMoney(orderPayDeposit); + appPlaceOrderVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getPayMoney())); order.setCloseFlag(0); } order.setOrderRemark(appPlaceOrderDto.getOrderRemark()); 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; } @@ -391,6 +420,7 @@ }else{ appUserOrderPageVo.setSameShop(0); } + appUserOrderPageVo.setVerifyCode("1-"+appUserOrderPageVo.getOrderId()); } } return appUserOrderPageVoList; @@ -419,9 +449,15 @@ 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); + appUserOrderGetVo.setVerifyCode("1-"+orderId); return appUserOrderGetVo; } @@ -500,6 +536,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()); @@ -517,14 +556,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); //创建服务商品 @@ -563,6 +603,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()); @@ -579,8 +622,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; @@ -606,21 +653,58 @@ @Override public void createNewOrder(MerNewOrderDto merNewOrderDto){ Long userId = merNewOrderDto.getBuyUserId(); - //创建订单 + //如果非指定用户判断是否需要通过手机号创建新用户 + if(userId==null){ + String name = merNewOrderDto.getName(); + String mobile = merNewOrderDto.getMobile(); + Member member = remoteMemberService.getMemberByMobile(mobile).getData(); + SysUser sysUser; + if(member!=null){ + sysUser = remoteUserService.getSysUser(member.getUserId()).getData(); + }else{ + //创建新用户 + String memberId = IdUtils.simpleUUID(); + sysUser = new SysUser(); + sysUser.setUserName(memberId); + sysUser.setUserType("03"); + sysUser.setNickName(name); + sysUser.setPhonenumber(mobile); + 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); + member.setUserId(sysUser.getUserId()); + member.setMobile(mobile); + member.setRealName(name); + member.setNickName(name); + remoteMemberService.createNewMember(member); + } + userId = sysUser.getUserId(); + } + //创建订单计算 List<AppBuyGoodsDto> appBuyGoodsDtoList = merNewOrderDto.getAppBuyGoodsDtoList(); String goodsId; Integer buyNum; BigDecimal buyNumBig; Integer serviceNum; Integer goodsNum = 0; - Long userCouponId; + Long memberCouponId; Goods goods; BigDecimal goodsPrice; BigDecimal goodsTotalPrice; BigDecimal goodsRealPrice; - List<AppUserCouponVo> appUserCouponVoList = remoteMemberService.listVoUserCouponByUserId(userId).getData(); - Map<Long,AppUserCouponVo> appUserCouponVoMap = appUserCouponVoList.stream().collect(Collectors.toMap(AppUserCouponVo::getUserCouponId, Function.identity())); - AppUserCouponVo appUserCouponVo; + Long shopId = merNewOrderDto.getShopId(); + Shop shop = remoteShopService.getShop(shopId).getData(); + List<AppMemberCouponVo> appMemberCouponVoList = remoteMemberService.listVoMemberCouponByUserId(userId).getData(); + Map<Long,AppMemberCouponVo> appMemberCouponVoMap = new HashMap<>(); + if(null != appMemberCouponVoList){ + appMemberCouponVoMap = appMemberCouponVoList.stream().collect(Collectors.toMap(AppMemberCouponVo::getMemberCouponId, Function.identity())); + } + + AppMemberCouponVo appMemberCouponVo; Integer couponType; BigDecimal moneyThreshold; BigDecimal discountMoney = new BigDecimal("0.00"); @@ -636,13 +720,16 @@ String orderGoodsId; for(AppBuyGoodsDto appBuyGoodsDto : appBuyGoodsDtoList){ goodsId = appBuyGoodsDto.getGoodsId(); - userCouponId = appBuyGoodsDto.getUserCouponId(); - goods = goodsService.getById(goodsId); + memberCouponId = appBuyGoodsDto.getMemberCouponId(); + 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(shopId); + ShopGoods shopGoods = remoteGoodsService.getShopGoods(appShopGoodsGetDto).getData(); if(shopGoods!=null){ goodsPrice = shopGoods.getSalesPrice(); serviceNum = shopGoods.getServiceNum(); @@ -650,22 +737,23 @@ buyNumBig = BigDecimal.valueOf(buyNum); goodsTotalPrice = goodsPrice.multiply(buyNumBig); goodsRealPrice = goodsTotalPrice; - if(userCouponId!=null){ - appUserCouponVo = appUserCouponVoMap.get(userCouponId); - if(StringUtils.isBlank(appUserCouponVo.getRelGoodsIds()) || appUserCouponVo.getRelGoodsIds().contains(goodsId)){ - couponType = appUserCouponVo.getCouponType(); - if(couponType == 1 && appUserCouponVo.getMoneyThreshold()!=null && appUserCouponVo.getDiscountMoney()!=null){ - moneyThreshold = appUserCouponVo.getMoneyThreshold(); + //优惠券计算 + if(memberCouponId!=null){ + appMemberCouponVo = appMemberCouponVoMap.get(memberCouponId); + if(null != appMemberCouponVo && (StringUtils.isBlank(appMemberCouponVo.getRelGoodsIds()) || appMemberCouponVo.getRelGoodsIds().contains(goodsId))){ + couponType = appMemberCouponVo.getCouponType(); + if(couponType == 1 && appMemberCouponVo.getMoneyThreshold()!=null && appMemberCouponVo.getDiscountMoney()!=null){ + moneyThreshold = appMemberCouponVo.getMoneyThreshold(); if(goodsTotalPrice.compareTo(moneyThreshold)>=0){ - discountMoney = appUserCouponVo.getDiscountMoney(); + discountMoney = appMemberCouponVo.getDiscountMoney(); goodsRealPrice = goodsTotalPrice.subtract(discountMoney); } - }else if(couponType == 2 && appUserCouponVo.getDiscountPercent()!=null){ - discountPercent = appUserCouponVo.getDiscountPercent(); + }else if(couponType == 2 && appMemberCouponVo.getDiscountPercent()!=null){ + discountPercent = appMemberCouponVo.getDiscountPercent(); goodsRealPrice = goodsTotalPrice.multiply(discountPercent).divide(BigDecimal.TEN).setScale(2,BigDecimal.ROUND_HALF_UP); discountMoney = goodsRealPrice.subtract(goodsTotalPrice); - }else if(couponType == 3 && appUserCouponVo.getDiscountMoney()!=null){ - discountMoney = appUserCouponVo.getDiscountMoney(); + }else if(couponType == 3 && appMemberCouponVo.getDiscountMoney()!=null){ + discountMoney = appMemberCouponVo.getDiscountMoney(); goodsRealPrice = goodsTotalPrice.subtract(discountMoney); } } @@ -688,7 +776,9 @@ orderGoods.setOrderId(orderId); orderGoods.setGoodsId(goodsId); orderGoods.setBuyNum(buyNum); - orderGoods.setCouponId(userCouponId.toString()); + if(null != memberCouponId){ + orderGoods.setCouponId(memberCouponId.toString()); + } orderGoods.setGoodsPrice(goodsPrice); orderGoods.setGoodsTotalMoney(orderGoodsMoney); orderGoods.setGoodsReceivableMoney(goodsRealPrice); @@ -697,18 +787,20 @@ orderGoods.setGoodsType(goods.getGoodsType()); orderGoodsService.save(orderGoods); } + //创建订单 Order order = new Order(); order.setOrderId(orderId); order.setDelFlag(0); order.setOrderStatus(3); order.setOrderNo(orderNo); order.setOrderFrom(3); - order.setShopId(merNewOrderDto.getShopId()); + order.setShopId(shopId); order.setUserId(userId); order.setOrderMoney(orderGoodsMoney); 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); @@ -754,10 +846,11 @@ 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()); + appMemberBindingDto.setShopId(shopId); + appMemberBindingDto.setShopName(shop.getShopName()); appMemberBindingDto.setUserId(userId); appMemberBindingDto.setBindingFlag(1); remoteMemberService.updateMemberBinding(appMemberBindingDto); @@ -773,6 +866,65 @@ @Override public List<MerOrderPageVo> pageMerOrder(Page page, MerOrderPageDto merOrderPageDto){ List<MerOrderPageVo> merOrderPageVoList = orderMapper.pageMerOrder(page, merOrderPageDto); + if(merOrderPageVoList!=null&&!merOrderPageVoList.isEmpty()){ + Long userId; + Member member; + Integer orderFrom; + String orderFromDesc; + BigDecimal zeroBig = new BigDecimal("0.00"); + for(MerOrderPageVo merOrderPageVo : merOrderPageVoList){ + userId = merOrderPageVo.getUserId(); + member = remoteMemberService.getMember(userId).getData(); + 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(); + 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; } + + /** + * + * @param page + * @param merMemberNoClearOrderDto + * @return + */ + @Override + 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