package com.ruoyi.order.service.impl.order;
|
|
|
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.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.service.order.ConsumerGoodsService;
|
import com.ruoyi.order.service.order.OrderGoodsService;
|
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.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.order.mapper.order.OrderMapper;
|
import com.ruoyi.order.service.order.OrderService;
|
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>
|
* 订单 服务实现类
|
* </p>
|
*
|
* @author jqs
|
* @since 2023-04-25
|
*/
|
@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();
|
Order order = this.getById(orderId);
|
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);
|
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);
|
ConsumerGoods consumerGoods;
|
String consumerGoodsId;
|
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.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);
|
}
|
//生成返回
|
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());
|
return merVerifyOrderVo;
|
}
|
|
/**
|
* 收银未结清订单列表
|
*
|
* @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;
|
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);
|
}
|
//创建订单
|
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);
|
}
|
}
|
|
|
/**
|
* @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> 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);
|
List<MgtMapTotalVo> goodsTypeTotalList = new ArrayList<>();
|
List<MgtMapBigTotalVo> goodsTypeMoneyList = new ArrayList<>();
|
if (mgtMapTotalVoGoodsType != null && mgtMapTotalVoGoodsType.size() > 0) {
|
MgtMapTotalVo mgtMapTotalVo;
|
MgtMapBigTotalVo mgtMapBigTotalVo;
|
// 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
|
for (int i = 0; i < mgtMapTotalVoGoodsType.size(); i++) {
|
mgtMapTotalVo = new MgtMapTotalVo();
|
mgtMapBigTotalVo = new MgtMapBigTotalVo();
|
mgtMapTotalVo.setMapValue(mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
|
mgtMapBigTotalVo.setMapValue(mgtMapTotalVoGoodsType.get(i).getMapValueSecond());
|
if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("1")) {
|
mgtMapTotalVo.setMapKey("周期");
|
mgtMapBigTotalVo.setMapKey("周期");
|
mgtTotalOrderTotalVo.setCycleTotal(mgtTotalOrderTotalVo.getCycleTotal() + mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
|
mgtTotalOrderTotalVo.setCycleMoney(mgtTotalOrderTotalVo.getCycleMoney().add(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()));
|
} else if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("2")) {
|
mgtMapTotalVo.setMapKey("服务");
|
mgtMapBigTotalVo.setMapKey("服务");
|
mgtTotalOrderTotalVo.setServiceTotal(mgtTotalOrderTotalVo.getServiceTotal() + mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
|
mgtTotalOrderTotalVo.setServiceMoney(mgtTotalOrderTotalVo.getServiceMoney().add(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()));
|
} else if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("3")) {
|
mgtMapTotalVo.setMapKey("体验");
|
mgtMapBigTotalVo.setMapKey("体验");
|
mgtTotalOrderTotalVo.setExperienceTotal(mgtTotalOrderTotalVo.getExperienceTotal() + mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
|
mgtTotalOrderTotalVo.setExperienceMoney(mgtTotalOrderTotalVo.getExperienceMoney().add(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()));
|
} else if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("4")) {
|
mgtMapTotalVo.setMapKey("单品");
|
mgtMapBigTotalVo.setMapKey("单品");
|
}
|
goodsTypeTotalList.add(mgtMapTotalVo);
|
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 mgtMapTotalVos
|
* @return List<MgtMapTotalVo>
|
* @description 去除空字符串
|
* @author jqs
|
* @date 2023/6/27 17:35
|
*/
|
private List<MgtMapTotalVo> listRemoveNull(List<MgtMapTotalVo> mgtMapTotalVos) {
|
for (int i = 0; i < mgtMapTotalVos.size(); i++) {
|
if (StringUtils.isBlank(mgtMapTotalVos.get(i).getMapKey())) {
|
mgtMapTotalVos.remove(i);
|
}
|
}
|
return mgtMapTotalVos;
|
}
|
|
/**
|
* @param mgtMapTotalVos
|
* @return List<MgtMapTotalVo>
|
* @description 去除空字符串
|
* @author jqs
|
* @date 2023/6/27 17:35
|
*/
|
private List<MgtMapBigTotalVo> bigListRemoveNull(List<MgtMapBigTotalVo> mgtMapTotalVos) {
|
for (int i = 0; i < mgtMapTotalVos.size(); i++) {
|
if (StringUtils.isBlank(mgtMapTotalVos.get(i).getMapKey())) {
|
mgtMapTotalVos.remove(i);
|
}
|
}
|
return mgtMapTotalVos;
|
}
|
|
/**
|
* @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> mgtMapTotalVoGoodsType = orderMapper.listTotalActivityTotalGoodsType(mgtBaseShopDto);
|
if (mgtMapTotalVoGoodsType != null && mgtMapTotalVoGoodsType.size() > 0) {
|
List<MgtMapTotalVo> 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);
|
// 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
|
MgtMapTotalVo mgtMapTotalVo;
|
MgtMapBigTotalVo mgtMapBigTotalVo;
|
// 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
|
for (int i = 0; i < mgtMapTotalVoGoodsType.size(); i++) {
|
mgtMapTotalVo = new MgtMapTotalVo();
|
mgtMapBigTotalVo = new MgtMapBigTotalVo();
|
mgtMapTotalVo.setMapValue(mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
|
mgtMapBigTotalVo.setMapValue(mgtMapTotalVoGoodsType.get(i).getMapValueSecond());
|
if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("1")) {
|
mgtMapTotalVo.setMapKey("周期");
|
mgtMapBigTotalVo.setMapKey("周期");
|
totalActivityTotalVo.setCycleTotal(totalActivityTotalVo.getCycleTotal() + mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
|
totalActivityTotalVo.setCycleMoney(totalActivityTotalVo.getCycleMoney().add(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()));
|
} else if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("2")) {
|
mgtMapTotalVo.setMapKey("服务");
|
mgtMapBigTotalVo.setMapKey("服务");
|
totalActivityTotalVo.setServiceTotal(totalActivityTotalVo.getServiceTotal() + mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
|
totalActivityTotalVo.setServiceMoney(totalActivityTotalVo.getServiceMoney().add(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()));
|
} else if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("3")) {
|
mgtMapTotalVo.setMapKey("体验");
|
mgtMapBigTotalVo.setMapKey("体验");
|
totalActivityTotalVo.setExperienceTotal(totalActivityTotalVo.getExperienceTotal() + mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
|
totalActivityTotalVo.setExperienceMoney(totalActivityTotalVo.getExperienceMoney().add(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()));
|
} else if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("4")) {
|
mgtMapTotalVo.setMapKey("单品");
|
mgtMapBigTotalVo.setMapKey("单品");
|
}
|
goodsTypeTotalList.add(mgtMapTotalVo);
|
goodsTypeMoneyList.add(mgtMapBigTotalVo);
|
}
|
totalActivityTotalVo.setGoodsTypeTotalList(goodsTypeTotalList);
|
totalActivityTotalVo.setGoodsTypeMoneyList(goodsTypeMoneyList);
|
}
|
//获取订单分布
|
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;
|
}
|
|
/**
|
* @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<MgtMapTotalVo> 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()) {
|
MgtMapTotalVo mgtMapTotalVo;
|
for (int i = 0; i < ageRankList.size(); i++) {
|
mgtMapTotalVo = ageRankList.get(i);
|
activityAgeKey[i] = mgtMapTotalVo.getMapKey();
|
activityAgeValue[i] = mgtMapTotalVo.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<MgtMapTotalVo>
|
* @description
|
* @author jqs
|
* @date 2023/6/21 15:26
|
*/
|
@Override
|
public List<MgtMapTotalVo> 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> 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);
|
List<MgtMapTotalVo> 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 (mgtMapTotalVoGoodsType != null && mgtMapTotalVoGoodsType.size() > 0) {
|
MgtMapTotalVo mgtMapTotalVo;
|
MgtMapBigTotalVo mgtMapBigTotalVo;
|
// 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
|
for (int i = 0; i < mgtMapTotalVoGoodsType.size(); i++) {
|
mgtMapTotalVo = new MgtMapTotalVo();
|
mgtMapBigTotalVo = new MgtMapBigTotalVo();
|
mgtMapTotalVo.setMapValue(mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
|
mgtMapBigTotalVo.setMapValue(mgtMapTotalVoGoodsType.get(i).getMapValueSecond());
|
if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("1")) {
|
mgtMapTotalVo.setMapKey("周期");
|
mgtMapBigTotalVo.setMapKey("周期");
|
mgtTotalOrderTotalVo.setCycleTotal(mgtTotalOrderTotalVo.getCycleTotal() + mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
|
mgtTotalOrderTotalVo.setCycleMoney(mgtTotalOrderTotalVo.getCycleMoney().add(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()));
|
} else if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("2")) {
|
mgtMapTotalVo.setMapKey("服务");
|
mgtMapBigTotalVo.setMapKey("服务");
|
mgtTotalOrderTotalVo.setServiceTotal(mgtTotalOrderTotalVo.getServiceTotal() + mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
|
mgtTotalOrderTotalVo.setServiceMoney(mgtTotalOrderTotalVo.getServiceMoney().add(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()));
|
} else if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("3")) {
|
mgtMapTotalVo.setMapKey("体验");
|
mgtMapBigTotalVo.setMapKey("体验");
|
mgtTotalOrderTotalVo.setExperienceTotal(mgtTotalOrderTotalVo.getExperienceTotal() + mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
|
mgtTotalOrderTotalVo.setExperienceMoney(mgtTotalOrderTotalVo.getExperienceMoney().add(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()));
|
} else if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("4")) {
|
mgtMapTotalVo.setMapKey("单品");
|
mgtMapBigTotalVo.setMapKey("单品");
|
}
|
goodsTypeTotalList.add(mgtMapTotalVo);
|
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> mgtMapTotalVoGoodsType = orderMapper.listPlTotalActivityTotalGoodsType(mgtBasePlatformDto);
|
List<MgtMapTotalVo> 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 (mgtMapTotalVoGoodsType != null && mgtMapTotalVoGoodsType.size() > 0) {
|
MgtMapTotalVo mgtMapTotalVo;
|
MgtMapBigTotalVo mgtMapBigTotalVo;
|
// 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
|
for (int i = 0; i < mgtMapTotalVoGoodsType.size(); i++) {
|
mgtMapTotalVo = new MgtMapTotalVo();
|
mgtMapBigTotalVo = new MgtMapBigTotalVo();
|
mgtMapTotalVo.setMapValue(mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
|
mgtMapBigTotalVo.setMapValue(mgtMapTotalVoGoodsType.get(i).getMapValueSecond());
|
if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("1")) {
|
mgtMapTotalVo.setMapKey("周期");
|
mgtMapBigTotalVo.setMapKey("周期");
|
totalActivityTotalVo.setCycleTotal(totalActivityTotalVo.getCycleTotal() + mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
|
totalActivityTotalVo.setCycleMoney(totalActivityTotalVo.getCycleMoney().add(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()));
|
} else if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("2")) {
|
mgtMapTotalVo.setMapKey("服务");
|
mgtMapBigTotalVo.setMapKey("服务");
|
totalActivityTotalVo.setServiceTotal(totalActivityTotalVo.getServiceTotal() + mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
|
totalActivityTotalVo.setServiceMoney(totalActivityTotalVo.getServiceMoney().add(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()));
|
} else if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("3")) {
|
mgtMapTotalVo.setMapKey("体验");
|
mgtMapBigTotalVo.setMapKey("体验");
|
totalActivityTotalVo.setExperienceTotal(totalActivityTotalVo.getExperienceTotal() + mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
|
totalActivityTotalVo.setExperienceMoney(totalActivityTotalVo.getExperienceMoney().add(mgtMapTotalVoGoodsType.get(i).getMapValueSecond()));
|
} else if (mgtMapTotalVoGoodsType.get(i).getMapKey().equals("4")) {
|
mgtMapTotalVo.setMapKey("单品");
|
mgtMapBigTotalVo.setMapKey("单品");
|
}
|
}
|
totalActivityTotalVo.setGoodsTypeTotalList(goodsTypeTotalList);
|
totalActivityTotalVo.setGoodsTypeMoneyList(goodsTypeMoneyList);
|
}
|
//获取订单分布
|
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<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<MgtMapTotalVo> 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()) {
|
MgtMapTotalVo mgtMapTotalVo;
|
for (int i = 0; i < ageRankList.size(); i++) {
|
mgtMapTotalVo = ageRankList.get(i);
|
activityAgeKey[i] = mgtMapTotalVo.getMapKey();
|
activityAgeValue[i] = mgtMapTotalVo.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 = new MerVerifyCouponVo();
|
MerVerifyCouponGetVo verifyCouponGetVo = remoteCouponService.getVerifyCoupon(verifyCode).getData();
|
|
return merVerifyCouponVo;
|
}
|
}
|