From 3f7a3aefe2965459aed169383b285fba400cfe8c Mon Sep 17 00:00:00 2001 From: jiangqs <343695869@qq.com> Date: 星期日, 04 六月 2023 13:13:54 +0800 Subject: [PATCH] Merge branch 'master' of http://sinata.cn:10101/gitblit/r/java/HongRuiTang --- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java | 348 +++++++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 246 insertions(+), 102 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 f3ec860..0f21cd9 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 @@ -6,36 +6,34 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.exception.ServiceException; +import com.ruoyi.common.core.utils.DateUtils; 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.apache.ibatis.annotations.Param; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -59,16 +57,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 +70,13 @@ @Resource private ConsumerGoodsService consumerGoodsService; + + @Resource + private RemoteGoodsService remoteGoodsService; + + @Resource + private RemoteShoppingCartService remoteShoppingCartService; + /** * @description: buyGoods @@ -99,15 +95,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 +120,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 +144,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 +181,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 +219,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 +242,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 +273,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,8 +318,8 @@ orderGoods.setOrderId(orderId); orderGoods.setGoodsId(goodsId); orderGoods.setBuyNum(buyNum); - if(userCouponId!=null){ - orderGoods.setCouponId(userCouponId.toString()); + if(memberCouponId!=null){ + orderGoods.setCouponId(memberCouponId.toString()); } orderGoods.setGoodsPrice(goodsPrice); orderGoods.setGoodsTotalMoney(orderGoodsMoney); @@ -325,6 +328,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 +356,7 @@ order.setCouponMoney(couponDiscount); order.setDiscountMoney(couponDiscount); order.setReceivableMoney(orderPayMoney); + order.setReceivableDeposit(orderPayDeposit); order.setPayType(appPlaceOrderDto.getPayType()); if(order.getPayType()==1){ order.setPayMoney(orderPayMoney); @@ -355,12 +373,20 @@ } order.setOrderRemark(appPlaceOrderDto.getOrderRemark()); order.setGoodsNum(goodsNum); - order.setCreateTime(new Date()); + order.setCreateTime(DateUtils.getNowDate()); 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 +451,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); @@ -443,7 +474,7 @@ throw new ServiceException(AppErrorConstant.CANCEL_ERROR_ORDER); } order.setOrderStatus(0); - order.setCancelTime(new Date()); + order.setCancelTime(DateUtils.getNowDate()); this.saveOrUpdate(order); } @@ -507,6 +538,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()); @@ -525,7 +559,7 @@ String orderId = merVerifyOrderDto.getOrderId(); BigDecimal relReceiveMoney = merVerifyOrderDto.getRelReceiveMoney(); BigDecimal relPayMoney = merVerifyOrderDto.getRelPayMoney(); - Date nowTime = new Date(); + Date nowTime = DateUtils.getNowDate(); //更新订单信息 Order order = this.getById(orderId); order.setOrderStatus(3); @@ -571,6 +605,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()); @@ -587,8 +624,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; @@ -614,21 +655,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"); @@ -644,13 +722,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(); @@ -658,22 +739,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); } } @@ -696,8 +778,8 @@ orderGoods.setOrderId(orderId); orderGoods.setGoodsId(goodsId); orderGoods.setBuyNum(buyNum); - if(StringUtils.isNotBlank(userCouponId.toString())){ - orderGoods.setCouponId(userCouponId.toString()); + if(null != memberCouponId){ + orderGoods.setCouponId(memberCouponId.toString()); } orderGoods.setGoodsPrice(goodsPrice); orderGoods.setGoodsTotalMoney(orderGoodsMoney); @@ -707,18 +789,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); @@ -731,9 +815,9 @@ } order.setOrderRemark(merNewOrderDto.getOrderRemark()); order.setGoodsNum(goodsNum); - order.setCreateTime(new Date()); - order.setPayTime(new Date()); - order.setUseTime(new Date()); + order.setCreateTime(DateUtils.getNowDate()); + order.setPayTime(DateUtils.getNowDate()); + order.setUseTime(DateUtils.getNowDate()); order.setUseUserId(merNewOrderDto.getUserId()); order.setPayMoney(merNewOrderDto.getPayMoney()); order.setOnlinePayMoney(new BigDecimal("0.00")); @@ -760,14 +844,15 @@ consumerGoods.setServiceNum(appUserOrderGoodsPageVo.getServiceNum()); consumerGoods.setUsedNum(0); consumerGoods.setGoodsType(appUserOrderGoodsPageVo.getGoodsType()); - consumerGoods.setCreateTime(new Date()); + consumerGoods.setCreateTime(DateUtils.getNowDate()); 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); @@ -788,14 +873,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; @@ -811,10 +919,46 @@ 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; } + + /** + * 获取用户订单统计 + * @param mgtMemberOrderTotalDto + * @return + */ + @Override + public MgtMemberOrderTotalVo getMgtMemberOrderTotal(MgtMemberOrderTotalDto mgtMemberOrderTotalDto){ + MgtMemberOrderTotalVo mgtMemberOrderTotalVo = orderMapper.getMgtMemberOrderTotal(mgtMemberOrderTotalDto); + return mgtMemberOrderTotalVo; + } + + /** + * 分页获取用户订单列表 + * @param page + * @param mgtMemberOrderPageDto + * @return + */ + @Override + public List<MgtMemberOrderPageVo> pageMgtMemberOrder(Page page, MgtMemberOrderPageDto mgtMemberOrderPageDto){ + List<MgtMemberOrderPageVo> mgtMemberOrderPageVoList = orderMapper.pageMgtMemberOrder(page, mgtMemberOrderPageDto); + if(mgtMemberOrderPageVoList!=null&&!mgtMemberOrderPageVoList.isEmpty()){ + Long shopId; + Shop shop; + for(MgtMemberOrderPageVo mgtMemberOrderPageVo : mgtMemberOrderPageVoList){ + shopId = mgtMemberOrderPageVo.getShopId(); + shop = remoteShopService.getShop(shopId).getData(); + mgtMemberOrderPageVo.setShopName(shop.getShopName()); + } + } + return mgtMemberOrderPageVoList; + } } -- Gitblit v1.7.1