| | |
| | | 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.common.security.utils.CodeFactoryUtil; |
| | | import com.ruoyi.order.service.order.UserServiceRecordService; |
| | | import com.ruoyi.system.api.domain.dto.*; |
| | | import com.ruoyi.system.api.domain.vo.*; |
| | | import com.ruoyi.system.api.domain.vo.MgtMapTotalVo; |
| | | 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.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; |
| | | |
| | | import javax.annotation.Resource; |
| | |
| | | private OrderMapper orderMapper; |
| | | |
| | | @Resource |
| | | private GoodsService goodsService; |
| | | |
| | | @Resource |
| | | private ShopGoodsService shopGoodsService; |
| | | |
| | | @Resource |
| | | private RemoteMemberService remoteMemberService; |
| | | |
| | | @Resource |
| | | private GoodsFileService goodsFileService; |
| | | |
| | | @Resource |
| | | private OrderGoodsService orderGoodsService; |
| | |
| | | @Resource |
| | | private ConsumerGoodsService consumerGoodsService; |
| | | |
| | | @Resource |
| | | private RemoteGoodsService remoteGoodsService; |
| | | |
| | | @Resource |
| | | private RemoteShoppingCartService remoteShoppingCartService; |
| | | |
| | | @Resource |
| | | private RemoteConfigService remoteConfigService; |
| | | |
| | | @Resource |
| | | private UserServiceRecordService userServiceRecordService; |
| | | |
| | | |
| | | |
| | | /** |
| | | * @description: buyGoods |
| | | * @param: appSureOrderDto |
| | |
| | | * @date: 2023/5/3 0:07 |
| | | */ |
| | | @Override |
| | | public AppSureOrderVo buyGoods(AppSureOrderDto appSureOrderDto){ |
| | | public AppSureOrderVo buyGoods(AppSureOrderDto appSureOrderDto) { |
| | | Long userId = appSureOrderDto.getUserId(); |
| | | AppSureOrderVo appSureOrderVo = new AppSureOrderVo(); |
| | | List<AppSureOrderGoodsVo> appSureOrderGoodsVoList = new ArrayList<>(); |
| | |
| | | String goodsId; |
| | | Integer buyNum; |
| | | BigDecimal buyNumBig; |
| | | Long userCouponId; |
| | | String 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<String, AppMemberCouponVo> appMemberCouponVoMap = appMemberCouponVoList.stream().collect(Collectors.toMap(AppMemberCouponVo::getMemberCouponId, Function.identity())); |
| | | AppMemberCouponVo appMemberCouponVo; |
| | | Integer couponType; |
| | | BigDecimal moneyThreshold; |
| | | BigDecimal discountMoney = new BigDecimal("0.00"); |
| | |
| | | BigDecimal couponDiscount = new BigDecimal("0.00"); |
| | | BigDecimal orderPayDeposit = new BigDecimal("0.00"); |
| | | BigDecimal orderPayMoney = new BigDecimal("0.00"); |
| | | for(AppBuyGoodsDto appBuyGoodsDto : appBuyGoodsDtoList){ |
| | | for (AppBuyGoodsDto appBuyGoodsDto : appBuyGoodsDtoList) { |
| | | appSureOrderGoodsVo = new AppSureOrderGoodsVo(); |
| | | 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()); |
| | | if(shopGoods!=null){ |
| | | AppShopGoodsGetDto appShopGoodsGetDto = new AppShopGoodsGetDto(); |
| | | appShopGoodsGetDto.setGoodsId(goods.getGoodsId()); |
| | | appShopGoodsGetDto.setShopId(appSureOrderDto.getShopId()); |
| | | ShopGoods shopGoods = remoteGoodsService.getShopGoods(appShopGoodsGetDto).getData(); |
| | | if (shopGoods != null) { |
| | | goodsPrice = shopGoods.getSalesPrice(); |
| | | } |
| | | appSureOrderGoodsVo.setGoodsPrice(goodsPrice); |
| | | 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(goodsTotalPrice.compareTo(moneyThreshold)>=0){ |
| | | discountMoney = appUserCouponVo.getDiscountMoney(); |
| | | 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 = appMemberCouponVo.getDiscountMoney(); |
| | | goodsRealPrice = goodsTotalPrice.subtract(discountMoney); |
| | | useCoupon = 1; |
| | | } |
| | | }else if(couponType == 2 && appUserCouponVo.getDiscountPercent()!=null){ |
| | | discountPercent = appUserCouponVo.getDiscountPercent(); |
| | | goodsRealPrice = goodsTotalPrice.multiply(discountPercent).divide(BigDecimal.TEN).setScale(2,BigDecimal.ROUND_HALF_UP); |
| | | } 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; |
| | | } |
| | |
| | | appSureOrderGoodsVo.setCouponDiscount(discountMoney); |
| | | appSureOrderGoodsVo.setGoodsRealPrice(goodsRealPrice); |
| | | goodsDeposit = goods.getSubscription(); |
| | | if(goodsDeposit == null){ |
| | | if (goodsDeposit == null) { |
| | | goodsDeposit = new BigDecimal("0.00"); |
| | | } |
| | | appSureOrderGoodsVo.setGoodsDeposit(goodsDeposit); |
| | |
| | | orderPayDeposit = orderPayDeposit.add(goodsDeposit); |
| | | orderPayMoney = orderPayMoney.add(goodsRealPrice); |
| | | //商品关联优惠券 |
| | | appGoodsUserCouponVoList = new ArrayList<>(); |
| | | if(appUserCouponVoList!=null && !appUserCouponVoList.isEmpty()){ |
| | | for(AppUserCouponVo entity : appUserCouponVoList){ |
| | | if(StringUtils.isBlank(entity.getRelGoodsIds())){ |
| | | appGoodsUserCouponVoList.add(entity); |
| | | }else if(entity.getRelGoodsIds().contains(goodsId)){ |
| | | appGoodsUserCouponVoList.add(entity); |
| | | appGoodsMemberCouponVoList = new ArrayList<>(); |
| | | if (appMemberCouponVoList != null && !appMemberCouponVoList.isEmpty()) { |
| | | for (AppMemberCouponVo entity : appMemberCouponVoList) { |
| | | if (StringUtils.isBlank(entity.getRelGoodsIds())) { |
| | | appGoodsMemberCouponVoList.add(entity); |
| | | } else if (entity.getRelGoodsIds().contains(goodsId)) { |
| | | appGoodsMemberCouponVoList.add(entity); |
| | | } |
| | | } |
| | | appSureOrderGoodsVo.setAppUserCouponVoList(appGoodsUserCouponVoList); |
| | | appSureOrderGoodsVo.setAppMemberCouponVoList(appGoodsMemberCouponVoList); |
| | | } |
| | | appSureOrderGoodsVoList.add(appSureOrderGoodsVo); |
| | | } |
| | |
| | | |
| | | /** |
| | | * 创建订单 |
| | | * |
| | | * @param appPlaceOrderDto |
| | | * @return |
| | | */ |
| | | @Override |
| | | public AppPlaceOrderVo placeOrder(AppPlaceOrderDto appPlaceOrderDto){ |
| | | public AppPlaceOrderVo placeOrder(AppPlaceOrderDto appPlaceOrderDto) { |
| | | Long userId = appPlaceOrderDto.getUserId(); |
| | | AppPlaceOrderVo appPlaceOrderVo = new AppPlaceOrderVo(); |
| | | List<AppSureOrderGoodsVo> appSureOrderGoodsVoList = new ArrayList<>(); |
| | |
| | | BigDecimal buyNumBig; |
| | | Integer serviceNum; |
| | | Integer goodsNum = 0; |
| | | Long userCouponId; |
| | | String 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<String, AppMemberCouponVo> appMemberCouponVoMap = appMemberCouponVoList.stream().collect(Collectors.toMap(AppMemberCouponVo::getMemberCouponId, Function.identity())); |
| | | AppMemberCouponVo appMemberCouponVo; |
| | | Integer couponType; |
| | | BigDecimal moneyThreshold; |
| | | BigDecimal discountMoney = new BigDecimal("0.00"); |
| | |
| | | String orderNo = CodeFactoryUtil.getShopOrderNo(); |
| | | OrderGoods orderGoods; |
| | | String orderGoodsId; |
| | | for(AppBuyGoodsDto appBuyGoodsDto : appBuyGoodsDtoList){ |
| | | 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()); |
| | | if(shopGoods!=null){ |
| | | 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(); |
| | | } |
| | |
| | | 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(goodsTotalPrice.compareTo(moneyThreshold)>=0){ |
| | | discountMoney = appUserCouponVo.getDiscountMoney(); |
| | | 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 = appMemberCouponVo.getDiscountMoney(); |
| | | goodsRealPrice = goodsTotalPrice.subtract(discountMoney); |
| | | useCoupon = 1; |
| | | } |
| | | }else if(couponType == 2 && appUserCouponVo.getDiscountPercent()!=null){ |
| | | discountPercent = appUserCouponVo.getDiscountPercent(); |
| | | goodsRealPrice = goodsTotalPrice.multiply(discountPercent).divide(BigDecimal.TEN).setScale(2,BigDecimal.ROUND_HALF_UP); |
| | | } 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; |
| | | } |
| | |
| | | appSureOrderGoodsVo.setCouponDiscount(discountMoney); |
| | | appSureOrderGoodsVo.setGoodsRealPrice(goodsRealPrice); |
| | | goodsDeposit = goods.getSubscription(); |
| | | if(goodsDeposit == null){ |
| | | if (goodsDeposit == null) { |
| | | goodsDeposit = new BigDecimal("0.00"); |
| | | } |
| | | appSureOrderGoodsVo.setGoodsDeposit(goodsDeposit); |
| | |
| | | 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); |
| | |
| | | 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()); |
| | |
| | | order.setCouponMoney(couponDiscount); |
| | | order.setDiscountMoney(couponDiscount); |
| | | order.setReceivableMoney(orderPayMoney); |
| | | order.setReceivableDeposit(orderPayDeposit); |
| | | order.setPayType(appPlaceOrderDto.getPayType()); |
| | | if(order.getPayType()==1){ |
| | | 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){ |
| | | } 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; |
| | | } |
| | | |
| | | /** |
| | | * 分页获取用户订单 |
| | | * |
| | | * @param page |
| | | * @param appUserOrderPageDto |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<AppUserOrderPageVo> pageUserOrder(Page page, AppUserOrderPageDto appUserOrderPageDto){ |
| | | List<AppUserOrderPageVo> appUserOrderPageVoList = orderMapper.pageUserOrder(page,appUserOrderPageDto); |
| | | if(appUserOrderPageVoList!=null&&!appUserOrderPageVoList.isEmpty()){ |
| | | public List<AppUserOrderPageVo> pageUserOrder(Page page, AppUserOrderPageDto appUserOrderPageDto) { |
| | | List<AppUserOrderPageVo> appUserOrderPageVoList = orderMapper.pageUserOrder(page, appUserOrderPageDto); |
| | | if (appUserOrderPageVoList != null && !appUserOrderPageVoList.isEmpty()) { |
| | | Long shopId; |
| | | Shop shop; |
| | | HashSet<Long> set=new HashSet<Long>(); |
| | | for(AppUserOrderPageVo appUserOrderPageVo : appUserOrderPageVoList){ |
| | | HashSet<Long> set = new HashSet<Long>(); |
| | | for (AppUserOrderPageVo appUserOrderPageVo : appUserOrderPageVoList) { |
| | | shopId = appUserOrderPageVo.getShopId(); |
| | | set.add(shopId); |
| | | } |
| | |
| | | Shop shopTemp = remoteShopService.getShop(shopIdLong).getData(); |
| | | shopMap.put(shopIdLong, shopTemp); |
| | | }); |
| | | for(AppUserOrderPageVo appUserOrderPageVo : appUserOrderPageVoList){ |
| | | for (AppUserOrderPageVo appUserOrderPageVo : appUserOrderPageVoList) { |
| | | shop = shopMap.get(appUserOrderPageVo.getShopId()); |
| | | appUserOrderPageVo.setShopName(shop.getShopName()); |
| | | appUserOrderPageVo.setShopServicePhone(shop.getShopServicePhone()); |
| | | if(appUserOrderPageVo.getShopId().equals(appUserOrderPageDto.getShopId())){ |
| | | if (appUserOrderPageVo.getShopId().equals(appUserOrderPageDto.getShopId())) { |
| | | appUserOrderPageVo.setSameShop(1); |
| | | }else{ |
| | | } else { |
| | | appUserOrderPageVo.setSameShop(0); |
| | | } |
| | | appUserOrderPageVo.setVerifyCode("1-" + appUserOrderPageVo.getOrderId()); |
| | | } |
| | | } |
| | | return appUserOrderPageVoList; |
| | |
| | | |
| | | |
| | | /** |
| | | * |
| | | * @param appBaseGetDto |
| | | * @return |
| | | */ |
| | | @Override |
| | | public AppUserOrderGetVo getAppOrderDetail(AppBaseGetDto appBaseGetDto){ |
| | | public AppUserOrderGetVo getAppOrderDetail(AppBaseGetDto appBaseGetDto) { |
| | | String orderId = appBaseGetDto.getId(); |
| | | Order order = this.getById(orderId); |
| | | List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listVoByOrderId(orderId); |
| | | List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listAppVoByOrderId(orderId); |
| | | AppUserOrderGetVo appUserOrderGetVo = new AppUserOrderGetVo(); |
| | | appUserOrderGetVo.setOrderId(orderId); |
| | | appUserOrderGetVo.setOrderNo(order.getOrderNo()); |
| | |
| | | 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; |
| | | } |
| | | |
| | | /** |
| | | * 取消订单 |
| | | * |
| | | * @param orderId |
| | | */ |
| | | @Override |
| | | public void cancelOrder(String orderId){ |
| | | public void cancelOrder(String orderId) { |
| | | Order order = this.getById(orderId); |
| | | if(order.getOrderStatus()!=1){ |
| | | if (order.getOrderStatus() != 1) { |
| | | throw new ServiceException(AppErrorConstant.CANCEL_ERROR_ORDER); |
| | | } |
| | | order.setOrderStatus(0); |
| | |
| | | |
| | | /** |
| | | * 获取用户订单统计 |
| | | * |
| | | * @param userId |
| | | * @return |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 获取B端首页统计 |
| | | * |
| | | * @param merHomeShopTotalVo |
| | | * @return |
| | | */ |
| | | @Override |
| | | public MerHomeShopTotalVo getMerHomeTotal(MerHomeShopTotalVo merHomeShopTotalVo){ |
| | | public MerHomeShopTotalVo getMerHomeTotal(MerHomeShopTotalVo merHomeShopTotalVo) { |
| | | Long shopId = merHomeShopTotalVo.getShopId(); |
| | | Integer todayShop = 0; |
| | | Integer unHandleOrder = 0; |
| | | BigDecimal shopTurnover = new BigDecimal("0.00"); |
| | | Integer cycleSurp = 0; |
| | | Integer explorationSurp = 0; |
| | | Integer todayShop = userServiceRecordService.countShopServicePerson(shopId); |
| | | merHomeShopTotalVo.setTodayShop(todayShop); |
| | | merHomeShopTotalVo.setUnHandleOrder(unHandleOrder); |
| | | merHomeShopTotalVo.setShopTurnover(shopTurnover); |
| | | merHomeShopTotalVo.setCycleSurp(cycleSurp); |
| | | merHomeShopTotalVo.setExplorationSurp(explorationSurp); |
| | | merHomeShopTotalVo = orderMapper.getMerHomeShopTotalVo(shopId); |
| | | return merHomeShopTotalVo; |
| | | } |
| | | |
| | | /** |
| | | * 核销订单 |
| | | * |
| | | * @param orderId |
| | | * @return |
| | | */ |
| | | @Override |
| | | public MerVerifyOrderVo verifyOrder(String orderId){ |
| | | public MerVerifyOrderVo verifyOrder(String orderId) { |
| | | MerVerifyOrderVo merVerifyOrderVo = new MerVerifyOrderVo(); |
| | | Order order = this.getById(orderId); |
| | | List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listVoByOrderId(orderId); |
| | | List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listAppVoByOrderId(orderId); |
| | | merVerifyOrderVo.setOrderId(orderId); |
| | | merVerifyOrderVo.setOrderNo(order.getOrderNo()); |
| | | merVerifyOrderVo.setOrderStatus(order.getOrderStatus()); |
| | |
| | | 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()); |
| | |
| | | |
| | | /** |
| | | * 确认核销订单 |
| | | * |
| | | * @param merVerifyOrderDto |
| | | * @return |
| | | */ |
| | | @Override |
| | | public MerVerifyOrderVo sureVerifyOrder(MerVerifyOrderDto merVerifyOrderDto){ |
| | | 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.setOffPayTime(nowTime); |
| | | order.setPayMoney(relReceiveMoney.add(relPayMoney)); |
| | | order.setCloseFlag(1); |
| | | this.saveOrUpdate(order); |
| | | //创建服务商品 |
| | | List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listVoByOrderId(orderId); |
| | | List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listAppVoByOrderId(orderId); |
| | | ConsumerGoods consumerGoods; |
| | | String consumerGoodsId; |
| | | for(AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList){ |
| | | Goods goods; |
| | | for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) { |
| | | consumerGoods = new ConsumerGoods(); |
| | | goods = remoteGoodsService.getGoods(appUserOrderGoodsPageVo.getGoodsId()).getData(); |
| | | consumerGoodsId = IdUtils.simpleUUID(); |
| | | consumerGoods.setConsumerGoodsId(consumerGoodsId); |
| | | consumerGoods.setDelFlag(0); |
| | |
| | | consumerGoods.setGoodsName(appUserOrderGoodsPageVo.getGoodsName()); |
| | | consumerGoods.setCycleNumFlag(appUserOrderGoodsPageVo.getCycleNumFlag()); |
| | | consumerGoods.setServiceNum(appUserOrderGoodsPageVo.getServiceNum()); |
| | | consumerGoods.setUsedNum(0); |
| | | consumerGoods.setGoodsType(appUserOrderGoodsPageVo.getGoodsType()); |
| | | consumerGoods.setCreateTime(nowTime); |
| | | consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction()); |
| | | consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture()); |
| | | consumerGoods.setGoodsNurses(goods.getGoodsNurses()); |
| | | consumerGoodsService.save(consumerGoods); |
| | | } |
| | | //生成返回 |
| | |
| | | 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()); |
| | |
| | | |
| | | /** |
| | | * 收银未结清订单列表 |
| | | * |
| | | * @param page |
| | | * @param merMemberNoClearOrderDto |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<MerMemberNoClearOrderVo> pageMerMemberNoClearOrder(Page page, MerMemberNoClearOrderDto merMemberNoClearOrderDto){ |
| | | List<MerMemberNoClearOrderVo> merMemberNoClearOrderVoList = orderMapper.pageMerMemberNoClearOrder(page,merMemberNoClearOrderDto.getMemberUserId()); |
| | | if(merMemberNoClearOrderVoList!=null&&!merMemberNoClearOrderVoList.isEmpty()){ |
| | | for(MerMemberNoClearOrderVo merMemberNoClearOrderVo : merMemberNoClearOrderVoList){ |
| | | 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; |
| | |
| | | |
| | | /** |
| | | * 结清订单 |
| | | * |
| | | * @param merCloseOrderDto |
| | | */ |
| | | @Override |
| | | public void merCloseOrder(MerCloseOrderDto merCloseOrderDto){ |
| | | public void merCloseOrder(MerCloseOrderDto merCloseOrderDto) { |
| | | Order order = this.getById(merCloseOrderDto.getOrderId()); |
| | | order.setOfflinePayMoney(merCloseOrderDto.getPayMoney()); |
| | | order.setOffPayTime(new Date()); |
| | | order.setPayMoney(order.getPayMoney().add(merCloseOrderDto.getPayMoney())); |
| | | order.setCloseFlag(1); |
| | | this.saveOrUpdate(order); |
| | |
| | | |
| | | /** |
| | | * 创建新订单 |
| | | * |
| | | * @param merNewOrderDto |
| | | */ |
| | | @Override |
| | | public void createNewOrder(MerNewOrderDto merNewOrderDto){ |
| | | public void createNewOrder(MerNewOrderDto merNewOrderDto) { |
| | | Long userId = merNewOrderDto.getBuyUserId(); |
| | | //创建订单 |
| | | Date nowTime = new Date(); |
| | | //如果非指定用户判断是否需要通过手机号创建新用户 |
| | | 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; |
| | | String 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<String, 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"); |
| | |
| | | String orderNo = CodeFactoryUtil.getShopOrderNo(); |
| | | OrderGoods orderGoods; |
| | | String orderGoodsId; |
| | | for(AppBuyGoodsDto appBuyGoodsDto : appBuyGoodsDtoList){ |
| | | 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()); |
| | | if(shopGoods!=null){ |
| | | 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(); |
| | | } |
| | | 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(goodsTotalPrice.compareTo(moneyThreshold)>=0){ |
| | | discountMoney = appUserCouponVo.getDiscountMoney(); |
| | | //优惠券计算 |
| | | 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 = appMemberCouponVo.getDiscountMoney(); |
| | | goodsRealPrice = goodsTotalPrice.subtract(discountMoney); |
| | | } |
| | | }else if(couponType == 2 && appUserCouponVo.getDiscountPercent()!=null){ |
| | | discountPercent = appUserCouponVo.getDiscountPercent(); |
| | | goodsRealPrice = goodsTotalPrice.multiply(discountPercent).divide(BigDecimal.TEN).setScale(2,BigDecimal.ROUND_HALF_UP); |
| | | } 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); |
| | | } |
| | | } |
| | | } |
| | | |
| | | goodsDeposit = goods.getSubscription(); |
| | | if(goodsDeposit == null){ |
| | | if (goodsDeposit == null) { |
| | | goodsDeposit = new BigDecimal("0.00"); |
| | | } |
| | | goodsNum = goodsNum + buyNum; |
| | |
| | | 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); |
| | |
| | | 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(1); |
| | | order.setShopId(merNewOrderDto.getShopId()); |
| | | order.setOrderFrom(3); |
| | | 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){ |
| | | if (order.getPayType() == 1) { |
| | | order.setPayMoney(orderPayMoney); |
| | | order.setOnlinePayMoney(orderPayMoney); |
| | | order.setCloseFlag(1); |
| | | }else if(order.getPayType()==2){ |
| | | } else if (order.getPayType() == 2) { |
| | | order.setPayMoney(orderPayDeposit); |
| | | order.setOnlinePayMoney(orderPayDeposit); |
| | | order.setCloseFlag(0); |
| | | } |
| | | order.setOrderRemark(merNewOrderDto.getOrderRemark()); |
| | | order.setGoodsNum(goodsNum); |
| | | order.setCreateTime(new Date()); |
| | | order.setPayTime(new Date()); |
| | | order.setUseTime(new Date()); |
| | | order.setCreateTime(nowTime); |
| | | order.setPayTime(nowTime); |
| | | order.setUseTime(nowTime); |
| | | order.setUseUserId(merNewOrderDto.getUserId()); |
| | | order.setPayMoney(merNewOrderDto.getPayMoney()); |
| | | order.setOnlinePayMoney(new BigDecimal("0.00")); |
| | | order.setOfflinePayMoney(merNewOrderDto.getPayMoney()); |
| | | order.setOffPayTime(nowTime); |
| | | order.setCloseFlag(1); |
| | | this.save(order); |
| | | //创建服务 |
| | | List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listVoByOrderId(orderId); |
| | | List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listAppVoByOrderId(orderId); |
| | | ConsumerGoods consumerGoods; |
| | | String consumerGoodsId; |
| | | for(AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList){ |
| | | for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) { |
| | | consumerGoods = new ConsumerGoods(); |
| | | goods = remoteGoodsService.getGoods(appUserOrderGoodsPageVo.getGoodsId()).getData(); |
| | | consumerGoodsId = IdUtils.simpleUUID(); |
| | | consumerGoods.setConsumerGoodsId(consumerGoodsId); |
| | | consumerGoods.setDelFlag(0); |
| | |
| | | consumerGoods.setGoodsName(appUserOrderGoodsPageVo.getGoodsName()); |
| | | consumerGoods.setCycleNumFlag(appUserOrderGoodsPageVo.getCycleNumFlag()); |
| | | consumerGoods.setServiceNum(appUserOrderGoodsPageVo.getServiceNum()); |
| | | consumerGoods.setUsedNum(0); |
| | | consumerGoods.setGoodsType(appUserOrderGoodsPageVo.getGoodsType()); |
| | | consumerGoods.setCreateTime(new Date()); |
| | | consumerGoods.setCreateTime(nowTime); |
| | | consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction()); |
| | | consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture()); |
| | | consumerGoods.setGoodsNurses(goods.getGoodsNurses()); |
| | | consumerGoodsService.save(consumerGoods); |
| | | } |
| | | Member member = remoteMemberService.getMember(userId).getData(); |
| | | if (member != null && member.getBindingFlag() != 1) { |
| | | //绑定商户 |
| | | AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto(); |
| | | appMemberBindingDto.setShopId(shopId); |
| | | appMemberBindingDto.setShopName(shop.getShopName()); |
| | | appMemberBindingDto.setUserId(userId); |
| | | appMemberBindingDto.setBindingFlag(1); |
| | | remoteMemberService.updateMemberBinding(appMemberBindingDto); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * @param merOrderPageDto |
| | | * @return |
| | | */ |
| | | @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; |
| | | } |
| | | |
| | | /** |
| | | * 获取用户订单统计 |
| | | * |
| | | * @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) { |
| | | // 通过orderMapper获取MgtMemberOrderPageVoList |
| | | List<MgtMemberOrderPageVo> mgtMemberOrderPageVoList = orderMapper.pageMgtMemberOrder(page, mgtMemberOrderPageDto); |
| | | // 如果MgtMemberOrderPageVoList不为空 |
| | | if (mgtMemberOrderPageVoList != null && !mgtMemberOrderPageVoList.isEmpty()) { |
| | | Long shopId; |
| | | HashSet<String> set = new HashSet<>(); |
| | | // 遍历MgtMemberOrderPageVoList,获取shopId并添加到set中 |
| | | for (MgtMemberOrderPageVo mgtMemberOrderPageVo : mgtMemberOrderPageVoList) { |
| | | shopId = mgtMemberOrderPageVo.getShopId(); |
| | | set.add(shopId.toString()); |
| | | } |
| | | // 将set中的shopId转换为逗号分隔的字符串 |
| | | String joinedString = String.join(",", set); |
| | | // 通过remoteShopService获取MgtSimpleShopVoList |
| | | MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto(); |
| | | mgtBaseBathDto.setIds(joinedString); |
| | | List<MgtSimpleShopVo> simpleShopVoList = remoteShopService.listShopSimpleVoByIds(mgtBaseBathDto).getData(); |
| | | // 将MgtSimpleShopVoList转换为Map<Long, MgtSimpleShopVo>,以便后续根据shopId获取对应的MgtSimpleShopVo |
| | | Map<Long, MgtSimpleShopVo> map = simpleShopVoList.stream() |
| | | .collect(Collectors.toMap(MgtSimpleShopVo::getShopId, Function.identity())); |
| | | // 遍历MgtMemberOrderPageVoList,根据shopId获取对应的MgtSimpleShopVo并将其shopName设置到MgtMemberOrderPageVo中 |
| | | for (MgtMemberOrderPageVo mgtMemberOrderPageVo : mgtMemberOrderPageVoList) { |
| | | shopId = mgtMemberOrderPageVo.getShopId(); |
| | | mgtMemberOrderPageVo.setShopName(map.get(shopId).getShopName()); |
| | | } |
| | | } |
| | | // 返回MgtMemberOrderPageVoList |
| | | return mgtMemberOrderPageVoList; |
| | | } |
| | | |
| | | /** |
| | | * @param page |
| | | * @param mgtShopOrderPageDto |
| | | * @return List<MgtActivityOrderPageVo> |
| | | * @description 分页获取活动订单列表 |
| | | * @author jqs |
| | | * @date 2023/6/16 10:43 |
| | | */ |
| | | @Override |
| | | public List<MgtActivityOrderPageVo> pageMgtActivityOrder(Page page, MgtShopOrderPageDto mgtShopOrderPageDto) { |
| | | //如果区域代码不为null获取对应的商户id |
| | | if(StringUtils.isNotBlank(mgtShopOrderPageDto.getKeyword())||StringUtils.isNotBlank(mgtShopOrderPageDto.getShopProvinceCode())||StringUtils.isNotBlank(mgtShopOrderPageDto.getShopCityCode())||StringUtils.isNotBlank(mgtShopOrderPageDto.getShopAreaCode())){ |
| | | MgtShopIdByCodeDto mgtShopIdByCodeDto = new MgtShopIdByCodeDto(); |
| | | mgtShopIdByCodeDto.setShopProvinceCode(mgtShopOrderPageDto.getShopProvinceCode()); |
| | | mgtShopIdByCodeDto.setShopCityCode(mgtShopOrderPageDto.getShopCityCode()); |
| | | mgtShopIdByCodeDto.setShopAreaCode(mgtShopOrderPageDto.getShopAreaCode()); |
| | | MgtShopIdByCodeVo mgtShopIdByCodeVo = remoteShopService.getShopIdByCode(mgtShopIdByCodeDto).getData(); |
| | | if(StringUtils.isNotBlank(mgtShopIdByCodeVo.getShopIds())){ |
| | | mgtShopOrderPageDto.setShopIds(mgtShopIdByCodeVo.getShopIds()); |
| | | } |
| | | } |
| | | //如果关键词不为null获取对应的用户id |
| | | if(StringUtils.isNotBlank(mgtShopOrderPageDto.getKeyword())){ |
| | | MgtUserIdByKeywordDto mgtUserIdByKeywordDto = new MgtUserIdByKeywordDto(); |
| | | mgtUserIdByKeywordDto.setKeyword(mgtShopOrderPageDto.getKeyword()); |
| | | MgtUserIdByKeywordVo mgtUserIdByKeywordVo= remoteMemberService.getUserIdByKeyword(mgtUserIdByKeywordDto).getData(); |
| | | if(StringUtils.isNotBlank(mgtUserIdByKeywordVo.getUserIds())){ |
| | | mgtShopOrderPageDto.setUserIds(mgtUserIdByKeywordVo.getUserIds()); |
| | | } |
| | | } |
| | | // 从数据库中获取活动订单列表 |
| | | List<MgtActivityOrderPageVo> activityOrderPageVoList = orderMapper.pageMgtActivityOrder(page, mgtShopOrderPageDto); |
| | | // 如果列表不为空 |
| | | if (!activityOrderPageVoList.isEmpty()) { |
| | | // 定义变量 |
| | | HashSet<Long> shopIdSet = new HashSet<>(); |
| | | HashSet<Long> userIdSet = new HashSet<>(); |
| | | BigDecimal zeroBig = new BigDecimal("0.00"); |
| | | // 遍历列表,获取店铺 ID 和用户 ID |
| | | for (MgtActivityOrderPageVo mgtActivityOrderPageVo : activityOrderPageVoList) { |
| | | shopIdSet.add(mgtActivityOrderPageVo.getShopId()); |
| | | userIdSet.add(mgtActivityOrderPageVo.getUserId()); |
| | | } |
| | | // 将店铺 ID 和用户 ID 转换为逗号分隔的字符串 |
| | | String shopJoinedString = String.join(",", shopIdSet.stream().map(Object::toString).collect(Collectors.toList())); |
| | | String userJoinedString = String.join(",", userIdSet.stream().map(Object::toString).collect(Collectors.toList())); |
| | | // 从远程服务获取店铺和用户信息 |
| | | MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto(); |
| | | mgtBaseBathDto.setIds(shopJoinedString); |
| | | List<MgtSimpleShopVo> simpleShopVoList = remoteShopService.listShopSimpleVoByIds(mgtBaseBathDto).getData(); |
| | | Map<Long, MgtSimpleShopVo> shopMap = simpleShopVoList.stream() |
| | | .collect(Collectors.toMap(MgtSimpleShopVo::getShopId, Function.identity())); |
| | | mgtBaseBathDto = new MgtBaseBathDto(); |
| | | mgtBaseBathDto.setIds(userJoinedString); |
| | | List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(mgtBaseBathDto).getData(); |
| | | Map<Long, MgtSimpleMemberVo> userMap = simpleMemberVoList.stream() |
| | | .collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity())); |
| | | // 遍历列表,设置店铺名称、用户名称和未支付金额 |
| | | for (MgtActivityOrderPageVo mgtActivityOrderPageVo : activityOrderPageVoList) { |
| | | mgtActivityOrderPageVo.setShopName(shopMap.get(mgtActivityOrderPageVo.getShopId()).getShopName()); |
| | | if(userMap.get(mgtActivityOrderPageVo.getUserId())!=null){ |
| | | mgtActivityOrderPageVo.setUserName(userMap.get(mgtActivityOrderPageVo.getUserId()).getNickName()); |
| | | } |
| | | BigDecimal unPaidMoney = mgtActivityOrderPageVo.getReceivableMoney().subtract(mgtActivityOrderPageVo.getPayMoney()); |
| | | mgtActivityOrderPageVo.setUnPaidMoney(unPaidMoney == null ? zeroBig : unPaidMoney); |
| | | } |
| | | } |
| | | // 返回处理后的活动订单列表 |
| | | return activityOrderPageVoList; |
| | | } |
| | | |
| | | /** |
| | | * @description 获取订单统计 |
| | | * @author jqs |
| | | * @date 2023/6/16 12:51 |
| | | * @param mgtShopOrderPageDto |
| | | * @return MgtMemberOrderTotalVo |
| | | */ |
| | | @Override |
| | | public MgtOrderTotal getMgtOrderTotal(MgtShopOrderPageDto mgtShopOrderPageDto){ |
| | | //如果区域代码不为null获取对应的商户id |
| | | if(StringUtils.isNotBlank(mgtShopOrderPageDto.getKeyword())||StringUtils.isNotBlank(mgtShopOrderPageDto.getShopProvinceCode())||StringUtils.isNotBlank(mgtShopOrderPageDto.getShopCityCode())||StringUtils.isNotBlank(mgtShopOrderPageDto.getShopAreaCode())){ |
| | | MgtShopIdByCodeDto mgtShopIdByCodeDto = new MgtShopIdByCodeDto(); |
| | | mgtShopIdByCodeDto.setShopProvinceCode(mgtShopOrderPageDto.getShopProvinceCode()); |
| | | mgtShopIdByCodeDto.setShopCityCode(mgtShopOrderPageDto.getShopCityCode()); |
| | | mgtShopIdByCodeDto.setShopAreaCode(mgtShopOrderPageDto.getShopAreaCode()); |
| | | MgtShopIdByCodeVo mgtShopIdByCodeVo = remoteShopService.getShopIdByCode(mgtShopIdByCodeDto).getData(); |
| | | if(StringUtils.isNotBlank(mgtShopIdByCodeVo.getShopIds())){ |
| | | mgtShopOrderPageDto.setShopIds(mgtShopIdByCodeVo.getShopIds()); |
| | | } |
| | | } |
| | | //如果关键词不为null获取对应的用户id |
| | | if(StringUtils.isNotBlank(mgtShopOrderPageDto.getKeyword())){ |
| | | MgtUserIdByKeywordDto mgtUserIdByKeywordDto = new MgtUserIdByKeywordDto(); |
| | | mgtUserIdByKeywordDto.setKeyword(mgtShopOrderPageDto.getKeyword()); |
| | | MgtUserIdByKeywordVo mgtUserIdByKeywordVo= remoteMemberService.getUserIdByKeyword(mgtUserIdByKeywordDto).getData(); |
| | | if(StringUtils.isNotBlank(mgtUserIdByKeywordVo.getUserIds())){ |
| | | mgtShopOrderPageDto.setUserIds(mgtUserIdByKeywordVo.getUserIds()); |
| | | } |
| | | } |
| | | MgtOrderTotal mgtOrderTotal = new MgtOrderTotal(); |
| | | MgtOrderTotal mgtOrderTotalFirst = orderMapper.totalOrderFirst(); |
| | | MgtOrderTotal mgtOrderTotalSecond = orderMapper.totalOrderSecond(mgtShopOrderPageDto); |
| | | MgtOrderTotal mgtOrderTotalThird = orderMapper.totalOrderThird(mgtShopOrderPageDto); |
| | | mgtOrderTotal.setOrderTotal(mgtOrderTotalFirst.getOrderTotal()); |
| | | mgtOrderTotal.setOrderMoneyTotal(mgtOrderTotalFirst.getOrderMoneyTotal()); |
| | | mgtOrderTotal.setShopOrderTotal(mgtOrderTotalSecond.getShopOrderTotal()); |
| | | mgtOrderTotal.setShopOrderMoneyTotal(mgtOrderTotalSecond.getShopOrderMoneyTotal()); |
| | | mgtOrderTotal.setShopPayMoneyTotal(mgtOrderTotalSecond.getShopPayMoneyTotal()); |
| | | mgtOrderTotal.setShopUnPayMoneyTotal(mgtOrderTotalSecond.getShopOrderMoneyTotal().subtract(mgtOrderTotalSecond.getShopPayMoneyTotal())); |
| | | mgtOrderTotal.setActivityOrderTotal(mgtOrderTotalThird.getActivityOrderTotal()); |
| | | mgtOrderTotal.setActivityOrderMoneyTotal(mgtOrderTotalThird.getActivityOrderMoneyTotal()); |
| | | mgtOrderTotal.setActivityPayMoneyTotal(mgtOrderTotalThird.getActivityPayMoneyTotal()); |
| | | mgtOrderTotal.setActivityUnPayMoneyTotal(mgtOrderTotalThird.getActivityOrderMoneyTotal().subtract(mgtOrderTotalThird.getActivityPayMoneyTotal())); |
| | | return mgtOrderTotal; |
| | | } |
| | | |
| | | /** |
| | | * @description 分页获取门店订单列表 |
| | | * @author jqs |
| | | * @date 2023/6/16 14:57 |
| | | * @param page |
| | | * @param mgtShopOrderPageDto |
| | | * @return List<MgtShopOrderPageVo> |
| | | */ |
| | | @Override |
| | | public List<MgtShopOrderPageVo> pageMgtShopOrder(Page page, MgtShopOrderPageDto mgtShopOrderPageDto){ |
| | | //如果区域代码不为null获取对应的商户id |
| | | if(StringUtils.isNotBlank(mgtShopOrderPageDto.getKeyword())||StringUtils.isNotBlank(mgtShopOrderPageDto.getShopProvinceCode())||StringUtils.isNotBlank(mgtShopOrderPageDto.getShopCityCode())||StringUtils.isNotBlank(mgtShopOrderPageDto.getShopAreaCode())){ |
| | | MgtShopIdByCodeDto mgtShopIdByCodeDto = new MgtShopIdByCodeDto(); |
| | | mgtShopIdByCodeDto.setShopProvinceCode(mgtShopOrderPageDto.getShopProvinceCode()); |
| | | mgtShopIdByCodeDto.setShopCityCode(mgtShopOrderPageDto.getShopCityCode()); |
| | | mgtShopIdByCodeDto.setShopAreaCode(mgtShopOrderPageDto.getShopAreaCode()); |
| | | MgtShopIdByCodeVo mgtShopIdByCodeVo = remoteShopService.getShopIdByCode(mgtShopIdByCodeDto).getData(); |
| | | if(StringUtils.isNotBlank(mgtShopIdByCodeVo.getShopIds())){ |
| | | mgtShopOrderPageDto.setShopIds(mgtShopIdByCodeVo.getShopIds()); |
| | | } |
| | | } |
| | | //如果关键词不为null获取对应的用户id |
| | | if(StringUtils.isNotBlank(mgtShopOrderPageDto.getKeyword())){ |
| | | MgtUserIdByKeywordDto mgtUserIdByKeywordDto = new MgtUserIdByKeywordDto(); |
| | | mgtUserIdByKeywordDto.setKeyword(mgtShopOrderPageDto.getKeyword()); |
| | | MgtUserIdByKeywordVo mgtUserIdByKeywordVo= remoteMemberService.getUserIdByKeyword(mgtUserIdByKeywordDto).getData(); |
| | | if(StringUtils.isNotBlank(mgtUserIdByKeywordVo.getUserIds())){ |
| | | mgtShopOrderPageDto.setUserIds(mgtUserIdByKeywordVo.getUserIds()); |
| | | } |
| | | } |
| | | List<MgtShopOrderPageVo> shopOrderPageVoList = orderMapper.pageMgtShopOrder(page, mgtShopOrderPageDto); |
| | | // 如果列表不为空 |
| | | if (!shopOrderPageVoList.isEmpty()) { |
| | | // 定义变量 |
| | | HashSet<Long> shopIdSet = new HashSet<>(); |
| | | HashSet<Long> userIdSet = new HashSet<>(); |
| | | BigDecimal zeroBig = new BigDecimal("0.00"); |
| | | // 遍历列表,获取店铺 ID 和用户 ID |
| | | for (MgtShopOrderPageVo mgtShopOrderPageVo : shopOrderPageVoList) { |
| | | shopIdSet.add(mgtShopOrderPageVo.getShopId()); |
| | | userIdSet.add(mgtShopOrderPageVo.getUserId()); |
| | | } |
| | | // 从远程服务获取店铺和用户信息 |
| | | Map<Long, MgtSimpleShopVo> shopMap = null; |
| | | Map<Long, MgtSimpleMemberVo> userMap = null; |
| | | if(shopIdSet!=null&&!shopIdSet.isEmpty()){ |
| | | String shopJoinedString = String.join(",", shopIdSet.stream().map(Object::toString).collect(Collectors.toList())); |
| | | MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto(); |
| | | mgtBaseBathDto.setIds(shopJoinedString); |
| | | List<MgtSimpleShopVo> simpleShopVoList = remoteShopService.listShopSimpleVoByIds(mgtBaseBathDto).getData(); |
| | | shopMap = simpleShopVoList.stream() |
| | | .collect(Collectors.toMap(MgtSimpleShopVo::getShopId, Function.identity())); |
| | | } |
| | | if(userIdSet!=null&&!userIdSet.isEmpty()){ |
| | | String userJoinedString = String.join(",", userIdSet.stream().map(Object::toString).collect(Collectors.toList())); |
| | | MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto(); |
| | | mgtBaseBathDto.setIds(userJoinedString); |
| | | List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(mgtBaseBathDto).getData(); |
| | | userMap = simpleMemberVoList.stream() |
| | | .collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity())); |
| | | } |
| | | // 遍历列表,设置店铺名称、用户名称和未支付金额 |
| | | for (MgtShopOrderPageVo mgtShopOrderPageVo : shopOrderPageVoList) { |
| | | if(shopMap!=null&&!shopMap.isEmpty()){ |
| | | mgtShopOrderPageVo.setShopName(shopMap.get(mgtShopOrderPageVo.getShopId()).getShopName()); |
| | | } |
| | | if(userMap!=null&&!userMap.isEmpty()){ |
| | | if(userMap.get(mgtShopOrderPageVo.getUserId())!=null){ |
| | | mgtShopOrderPageVo.setUserName(userMap.get(mgtShopOrderPageVo.getUserId()).getNickName()); |
| | | } |
| | | } |
| | | BigDecimal unPaidMoney = mgtShopOrderPageVo.getReceivableMoney().subtract(mgtShopOrderPageVo.getPayMoney()); |
| | | mgtShopOrderPageVo.setUnPaidMoney(unPaidMoney == null ? zeroBig : unPaidMoney); |
| | | } |
| | | } |
| | | return shopOrderPageVoList; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * @description 获取订单详情 |
| | | * @author jqs |
| | | * @date 2023/6/16 16:49 |
| | | * @param orderId |
| | | * @return MgtOrderDetailVo |
| | | */ |
| | | @Override |
| | | public MgtOrderDetailVo getMgtOrderDetail(String orderId){ |
| | | // 创建MgtOrderDetailVo对象 |
| | | MgtOrderDetailVo mgtOrderDetailVo = new MgtOrderDetailVo(); |
| | | // 获取订单信息 |
| | | Order order = this.getById(orderId); |
| | | // 获取会员信息 |
| | | Member member = remoteMemberService.getMember(order.getUserId()).getData(); |
| | | // 获取商店信息 |
| | | Shop shop = remoteShopService.getShop(order.getShopId()).getData(); |
| | | // 获取订单商品详细信息 |
| | | List<MgtOrderGoodsDetailVo> orderGoodsDetailVoList = orderGoodsService.listMgtVoByOrderId(orderId); |
| | | // 设置MgtOrderDetailVo属性 |
| | | mgtOrderDetailVo.setOrderId(orderId); |
| | | mgtOrderDetailVo.setUserId(order.getUserId()); |
| | | mgtOrderDetailVo.setNickName(member.getNickName()); |
| | | mgtOrderDetailVo.setUserName(member.getRealName()); |
| | | mgtOrderDetailVo.setUserMobile(member.getMobile()); |
| | | mgtOrderDetailVo.setOrderGoodsDetailVoList(orderGoodsDetailVoList); |
| | | // 设置订单状态 |
| | | switch (order.getOrderStatus()) { |
| | | case 0: |
| | | mgtOrderDetailVo.setOrderStatus("已取消"); |
| | | break; |
| | | case 1: |
| | | mgtOrderDetailVo.setOrderStatus("待支付"); |
| | | break; |
| | | case 2: |
| | | mgtOrderDetailVo.setOrderStatus("待核销"); |
| | | break; |
| | | case 3: |
| | | mgtOrderDetailVo.setOrderStatus("已完成"); |
| | | break; |
| | | default: |
| | | mgtOrderDetailVo.setOrderStatus("删除"); |
| | | break; |
| | | } |
| | | // 设置订单编号 |
| | | mgtOrderDetailVo.setOrderNo(order.getOrderNo()); |
| | | // 设置订单来源 |
| | | switch (order.getOrderFrom()) { |
| | | case 1: |
| | | mgtOrderDetailVo.setOrderFrom("商城"); |
| | | break; |
| | | case 2: |
| | | mgtOrderDetailVo.setOrderFrom("秒杀活动"); |
| | | break; |
| | | case 3: |
| | | mgtOrderDetailVo.setOrderFrom("线下创建"); |
| | | break; |
| | | default: |
| | | mgtOrderDetailVo.setOrderStatus(""); |
| | | break; |
| | | } |
| | | // 设置订单支付相关属性 |
| | | mgtOrderDetailVo.setOrderMoney(order.getOrderMoney()); |
| | | mgtOrderDetailVo.setReceivableMoney(order.getReceivableMoney()); |
| | | mgtOrderDetailVo.setPayMoney(order.getPayMoney()); |
| | | mgtOrderDetailVo.setUnPaidMoney(order.getReceivableMoney().subtract(order.getPayMoney())); |
| | | mgtOrderDetailVo.setActivityName(order.getActivityName()); |
| | | mgtOrderDetailVo.setCreateTime(order.getCreateTime()); |
| | | mgtOrderDetailVo.setOnlinePayMoney(order.getOnlinePayMoney()); |
| | | mgtOrderDetailVo.setOfflinePayMoney(order.getOfflinePayMoney()); |
| | | mgtOrderDetailVo.setPayTime(order.getPayTime()); |
| | | mgtOrderDetailVo.setOffPayTime(order.getOffPayTime()); |
| | | mgtOrderDetailVo.setCompleteTime(order.getUseTime()); |
| | | mgtOrderDetailVo.setCancelTime(order.getCancelTime()); |
| | | mgtOrderDetailVo.setOrderRemark(order.getOrderRemark()); |
| | | mgtOrderDetailVo.setShopId(order.getShopId()); |
| | | mgtOrderDetailVo.setShopName(shop.getShopName()); |
| | | mgtOrderDetailVo.setVerifyTime(order.getUseTime()); |
| | | return mgtOrderDetailVo; |
| | | } |
| | | |
| | | /** |
| | | * @description boardOrderTotal |
| | | * @param |
| | | * @return MgtBulletinBoardVo |
| | | * @author jqs34 |
| | | * @date 2023/6/18 17:20 |
| | | */ |
| | | @Override |
| | | public MgtBulletinBoardVo boardOrderTotal(){ |
| | | MgtBulletinBoardVo mgtBulletinBoardVo = orderMapper.boardOrderTotal(); |
| | | return mgtBulletinBoardVo; |
| | | } |
| | | |
| | | /** |
| | | * @description getTotalOrderTotal |
| | | * @param mgtBaseShopDto |
| | | * @return MgtTotalOrderTotalVo |
| | | * @author jqs34 |
| | | * @date 2023/6/19 22:23 |
| | | */ |
| | | @Override |
| | | public MgtTotalOrderTotalVo getTotalOrderTotal(MgtBaseShopDto mgtBaseShopDto){ |
| | | MgtTotalOrderTotalVo mgtTotalOrderTotalVo = orderMapper.getTotalOrderTotalOrderFrom(mgtBaseShopDto); |
| | | //MgtTotalOrderTotalVo mgtTotalOrderTotalVoGoodsType = orderMapper.getTotalOrderTotalGoodsType(mgtBaseShopDto); |
| | | List<MgtMapTotalPlusVo> mgtMapTotalVos = orderMapper.listTotalOrderTotal(mgtBaseShopDto); |
| | | if (mgtMapTotalVos != null && mgtMapTotalVos.size() > 0) { |
| | | String[] orderTotalKey = new String[mgtMapTotalVos.size()]; |
| | | Integer[] orderTotalValue = new Integer[mgtMapTotalVos.size()]; |
| | | BigDecimal[] orderMoneyValue = new BigDecimal[mgtMapTotalVos.size()]; |
| | | for (int i = 0; i < mgtMapTotalVos.size(); i++) { |
| | | orderTotalKey[i] = mgtMapTotalVos.get(i).getMapKey(); |
| | | orderTotalValue[i] = mgtMapTotalVos.get(i).getMapValueFirst(); |
| | | orderMoneyValue[i] = mgtMapTotalVos.get(i).getMapValueSecond(); |
| | | } |
| | | mgtTotalOrderTotalVo.setOrderTotalKey(orderTotalKey); |
| | | mgtTotalOrderTotalVo.setOrderTotalValue(orderTotalValue); |
| | | mgtTotalOrderTotalVo.setOrderMoneyValue(orderMoneyValue); |
| | | } |
| | | //获取商品分类销售数据 |
| | | List<MgtMapTotalPlusVo> mgtMapTotalVoGoodsType = orderMapper.listTotalOrderTotalGoodsType(mgtBaseShopDto); |
| | | if (mgtMapTotalVoGoodsType != null && mgtMapTotalVoGoodsType.size() > 0) { |
| | | String[] goodsTypeKey = new String[mgtMapTotalVoGoodsType.size()]; |
| | | Integer[] goodsTypeTotalValue = new Integer[mgtMapTotalVoGoodsType.size()]; |
| | | BigDecimal[] goodsTypeMoneyValue = new BigDecimal[mgtMapTotalVoGoodsType.size()]; |
| | | // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组 |
| | | for (int i = 0; i < mgtMapTotalVoGoodsType.size(); i++) { |
| | | goodsTypeTotalValue[i] = mgtMapTotalVoGoodsType.get(i).getMapValueFirst(); |
| | | goodsTypeMoneyValue[i] = mgtMapTotalVoGoodsType.get(i).getMapValueSecond(); |
| | | if(mgtMapTotalVoGoodsType.get(i).getMapKey().equals("1")){ |
| | | goodsTypeKey[i] = "周期"; |
| | | mgtTotalOrderTotalVo.setCycleTotal(mgtMapTotalVoGoodsType.get(i).getMapValueFirst()); |
| | | mgtTotalOrderTotalVo.setCycleMoney(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()); |
| | | }else if(mgtMapTotalVoGoodsType.get(i).getMapKey().equals("2")){ |
| | | goodsTypeKey[i] = "服务"; |
| | | mgtTotalOrderTotalVo.setServiceTotal(mgtMapTotalVoGoodsType.get(i).getMapValueFirst()); |
| | | mgtTotalOrderTotalVo.setServiceMoney(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()); |
| | | }else if(mgtMapTotalVoGoodsType.get(i).getMapKey().equals("3")){ |
| | | goodsTypeKey[i] = "体验"; |
| | | mgtTotalOrderTotalVo.setExperienceTotal(mgtMapTotalVoGoodsType.get(i).getMapValueFirst()); |
| | | mgtTotalOrderTotalVo.setExperienceMoney(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()); |
| | | }else if(mgtMapTotalVoGoodsType.get(i).getMapKey().equals("4")){ |
| | | goodsTypeKey[i] = "单品"; |
| | | } |
| | | } |
| | | mgtTotalOrderTotalVo.setGoodsTypeKey(goodsTypeKey); |
| | | mgtTotalOrderTotalVo.setGoodsTypeTotalValue(goodsTypeTotalValue); |
| | | mgtTotalOrderTotalVo.setGoodsTypeMoneyValue(goodsTypeMoneyValue); |
| | | } |
| | | //获取商品销售排名 |
| | | List<MgtMapTotalPlusVo> goodsRankList = orderMapper.listTotalOrderTotalGoodsRank(mgtBaseShopDto); |
| | | if (goodsRankList != null && goodsRankList.size() > 0) { |
| | | String[] goodsRankKey = new String[goodsRankList.size()]; |
| | | BigDecimal[] goodsRankValue = new BigDecimal[goodsRankList.size()]; |
| | | // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组 |
| | | for (int i = 0; i < goodsRankList.size(); i++) { |
| | | goodsRankKey[i] = goodsRankList.get(i).getMapKey(); |
| | | goodsRankValue[i] = goodsRankList.get(i).getMapValueSecond(); |
| | | } |
| | | mgtTotalOrderTotalVo.setGoodsRankKey(goodsRankKey); |
| | | mgtTotalOrderTotalVo.setGoodsRankValue(goodsRankValue); |
| | | } |
| | | //获取来源销售排名 |
| | | List<MgtMapTotalPlusVo> orderFromList = orderMapper.listTotalOrderTotalOrderFrom(mgtBaseShopDto); |
| | | if (orderFromList != null && orderFromList.size() > 0) { |
| | | String[] orderFromKey = new String[orderFromList.size()]; |
| | | BigDecimal[] orderFromValue = new BigDecimal[orderFromList.size()]; |
| | | // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组 |
| | | for (int i = 0; i < orderFromList.size(); i++) { |
| | | orderFromKey[i] = orderFromList.get(i).getMapKey(); |
| | | orderFromValue[i] = orderFromList.get(i).getMapValueSecond(); |
| | | } |
| | | mgtTotalOrderTotalVo.setOrderFromRankKey(orderFromKey); |
| | | mgtTotalOrderTotalVo.setOrderFromRankValue(orderFromValue); |
| | | } |
| | | return mgtTotalOrderTotalVo; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * @description |
| | | * @author jqs |
| | | * @date 2023/6/20 9:27 |
| | | * @param mgtBaseShopDto |
| | | * @return MgtTotalActivityTotalVo |
| | | */ |
| | | @Override |
| | | public MgtTotalActivityTotalVo getTotalActivityTotal(MgtBaseShopDto mgtBaseShopDto){ |
| | | //获取基础统计 |
| | | MgtTotalActivityTotalVo totalActivityTotalVo = orderMapper.getTotalActivityTotal(mgtBaseShopDto); |
| | | //获取商品分类销售数据 |
| | | List<MgtMapTotalPlusVo> mgtMapTotalVoGoodsType = orderMapper.listTotalActivityTotalGoodsType(mgtBaseShopDto); |
| | | if (mgtMapTotalVoGoodsType != null && mgtMapTotalVoGoodsType.size() > 0) { |
| | | String[] goodsTypeKey = new String[mgtMapTotalVoGoodsType.size()]; |
| | | Integer[] goodsTypeTotalValue = new Integer[mgtMapTotalVoGoodsType.size()]; |
| | | BigDecimal[] goodsTypeMoneyValue = new BigDecimal[mgtMapTotalVoGoodsType.size()]; |
| | | // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组 |
| | | for (int i = 0; i < mgtMapTotalVoGoodsType.size(); i++) { |
| | | goodsTypeTotalValue[i] = mgtMapTotalVoGoodsType.get(i).getMapValueFirst(); |
| | | goodsTypeMoneyValue[i] = mgtMapTotalVoGoodsType.get(i).getMapValueSecond(); |
| | | if(mgtMapTotalVoGoodsType.get(i).getMapKey().equals("1")){ |
| | | goodsTypeKey[i] = "周期"; |
| | | totalActivityTotalVo.setCycleTotal(mgtMapTotalVoGoodsType.get(i).getMapValueFirst()); |
| | | totalActivityTotalVo.setCycleMoney(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()); |
| | | totalActivityTotalVo.setCyclePerson(mgtMapTotalVoGoodsType.get(i).getMapValueThird()); |
| | | }else if(mgtMapTotalVoGoodsType.get(i).getMapKey().equals("2")){ |
| | | goodsTypeKey[i] = "服务"; |
| | | totalActivityTotalVo.setServiceTotal(mgtMapTotalVoGoodsType.get(i).getMapValueFirst()); |
| | | totalActivityTotalVo.setServiceMoney(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()); |
| | | totalActivityTotalVo.setServicePerson(mgtMapTotalVoGoodsType.get(i).getMapValueThird()); |
| | | }else if(mgtMapTotalVoGoodsType.get(i).getMapKey().equals("3")){ |
| | | goodsTypeKey[i] = "体验"; |
| | | totalActivityTotalVo.setExperienceTotal(mgtMapTotalVoGoodsType.get(i).getMapValueFirst()); |
| | | totalActivityTotalVo.setExperienceMoney(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()); |
| | | totalActivityTotalVo.setExperiencePerson(mgtMapTotalVoGoodsType.get(i).getMapValueThird()); |
| | | }else if(mgtMapTotalVoGoodsType.get(i).getMapKey().equals("4")){ |
| | | goodsTypeKey[i] = "单品"; |
| | | } |
| | | } |
| | | totalActivityTotalVo.setGoodsTypeKey(goodsTypeKey); |
| | | totalActivityTotalVo.setGoodsTypeTotalValue(goodsTypeTotalValue); |
| | | totalActivityTotalVo.setGoodsTypeMoneyValue(goodsTypeMoneyValue); |
| | | } |
| | | //获取订单分布 |
| | | List<MgtMapTotalPlusVo> mgtMapTotalVos = orderMapper.listTotalActivityTotal(mgtBaseShopDto); |
| | | if (mgtMapTotalVos != null && mgtMapTotalVos.size() > 0) { |
| | | String[] orderTotalKey = new String[mgtMapTotalVos.size()]; |
| | | Integer[] orderTotalValue = new Integer[mgtMapTotalVos.size()]; |
| | | BigDecimal[] orderMoneyValue = new BigDecimal[mgtMapTotalVos.size()]; |
| | | for (int i = 0; i < mgtMapTotalVos.size(); i++) { |
| | | orderTotalKey[i] = mgtMapTotalVos.get(i).getMapKey(); |
| | | orderTotalValue[i] = mgtMapTotalVos.get(i).getMapValueFirst(); |
| | | orderMoneyValue[i] = mgtMapTotalVos.get(i).getMapValueSecond(); |
| | | } |
| | | totalActivityTotalVo.setOrderTotalKey(orderTotalKey); |
| | | totalActivityTotalVo.setOrderTotalValue(orderTotalValue); |
| | | totalActivityTotalVo.setOrderMoneyValue(orderMoneyValue); |
| | | } |
| | | return totalActivityTotalVo; |
| | | } |
| | | |
| | | /** |
| | | * @description |
| | | * @author jqs |
| | | * @date 2023/6/20 9:56 |
| | | * @param mgtActivityAgeDto |
| | | * @return MgtTotalActivityTotalVo |
| | | */ |
| | | @Override |
| | | public MgtTotalActivityTotalVo getTotalActivityAgeRank(MgtActivityAgeDto mgtActivityAgeDto){ |
| | | List<Long> userIds = orderMapper.getUserIdAgeRank(mgtActivityAgeDto); |
| | | mgtActivityAgeDto.setUserIds(userIds); |
| | | userIds = remoteMemberService.listUserIdByAge(mgtActivityAgeDto).getData(); |
| | | mgtActivityAgeDto.setUserIds(userIds); |
| | | MgtTotalActivityTotalVo totalActivityTotalVo = orderMapper.getTotalActivityAgeRank(mgtActivityAgeDto); |
| | | return totalActivityTotalVo; |
| | | } |
| | | |
| | | /** |
| | | * @description |
| | | * @author jqs |
| | | * @date 2023/6/20 15:31 |
| | | * @param mgtBaseShopDto |
| | | * @return MgtTotalDataTotalVo |
| | | */ |
| | | @Override |
| | | public MgtTotalDataTotalVo getTotalDataTotal(MgtBaseShopDto mgtBaseShopDto){ |
| | | //获取人数统计 |
| | | MgtTotalDataTotalVo mgtTotalDataTotalVo = orderMapper.getTotalDataTotal(mgtBaseShopDto); |
| | | Integer reorderPerson = orderMapper.getReorderPerson(mgtBaseShopDto); |
| | | mgtTotalDataTotalVo.setReorderPerson(reorderPerson); |
| | | Integer returnedPerson = orderMapper.getReturnedPerson(mgtBaseShopDto); |
| | | mgtTotalDataTotalVo.setReturnedPerson(returnedPerson); |
| | | return mgtTotalDataTotalVo; |
| | | } |
| | | |
| | | /** |
| | | * @description |
| | | * @author jqs |
| | | * @date 2023/6/21 15:26 |
| | | * @param mgtBasePlatformDto |
| | | * @return List<MgtMapTotalVo> |
| | | */ |
| | | @Override |
| | | public List<MgtMapTotalVo> listMemberGoodsRank(MgtBasePlatformDto mgtBasePlatformDto){ |
| | | return orderMapper.listMemberGoodsRank(mgtBasePlatformDto); |
| | | } |
| | | |
| | | /** |
| | | * @description 获取平台商户数据统计 |
| | | * @param mgtBasePlatformDto |
| | | * @return List<MgtTotalDataTotalVo> |
| | | * @author jqs34 |
| | | * @date 2023/6/23 14:01 |
| | | */ |
| | | @Override |
| | | public List<MgtTotalDataTotalVo> getPlTotalDataTotal(MgtBasePlatformDto mgtBasePlatformDto){ |
| | | //获取需要关联的用户id集合 |
| | | if (mgtBasePlatformDto.getDeptId() != null) { |
| | | List<Long> userIdList = new ArrayList<>(); |
| | | if (mgtBasePlatformDto.getUserId() != null) { |
| | | userIdList.add(mgtBasePlatformDto.getUserId()); |
| | | } else { |
| | | MgtUserIdByDept mgtUserIdByDept = new MgtUserIdByDept(); |
| | | mgtUserIdByDept.setDeptId(mgtBasePlatformDto.getUserId()); |
| | | mgtUserIdByDept = remoteConfigService.getUserIdByDept(mgtUserIdByDept).getData(); |
| | | userIdList = mgtUserIdByDept.getUserIdList(); |
| | | } |
| | | if (!userIdList.isEmpty()) { |
| | | mgtBasePlatformDto.setUserIdList(userIdList); |
| | | } |
| | | } |
| | | List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData(); |
| | | List<MgtTotalDataTotalVo> mgtTotalDataTotalVoList = new ArrayList<>(); |
| | | MgtBaseShopDto mgtBaseShopDto; |
| | | MgtTotalDataTotalVo mgtTotalDataTotalVo; |
| | | if(shopIdList!=null&&!shopIdList.isEmpty()){ |
| | | for(Long shopId : shopIdList){ |
| | | mgtBaseShopDto = new MgtBaseShopDto(); |
| | | mgtBaseShopDto.setStartDate(mgtBasePlatformDto.getStartDate()); |
| | | mgtBaseShopDto.setEndDate(mgtBasePlatformDto.getEndDate()); |
| | | mgtBaseShopDto.setShopId(shopId); |
| | | mgtTotalDataTotalVo = this.getTotalDataTotal(mgtBaseShopDto); |
| | | mgtTotalDataTotalVoList.add(mgtTotalDataTotalVo); |
| | | } |
| | | } |
| | | return mgtTotalDataTotalVoList; |
| | | } |
| | | |
| | | /** |
| | | * @description 获取平台商户订单统计 |
| | | * @param mgtBasePlatformDto |
| | | * @return MgtTotalOrderTotalVo |
| | | * @author jqs34 |
| | | * @date 2023/6/19 22:23 |
| | | */ |
| | | @Override |
| | | public MgtTotalOrderTotalVo getPlTotalOrderTotal(MgtBasePlatformDto mgtBasePlatformDto){ |
| | | //获取需要关联的用户id集合 |
| | | if (mgtBasePlatformDto.getDeptId() != null) { |
| | | List<Long> userIdList = new ArrayList<>(); |
| | | if (mgtBasePlatformDto.getUserId() != null) { |
| | | userIdList.add(mgtBasePlatformDto.getUserId()); |
| | | } else { |
| | | MgtUserIdByDept mgtUserIdByDept = new MgtUserIdByDept(); |
| | | mgtUserIdByDept.setDeptId(mgtBasePlatformDto.getUserId()); |
| | | mgtUserIdByDept = remoteConfigService.getUserIdByDept(mgtUserIdByDept).getData(); |
| | | userIdList = mgtUserIdByDept.getUserIdList(); |
| | | } |
| | | if (!userIdList.isEmpty()) { |
| | | mgtBasePlatformDto.setUserIdList(userIdList); |
| | | } |
| | | } |
| | | List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData(); |
| | | mgtBasePlatformDto.setShopIdList(shopIdList); |
| | | //获取基础统计 |
| | | MgtTotalOrderTotalVo mgtTotalOrderTotalVo = orderMapper.getPlTotalOrderTotalOrderFrom(mgtBasePlatformDto); |
| | | List<MgtMapTotalPlusVo> mgtMapTotalVos = orderMapper.listPlTotalOrderTotal(mgtBasePlatformDto); |
| | | if (mgtMapTotalVos != null && mgtMapTotalVos.size() > 0) { |
| | | String[] orderTotalKey = new String[mgtMapTotalVos.size()]; |
| | | Integer[] orderTotalValue = new Integer[mgtMapTotalVos.size()]; |
| | | BigDecimal[] orderMoneyValue = new BigDecimal[mgtMapTotalVos.size()]; |
| | | for (int i = 0; i < mgtMapTotalVos.size(); i++) { |
| | | orderTotalKey[i] = mgtMapTotalVos.get(i).getMapKey(); |
| | | orderTotalValue[i] = mgtMapTotalVos.get(i).getMapValueFirst(); |
| | | orderMoneyValue[i] = mgtMapTotalVos.get(i).getMapValueSecond(); |
| | | } |
| | | mgtTotalOrderTotalVo.setOrderTotalKey(orderTotalKey); |
| | | mgtTotalOrderTotalVo.setOrderTotalValue(orderTotalValue); |
| | | mgtTotalOrderTotalVo.setOrderMoneyValue(orderMoneyValue); |
| | | } |
| | | //获取商品分类销售数据 |
| | | List<MgtMapTotalPlusVo> mgtMapTotalVoGoodsType = orderMapper.listPlTotalOrderTotalGoodsType(mgtBasePlatformDto); |
| | | if (mgtMapTotalVoGoodsType != null && mgtMapTotalVoGoodsType.size() > 0) { |
| | | String[] goodsTypeKey = new String[mgtMapTotalVoGoodsType.size()]; |
| | | Integer[] goodsTypeTotalValue = new Integer[mgtMapTotalVoGoodsType.size()]; |
| | | BigDecimal[] goodsTypeMoneyValue = new BigDecimal[mgtMapTotalVoGoodsType.size()]; |
| | | // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组 |
| | | for (int i = 0; i < mgtMapTotalVoGoodsType.size(); i++) { |
| | | goodsTypeTotalValue[i] = mgtMapTotalVoGoodsType.get(i).getMapValueFirst(); |
| | | goodsTypeMoneyValue[i] = mgtMapTotalVoGoodsType.get(i).getMapValueSecond(); |
| | | if(mgtMapTotalVoGoodsType.get(i).getMapKey().equals("1")){ |
| | | goodsTypeKey[i] = "周期"; |
| | | mgtTotalOrderTotalVo.setCycleTotal(mgtMapTotalVoGoodsType.get(i).getMapValueFirst()); |
| | | mgtTotalOrderTotalVo.setCycleMoney(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()); |
| | | }else if(mgtMapTotalVoGoodsType.get(i).getMapKey().equals("2")){ |
| | | goodsTypeKey[i] = "服务"; |
| | | mgtTotalOrderTotalVo.setServiceTotal(mgtMapTotalVoGoodsType.get(i).getMapValueFirst()); |
| | | mgtTotalOrderTotalVo.setServiceMoney(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()); |
| | | }else if(mgtMapTotalVoGoodsType.get(i).getMapKey().equals("3")){ |
| | | goodsTypeKey[i] = "体验"; |
| | | mgtTotalOrderTotalVo.setExperienceTotal(mgtMapTotalVoGoodsType.get(i).getMapValueFirst()); |
| | | mgtTotalOrderTotalVo.setExperienceMoney(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()); |
| | | }else if(mgtMapTotalVoGoodsType.get(i).getMapKey().equals("4")){ |
| | | goodsTypeKey[i] = "单品"; |
| | | } |
| | | } |
| | | mgtTotalOrderTotalVo.setGoodsTypeKey(goodsTypeKey); |
| | | mgtTotalOrderTotalVo.setGoodsTypeTotalValue(goodsTypeTotalValue); |
| | | mgtTotalOrderTotalVo.setGoodsTypeMoneyValue(goodsTypeMoneyValue); |
| | | } |
| | | //获取商品销售排名 |
| | | List<MgtMapTotalPlusVo> goodsRankList = orderMapper.listPlTotalOrderTotalGoodsRank(mgtBasePlatformDto); |
| | | if (goodsRankList != null && goodsRankList.size() > 0) { |
| | | String[] goodsRankKey = new String[goodsRankList.size()]; |
| | | BigDecimal[] goodsRankValue = new BigDecimal[goodsRankList.size()]; |
| | | // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组 |
| | | for (int i = 0; i < goodsRankList.size(); i++) { |
| | | goodsRankKey[i] = goodsRankList.get(i).getMapKey(); |
| | | goodsRankValue[i] = goodsRankList.get(i).getMapValueSecond(); |
| | | } |
| | | mgtTotalOrderTotalVo.setGoodsRankKey(goodsRankKey); |
| | | mgtTotalOrderTotalVo.setGoodsRankValue(goodsRankValue); |
| | | } |
| | | //获取来源销售排名 |
| | | List<MgtMapTotalPlusVo> orderFromList = orderMapper.listPlTotalOrderTotalOrderFrom(mgtBasePlatformDto); |
| | | if (orderFromList != null && orderFromList.size() > 0) { |
| | | String[] orderFromKey = new String[orderFromList.size()]; |
| | | BigDecimal[] orderFromValue = new BigDecimal[orderFromList.size()]; |
| | | // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组 |
| | | for (int i = 0; i < orderFromList.size(); i++) { |
| | | orderFromKey[i] = orderFromList.get(i).getMapKey(); |
| | | orderFromValue[i] = orderFromList.get(i).getMapValueSecond(); |
| | | } |
| | | mgtTotalOrderTotalVo.setOrderFromRankKey(orderFromKey); |
| | | mgtTotalOrderTotalVo.setOrderFromRankValue(orderFromValue); |
| | | } |
| | | return mgtTotalOrderTotalVo; |
| | | } |
| | | |
| | | /** |
| | | * @description |
| | | * @author jqs |
| | | * @date 2023/6/20 9:27 |
| | | * @param mgtBasePlatformDto |
| | | * @return MgtTotalActivityTotalVo |
| | | */ |
| | | @Override |
| | | public MgtPlTotalActivityTotalVo getPlTotalActivityTotal(MgtBasePlatformDto mgtBasePlatformDto){ |
| | | //获取需要关联的用户id集合 |
| | | if (mgtBasePlatformDto.getDeptId() != null) { |
| | | List<Long> userIdList = new ArrayList<>(); |
| | | if (mgtBasePlatformDto.getUserId() != null) { |
| | | userIdList.add(mgtBasePlatformDto.getUserId()); |
| | | } else { |
| | | MgtUserIdByDept mgtUserIdByDept = new MgtUserIdByDept(); |
| | | mgtUserIdByDept.setDeptId(mgtBasePlatformDto.getUserId()); |
| | | mgtUserIdByDept = remoteConfigService.getUserIdByDept(mgtUserIdByDept).getData(); |
| | | userIdList = mgtUserIdByDept.getUserIdList(); |
| | | } |
| | | if (!userIdList.isEmpty()) { |
| | | mgtBasePlatformDto.setUserIdList(userIdList); |
| | | } |
| | | } |
| | | List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData(); |
| | | mgtBasePlatformDto.setShopIdList(shopIdList); |
| | | //获取基础统计 |
| | | MgtPlTotalActivityTotalVo totalActivityTotalVo = orderMapper.getPlTotalActivityTotal(mgtBasePlatformDto); |
| | | //获取商品分类销售数据 |
| | | List<MgtMapTotalPlusVo> mgtMapTotalVoGoodsType = orderMapper.listPlTotalActivityTotalGoodsType(mgtBasePlatformDto); |
| | | if (mgtMapTotalVoGoodsType != null && mgtMapTotalVoGoodsType.size() > 0) { |
| | | String[] goodsTypeKey = new String[mgtMapTotalVoGoodsType.size()]; |
| | | Integer[] goodsTypeTotalValue = new Integer[mgtMapTotalVoGoodsType.size()]; |
| | | BigDecimal[] goodsTypeMoneyValue = new BigDecimal[mgtMapTotalVoGoodsType.size()]; |
| | | // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组 |
| | | for (int i = 0; i < mgtMapTotalVoGoodsType.size(); i++) { |
| | | goodsTypeTotalValue[i] = mgtMapTotalVoGoodsType.get(i).getMapValueFirst(); |
| | | goodsTypeMoneyValue[i] = mgtMapTotalVoGoodsType.get(i).getMapValueSecond(); |
| | | if(mgtMapTotalVoGoodsType.get(i).getMapKey().equals("1")){ |
| | | goodsTypeKey[i] = "周期"; |
| | | totalActivityTotalVo.setCycleTotal(mgtMapTotalVoGoodsType.get(i).getMapValueFirst()); |
| | | totalActivityTotalVo.setCycleMoney(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()); |
| | | totalActivityTotalVo.setCyclePerson(mgtMapTotalVoGoodsType.get(i).getMapValueThird()); |
| | | }else if(mgtMapTotalVoGoodsType.get(i).getMapKey().equals("2")){ |
| | | goodsTypeKey[i] = "服务"; |
| | | totalActivityTotalVo.setServiceTotal(mgtMapTotalVoGoodsType.get(i).getMapValueFirst()); |
| | | totalActivityTotalVo.setServiceMoney(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()); |
| | | totalActivityTotalVo.setServicePerson(mgtMapTotalVoGoodsType.get(i).getMapValueThird()); |
| | | }else if(mgtMapTotalVoGoodsType.get(i).getMapKey().equals("3")){ |
| | | goodsTypeKey[i] = "体验"; |
| | | totalActivityTotalVo.setExperienceTotal(mgtMapTotalVoGoodsType.get(i).getMapValueFirst()); |
| | | totalActivityTotalVo.setExperienceMoney(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()); |
| | | totalActivityTotalVo.setExperiencePerson(mgtMapTotalVoGoodsType.get(i).getMapValueThird()); |
| | | }else if(mgtMapTotalVoGoodsType.get(i).getMapKey().equals("4")){ |
| | | goodsTypeKey[i] = "单品"; |
| | | } |
| | | } |
| | | totalActivityTotalVo.setGoodsTypeKey(goodsTypeKey); |
| | | totalActivityTotalVo.setGoodsTypeTotalValue(goodsTypeTotalValue); |
| | | totalActivityTotalVo.setGoodsTypeMoneyValue(goodsTypeMoneyValue); |
| | | } |
| | | //获取订单分布 |
| | | List<MgtMapTotalPlusVo> mgtMapTotalVos = orderMapper.listPlTotalActivityTotal(mgtBasePlatformDto); |
| | | if (mgtMapTotalVos != null && mgtMapTotalVos.size() > 0) { |
| | | String[] orderTotalKey = new String[mgtMapTotalVos.size()]; |
| | | Integer[] orderTotalValue = new Integer[mgtMapTotalVos.size()]; |
| | | BigDecimal[] orderMoneyValue = new BigDecimal[mgtMapTotalVos.size()]; |
| | | for (int i = 0; i < mgtMapTotalVos.size(); i++) { |
| | | orderTotalKey[i] = mgtMapTotalVos.get(i).getMapKey(); |
| | | orderTotalValue[i] = mgtMapTotalVos.get(i).getMapValueFirst(); |
| | | orderMoneyValue[i] = mgtMapTotalVos.get(i).getMapValueSecond(); |
| | | } |
| | | totalActivityTotalVo.setOrderTotalKey(orderTotalKey); |
| | | totalActivityTotalVo.setOrderTotalValue(orderTotalValue); |
| | | totalActivityTotalVo.setOrderMoneyValue(orderMoneyValue); |
| | | } |
| | | HashSet<String> set = new HashSet<>(); |
| | | // 遍历MgtMemberOrderPageVoList,获取shopId并添加到set中 |
| | | for (Long shopId : mgtBasePlatformDto.getShopIdList()) { |
| | | set.add(shopId.toString()); |
| | | } |
| | | // 将set中的shopId转换为逗号分隔的字符串 |
| | | String joinedString = String.join(",", set); |
| | | // 通过remoteShopService获取MgtSimpleShopVoList |
| | | MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto(); |
| | | mgtBaseBathDto.setIds(joinedString); |
| | | List<MgtSimpleShopVo> simpleShopVoList = remoteShopService.listShopSimpleVoByIds(mgtBaseBathDto).getData(); |
| | | // 将MgtSimpleShopVoList转换为Map<Long, MgtSimpleShopVo>,以便后续根据shopId获取对应的MgtSimpleShopVo |
| | | Map<Long, MgtSimpleShopVo> map = simpleShopVoList.stream() |
| | | .collect(Collectors.toMap(MgtSimpleShopVo::getShopId, Function.identity())); |
| | | //商户活动次数排名 |
| | | List<MgtMapTotalPlusVo> shopActivityRank = orderMapper.listPlTotalShopActivityRank(mgtBasePlatformDto); |
| | | if (shopActivityRank != null && shopActivityRank.size() > 0) { |
| | | String[] shopActivityRankKey = new String[shopActivityRank.size()]; |
| | | Integer[] shopActivityRankValue = new Integer[shopActivityRank.size()]; |
| | | for (int i = 0; i < shopActivityRank.size(); i++) { |
| | | shopActivityRankKey[i] = map.get(Long.valueOf(shopActivityRank.get(i).getMapKey())).getShopName(); |
| | | shopActivityRankValue[i] = shopActivityRank.get(i).getMapValueFirst(); |
| | | } |
| | | totalActivityTotalVo.setActivityRankKey(shopActivityRankKey); |
| | | totalActivityTotalVo.setActivityRankValue(shopActivityRankValue); |
| | | } |
| | | //商户活动销售额排名 |
| | | List<MgtMapTotalPlusVo> shopActivitySalesRank = orderMapper.listPlTotalShopActivitySalesRank(mgtBasePlatformDto); |
| | | if (shopActivitySalesRank != null && shopActivitySalesRank.size() > 0) { |
| | | String[] shopActivitySalesRankKey = new String[shopActivitySalesRank.size()]; |
| | | BigDecimal[] shopActivitySalesRankValue = new BigDecimal[shopActivitySalesRank.size()]; |
| | | for (int i = 0; i < shopActivitySalesRank.size(); i++) { |
| | | shopActivitySalesRankKey[i] = map.get(Long.valueOf(shopActivityRank.get(i).getMapKey())).getShopName(); |
| | | shopActivitySalesRankValue[i] = shopActivitySalesRank.get(i).getMapValueSecond(); |
| | | } |
| | | totalActivityTotalVo.setShopSalesRankKey(shopActivitySalesRankKey); |
| | | totalActivityTotalVo.setShopSalesRankValue(shopActivitySalesRankValue); |
| | | } |
| | | //活动销售额排名 |
| | | List<MgtMapTotalPlusVo> activitySalesRank = orderMapper.listPlTotalActivitySalesRank(mgtBasePlatformDto); |
| | | if (activitySalesRank != null && activitySalesRank.size() > 0) { |
| | | String[] activitySalesRankKey = new String[activitySalesRank.size()]; |
| | | BigDecimal[] activitySalesRankValue = new BigDecimal[activitySalesRank.size()]; |
| | | for (int i = 0; i < activitySalesRank.size(); i++) { |
| | | activitySalesRankKey[i] = activitySalesRank.get(i).getMapKey(); |
| | | activitySalesRankValue[i] = activitySalesRank.get(i).getMapValueSecond(); |
| | | } |
| | | totalActivityTotalVo.setActivitySalesRankKey(activitySalesRankKey); |
| | | totalActivityTotalVo.setActivitySalesRankValue(activitySalesRankValue); |
| | | } |
| | | return totalActivityTotalVo; |
| | | } |
| | | |
| | | /** |
| | | * @description |
| | | * @author jqs |
| | | * @date 2023/6/20 9:56 |
| | | * @param mgtPlActivityAgeDto |
| | | * @return MgtTotalActivityTotalVo |
| | | */ |
| | | @Override |
| | | public MgtPlTotalActivityTotalVo getPlTotalActivityAgeRank(MgtPlActivityAgeDto mgtPlActivityAgeDto){ |
| | | List<Long> userIds = orderMapper.getPlUserIdAgeRank(mgtPlActivityAgeDto); |
| | | MgtActivityAgeDto mgtActivityAgeDto = new MgtActivityAgeDto(); |
| | | mgtActivityAgeDto.setUserIds(userIds); |
| | | mgtActivityAgeDto.setAgeType(mgtPlActivityAgeDto.getAgeType()); |
| | | userIds = remoteMemberService.listUserIdByAge(mgtActivityAgeDto).getData(); |
| | | mgtPlActivityAgeDto.setUserIds(userIds); |
| | | MgtPlTotalActivityTotalVo totalActivityTotalVo = orderMapper.getPlTotalActivityAgeRank(mgtPlActivityAgeDto); |
| | | return totalActivityTotalVo; |
| | | } |
| | | } |