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.github.binarywang.wxpay.bean.ecommerce.PartnerTransactionsRequest;
|
import com.github.binarywang.wxpay.bean.ecommerce.PartnerTransactionsResult;
|
import com.github.binarywang.wxpay.bean.ecommerce.RefundNotifyResult;
|
import com.github.binarywang.wxpay.bean.ecommerce.TransactionsResult;
|
import com.github.binarywang.wxpay.bean.ecommerce.enums.TradeTypeEnum;
|
import com.github.binarywang.wxpay.bean.profitsharingV3.ProfitSharingNotifyResult;
|
import com.github.binarywang.wxpay.config.WxPayConfig;
|
import com.github.binarywang.wxpay.exception.WxPayException;
|
import com.github.binarywang.wxpay.service.WxPayService;
|
import com.google.common.base.Joiner;
|
import com.google.gson.Gson;
|
import com.ruoyi.common.core.exception.ServiceException;
|
import com.ruoyi.common.core.utils.DateUtils;
|
import com.ruoyi.common.core.utils.StringUtils;
|
import com.ruoyi.common.core.utils.uuid.IdUtils;
|
import com.ruoyi.common.redis.service.RedisService;
|
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.account.OrderPayment;
|
import com.ruoyi.order.domain.pojo.account.OrderRefund;
|
import com.ruoyi.order.domain.pojo.account.ProfitSharing;
|
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.pojo.order.PayRecord;
|
import com.ruoyi.order.domain.vo.*;
|
import com.ruoyi.order.enums.RefundStatusEnum;
|
import com.ruoyi.order.enums.dict.IDict;
|
import com.ruoyi.order.mapper.order.OrderMapper;
|
import com.ruoyi.order.service.account.OrderPaymentService;
|
import com.ruoyi.order.service.account.OrderRefundService;
|
import com.ruoyi.order.service.account.PaymentMessageService;
|
import com.ruoyi.order.service.account.ProfitSharingService;
|
import com.ruoyi.order.service.order.*;
|
import com.ruoyi.system.api.constant.AppErrorConstant;
|
import com.ruoyi.system.api.constant.DelayTaskEnum;
|
import com.ruoyi.system.api.constant.SecurityConstant;
|
import com.ruoyi.system.api.domain.dto.*;
|
import com.ruoyi.system.api.domain.poji.activity.ActivityRecord;
|
import com.ruoyi.system.api.domain.poji.config.DelayTask;
|
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.BirthdayCard;
|
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.member.MemberGiftRecord;
|
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 lombok.extern.slf4j.Slf4j;
|
import org.redisson.api.RLock;
|
import org.redisson.api.RedissonClient;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import javax.annotation.Resource;
|
import java.math.BigDecimal;
|
import java.time.LocalDate;
|
import java.time.format.DateTimeFormatter;
|
import java.util.*;
|
import java.util.concurrent.TimeUnit;
|
import java.util.function.Function;
|
import java.util.stream.Collectors;
|
|
/**
|
* <p>
|
* 订单 服务实现类
|
* </p>
|
*
|
* @author jqs
|
* @since 2023-04-25
|
*/
|
@Service
|
@Slf4j
|
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;
|
|
@Resource
|
private RemoteActivityService remoteActivityService;
|
|
@Resource
|
private RedisService redisService;
|
|
@Resource
|
private PayRecordService payRecordService;
|
|
@Resource
|
private RedissonClient redissonClient;
|
|
@Resource
|
private WxPayService wxService;
|
|
@Resource
|
private PaymentMessageService paymentMessageService;
|
|
@Resource
|
private OrderPaymentService orderPaymentService;
|
|
@Resource
|
private ProfitSharingService profitSharingService;
|
|
@Resource
|
private OrderRefundService orderRefundService;
|
|
/**
|
* @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();
|
//获取商品列表
|
StringJoiner goodsIdSJ = new StringJoiner(",");
|
for (AppBuyGoodsDto appBuyGoodsDto : appBuyGoodsDtoList) {
|
goodsIdSJ.add(appBuyGoodsDto.getGoodsId());
|
}
|
List<Goods> goodsList = remoteGoodsService.listGoodsByGoodsId(goodsIdSJ.toString()).getData();
|
Map<String, Goods> goodsMap = goodsList.stream()
|
.collect(Collectors.toMap(Goods::getGoodsId, Function.identity()));
|
Boolean haveDeposit = false;
|
for (Goods goods : goodsList) {
|
if (goods.getSubscriptionFlag()==1&&goods.getSubscription() != null && goods.getSubscription().compareTo(BigDecimal.ZERO) > 0) {
|
haveDeposit = true;
|
}
|
}
|
String goodsId;
|
Integer buyNum;
|
BigDecimal buyNumBig;
|
String memberCouponId;
|
Goods goods;
|
BigDecimal goodsPrice;
|
BigDecimal goodsTotalPrice;
|
BigDecimal goodsRealPrice;
|
MerBaseDto merBaseDto = new MerBaseDto();
|
merBaseDto.setUserId(userId);
|
merBaseDto.setShopId(appSureOrderDto.getShopId());
|
// 获取用户优惠券列表
|
List<AppMemberCouponVo> appMemberCouponVoList = remoteCouponService.listVoMemberCouponByUserId(merBaseDto).getData();
|
|
// 将优惠券列表转换为Map,以优惠券ID为键
|
Map<String, AppMemberCouponVo> appMemberCouponVoMap = new HashMap<>();
|
if (appMemberCouponVoList != null && !appMemberCouponVoList.isEmpty()) {
|
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");
|
// 遍历购买商品列表
|
HashSet<String> userCouponIdSet = new HashSet<>();
|
for (AppBuyGoodsDto appBuyGoodsDto : appBuyGoodsDtoList) {
|
appSureOrderGoodsVo = new AppSureOrderGoodsVo();
|
discountMoney = BigDecimal.ZERO;
|
useCoupon = 0;
|
goodsId = appBuyGoodsDto.getGoodsId();
|
buyNum = appBuyGoodsDto.getBuyNum();
|
memberCouponId = appBuyGoodsDto.getMemberCouponId();
|
// 获取商品信息
|
goods = goodsMap.get(goodsId);
|
if (goods.getGoodsStatus() != 1) {
|
throw new ServiceException(AppErrorConstant.GOODS_DOWN);
|
}
|
// 设置订单商品信息
|
appSureOrderGoodsVo.setGoodsId(goodsId);
|
appSureOrderGoodsVo.setGoodsName(goods.getGoodsName());
|
appSureOrderGoodsVo.setGoodsIntroduction(goods.getGoodsIntroduction());
|
appSureOrderGoodsVo.setGoodsType(goods.getGoodsType());
|
appSureOrderGoodsVo.setGoodsTag(goods.getGoodsTags());
|
// 获取商品图片
|
goodsFile = remoteGoodsService.getGoodsFile(goodsId).getData();
|
appSureOrderGoodsVo.setGoodsPicture(goodsFile.getFileUrl());
|
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 (StringUtils.isNotBlank(memberCouponId)) {
|
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();
|
discountMoney = appMemberCouponVo.getDiscountMoney();
|
if (goodsTotalPrice.compareTo(moneyThreshold) >= 0 && goodsTotalPrice.compareTo(discountMoney) > 0) {
|
goodsRealPrice = goodsTotalPrice.subtract(discountMoney);
|
useCoupon = 1;
|
userCouponIdSet.add(memberCouponId);
|
appSureOrderGoodsVo.setMemberCouponId(memberCouponId);
|
}
|
} else if (couponType == 2 && appMemberCouponVo.getDiscountPercent() != null) {
|
discountPercent = appMemberCouponVo.getDiscountPercent();
|
goodsRealPrice = goodsTotalPrice.multiply(discountPercent).divide(BigDecimal.TEN, 2, BigDecimal.ROUND_HALF_UP);
|
discountMoney = goodsTotalPrice.subtract(goodsRealPrice);
|
useCoupon = 1;
|
userCouponIdSet.add(memberCouponId);
|
appSureOrderGoodsVo.setMemberCouponId(memberCouponId);
|
} else if (couponType == 3 && appMemberCouponVo.getDiscountMoney() != null) {
|
discountMoney = appMemberCouponVo.getDiscountMoney();
|
if (goodsTotalPrice.compareTo(discountMoney) > 0) {
|
goodsRealPrice = goodsTotalPrice.subtract(discountMoney);
|
if (goodsRealPrice.compareTo(BigDecimal.ZERO) < 0) {
|
goodsRealPrice = BigDecimal.ZERO;
|
}
|
useCoupon = 1;
|
userCouponIdSet.add(memberCouponId);
|
appSureOrderGoodsVo.setMemberCouponId(memberCouponId);
|
}
|
}
|
}
|
}
|
appSureOrderGoodsVo.setUseCoupon(useCoupon);
|
appSureOrderGoodsVo.setGoodsTotalPrice(goodsTotalPrice);
|
appSureOrderGoodsVo.setCouponDiscount(discountMoney);
|
appSureOrderGoodsVo.setGoodsRealPrice(goodsRealPrice);
|
// 获取商品订金
|
goodsDeposit = goods.getSubscription();
|
if (goods.getSubscriptionFlag()==1 && goodsDeposit != null && goodsDeposit.compareTo(BigDecimal.ZERO) > 0) {
|
goodsDeposit = goodsDeposit.multiply(buyNumBig);
|
} else {
|
if (haveDeposit) {
|
goodsDeposit = goodsRealPrice;
|
} else {
|
goodsDeposit = new BigDecimal("0.00");
|
}
|
}
|
appSureOrderGoodsVo.setGoodsDeposit(goodsDeposit);
|
// 计算订单总金额
|
orderGoodsMoney = orderGoodsMoney.add(goodsTotalPrice);
|
couponDiscount = couponDiscount.add(discountMoney);
|
orderPayDeposit = orderPayDeposit.add(goodsDeposit);
|
orderPayMoney = orderPayMoney.add(goodsRealPrice);
|
appSureOrderGoodsVoList.add(appSureOrderGoodsVo);
|
}
|
//处理优惠券列表
|
if (appMemberCouponVoList != null && !appMemberCouponVoList.isEmpty()) {
|
for (AppMemberCouponVo entity : appMemberCouponVoList) {
|
if (userCouponIdSet != null && userCouponIdSet.contains(entity.getMemberCouponId())) {
|
entity.setUseFlag(1);
|
} else {
|
entity.setUseFlag(0);
|
}
|
|
|
}
|
// 过滤商品优惠券列表
|
List<AppMemberCouponVo> appGoodsMemberCouponVoList;
|
for (AppSureOrderGoodsVo sureOrderGoodsVo : appSureOrderGoodsVoList) {
|
appGoodsMemberCouponVoList = new ArrayList<>();
|
for (AppMemberCouponVo entity : appMemberCouponVoList) {
|
if (StringUtils.isBlank(entity.getRelGoodsIds()) || entity.getRelGoodsIds().contains(sureOrderGoodsVo.getGoodsId())) {
|
if (entity.getCouponType() == 1) {
|
if (entity.getMoneyThreshold().compareTo(sureOrderGoodsVo.getGoodsTotalPrice()) <= 0) {
|
appGoodsMemberCouponVoList.add(entity);
|
}
|
/*if (entity.getMoneyThreshold().compareTo(sureOrderGoodsVo.getGoodsTotalPrice()) < 0 && entity.getDiscountMoney().compareTo(sureOrderGoodsVo.getGoodsTotalPrice()) < 0) {
|
appGoodsMemberCouponVoList.add(entity);
|
}*/
|
} else if (entity.getCouponType() == 2) {
|
appGoodsMemberCouponVoList.add(entity);
|
} else if (entity.getCouponType() == 3) {
|
appGoodsMemberCouponVoList.add(entity);
|
/*if (entity.getDiscountMoney().compareTo(sureOrderGoodsVo.getGoodsTotalPrice()) < 0) {
|
appGoodsMemberCouponVoList.add(entity);
|
}*/
|
}
|
|
}
|
}
|
sureOrderGoodsVo.setAppMemberCouponVoList(appGoodsMemberCouponVoList);
|
}
|
}
|
/*if (appMemberCouponVoList != null && !appMemberCouponVoList.isEmpty()) {
|
// 获取商品关联优惠券
|
appGoodsMemberCouponVoList = new ArrayList<>();
|
for(AppSureOrderGoodsVo sureOrderGoodsVo : appSureOrderGoodsVoList){
|
for (AppMemberCouponVo entity : appMemberCouponVoList) {
|
if (StringUtils.isBlank(entity.getRelGoodsIds())) {
|
if (entity.getCouponType() == 1 && entity.getMoneyThreshold() != null && entity.getDiscountMoney() != null) {
|
moneyThreshold = entity.getMoneyThreshold();
|
if (sureOrderGoodsVo.getGoodsTotalPrice().compareTo(moneyThreshold) >= 0) {
|
if(userCouponIdSet==null||!userCouponIdSet.contains(entity.getMemberCouponId())){
|
appGoodsMemberCouponVoList.add(entity);
|
}else{
|
if(sureOrderGoodsVo.getMemberCouponId()!=null&&sureOrderGoodsVo.getMemberCouponId().equals(entity.getMemberCouponId())){
|
appGoodsMemberCouponVoList.add(entity);
|
}
|
}
|
}
|
}else{
|
if(userCouponIdSet==null||!userCouponIdSet.contains(entity.getMemberCouponId())){
|
appGoodsMemberCouponVoList.add(entity);
|
}else{
|
if(sureOrderGoodsVo.getMemberCouponId()!=null&&sureOrderGoodsVo.getMemberCouponId().equals(entity.getMemberCouponId())){
|
appGoodsMemberCouponVoList.add(entity);
|
}
|
}
|
}
|
} else if (entity.getRelGoodsIds().contains(sureOrderGoodsVo.getGoodsId())) {
|
if (entity.getCouponType() == 1 && entity.getMoneyThreshold() != null && entity.getDiscountMoney() != null) {
|
moneyThreshold = entity.getMoneyThreshold();
|
if (sureOrderGoodsVo.getGoodsTotalPrice().compareTo(moneyThreshold) >= 0) {
|
if(userCouponIdSet==null||!userCouponIdSet.contains(entity.getMemberCouponId())){
|
appGoodsMemberCouponVoList.add(entity);
|
}else{
|
if(sureOrderGoodsVo.getMemberCouponId()!=null&&sureOrderGoodsVo.getMemberCouponId().equals(entity.getMemberCouponId())){
|
appGoodsMemberCouponVoList.add(entity);
|
}
|
}
|
}
|
}else{
|
if(userCouponIdSet==null||!userCouponIdSet.contains(entity.getMemberCouponId())){
|
appGoodsMemberCouponVoList.add(entity);
|
}else{
|
if(sureOrderGoodsVo.getMemberCouponId()!=null&&sureOrderGoodsVo.getMemberCouponId().equals(entity.getMemberCouponId())){
|
appGoodsMemberCouponVoList.add(entity);
|
}
|
}
|
}
|
}
|
}
|
sureOrderGoodsVo.setAppMemberCouponVoList(appGoodsMemberCouponVoList);
|
}
|
}*/
|
// 设置订单相关金额
|
appSureOrderVo.setOrderGoodsMoney(orderGoodsMoney);
|
appSureOrderVo.setCouponDiscount(couponDiscount);
|
appSureOrderVo.setOrderPayDeposit(orderPayDeposit);
|
appSureOrderVo.setOrderPayMoney(orderPayMoney);
|
// 设置订单商品列表
|
appSureOrderVo.setAppSureOrderGoodsVoList(appSureOrderGoodsVoList);
|
return appSureOrderVo;
|
}
|
|
/**
|
* @param appPanicBuyDto
|
* @return AppSureOrderVo
|
* @description 抢购商品
|
* @author jqs
|
* @date 2023/7/6 11:45
|
*/
|
@Override
|
public AppPanicBuyVo panicBuyGoods(AppPanicBuyDto appPanicBuyDto) {
|
Long userId = appPanicBuyDto.getUserId();
|
AppPanicBuyVo appPanicBuyVo = new AppPanicBuyVo();
|
String activityId = appPanicBuyDto.getActivityId();
|
String goodsId = appPanicBuyDto.getGoodsId();
|
Integer buyNum = appPanicBuyDto.getBuyNum();
|
BigDecimal buyNumBig;
|
BigDecimal goodsPrice;
|
BigDecimal goodsTotalPrice;
|
BigDecimal goodsRealPrice;
|
BigDecimal goodsDeposit;
|
BigDecimal goodsActivityPrice;
|
GoodsFile goodsFile;
|
BigDecimal orderGoodsMoney = new BigDecimal("0.00");
|
BigDecimal orderPayDeposit = new BigDecimal("0.00");
|
BigDecimal orderPayMoney = new BigDecimal("0.00");
|
ActivityGoodsGetDto activityGoodsGetDto = new ActivityGoodsGetDto();
|
activityGoodsGetDto.setActivityId(activityId);
|
activityGoodsGetDto.setGoodsId(goodsId);
|
activityGoodsGetDto.setUserId(userId);
|
ActivityGoodsGetVo activityGoodsGetVo = remoteActivityService.getUserActivityGoods(activityGoodsGetDto).getData();
|
if (activityGoodsGetVo.getActivityStatus() == 0) {
|
throw new ServiceException(AppErrorConstant.ACTIVITY_NO_START);
|
}
|
if (activityGoodsGetVo.getActivityStatus() == 2) {
|
throw new ServiceException(AppErrorConstant.ACTIVITY_END);
|
}
|
Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + activityId + "-" + goodsId);
|
if (surpNum == null || surpNum < 1) {
|
throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_NULL);
|
}
|
if (activityGoodsGetVo.getAvailableBuyNum() < 1) {
|
throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_BEYOND);
|
}
|
if (activityGoodsGetVo.getAvailableBuyNum() < buyNum) {
|
throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_BEYOND);
|
}
|
Goods goods = remoteGoodsService.getGoods(goodsId).getData();
|
if (goods.getGoodsStatus() != 1) {
|
throw new ServiceException(AppErrorConstant.GOODS_DOWN);
|
}
|
appPanicBuyVo.setActivityId(activityId);
|
appPanicBuyVo.setGoodsId(goodsId);
|
appPanicBuyVo.setGoodsName(goods.getGoodsName());
|
appPanicBuyVo.setGoodsIntroduction(goods.getGoodsIntroduction());
|
appPanicBuyVo.setGoodsType(goods.getGoodsType());
|
appPanicBuyVo.setGoodsTag(goods.getGoodsTags());
|
//商品图片
|
goodsFile = remoteGoodsService.getGoodsFile(goodsId).getData();
|
appPanicBuyVo.setGoodsPicture(goodsFile.getFileUrl());
|
appPanicBuyVo.setBuyNum(buyNum);
|
goodsPrice = goods.getSalesPrice();
|
//商户定制价格
|
AppShopGoodsGetDto appShopGoodsGetDto = new AppShopGoodsGetDto();
|
appShopGoodsGetDto.setGoodsId(goods.getGoodsId());
|
appShopGoodsGetDto.setShopId(appPanicBuyDto.getShopId());
|
ShopGoods shopGoods = remoteGoodsService.getShopGoods(appShopGoodsGetDto).getData();
|
if (shopGoods != null) {
|
goodsPrice = shopGoods.getSalesPrice();
|
}
|
appPanicBuyVo.setGoodsPrice(goodsPrice);
|
buyNumBig = BigDecimal.valueOf(buyNum);
|
goodsActivityPrice = activityGoodsGetVo.getActivityPrice();
|
goodsTotalPrice = goodsActivityPrice.multiply(buyNumBig);
|
goodsRealPrice = goodsTotalPrice;
|
appPanicBuyVo.setActivityPrice(goodsActivityPrice);
|
appPanicBuyVo.setGoodsTotalPrice(goodsTotalPrice);
|
appPanicBuyVo.setGoodsRealPrice(goodsRealPrice);
|
goodsDeposit = activityGoodsGetVo.getActivitySubscription();
|
if (goodsDeposit == null || goodsDeposit.compareTo(BigDecimal.ZERO) == 0) {
|
goodsDeposit = new BigDecimal("0.00");
|
} else {
|
goodsDeposit = goodsDeposit.multiply(buyNumBig);
|
}
|
appPanicBuyVo.setGoodsDeposit(goodsDeposit);
|
orderGoodsMoney = orderGoodsMoney.add(goodsTotalPrice);
|
orderPayDeposit = orderPayDeposit.add(goodsDeposit);
|
orderPayMoney = orderPayMoney.add(goodsRealPrice);
|
appPanicBuyVo.setOrderGoodsMoney(orderGoodsMoney);
|
appPanicBuyVo.setOrderPayDeposit(orderPayDeposit);
|
appPanicBuyVo.setOrderPayMoney(orderPayMoney);
|
return appPanicBuyVo;
|
}
|
|
/**
|
* 创建订单
|
*
|
* @param appPlaceOrderDto
|
* @return
|
*/
|
@Override
|
@Transactional
|
public AppPlaceOrderVo placeOrder(AppPlaceOrderDto appPlaceOrderDto) {
|
// 获取用户ID
|
Long userId = appPlaceOrderDto.getUserId();
|
// 创建下单视图对象
|
AppPlaceOrderVo appPlaceOrderVo = new AppPlaceOrderVo();
|
// 创建商品列表
|
List<AppSureOrderGoodsVo> appSureOrderGoodsVoList = new ArrayList<>();
|
AppSureOrderGoodsVo appSureOrderGoodsVo;
|
// 获取购买的商品列表
|
List<AppBuyGoodsDto> appBuyGoodsDtoList = appPlaceOrderDto.getAppBuyGoodsDtoList();
|
StringJoiner goodsIdSJ = new StringJoiner(",");
|
for (AppBuyGoodsDto appBuyGoodsDto : appBuyGoodsDtoList) {
|
goodsIdSJ.add(appBuyGoodsDto.getGoodsId());
|
}
|
//获取商品列表
|
List<Goods> goodsList = remoteGoodsService.listGoodsByGoodsId(goodsIdSJ.toString()).getData();
|
Map<String, Goods> goodsMap = goodsList.stream()
|
.collect(Collectors.toMap(Goods::getGoodsId, Function.identity()));
|
Boolean haveDeposit = false;
|
for (Goods goods : goodsList) {
|
if (goods.getSubscription() != null && goods.getSubscription().compareTo(BigDecimal.ZERO) > 0) {
|
haveDeposit = true;
|
}
|
}
|
// 初始化变量
|
String goodsId;
|
Integer buyNum;
|
BigDecimal buyNumBig;
|
Integer serviceNum;
|
Integer goodsNum = 0;
|
String memberCouponId;
|
Goods goods = null;
|
GoodsFile goodsFile;
|
BigDecimal goodsPrice;
|
BigDecimal goodsTotalPrice;
|
BigDecimal goodsRealPrice;
|
MerBaseDto merBaseDto = new MerBaseDto();
|
merBaseDto.setUserId(userId);
|
merBaseDto.setShopId(appPlaceOrderDto.getShopId());
|
// 获取用户优惠券列表
|
List<AppMemberCouponVo> appMemberCouponVoList = remoteCouponService.listVoMemberCouponByUserId(merBaseDto).getData();
|
// 将用户优惠券列表转换为Map,方便后续查找
|
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;
|
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");
|
// 创建订单ID和订单号
|
String orderId = IdUtils.simpleUUID();
|
String orderNo = CodeFactoryUtil.getShopOrderNo();
|
OrderGoods orderGoods;
|
String orderGoodsId;
|
// 创建商品类型集合,用于记录订单中所有商品的类型
|
HashSet<String> goodsTypeSet = new HashSet<>();
|
//使用优惠券
|
StringJoiner memberCouponSJ = new StringJoiner(",");
|
List<String> goodsNameList = new ArrayList<>();
|
// 遍历购买的商品列表
|
for (AppBuyGoodsDto appBuyGoodsDto : appBuyGoodsDtoList) {
|
appSureOrderGoodsVo = new AppSureOrderGoodsVo();
|
useCoupon = 0;
|
// 获取商品ID和优惠券ID
|
goodsId = appBuyGoodsDto.getGoodsId();
|
memberCouponId = appBuyGoodsDto.getMemberCouponId();
|
// 获取商品信息
|
goods = goodsMap.get(goodsId);
|
goodsNameList.add(goods.getGoodsName());
|
// 设置商品信息
|
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, 2, BigDecimal.ROUND_HALF_UP);
|
discountMoney = goodsTotalPrice.subtract(goodsRealPrice);
|
useCoupon = 1;
|
} else if (couponType == 3 && appMemberCouponVo.getDiscountMoney() != null) {
|
discountMoney = appMemberCouponVo.getDiscountMoney();
|
goodsRealPrice = goodsTotalPrice.subtract(discountMoney);
|
useCoupon = 1;
|
}
|
if(goodsRealPrice.compareTo(BigDecimal.ZERO)<0){
|
goodsRealPrice = BigDecimal.ZERO;
|
discountMoney = goodsTotalPrice;
|
}
|
}
|
memberCouponSJ.add(memberCouponId);
|
}
|
appSureOrderGoodsVo.setUseCoupon(useCoupon);
|
appSureOrderGoodsVo.setGoodsTotalPrice(goodsTotalPrice);
|
appSureOrderGoodsVo.setCouponDiscount(discountMoney);
|
appSureOrderGoodsVo.setGoodsRealPrice(goodsRealPrice);
|
// 获取商品押金
|
goodsDeposit = goods.getSubscription();
|
if (goodsDeposit != null && goodsDeposit.compareTo(BigDecimal.ZERO) > 0) {
|
goodsDeposit = goodsDeposit.multiply(buyNumBig);
|
} else {
|
if (haveDeposit) {
|
goodsDeposit = goodsRealPrice;
|
} else {
|
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 = 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.setGoodsDeposit(goodsDeposit);
|
orderGoods.setGoodsTotalMoney(orderGoodsMoney);
|
orderGoods.setGoodsReceivableMoney(goodsRealPrice);
|
orderGoods.setCycleNumFlag(goods.getCycleNumFlag());
|
orderGoods.setServiceNum(serviceNum);
|
orderGoods.setGoodsType(goods.getGoodsType());
|
orderGoods.setGoodsName(goods.getGoodsName());
|
orderGoods.setGoodsTag(goods.getGoodsTags());
|
orderGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
|
orderGoods.setGoodsPicture(goodsFile.getFileUrl());
|
// 保存订单商品
|
orderGoodsService.save(orderGoods);
|
// 清空购物车
|
AppShoppingCartDelDto appShoppingCartDelDto = new AppShoppingCartDelDto();
|
appShoppingCartDelDto.setGoodsId(goodsId);
|
appShoppingCartDelDto.setUserId(userId);
|
remoteShoppingCartService.deleteShoppingCart(appShoppingCartDelDto);
|
// 记录商品类型
|
if (goods.getGoodsType() == 1) {
|
goodsTypeSet.add("周期");
|
} else if (goods.getGoodsType() == 2) {
|
goodsTypeSet.add("服务");
|
} else if (goods.getGoodsType() == 3) {
|
goodsTypeSet.add("体验");
|
} else if (goods.getGoodsType() == 4) {
|
goodsTypeSet.add("单品");
|
}
|
}
|
// 创建订单
|
Order order = new Order();
|
order.setOrderId(orderId);
|
order.setDelFlag(0);
|
order.setOrderStatus(1);
|
order.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.setOfflinePayMoney(BigDecimal.ZERO);
|
// 根据支付类型计算支付金额
|
if (appPlaceOrderDto.getPayType() == 1) {
|
order.setPayMoney(orderPayMoney);
|
order.setOnlinePayMoney(orderPayMoney);
|
appPlaceOrderVo.setPayMoney(orderPayMoney);
|
appPlaceOrderVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getPayMoney()));
|
order.setChangeReceivableMoney(orderGoodsMoney.subtract(couponDiscount));
|
order.setPayType(1);
|
order.setCloseFlag(1);
|
} else if (appPlaceOrderDto.getPayType() == 2) {
|
order.setPayMoney(orderPayDeposit);
|
order.setOnlinePayMoney(orderPayDeposit);
|
appPlaceOrderVo.setPayMoney(orderPayDeposit);
|
appPlaceOrderVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getPayMoney()));
|
order.setChangeReceivableMoney(orderGoodsMoney.subtract(couponDiscount).subtract(orderPayDeposit));
|
order.setPayType(2);
|
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);
|
|
String goodsName = "";
|
if (null != goodsNameList) {
|
goodsName = String.join(",", goodsNameList);
|
}
|
|
// 小程序微信下单支付
|
/*createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), goodsName, orderNo,
|
orderId, order.getPayMoney(), appPlaceOrderDto.getOpenid(),
|
appPlaceOrderDto.getSpbillCreateIp(), goodsNameList);*/
|
|
|
//减去优惠券
|
if (StringUtils.isNotBlank(memberCouponSJ.toString())) {
|
remoteCouponService.useMemberCoupon(memberCouponSJ.toString());
|
}
|
//生成自动取消订单延时任务
|
Integer delayTime = 30;
|
if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) {
|
delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
|
}
|
redisService.setCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId, orderId, delayTime.longValue(), TimeUnit.MINUTES);
|
DelayTask delayTask = new DelayTask();
|
delayTask.setDelFlag(0);
|
delayTask.setCreateTime(new Date());
|
delayTask.setEndTime(DateUtils.addMinutes(new Date(), delayTime));
|
delayTask.setRedisKey(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId);
|
remoteConfigService.addDelayTask(delayTask);
|
appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime));
|
|
return appPlaceOrderVo;
|
}
|
|
/**
|
* 小程序支付下单API
|
* @param appPlaceOrderVo
|
* @param userId
|
* @param shopId
|
* @param goodsName
|
* @param orderNo
|
* @param orderId
|
* @param payMoney
|
* @param openid
|
* @param payerClientIp
|
* @param goodsNameList
|
*/
|
public void createWxPayInfo(AppPlaceOrderVo appPlaceOrderVo, Long userId, Long shopId,
|
String goodsName, String orderNo,
|
String orderId, BigDecimal payMoney,
|
String openid, String payerClientIp, List<String> goodsNameList){
|
try {
|
// 创建支付订单
|
//R<String> resultMch = remoteShopService.getShopSubMchId(shopId);
|
String subMchId = "1650744551";
|
if (StringUtils.isEmpty(subMchId)) {
|
throw new ServiceException("获取微信商户号失败");
|
}
|
WxPayConfig config = wxService.getConfig();
|
config.setSubMchId(subMchId);
|
|
PartnerTransactionsRequest request = new PartnerTransactionsRequest();
|
request.setSpAppid(config.getAppId());
|
request.setSpMchid(config.getMchId());
|
request.setSubMchid(config.getSubMchId());
|
// 商品描述 body
|
String description = goodsName + "-商品购买";
|
|
request.setDescription(description);
|
request.setOutTradeNo(orderNo);
|
request.setNotifyUrl(config.getNotifyUrl());
|
// 结算信息
|
PartnerTransactionsRequest.SettleInfo settleInfo = new PartnerTransactionsRequest.SettleInfo();
|
settleInfo.setProfitSharing(true);
|
settleInfo.setSubsidyAmount(BigDecimal.ZERO);
|
request.setSettleInfo(settleInfo);
|
|
// 订单总金额
|
Integer totalFee = payMoney.multiply(new BigDecimal(100)).intValue();
|
PartnerTransactionsRequest.Amount amount = new PartnerTransactionsRequest.Amount();
|
amount.setTotal(totalFee);
|
amount.setCurrency("CNY");
|
request.setAmount(amount);
|
|
// 支付者
|
PartnerTransactionsRequest.Payer payer = new PartnerTransactionsRequest.Payer();
|
payer.setSpOpenid(openid);
|
request.setPayer(payer);
|
|
// 场景信息
|
PartnerTransactionsRequest.SceneInfo sceneInfo = new PartnerTransactionsRequest.SceneInfo();
|
sceneInfo.setPayerClientIp(payerClientIp);
|
request.setSceneInfo(sceneInfo);
|
|
TransactionsResult.JsapiResult result = wxService.getEcommerceService().partnerTransactions(TradeTypeEnum.JSAPI, request);
|
|
// 请求参数
|
Gson gson = new Gson();
|
String payRequestJson = gson.toJson(request);
|
// 返回参数
|
String payResponseJson = gson.toJson(result);
|
|
// 支付相关信息返回
|
appPlaceOrderVo.setAppId(result.getAppId());
|
appPlaceOrderVo.setMchId(config.getMchId());
|
appPlaceOrderVo.setTimeStamp(result.getTimeStamp());
|
appPlaceOrderVo.setNonceStr(result.getNonceStr());
|
appPlaceOrderVo.setPackageStr(result.getPackageValue());
|
appPlaceOrderVo.setSignType(result.getSignType());
|
appPlaceOrderVo.setPaySign(result.getPaySign());
|
appPlaceOrderVo.setPrepayId(result.getPackageValue());
|
|
// 保存支付订单统一下单日志
|
paymentMessageService.savePaymentMessage("1", orderId, payRequestJson, payResponseJson);
|
|
// 保存支付订单统一下单支付记录
|
orderPaymentService.saveOrderPayment(userId, shopId, subMchId, orderId, payMoney,
|
appPlaceOrderVo.getEndTime(), "Y", openid,
|
Joiner.on(";").join(goodsNameList), result.getPackageValue());
|
} catch (WxPayException e) {
|
throw new ServiceException(e.getMessage());
|
}
|
}
|
|
|
/**
|
* @param appPlaceActivityDto
|
* @return AppPlaceOrderVo
|
* @description 创建活动订单
|
* @author jqs
|
* @date 2023/7/6 17:59
|
*/
|
@Override
|
@Transactional
|
public AppPlaceOrderVo placeActivityOrder(AppPlaceActivityDto appPlaceActivityDto) {
|
Long userId = appPlaceActivityDto.getUserId();
|
// 创建订单对象
|
AppPlaceOrderVo appPlaceOrderVo = new AppPlaceOrderVo();
|
// 定义商品订单对象
|
AppSureOrderGoodsVo appSureOrderGoodsVo;
|
// 获取活动ID,商品ID,购买数量
|
String activityId = appPlaceActivityDto.getActivityId();
|
String goodsId = appPlaceActivityDto.getGoodsId();
|
Integer buyNum = appPlaceActivityDto.getBuyNum();
|
//redis库存控制极简版
|
String goodsLock = "goods_lock_" + activityId + "_" + goodsId;
|
RLock redissonLock = redissonClient.getLock(goodsLock);
|
try {
|
redissonLock.lock(30, TimeUnit.SECONDS);
|
Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + activityId + "-" + goodsId);
|
if (surpNum == null || surpNum < buyNum) {
|
throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_NULL);
|
} else {
|
redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + activityId + "-" + goodsId, surpNum - buyNum);
|
}
|
} finally {
|
redissonLock.unlock();
|
}
|
// 定义购买数量,服务数量,商品数量
|
BigDecimal buyNumBig;
|
Integer serviceNum;
|
Integer goodsNum = 0;
|
// 定义商品,商品文件,商品价格,商品总价,商品实际价格,折扣金额,折扣百分比,商品押金,使用优惠券,订单商品金额,优惠券折扣,订单支付押金,订单支付金额
|
Goods goods;
|
GoodsFile goodsFile;
|
BigDecimal goodsPrice;
|
BigDecimal goodsTotalPrice;
|
BigDecimal goodsRealPrice;
|
BigDecimal discountMoney = new BigDecimal("0.00");
|
BigDecimal discountPercent;
|
BigDecimal goodsDeposit;
|
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");
|
// 创建活动商品对象,并设置活动ID,商品ID,用户ID
|
ActivityGoodsGetDto activityGoodsGetDto = new ActivityGoodsGetDto();
|
activityGoodsGetDto.setActivityId(activityId);
|
activityGoodsGetDto.setGoodsId(goodsId);
|
activityGoodsGetDto.setUserId(userId);
|
// 获取用户活动商品
|
ActivityGoodsGetVo activityGoodsGetVo = remoteActivityService.getUserActivityGoods(activityGoodsGetDto).getData();
|
// 检查活动状态
|
if (activityGoodsGetVo.getActivityStatus() == 0) {
|
throw new ServiceException(AppErrorConstant.ACTIVITY_NO_START);
|
}
|
if (activityGoodsGetVo.getActivityStatus() == 2) {
|
throw new ServiceException(AppErrorConstant.ACTIVITY_END);
|
}
|
if (activityGoodsGetVo.getAvailableBuyNum() < 1) {
|
throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_NULL);
|
}
|
if (activityGoodsGetVo.getAvailableBuyNum() < buyNum) {
|
throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_BEYOND);
|
}
|
// 创建订单ID和订单号
|
String orderId = IdUtils.simpleUUID();
|
String orderNo = CodeFactoryUtil.getShopOrderNo();
|
// 创建订单商品对象和订单商品ID
|
OrderGoods orderGoods;
|
String orderGoodsId;
|
// 创建商品类型集合
|
HashSet<String> goodsTypeSet = new HashSet<>();
|
HashSet<String> goodsNurseSet = new HashSet<>();
|
// 创建商品订单对象,并设置商品ID,商品名称,商品介绍,商品类型
|
appSureOrderGoodsVo = new AppSureOrderGoodsVo();
|
useCoupon = 0;
|
goodsId = appPlaceActivityDto.getGoodsId();
|
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());
|
// 设置购买数量,商品价格,服务数量
|
appSureOrderGoodsVo.setBuyNum(buyNum);
|
goodsPrice = goods.getSalesPrice();
|
serviceNum = goods.getServiceNum();
|
// 获取活动价格
|
goodsPrice = activityGoodsGetVo.getActivityPrice();
|
appSureOrderGoodsVo.setGoodsPrice(goodsPrice);
|
// 计算商品总价,商品实际价格
|
buyNumBig = BigDecimal.valueOf(buyNum);
|
goodsTotalPrice = goodsPrice.multiply(buyNumBig);
|
goodsRealPrice = goodsTotalPrice;
|
// 设置使用优惠券,商品总价,优惠券折扣,商品实际价格
|
appSureOrderGoodsVo.setUseCoupon(useCoupon);
|
appSureOrderGoodsVo.setGoodsTotalPrice(goodsTotalPrice);
|
appSureOrderGoodsVo.setCouponDiscount(discountMoney);
|
appSureOrderGoodsVo.setGoodsRealPrice(goodsRealPrice);
|
// 获取商品押金
|
goodsDeposit = activityGoodsGetVo.getActivitySubscription();
|
if (goodsDeposit == null || goodsDeposit.compareTo(BigDecimal.ZERO) == 0) {
|
goodsDeposit = new BigDecimal("0.00");
|
} else {
|
goodsDeposit = goodsDeposit.multiply(buyNumBig);
|
}
|
appSureOrderGoodsVo.setGoodsDeposit(goodsDeposit);
|
// 计算商品数量,订单商品金额,优惠券折扣,订单支付押金,订单支付金额
|
goodsNum = goodsNum + buyNum;
|
orderGoodsMoney = orderGoodsMoney.add(goodsTotalPrice);
|
couponDiscount = couponDiscount.add(discountMoney);
|
orderPayDeposit = orderPayDeposit.add(goodsDeposit);
|
orderPayMoney = orderPayMoney.add(goodsRealPrice);
|
// 创建订单商品,并设置订单商品ID,删除标志,订单ID,商品ID,购买数量,商品价格,商品押金,商品总金额,商品应收金额,周期数量标志,服务数量,商品类型,商品名称,商品图片
|
orderGoods = new OrderGoods();
|
orderGoodsId = IdUtils.simpleUUID();
|
orderGoods.setOrderGoodsId(orderGoodsId);
|
orderGoods.setDelFlag(0);
|
orderGoods.setOrderId(orderId);
|
orderGoods.setGoodsId(goodsId);
|
orderGoods.setBuyNum(buyNum);
|
orderGoods.setGoodsPrice(goodsPrice);
|
orderGoods.setGoodsDeposit(goodsDeposit);
|
orderGoods.setGoodsTotalMoney(orderGoodsMoney);
|
orderGoods.setGoodsReceivableMoney(goodsRealPrice);
|
orderGoods.setCycleNumFlag(goods.getCycleNumFlag());
|
orderGoods.setServiceNum(serviceNum);
|
orderGoods.setGoodsType(goods.getGoodsType());
|
orderGoods.setGoodsTag(goods.getGoodsTags());
|
orderGoods.setGoodsName(goods.getGoodsName());
|
orderGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
|
orderGoods.setGoodsPicture(goodsFile.getFileUrl());
|
// 保存订单商品
|
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("单品");
|
}
|
String goodsNurse = goods.getGoodsNurses();
|
if (StringUtils.isNotBlank(goodsNurse)) {
|
String[] goodsNurseArr = goodsNurse.split(",");
|
for (String str : goodsNurseArr) {
|
goodsNurseSet.add(str);
|
}
|
}
|
// 创建订单,并设置订单ID,删除标志,订单状态,订单号,订单来源,店铺ID,用户ID,订单金额,优惠券金额,折扣金额,应收金额,应收押金,变动应收金额,支付类型
|
Order order = new Order();
|
order.setOrderId(orderId);
|
order.setDelFlag(0);
|
order.setOrderStatus(1);
|
order.setOrderNo(orderNo);
|
order.setOrderFrom(2);
|
order.setShopId(appPlaceActivityDto.getShopId());
|
order.setUserId(userId);
|
order.setOrderMoney(orderGoodsMoney);
|
order.setCouponMoney(couponDiscount);
|
order.setDiscountMoney(couponDiscount);
|
order.setReceivableMoney(orderPayMoney);
|
order.setReceivableDeposit(orderPayDeposit);
|
order.setActivityId(activityId);
|
order.setActivityName(activityGoodsGetVo.getActivityName());
|
order.setOfflinePayMoney(BigDecimal.ZERO);
|
// 根据支付类型设置订单支付金额,在线支付金额,订单支付金额,未支付金额,关闭标志
|
if (appPlaceActivityDto.getPayType() == 1) {
|
order.setPayMoney(orderPayMoney);
|
order.setOnlinePayMoney(orderPayMoney);
|
appPlaceOrderVo.setPayMoney(orderPayMoney);
|
appPlaceOrderVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getPayMoney()));
|
order.setPayType(1);
|
order.setCloseFlag(1);
|
order.setChangeReceivableMoney(orderGoodsMoney.subtract(couponDiscount));
|
} else if (appPlaceActivityDto.getPayType() == 2) {
|
order.setPayMoney(orderPayDeposit);
|
order.setOnlinePayMoney(orderPayDeposit);
|
appPlaceOrderVo.setPayMoney(orderPayDeposit);
|
appPlaceOrderVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getPayMoney()));
|
order.setPayType(2);
|
order.setCloseFlag(0);
|
order.setChangeReceivableMoney(orderGoodsMoney.subtract(couponDiscount).subtract(orderPayDeposit));
|
}
|
// 设置订单备注,商品数量,创建时间
|
order.setOrderRemark(appPlaceActivityDto.getOrderRemark());
|
order.setGoodsNum(goodsNum);
|
order.setCreateTime(new Date());
|
// 保存订单
|
this.save(order);
|
// 更新用户商品类型
|
if (goodsTypeSet != null || goodsNurseSet != null) {
|
AppMemberGoodsTypeDto appMemberGoodsTypeDto = new AppMemberGoodsTypeDto();
|
appMemberGoodsTypeDto.setUserId(userId);
|
appMemberGoodsTypeDto.setGoodsTypeSet(goodsTypeSet);
|
appMemberGoodsTypeDto.setGoodsNurseSet(goodsNurseSet);
|
remoteMemberService.updateMemberGoodsType(appMemberGoodsTypeDto);
|
}
|
// 设置订单ID和订单号
|
appPlaceOrderVo.setOrderId(orderId);
|
appPlaceOrderVo.setOrderNo(orderNo);
|
//改变活动库存
|
AGStockChangeDto agStockChangeDto = new AGStockChangeDto();
|
agStockChangeDto.setActivityId(activityId);
|
agStockChangeDto.setGoodsId(goodsId);
|
agStockChangeDto.setChangeType(2);
|
agStockChangeDto.setChangeNum(buyNum);
|
agStockChangeDto.setShopId(order.getShopId());
|
agStockChangeDto.setUserId(order.getUserId());
|
remoteActivityService.changeActivityStock(agStockChangeDto);
|
// 调用支付
|
/*PrepayRequest request = new PrepayRequest();
|
Amount amount = new Amount();
|
amount.setTotal(Integer.parseInt(order.getPayMoney().multiply(new BigDecimal(100)).toString()));
|
request.setAmount(amount);
|
request.setAppid(this.appId);
|
request.setMchid(this.mchId);
|
request.setDescription(order.getGoodsInfo());
|
request.setNotifyUrl(this.notifyUrl);
|
request.setOutTradeNo(order.getOrderId());
|
Payer payer = new Payer();
|
// TODO 获取openID
|
payer.setOpenid("oLTPCuN5a-nBD4rAL_fa********");
|
|
request.setPayer(payer);*/
|
|
//设置订单允许分账 秒杀活动才允许分账
|
/*if(order.getOrderFrom()==2){
|
SettleInfo settleInfo=new SettleInfo();
|
settleInfo.setProfitSharing(true);
|
request.setSettleInfo(settleInfo);
|
}*/
|
|
|
//返回前端唤醒支付结果信息
|
/*PrepayWithRequestPaymentResponse res = this.getJsApIResponse(request);
|
|
appPlaceOrderVo.setAppId(this.appId);
|
appPlaceOrderVo.setTimeStamp(res.getTimeStamp());
|
appPlaceOrderVo.setNonceStr(res.getNonceStr());
|
appPlaceOrderVo.setPackageStr(res.getPackageVal());
|
appPlaceOrderVo.setTradeType(res.getSignType());
|
appPlaceOrderVo.setPaySign(res.getPaySign());
|
*/
|
//生成活动参加记录
|
ActivityRecord activityRecord = new ActivityRecord();
|
activityRecord.setDelFlag(0);
|
activityRecord.setActivityId(activityId);
|
activityRecord.setUserId(userId);
|
activityRecord.setOrderTime(order.getCreateTime());
|
activityRecord.setOrderMoney(order.getOrderMoney());
|
activityRecord.setOrderId(orderId);
|
activityRecord.setCreateTime(new Date());
|
activityRecord.setBuyNum(orderGoods.getBuyNum());
|
activityRecord.setGoodsId(orderGoods.getGoodsId());
|
activityRecord.setActivityMoney(activityGoodsGetVo.getActivityPrice());
|
remoteActivityService.addActivityRecord(activityRecord);
|
//生成自动取消订单延时任务
|
Integer delayTime = 30;
|
if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) {
|
delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
|
}
|
redisService.setCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId, orderId, delayTime.longValue(), TimeUnit.MINUTES);
|
DelayTask delayTask = new DelayTask();
|
delayTask.setDelFlag(0);
|
delayTask.setCreateTime(new Date());
|
delayTask.setEndTime(DateUtils.addMinutes(new Date(), delayTime));
|
delayTask.setRedisKey(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId);
|
remoteConfigService.addDelayTask(delayTask);
|
appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime));
|
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);
|
});
|
Integer delayTime = 30;
|
if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) {
|
delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
|
}
|
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());
|
appUserOrderPageVo.setEndTime(DateUtils.addMinutes(appUserOrderPageVo.getCreateTime(), delayTime));
|
}
|
}
|
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.setUnpaidMoney(order.getReceivableMoney().subtract(order.getOnlinePayMoney()));
|
appUserOrderGetVo.setPayType(order.getPayType());
|
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);
|
//生成自动取消订单延时任务
|
Integer delayTime = 30;
|
if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) {
|
delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
|
}
|
appUserOrderGetVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime));
|
return appUserOrderGetVo;
|
}
|
|
/**
|
* 取消订单
|
*
|
* @param orderId
|
*/
|
@Override
|
public void cancelOrder(String orderId) {
|
Order order = this.getById(orderId);
|
// 订单状态-1.删除 0.已取消 1.待支付 2.待核销 3.已完成
|
if (order.getOrderStatus() == 0) {
|
throw new ServiceException(AppErrorConstant.CANCEL_CANCEL_ORDER);
|
} else if (order.getOrderStatus() == 1) {
|
this.autoCancelOrder(orderId);
|
} else if (order.getOrderStatus() == 2) {
|
// 2.待核销 -> 订单退款
|
this.refundOrder(orderId);
|
} else {
|
throw new ServiceException(AppErrorConstant.CANCEL_ERROR_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 = orderMapper.getMerHomeShopTotalVo(shopId);
|
merHomeShopTotalVo.setTodayShop(todayShop);
|
return merHomeShopTotalVo;
|
}
|
|
/**
|
* 核销订单
|
*
|
* @param orderId
|
* @return
|
*/
|
@Override
|
public MerVerifyOrderVo verifyOrder(String orderId, Long shopId) {
|
// 创建返回对象
|
MerVerifyOrderVo merVerifyOrderVo = new MerVerifyOrderVo();
|
if(orderId.contains("+")){
|
orderId = orderId.substring(0, orderId.indexOf("+"));
|
}
|
// 根据订单ID获取订单信息
|
Order order = this.getById(orderId);
|
if (order.getOrderStatus() != 2) {
|
throw new ServiceException(AppErrorConstant.VERIFY_USED);
|
}
|
if (!order.getShopId().equals(shopId)) {
|
throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
|
}
|
// 根据订单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());
|
if(order.getPayType()==1){
|
merVerifyOrderVo.setReceivableMoney(order.getReceivableMoney());
|
}else{
|
merVerifyOrderVo.setReceivableMoney(order.getOrderMoney().subtract(order.getCouponMoney()).subtract(order.getReceivableDeposit()));
|
}
|
merVerifyOrderVo.setPayMoney(order.getPayMoney());
|
merVerifyOrderVo.setOrderRemark(order.getOrderRemark());
|
merVerifyOrderVo.setCreateTime(order.getCreateTime());
|
merVerifyOrderVo.setPayTime(order.getPayTime());
|
merVerifyOrderVo.setUseTime(order.getUseTime());
|
merVerifyOrderVo.setAppUserOrderGoodsPageVoList(appUserOrderGoodsPageVoList);
|
merVerifyOrderVo.setPayType(order.getPayType());
|
merVerifyOrderVo.setRealReceiveMoney(order.getChangeReceivableMoney());
|
if(order.getPayType()==1){
|
merVerifyOrderVo.setReceiveMoney(order.getPayMoney());
|
}else{
|
if(order.getOfflinePayMoney()!=null){
|
merVerifyOrderVo.setReceiveMoney(order.getOfflinePayMoney());
|
}else{
|
merVerifyOrderVo.setReceiveMoney(BigDecimal.ZERO);
|
}
|
}
|
merVerifyOrderVo.setUnReceiveMoney(merVerifyOrderVo.getRealReceiveMoney().subtract(merVerifyOrderVo.getReceiveMoney()));
|
// 根据订单用户ID获取用户信息
|
Member member = remoteMemberService.getMember(order.getUserId()).getData();
|
merVerifyOrderVo.setUserId(order.getUserId());
|
merVerifyOrderVo.setUserName(member.getRealName());
|
merVerifyOrderVo.setUserMobile(member.getMobile());
|
merVerifyOrderVo.setCloseFlag(order.getCloseFlag());
|
// 返回结果
|
return merVerifyOrderVo;
|
}
|
|
/**
|
* 确认核销订单
|
*
|
* @param merVerifyOrderDto
|
* @return
|
*/
|
@Override
|
@Transactional
|
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);
|
if (order.getOrderStatus() != 2) {
|
throw new ServiceException(AppErrorConstant.VERIFY_USED);
|
}
|
|
ShopRelUserVo shopRelUserVo = remoteShopService.getShopByUserId(merVerifyOrderDto.getUserId()).getData();
|
if (!shopRelUserVo.getShopId().equals(order.getShopId())) {
|
throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
|
}
|
order.setOrderStatus(3);
|
order.setUseTime(nowTime);
|
order.setUseUserId(merVerifyOrderDto.getUserId());
|
order.setOfflinePayMoney(relPayMoney);
|
order.setOffPayTime(nowTime);
|
order.setPayMoney(order.getPayMoney().add(relPayMoney));
|
order.setChangeReceivableMoney(relReceiveMoney);
|
if (order.getPayMoney().compareTo(order.getChangeReceivableMoney()) >= 0) {
|
order.setCloseFlag(1);
|
} else {
|
order.setCloseFlag(0);
|
}
|
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;
|
List<ConsumerGoods> consumerGoodsList = new ArrayList<>();
|
for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) {
|
Integer buyNum = appUserOrderGoodsPageVo.getBuyNum();
|
if (appUserOrderGoodsPageVo.getCycleNumFlag() == 0) {
|
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.setGoodsTag(appUserOrderGoodsPageVo.getGoodsTag());
|
consumerGoods.setCreateTime(nowTime);
|
consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
|
consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture());
|
consumerGoods.setGoodsNurses(goods.getGoodsNurses());
|
consumerGoods.setSourceFrom(1);
|
consumerGoods.setSureNum(buyNum);
|
consumerGoodsList.add(consumerGoods);
|
} else {
|
for (int i = 0; i < buyNum; i++) {
|
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.setGoodsTag(appUserOrderGoodsPageVo.getGoodsTag());
|
consumerGoods.setCreateTime(nowTime);
|
consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
|
consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture());
|
consumerGoods.setGoodsNurses(goods.getGoodsNurses());
|
consumerGoods.setSourceFrom(1);
|
consumerGoodsList.add(consumerGoods);
|
}
|
}
|
}
|
consumerGoodsService.saveBatchConsumerGoods(consumerGoodsList);
|
//生成返回
|
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());
|
if(order.getPayType()==1){
|
merVerifyOrderVo.setReceivableMoney(order.getOrderMoney().subtract(order.getPayMoney()));
|
}else{
|
merVerifyOrderVo.setReceivableMoney(order.getOrderMoney().subtract(order.getCouponMoney()).subtract(order.getReceivableDeposit()));
|
}
|
merVerifyOrderVo.setPayMoney(order.getPayMoney());
|
merVerifyOrderVo.setOrderRemark(order.getOrderRemark());
|
merVerifyOrderVo.setAppUserOrderGoodsPageVoList(appUserOrderGoodsPageVoList);
|
merVerifyOrderVo.setCreateTime(order.getCreateTime());
|
merVerifyOrderVo.setPayTime(order.getPayTime());
|
merVerifyOrderVo.setUseTime(order.getUseTime());
|
merVerifyOrderVo.setPayType(order.getPayType());
|
merVerifyOrderVo.setRealReceiveMoney(order.getChangeReceivableMoney());
|
if(order.getPayType()==1){
|
merVerifyOrderVo.setReceiveMoney(order.getPayMoney());
|
}else{
|
if(order.getOfflinePayMoney()!=null){
|
merVerifyOrderVo.setReceiveMoney(order.getOfflinePayMoney());
|
}else{
|
merVerifyOrderVo.setReceiveMoney(BigDecimal.ZERO);
|
}
|
}
|
merVerifyOrderVo.setUnReceiveMoney(merVerifyOrderVo.getRealReceiveMoney().subtract(merVerifyOrderVo.getReceiveMoney()));
|
Member member = remoteMemberService.getMember(order.getUserId()).getData();
|
merVerifyOrderVo.setUserId(order.getUserId());
|
merVerifyOrderVo.setUserName(member.getRealName());
|
merVerifyOrderVo.setUserMobile(member.getMobile());
|
merVerifyOrderVo.setCloseFlag(order.getCloseFlag());
|
//
|
if (order.getOrderFrom() == 2) {
|
// profitsSharingService.applyProfitSharing();
|
}
|
|
//创建支付记录
|
if(merVerifyOrderDto.getRelPayMoney().compareTo(BigDecimal.ZERO)>0){
|
PayRecord payRecord = new PayRecord();
|
payRecord.setDelFlag(0);
|
payRecord.setOrderId(order.getOrderId());
|
payRecord.setPayMoney(merVerifyOrderDto.getRelPayMoney());
|
payRecord.setPayTime(new Date());
|
payRecord.setPayType(merVerifyOrderDto.getPayType());
|
payRecordService.save(payRecord);
|
}
|
//submitProfitSharing(orderId, order.getOrderNo(), order.getShopId(), order.getOrderMoney());
|
|
return merVerifyOrderVo;
|
}
|
|
/*private void submitProfitSharing(String orderId, String orderNo, Long shopId, BigDecimal orderMoney) {
|
String sendMessage = "";
|
String resultMessage = "";
|
try {
|
// 核销完成 开始分账(平台收取服务费)
|
OrderPayment payment = orderPaymentService.getByOrderId(orderId);
|
String transactionId = payment.getTransactionId();
|
|
// 平台特约商户号,用户平台收取服务费
|
String platformTyMacId = WxPayConfiguration.getPlatformTyMacId();
|
|
R<String> resultMch = remoteShopService.getShopSubMchId(shopId);
|
String subMchId = resultMch.getData();
|
if (!StringUtils.isEmpty(subMchId)) {
|
|
|
R<ShopProportionVo> resultShopProportion = remoteShopService.getShopProportion(shopId);
|
ShopProportionVo shopProportion = resultShopProportion.getData();
|
if (null != shopProportion) {
|
ProfitSharingRequest request = new ProfitSharingRequest();
|
request.setSubMchid(subMchId);
|
request.setTransactionId(transactionId);
|
request.setOutOrderNo(orderNo);
|
List<Receiver> receiverList = new ArrayList<>();
|
|
String description = "订单:" + orderNo + " 平台抽取佣金";
|
BigDecimal proportionPercent = shopProportion.getProportionPercent();
|
if (null == proportionPercent) {
|
proportionPercent = BigDecimal.ZERO;
|
}
|
|
ProfitSharingResult result = new ProfitSharingResult();
|
result.setOutOrderNo(orderNo);
|
result.setStatus("FINISHED");
|
|
// 计算分成金额
|
int amount = orderMoney.multiply(proportionPercent).setScale(0, RoundingMode.UP).intValue();
|
log.info("订单分账:{} 分账金额: {}", orderNo, amount);
|
if (amount > 0) {
|
// 分账创建
|
Receiver receiver = new Receiver();
|
receiver.setType("MERCHANT_ID");
|
receiver.setReceiverAccount(platformTyMacId);
|
receiver.setAmount(amount);
|
receiver.setDescription(description);
|
|
receiverList.add(receiver);
|
request.setReceivers(receiverList);
|
// 分账完成
|
request.setFinish(true);
|
result = wxService.getEcommerceService().profitSharing(request);
|
}
|
|
// 创建分账记录
|
profitSharingService.saveProfitSharing(shopId, orderId, orderMoney, result);
|
|
// 保存请求信息
|
sendMessage = JSONObject.toJSONString(request);
|
resultMessage = JSONObject.toJSONString(result);
|
} else {
|
resultMessage = String.format("订单分账:%s 获取商户分成失败", orderNo);
|
log.info(resultMessage);
|
}
|
} else {
|
resultMessage = String.format("订单分账:%s 获取微信商户号失败", orderNo);
|
log.info(resultMessage);
|
}
|
} catch (WxPayException e) {
|
resultMessage = String.format("订单分账:%s 分账失败:%s", orderNo, e.getMessage());
|
log.info(resultMessage);
|
e.printStackTrace();
|
}
|
|
// 保存分账信息
|
paymentMessageService.savePaymentMessage("4", orderId, sendMessage, resultMessage);
|
}*/
|
|
/**
|
* @param merVerifyCouponDto
|
* @return MerVerifyCouponVo
|
* @description 确认核销优惠券
|
* @author jqs
|
* @date 2023/6/28 11:26
|
*/
|
@Override
|
@Transactional
|
public MerVerifyCouponVo sureVerifyCoupon(MerVerifyCouponDto merVerifyCouponDto) {
|
MerVerifyCouponGetVo verifyCouponGetVo = remoteCouponService.getVerifyCoupon(merVerifyCouponDto.getMemberCouponId()).getData();
|
MemberCoupon memberCoupon = verifyCouponGetVo.getMemberCoupon();
|
ShopRelUserVo shopRelUserVo = remoteShopService.getShopByUserId(merVerifyCouponDto.getUserId()).getData();
|
Long userId = verifyCouponGetVo.getUserId();
|
Long shopId = shopRelUserVo.getShopId();
|
Shop shop = remoteShopService.getShop(shopId).getData();
|
// 调用remoteMemberService的getMember方法获取Member对象
|
Member member = remoteMemberService.getMember(userId).getData();
|
//如果是商户优惠券,验证商户一致
|
if (memberCoupon.getCouponFrom() == 2 && !memberCoupon.getShopId().equals(shopId)) {
|
if(!memberCoupon.getShopId().equals(member.getRelationShopId())){
|
throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
|
}
|
if(memberCoupon.getShopId().equals(shopId)){
|
throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
|
}
|
}
|
//如果是平台优惠券,当用户绑定商户时验证商户一致
|
if (memberCoupon.getCouponFrom() == 1 && member.getBindingFlag() == 1) {
|
if(!memberCoupon.getShopId().equals(member.getRelationShopId())){
|
throw new ServiceException(AppErrorConstant.BLINDING_VERIFY_SHOP_ERROR);
|
}
|
if(memberCoupon.getShopId().equals(shopId)){
|
throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
|
}
|
}
|
memberCoupon.setShopId(shopId);
|
// 创建MerVerifyCouponVo对象
|
MerVerifyCouponVo merVerifyCouponVo = new MerVerifyCouponVo();
|
// 调用remoteCouponService的getVerifyCoupon方法获取MerVerifyCouponGetVo对象
|
List<Goods> goodsList = verifyCouponGetVo.getGoodsList();
|
merVerifyCouponVo.setUserName(member.getRealName());
|
merVerifyCouponVo.setUserMobile(member.getMobile());
|
merVerifyCouponVo.setCouponFrom(verifyCouponGetVo.getCouponFrom());
|
merVerifyCouponVo.setCouponName(memberCoupon.getCouponName());
|
merVerifyCouponVo.setCreateTime(memberCoupon.getReceiveTime());
|
// 将goodsList转换为MerCouponGoodsListVo列表,并设置相应属性
|
List<MerCouponGoodsListVo> merCouponGoodsList = goodsList.stream()
|
.map(goods -> {
|
MerCouponGoodsListVo merCouponGoods = new MerCouponGoodsListVo();
|
merCouponGoods.setGoodsId(goods.getGoodsId());
|
merCouponGoods.setGoodsName(goods.getGoodsName());
|
if (goods.getGoodsType() == 1) {
|
merCouponGoods.setGoodsType("周期");
|
} else if (goods.getGoodsType() == 2) {
|
merCouponGoods.setGoodsType("服务");
|
} else if (goods.getGoodsType() == 3) {
|
merCouponGoods.setGoodsType("体验");
|
} else if (goods.getGoodsType() == 4) {
|
merCouponGoods.setGoodsType("单品");
|
}
|
// 设置其他属性
|
return merCouponGoods;
|
})
|
.collect(Collectors.toList());
|
// 设置merVerifyCouponVo的goodsList属性为merCouponGoodsList
|
merVerifyCouponVo.setGoodsList(merCouponGoodsList);
|
//生成服务
|
ConsumerGoods consumerGoods;
|
String consumerGoodsId;
|
GoodsFile goodsFile;
|
AppShopGoodsGetDto appShopGoodsGetDto;
|
ShopGoods shopGoods;
|
List<ConsumerGoods> consumerGoodsList = new ArrayList<>();
|
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());
|
appShopGoodsGetDto = new AppShopGoodsGetDto();
|
appShopGoodsGetDto.setGoodsId(goods.getGoodsId());
|
appShopGoodsGetDto.setShopId(memberCoupon.getShopId());
|
//获取商户服务次数
|
shopGoods = remoteGoodsService.getShopGoods(appShopGoodsGetDto).getData();
|
if (shopGoods != null) {
|
consumerGoods.setServiceNum(shopGoods.getServiceNum());
|
}
|
consumerGoods.setUsedNum(0);
|
consumerGoods.setGoodsType(goods.getGoodsType());
|
consumerGoods.setGoodsTag(goods.getGoodsTags());
|
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);
|
consumerGoodsList.add(consumerGoods);
|
}
|
MerVerifyMemberCouponDto merVerifyMemberCouponDto = new MerVerifyMemberCouponDto();
|
merVerifyMemberCouponDto.setCouponId(memberCoupon.getId());
|
merVerifyMemberCouponDto.setShopId(shopId);
|
remoteCouponService.sureMemberCoupon(merVerifyMemberCouponDto);
|
consumerGoodsService.saveBatchConsumerGoods(consumerGoodsList);
|
if (member.getBindingFlag() != 1) {
|
AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto();
|
appMemberBindingDto.setBindingFlag(1);
|
appMemberBindingDto.setBindingType(4);
|
appMemberBindingDto.setShopId(shop.getShopId());
|
appMemberBindingDto.setShopName(shop.getShopName());
|
appMemberBindingDto.setUserId(memberCoupon.getUserId());
|
remoteMemberService.updateMemberBinding(appMemberBindingDto);
|
}
|
merVerifyCouponVo.setVerifyStatus(2);
|
return merVerifyCouponVo;
|
}
|
|
|
/**
|
* @param merVerifyPrizeDto
|
* @return MerVerifyAwardVo
|
* @description 确认核销奖品
|
* @author jqs
|
* @date 2023/7/9 9:54
|
*/
|
@Override
|
@Transactional
|
public MerVerifyAwardVo sureVerifyPrize(MerVerifyPrizeDto merVerifyPrizeDto) {
|
MerVerifyAwardVo merVerifyAwardVo = new MerVerifyAwardVo();
|
MemberGiftRecord memberGiftRecord = remoteMemberService.getVerifyPrize(merVerifyPrizeDto.getPrizeId()).getData();
|
if (memberGiftRecord == null || memberGiftRecord.getVerifyStatus() != 1) {
|
throw new ServiceException(AppErrorConstant.COUPON_USED);
|
}
|
ShopRelUserVo shopRelUserVo = remoteShopService.getShopByUserId(merVerifyPrizeDto.getUserId()).getData();
|
Long shopId = shopRelUserVo.getShopId();
|
Shop shop = remoteShopService.getShop(shopId).getData();
|
//平台奖品判断
|
if (memberGiftRecord.getGiftFrom() == 1) {
|
BirthdayCard birthdayCard = remoteMemberService.getBirthdayCard().getData();
|
//判断生日活动状态
|
if(birthdayCard!=null&&birthdayCard.getCardStatus()==1){
|
shop = remoteShopService.getShop(shopId).getData();
|
//判断指定区域全部店铺
|
if(birthdayCard.getAreaFlag()==2&&birthdayCard.getShopFlag()==1&&!StringUtils.checkString(birthdayCard.getDesignatedArea(),shop.getShopCityCode())){
|
throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
|
}
|
//判断指定店铺
|
if(birthdayCard.getShopFlag()==2&&!StringUtils.checkString(birthdayCard.getApplicableShop(),shopId.toString())){
|
throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
|
}
|
}else{
|
throw new ServiceException(AppErrorConstant.BIRTHDAY_CARD_ERROR);
|
}
|
}
|
//商户奖品判断
|
if (memberGiftRecord.getGiftFrom() == 2 && !memberGiftRecord.getShopId().equals(shopId)) {
|
throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
|
}
|
Member member = remoteMemberService.getMember(memberGiftRecord.getUserId()).getData();
|
|
merVerifyAwardVo.setUserName(member.getRealName());
|
merVerifyAwardVo.setUserMobile(member.getMobile());
|
if (memberGiftRecord.getGiftFrom() == 1) {
|
merVerifyAwardVo.setGiftFrom("平台生日卡");
|
} else {
|
merVerifyAwardVo.setGiftFrom("商户生日卡");
|
}
|
merVerifyAwardVo.setGiftType(memberGiftRecord.getGiftType());
|
List<BirthdayGiftSendDto> giftSendDtoList = new ArrayList<>();
|
BirthdayGiftSendDto birthdayGiftSendDto = new BirthdayGiftSendDto();
|
switch (memberGiftRecord.getGiftType()) {
|
case 1:
|
merVerifyAwardVo.setGiftName(memberGiftRecord.getCouponName());
|
merVerifyAwardVo.setGiftNumber(Double.valueOf(memberGiftRecord.getCouponNumber()));
|
birthdayGiftSendDto.setUserId(memberGiftRecord.getUserId());
|
birthdayGiftSendDto.setGiftType(memberGiftRecord.getGiftType());
|
birthdayGiftSendDto.setGiftFrom(memberGiftRecord.getGiftFrom());
|
birthdayGiftSendDto.setShopId(memberGiftRecord.getShopId());
|
birthdayGiftSendDto.setCouponId(memberGiftRecord.getCouponId());
|
birthdayGiftSendDto.setCouponNumber(memberGiftRecord.getCouponNumber());
|
giftSendDtoList.add(birthdayGiftSendDto);
|
remoteCouponService.sendCouponGift(giftSendDtoList);
|
break;
|
case 2:
|
Goods goods = remoteGoodsService.getGoods(memberGiftRecord.getGoodsId()).getData();
|
merVerifyAwardVo.setGiftName(memberGiftRecord.getGoodsName());
|
merVerifyAwardVo.setGiftNumber(Double.valueOf(memberGiftRecord.getGoodsNumber()));
|
if (goods.getGoodsType() == 1) {
|
merVerifyAwardVo.setGiftRemark("周期");
|
} else if (goods.getGoodsType() == 2) {
|
merVerifyAwardVo.setGiftRemark("服务");
|
} else if (goods.getGoodsType() == 3) {
|
merVerifyAwardVo.setGiftRemark("体验");
|
} else if (goods.getGoodsType() == 4) {
|
merVerifyAwardVo.setGiftRemark("单品");
|
}
|
birthdayGiftSendDto.setUserId(memberGiftRecord.getUserId());
|
birthdayGiftSendDto.setGiftType(memberGiftRecord.getGiftType());
|
birthdayGiftSendDto.setGiftFrom(memberGiftRecord.getGiftFrom());
|
birthdayGiftSendDto.setShopId(memberGiftRecord.getShopId());
|
birthdayGiftSendDto.setGoodsId(memberGiftRecord.getGoodsId());
|
birthdayGiftSendDto.setGoodsNumber(memberGiftRecord.getGoodsNumber());
|
giftSendDtoList.add(birthdayGiftSendDto);
|
consumerGoodsService.sendGoodsGift(giftSendDtoList);
|
break;
|
case 3:
|
merVerifyAwardVo.setGiftName("现金");
|
merVerifyAwardVo.setGiftNumber(memberGiftRecord.getMoney().doubleValue());
|
break;
|
case 4:
|
merVerifyAwardVo.setGiftName(memberGiftRecord.getGiftName());
|
merVerifyAwardVo.setGiftNumber(Double.valueOf(memberGiftRecord.getGiftNumber()));
|
break;
|
default:
|
break;
|
}
|
merVerifyAwardVo.setCreateTime(memberGiftRecord.getCreateTime());
|
MerVerifyPrizeFinalDto merVerifyPrizeFinalDto = new MerVerifyPrizeFinalDto();
|
merVerifyPrizeFinalDto.setPrizeId(memberGiftRecord.getPrizeId());
|
merVerifyPrizeFinalDto.setShopId(shop.getShopId());
|
remoteMemberService.verifyPrize(merVerifyPrizeFinalDto);
|
if (member.getBindingFlag() != 1) {
|
AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto();
|
appMemberBindingDto.setBindingFlag(1);
|
appMemberBindingDto.setBindingType(5);
|
appMemberBindingDto.setShopId(shop.getShopId());
|
appMemberBindingDto.setShopName(shop.getShopName());
|
appMemberBindingDto.setUserId(memberGiftRecord.getUserId());
|
remoteMemberService.updateMemberBinding(appMemberBindingDto);
|
}
|
merVerifyAwardVo.setPrizeId(merVerifyPrizeDto.getPrizeId());
|
merVerifyAwardVo.setVerifyStatus(2);
|
return merVerifyAwardVo;
|
}
|
|
|
/**
|
* 收银未结清订单列表
|
*
|
* @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) {
|
if (merMemberNoClearOrderVo.getUnPaidMoney() == null) {
|
merMemberNoClearOrderVo.setUnPaidMoney(zeroBig);
|
}
|
if(merMemberNoClearOrderVo.getUnPaidMoney().compareTo(zeroBig)<0){
|
merMemberNoClearOrderVo.setUnPaidMoney(zeroBig);
|
}
|
}
|
}
|
return merMemberNoClearOrderVoList;
|
}
|
|
/**
|
* 结清订单
|
*
|
* @param merCloseOrderDto
|
*/
|
@Override
|
public void merCloseOrder(MerCloseOrderDto merCloseOrderDto) {
|
Order order = this.getById(merCloseOrderDto.getOrderId());
|
order.setOfflinePayMoney(order.getOfflinePayMoney().add(merCloseOrderDto.getPayMoney()));
|
order.setOffPayTime(new Date());
|
order.setPayMoney(order.getPayMoney().add(merCloseOrderDto.getPayMoney()));
|
if (order.getPayMoney().compareTo(order.getChangeReceivableMoney()) >= 0) {
|
order.setCloseFlag(1);
|
} else {
|
order.setCloseFlag(0);
|
}
|
this.saveOrUpdate(order);
|
//创建支付记录
|
PayRecord payRecord = new PayRecord();
|
payRecord.setDelFlag(0);
|
payRecord.setOrderId(order.getOrderId());
|
payRecord.setPayMoney(merCloseOrderDto.getPayMoney());
|
payRecord.setPayTime(new Date());
|
payRecord.setPayType(merCloseOrderDto.getPayType());
|
payRecordService.save(payRecord);
|
}
|
|
/**
|
* 创建新订单
|
*
|
* @param merNewOrderDto
|
*/
|
@Override
|
public void createNewOrder(MerNewOrderDto merNewOrderDto) {
|
Long userId = merNewOrderDto.getBuyUserId();
|
Date nowTime = new Date();
|
Long shopId = merNewOrderDto.getShopId();
|
Shop shop = remoteShopService.getShop(shopId).getData();
|
//如果非指定用户判断是否需要通过手机号创建新用户
|
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));
|
sysUser = remoteUserService.registerUser(sysUser).getData();
|
member = new Member();
|
member.setMemberId(memberId);
|
member.setUserId(sysUser.getUserId());
|
member.setMobile(mobile);
|
member.setRealName(name);
|
member.setNickName(name);
|
member.setBindingFlag(1);
|
member.setBindingType(3);
|
member.setRelationShopId(shopId);
|
member.setRelationShopName(shop.getShopName());
|
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;
|
MerBaseDto merBaseDto = new MerBaseDto();
|
merBaseDto.setUserId(userId);
|
merBaseDto.setShopId(shopId);
|
List<AppMemberCouponVo> appMemberCouponVoList = remoteCouponService.listVoMemberCouponByUserId(merBaseDto).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;
|
GoodsFile goodsFile;
|
BigDecimal cycleMoney = new BigDecimal("0.00");
|
BigDecimal experienceMoney = new BigDecimal("0.00");
|
BigDecimal serviceMoney = new BigDecimal("0.00");
|
BigDecimal goodsMoney = new BigDecimal("0.00");
|
List<OrderGoods> orderGoodsList = new ArrayList<>();
|
ConsumerGoods consumerGoods;
|
String consumerGoodsId;
|
List<ConsumerGoods> consumerGoodsList = new ArrayList<>();
|
//使用优惠券
|
StringJoiner memberCouponSJ = new StringJoiner(",");
|
for (AppBuyGoodsDto appBuyGoodsDto : appBuyGoodsDtoList) {
|
goodsId = appBuyGoodsDto.getGoodsId();
|
memberCouponId = appBuyGoodsDto.getMemberCouponId();
|
goods = remoteGoodsService.getGoods(goodsId).getData();
|
goodsFile = remoteGoodsService.getGoodsFile(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, 2, BigDecimal.ROUND_HALF_UP);
|
discountMoney = goodsTotalPrice.subtract(goodsRealPrice);
|
} else if (couponType == 3 && appMemberCouponVo.getDiscountMoney() != null) {
|
discountMoney = appMemberCouponVo.getDiscountMoney();
|
goodsRealPrice = goodsTotalPrice.subtract(discountMoney);
|
}
|
if(goodsRealPrice.compareTo(BigDecimal.ZERO)<0){
|
goodsRealPrice = BigDecimal.ZERO;
|
discountMoney = goodsTotalPrice.subtract(goodsRealPrice);
|
}
|
memberCouponSJ.add(memberCouponId);
|
}
|
}
|
goodsDeposit = goods.getSubscription();
|
if (goodsDeposit == null || goodsDeposit.compareTo(BigDecimal.ZERO) == 0) {
|
goodsDeposit = new BigDecimal("0.00");
|
} else {
|
goodsDeposit = goodsDeposit.multiply(buyNumBig);
|
}
|
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());
|
orderGoods.setGoodsTag(goods.getGoodsTags());
|
orderGoods.setGoodsName(goods.getGoodsName());
|
orderGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
|
orderGoods.setGoodsPicture(goodsFile.getFileUrl());
|
orderGoodsList.add(orderGoods);
|
|
//创建服务
|
Integer buyGoodsNum = orderGoods.getBuyNum();
|
//判断是否确认次数
|
if (orderGoods.getCycleNumFlag() == 0) {
|
consumerGoods = new ConsumerGoods();
|
consumerGoodsId = IdUtils.simpleUUID();
|
consumerGoods.setConsumerGoodsId(consumerGoodsId);
|
consumerGoods.setDelFlag(0);
|
consumerGoods.setServiceStatus(1);
|
consumerGoods.setShopId(shopId);
|
consumerGoods.setUserId(userId);
|
consumerGoods.setOrderId(orderId);
|
consumerGoods.setOrderGoodsId(orderGoodsId);
|
consumerGoods.setGoodsId(orderGoods.getGoodsId());
|
consumerGoods.setGoodsName(orderGoods.getGoodsName());
|
consumerGoods.setCycleNumFlag(orderGoods.getCycleNumFlag());
|
consumerGoods.setServiceNum(orderGoods.getServiceNum());
|
consumerGoods.setUsedNum(0);
|
consumerGoods.setGoodsType(orderGoods.getGoodsType());
|
consumerGoods.setGoodsTag(orderGoods.getGoodsTag());
|
consumerGoods.setCreateTime(nowTime);
|
consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
|
consumerGoods.setGoodsPicture(orderGoods.getGoodsPicture());
|
consumerGoods.setGoodsNurses(goods.getGoodsNurses());
|
consumerGoods.setSourceFrom(1);
|
consumerGoods.setSureNum(buyGoodsNum);
|
consumerGoodsList.add(consumerGoods);
|
} else {
|
for (int i = 0; i < buyGoodsNum; i++) {
|
consumerGoods = new ConsumerGoods();
|
consumerGoodsId = IdUtils.simpleUUID();
|
consumerGoods.setConsumerGoodsId(consumerGoodsId);
|
consumerGoods.setDelFlag(0);
|
consumerGoods.setServiceStatus(1);
|
consumerGoods.setShopId(shopId);
|
consumerGoods.setUserId(userId);
|
consumerGoods.setOrderId(orderId);
|
consumerGoods.setOrderGoodsId(orderGoodsId);
|
consumerGoods.setGoodsId(orderGoods.getGoodsId());
|
consumerGoods.setGoodsName(orderGoods.getGoodsName());
|
consumerGoods.setCycleNumFlag(orderGoods.getCycleNumFlag());
|
consumerGoods.setServiceNum(orderGoods.getServiceNum());
|
consumerGoods.setUsedNum(0);
|
consumerGoods.setGoodsType(orderGoods.getGoodsType());
|
consumerGoods.setGoodsTag(orderGoods.getGoodsTag());
|
consumerGoods.setCreateTime(nowTime);
|
consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
|
consumerGoods.setGoodsPicture(orderGoods.getGoodsPicture());
|
consumerGoods.setGoodsNurses(goods.getGoodsNurses());
|
consumerGoods.setSourceFrom(1);
|
consumerGoodsList.add(consumerGoods);
|
}
|
}
|
|
//商户变更计算
|
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(orderPayDeposit);
|
order.setPayType(1);
|
//判断实收金额
|
if (merNewOrderDto.getChangeMoney() != null) {
|
order.setChangeReceivableMoney(merNewOrderDto.getChangeMoney());
|
} else {
|
order.setChangeReceivableMoney(orderPayMoney);
|
}
|
order.setOrderRemark(merNewOrderDto.getOrderRemark());
|
order.setGoodsNum(goodsNum);
|
order.setCreateTime(nowTime);
|
order.setUseTime(nowTime);
|
order.setUseUserId(merNewOrderDto.getUserId());
|
order.setPayMoney(merNewOrderDto.getPayMoney());
|
order.setOnlinePayMoney(new BigDecimal("0.00"));
|
order.setOfflinePayMoney(merNewOrderDto.getPayMoney());
|
order.setPayMoney(merNewOrderDto.getPayMoney());
|
order.setOffPayTime(nowTime);
|
order.setPayType(1);
|
//判断结清
|
if (order.getPayMoney().compareTo(order.getChangeReceivableMoney()) >= 0) {
|
order.setCloseFlag(1);
|
} else {
|
order.setCloseFlag(0);
|
}
|
//保存订单和服务
|
this.save(order);
|
orderGoodsService.saveBatch(orderGoodsList);
|
consumerGoodsService.saveBatchConsumerGoods(consumerGoodsList);
|
//减去优惠券
|
if (StringUtils.isNotBlank(memberCouponSJ.toString())) {
|
remoteCouponService.useMemberCoupon(memberCouponSJ.toString());
|
}
|
//用户未绑定则绑定商户
|
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);
|
appMemberBindingDto.setBindingType(3);
|
remoteMemberService.updateMemberBinding(appMemberBindingDto);
|
}
|
//更新商户统计
|
ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto();
|
shopTotalChangeDto.setShopId(order.getShopId());
|
shopTotalChangeDto.setOrderType(1);
|
shopTotalChangeDto.setCycleMoney(cycleMoney);
|
shopTotalChangeDto.setServiceMoney(serviceMoney);
|
shopTotalChangeDto.setExperienceMoney(experienceMoney);
|
shopTotalChangeDto.setGoodsMoney(goodsMoney);
|
remoteShopService.changeShopTotal(shopTotalChangeDto);
|
//创建支付记录
|
PayRecord payRecord = new PayRecord();
|
payRecord.setDelFlag(0);
|
payRecord.setOrderId(orderId);
|
payRecord.setPayMoney(order.getPayMoney());
|
payRecord.setPayTime(order.getOffPayTime());
|
payRecord.setPayType(merNewOrderDto.getPayType());
|
payRecordService.save(payRecord);
|
}
|
|
|
/**
|
* @param merOrderPageDto
|
* @return
|
*/
|
@Override
|
public List<MerOrderPageVo> pageMerOrder(Page page, MerOrderPageDto merOrderPageDto) {
|
if (StringUtils.isNotBlank(merOrderPageDto.getKeyword())) {
|
// 获取关键字对应的用户ID
|
MgtUserIdByKeywordDto userIdByKeywordDto = new MgtUserIdByKeywordDto();
|
userIdByKeywordDto.setKeyword(merOrderPageDto.getKeyword());
|
MgtUserIdByKeywordVo userIdByKeywordVo = remoteMemberService.getUserIdByKeyword(userIdByKeywordDto).getData();
|
if (StringUtils.isNotBlank(userIdByKeywordVo.getUserIds())) {
|
// 将用户ID转换成List<Long>类型
|
List<Long> userIdList = Arrays.stream(userIdByKeywordVo.getUserIds().split(","))
|
.map(Long::parseLong)
|
.collect(Collectors.toList());
|
merOrderPageDto.setMemberUserIdList(userIdList);
|
merOrderPageDto.setMemberUserId(null);
|
}
|
}
|
|
// 获取订单列表
|
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");
|
StringJoiner userIdSj = new StringJoiner(",");
|
// 遍历订单列表
|
for (MerOrderPageVo merOrderPageVo : merOrderPageVoList) {
|
userId = merOrderPageVo.getUserId();
|
userIdSj.add(userId.toString());
|
orderFrom = merOrderPageVo.getOrderFrom();
|
// 根据订单来源设置订单来源描述
|
if (orderFrom != null) {
|
if (orderFrom == 1) {
|
orderFromDesc = "商城订单";
|
} else if (orderFrom == 2) {
|
orderFromDesc = "店铺砍价活动(" + merOrderPageVo.getActivityName() + ")";
|
} else {
|
orderFromDesc = "线下创建";
|
}
|
} else {
|
orderFromDesc = "商城订单";
|
}
|
merOrderPageVo.setOrderFromDesc(orderFromDesc);
|
// 设置未支付金额为0.00,如果未支付金额小于0,则设置为0.00
|
if (merOrderPageVo.getUnPaidMoney() == null) {
|
merOrderPageVo.setUnPaidMoney(zeroBig);
|
}
|
if (merOrderPageVo.getUnPaidMoney().compareTo(zeroBig) < 0) {
|
merOrderPageVo.setUnPaidMoney(zeroBig);
|
}
|
}
|
|
// 根据用户ID列表获取用户信息
|
MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto();
|
mgtBaseBathDto.setIds(userIdSj.toString());
|
List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(mgtBaseBathDto).getData();
|
Map<Long, MgtSimpleMemberVo> userMap = simpleMemberVoList.stream()
|
.collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity()));
|
// 遍历订单列表,设置用户信息
|
for (MerOrderPageVo merOrderPageVo : merOrderPageVoList) {
|
if (merOrderPageVo.getUserId() != null && userMap.get(merOrderPageVo.getUserId()) != null) {
|
merOrderPageVo.setUserName(userMap.get(merOrderPageVo.getUserId()).getRealName());
|
merOrderPageVo.setNickName(userMap.get(merOrderPageVo.getUserId()).getNickName());
|
merOrderPageVo.setUserMobile(userMap.get(merOrderPageVo.getUserId()).getUserMobile());
|
} else {
|
log.debug("订单merOrderPageVo" + merOrderPageVo.getOrderId() + "缺少用户");
|
}
|
}
|
}
|
return merOrderPageVoList;
|
}
|
|
/**
|
* @param page
|
* @param merMemberNoClearOrderDto
|
* @return
|
*/
|
@Override
|
public List<MerMemberOrderVo> pageMerMemberOrder(Page page, MerMemberNoClearOrderDto merMemberNoClearOrderDto) {
|
List<MerMemberOrderVo> merMemberNoClearOrderVoList = orderMapper.pageMerMemberOrder(page, merMemberNoClearOrderDto.getMemberUserId(),merMemberNoClearOrderDto.getShopId());
|
if (merMemberNoClearOrderVoList != null && !merMemberNoClearOrderVoList.isEmpty()) {
|
BigDecimal zeroBig = new BigDecimal("0.00");
|
for (MerMemberOrderVo merMemberNoClearOrderVo : merMemberNoClearOrderVoList) {
|
if (merMemberNoClearOrderVo.getUnPaidMoney() == null) {
|
merMemberNoClearOrderVo.setUnPaidMoney(zeroBig);
|
}
|
if(merMemberNoClearOrderVo.getUnPaidMoney().compareTo(zeroBig)<0){
|
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<>();
|
BigDecimal zeroBig = new BigDecimal("0.00");
|
// 遍历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());
|
BigDecimal unPaidMoney = mgtMemberOrderPageVo.getReceivableMoney().subtract(mgtMemberOrderPageVo.getPayMoney());
|
mgtMemberOrderPageVo.setUnPaidMoney(unPaidMoney == null ? zeroBig : unPaidMoney);
|
}
|
}
|
// 返回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.setNickName(userMap.get(mgtActivityOrderPageVo.getUserId()).getNickName());
|
mgtActivityOrderPageVo.setUserName(userMap.get(mgtActivityOrderPageVo.getUserId()).getRealName());
|
mgtActivityOrderPageVo.setUserMobile(userMap.get(mgtActivityOrderPageVo.getUserId()).getUserMobile());
|
}
|
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(mgtShopOrderPageDto);
|
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.setNickName(userMap.get(mgtShopOrderPageVo.getUserId()).getNickName());
|
mgtShopOrderPageVo.setUserName(userMap.get(mgtShopOrderPageVo.getUserId()).getRealName());
|
mgtShopOrderPageVo.setUserMobile(userMap.get(mgtShopOrderPageVo.getUserId()).getUserMobile());
|
}
|
}
|
BigDecimal unPaidMoney = mgtShopOrderPageVo.getReceivableMoney().subtract(mgtShopOrderPageVo.getPayMoney());
|
mgtShopOrderPageVo.setUnPaidMoney(unPaidMoney == null ? zeroBig : unPaidMoney);
|
}
|
//处理商品信息
|
List<MgtOrderGoodsPageVo> mgtOrderGoodsVoList;
|
String goodsString;
|
for (MgtShopOrderPageVo entity : shopOrderPageVoList) {
|
mgtOrderGoodsVoList = entity.getMgtOrderGoodsPageVoList();
|
goodsString = mgtOrderGoodsVoList.stream()
|
.map(goods -> goods.getGoodsName() + "*" + goods.getBuyNum())
|
.collect(Collectors.joining(";"));
|
entity.setGoodsInfo(goodsString);
|
}
|
}
|
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());
|
if (shop != null) {
|
mgtOrderDetailVo.setShopName(shop.getShopName());
|
} else {
|
mgtOrderDetailVo.setShopName("商户已被删除");
|
}
|
mgtOrderDetailVo.setVerifyTime(order.getUseTime());
|
//获取支付记录
|
List<MgtOrderPayListVo> orderPayListVoList = payRecordService.listMgtOrderPayVo(orderId);
|
mgtOrderDetailVo.setOrderPayListVoList(orderPayListVoList);
|
return mgtOrderDetailVo;
|
}
|
|
/**
|
* @param
|
* @return MgtBulletinBoardVo
|
* @description boardOrderTotal
|
* @author jqs34
|
* @date 2023/6/18 17:20
|
*/
|
@Override
|
public MgtBulletinBoardVo boardOrderTotal() {
|
MgtBulletinBoardVo mgtBulletinBoardVo = orderMapper.boardOrderTotal();
|
Integer activityUserTotal = orderMapper.activityUserTotal();
|
mgtBulletinBoardVo.setActivityUserTotal(activityUserTotal);
|
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, Long shopId) {
|
if(verifyCode.contains("+")){
|
verifyCode = verifyCode.substring(0, verifyCode.indexOf("+"));
|
}
|
// 创建MerVerifyCouponVo对象
|
MerVerifyCouponVo merVerifyCouponVo = new MerVerifyCouponVo();
|
// 调用remoteCouponService的getVerifyCoupon方法获取MerVerifyCouponGetVo对象
|
MerVerifyCouponGetVo verifyCouponGetVo = remoteCouponService.getVerifyCoupon(verifyCode).getData();
|
MemberCoupon memberCoupon = verifyCouponGetVo.getMemberCoupon();
|
// 检查优惠券状态
|
int couponStatus = memberCoupon.getCouponStatus();
|
if (couponStatus == 0) {
|
throw new ServiceException(AppErrorConstant.COUPON_EXPIRED);
|
} else if (couponStatus == 2) {
|
throw new ServiceException(AppErrorConstant.COUPON_USED);
|
} else if (couponStatus != 1) {
|
throw new ServiceException(AppErrorConstant.COUPON_NO_FIND);
|
}
|
Long userId = verifyCouponGetVo.getUserId();
|
Member member = remoteMemberService.getMember(userId).getData();
|
//如果是商户优惠券,验证商户一致
|
if (memberCoupon.getCouponFrom() == 2 && !memberCoupon.getShopId().equals(shopId)) {
|
if(!memberCoupon.getShopId().equals(member.getRelationShopId())){
|
throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
|
}
|
if(memberCoupon.getShopId().equals(shopId)){
|
throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
|
}
|
}
|
//如果是平台优惠券,当用户绑定商户时验证商户一致
|
if (memberCoupon.getCouponFrom() == 1 && member.getBindingFlag() == 1) {
|
if(!memberCoupon.getShopId().equals(member.getRelationShopId())){
|
throw new ServiceException(AppErrorConstant.BLINDING_VERIFY_SHOP_ERROR);
|
}
|
if(memberCoupon.getShopId().equals(shopId)){
|
throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
|
}
|
}
|
List<Goods> goodsList = verifyCouponGetVo.getGoodsList();
|
// 调用remoteMemberService的getMember方法获取Member对象
|
merVerifyCouponVo.setUserName(member.getRealName());
|
merVerifyCouponVo.setUserMobile(member.getMobile());
|
merVerifyCouponVo.setCouponFrom(verifyCouponGetVo.getCouponFrom());
|
merVerifyCouponVo.setCouponName(memberCoupon.getCouponName());
|
merVerifyCouponVo.setCreateTime(memberCoupon.getReceiveTime());
|
// 将goodsList转换为MerCouponGoodsListVo列表,并设置相应属性
|
List<MerCouponGoodsListVo> merCouponGoodsList = goodsList.stream()
|
.map(goods -> {
|
MerCouponGoodsListVo merCouponGoods = new MerCouponGoodsListVo();
|
merCouponGoods.setGoodsId(goods.getGoodsId());
|
merCouponGoods.setGoodsName(goods.getGoodsName());
|
merCouponGoods.setGoodsNum(1);
|
if (goods.getGoodsType() == 1) {
|
merCouponGoods.setGoodsType("周期");
|
} else if (goods.getGoodsType() == 2) {
|
merCouponGoods.setGoodsType("服务");
|
} else if (goods.getGoodsType() == 3) {
|
merCouponGoods.setGoodsType("体验");
|
} else if (goods.getGoodsType() == 4) {
|
merCouponGoods.setGoodsType("单品");
|
}
|
// 设置其他属性
|
return merCouponGoods;
|
})
|
.collect(Collectors.toList());
|
// 设置merVerifyCouponVo的goodsList属性为merCouponGoodsList
|
merVerifyCouponVo.setGoodsList(merCouponGoodsList);
|
merVerifyCouponVo.setVerifyStatus(1);
|
merVerifyCouponVo.setMemberCouponId(memberCoupon.getId());
|
return merVerifyCouponVo;
|
}
|
|
/**
|
* @param verifyCode
|
* @param shopId
|
* @return MerVerifyAwardVo
|
* @description 获取核销奖品
|
* @author jqs
|
* @date 2023/7/8 17:46
|
*/
|
@Override
|
public MerVerifyAwardVo verifyPrize(String verifyCode, Long shopId) {
|
MerVerifyAwardVo merVerifyAwardVo = new MerVerifyAwardVo();
|
MemberGiftRecord memberGiftRecord = remoteMemberService.getVerifyPrize(verifyCode).getData();
|
if (memberGiftRecord == null || memberGiftRecord.getVerifyStatus() != 1) {
|
throw new ServiceException(AppErrorConstant.COUPON_USED);
|
}
|
Shop shop = null;
|
Member member = remoteMemberService.getMember(memberGiftRecord.getUserId()).getData();
|
//判断是否在绑定店铺核销
|
if(member.getBindingFlag()==1){
|
if(!member.getRelationShopId().equals(shopId)){
|
throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
|
}
|
}
|
//平台奖品判断
|
if (memberGiftRecord.getGiftFrom() == 1) {
|
BirthdayCard birthdayCard = remoteMemberService.getBirthdayCard().getData();
|
//判断生日活动状态
|
if(birthdayCard!=null&&birthdayCard.getCardStatus()==1){
|
shop = remoteShopService.getShop(shopId).getData();
|
//判断指定区域全部店铺
|
if(birthdayCard.getAreaFlag()==2&&birthdayCard.getShopFlag()==1&&!StringUtils.checkString(birthdayCard.getDesignatedArea(),shop.getShopCityCode())){
|
throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
|
}
|
//判断指定店铺
|
if(birthdayCard.getShopFlag()==2&&!StringUtils.checkString(birthdayCard.getApplicableShop(),shopId.toString())){
|
throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
|
}
|
}else{
|
throw new ServiceException(AppErrorConstant.BIRTHDAY_CARD_ERROR);
|
}
|
}
|
//商户奖品判断
|
if (memberGiftRecord.getGiftFrom() == 2 && !memberGiftRecord.getShopId().equals(shopId)) {
|
throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
|
}
|
|
merVerifyAwardVo.setUserName(member.getRealName());
|
merVerifyAwardVo.setUserMobile(member.getMobile());
|
if (memberGiftRecord.getGiftFrom() == 1) {
|
merVerifyAwardVo.setGiftFrom("平台生日卡");
|
} else {
|
merVerifyAwardVo.setGiftFrom("商户生日卡");
|
}
|
merVerifyAwardVo.setGiftType(memberGiftRecord.getGiftType());
|
//礼物类型1优惠券2商品3现金4实物
|
switch (memberGiftRecord.getGiftType()) {
|
case 1:
|
merVerifyAwardVo.setGiftName(memberGiftRecord.getCouponName());
|
merVerifyAwardVo.setGiftNumber(Double.valueOf(memberGiftRecord.getCouponNumber()));
|
break;
|
case 2:
|
Goods goods = remoteGoodsService.getGoods(memberGiftRecord.getGoodsId()).getData();
|
merVerifyAwardVo.setGiftName(memberGiftRecord.getGoodsName());
|
merVerifyAwardVo.setGiftNumber(Double.valueOf(memberGiftRecord.getGoodsNumber()));
|
if (goods.getGoodsType() == 1) {
|
merVerifyAwardVo.setGiftRemark("周期");
|
} else if (goods.getGoodsType() == 2) {
|
merVerifyAwardVo.setGiftRemark("服务");
|
} else if (goods.getGoodsType() == 3) {
|
merVerifyAwardVo.setGiftRemark("体验");
|
} else if (goods.getGoodsType() == 4) {
|
merVerifyAwardVo.setGiftRemark("单品");
|
}
|
break;
|
case 3:
|
merVerifyAwardVo.setGiftName("现金");
|
merVerifyAwardVo.setGiftNumber(memberGiftRecord.getMoney().doubleValue());
|
break;
|
case 4:
|
merVerifyAwardVo.setGiftName(memberGiftRecord.getGiftName());
|
merVerifyAwardVo.setGiftNumber(Double.valueOf(memberGiftRecord.getGiftNumber()));
|
break;
|
default:
|
break;
|
}
|
merVerifyAwardVo.setCreateTime(memberGiftRecord.getCreateTime());
|
merVerifyAwardVo.setVerifyStatus(1);
|
merVerifyAwardVo.setPrizeId(verifyCode);
|
return merVerifyAwardVo;
|
}
|
|
/**
|
* @param merBaseDto
|
* @return BigDecimal
|
* @description 获取用户未支付金额
|
* @author jqs
|
* @date 2023/6/29 18:00
|
*/
|
@Override
|
public BigDecimal getMemberUnpaidOrder(MerBaseDto merBaseDto) {
|
BigDecimal unpaidMoney = orderMapper.getMemberUnpaidOrder(merBaseDto);
|
return unpaidMoney;
|
}
|
|
/**
|
* @param merTotalDto
|
* @return MerOrderTotalVo
|
* @description 商户获取订单统计
|
* @author jqs
|
* @date 2023/7/3 19:29
|
*/
|
@Override
|
public MerOrderTotalVo getMerOrderTotal(MerTotalDto merTotalDto) {
|
if (merTotalDto.getShopAllFlag() != null && merTotalDto.getShopAllFlag() == 1) {
|
List<Long> shopIdList = remoteShopService.listShopIdByShopId(merTotalDto.getShopId()).getData();
|
merTotalDto.setShopIdList(shopIdList);
|
merTotalDto.setShopId(null);
|
}
|
MerOrderTotalVo orderTotalVo = orderMapper.getMerOrderTotalOrderFrom(merTotalDto);
|
MerOrderTotalVo goodsTypeVo = orderMapper.getMerTotalOrderTotalGoodsType(merTotalDto);
|
orderTotalVo.setCycleTotal(goodsTypeVo.getCycleTotal());
|
orderTotalVo.setCycleMoney(goodsTypeVo.getCycleMoney());
|
orderTotalVo.setExperienceTotal(goodsTypeVo.getExperienceTotal());
|
orderTotalVo.setExperienceMoney(goodsTypeVo.getExperienceMoney());
|
orderTotalVo.setServiceTotal(goodsTypeVo.getServiceTotal());
|
orderTotalVo.setServiceMoney(goodsTypeVo.getServiceMoney());
|
return orderTotalVo;
|
}
|
|
|
/**
|
* @param merTotalDto
|
* @return MerOrderDistributionTotalVo
|
* @description
|
* @author jqs
|
* @date 2023/7/4 9:29
|
*/
|
@Override
|
public MerOrderDistributionTotalVo MerOrderDistributionTotalVo(MerTotalDto merTotalDto) {
|
if (merTotalDto.getShopAllFlag() != null && merTotalDto.getShopAllFlag() == 1) {
|
List<Long> shopIdList = remoteShopService.listShopIdByShopId(merTotalDto.getShopId()).getData();
|
merTotalDto.setShopIdList(shopIdList);
|
merTotalDto.setShopId(null);
|
}
|
MerOrderDistributionTotalVo orderDistributionTotalVo = new MerOrderDistributionTotalVo();
|
// 获取订单年龄用户列表
|
//List<MerOrderAgeUserVo> orderAgeUserVoList = remoteMemberService.listOrderAgeUser(merTotalDto).getData();
|
// 如果订单年龄用户列表不为空
|
/*if (orderAgeUserVoList != null && !orderAgeUserVoList.isEmpty()) {
|
// 定义变量
|
Integer ageType;
|
List<Long> userIdList;
|
MerOrderAgeUserVo orderAgeUserVo;
|
MgtMapTotalPlusVo mgtMapTotalPlusVo;
|
String[] orderTotalKey = new String[5];
|
Integer[] orderTotalValue = new Integer[5];
|
BigDecimal[] orderMoneyValue = new BigDecimal[5];
|
// 遍历订单年龄用户列表
|
for (int i = 0; i < orderAgeUserVoList.size(); i++) {
|
orderAgeUserVo = orderAgeUserVoList.get(i);
|
ageType = orderAgeUserVo.getAgeType();
|
userIdList = orderAgeUserVo.getUserIdList();
|
// 根据年龄类型设置订单总数键
|
switch (ageType) {
|
case 1:
|
orderTotalKey[i] = "<20";
|
break;
|
case 2:
|
orderTotalKey[i] = "21-30";
|
break;
|
case 3:
|
orderTotalKey[i] = "31-40";
|
break;
|
case 4:
|
orderTotalKey[i] = "41-50";
|
break;
|
case 5:
|
orderTotalKey[i] = ">50";
|
break;
|
}
|
// 如果用户ID列表不为空
|
if (userIdList != null && !userIdList.isEmpty()) {
|
mgtMapTotalPlusVo = orderMapper.listMerOrderDistributionTotal(userIdList);
|
orderTotalValue[i] = mgtMapTotalPlusVo.getMapValueFirst();
|
orderMoneyValue[i] = mgtMapTotalPlusVo.getMapValueSecond();
|
} else {
|
orderTotalValue[i] = 0;
|
orderMoneyValue[i] = BigDecimal.ZERO;
|
}
|
}*/
|
List<MgtMapTotalPlusVo> mgtMapTotalPlusVoList = orderMapper.listMerOrderDistributionTotal(merTotalDto);
|
if (mgtMapTotalPlusVoList != null && !mgtMapTotalPlusVoList.isEmpty()) {
|
String[] orderTotalKey = new String[mgtMapTotalPlusVoList.size()];
|
Integer[] orderTotalValue = new Integer[mgtMapTotalPlusVoList.size()];
|
BigDecimal[] orderMoneyValue = new BigDecimal[mgtMapTotalPlusVoList.size()];
|
MgtMapTotalPlusVo mgtMapTotalPlusVo;
|
for (int i = 0; i < mgtMapTotalPlusVoList.size(); i++) {
|
mgtMapTotalPlusVo = mgtMapTotalPlusVoList.get(i);
|
orderTotalKey[i] = mgtMapTotalPlusVo.getMapKey();
|
orderTotalValue[i] = mgtMapTotalPlusVo.getMapValueFirst();
|
orderMoneyValue[i] = mgtMapTotalPlusVo.getMapValueSecond();
|
}
|
orderDistributionTotalVo.setOrderTotalKey(orderTotalKey);
|
orderDistributionTotalVo.setOrderTotalValue(orderTotalValue);
|
orderDistributionTotalVo.setOrderMoneyValue(orderMoneyValue);
|
}
|
// 返回订单分布总数对象
|
return orderDistributionTotalVo;
|
}
|
|
/**
|
* @param merTotalDto
|
* @return MerOrderTypeTotalVo
|
* @description 商户获取销售占比统计
|
* @author jqs
|
* @date 2023/7/4 13:58
|
*/
|
@Override
|
public MerOrderTypeTotalVo getMerOrderTypeTotal(MerTotalDto merTotalDto) {
|
if (merTotalDto.getShopAllFlag() != null && merTotalDto.getShopAllFlag() == 1) {
|
List<Long> shopIdList = remoteShopService.listShopIdByShopId(merTotalDto.getShopId()).getData();
|
merTotalDto.setShopIdList(shopIdList);
|
merTotalDto.setShopId(null);
|
}
|
MerOrderTypeTotalVo orderTypeTotalVo = new MerOrderTypeTotalVo();
|
//获取商品分类销售数据
|
List<MgtMapTotalPlusVo> MgtMapIntTotalVoGoodsType = orderMapper.listMerOrderTotalGoodsType(merTotalDto);
|
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("周期");
|
} else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("2")) {
|
MgtMapIntTotalVo.setMapKey("服务");
|
mgtMapBigTotalVo.setMapKey("服务");
|
} else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("3")) {
|
MgtMapIntTotalVo.setMapKey("体验");
|
mgtMapBigTotalVo.setMapKey("体验");
|
} else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) {
|
MgtMapIntTotalVo.setMapKey("单品");
|
mgtMapBigTotalVo.setMapKey("单品");
|
}
|
goodsTypeTotalList.add(MgtMapIntTotalVo);
|
goodsTypeMoneyList.add(mgtMapBigTotalVo);
|
}
|
orderTypeTotalVo.setGoodsTypeTotalList(goodsTypeTotalList);
|
orderTypeTotalVo.setGoodsTypeMoneyList(goodsTypeMoneyList);
|
}
|
return orderTypeTotalVo;
|
}
|
|
|
/**
|
* @param merTotalDto
|
* @return MerOrderGoodsRankVo
|
* @description 商户端获取销售排行
|
* @author jqs
|
* @date 2023/7/4 14:23
|
*/
|
@Override
|
public MerOrderGoodsRankVo getMerOrderGoodsRank(MerTotalDto merTotalDto) {
|
if (merTotalDto.getShopAllFlag() != null && merTotalDto.getShopAllFlag() == 1) {
|
List<Long> shopIdList = remoteShopService.listShopIdByShopId(merTotalDto.getShopId()).getData();
|
merTotalDto.setShopIdList(shopIdList);
|
merTotalDto.setShopId(null);
|
}
|
MerOrderGoodsRankVo orderGoodsRankVo = new MerOrderGoodsRankVo();
|
List<MgtMapBigTotalVo> goodsRankList = orderMapper.listMerOrderTotalGoodsRank(merTotalDto);
|
if (goodsRankList != null && goodsRankList.size() > 0) {
|
goodsRankList = bigListRemoveNull(goodsRankList);
|
orderGoodsRankVo.setGoodsRankList(goodsRankList);
|
}
|
return orderGoodsRankVo;
|
}
|
|
|
/**
|
* @param merTotalDto
|
* @return MerOrderFromRankVo
|
* @description 商户端获取渠道排行
|
* @author jqs
|
* @date 2023/7/4 14:51
|
*/
|
@Override
|
public MerOrderFromRankVo getMerOrderFromRank(MerTotalDto merTotalDto) {
|
if (merTotalDto.getShopAllFlag() != null && merTotalDto.getShopAllFlag() == 1) {
|
List<Long> shopIdList = remoteShopService.listShopIdByShopId(merTotalDto.getShopId()).getData();
|
merTotalDto.setShopIdList(shopIdList);
|
merTotalDto.setShopId(null);
|
}
|
MerOrderFromRankVo merOrderFromRankVo = new MerOrderFromRankVo();
|
//获取来源销售排名
|
List<MgtMapBigTotalVo> orderFromList = orderMapper.listMerOrderTotalOrderFrom(merTotalDto);
|
if (orderFromList != null && orderFromList.size() > 0) {
|
orderFromList = bigListRemoveNull(orderFromList);
|
merOrderFromRankVo.setOrderFromRankList(orderFromList);
|
}
|
return merOrderFromRankVo;
|
}
|
|
/**
|
* @param merOrderPageDto
|
* @return MerTotalOrderVo
|
* @description 商户端订单管理统计
|
* @author jqs
|
* @date 2023/7/31 10:53
|
*/
|
@Override
|
public MerTotalOrderVo totalMerOrder(MerOrderPageDto merOrderPageDto) {
|
MerTotalOrderVo merTotalOrderVo = new MerTotalOrderVo();
|
if (StringUtils.isNotBlank(merOrderPageDto.getKeyword())) {
|
MgtUserIdByKeywordDto userIdByKeywordDto = new MgtUserIdByKeywordDto();
|
userIdByKeywordDto.setKeyword(merOrderPageDto.getKeyword());
|
MgtUserIdByKeywordVo userIdByKeywordVo = remoteMemberService.getUserIdByKeyword(userIdByKeywordDto).getData();
|
if (StringUtils.isNotBlank(userIdByKeywordVo.getUserIds())) {
|
List<Long> userIdList = Arrays.stream(userIdByKeywordVo.getUserIds().split(","))
|
.map(Long::parseLong)
|
.collect(Collectors.toList());
|
merOrderPageDto.setMemberUserIdList(userIdList);
|
merOrderPageDto.setMemberUserId(null);
|
}
|
}
|
merTotalOrderVo = orderMapper.totalMerOrder(merOrderPageDto);
|
return merTotalOrderVo;
|
}
|
|
/**
|
* @param page
|
* @param mgtShopAllOrderPageDto
|
* @return List<MgtShopAllOrderPageVo>
|
* @description 平台获取商户订单记录
|
* @author jqs
|
* @date 2023/7/5 20:17
|
*/
|
@Override
|
public List<MgtShopAllOrderPageVo> pageMgtShopAllOrder(Page page, MgtShopAllOrderPageDto mgtShopAllOrderPageDto) {
|
List<MgtShopAllOrderPageVo> shopAllOrderPageVoList = orderMapper.pageMgtShopAllOrder(page, mgtShopAllOrderPageDto);
|
if (!shopAllOrderPageVoList.isEmpty()) {
|
// 定义变量
|
HashSet<Long> userIdSet = new HashSet<>();
|
BigDecimal zeroBig = new BigDecimal("0.00");
|
// 遍历列表,获取店铺 ID 和用户 ID
|
for (MgtShopAllOrderPageVo mgtShopOrderPageVo : shopAllOrderPageVoList) {
|
userIdSet.add(mgtShopOrderPageVo.getUserId());
|
}
|
// 从远程服务获取店铺和用户信息
|
Map<Long, MgtSimpleMemberVo> userMap = null;
|
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()));
|
}
|
// 遍历列表,设置店铺名称、用户名称和未支付金额
|
String userInfo;
|
String mobile;
|
for (MgtShopAllOrderPageVo mgtShopOrderPageVo : shopAllOrderPageVoList) {
|
if (userMap != null && !userMap.isEmpty()) {
|
if (userMap.get(mgtShopOrderPageVo.getUserId()) != null) {
|
userInfo = userMap.get(mgtShopOrderPageVo.getUserId()).getNickName();
|
mobile = userMap.get(mgtShopOrderPageVo.getUserId()).getUserMobile();
|
if (StringUtils.isNotBlank(mobile)) {
|
userInfo = userInfo + "(" + mobile + ")";
|
}
|
mgtShopOrderPageVo.setUserInfo(userInfo);
|
}
|
}
|
}
|
//处理商品信息
|
List<MgtOrderGoodsPageVo> mgtOrderGoodsVoList;
|
String goodsString;
|
for (MgtShopAllOrderPageVo entity : shopAllOrderPageVoList) {
|
mgtOrderGoodsVoList = entity.getMgtOrderGoodsPageVoList();
|
goodsString = mgtOrderGoodsVoList.stream()
|
.map(goods -> goods.getGoodsName() + "*" + goods.getBuyNum())
|
.collect(Collectors.joining(";"));
|
entity.setGoodsInfo(goodsString);
|
}
|
}
|
return shopAllOrderPageVoList;
|
}
|
|
/**
|
* @param orderId
|
* @return void
|
* @description 自动取消订单
|
* @author jqs
|
* @date 2023/7/13 17:15
|
*/
|
@Override
|
@Transactional
|
public void autoCancelOrder(String orderId) {
|
//更新订单信息
|
Order order = this.getById(orderId);
|
order.setOrderStatus(0);
|
order.setCancelTime(new Date());
|
this.saveOrUpdate(order);
|
//活动订单回退库存
|
if (order.getOrderFrom() == 2) {
|
List<OrderGoods> orderGoodsList = orderGoodsService.listByOrderId(orderId);
|
if (orderGoodsList != null && !orderGoodsList.isEmpty()) {
|
for (OrderGoods orderGoods : orderGoodsList) {
|
//redis库存控制极简版
|
String goodsLock = "goods_lock_" + order.getActivityId() + "_" + orderGoods.getGoodsId();
|
RLock redissonLock = redissonClient.getLock(goodsLock);
|
try {
|
redissonLock.lock(30, TimeUnit.SECONDS);
|
Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId());
|
redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId(), surpNum + orderGoods.getBuyNum());
|
} finally {
|
redissonLock.unlock();
|
}
|
//改变活动库存
|
AGStockChangeDto agStockChangeDto = new AGStockChangeDto();
|
agStockChangeDto.setActivityId(order.getActivityId());
|
agStockChangeDto.setGoodsId(orderGoods.getGoodsId());
|
agStockChangeDto.setChangeType(1);
|
agStockChangeDto.setChangeNum(orderGoods.getBuyNum());
|
agStockChangeDto.setShopId(order.getShopId());
|
agStockChangeDto.setUserId(order.getUserId());
|
remoteActivityService.changeActivityStock(agStockChangeDto);
|
//删除活动记录
|
ActivityRecord activityRecord = new ActivityRecord();
|
activityRecord.setActivityId(order.getActivityId());
|
activityRecord.setGoodsId(orderGoods.getGoodsId());
|
activityRecord.setUserId(order.getUserId());
|
activityRecord.setOrderTime(order.getCreateTime());
|
remoteActivityService.delActivityRecord(activityRecord);
|
}
|
}
|
} else {
|
if (order.getCouponMoney().compareTo(BigDecimal.ZERO) > 0) {
|
//回退优惠券
|
List<OrderGoods> orderGoodsList = orderGoodsService.listByOrderId(orderId);
|
if (orderGoodsList != null && !orderGoodsList.isEmpty()) {
|
StringJoiner memberCouponSJ = new StringJoiner(",");
|
for (OrderGoods orderGoods : orderGoodsList) {
|
memberCouponSJ.add(orderGoods.getCouponId());
|
}
|
if (memberCouponSJ != null) {
|
remoteCouponService.backMemberCoupon(memberCouponSJ.toString());
|
|
}
|
}
|
}
|
}
|
}
|
|
/**
|
* @param transaction
|
* @return void
|
* @description 订单支付回调
|
* @author jqs
|
* @date 2023/7/13 17:57
|
*/
|
@Override
|
@Transactional
|
public void payBack(PartnerTransactionsResult transaction) {
|
// 更新订单状态
|
String orderId = transaction.getOutTradeNo();
|
Order order = this.getById(orderId);
|
order.setOrderStatus(2);
|
order.setPayTime(new Date());
|
this.saveOrUpdate(order);
|
// 初始化各类商品的收款金额
|
BigDecimal cycleMoney = new BigDecimal("0.00");
|
BigDecimal experienceMoney = new BigDecimal("0.00");
|
BigDecimal serviceMoney = new BigDecimal("0.00");
|
BigDecimal goodsMoney = new BigDecimal("0.00");
|
// 初始化各类商品的存在状态
|
Boolean haveCycle = false;
|
Boolean haveService = false;
|
Boolean haveExperience = false;
|
Boolean haveGoods = false;
|
// 获取订单中的所有商品
|
List<OrderGoods> orderGoodsList = orderGoodsService.listByOrderId(orderId);
|
List<GoodsTotalChangeDto> goodsTotalChangeDtoList = new ArrayList<>();
|
GoodsTotalChangeDto goodsTotalChangeDto;
|
// 遍历订单中的所有商品,根据商品类型累加收款金额,并标记商品存在状态
|
for (OrderGoods orderGoods : orderGoodsList) {
|
switch (orderGoods.getGoodsType()) {
|
case 1:
|
cycleMoney = cycleMoney.add(orderGoods.getGoodsReceivableMoney());
|
haveCycle = true;
|
break;
|
case 2:
|
serviceMoney = serviceMoney.add(orderGoods.getGoodsReceivableMoney());
|
haveService = true;
|
break;
|
case 3:
|
experienceMoney = experienceMoney.add(orderGoods.getGoodsReceivableMoney());
|
haveExperience = true;
|
break;
|
case 4:
|
goodsMoney = goodsMoney.add(orderGoods.getGoodsReceivableMoney());
|
haveGoods = true;
|
break;
|
default:
|
break;
|
}
|
goodsTotalChangeDto = new GoodsTotalChangeDto();
|
goodsTotalChangeDto.setGoodsId(orderGoods.getGoodsId());
|
goodsTotalChangeDto.setChangeType(1);
|
goodsTotalChangeDto.setChangeNum(orderGoods.getBuyNum());
|
goodsTotalChangeDto.setMoney(orderGoods.getGoodsReceivableMoney());
|
Integer bugGoodsNum = orderMapper.countUserBuyGoodsNum(order.getUserId(), orderGoods.getGoodsId());
|
if (bugGoodsNum == null || bugGoodsNum < 1) {
|
goodsTotalChangeDto.setPersonNum(1);
|
}
|
goodsTotalChangeDtoList.add(goodsTotalChangeDto);
|
}
|
//更新商品统计
|
remoteGoodsService.changeGoodsTotal(goodsTotalChangeDtoList);
|
// 更新商户统计信息
|
ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto();
|
shopTotalChangeDto.setShopId(order.getShopId());
|
shopTotalChangeDto.setOrderType(1);
|
shopTotalChangeDto.setCycleMoney(cycleMoney);
|
shopTotalChangeDto.setServiceMoney(serviceMoney);
|
shopTotalChangeDto.setExperienceMoney(experienceMoney);
|
shopTotalChangeDto.setGoodsMoney(goodsMoney);
|
remoteShopService.changeShopTotal(shopTotalChangeDto);
|
// 初始化会员统计信息
|
MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto();
|
memberTotalChangeDto.setUserId(order.getUserId());
|
// 如果存在积分兑换比例,则计算积分
|
if (redisService.hasKey(SecurityConstant.PAY_MONEY_INTEGRAL)) {
|
Integer moneyValue = redisService.getCacheObject(SecurityConstant.PAY_MONEY_INTEGRAL);
|
BigDecimal moneyValueBig = BigDecimal.valueOf(moneyValue);
|
BigDecimal integralBig = moneyValueBig.multiply(order.getPayMoney()).setScale(0,BigDecimal.ROUND_HALF_UP);
|
Integer integral = Integer.valueOf(integralBig.toString());
|
memberTotalChangeDto.setChangeIntegral(integral);
|
memberTotalChangeDto.setTypeIntegral(1);
|
memberTotalChangeDto.setOrderId(orderId);
|
memberTotalChangeDto.setOrderNo(order.getOrderNo());
|
}
|
// 设置会员支付金额和支付时间
|
memberTotalChangeDto.setPayMoney(order.getPayMoney());
|
memberTotalChangeDto.setPayTime(new Date());
|
// 根据商品存在状态,设置会员统计信息
|
if (haveCycle) {
|
memberTotalChangeDto.setCycleOrderChange(1);
|
}
|
if (haveService) {
|
memberTotalChangeDto.setServiceOrderChange(1);
|
}
|
if (haveExperience) {
|
memberTotalChangeDto.setExperienceOrderChange(1);
|
}
|
if (haveGoods) {
|
memberTotalChangeDto.setGoodsOrderChange(1);
|
}
|
if(order.getOrderFrom()==2){
|
memberTotalChangeDto.setActivityTime(order.getCreateTime());
|
}
|
// 更新会员统计信息
|
remoteMemberService.changeMemberTotal(memberTotalChangeDto);
|
// 如果订单来源于活动,则更新活动统计信息
|
if (order.getOrderFrom() == 2) {
|
ActivityTotalChangeDto activityTotalChangeDto = new ActivityTotalChangeDto();
|
activityTotalChangeDto.setActivityId(order.getActivityId());
|
activityTotalChangeDto.setChangeType(1);
|
activityTotalChangeDto.setChangeNum(1);
|
activityTotalChangeDto.setMoney(order.getPayMoney());
|
Integer userActivityNum = orderMapper.countUserActivityByActivity(order.getUserId(), order.getActivityId());
|
if (userActivityNum == 1) {
|
activityTotalChangeDto.setPersonNum(1);
|
} else {
|
activityTotalChangeDto.setPersonNum(0);
|
}
|
activityTotalChangeDto.setUserId(order.getUserId());
|
remoteActivityService.changeActivityTotal(activityTotalChangeDto);
|
|
|
//活动订单进行分账
|
/*ProfitSharingApplyRequest request=new ProfitSharingApplyRequest();
|
request.setAppid(this.appId);
|
request.setSubMchid("");
|
request.setTransactionId(transaction.getTransactionId());
|
profitsSharingService.applyProfitSharing(request);*/
|
}
|
//生成支付记录
|
OrderPayment orderPayment = new OrderPayment();
|
PayRecord payRecord = new PayRecord();
|
payRecord.setDelFlag(0);
|
payRecord.setOrderId(orderId);
|
payRecord.setPayMoney(order.getPayMoney());
|
payRecord.setPayTime(order.getPayTime());
|
payRecord.setPayType(1);
|
payRecordService.save(payRecord);
|
}
|
|
/**
|
* @param orderId
|
* @return void
|
* @description 订单退款
|
* @author jqs
|
* @date 2023/7/13 18:36
|
*/
|
@Override
|
@Transactional
|
public void refundOrder(String orderId) {
|
// 更新订单信息
|
Order order = this.getById(orderId);
|
order.setOrderStatus(0);
|
order.setCancelTime(new Date());
|
this.saveOrUpdate(order);
|
OrderRefund orderRefund = new OrderRefund();
|
String refundId = IdUtils.simpleUUID();
|
orderRefund.setRefundId(refundId);
|
orderRefund.setDelFlag(0);
|
orderRefund.setRefundType(1);
|
orderRefund.setOrderId(order.getOrderId());
|
orderRefund.setUserId(order.getUserId());
|
orderRefund.setShopId(order.getShopId());
|
orderRefund.setRefundMoney(order.getOnlinePayMoney());
|
orderRefund.setOrderMoney(order.getPayMoney());
|
orderRefund.setCreateTime(new Date());
|
// 初始化各类商品的收款金额
|
BigDecimal cycleMoney = new BigDecimal("0.00");
|
BigDecimal experienceMoney = new BigDecimal("0.00");
|
BigDecimal serviceMoney = new BigDecimal("0.00");
|
BigDecimal goodsMoney = new BigDecimal("0.00");
|
// 初始化各类商品的存在状态
|
Boolean haveCycle = false;
|
Boolean haveService = false;
|
Boolean haveExperience = false;
|
Boolean haveGoods = false;
|
List<OrderGoods> orderGoodsList = orderGoodsService.listByOrderId(orderId);
|
if (orderGoodsList != null && !orderGoodsList.isEmpty()) {
|
StringJoiner memberCouponSJ = new StringJoiner(",");
|
for (OrderGoods orderGoods : orderGoodsList) {
|
if (order.getOrderFrom() == 2) {
|
//redis库存控制极简版
|
//活动订单回退库存
|
String goodsLock = "goods_lock_" + order.getActivityId() + "_" + orderGoods.getGoodsId();
|
RLock redissonLock = redissonClient.getLock(goodsLock);
|
try {
|
redissonLock.lock(30, TimeUnit.SECONDS);
|
Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId());
|
redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId(), surpNum + orderGoods.getBuyNum());
|
} finally {
|
redissonLock.unlock();
|
}
|
//改变活动库存
|
AGStockChangeDto agStockChangeDto = new AGStockChangeDto();
|
agStockChangeDto.setActivityId(order.getActivityId());
|
agStockChangeDto.setGoodsId(orderGoods.getGoodsId());
|
agStockChangeDto.setChangeType(1);
|
agStockChangeDto.setChangeNum(orderGoods.getBuyNum());
|
agStockChangeDto.setShopId(order.getShopId());
|
agStockChangeDto.setUserId(order.getUserId());
|
remoteActivityService.changeActivityStock(agStockChangeDto);
|
//删除活动记录
|
ActivityRecord activityRecord = new ActivityRecord();
|
activityRecord.setActivityId(order.getActivityId());
|
activityRecord.setGoodsId(orderGoods.getGoodsId());
|
activityRecord.setUserId(order.getUserId());
|
activityRecord.setOrderTime(order.getCreateTime());
|
remoteActivityService.delActivityRecord(activityRecord);
|
} else {
|
memberCouponSJ.add(orderGoods.getCouponId());
|
}
|
switch (orderGoods.getGoodsType()) {
|
case 1:
|
cycleMoney = cycleMoney.add(orderGoods.getGoodsReceivableMoney());
|
haveCycle = true;
|
break;
|
case 2:
|
serviceMoney = serviceMoney.add(orderGoods.getGoodsReceivableMoney());
|
haveService = true;
|
break;
|
case 3:
|
experienceMoney = experienceMoney.add(orderGoods.getGoodsReceivableMoney());
|
haveExperience = true;
|
break;
|
case 4:
|
goodsMoney = goodsMoney.add(orderGoods.getGoodsReceivableMoney());
|
haveGoods = true;
|
break;
|
default:
|
break;
|
}
|
}
|
//回退优惠券
|
if (memberCouponSJ != null) {
|
remoteCouponService.backMemberCoupon(memberCouponSJ.toString());
|
}
|
}
|
// 更新商户统计信息
|
ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto();
|
shopTotalChangeDto.setOrderType(2);
|
shopTotalChangeDto.setShopId(order.getShopId());
|
shopTotalChangeDto.setCycleMoney(cycleMoney);
|
shopTotalChangeDto.setServiceMoney(serviceMoney);
|
shopTotalChangeDto.setExperienceMoney(experienceMoney);
|
shopTotalChangeDto.setGoodsMoney(goodsMoney);
|
remoteShopService.changeShopTotal(shopTotalChangeDto);
|
// 初始化会员统计信息
|
MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto();
|
memberTotalChangeDto.setUserId(order.getUserId());
|
// 如果存在积分兑换比例,则计算积分
|
/*if (redisService.hasKey(SecurityConstant.PAY_MONEY_INTEGRAL)) {
|
Integer moneyValue = redisService.getCacheObject(SecurityConstant.PAY_MONEY_INTEGRAL);
|
BigDecimal moneyValueBig = BigDecimal.valueOf(moneyValue);
|
BigDecimal integralBig = moneyValueBig.multiply(order.getPayMoney());
|
Integer integral = Integer.valueOf(integralBig.toString());
|
memberTotalChangeDto.setChangeIntegral(integral);
|
memberTotalChangeDto.setTypeIntegral(2);
|
}*/
|
// 设置会员支付金额和支付时间
|
memberTotalChangeDto.setPayMoney(order.getPayMoney().negate());
|
// 根据商品存在状态,设置会员统计信息
|
if (haveCycle) {
|
memberTotalChangeDto.setCycleOrderChange(-1);
|
}
|
if (haveService) {
|
memberTotalChangeDto.setServiceOrderChange(-1);
|
}
|
if (haveExperience) {
|
memberTotalChangeDto.setExperienceOrderChange(-1);
|
}
|
if (haveGoods) {
|
memberTotalChangeDto.setGoodsOrderChange(-1);
|
}
|
// 更新会员统计信息
|
remoteMemberService.changeMemberTotal(memberTotalChangeDto);
|
// 如果订单来源于活动,则更新活动统计信息
|
if (order.getOrderFrom() == 2) {
|
ActivityTotalChangeDto activityTotalChangeDto = new ActivityTotalChangeDto();
|
activityTotalChangeDto.setActivityId(order.getActivityId());
|
activityTotalChangeDto.setChangeType(2);
|
activityTotalChangeDto.setChangeNum(1);
|
activityTotalChangeDto.setRefundNum(1);
|
activityTotalChangeDto.setMoney(order.getPayMoney());
|
Integer userActivityNum = orderMapper.countUserActivityByActivity(order.getUserId(), order.getActivityId());
|
if (userActivityNum > 0) {
|
activityTotalChangeDto.setPersonNum(1);
|
} else {
|
activityTotalChangeDto.setPersonNum(0);
|
}
|
activityTotalChangeDto.setUserId(order.getUserId());
|
remoteActivityService.changeActivityTotal(activityTotalChangeDto);
|
}
|
|
// 用户取消订单退款
|
BigDecimal onlinePayMoney = order.getOnlinePayMoney();
|
if(BigDecimal.ZERO.compareTo(onlinePayMoney) < 0){
|
// 订单支付金额大于0,可发起退款
|
//orderWxApplyRefund(orderId, refundId, onlinePayMoney, orderRefund);
|
}
|
|
orderRefund.setRefundStatus(1);
|
orderRefundService.saveOrUpdate(orderRefund);
|
}
|
|
/**
|
* 申请退款API
|
*/
|
/*private void orderWxApplyRefund(String orderId, String outRefundNo, BigDecimal payMoney, OrderRefund orderRefund){
|
try {
|
// 创建支付订单
|
OrderPayment orderPayment = orderPaymentService.getByOrderId(orderId);
|
if (null == orderPayment) {
|
return;
|
}
|
String subMchId = orderPayment.getSubMchId();
|
WxPayConfig config = wxService.getConfig();
|
|
RefundsRequest request = new RefundsRequest();
|
request.setSpAppid(config.getAppId());
|
request.setSubMchid(subMchId);
|
request.setTransactionId(orderPayment.getTransactionId());
|
request.setOutRefundNo(outRefundNo);
|
request.setReason("用户取消订单");
|
// 订单金额
|
int total = payMoney.multiply(new BigDecimal(100)).intValue();
|
RefundsRequest.Amount amount = RefundsRequest.Amount.builder().refund(total).total(total).currency("CNY").build();
|
request.setAmount(amount);
|
request.setNotifyUrl(config.getNotifyUrl());
|
|
RefundsResult result = wxService.getEcommerceService().refunds(request);
|
|
// 微信退款id
|
orderRefund.setWxRefundId(result.getRefundId());
|
|
// 请求参数
|
Gson gson = new Gson();
|
String refundRequestJson = gson.toJson(request);
|
// 返回参数
|
String refundResponseJson = gson.toJson(result);
|
|
// 保存支付订单统一下单日志
|
paymentMessageService.savePaymentMessage("3", orderId, refundRequestJson, refundResponseJson);
|
|
} catch (WxPayException e) {
|
throw new ServiceException(e.getMessage());
|
}
|
}*/
|
|
/**
|
* @param staffTotalDto
|
* @return StaffActivityOrderTotalVo
|
* @description 员工端活动订单统计
|
* @author jqs
|
* @date 2023/7/17 15:25
|
*/
|
@Override
|
public StaffActivityOrderTotalVo getStaffActivityOrderTotal(StaffTotalDto staffTotalDto) {
|
StaffActivityOrderTotalVo staffActivityOrderTotalVo = orderMapper.getStaffActivityOrderTotal(staffTotalDto);
|
return staffActivityOrderTotalVo;
|
}
|
|
/**
|
* @param staffTotalDto
|
* @return StaffActivityTotalVo
|
* @description 员工端活动统计
|
* @author jqs
|
* @date 2023/7/17 15:51
|
*/
|
@Override
|
public StaffActivityTotalVo getStaffActivityTotal(StaffTotalDto staffTotalDto) {
|
StaffActivityTotalVo staffActivityTotalVo = orderMapper.getStaffActivityTotal(staffTotalDto);
|
return staffActivityTotalVo;
|
}
|
|
/**
|
* @param staffTotalDto
|
* @return MerOrderDistributionTotalVo
|
* @description 员工端活动统计订单分布
|
* @author jqs
|
* @date 2023/7/17 16:16
|
*/
|
@Override
|
public MerOrderDistributionTotalVo getStaffOrderDistributionTotal(StaffTotalDto staffTotalDto) {
|
MerOrderDistributionTotalVo orderDistributionTotalVo = new MerOrderDistributionTotalVo();
|
// 获取订单年龄用户列表
|
MerTotalDto merTotalDto = new MerTotalDto();
|
merTotalDto.setShopId(staffTotalDto.getShopId());
|
List<MerOrderAgeUserVo> orderAgeUserVoList = remoteMemberService.listOrderAgeUser(merTotalDto).getData();
|
// 如果订单年龄用户列表不为空
|
if (orderAgeUserVoList != null && !orderAgeUserVoList.isEmpty()) {
|
// 定义变量
|
Integer ageType;
|
List<Long> userIdList;
|
MerOrderAgeUserVo orderAgeUserVo;
|
MgtMapTotalPlusVo mgtMapTotalPlusVo;
|
String[] orderTotalKey = new String[5];
|
Integer[] orderTotalValue = new Integer[5];
|
BigDecimal[] orderMoneyValue = new BigDecimal[5];
|
// 遍历订单年龄用户列表
|
for (int i = 0; i < orderAgeUserVoList.size(); i++) {
|
orderAgeUserVo = orderAgeUserVoList.get(i);
|
ageType = orderAgeUserVo.getAgeType();
|
userIdList = orderAgeUserVo.getUserIdList();
|
// 根据年龄类型设置订单总数键
|
switch (ageType) {
|
case 1:
|
orderTotalKey[i] = "<20";
|
break;
|
case 2:
|
orderTotalKey[i] = "21-30";
|
break;
|
case 3:
|
orderTotalKey[i] = "31-40";
|
break;
|
case 4:
|
orderTotalKey[i] = "41-50";
|
break;
|
case 5:
|
orderTotalKey[i] = ">50";
|
break;
|
}
|
// 如果用户ID列表不为空
|
if (userIdList != null && !userIdList.isEmpty()) {
|
mgtMapTotalPlusVo = orderMapper.listStaffActivityOrderDistributionTotal(userIdList, staffTotalDto.getShopId(), staffTotalDto.getActivityId());
|
orderTotalValue[i] = mgtMapTotalPlusVo.getMapValueFirst();
|
orderMoneyValue[i] = mgtMapTotalPlusVo.getMapValueSecond();
|
} else {
|
orderTotalValue[i] = 0;
|
orderMoneyValue[i] = BigDecimal.ZERO;
|
}
|
}
|
// 设置订单分布总数对象的属性值
|
orderDistributionTotalVo.setOrderTotalKey(orderTotalKey);
|
orderDistributionTotalVo.setOrderTotalValue(orderTotalValue);
|
orderDistributionTotalVo.setOrderMoneyValue(orderMoneyValue);
|
}
|
// 返回订单分布总数对象
|
return orderDistributionTotalVo;
|
}
|
|
|
/**
|
* @param staffTotalDto
|
* @return MerOrderTypeTotalVo
|
* @description 员工端活动统计销售占比
|
* @author jqs
|
* @date 2023/7/17 17:03
|
*/
|
@Override
|
public MerOrderTypeTotalVo getStaffOrderTypeTotal(StaffTotalDto staffTotalDto) {
|
MerOrderTypeTotalVo orderTypeTotalVo = new MerOrderTypeTotalVo();
|
//获取商品分类销售数据
|
List<MgtMapTotalPlusVo> MgtMapIntTotalVoGoodsType = orderMapper.listStaffOrderTotalGoodsType(staffTotalDto);
|
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("周期");
|
} else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("2")) {
|
MgtMapIntTotalVo.setMapKey("服务");
|
mgtMapBigTotalVo.setMapKey("服务");
|
} else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("3")) {
|
MgtMapIntTotalVo.setMapKey("体验");
|
mgtMapBigTotalVo.setMapKey("体验");
|
} else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) {
|
MgtMapIntTotalVo.setMapKey("单品");
|
mgtMapBigTotalVo.setMapKey("单品");
|
}
|
goodsTypeTotalList.add(MgtMapIntTotalVo);
|
goodsTypeMoneyList.add(mgtMapBigTotalVo);
|
}
|
orderTypeTotalVo.setGoodsTypeTotalList(goodsTypeTotalList);
|
orderTypeTotalVo.setGoodsTypeMoneyList(goodsTypeMoneyList);
|
}
|
return orderTypeTotalVo;
|
}
|
|
/**
|
* @param staffTotalDto
|
* @return StaffActivityDateMemberTotalVo
|
* @description 员工端获客人数
|
* @author jqs
|
* @date 2023/7/17 18:42
|
*/
|
@Override
|
public StaffActivityDateMemberTotalVo getStaffActivityGetMemberTotal(StaffTotalDto staffTotalDto) {
|
// 创建返回对象
|
StaffActivityDateMemberTotalVo staffActivityDateMemberTotalVo = new StaffActivityDateMemberTotalVo();
|
// 查询数据库获取数据
|
List<MgtMapIntTotalVo> mgtMapIntTotalVoList = orderMapper.getStaffActivityGetMemberTotal(staffTotalDto);
|
// 将查询结果转为Map
|
Map<String, Integer> map = new HashMap<>();
|
if (mgtMapIntTotalVoList != null && !mgtMapIntTotalVoList.isEmpty()) {
|
map = mgtMapIntTotalVoList.stream()
|
.collect(Collectors.toMap(MgtMapIntTotalVo::getMapKey, MgtMapIntTotalVo::getMapValue));
|
}
|
// 获取日期范围
|
List<String> dateList = getDateRange(staffTotalDto.getStartDate(), staffTotalDto.getEndDate());
|
int size = dateList.size();
|
// 创建日期和成员总数的数组
|
String[] dateMemberTotalKey = new String[size];
|
Integer[] dateMemberTotalValue = new Integer[size];
|
// 遍历日期列表,设置日期和成员总数的数组
|
String str;
|
Integer value;
|
for (int i = 0; i < size; i++) {
|
str = dateList.get(i);
|
dateMemberTotalKey[i] = str;
|
value = map.get(str);
|
dateMemberTotalValue[i] = (value != null) ? value : 0;
|
}
|
// 设置返回对象的日期和成员总数数组
|
staffActivityDateMemberTotalVo.setDateMemberTotalKey(dateMemberTotalKey);
|
staffActivityDateMemberTotalVo.setDateMemberTotalValue(dateMemberTotalValue);
|
// 返回结果对象
|
return staffActivityDateMemberTotalVo;
|
}
|
|
/**
|
* @param staffTotalDto
|
* @return StaffActivityDateMemberTotalVo
|
* @description 员工端获客人数
|
* @author jqs
|
* @date 2023/7/17 18:42
|
*/
|
@Override
|
public StaffActivityDateMemberTotalVo getStaffActivityMemberTotal(StaffTotalDto staffTotalDto) {
|
// 创建返回对象
|
StaffActivityDateMemberTotalVo staffActivityDateMemberTotalVo = new StaffActivityDateMemberTotalVo();
|
// 查询数据库获取数据
|
List<MgtMapIntTotalVo> mgtMapIntTotalVoList = orderMapper.getStaffActivityMemberTotal(staffTotalDto);
|
// 将查询结果转为Map
|
Map<String, Integer> map = new HashMap<>();
|
if (mgtMapIntTotalVoList != null && !mgtMapIntTotalVoList.isEmpty()) {
|
map = mgtMapIntTotalVoList.stream()
|
.collect(Collectors.toMap(MgtMapIntTotalVo::getMapKey, MgtMapIntTotalVo::getMapValue));
|
}
|
// 获取日期范围
|
List<String> dateList = getDateRange(staffTotalDto.getStartDate(), staffTotalDto.getEndDate());
|
int size = dateList.size();
|
// 创建日期和成员总数的数组
|
String[] dateMemberTotalKey = new String[size];
|
Integer[] dateMemberTotalValue = new Integer[size];
|
// 遍历日期列表,设置日期和成员总数的数组
|
String str;
|
Integer value;
|
for (int i = 0; i < size; i++) {
|
str = dateList.get(i);
|
dateMemberTotalKey[i] = str;
|
value = map.get(str);
|
dateMemberTotalValue[i] = (value != null) ? value : 0;
|
}
|
// 设置返回对象的日期和成员总数数组
|
staffActivityDateMemberTotalVo.setDateMemberTotalKey(dateMemberTotalKey);
|
staffActivityDateMemberTotalVo.setDateMemberTotalValue(dateMemberTotalValue);
|
// 返回结果对象
|
return staffActivityDateMemberTotalVo;
|
}
|
|
/**
|
* @param startDate
|
* @param endDate
|
* @return List<String>
|
* @description 获取时间段日期
|
* @author jqs
|
* @date 2023/7/17 19:11
|
*/
|
public static List<String> getDateRange(String startDate, String endDate) {
|
List<String> dateList = new ArrayList<>();
|
LocalDate start = LocalDate.parse(startDate);
|
LocalDate end = LocalDate.parse(endDate);
|
while (!start.isAfter(end)) {
|
dateList.add(start.format(DateTimeFormatter.ISO_DATE));
|
start = start.plusDays(1);
|
}
|
return dateList;
|
}
|
|
/**
|
* @param
|
* @return void
|
* @description 检查订单状态定时任务
|
* @author jqs
|
* @date 2023/7/25 14:40
|
*/
|
@Override
|
public void checkOrderStatus() {
|
Integer delayTime = 30;
|
if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) {
|
delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
|
}
|
delayTime = delayTime + 5;
|
Date checkTime = DateUtils.addMinutes(new Date(), -delayTime);
|
LambdaQueryWrapper<Order> queryWrapper = new LambdaQueryWrapper<>();
|
queryWrapper.eq(Order::getDelFlag, 0);
|
queryWrapper.lt(Order::getCreateTime, checkTime);
|
queryWrapper.eq(Order::getOrderStatus, 1);
|
List<Order> orderList = this.list(queryWrapper);
|
if (orderList != null && !orderList.isEmpty()) {
|
for (Order order : orderList) {
|
autoTimeCancelOrder(order);
|
}
|
}
|
}
|
|
@Override
|
public void profitSharingBack(ProfitSharingNotifyResult result) {
|
|
try {
|
String outOrderNo = result.getOutOrderNo();
|
ProfitSharing profitSharing = profitSharingService.getById(outOrderNo);
|
if(null != profitSharing){
|
profitSharing.setWxOrderId(result.getOrderId());
|
profitSharing.setFinishTime(result.getSuccessTime());
|
profitSharing.setFinishFlag(1);
|
|
profitSharingService.saveOrUpdate(profitSharing);
|
}
|
} catch (Exception e){
|
|
log.error("==分账回成功回调操作====【{}】========={}", result.getOutOrderNo(), e.getMessage());
|
}
|
}
|
|
@Override
|
public void orderRefundBack(RefundNotifyResult result) {
|
try {
|
String outRefundNo = result.getOutRefundNo();
|
String refundStatus = result.getRefundStatus();
|
OrderRefund orderRefund = orderRefundService.getById(outRefundNo);
|
if(null != orderRefund){
|
orderRefund.setWxRefundId(result.getRefundId());
|
orderRefund.setBackTime(result.getSuccessTime());
|
orderRefund.setRefundStatus(IDict.getCodeByText(RefundStatusEnum.class, refundStatus));
|
orderRefundService.saveOrUpdate(orderRefund);
|
}
|
} catch (Exception e){
|
|
log.error("==退款回成功回调操作====【{}】========={}", result.getOutRefundNo(), e.getMessage());
|
}
|
}
|
|
private void autoTimeCancelOrder(Order order) {
|
String orderId = order.getOrderId();
|
order.setOrderStatus(0);
|
order.setCancelTime(new Date());
|
this.saveOrUpdate(order);
|
//活动订单回退库存
|
if (order.getOrderFrom() == 2) {
|
List<OrderGoods> orderGoodsList = orderGoodsService.listByOrderId(orderId);
|
if (orderGoodsList != null && !orderGoodsList.isEmpty()) {
|
for (OrderGoods orderGoods : orderGoodsList) {
|
//redis库存控制极简版
|
String goodsLock = "goods_lock_" + order.getActivityId() + "_" + orderGoods.getGoodsId();
|
RLock redissonLock = redissonClient.getLock(goodsLock);
|
try {
|
redissonLock.lock(30, TimeUnit.SECONDS);
|
Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId());
|
redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId(), surpNum + orderGoods.getBuyNum());
|
} finally {
|
redissonLock.unlock();
|
}
|
//改变活动库存
|
AGStockChangeDto agStockChangeDto = new AGStockChangeDto();
|
agStockChangeDto.setActivityId(order.getActivityId());
|
agStockChangeDto.setGoodsId(orderGoods.getGoodsId());
|
agStockChangeDto.setChangeType(1);
|
agStockChangeDto.setChangeNum(orderGoods.getBuyNum());
|
agStockChangeDto.setShopId(order.getShopId());
|
agStockChangeDto.setUserId(order.getUserId());
|
remoteActivityService.changeActivityStock(agStockChangeDto);
|
//删除活动记录
|
ActivityRecord activityRecord = new ActivityRecord();
|
activityRecord.setActivityId(order.getActivityId());
|
activityRecord.setGoodsId(orderGoods.getGoodsId());
|
activityRecord.setUserId(order.getUserId());
|
activityRecord.setOrderTime(order.getCreateTime());
|
remoteActivityService.delActivityRecord(activityRecord);
|
}
|
}
|
} else {
|
if (order.getCouponMoney().compareTo(BigDecimal.ZERO) > 0) {
|
//回退优惠券
|
List<OrderGoods> orderGoodsList = orderGoodsService.listByOrderId(orderId);
|
if (orderGoodsList != null && !orderGoodsList.isEmpty()) {
|
StringJoiner memberCouponSJ = new StringJoiner(",");
|
for (OrderGoods orderGoods : orderGoodsList) {
|
memberCouponSJ.add(orderGoods.getCouponId());
|
}
|
if (memberCouponSJ != null) {
|
remoteCouponService.backMemberCoupon(memberCouponSJ.toString());
|
|
}
|
}
|
}
|
}
|
}
|
|
/**
|
* @description 获取商户订单统计
|
* @author jqs
|
* @date 2023/8/4 10:25
|
* @param mgtShopAllOrderPageDto
|
* @return MgtShopAllOrderTotal
|
*/
|
@Override
|
public MgtShopAllOrderTotal getMgtShopAllOrderTotal(MgtShopAllOrderPageDto mgtShopAllOrderPageDto){
|
MgtShopAllOrderTotal shopAllOrderTotal = orderMapper.getMgtShopAllOrderTotal(mgtShopAllOrderPageDto);
|
return shopAllOrderTotal;
|
}
|
|
/**
|
* 分页获取会员消费记录
|
* @param merOrderPageDto
|
* @return
|
*/
|
@Override
|
public List<MerOrderPageVo> pageMerMemberPayOrder(Page page,MerMemberNoClearOrderDto merOrderPageDto){
|
List<MerOrderPageVo> merOrderPageVoList = orderMapper.pageMerMemberPayOrder(page, merOrderPageDto);
|
if (merOrderPageVoList != null && !merOrderPageVoList.isEmpty()) {
|
Long userId;
|
Member member;
|
Integer orderFrom;
|
String orderFromDesc;
|
BigDecimal zeroBig = new BigDecimal("0.00");
|
StringJoiner userIdSj = new StringJoiner(",");
|
for (MerOrderPageVo merOrderPageVo : merOrderPageVoList) {
|
userId = merOrderPageVo.getUserId();
|
userIdSj.add(userId.toString());
|
orderFrom = merOrderPageVo.getOrderFrom();
|
if (orderFrom != null) {
|
if (orderFrom == 1) {
|
orderFromDesc = "商城订单";
|
} else {
|
orderFromDesc = "线下创建";
|
}
|
} else {
|
orderFromDesc = "商城订单";
|
}
|
merOrderPageVo.setOrderFromDesc(orderFromDesc);
|
merOrderPageVo.setUnPaidMoney(merOrderPageVo.getPayMoney().subtract(merOrderPageVo.getReceiveMoney()));
|
if (merOrderPageVo.getUnPaidMoney() == null) {
|
merOrderPageVo.setUnPaidMoney(zeroBig);
|
}
|
if(merOrderPageVo.getUnPaidMoney().compareTo(zeroBig)<0){
|
merOrderPageVo.setUnPaidMoney(zeroBig);
|
}
|
}
|
MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto();
|
mgtBaseBathDto.setIds(userIdSj.toString());
|
List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(mgtBaseBathDto).getData();
|
Map<Long, MgtSimpleMemberVo> userMap = simpleMemberVoList.stream()
|
.collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity()));
|
for (MerOrderPageVo merOrderPageVo : merOrderPageVoList) {
|
if(merOrderPageVo.getUserId()!=null&&userMap.get(merOrderPageVo.getUserId())!=null){
|
merOrderPageVo.setUserName(userMap.get(merOrderPageVo.getUserId()).getRealName());
|
merOrderPageVo.setNickName(userMap.get(merOrderPageVo.getUserId()).getNickName());
|
merOrderPageVo.setUserMobile(userMap.get(merOrderPageVo.getUserId()).getUserMobile());
|
}else{
|
log.debug("订单merOrderPageVo"+merOrderPageVo.getOrderId()+"缺少用户");
|
}
|
}
|
}
|
return merOrderPageVoList;
|
}
|
}
|