From 569ccbaa7bd63768ed5efada1f0c9967264782d4 Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期三, 30 八月 2023 18:36:14 +0800
Subject: [PATCH] bug
---
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java | 1949 ++++++++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 1,546 insertions(+), 403 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 4b67f95..a38a79f 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -1,13 +1,20 @@
package com.ruoyi.order.service.impl.order;
+import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.github.binarywang.wxpay.bean.ecommerce.PartnerTransactionsResult;
-import com.github.binarywang.wxpay.bean.ecommerce.RefundNotifyResult;
+import com.github.binarywang.wxpay.bean.ecommerce.*;
+import com.github.binarywang.wxpay.bean.ecommerce.enums.TradeTypeEnum;
import com.github.binarywang.wxpay.bean.profitsharingV3.ProfitSharingNotifyResult;
+import com.github.binarywang.wxpay.config.WxPayConfig;
+import com.github.binarywang.wxpay.exception.WxPayException;
+import com.github.binarywang.wxpay.service.WxPayService;
+import com.google.common.base.Joiner;
+import com.google.gson.Gson;
+import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.utils.StringUtils;
@@ -15,6 +22,7 @@
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.common.security.utils.CodeFactoryUtil;
import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.order.config.WxPayConfiguration;
import com.ruoyi.order.domain.dto.*;
import com.ruoyi.order.domain.pojo.account.OrderPayment;
import com.ruoyi.order.domain.pojo.account.OrderRefund;
@@ -41,22 +49,25 @@
import com.ruoyi.system.api.domain.poji.goods.Goods;
import com.ruoyi.system.api.domain.poji.goods.GoodsFile;
import com.ruoyi.system.api.domain.poji.goods.ShopGoods;
+import com.ruoyi.system.api.domain.poji.member.BirthdayCard;
import com.ruoyi.system.api.domain.poji.member.Member;
import com.ruoyi.system.api.domain.poji.member.MemberCoupon;
import com.ruoyi.system.api.domain.poji.member.MemberGiftRecord;
import com.ruoyi.system.api.domain.poji.shop.Shop;
+import com.ruoyi.system.api.domain.poji.shop.ShopProportionVo;
import com.ruoyi.system.api.domain.poji.sys.SysUser;
import com.ruoyi.system.api.domain.vo.*;
import com.ruoyi.system.api.service.*;
import lombok.extern.slf4j.Slf4j;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
@@ -118,11 +129,11 @@
@Resource
private PayRecordService payRecordService;
- @Autowired
+ @Resource
private RedissonClient redissonClient;
- /*@Autowired
- private WxPayService wxService;*/
+ @Resource
+ private WxPayService wxService;
@Resource
private PaymentMessageService paymentMessageService;
@@ -146,6 +157,10 @@
@Override
public AppSureOrderVo buyGoods(AppSureOrderDto appSureOrderDto) {
Long userId = appSureOrderDto.getUserId();
+ Shop shop = remoteShopService.getShop(appSureOrderDto.getShopId()).getData();
+ if(shop!=null&&shop.getShopStatus()!=1){
+ throw new ServiceException(AppErrorConstant.SHOP_CLOSED);
+ }
// 初始化订单对象
AppSureOrderVo appSureOrderVo = new AppSureOrderVo();
// 初始化订单商品列表
@@ -163,7 +178,7 @@
.collect(Collectors.toMap(Goods::getGoodsId, Function.identity()));
Boolean haveDeposit = false;
for (Goods goods : goodsList) {
- if (goods.getSubscription() != null && goods.getSubscription().compareTo(BigDecimal.ZERO) > 0) {
+ if (goods.getSubscriptionFlag()==1&&goods.getSubscription() != null && goods.getSubscription().compareTo(BigDecimal.ZERO) > 0) {
haveDeposit = true;
}
}
@@ -218,6 +233,7 @@
appSureOrderGoodsVo.setGoodsName(goods.getGoodsName());
appSureOrderGoodsVo.setGoodsIntroduction(goods.getGoodsIntroduction());
appSureOrderGoodsVo.setGoodsType(goods.getGoodsType());
+ appSureOrderGoodsVo.setGoodsTag(goods.getGoodsTags());
// 获取商品图片
goodsFile = remoteGoodsService.getGoodsFile(goodsId).getData();
appSureOrderGoodsVo.setGoodsPicture(goodsFile.getFileUrl());
@@ -274,9 +290,9 @@
appSureOrderGoodsVo.setGoodsTotalPrice(goodsTotalPrice);
appSureOrderGoodsVo.setCouponDiscount(discountMoney);
appSureOrderGoodsVo.setGoodsRealPrice(goodsRealPrice);
- // 获取商品押金
+ // 获取商品订金
goodsDeposit = goods.getSubscription();
- if (goodsDeposit != null && goodsDeposit.compareTo(BigDecimal.ZERO) > 0) {
+ if (goods.getSubscriptionFlag()==1 && goodsDeposit != null && goodsDeposit.compareTo(BigDecimal.ZERO) > 0) {
goodsDeposit = goodsDeposit.multiply(buyNumBig);
} else {
if (haveDeposit) {
@@ -311,15 +327,19 @@
for (AppMemberCouponVo entity : appMemberCouponVoList) {
if (StringUtils.isBlank(entity.getRelGoodsIds()) || entity.getRelGoodsIds().contains(sureOrderGoodsVo.getGoodsId())) {
if (entity.getCouponType() == 1) {
- if (entity.getMoneyThreshold().compareTo(sureOrderGoodsVo.getGoodsTotalPrice()) < 0 && entity.getDiscountMoney().compareTo(sureOrderGoodsVo.getGoodsTotalPrice()) < 0) {
+ if (entity.getMoneyThreshold().compareTo(sureOrderGoodsVo.getGoodsTotalPrice()) <= 0) {
appGoodsMemberCouponVoList.add(entity);
}
+ /*if (entity.getMoneyThreshold().compareTo(sureOrderGoodsVo.getGoodsTotalPrice()) < 0 && entity.getDiscountMoney().compareTo(sureOrderGoodsVo.getGoodsTotalPrice()) < 0) {
+ appGoodsMemberCouponVoList.add(entity);
+ }*/
} else if (entity.getCouponType() == 2) {
appGoodsMemberCouponVoList.add(entity);
} else if (entity.getCouponType() == 3) {
- if (entity.getDiscountMoney().compareTo(sureOrderGoodsVo.getGoodsTotalPrice()) < 0) {
+ appGoodsMemberCouponVoList.add(entity);
+ /*if (entity.getDiscountMoney().compareTo(sureOrderGoodsVo.getGoodsTotalPrice()) < 0) {
appGoodsMemberCouponVoList.add(entity);
- }
+ }*/
}
}
@@ -399,6 +419,10 @@
@Override
public AppPanicBuyVo panicBuyGoods(AppPanicBuyDto appPanicBuyDto) {
Long userId = appPanicBuyDto.getUserId();
+ Shop shop = remoteShopService.getShop(appPanicBuyDto.getShopId()).getData();
+ if(shop!=null&&shop.getShopStatus()!=1){
+ throw new ServiceException(AppErrorConstant.SHOP_CLOSED);
+ }
AppPanicBuyVo appPanicBuyVo = new AppPanicBuyVo();
String activityId = appPanicBuyDto.getActivityId();
String goodsId = appPanicBuyDto.getGoodsId();
@@ -443,6 +467,7 @@
appPanicBuyVo.setGoodsName(goods.getGoodsName());
appPanicBuyVo.setGoodsIntroduction(goods.getGoodsIntroduction());
appPanicBuyVo.setGoodsType(goods.getGoodsType());
+ appPanicBuyVo.setGoodsTag(goods.getGoodsTags());
//商品图片
goodsFile = remoteGoodsService.getGoodsFile(goodsId).getData();
appPanicBuyVo.setGoodsPicture(goodsFile.getFileUrl());
@@ -544,6 +569,7 @@
BigDecimal orderPayMoney = new BigDecimal("0.00");
// 创建订单ID和订单号
String orderId = IdUtils.simpleUUID();
+
String orderNo = CodeFactoryUtil.getShopOrderNo();
OrderGoods orderGoods;
String orderGoodsId;
@@ -614,6 +640,10 @@
discountMoney = appMemberCouponVo.getDiscountMoney();
goodsRealPrice = goodsTotalPrice.subtract(discountMoney);
useCoupon = 1;
+ }
+ if(goodsRealPrice.compareTo(BigDecimal.ZERO)<0){
+ goodsRealPrice = BigDecimal.ZERO;
+ discountMoney = goodsTotalPrice;
}
}
memberCouponSJ.add(memberCouponId);
@@ -694,12 +724,14 @@
order.setDiscountMoney(couponDiscount);
order.setReceivableMoney(orderPayMoney);
order.setReceivableDeposit(orderPayDeposit);
+ order.setOfflinePayMoney(BigDecimal.ZERO);
// 根据支付类型计算支付金额
if (appPlaceOrderDto.getPayType() == 1) {
order.setPayMoney(orderPayMoney);
order.setOnlinePayMoney(orderPayMoney);
appPlaceOrderVo.setPayMoney(orderPayMoney);
appPlaceOrderVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getPayMoney()));
+ order.setChangeReceivableMoney(orderGoodsMoney.subtract(couponDiscount));
order.setPayType(1);
order.setCloseFlag(1);
} else if (appPlaceOrderDto.getPayType() == 2) {
@@ -707,13 +739,16 @@
order.setOnlinePayMoney(orderPayDeposit);
appPlaceOrderVo.setPayMoney(orderPayDeposit);
appPlaceOrderVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getPayMoney()));
+ order.setChangeReceivableMoney(orderGoodsMoney.subtract(couponDiscount).subtract(orderPayDeposit));
order.setPayType(2);
order.setCloseFlag(0);
}
- order.setChangeReceivableMoney(appPlaceOrderVo.getUnpaidMoney());
order.setOrderRemark(appPlaceOrderDto.getOrderRemark());
order.setGoodsNum(goodsNum);
order.setCreateTime(new Date());
+ if(appPlaceOrderDto.getNewMemberFlag()!=null&&appPlaceOrderDto.getNewMemberFlag()==1){
+ order.setNewMemberFlag(1);
+ }
// 保存订单
this.save(order);
// 更新用户商品类型
@@ -725,35 +760,42 @@
}
appPlaceOrderVo.setOrderId(orderId);
appPlaceOrderVo.setOrderNo(orderNo);
-
+ //商品数据
String goodsName = "";
- if (null != goods) {
- goodsName = goods.getGoodsName();
+ if (null != goodsNameList) {
+ goodsName = String.join(",", goodsNameList);
}
-
- // 小程序微信下单支付
- /*createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), goodsName, orderNo,
- orderId, order.getPayMoney(), appPlaceOrderDto.getOpenid(),
- appPlaceOrderDto.getSpbillCreateIp(), goodsNameList);*/
-
-
//减去优惠券
if (StringUtils.isNotBlank(memberCouponSJ.toString())) {
remoteCouponService.useMemberCoupon(memberCouponSJ.toString());
}
- //生成自动取消订单延时任务
- Integer delayTime = 30;
- if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) {
- delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
+ if(appPlaceOrderVo.getPayMoney().compareTo(BigDecimal.ZERO)>0){
+ String outTradeNo = IdUtils.simpleUUID();
+ // 保存订单 交易流水
+ order.setOutTradeNo(outTradeNo);
+ this.saveOrUpdate(order);
+ Integer delayTime = 30;
+ if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) {
+ delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
+ }
+ appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime));
+ // 小程序微信下单支付
+ createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), goodsName, outTradeNo,
+ orderId, order.getPayMoney(), appPlaceOrderDto.getOpenid(),
+ appPlaceOrderDto.getSpbillCreateIp(), goodsNameList,1);
+ //生成自动取消订单延时任务
+ String payStr = appPlaceOrderVo.getAppId()+"-"+appPlaceOrderVo.getTimeStamp()+"-"+appPlaceOrderVo.getNonceStr()+"-"+appPlaceOrderVo.getPackageStr()+"-"+appPlaceOrderVo.getSignType()+"-"+appPlaceOrderVo.getPaySign();
+ redisService.setCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId, payStr , delayTime.longValue(), TimeUnit.MINUTES);
+ DelayTask delayTask = new DelayTask();
+ delayTask.setDelFlag(0);
+ delayTask.setCreateTime(new Date());
+ delayTask.setEndTime(DateUtils.addMinutes(new Date(), delayTime));
+ delayTask.setRedisKey(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId);
+ remoteConfigService.addDelayTask(delayTask);
+ }else{
+ order.setOrderStatus(2);
+ this.saveOrUpdate(order);
}
- redisService.setCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId, orderId, delayTime.longValue(), TimeUnit.MINUTES);
- DelayTask delayTask = new DelayTask();
- delayTask.setDelFlag(0);
- delayTask.setCreateTime(new Date());
- delayTask.setEndTime(DateUtils.addMinutes(new Date(), delayTime));
- delayTask.setRedisKey(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId);
- remoteConfigService.addDelayTask(delayTask);
- appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime));
return appPlaceOrderVo;
}
@@ -764,17 +806,18 @@
* @param userId
* @param shopId
* @param goodsName
- * @param orderNo
+ * @param outTradeNo
* @param orderId
* @param payMoney
* @param openid
* @param payerClientIp
* @param goodsNameList
*/
- /*private void createWxPayInfo(AppPlaceOrderVo appPlaceOrderVo, Long userId, Long shopId,
- String goodsName, String orderNo,
+
+ private void createWxPayInfo(AppPlaceOrderVo appPlaceOrderVo, Long userId, Long shopId,
+ String goodsName, String outTradeNo,
String orderId, BigDecimal payMoney,
- String openid, String payerClientIp, List<String> goodsNameList){
+ String openid, String payerClientIp, List<String> goodsNameList,Integer orderFrom){
try {
// 创建支付订单
R<String> resultMch = remoteShopService.getShopSubMchId(shopId);
@@ -793,11 +836,16 @@
String description = goodsName + "-商品购买";
request.setDescription(description);
- request.setOutTradeNo(orderNo);
+ request.setOutTradeNo(outTradeNo);
request.setNotifyUrl(config.getNotifyUrl());
// 结算信息
PartnerTransactionsRequest.SettleInfo settleInfo = new PartnerTransactionsRequest.SettleInfo();
- settleInfo.setProfitSharing(true);
+ // TODO 分账处理
+ if(orderFrom==2){
+ settleInfo.setProfitSharing(true);
+ }else{
+ settleInfo.setProfitSharing(false);
+ }
settleInfo.setSubsidyAmount(BigDecimal.ZERO);
request.setSettleInfo(settleInfo);
@@ -807,7 +855,10 @@
amount.setTotal(totalFee);
amount.setCurrency("CNY");
request.setAmount(amount);
-
+ Date endTime = appPlaceOrderVo.getEndTime();
+ SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
+ String rfc3339Format = formatter.format(endTime);
+ request.setTimeExpire(rfc3339Format);
// 支付者
PartnerTransactionsRequest.Payer payer = new PartnerTransactionsRequest.Payer();
payer.setSpOpenid(openid);
@@ -840,13 +891,14 @@
paymentMessageService.savePaymentMessage("1", orderId, payRequestJson, payResponseJson);
// 保存支付订单统一下单支付记录
- orderPaymentService.saveOrderPayment(userId, shopId, subMchId, orderId, payMoney,
+ orderPaymentService.saveOrderPayment(userId, shopId, subMchId, orderId, outTradeNo, payMoney,
appPlaceOrderVo.getEndTime(), "Y", openid,
Joiner.on(";").join(goodsNameList), result.getPackageValue());
+
} catch (WxPayException e) {
throw new ServiceException(e.getMessage());
}
- }*/
+ }
/**
@@ -1030,6 +1082,7 @@
order.setReceivableDeposit(orderPayDeposit);
order.setActivityId(activityId);
order.setActivityName(activityGoodsGetVo.getActivityName());
+ order.setOfflinePayMoney(BigDecimal.ZERO);
// 根据支付类型设置订单支付金额,在线支付金额,订单支付金额,未支付金额,关闭标志
if (appPlaceActivityDto.getPayType() == 1) {
order.setPayMoney(orderPayMoney);
@@ -1052,6 +1105,9 @@
order.setOrderRemark(appPlaceActivityDto.getOrderRemark());
order.setGoodsNum(goodsNum);
order.setCreateTime(new Date());
+ if(appPlaceActivityDto.getNewMemberFlag()!=null&&appPlaceActivityDto.getNewMemberFlag()==1){
+ order.setNewMemberFlag(1);
+ }
// 保存订单
this.save(order);
// 更新用户商品类型
@@ -1107,7 +1163,41 @@
appPlaceOrderVo.setPackageStr(res.getPackageVal());
appPlaceOrderVo.setTradeType(res.getSignType());
appPlaceOrderVo.setPaySign(res.getPaySign());
+
*/
+ List<String> goodsNameList = new ArrayList<>();
+ goodsNameList.add(orderGoods.getGoodsName());
+
+
+ if(appPlaceOrderVo.getPayMoney().compareTo(BigDecimal.ZERO)>0){
+
+ String outTradeNo = IdUtils.simpleUUID();
+ // 保存订单 交易流水
+ order.setOutTradeNo(outTradeNo);
+ this.saveOrUpdate(order);
+ Integer delayTime = 30;
+ if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) {
+ delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
+ }
+ appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime));
+ // 小程序微信下单支付
+ createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), orderGoods.getGoodsName(), outTradeNo,
+ orderId, order.getPayMoney(), appPlaceActivityDto.getOpenid(),
+ appPlaceActivityDto.getSpbillCreateIp(), goodsNameList,2);
+ //生成自动取消订单延时任务
+ String payStr = appPlaceOrderVo.getAppId()+"-"+appPlaceOrderVo.getTimeStamp()+"-"+appPlaceOrderVo.getNonceStr()+"-"+appPlaceOrderVo.getPackageStr()+"-"+appPlaceOrderVo.getSignType()+"-"+appPlaceOrderVo.getPaySign();
+ redisService.setCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId, payStr , delayTime.longValue(), TimeUnit.MINUTES);
+ DelayTask delayTask = new DelayTask();
+ delayTask.setDelFlag(0);
+ delayTask.setCreateTime(new Date());
+ delayTask.setEndTime(DateUtils.addMinutes(new Date(), delayTime));
+ delayTask.setRedisKey(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId);
+ remoteConfigService.addDelayTask(delayTask);
+
+ }else{
+ order.setOrderStatus(2);
+ this.saveOrUpdate(order);
+ }
//生成活动参加记录
ActivityRecord activityRecord = new ActivityRecord();
activityRecord.setDelFlag(0);
@@ -1121,19 +1211,6 @@
activityRecord.setGoodsId(orderGoods.getGoodsId());
activityRecord.setActivityMoney(activityGoodsGetVo.getActivityPrice());
remoteActivityService.addActivityRecord(activityRecord);
- //生成自动取消订单延时任务
- Integer delayTime = 30;
- if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) {
- delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
- }
- redisService.setCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId, orderId, delayTime.longValue(), TimeUnit.MINUTES);
- DelayTask delayTask = new DelayTask();
- delayTask.setDelFlag(0);
- delayTask.setCreateTime(new Date());
- delayTask.setEndTime(DateUtils.addMinutes(new Date(), delayTime));
- delayTask.setRedisKey(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId);
- remoteConfigService.addDelayTask(delayTask);
- appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime));
return appPlaceOrderVo;
}
@@ -1245,6 +1322,47 @@
}
/**
+ * @description 支付订单
+ * @author jqs
+ * @date 2023/8/27 15:26
+ * @param orderId
+ * @return AppPlaceOrderVo
+ */
+ @Override
+ public AppPlaceOrderVo payOrder(String orderId){
+ Order order = this.getById(orderId);
+ if(order.getOrderStatus()!=1){
+ throw new ServiceException(AppErrorConstant.CANCEL_CANCEL_ORDER);
+ }
+ String payStr = redisService.getCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode()+ "-"+orderId);
+ if(StringUtils.isBlank(payStr)){
+ throw new ServiceException(AppErrorConstant.CANCEL_CANCEL_ORDER);
+ }
+ Integer delayTime = 30;
+ if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) {
+ delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
+ }
+ AppPlaceOrderVo appPlaceOrderVo = new AppPlaceOrderVo();
+ OrderPayment orderPayment = orderPaymentService.getByUnpaidOrderId(orderId);
+ String[] payArr = payStr.split("-");
+ appPlaceOrderVo.setOrderId(order.getOrderId());
+ appPlaceOrderVo.setOrderNo(order.getOrderNo());
+ appPlaceOrderVo.setPayType(order.getPayType());
+ appPlaceOrderVo.setPayMoney(order.getPayMoney());
+ appPlaceOrderVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getPayMoney()));
+ appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime));
+ appPlaceOrderVo.setAppId(payArr[0]);
+ appPlaceOrderVo.setMchId(orderPayment.getSubMchId());
+ appPlaceOrderVo.setTimeStamp(payArr[1]);
+ appPlaceOrderVo.setNonceStr(payArr[2]);
+ appPlaceOrderVo.setPackageStr(payArr[3]);
+ appPlaceOrderVo.setSignType(payArr[4]);
+ appPlaceOrderVo.setPaySign(payArr[5]);
+ appPlaceOrderVo.setPrepayId(orderPayment.getPrepayId());
+ return appPlaceOrderVo;
+ }
+
+ /**
* 获取用户订单统计
*
* @param userId
@@ -1273,9 +1391,15 @@
@Override
public MerHomeShopTotalVo getMerHomeTotal(MerHomeShopTotalVo merHomeShopTotalVo) {
Long shopId = merHomeShopTotalVo.getShopId();
+ //获取今日到店
Integer todayShop = userServiceRecordService.countShopServicePerson(shopId);
+ //获取待处理订单和营业额
merHomeShopTotalVo = orderMapper.getMerHomeShopTotalVo(shopId);
+ //获取服务统计
+ MerHomeShopTotalVo serviceTotalVo = orderMapper.getMerHomeShopServiceTotalVo(shopId);
merHomeShopTotalVo.setTodayShop(todayShop);
+ merHomeShopTotalVo.setCycleSurp(serviceTotalVo.getCycleSurp());
+ merHomeShopTotalVo.setExplorationSurp(serviceTotalVo.getExplorationSurp());
return merHomeShopTotalVo;
}
@@ -1289,6 +1413,9 @@
public MerVerifyOrderVo verifyOrder(String orderId, Long shopId) {
// 创建返回对象
MerVerifyOrderVo merVerifyOrderVo = new MerVerifyOrderVo();
+ if(orderId.contains("+")){
+ orderId = orderId.substring(0, orderId.indexOf("+"));
+ }
// 根据订单ID获取订单信息
Order order = this.getById(orderId);
if (order.getOrderStatus() != 2) {
@@ -1307,7 +1434,11 @@
merVerifyOrderVo.setOrderGoodsMoney(order.getOrderMoney());
merVerifyOrderVo.setCouponDiscount(order.getCouponMoney());
merVerifyOrderVo.setReceivableDeposit(order.getReceivableDeposit());
- merVerifyOrderVo.setReceivableMoney(order.getReceivableMoney());
+ if(order.getPayType()==1){
+ merVerifyOrderVo.setReceivableMoney(order.getReceivableMoney());
+ }else{
+ merVerifyOrderVo.setReceivableMoney(order.getOrderMoney().subtract(order.getCouponMoney()).subtract(order.getReceivableDeposit()));
+ }
merVerifyOrderVo.setPayMoney(order.getPayMoney());
merVerifyOrderVo.setOrderRemark(order.getOrderRemark());
merVerifyOrderVo.setCreateTime(order.getCreateTime());
@@ -1325,7 +1456,7 @@
merVerifyOrderVo.setReceiveMoney(BigDecimal.ZERO);
}
}
- merVerifyOrderVo.setUnReceiveMoney(merVerifyOrderVo.getRealReceiveMoney().subtract(order.getReceivableMoney()));
+ merVerifyOrderVo.setUnReceiveMoney(merVerifyOrderVo.getRealReceiveMoney().subtract(merVerifyOrderVo.getReceiveMoney()));
// 根据订单用户ID获取用户信息
Member member = remoteMemberService.getMember(order.getUserId()).getData();
merVerifyOrderVo.setUserId(order.getUserId());
@@ -1451,7 +1582,11 @@
merVerifyOrderVo.setOrderGoodsMoney(order.getOrderMoney());
merVerifyOrderVo.setCouponDiscount(order.getCouponMoney());
merVerifyOrderVo.setReceivableDeposit(order.getReceivableDeposit());
- merVerifyOrderVo.setReceivableMoney(order.getReceivableMoney());
+ if(order.getPayType()==1){
+ merVerifyOrderVo.setReceivableMoney(order.getOrderMoney().subtract(order.getPayMoney()));
+ }else{
+ merVerifyOrderVo.setReceivableMoney(order.getOrderMoney().subtract(order.getCouponMoney()).subtract(order.getReceivableDeposit()));
+ }
merVerifyOrderVo.setPayMoney(order.getPayMoney());
merVerifyOrderVo.setOrderRemark(order.getOrderRemark());
merVerifyOrderVo.setAppUserOrderGoodsPageVoList(appUserOrderGoodsPageVoList);
@@ -1469,32 +1604,33 @@
merVerifyOrderVo.setReceiveMoney(BigDecimal.ZERO);
}
}
- merVerifyOrderVo.setUnReceiveMoney(merVerifyOrderVo.getRealReceiveMoney().subtract(order.getReceivableMoney()));
+ merVerifyOrderVo.setUnReceiveMoney(merVerifyOrderVo.getRealReceiveMoney().subtract(merVerifyOrderVo.getReceiveMoney()));
Member member = remoteMemberService.getMember(order.getUserId()).getData();
merVerifyOrderVo.setUserId(order.getUserId());
merVerifyOrderVo.setUserName(member.getRealName());
merVerifyOrderVo.setUserMobile(member.getMobile());
merVerifyOrderVo.setCloseFlag(order.getCloseFlag());
- //
+ // TODO 活动才分账
if (order.getOrderFrom() == 2) {
- // profitsSharingService.applyProfitSharing();
+ // 活动才分账
+ submitProfitSharing(orderId, order.getOrderNo(), order.getShopId(), order.getOnlinePayMoney());
}
//创建支付记录
- PayRecord payRecord = new PayRecord();
- payRecord.setDelFlag(0);
- payRecord.setOrderId(order.getOrderId());
- payRecord.setPayMoney(merVerifyOrderDto.getRelPayMoney());
- payRecord.setPayTime(new Date());
- payRecord.setPayType(merVerifyOrderDto.getPayType());
- payRecordService.save(payRecord);
-
- //submitProfitSharing(orderId, order.getOrderNo(), order.getShopId(), order.getOrderMoney());
+ if(merVerifyOrderDto.getRelPayMoney().compareTo(BigDecimal.ZERO)>0){
+ PayRecord payRecord = new PayRecord();
+ payRecord.setDelFlag(0);
+ payRecord.setOrderId(order.getOrderId());
+ payRecord.setPayMoney(merVerifyOrderDto.getRelPayMoney());
+ payRecord.setPayTime(new Date());
+ payRecord.setPayType(merVerifyOrderDto.getPayType());
+ payRecordService.save(payRecord);
+ }
return merVerifyOrderVo;
}
- /*private void submitProfitSharing(String orderId, String orderNo, Long shopId, BigDecimal orderMoney) {
+ private void submitProfitSharing(String orderId, String orderNo, Long shopId, BigDecimal orderMoney) {
String sendMessage = "";
String resultMessage = "";
try {
@@ -1508,51 +1644,55 @@
R<String> resultMch = remoteShopService.getShopSubMchId(shopId);
String subMchId = resultMch.getData();
if (!StringUtils.isEmpty(subMchId)) {
-
+ WxPayConfig config = wxService.getConfig();
R<ShopProportionVo> resultShopProportion = remoteShopService.getShopProportion(shopId);
ShopProportionVo shopProportion = resultShopProportion.getData();
if (null != shopProportion) {
ProfitSharingRequest request = new ProfitSharingRequest();
+ request.setAppid(config.getAppId());
request.setSubMchid(subMchId);
request.setTransactionId(transactionId);
- request.setOutOrderNo(orderNo);
- List<Receiver> receiverList = new ArrayList<>();
+ request.setOutOrderNo(IdUtils.simpleUUID());
+ List<ProfitSharingRequest.Receiver> receiverList = new ArrayList<>();
String description = "订单:" + orderNo + " 平台抽取佣金";
+ //获取商户分成
BigDecimal proportionPercent = shopProportion.getProportionPercent();
if (null == proportionPercent) {
proportionPercent = BigDecimal.ZERO;
}
+ //平台分成
+ proportionPercent = new BigDecimal("100.00").subtract(proportionPercent);
+ if(proportionPercent.compareTo(BigDecimal.ZERO)>0){
+ ProfitSharingResult result = new ProfitSharingResult();
+ result.setOutOrderNo(orderNo);
+ result.setStatus("FINISHED");
+ // 计算分成金额
+ int amount = orderMoney.multiply(proportionPercent).setScale(0, RoundingMode.UP).intValue();
+ log.info("订单分账:{} 分账金额: {}", orderNo, amount);
+ if (amount > 0) {
+ // 分账创建
+ ProfitSharingRequest.Receiver receiver = new ProfitSharingRequest.Receiver();
+ receiver.setType("MERCHANT_ID");
+ receiver.setReceiverAccount(platformTyMacId);
+ receiver.setAmount(amount);
+ receiver.setDescription(description);
- ProfitSharingResult result = new ProfitSharingResult();
- result.setOutOrderNo(orderNo);
- result.setStatus("FINISHED");
+ receiverList.add(receiver);
+ request.setReceivers(receiverList);
+ // 分账完成
+ request.setFinish(true);
+ result = wxService.getEcommerceService().profitSharing(request);
+ }
- // 计算分成金额
- int amount = orderMoney.multiply(proportionPercent).setScale(0, RoundingMode.UP).intValue();
- log.info("订单分账:{} 分账金额: {}", orderNo, amount);
- if (amount > 0) {
- // 分账创建
- Receiver receiver = new Receiver();
- receiver.setType("MERCHANT_ID");
- receiver.setReceiverAccount(platformTyMacId);
- receiver.setAmount(amount);
- receiver.setDescription(description);
+ // 创建分账记录
+ profitSharingService.saveProfitSharing(shopId, orderId, orderMoney, result);
- receiverList.add(receiver);
- request.setReceivers(receiverList);
- // 分账完成
- request.setFinish(true);
- result = wxService.getEcommerceService().profitSharing(request);
+ // 保存请求信息
+ sendMessage = JSONObject.toJSONString(request);
+ resultMessage = JSONObject.toJSONString(result);
}
-
- // 创建分账记录
- profitSharingService.saveProfitSharing(shopId, orderId, orderMoney, result);
-
- // 保存请求信息
- sendMessage = JSONObject.toJSONString(request);
- resultMessage = JSONObject.toJSONString(result);
} else {
resultMessage = String.format("订单分账:%s 获取商户分成失败", orderNo);
log.info(resultMessage);
@@ -1564,12 +1704,12 @@
} catch (WxPayException e) {
resultMessage = String.format("订单分账:%s 分账失败:%s", orderNo, e.getMessage());
log.info(resultMessage);
- e.printStackTrace();
+ throw new ServiceException(resultMessage);
}
// 保存分账信息
paymentMessageService.savePaymentMessage("4", orderId, sendMessage, resultMessage);
- }*/
+ }
/**
* @param merVerifyCouponDto
@@ -1582,22 +1722,42 @@
@Transactional
public MerVerifyCouponVo sureVerifyCoupon(MerVerifyCouponDto merVerifyCouponDto) {
MerVerifyCouponGetVo verifyCouponGetVo = remoteCouponService.getVerifyCoupon(merVerifyCouponDto.getMemberCouponId()).getData();
+ MemberCoupon memberCoupon = verifyCouponGetVo.getMemberCoupon();
ShopRelUserVo shopRelUserVo = remoteShopService.getShopByUserId(merVerifyCouponDto.getUserId()).getData();
- if (!shopRelUserVo.getShopId().equals(verifyCouponGetVo.getMemberCoupon().getShopId())) {
- throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+ Long userId = verifyCouponGetVo.getUserId();
+ Long shopId = shopRelUserVo.getShopId();
+ Shop shop = remoteShopService.getShop(shopId).getData();
+ // 调用remoteMemberService的getMember方法获取Member对象
+ Member member = remoteMemberService.getMember(userId).getData();
+ //如果是商户优惠券,验证商户一致
+ if (memberCoupon.getCouponFrom() == 2) {
+ if(!memberCoupon.getShopId().equals(member.getRelationShopId())){
+ throw new ServiceException(AppErrorConstant.BLINDING_VERIFY_SHOP_ERROR);
+ }
+ if(!memberCoupon.getShopId().equals(shopId)){
+ throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+ }
}
+ //如果是平台优惠券,当用户绑定商户时验证商户一致
+ if (memberCoupon.getCouponFrom() == 1 && member.getBindingFlag() == 1) {
+ /*if(!memberCoupon.getShopId().equals(member.getRelationShopId())){
+ throw new ServiceException(AppErrorConstant.BLINDING_VERIFY_SHOP_ERROR);
+ }*/
+ //判断绑定商户是否和核销商户一致
+ if(!member.getRelationShopId().equals(shopId)){
+ throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+ }
+ }
+ memberCoupon.setShopId(shopId);
// 创建MerVerifyCouponVo对象
MerVerifyCouponVo merVerifyCouponVo = new MerVerifyCouponVo();
// 调用remoteCouponService的getVerifyCoupon方法获取MerVerifyCouponGetVo对象
List<Goods> goodsList = verifyCouponGetVo.getGoodsList();
- Long userId = verifyCouponGetVo.getUserId();
- // 调用remoteMemberService的getMember方法获取Member对象
- Member member = remoteMemberService.getMember(userId).getData();
merVerifyCouponVo.setUserName(member.getRealName());
merVerifyCouponVo.setUserMobile(member.getMobile());
merVerifyCouponVo.setCouponFrom(verifyCouponGetVo.getCouponFrom());
- merVerifyCouponVo.setCouponName(verifyCouponGetVo.getMemberCoupon().getCouponName());
- merVerifyCouponVo.setCreateTime(verifyCouponGetVo.getMemberCoupon().getReceiveTime());
+ merVerifyCouponVo.setCouponName(memberCoupon.getCouponName());
+ merVerifyCouponVo.setCreateTime(memberCoupon.getReceiveTime());
// 将goodsList转换为MerCouponGoodsListVo列表,并设置相应属性
List<MerCouponGoodsListVo> merCouponGoodsList = goodsList.stream()
.map(goods -> {
@@ -1619,7 +1779,6 @@
.collect(Collectors.toList());
// 设置merVerifyCouponVo的goodsList属性为merCouponGoodsList
merVerifyCouponVo.setGoodsList(merCouponGoodsList);
- MemberCoupon memberCoupon = verifyCouponGetVo.getMemberCoupon();
//生成服务
ConsumerGoods consumerGoods;
String consumerGoodsId;
@@ -1660,7 +1819,20 @@
consumerGoods.setSourceFrom(1);
consumerGoodsList.add(consumerGoods);
}
+ MerVerifyMemberCouponDto merVerifyMemberCouponDto = new MerVerifyMemberCouponDto();
+ merVerifyMemberCouponDto.setCouponId(memberCoupon.getId());
+ merVerifyMemberCouponDto.setShopId(shopId);
+ remoteCouponService.sureMemberCoupon(merVerifyMemberCouponDto);
consumerGoodsService.saveBatchConsumerGoods(consumerGoodsList);
+ if (member.getBindingFlag() != 1) {
+ AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto();
+ appMemberBindingDto.setBindingFlag(1);
+ appMemberBindingDto.setBindingType(4);
+ appMemberBindingDto.setShopId(shop.getShopId());
+ appMemberBindingDto.setShopName(shop.getShopName());
+ appMemberBindingDto.setUserId(memberCoupon.getUserId());
+ remoteMemberService.updateMemberBinding(appMemberBindingDto);
+ }
merVerifyCouponVo.setVerifyStatus(2);
return merVerifyCouponVo;
}
@@ -1682,10 +1854,32 @@
throw new ServiceException(AppErrorConstant.COUPON_USED);
}
ShopRelUserVo shopRelUserVo = remoteShopService.getShopByUserId(merVerifyPrizeDto.getUserId()).getData();
- if (!shopRelUserVo.getShopId().equals(memberGiftRecord.getShopId())) {
+ Long shopId = shopRelUserVo.getShopId();
+ Shop shop = remoteShopService.getShop(shopId).getData();
+ //平台奖品判断
+ if (memberGiftRecord.getGiftFrom() == 1) {
+ BirthdayCard birthdayCard = remoteMemberService.getBirthdayCard().getData();
+ //判断生日活动状态
+ if(birthdayCard!=null&&birthdayCard.getCardStatus()==1){
+ shop = remoteShopService.getShop(shopId).getData();
+ //判断指定区域全部店铺
+ if(birthdayCard.getAreaFlag()==2&&birthdayCard.getShopFlag()==1&&!StringUtils.checkString(birthdayCard.getDesignatedArea(),shop.getShopCityCode())){
+ throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+ }
+ //判断指定店铺
+ if(birthdayCard.getShopFlag()==2&&!StringUtils.checkString(birthdayCard.getApplicableShop(),shopId.toString())){
+ throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+ }
+ }else{
+ throw new ServiceException(AppErrorConstant.BIRTHDAY_CARD_ERROR);
+ }
+ }
+ //商户奖品判断
+ if (memberGiftRecord.getGiftFrom() == 2 && !memberGiftRecord.getShopId().equals(shopId)) {
throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
}
Member member = remoteMemberService.getMember(memberGiftRecord.getUserId()).getData();
+
merVerifyAwardVo.setUserName(member.getRealName());
merVerifyAwardVo.setUserMobile(member.getMobile());
if (memberGiftRecord.getGiftFrom() == 1) {
@@ -1743,15 +1937,17 @@
break;
}
merVerifyAwardVo.setCreateTime(memberGiftRecord.getCreateTime());
- memberGiftRecord.setVerifyStatus(2);
- memberGiftRecord.setVerifyTime(new Date());
+ MerVerifyPrizeFinalDto merVerifyPrizeFinalDto = new MerVerifyPrizeFinalDto();
+ merVerifyPrizeFinalDto.setPrizeId(memberGiftRecord.getPrizeId());
+ merVerifyPrizeFinalDto.setShopId(shop.getShopId());
+ remoteMemberService.verifyPrize(merVerifyPrizeFinalDto);
if (member.getBindingFlag() != 1) {
AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto();
appMemberBindingDto.setBindingFlag(1);
- appMemberBindingDto.setShopId(merVerifyPrizeDto.getShopId());
- Shop shop = remoteShopService.getShop(merVerifyPrizeDto.getShopId()).getData();
+ appMemberBindingDto.setBindingType(5);
+ appMemberBindingDto.setShopId(shop.getShopId());
appMemberBindingDto.setShopName(shop.getShopName());
- appMemberBindingDto.setUserId(merVerifyPrizeDto.getUserId());
+ appMemberBindingDto.setUserId(memberGiftRecord.getUserId());
remoteMemberService.updateMemberBinding(appMemberBindingDto);
}
merVerifyAwardVo.setPrizeId(merVerifyPrizeDto.getPrizeId());
@@ -1770,15 +1966,17 @@
@Override
public List<MerMemberNoClearOrderVo> pageMerMemberNoClearOrder(Page page, MerMemberNoClearOrderDto merMemberNoClearOrderDto) {
List<MerMemberNoClearOrderVo> merMemberNoClearOrderVoList = orderMapper.pageMerMemberNoClearOrder(page, merMemberNoClearOrderDto.getMemberUserId());
- /*if (merMemberNoClearOrderVoList != null && !merMemberNoClearOrderVoList.isEmpty()) {
+ if (merMemberNoClearOrderVoList != null && !merMemberNoClearOrderVoList.isEmpty()) {
BigDecimal zeroBig = new BigDecimal("0.00");
for (MerMemberNoClearOrderVo merMemberNoClearOrderVo : merMemberNoClearOrderVoList) {
- merMemberNoClearOrderVo.setUnPaidMoney(merMemberNoClearOrderVo.getReceivableMoney().subtract(merMemberNoClearOrderVo.getPayMoney()));
if (merMemberNoClearOrderVo.getUnPaidMoney() == null) {
merMemberNoClearOrderVo.setUnPaidMoney(zeroBig);
}
+ if(merMemberNoClearOrderVo.getUnPaidMoney().compareTo(zeroBig)<0){
+ merMemberNoClearOrderVo.setUnPaidMoney(zeroBig);
+ }
}
- }*/
+ }
return merMemberNoClearOrderVoList;
}
@@ -1794,9 +1992,9 @@
order.setOffPayTime(new Date());
order.setPayMoney(order.getPayMoney().add(merCloseOrderDto.getPayMoney()));
if (order.getPayMoney().compareTo(order.getChangeReceivableMoney()) >= 0) {
- order.setCloseFlag(0);
- } else {
order.setCloseFlag(1);
+ } else {
+ order.setCloseFlag(0);
}
this.saveOrUpdate(order);
//创建支付记录
@@ -1839,7 +2037,6 @@
sysUser.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png");
String password = "hongruitang";
sysUser.setPassword(SecurityUtils.encryptPassword(password));
- log.debug("sysUser" + sysUser.toString());
sysUser = remoteUserService.registerUser(sysUser).getData();
member = new Member();
member.setMemberId(memberId);
@@ -1848,6 +2045,7 @@
member.setRealName(name);
member.setNickName(name);
member.setBindingFlag(1);
+ member.setBindingType(3);
member.setRelationShopId(shopId);
member.setRelationShopName(shop.getShopName());
remoteMemberService.createNewMember(member);
@@ -1893,6 +2091,12 @@
BigDecimal experienceMoney = new BigDecimal("0.00");
BigDecimal serviceMoney = new BigDecimal("0.00");
BigDecimal goodsMoney = new BigDecimal("0.00");
+ List<OrderGoods> orderGoodsList = new ArrayList<>();
+ ConsumerGoods consumerGoods;
+ String consumerGoodsId;
+ List<ConsumerGoods> consumerGoodsList = new ArrayList<>();
+ //使用优惠券
+ StringJoiner memberCouponSJ = new StringJoiner(",");
for (AppBuyGoodsDto appBuyGoodsDto : appBuyGoodsDtoList) {
goodsId = appBuyGoodsDto.getGoodsId();
memberCouponId = appBuyGoodsDto.getMemberCouponId();
@@ -1927,14 +2131,18 @@
} else if (couponType == 2 && appMemberCouponVo.getDiscountPercent() != null) {
discountPercent = appMemberCouponVo.getDiscountPercent();
goodsRealPrice = goodsTotalPrice.multiply(discountPercent).divide(BigDecimal.TEN, 2, BigDecimal.ROUND_HALF_UP);
- discountMoney = goodsRealPrice.subtract(goodsTotalPrice);
+ discountMoney = goodsTotalPrice.subtract(goodsRealPrice);
} else if (couponType == 3 && appMemberCouponVo.getDiscountMoney() != null) {
discountMoney = appMemberCouponVo.getDiscountMoney();
goodsRealPrice = goodsTotalPrice.subtract(discountMoney);
}
+ if(goodsRealPrice.compareTo(BigDecimal.ZERO)<0){
+ goodsRealPrice = BigDecimal.ZERO;
+ discountMoney = goodsTotalPrice.subtract(goodsRealPrice);
+ }
+ memberCouponSJ.add(memberCouponId);
}
}
-
goodsDeposit = goods.getSubscription();
if (goodsDeposit == null || goodsDeposit.compareTo(BigDecimal.ZERO) == 0) {
goodsDeposit = new BigDecimal("0.00");
@@ -1946,6 +2154,7 @@
couponDiscount = couponDiscount.add(discountMoney);
orderPayDeposit = orderPayDeposit.add(goodsDeposit);
orderPayMoney = orderPayMoney.add(goodsRealPrice);
+
//创建OrderGoods
orderGoods = new OrderGoods();
orderGoodsId = IdUtils.simpleUUID();
@@ -1967,7 +2176,63 @@
orderGoods.setGoodsName(goods.getGoodsName());
orderGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
orderGoods.setGoodsPicture(goodsFile.getFileUrl());
- orderGoodsService.save(orderGoods);
+ orderGoodsList.add(orderGoods);
+
+ //创建服务
+ Integer buyGoodsNum = orderGoods.getBuyNum();
+ //判断是否确认次数
+ if (orderGoods.getCycleNumFlag() == 0) {
+ consumerGoods = new ConsumerGoods();
+ consumerGoodsId = IdUtils.simpleUUID();
+ consumerGoods.setConsumerGoodsId(consumerGoodsId);
+ consumerGoods.setDelFlag(0);
+ consumerGoods.setServiceStatus(1);
+ consumerGoods.setShopId(shopId);
+ consumerGoods.setUserId(userId);
+ consumerGoods.setOrderId(orderId);
+ consumerGoods.setOrderGoodsId(orderGoodsId);
+ consumerGoods.setGoodsId(orderGoods.getGoodsId());
+ consumerGoods.setGoodsName(orderGoods.getGoodsName());
+ consumerGoods.setCycleNumFlag(orderGoods.getCycleNumFlag());
+ consumerGoods.setServiceNum(orderGoods.getServiceNum());
+ consumerGoods.setUsedNum(0);
+ consumerGoods.setGoodsType(orderGoods.getGoodsType());
+ consumerGoods.setGoodsTag(orderGoods.getGoodsTag());
+ consumerGoods.setCreateTime(nowTime);
+ consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
+ consumerGoods.setGoodsPicture(orderGoods.getGoodsPicture());
+ consumerGoods.setGoodsNurses(goods.getGoodsNurses());
+ consumerGoods.setSourceFrom(1);
+ consumerGoods.setSureNum(buyGoodsNum);
+ consumerGoodsList.add(consumerGoods);
+ } else {
+ for (int i = 0; i < buyGoodsNum; i++) {
+ consumerGoods = new ConsumerGoods();
+ consumerGoodsId = IdUtils.simpleUUID();
+ consumerGoods.setConsumerGoodsId(consumerGoodsId);
+ consumerGoods.setDelFlag(0);
+ consumerGoods.setServiceStatus(1);
+ consumerGoods.setShopId(shopId);
+ consumerGoods.setUserId(userId);
+ consumerGoods.setOrderId(orderId);
+ consumerGoods.setOrderGoodsId(orderGoodsId);
+ consumerGoods.setGoodsId(orderGoods.getGoodsId());
+ consumerGoods.setGoodsName(orderGoods.getGoodsName());
+ consumerGoods.setCycleNumFlag(orderGoods.getCycleNumFlag());
+ consumerGoods.setServiceNum(orderGoods.getServiceNum());
+ consumerGoods.setUsedNum(0);
+ consumerGoods.setGoodsType(orderGoods.getGoodsType());
+ consumerGoods.setGoodsTag(orderGoods.getGoodsTag());
+ consumerGoods.setCreateTime(nowTime);
+ consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
+ consumerGoods.setGoodsPicture(orderGoods.getGoodsPicture());
+ consumerGoods.setGoodsNurses(goods.getGoodsNurses());
+ consumerGoods.setSourceFrom(1);
+ consumerGoodsList.add(consumerGoods);
+ }
+ }
+
+ //商户变更计算
switch (orderGoods.getGoodsType()) {
case 1:
cycleMoney = cycleMoney.add(orderGoods.getGoodsReceivableMoney());
@@ -1998,16 +2263,14 @@
order.setCouponMoney(couponDiscount);
order.setDiscountMoney(couponDiscount);
order.setReceivableMoney(orderPayMoney);
- order.setReceivableDeposit(new BigDecimal("0.00"));
+ order.setReceivableDeposit(orderPayDeposit);
order.setPayType(1);
+ //判断实收金额
if (merNewOrderDto.getChangeMoney() != null) {
order.setChangeReceivableMoney(merNewOrderDto.getChangeMoney());
} else {
order.setChangeReceivableMoney(orderPayMoney);
}
- order.setPayMoney(orderPayMoney);
- order.setOnlinePayMoney(new BigDecimal("0.00"));
- order.setOfflinePayMoney(orderPayMoney);
order.setOrderRemark(merNewOrderDto.getOrderRemark());
order.setGoodsNum(goodsNum);
order.setCreateTime(nowTime);
@@ -2016,75 +2279,16 @@
order.setPayMoney(merNewOrderDto.getPayMoney());
order.setOnlinePayMoney(new BigDecimal("0.00"));
order.setOfflinePayMoney(merNewOrderDto.getPayMoney());
+ order.setPayMoney(merNewOrderDto.getPayMoney());
order.setOffPayTime(nowTime);
order.setPayType(1);
+ //判断结清
if (order.getPayMoney().compareTo(order.getChangeReceivableMoney()) >= 0) {
- order.setCloseFlag(0);
- } else {
order.setCloseFlag(1);
+ } else {
+ order.setCloseFlag(0);
}
- this.save(order);
- //创建服务
- List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listAppVoByOrderId(orderId);
- ConsumerGoods consumerGoods;
- String consumerGoodsId;
- List<ConsumerGoods> consumerGoodsList = new ArrayList<>();
- for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) {
- Integer buyGoodsNum = appUserOrderGoodsPageVo.getBuyNum();
- if (appUserOrderGoodsPageVo.getCycleNumFlag() == 0) {
- consumerGoods = new ConsumerGoods();
- goods = remoteGoodsService.getGoods(appUserOrderGoodsPageVo.getGoodsId()).getData();
- consumerGoodsId = IdUtils.simpleUUID();
- consumerGoods.setConsumerGoodsId(consumerGoodsId);
- consumerGoods.setDelFlag(0);
- consumerGoods.setServiceStatus(1);
- consumerGoods.setShopId(order.getShopId());
- consumerGoods.setUserId(order.getUserId());
- consumerGoods.setOrderId(orderId);
- consumerGoods.setOrderGoodsId(appUserOrderGoodsPageVo.getOrderGoodsId());
- consumerGoods.setGoodsId(appUserOrderGoodsPageVo.getGoodsId());
- consumerGoods.setGoodsName(appUserOrderGoodsPageVo.getGoodsName());
- consumerGoods.setCycleNumFlag(appUserOrderGoodsPageVo.getCycleNumFlag());
- consumerGoods.setServiceNum(appUserOrderGoodsPageVo.getServiceNum());
- consumerGoods.setUsedNum(0);
- consumerGoods.setGoodsType(appUserOrderGoodsPageVo.getGoodsType());
- consumerGoods.setGoodsTag(appUserOrderGoodsPageVo.getGoodsTag());
- consumerGoods.setCreateTime(nowTime);
- consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
- consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture());
- consumerGoods.setGoodsNurses(goods.getGoodsNurses());
- consumerGoods.setSourceFrom(1);
- consumerGoods.setSureNum(buyGoodsNum);
- consumerGoodsList.add(consumerGoods);
- } else {
- for (int i = 0; i < buyGoodsNum; i++) {
- consumerGoods = new ConsumerGoods();
- goods = remoteGoodsService.getGoods(appUserOrderGoodsPageVo.getGoodsId()).getData();
- consumerGoodsId = IdUtils.simpleUUID();
- consumerGoods.setConsumerGoodsId(consumerGoodsId);
- consumerGoods.setDelFlag(0);
- consumerGoods.setServiceStatus(1);
- consumerGoods.setShopId(order.getShopId());
- consumerGoods.setUserId(order.getUserId());
- consumerGoods.setOrderId(orderId);
- consumerGoods.setOrderGoodsId(appUserOrderGoodsPageVo.getOrderGoodsId());
- consumerGoods.setGoodsId(appUserOrderGoodsPageVo.getGoodsId());
- consumerGoods.setGoodsName(appUserOrderGoodsPageVo.getGoodsName());
- consumerGoods.setCycleNumFlag(appUserOrderGoodsPageVo.getCycleNumFlag());
- consumerGoods.setServiceNum(appUserOrderGoodsPageVo.getServiceNum());
- consumerGoods.setUsedNum(0);
- consumerGoods.setGoodsType(appUserOrderGoodsPageVo.getGoodsType());
- consumerGoods.setGoodsTag(appUserOrderGoodsPageVo.getGoodsTag());
- consumerGoods.setCreateTime(nowTime);
- consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
- consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture());
- consumerGoods.setGoodsNurses(goods.getGoodsNurses());
- consumerGoods.setSourceFrom(1);
- consumerGoodsList.add(consumerGoods);
- }
- }
- }
- consumerGoodsService.saveBatchConsumerGoods(consumerGoodsList);
+ //用户未绑定则绑定商户
Member member = remoteMemberService.getMember(userId).getData();
if (member != null && member.getBindingFlag() != 1) {
//绑定商户
@@ -2093,23 +2297,35 @@
appMemberBindingDto.setShopName(shop.getShopName());
appMemberBindingDto.setUserId(userId);
appMemberBindingDto.setBindingFlag(1);
+ appMemberBindingDto.setBindingType(3);
remoteMemberService.updateMemberBinding(appMemberBindingDto);
+ order.setNewMemberFlag(1);
}
- ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto();
+ //保存订单和服务
+ this.save(order);
+ orderGoodsService.saveBatch(orderGoodsList);
+ consumerGoodsService.saveBatchConsumerGoods(consumerGoodsList);
+ //减去优惠券
+ if (StringUtils.isNotBlank(memberCouponSJ.toString())) {
+ remoteCouponService.useMemberCoupon(memberCouponSJ.toString());
+ }
+
+ //更新商户统计
+ /*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);
+ remoteShopService.changeShopTotal(shopTotalChangeDto);*/
//创建支付记录
PayRecord payRecord = new PayRecord();
payRecord.setDelFlag(0);
payRecord.setOrderId(orderId);
payRecord.setPayMoney(order.getPayMoney());
- payRecord.setPayTime(order.getPayTime());
- payRecord.setPayType(2);
+ payRecord.setPayTime(order.getOffPayTime());
+ payRecord.setPayType(merNewOrderDto.getPayType());
payRecordService.save(payRecord);
}
@@ -2121,10 +2337,12 @@
@Override
public List<MerOrderPageVo> pageMerOrder(Page page, MerOrderPageDto merOrderPageDto) {
if (StringUtils.isNotBlank(merOrderPageDto.getKeyword())) {
+ // 获取关键字对应的用户ID
MgtUserIdByKeywordDto userIdByKeywordDto = new MgtUserIdByKeywordDto();
userIdByKeywordDto.setKeyword(merOrderPageDto.getKeyword());
MgtUserIdByKeywordVo userIdByKeywordVo = remoteMemberService.getUserIdByKeyword(userIdByKeywordDto).getData();
if (StringUtils.isNotBlank(userIdByKeywordVo.getUserIds())) {
+ // 将用户ID转换成List<Long>类型
List<Long> userIdList = Arrays.stream(userIdByKeywordVo.getUserIds().split(","))
.map(Long::parseLong)
.collect(Collectors.toList());
@@ -2132,6 +2350,8 @@
merOrderPageDto.setMemberUserId(null);
}
}
+
+ // 获取订单列表
List<MerOrderPageVo> merOrderPageVoList = orderMapper.pageMerOrder(page, merOrderPageDto);
if (merOrderPageVoList != null && !merOrderPageVoList.isEmpty()) {
Long userId;
@@ -2140,16 +2360,17 @@
String orderFromDesc;
BigDecimal zeroBig = new BigDecimal("0.00");
StringJoiner userIdSj = new StringJoiner(",");
+ // 遍历订单列表
for (MerOrderPageVo merOrderPageVo : merOrderPageVoList) {
userId = merOrderPageVo.getUserId();
userIdSj.add(userId.toString());
orderFrom = merOrderPageVo.getOrderFrom();
+ // 根据订单来源设置订单来源描述
if (orderFrom != null) {
if (orderFrom == 1) {
orderFromDesc = "商城订单";
- } else if(orderFrom == 2){
-
- orderFromDesc = "店铺砍价活动("+merOrderPageVo.getActivityName()+")";
+ } else if (orderFrom == 2) {
+ orderFromDesc = "店铺砍价活动(" + merOrderPageVo.getActivityName() + ")";
} else {
orderFromDesc = "线下创建";
}
@@ -2157,16 +2378,22 @@
orderFromDesc = "商城订单";
}
merOrderPageVo.setOrderFromDesc(orderFromDesc);
- merOrderPageVo.setUnPaidMoney(merOrderPageVo.getPayMoney().subtract(merOrderPageVo.getReceiveMoney()));
+ // 设置未支付金额为0.00,如果未支付金额小于0,则设置为0.00
if (merOrderPageVo.getUnPaidMoney() == null) {
merOrderPageVo.setUnPaidMoney(zeroBig);
}
+ if (merOrderPageVo.getUnPaidMoney().compareTo(zeroBig) < 0) {
+ merOrderPageVo.setUnPaidMoney(zeroBig);
+ }
}
+
+ // 根据用户ID列表获取用户信息
MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto();
mgtBaseBathDto.setIds(userIdSj.toString());
List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(mgtBaseBathDto).getData();
Map<Long, MgtSimpleMemberVo> userMap = simpleMemberVoList.stream()
.collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity()));
+ // 遍历订单列表,设置用户信息
for (MerOrderPageVo merOrderPageVo : merOrderPageVoList) {
if (merOrderPageVo.getUserId() != null && userMap.get(merOrderPageVo.getUserId()) != null) {
merOrderPageVo.setUserName(userMap.get(merOrderPageVo.getUserId()).getRealName());
@@ -2186,13 +2413,15 @@
* @return
*/
@Override
- public List<MerMemberNoClearOrderVo> pageMerMemberOrder(Page page, MerMemberNoClearOrderDto merMemberNoClearOrderDto) {
- List<MerMemberNoClearOrderVo> merMemberNoClearOrderVoList = orderMapper.pageMerMemberOrder(page, merMemberNoClearOrderDto.getMemberUserId());
+ public List<MerMemberOrderVo> pageMerMemberOrder(Page page, MerMemberNoClearOrderDto merMemberNoClearOrderDto) {
+ List<MerMemberOrderVo> merMemberNoClearOrderVoList = orderMapper.pageMerMemberOrder(page, merMemberNoClearOrderDto.getMemberUserId(),merMemberNoClearOrderDto.getShopId());
if (merMemberNoClearOrderVoList != null && !merMemberNoClearOrderVoList.isEmpty()) {
BigDecimal zeroBig = new BigDecimal("0.00");
- for (MerMemberNoClearOrderVo merMemberNoClearOrderVo : merMemberNoClearOrderVoList) {
- merMemberNoClearOrderVo.setUnPaidMoney(merMemberNoClearOrderVo.getReceivableMoney().subtract(merMemberNoClearOrderVo.getPayMoney()));
+ for (MerMemberOrderVo merMemberNoClearOrderVo : merMemberNoClearOrderVoList) {
if (merMemberNoClearOrderVo.getUnPaidMoney() == null) {
+ merMemberNoClearOrderVo.setUnPaidMoney(zeroBig);
+ }
+ if(merMemberNoClearOrderVo.getUnPaidMoney().compareTo(zeroBig)<0){
merMemberNoClearOrderVo.setUnPaidMoney(zeroBig);
}
}
@@ -2437,7 +2666,9 @@
// 遍历列表,设置店铺名称、用户名称和未支付金额
for (MgtShopOrderPageVo mgtShopOrderPageVo : shopOrderPageVoList) {
if (shopMap != null && !shopMap.isEmpty()) {
- mgtShopOrderPageVo.setShopName(shopMap.get(mgtShopOrderPageVo.getShopId()).getShopName());
+ if(shopMap.get(mgtShopOrderPageVo.getShopId())!=null){
+ mgtShopOrderPageVo.setShopName(shopMap.get(mgtShopOrderPageVo.getShopId()).getShopName());
+ }
}
if (userMap != null && !userMap.isEmpty()) {
if (userMap.get(mgtShopOrderPageVo.getUserId()) != null) {
@@ -2576,55 +2807,92 @@
*/
@Override
public MgtTotalOrderTotalVo getTotalOrderTotal(MgtBaseShopDto mgtBaseShopDto) {
+ //订单数量 订单金额
MgtTotalOrderTotalVo mgtTotalOrderTotalVo = orderMapper.getTotalOrderTotalOrderFrom(mgtBaseShopDto);
//MgtTotalOrderTotalVo mgtTotalOrderTotalVoGoodsType = orderMapper.getTotalOrderTotalGoodsType(mgtBaseShopDto);
- List<MgtMapTotalPlusVo> MgtMapIntTotalVos = orderMapper.listTotalOrderTotal(mgtBaseShopDto);
- if (MgtMapIntTotalVos != null && MgtMapIntTotalVos.size() > 0) {
- String[] orderTotalKey = new String[MgtMapIntTotalVos.size()];
- Integer[] orderTotalValue = new Integer[MgtMapIntTotalVos.size()];
- BigDecimal[] orderMoneyValue = new BigDecimal[MgtMapIntTotalVos.size()];
- for (int i = 0; i < MgtMapIntTotalVos.size(); i++) {
- orderTotalKey[i] = MgtMapIntTotalVos.get(i).getMapKey();
- orderTotalValue[i] = MgtMapIntTotalVos.get(i).getMapValueFirst();
- orderMoneyValue[i] = MgtMapIntTotalVos.get(i).getMapValueSecond();
- }
- mgtTotalOrderTotalVo.setOrderTotalKey(orderTotalKey);
- mgtTotalOrderTotalVo.setOrderTotalValue(orderTotalValue);
- mgtTotalOrderTotalVo.setOrderMoneyValue(orderMoneyValue);
- }
+
//获取商品分类销售数据
List<MgtMapTotalPlusVo> MgtMapIntTotalVoGoodsType = orderMapper.listTotalOrderTotalGoodsType(mgtBaseShopDto);
List<MgtMapIntTotalVo> goodsTypeTotalList = new ArrayList<>();
List<MgtMapBigTotalVo> goodsTypeMoneyList = new ArrayList<>();
if (MgtMapIntTotalVoGoodsType != null && MgtMapIntTotalVoGoodsType.size() > 0) {
- MgtMapIntTotalVo MgtMapIntTotalVo;
+ MgtMapIntTotalVo mgtMapIntTotalVo;
MgtMapBigTotalVo mgtMapBigTotalVo;
// 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
+ Boolean noCycle = true;
+ Boolean noService = true;
+ Boolean noExperience = true;
+ Boolean noGoods = true;
for (int i = 0; i < MgtMapIntTotalVoGoodsType.size(); i++) {
- MgtMapIntTotalVo = new MgtMapIntTotalVo();
+ mgtMapIntTotalVo = new MgtMapIntTotalVo();
mgtMapBigTotalVo = new MgtMapBigTotalVo();
- MgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
+ mgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
mgtMapBigTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond());
if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("1")) {
- MgtMapIntTotalVo.setMapKey("周期");
+ mgtMapIntTotalVo.setMapKey("周期");
mgtMapBigTotalVo.setMapKey("周期");
mgtTotalOrderTotalVo.setCycleTotal(mgtTotalOrderTotalVo.getCycleTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
mgtTotalOrderTotalVo.setCycleMoney(mgtTotalOrderTotalVo.getCycleMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()));
+ noCycle= false;
} else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("2")) {
- MgtMapIntTotalVo.setMapKey("服务");
+ mgtMapIntTotalVo.setMapKey("服务");
mgtMapBigTotalVo.setMapKey("服务");
mgtTotalOrderTotalVo.setServiceTotal(mgtTotalOrderTotalVo.getServiceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
mgtTotalOrderTotalVo.setServiceMoney(mgtTotalOrderTotalVo.getServiceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()));
+ noService= false;
} else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("3")) {
- MgtMapIntTotalVo.setMapKey("体验");
+ mgtMapIntTotalVo.setMapKey("体验");
mgtMapBigTotalVo.setMapKey("体验");
mgtTotalOrderTotalVo.setExperienceTotal(mgtTotalOrderTotalVo.getExperienceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
mgtTotalOrderTotalVo.setExperienceMoney(mgtTotalOrderTotalVo.getExperienceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()));
+ noExperience = false;
} else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) {
- MgtMapIntTotalVo.setMapKey("单品");
+ mgtMapIntTotalVo.setMapKey("单品");
mgtMapBigTotalVo.setMapKey("单品");
+ noGoods = false;
}
- goodsTypeTotalList.add(MgtMapIntTotalVo);
+ //补充缺少类型
+ if(noCycle){
+ mgtMapIntTotalVo = new MgtMapIntTotalVo();
+ mgtMapIntTotalVo.setMapKey("周期");
+ mgtMapIntTotalVo.setMapValue(0);
+ goodsTypeTotalList.add(mgtMapIntTotalVo);
+ mgtMapBigTotalVo = new MgtMapBigTotalVo();
+ mgtMapBigTotalVo.setMapKey("周期");
+ mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+ goodsTypeMoneyList.add(mgtMapBigTotalVo);
+ }
+ if(noService){
+ mgtMapIntTotalVo = new MgtMapIntTotalVo();
+ mgtMapIntTotalVo.setMapKey("服务");
+ mgtMapIntTotalVo.setMapValue(0);
+ goodsTypeTotalList.add(mgtMapIntTotalVo);
+ mgtMapBigTotalVo = new MgtMapBigTotalVo();
+ mgtMapBigTotalVo.setMapKey("服务");
+ mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+ goodsTypeMoneyList.add(mgtMapBigTotalVo);
+ }
+ if(noExperience){
+ mgtMapIntTotalVo = new MgtMapIntTotalVo();
+ mgtMapIntTotalVo.setMapKey("体验");
+ mgtMapIntTotalVo.setMapValue(0);
+ goodsTypeTotalList.add(mgtMapIntTotalVo);
+ mgtMapBigTotalVo = new MgtMapBigTotalVo();
+ mgtMapBigTotalVo.setMapKey("体验");
+ mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+ goodsTypeMoneyList.add(mgtMapBigTotalVo);
+ }
+ if(noGoods){
+ mgtMapIntTotalVo = new MgtMapIntTotalVo();
+ mgtMapIntTotalVo.setMapKey("单品");
+ mgtMapIntTotalVo.setMapValue(0);
+ goodsTypeTotalList.add(mgtMapIntTotalVo);
+ mgtMapBigTotalVo = new MgtMapBigTotalVo();
+ mgtMapBigTotalVo.setMapKey("单品");
+ mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+ goodsTypeMoneyList.add(mgtMapBigTotalVo);
+ }
+ goodsTypeTotalList.add(mgtMapIntTotalVo);
goodsTypeMoneyList.add(mgtMapBigTotalVo);
}
mgtTotalOrderTotalVo.setGoodsTypeTotalList(goodsTypeTotalList);
@@ -2641,6 +2909,26 @@
if (orderFromList != null && orderFromList.size() > 0) {
orderFromList = bigListRemoveNull(orderFromList);
mgtTotalOrderTotalVo.setOrderFromRankList(orderFromList);
+ }
+ //订单分布
+ //日期全部时固定为5天
+ if(StringUtils.isBlank(mgtBaseShopDto.getStartDate())){
+ mgtBaseShopDto.setEndDate(DateUtils.getDate());
+ mgtBaseShopDto.setStartDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4)));
+ }
+ List<MgtMapTotalPlusVo> MgtMapIntTotalVos = orderMapper.listTotalOrderTotal(mgtBaseShopDto);
+ if (MgtMapIntTotalVos != null && MgtMapIntTotalVos.size() > 0) {
+ String[] orderTotalKey = new String[MgtMapIntTotalVos.size()];
+ Integer[] orderTotalValue = new Integer[MgtMapIntTotalVos.size()];
+ BigDecimal[] orderMoneyValue = new BigDecimal[MgtMapIntTotalVos.size()];
+ for (int i = 0; i < MgtMapIntTotalVos.size(); i++) {
+ orderTotalKey[i] = MgtMapIntTotalVos.get(i).getMapKey();
+ orderTotalValue[i] = MgtMapIntTotalVos.get(i).getMapValueFirst();
+ orderMoneyValue[i] = MgtMapIntTotalVos.get(i).getMapValueSecond();
+ }
+ mgtTotalOrderTotalVo.setOrderTotalKey(orderTotalKey);
+ mgtTotalOrderTotalVo.setOrderTotalValue(orderTotalValue);
+ mgtTotalOrderTotalVo.setOrderMoneyValue(orderMoneyValue);
}
return mgtTotalOrderTotalVo;
}
@@ -2686,8 +2974,14 @@
*/
@Override
public MgtTotalActivityTotalVo getTotalActivityTotal(MgtBaseShopDto mgtBaseShopDto) {
- //获取基础统计
+ //获取基础统计 总订单数 订单金额 参与人数
MgtTotalActivityTotalVo totalActivityTotalVo = orderMapper.getTotalActivityTotal(mgtBaseShopDto);
+ //获客人数
+ MgtTotalActivityTotalVo totalActivityMemberTotalVo = orderMapper.getTotalActivityMemberTotal(mgtBaseShopDto);
+ totalActivityTotalVo.setOrderPerson(totalActivityMemberTotalVo.getOrderPerson());
+ totalActivityTotalVo.setCyclePerson(totalActivityMemberTotalVo.getCyclePerson());
+ totalActivityTotalVo.setServicePerson(totalActivityMemberTotalVo.getServicePerson());
+ totalActivityTotalVo.setExperiencePerson(totalActivityMemberTotalVo.getExperiencePerson());
//获取商品分类销售数据
List<MgtMapTotalPlusVo> MgtMapIntTotalVoGoodsType = orderMapper.listTotalActivityTotalGoodsType(mgtBaseShopDto);
if (MgtMapIntTotalVoGoodsType != null && MgtMapIntTotalVoGoodsType.size() > 0) {
@@ -2700,40 +2994,95 @@
totalActivityTotalVo.setExperienceTotal(0);
totalActivityTotalVo.setExperienceMoney(BigDecimal.ZERO);
// 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
- MgtMapIntTotalVo MgtMapIntTotalVo;
+ MgtMapIntTotalVo mgtMapIntTotalVo;
MgtMapBigTotalVo mgtMapBigTotalVo;
// 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
+ Boolean noCycle = true;
+ Boolean noService = true;
+ Boolean noExperience = true;
+ Boolean noGoods = true;
for (int i = 0; i < MgtMapIntTotalVoGoodsType.size(); i++) {
- MgtMapIntTotalVo = new MgtMapIntTotalVo();
+ mgtMapIntTotalVo = new MgtMapIntTotalVo();
mgtMapBigTotalVo = new MgtMapBigTotalVo();
- MgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
+ mgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
mgtMapBigTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond());
if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("1")) {
- MgtMapIntTotalVo.setMapKey("周期");
+ mgtMapIntTotalVo.setMapKey("周期");
mgtMapBigTotalVo.setMapKey("周期");
totalActivityTotalVo.setCycleTotal(totalActivityTotalVo.getCycleTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
totalActivityTotalVo.setCycleMoney(totalActivityTotalVo.getCycleMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()));
+ noCycle= false;
} else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("2")) {
- MgtMapIntTotalVo.setMapKey("服务");
+ mgtMapIntTotalVo.setMapKey("服务");
mgtMapBigTotalVo.setMapKey("服务");
totalActivityTotalVo.setServiceTotal(totalActivityTotalVo.getServiceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
totalActivityTotalVo.setServiceMoney(totalActivityTotalVo.getServiceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()));
+ noService= false;
} else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("3")) {
- MgtMapIntTotalVo.setMapKey("体验");
+ mgtMapIntTotalVo.setMapKey("体验");
mgtMapBigTotalVo.setMapKey("体验");
totalActivityTotalVo.setExperienceTotal(totalActivityTotalVo.getExperienceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
totalActivityTotalVo.setExperienceMoney(totalActivityTotalVo.getExperienceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()));
+ noExperience = false;
} else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) {
- MgtMapIntTotalVo.setMapKey("单品");
+ mgtMapIntTotalVo.setMapKey("单品");
mgtMapBigTotalVo.setMapKey("单品");
+ noGoods = false;
}
- goodsTypeTotalList.add(MgtMapIntTotalVo);
+ goodsTypeTotalList.add(mgtMapIntTotalVo);
+ goodsTypeMoneyList.add(mgtMapBigTotalVo);
+ }
+ //补充缺少类型
+ if(noCycle){
+ mgtMapIntTotalVo = new MgtMapIntTotalVo();
+ mgtMapIntTotalVo.setMapKey("周期");
+ mgtMapIntTotalVo.setMapValue(0);
+ goodsTypeTotalList.add(mgtMapIntTotalVo);
+ mgtMapBigTotalVo = new MgtMapBigTotalVo();
+ mgtMapBigTotalVo.setMapKey("周期");
+ mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+ goodsTypeMoneyList.add(mgtMapBigTotalVo);
+ }
+ if(noService){
+ mgtMapIntTotalVo = new MgtMapIntTotalVo();
+ mgtMapIntTotalVo.setMapKey("服务");
+ mgtMapIntTotalVo.setMapValue(0);
+ goodsTypeTotalList.add(mgtMapIntTotalVo);
+ mgtMapBigTotalVo = new MgtMapBigTotalVo();
+ mgtMapBigTotalVo.setMapKey("服务");
+ mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+ goodsTypeMoneyList.add(mgtMapBigTotalVo);
+ }
+ if(noExperience){
+ mgtMapIntTotalVo = new MgtMapIntTotalVo();
+ mgtMapIntTotalVo.setMapKey("体验");
+ mgtMapIntTotalVo.setMapValue(0);
+ goodsTypeTotalList.add(mgtMapIntTotalVo);
+ mgtMapBigTotalVo = new MgtMapBigTotalVo();
+ mgtMapBigTotalVo.setMapKey("体验");
+ mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+ goodsTypeMoneyList.add(mgtMapBigTotalVo);
+ }
+ if(noGoods){
+ mgtMapIntTotalVo = new MgtMapIntTotalVo();
+ mgtMapIntTotalVo.setMapKey("单品");
+ mgtMapIntTotalVo.setMapValue(0);
+ goodsTypeTotalList.add(mgtMapIntTotalVo);
+ mgtMapBigTotalVo = new MgtMapBigTotalVo();
+ mgtMapBigTotalVo.setMapKey("单品");
+ mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
goodsTypeMoneyList.add(mgtMapBigTotalVo);
}
totalActivityTotalVo.setGoodsTypeTotalList(goodsTypeTotalList);
totalActivityTotalVo.setGoodsTypeMoneyList(goodsTypeMoneyList);
}
+
//获取订单分布
+ //日期全部时固定为5天
+ if(StringUtils.isBlank(mgtBaseShopDto.getStartDate())){
+ mgtBaseShopDto.setEndDate(DateUtils.getDate());
+ mgtBaseShopDto.setStartDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4)));
+ }
List<MgtMapTotalPlusVo> MgtMapIntTotalVos = orderMapper.listTotalActivityTotal(mgtBaseShopDto);
if (MgtMapIntTotalVos != null && MgtMapIntTotalVos.size() > 0) {
String[] orderTotalKey = new String[MgtMapIntTotalVos.size()];
@@ -2748,6 +3097,71 @@
totalActivityTotalVo.setOrderTotalValue(orderTotalValue);
totalActivityTotalVo.setOrderMoneyValue(orderMoneyValue);
}
+ //参与人数
+ List<MgtMapIntTotalVo> joinList = orderMapper.getActivityMemberTotal(mgtBaseShopDto);
+ // 将查询结果转为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(mgtBaseShopDto.getStartDate(), mgtBaseShopDto.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);
+ return totalActivityTotalVo;
+ }
+
+ @Override
+ public MgtTotalActivityTotalVo getTotalActivityJoinMemberTotal(MgtBaseShopDto mgtBaseShopDto) {
+ MgtTotalActivityTotalVo totalActivityTotalVo = new MgtTotalActivityTotalVo();
+ //日期全部时固定为5天
+ if(StringUtils.isBlank(mgtBaseShopDto.getStartDate())){
+ mgtBaseShopDto.setEndDate(DateUtils.getDate());
+ mgtBaseShopDto.setStartDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4)));
+ }
+ if(mgtBaseShopDto.getAgeType()!=null){
+ List<Long> userIdList = remoteMemberService.listUserIdByAgeType(mgtBaseShopDto.getAgeType()).getData();
+ mgtBaseShopDto.setUserIdList(userIdList);
+ }
+ //参与人数
+ List<MgtMapIntTotalVo> joinList = orderMapper.getActivityMemberTotal(mgtBaseShopDto);
+ // 将查询结果转为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(mgtBaseShopDto.getStartDate(), mgtBaseShopDto.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);
return totalActivityTotalVo;
}
@@ -2758,7 +3172,7 @@
* @author jqs
* @date 2023/6/20 9:56
*/
- @Override
+ /*@Override
public MgtTotalActivityTotalVo getTotalActivityAgeRank(MgtActivityAgeDto mgtActivityAgeDto) {
List<Long> userIds = orderMapper.getUserIdAgeRank(mgtActivityAgeDto);
mgtActivityAgeDto.setUserIds(userIds);
@@ -2780,7 +3194,7 @@
totalActivityTotalVo.setActivityAgeKey(activityAgeKey);
totalActivityTotalVo.setActivityAgeValue(activityAgeValue);
return totalActivityTotalVo;
- }
+ }*/
/**
* @param mgtBaseShopDto
@@ -2791,13 +3205,31 @@
*/
@Override
public MgtTotalDataTotalVo getTotalDataTotal(MgtBaseShopDto mgtBaseShopDto) {
- //获取人数统计
- MgtTotalDataTotalVo mgtTotalDataTotalVo = orderMapper.getTotalDataTotal(mgtBaseShopDto);
+
+ //营业额
BigDecimal salesTotal = orderMapper.shopSalesTotal(mgtBaseShopDto);
- mgtTotalDataTotalVo.setSalesTotal(salesTotal);
+ MgtTotalDataTotalVo mgtTotalDataTotalVo = orderMapper.getTotalDataTotal(mgtBaseShopDto);
+ // 获取当月时间
+ LocalDate currentDate = LocalDate.now();
+ LocalDate firstDayOfMonth = currentDate.withDayOfMonth(1);
+ LocalDate lastDayOfMonth = currentDate.withDayOfMonth(currentDate.lengthOfMonth());
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+ String firstDayOfMonthStr = firstDayOfMonth.format(formatter);
+ String lastDayOfMonthStr = lastDayOfMonth.format(formatter);
+ mgtBaseShopDto.setStartDate(firstDayOfMonthStr);
+ mgtBaseShopDto.setEndDate(lastDayOfMonthStr);
+ //总进店人数 体验人数 体验开单人数 没体验开单人数
+ MgtTotalDataTotalVo mgtTotalDataMemberTotalVo = orderMapper.getTotalDataMemberTotal(mgtBaseShopDto);
+ mgtTotalDataTotalVo.setOnlyExperiencePerson(mgtTotalDataMemberTotalVo.getOnlyExperiencePerson());
+ mgtTotalDataTotalVo.setExperienceCyclePerson(mgtTotalDataMemberTotalVo.getExperienceCyclePerson());
+ mgtTotalDataTotalVo.setOnlyCyclePerson(mgtTotalDataMemberTotalVo.getOnlyCyclePerson());
+ mgtTotalDataTotalVo.setOrderPerson(mgtTotalDataMemberTotalVo.getOrderPerson());
+ //续单人数
Integer reorderPerson = orderMapper.getReorderPerson(mgtBaseShopDto);
- mgtTotalDataTotalVo.setReorderPerson(reorderPerson);
+ //回头客
Integer returnedPerson = orderMapper.getReturnedPerson(mgtBaseShopDto);
+ mgtTotalDataTotalVo.setSalesTotal(salesTotal);
+ mgtTotalDataTotalVo.setReorderPerson(reorderPerson);
mgtTotalDataTotalVo.setReturnedPerson(returnedPerson);
return mgtTotalDataTotalVo;
}
@@ -2838,10 +3270,28 @@
mgtBasePlatformDto.setUserIdList(userIdList);
}
}
- List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData();
+ List<Long> shopIdList = new ArrayList<>();
+ if(mgtBasePlatformDto.getShopId()!=null){
+ shopIdList.add(mgtBasePlatformDto.getShopId());
+ }else{
+ shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData();
+ }
List<MgtTotalDataTotalVo> mgtTotalDataTotalVoList = new ArrayList<>();
MgtBaseShopDto mgtBaseShopDto;
MgtTotalDataTotalVo mgtTotalDataTotalVo;
+ MgtSimpleShopVo simpleShopVo;
+ HashSet<String> set = new HashSet<>();
+ // 遍历MgtMemberOrderPageVoList,获取shopId并添加到set中
+ for (Long entity : shopIdList) {
+ set.add(entity.toString());
+ }
+ String joinedString = String.join(",", set);
+ MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto();
+ mgtBaseBathDto.setIds(joinedString);
+ List<MgtSimpleShopVo> simpleShopVoList = remoteShopService.listShopSimpleVoByIds(mgtBaseBathDto).getData();
+ // 将MgtSimpleShopVoList转换为Map<Long, MgtSimpleShopVo>,以便后续根据shopId获取对应的MgtSimpleShopVo
+ Map<Long, MgtSimpleShopVo> shopMap = simpleShopVoList.stream()
+ .collect(Collectors.toMap(MgtSimpleShopVo::getShopId, Function.identity()));
if (shopIdList != null && !shopIdList.isEmpty()) {
for (Long shopId : shopIdList) {
mgtBaseShopDto = new MgtBaseShopDto();
@@ -2849,8 +3299,10 @@
mgtBaseShopDto.setEndDate(mgtBasePlatformDto.getEndDate());
mgtBaseShopDto.setShopId(shopId);
mgtTotalDataTotalVo = this.getTotalDataTotal(mgtBaseShopDto);
- Shop shop = remoteShopService.getShop(shopId).getData();
- mgtTotalDataTotalVo.setShopName(shop.getShopName());
+ simpleShopVo = shopMap.get(shopId);
+ if (simpleShopVo!=null) {
+ mgtTotalDataTotalVo.setShopName(simpleShopVo.getShopName());
+ }
mgtTotalDataTotalVoList.add(mgtTotalDataTotalVo);
}
}
@@ -2882,23 +3334,13 @@
}
}
List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData();
+ if(mgtBasePlatformDto.getShopId()!=null){
+ shopIdList = new ArrayList<>();
+ shopIdList.add(mgtBasePlatformDto.getShopId());
+ }
mgtBasePlatformDto.setShopIdList(shopIdList);
//获取基础统计
MgtTotalOrderTotalVo mgtTotalOrderTotalVo = orderMapper.getPlTotalOrderTotalOrderFrom(mgtBasePlatformDto);
- List<MgtMapTotalPlusVo> MgtMapIntTotalVos = orderMapper.listPlTotalOrderTotal(mgtBasePlatformDto);
- if (MgtMapIntTotalVos != null && MgtMapIntTotalVos.size() > 0) {
- String[] orderTotalKey = new String[MgtMapIntTotalVos.size()];
- Integer[] orderTotalValue = new Integer[MgtMapIntTotalVos.size()];
- BigDecimal[] orderMoneyValue = new BigDecimal[MgtMapIntTotalVos.size()];
- for (int i = 0; i < MgtMapIntTotalVos.size(); i++) {
- orderTotalKey[i] = MgtMapIntTotalVos.get(i).getMapKey();
- orderTotalValue[i] = MgtMapIntTotalVos.get(i).getMapValueFirst();
- orderMoneyValue[i] = MgtMapIntTotalVos.get(i).getMapValueSecond();
- }
- mgtTotalOrderTotalVo.setOrderTotalKey(orderTotalKey);
- mgtTotalOrderTotalVo.setOrderTotalValue(orderTotalValue);
- mgtTotalOrderTotalVo.setOrderMoneyValue(orderMoneyValue);
- }
//获取商品分类销售数据
List<MgtMapTotalPlusVo> MgtMapIntTotalVoGoodsType = orderMapper.listPlTotalOrderTotalGoodsType(mgtBasePlatformDto);
List<MgtMapIntTotalVo> goodsTypeTotalList = new ArrayList<>();
@@ -2910,34 +3352,83 @@
mgtTotalOrderTotalVo.setExperienceTotal(0);
mgtTotalOrderTotalVo.setExperienceMoney(BigDecimal.ZERO);
if (MgtMapIntTotalVoGoodsType != null && MgtMapIntTotalVoGoodsType.size() > 0) {
- MgtMapIntTotalVo MgtMapIntTotalVo;
+ MgtMapIntTotalVo mgtMapIntTotalVo;
MgtMapBigTotalVo mgtMapBigTotalVo;
// 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
+ Boolean noCycle = true;
+ Boolean noService = true;
+ Boolean noExperience = true;
+ Boolean noGoods = true;
for (int i = 0; i < MgtMapIntTotalVoGoodsType.size(); i++) {
- MgtMapIntTotalVo = new MgtMapIntTotalVo();
+ mgtMapIntTotalVo = new MgtMapIntTotalVo();
mgtMapBigTotalVo = new MgtMapBigTotalVo();
- MgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
+ mgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
mgtMapBigTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond());
if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("1")) {
- MgtMapIntTotalVo.setMapKey("周期");
+ mgtMapIntTotalVo.setMapKey("周期");
mgtMapBigTotalVo.setMapKey("周期");
mgtTotalOrderTotalVo.setCycleTotal(mgtTotalOrderTotalVo.getCycleTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
mgtTotalOrderTotalVo.setCycleMoney(mgtTotalOrderTotalVo.getCycleMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()));
+ noCycle= false;
} else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("2")) {
- MgtMapIntTotalVo.setMapKey("服务");
+ mgtMapIntTotalVo.setMapKey("服务");
mgtMapBigTotalVo.setMapKey("服务");
mgtTotalOrderTotalVo.setServiceTotal(mgtTotalOrderTotalVo.getServiceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
mgtTotalOrderTotalVo.setServiceMoney(mgtTotalOrderTotalVo.getServiceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()));
+ noService= false;
} else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("3")) {
- MgtMapIntTotalVo.setMapKey("体验");
+ mgtMapIntTotalVo.setMapKey("体验");
mgtMapBigTotalVo.setMapKey("体验");
mgtTotalOrderTotalVo.setExperienceTotal(mgtTotalOrderTotalVo.getExperienceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
mgtTotalOrderTotalVo.setExperienceMoney(mgtTotalOrderTotalVo.getExperienceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()));
+ noExperience = false;
} else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) {
- MgtMapIntTotalVo.setMapKey("单品");
+ mgtMapIntTotalVo.setMapKey("单品");
mgtMapBigTotalVo.setMapKey("单品");
+ noGoods = false;
}
- goodsTypeTotalList.add(MgtMapIntTotalVo);
+ goodsTypeTotalList.add(mgtMapIntTotalVo);
+ goodsTypeMoneyList.add(mgtMapBigTotalVo);
+ }
+ //补充缺少类型
+ if(noCycle){
+ mgtMapIntTotalVo = new MgtMapIntTotalVo();
+ mgtMapIntTotalVo.setMapKey("周期");
+ mgtMapIntTotalVo.setMapValue(0);
+ goodsTypeTotalList.add(mgtMapIntTotalVo);
+ mgtMapBigTotalVo = new MgtMapBigTotalVo();
+ mgtMapBigTotalVo.setMapKey("周期");
+ mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+ goodsTypeMoneyList.add(mgtMapBigTotalVo);
+ }
+ if(noService){
+ mgtMapIntTotalVo = new MgtMapIntTotalVo();
+ mgtMapIntTotalVo.setMapKey("服务");
+ mgtMapIntTotalVo.setMapValue(0);
+ goodsTypeTotalList.add(mgtMapIntTotalVo);
+ mgtMapBigTotalVo = new MgtMapBigTotalVo();
+ mgtMapBigTotalVo.setMapKey("服务");
+ mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+ goodsTypeMoneyList.add(mgtMapBigTotalVo);
+ }
+ if(noExperience){
+ mgtMapIntTotalVo = new MgtMapIntTotalVo();
+ mgtMapIntTotalVo.setMapKey("体验");
+ mgtMapIntTotalVo.setMapValue(0);
+ goodsTypeTotalList.add(mgtMapIntTotalVo);
+ mgtMapBigTotalVo = new MgtMapBigTotalVo();
+ mgtMapBigTotalVo.setMapKey("体验");
+ mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+ goodsTypeMoneyList.add(mgtMapBigTotalVo);
+ }
+ if(noGoods){
+ mgtMapIntTotalVo = new MgtMapIntTotalVo();
+ mgtMapIntTotalVo.setMapKey("单品");
+ mgtMapIntTotalVo.setMapValue(0);
+ goodsTypeTotalList.add(mgtMapIntTotalVo);
+ mgtMapBigTotalVo = new MgtMapBigTotalVo();
+ mgtMapBigTotalVo.setMapKey("单品");
+ mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
goodsTypeMoneyList.add(mgtMapBigTotalVo);
}
mgtTotalOrderTotalVo.setGoodsTypeTotalList(goodsTypeTotalList);
@@ -2955,6 +3446,36 @@
orderFromList = bigListRemoveNull(orderFromList);
mgtTotalOrderTotalVo.setOrderFromRankList(orderFromList);
}
+ //订单分布
+ //日期全部时固定为5天
+ Boolean fillZero = false;
+ if(StringUtils.isBlank(mgtBasePlatformDto.getStartDate())){
+ mgtBasePlatformDto.setEndDate(DateUtils.getDate());
+ mgtBasePlatformDto.setStartDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4)));
+ fillZero = true;
+ }
+ List<MgtMapTotalPlusVo> MgtMapIntTotalVos = orderMapper.listPlTotalOrderTotal(mgtBasePlatformDto);
+ if (MgtMapIntTotalVos != null && MgtMapIntTotalVos.size() > 0) {
+ String[] orderTotalKey = new String[MgtMapIntTotalVos.size()];
+ Integer[] orderTotalValue = new Integer[MgtMapIntTotalVos.size()];
+ BigDecimal[] orderMoneyValue = new BigDecimal[MgtMapIntTotalVos.size()];
+ for (int i = 0; i < MgtMapIntTotalVos.size(); i++) {
+ orderTotalKey[i] = MgtMapIntTotalVos.get(i).getMapKey();
+ orderTotalValue[i] = MgtMapIntTotalVos.get(i).getMapValueFirst();
+ orderMoneyValue[i] = MgtMapIntTotalVos.get(i).getMapValueSecond();
+ }
+ if(fillZero){
+ MerOrderDistributionTotalVo merOrderDistributionTotalVo = fillOrderTotalKeyAndValuesToRecentFiveDays(orderTotalKey,orderTotalValue,orderMoneyValue);
+ mgtTotalOrderTotalVo.setOrderTotalKey(merOrderDistributionTotalVo.getOrderTotalKey());
+ mgtTotalOrderTotalVo.setOrderTotalValue(merOrderDistributionTotalVo.getOrderTotalValue());
+ mgtTotalOrderTotalVo.setOrderMoneyValue(merOrderDistributionTotalVo.getOrderMoneyValue());
+ }else{
+ mgtTotalOrderTotalVo.setOrderTotalKey(orderTotalKey);
+ mgtTotalOrderTotalVo.setOrderTotalValue(orderTotalValue);
+ mgtTotalOrderTotalVo.setOrderMoneyValue(orderMoneyValue);
+ }
+
+ }
return mgtTotalOrderTotalVo;
}
@@ -2967,8 +3488,11 @@
*/
@Override
public MgtPlTotalActivityTotalVo getPlTotalActivityTotal(MgtBasePlatformDto mgtBasePlatformDto) {
+ if(mgtBasePlatformDto.getActivityFrom()!=null&&mgtBasePlatformDto.getActivityFrom() == 2){
+ return new MgtPlTotalActivityTotalVo();
+ }
//获取需要关联的用户id集合
- if (mgtBasePlatformDto.getDeptId() != null) {
+ /*if (mgtBasePlatformDto.getDeptId() != null) {
List<Long> userIdList = new ArrayList<>();
if (mgtBasePlatformDto.getUserId() != null) {
userIdList.add(mgtBasePlatformDto.getUserId());
@@ -2981,11 +3505,21 @@
if (!userIdList.isEmpty()) {
mgtBasePlatformDto.setUserIdList(userIdList);
}
- }
+ }*/
List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData();
+ if(mgtBasePlatformDto.getShopId()!=null){
+ shopIdList = new ArrayList<>();
+ shopIdList.add(mgtBasePlatformDto.getShopId());
+ }
mgtBasePlatformDto.setShopIdList(shopIdList);
//获取基础统计
MgtPlTotalActivityTotalVo totalActivityTotalVo = orderMapper.getPlTotalActivityTotal(mgtBasePlatformDto);
+ //获客人数
+ MgtPlTotalActivityTotalVo totalActivityMemberTotalVo = orderMapper.getPlTotalActivityMemberTotal(mgtBasePlatformDto);
+ totalActivityTotalVo.setOrderPerson(totalActivityMemberTotalVo.getOrderPerson());
+ totalActivityTotalVo.setCyclePerson(totalActivityMemberTotalVo.getCyclePerson());
+ totalActivityTotalVo.setServicePerson(totalActivityMemberTotalVo.getServicePerson());
+ totalActivityTotalVo.setExperiencePerson(totalActivityMemberTotalVo.getExperiencePerson());
//获取商品分类销售数据
List<MgtMapTotalPlusVo> MgtMapIntTotalVoGoodsType = orderMapper.listPlTotalActivityTotalGoodsType(mgtBasePlatformDto);
List<MgtMapIntTotalVo> goodsTypeTotalList = new ArrayList<>();
@@ -2997,36 +3531,92 @@
totalActivityTotalVo.setExperienceTotal(0);
totalActivityTotalVo.setExperienceMoney(BigDecimal.ZERO);
if (MgtMapIntTotalVoGoodsType != null && MgtMapIntTotalVoGoodsType.size() > 0) {
- MgtMapIntTotalVo MgtMapIntTotalVo;
+ MgtMapIntTotalVo mgtMapIntTotalVo;
MgtMapBigTotalVo mgtMapBigTotalVo;
// 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
+ Boolean noCycle = true;
+ Boolean noService = true;
+ Boolean noExperience = true;
+ Boolean noGoods = true;
for (int i = 0; i < MgtMapIntTotalVoGoodsType.size(); i++) {
- MgtMapIntTotalVo = new MgtMapIntTotalVo();
+ mgtMapIntTotalVo = new MgtMapIntTotalVo();
mgtMapBigTotalVo = new MgtMapBigTotalVo();
- MgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
+ mgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
mgtMapBigTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond());
if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("1")) {
- MgtMapIntTotalVo.setMapKey("周期");
+ mgtMapIntTotalVo.setMapKey("周期");
mgtMapBigTotalVo.setMapKey("周期");
totalActivityTotalVo.setCycleTotal(totalActivityTotalVo.getCycleTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
totalActivityTotalVo.setCycleMoney(totalActivityTotalVo.getCycleMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()));
+ noCycle= false;
} else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("2")) {
- MgtMapIntTotalVo.setMapKey("服务");
+ mgtMapIntTotalVo.setMapKey("服务");
mgtMapBigTotalVo.setMapKey("服务");
totalActivityTotalVo.setServiceTotal(totalActivityTotalVo.getServiceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
totalActivityTotalVo.setServiceMoney(totalActivityTotalVo.getServiceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()));
+ noService= false;
} else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("3")) {
- MgtMapIntTotalVo.setMapKey("体验");
+ mgtMapIntTotalVo.setMapKey("体验");
mgtMapBigTotalVo.setMapKey("体验");
totalActivityTotalVo.setExperienceTotal(totalActivityTotalVo.getExperienceTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
totalActivityTotalVo.setExperienceMoney(totalActivityTotalVo.getExperienceMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()));
+ noExperience = false;
} else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) {
- MgtMapIntTotalVo.setMapKey("单品");
+ mgtMapIntTotalVo.setMapKey("单品");
mgtMapBigTotalVo.setMapKey("单品");
+ noGoods = false;
}
+ goodsTypeTotalList.add(mgtMapIntTotalVo);
+ goodsTypeMoneyList.add(mgtMapBigTotalVo);
+ }
+ //补充缺少类型
+ if(noCycle){
+ mgtMapIntTotalVo = new MgtMapIntTotalVo();
+ mgtMapIntTotalVo.setMapKey("周期");
+ mgtMapIntTotalVo.setMapValue(0);
+ goodsTypeTotalList.add(mgtMapIntTotalVo);
+ mgtMapBigTotalVo = new MgtMapBigTotalVo();
+ mgtMapBigTotalVo.setMapKey("周期");
+ mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+ goodsTypeMoneyList.add(mgtMapBigTotalVo);
+ }
+ if(noService){
+ mgtMapIntTotalVo = new MgtMapIntTotalVo();
+ mgtMapIntTotalVo.setMapKey("服务");
+ mgtMapIntTotalVo.setMapValue(0);
+ goodsTypeTotalList.add(mgtMapIntTotalVo);
+ mgtMapBigTotalVo = new MgtMapBigTotalVo();
+ mgtMapBigTotalVo.setMapKey("服务");
+ mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+ goodsTypeMoneyList.add(mgtMapBigTotalVo);
+ }
+ if(noExperience){
+ mgtMapIntTotalVo = new MgtMapIntTotalVo();
+ mgtMapIntTotalVo.setMapKey("体验");
+ mgtMapIntTotalVo.setMapValue(0);
+ goodsTypeTotalList.add(mgtMapIntTotalVo);
+ mgtMapBigTotalVo = new MgtMapBigTotalVo();
+ mgtMapBigTotalVo.setMapKey("体验");
+ mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+ goodsTypeMoneyList.add(mgtMapBigTotalVo);
+ }
+ if(noGoods){
+ mgtMapIntTotalVo = new MgtMapIntTotalVo();
+ mgtMapIntTotalVo.setMapKey("单品");
+ mgtMapIntTotalVo.setMapValue(0);
+ goodsTypeTotalList.add(mgtMapIntTotalVo);
+ mgtMapBigTotalVo = new MgtMapBigTotalVo();
+ mgtMapBigTotalVo.setMapKey("单品");
+ mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+ goodsTypeMoneyList.add(mgtMapBigTotalVo);
}
totalActivityTotalVo.setGoodsTypeTotalList(goodsTypeTotalList);
totalActivityTotalVo.setGoodsTypeMoneyList(goodsTypeMoneyList);
+ }
+ //日期全部时固定为5天
+ if(StringUtils.isBlank(mgtBasePlatformDto.getStartDate())){
+ mgtBasePlatformDto.setEndDate(DateUtils.getDate());
+ mgtBasePlatformDto.setStartDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4)));
}
//获取订单分布
List<MgtMapTotalPlusVo> MgtMapIntTotalVos = orderMapper.listPlTotalActivityTotal(mgtBasePlatformDto);
@@ -3055,18 +3645,28 @@
mgtBaseBathDto.setIds(joinedString);
List<MgtSimpleShopVo> simpleShopVoList = remoteShopService.listShopSimpleVoByIds(mgtBaseBathDto).getData();
// 将MgtSimpleShopVoList转换为Map<Long, MgtSimpleShopVo>,以便后续根据shopId获取对应的MgtSimpleShopVo
- Map<Long, MgtSimpleShopVo> map = simpleShopVoList.stream()
+ Map<Long, MgtSimpleShopVo> shopMap = simpleShopVoList.stream()
.collect(Collectors.toMap(MgtSimpleShopVo::getShopId, Function.identity()));
//商户活动次数排名
List<MgtMapBigTotalVo> shopActivityRank = orderMapper.listPlTotalShopActivityRank(mgtBasePlatformDto);
if (shopActivityRank != null && shopActivityRank.size() > 0) {
shopActivityRank = bigListRemoveNull(shopActivityRank);
+ for(MgtMapBigTotalVo mgtMapBigTotalVo : shopActivityRank){
+ if(shopMap.get(mgtMapBigTotalVo.getMapKey())!=null){
+ mgtMapBigTotalVo.setMapKey(shopMap.get(mgtMapBigTotalVo.getMapKey()).getShopName());
+ }
+ }
totalActivityTotalVo.setShopSalesRankList(shopActivityRank);
}
//商户活动销售额排名
List<MgtMapBigTotalVo> shopActivitySalesRank = orderMapper.listPlTotalShopActivitySalesRank(mgtBasePlatformDto);
if (shopActivitySalesRank != null && shopActivitySalesRank.size() > 0) {
shopActivitySalesRank = bigListRemoveNull(shopActivitySalesRank);
+ for(MgtMapBigTotalVo mgtMapBigTotalVo : shopActivitySalesRank){
+ if(shopMap.get(mgtMapBigTotalVo.getMapKey())!=null){
+ mgtMapBigTotalVo.setMapKey(shopMap.get(mgtMapBigTotalVo.getMapKey()).getShopName());
+ }
+ }
totalActivityTotalVo.setShopSalesRankList(shopActivitySalesRank);
}
//活动销售额排名
@@ -3075,8 +3675,182 @@
activitySalesRank = bigListRemoveNull(activitySalesRank);
totalActivityTotalVo.setActivitySalesRankList(activitySalesRank);
}
+ MerTotalDto merTotalDto = new MerTotalDto();
+ merTotalDto.setAgeType(mgtBasePlatformDto.getAgeType());
+ if(mgtBasePlatformDto.getAgeType()!=null){
+ List<Long> userIdList = remoteMemberService.listUserIdByAgeType(mgtBasePlatformDto.getAgeType()).getData();
+ mgtBasePlatformDto.setUserIdList(userIdList);
+ }
+ //参与人数
+ 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;
}
+
+
+ @Override
+ public MgtPlTotalActivityTotalVo getPlTotalActivityJoinMemberTotal(MgtBasePlatformDto mgtBasePlatformDto) {
+ if(mgtBasePlatformDto.getActivityFrom()!=null&&mgtBasePlatformDto.getActivityFrom() == 2){
+ 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);
+ }
+ }*/
+ if(mgtBasePlatformDto.getAgeType()!=null){
+ List<Long> userIdList = remoteMemberService.listUserIdByAgeType(mgtBasePlatformDto.getAgeType()).getData();
+ mgtBasePlatformDto.setUserIdList(userIdList);
+ }
+ List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData();
+ mgtBasePlatformDto.setShopIdList(shopIdList);
+ MgtPlTotalActivityTotalVo totalActivityTotalVo = new MgtPlTotalActivityTotalVo();
+ //日期全部时固定为5天
+ if(StringUtils.isBlank(mgtBasePlatformDto.getStartDate())){
+ mgtBasePlatformDto.setEndDate(DateUtils.getDate());
+ mgtBasePlatformDto.setStartDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4)));
+ }
+ //参与人数
+ 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);
+ return totalActivityTotalVo;
+ }
+
+ @Override
+ public MgtPlTotalActivityTotalVo getPlTotalActivityGetMemberTotal(MgtBasePlatformDto mgtBasePlatformDto) {
+ if(mgtBasePlatformDto.getActivityFrom()!=null&&mgtBasePlatformDto.getActivityFrom() == 2){
+ 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);
+ }
+ }*/
+ if(mgtBasePlatformDto.getAgeType()!=null){
+ List<Long> userIdList = remoteMemberService.listUserIdByAgeType(mgtBasePlatformDto.getAgeType()).getData();
+ mgtBasePlatformDto.setUserIdList(userIdList);
+ }
+ List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData();
+ mgtBasePlatformDto.setShopIdList(shopIdList);
+ MgtPlTotalActivityTotalVo totalActivityTotalVo = new MgtPlTotalActivityTotalVo();
+ //日期全部时固定为5天
+ if(StringUtils.isBlank(mgtBasePlatformDto.getStartDate())){
+ mgtBasePlatformDto.setEndDate(DateUtils.getDate());
+ mgtBasePlatformDto.setStartDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4)));
+ }
+ //获客人数
+ 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));
+ }
+ // 获取日期范围
+ List<String> dateList = getDateRange(mgtBasePlatformDto.getStartDate(), mgtBasePlatformDto.getEndDate());
+ int size = dateList.size();
+ // 创建日期和成员总数的数组
+ String[] getMemberTotalKey = new String[size];
+ Integer[] getMemberTotalValue = new Integer[size];
+ // 遍历日期列表,设置日期和成员总数的数组
+ String str;
+ Integer value;
+ // 遍历日期列表,设置日期和成员总数的数组
+ 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;
+ }
+
/**
* @param mgtPlActivityAgeDto
@@ -3085,7 +3859,7 @@
* @author jqs
* @date 2023/6/20 9:56
*/
- @Override
+ /*@Override
public MgtPlTotalActivityTotalVo getPlTotalActivityAgeRank(MgtPlActivityAgeDto mgtPlActivityAgeDto) {
List<Long> userIds = orderMapper.getPlUserIdAgeRank(mgtPlActivityAgeDto);
MgtActivityAgeDto mgtActivityAgeDto = new MgtActivityAgeDto();
@@ -3109,7 +3883,7 @@
plTotalActivityTotalVo.setActivityAgeKey(activityAgeKey);
plTotalActivityTotalVo.setActivityAgeValue(activityAgeValue);
return plTotalActivityTotalVo;
- }
+ }*/
/**
* @param verifyCode
@@ -3120,6 +3894,9 @@
*/
@Override
public MerVerifyCouponVo verifyCoupon(String verifyCode, Long shopId) {
+ if(verifyCode.contains("+")){
+ verifyCode = verifyCode.substring(0, verifyCode.indexOf("+"));
+ }
// 创建MerVerifyCouponVo对象
MerVerifyCouponVo merVerifyCouponVo = new MerVerifyCouponVo();
// 调用remoteCouponService的getVerifyCoupon方法获取MerVerifyCouponGetVo对象
@@ -3134,28 +3911,41 @@
} else if (couponStatus != 1) {
throw new ServiceException(AppErrorConstant.COUPON_NO_FIND);
}
- if (memberCoupon.getCouponFrom() == 2 && !memberCoupon.getShopId().equals(shopId)) {
- throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+ Long userId = verifyCouponGetVo.getUserId();
+ Member member = remoteMemberService.getMember(userId).getData();
+ //如果是商户优惠券,验证商户一致
+ if (memberCoupon.getCouponFrom() == 2) {
+ if(!memberCoupon.getShopId().equals(member.getRelationShopId())){
+ throw new ServiceException(AppErrorConstant.BLINDING_VERIFY_SHOP_ERROR);
+ }
+ if(!memberCoupon.getShopId().equals(shopId)){
+ throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+ }
}
- //如果是平台优惠券
- if (memberCoupon.getCouponFrom() == 1 && memberCoupon.getShopId() == null) {
- memberCoupon.setShopId(shopId);
+ //如果是平台优惠券,当用户绑定商户时验证商户一致
+ if (memberCoupon.getCouponFrom() == 1 && member.getBindingFlag() == 1) {
+ /*if(!memberCoupon.getShopId().equals(member.getRelationShopId())){
+ throw new ServiceException(AppErrorConstant.BLINDING_VERIFY_SHOP_ERROR);
+ }*/
+ //判断绑定商户是否和核销商户一致
+ if(!member.getRelationShopId().equals(shopId)){
+ throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+ }
}
List<Goods> goodsList = verifyCouponGetVo.getGoodsList();
- Long userId = verifyCouponGetVo.getUserId();
// 调用remoteMemberService的getMember方法获取Member对象
- Member member = remoteMemberService.getMember(userId).getData();
merVerifyCouponVo.setUserName(member.getRealName());
merVerifyCouponVo.setUserMobile(member.getMobile());
merVerifyCouponVo.setCouponFrom(verifyCouponGetVo.getCouponFrom());
- merVerifyCouponVo.setCouponName(verifyCouponGetVo.getMemberCoupon().getCouponName());
- merVerifyCouponVo.setCreateTime(verifyCouponGetVo.getMemberCoupon().getReceiveTime());
+ merVerifyCouponVo.setCouponName(memberCoupon.getCouponName());
+ merVerifyCouponVo.setCreateTime(memberCoupon.getReceiveTime());
// 将goodsList转换为MerCouponGoodsListVo列表,并设置相应属性
List<MerCouponGoodsListVo> merCouponGoodsList = goodsList.stream()
.map(goods -> {
MerCouponGoodsListVo merCouponGoods = new MerCouponGoodsListVo();
merCouponGoods.setGoodsId(goods.getGoodsId());
merCouponGoods.setGoodsName(goods.getGoodsName());
+ merCouponGoods.setGoodsNum(1);
if (goods.getGoodsType() == 1) {
merCouponGoods.setGoodsType("周期");
} else if (goods.getGoodsType() == 2) {
@@ -3172,6 +3962,7 @@
// 设置merVerifyCouponVo的goodsList属性为merCouponGoodsList
merVerifyCouponVo.setGoodsList(merCouponGoodsList);
merVerifyCouponVo.setVerifyStatus(1);
+ merVerifyCouponVo.setMemberCouponId(memberCoupon.getId());
return merVerifyCouponVo;
}
@@ -3190,10 +3981,37 @@
if (memberGiftRecord == null || memberGiftRecord.getVerifyStatus() != 1) {
throw new ServiceException(AppErrorConstant.COUPON_USED);
}
+ Shop shop = null;
+ Member member = remoteMemberService.getMember(memberGiftRecord.getUserId()).getData();
+ //判断是否在绑定店铺核销
+ if(member.getBindingFlag()==1){
+ if(!member.getRelationShopId().equals(shopId)){
+ throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+ }
+ }
+ //平台奖品判断
+ if (memberGiftRecord.getGiftFrom() == 1) {
+ BirthdayCard birthdayCard = remoteMemberService.getBirthdayCard().getData();
+ //判断生日活动状态
+ if(birthdayCard!=null&&birthdayCard.getCardStatus()==1){
+ shop = remoteShopService.getShop(shopId).getData();
+ //判断指定区域全部店铺
+ if(birthdayCard.getAreaFlag()==2&&birthdayCard.getShopFlag()==1&&!StringUtils.checkString(birthdayCard.getDesignatedArea(),shop.getShopCityCode())){
+ throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+ }
+ //判断指定店铺
+ if(birthdayCard.getShopFlag()==2&&!StringUtils.checkString(birthdayCard.getApplicableShop(),shopId.toString())){
+ throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+ }
+ }else{
+ throw new ServiceException(AppErrorConstant.BIRTHDAY_CARD_ERROR);
+ }
+ }
+ //商户奖品判断
if (memberGiftRecord.getGiftFrom() == 2 && !memberGiftRecord.getShopId().equals(shopId)) {
throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
}
- Member member = remoteMemberService.getMember(memberGiftRecord.getUserId()).getData();
+
merVerifyAwardVo.setUserName(member.getRealName());
merVerifyAwardVo.setUserMobile(member.getMobile());
if (memberGiftRecord.getGiftFrom() == 1) {
@@ -3201,8 +4019,8 @@
} else {
merVerifyAwardVo.setGiftFrom("商户生日卡");
}
-
merVerifyAwardVo.setGiftType(memberGiftRecord.getGiftType());
+ //礼物类型1优惠券2商品3现金4实物
switch (memberGiftRecord.getGiftType()) {
case 1:
merVerifyAwardVo.setGiftName(memberGiftRecord.getCouponName());
@@ -3266,7 +4084,9 @@
merTotalDto.setShopIdList(shopIdList);
merTotalDto.setShopId(null);
}
+ //线上线下活动订单
MerOrderTotalVo orderTotalVo = orderMapper.getMerOrderTotalOrderFrom(merTotalDto);
+ //分类型订单
MerOrderTotalVo goodsTypeVo = orderMapper.getMerTotalOrderTotalGoodsType(merTotalDto);
orderTotalVo.setCycleTotal(goodsTypeVo.getCycleTotal());
orderTotalVo.setCycleMoney(goodsTypeVo.getCycleMoney());
@@ -3287,10 +4107,14 @@
*/
@Override
public MerOrderDistributionTotalVo MerOrderDistributionTotalVo(MerTotalDto merTotalDto) {
+ //获取查询的商户列表
if (merTotalDto.getShopAllFlag() != null && merTotalDto.getShopAllFlag() == 1) {
List<Long> shopIdList = remoteShopService.listShopIdByShopId(merTotalDto.getShopId()).getData();
merTotalDto.setShopIdList(shopIdList);
merTotalDto.setShopId(null);
+ }
+ if(merTotalDto.getGoodsType()!=null&&merTotalDto.getGoodsType()==0){
+ merTotalDto.setGoodsType(null);
}
MerOrderDistributionTotalVo orderDistributionTotalVo = new MerOrderDistributionTotalVo();
// 获取订单年龄用户列表
@@ -3339,10 +4163,11 @@
}
}*/
List<MgtMapTotalPlusVo> mgtMapTotalPlusVoList = orderMapper.listMerOrderDistributionTotal(merTotalDto);
+ String[] orderTotalKey = new String[mgtMapTotalPlusVoList.size()];
+ Integer[] orderTotalValue = new Integer[mgtMapTotalPlusVoList.size()];
+ BigDecimal[] orderMoneyValue = new BigDecimal[mgtMapTotalPlusVoList.size()];
+ //数据为空返回空数组
if (mgtMapTotalPlusVoList != null && !mgtMapTotalPlusVoList.isEmpty()) {
- String[] orderTotalKey = new String[mgtMapTotalPlusVoList.size()];
- Integer[] orderTotalValue = new Integer[mgtMapTotalPlusVoList.size()];
- BigDecimal[] orderMoneyValue = new BigDecimal[mgtMapTotalPlusVoList.size()];
MgtMapTotalPlusVo mgtMapTotalPlusVo;
for (int i = 0; i < mgtMapTotalPlusVoList.size(); i++) {
mgtMapTotalPlusVo = mgtMapTotalPlusVoList.get(i);
@@ -3350,6 +4175,9 @@
orderTotalValue[i] = mgtMapTotalPlusVo.getMapValueFirst();
orderMoneyValue[i] = mgtMapTotalPlusVo.getMapValueSecond();
}
+ //补充日期到近5日
+ orderDistributionTotalVo = fillOrderTotalKeyAndValuesToRecentFiveDays(orderTotalKey,orderTotalValue,orderMoneyValue);
+ }else{
orderDistributionTotalVo.setOrderTotalKey(orderTotalKey);
orderDistributionTotalVo.setOrderTotalValue(orderTotalValue);
orderDistributionTotalVo.setOrderMoneyValue(orderMoneyValue);
@@ -3378,28 +4206,93 @@
List<MgtMapIntTotalVo> goodsTypeTotalList = new ArrayList<>();
List<MgtMapBigTotalVo> goodsTypeMoneyList = new ArrayList<>();
if (MgtMapIntTotalVoGoodsType != null && MgtMapIntTotalVoGoodsType.size() > 0) {
- MgtMapIntTotalVo MgtMapIntTotalVo;
+ MgtMapIntTotalVo mgtMapIntTotalVo;
MgtMapBigTotalVo mgtMapBigTotalVo;
+ Integer intTotal = 0;
+ BigDecimal bigTotal = BigDecimal.ZERO;
+ for(MgtMapTotalPlusVo mgtMapTotalPlusVo : MgtMapIntTotalVoGoodsType){
+ intTotal = intTotal + mgtMapTotalPlusVo.getMapValueFirst();
+ bigTotal = bigTotal.add(mgtMapTotalPlusVo.getMapValueSecond());
+ }
+ BigDecimal hundredBig = new BigDecimal("100");
+ BigDecimal intTotalBig = hundredBig;
+ if(intTotal!=0){
+ intTotalBig = new BigDecimal(intTotal.toString());
+ }
+ if(bigTotal.compareTo(BigDecimal.ZERO)<1){
+ bigTotal = hundredBig;
+ }
// 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
+ Boolean noCycle = true;
+ Boolean noService = true;
+ Boolean noExperience = true;
+ Boolean noGoods = true;
for (int i = 0; i < MgtMapIntTotalVoGoodsType.size(); i++) {
- MgtMapIntTotalVo = new MgtMapIntTotalVo();
+ mgtMapIntTotalVo = new MgtMapIntTotalVo();
mgtMapBigTotalVo = new MgtMapBigTotalVo();
- MgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
+ mgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
+ mgtMapIntTotalVo.setMapPercent(BigDecimal.valueOf(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()).divide(intTotalBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig));
mgtMapBigTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond());
+ mgtMapBigTotalVo.setMapPercent(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond().divide(bigTotal,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig));
if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("1")) {
- MgtMapIntTotalVo.setMapKey("周期");
+ mgtMapIntTotalVo.setMapKey("周期");
mgtMapBigTotalVo.setMapKey("周期");
+ noCycle= false;
} else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("2")) {
- MgtMapIntTotalVo.setMapKey("服务");
+ mgtMapIntTotalVo.setMapKey("服务");
mgtMapBigTotalVo.setMapKey("服务");
+ noService= false;
} else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("3")) {
- MgtMapIntTotalVo.setMapKey("体验");
+ mgtMapIntTotalVo.setMapKey("体验");
mgtMapBigTotalVo.setMapKey("体验");
+ noExperience = false;
} else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) {
- MgtMapIntTotalVo.setMapKey("单品");
+ mgtMapIntTotalVo.setMapKey("单品");
mgtMapBigTotalVo.setMapKey("单品");
+ noGoods = false;
}
- goodsTypeTotalList.add(MgtMapIntTotalVo);
+ goodsTypeTotalList.add(mgtMapIntTotalVo);
+ goodsTypeMoneyList.add(mgtMapBigTotalVo);
+ }
+ //补充缺少类型
+ if(noCycle){
+ mgtMapIntTotalVo = new MgtMapIntTotalVo();
+ mgtMapIntTotalVo.setMapKey("周期");
+ mgtMapIntTotalVo.setMapValue(0);
+ goodsTypeTotalList.add(mgtMapIntTotalVo);
+ mgtMapBigTotalVo = new MgtMapBigTotalVo();
+ mgtMapBigTotalVo.setMapKey("周期");
+ mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+ goodsTypeMoneyList.add(mgtMapBigTotalVo);
+ }
+ if(noService){
+ mgtMapIntTotalVo = new MgtMapIntTotalVo();
+ mgtMapIntTotalVo.setMapKey("服务");
+ mgtMapIntTotalVo.setMapValue(0);
+ goodsTypeTotalList.add(mgtMapIntTotalVo);
+ mgtMapBigTotalVo = new MgtMapBigTotalVo();
+ mgtMapBigTotalVo.setMapKey("服务");
+ mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+ goodsTypeMoneyList.add(mgtMapBigTotalVo);
+ }
+ if(noExperience){
+ mgtMapIntTotalVo = new MgtMapIntTotalVo();
+ mgtMapIntTotalVo.setMapKey("体验");
+ mgtMapIntTotalVo.setMapValue(0);
+ goodsTypeTotalList.add(mgtMapIntTotalVo);
+ mgtMapBigTotalVo = new MgtMapBigTotalVo();
+ mgtMapBigTotalVo.setMapKey("体验");
+ mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+ goodsTypeMoneyList.add(mgtMapBigTotalVo);
+ }
+ if(noGoods){
+ mgtMapIntTotalVo = new MgtMapIntTotalVo();
+ mgtMapIntTotalVo.setMapKey("单品");
+ mgtMapIntTotalVo.setMapValue(0);
+ goodsTypeTotalList.add(mgtMapIntTotalVo);
+ mgtMapBigTotalVo = new MgtMapBigTotalVo();
+ mgtMapBigTotalVo.setMapKey("单品");
+ mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
goodsTypeMoneyList.add(mgtMapBigTotalVo);
}
orderTypeTotalVo.setGoodsTypeTotalList(goodsTypeTotalList);
@@ -3427,6 +4320,7 @@
List<MgtMapBigTotalVo> goodsRankList = orderMapper.listMerOrderTotalGoodsRank(merTotalDto);
if (goodsRankList != null && goodsRankList.size() > 0) {
goodsRankList = bigListRemoveNull(goodsRankList);
+ Collections.reverse(goodsRankList);
orderGoodsRankVo.setGoodsRankList(goodsRankList);
}
return orderGoodsRankVo;
@@ -3452,6 +4346,7 @@
List<MgtMapBigTotalVo> orderFromList = orderMapper.listMerOrderTotalOrderFrom(merTotalDto);
if (orderFromList != null && orderFromList.size() > 0) {
orderFromList = bigListRemoveNull(orderFromList);
+ Collections.reverse(orderFromList);
merOrderFromRankVo.setOrderFromRankList(orderFromList);
}
return merOrderFromRankVo;
@@ -3617,9 +4512,12 @@
@Override
@Transactional
public void payBack(PartnerTransactionsResult transaction) {
- // 更新订单状态
- String orderId = transaction.getOutTradeNo();
- Order order = this.getById(orderId);
+ log.info("订单支付回调---"+transaction.toString());
+ // Order order = this.getById(orderId);
+ // 更新订单状态 outTradeNo
+ String outTradeNo = transaction.getOutTradeNo();
+ Order order = this.getByOutTradeNo(outTradeNo);
+ String orderId = order.getOrderId();
order.setOrderStatus(2);
order.setPayTime(new Date());
this.saveOrUpdate(order);
@@ -3673,14 +4571,14 @@
//更新商品统计
remoteGoodsService.changeGoodsTotal(goodsTotalChangeDtoList);
// 更新商户统计信息
- ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto();
+ /*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);
+ remoteShopService.changeShopTotal(shopTotalChangeDto);*/
// 初始化会员统计信息
MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto();
memberTotalChangeDto.setUserId(order.getUserId());
@@ -3740,8 +4638,9 @@
request.setTransactionId(transaction.getTransactionId());
profitsSharingService.applyProfitSharing(request);*/
}
- //生成支付记录
- OrderPayment orderPayment = new OrderPayment();
+ //修改支付记录生成支付记录
+ orderPaymentService.updatePaySuccess(transaction.getOutTradeNo(), transaction.getTransactionId());
+
PayRecord payRecord = new PayRecord();
payRecord.setDelFlag(0);
payRecord.setOrderId(orderId);
@@ -3749,6 +4648,22 @@
payRecord.setPayTime(order.getPayTime());
payRecord.setPayType(1);
payRecordService.save(payRecord);
+ }
+
+ @Override
+ public Order getByOrderNo(String orderNo) {
+ LambdaQueryWrapper<Order> queryWrapper = Wrappers.lambdaQuery();
+ queryWrapper.eq(Order::getOrderNo, orderNo)
+ .last(" limit 1 ");
+ return this.getOne(queryWrapper);
+ }
+
+ @Override
+ public Order getByOutTradeNo(String outTradeNo) {
+ LambdaQueryWrapper<Order> queryWrapper = Wrappers.lambdaQuery();
+ queryWrapper.eq(Order::getOutTradeNo, outTradeNo)
+ .last(" limit 1 ");
+ return this.getOne(queryWrapper);
}
/**
@@ -3849,14 +4764,14 @@
}
}
// 更新商户统计信息
- ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto();
+ /*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);
+ remoteShopService.changeShopTotal(shopTotalChangeDto);*/
// 初始化会员统计信息
MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto();
memberTotalChangeDto.setUserId(order.getUserId());
@@ -3904,11 +4819,13 @@
remoteActivityService.changeActivityTotal(activityTotalChangeDto);
}
+ log.info("用户取消订单退款, 检查退款");
// 用户取消订单退款
BigDecimal onlinePayMoney = order.getOnlinePayMoney();
if(BigDecimal.ZERO.compareTo(onlinePayMoney) < 0){
+ log.info("订单支付金额大于0,可发起退款");
// 订单支付金额大于0,可发起退款
- //orderWxApplyRefund(orderId, refundId, onlinePayMoney, orderRefund);
+ orderWxApplyRefund(orderId, refundId, onlinePayMoney, orderRefund);
}
orderRefund.setRefundStatus(1);
@@ -3918,13 +4835,16 @@
/**
* 申请退款API
*/
- /*private void orderWxApplyRefund(String orderId, String outRefundNo, BigDecimal payMoney, OrderRefund orderRefund){
+ private void orderWxApplyRefund(String orderId, String outRefundNo, BigDecimal payMoney, OrderRefund orderRefund){
try {
// 创建支付订单
OrderPayment orderPayment = orderPaymentService.getByOrderId(orderId);
if (null == orderPayment) {
return;
}
+
+ log.info("调用微信退款---发起退款");
+
String subMchId = orderPayment.getSubMchId();
WxPayConfig config = wxService.getConfig();
@@ -3935,7 +4855,8 @@
request.setOutRefundNo(outRefundNo);
request.setReason("用户取消订单");
// 订单金额
- int total = payMoney.multiply(new BigDecimal(100)).intValue();
+ int total = orderPayment.getPayMoney().multiply(new BigDecimal(100)).intValue();
+
RefundsRequest.Amount amount = RefundsRequest.Amount.builder().refund(total).total(total).currency("CNY").build();
request.setAmount(amount);
request.setNotifyUrl(config.getNotifyUrl());
@@ -3951,13 +4872,15 @@
// 返回参数
String refundResponseJson = gson.toJson(result);
+ log.info("调用微信退款返回参数---{}", refundResponseJson);
+
// 保存支付订单统一下单日志
paymentMessageService.savePaymentMessage("3", orderId, refundRequestJson, refundResponseJson);
} catch (WxPayException e) {
throw new ServiceException(e.getMessage());
}
- }*/
+ }
/**
* @param staffTotalDto
@@ -3968,7 +4891,14 @@
*/
@Override
public StaffActivityOrderTotalVo getStaffActivityOrderTotal(StaffTotalDto staffTotalDto) {
- StaffActivityOrderTotalVo staffActivityOrderTotalVo = orderMapper.getStaffActivityOrderTotal(staffTotalDto);
+ StaffActivityOrderTotalVo staffActivityOrderTotalVo = new StaffActivityOrderTotalVo();
+ if(staffTotalDto.getActivityFrom()==1){
+ staffActivityOrderTotalVo = orderMapper.getStaffActivityOrderTotal(staffTotalDto);
+ StaffActivityOrderTotalVo staffActivityOrderGoodsTotalVo = orderMapper.getStaffActivityOrderGoodsTotal(staffTotalDto);
+ staffActivityOrderTotalVo.setCycleTotal(staffActivityOrderGoodsTotalVo.getCycleTotal());
+ staffActivityOrderTotalVo.setServiceTotal(staffActivityOrderGoodsTotalVo.getServiceTotal());
+ staffActivityOrderTotalVo.setExperienceTotal(staffActivityOrderGoodsTotalVo.getExperienceTotal());
+ }
return staffActivityOrderTotalVo;
}
@@ -3981,7 +4911,10 @@
*/
@Override
public StaffActivityTotalVo getStaffActivityTotal(StaffTotalDto staffTotalDto) {
- StaffActivityTotalVo staffActivityTotalVo = orderMapper.getStaffActivityTotal(staffTotalDto);
+ StaffActivityTotalVo staffActivityTotalVo = new StaffActivityTotalVo();
+ if(staffTotalDto.getActivityFrom()==1){
+ staffActivityTotalVo = orderMapper.getStaffActivityTotal(staffTotalDto);
+ }
return staffActivityTotalVo;
}
@@ -3994,13 +4927,16 @@
*/
@Override
public MerOrderDistributionTotalVo getStaffOrderDistributionTotal(StaffTotalDto staffTotalDto) {
+ if(staffTotalDto.getGoodsType()!=null&&staffTotalDto.getGoodsType()==0){
+ staffTotalDto.setGoodsType(null);
+ }
MerOrderDistributionTotalVo orderDistributionTotalVo = new MerOrderDistributionTotalVo();
// 获取订单年龄用户列表
- MerTotalDto merTotalDto = new MerTotalDto();
- merTotalDto.setShopId(staffTotalDto.getShopId());
- List<MerOrderAgeUserVo> orderAgeUserVoList = remoteMemberService.listOrderAgeUser(merTotalDto).getData();
+ //MerTotalDto merTotalDto = new MerTotalDto();
+ //merTotalDto.setShopId(staffTotalDto.getShopId());
+ //List<MerOrderAgeUserVo> orderAgeUserVoList = remoteMemberService.listOrderAgeUser(merTotalDto).getData();
// 如果订单年龄用户列表不为空
- if (orderAgeUserVoList != null && !orderAgeUserVoList.isEmpty()) {
+ /*if (orderAgeUserVoList != null && !orderAgeUserVoList.isEmpty()) {
// 定义变量
Integer ageType;
List<Long> userIdList;
@@ -4046,9 +4982,90 @@
orderDistributionTotalVo.setOrderTotalKey(orderTotalKey);
orderDistributionTotalVo.setOrderTotalValue(orderTotalValue);
orderDistributionTotalVo.setOrderMoneyValue(orderMoneyValue);
+ }*/
+ if(staffTotalDto.getActivityFrom()==1){
+ List<MgtMapTotalPlusVo> mgtMapTotalPlusVoList = orderMapper.listStaffActivityOrderDistributionTotal(staffTotalDto);
+ String[] orderTotalKey = new String[mgtMapTotalPlusVoList.size()];
+ Integer[] orderTotalValue = new Integer[mgtMapTotalPlusVoList.size()];
+ BigDecimal[] orderMoneyValue = new BigDecimal[mgtMapTotalPlusVoList.size()];
+ if (mgtMapTotalPlusVoList != null && !mgtMapTotalPlusVoList.isEmpty()) {
+ MgtMapTotalPlusVo mgtMapTotalPlusVo;
+ for (int i = 0; i < mgtMapTotalPlusVoList.size(); i++) {
+ mgtMapTotalPlusVo = mgtMapTotalPlusVoList.get(i);
+ orderTotalKey[i] = mgtMapTotalPlusVo.getMapKey();
+ orderTotalValue[i] = mgtMapTotalPlusVo.getMapValueFirst();
+ orderMoneyValue[i] = mgtMapTotalPlusVo.getMapValueSecond();
+ }
+ orderDistributionTotalVo = fillOrderTotalKeyAndValuesToRecentFiveDays(orderTotalKey,orderTotalValue,orderMoneyValue);
+ }else{
+ orderDistributionTotalVo.setOrderTotalKey(orderTotalKey);
+ orderDistributionTotalVo.setOrderTotalValue(orderTotalValue);
+ orderDistributionTotalVo.setOrderMoneyValue(orderMoneyValue);
+ }
}
// 返回订单分布总数对象
return orderDistributionTotalVo;
+ }
+
+ /**
+ * @description 补时间
+ * @author jqs
+ * @date 2023/8/28 15:03
+ * @param orderTotalKey
+ * @param orderTotalValue
+ * @param orderMoneyValue
+ * @return MerOrderDistributionTotalVo
+ */
+ public MerOrderDistributionTotalVo fillOrderTotalKeyAndValuesToRecentFiveDays(String[] orderTotalKey,Integer[] orderTotalValue,BigDecimal[] orderMoneyValue) {
+ MerOrderDistributionTotalVo orderDistributionTotalVo = new MerOrderDistributionTotalVo();
+ // 获取当前日期
+ LocalDate currentDate = LocalDate.now();
+
+ // 创建最近五天日期列表
+ List<String> recentFiveDays = new ArrayList<>();
+ for (int i = 0; i < 5; i++) {
+ LocalDate date = currentDate.minusDays(i);
+ recentFiveDays.add(date.toString());
+ }
+
+ // 创建新的数组
+ String[] newOrderTotalKey = new String[5];
+ Integer[] newOrderTotalValue = new Integer[5];
+ BigDecimal[] newOrderMoneyValue = new BigDecimal[5];
+
+ // 遍历最近五天日期列表,并补充数据
+ for (int i = 0; i < 5; i++) {
+ String day = recentFiveDays.get(i);
+ int index = getIndexInOrderTotalKey(day,orderTotalKey);
+ if (index != -1) {
+ newOrderTotalKey[i] = orderTotalKey[index];
+ newOrderTotalValue[i] = orderTotalValue[index];
+ newOrderMoneyValue[i] = orderMoneyValue[index];
+ } else {
+ newOrderTotalKey[i] = day;
+ newOrderTotalValue[i] = 0;
+ newOrderMoneyValue[i] = BigDecimal.ZERO;
+ }
+ }
+
+ // 更新属性
+ orderTotalKey = newOrderTotalKey;
+ orderTotalValue = newOrderTotalValue;
+ orderMoneyValue = newOrderMoneyValue;
+ orderDistributionTotalVo.setOrderTotalKey(orderTotalKey);
+ orderDistributionTotalVo.setOrderTotalValue(orderTotalValue);
+ orderDistributionTotalVo.setOrderMoneyValue(orderMoneyValue);
+ return orderDistributionTotalVo;
+ }
+
+
+ private int getIndexInOrderTotalKey(String day,String[] orderTotalKey) {
+ for (int i = 0; i < orderTotalKey.length; i++) {
+ if (orderTotalKey[i].equals(day)) {
+ return i;
+ }
+ }
+ return -1;
}
@@ -4062,37 +5079,104 @@
@Override
public MerOrderTypeTotalVo getStaffOrderTypeTotal(StaffTotalDto staffTotalDto) {
MerOrderTypeTotalVo orderTypeTotalVo = new MerOrderTypeTotalVo();
- //获取商品分类销售数据
- List<MgtMapTotalPlusVo> MgtMapIntTotalVoGoodsType = orderMapper.listStaffOrderTotalGoodsType(staffTotalDto);
- List<MgtMapIntTotalVo> goodsTypeTotalList = new ArrayList<>();
- List<MgtMapBigTotalVo> goodsTypeMoneyList = new ArrayList<>();
- if (MgtMapIntTotalVoGoodsType != null && MgtMapIntTotalVoGoodsType.size() > 0) {
- MgtMapIntTotalVo MgtMapIntTotalVo;
- MgtMapBigTotalVo mgtMapBigTotalVo;
- // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
- for (int i = 0; i < MgtMapIntTotalVoGoodsType.size(); i++) {
- MgtMapIntTotalVo = new MgtMapIntTotalVo();
- mgtMapBigTotalVo = new MgtMapBigTotalVo();
- MgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
- mgtMapBigTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond());
- if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("1")) {
- MgtMapIntTotalVo.setMapKey("周期");
- mgtMapBigTotalVo.setMapKey("周期");
- } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("2")) {
- MgtMapIntTotalVo.setMapKey("服务");
- mgtMapBigTotalVo.setMapKey("服务");
- } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("3")) {
- MgtMapIntTotalVo.setMapKey("体验");
- mgtMapBigTotalVo.setMapKey("体验");
- } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) {
- MgtMapIntTotalVo.setMapKey("单品");
- mgtMapBigTotalVo.setMapKey("单品");
+ if(staffTotalDto.getActivityFrom()==1){
+ //获取商品分类销售数据
+ List<MgtMapTotalPlusVo> MgtMapIntTotalVoGoodsType = orderMapper.listStaffOrderTotalGoodsType(staffTotalDto);
+ List<MgtMapIntTotalVo> goodsTypeTotalList = new ArrayList<>();
+ List<MgtMapBigTotalVo> goodsTypeMoneyList = new ArrayList<>();
+ if (MgtMapIntTotalVoGoodsType != null && MgtMapIntTotalVoGoodsType.size() > 0) {
+ MgtMapIntTotalVo mgtMapIntTotalVo;
+ MgtMapBigTotalVo mgtMapBigTotalVo;
+ Integer intTotal = 0;
+ BigDecimal bigTotal = BigDecimal.ZERO;
+ for(MgtMapTotalPlusVo mgtMapTotalPlusVo : MgtMapIntTotalVoGoodsType){
+ intTotal = intTotal + mgtMapTotalPlusVo.getMapValueFirst();
+ bigTotal = bigTotal.add(mgtMapTotalPlusVo.getMapValueSecond());
}
- goodsTypeTotalList.add(MgtMapIntTotalVo);
- goodsTypeMoneyList.add(mgtMapBigTotalVo);
+ BigDecimal hundredBig = new BigDecimal("100");
+ BigDecimal intTotalBig = hundredBig;
+ if(intTotal!=0){
+ intTotalBig = new BigDecimal(intTotal.toString());
+ }
+ if(bigTotal.compareTo(BigDecimal.ZERO)<1){
+ bigTotal = hundredBig;
+ }
+ // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
+ Boolean noCycle = true;
+ Boolean noService = true;
+ Boolean noExperience = true;
+ Boolean noGoods = true;
+ for (int i = 0; i < MgtMapIntTotalVoGoodsType.size(); i++) {
+ mgtMapIntTotalVo = new MgtMapIntTotalVo();
+ mgtMapBigTotalVo = new MgtMapBigTotalVo();
+ mgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
+ mgtMapIntTotalVo.setMapPercent(BigDecimal.valueOf(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()).divide(intTotalBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig));
+ mgtMapBigTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond());
+ mgtMapBigTotalVo.setMapPercent(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond().divide(bigTotal,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig));
+ if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("1")) {
+ mgtMapIntTotalVo.setMapKey("周期");
+ mgtMapBigTotalVo.setMapKey("周期");
+ noCycle= false;
+ } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("2")) {
+ mgtMapIntTotalVo.setMapKey("服务");
+ mgtMapBigTotalVo.setMapKey("服务");
+ noService= false;
+ } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("3")) {
+ mgtMapIntTotalVo.setMapKey("体验");
+ mgtMapBigTotalVo.setMapKey("体验");
+ noExperience = false;
+ } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) {
+ mgtMapIntTotalVo.setMapKey("单品");
+ mgtMapBigTotalVo.setMapKey("单品");
+ noGoods = false;
+ }
+ goodsTypeTotalList.add(mgtMapIntTotalVo);
+ goodsTypeMoneyList.add(mgtMapBigTotalVo);
+ }
+ //补充缺少类型
+ if(noCycle){
+ mgtMapIntTotalVo = new MgtMapIntTotalVo();
+ mgtMapIntTotalVo.setMapKey("周期");
+ mgtMapIntTotalVo.setMapValue(0);
+ goodsTypeTotalList.add(mgtMapIntTotalVo);
+ mgtMapBigTotalVo = new MgtMapBigTotalVo();
+ mgtMapBigTotalVo.setMapKey("周期");
+ mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+ goodsTypeMoneyList.add(mgtMapBigTotalVo);
+ }
+ if(noService){
+ mgtMapIntTotalVo = new MgtMapIntTotalVo();
+ mgtMapIntTotalVo.setMapKey("服务");
+ mgtMapIntTotalVo.setMapValue(0);
+ goodsTypeTotalList.add(mgtMapIntTotalVo);
+ mgtMapBigTotalVo = new MgtMapBigTotalVo();
+ mgtMapBigTotalVo.setMapKey("服务");
+ mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+ goodsTypeMoneyList.add(mgtMapBigTotalVo);
+ }
+ if(noExperience){
+ mgtMapIntTotalVo = new MgtMapIntTotalVo();
+ mgtMapIntTotalVo.setMapKey("体验");
+ mgtMapIntTotalVo.setMapValue(0);
+ goodsTypeTotalList.add(mgtMapIntTotalVo);
+ mgtMapBigTotalVo = new MgtMapBigTotalVo();
+ mgtMapBigTotalVo.setMapKey("体验");
+ mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+ goodsTypeMoneyList.add(mgtMapBigTotalVo);
+ }
+ if(noGoods){
+ mgtMapIntTotalVo = new MgtMapIntTotalVo();
+ mgtMapIntTotalVo.setMapKey("单品");
+ mgtMapIntTotalVo.setMapValue(0);
+ goodsTypeTotalList.add(mgtMapIntTotalVo);
+ mgtMapBigTotalVo = new MgtMapBigTotalVo();
+ mgtMapBigTotalVo.setMapKey("单品");
+ mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO);
+ goodsTypeMoneyList.add(mgtMapBigTotalVo);
+ }
+ orderTypeTotalVo.setGoodsTypeTotalList(goodsTypeTotalList);
+ orderTypeTotalVo.setGoodsTypeMoneyList(goodsTypeMoneyList);
}
- orderTypeTotalVo.setGoodsTypeTotalList(goodsTypeTotalList);
- orderTypeTotalVo.setGoodsTypeMoneyList(goodsTypeMoneyList);
}
return orderTypeTotalVo;
}
@@ -4108,32 +5192,34 @@
public StaffActivityDateMemberTotalVo getStaffActivityGetMemberTotal(StaffTotalDto staffTotalDto) {
// 创建返回对象
StaffActivityDateMemberTotalVo staffActivityDateMemberTotalVo = new StaffActivityDateMemberTotalVo();
- // 查询数据库获取数据
- List<MgtMapIntTotalVo> mgtMapIntTotalVoList = orderMapper.getStaffActivityGetMemberTotal(staffTotalDto);
- // 将查询结果转为Map
- Map<String, Integer> map = new HashMap<>();
- if (mgtMapIntTotalVoList != null && !mgtMapIntTotalVoList.isEmpty()) {
- map = mgtMapIntTotalVoList.stream()
- .collect(Collectors.toMap(MgtMapIntTotalVo::getMapKey, MgtMapIntTotalVo::getMapValue));
+ if(staffTotalDto.getActivityFrom()==1){
+ // 查询数据库获取数据
+ List<MgtMapIntTotalVo> mgtMapIntTotalVoList = orderMapper.getStaffActivityGetMemberTotal(staffTotalDto);
+ // 将查询结果转为Map
+ Map<String, Integer> map = new HashMap<>();
+ if (mgtMapIntTotalVoList != null && !mgtMapIntTotalVoList.isEmpty()) {
+ map = mgtMapIntTotalVoList.stream()
+ .collect(Collectors.toMap(MgtMapIntTotalVo::getMapKey, MgtMapIntTotalVo::getMapValue));
+ }
+ // 获取日期范围
+ List<String> dateList = getDateRange(staffTotalDto.getStartDate(), staffTotalDto.getEndDate());
+ int size = dateList.size();
+ // 创建日期和成员总数的数组
+ String[] dateMemberTotalKey = new String[size];
+ Integer[] dateMemberTotalValue = new Integer[size];
+ // 遍历日期列表,设置日期和成员总数的数组
+ String str;
+ Integer value;
+ for (int i = 0; i < size; i++) {
+ str = dateList.get(i);
+ dateMemberTotalKey[i] = str;
+ value = map.get(str);
+ dateMemberTotalValue[i] = (value != null) ? value : 0;
+ }
+ // 设置返回对象的日期和成员总数数组
+ staffActivityDateMemberTotalVo.setDateMemberTotalKey(dateMemberTotalKey);
+ staffActivityDateMemberTotalVo.setDateMemberTotalValue(dateMemberTotalValue);
}
- // 获取日期范围
- List<String> dateList = getDateRange(staffTotalDto.getStartDate(), staffTotalDto.getEndDate());
- int size = dateList.size();
- // 创建日期和成员总数的数组
- String[] dateMemberTotalKey = new String[size];
- Integer[] dateMemberTotalValue = new Integer[size];
- // 遍历日期列表,设置日期和成员总数的数组
- String str;
- Integer value;
- for (int i = 0; i < size; i++) {
- str = dateList.get(i);
- dateMemberTotalKey[i] = str;
- value = map.get(str);
- dateMemberTotalValue[i] = (value != null) ? value : 0;
- }
- // 设置返回对象的日期和成员总数数组
- staffActivityDateMemberTotalVo.setDateMemberTotalKey(dateMemberTotalKey);
- staffActivityDateMemberTotalVo.setDateMemberTotalValue(dateMemberTotalValue);
// 返回结果对象
return staffActivityDateMemberTotalVo;
}
@@ -4149,32 +5235,40 @@
public StaffActivityDateMemberTotalVo getStaffActivityMemberTotal(StaffTotalDto staffTotalDto) {
// 创建返回对象
StaffActivityDateMemberTotalVo staffActivityDateMemberTotalVo = new StaffActivityDateMemberTotalVo();
- // 查询数据库获取数据
- List<MgtMapIntTotalVo> mgtMapIntTotalVoList = orderMapper.getStaffActivityMemberTotal(staffTotalDto);
- // 将查询结果转为Map
- Map<String, Integer> map = new HashMap<>();
- if (mgtMapIntTotalVoList != null && !mgtMapIntTotalVoList.isEmpty()) {
- map = mgtMapIntTotalVoList.stream()
- .collect(Collectors.toMap(MgtMapIntTotalVo::getMapKey, MgtMapIntTotalVo::getMapValue));
+ if(staffTotalDto.getActivityFrom()==1){
+ MerTotalDto merTotalDto = new MerTotalDto();
+ merTotalDto.setAgeType(staffTotalDto.getAgeType());
+ if(staffTotalDto.getAgeType()!=null){
+ List<Long> userIdList = remoteMemberService.listUserIdByAgeType(staffTotalDto.getAgeType()).getData();
+ staffTotalDto.setUserIdList(userIdList);
+ }
+ // 查询数据库获取数据
+ List<MgtMapIntTotalVo> mgtMapIntTotalVoList = orderMapper.getStaffActivityMemberTotal(staffTotalDto);
+ // 将查询结果转为Map
+ Map<String, Integer> map = new HashMap<>();
+ if (mgtMapIntTotalVoList != null && !mgtMapIntTotalVoList.isEmpty()) {
+ map = mgtMapIntTotalVoList.stream()
+ .collect(Collectors.toMap(MgtMapIntTotalVo::getMapKey, MgtMapIntTotalVo::getMapValue));
+ }
+ // 获取日期范围
+ List<String> dateList = getDateRange(staffTotalDto.getStartDate(), staffTotalDto.getEndDate());
+ int size = dateList.size();
+ // 创建日期和成员总数的数组
+ String[] dateMemberTotalKey = new String[size];
+ Integer[] dateMemberTotalValue = new Integer[size];
+ // 遍历日期列表,设置日期和成员总数的数组
+ String str;
+ Integer value;
+ for (int i = 0; i < size; i++) {
+ str = dateList.get(i);
+ dateMemberTotalKey[i] = str;
+ value = map.get(str);
+ dateMemberTotalValue[i] = (value != null) ? value : 0;
+ }
+ // 设置返回对象的日期和成员总数数组
+ staffActivityDateMemberTotalVo.setDateMemberTotalKey(dateMemberTotalKey);
+ staffActivityDateMemberTotalVo.setDateMemberTotalValue(dateMemberTotalValue);
}
- // 获取日期范围
- List<String> dateList = getDateRange(staffTotalDto.getStartDate(), staffTotalDto.getEndDate());
- int size = dateList.size();
- // 创建日期和成员总数的数组
- String[] dateMemberTotalKey = new String[size];
- Integer[] dateMemberTotalValue = new Integer[size];
- // 遍历日期列表,设置日期和成员总数的数组
- String str;
- Integer value;
- for (int i = 0; i < size; i++) {
- str = dateList.get(i);
- dateMemberTotalKey[i] = str;
- value = map.get(str);
- dateMemberTotalValue[i] = (value != null) ? value : 0;
- }
- // 设置返回对象的日期和成员总数数组
- staffActivityDateMemberTotalVo.setDateMemberTotalKey(dateMemberTotalKey);
- staffActivityDateMemberTotalVo.setDateMemberTotalValue(dateMemberTotalValue);
// 返回结果对象
return staffActivityDateMemberTotalVo;
}
@@ -4360,8 +5454,7 @@
orderFromDesc = "商城订单";
}
merOrderPageVo.setOrderFromDesc(orderFromDesc);
- merOrderPageVo.setUnPaidMoney(merOrderPageVo.getPayMoney().subtract(merOrderPageVo.getReceiveMoney()));
- if (merOrderPageVo.getUnPaidMoney() == null) {
+ if(merOrderPageVo.getUnPaidMoney().compareTo(zeroBig)<0){
merOrderPageVo.setUnPaidMoney(zeroBig);
}
}
@@ -4382,4 +5475,54 @@
}
return merOrderPageVoList;
}
+
+ /**
+ * @description 获取销售排行
+ * @author jqs
+ * @date 2023/8/24 18:00
+ * @param shopIdList
+ * @return List<MgtMapIntTotalVo>
+ */
+ @Override
+ public List<MgtMapBigTotalVo> shopSalesRank(List<Long> shopIdList){
+ return orderMapper.shopSalesRank(shopIdList);
+ }
+
+ /**
+ * @description 获取商户服务统计
+ * @author jqs
+ * @date 2023/8/24 18:28
+ * @param shopId
+ * @return MerHomeShopTotalVo
+ */
+ @Override
+ public MerHomeShopTotalVo getShopServiceTotal(Long shopId){
+ MerHomeShopTotalVo serviceTotalVo = orderMapper.getMerHomeShopServiceTotalVo(shopId);
+ return serviceTotalVo;
+ }
+
+ /**
+ * @description 获取区域统计
+ * @author jqs
+ * @date 2023/8/25 11:49
+ * @param shopIdList
+ * @return AgencyTotalVo
+ */
+ @Override
+ public AgencyTotalVo getAgencyTotalVo(List<Long> shopIdList){
+ AgencyTotalVo agencyTotalVo = orderMapper.getAgencyTotalVo(shopIdList);
+ return agencyTotalVo;
+ }
+
+ /**
+ * @description 商户端会员订单统计
+ * @author jqs
+ * @date 2023/8/29 17:39
+ * @param merBaseDto
+ * @return MerMemberSimpleTotalVo
+ */
+ @Override
+ public MerMemberSimpleTotalVo getMerMemberSimpleTotalVo(MerBaseDto merBaseDto){
+ return orderMapper.getMerMemberSimpleTotalVo(merBaseDto);
+ }
}
--
Gitblit v1.7.1