From cbc564a7088503ad8cc7af4e1d2ba417d061e615 Mon Sep 17 00:00:00 2001 From: jiangqs <jiangqs> Date: 星期五, 30 六月 2023 11:35:05 +0800 Subject: [PATCH] 联调bug和统计完善 --- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java | 2029 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 2,026 insertions(+), 3 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 db89aa6..a6a1a73 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 @@ -1,10 +1,43 @@ package com.ruoyi.order.service.impl.order; -import com.ruoyi.system.domain.pojo.order.Order; -import com.ruoyi.system.mapper.order.OrderMapper; -import com.ruoyi.system.service.order.OrderService; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +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.StringUtils; +import com.ruoyi.common.core.utils.uuid.IdUtils; +import com.ruoyi.common.security.utils.CodeFactoryUtil; +import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.order.domain.dto.*; +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.mapper.order.OrderMapper; +import com.ruoyi.order.service.order.ConsumerGoodsService; +import com.ruoyi.order.service.order.OrderGoodsService; +import com.ruoyi.order.service.order.OrderService; +import com.ruoyi.order.service.order.UserServiceRecordService; +import com.ruoyi.system.api.constant.AppErrorConstant; +import com.ruoyi.system.api.domain.dto.*; +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.member.MemberCoupon; +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.*; +import com.ruoyi.system.api.service.*; import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; /** * <p> @@ -17,4 +50,1994 @@ @Service public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService { + @Resource + private OrderMapper orderMapper; + + @Resource + private RemoteMemberService remoteMemberService; + + @Resource + private OrderGoodsService orderGoodsService; + + @Resource + private RemoteShopService remoteShopService; + + @Resource + private RemoteUserService remoteUserService; + + @Resource + private ConsumerGoodsService consumerGoodsService; + + @Resource + private RemoteGoodsService remoteGoodsService; + + @Resource + private RemoteShoppingCartService remoteShoppingCartService; + + @Resource + private RemoteConfigService remoteConfigService; + + @Resource + private UserServiceRecordService userServiceRecordService; + + @Resource + private RemoteCouponService remoteCouponService; + + + /** + * @description: buyGoods + * @param: appSureOrderDto + * @return: AppSureOrderVo + * @author jqs34 + * @date: 2023/5/3 0:07 + */ + @Override + public AppSureOrderVo buyGoods(AppSureOrderDto appSureOrderDto) { + Long userId = appSureOrderDto.getUserId(); + AppSureOrderVo appSureOrderVo = new AppSureOrderVo(); + List<AppSureOrderGoodsVo> appSureOrderGoodsVoList = new ArrayList<>(); + AppSureOrderGoodsVo appSureOrderGoodsVo; + List<AppBuyGoodsDto> appBuyGoodsDtoList = appSureOrderDto.getAppBuyGoodsDtoList(); + String goodsId; + Integer buyNum; + BigDecimal buyNumBig; + String memberCouponId; + Goods goods; + BigDecimal goodsPrice; + BigDecimal goodsTotalPrice; + BigDecimal goodsRealPrice; + List<AppMemberCouponVo> appMemberCouponVoList = remoteCouponService.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 discountPercent; + BigDecimal goodsDeposit; + GoodsFile goodsFile; + Integer useCoupon; + BigDecimal orderGoodsMoney = 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) { + appSureOrderGoodsVo = new AppSureOrderGoodsVo(); + useCoupon = 0; + goodsId = appBuyGoodsDto.getGoodsId(); + buyNum = appBuyGoodsDto.getBuyNum(); + memberCouponId = appBuyGoodsDto.getMemberCouponId(); + goods = remoteGoodsService.getGoods(goodsId).getData(); + appSureOrderGoodsVo.setGoodsId(goodsId); + appSureOrderGoodsVo.setGoodsName(goods.getGoodsName()); + appSureOrderGoodsVo.setGoodsIntroduction(goods.getGoodsIntroduction()); + appSureOrderGoodsVo.setGoodsType(goods.getGoodsType()); + //商品图片 + goodsFile = remoteGoodsService.getGoodsFile(goodsId).getData(); + appSureOrderGoodsVo.setGoodsPicture(goodsFile.getFileUrl()); + buyNum = appBuyGoodsDto.getBuyNum(); + appSureOrderGoodsVo.setBuyNum(buyNum); + goodsPrice = goods.getSalesPrice(); + //商户定制价格 + 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 (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 && 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 && appMemberCouponVo.getDiscountMoney() != null) { + discountMoney = appMemberCouponVo.getDiscountMoney(); + goodsRealPrice = goodsTotalPrice.subtract(discountMoney); + useCoupon = 1; + } + } + } + appSureOrderGoodsVo.setUseCoupon(useCoupon); + appSureOrderGoodsVo.setGoodsTotalPrice(goodsTotalPrice); + appSureOrderGoodsVo.setCouponDiscount(discountMoney); + appSureOrderGoodsVo.setGoodsRealPrice(goodsRealPrice); + goodsDeposit = goods.getSubscription(); + if (goodsDeposit == null) { + goodsDeposit = new BigDecimal("0.00"); + } + appSureOrderGoodsVo.setGoodsDeposit(goodsDeposit); + orderGoodsMoney = orderGoodsMoney.add(goodsTotalPrice); + couponDiscount = couponDiscount.add(discountMoney); + orderPayDeposit = orderPayDeposit.add(goodsDeposit); + orderPayMoney = orderPayMoney.add(goodsRealPrice); + //商品关联优惠券 + 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.setAppMemberCouponVoList(appGoodsMemberCouponVoList); + } + appSureOrderGoodsVoList.add(appSureOrderGoodsVo); + } + appSureOrderVo.setOrderGoodsMoney(orderGoodsMoney); + appSureOrderVo.setCouponDiscount(couponDiscount); + appSureOrderVo.setOrderPayDeposit(orderPayDeposit); + appSureOrderVo.setOrderPayMoney(orderPayMoney); + appSureOrderVo.setAppSureOrderGoodsVoList(appSureOrderGoodsVoList); + return appSureOrderVo; + } + + /** + * 创建订单 + * + * @param appPlaceOrderDto + * @return + */ + @Override + public AppPlaceOrderVo placeOrder(AppPlaceOrderDto appPlaceOrderDto) { + Long userId = appPlaceOrderDto.getUserId(); + AppPlaceOrderVo appPlaceOrderVo = new AppPlaceOrderVo(); + List<AppSureOrderGoodsVo> appSureOrderGoodsVoList = new ArrayList<>(); + AppSureOrderGoodsVo appSureOrderGoodsVo; + List<AppBuyGoodsDto> appBuyGoodsDtoList = appPlaceOrderDto.getAppBuyGoodsDtoList(); + String goodsId; + Integer buyNum; + BigDecimal buyNumBig; + Integer serviceNum; + Integer goodsNum = 0; + String memberCouponId; + Goods goods; + BigDecimal goodsPrice; + BigDecimal goodsTotalPrice; + BigDecimal goodsRealPrice; + List<AppMemberCouponVo> appMemberCouponVoList = remoteCouponService.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"); + BigDecimal discountPercent; + BigDecimal goodsDeposit; + GoodsFile goodsFile; + Integer useCoupon; + BigDecimal orderGoodsMoney = new BigDecimal("0.00"); + BigDecimal couponDiscount = new BigDecimal("0.00"); + BigDecimal orderPayDeposit = new BigDecimal("0.00"); + BigDecimal orderPayMoney = new BigDecimal("0.00"); + String orderId = IdUtils.simpleUUID(); + 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(); + memberCouponId = appBuyGoodsDto.getMemberCouponId(); + goods = remoteGoodsService.getGoods(goodsId).getData(); + appSureOrderGoodsVo.setGoodsId(goodsId); + appSureOrderGoodsVo.setGoodsName(goods.getGoodsName()); + appSureOrderGoodsVo.setGoodsIntroduction(goods.getGoodsIntroduction()); + appSureOrderGoodsVo.setGoodsType(goods.getGoodsType()); + //商品图片 + goodsFile = remoteGoodsService.getGoodsFile(goodsId).getData(); + appSureOrderGoodsVo.setGoodsPicture(goodsFile.getFileUrl()); + buyNum = appBuyGoodsDto.getBuyNum(); + appSureOrderGoodsVo.setBuyNum(buyNum); + goodsPrice = goods.getSalesPrice(); + serviceNum = goods.getServiceNum(); + //商户定制价格 + 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(); + } + appSureOrderGoodsVo.setGoodsPrice(goodsPrice); + buyNumBig = BigDecimal.valueOf(buyNum); + goodsTotalPrice = goodsPrice.multiply(buyNumBig); + goodsRealPrice = goodsTotalPrice; + 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 && 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 && appMemberCouponVo.getDiscountMoney() != null) { + discountMoney = appMemberCouponVo.getDiscountMoney(); + goodsRealPrice = goodsTotalPrice.subtract(discountMoney); + useCoupon = 1; + } + } + } + appSureOrderGoodsVo.setUseCoupon(useCoupon); + appSureOrderGoodsVo.setGoodsTotalPrice(goodsTotalPrice); + appSureOrderGoodsVo.setCouponDiscount(discountMoney); + appSureOrderGoodsVo.setGoodsRealPrice(goodsRealPrice); + goodsDeposit = goods.getSubscription(); + if (goodsDeposit == null) { + goodsDeposit = new BigDecimal("0.00"); + } + appSureOrderGoodsVo.setGoodsDeposit(goodsDeposit); + goodsNum = goodsNum + buyNum; + orderGoodsMoney = orderGoodsMoney.add(goodsTotalPrice); + couponDiscount = couponDiscount.add(discountMoney); + orderPayDeposit = orderPayDeposit.add(goodsDeposit); + orderPayMoney = orderPayMoney.add(goodsRealPrice); + //创建OrderGoods + orderGoods = new OrderGoods(); + orderGoodsId = IdUtils.simpleUUID(); + orderGoods.setOrderGoodsId(orderGoodsId); + orderGoods.setDelFlag(0); + orderGoods.setOrderId(orderId); + orderGoods.setGoodsId(goodsId); + orderGoods.setBuyNum(buyNum); + if (memberCouponId != null) { + orderGoods.setCouponId(memberCouponId.toString()); + } + orderGoods.setGoodsPrice(goodsPrice); + orderGoods.setGoodsTotalMoney(orderGoodsMoney); + orderGoods.setGoodsReceivableMoney(goodsRealPrice); + orderGoods.setCycleNumFlag(goods.getCycleNumFlag()); + 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(2); + order.setOrderNo(orderNo); + order.setOrderFrom(1); + order.setShopId(appPlaceOrderDto.getShopId()); + order.setUserId(userId); + order.setOrderMoney(orderGoodsMoney); + order.setCouponMoney(couponDiscount); + order.setDiscountMoney(couponDiscount); + order.setReceivableMoney(orderPayMoney); + order.setReceivableDeposit(orderPayDeposit); + order.setPayType(appPlaceOrderDto.getPayType()); + if (order.getPayType() == 1) { + order.setPayMoney(orderPayMoney); + order.setOnlinePayMoney(orderPayMoney); + appPlaceOrderVo.setPayMoney(orderPayMoney); + appPlaceOrderVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getPayMoney())); + order.setCloseFlag(1); + } else if (order.getPayType() == 2) { + order.setPayMoney(orderPayDeposit); + order.setOnlinePayMoney(orderPayDeposit); + appPlaceOrderVo.setPayMoney(orderPayDeposit); + appPlaceOrderVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getPayMoney())); + order.setCloseFlag(0); + } + order.setOrderRemark(appPlaceOrderDto.getOrderRemark()); + order.setGoodsNum(goodsNum); + order.setCreateTime(new Date()); + this.save(order); + //更新用户商品类型 + if (goodsTypeSet != null && goodsTypeSet.size() > 0) { + AppMemberGoodsTypeDto appMemberGoodsTypeDto = new AppMemberGoodsTypeDto(); + appMemberGoodsTypeDto.setUserId(userId); + appMemberGoodsTypeDto.setGoodsTypeSet(goodsTypeSet); + remoteMemberService.updateMemberGoodsType(appMemberGoodsTypeDto); + } + appPlaceOrderVo.setOrderId(orderId); + appPlaceOrderVo.setOrderNo(orderNo); + + //调用支付 + + + return appPlaceOrderVo; + } + + /** + * 分页获取用户订单 + * + * @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()) { + Long shopId; + Shop shop; + HashSet<Long> set = new HashSet<Long>(); + for (AppUserOrderPageVo appUserOrderPageVo : appUserOrderPageVoList) { + shopId = appUserOrderPageVo.getShopId(); + set.add(shopId); + } + Map<Long, Shop> shopMap = new HashMap<>(); + set.forEach(shopIdLong -> { + Shop shopTemp = remoteShopService.getShop(shopIdLong).getData(); + shopMap.put(shopIdLong, shopTemp); + }); + for (AppUserOrderPageVo appUserOrderPageVo : appUserOrderPageVoList) { + shop = shopMap.get(appUserOrderPageVo.getShopId()); + appUserOrderPageVo.setShopName(shop.getShopName()); + appUserOrderPageVo.setShopServicePhone(shop.getShopServicePhone()); + if (appUserOrderPageVo.getShopId().equals(appUserOrderPageDto.getShopId())) { + appUserOrderPageVo.setSameShop(1); + } else { + appUserOrderPageVo.setSameShop(0); + } + appUserOrderPageVo.setVerifyCode("1-" + appUserOrderPageVo.getOrderId()); + } + } + return appUserOrderPageVoList; + } + + + /** + * @param appBaseGetDto + * @return + */ + @Override + public AppUserOrderGetVo getAppOrderDetail(AppBaseGetDto appBaseGetDto) { + String orderId = appBaseGetDto.getId(); + Order order = this.getById(orderId); + List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listAppVoByOrderId(orderId); + AppUserOrderGetVo appUserOrderGetVo = new AppUserOrderGetVo(); + appUserOrderGetVo.setOrderId(orderId); + appUserOrderGetVo.setOrderNo(order.getOrderNo()); + appUserOrderGetVo.setOrderStatus(order.getOrderStatus()); + appUserOrderGetVo.setOrderFrom(order.getOrderFrom()); + appUserOrderGetVo.setOrderGoodsMoney(order.getOrderMoney()); + appUserOrderGetVo.setCouponDiscount(order.getCouponMoney()); + appUserOrderGetVo.setReceivableDeposit(order.getReceivableDeposit()); + appUserOrderGetVo.setReceivableMoney(order.getReceivableMoney()); + 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) { + Order order = this.getById(orderId); + if (order.getOrderStatus() != 1) { + throw new ServiceException(AppErrorConstant.CANCEL_ERROR_ORDER); + } + order.setOrderStatus(0); + order.setCancelTime(new Date()); + this.saveOrUpdate(order); + } + + /** + * 获取用户订单统计 + * + * @param userId + * @return + */ + @Override + public AppOrderTotalVo getAppOrderTotal(Long userId) { + LambdaQueryWrapper<Order> queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(Order::getDelFlag, 0).eq(Order::getUserId, userId).eq(Order::getOrderStatus, 1); + Integer noPayCount = Integer.valueOf((int) this.count(queryWrapper)); + queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(Order::getDelFlag, 0).eq(Order::getUserId, userId).eq(Order::getOrderStatus, 2); + Integer noUseCount = Integer.valueOf((int) this.count(queryWrapper)); + AppOrderTotalVo appOrderTotalVo = new AppOrderTotalVo(); + appOrderTotalVo.setNoPayCount(noPayCount); + appOrderTotalVo.setNoUseCount(noUseCount); + return appOrderTotalVo; + } + + /** + * 获取B端首页统计 + * + * @param merHomeShopTotalVo + * @return + */ + @Override + public MerHomeShopTotalVo getMerHomeTotal(MerHomeShopTotalVo merHomeShopTotalVo) { + Long shopId = merHomeShopTotalVo.getShopId(); + Integer todayShop = userServiceRecordService.countShopServicePerson(shopId); + merHomeShopTotalVo.setTodayShop(todayShop); + merHomeShopTotalVo = orderMapper.getMerHomeShopTotalVo(shopId); + return merHomeShopTotalVo; + } + + /** + * 核销订单 + * + * @param orderId + * @return + */ + @Override + public MerVerifyOrderVo verifyOrder(String orderId) { + // 创建返回对象 + MerVerifyOrderVo merVerifyOrderVo = new MerVerifyOrderVo(); + // 根据订单ID获取订单信息 + Order order = this.getById(orderId); + // 根据订单ID获取订单商品列表 + List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listAppVoByOrderId(orderId); + // 设置返回对象的属性值 + merVerifyOrderVo.setOrderId(orderId); + merVerifyOrderVo.setOrderNo(order.getOrderNo()); + merVerifyOrderVo.setOrderStatus(order.getOrderStatus()); + merVerifyOrderVo.setOrderFrom(order.getOrderFrom()); + merVerifyOrderVo.setOrderGoodsMoney(order.getOrderMoney()); + merVerifyOrderVo.setCouponDiscount(order.getCouponMoney()); + merVerifyOrderVo.setReceivableDeposit(order.getReceivableDeposit()); + 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); + // 根据订单用户ID获取用户信息 + SysUser sysUser = remoteUserService.getSysUser(order.getUserId()).getData(); + merVerifyOrderVo.setUserName(sysUser.getNickName()); + merVerifyOrderVo.setUserMobile(sysUser.getPhonenumber()); + merVerifyOrderVo.setCloseFlag(order.getCloseFlag()); + // 返回结果 + return merVerifyOrderVo; + } + + /** + * 确认核销订单 + * + * @param merVerifyOrderDto + * @return + */ + @Override + 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(relPayMoney); + order.setOffPayTime(nowTime); + order.setPayMoney(relReceiveMoney.add(relPayMoney)); + order.setCloseFlag(1); + this.saveOrUpdate(order); + //创建服务商品 + List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listAppVoByOrderId(orderId); + StringJoiner goodsIdSj = new StringJoiner(","); + for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) { + goodsIdSj.add(appUserOrderGoodsPageVo.getGoodsId()); + } + String goodsIds = goodsIdSj.toString(); + List<Goods> goodsList = remoteGoodsService.listGoodsByGoodsId(goodsIds).getData(); + Map<String, Goods> goodsMap = goodsList.stream() + .collect(Collectors.toMap(Goods::getGoodsId, Function.identity())); + ConsumerGoods consumerGoods; + String consumerGoodsId; + Goods goods; + Integer serviceCount = 0; + Integer cycleService = 0; + Integer cyclePerson = 0; + Integer serviceService = 0; + Integer servicePerson = 0; + Integer experienceService = 0; + Integer experiencePerson = 0; + MerMemberConsumerGoodsTotalVo memberConsumerGoodsTotalVo = consumerGoodsService.getMemberConsumerGoodsTotalVo(order.getUserId(), order.getShopId()); + for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) { + consumerGoods = new ConsumerGoods(); + goods = goodsMap.get(appUserOrderGoodsPageVo.getGoodsId()); + consumerGoodsId = IdUtils.simpleUUID(); + consumerGoods.setConsumerGoodsId(consumerGoodsId); + consumerGoods.setDelFlag(0); + consumerGoods.setServiceStatus(1); + consumerGoods.setShopId(order.getShopId()); + consumerGoods.setUserId(order.getUserId()); + consumerGoods.setOrderId(orderId); + consumerGoods.setOrderGoodsId(appUserOrderGoodsPageVo.getOrderGoodsId()); + consumerGoods.setGoodsId(appUserOrderGoodsPageVo.getGoodsId()); + consumerGoods.setGoodsName(appUserOrderGoodsPageVo.getGoodsName()); + consumerGoods.setCycleNumFlag(appUserOrderGoodsPageVo.getCycleNumFlag()); + consumerGoods.setServiceNum(appUserOrderGoodsPageVo.getServiceNum()); + consumerGoods.setUsedNum(0); + consumerGoods.setGoodsType(appUserOrderGoodsPageVo.getGoodsType()); + consumerGoods.setCreateTime(nowTime); + consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction()); + consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture()); + consumerGoods.setGoodsNurses(goods.getGoodsNurses()); + consumerGoods.setSourceFrom(1); + consumerGoodsService.save(consumerGoods); + //处理商品服务次数 + if (consumerGoods.getCycleNumFlag() == 1) { + switch (goods.getGoodsType()) { + case 1: + cycleService = cycleService + appUserOrderGoodsPageVo.getServiceNum(); + break; + case 2: + serviceService = serviceService + appUserOrderGoodsPageVo.getServiceNum(); + break; + case 3: + experienceService = experienceService + appUserOrderGoodsPageVo.getServiceNum(); + break; + default: + break; + } + } + } + //判断是否加人 + if (cycleService > 0 && memberConsumerGoodsTotalVo.getCycleOrder() == 0) { + cyclePerson = 1; + } + if (serviceService > 0 && memberConsumerGoodsTotalVo.getServiceOrder() == 0) { + servicePerson = 1; + } + if (experienceService > 0 && memberConsumerGoodsTotalVo.getExperienceOrder() == 0) { + experiencePerson = 1; + } + serviceCount = cycleService + serviceService + experienceService; + //生成返回 + MerVerifyOrderVo merVerifyOrderVo = new MerVerifyOrderVo(); + merVerifyOrderVo.setOrderId(orderId); + merVerifyOrderVo.setOrderNo(order.getOrderNo()); + merVerifyOrderVo.setOrderStatus(order.getOrderStatus()); + merVerifyOrderVo.setOrderFrom(order.getOrderFrom()); + merVerifyOrderVo.setOrderGoodsMoney(order.getOrderMoney()); + merVerifyOrderVo.setCouponDiscount(order.getCouponMoney()); + merVerifyOrderVo.setReceivableDeposit(order.getReceivableDeposit()); + merVerifyOrderVo.setReceivableMoney(order.getReceivableMoney()); + 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()); + //更新商户和会员服务统计 + MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto(); + memberTotalChangeDto.setUserId(order.getUserId()); + memberTotalChangeDto.setTypeService(1); + memberTotalChangeDto.setServiceCount(serviceCount); + remoteMemberService.changeMemberTotal(memberTotalChangeDto); + ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto(); + shopTotalChangeDto.setShopId(order.getShopId()); + shopTotalChangeDto.setTypeCycleService(1); + shopTotalChangeDto.setCycleService(cycleService); + shopTotalChangeDto.setCyclePerson(cyclePerson); + shopTotalChangeDto.setTypeServiceService(1); + shopTotalChangeDto.setServiceService(serviceService); + shopTotalChangeDto.setServicePerson(servicePerson); + shopTotalChangeDto.setTypeExperienceService(1); + shopTotalChangeDto.setExperienceService(experienceService); + shopTotalChangeDto.setExperiencePerson(experiencePerson); + remoteShopService.changeShopTotal(shopTotalChangeDto); + return merVerifyOrderVo; + } + + /** + * @param merVerifyCouponDto + * @return MerVerifyCouponVo + * @description 确认核销优惠券 + * @author jqs + * @date 2023/6/28 11:26 + */ + @Override + public MerVerifyCouponVo sureVerifyCoupon(MerVerifyCouponDto merVerifyCouponDto) { + MerVerifyCouponGetVo verifyCouponGetVo = remoteCouponService.getVerifyCoupon(merVerifyCouponDto.getMemberCouponId()).getData(); + // 创建MerVerifyCouponVo对象 + MerVerifyCouponVo merVerifyCouponVo = new MerVerifyCouponVo(); + // 调用remoteCouponService的getVerifyCoupon方法获取MerVerifyCouponGetVo对象 + List<Goods> goodsList = verifyCouponGetVo.getGoodsList(); + Long userId = verifyCouponGetVo.getUserId(); + // 调用remoteMemberService的getMember方法获取Member对象 + Member member = remoteMemberService.getMember(userId).getData(); + merVerifyCouponVo.setUserName(member.getNickName()); + merVerifyCouponVo.setUserMobile(member.getMobile()); + merVerifyCouponVo.setCouponFrom(verifyCouponGetVo.getCouponFrom()); + // 将goodsList转换为MerCouponGoodsListVo列表,并设置相应属性 + List<MerCouponGoodsListVo> merCouponGoodsList = goodsList.stream() + .map(goods -> { + MerCouponGoodsListVo merCouponGoods = new MerCouponGoodsListVo(); + merCouponGoods.setGoodsId(goods.getGoodsId()); + merCouponGoods.setGoodsName(goods.getGoodsName()); + // 设置其他属性 + return merCouponGoods; + }) + .collect(Collectors.toList()); + // 设置merVerifyCouponVo的goodsList属性为merCouponGoodsList + merVerifyCouponVo.setGoodsList(merCouponGoodsList); + MemberCoupon memberCoupon = verifyCouponGetVo.getMemberCoupon(); + //生成服务 + ConsumerGoods consumerGoods; + String consumerGoodsId; + GoodsFile goodsFile; + for (Goods goods : goodsList) { + consumerGoods = new ConsumerGoods(); + consumerGoodsId = IdUtils.simpleUUID(); + consumerGoods.setConsumerGoodsId(consumerGoodsId); + consumerGoods.setDelFlag(0); + consumerGoods.setServiceStatus(1); + consumerGoods.setShopId(memberCoupon.getShopId()); + consumerGoods.setUserId(memberCoupon.getUserId()); + consumerGoods.setSourceFrom(2); + consumerGoods.setMemberCouponId(memberCoupon.getId()); + consumerGoods.setGoodsId(goods.getGoodsId()); + consumerGoods.setGoodsName(goods.getGoodsName()); + consumerGoods.setCycleNumFlag(goods.getCycleNumFlag()); + consumerGoods.setServiceNum(goods.getServiceNum()); + consumerGoods.setUsedNum(0); + consumerGoods.setGoodsType(goods.getGoodsType()); + consumerGoods.setCreateTime(new Date()); + consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction()); + goodsFile = remoteGoodsService.getGoodsFile(goods.getGoodsId()).getData(); + consumerGoods.setGoodsPicture(goodsFile.getFileUrl()); + consumerGoods.setGoodsNurses(goods.getGoodsNurses()); + consumerGoods.setSourceFrom(1); + consumerGoodsService.save(consumerGoods); + } + return merVerifyCouponVo; + } + + /** + * 收银未结清订单列表 + * + * @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()) { + 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) { + 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) { + 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; + String memberCouponId; + Goods goods; + BigDecimal goodsPrice; + BigDecimal goodsTotalPrice; + BigDecimal goodsRealPrice; + Long shopId = merNewOrderDto.getShopId(); + Shop shop = remoteShopService.getShop(shopId).getData(); + List<AppMemberCouponVo> appMemberCouponVoList = remoteCouponService.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"); + BigDecimal discountPercent; + BigDecimal goodsDeposit; + BigDecimal orderGoodsMoney = new BigDecimal("0.00"); + BigDecimal couponDiscount = new BigDecimal("0.00"); + BigDecimal orderPayDeposit = new BigDecimal("0.00"); + BigDecimal orderPayMoney = new BigDecimal("0.00"); + String orderId = IdUtils.simpleUUID(); + String orderNo = CodeFactoryUtil.getShopOrderNo(); + OrderGoods orderGoods; + String orderGoodsId; + BigDecimal cycleMoney = new BigDecimal("0.00"); + BigDecimal experienceMoney = new BigDecimal("0.00"); + BigDecimal serviceMoney = new BigDecimal("0.00"); + BigDecimal goodsMoney = new BigDecimal("0.00"); + for (AppBuyGoodsDto appBuyGoodsDto : appBuyGoodsDtoList) { + goodsId = appBuyGoodsDto.getGoodsId(); + memberCouponId = appBuyGoodsDto.getMemberCouponId(); + goods = remoteGoodsService.getGoods(goodsId).getData(); + buyNum = appBuyGoodsDto.getBuyNum(); + goodsPrice = goods.getSalesPrice(); + serviceNum = goods.getServiceNum(); + //商户定制价格 + 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 (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 && 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 && appMemberCouponVo.getDiscountMoney() != null) { + discountMoney = appMemberCouponVo.getDiscountMoney(); + goodsRealPrice = goodsTotalPrice.subtract(discountMoney); + } + } + } + + goodsDeposit = goods.getSubscription(); + if (goodsDeposit == null) { + goodsDeposit = new BigDecimal("0.00"); + } + goodsNum = goodsNum + buyNum; + orderGoodsMoney = orderGoodsMoney.add(goodsTotalPrice); + couponDiscount = couponDiscount.add(discountMoney); + orderPayDeposit = orderPayDeposit.add(goodsDeposit); + orderPayMoney = orderPayMoney.add(goodsRealPrice); + //创建OrderGoods + orderGoods = new OrderGoods(); + orderGoodsId = IdUtils.simpleUUID(); + orderGoods.setOrderGoodsId(orderGoodsId); + orderGoods.setDelFlag(0); + orderGoods.setOrderId(orderId); + orderGoods.setGoodsId(goodsId); + orderGoods.setBuyNum(buyNum); + if (null != memberCouponId) { + orderGoods.setCouponId(memberCouponId.toString()); + } + orderGoods.setGoodsPrice(goodsPrice); + orderGoods.setGoodsTotalMoney(orderGoodsMoney); + orderGoods.setGoodsReceivableMoney(goodsRealPrice); + orderGoods.setCycleNumFlag(goods.getCycleNumFlag()); + orderGoods.setServiceNum(serviceNum); + orderGoods.setGoodsType(goods.getGoodsType()); + orderGoodsService.save(orderGoods); + switch(orderGoods.getGoodsType()){ + case 1: + cycleMoney = cycleMoney.add(orderGoods.getGoodsReceivableMoney()); + break; + case 2: + serviceMoney = serviceMoney.add(orderGoods.getGoodsReceivableMoney()); + break; + case 3: + experienceMoney = experienceMoney.add(orderGoods.getGoodsReceivableMoney()); + break; + case 4: + goodsMoney = goodsMoney.add(orderGoods.getGoodsReceivableMoney()); + break; + default: + break; + } + } + //创建订单 + Order order = new Order(); + order.setOrderId(orderId); + order.setDelFlag(0); + order.setOrderStatus(3); + order.setOrderNo(orderNo); + 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) { + order.setPayMoney(orderPayMoney); + order.setOnlinePayMoney(orderPayMoney); + order.setCloseFlag(1); + } else if (order.getPayType() == 2) { + order.setPayMoney(orderPayDeposit); + order.setOnlinePayMoney(orderPayDeposit); + order.setCloseFlag(0); + } + order.setOrderRemark(merNewOrderDto.getOrderRemark()); + order.setGoodsNum(goodsNum); + 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.listAppVoByOrderId(orderId); + ConsumerGoods consumerGoods; + String consumerGoodsId; + for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) { + consumerGoods = new ConsumerGoods(); + goods = remoteGoodsService.getGoods(appUserOrderGoodsPageVo.getGoodsId()).getData(); + consumerGoodsId = IdUtils.simpleUUID(); + consumerGoods.setConsumerGoodsId(consumerGoodsId); + consumerGoods.setDelFlag(0); + consumerGoods.setServiceStatus(1); + consumerGoods.setShopId(order.getShopId()); + consumerGoods.setUserId(order.getUserId()); + consumerGoods.setOrderId(orderId); + consumerGoods.setOrderGoodsId(appUserOrderGoodsPageVo.getOrderGoodsId()); + consumerGoods.setGoodsId(appUserOrderGoodsPageVo.getGoodsId()); + consumerGoods.setGoodsName(appUserOrderGoodsPageVo.getGoodsName()); + consumerGoods.setCycleNumFlag(appUserOrderGoodsPageVo.getCycleNumFlag()); + consumerGoods.setServiceNum(appUserOrderGoodsPageVo.getServiceNum()); + consumerGoods.setUsedNum(0); + consumerGoods.setGoodsType(appUserOrderGoodsPageVo.getGoodsType()); + consumerGoods.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); + } + ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto(); + shopTotalChangeDto.setShopId(order.getShopId()); + shopTotalChangeDto.setCycleMoney(cycleMoney); + shopTotalChangeDto.setServiceMoney(serviceMoney); + shopTotalChangeDto.setExperienceMoney(experienceMoney); + shopTotalChangeDto.setGoodsMoney(goodsMoney); + remoteShopService.changeShopTotal(shopTotalChangeDto); + } + + + /** + * @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; + } + + /** + * @param mgtShopOrderPageDto + * @return MgtMemberOrderTotalVo + * @description 获取订单统计 + * @author jqs + * @date 2023/6/16 12:51 + */ + @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; + } + + /** + * @param page + * @param mgtShopOrderPageDto + * @return List<MgtShopOrderPageVo> + * @description 分页获取门店订单列表 + * @author jqs + * @date 2023/6/16 14:57 + */ + @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; + } + + + /** + * @param orderId + * @return MgtOrderDetailVo + * @description 获取订单详情 + * @author jqs + * @date 2023/6/16 16:49 + */ + @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; + } + + /** + * @param + * @return MgtBulletinBoardVo + * @description boardOrderTotal + * @author jqs34 + * @date 2023/6/18 17:20 + */ + @Override + public MgtBulletinBoardVo boardOrderTotal() { + MgtBulletinBoardVo mgtBulletinBoardVo = orderMapper.boardOrderTotal(); + return mgtBulletinBoardVo; + } + + /** + * @param mgtBaseShopDto + * @return MgtTotalOrderTotalVo + * @description getTotalOrderTotal + * @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> MgtMapIntTotalVos = orderMapper.listTotalOrderTotal(mgtBaseShopDto); + if (MgtMapIntTotalVos != null && MgtMapIntTotalVos.size() > 0) { + String[] orderTotalKey = new String[MgtMapIntTotalVos.size()]; + Integer[] orderTotalValue = new Integer[MgtMapIntTotalVos.size()]; + BigDecimal[] orderMoneyValue = new BigDecimal[MgtMapIntTotalVos.size()]; + for (int i = 0; i < MgtMapIntTotalVos.size(); i++) { + orderTotalKey[i] = MgtMapIntTotalVos.get(i).getMapKey(); + orderTotalValue[i] = MgtMapIntTotalVos.get(i).getMapValueFirst(); + orderMoneyValue[i] = MgtMapIntTotalVos.get(i).getMapValueSecond(); + } + mgtTotalOrderTotalVo.setOrderTotalKey(orderTotalKey); + mgtTotalOrderTotalVo.setOrderTotalValue(orderTotalValue); + mgtTotalOrderTotalVo.setOrderMoneyValue(orderMoneyValue); + } + //获取商品分类销售数据 + List<MgtMapTotalPlusVo> MgtMapIntTotalVoGoodsType = orderMapper.listTotalOrderTotalGoodsType(mgtBaseShopDto); + List<MgtMapIntTotalVo> goodsTypeTotalList = new ArrayList<>(); + List<MgtMapBigTotalVo> goodsTypeMoneyList = new ArrayList<>(); + if (MgtMapIntTotalVoGoodsType != null && MgtMapIntTotalVoGoodsType.size() > 0) { + MgtMapIntTotalVo MgtMapIntTotalVo; + MgtMapBigTotalVo mgtMapBigTotalVo; + // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组 + for (int i = 0; i < MgtMapIntTotalVoGoodsType.size(); i++) { + MgtMapIntTotalVo = new MgtMapIntTotalVo(); + mgtMapBigTotalVo = new MgtMapBigTotalVo(); + MgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); + mgtMapBigTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()); + if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("1")) { + MgtMapIntTotalVo.setMapKey("周期"); + mgtMapBigTotalVo.setMapKey("周期"); + mgtTotalOrderTotalVo.setCycleTotal(mgtTotalOrderTotalVo.getCycleTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); + mgtTotalOrderTotalVo.setCycleMoney(mgtTotalOrderTotalVo.getCycleMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond())); + } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("2")) { + MgtMapIntTotalVo.setMapKey("服务"); + mgtMapBigTotalVo.setMapKey("服务"); + mgtTotalOrderTotalVo.setServiceTotal(mgtTotalOrderTotalVo.getServiceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); + mgtTotalOrderTotalVo.setServiceMoney(mgtTotalOrderTotalVo.getServiceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond())); + } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("3")) { + MgtMapIntTotalVo.setMapKey("体验"); + mgtMapBigTotalVo.setMapKey("体验"); + mgtTotalOrderTotalVo.setExperienceTotal(mgtTotalOrderTotalVo.getExperienceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); + mgtTotalOrderTotalVo.setExperienceMoney(mgtTotalOrderTotalVo.getExperienceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond())); + } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) { + MgtMapIntTotalVo.setMapKey("单品"); + mgtMapBigTotalVo.setMapKey("单品"); + } + goodsTypeTotalList.add(MgtMapIntTotalVo); + goodsTypeMoneyList.add(mgtMapBigTotalVo); + } + mgtTotalOrderTotalVo.setGoodsTypeTotalList(goodsTypeTotalList); + mgtTotalOrderTotalVo.setGoodsTypeMoneyList(goodsTypeMoneyList); + } + //获取商品销售排名 + List<MgtMapBigTotalVo> goodsRankList = orderMapper.listTotalOrderTotalGoodsRank(mgtBaseShopDto); + if (goodsRankList != null && goodsRankList.size() > 0) { + goodsRankList = bigListRemoveNull(goodsRankList); + mgtTotalOrderTotalVo.setGoodsRankList(goodsRankList); + } + //获取来源销售排名 + List<MgtMapBigTotalVo> orderFromList = orderMapper.listTotalOrderTotalOrderFrom(mgtBaseShopDto); + if (orderFromList != null && orderFromList.size() > 0) { + orderFromList = bigListRemoveNull(orderFromList); + mgtTotalOrderTotalVo.setOrderFromRankList(orderFromList); + } + return mgtTotalOrderTotalVo; + } + + /** + * @param MgtMapIntTotalVos + * @return List<MgtMapIntTotalVo> + * @description 去除空字符串 + * @author jqs + * @date 2023/6/27 17:35 + */ + private List<MgtMapIntTotalVo> listRemoveNull(List<MgtMapIntTotalVo> MgtMapIntTotalVos) { + for (int i = 0; i < MgtMapIntTotalVos.size(); i++) { + if (StringUtils.isBlank(MgtMapIntTotalVos.get(i).getMapKey())) { + MgtMapIntTotalVos.remove(i); + } + } + return MgtMapIntTotalVos; + } + + /** + * @param MgtMapIntTotalVos + * @return List<MgtMapIntTotalVo> + * @description 去除空字符串 + * @author jqs + * @date 2023/6/27 17:35 + */ + private List<MgtMapBigTotalVo> bigListRemoveNull(List<MgtMapBigTotalVo> MgtMapIntTotalVos) { + for (int i = 0; i < MgtMapIntTotalVos.size(); i++) { + if (StringUtils.isBlank(MgtMapIntTotalVos.get(i).getMapKey())) { + MgtMapIntTotalVos.remove(i); + } + } + return MgtMapIntTotalVos; + } + + /** + * @param mgtBaseShopDto + * @return MgtTotalActivityTotalVo + * @description + * @author jqs + * @date 2023/6/20 9:27 + */ + @Override + public MgtTotalActivityTotalVo getTotalActivityTotal(MgtBaseShopDto mgtBaseShopDto) { + //获取基础统计 + MgtTotalActivityTotalVo totalActivityTotalVo = orderMapper.getTotalActivityTotal(mgtBaseShopDto); + //获取商品分类销售数据 + List<MgtMapTotalPlusVo> MgtMapIntTotalVoGoodsType = orderMapper.listTotalActivityTotalGoodsType(mgtBaseShopDto); + if (MgtMapIntTotalVoGoodsType != null && MgtMapIntTotalVoGoodsType.size() > 0) { + List<MgtMapIntTotalVo> goodsTypeTotalList = new ArrayList<>(); + List<MgtMapBigTotalVo> goodsTypeMoneyList = new ArrayList<>(); + totalActivityTotalVo.setCycleTotal(0); + totalActivityTotalVo.setCycleMoney(BigDecimal.ZERO); + totalActivityTotalVo.setServiceTotal(0); + totalActivityTotalVo.setServiceMoney(BigDecimal.ZERO); + totalActivityTotalVo.setExperienceTotal(0); + totalActivityTotalVo.setExperienceMoney(BigDecimal.ZERO); + // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组 + MgtMapIntTotalVo MgtMapIntTotalVo; + MgtMapBigTotalVo mgtMapBigTotalVo; + // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组 + for (int i = 0; i < MgtMapIntTotalVoGoodsType.size(); i++) { + MgtMapIntTotalVo = new MgtMapIntTotalVo(); + mgtMapBigTotalVo = new MgtMapBigTotalVo(); + MgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); + mgtMapBigTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()); + if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("1")) { + MgtMapIntTotalVo.setMapKey("周期"); + mgtMapBigTotalVo.setMapKey("周期"); + totalActivityTotalVo.setCycleTotal(totalActivityTotalVo.getCycleTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); + totalActivityTotalVo.setCycleMoney(totalActivityTotalVo.getCycleMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond())); + } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("2")) { + MgtMapIntTotalVo.setMapKey("服务"); + mgtMapBigTotalVo.setMapKey("服务"); + totalActivityTotalVo.setServiceTotal(totalActivityTotalVo.getServiceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); + totalActivityTotalVo.setServiceMoney(totalActivityTotalVo.getServiceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond())); + } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("3")) { + MgtMapIntTotalVo.setMapKey("体验"); + mgtMapBigTotalVo.setMapKey("体验"); + totalActivityTotalVo.setExperienceTotal(totalActivityTotalVo.getExperienceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); + totalActivityTotalVo.setExperienceMoney(totalActivityTotalVo.getExperienceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond())); + } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) { + MgtMapIntTotalVo.setMapKey("单品"); + mgtMapBigTotalVo.setMapKey("单品"); + } + goodsTypeTotalList.add(MgtMapIntTotalVo); + goodsTypeMoneyList.add(mgtMapBigTotalVo); + } + totalActivityTotalVo.setGoodsTypeTotalList(goodsTypeTotalList); + totalActivityTotalVo.setGoodsTypeMoneyList(goodsTypeMoneyList); + } + //获取订单分布 + List<MgtMapTotalPlusVo> MgtMapIntTotalVos = orderMapper.listTotalActivityTotal(mgtBaseShopDto); + if (MgtMapIntTotalVos != null && MgtMapIntTotalVos.size() > 0) { + String[] orderTotalKey = new String[MgtMapIntTotalVos.size()]; + Integer[] orderTotalValue = new Integer[MgtMapIntTotalVos.size()]; + BigDecimal[] orderMoneyValue = new BigDecimal[MgtMapIntTotalVos.size()]; + for (int i = 0; i < MgtMapIntTotalVos.size(); i++) { + orderTotalKey[i] = MgtMapIntTotalVos.get(i).getMapKey(); + orderTotalValue[i] = MgtMapIntTotalVos.get(i).getMapValueFirst(); + orderMoneyValue[i] = MgtMapIntTotalVos.get(i).getMapValueSecond(); + } + totalActivityTotalVo.setOrderTotalKey(orderTotalKey); + totalActivityTotalVo.setOrderTotalValue(orderTotalValue); + totalActivityTotalVo.setOrderMoneyValue(orderMoneyValue); + } + return totalActivityTotalVo; + } + + /** + * @param mgtActivityAgeDto + * @return MgtTotalActivityTotalVo + * @description + * @author jqs + * @date 2023/6/20 9:56 + */ + @Override + public MgtTotalActivityTotalVo getTotalActivityAgeRank(MgtActivityAgeDto mgtActivityAgeDto) { + List<Long> userIds = orderMapper.getUserIdAgeRank(mgtActivityAgeDto); + mgtActivityAgeDto.setUserIds(userIds); + userIds = remoteMemberService.listUserIdByAge(mgtActivityAgeDto).getData(); + mgtActivityAgeDto.setUserIds(userIds); + List<MgtMapIntTotalVo> ageRankList = orderMapper.getTotalActivityAgeRank(mgtActivityAgeDto); + ageRankList = listRemoveNull(ageRankList); + MgtTotalActivityTotalVo totalActivityTotalVo = new MgtTotalActivityTotalVo(); + String[] activityAgeKey = new String[ageRankList.size()]; + Integer[] activityAgeValue = new Integer[ageRankList.size()]; + if (!ageRankList.isEmpty()) { + MgtMapIntTotalVo MgtMapIntTotalVo; + for (int i = 0; i < ageRankList.size(); i++) { + MgtMapIntTotalVo = ageRankList.get(i); + activityAgeKey[i] = MgtMapIntTotalVo.getMapKey(); + activityAgeValue[i] = MgtMapIntTotalVo.getMapValue(); + } + } + totalActivityTotalVo.setActivityAgeKey(activityAgeKey); + totalActivityTotalVo.setActivityAgeValue(activityAgeValue); + return totalActivityTotalVo; + } + + /** + * @param mgtBaseShopDto + * @return MgtTotalDataTotalVo + * @description + * @author jqs + * @date 2023/6/20 15:31 + */ + @Override + public MgtTotalDataTotalVo getTotalDataTotal(MgtBaseShopDto mgtBaseShopDto) { + //获取人数统计 + MgtTotalDataTotalVo mgtTotalDataTotalVo = orderMapper.getTotalDataTotal(mgtBaseShopDto); + BigDecimal salesTotal = orderMapper.shopSalesTotal(mgtBaseShopDto); + mgtTotalDataTotalVo.setSalesTotal(salesTotal); + Integer reorderPerson = orderMapper.getReorderPerson(mgtBaseShopDto); + mgtTotalDataTotalVo.setReorderPerson(reorderPerson); + Integer returnedPerson = orderMapper.getReturnedPerson(mgtBaseShopDto); + mgtTotalDataTotalVo.setReturnedPerson(returnedPerson); + return mgtTotalDataTotalVo; + } + + /** + * @param mgtBasePlatformDto + * @return List<MgtMapIntTotalVo> + * @description + * @author jqs + * @date 2023/6/21 15:26 + */ + @Override + public List<MgtMapIntTotalVo> listMemberGoodsRank(MgtBasePlatformDto mgtBasePlatformDto) { + return orderMapper.listMemberGoodsRank(mgtBasePlatformDto); + } + + /** + * @param mgtBasePlatformDto + * @return List<MgtTotalDataTotalVo> + * @description 获取平台商户数据统计 + * @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); + Shop shop = remoteShopService.getShop(shopId).getData(); + mgtTotalDataTotalVo.setShopName(shop.getShopName()); + mgtTotalDataTotalVoList.add(mgtTotalDataTotalVo); + } + } + return mgtTotalDataTotalVoList; + } + + /** + * @param mgtBasePlatformDto + * @return MgtTotalOrderTotalVo + * @description 获取平台商户订单统计 + * @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> MgtMapIntTotalVos = orderMapper.listPlTotalOrderTotal(mgtBasePlatformDto); + if (MgtMapIntTotalVos != null && MgtMapIntTotalVos.size() > 0) { + String[] orderTotalKey = new String[MgtMapIntTotalVos.size()]; + Integer[] orderTotalValue = new Integer[MgtMapIntTotalVos.size()]; + BigDecimal[] orderMoneyValue = new BigDecimal[MgtMapIntTotalVos.size()]; + for (int i = 0; i < MgtMapIntTotalVos.size(); i++) { + orderTotalKey[i] = MgtMapIntTotalVos.get(i).getMapKey(); + orderTotalValue[i] = MgtMapIntTotalVos.get(i).getMapValueFirst(); + orderMoneyValue[i] = MgtMapIntTotalVos.get(i).getMapValueSecond(); + } + mgtTotalOrderTotalVo.setOrderTotalKey(orderTotalKey); + mgtTotalOrderTotalVo.setOrderTotalValue(orderTotalValue); + mgtTotalOrderTotalVo.setOrderMoneyValue(orderMoneyValue); + } + //获取商品分类销售数据 + List<MgtMapTotalPlusVo> MgtMapIntTotalVoGoodsType = orderMapper.listPlTotalOrderTotalGoodsType(mgtBasePlatformDto); + List<MgtMapIntTotalVo> goodsTypeTotalList = new ArrayList<>(); + List<MgtMapBigTotalVo> goodsTypeMoneyList = new ArrayList<>(); + mgtTotalOrderTotalVo.setCycleTotal(0); + mgtTotalOrderTotalVo.setCycleMoney(BigDecimal.ZERO); + mgtTotalOrderTotalVo.setServiceTotal(0); + mgtTotalOrderTotalVo.setServiceMoney(BigDecimal.ZERO); + mgtTotalOrderTotalVo.setExperienceTotal(0); + mgtTotalOrderTotalVo.setExperienceMoney(BigDecimal.ZERO); + if (MgtMapIntTotalVoGoodsType != null && MgtMapIntTotalVoGoodsType.size() > 0) { + MgtMapIntTotalVo MgtMapIntTotalVo; + MgtMapBigTotalVo mgtMapBigTotalVo; + // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组 + for (int i = 0; i < MgtMapIntTotalVoGoodsType.size(); i++) { + MgtMapIntTotalVo = new MgtMapIntTotalVo(); + mgtMapBigTotalVo = new MgtMapBigTotalVo(); + MgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); + mgtMapBigTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()); + if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("1")) { + MgtMapIntTotalVo.setMapKey("周期"); + mgtMapBigTotalVo.setMapKey("周期"); + mgtTotalOrderTotalVo.setCycleTotal(mgtTotalOrderTotalVo.getCycleTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); + mgtTotalOrderTotalVo.setCycleMoney(mgtTotalOrderTotalVo.getCycleMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond())); + } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("2")) { + MgtMapIntTotalVo.setMapKey("服务"); + mgtMapBigTotalVo.setMapKey("服务"); + mgtTotalOrderTotalVo.setServiceTotal(mgtTotalOrderTotalVo.getServiceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); + mgtTotalOrderTotalVo.setServiceMoney(mgtTotalOrderTotalVo.getServiceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond())); + } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("3")) { + MgtMapIntTotalVo.setMapKey("体验"); + mgtMapBigTotalVo.setMapKey("体验"); + mgtTotalOrderTotalVo.setExperienceTotal(mgtTotalOrderTotalVo.getExperienceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); + mgtTotalOrderTotalVo.setExperienceMoney(mgtTotalOrderTotalVo.getExperienceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond())); + } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) { + MgtMapIntTotalVo.setMapKey("单品"); + mgtMapBigTotalVo.setMapKey("单品"); + } + goodsTypeTotalList.add(MgtMapIntTotalVo); + goodsTypeMoneyList.add(mgtMapBigTotalVo); + } + mgtTotalOrderTotalVo.setGoodsTypeTotalList(goodsTypeTotalList); + mgtTotalOrderTotalVo.setGoodsTypeMoneyList(goodsTypeMoneyList); + } + //获取商品销售排名 + List<MgtMapBigTotalVo> goodsRankList = orderMapper.listPlTotalOrderTotalGoodsRank(mgtBasePlatformDto); + if (goodsRankList != null && goodsRankList.size() > 0) { + goodsRankList = bigListRemoveNull(goodsRankList); + mgtTotalOrderTotalVo.setGoodsRankList(goodsRankList); + } + //获取来源销售排名 + List<MgtMapBigTotalVo> orderFromList = orderMapper.listPlTotalOrderTotalOrderFrom(mgtBasePlatformDto); + if (orderFromList != null && orderFromList.size() > 0) { + orderFromList = bigListRemoveNull(orderFromList); + mgtTotalOrderTotalVo.setOrderFromRankList(orderFromList); + } + return mgtTotalOrderTotalVo; + } + + /** + * @param mgtBasePlatformDto + * @return MgtTotalActivityTotalVo + * @description + * @author jqs + * @date 2023/6/20 9:27 + */ + @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> MgtMapIntTotalVoGoodsType = orderMapper.listPlTotalActivityTotalGoodsType(mgtBasePlatformDto); + List<MgtMapIntTotalVo> goodsTypeTotalList = new ArrayList<>(); + List<MgtMapBigTotalVo> goodsTypeMoneyList = new ArrayList<>(); + totalActivityTotalVo.setCycleTotal(0); + totalActivityTotalVo.setCycleMoney(BigDecimal.ZERO); + totalActivityTotalVo.setServiceTotal(0); + totalActivityTotalVo.setServiceMoney(BigDecimal.ZERO); + totalActivityTotalVo.setExperienceTotal(0); + totalActivityTotalVo.setExperienceMoney(BigDecimal.ZERO); + if (MgtMapIntTotalVoGoodsType != null && MgtMapIntTotalVoGoodsType.size() > 0) { + MgtMapIntTotalVo MgtMapIntTotalVo; + MgtMapBigTotalVo mgtMapBigTotalVo; + // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组 + for (int i = 0; i < MgtMapIntTotalVoGoodsType.size(); i++) { + MgtMapIntTotalVo = new MgtMapIntTotalVo(); + mgtMapBigTotalVo = new MgtMapBigTotalVo(); + MgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); + mgtMapBigTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()); + if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("1")) { + MgtMapIntTotalVo.setMapKey("周期"); + mgtMapBigTotalVo.setMapKey("周期"); + totalActivityTotalVo.setCycleTotal(totalActivityTotalVo.getCycleTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); + totalActivityTotalVo.setCycleMoney(totalActivityTotalVo.getCycleMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond())); + } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("2")) { + MgtMapIntTotalVo.setMapKey("服务"); + mgtMapBigTotalVo.setMapKey("服务"); + totalActivityTotalVo.setServiceTotal(totalActivityTotalVo.getServiceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); + totalActivityTotalVo.setServiceMoney(totalActivityTotalVo.getServiceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond())); + } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("3")) { + MgtMapIntTotalVo.setMapKey("体验"); + mgtMapBigTotalVo.setMapKey("体验"); + totalActivityTotalVo.setExperienceTotal(totalActivityTotalVo.getExperienceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); + totalActivityTotalVo.setExperienceMoney(totalActivityTotalVo.getExperienceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond())); + } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) { + MgtMapIntTotalVo.setMapKey("单品"); + mgtMapBigTotalVo.setMapKey("单品"); + } + } + totalActivityTotalVo.setGoodsTypeTotalList(goodsTypeTotalList); + totalActivityTotalVo.setGoodsTypeMoneyList(goodsTypeMoneyList); + } + //获取订单分布 + List<MgtMapTotalPlusVo> MgtMapIntTotalVos = orderMapper.listPlTotalActivityTotal(mgtBasePlatformDto); + if (MgtMapIntTotalVos != null && MgtMapIntTotalVos.size() > 0) { + String[] orderTotalKey = new String[MgtMapIntTotalVos.size()]; + Integer[] orderTotalValue = new Integer[MgtMapIntTotalVos.size()]; + BigDecimal[] orderMoneyValue = new BigDecimal[MgtMapIntTotalVos.size()]; + for (int i = 0; i < MgtMapIntTotalVos.size(); i++) { + orderTotalKey[i] = MgtMapIntTotalVos.get(i).getMapKey(); + orderTotalValue[i] = MgtMapIntTotalVos.get(i).getMapValueFirst(); + orderMoneyValue[i] = MgtMapIntTotalVos.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<MgtMapBigTotalVo> shopActivityRank = orderMapper.listPlTotalShopActivityRank(mgtBasePlatformDto); + if (shopActivityRank != null && shopActivityRank.size() > 0) { + shopActivityRank = bigListRemoveNull(shopActivityRank); + totalActivityTotalVo.setShopSalesRankList(shopActivityRank); + } + //商户活动销售额排名 + List<MgtMapBigTotalVo> shopActivitySalesRank = orderMapper.listPlTotalShopActivitySalesRank(mgtBasePlatformDto); + if (shopActivitySalesRank != null && shopActivitySalesRank.size() > 0) { + shopActivitySalesRank = bigListRemoveNull(shopActivitySalesRank); + totalActivityTotalVo.setShopSalesRankList(shopActivitySalesRank); + } + //活动销售额排名 + List<MgtMapBigTotalVo> activitySalesRank = orderMapper.listPlTotalActivitySalesRank(mgtBasePlatformDto); + if (activitySalesRank != null && activitySalesRank.size() > 0) { + activitySalesRank = bigListRemoveNull(activitySalesRank); + totalActivityTotalVo.setActivitySalesRankList(activitySalesRank); + } + return totalActivityTotalVo; + } + + /** + * @param mgtPlActivityAgeDto + * @return MgtTotalActivityTotalVo + * @description + * @author jqs + * @date 2023/6/20 9:56 + */ + @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); + List<MgtMapIntTotalVo> ageRankList = orderMapper.getPlTotalActivityAgeRank(mgtPlActivityAgeDto); + ageRankList = listRemoveNull(ageRankList); + MgtPlTotalActivityTotalVo plTotalActivityTotalVo = new MgtPlTotalActivityTotalVo(); + String[] activityAgeKey = new String[ageRankList.size()]; + Integer[] activityAgeValue = new Integer[ageRankList.size()]; + if (!ageRankList.isEmpty()) { + MgtMapIntTotalVo MgtMapIntTotalVo; + for (int i = 0; i < ageRankList.size(); i++) { + MgtMapIntTotalVo = ageRankList.get(i); + activityAgeKey[i] = MgtMapIntTotalVo.getMapKey(); + activityAgeValue[i] = MgtMapIntTotalVo.getMapValue(); + } + } + plTotalActivityTotalVo.setActivityAgeKey(activityAgeKey); + plTotalActivityTotalVo.setActivityAgeValue(activityAgeValue); + return plTotalActivityTotalVo; + } + + /** + * @param verifyCode + * @return MerVerifyCouponVo + * @description 获取优惠券核销信息 + * @author jqs + * @date 2023/6/27 11:10 + */ + @Override + public MerVerifyCouponVo verifyCoupon(String verifyCode) { + // 创建MerVerifyCouponVo对象 + MerVerifyCouponVo merVerifyCouponVo = new MerVerifyCouponVo(); + // 调用remoteCouponService的getVerifyCoupon方法获取MerVerifyCouponGetVo对象 + MerVerifyCouponGetVo verifyCouponGetVo = remoteCouponService.getVerifyCoupon(verifyCode).getData(); + List<Goods> goodsList = verifyCouponGetVo.getGoodsList(); + Long userId = verifyCouponGetVo.getUserId(); + // 调用remoteMemberService的getMember方法获取Member对象 + Member member = remoteMemberService.getMember(userId).getData(); + merVerifyCouponVo.setUserName(member.getNickName()); + merVerifyCouponVo.setUserMobile(member.getMobile()); + merVerifyCouponVo.setCouponFrom(verifyCouponGetVo.getCouponFrom()); + // 将goodsList转换为MerCouponGoodsListVo列表,并设置相应属性 + List<MerCouponGoodsListVo> merCouponGoodsList = goodsList.stream() + .map(goods -> { + MerCouponGoodsListVo merCouponGoods = new MerCouponGoodsListVo(); + merCouponGoods.setGoodsId(goods.getGoodsId()); + merCouponGoods.setGoodsName(goods.getGoodsName()); + // 设置其他属性 + return merCouponGoods; + }) + .collect(Collectors.toList()); + // 设置merVerifyCouponVo的goodsList属性为merCouponGoodsList + merVerifyCouponVo.setGoodsList(merCouponGoodsList); + return merVerifyCouponVo; + } + + /** + * @description 获取用户未支付金额 + * @author jqs + * @date 2023/6/29 18:00 + * @param merBaseDto + * @return BigDecimal + */ + @Override + public BigDecimal getMemberUnpaidOrder(MerBaseDto merBaseDto){ + BigDecimal unpaidMoney = orderMapper.getMemberUnpaidOrder(merBaseDto); + return unpaidMoney; + } } -- Gitblit v1.7.1