From e0026a211d5e0004f8b769a47796cffafb87e479 Mon Sep 17 00:00:00 2001
From: zhanglin8526 <852614290@qq.com>
Date: 星期六, 26 八月 2023 15:42:16 +0800
Subject: [PATCH] 支付调整
---
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java | 633 ++++++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 463 insertions(+), 170 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 498dc32..0997bda 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
@@ -5,9 +5,15 @@
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;
@@ -52,7 +58,6 @@
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;
@@ -119,11 +124,11 @@
@Resource
private PayRecordService payRecordService;
- @Autowired
+ @Resource
private RedissonClient redissonClient;
- /*@Autowired
- private WxPayService wxService;*/
+ @Resource
+ private WxPayService wxService;
@Resource
private PaymentMessageService paymentMessageService;
@@ -551,6 +556,7 @@
BigDecimal orderPayMoney = new BigDecimal("0.00");
// 创建订单ID和订单号
String orderId = IdUtils.simpleUUID();
+
String orderNo = CodeFactoryUtil.getShopOrderNo();
OrderGoods orderGoods;
String orderGoodsId;
@@ -727,6 +733,9 @@
order.setOrderRemark(appPlaceOrderDto.getOrderRemark());
order.setGoodsNum(goodsNum);
order.setCreateTime(new Date());
+ if(appPlaceOrderDto.getNewMemberFlag()!=null&&appPlaceOrderDto.getNewMemberFlag()==1){
+ order.setNewMemberFlag(1);
+ }
// 保存订单
this.save(order);
// 更新用户商品类型
@@ -740,15 +749,22 @@
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(appPlaceOrderVo.getPayMoney().compareTo(BigDecimal.TEN)<0){
+ String outTradeNo = IdUtils.simpleUUID();
+ // 保存订单 交易流水
+ order.setOutTradeNo(outTradeNo);
+ this.saveOrUpdate(order);
+
+ // 小程序微信下单支付
+ createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), goodsName, outTradeNo,
+ orderId, order.getPayMoney(), appPlaceOrderDto.getOpenid(),
+ appPlaceOrderDto.getSpbillCreateIp(), goodsNameList,1);
+ }
//减去优惠券
if (StringUtils.isNotBlank(memberCouponSJ.toString())) {
@@ -777,17 +793,17 @@
* @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,
+ public 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);
@@ -806,11 +822,15 @@
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);
+ if(orderFrom==2){
+ settleInfo.setProfitSharing(true);
+ }else{
+ settleInfo.setProfitSharing(false);
+ }
settleInfo.setSubsidyAmount(BigDecimal.ZERO);
request.setSettleInfo(settleInfo);
@@ -853,13 +873,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());
}
- }*/
+ }
/**
@@ -1066,6 +1087,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);
// 更新用户商品类型
@@ -1121,7 +1145,25 @@
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.TEN)<0){
+
+ String outTradeNo = IdUtils.simpleUUID();
+
+ // 保存订单 交易流水
+ order.setOutTradeNo(outTradeNo);
+ this.saveOrUpdate(order);
+
+ // 小程序微信下单支付
+ createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), orderGoods.getGoodsName(), orderNo,
+ orderId, order.getPayMoney(), appPlaceActivityDto.getOpenid(),
+ appPlaceActivityDto.getSpbillCreateIp(), goodsNameList,2);
+ }
//生成活动参加记录
ActivityRecord activityRecord = new ActivityRecord();
activityRecord.setDelFlag(0);
@@ -1287,9 +1329,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;
}
@@ -1506,14 +1554,15 @@
}
//创建支付记录
- 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);
-
+ if(merVerifyOrderDto.getRelPayMoney().compareTo(BigDecimal.ZERO)>0){
+ PayRecord payRecord = new PayRecord();
+ payRecord.setDelFlag(0);
+ payRecord.setOrderId(order.getOrderId());
+ payRecord.setPayMoney(merVerifyOrderDto.getRelPayMoney());
+ payRecord.setPayTime(new Date());
+ payRecord.setPayType(merVerifyOrderDto.getPayType());
+ payRecordService.save(payRecord);
+ }
//submitProfitSharing(orderId, order.getOrderNo(), order.getShopId(), order.getOrderMoney());
return merVerifyOrderVo;
@@ -1615,20 +1664,21 @@
// 调用remoteMemberService的getMember方法获取Member对象
Member member = remoteMemberService.getMember(userId).getData();
//如果是商户优惠券,验证商户一致
- if (memberCoupon.getCouponFrom() == 2 && !memberCoupon.getShopId().equals(shopId)) {
+ if (memberCoupon.getCouponFrom() == 2) {
if(!memberCoupon.getShopId().equals(member.getRelationShopId())){
- throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+ throw new ServiceException(AppErrorConstant.BLINDING_VERIFY_SHOP_ERROR);
}
- if(memberCoupon.getShopId().equals(shopId)){
+ 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.VERIFY_SHOP_ERROR);
- }
- if(memberCoupon.getShopId().equals(shopId)){
+ /*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);
}
}
@@ -1711,6 +1761,7 @@
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());
@@ -1827,6 +1878,7 @@
if (member.getBindingFlag() != 1) {
AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto();
appMemberBindingDto.setBindingFlag(1);
+ appMemberBindingDto.setBindingType(5);
appMemberBindingDto.setShopId(shop.getShopId());
appMemberBindingDto.setShopName(shop.getShopName());
appMemberBindingDto.setUserId(memberGiftRecord.getUserId());
@@ -1848,15 +1900,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;
}
@@ -1917,7 +1971,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);
@@ -1926,6 +1979,7 @@
member.setRealName(name);
member.setNickName(name);
member.setBindingFlag(1);
+ member.setBindingType(3);
member.setRelationShopId(shopId);
member.setRelationShopName(shop.getShopName());
remoteMemberService.createNewMember(member);
@@ -1975,6 +2029,8 @@
ConsumerGoods consumerGoods;
String consumerGoodsId;
List<ConsumerGoods> consumerGoodsList = new ArrayList<>();
+ //使用优惠券
+ StringJoiner memberCouponSJ = new StringJoiner(",");
for (AppBuyGoodsDto appBuyGoodsDto : appBuyGoodsDtoList) {
goodsId = appBuyGoodsDto.getGoodsId();
memberCouponId = appBuyGoodsDto.getMemberCouponId();
@@ -2009,7 +2065,7 @@
} 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);
@@ -2018,6 +2074,7 @@
goodsRealPrice = BigDecimal.ZERO;
discountMoney = goodsTotalPrice.subtract(goodsRealPrice);
}
+ memberCouponSJ.add(memberCouponId);
}
}
goodsDeposit = goods.getSubscription();
@@ -2165,10 +2222,6 @@
} else {
order.setCloseFlag(0);
}
- //保存订单和服务
- this.save(order);
- orderGoodsService.saveBatch(orderGoodsList);
- consumerGoodsService.saveBatchConsumerGoods(consumerGoodsList);
//用户未绑定则绑定商户
Member member = remoteMemberService.getMember(userId).getData();
if (member != null && member.getBindingFlag() != 1) {
@@ -2178,17 +2231,28 @@
appMemberBindingDto.setShopName(shop.getShopName());
appMemberBindingDto.setUserId(userId);
appMemberBindingDto.setBindingFlag(1);
+ appMemberBindingDto.setBindingType(3);
remoteMemberService.updateMemberBinding(appMemberBindingDto);
+ order.setNewMemberFlag(1);
}
+ //保存订单和服务
+ this.save(order);
+ orderGoodsService.saveBatch(orderGoodsList);
+ consumerGoodsService.saveBatchConsumerGoods(consumerGoodsList);
+ //减去优惠券
+ if (StringUtils.isNotBlank(memberCouponSJ.toString())) {
+ remoteCouponService.useMemberCoupon(memberCouponSJ.toString());
+ }
+
//更新商户统计
- 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);*/
//创建支付记录
PayRecord payRecord = new PayRecord();
payRecord.setDelFlag(0);
@@ -2207,10 +2271,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());
@@ -2218,6 +2284,8 @@
merOrderPageDto.setMemberUserId(null);
}
}
+
+ // 获取订单列表
List<MerOrderPageVo> merOrderPageVoList = orderMapper.pageMerOrder(page, merOrderPageDto);
if (merOrderPageVoList != null && !merOrderPageVoList.isEmpty()) {
Long userId;
@@ -2226,15 +2294,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 = "线下创建";
}
@@ -2242,15 +2312,22 @@
orderFromDesc = "商城订单";
}
merOrderPageVo.setOrderFromDesc(orderFromDesc);
+ // 设置未支付金额为0.00,如果未支付金额小于0,则设置为0.00
if (merOrderPageVo.getUnPaidMoney() == null) {
merOrderPageVo.setUnPaidMoney(zeroBig);
}
+ if (merOrderPageVo.getUnPaidMoney().compareTo(zeroBig) < 0) {
+ merOrderPageVo.setUnPaidMoney(zeroBig);
+ }
}
+
+ // 根据用户ID列表获取用户信息
MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto();
mgtBaseBathDto.setIds(userIdSj.toString());
List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(mgtBaseBathDto).getData();
Map<Long, MgtSimpleMemberVo> userMap = simpleMemberVoList.stream()
.collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity()));
+ // 遍历订单列表,设置用户信息
for (MerOrderPageVo merOrderPageVo : merOrderPageVoList) {
if (merOrderPageVo.getUserId() != null && userMap.get(merOrderPageVo.getUserId()) != null) {
merOrderPageVo.setUserName(userMap.get(merOrderPageVo.getUserId()).getRealName());
@@ -2276,6 +2353,9 @@
BigDecimal zeroBig = new BigDecimal("0.00");
for (MerMemberOrderVo merMemberNoClearOrderVo : merMemberNoClearOrderVoList) {
if (merMemberNoClearOrderVo.getUnPaidMoney() == null) {
+ merMemberNoClearOrderVo.setUnPaidMoney(zeroBig);
+ }
+ if(merMemberNoClearOrderVo.getUnPaidMoney().compareTo(zeroBig)<0){
merMemberNoClearOrderVo.setUnPaidMoney(zeroBig);
}
}
@@ -2874,13 +2954,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;
}
@@ -3223,20 +3321,21 @@
Long userId = verifyCouponGetVo.getUserId();
Member member = remoteMemberService.getMember(userId).getData();
//如果是商户优惠券,验证商户一致
- if (memberCoupon.getCouponFrom() == 2 && !memberCoupon.getShopId().equals(shopId)) {
+ if (memberCoupon.getCouponFrom() == 2) {
if(!memberCoupon.getShopId().equals(member.getRelationShopId())){
- throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+ throw new ServiceException(AppErrorConstant.BLINDING_VERIFY_SHOP_ERROR);
}
- if(memberCoupon.getShopId().equals(shopId)){
+ 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.VERIFY_SHOP_ERROR);
- }
- if(memberCoupon.getShopId().equals(shopId)){
+ /*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);
}
}
@@ -3392,7 +3491,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());
@@ -3417,6 +3518,9 @@
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();
// 获取订单年龄用户列表
@@ -3465,10 +3569,10 @@
}
}*/
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);
@@ -3476,6 +3580,8 @@
orderTotalValue[i] = mgtMapTotalPlusVo.getMapValueFirst();
orderMoneyValue[i] = mgtMapTotalPlusVo.getMapValueSecond();
}
+ orderDistributionTotalVo = fillOrderTotalKeyAndValuesToRecentFiveDays(orderTotalKey,orderTotalValue,orderMoneyValue);
+ }else{
orderDistributionTotalVo.setOrderTotalKey(orderTotalKey);
orderDistributionTotalVo.setOrderTotalValue(orderTotalValue);
orderDistributionTotalVo.setOrderMoneyValue(orderMoneyValue);
@@ -3504,28 +3610,44 @@
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;
+ }
// 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
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("周期");
} else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("2")) {
- MgtMapIntTotalVo.setMapKey("服务");
+ mgtMapIntTotalVo.setMapKey("服务");
mgtMapBigTotalVo.setMapKey("服务");
} else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("3")) {
- MgtMapIntTotalVo.setMapKey("体验");
+ mgtMapIntTotalVo.setMapKey("体验");
mgtMapBigTotalVo.setMapKey("体验");
} else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) {
- MgtMapIntTotalVo.setMapKey("单品");
+ mgtMapIntTotalVo.setMapKey("单品");
mgtMapBigTotalVo.setMapKey("单品");
}
- goodsTypeTotalList.add(MgtMapIntTotalVo);
+ goodsTypeTotalList.add(mgtMapIntTotalVo);
goodsTypeMoneyList.add(mgtMapBigTotalVo);
}
orderTypeTotalVo.setGoodsTypeTotalList(goodsTypeTotalList);
@@ -3553,6 +3675,7 @@
List<MgtMapBigTotalVo> goodsRankList = orderMapper.listMerOrderTotalGoodsRank(merTotalDto);
if (goodsRankList != null && goodsRankList.size() > 0) {
goodsRankList = bigListRemoveNull(goodsRankList);
+ Collections.reverse(goodsRankList);
orderGoodsRankVo.setGoodsRankList(goodsRankList);
}
return orderGoodsRankVo;
@@ -3578,6 +3701,7 @@
List<MgtMapBigTotalVo> orderFromList = orderMapper.listMerOrderTotalOrderFrom(merTotalDto);
if (orderFromList != null && orderFromList.size() > 0) {
orderFromList = bigListRemoveNull(orderFromList);
+ Collections.reverse(orderFromList);
merOrderFromRankVo.setOrderFromRankList(orderFromList);
}
return merOrderFromRankVo;
@@ -3743,9 +3867,12 @@
@Override
@Transactional
public void payBack(PartnerTransactionsResult transaction) {
- // 更新订单状态
- String orderId = transaction.getOutTradeNo();
- Order order = this.getById(orderId);
+
+ // Order order = this.getById(orderId);
+ // 更新订单状态 订单编号,就是 微信outTradeNo
+ String orderNo = transaction.getOutTradeNo();
+ Order order = this.getByOrderNo(orderNo);
+ String orderId = order.getOrderId();
order.setOrderStatus(2);
order.setPayTime(new Date());
this.saveOrUpdate(order);
@@ -3799,14 +3926,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());
@@ -3866,8 +3993,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);
@@ -3875,6 +4003,14 @@
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);
}
/**
@@ -3975,14 +4111,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());
@@ -4030,11 +4166,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);
@@ -4044,13 +4182,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();
@@ -4061,7 +4202,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());
@@ -4077,13 +4219,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
@@ -4094,7 +4238,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;
}
@@ -4107,7 +4258,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;
}
@@ -4120,13 +4274,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;
@@ -4172,9 +4329,80 @@
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;
+ }
+
+ 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;
}
@@ -4188,37 +4416,55 @@
@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;
+ }
+ // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
+ 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("周期");
+ } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("2")) {
+ mgtMapIntTotalVo.setMapKey("服务");
+ mgtMapBigTotalVo.setMapKey("服务");
+ } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("3")) {
+ mgtMapIntTotalVo.setMapKey("体验");
+ mgtMapBigTotalVo.setMapKey("体验");
+ } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) {
+ mgtMapIntTotalVo.setMapKey("单品");
+ mgtMapBigTotalVo.setMapKey("单品");
+ }
+ goodsTypeTotalList.add(mgtMapIntTotalVo);
+ goodsTypeMoneyList.add(mgtMapBigTotalVo);
+ }
+ orderTypeTotalVo.setGoodsTypeTotalList(goodsTypeTotalList);
+ orderTypeTotalVo.setGoodsTypeMoneyList(goodsTypeMoneyList);
}
- orderTypeTotalVo.setGoodsTypeTotalList(goodsTypeTotalList);
- orderTypeTotalVo.setGoodsTypeMoneyList(goodsTypeMoneyList);
}
return orderTypeTotalVo;
}
@@ -4234,32 +4480,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;
}
@@ -4275,32 +4523,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;
}
@@ -4486,8 +4742,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);
}
}
@@ -4508,4 +4763,42 @@
}
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;
+ }
}
--
Gitblit v1.7.1