From 1af77abfa06a1a0d537bb120ae0c362aae9d3b83 Mon Sep 17 00:00:00 2001
From: huliguo <2023611923@qq.com>
Date: 星期三, 30 七月 2025 10:14:40 +0800
Subject: [PATCH] bug修改
---
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java | 2070 ++++++++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 1,629 insertions(+), 441 deletions(-)
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
index c107a78..ae64954 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -8,6 +8,7 @@
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.douyin.openapi.client.models.*;
import com.github.binarywang.wxpay.bean.ecommerce.*;
import com.github.binarywang.wxpay.bean.ecommerce.enums.TradeTypeEnum;
import com.github.binarywang.wxpay.bean.profitsharingV3.ProfitSharingNotifyResult;
@@ -16,14 +17,26 @@
import com.github.binarywang.wxpay.service.WxPayService;
import com.google.common.collect.Lists;
import com.google.gson.Gson;
+import com.kuaishou.locallife.open.api.domain.locallife_order.OpenApiOrderAmountV1;
+import com.kuaishou.locallife.open.api.domain.locallife_order.OpenApiQueryOrderDetailInfoV1;
+import com.kuaishou.locallife.open.api.domain.locallife_trade.SimpleCertificateTimesCard;
+import com.kuaishou.locallife.open.api.domain.locallife_trade.SkuTImesCard;
+import com.kuaishou.locallife.open.api.domain.locallife_trade.VerifyPrepareDataNew;
+import com.kuaishou.locallife.open.api.domain.locallife_trade.VerifyResult;
+import com.ruoyi.common.core.constant.CacheConstants;
import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.enums.UserStatus;
import com.ruoyi.common.core.exception.ServiceException;
+import com.ruoyi.common.core.text.Convert;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.common.core.utils.ip.IpUtils;
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.goods.api.domain.TLotteryEvent;
+import com.ruoyi.goods.api.service.LotteryEventClient;
import com.ruoyi.order.config.WxPayConfiguration;
import com.ruoyi.order.domain.dto.*;
import com.ruoyi.order.domain.pojo.account.OrderPayment;
@@ -43,10 +56,15 @@
import com.ruoyi.order.service.account.ProfitSharingService;
import com.ruoyi.order.service.order.*;
import com.ruoyi.order.util.HuiFuTianXiaUtil;
+import com.ruoyi.order.util.douyin.OrderUtil;
+import com.ruoyi.order.util.douyin.VerifyUtil;
+import com.ruoyi.order.util.kuaishou.KSOrderUtil;
+import com.ruoyi.order.util.kuaishou.KSVerifyUtil;
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.Activity;
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;
@@ -59,8 +77,9 @@
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.model.QwH5LoginVo;
+import com.ruoyi.system.api.model.QwUserDetailDto;
import com.ruoyi.system.api.service.*;
-import io.seata.spring.annotation.GlobalTransactional;
import lombok.extern.log4j.Log4j2;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
@@ -70,10 +89,13 @@
import javax.annotation.Resource;
import java.math.BigDecimal;
+import java.math.MathContext;
import java.math.RoundingMode;
-import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.TimeUnit;
@@ -145,17 +167,20 @@
@Resource
private OrderPaymentService orderPaymentService;
-
+
@Resource
private ProfitSharingService profitSharingService;
-
+
@Resource
private OrderRefundService orderRefundService;
-
+
@Value("${wx.pay.callbackPath}")
private String callbackPath;
-
-
+
+ @Resource
+ private LotteryEventClient lotteryEventClient;
+
+
/**
* @description: buyGoods
* @param: appSureOrderDto
@@ -170,6 +195,7 @@
if(shop!=null&&shop.getShopStatus()!=1){
throw new ServiceException(AppErrorConstant.SHOP_CLOSED);
}
+// Shop belongShop = remoteShopService.getShop(shop.getBelongShopId()).getData();
// 初始化订单对象
AppSureOrderVo appSureOrderVo = new AppSureOrderVo();
// 初始化订单商品列表
@@ -194,7 +220,7 @@
String goodsId;
Integer buyNum;
BigDecimal buyNumBig;
- String memberCouponId;
+ Long memberCouponId;
Goods goods;
BigDecimal goodsPrice;
BigDecimal goodsTotalPrice;
@@ -224,7 +250,7 @@
BigDecimal orderPayDeposit = new BigDecimal("0.00");
BigDecimal orderPayMoney = new BigDecimal("0.00");
// 遍历购买商品列表
- HashSet<String> userCouponIdSet = new HashSet<>();
+ HashSet<Long> userCouponIdSet = new HashSet<>();
for (AppBuyGoodsDto appBuyGoodsDto : appBuyGoodsDtoList) {
appSureOrderGoodsVo = new AppSureOrderGoodsVo();
discountMoney = BigDecimal.ZERO;
@@ -253,16 +279,32 @@
appShopGoodsGetDto.setGoodsId(goods.getGoodsId());
appShopGoodsGetDto.setShopId(appSureOrderDto.getShopId());
ShopGoods shopGoods = remoteGoodsService.getShopGoods(appShopGoodsGetDto).getData();
+ //商户是否定制价格
if (shopGoods != null) {
goodsPrice = shopGoods.getSalesPrice();
+ }
+ //是否绑定经销商
+ if(shop.getBelongShopId()!=null &&shop.getShopType()==2){
+ //经销商定制价格
+ AppShopGoodsGetDto shopGoodsGetDto=new AppShopGoodsGetDto();
+ shopGoodsGetDto.setGoodsId(goods.getGoodsId());
+ shopGoodsGetDto.setShopId(shop.getBelongShopId());
+ Shop belongShop = remoteShopService.getShop(shop.getBelongShopId()).getData();
+ shopGoods = remoteGoodsService.getShopGoods(shopGoodsGetDto).getData();
+ if (1 == belongShop.getModifyPricePermission() && null != shopGoods) {
+ 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 (null != memberCouponId) {
+ appMemberCouponVo = appMemberCouponVoMap.get(memberCouponId.toString());
+ System.err.println(JSON.toJSONString(appMemberCouponVoMap));
+ System.err.println(memberCouponId);
+ System.err.println(JSON.toJSONString(appMemberCouponVo));
if (StringUtils.isBlank(appMemberCouponVo.getRelGoodsIds()) || appMemberCouponVo.getRelGoodsIds().contains(goodsId)) {
couponType = appMemberCouponVo.getCouponType();
if (couponType == 1 && appMemberCouponVo.getMoneyThreshold() != null && appMemberCouponVo.getDiscountMoney() != null) {
@@ -272,7 +314,7 @@
goodsRealPrice = goodsTotalPrice.subtract(discountMoney);
useCoupon = 1;
userCouponIdSet.add(memberCouponId);
- appSureOrderGoodsVo.setMemberCouponId(memberCouponId);
+ appSureOrderGoodsVo.setMemberCouponId(memberCouponId.toString());
}
} else if (couponType == 2 && appMemberCouponVo.getDiscountPercent() != null) {
discountPercent = appMemberCouponVo.getDiscountPercent();
@@ -280,7 +322,7 @@
discountMoney = goodsTotalPrice.subtract(goodsRealPrice);
useCoupon = 1;
userCouponIdSet.add(memberCouponId);
- appSureOrderGoodsVo.setMemberCouponId(memberCouponId);
+ appSureOrderGoodsVo.setMemberCouponId(memberCouponId.toString());
} else if (couponType == 3 && appMemberCouponVo.getDiscountMoney() != null) {
discountMoney = appMemberCouponVo.getDiscountMoney();
if (goodsTotalPrice.compareTo(discountMoney) > 0) {
@@ -290,7 +332,7 @@
}
useCoupon = 1;
userCouponIdSet.add(memberCouponId);
- appSureOrderGoodsVo.setMemberCouponId(memberCouponId);
+ appSureOrderGoodsVo.setMemberCouponId(memberCouponId.toString());
}
}
}
@@ -354,58 +396,6 @@
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);
@@ -413,6 +403,17 @@
appSureOrderVo.setOrderPayMoney(orderPayMoney);
// 设置订单商品列表
appSureOrderVo.setAppSureOrderGoodsVoList(appSureOrderGoodsVoList);
+ appSureOrderVo.setLotteryDraw(false);
+ // 返回AppPlaceOrderVo对象
+ List<TLotteryEvent> data = lotteryEventClient.getLotteryEventList(2).getData();
+ if (data.size() > 0) {
+ BigDecimal finalOrderPayMoney = orderPayMoney;
+ List<TLotteryEvent> collect = data.stream().filter(s -> s.getPayMoney().compareTo(finalOrderPayMoney) <= 0).collect(Collectors.toList());
+ if (collect.size() > 0) {
+ appSureOrderVo.setLotteryDraw(true);
+ appSureOrderVo.setLotteryEventId(collect.get(0).getId());
+ }
+ }
return appSureOrderVo;
}
@@ -488,6 +489,18 @@
if (shopGoods != null) {
goodsPrice = shopGoods.getSalesPrice();
}
+ //是否绑定经销商
+ if(shop.getBelongShopId()!=null &&shop.getShopType()==2){
+ //经销商定制价格
+ Shop belongShop = remoteShopService.getShop(shop.getBelongShopId()).getData();
+ appShopGoodsGetDto = new AppShopGoodsGetDto();
+ appShopGoodsGetDto.setGoodsId(goods.getGoodsId());
+ appShopGoodsGetDto.setShopId(belongShop.getShopId());
+ shopGoods = remoteGoodsService.getShopGoods(appShopGoodsGetDto).getData();
+ if (1 == belongShop.getModifyPricePermission() && null != shopGoods) {
+ goodsPrice = shopGoods.getSalesPrice();
+ }
+ }
appPanicBuyVo.setGoodsPrice(goodsPrice);
buyNumBig = BigDecimal.valueOf(buyNum);
goodsActivityPrice = activityGoodsGetVo.getActivityPrice();
@@ -509,6 +522,17 @@
appPanicBuyVo.setOrderGoodsMoney(orderGoodsMoney);
appPanicBuyVo.setOrderPayDeposit(orderPayDeposit);
appPanicBuyVo.setOrderPayMoney(orderPayMoney);
+ appPanicBuyVo.setLotteryDraw(false);
+ // 返回AppPlaceOrderVo对象
+ List<TLotteryEvent> data = lotteryEventClient.getLotteryEventList(2).getData();
+ if (data.size() > 0) {
+ BigDecimal finalOrderPayMoney = orderPayMoney;
+ List<TLotteryEvent> collect = data.stream().filter(s -> s.getPayMoney().compareTo(finalOrderPayMoney) <= 0).collect(Collectors.toList());
+ if (collect.size() > 0) {
+ appPanicBuyVo.setLotteryDraw(true);
+ appPanicBuyVo.setLotteryEventId(collect.get(0).getId());
+ }
+ }
return appPanicBuyVo;
}
@@ -519,8 +543,8 @@
* @return
*/
@Override
- @Transactional
- @GlobalTransactional(rollbackFor = Exception.class)
+ @Transactional // todo 放开分布式事务注解
+// @GlobalTransactional(rollbackFor = Exception.class)
public AppPlaceOrderVo placeOrder(AppPlaceOrderDto appPlaceOrderDto) {
// 获取用户ID
Long userId = appPlaceOrderDto.getUserId();
@@ -557,7 +581,7 @@
BigDecimal buyNumBig;
Integer serviceNum;
Integer goodsNum = 0;
- String memberCouponId;
+ Long memberCouponId;
Goods goods = null;
GoodsFile goodsFile;
BigDecimal goodsPrice;
@@ -593,6 +617,10 @@
//使用优惠券
StringJoiner memberCouponSJ = new StringJoiner(",");
List<String> goodsNameList = new ArrayList<>();
+ Shop shop = remoteShopService.getShop(appPlaceOrderDto.getShopId()).getData();
+ if(shop!=null&&shop.getShopStatus()!=1){
+ throw new ServiceException(AppErrorConstant.SHOP_CLOSED);
+ }
// 遍历购买的商品列表
for (AppBuyGoodsDto appBuyGoodsDto : appBuyGoodsDtoList) {
appSureOrderGoodsVo = new AppSureOrderGoodsVo();
@@ -627,6 +655,19 @@
goodsPrice = shopGoods.getSalesPrice();
serviceNum = shopGoods.getServiceNum();
}
+ //是否绑定经销商
+ if(shop.getBelongShopId()!=null &&shop.getShopType()==2){
+ //经销商定制价格
+ Shop belongShop = remoteShopService.getShop(shop.getBelongShopId()).getData();
+ appShopGoodsGetDto = new AppShopGoodsGetDto();
+ appShopGoodsGetDto.setGoodsId(goods.getGoodsId());
+ appShopGoodsGetDto.setShopId(belongShop.getShopId());
+ shopGoods = remoteGoodsService.getShopGoods(appShopGoodsGetDto).getData();
+ if (1 == belongShop.getModifyPricePermission() && null != shopGoods) {
+ goodsPrice = shopGoods.getSalesPrice();
+ serviceNum = shopGoods.getServiceNum();
+ }
+ }
appSureOrderGoodsVo.setGoodsPrice(goodsPrice);
// 计算商品总价
buyNumBig = BigDecimal.valueOf(buyNum);
@@ -634,7 +675,10 @@
goodsRealPrice = goodsTotalPrice;
// 如果使用了优惠券,计算优惠后的价格
if (memberCouponId != null) {
- appMemberCouponVo = appMemberCouponVoMap.get(memberCouponId);
+ appMemberCouponVo = appMemberCouponVoMap.get(memberCouponId.toString());
+ if(null == appMemberCouponVo){
+ throw new ServiceException("优惠券已使用");
+ }
// 如果优惠券适用于该商品
if (StringUtils.isBlank(appMemberCouponVo.getRelGoodsIds()) || appMemberCouponVo.getRelGoodsIds().contains(goodsId)) {
couponType = appMemberCouponVo.getCouponType();
@@ -661,7 +705,7 @@
discountMoney = goodsTotalPrice;
}
}
- memberCouponSJ.add(memberCouponId);
+ memberCouponSJ.add(memberCouponId + "");
}
appSureOrderGoodsVo.setUseCoupon(useCoupon);
appSureOrderGoodsVo.setGoodsTotalPrice(goodsTotalPrice);
@@ -821,6 +865,18 @@
appMemberGoodsTypeDto.setGoodsTypeSet(goodsTypeSet);
remoteMemberService.updateMemberGoodsType(appMemberGoodsTypeDto);
}
+
+ appPlaceOrderVo.setLotteryDraw(false);
+ // 返回AppPlaceOrderVo对象
+ List<TLotteryEvent> data = lotteryEventClient.getLotteryEventList(2).getData();
+ if (data.size() > 0) {
+ BigDecimal finalOrderPayMoney = orderPayMoney;
+ List<TLotteryEvent> collect = data.stream().filter(s -> s.getPayMoney().compareTo(finalOrderPayMoney) <= 0).collect(Collectors.toList());
+ if (collect.size() > 0) {
+ appPlaceOrderVo.setLotteryDraw(true);
+ appPlaceOrderVo.setLotteryEventId(collect.get(0).getId());
+ }
+ }
return appPlaceOrderVo;
}
@@ -955,6 +1011,41 @@
R<com.alibaba.fastjson.JSONObject> r = HuiFuTianXiaUtil.weixinPayment(outTradeNo, description, payMoney.doubleValue(), openid, request.getNotifyUrl());
if(r.getCode() != 200){
throw new ServiceException(r.getMsg());
+ }else{
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+ int time = 0;
+ for (int i = 0; i < 13; i++) {
+ try {
+ time += (5000 * i);
+ Thread.sleep(time);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ R<WeixinPaymentNotifyVo> voR = HuiFuTianXiaUtil.queryPayment(outTradeNo, sdf.format(new Date()));
+ if(voR.getCode() == 200){
+ WeixinPaymentNotifyVo data = voR.getData();
+ //P:处理中;S:成功;F:失败;I: 初始(初始状态很罕见,请联系汇付技术人员处理);
+ String transStat = data.getTransStat();
+ if("S".equals(transStat)){
+ PartnerTransactionsResult transaction = new PartnerTransactionsResult();
+ transaction.setOutTradeNo(data.getReqSeqId());
+ payBack(transaction, data.getFeeFlag() == 1 ? BigDecimal.ZERO : new BigDecimal(data.getFeeAmount()));
+ return;
+ }
+ if("P".equals(transStat) || "F".equals(transStat)){
+ continue;
+ }
+ log.error("支付失败,流水号:{}, 状态码:{}", outTradeNo, transStat);
+ return;
+ }else{
+ log.error("支付查询失败!流水号:{},结果:{}", outTradeNo, voR.getMsg());
+ }
+ }
+ }
+ }).start();
}
com.alibaba.fastjson.JSONObject data = r.getData();
String mainMchId = WxPayConfiguration.getPlatformTyMacId();
@@ -993,7 +1084,7 @@
*/
@Override
@Transactional
- @GlobalTransactional(rollbackFor = Exception.class)
+// @GlobalTransactional(rollbackFor = Exception.class) todo 放开分布式事务注解
public AppPlaceOrderVo placeActivityOrder(AppPlaceActivityDto appPlaceActivityDto) {
Long userId = appPlaceActivityDto.getUserId();
Member member = remoteMemberService.getMember(userId).getData();
@@ -1319,11 +1410,104 @@
//处理订单回显
for (AppUserOrderPageVo appUserOrderPageVo : appUserOrderPageVoList) {
if(member.getBindingFlag()==0&&appUserOrderPageVo.getOrderFrom()==2){
- appUserOrderPageVo.setShopName("全部店铺");
+ //查询秒杀活动的参与店铺
+ R<Activity> activity = remoteActivityService.getActivity(appUserOrderPageVo.getActivityId());
+ if(activity.getCode() != 200){
+ throw new RuntimeException(activity.getMsg());
+ }
+ Activity data = activity.getData();
+ if(data.getAreaFlag() == 1){
+ appUserOrderPageVo.setShopNumber(0);
+ appUserOrderPageVo.setShopName("全部店铺");
+ }
+ if(data.getAreaFlag() == 2 && data.getShopFlag() == 1){
+ String designatedArea = data.getDesignatedArea();
+ String[] split = designatedArea.split(",");
+ List<String> list = Arrays.asList(split);
+ R<List<Shop>> listR = remoteShopService.listShopByCityCode(list);
+ if(listR.getCode() != 200){
+ throw new RuntimeException(listR.getMsg());
+ }
+ List<Shop> data1 = listR.getData();
+ appUserOrderPageVo.setShopNumber(1);
+ appUserOrderPageVo.setShopName(JSON.toJSONString(data1));
+ }
+ if(data.getShopFlag() == 2){
+ String applicableShop = data.getApplicableShop();
+ String[] split = applicableShop.split(",");
+ List<String> list = Arrays.asList(split);
+ R<List<Shop>> listR = remoteShopService.listShopByIds(list);
+ if(listR.getCode() != 200){
+ throw new RuntimeException(listR.getMsg());
+ }
+ List<Shop> data1 = listR.getData();
+ appUserOrderPageVo.setShopNumber(1);
+ appUserOrderPageVo.setShopName(JSON.toJSONString(data1));
+ }
+ }else if(member.getBindingFlag()==1&&appUserOrderPageVo.getOrderFrom()==2){
+ Long relationShopId = member.getRelationShopId();
+ R<Shop> shop = remoteShopService.getShop(relationShopId);
+ if(shop.getCode() != 200){
+ throw new RuntimeException(shop.getMsg());
+ }
+ Shop data1 = shop.getData();
+ //查询秒杀活动的参与店铺
+ R<Activity> activity = remoteActivityService.getActivity(appUserOrderPageVo.getActivityId());
+ if(activity.getCode() != 200){
+ throw new RuntimeException(activity.getMsg());
+ }
+ Activity data = activity.getData();
+ if(data.getAreaFlag() == 1){
+ appUserOrderPageVo.setShopNumber(2);
+ appUserOrderPageVo.setShopName(data1.getShopName());
+ appUserOrderPageVo.setShopServicePhone(data1.getShopServicePhone());
+ }
+ if(data.getAreaFlag() == 2 && data.getShopFlag() == 1){
+ String designatedArea = data.getDesignatedArea();
+ String[] split = designatedArea.split(",");
+ List<String> list = Arrays.asList(split);
+ R<List<Shop>> listR = remoteShopService.listShopByCityCode(list);
+ if(listR.getCode() != 200){
+ throw new RuntimeException(listR.getMsg());
+ }
+ List<Shop> data2 = listR.getData();
+ List<Long> collect = data2.stream().map(Shop::getShopId).collect(Collectors.toList());
+ if(collect.contains(relationShopId)){
+ appUserOrderPageVo.setShopNumber(2);
+ appUserOrderPageVo.setShopName(data1.getShopName());
+ appUserOrderPageVo.setShopServicePhone(data1.getShopServicePhone());
+ }else{
+ appUserOrderPageVo.setShopNumber(1);
+ appUserOrderPageVo.setShopName(JSON.toJSONString(data2));
+ }
+ }
+ if(data.getShopFlag() == 2){
+ String applicableShop = data.getApplicableShop();
+ String[] split = applicableShop.split(",");
+ List<String> list = Arrays.asList(split);
+ R<List<Shop>> listR = remoteShopService.listShopByIds(list);
+ if(listR.getCode() != 200){
+ throw new RuntimeException(listR.getMsg());
+ }
+ List<Shop> data2 = listR.getData();
+ List<Long> collect = data2.stream().map(Shop::getShopId).collect(Collectors.toList());
+ if(collect.contains(relationShopId)){
+ appUserOrderPageVo.setShopNumber(2);
+ appUserOrderPageVo.setShopName(data1.getShopName());
+ appUserOrderPageVo.setShopServicePhone(data1.getShopServicePhone());
+ }else{
+ appUserOrderPageVo.setShopNumber(1);
+ appUserOrderPageVo.setShopName(JSON.toJSONString(data2));
+ }
+ }
+
+
+
}else{
simpleShopVo = shopMap.get(appUserOrderPageVo.getShopId());
appUserOrderPageVo.setShopName(simpleShopVo.getShopName());
appUserOrderPageVo.setShopServicePhone(simpleShopVo.getShopServicePhone());
+ appUserOrderPageVo.setShopNumber(2);
if (appUserOrderPageVo.getShopId().equals(appUserOrderPageDto.getShopId())) {
appUserOrderPageVo.setSameShop(1);
} else {
@@ -1356,7 +1540,7 @@
appUserOrderGetVo.setCouponDiscount(order.getCouponMoney());
appUserOrderGetVo.setReceivableDeposit(order.getReceivableDeposit());
appUserOrderGetVo.setReceivableMoney(order.getReceivableMoney());
- appUserOrderGetVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getOnlinePayMoney()));
+ appUserOrderGetVo.setUnpaidMoney(order.getReceivableMoney().subtract(null == order.getOnlinePayMoney() ? BigDecimal.ZERO : order.getOnlinePayMoney()));
appUserOrderGetVo.setPayType(order.getPayType());
appUserOrderGetVo.setPayMoney(order.getPayMoney());
appUserOrderGetVo.setOrderRemark(order.getOrderRemark());
@@ -1376,6 +1560,7 @@
delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
}
appUserOrderGetVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime));
+ appUserOrderGetVo.setCancelType(order.getCancelType());
return appUserOrderGetVo;
}
@@ -1394,10 +1579,10 @@
//删除待支付超时取消延时任务
redisService.deleteObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId);
remoteConfigService.deleteDelayTask(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode()+"-"+orderId);
- this.autoCancelOrder(orderId);
+ this.autoCancelOrder(orderId, 3);
} else if (order.getOrderStatus() == 2) {
// 2.待核销 -> 订单退款
- this.refundOrder(orderId);
+ this.refundOrder(orderId, 3);
} else {
throw new ServiceException(AppErrorConstant.CANCEL_ERROR_ORDER);
}
@@ -1451,7 +1636,16 @@
appPlaceOrderVo.setSignType(payArr[4]);
appPlaceOrderVo.setPaySign(payArr[5]);
appPlaceOrderVo.setPrepayId(orderPayment.getPrepayId());
+ appPlaceOrderVo.setLotteryDraw(false);
// 返回AppPlaceOrderVo对象
+ List<TLotteryEvent> data = lotteryEventClient.getLotteryEventList(2).getData();
+ if (data.size() > 0) {
+ List<TLotteryEvent> collect = data.stream().filter(s -> s.getPayMoney().compareTo(order.getPayMoney()) <= 0).collect(Collectors.toList());
+ if (collect.size() > 0) {
+ appPlaceOrderVo.setLotteryDraw(true);
+ appPlaceOrderVo.setLotteryEventId(collect.get(0).getId());
+ }
+ }
return appPlaceOrderVo;
}
@@ -1483,14 +1677,71 @@
*/
@Override
public MerHomeShopTotalVo getMerHomeTotal(MerHomeShopTotalVo merHomeShopTotalVo) {
- Long shopId = merHomeShopTotalVo.getShopId();
+ // 查询用户信息
+ QwUserDetailDto qwUserDetail = new QwUserDetailDto();
+ Long userId = SecurityUtils.getUserId();
+ qwUserDetail.setUserid(userId.toString());
+ // 查询用户信息
+ R<QwH5LoginVo> userResult = remoteShopService.qwH5Login(qwUserDetail);
+ if(userResult==null){
+ throw new ServiceException(AppErrorConstant.USER_NO_SHOP);
+ }
+ if (R.FAIL == userResult.getCode())
+ {
+ throw new ServiceException(userResult.getMsg());
+ }
+ if (401 == userResult.getCode())
+ {
+ throw new ServiceException("商户已被冻结,请联系管理员",401);
+ }
+ QwH5LoginVo userInfo = userResult.getData();
+ SysUser user = userInfo.getSysUser();
+ String username = user.getUserName();
+ // IP黑名单校验
+ String blackStr = Convert.toStr(redisService.getCacheObject(CacheConstants.SYS_LOGIN_BLACKIPLIST));
+ if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr()))
+ {
+ throw new ServiceException("很遗憾,访问IP已被列入系统黑名单");
+ }
+ if (UserStatus.DELETED.getCode().equals(user.getDelFlag()))
+ {
+ throw new ServiceException("对不起,您的账号:" + username + " 已被删除");
+ }
+ if (UserStatus.DISABLE.getCode().equals(user.getStatus()))
+ {
+ throw new ServiceException("对不起,您的账号:" + username + " 已停用");
+ }
+ // 查询用户商户
+ R<ShopRelUserVo> shopResult = remoteShopService.getShopByUserId(user.getUserId());
+ if (R.FAIL == userResult.getCode()) {
+ throw new ServiceException(userResult.getMsg());
+ }
+ ShopRelUserVo shopInfo = shopResult.getData();
+ if(null == shopInfo){
+ throw new ServiceException("未查询到商户信息");
+ }
+ Long shopId = shopInfo.getShopId();
+ Shop shop = remoteShopService.getShop(shopId).getData();
+ if(-1 == shop.getShopStatus()){
+ throw new ServiceException("对应商户已删除,请联系管理员");
+ }
+ if(0 == shop.getShopStatus()){
+ throw new ServiceException("对应商户已冻结,请联系管理员");
+ }
+ if(2 == shop.getShopStatus()){
+ throw new ServiceException("对应商户已终止合作,请联系管理员");
+ }
+
+
+ shopId = merHomeShopTotalVo.getShopId();
+
//获取今日到店
- Integer todayShop = userServiceRecordService.countShopServicePerson(shopId);
+ List<Integer> todayShop = userServiceRecordService.countShopServicePerson(shopId);
//获取待处理订单和营业额
merHomeShopTotalVo = orderMapper.getMerHomeShopTotalVo(shopId);
//获取服务统计
MerHomeShopTotalVo serviceTotalVo = orderMapper.getMerHomeShopServiceTotalVo(shopId);
- merHomeShopTotalVo.setTodayShop(todayShop);
+ merHomeShopTotalVo.setTodayShop(todayShop.size());
merHomeShopTotalVo.setCycleSurp(serviceTotalVo.getCycleSurp());
merHomeShopTotalVo.setExplorationSurp(serviceTotalVo.getExplorationSurp());
return merHomeShopTotalVo;
@@ -1521,20 +1772,10 @@
//判断用户是否绑定
if(member.getBindingFlag()==1){
//绑定用户判断核销商户
- if(order.getOrderFrom()==2&&order.getUnbindingFlag()==1){
- if (!member.getRelationShopId().equals(shopId)) {
- throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
- }
- //未绑定时下的活动订单只需要判断店铺是否支持
- String activityId = order.getActivityId();
- MerActivityShopDto merActivityShopDto = new MerActivityShopDto();
- merActivityShopDto.setShopId(shopId);
- merActivityShopDto.setActivityId(activityId);
- Boolean judge = remoteActivityService.judgeActivityShop(merActivityShopDto).getData();
- if(!judge){
- throw new ServiceException(AppErrorConstant.SHOP_NO_ACTIVITY);
- }
- }else{
+ if (order.getOrderFrom()==2&&!member.getRelationShopId().equals(shopId)) {
+ throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+ }
+ if(order.getOrderFrom() == 1){
//商城订单和绑定后活动订单判断核销商户和订单商户和用户关联商户是否统一
if (!order.getShopId().equals(shopId)) {
throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
@@ -1631,12 +1872,12 @@
merVerifyOrderVo.setAppUserOrderGoodsPageVoList(appUserOrderGoodsPageVoList);
merVerifyOrderVo.setPayType(order.getPayType());
merVerifyOrderVo.setRealReceiveMoney(order.getChangeReceivableMoney());
- if(order.getPayType()==1){
+ if (order.getPayType() == 1) {
merVerifyOrderVo.setReceiveMoney(order.getPayMoney());
- }else{
- if(order.getOfflinePayMoney()!=null){
+ } else {
+ if (order.getOfflinePayMoney() != null) {
merVerifyOrderVo.setReceiveMoney(order.getOfflinePayMoney());
- }else{
+ } else {
merVerifyOrderVo.setReceiveMoney(BigDecimal.ZERO);
}
}
@@ -1648,7 +1889,83 @@
// 返回结果
return merVerifyOrderVo;
}
-
+
+
+ @Override
+ public MerVerifyOrderVo verifyOrderDouYin(String orderId, Long shopId) {
+ CertificatePrepareResponseData data = VerifyUtil.certificatePrepare(orderId);
+ if (null == data) {
+ throw new ServiceException("查询券信息失败");
+ }
+ List<CertificatePrepareResponseDataCertificatesItem> itemList = data.getCertificates();
+ if (null == itemList || itemList.isEmpty()) {
+ throw new ServiceException("查询券信息失败");
+ }
+ CertificatePrepareResponseDataCertificatesItem certificatesItem = itemList.get(0);
+ //商品信息
+ CertificatePrepareResponseDataCertificatesItemSku sku = certificatesItem.getSku();
+ //次卡信息
+ CertificatePrepareResponseDataCertificatesItemTimeCard timeCard = certificatesItem.getTimeCard();
+ //券的状态
+ Number status = certificatesItem.getStatus();
+ // 创建返回对象
+ MerVerifyOrderVo merVerifyOrderVo = new MerVerifyOrderVo();
+ // 设置返回对象的属性值
+ merVerifyOrderVo.setOrderId(orderId);
+ merVerifyOrderVo.setOrderFrom(6);
+ merVerifyOrderVo.setOrderStatus((null == status || status.intValue() == 1) ? 2 : 3);
+ List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = new ArrayList<>();
+ AppUserOrderGoodsPageVo orderGoodsPageVo = new AppUserOrderGoodsPageVo();
+ orderGoodsPageVo.setGoodsName(sku.getTitle());
+ appUserOrderGoodsPageVoList.add(orderGoodsPageVo);
+ merVerifyOrderVo.setAppUserOrderGoodsPageVoList(appUserOrderGoodsPageVoList);
+ if(null != timeCard){
+ merVerifyOrderVo.setLaveTime(timeCard.getTimesCount() - timeCard.getTimesUsed());
+ }else{
+ merVerifyOrderVo.setLaveTime(-1);
+ }
+ // 返回结果
+ return merVerifyOrderVo;
+ }
+
+
+ @Override
+ public MerVerifyOrderVo verifyOrderKuaiShou(String orderId, Long shopId) {
+ VerifyPrepareDataNew data = KSVerifyUtil.certificatePrepare(redisService, orderId);
+ if (null == data) {
+ throw new ServiceException("查询券信息失败");
+ }
+ List<SimpleCertificateTimesCard> itemList = data.getCertificates();
+ if (null == itemList || itemList.isEmpty()) {
+ throw new ServiceException("查询券信息失败");
+ }
+ SimpleCertificateTimesCard certificatesItem = itemList.get(0);
+ Long expire_time = certificatesItem.getExpire_time();
+ if(LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) > expire_time){
+ throw new ServiceException("优惠券已过期");
+ }
+ //商品信息
+ SkuTImesCard sku = certificatesItem.getSku();
+ // 创建返回对象
+ MerVerifyOrderVo merVerifyOrderVo = new MerVerifyOrderVo();
+ // 设置返回对象的属性值
+ merVerifyOrderVo.setOrderId(orderId);
+ merVerifyOrderVo.setOrderFrom(7);
+ merVerifyOrderVo.setOrderStatus(2);
+ List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = new ArrayList<>();
+ AppUserOrderGoodsPageVo orderGoodsPageVo = new AppUserOrderGoodsPageVo();
+ orderGoodsPageVo.setGoodsName(sku.getTitle());
+ appUserOrderGoodsPageVoList.add(orderGoodsPageVo);
+ merVerifyOrderVo.setAppUserOrderGoodsPageVoList(appUserOrderGoodsPageVoList);
+ if(null != sku.getTimes_count()){
+ merVerifyOrderVo.setLaveTime(sku.getTimes_count());
+ }else{
+ merVerifyOrderVo.setLaveTime(-1);
+ }
+ // 返回结果
+ return merVerifyOrderVo;
+ }
+
/**
* 确认核销订单
*
@@ -1657,7 +1974,7 @@
*/
@Override
@Transactional
- @GlobalTransactional(rollbackFor = Exception.class)
+// @GlobalTransactional(rollbackFor = Exception.class) todo 放开分布式事务注解
public MerVerifyOrderVo sureVerifyOrder(MerVerifyOrderDto merVerifyOrderDto) {
String orderId = merVerifyOrderDto.getOrderId();
BigDecimal relReceiveMoney = merVerifyOrderDto.getRelReceiveMoney();
@@ -1672,12 +1989,16 @@
//获取核销商户
ShopRelUserVo shopRelUserVo = remoteShopService.getShopByUserId(merVerifyOrderDto.getUserId()).getData();
Long shopId = shopRelUserVo.getShopId();
+ log.info("当前核销员工【" + shopRelUserVo.getUserName() + "】门店ID:" + shopId);
//获取订单商品列表
List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listAppVoByOrderId(orderId);
//绑定用户判断核销商户
if(member.getBindingFlag()==1){
//未绑定的活动订单只需要判断店铺是否支持
- if(order.getOrderFrom()==2&&order.getUnbindingFlag()==1){
+ if(order.getOrderFrom()==2 && !member.getRelationShopId().equals(shopId)){
+ throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+ }
+ if(order.getOrderFrom()==2 && member.getRelationShopId().equals(shopId)){
String activityId = order.getActivityId();
MerActivityShopDto merActivityShopDto = new MerActivityShopDto();
merActivityShopDto.setShopId(shopId);
@@ -1685,11 +2006,6 @@
Boolean judge = remoteActivityService.judgeActivityShop(merActivityShopDto).getData();
if(!judge){
throw new ServiceException(AppErrorConstant.SHOP_NO_ACTIVITY);
- }
- }else{
- //绑定用户需直接判断商户一致
- if (!order.getShopId().equals(shopId)) {
- throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
}
}
}else{
@@ -1710,53 +2026,6 @@
throw new ServiceException(AppErrorConstant.SHOP_NO_ACTIVITY);
}
}
- //未绑定用户需判断核销商城订单判断商品单价和优惠券
- /*StringJoiner goodsIdSJ = new StringJoiner(",");
- for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) {
- goodsIdSJ.add(appUserOrderGoodsPageVo.getGoodsId());
- }
- //获取商品列表
- List<Goods> goodsList = remoteGoodsService.listGoodsByGoodsId(goodsIdSJ.toString()).getData();
- Map<String, Goods> goodsMap = goodsList.stream()
- .collect(Collectors.toMap(Goods::getGoodsId, Function.identity()));
- Goods goods;
- ShopGoods shopGoods;
- AppShopGoodsGetDto appShopGoodsGetDto;
- for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) {
- appShopGoodsGetDto= new AppShopGoodsGetDto();
- appShopGoodsGetDto.setShopId(shopId);
- appShopGoodsGetDto.setGoodsId(appUserOrderGoodsPageVo.getGoodsId());
- shopGoods = remoteGoodsService.getShopGoods(appShopGoodsGetDto).getData();
- goods = goodsMap.get(appUserOrderGoodsPageVo.getGoodsId());
- //当商户定制价格不为空时判断商品定制价格否则判断商品价格是否一致
- if(shopGoods!=null){
- if(shopGoods.getSalesPrice().compareTo(appUserOrderGoodsPageVo.getGoodsPrice())!=0){
- throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
- }
- if(appUserOrderGoodsPageVo.getCycleNumFlag()==0){
- if(shopGoods.getServiceNum()!=null){
- throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
- }
- }else{
- if(shopGoods.getServiceNum()!=appUserOrderGoodsPageVo.getServiceNum()){
- throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
- }
- }
- }else{
- if(goods.getSalesPrice().compareTo(appUserOrderGoodsPageVo.getGoodsPrice())!=0){
- throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
- }
- if(appUserOrderGoodsPageVo.getCycleNumFlag()==0){
- if(goods.getServiceNum()!=null){
- throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
- }
- }else{
- if(goods.getServiceNum()!=appUserOrderGoodsPageVo.getServiceNum()){
- throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
- }
- }
- }
- }*/
}
order.setShopId(shopId);
order.setOrderStatus(3);
@@ -1938,17 +2207,579 @@
remoteMemberService.changeMemberTotal(memberTotalChangeDto);
return merVerifyOrderVo;
}
-
+
+
/**
- * @description 分账实现
- * @author jqs
- * @date 2023/9/8 11:56
+ * 核销抖音券
+ *
+ * @return
+ */
+ @Override
+ @Transactional
+// @GlobalTransactional(rollbackFor = Exception.class) todo 放开分布式事务注解
+ public MerVerifyOrderVo sureVerifyOrderDouYin(MerVerifyOrderDto merVerifyOrderDto) {
+ String phone = merVerifyOrderDto.getPhone();
+ String orderId = merVerifyOrderDto.getOrderId();
+ Long shopId = merVerifyOrderDto.getShopId();
+ //获取核销商户
+ Shop shop = remoteShopService.getShop(shopId).getData();
+ CertificatePrepareResponseData data = VerifyUtil.certificatePrepare(orderId);
+ if (null == data) {
+ throw new ServiceException("查询券信息失败");
+ }
+ List<CertificatePrepareResponseDataCertificatesItem> itemList = data.getCertificates();
+ if (null == itemList && itemList.isEmpty()) {
+ throw new ServiceException("查询券信息失败");
+ }
+ CertificatePrepareResponseDataCertificatesItem certificatesItem = itemList.get(0);
+ //商品信息
+ CertificatePrepareResponseDataCertificatesItemSku sku = certificatesItem.getSku();
+ //次卡信息
+ CertificatePrepareResponseDataCertificatesItemTimeCard timeCard = certificatesItem.getTimeCard();
+ Number status = certificatesItem.getStatus();
+ if (null != status && status.intValue() == 2) {
+ throw new ServiceException("该抖音券不能重复核销");
+ }
+ if (null != status && status.intValue() != 1) {
+ throw new ServiceException("抖音券核销失败");
+ }
+ Member member = remoteMemberService.getMemberByMobile(phone).getData();//绑定用户判断核销商户
+ if(null == member){
+ throw new ServiceException("手机号还未注册账户,请先进行注册");
+ }
+ if (member.getBindingFlag() == 1) {
+ if (!member.getRelationShopId().equals(shopId)) {
+ throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+ }
+ }
+ //不是次卡才校验是否重复核销
+ if(null == timeCard){
+ Order one = this.getOne(new LambdaQueryWrapper<Order>().eq(Order::getTripartiteOrderId, data.getOrderId()));
+ if (null != one) {
+ throw new ServiceException("该抖音券不能重复核销");
+ }
+ }
+ String encryptedCode = certificatesItem.getEncryptedCode();
+ List<CertificateVerifyResponseDataVerifyResultsItem> items = VerifyUtil.certificateVerify(data.getVerifyToken(), shop.getDyPoiId(), new ArrayList<String>() {{
+ add(encryptedCode);
+ }});
+ if (null == items || items.isEmpty()) {
+ throw new ServiceException("抖音券核销失败");
+ }
+
+ TradeOrderQueryResponseData tradeOrderQueryResponseData = OrderUtil.queryOrderList(1, 10, data.getOrderId());
+ //原始金额
+ BigDecimal originAmount = BigDecimal.ZERO;
+ //支付金额
+ BigDecimal payAmount = BigDecimal.ZERO;
+ //优惠金额
+ BigDecimal payDiscountAmount = BigDecimal.ZERO;
+ Long createOrderTime = LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8"));
+ Long payTime = LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8"));
+ if (null != tradeOrderQueryResponseData) {
+ TradeOrderQueryResponseDataOrdersItem ordersItem = tradeOrderQueryResponseData.getOrders().get(0);
+ originAmount = BigDecimal.valueOf(ordersItem.getOriginalAmount()).divide(new BigDecimal(100));
+ payAmount = BigDecimal.valueOf(ordersItem.getPayAmount()).divide(new BigDecimal(100));
+ payDiscountAmount = BigDecimal.valueOf(ordersItem.getDiscountAmount()).divide(new BigDecimal(100));
+ createOrderTime = ordersItem.getCreateOrderTime();
+ payTime = ordersItem.getPayTime();
+ }
+
+ Date nowTime = new Date();
+ //开始添加订单数据
+ Order order = this.getOne(new LambdaQueryWrapper<Order>().eq(Order::getTripartiteOrderId, data.getOrderId()));
+ if(null == order){
+ order = new Order();
+ order.setOrderId(IdUtils.fastSimpleUUID());
+ order.setDelFlag(0);
+ order.setOrderStatus(3);
+ order.setOrderNo(CodeFactoryUtil.getShopOrderNo());
+ order.setOrderFrom(6);
+ order.setShopId(shopId);
+ order.setUserId(member.getUserId());
+ order.setOrderMoney(originAmount);
+ order.setDiscountMoney(payDiscountAmount);
+ order.setReceivableMoney(payAmount);
+ order.setPayType(1);
+ order.setPayMoney(payAmount);
+ order.setOnlinePayMoney(payAmount);
+ order.setOrderRemark("抖音订单");
+ order.setCreateTime(new Date(createOrderTime * 1000));
+ order.setPayTime(new Date(payTime * 1000));
+ order.setTripartiteOrderId(data.getOrderId());
+ order.setUseTime(nowTime);
+ order.setUseUserId(merVerifyOrderDto.getUserId());
+ order.setCloseFlag(1);
+ order.setGoodsNum(1);
+ order.setCouponMoney(BigDecimal.ZERO);
+ this.save(order);
+ //创建服务商品
+ //获取商品信息(商品简介,调理问题)
+
+ OrderGoods orderGoods = new OrderGoods();
+ orderGoods.setOrderGoodsId(IdUtils.simpleUUID());
+ orderGoods.setDelFlag(0);
+ orderGoods.setOrderId(order.getOrderId());
+ orderGoods.setGoodsPrice(originAmount);
+ orderGoods.setGoodsTotalMoney(originAmount);
+ orderGoods.setGoodsReceivableMoney(originAmount);
+ orderGoods.setBuyNum(1);
+
+ ConsumerGoods consumerGoods = new ConsumerGoods();
+ if(null != timeCard){
+ //核销一次加一次
+ orderGoods.setBuyNum(1);
+ orderGoods.setServiceNum(1);
+ consumerGoods.setServiceNum(timeCard.getTimesCount());
+ consumerGoods.setUsedNum(1);
+ consumerGoods.setUseTime(new Date());
+ }
+ orderGoods.setCycleNumFlag(1);
+ orderGoods.setGoodsType(2);
+ orderGoods.setGoodsName(sku.getTitle());
+ orderGoodsService.save(orderGoods);
+
+ consumerGoods.setConsumerGoodsId(IdUtils.simpleUUID());
+ consumerGoods.setDelFlag(0);
+ consumerGoods.setServiceStatus(1);
+ consumerGoods.setShopId(order.getShopId());
+ consumerGoods.setUserId(order.getUserId());
+ consumerGoods.setOrderId(orderId);
+ consumerGoods.setOrderGoodsId(orderGoods.getOrderGoodsId());
+ consumerGoods.setGoodsName(sku.getTitle());
+ consumerGoods.setCycleNumFlag(1);
+ consumerGoods.setCreateTime(nowTime);
+ consumerGoods.setGoodsType(2);
+ consumerGoods.setSourceFrom(1);
+ consumerGoodsService.save(consumerGoods);
+
+ //生成返回
+ MerVerifyOrderVo merVerifyOrderVo = new MerVerifyOrderVo();
+ merVerifyOrderVo.setOrderId(orderId);
+ merVerifyOrderVo.setOrderNo(order.getOrderNo());
+ merVerifyOrderVo.setOrderStatus(order.getOrderStatus());
+ merVerifyOrderVo.setOrderFrom(order.getOrderFrom());
+ merVerifyOrderVo.setOrderGoodsMoney(order.getOrderMoney());
+ merVerifyOrderVo.setCouponDiscount(order.getCouponMoney());
+ merVerifyOrderVo.setReceivableDeposit(order.getReceivableDeposit());
+ merVerifyOrderVo.setPayMoney(order.getPayMoney());
+ merVerifyOrderVo.setOrderRemark(order.getOrderRemark());
+ merVerifyOrderVo.setAppUserOrderGoodsPageVoList(new ArrayList<AppUserOrderGoodsPageVo>() {{
+ add(new AppUserOrderGoodsPageVo() {{
+ setOrderGoodsId(orderGoods.getOrderGoodsId());
+ setGoodsName(orderGoods.getGoodsName());
+ setGoodsType(orderGoods.getGoodsType());
+ setBuyNum(orderGoods.getBuyNum());
+ }});
+ }});
+ 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.setReceivableMoney(order.getOrderMoney().subtract(order.getPayMoney()));
+ merVerifyOrderVo.setReceiveMoney(order.getPayMoney());
+ } else {
+ merVerifyOrderVo.setReceivableMoney(order.getOrderMoney().subtract(order.getCouponMoney()).subtract(order.getReceivableDeposit()));
+ if (order.getOfflinePayMoney() != null) {
+ merVerifyOrderVo.setReceiveMoney(order.getOfflinePayMoney());
+ } else {
+ merVerifyOrderVo.setReceiveMoney(BigDecimal.ZERO);
+ }
+ }
+ merVerifyOrderVo.setUnReceiveMoney(BigDecimal.ZERO);
+ merVerifyOrderVo.setUserId(order.getUserId());
+ merVerifyOrderVo.setUserName(member.getRealName());
+ merVerifyOrderVo.setUserMobile(member.getMobile());
+ merVerifyOrderVo.setCloseFlag(order.getCloseFlag());
+ //判断用户是否绑定 2023-09-05需求改变核销时绑定用户
+ if (member.getBindingFlag() != 1) {
+ //绑定商户
+ AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto();
+ appMemberBindingDto.setShopId(order.getShopId());
+ appMemberBindingDto.setUserId(order.getUserId());
+ appMemberBindingDto.setBindingFlag(1);
+ if (order.getOrderFrom() == 1) {
+ appMemberBindingDto.setBindingType(1);
+ } else if (order.getOrderFrom() == 2) {
+ appMemberBindingDto.setBindingType(2);
+ }
+ remoteMemberService.updateMemberBinding(appMemberBindingDto);
+ order.setNewMemberFlag(1);
+ } else {
+ order.setNewMemberFlag(0);
+ }
+ this.saveOrUpdate(order);
+ //更新用户积分和消费统计
+ 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.getOnlinePayMoney()).setScale(0, BigDecimal.ROUND_HALF_UP);
+ Integer integral = Integer.valueOf(integralBig.toString());
+ if (integral > 0) {
+ memberTotalChangeDto.setChangeIntegral(integral);
+ memberTotalChangeDto.setTypeIntegral(1);
+ memberTotalChangeDto.setOrderId(orderId);
+ memberTotalChangeDto.setOrderNo(order.getOrderNo());
+ }
+ }
+ //更新消费时间
+ memberTotalChangeDto.setConsumeTime(nowTime);
+ remoteMemberService.changeMemberTotal(memberTotalChangeDto);
+ return merVerifyOrderVo;
+ }else{
+ //扣减剩余次数
+ OrderGoods orderGoods = orderGoodsService.getOne(new LambdaQueryWrapper<OrderGoods>().eq(OrderGoods::getOrderId, order.getOrderId()));
+ //核销一次加一次数量
+ orderGoods.setBuyNum(orderGoods.getBuyNum() + 1);
+ if(null != orderGoods.getServiceNum()){
+ orderGoods.setServiceNum(orderGoods.getServiceNum() + 1);
+ }
+ orderGoodsService.updateById(orderGoods);
+ ConsumerGoods consumerGoods = consumerGoodsService.getOne(new LambdaQueryWrapper<ConsumerGoods>().eq(ConsumerGoods::getOrderId, order.getOrderId()).eq(ConsumerGoods::getOrderGoodsId, orderGoods.getOrderGoodsId()));
+ consumerGoods.setUsedNum(consumerGoods.getUsedNum() + 1);
+ consumerGoods.setUseTime(new Date());
+ if(consumerGoods.getUsedNum() == consumerGoods.getServiceNum()){
+ consumerGoods.setCompleteTime(new Date());
+ }
+ consumerGoodsService.updateById(consumerGoods);
+ //生成返回
+ MerVerifyOrderVo merVerifyOrderVo = new MerVerifyOrderVo();
+ merVerifyOrderVo.setOrderId(orderId);
+ merVerifyOrderVo.setOrderNo(order.getOrderNo());
+ merVerifyOrderVo.setOrderStatus(order.getOrderStatus());
+ merVerifyOrderVo.setOrderFrom(order.getOrderFrom());
+ merVerifyOrderVo.setOrderGoodsMoney(order.getOrderMoney());
+ merVerifyOrderVo.setCouponDiscount(order.getCouponMoney());
+ merVerifyOrderVo.setReceivableDeposit(order.getReceivableDeposit());
+ merVerifyOrderVo.setPayMoney(order.getPayMoney());
+ merVerifyOrderVo.setOrderRemark(order.getOrderRemark());
+ merVerifyOrderVo.setAppUserOrderGoodsPageVoList(new ArrayList<AppUserOrderGoodsPageVo>() {{
+ add(new AppUserOrderGoodsPageVo() {{
+ setOrderGoodsId(orderGoods.getOrderGoodsId());
+ setGoodsName(orderGoods.getGoodsName());
+ setGoodsType(orderGoods.getGoodsType());
+ setBuyNum(orderGoods.getBuyNum());
+ }});
+ }});
+ 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.setReceivableMoney(order.getOrderMoney().subtract(order.getPayMoney()));
+ merVerifyOrderVo.setReceiveMoney(order.getPayMoney());
+ } else {
+ merVerifyOrderVo.setReceivableMoney(order.getOrderMoney().subtract(order.getCouponMoney()).subtract(order.getReceivableDeposit()));
+ if (order.getOfflinePayMoney() != null) {
+ merVerifyOrderVo.setReceiveMoney(order.getOfflinePayMoney());
+ } else {
+ merVerifyOrderVo.setReceiveMoney(BigDecimal.ZERO);
+ }
+ }
+ merVerifyOrderVo.setUnReceiveMoney(BigDecimal.ZERO);
+ merVerifyOrderVo.setUserId(order.getUserId());
+ merVerifyOrderVo.setUserName(member.getRealName());
+ merVerifyOrderVo.setUserMobile(member.getMobile());
+ merVerifyOrderVo.setCloseFlag(order.getCloseFlag());
+ return merVerifyOrderVo;
+ }
+ }
+
+
+ /**
+ * 核销快手券
+ *
+ * @return
+ */
+ @Override
+ @Transactional
+// @GlobalTransactional(rollbackFor = Exception.class) todo 放开分布式事务注解
+ public MerVerifyOrderVo sureVerifyOrderKuaiShou(MerVerifyOrderDto merVerifyOrderDto) {
+ String phone = merVerifyOrderDto.getPhone();
+ String orderId = merVerifyOrderDto.getOrderId();
+ Long shopId = merVerifyOrderDto.getShopId();
+ //获取核销商户
+ Shop shop = remoteShopService.getShop(shopId).getData();
+ VerifyPrepareDataNew data = KSVerifyUtil.certificatePrepare(redisService, orderId);
+ if (null == data) {
+ throw new ServiceException("查询券信息失败");
+ }
+ List<SimpleCertificateTimesCard> itemList = data.getCertificates();
+ if (null == itemList || itemList.isEmpty()) {
+ throw new ServiceException("查询券信息失败");
+ }
+ SimpleCertificateTimesCard certificatesItem = itemList.get(0);
+ Long expire_time = certificatesItem.getExpire_time();
+ if(LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) > expire_time){
+ throw new ServiceException("优惠券已过期");
+ }
+ //商品信息
+ SkuTImesCard sku = certificatesItem.getSku();
+ if(null == sku.getTimes_count()){
+ Order one = this.getOne(new LambdaQueryWrapper<Order>().eq(Order::getTripartiteOrderId, data.getOrder_id()));
+ if (null != one) {
+ throw new ServiceException("该快手券不能重复核销");
+ }
+ }
+
+ Member member = remoteMemberService.getMemberByMobile(phone).getData();
+ //绑定用户判断核销商户
+ if (member.getBindingFlag() == 1) {
+ if (!member.getRelationShopId().equals(shopId)) {
+ throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+ }
+ }
+
+ String encryptedCode = certificatesItem.getEncrypted_code();
+ List<VerifyResult> items = KSVerifyUtil.certificateVerify(redisService, data.getVerify_token(), shop.getKsPoiId(), new ArrayList<String>() {{
+ add(encryptedCode);
+ }}, data.getOrder_id());
+ if (null == items || items.isEmpty()) {
+ throw new ServiceException("快手券核销失败");
+ }
+
+ OpenApiQueryOrderDetailInfoV1 orderDetailInfoV1 = KSOrderUtil.queryOrderInfo(redisService, data.getOrder_id());
+ //原始金额
+ BigDecimal originAmount = BigDecimal.ZERO;
+ //支付金额
+ BigDecimal payAmount = BigDecimal.ZERO;
+ //优惠金额
+ BigDecimal payDiscountAmount = BigDecimal.ZERO;
+ Long create_order_time = LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8"));
+ Long pay_time = LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8"));
+ if (null != orderDetailInfoV1) {
+ OpenApiOrderAmountV1 amountInfo = orderDetailInfoV1.getAmount();
+ originAmount = BigDecimal.valueOf(amountInfo.getTotal_amount());
+ payAmount = BigDecimal.valueOf(amountInfo.getPay_amount());
+ payDiscountAmount = originAmount.subtract(payAmount);
+ create_order_time = orderDetailInfoV1.getCreate_order_time();
+ pay_time = orderDetailInfoV1.getPay_time();
+ }
+
+ Date nowTime = new Date();
+ Order order = this.getOne(new LambdaQueryWrapper<Order>().eq(Order::getTripartiteOrderId, data.getOrder_id()));
+ if(null == order){
+ //开始添加订单数据
+ order = new Order();
+ order.setOrderId(IdUtils.fastSimpleUUID());
+ order.setDelFlag(0);
+ order.setOrderStatus(3);
+ order.setOrderNo(CodeFactoryUtil.getShopOrderNo());
+ order.setOrderFrom(7);
+ order.setShopId(shopId);
+ order.setUserId(member.getUserId());
+ order.setOrderMoney(originAmount);
+ order.setDiscountMoney(payDiscountAmount);
+ order.setReceivableMoney(payAmount);
+ order.setPayType(1);
+ order.setPayMoney(payAmount);
+ order.setOnlinePayMoney(payAmount);
+ order.setOrderRemark("快手订单");
+ order.setCreateTime(new Date(create_order_time * 1000));
+ order.setPayTime(new Date(pay_time * 1000));
+ order.setTripartiteOrderId(data.getOrder_id());
+ order.setUseTime(nowTime);
+ order.setUseUserId(merVerifyOrderDto.getUserId());
+ order.setCloseFlag(1);
+ order.setGoodsNum(1);
+ order.setCouponMoney(BigDecimal.ZERO);
+ this.save(order);
+ //创建服务商品
+ //获取商品信息(商品简介,调理问题)
+
+ OrderGoods orderGoods = new OrderGoods();
+ orderGoods.setOrderGoodsId(IdUtils.simpleUUID());
+ orderGoods.setDelFlag(0);
+ orderGoods.setOrderId(order.getOrderId());
+ orderGoods.setGoodsId(sku.getSku_id());
+ orderGoods.setBuyNum(1);
+ orderGoods.setServiceNum(1);
+ orderGoods.setGoodsPrice(originAmount);
+ orderGoods.setGoodsTotalMoney(originAmount);
+ orderGoods.setGoodsReceivableMoney(originAmount);
+ orderGoods.setCycleNumFlag(1);
+ orderGoods.setServiceNum(sku.getTimes_count());
+ orderGoods.setGoodsType(2);
+ orderGoods.setGoodsName(sku.getTitle());
+ orderGoodsService.save(orderGoods);
+
+ ConsumerGoods consumerGoods = new ConsumerGoods();
+ consumerGoods.setConsumerGoodsId(IdUtils.simpleUUID());
+ consumerGoods.setDelFlag(0);
+ consumerGoods.setServiceStatus(1);
+ consumerGoods.setShopId(order.getShopId());
+ consumerGoods.setUserId(order.getUserId());
+ consumerGoods.setOrderId(orderId);
+ consumerGoods.setGoodsId(sku.getSku_id());
+ consumerGoods.setOrderGoodsId(orderGoods.getOrderGoodsId());
+ consumerGoods.setGoodsName(sku.getTitle());
+ consumerGoods.setCycleNumFlag(1);
+ consumerGoods.setServiceNum(sku.getTimes_count());
+ consumerGoods.setUsedNum(1);
+ consumerGoods.setUseTime(new Date());
+ consumerGoods.setCreateTime(nowTime);
+ consumerGoods.setGoodsType(2);
+ consumerGoods.setSourceFrom(1);
+ consumerGoodsService.save(consumerGoods);
+ //生成返回
+ MerVerifyOrderVo merVerifyOrderVo = new MerVerifyOrderVo();
+ merVerifyOrderVo.setOrderId(orderId);
+ merVerifyOrderVo.setOrderNo(order.getOrderNo());
+ merVerifyOrderVo.setOrderStatus(order.getOrderStatus());
+ merVerifyOrderVo.setOrderFrom(order.getOrderFrom());
+ merVerifyOrderVo.setOrderGoodsMoney(order.getOrderMoney());
+ merVerifyOrderVo.setCouponDiscount(order.getCouponMoney());
+ merVerifyOrderVo.setReceivableDeposit(order.getReceivableDeposit());
+ merVerifyOrderVo.setPayMoney(order.getPayMoney());
+ merVerifyOrderVo.setOrderRemark(order.getOrderRemark());
+ merVerifyOrderVo.setAppUserOrderGoodsPageVoList(new ArrayList<AppUserOrderGoodsPageVo>() {{
+ add(new AppUserOrderGoodsPageVo() {{
+ setOrderGoodsId(orderGoods.getOrderGoodsId());
+ setGoodsName(orderGoods.getGoodsName());
+ setGoodsType(orderGoods.getGoodsType());
+ setBuyNum(orderGoods.getBuyNum());
+ }});
+ }});
+ 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.setReceivableMoney(order.getOrderMoney().subtract(order.getPayMoney()));
+ merVerifyOrderVo.setReceiveMoney(order.getPayMoney());
+ } else {
+ merVerifyOrderVo.setReceivableMoney(order.getOrderMoney().subtract(order.getCouponMoney()).subtract(order.getReceivableDeposit()));
+ if (order.getOfflinePayMoney() != null) {
+ merVerifyOrderVo.setReceiveMoney(order.getOfflinePayMoney());
+ } else {
+ merVerifyOrderVo.setReceiveMoney(BigDecimal.ZERO);
+ }
+ }
+ merVerifyOrderVo.setUnReceiveMoney(BigDecimal.ZERO);
+ merVerifyOrderVo.setUserId(order.getUserId());
+ merVerifyOrderVo.setUserName(member.getRealName());
+ merVerifyOrderVo.setUserMobile(member.getMobile());
+ merVerifyOrderVo.setCloseFlag(order.getCloseFlag());
+ //判断用户是否绑定 2023-09-05需求改变核销时绑定用户
+ if (member.getBindingFlag() != 1) {
+ //绑定商户
+ AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto();
+ appMemberBindingDto.setShopId(order.getShopId());
+ appMemberBindingDto.setUserId(order.getUserId());
+ appMemberBindingDto.setBindingFlag(1);
+ if (order.getOrderFrom() == 1) {
+ appMemberBindingDto.setBindingType(1);
+ } else if (order.getOrderFrom() == 2) {
+ appMemberBindingDto.setBindingType(2);
+ }
+ remoteMemberService.updateMemberBinding(appMemberBindingDto);
+ order.setNewMemberFlag(1);
+ } else {
+ order.setNewMemberFlag(0);
+ }
+ this.saveOrUpdate(order);
+ //更新用户积分和消费统计
+ 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.getOnlinePayMoney()).setScale(0, BigDecimal.ROUND_HALF_UP);
+ Integer integral = Integer.valueOf(integralBig.toString());
+ if (integral > 0) {
+ memberTotalChangeDto.setChangeIntegral(integral);
+ memberTotalChangeDto.setTypeIntegral(1);
+ memberTotalChangeDto.setOrderId(orderId);
+ memberTotalChangeDto.setOrderNo(order.getOrderNo());
+ }
+ }
+ //更新消费时间
+ memberTotalChangeDto.setConsumeTime(nowTime);
+ remoteMemberService.changeMemberTotal(memberTotalChangeDto);
+ return merVerifyOrderVo;
+ }else{
+ //扣减剩余次数
+ OrderGoods orderGoods = orderGoodsService.getOne(new LambdaQueryWrapper<OrderGoods>().eq(OrderGoods::getOrderId, order.getOrderId()));
+ orderGoods.setBuyNum(orderGoods.getBuyNum() + 1);
+ orderGoods.setServiceNum(orderGoods.getServiceNum() + 1);
+ orderGoodsService.updateById(orderGoods);
+
+ ConsumerGoods consumerGoods = consumerGoodsService.getOne(new LambdaQueryWrapper<ConsumerGoods>().eq(ConsumerGoods::getOrderId, order.getOrderId()).eq(ConsumerGoods::getOrderGoodsId, orderGoods.getOrderGoodsId()));
+ consumerGoods.setUsedNum(consumerGoods.getUsedNum() + 1);
+ consumerGoods.setUseTime(new Date());
+ if(consumerGoods.getUsedNum() == consumerGoods.getServiceNum()){
+ consumerGoods.setCompleteTime(new Date());
+ }
+ consumerGoodsService.updateById(consumerGoods);
+ //生成返回
+ MerVerifyOrderVo merVerifyOrderVo = new MerVerifyOrderVo();
+ merVerifyOrderVo.setOrderId(orderId);
+ merVerifyOrderVo.setOrderNo(order.getOrderNo());
+ merVerifyOrderVo.setOrderStatus(order.getOrderStatus());
+ merVerifyOrderVo.setOrderFrom(order.getOrderFrom());
+ merVerifyOrderVo.setOrderGoodsMoney(order.getOrderMoney());
+ merVerifyOrderVo.setCouponDiscount(order.getCouponMoney());
+ merVerifyOrderVo.setReceivableDeposit(order.getReceivableDeposit());
+ merVerifyOrderVo.setPayMoney(order.getPayMoney());
+ merVerifyOrderVo.setOrderRemark(order.getOrderRemark());
+ merVerifyOrderVo.setAppUserOrderGoodsPageVoList(new ArrayList<AppUserOrderGoodsPageVo>() {{
+ add(new AppUserOrderGoodsPageVo() {{
+ setOrderGoodsId(orderGoods.getOrderGoodsId());
+ setGoodsName(orderGoods.getGoodsName());
+ setGoodsType(orderGoods.getGoodsType());
+ setBuyNum(orderGoods.getBuyNum());
+ }});
+ }});
+ 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.setReceivableMoney(order.getOrderMoney().subtract(order.getPayMoney()));
+ merVerifyOrderVo.setReceiveMoney(order.getPayMoney());
+ } else {
+ merVerifyOrderVo.setReceivableMoney(order.getOrderMoney().subtract(order.getCouponMoney()).subtract(order.getReceivableDeposit()));
+ if (order.getOfflinePayMoney() != null) {
+ merVerifyOrderVo.setReceiveMoney(order.getOfflinePayMoney());
+ } else {
+ merVerifyOrderVo.setReceiveMoney(BigDecimal.ZERO);
+ }
+ }
+ merVerifyOrderVo.setUnReceiveMoney(BigDecimal.ZERO);
+ merVerifyOrderVo.setUserId(order.getUserId());
+ merVerifyOrderVo.setUserName(member.getRealName());
+ merVerifyOrderVo.setUserMobile(member.getMobile());
+ merVerifyOrderVo.setCloseFlag(order.getCloseFlag());
+ return merVerifyOrderVo;
+ }
+
+ }
+
+
+
+ /**
* @param orderId
* @param orderNo
* @param shopId
* @param orderMoney
* @param orderFrom
- * @return void
+ * @return void
+ * @description 分账实现
+ * @author jqs
+ * @date 2023/9/8 11:56
*/
private void submitProfitSharing(String orderId, String orderNo, Long shopId, BigDecimal orderMoney, Integer orderFrom) {
String sendMessage = "";
@@ -2163,9 +2994,13 @@
*/
@Override
@Transactional
- @GlobalTransactional(rollbackFor = Exception.class)
+// @GlobalTransactional(rollbackFor = Exception.class) todo 放开分布式事务注解
public MerVerifyCouponVo sureVerifyCoupon(MerVerifyCouponDto merVerifyCouponDto) {
- MerVerifyCouponGetVo verifyCouponGetVo = remoteCouponService.getVerifyCoupon(merVerifyCouponDto.getMemberCouponId()).getData();
+ R<MerVerifyCouponGetVo> verifyCoupon = remoteCouponService.getVerifyCoupon(merVerifyCouponDto.getMemberCouponId());
+ if(verifyCoupon.getCode() != 200){
+ throw new ServiceException(verifyCoupon.getMsg());
+ }
+ MerVerifyCouponGetVo verifyCouponGetVo = verifyCoupon.getData();
MemberCoupon memberCoupon = verifyCouponGetVo.getMemberCoupon();
ShopRelUserVo shopRelUserVo = remoteShopService.getShopByUserId(merVerifyCouponDto.getUserId()).getData();
Long userId = verifyCouponGetVo.getUserId();
@@ -2299,7 +3134,7 @@
*/
@Override
@Transactional
- @GlobalTransactional(rollbackFor = Exception.class)
+// @GlobalTransactional(rollbackFor = Exception.class) todo 放开分布式事务注解
public MerVerifyAwardVo sureVerifyPrize(MerVerifyPrizeDto merVerifyPrizeDto) {
MerVerifyAwardVo merVerifyAwardVo = new MerVerifyAwardVo();
MemberGiftRecord memberGiftRecord = remoteMemberService.getVerifyPrize(merVerifyPrizeDto.getPrizeId()).getData();
@@ -2310,20 +3145,20 @@
Long shopId = shopRelUserVo.getShopId();
Shop shop = remoteShopService.getShop(shopId).getData();
//平台奖品判断
- if (memberGiftRecord.getGiftFrom() == 1) {
+ if (memberGiftRecord.getGiftFrom() == 1 && memberGiftRecord.getPrizeFrom() == 1) {
BirthdayCard birthdayCard = remoteMemberService.getBirthdayCard().getData();
//判断生日活动状态
- if(birthdayCard!=null&&birthdayCard.getCardStatus()==1){
+ if (birthdayCard != null && birthdayCard.getCardStatus() == 1) {
shop = remoteShopService.getShop(shopId).getData();
//判断指定区域全部店铺
- if(birthdayCard.getAreaFlag()==2&&birthdayCard.getShopFlag()==1&&!StringUtils.checkString(birthdayCard.getDesignatedArea(),shop.getShopCityCode())){
+ 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())){
+ if (birthdayCard.getShopFlag() == 2 && !StringUtils.checkString(birthdayCard.getApplicableShop(), shopId.toString())) {
throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
}
- }else{
+ } else {
throw new ServiceException(AppErrorConstant.BIRTHDAY_CARD_ERROR);
}
}
@@ -2332,29 +3167,35 @@
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("平台生日卡");
+ if (memberGiftRecord.getPrizeFrom() == 1) {
+ if (memberGiftRecord.getGiftFrom() == 1) {
+ merVerifyAwardVo.setGiftFrom("平台生日卡");
+ } else {
+ merVerifyAwardVo.setGiftFrom("商户生日卡");
+ }
} else {
- merVerifyAwardVo.setGiftFrom("商户生日卡");
+ 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);
+ if (memberGiftRecord.getPrizeFrom() == 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();
@@ -2377,10 +3218,22 @@
birthdayGiftSendDto.setGoodsNumber(memberGiftRecord.getGoodsNumber());
giftSendDtoList.add(birthdayGiftSendDto);
consumerGoodsService.sendGoodsGift(giftSendDtoList);
+ //抽奖奖品中的平台商品需要生成订单数据
+ if (memberGiftRecord.getPrizeFrom() == 2) {
+ Order one = this.getOne(new QueryWrapper<Order>().eq("activity_id", memberGiftRecord.getGiftId()).eq("order_from", 4));
+ if(null == one){
+ addOrder(memberGiftRecord.getShopId(), memberGiftRecord.getUserId(), goods, null, memberGiftRecord.getGoodsNumber(), memberGiftRecord.getGiftId(), 3);
+ }else{
+ one.setOrderStatus(3);
+ this.updateById(one);
+ }
+ }
break;
case 3:
- merVerifyAwardVo.setGiftName("现金");
- merVerifyAwardVo.setGiftNumber(memberGiftRecord.getMoney().doubleValue());
+ if (memberGiftRecord.getPrizeFrom() == 1) {
+ merVerifyAwardVo.setGiftName("现金");
+ merVerifyAwardVo.setGiftNumber(memberGiftRecord.getMoney().doubleValue());
+ }
break;
case 4:
merVerifyAwardVo.setGiftName(memberGiftRecord.getGiftName());
@@ -2408,8 +3261,73 @@
merVerifyAwardVo.setVerifyStatus(2);
return merVerifyAwardVo;
}
-
-
+
+
+ /**
+ * 抽奖的平台商品生成订单--待审核
+ *
+ * @param shopId
+ * @param userId
+ * @param goods
+ * @param goodsNum
+ */
+ public void addOrder(Long shopId, Long userId, Goods goods, String goodsName, Integer goodsNum, String giftId, Integer status) {
+ Order order = new Order();
+ order.setOrderId(IdUtils.simpleUUID());
+ order.setDelFlag(0);
+ order.setOrderStatus(status);
+ order.setOrderNo(CodeFactoryUtil.getShopOrderNo());
+ order.setOrderFrom(4);
+ order.setShopId(shopId);
+ order.setUserId(userId);
+ order.setOrderMoney(null == goods ? BigDecimal.ZERO : goods.getSalesPrice());
+ order.setCouponMoney(BigDecimal.ZERO);
+ order.setDiscountMoney(BigDecimal.ZERO);
+ order.setReceivableMoney(BigDecimal.ZERO);
+ order.setPayType(1);
+ order.setPayMoney(BigDecimal.ZERO);
+ order.setOrderRemark("抽奖订单");
+ order.setCreateTime(new Date());
+ order.setPayTime(new Date());
+ order.setUseTime(new Date());
+ order.setUseUserId(userId);
+ order.setGoodsNum(goodsNum);
+ order.setReceivableDeposit(BigDecimal.ZERO);
+ order.setCloseFlag(1);
+ order.setActivityId(giftId);
+ this.save(order);
+ OrderGoods orderGoods = new OrderGoods();
+ orderGoods.setOrderGoodsId(IdUtils.simpleUUID());
+ orderGoods.setDelFlag(0);
+ orderGoods.setOrderId(order.getOrderId());
+ orderGoods.setBuyNum(goodsNum);
+ if(null != goods){
+ orderGoods.setGoodsId(goods.getGoodsId());
+ orderGoods.setGoodsPrice(goods.getSalesPrice());
+ orderGoods.setGoodsDeposit(goods.getSubscription());
+ orderGoods.setGoodsTotalMoney(goods.getSalesPrice().multiply(new BigDecimal(goodsNum)));
+ orderGoods.setGoodsReceivableMoney(BigDecimal.ZERO);
+ orderGoods.setCycleNumFlag(goods.getCycleNumFlag());
+ orderGoods.setServiceNum(goods.getServiceNum());
+ orderGoods.setGoodsType(goods.getGoodsType());
+ orderGoods.setGoodsName(goods.getGoodsName());
+ GoodsFile goodsFile = remoteGoodsService.getGoodsFile(goods.getGoodsId()).getData();
+ if (null != goodsFile) {
+ orderGoods.setGoodsPicture(goodsFile.getFileUrl());
+ }
+ orderGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
+ orderGoods.setGoodsTag(goods.getGoodsTags());
+ }else{
+ orderGoods.setGoodsName(goodsName);
+ orderGoods.setBuyNum(1);
+ orderGoods.setGoodsPrice(BigDecimal.ZERO);
+ orderGoods.setGoodsTotalMoney(BigDecimal.ZERO);
+ orderGoods.setGoodsReceivableMoney(BigDecimal.ZERO);
+ }
+ orderGoodsService.save(orderGoods);
+ }
+
+
/**
* 收银未结清订单列表
*
@@ -2426,14 +3344,25 @@
if (merMemberNoClearOrderVo.getUnPaidMoney() == null) {
merMemberNoClearOrderVo.setUnPaidMoney(zeroBig);
}
- if(merMemberNoClearOrderVo.getUnPaidMoney().compareTo(zeroBig)<0){
+ if (merMemberNoClearOrderVo.getUnPaidMoney().compareTo(zeroBig) < 0) {
merMemberNoClearOrderVo.setUnPaidMoney(zeroBig);
}
+ String orderId = merMemberNoClearOrderVo.getOrderId();
+ List<OrderGoods> list = orderGoodsService.list(new LambdaQueryWrapper<OrderGoods>().eq(OrderGoods::getOrderId, orderId));
+ List<AppGoodsInfoVo> goodsInfoVos = new ArrayList<>();
+ for (OrderGoods orderGoods : list) {
+ AppGoodsInfoVo info = new AppGoodsInfoVo();
+ info.setGoodsName(orderGoods.getGoodsName());
+ info.setSalesNum(orderGoods.getBuyNum());
+ info.setGoodsType(orderGoods.getGoodsType());
+ goodsInfoVos.add(info);
+ }
+ merMemberNoClearOrderVo.setGoodsList(goodsInfoVos);
}
}
return merMemberNoClearOrderVoList;
}
-
+
/**
* 结清订单
*
@@ -2469,7 +3398,7 @@
*/
@Override
@Transactional
- @GlobalTransactional(rollbackFor = Exception.class)
+// @GlobalTransactional(rollbackFor = Exception.class) todo 放开分布式事务注解
public void createNewOrder(MerNewOrderDto merNewOrderDto) {
Long userId = merNewOrderDto.getBuyUserId();
Date nowTime = new Date();
@@ -2519,7 +3448,7 @@
BigDecimal buyNumBig;
Integer serviceNum;
Integer goodsNum = 0;
- String memberCouponId;
+ Long memberCouponId;
Goods goods;
BigDecimal goodsPrice;
BigDecimal goodsTotalPrice;
@@ -2547,10 +3476,6 @@
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;
@@ -2579,8 +3504,12 @@
goodsRealPrice = goodsTotalPrice;
//优惠券计算
if (memberCouponId != null) {
- appMemberCouponVo = appMemberCouponVoMap.get(memberCouponId);
+ log.info("使用优惠券:{}", memberCouponId);
+ appMemberCouponVo = appMemberCouponVoMap.get(memberCouponId.toString());
+ log.info("匹配的优惠券:{}", JSON.toJSONString(appMemberCouponVo));
if (null != appMemberCouponVo && (StringUtils.isBlank(appMemberCouponVo.getRelGoodsIds()) || appMemberCouponVo.getRelGoodsIds().contains(goodsId))) {
+ log.info("可以使用优惠券:{}", JSON.toJSONString(appMemberCouponVo));
+ couponType = appMemberCouponVo.getCouponType();
couponType = appMemberCouponVo.getCouponType();
if (couponType == 1 && appMemberCouponVo.getMoneyThreshold() != null && appMemberCouponVo.getDiscountMoney() != null) {
moneyThreshold = appMemberCouponVo.getMoneyThreshold();
@@ -2600,7 +3529,7 @@
goodsRealPrice = BigDecimal.ZERO;
discountMoney = goodsTotalPrice.subtract(goodsRealPrice);
}
- memberCouponSJ.add(memberCouponId);
+ memberCouponSJ.add(memberCouponId + ",");
}
}
goodsDeposit = goods.getSubscription();
@@ -2691,24 +3620,6 @@
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();
@@ -2768,6 +3679,7 @@
consumerGoodsService.saveBatchConsumerGoods(consumerGoodsList);
//减去优惠券
if (StringUtils.isNotBlank(memberCouponSJ.toString())) {
+ log.info("修改优惠券使用状态:{}", JSON.toJSONString(memberCouponSJ));
remoteCouponService.useMemberCoupon(memberCouponSJ.toString());
}
//更新会员消费记录
@@ -2775,15 +3687,6 @@
memberTotalChangeDto.setUserId(order.getUserId());
memberTotalChangeDto.setConsumeTime(nowTime);
remoteMemberService.changeMemberTotal(memberTotalChangeDto);
- //更新商户统计
- /*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);
@@ -2822,7 +3725,7 @@
Long userId;
Member member;
Integer orderFrom;
- String orderFromDesc;
+ String orderFromDesc = "";
BigDecimal zeroBig = new BigDecimal("0.00");
StringJoiner userIdSj = new StringJoiner(",");
// 遍历订单列表
@@ -2836,8 +3739,16 @@
orderFromDesc = "商城订单";
} else if (orderFrom == 2) {
orderFromDesc = "平台秒杀活动(" + merOrderPageVo.getActivityName() + ")";
- } else {
+ } else if(orderFrom == 3) {
orderFromDesc = "线下创建";
+ }else if(orderFrom == 4) {
+ orderFromDesc = "抽奖";
+ }else if(orderFrom == 5) {
+ orderFromDesc = "美团";
+ }else if(orderFrom == 6) {
+ orderFromDesc = "抖音";
+ }else if(orderFrom == 7) {
+ orderFromDesc = "快手";
}
} else {
orderFromDesc = "商城订单";
@@ -2855,7 +3766,7 @@
// 根据用户ID列表获取用户信息
MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto();
mgtBaseBathDto.setIds(userIdSj.toString());
- List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(mgtBaseBathDto).getData();
+ List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(userIdSj.toString()).getData();
Map<Long, MgtSimpleMemberVo> userMap = simpleMemberVoList.stream()
.collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity()));
// 遍历订单列表,设置用户信息
@@ -2886,9 +3797,27 @@
if (merMemberNoClearOrderVo.getUnPaidMoney() == null) {
merMemberNoClearOrderVo.setUnPaidMoney(zeroBig);
}
- if(merMemberNoClearOrderVo.getUnPaidMoney().compareTo(zeroBig)<0){
+ if (merMemberNoClearOrderVo.getUnPaidMoney().compareTo(zeroBig) < 0) {
merMemberNoClearOrderVo.setUnPaidMoney(zeroBig);
}
+ List<MerCouponGoodsListVo> goodsList = new ArrayList<>();
+ orderGoodsService.listByOrderId(merMemberNoClearOrderVo.getOrderId()).forEach(orderGoodsVo -> {
+ MerCouponGoodsListVo merCouponGoodsListVo = new MerCouponGoodsListVo();
+ merCouponGoodsListVo.setGoodsId(orderGoodsVo.getGoodsId());
+ merCouponGoodsListVo.setGoodsName(orderGoodsVo.getGoodsName());
+ merCouponGoodsListVo.setGoodsNum(orderGoodsVo.getBuyNum());
+ if (orderGoodsVo.getGoodsType() == 1) {
+ merCouponGoodsListVo.setGoodsType("周期");
+ } else if (orderGoodsVo.getGoodsType() == 2) {
+ merCouponGoodsListVo.setGoodsType("服务");
+ } else if (orderGoodsVo.getGoodsType() == 3) {
+ merCouponGoodsListVo.setGoodsType("体验");
+ } else if (orderGoodsVo.getGoodsType() == 4) {
+ merCouponGoodsListVo.setGoodsType("单品");
+ }
+ goodsList.add(merCouponGoodsListVo);
+ });
+ merMemberNoClearOrderVo.setGoodsList(goodsList);
}
}
return merMemberNoClearOrderVoList;
@@ -2988,6 +3917,24 @@
mgtShopOrderPageDto.setUserIds(mgtUserIdByKeywordVo.getUserIds());
}
}
+ //数据权限
+ List<Long> userId = remoteUserService.getScopeOfAuthorityUserId();
+ BoardMemberTotalDto boardMemberTotalDto = new BoardMemberTotalDto();
+ boardMemberTotalDto.setUserIds(userId);
+ List<Shop> shops = remoteShopService.getShopBySysUserIds(boardMemberTotalDto);
+ if (!shops.isEmpty()) {
+ List<Long> collect = shops.stream().map(Shop::getShopId).collect(Collectors.toList());
+ String join = collect.stream().map(Object::toString).collect(Collectors.joining(","));
+ String shopIds = mgtShopOrderPageDto.getShopIds();
+ if(StringUtils.isNotEmpty(shopIds)){
+ shopIds = shopIds + "," + join;
+ }else{
+ shopIds = join;
+ }
+ mgtShopOrderPageDto.setShopIds(shopIds);
+ }
+
+
// 从数据库中获取活动订单列表
List<MgtActivityOrderPageVo> activityOrderPageVoList = orderMapper.pageMgtActivityOrder(page, mgtShopOrderPageDto);
// 如果列表不为空
@@ -3015,13 +3962,14 @@
.collect(Collectors.toMap(MgtSimpleShopVo::getShopId, Function.identity()));
mgtBaseBathDto = new MgtBaseBathDto();
mgtBaseBathDto.setIds(userJoinedString);
- List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(mgtBaseBathDto).getData();
+ List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(userJoinedString).getData();
Map<Long, MgtSimpleMemberVo> userMap = simpleMemberVoList.stream()
.collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity()));
// 遍历列表,设置店铺名称、用户名称和未支付金额
for (MgtActivityOrderPageVo mgtActivityOrderPageVo : activityOrderPageVoList) {
if(mgtActivityOrderPageVo.getShopId()!=null){
- mgtActivityOrderPageVo.setShopName(shopMap.get(mgtActivityOrderPageVo.getShopId()).getShopName());
+ MgtSimpleShopVo mgtSimpleShopVo = shopMap.get(mgtActivityOrderPageVo.getShopId());
+ mgtActivityOrderPageVo.setShopName(null == mgtSimpleShopVo ? "" : mgtSimpleShopVo.getShopName());
}
if (userMap.get(mgtActivityOrderPageVo.getUserId()) != null) {
@@ -3066,10 +4014,28 @@
mgtShopOrderPageDto.setUserIds(mgtUserIdByKeywordVo.getUserIds());
}
}
+ //数据权限
+ List<Long> userId = remoteUserService.getScopeOfAuthorityUserId();
+ BoardMemberTotalDto boardMemberTotalDto = new BoardMemberTotalDto();
+ boardMemberTotalDto.setUserIds(userId);
+ List<Shop> shops = remoteShopService.getShopBySysUserIds(boardMemberTotalDto);
+ if (!shops.isEmpty()) {
+ List<Long> collect = shops.stream().map(Shop::getShopId).collect(Collectors.toList());
+ String join = collect.stream().map(Object::toString).collect(Collectors.joining(","));
+ String shopIds = mgtShopOrderPageDto.getShopIds();
+ if(StringUtils.isNotEmpty(shopIds)){
+ shopIds = shopIds + "," + join;
+ }else{
+ shopIds = join;
+ }
+ mgtShopOrderPageDto.setShopIds(shopIds);
+ }
MgtOrderTotal mgtOrderTotal = new MgtOrderTotal();
MgtOrderTotal mgtOrderTotalFirst = orderMapper.totalOrderFirst(mgtShopOrderPageDto);
MgtOrderTotal mgtOrderTotalSecond = orderMapper.totalOrderSecond(mgtShopOrderPageDto);
MgtOrderTotal mgtOrderTotalThird = orderMapper.totalOrderThird(mgtShopOrderPageDto);
+ MgtOrderTotal mgtOrderTotalFour = orderMapper.totalOrderFour(mgtShopOrderPageDto);
+
mgtOrderTotal.setOrderTotal(mgtOrderTotalFirst.getOrderTotal());
mgtOrderTotal.setOrderMoneyTotal(mgtOrderTotalFirst.getOrderMoneyTotal());
mgtOrderTotal.setShopOrderTotal(mgtOrderTotalSecond.getShopOrderTotal());
@@ -3080,6 +4046,12 @@
mgtOrderTotal.setActivityOrderMoneyTotal(mgtOrderTotalThird.getActivityOrderMoneyTotal());
mgtOrderTotal.setActivityPayMoneyTotal(mgtOrderTotalThird.getActivityPayMoneyTotal());
mgtOrderTotal.setActivityUnPayMoneyTotal(mgtOrderTotalThird.getActivityOrderMoneyTotal().subtract(mgtOrderTotalThird.getActivityPayMoneyTotal()));
+
+ mgtOrderTotal.setThirdOrderTotal(mgtOrderTotalFour.getThirdOrderTotal());
+ mgtOrderTotal.setThirdOrderMoneyTotal(mgtOrderTotalFour.getThirdOrderMoneyTotal());
+ mgtOrderTotal.setThirdPayMoneyTotal(mgtOrderTotalFour.getThirdPayMoneyTotal());
+ mgtOrderTotal.setThirdUnPayMoneyTotal(mgtOrderTotalFour.getThirdOrderMoneyTotal().subtract(mgtOrderTotalFour.getThirdPayMoneyTotal()));
+
return mgtOrderTotal;
}
@@ -3113,6 +4085,22 @@
mgtShopOrderPageDto.setUserIds(mgtUserIdByKeywordVo.getUserIds());
}
}
+ //数据权限
+ List<Long> userId = remoteUserService.getScopeOfAuthorityUserId();
+ BoardMemberTotalDto boardMemberTotalDto = new BoardMemberTotalDto();
+ boardMemberTotalDto.setUserIds(userId);
+ List<Shop> shops = remoteShopService.getShopBySysUserIds(boardMemberTotalDto);
+ if (!shops.isEmpty()) {
+ List<Long> collect = shops.stream().map(Shop::getShopId).collect(Collectors.toList());
+ String join = collect.stream().map(Object::toString).collect(Collectors.joining(","));
+ String shopIds = mgtShopOrderPageDto.getShopIds();
+ if(StringUtils.isNotEmpty(shopIds)){
+ shopIds = shopIds + "," + join;
+ }else{
+ shopIds = join;
+ }
+ mgtShopOrderPageDto.setShopIds(shopIds);
+ }
List<MgtShopOrderPageVo> shopOrderPageVoList = orderMapper.pageMgtShopOrder(page, mgtShopOrderPageDto);
// 如果列表不为空
if (!shopOrderPageVoList.isEmpty()) {
@@ -3129,7 +4117,7 @@
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()));
+ String shopJoinedString = String.join(",", shopIdSet.stream().filter(Objects::nonNull).map(Object::toString).collect(Collectors.toList()));
MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto();
mgtBaseBathDto.setIds(shopJoinedString);
List<MgtSimpleShopVo> simpleShopVoList = remoteShopService.listShopSimpleVoByIds(mgtBaseBathDto).getData();
@@ -3140,7 +4128,7 @@
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();
+ List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(userJoinedString).getData();
userMap = simpleMemberVoList.stream()
.collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity()));
}
@@ -3191,8 +4179,6 @@
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属性
@@ -3222,6 +4208,7 @@
}
// 设置订单编号
mgtOrderDetailVo.setOrderNo(order.getOrderNo());
+ mgtOrderDetailVo.setOutTradeNo(order.getOutTradeNo());
// 设置订单来源
switch (order.getOrderFrom()) {
case 1:
@@ -3252,10 +4239,12 @@
mgtOrderDetailVo.setCancelTime(order.getCancelTime());
mgtOrderDetailVo.setOrderRemark(order.getOrderRemark());
mgtOrderDetailVo.setShopId(order.getShopId());
- if (shop != null) {
+ if (3 == order.getOrderStatus()) {
+ // 获取商店信息
+ Shop shop = remoteShopService.getShop(order.getShopId()).getData();
mgtOrderDetailVo.setShopName(shop.getShopName());
} else {
- mgtOrderDetailVo.setShopName("商户已被删除");
+ mgtOrderDetailVo.setShopName("");
}
mgtOrderDetailVo.setVerifyTime(order.getUseTime());
//获取支付记录
@@ -3272,9 +4261,13 @@
* @date 2023/6/18 17:20
*/
@Override
- public MgtBulletinBoardVo boardOrderTotal() {
- MgtBulletinBoardVo mgtBulletinBoardVo = orderMapper.boardOrderTotal();
- Integer activityUserTotal = orderMapper.activityUserTotal();
+ public MgtBulletinBoardVo boardOrderTotal(List<Long> userIds) {
+ BoardMemberTotalDto boardMemberTotalDto = new BoardMemberTotalDto();
+ boardMemberTotalDto.setUserIds(userIds);
+ List<Shop> shopList = remoteShopService.getShopBySysUserIds(boardMemberTotalDto);
+ List<Long> collect = shopList.stream().map(Shop::getShopId).collect(Collectors.toList());
+ MgtBulletinBoardVo mgtBulletinBoardVo = orderMapper.boardOrderTotal(collect);
+ Integer activityUserTotal = orderMapper.activityUserTotal(collect);
mgtBulletinBoardVo.setActivityUserTotal(activityUserTotal);
return mgtBulletinBoardVo;
}
@@ -3445,7 +4438,7 @@
*/
private List<MgtMapBigTotalVo> bigListRemoveNull(List<MgtMapBigTotalVo> MgtMapIntTotalVos) {
for (int i = 0; i < MgtMapIntTotalVos.size(); i++) {
- if (StringUtils.isBlank(MgtMapIntTotalVos.get(i).getMapKey())) {
+ if(null == MgtMapIntTotalVos.get(i).getMapKey() || MgtMapIntTotalVos.get(i).getMapKey().isEmpty()){
MgtMapIntTotalVos.remove(i);
}
}
@@ -3773,7 +4766,7 @@
userIdList.add(mgtBasePlatformDto.getUserId());
} else {
MgtUserIdByDept mgtUserIdByDept = new MgtUserIdByDept();
- mgtUserIdByDept.setDeptId(mgtBasePlatformDto.getUserId());
+ mgtUserIdByDept.setDeptId(mgtBasePlatformDto.getDeptId());
mgtUserIdByDept = remoteConfigService.getUserIdByDept(mgtUserIdByDept).getData();
userIdList = mgtUserIdByDept.getUserIdList();
}
@@ -3781,6 +4774,19 @@
mgtBasePlatformDto.setUserIdList(userIdList);
}
}
+ //数据权限
+ List<Long> userIds = remoteUserService.getScopeOfAuthorityUserId();
+ if(null != userIds){
+ List<Long> userIdList = mgtBasePlatformDto.getUserIdList();
+ if(null != userIdList){
+ userIdList.addAll(userIds);
+ }else{
+ userIdList = userIds;
+ }
+ mgtBasePlatformDto.setUserIdList(userIdList);
+ }
+
+
List<Long> shopIdList = new ArrayList<>();
if(mgtBasePlatformDto.getShopId()!=null){
shopIdList.add(mgtBasePlatformDto.getShopId());
@@ -3793,8 +4799,10 @@
MgtSimpleShopVo simpleShopVo;
HashSet<String> set = new HashSet<>();
// 遍历MgtMemberOrderPageVoList,获取shopId并添加到set中
- for (Long entity : shopIdList) {
- set.add(entity.toString());
+ if(null != shopIdList){
+ for (Long entity : shopIdList) {
+ set.add(entity.toString());
+ }
}
String joinedString = String.join(",", set);
MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto();
@@ -3835,15 +4843,26 @@
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();
+ List<SysUser> data = remoteUserService.getUsersByDeptId(mgtBasePlatformDto.getDeptId()).getData();
+ userIdList.addAll(data.stream().map(SysUser::getUserId).collect(Collectors.toList()));
}
if (!userIdList.isEmpty()) {
mgtBasePlatformDto.setUserIdList(userIdList);
}
}
+ //数据权限
+ List<Long> userIdList = mgtBasePlatformDto.getUserIdList();
+ List<Long> userIds = remoteUserService.getScopeOfAuthorityUserId();
+ if(null != userIds){
+ if(null != userIdList){
+ userIdList.addAll(userIds);
+ }else{
+ userIdList = userIds;
+ }
+ mgtBasePlatformDto.setUserIdList(userIdList);
+ }
+
+
MgtTotalOrderTotalVo mgtTotalOrderTotalVo = new MgtTotalOrderTotalVo();
mgtTotalOrderTotalVo.setOrderTotal(0);
mgtTotalOrderTotalVo.setOnlineTotal(0);
@@ -3852,6 +4871,13 @@
mgtTotalOrderTotalVo.setCycleTotal(0);
mgtTotalOrderTotalVo.setExperienceTotal(0);
mgtTotalOrderTotalVo.setServiceTotal(0);
+ mgtTotalOrderTotalVo.setItemTotal(0);
+ mgtTotalOrderTotalVo.setMeituan(0);
+ mgtTotalOrderTotalVo.setDouyin(0);
+ mgtTotalOrderTotalVo.setKuaishou(0);
+ mgtTotalOrderTotalVo.setMeituanAmount(new BigDecimal("0"));
+ mgtTotalOrderTotalVo.setDouyinAmount(new BigDecimal("0"));
+ mgtTotalOrderTotalVo.setKuaishouAmount(new BigDecimal("0"));
mgtTotalOrderTotalVo.setOrderMoney(new BigDecimal("0"));
mgtTotalOrderTotalVo.setOnlineMoney(new BigDecimal("0"));
mgtTotalOrderTotalVo.setOfflineMoney(new BigDecimal("0"));
@@ -3859,6 +4885,7 @@
mgtTotalOrderTotalVo.setCycleMoney(new BigDecimal("0"));
mgtTotalOrderTotalVo.setExperienceMoney(new BigDecimal("0"));
mgtTotalOrderTotalVo.setServiceMoney(new BigDecimal("0"));
+ mgtTotalOrderTotalVo.setItemMoney(new BigDecimal("0"));
mgtTotalOrderTotalVo.setOrderTotalKey(new String[0]);
mgtTotalOrderTotalVo.setOrderTotalValue(new Integer[0]);
mgtTotalOrderTotalVo.setOrderMoneyValue(new BigDecimal[0]);
@@ -3866,6 +4893,7 @@
mgtTotalOrderTotalVo.setGoodsTypeMoneyList(Lists.newArrayList());
mgtTotalOrderTotalVo.setGoodsRankList(Lists.newArrayList());
mgtTotalOrderTotalVo.setOrderFromRankList(Lists.newArrayList());
+
List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData();
if (mgtBasePlatformDto.getUserId() != null || StringUtils.isNotBlank(mgtBasePlatformDto.getShopProvinceCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopCityCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopAreaCode())) {
if(shopIdList==null||shopIdList.isEmpty()){
@@ -3882,11 +4910,17 @@
mgtTotalOrderTotalVo.setOrderTotal(totalOrderTotalVo.getOrderTotal());
mgtTotalOrderTotalVo.setOnlineTotal(totalOrderTotalVo.getOnlineTotal());
mgtTotalOrderTotalVo.setOfflineTotal(totalOrderTotalVo.getOfflineTotal());
- mgtTotalOrderTotalVo.setActivityTotal(0);
+ mgtTotalOrderTotalVo.setActivityTotal(totalOrderTotalVo.getActivityTotal());
mgtTotalOrderTotalVo.setOrderMoney(totalOrderTotalVo.getOrderMoney());
mgtTotalOrderTotalVo.setOnlineMoney(totalOrderTotalVo.getOnlineMoney());
mgtTotalOrderTotalVo.setOfflineMoney(totalOrderTotalVo.getOfflineMoney());
mgtTotalOrderTotalVo.setActivityMoney(totalOrderTotalVo.getActivityMoney());
+ mgtTotalOrderTotalVo.setMeituan(totalOrderTotalVo.getMeituan());
+ mgtTotalOrderTotalVo.setDouyin(totalOrderTotalVo.getDouyin());
+ mgtTotalOrderTotalVo.setKuaishou(totalOrderTotalVo.getKuaishou());
+ mgtTotalOrderTotalVo.setMeituanAmount(totalOrderTotalVo.getMeituanAmount());
+ mgtTotalOrderTotalVo.setDouyinAmount(totalOrderTotalVo.getDouyinAmount());
+ mgtTotalOrderTotalVo.setKuaishouAmount(totalOrderTotalVo.getKuaishouAmount());
//获取商品分类销售数据
List<MgtMapTotalPlusVo> MgtMapIntTotalVoGoodsType = orderMapper.listPlTotalOrderTotalGoodsType(mgtBasePlatformDto);
List<MgtMapIntTotalVo> goodsTypeTotalList = new ArrayList<>();
@@ -3895,6 +4929,8 @@
mgtTotalOrderTotalVo.setCycleMoney(BigDecimal.ZERO);
mgtTotalOrderTotalVo.setServiceTotal(0);
mgtTotalOrderTotalVo.setServiceMoney(BigDecimal.ZERO);
+ mgtTotalOrderTotalVo.setItemTotal(0);
+ mgtTotalOrderTotalVo.setItemMoney(BigDecimal.ZERO);
mgtTotalOrderTotalVo.setExperienceTotal(0);
mgtTotalOrderTotalVo.setExperienceMoney(BigDecimal.ZERO);
if (MgtMapIntTotalVoGoodsType != null && MgtMapIntTotalVoGoodsType.size() > 0) {
@@ -3931,6 +4967,8 @@
} else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) {
mgtMapIntTotalVo.setMapKey("单品");
mgtMapBigTotalVo.setMapKey("单品");
+ mgtTotalOrderTotalVo.setItemTotal(mgtTotalOrderTotalVo.getItemTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
+ mgtTotalOrderTotalVo.setItemMoney(mgtTotalOrderTotalVo.getItemMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()));
noGoods = false;
}
goodsTypeTotalList.add(mgtMapIntTotalVo);
@@ -3989,8 +5027,33 @@
//获取来源销售排名
List<MgtMapBigTotalVo> orderFromList = orderMapper.listPlTotalOrderTotalOrderFrom(mgtBasePlatformDto);
if (orderFromList != null && orderFromList.size() > 0) {
+
+ MgtMapBigTotalVo duoyin = new MgtMapBigTotalVo();
+ duoyin.setMapKey("抖音");
+ duoyin.setMapValue(totalOrderTotalVo.getDouyinAmount());
+
+ MgtMapBigTotalVo kauishou = new MgtMapBigTotalVo();
+ kauishou.setMapKey("快手");
+ kauishou.setMapValue(totalOrderTotalVo.getKuaishouAmount());
+
+ MgtMapBigTotalVo meituan = new MgtMapBigTotalVo();
+ meituan.setMapKey("美团");
+ meituan.setMapValue(totalOrderTotalVo.getMeituanAmount());
+ orderFromList.add(duoyin);
+ orderFromList.add(kauishou);
+ orderFromList.add(meituan);
orderFromList = bigListRemoveNull(orderFromList);
- mgtTotalOrderTotalVo.setOrderFromRankList(orderFromList);
+
+
+ //排行
+ List<MgtMapBigTotalVo> sortedList = orderFromList.stream()
+ // 按 mapValue 降序排序,处理 null 值(若 mapValue 可能为 null)
+ .sorted(Comparator.comparing(
+ MgtMapBigTotalVo::getMapValue,
+ Comparator.nullsLast(BigDecimal::compareTo).reversed()
+ ))
+ .collect(Collectors.toList());
+ mgtTotalOrderTotalVo.setOrderFromRankList(sortedList);
}
//订单分布
//日期全部时固定为5天
@@ -4065,6 +5128,18 @@
if(mgtBasePlatformDto.getActivityFrom()!=null&&mgtBasePlatformDto.getActivityFrom()==2){
return totalActivityTotalVo;
}
+
+ //数据权限
+ List<Long> userIds = remoteUserService.getScopeOfAuthorityUserId();
+ if(null != userIds){
+ List<Long> userIdList = mgtBasePlatformDto.getUserIdList();
+ if(null == userIdList){
+ userIdList = new ArrayList<>();
+ }
+ userIdList.addAll(userIds);
+ mgtBasePlatformDto.setUserIdList(userIdList);
+ }
+
List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData();
if (StringUtils.isNotBlank(mgtBasePlatformDto.getShopProvinceCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopCityCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopAreaCode())) {
if(shopIdList==null||shopIdList.isEmpty()){
@@ -4076,6 +5151,7 @@
shopIdList.add(mgtBasePlatformDto.getShopId());
}
mgtBasePlatformDto.setShopIdList(shopIdList);
+
//获取基础统计
MgtPlTotalActivityTotalVo mgtTotalActivityTotalVo = orderMapper.getPlTotalActivityTotal(mgtBasePlatformDto);
totalActivityTotalVo.setOrderTotal(mgtTotalActivityTotalVo.getOrderTotal());
@@ -4182,8 +5258,10 @@
}
HashSet<String> set = new HashSet<>();
// 遍历MgtMemberOrderPageVoList,获取shopId并添加到set中
- for (Long shopId : mgtBasePlatformDto.getShopIdList()) {
- set.add(shopId.toString());
+ if(null != mgtBasePlatformDto.getShopIdList()){
+ for (Long shopId : mgtBasePlatformDto.getShopIdList()) {
+ set.add(shopId.toString());
+ }
}
// 将set中的shopId转换为逗号分隔的字符串
String joinedString = String.join(",", set);
@@ -4252,52 +5330,6 @@
totalActivityTotalVo.setOrderTotalValue(orderTotalValue);
totalActivityTotalVo.setOrderMoneyValue(orderMoneyValue);
}
-
- //参与人数 2023-09-06 另开接口
- /*List<MgtMapIntTotalVo> joinList = orderMapper.getMgtActivityMemberTotal(mgtBasePlatformDto);
- // 将查询结果转为Map
- Map<String, Integer> mgtMapIntTotalVoMap = new HashMap<>();
- if (joinList != null && !joinList.isEmpty()) {
- mgtMapIntTotalVoMap = joinList.stream()
- .collect(Collectors.toMap(MgtMapIntTotalVo::getMapKey, MgtMapIntTotalVo::getMapValue));
- }
- // 获取日期范围
- List<String> dateList = getDateRange(mgtBasePlatformDto.getStartDate(), mgtBasePlatformDto.getEndDate());
- int size = dateList.size();
- // 创建日期和成员总数的数组
- String[] joinMemberTotalKey = new String[size];
- Integer[] joinMemberTotalValue = new Integer[size];
- // 遍历日期列表,设置日期和成员总数的数组
- String str;
- Integer value;
- for (int i = 0; i < size; i++) {
- str = dateList.get(i);
- joinMemberTotalKey[i] = str;
- value = mgtMapIntTotalVoMap.get(str);
- joinMemberTotalValue[i] = (value != null) ? value : 0;
- }
- totalActivityTotalVo.setJoinMemberTotalKey(joinMemberTotalKey);
- totalActivityTotalVo.setJoinMemberTotalValue(joinMemberTotalValue);
- //获客人数
- List<MgtMapIntTotalVo> getList = orderMapper.getMgtActivityGetMemberTotal(mgtBasePlatformDto);
- // 将查询结果转为Map
- Map<String, Integer> getMemberMap = new HashMap<>();
- if (getList != null && !getList.isEmpty()) {
- getMemberMap = getList.stream()
- .collect(Collectors.toMap(MgtMapIntTotalVo::getMapKey, MgtMapIntTotalVo::getMapValue));
- }
- // 创建日期和成员总数的数组
- String[] getMemberTotalKey = new String[size];
- Integer[] getMemberTotalValue = new Integer[size];
- // 遍历日期列表,设置日期和成员总数的数组
- for (int i = 0; i < size; i++) {
- str = dateList.get(i);
- getMemberTotalKey[i] = str;
- value = getMemberMap.get(str);
- getMemberTotalValue[i] = (value != null) ? value : 0;
- }
- totalActivityTotalVo.setGetMemberTotalKey(getMemberTotalKey);
- totalActivityTotalVo.setGetMemberTotalValue(getMemberTotalValue);*/
return totalActivityTotalVo;
}
@@ -4313,24 +5345,6 @@
if(mgtBasePlatformDto.getActivityFrom()!=null&&mgtBasePlatformDto.getActivityFrom()==2){
return totalActivityTotalVo;
}
- /*if(mgtBasePlatformDto.getActivityType()!=null&&mgtBasePlatformDto.getActivityType()!=1){
- return new MgtPlTotalActivityTotalVo();
- }*/
- //获取需要关联的用户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();
log.info("shopIdList1-----"+shopIdList.toString());
@@ -4345,6 +5359,17 @@
if(mgtBasePlatformDto.getShopId()!=null){
shopIdList = new ArrayList<>();
shopIdList.add(mgtBasePlatformDto.getShopId());
+ }
+
+ List<Long> userIds = remoteUserService.getScopeOfAuthorityUserId();
+ BoardMemberTotalDto boardMemberTotalDto = new BoardMemberTotalDto();
+ boardMemberTotalDto.setUserIds(userIds);
+ List<Shop> shopList = remoteShopService.getShopBySysUserIds(boardMemberTotalDto);
+ List<Long> collect = shopList.stream().map(Shop::getShopId).collect(Collectors.toList());
+ if(null != shopIdList){
+ shopIdList.addAll(collect);
+ }else{
+ shopIdList = collect;
}
mgtBasePlatformDto.setShopIdList(shopIdList);
if(mgtBasePlatformDto.getAgeType()!=null){
@@ -4398,24 +5423,6 @@
if(mgtBasePlatformDto.getActivityFrom()!=null&&mgtBasePlatformDto.getActivityFrom()==2){
return totalActivityTotalVo;
}
- /*if(mgtBasePlatformDto.getActivityType()!=null&&mgtBasePlatformDto.getActivityType()!=1){
- return new MgtPlTotalActivityTotalVo();
- }*/
- //获取需要关联的用户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();
if (StringUtils.isNotBlank(mgtBasePlatformDto.getShopProvinceCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopCityCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopAreaCode())) {
if(shopIdList==null||shopIdList.isEmpty()){
@@ -4425,6 +5432,17 @@
if(mgtBasePlatformDto.getShopId()!=null){
shopIdList = new ArrayList<>();
shopIdList.add(mgtBasePlatformDto.getShopId());
+ }
+ //数据权限
+ List<Long> userIds = remoteUserService.getScopeOfAuthorityUserId();
+ BoardMemberTotalDto boardMemberTotalDto = new BoardMemberTotalDto();
+ boardMemberTotalDto.setUserIds(userIds);
+ List<Shop> shopList = remoteShopService.getShopBySysUserIds(boardMemberTotalDto);
+ List<Long> collect = shopList.stream().map(Shop::getShopId).collect(Collectors.toList());
+ if(null != shopIdList){
+ shopIdList.addAll(collect);
+ }else{
+ shopIdList = collect;
}
mgtBasePlatformDto.setShopIdList(shopIdList);
if(mgtBasePlatformDto.getAgeType()!=null){
@@ -4514,7 +5532,11 @@
// 创建MerVerifyCouponVo对象
MerVerifyCouponVo merVerifyCouponVo = new MerVerifyCouponVo();
// 调用remoteCouponService的getVerifyCoupon方法获取MerVerifyCouponGetVo对象
- MerVerifyCouponGetVo verifyCouponGetVo = remoteCouponService.getVerifyCoupon(verifyCode).getData();
+ R<MerVerifyCouponGetVo> verifyCoupon = remoteCouponService.getVerifyCoupon(Long.valueOf(verifyCode));
+ if(verifyCoupon.getCode() != 200){
+ throw new ServiceException(verifyCoupon.getMsg());
+ }
+ MerVerifyCouponGetVo verifyCouponGetVo = verifyCoupon.getData();
MemberCoupon memberCoupon = verifyCouponGetVo.getMemberCoupon();
// 检查优惠券状态
int couponStatus = memberCoupon.getCouponStatus();
@@ -4607,17 +5629,17 @@
if (memberGiftRecord.getGiftFrom() == 1) {
BirthdayCard birthdayCard = remoteMemberService.getBirthdayCard().getData();
//判断生日活动状态
- if(birthdayCard!=null&&birthdayCard.getCardStatus()==1){
+ if (birthdayCard != null && birthdayCard.getCardStatus() == 1) {
shop = remoteShopService.getShop(shopId).getData();
//判断指定区域全部店铺
- if(birthdayCard.getAreaFlag()==2&&birthdayCard.getShopFlag()==1&&!StringUtils.checkString(birthdayCard.getDesignatedArea(),shop.getShopCityCode())){
+ 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())){
+ if (birthdayCard.getShopFlag() == 2 && !StringUtils.checkString(birthdayCard.getApplicableShop(), shopId.toString())) {
throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
}
- }else{
+ } else {
throw new ServiceException(AppErrorConstant.BIRTHDAY_CARD_ERROR);
}
}
@@ -4625,16 +5647,20 @@
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("平台生日卡");
+ if (1 == memberGiftRecord.getPrizeFrom()) {
+ if (memberGiftRecord.getGiftFrom() == 1) {
+ merVerifyAwardVo.setGiftFrom("平台生日卡");
+ } else {
+ merVerifyAwardVo.setGiftFrom("商户生日卡");
+ }
} else {
- merVerifyAwardVo.setGiftFrom("商户生日卡");
+ merVerifyAwardVo.setGiftFrom("平台抽奖");
}
merVerifyAwardVo.setGiftType(memberGiftRecord.getGiftType());
- //礼物类型1优惠券2商品3现金4实物
+ //礼物类型1优惠券2商品3现金4实物5积分
switch (memberGiftRecord.getGiftType()) {
case 1:
merVerifyAwardVo.setGiftName(memberGiftRecord.getCouponName());
@@ -5017,7 +6043,7 @@
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();
+ List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(userJoinedString).getData();
userMap = simpleMemberVoList.stream()
.collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity()));
}
@@ -5059,12 +6085,13 @@
*/
@Override
@Transactional
- @GlobalTransactional(rollbackFor = Exception.class)
- public void autoCancelOrder(String orderId) {
+// @GlobalTransactional(rollbackFor = Exception.class) todo 放开分布式事务注解
+ public void autoCancelOrder(String orderId, Integer cancelType) {
//更新订单信息
Order order = this.getById(orderId);
order.setOrderStatus(0);
order.setCancelTime(new Date());
+ order.setCancelType(cancelType);
this.saveOrUpdate(order);
//活动订单回退库存
if (order.getOrderFrom() == 2) {
@@ -5077,6 +6104,9 @@
try {
redissonLock.lock(30, TimeUnit.SECONDS);
Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId());
+ if(null == surpNum){
+ surpNum = 0;
+ }
redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId(), surpNum + orderGoods.getBuyNum());
} finally {
redissonLock.unlock();
@@ -5126,10 +6156,9 @@
*/
@Override
@Transactional
- @GlobalTransactional(rollbackFor = Exception.class)
+// @GlobalTransactional(rollbackFor = Exception.class) todo 放开分布式事务注解
public void payBack(PartnerTransactionsResult transaction, BigDecimal feeAmount) {
log.info("订单支付回调---"+transaction.toString());
- // Order order = this.getById(orderId);
// 更新订单状态 outTradeNo
String outTradeNo = transaction.getOutTradeNo();
Order order = this.getByOutTradeNo(outTradeNo);
@@ -5187,31 +6216,9 @@
}
//更新商品统计
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());
- // 如果存在积分兑换比例,则计算积分 2023-09-14改为核销后获取积分
- /*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());
- if(integral>0){
- memberTotalChangeDto.setChangeIntegral(integral);
- memberTotalChangeDto.setTypeIntegral(1);
- memberTotalChangeDto.setOrderId(orderId);
- memberTotalChangeDto.setOrderNo(order.getOrderNo());
- }
- }*/
// 设置会员支付金额和支付时间
memberTotalChangeDto.setPayMoney(order.getPayMoney());
memberTotalChangeDto.setPayTime(new Date());
@@ -5295,12 +6302,13 @@
*/
@Override
@Transactional
- @GlobalTransactional(rollbackFor = Exception.class)
- public void refundOrder(String orderId) {
+// @GlobalTransactional(rollbackFor = Exception.class) todo 放开分布式事务注解
+ public void refundOrder(String orderId, Integer cancelType) {
// 更新订单信息
Order order = this.getById(orderId);
order.setOrderStatus(0);
order.setCancelTime(new Date());
+ order.setCancelType(cancelType);
this.saveOrUpdate(order);
OrderRefund orderRefund = new OrderRefund();
String refundId = IdUtils.simpleUUID();
@@ -5338,6 +6346,9 @@
try {
redissonLock.lock(30, TimeUnit.SECONDS);
Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId());
+ if(null == surpNum){
+ surpNum = 0;
+ }
redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId(), surpNum + orderGoods.getBuyNum());
} finally {
redissonLock.unlock();
@@ -5398,27 +6409,9 @@
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());
- // 如果存在积分兑换比例,则计算积分 2023-09-14改为核销后获取积分
- /*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());
// 根据商品存在状态,设置会员统计信息
@@ -6054,61 +7047,39 @@
}
}
- @GlobalTransactional(rollbackFor = Exception.class)
- 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());
-
- }
- }
- }
+ /**
+ * 后台取消订单
+ * 订单状态变为已取消 不退款
+ * @param dto
+ */
+ @Override
+ public R cancelOrderBySys(CancelOrderDTO dto) {
+ Order order = this.getById(dto.getOrderId());
+ // 订单状态-1.删除 0.已取消 1.待支付 2.待核销 3.已完成
+ if(null == order || order.getDelFlag() == -1){
+ return R.fail("订单不存在");
}
+
+ if (order.getOrderStatus() == 0) {
+ return R.fail(AppErrorConstant.CANCEL_CANCEL_ORDER);
+ } else if (order.getOrderStatus() == 1) {
+ //删除待支付超时取消延时任务
+ redisService.deleteObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + order.getOrderId());
+ remoteConfigService.deleteDelayTask(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode()+"-"+order.getOrderId());
+ order.setOrderStatus(0);
+ order.setCancelTime(new Date());
+ order.setCancelType(1);
+ this.saveOrUpdate(order);
+ } else if (order.getOrderStatus() == 2) {
+ // 2.待核销
+ order.setOrderStatus(0);
+ order.setCancelTime(new Date());
+ order.setCancelType(1);
+ this.saveOrUpdate(order);
+ } else {
+ return R.fail(AppErrorConstant.CANCEL_ERROR_ORDER);
+ }
+ return R.ok();
}
/**
@@ -6150,7 +7121,7 @@
// 获取用户列表
MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto();
mgtBaseBathDto.setIds(userIdSj.toString());
- List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(mgtBaseBathDto).getData();
+ List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(userIdSj.toString()).getData();
// 将用户列表转换为Map,以便根据用户ID快速查找用户信息
Map<Long, MgtSimpleMemberVo> userMap = simpleMemberVoList.stream()
.collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity()));
@@ -6231,4 +7202,221 @@
ProfitSharingResult profitSharingResult = wxService.getEcommerceService().queryProfitSharing(request);
return profitSharingResult;
}
+
+ @Override
+ public List<String> getActivityOrderGoods(String activityId) {
+ List<Order> orders = this.baseMapper.selectList(new QueryWrapper<Order>()
+ .eq("del_flag", 0)
+ .in("order_status", Arrays.asList(1, 2, 3))
+ .eq("activity_id", activityId)
+ );
+ if(orders.size() > 0){
+ List<String> collect = orders.stream().map(Order::getOrderId).collect(Collectors.toList());
+ List<OrderGoods> list = orderGoodsService.list(new QueryWrapper<OrderGoods>()
+ .eq("del_flag", 0)
+ .in("order_id", collect)
+ );
+ return list.stream().map(OrderGoods::getGoodsId).collect(Collectors.toList());
+ }
+ return new ArrayList<>();
+ }
+
+ @Override
+ public R refundOrderBySys(CancelOrderDTO dto) {
+ Order order = this.getById(dto.getOrderId());
+ // 订单状态-1.删除 0.已取消 1.待支付 2.待核销 3.已完成
+ if(null == order || order.getDelFlag() == -1){
+ return R.fail("订单不存在");
+ }
+ if (order.getOrderStatus() == 0) {
+ return R.fail(AppErrorConstant.CANCEL_CANCEL_ORDER);
+ }else if (order.getOrderStatus() == 1) {
+ //删除待支付超时取消延时任务
+ redisService.deleteObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + order.getOrderId());
+ remoteConfigService.deleteDelayTask(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode()+"-"+ order.getOrderId());
+ this.autoCancelOrder( order.getOrderId(), 1);
+ } else if (order.getOrderStatus() == 2) {
+ // 2.待核销 -> 订单退款
+ this.refundOrder( order.getOrderId(), 1);
+ } else {
+ return R.fail("已核销订单不能退款");
+ }
+ return R.ok();
+
+ }
+
+// @GlobalTransactional(rollbackFor = Exception.class) todo 放开分布式事务注解
+ private void autoTimeCancelOrder(Order order) {
+ String orderId = order.getOrderId();
+ order.setOrderStatus(0);
+ order.setCancelTime(new Date());
+ order.setCancelType(1);
+ 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());
+ if(null == surpNum){
+ surpNum = 0;
+ }
+ 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());
+
+ }
+ }
+ }
+ }
+ }
+
+ @Override
+ public List<MgtThirdOrderPageVo> pageMgtThirdOrder(Page<MgtThirdOrderPageVo> page, MgtThirdOrderPageDto dto) {
+ //如果区域代码不为null获取对应的商户id
+ if (StringUtils.isNotBlank(dto.getKeyword()) || StringUtils.isNotBlank(dto.getShopProvinceCode()) || StringUtils.isNotBlank(dto.getShopCityCode()) || StringUtils.isNotBlank(dto.getShopAreaCode())) {
+ MgtShopIdByCodeDto mgtShopIdByCodeDto = new MgtShopIdByCodeDto();
+ mgtShopIdByCodeDto.setShopProvinceCode(dto.getShopProvinceCode());
+ mgtShopIdByCodeDto.setShopCityCode(dto.getShopCityCode());
+ mgtShopIdByCodeDto.setShopAreaCode(dto.getShopAreaCode());
+ MgtShopIdByCodeVo mgtShopIdByCodeVo = remoteShopService.getShopIdByCode(mgtShopIdByCodeDto).getData();
+ if (StringUtils.isNotBlank(mgtShopIdByCodeVo.getShopIds())) {
+ dto.setShopIds(mgtShopIdByCodeVo.getShopIds());
+ }
+ }
+ //如果关键词不为null获取对应的用户id
+ if (StringUtils.isNotBlank(dto.getKeyword())) {
+ MgtUserIdByKeywordDto mgtUserIdByKeywordDto = new MgtUserIdByKeywordDto();
+ mgtUserIdByKeywordDto.setKeyword(dto.getKeyword());
+ MgtUserIdByKeywordVo mgtUserIdByKeywordVo = remoteMemberService.getUserIdByKeyword(mgtUserIdByKeywordDto).getData();
+ if (StringUtils.isNotBlank(mgtUserIdByKeywordVo.getUserIds())) {
+ dto.setUserIds(mgtUserIdByKeywordVo.getUserIds());
+ }
+ }
+ //数据权限
+ List<Long> userId = remoteUserService.getScopeOfAuthorityUserId();
+ BoardMemberTotalDto boardMemberTotalDto = new BoardMemberTotalDto();
+ boardMemberTotalDto.setUserIds(userId);
+ List<Shop> shops = remoteShopService.getShopBySysUserIds(boardMemberTotalDto);
+ if (!shops.isEmpty()) {
+ List<Long> collect = shops.stream().map(Shop::getShopId).collect(Collectors.toList());
+ String join = collect.stream().map(Object::toString).collect(Collectors.joining(","));
+ String shopIds = dto.getShopIds();
+ if(StringUtils.isNotEmpty(shopIds)){
+ shopIds = shopIds + "," + join;
+ }else{
+ shopIds = join;
+ }
+ dto.setShopIds(shopIds);
+ }
+
+ // 从数据库中获取第三方订单列表
+ List<MgtThirdOrderPageVo> thirdOrderPageVoList = orderMapper.pageMgtThirdOrder(page, dto);
+ // 如果列表不为空
+ if (!thirdOrderPageVoList.isEmpty()) {
+ // 定义变量
+ HashSet<Long> shopIdSet = new HashSet<>();
+ BigDecimal zeroBig = new BigDecimal("0.00");
+ // 遍历列表,获取店铺 ID 和用户 ID
+ for (MgtThirdOrderPageVo mgtActivityOrderPageVo : thirdOrderPageVoList) {
+ if(mgtActivityOrderPageVo.getShopId()!=null){
+ shopIdSet.add(mgtActivityOrderPageVo.getShopId());
+ }
+ }
+ // 将店铺 ID 和用户 ID 转换为逗号分隔的字符串
+ 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();
+ Map<Long, MgtSimpleShopVo> shopMap = simpleShopVoList.stream()
+ .collect(Collectors.toMap(MgtSimpleShopVo::getShopId, Function.identity()));
+ mgtBaseBathDto = new MgtBaseBathDto();
+ // 遍历列表,设置店铺名称
+ for (MgtThirdOrderPageVo mgtActivityOrderPageVo : thirdOrderPageVoList) {
+ if(mgtActivityOrderPageVo.getShopId()!=null){
+ MgtSimpleShopVo mgtSimpleShopVo = shopMap.get(mgtActivityOrderPageVo.getShopId());
+ mgtActivityOrderPageVo.setShopName(null == mgtSimpleShopVo ? "" : mgtSimpleShopVo.getShopName());
+ }
+ }
+ }
+
+ return thirdOrderPageVoList;
+
+ }
+
+ @Override
+ public MgtPlTotalThirdOrderStaticsVO getPlTotalThirdOrderStatics(MgtBasePlatformDto mgtBasePlatformDto) {
+ MgtPlTotalThirdOrderStaticsVO vo = new MgtPlTotalThirdOrderStaticsVO();
+ //数据权限
+ List<Long> userIdList = mgtBasePlatformDto.getUserIdList();
+ List<Long> userIds = remoteUserService.getScopeOfAuthorityUserId();
+ if(null != userIds){
+ if(null != userIdList){
+ userIdList.addAll(userIds);
+ }else{
+ userIdList = userIds;
+ }
+ mgtBasePlatformDto.setUserIdList(userIdList);
+ }
+ List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData();
+ if (mgtBasePlatformDto.getUserId() != null || StringUtils.isNotBlank(mgtBasePlatformDto.getShopProvinceCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopCityCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopAreaCode())) {
+ if(shopIdList==null||shopIdList.isEmpty()){
+ return vo;
+ }
+ }
+ if(mgtBasePlatformDto.getShopId()!=null){
+ shopIdList = new ArrayList<>();
+ shopIdList.add(mgtBasePlatformDto.getShopId());
+ }
+ mgtBasePlatformDto.setShopIdList(shopIdList);
+ // 从数据库中获取第三方订单统计
+ DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+ mgtBasePlatformDto.setStartTime(LocalDate.parse(mgtBasePlatformDto.getStartDate(), dateFormatter)
+ .atStartOfDay());
+ mgtBasePlatformDto.setEndTime(LocalDate.parse(mgtBasePlatformDto.getEndDate(), dateFormatter)
+ .atTime(LocalTime.MAX));
+ vo = orderMapper.getPlTotalThirdOrderStatics(mgtBasePlatformDto);
+ return vo;
+ }
+
+ @Override
+ public StaticsShopMgtGoodsVO getGoodsSellStatic(List<String> goodsIdList) {
+ return orderGoodsService.getGoodsSellStatic(goodsIdList);
+ }
}
--
Gitblit v1.7.1