From a7389e026856e7a2369ad2e928778b036894a96c Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期日, 13 八月 2023 01:21:20 +0800
Subject: [PATCH] bug
---
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java | 1265 ++++++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 927 insertions(+), 338 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 46d54f3..cd4fbc4 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,6 +5,9 @@
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.profitsharingV3.ProfitSharingNotifyResult;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.utils.StringUtils;
@@ -15,15 +18,20 @@
import com.ruoyi.order.domain.dto.*;
import com.ruoyi.order.domain.pojo.account.OrderPayment;
import com.ruoyi.order.domain.pojo.account.OrderRefund;
+import com.ruoyi.order.domain.pojo.account.ProfitSharing;
import com.ruoyi.order.domain.pojo.order.ConsumerGoods;
import com.ruoyi.order.domain.pojo.order.Order;
import com.ruoyi.order.domain.pojo.order.OrderGoods;
+import com.ruoyi.order.domain.pojo.order.PayRecord;
import com.ruoyi.order.domain.vo.*;
+import com.ruoyi.order.enums.RefundStatusEnum;
+import com.ruoyi.order.enums.dict.IDict;
import com.ruoyi.order.mapper.order.OrderMapper;
-import com.ruoyi.order.service.order.ConsumerGoodsService;
-import com.ruoyi.order.service.order.OrderGoodsService;
-import com.ruoyi.order.service.order.OrderService;
-import com.ruoyi.order.service.order.UserServiceRecordService;
+import com.ruoyi.order.service.account.OrderPaymentService;
+import com.ruoyi.order.service.account.OrderRefundService;
+import com.ruoyi.order.service.account.PaymentMessageService;
+import com.ruoyi.order.service.account.ProfitSharingService;
+import com.ruoyi.order.service.order.*;
import com.ruoyi.system.api.constant.AppErrorConstant;
import com.ruoyi.system.api.constant.DelayTaskEnum;
import com.ruoyi.system.api.constant.SecurityConstant;
@@ -33,6 +41,7 @@
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;
@@ -40,7 +49,7 @@
import com.ruoyi.system.api.domain.poji.sys.SysUser;
import com.ruoyi.system.api.domain.vo.*;
import com.ruoyi.system.api.service.*;
-import com.wechat.pay.java.service.partnerpayments.jsapi.model.Transaction;
+import lombok.extern.slf4j.Slf4j;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
@@ -65,6 +74,7 @@
* @since 2023-04-25
*/
@Service
+@Slf4j
public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService {
@Resource
@@ -106,29 +116,26 @@
@Resource
private RedisService redisService;
- //@Resource
- //@Qualifier("profitsSharingServiceImpl")
- //private ProfitsSharingService profitsSharingService;
+ @Resource
+ private PayRecordService payRecordService;
@Autowired
private RedissonClient redissonClient;
- /** 商户号 */
- public static String merchantId = "";
- /** 商户API私钥路径 */
- public static String privateKeyPath = "";
- /** 商户证书序列号 */
- public static String merchantSerialNumber = "";
- /** 微信支付平台证书路径 */
- public static String wechatPayCertificatePath = "";
- /** 微信支付 APIv3 密钥 */
- public static String apiV3Key = "";
- /** 微信支付APPID */
- public static String appId="";
- /** 微信支付商户ID */
- public static String mchId="";
- /** 通知地址 */
- public static String notifyUrl="";
+ /*@Autowired
+ private WxPayService wxService;*/
+
+ @Resource
+ private PaymentMessageService paymentMessageService;
+
+ @Resource
+ private OrderPaymentService orderPaymentService;
+
+ @Resource
+ private ProfitSharingService profitSharingService;
+
+ @Resource
+ private OrderRefundService orderRefundService;
/**
* @description: buyGoods
@@ -156,8 +163,8 @@
Map<String, Goods> goodsMap = goodsList.stream()
.collect(Collectors.toMap(Goods::getGoodsId, Function.identity()));
Boolean haveDeposit = false;
- for(Goods goods : goodsList){
- if(goods.getSubscription()!=null&&goods.getSubscription().compareTo(BigDecimal.ZERO)>0){
+ for (Goods goods : goodsList) {
+ if (goods.getSubscription() != null && goods.getSubscription().compareTo(BigDecimal.ZERO) > 0) {
haveDeposit = true;
}
}
@@ -177,7 +184,7 @@
// 将优惠券列表转换为Map,以优惠券ID为键
Map<String, AppMemberCouponVo> appMemberCouponVoMap = new HashMap<>();
- if(appMemberCouponVoList!=null&&!appMemberCouponVoList.isEmpty()){
+ if (appMemberCouponVoList != null && !appMemberCouponVoList.isEmpty()) {
appMemberCouponVoMap = appMemberCouponVoList.stream().collect(Collectors.toMap(AppMemberCouponVo::getMemberCouponId, Function.identity()));
}
AppMemberCouponVo appMemberCouponVo;
@@ -204,7 +211,7 @@
memberCouponId = appBuyGoodsDto.getMemberCouponId();
// 获取商品信息
goods = goodsMap.get(goodsId);
- if(goods.getGoodsStatus()!=1){
+ if (goods.getGoodsStatus() != 1) {
throw new ServiceException(AppErrorConstant.GOODS_DOWN);
}
// 设置订单商品信息
@@ -237,7 +244,7 @@
if (couponType == 1 && appMemberCouponVo.getMoneyThreshold() != null && appMemberCouponVo.getDiscountMoney() != null) {
moneyThreshold = appMemberCouponVo.getMoneyThreshold();
discountMoney = appMemberCouponVo.getDiscountMoney();
- if (goodsTotalPrice.compareTo(moneyThreshold) >= 0 && goodsTotalPrice.compareTo(discountMoney)>0) {
+ if (goodsTotalPrice.compareTo(moneyThreshold) >= 0 && goodsTotalPrice.compareTo(discountMoney) > 0) {
goodsRealPrice = goodsTotalPrice.subtract(discountMoney);
useCoupon = 1;
userCouponIdSet.add(memberCouponId);
@@ -245,16 +252,16 @@
}
} else if (couponType == 2 && appMemberCouponVo.getDiscountPercent() != null) {
discountPercent = appMemberCouponVo.getDiscountPercent();
- goodsRealPrice = goodsTotalPrice.multiply(discountPercent).divide(BigDecimal.TEN).setScale(2, BigDecimal.ROUND_HALF_UP);
- discountMoney = goodsRealPrice.subtract(goodsTotalPrice);
+ goodsRealPrice = goodsTotalPrice.multiply(discountPercent).divide(BigDecimal.TEN, 2, BigDecimal.ROUND_HALF_UP);
+ discountMoney = goodsTotalPrice.subtract(goodsRealPrice);
useCoupon = 1;
userCouponIdSet.add(memberCouponId);
appSureOrderGoodsVo.setMemberCouponId(memberCouponId);
} else if (couponType == 3 && appMemberCouponVo.getDiscountMoney() != null) {
discountMoney = appMemberCouponVo.getDiscountMoney();
- if(goodsTotalPrice.compareTo(discountMoney)>0){
+ if (goodsTotalPrice.compareTo(discountMoney) > 0) {
goodsRealPrice = goodsTotalPrice.subtract(discountMoney);
- if(goodsRealPrice.compareTo(BigDecimal.ZERO)<0){
+ if (goodsRealPrice.compareTo(BigDecimal.ZERO) < 0) {
goodsRealPrice = BigDecimal.ZERO;
}
useCoupon = 1;
@@ -270,12 +277,12 @@
appSureOrderGoodsVo.setGoodsRealPrice(goodsRealPrice);
// 获取商品押金
goodsDeposit = goods.getSubscription();
- if (goodsDeposit != null && goodsDeposit.compareTo(BigDecimal.ZERO)>0) {
+ if (goodsDeposit != null && goodsDeposit.compareTo(BigDecimal.ZERO) > 0) {
goodsDeposit = goodsDeposit.multiply(buyNumBig);
- }else{
- if(haveDeposit){
+ } else {
+ if (haveDeposit) {
goodsDeposit = goodsRealPrice;
- }else{
+ } else {
goodsDeposit = new BigDecimal("0.00");
}
}
@@ -290,9 +297,9 @@
//处理优惠券列表
if (appMemberCouponVoList != null && !appMemberCouponVoList.isEmpty()) {
for (AppMemberCouponVo entity : appMemberCouponVoList) {
- if(userCouponIdSet!=null&&userCouponIdSet.contains(entity.getMemberCouponId())){
+ if (userCouponIdSet != null && userCouponIdSet.contains(entity.getMemberCouponId())) {
entity.setUseFlag(1);
- }else{
+ } else {
entity.setUseFlag(0);
}
@@ -300,20 +307,24 @@
}
// 过滤商品优惠券列表
List<AppMemberCouponVo> appGoodsMemberCouponVoList;
- for(AppSureOrderGoodsVo sureOrderGoodsVo : appSureOrderGoodsVoList) {
+ for (AppSureOrderGoodsVo sureOrderGoodsVo : appSureOrderGoodsVoList) {
appGoodsMemberCouponVoList = new ArrayList<>();
- for(AppMemberCouponVo entity : appMemberCouponVoList){
- if(StringUtils.isBlank(entity.getRelGoodsIds())||entity.getRelGoodsIds().contains(sureOrderGoodsVo.getGoodsId())){
- if(entity.getCouponType()==1){
- if(entity.getMoneyThreshold().compareTo(sureOrderGoodsVo.getGoodsTotalPrice())<0&&entity.getDiscountMoney().compareTo(sureOrderGoodsVo.getGoodsTotalPrice())<0){
+ for (AppMemberCouponVo entity : appMemberCouponVoList) {
+ if (StringUtils.isBlank(entity.getRelGoodsIds()) || entity.getRelGoodsIds().contains(sureOrderGoodsVo.getGoodsId())) {
+ if (entity.getCouponType() == 1) {
+ if (entity.getMoneyThreshold().compareTo(sureOrderGoodsVo.getGoodsTotalPrice()) <= 0) {
appGoodsMemberCouponVoList.add(entity);
}
- }else if(entity.getCouponType()==2){
+ /*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){
+ } else if (entity.getCouponType() == 3) {
+ appGoodsMemberCouponVoList.add(entity);
+ /*if (entity.getDiscountMoney().compareTo(sureOrderGoodsVo.getGoodsTotalPrice()) < 0) {
appGoodsMemberCouponVoList.add(entity);
- }
+ }*/
}
}
@@ -418,14 +429,18 @@
if (activityGoodsGetVo.getActivityStatus() == 2) {
throw new ServiceException(AppErrorConstant.ACTIVITY_END);
}
- if (activityGoodsGetVo.getAvailableBuyNum() < 1) {
+ Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + activityId + "-" + goodsId);
+ if (surpNum == null || surpNum < 1) {
throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_NULL);
+ }
+ if (activityGoodsGetVo.getAvailableBuyNum() < 1) {
+ throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_BEYOND);
}
if (activityGoodsGetVo.getAvailableBuyNum() < buyNum) {
throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_BEYOND);
}
Goods goods = remoteGoodsService.getGoods(goodsId).getData();
- if(goods.getGoodsStatus()!=1){
+ if (goods.getGoodsStatus() != 1) {
throw new ServiceException(AppErrorConstant.GOODS_DOWN);
}
appPanicBuyVo.setActivityId(activityId);
@@ -455,9 +470,9 @@
appPanicBuyVo.setGoodsTotalPrice(goodsTotalPrice);
appPanicBuyVo.setGoodsRealPrice(goodsRealPrice);
goodsDeposit = activityGoodsGetVo.getActivitySubscription();
- if (goodsDeposit == null || goodsDeposit.compareTo(BigDecimal.ZERO)==0) {
+ if (goodsDeposit == null || goodsDeposit.compareTo(BigDecimal.ZERO) == 0) {
goodsDeposit = new BigDecimal("0.00");
- }else{
+ } else {
goodsDeposit = goodsDeposit.multiply(buyNumBig);
}
appPanicBuyVo.setGoodsDeposit(goodsDeposit);
@@ -497,8 +512,8 @@
Map<String, Goods> goodsMap = goodsList.stream()
.collect(Collectors.toMap(Goods::getGoodsId, Function.identity()));
Boolean haveDeposit = false;
- for(Goods goods : goodsList){
- if(goods.getSubscription()!=null&&goods.getSubscription().compareTo(BigDecimal.ZERO)>0){
+ for (Goods goods : goodsList) {
+ if (goods.getSubscription() != null && goods.getSubscription().compareTo(BigDecimal.ZERO) > 0) {
haveDeposit = true;
}
}
@@ -509,7 +524,7 @@
Integer serviceNum;
Integer goodsNum = 0;
String memberCouponId;
- Goods goods;
+ Goods goods = null;
GoodsFile goodsFile;
BigDecimal goodsPrice;
BigDecimal goodsTotalPrice;
@@ -541,6 +556,7 @@
HashSet<String> goodsTypeSet = new HashSet<>();
//使用优惠券
StringJoiner memberCouponSJ = new StringJoiner(",");
+ List<String> goodsNameList = new ArrayList<>();
// 遍历购买的商品列表
for (AppBuyGoodsDto appBuyGoodsDto : appBuyGoodsDtoList) {
appSureOrderGoodsVo = new AppSureOrderGoodsVo();
@@ -550,6 +566,7 @@
memberCouponId = appBuyGoodsDto.getMemberCouponId();
// 获取商品信息
goods = goodsMap.get(goodsId);
+ goodsNameList.add(goods.getGoodsName());
// 设置商品信息
appSureOrderGoodsVo.setGoodsId(goodsId);
appSureOrderGoodsVo.setGoodsName(goods.getGoodsName());
@@ -595,13 +612,17 @@
}
} else if (couponType == 2 && appMemberCouponVo.getDiscountPercent() != null) {
discountPercent = appMemberCouponVo.getDiscountPercent();
- goodsRealPrice = goodsTotalPrice.multiply(discountPercent).divide(BigDecimal.TEN).setScale(2, BigDecimal.ROUND_HALF_UP);
- discountMoney = goodsRealPrice.subtract(goodsTotalPrice);
+ goodsRealPrice = goodsTotalPrice.multiply(discountPercent).divide(BigDecimal.TEN, 2, BigDecimal.ROUND_HALF_UP);
+ discountMoney = goodsTotalPrice.subtract(goodsRealPrice);
useCoupon = 1;
} else if (couponType == 3 && appMemberCouponVo.getDiscountMoney() != null) {
discountMoney = appMemberCouponVo.getDiscountMoney();
goodsRealPrice = goodsTotalPrice.subtract(discountMoney);
useCoupon = 1;
+ }
+ if(goodsRealPrice.compareTo(BigDecimal.ZERO)<0){
+ goodsRealPrice = BigDecimal.ZERO;
+ discountMoney = goodsTotalPrice;
}
}
memberCouponSJ.add(memberCouponId);
@@ -612,12 +633,12 @@
appSureOrderGoodsVo.setGoodsRealPrice(goodsRealPrice);
// 获取商品押金
goodsDeposit = goods.getSubscription();
- if (goodsDeposit != null && goodsDeposit.compareTo(BigDecimal.ZERO)>0) {
+ if (goodsDeposit != null && goodsDeposit.compareTo(BigDecimal.ZERO) > 0) {
goodsDeposit = goodsDeposit.multiply(buyNumBig);
- }else{
- if(haveDeposit){
+ } else {
+ if (haveDeposit) {
goodsDeposit = goodsRealPrice;
- }else{
+ } else {
goodsDeposit = new BigDecimal("0.00");
}
}
@@ -647,6 +668,8 @@
orderGoods.setServiceNum(serviceNum);
orderGoods.setGoodsType(goods.getGoodsType());
orderGoods.setGoodsName(goods.getGoodsName());
+ orderGoods.setGoodsTag(goods.getGoodsTags());
+ orderGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
orderGoods.setGoodsPicture(goodsFile.getFileUrl());
// 保存订单商品
orderGoodsService.save(orderGoods);
@@ -680,13 +703,14 @@
order.setDiscountMoney(couponDiscount);
order.setReceivableMoney(orderPayMoney);
order.setReceivableDeposit(orderPayDeposit);
- order.setChangeReceivableMoney(orderPayMoney);
+ 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) {
@@ -694,6 +718,7 @@
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);
}
@@ -711,54 +736,128 @@
}
appPlaceOrderVo.setOrderId(orderId);
appPlaceOrderVo.setOrderNo(orderNo);
- // 调用支付
- /* CombineTransactionsJsRequest request=new CombineTransactionsJsRequest();
- request.setCombineAppid();
- request.setCombineMchid();
- profitsSharingService.combineTransactions(request);*/
- //构建预下单支付对象
- /*PrepayRequest request = new PrepayRequest();
- Amount amount = new Amount();
- amount.setTotal(Integer.parseInt(order.getPayMoney().multiply(new BigDecimal(100)).toString()));
- request.setAmount(amount);
- request.setAppid(this.appId);
- request.setMchid(this.mchId);
- request.setDescription(order.getGoodsInfo());
- request.setNotifyUrl(this.notifyUrl);
- request.setOutTradeNo(order.getOrderId());
- Payer payer = new Payer();
- payer.setOpenid("oLTPCuN5a-nBD4rAL_fa********");
- request.setPayer(payer);*/
- //返回前端唤醒支付结果信息
- /*PrepayWithRequestPaymentResponse res = this.getJsApIResponse(request);
- appPlaceOrderVo.setAppId(this.appId);
- appPlaceOrderVo.setTimeStamp(res.getTimeStamp());
- appPlaceOrderVo.setNonceStr(res.getNonceStr());
- appPlaceOrderVo.setPackageStr(res.getPackageVal());
- appPlaceOrderVo.setTradeType(res.getSignType());
- appPlaceOrderVo.setPaySign(res.getPaySign());*/
+ String goodsName = "";
+ if (null != goods) {
+ goodsName = goods.getGoodsName();
+ }
+
+ // 小程序微信下单支付
+ /*createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), goodsName, orderNo,
+ orderId, order.getPayMoney(), appPlaceOrderDto.getOpenid(),
+ appPlaceOrderDto.getSpbillCreateIp(), goodsNameList);*/
//减去优惠券
- if(memberCouponSJ!=null&&StringUtils.isNotBlank(memberCouponSJ.toString())){
+ if (StringUtils.isNotBlank(memberCouponSJ.toString())) {
remoteCouponService.useMemberCoupon(memberCouponSJ.toString());
}
//生成自动取消订单延时任务
Integer delayTime = 30;
- if(redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)){
+ 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.setEndTime(DateUtils.addMinutes(new Date(), delayTime));
delayTask.setRedisKey(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId);
remoteConfigService.addDelayTask(delayTask);
- appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(),delayTime));
+ appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime));
+
return appPlaceOrderVo;
}
+
+ /**
+ * 小程序支付下单API
+ * @param appPlaceOrderVo
+ * @param userId
+ * @param shopId
+ * @param goodsName
+ * @param orderNo
+ * @param orderId
+ * @param payMoney
+ * @param openid
+ * @param payerClientIp
+ * @param goodsNameList
+ */
+ /*private void createWxPayInfo(AppPlaceOrderVo appPlaceOrderVo, Long userId, Long shopId,
+ String goodsName, String orderNo,
+ String orderId, BigDecimal payMoney,
+ String openid, String payerClientIp, List<String> goodsNameList){
+ try {
+ // 创建支付订单
+ R<String> resultMch = remoteShopService.getShopSubMchId(shopId);
+ String subMchId = resultMch.getData();
+ if (StringUtils.isEmpty(subMchId)) {
+ throw new ServiceException("获取微信商户号失败");
+ }
+ WxPayConfig config = wxService.getConfig();
+ config.setSubMchId(subMchId);
+
+ PartnerTransactionsRequest request = new PartnerTransactionsRequest();
+ request.setSpAppid(config.getAppId());
+ request.setSpMchid(config.getMchId());
+ request.setSubMchid(config.getSubMchId());
+ // 商品描述 body
+ String description = goodsName + "-商品购买";
+
+ request.setDescription(description);
+ request.setOutTradeNo(orderNo);
+ request.setNotifyUrl(config.getNotifyUrl());
+ // 结算信息
+ PartnerTransactionsRequest.SettleInfo settleInfo = new PartnerTransactionsRequest.SettleInfo();
+ settleInfo.setProfitSharing(true);
+ settleInfo.setSubsidyAmount(BigDecimal.ZERO);
+ request.setSettleInfo(settleInfo);
+
+ // 订单总金额
+ Integer totalFee = payMoney.multiply(new BigDecimal(100)).intValue();
+ PartnerTransactionsRequest.Amount amount = new PartnerTransactionsRequest.Amount();
+ amount.setTotal(totalFee);
+ amount.setCurrency("CNY");
+ request.setAmount(amount);
+
+ // 支付者
+ PartnerTransactionsRequest.Payer payer = new PartnerTransactionsRequest.Payer();
+ payer.setSpOpenid(openid);
+ request.setPayer(payer);
+
+ // 场景信息
+ PartnerTransactionsRequest.SceneInfo sceneInfo = new PartnerTransactionsRequest.SceneInfo();
+ sceneInfo.setPayerClientIp(payerClientIp);
+ request.setSceneInfo(sceneInfo);
+
+ TransactionsResult.JsapiResult result = wxService.getEcommerceService().partnerTransactions(TradeTypeEnum.JSAPI, request);
+
+ // 请求参数
+ Gson gson = new Gson();
+ String payRequestJson = gson.toJson(request);
+ // 返回参数
+ String payResponseJson = gson.toJson(result);
+
+ // 支付相关信息返回
+ appPlaceOrderVo.setAppId(result.getAppId());
+ appPlaceOrderVo.setMchId(config.getMchId());
+ appPlaceOrderVo.setTimeStamp(result.getTimeStamp());
+ appPlaceOrderVo.setNonceStr(result.getNonceStr());
+ appPlaceOrderVo.setPackageStr(result.getPackageValue());
+ appPlaceOrderVo.setSignType(result.getSignType());
+ appPlaceOrderVo.setPaySign(result.getPaySign());
+ appPlaceOrderVo.setPrepayId(result.getPackageValue());
+
+ // 保存支付订单统一下单日志
+ paymentMessageService.savePaymentMessage("1", orderId, payRequestJson, payResponseJson);
+
+ // 保存支付订单统一下单支付记录
+ orderPaymentService.saveOrderPayment(userId, shopId, subMchId, orderId, payMoney,
+ appPlaceOrderVo.getEndTime(), "Y", openid,
+ Joiner.on(";").join(goodsNameList), result.getPackageValue());
+ } catch (WxPayException e) {
+ throw new ServiceException(e.getMessage());
+ }
+ }*/
/**
@@ -781,17 +880,17 @@
String goodsId = appPlaceActivityDto.getGoodsId();
Integer buyNum = appPlaceActivityDto.getBuyNum();
//redis库存控制极简版
- String goodsLock = "goods_lock_"+activityId+"_"+goodsId;
+ String goodsLock = "goods_lock_" + activityId + "_" + goodsId;
RLock redissonLock = redissonClient.getLock(goodsLock);
- try{
+ try {
redissonLock.lock(30, TimeUnit.SECONDS);
- Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS+"-"+activityId+"-"+goodsId);
- if(surpNum==null||surpNum<buyNum){
+ Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + activityId + "-" + goodsId);
+ if (surpNum == null || surpNum < buyNum) {
throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_NULL);
- }else{
- redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS+"-"+activityId+"-"+goodsId,surpNum-buyNum);
+ } else {
+ redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + activityId + "-" + goodsId, surpNum - buyNum);
}
- }finally{
+ } finally {
redissonLock.unlock();
}
// 定义购买数量,服务数量,商品数量
@@ -871,9 +970,9 @@
appSureOrderGoodsVo.setGoodsRealPrice(goodsRealPrice);
// 获取商品押金
goodsDeposit = activityGoodsGetVo.getActivitySubscription();
- if (goodsDeposit == null || goodsDeposit.compareTo(BigDecimal.ZERO)==0) {
+ if (goodsDeposit == null || goodsDeposit.compareTo(BigDecimal.ZERO) == 0) {
goodsDeposit = new BigDecimal("0.00");
- }else{
+ } else {
goodsDeposit = goodsDeposit.multiply(buyNumBig);
}
appSureOrderGoodsVo.setGoodsDeposit(goodsDeposit);
@@ -898,7 +997,9 @@
orderGoods.setCycleNumFlag(goods.getCycleNumFlag());
orderGoods.setServiceNum(serviceNum);
orderGoods.setGoodsType(goods.getGoodsType());
+ orderGoods.setGoodsTag(goods.getGoodsTags());
orderGoods.setGoodsName(goods.getGoodsName());
+ orderGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
orderGoods.setGoodsPicture(goodsFile.getFileUrl());
// 保存订单商品
orderGoodsService.save(orderGoods);
@@ -918,9 +1019,9 @@
goodsTypeSet.add("单品");
}
String goodsNurse = goods.getGoodsNurses();
- if(StringUtils.isNotBlank(goodsNurse)){
+ if (StringUtils.isNotBlank(goodsNurse)) {
String[] goodsNurseArr = goodsNurse.split(",");
- for(String str : goodsNurseArr){
+ for (String str : goodsNurseArr) {
goodsNurseSet.add(str);
}
}
@@ -938,7 +1039,9 @@
order.setDiscountMoney(couponDiscount);
order.setReceivableMoney(orderPayMoney);
order.setReceivableDeposit(orderPayDeposit);
- order.setChangeReceivableMoney(orderPayMoney);
+ order.setActivityId(activityId);
+ order.setActivityName(activityGoodsGetVo.getActivityName());
+ order.setOfflinePayMoney(BigDecimal.ZERO);
// 根据支付类型设置订单支付金额,在线支付金额,订单支付金额,未支付金额,关闭标志
if (appPlaceActivityDto.getPayType() == 1) {
order.setPayMoney(orderPayMoney);
@@ -947,6 +1050,7 @@
appPlaceOrderVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getPayMoney()));
order.setPayType(1);
order.setCloseFlag(1);
+ order.setChangeReceivableMoney(orderGoodsMoney.subtract(couponDiscount));
} else if (appPlaceActivityDto.getPayType() == 2) {
order.setPayMoney(orderPayDeposit);
order.setOnlinePayMoney(orderPayDeposit);
@@ -954,6 +1058,7 @@
appPlaceOrderVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getPayMoney()));
order.setPayType(2);
order.setCloseFlag(0);
+ order.setChangeReceivableMoney(orderGoodsMoney.subtract(couponDiscount).subtract(orderPayDeposit));
}
// 设置订单备注,商品数量,创建时间
order.setOrderRemark(appPlaceActivityDto.getOrderRemark());
@@ -962,7 +1067,7 @@
// 保存订单
this.save(order);
// 更新用户商品类型
- if (goodsTypeSet != null || goodsNurseSet!= null) {
+ if (goodsTypeSet != null || goodsNurseSet != null) {
AppMemberGoodsTypeDto appMemberGoodsTypeDto = new AppMemberGoodsTypeDto();
appMemberGoodsTypeDto.setUserId(userId);
appMemberGoodsTypeDto.setGoodsTypeSet(goodsTypeSet);
@@ -1030,17 +1135,17 @@
remoteActivityService.addActivityRecord(activityRecord);
//生成自动取消订单延时任务
Integer delayTime = 30;
- if(redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)){
+ 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.setEndTime(DateUtils.addMinutes(new Date(), delayTime));
delayTask.setRedisKey(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId);
remoteConfigService.addDelayTask(delayTask);
- appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(),delayTime));
+ appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime));
return appPlaceOrderVo;
}
@@ -1069,7 +1174,7 @@
shopMap.put(shopIdLong, shopTemp);
});
Integer delayTime = 30;
- if(redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)){
+ if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) {
delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
}
for (AppUserOrderPageVo appUserOrderPageVo : appUserOrderPageVoList) {
@@ -1082,7 +1187,7 @@
appUserOrderPageVo.setSameShop(0);
}
appUserOrderPageVo.setVerifyCode("1-" + appUserOrderPageVo.getOrderId());
- appUserOrderPageVo.setEndTime(DateUtils.addMinutes(appUserOrderPageVo.getCreateTime(),delayTime));
+ appUserOrderPageVo.setEndTime(DateUtils.addMinutes(appUserOrderPageVo.getCreateTime(), delayTime));
}
}
return appUserOrderPageVoList;
@@ -1107,6 +1212,7 @@
appUserOrderGetVo.setCouponDiscount(order.getCouponMoney());
appUserOrderGetVo.setReceivableDeposit(order.getReceivableDeposit());
appUserOrderGetVo.setReceivableMoney(order.getReceivableMoney());
+ appUserOrderGetVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getOnlinePayMoney()));
appUserOrderGetVo.setPayType(order.getPayType());
appUserOrderGetVo.setPayMoney(order.getPayMoney());
appUserOrderGetVo.setOrderRemark(order.getOrderRemark());
@@ -1120,6 +1226,12 @@
appUserOrderGetVo.setShopName(shop.getShopName());
appUserOrderGetVo.setAppUserOrderGoodsPageVoList(appUserOrderGoodsPageVoList);
appUserOrderGetVo.setVerifyCode("1-" + orderId);
+ //生成自动取消订单延时任务
+ Integer delayTime = 30;
+ if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) {
+ delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
+ }
+ appUserOrderGetVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime));
return appUserOrderGetVo;
}
@@ -1131,11 +1243,15 @@
@Override
public void cancelOrder(String orderId) {
Order order = this.getById(orderId);
- if (order.getOrderStatus() == 1) {
+ // 订单状态-1.删除 0.已取消 1.待支付 2.待核销 3.已完成
+ if (order.getOrderStatus() == 0) {
+ throw new ServiceException(AppErrorConstant.CANCEL_CANCEL_ORDER);
+ } else if (order.getOrderStatus() == 1) {
this.autoCancelOrder(orderId);
- }else if(order.getOrderStatus() == 2){
+ } else if (order.getOrderStatus() == 2) {
+ // 2.待核销 -> 订单退款
this.refundOrder(orderId);
- }else{
+ } else {
throw new ServiceException(AppErrorConstant.CANCEL_ERROR_ORDER);
}
}
@@ -1203,15 +1319,32 @@
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());
merVerifyOrderVo.setPayTime(order.getPayTime());
merVerifyOrderVo.setUseTime(order.getUseTime());
merVerifyOrderVo.setAppUserOrderGoodsPageVoList(appUserOrderGoodsPageVoList);
+ merVerifyOrderVo.setPayType(order.getPayType());
+ merVerifyOrderVo.setRealReceiveMoney(order.getChangeReceivableMoney());
+ if(order.getPayType()==1){
+ merVerifyOrderVo.setReceiveMoney(order.getPayMoney());
+ }else{
+ if(order.getOfflinePayMoney()!=null){
+ merVerifyOrderVo.setReceiveMoney(order.getOfflinePayMoney());
+ }else{
+ merVerifyOrderVo.setReceiveMoney(BigDecimal.ZERO);
+ }
+ }
+ merVerifyOrderVo.setUnReceiveMoney(merVerifyOrderVo.getRealReceiveMoney().subtract(merVerifyOrderVo.getReceiveMoney()));
// 根据订单用户ID获取用户信息
Member member = remoteMemberService.getMember(order.getUserId()).getData();
+ merVerifyOrderVo.setUserId(order.getUserId());
merVerifyOrderVo.setUserName(member.getRealName());
merVerifyOrderVo.setUserMobile(member.getMobile());
merVerifyOrderVo.setCloseFlag(order.getCloseFlag());
@@ -1239,7 +1372,7 @@
}
ShopRelUserVo shopRelUserVo = remoteShopService.getShopByUserId(merVerifyOrderDto.getUserId()).getData();
- if(!shopRelUserVo.getShopId().equals(order.getShopId())){
+ if (!shopRelUserVo.getShopId().equals(order.getShopId())) {
throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
}
order.setOrderStatus(3);
@@ -1249,9 +1382,9 @@
order.setOffPayTime(nowTime);
order.setPayMoney(order.getPayMoney().add(relPayMoney));
order.setChangeReceivableMoney(relReceiveMoney);
- if(order.getPayMoney().compareTo(order.getChangeReceivableMoney())>=0){
+ if (order.getPayMoney().compareTo(order.getChangeReceivableMoney()) >= 0) {
order.setCloseFlag(1);
- }else{
+ } else {
order.setCloseFlag(0);
}
this.saveOrUpdate(order);
@@ -1270,28 +1403,59 @@
Goods goods;
List<ConsumerGoods> consumerGoodsList = new ArrayList<>();
for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) {
- consumerGoods = new ConsumerGoods();
- goods = goodsMap.get(appUserOrderGoodsPageVo.getGoodsId());
- consumerGoodsId = IdUtils.simpleUUID();
- consumerGoods.setConsumerGoodsId(consumerGoodsId);
- consumerGoods.setDelFlag(0);
- consumerGoods.setServiceStatus(1);
- consumerGoods.setShopId(order.getShopId());
- consumerGoods.setUserId(order.getUserId());
- consumerGoods.setOrderId(orderId);
- consumerGoods.setOrderGoodsId(appUserOrderGoodsPageVo.getOrderGoodsId());
- consumerGoods.setGoodsId(appUserOrderGoodsPageVo.getGoodsId());
- consumerGoods.setGoodsName(appUserOrderGoodsPageVo.getGoodsName());
- consumerGoods.setCycleNumFlag(appUserOrderGoodsPageVo.getCycleNumFlag());
- consumerGoods.setServiceNum(appUserOrderGoodsPageVo.getServiceNum());
- consumerGoods.setUsedNum(0);
- consumerGoods.setGoodsType(appUserOrderGoodsPageVo.getGoodsType());
- consumerGoods.setCreateTime(nowTime);
- consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
- consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture());
- consumerGoods.setGoodsNurses(goods.getGoodsNurses());
- consumerGoods.setSourceFrom(1);
- consumerGoodsList.add(consumerGoods);
+ Integer buyNum = appUserOrderGoodsPageVo.getBuyNum();
+ if (appUserOrderGoodsPageVo.getCycleNumFlag() == 0) {
+ consumerGoods = new ConsumerGoods();
+ goods = goodsMap.get(appUserOrderGoodsPageVo.getGoodsId());
+ consumerGoodsId = IdUtils.simpleUUID();
+ consumerGoods.setConsumerGoodsId(consumerGoodsId);
+ consumerGoods.setDelFlag(0);
+ consumerGoods.setServiceStatus(1);
+ consumerGoods.setShopId(order.getShopId());
+ consumerGoods.setUserId(order.getUserId());
+ consumerGoods.setOrderId(orderId);
+ consumerGoods.setOrderGoodsId(appUserOrderGoodsPageVo.getOrderGoodsId());
+ consumerGoods.setGoodsId(appUserOrderGoodsPageVo.getGoodsId());
+ consumerGoods.setGoodsName(appUserOrderGoodsPageVo.getGoodsName());
+ consumerGoods.setCycleNumFlag(appUserOrderGoodsPageVo.getCycleNumFlag());
+ consumerGoods.setServiceNum(appUserOrderGoodsPageVo.getServiceNum());
+ consumerGoods.setUsedNum(0);
+ consumerGoods.setGoodsType(appUserOrderGoodsPageVo.getGoodsType());
+ consumerGoods.setGoodsTag(appUserOrderGoodsPageVo.getGoodsTag());
+ consumerGoods.setCreateTime(nowTime);
+ consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
+ consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture());
+ consumerGoods.setGoodsNurses(goods.getGoodsNurses());
+ consumerGoods.setSourceFrom(1);
+ consumerGoods.setSureNum(buyNum);
+ consumerGoodsList.add(consumerGoods);
+ } else {
+ for (int i = 0; i < buyNum; i++) {
+ consumerGoods = new ConsumerGoods();
+ goods = goodsMap.get(appUserOrderGoodsPageVo.getGoodsId());
+ consumerGoodsId = IdUtils.simpleUUID();
+ consumerGoods.setConsumerGoodsId(consumerGoodsId);
+ consumerGoods.setDelFlag(0);
+ consumerGoods.setServiceStatus(1);
+ consumerGoods.setShopId(order.getShopId());
+ consumerGoods.setUserId(order.getUserId());
+ consumerGoods.setOrderId(orderId);
+ consumerGoods.setOrderGoodsId(appUserOrderGoodsPageVo.getOrderGoodsId());
+ consumerGoods.setGoodsId(appUserOrderGoodsPageVo.getGoodsId());
+ consumerGoods.setGoodsName(appUserOrderGoodsPageVo.getGoodsName());
+ consumerGoods.setCycleNumFlag(appUserOrderGoodsPageVo.getCycleNumFlag());
+ consumerGoods.setServiceNum(appUserOrderGoodsPageVo.getServiceNum());
+ consumerGoods.setUsedNum(0);
+ consumerGoods.setGoodsType(appUserOrderGoodsPageVo.getGoodsType());
+ consumerGoods.setGoodsTag(appUserOrderGoodsPageVo.getGoodsTag());
+ consumerGoods.setCreateTime(nowTime);
+ consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
+ consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture());
+ consumerGoods.setGoodsNurses(goods.getGoodsNurses());
+ consumerGoods.setSourceFrom(1);
+ consumerGoodsList.add(consumerGoods);
+ }
+ }
}
consumerGoodsService.saveBatchConsumerGoods(consumerGoodsList);
//生成返回
@@ -1303,25 +1467,129 @@
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);
merVerifyOrderVo.setCreateTime(order.getCreateTime());
merVerifyOrderVo.setPayTime(order.getPayTime());
merVerifyOrderVo.setUseTime(order.getUseTime());
+ merVerifyOrderVo.setPayType(order.getPayType());
+ merVerifyOrderVo.setRealReceiveMoney(order.getChangeReceivableMoney());
+ if(order.getPayType()==1){
+ merVerifyOrderVo.setReceiveMoney(order.getPayMoney());
+ }else{
+ if(order.getOfflinePayMoney()!=null){
+ merVerifyOrderVo.setReceiveMoney(order.getOfflinePayMoney());
+ }else{
+ merVerifyOrderVo.setReceiveMoney(BigDecimal.ZERO);
+ }
+ }
+ merVerifyOrderVo.setUnReceiveMoney(merVerifyOrderVo.getRealReceiveMoney().subtract(merVerifyOrderVo.getReceiveMoney()));
Member member = remoteMemberService.getMember(order.getUserId()).getData();
+ merVerifyOrderVo.setUserId(order.getUserId());
merVerifyOrderVo.setUserName(member.getRealName());
merVerifyOrderVo.setUserMobile(member.getMobile());
merVerifyOrderVo.setCloseFlag(order.getCloseFlag());
//
- if(order.getOrderFrom()==2){
-
- //profitsSharingService.applyProfitSharing();
+ if (order.getOrderFrom() == 2) {
+ // profitsSharingService.applyProfitSharing();
}
- return merVerifyOrderVo;
+ //创建支付记录
+ PayRecord payRecord = new PayRecord();
+ payRecord.setDelFlag(0);
+ payRecord.setOrderId(order.getOrderId());
+ payRecord.setPayMoney(merVerifyOrderDto.getRelPayMoney());
+ payRecord.setPayTime(new Date());
+ payRecord.setPayType(merVerifyOrderDto.getPayType());
+ payRecordService.save(payRecord);
+
+ //submitProfitSharing(orderId, order.getOrderNo(), order.getShopId(), order.getOrderMoney());
+
+ return merVerifyOrderVo;
}
+
+ /*private void submitProfitSharing(String orderId, String orderNo, Long shopId, BigDecimal orderMoney) {
+ String sendMessage = "";
+ String resultMessage = "";
+ try {
+ // 核销完成 开始分账(平台收取服务费)
+ OrderPayment payment = orderPaymentService.getByOrderId(orderId);
+ String transactionId = payment.getTransactionId();
+
+ // 平台特约商户号,用户平台收取服务费
+ String platformTyMacId = WxPayConfiguration.getPlatformTyMacId();
+
+ R<String> resultMch = remoteShopService.getShopSubMchId(shopId);
+ String subMchId = resultMch.getData();
+ if (!StringUtils.isEmpty(subMchId)) {
+
+
+ R<ShopProportionVo> resultShopProportion = remoteShopService.getShopProportion(shopId);
+ ShopProportionVo shopProportion = resultShopProportion.getData();
+ if (null != shopProportion) {
+ ProfitSharingRequest request = new ProfitSharingRequest();
+ request.setSubMchid(subMchId);
+ request.setTransactionId(transactionId);
+ request.setOutOrderNo(orderNo);
+ List<Receiver> receiverList = new ArrayList<>();
+
+ String description = "订单:" + orderNo + " 平台抽取佣金";
+ BigDecimal proportionPercent = shopProportion.getProportionPercent();
+ if (null == proportionPercent) {
+ proportionPercent = BigDecimal.ZERO;
+ }
+
+ ProfitSharingResult result = new ProfitSharingResult();
+ result.setOutOrderNo(orderNo);
+ result.setStatus("FINISHED");
+
+ // 计算分成金额
+ int amount = orderMoney.multiply(proportionPercent).setScale(0, RoundingMode.UP).intValue();
+ log.info("订单分账:{} 分账金额: {}", orderNo, amount);
+ if (amount > 0) {
+ // 分账创建
+ Receiver receiver = new Receiver();
+ receiver.setType("MERCHANT_ID");
+ receiver.setReceiverAccount(platformTyMacId);
+ receiver.setAmount(amount);
+ receiver.setDescription(description);
+
+ receiverList.add(receiver);
+ request.setReceivers(receiverList);
+ // 分账完成
+ request.setFinish(true);
+ result = wxService.getEcommerceService().profitSharing(request);
+ }
+
+ // 创建分账记录
+ profitSharingService.saveProfitSharing(shopId, orderId, orderMoney, result);
+
+ // 保存请求信息
+ sendMessage = JSONObject.toJSONString(request);
+ resultMessage = JSONObject.toJSONString(result);
+ } else {
+ resultMessage = String.format("订单分账:%s 获取商户分成失败", orderNo);
+ log.info(resultMessage);
+ }
+ } else {
+ resultMessage = String.format("订单分账:%s 获取微信商户号失败", orderNo);
+ log.info(resultMessage);
+ }
+ } catch (WxPayException e) {
+ resultMessage = String.format("订单分账:%s 分账失败:%s", orderNo, e.getMessage());
+ log.info(resultMessage);
+ e.printStackTrace();
+ }
+
+ // 保存分账信息
+ paymentMessageService.savePaymentMessage("4", orderId, sendMessage, resultMessage);
+ }*/
/**
* @param merVerifyCouponDto
@@ -1335,7 +1603,7 @@
public MerVerifyCouponVo sureVerifyCoupon(MerVerifyCouponDto merVerifyCouponDto) {
MerVerifyCouponGetVo verifyCouponGetVo = remoteCouponService.getVerifyCoupon(merVerifyCouponDto.getMemberCouponId()).getData();
ShopRelUserVo shopRelUserVo = remoteShopService.getShopByUserId(merVerifyCouponDto.getUserId()).getData();
- if(!shopRelUserVo.getShopId().equals(verifyCouponGetVo.getMemberCoupon().getShopId())){
+ if (!shopRelUserVo.getShopId().equals(verifyCouponGetVo.getMemberCoupon().getShopId())) {
throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
}
// 创建MerVerifyCouponVo对象
@@ -1398,11 +1666,12 @@
appShopGoodsGetDto.setShopId(memberCoupon.getShopId());
//获取商户服务次数
shopGoods = remoteGoodsService.getShopGoods(appShopGoodsGetDto).getData();
- if(shopGoods!=null){
+ if (shopGoods != null) {
consumerGoods.setServiceNum(shopGoods.getServiceNum());
}
consumerGoods.setUsedNum(0);
consumerGoods.setGoodsType(goods.getGoodsType());
+ consumerGoods.setGoodsTag(goods.getGoodsTags());
consumerGoods.setCreateTime(new Date());
consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
goodsFile = remoteGoodsService.getGoodsFile(goods.getGoodsId()).getData();
@@ -1411,6 +1680,7 @@
consumerGoods.setSourceFrom(1);
consumerGoodsList.add(consumerGoods);
}
+ remoteCouponService.useMemberCoupon(memberCoupon.getId());
consumerGoodsService.saveBatchConsumerGoods(consumerGoodsList);
merVerifyCouponVo.setVerifyStatus(2);
return merVerifyCouponVo;
@@ -1418,36 +1688,64 @@
/**
- * @description 确认核销奖品
- * @author jqs
- * @date 2023/7/9 9:54
* @param merVerifyPrizeDto
- * @return MerVerifyAwardVo
+ * @return MerVerifyAwardVo
+ * @description 确认核销奖品
+ * @author jqs
+ * @date 2023/7/9 9:54
*/
@Override
@Transactional
- public MerVerifyAwardVo sureVerifyPrize(MerVerifyPrizeDto merVerifyPrizeDto){
+ public MerVerifyAwardVo sureVerifyPrize(MerVerifyPrizeDto merVerifyPrizeDto) {
MerVerifyAwardVo merVerifyAwardVo = new MerVerifyAwardVo();
MemberGiftRecord memberGiftRecord = remoteMemberService.getVerifyPrize(merVerifyPrizeDto.getPrizeId()).getData();
- if(memberGiftRecord==null||memberGiftRecord.getVerifyStatus()!=1){
+ if (memberGiftRecord == null || memberGiftRecord.getVerifyStatus() != 1) {
throw new ServiceException(AppErrorConstant.COUPON_USED);
}
ShopRelUserVo shopRelUserVo = remoteShopService.getShopByUserId(merVerifyPrizeDto.getUserId()).getData();
- if(!shopRelUserVo.getShopId().equals(memberGiftRecord.getShopId())){
+ Shop shop = remoteShopService.getShop(shopRelUserVo.getShopId()).getData();
+ if (memberGiftRecord.getGiftFrom() == 1) {
+ BirthdayCard birthdayCard = remoteMemberService.getBirthdayCard().getData();
+ if(birthdayCard!=null){
+ //判断指定区域全部店铺
+ 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(),shop.getShopId().toString())){
+ throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+ }
+ }else{
+ throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+ }
+ }
+ if (memberGiftRecord.getGiftFrom() == 2 && !memberGiftRecord.getShopId().equals(shop.getShopId())) {
throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
}
Member member = remoteMemberService.getMember(memberGiftRecord.getUserId()).getData();
+ if(member.getBindingFlag()==0){
+ //绑定用户
+ if(shop==null){
+ shop = remoteShopService.getShop(shop.getShopId()).getData();
+ }
+ AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto();
+ appMemberBindingDto.setBindingFlag(1);
+ appMemberBindingDto.setShopId(shop.getShopId());
+ appMemberBindingDto.setShopName(shop.getShopName());
+ appMemberBindingDto.setUserId(memberGiftRecord.getUserId());
+ remoteMemberService.updateMemberBinding(appMemberBindingDto);
+ }
merVerifyAwardVo.setUserName(member.getRealName());
merVerifyAwardVo.setUserMobile(member.getMobile());
- if(memberGiftRecord.getGiftFrom()==1){
+ if (memberGiftRecord.getGiftFrom() == 1) {
merVerifyAwardVo.setGiftFrom("平台生日卡");
- }else{
+ } else {
merVerifyAwardVo.setGiftFrom("商户生日卡");
}
merVerifyAwardVo.setGiftType(memberGiftRecord.getGiftType());
List<BirthdayGiftSendDto> giftSendDtoList = new ArrayList<>();
BirthdayGiftSendDto birthdayGiftSendDto = new BirthdayGiftSendDto();
- switch(memberGiftRecord.getGiftType()){
+ switch (memberGiftRecord.getGiftType()) {
case 1:
merVerifyAwardVo.setGiftName(memberGiftRecord.getCouponName());
merVerifyAwardVo.setGiftNumber(Double.valueOf(memberGiftRecord.getCouponNumber()));
@@ -1494,13 +1792,14 @@
break;
}
merVerifyAwardVo.setCreateTime(memberGiftRecord.getCreateTime());
- memberGiftRecord.setVerifyStatus(2);
- memberGiftRecord.setVerifyTime(new Date());
- if(member.getBindingFlag()!=1){
+ 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.setShopName(shop.getShopName());
appMemberBindingDto.setUserId(merVerifyPrizeDto.getUserId());
remoteMemberService.updateMemberBinding(appMemberBindingDto);
@@ -1521,7 +1820,7 @@
@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()));
@@ -1529,7 +1828,7 @@
merMemberNoClearOrderVo.setUnPaidMoney(zeroBig);
}
}
- }
+ }*/
return merMemberNoClearOrderVoList;
}
@@ -1544,12 +1843,20 @@
order.setOfflinePayMoney(order.getOfflinePayMoney().add(merCloseOrderDto.getPayMoney()));
order.setOffPayTime(new Date());
order.setPayMoney(order.getPayMoney().add(merCloseOrderDto.getPayMoney()));
- if(order.getPayMoney().compareTo(order.getChangeReceivableMoney())>=0){
- order.setCloseFlag(0);
- }else{
+ if (order.getPayMoney().compareTo(order.getChangeReceivableMoney()) >= 0) {
order.setCloseFlag(1);
+ } else {
+ order.setCloseFlag(0);
}
this.saveOrUpdate(order);
+ //创建支付记录
+ PayRecord payRecord = new PayRecord();
+ payRecord.setDelFlag(0);
+ payRecord.setOrderId(order.getOrderId());
+ payRecord.setPayMoney(merCloseOrderDto.getPayMoney());
+ payRecord.setPayTime(new Date());
+ payRecord.setPayType(merCloseOrderDto.getPayType());
+ payRecordService.save(payRecord);
}
/**
@@ -1669,7 +1976,7 @@
}
} else if (couponType == 2 && appMemberCouponVo.getDiscountPercent() != null) {
discountPercent = appMemberCouponVo.getDiscountPercent();
- goodsRealPrice = goodsTotalPrice.multiply(discountPercent).divide(BigDecimal.TEN).setScale(2, BigDecimal.ROUND_HALF_UP);
+ goodsRealPrice = goodsTotalPrice.multiply(discountPercent).divide(BigDecimal.TEN, 2, BigDecimal.ROUND_HALF_UP);
discountMoney = goodsRealPrice.subtract(goodsTotalPrice);
} else if (couponType == 3 && appMemberCouponVo.getDiscountMoney() != null) {
discountMoney = appMemberCouponVo.getDiscountMoney();
@@ -1679,9 +1986,9 @@
}
goodsDeposit = goods.getSubscription();
- if (goodsDeposit == null || goodsDeposit.compareTo(BigDecimal.ZERO)==0) {
+ if (goodsDeposit == null || goodsDeposit.compareTo(BigDecimal.ZERO) == 0) {
goodsDeposit = new BigDecimal("0.00");
- }else{
+ } else {
goodsDeposit = goodsDeposit.multiply(buyNumBig);
}
goodsNum = goodsNum + buyNum;
@@ -1706,7 +2013,9 @@
orderGoods.setCycleNumFlag(goods.getCycleNumFlag());
orderGoods.setServiceNum(serviceNum);
orderGoods.setGoodsType(goods.getGoodsType());
+ orderGoods.setGoodsTag(goods.getGoodsTags());
orderGoods.setGoodsName(goods.getGoodsName());
+ orderGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
orderGoods.setGoodsPicture(goodsFile.getFileUrl());
orderGoodsService.save(orderGoods);
switch (orderGoods.getGoodsType()) {
@@ -1752,7 +2061,6 @@
order.setOrderRemark(merNewOrderDto.getOrderRemark());
order.setGoodsNum(goodsNum);
order.setCreateTime(nowTime);
- order.setPayTime(nowTime);
order.setUseTime(nowTime);
order.setUseUserId(merNewOrderDto.getUserId());
order.setPayMoney(merNewOrderDto.getPayMoney());
@@ -1760,39 +2068,73 @@
order.setOfflinePayMoney(merNewOrderDto.getPayMoney());
order.setOffPayTime(nowTime);
order.setPayType(1);
- if(order.getPayMoney().compareTo(order.getChangeReceivableMoney())>=0){
- order.setCloseFlag(0);
- }else{
+ if (order.getPayMoney().compareTo(order.getChangeReceivableMoney()) >= 0) {
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) {
- consumerGoods = new ConsumerGoods();
- goods = remoteGoodsService.getGoods(appUserOrderGoodsPageVo.getGoodsId()).getData();
- consumerGoodsId = IdUtils.simpleUUID();
- consumerGoods.setConsumerGoodsId(consumerGoodsId);
- consumerGoods.setDelFlag(0);
- consumerGoods.setServiceStatus(1);
- consumerGoods.setShopId(order.getShopId());
- consumerGoods.setUserId(order.getUserId());
- consumerGoods.setOrderId(orderId);
- consumerGoods.setOrderGoodsId(appUserOrderGoodsPageVo.getOrderGoodsId());
- consumerGoods.setGoodsId(appUserOrderGoodsPageVo.getGoodsId());
- consumerGoods.setGoodsName(appUserOrderGoodsPageVo.getGoodsName());
- consumerGoods.setCycleNumFlag(appUserOrderGoodsPageVo.getCycleNumFlag());
- consumerGoods.setServiceNum(appUserOrderGoodsPageVo.getServiceNum());
- consumerGoods.setUsedNum(0);
- consumerGoods.setGoodsType(appUserOrderGoodsPageVo.getGoodsType());
- consumerGoods.setCreateTime(nowTime);
- consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
- consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture());
- consumerGoods.setGoodsNurses(goods.getGoodsNurses());
- consumerGoodsService.save(consumerGoods);
+ 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) {
//绑定商户
@@ -1811,6 +2153,14 @@
shopTotalChangeDto.setExperienceMoney(experienceMoney);
shopTotalChangeDto.setGoodsMoney(goodsMoney);
remoteShopService.changeShopTotal(shopTotalChangeDto);
+ //创建支付记录
+ PayRecord payRecord = new PayRecord();
+ payRecord.setDelFlag(0);
+ payRecord.setOrderId(orderId);
+ payRecord.setPayMoney(order.getPayMoney());
+ payRecord.setPayTime(order.getOffPayTime());
+ payRecord.setPayType(2);
+ payRecordService.save(payRecord);
}
@@ -1820,6 +2170,18 @@
*/
@Override
public List<MerOrderPageVo> pageMerOrder(Page page, MerOrderPageDto merOrderPageDto) {
+ if (StringUtils.isNotBlank(merOrderPageDto.getKeyword())) {
+ MgtUserIdByKeywordDto userIdByKeywordDto = new MgtUserIdByKeywordDto();
+ userIdByKeywordDto.setKeyword(merOrderPageDto.getKeyword());
+ MgtUserIdByKeywordVo userIdByKeywordVo = remoteMemberService.getUserIdByKeyword(userIdByKeywordDto).getData();
+ if (StringUtils.isNotBlank(userIdByKeywordVo.getUserIds())) {
+ List<Long> userIdList = Arrays.stream(userIdByKeywordVo.getUserIds().split(","))
+ .map(Long::parseLong)
+ .collect(Collectors.toList());
+ merOrderPageDto.setMemberUserIdList(userIdList);
+ merOrderPageDto.setMemberUserId(null);
+ }
+ }
List<MerOrderPageVo> merOrderPageVoList = orderMapper.pageMerOrder(page, merOrderPageDto);
if (merOrderPageVoList != null && !merOrderPageVoList.isEmpty()) {
Long userId;
@@ -1835,6 +2197,8 @@
if (orderFrom != null) {
if (orderFrom == 1) {
orderFromDesc = "商城订单";
+ } else if(orderFrom == 2){
+ orderFromDesc = "店铺砍价活动("+merOrderPageVo.getActivityName()+")";
} else {
orderFromDesc = "线下创建";
}
@@ -1842,7 +2206,6 @@
orderFromDesc = "商城订单";
}
merOrderPageVo.setOrderFromDesc(orderFromDesc);
- merOrderPageVo.setUnPaidMoney(merOrderPageVo.getReceivableMoney().subtract(merOrderPageVo.getPayMoney()));
if (merOrderPageVo.getUnPaidMoney() == null) {
merOrderPageVo.setUnPaidMoney(zeroBig);
}
@@ -1853,8 +2216,13 @@
Map<Long, MgtSimpleMemberVo> userMap = simpleMemberVoList.stream()
.collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity()));
for (MerOrderPageVo merOrderPageVo : merOrderPageVoList) {
- merOrderPageVo.setUserName(userMap.get(merOrderPageVo.getUserId()).getNickName());
- merOrderPageVo.setUserMobile(userMap.get(merOrderPageVo.getUserId()).getUserMobile());
+ if (merOrderPageVo.getUserId() != null && userMap.get(merOrderPageVo.getUserId()) != null) {
+ merOrderPageVo.setUserName(userMap.get(merOrderPageVo.getUserId()).getRealName());
+ merOrderPageVo.setNickName(userMap.get(merOrderPageVo.getUserId()).getNickName());
+ merOrderPageVo.setUserMobile(userMap.get(merOrderPageVo.getUserId()).getUserMobile());
+ } else {
+ log.debug("订单merOrderPageVo" + merOrderPageVo.getOrderId() + "缺少用户");
+ }
}
}
return merOrderPageVoList;
@@ -1866,12 +2234,11 @@
* @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);
}
@@ -1907,6 +2274,7 @@
if (mgtMemberOrderPageVoList != null && !mgtMemberOrderPageVoList.isEmpty()) {
Long shopId;
HashSet<String> set = new HashSet<>();
+ BigDecimal zeroBig = new BigDecimal("0.00");
// 遍历MgtMemberOrderPageVoList,获取shopId并添加到set中
for (MgtMemberOrderPageVo mgtMemberOrderPageVo : mgtMemberOrderPageVoList) {
shopId = mgtMemberOrderPageVo.getShopId();
@@ -1925,6 +2293,8 @@
for (MgtMemberOrderPageVo mgtMemberOrderPageVo : mgtMemberOrderPageVoList) {
shopId = mgtMemberOrderPageVo.getShopId();
mgtMemberOrderPageVo.setShopName(map.get(shopId).getShopName());
+ BigDecimal unPaidMoney = mgtMemberOrderPageVo.getReceivableMoney().subtract(mgtMemberOrderPageVo.getPayMoney());
+ mgtMemberOrderPageVo.setUnPaidMoney(unPaidMoney == null ? zeroBig : unPaidMoney);
}
}
// 返回MgtMemberOrderPageVoList
@@ -1992,7 +2362,9 @@
for (MgtActivityOrderPageVo mgtActivityOrderPageVo : activityOrderPageVoList) {
mgtActivityOrderPageVo.setShopName(shopMap.get(mgtActivityOrderPageVo.getShopId()).getShopName());
if (userMap.get(mgtActivityOrderPageVo.getUserId()) != null) {
- mgtActivityOrderPageVo.setUserName(userMap.get(mgtActivityOrderPageVo.getUserId()).getNickName());
+ mgtActivityOrderPageVo.setNickName(userMap.get(mgtActivityOrderPageVo.getUserId()).getNickName());
+ mgtActivityOrderPageVo.setUserName(userMap.get(mgtActivityOrderPageVo.getUserId()).getRealName());
+ mgtActivityOrderPageVo.setUserMobile(userMap.get(mgtActivityOrderPageVo.getUserId()).getUserMobile());
}
BigDecimal unPaidMoney = mgtActivityOrderPageVo.getReceivableMoney().subtract(mgtActivityOrderPageVo.getPayMoney());
mgtActivityOrderPageVo.setUnPaidMoney(unPaidMoney == null ? zeroBig : unPaidMoney);
@@ -2032,7 +2404,7 @@
}
}
MgtOrderTotal mgtOrderTotal = new MgtOrderTotal();
- MgtOrderTotal mgtOrderTotalFirst = orderMapper.totalOrderFirst();
+ MgtOrderTotal mgtOrderTotalFirst = orderMapper.totalOrderFirst(mgtShopOrderPageDto);
MgtOrderTotal mgtOrderTotalSecond = orderMapper.totalOrderSecond(mgtShopOrderPageDto);
MgtOrderTotal mgtOrderTotalThird = orderMapper.totalOrderThird(mgtShopOrderPageDto);
mgtOrderTotal.setOrderTotal(mgtOrderTotalFirst.getOrderTotal());
@@ -2116,7 +2488,9 @@
}
if (userMap != null && !userMap.isEmpty()) {
if (userMap.get(mgtShopOrderPageVo.getUserId()) != null) {
- mgtShopOrderPageVo.setUserName(userMap.get(mgtShopOrderPageVo.getUserId()).getNickName());
+ mgtShopOrderPageVo.setNickName(userMap.get(mgtShopOrderPageVo.getUserId()).getNickName());
+ mgtShopOrderPageVo.setUserName(userMap.get(mgtShopOrderPageVo.getUserId()).getRealName());
+ mgtShopOrderPageVo.setUserMobile(userMap.get(mgtShopOrderPageVo.getUserId()).getUserMobile());
}
}
BigDecimal unPaidMoney = mgtShopOrderPageVo.getReceivableMoney().subtract(mgtShopOrderPageVo.getPayMoney());
@@ -2213,8 +2587,15 @@
mgtOrderDetailVo.setCancelTime(order.getCancelTime());
mgtOrderDetailVo.setOrderRemark(order.getOrderRemark());
mgtOrderDetailVo.setShopId(order.getShopId());
- mgtOrderDetailVo.setShopName(shop.getShopName());
+ if (shop != null) {
+ mgtOrderDetailVo.setShopName(shop.getShopName());
+ } else {
+ mgtOrderDetailVo.setShopName("商户已被删除");
+ }
mgtOrderDetailVo.setVerifyTime(order.getUseTime());
+ //获取支付记录
+ List<MgtOrderPayListVo> orderPayListVoList = payRecordService.listMgtOrderPayVo(orderId);
+ mgtOrderDetailVo.setOrderPayListVoList(orderPayListVoList);
return mgtOrderDetailVo;
}
@@ -2228,6 +2609,8 @@
@Override
public MgtBulletinBoardVo boardOrderTotal() {
MgtBulletinBoardVo mgtBulletinBoardVo = orderMapper.boardOrderTotal();
+ Integer activityUserTotal = orderMapper.activityUserTotal();
+ mgtBulletinBoardVo.setActivityUserTotal(activityUserTotal);
return mgtBulletinBoardVo;
}
@@ -2784,6 +3167,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对象
@@ -2798,11 +3184,11 @@
} else if (couponStatus != 1) {
throw new ServiceException(AppErrorConstant.COUPON_NO_FIND);
}
- if (memberCoupon.getCouponFrom()==2&&!memberCoupon.getShopId().equals(shopId)) {
+ if (memberCoupon.getCouponFrom() == 2 && !memberCoupon.getShopId().equals(shopId)) {
throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
}
//如果是平台优惠券
- if(memberCoupon.getCouponFrom()==1&&memberCoupon.getShopId()==null){
+ if (memberCoupon.getCouponFrom() == 1 && memberCoupon.getShopId() == null) {
memberCoupon.setShopId(shopId);
}
List<Goods> goodsList = verifyCouponGetVo.getGoodsList();
@@ -2812,14 +3198,15 @@
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) {
@@ -2836,38 +3223,58 @@
// 设置merVerifyCouponVo的goodsList属性为merCouponGoodsList
merVerifyCouponVo.setGoodsList(merCouponGoodsList);
merVerifyCouponVo.setVerifyStatus(1);
+ merVerifyCouponVo.setMemberCouponId(memberCoupon.getId());
return merVerifyCouponVo;
}
/**
- * @description 获取核销奖品
- * @author jqs
- * @date 2023/7/8 17:46
* @param verifyCode
* @param shopId
- * @return MerVerifyAwardVo
+ * @return MerVerifyAwardVo
+ * @description 获取核销奖品
+ * @author jqs
+ * @date 2023/7/8 17:46
*/
@Override
- public MerVerifyAwardVo verifyPrize(String verifyCode,Long shopId){
+ public MerVerifyAwardVo verifyPrize(String verifyCode, Long shopId) {
MerVerifyAwardVo merVerifyAwardVo = new MerVerifyAwardVo();
MemberGiftRecord memberGiftRecord = remoteMemberService.getVerifyPrize(verifyCode).getData();
- if(memberGiftRecord==null||memberGiftRecord.getVerifyStatus()!=1){
+ if (memberGiftRecord == null || memberGiftRecord.getVerifyStatus() != 1) {
throw new ServiceException(AppErrorConstant.COUPON_USED);
}
- if(memberGiftRecord.getGiftFrom()==2&&!memberGiftRecord.getShopId().equals(shopId)){
+ Shop shop = null;
+ Member member = remoteMemberService.getMember(memberGiftRecord.getUserId()).getData();
+ if (memberGiftRecord.getGiftFrom() == 1) {
+ BirthdayCard birthdayCard = remoteMemberService.getBirthdayCard().getData();
+ if(birthdayCard!=null){
+ 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.VERIFY_SHOP_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){
+ if (memberGiftRecord.getGiftFrom() == 1) {
merVerifyAwardVo.setGiftFrom("平台生日卡");
- }else{
+ } else {
merVerifyAwardVo.setGiftFrom("商户生日卡");
}
-
merVerifyAwardVo.setGiftType(memberGiftRecord.getGiftType());
- switch(memberGiftRecord.getGiftType()){
+ //礼物类型1优惠券2商品3现金4实物
+ switch (memberGiftRecord.getGiftType()) {
case 1:
merVerifyAwardVo.setGiftName(memberGiftRecord.getCouponName());
merVerifyAwardVo.setGiftNumber(Double.valueOf(memberGiftRecord.getCouponNumber()));
@@ -2930,11 +3337,6 @@
merTotalDto.setShopIdList(shopIdList);
merTotalDto.setShopId(null);
}
- if (merTotalDto.getShopAllFlag() != null && merTotalDto.getShopAllFlag() == 1) {
- List<Long> shopIdList = remoteShopService.listShopIdByShopId(merTotalDto.getShopId()).getData();
- merTotalDto.setShopIdList(shopIdList);
- merTotalDto.setShopId(null);
- }
MerOrderTotalVo orderTotalVo = orderMapper.getMerOrderTotalOrderFrom(merTotalDto);
MerOrderTotalVo goodsTypeVo = orderMapper.getMerTotalOrderTotalGoodsType(merTotalDto);
orderTotalVo.setCycleTotal(goodsTypeVo.getCycleTotal());
@@ -2963,9 +3365,9 @@
}
MerOrderDistributionTotalVo orderDistributionTotalVo = new MerOrderDistributionTotalVo();
// 获取订单年龄用户列表
- List<MerOrderAgeUserVo> orderAgeUserVoList = remoteMemberService.listOrderAgeUser(merTotalDto).getData();
+ //List<MerOrderAgeUserVo> orderAgeUserVoList = remoteMemberService.listOrderAgeUser(merTotalDto).getData();
// 如果订单年龄用户列表不为空
- if (orderAgeUserVoList != null && !orderAgeUserVoList.isEmpty()) {
+ /*if (orderAgeUserVoList != null && !orderAgeUserVoList.isEmpty()) {
// 定义变量
Integer ageType;
List<Long> userIdList;
@@ -3006,8 +3408,19 @@
orderTotalValue[i] = 0;
orderMoneyValue[i] = BigDecimal.ZERO;
}
+ }*/
+ List<MgtMapTotalPlusVo> mgtMapTotalPlusVoList = orderMapper.listMerOrderDistributionTotal(merTotalDto);
+ if (mgtMapTotalPlusVoList != null && !mgtMapTotalPlusVoList.isEmpty()) {
+ String[] orderTotalKey = new String[mgtMapTotalPlusVoList.size()];
+ Integer[] orderTotalValue = new Integer[mgtMapTotalPlusVoList.size()];
+ BigDecimal[] orderMoneyValue = new BigDecimal[mgtMapTotalPlusVoList.size()];
+ MgtMapTotalPlusVo mgtMapTotalPlusVo;
+ for (int i = 0; i < mgtMapTotalPlusVoList.size(); i++) {
+ mgtMapTotalPlusVo = mgtMapTotalPlusVoList.get(i);
+ orderTotalKey[i] = mgtMapTotalPlusVo.getMapKey();
+ orderTotalValue[i] = mgtMapTotalPlusVo.getMapValueFirst();
+ orderMoneyValue[i] = mgtMapTotalPlusVo.getMapValueSecond();
}
- // 设置订单分布总数对象的属性值
orderDistributionTotalVo.setOrderTotalKey(orderTotalKey);
orderDistributionTotalVo.setOrderTotalValue(orderTotalValue);
orderDistributionTotalVo.setOrderMoneyValue(orderMoneyValue);
@@ -3116,16 +3529,28 @@
}
/**
- * @param merBaseDto
+ * @param merOrderPageDto
* @return MerTotalOrderVo
* @description 商户端订单管理统计
* @author jqs
- * @date 2023/7/4 16:27
+ * @date 2023/7/31 10:53
*/
@Override
- public MerTotalOrderVo totalMerOrder(MerBaseDto merBaseDto) {
+ public MerTotalOrderVo totalMerOrder(MerOrderPageDto merOrderPageDto) {
MerTotalOrderVo merTotalOrderVo = new MerTotalOrderVo();
- merTotalOrderVo = orderMapper.totalMerOrder(merBaseDto.getShopId());
+ if (StringUtils.isNotBlank(merOrderPageDto.getKeyword())) {
+ MgtUserIdByKeywordDto userIdByKeywordDto = new MgtUserIdByKeywordDto();
+ userIdByKeywordDto.setKeyword(merOrderPageDto.getKeyword());
+ MgtUserIdByKeywordVo userIdByKeywordVo = remoteMemberService.getUserIdByKeyword(userIdByKeywordDto).getData();
+ if (StringUtils.isNotBlank(userIdByKeywordVo.getUserIds())) {
+ List<Long> userIdList = Arrays.stream(userIdByKeywordVo.getUserIds().split(","))
+ .map(Long::parseLong)
+ .collect(Collectors.toList());
+ merOrderPageDto.setMemberUserIdList(userIdList);
+ merOrderPageDto.setMemberUserId(null);
+ }
+ }
+ merTotalOrderVo = orderMapper.totalMerOrder(merOrderPageDto);
return merTotalOrderVo;
}
@@ -3188,33 +3613,33 @@
}
/**
- * @description 自动取消订单
- * @author jqs
- * @date 2023/7/13 17:15
* @param orderId
- * @return void
+ * @return void
+ * @description 自动取消订单
+ * @author jqs
+ * @date 2023/7/13 17:15
*/
@Override
@Transactional
- public void autoCancelOrder(String orderId){
+ public void autoCancelOrder(String orderId) {
//更新订单信息
Order order = this.getById(orderId);
order.setOrderStatus(0);
order.setCancelTime(new Date());
this.saveOrUpdate(order);
//活动订单回退库存
- if(order.getOrderFrom()==2){
+ if (order.getOrderFrom() == 2) {
List<OrderGoods> orderGoodsList = orderGoodsService.listByOrderId(orderId);
- if(orderGoodsList!=null&&!orderGoodsList.isEmpty()){
- for(OrderGoods orderGoods : orderGoodsList){
+ if (orderGoodsList != null && !orderGoodsList.isEmpty()) {
+ for (OrderGoods orderGoods : orderGoodsList) {
//redis库存控制极简版
- String goodsLock = "goods_lock_"+order.getActivityId()+"_"+orderGoods.getGoodsId();
+ String goodsLock = "goods_lock_" + order.getActivityId() + "_" + orderGoods.getGoodsId();
RLock redissonLock = redissonClient.getLock(goodsLock);
- try{
+ try {
redissonLock.lock(30, TimeUnit.SECONDS);
- Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS+"-"+order.getActivityId()+"-"+orderGoods.getGoodsId());
- redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS+"-"+order.getActivityId()+"-"+orderGoods.getGoodsId(),surpNum+orderGoods.getBuyNum());
- }finally{
+ Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId());
+ redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId(), surpNum + orderGoods.getBuyNum());
+ } finally {
redissonLock.unlock();
}
//改变活动库存
@@ -3235,16 +3660,16 @@
remoteActivityService.delActivityRecord(activityRecord);
}
}
- }else{
- if(order.getCouponMoney().compareTo(BigDecimal.ZERO)>0){
+ } else {
+ if (order.getCouponMoney().compareTo(BigDecimal.ZERO) > 0) {
//回退优惠券
List<OrderGoods> orderGoodsList = orderGoodsService.listByOrderId(orderId);
- if(orderGoodsList!=null&&!orderGoodsList.isEmpty()) {
+ if (orderGoodsList != null && !orderGoodsList.isEmpty()) {
StringJoiner memberCouponSJ = new StringJoiner(",");
for (OrderGoods orderGoods : orderGoodsList) {
memberCouponSJ.add(orderGoods.getCouponId());
}
- if(memberCouponSJ!=null){
+ if (memberCouponSJ != null) {
remoteCouponService.backMemberCoupon(memberCouponSJ.toString());
}
@@ -3254,17 +3679,17 @@
}
/**
- * @description 订单支付回调
- * @author jqs
- * @date 2023/7/13 17:57
* @param transaction
- * @return void
+ * @return void
+ * @description 订单支付回调
+ * @author jqs
+ * @date 2023/7/13 17:57
*/
@Override
@Transactional
- public void payBack(Transaction transaction) {
+ public void payBack(PartnerTransactionsResult transaction) {
// 更新订单状态
- String orderId=transaction.getOutTradeNo();
+ String orderId = transaction.getOutTradeNo();
Order order = this.getById(orderId);
order.setOrderStatus(2);
order.setPayTime(new Date());
@@ -3310,13 +3735,14 @@
goodsTotalChangeDto.setChangeType(1);
goodsTotalChangeDto.setChangeNum(orderGoods.getBuyNum());
goodsTotalChangeDto.setMoney(orderGoods.getGoodsReceivableMoney());
- Integer bugGoodsNum = orderMapper.countUserBuyGoodsNum(order.getUserId(),orderGoods.getGoodsId());
- if(bugGoodsNum==null||bugGoodsNum<1){
+ Integer bugGoodsNum = orderMapper.countUserBuyGoodsNum(order.getUserId(), orderGoods.getGoodsId());
+ if (bugGoodsNum == null || bugGoodsNum < 1) {
goodsTotalChangeDto.setPersonNum(1);
}
goodsTotalChangeDtoList.add(goodsTotalChangeDto);
}
//更新商品统计
+ remoteGoodsService.changeGoodsTotal(goodsTotalChangeDtoList);
// 更新商户统计信息
ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto();
shopTotalChangeDto.setShopId(order.getShopId());
@@ -3333,10 +3759,12 @@
if (redisService.hasKey(SecurityConstant.PAY_MONEY_INTEGRAL)) {
Integer moneyValue = redisService.getCacheObject(SecurityConstant.PAY_MONEY_INTEGRAL);
BigDecimal moneyValueBig = BigDecimal.valueOf(moneyValue);
- BigDecimal integralBig = moneyValueBig.multiply(order.getPayMoney());
+ BigDecimal integralBig = moneyValueBig.multiply(order.getPayMoney()).setScale(0,BigDecimal.ROUND_HALF_UP);
Integer integral = Integer.valueOf(integralBig.toString());
memberTotalChangeDto.setChangeIntegral(integral);
memberTotalChangeDto.setTypeIntegral(1);
+ memberTotalChangeDto.setOrderId(orderId);
+ memberTotalChangeDto.setOrderNo(order.getOrderNo());
}
// 设置会员支付金额和支付时间
memberTotalChangeDto.setPayMoney(order.getPayMoney());
@@ -3353,6 +3781,9 @@
}
if (haveGoods) {
memberTotalChangeDto.setGoodsOrderChange(1);
+ }
+ if(order.getOrderFrom()==2){
+ memberTotalChangeDto.setActivityTime(order.getCreateTime());
}
// 更新会员统计信息
remoteMemberService.changeMemberTotal(memberTotalChangeDto);
@@ -3382,24 +3813,26 @@
}
//生成支付记录
OrderPayment orderPayment = new OrderPayment();
-
-
-
-
-
+ PayRecord payRecord = new PayRecord();
+ payRecord.setDelFlag(0);
+ payRecord.setOrderId(orderId);
+ payRecord.setPayMoney(order.getPayMoney());
+ payRecord.setPayTime(order.getPayTime());
+ payRecord.setPayType(1);
+ payRecordService.save(payRecord);
}
/**
- * @description 订单退款
- * @author jqs
- * @date 2023/7/13 18:36
* @param orderId
- * @return void
+ * @return void
+ * @description 订单退款
+ * @author jqs
+ * @date 2023/7/13 18:36
*/
@Override
@Transactional
- public void refundOrder(String orderId){
- //更新订单信息
+ public void refundOrder(String orderId) {
+ // 更新订单信息
Order order = this.getById(orderId);
order.setOrderStatus(0);
order.setCancelTime(new Date());
@@ -3412,7 +3845,7 @@
orderRefund.setOrderId(order.getOrderId());
orderRefund.setUserId(order.getUserId());
orderRefund.setShopId(order.getShopId());
- orderRefund.setRefundMoney(order.getPayMoney());
+ orderRefund.setRefundMoney(order.getOnlinePayMoney());
orderRefund.setOrderMoney(order.getPayMoney());
orderRefund.setCreateTime(new Date());
// 初始化各类商品的收款金额
@@ -3426,19 +3859,19 @@
Boolean haveExperience = false;
Boolean haveGoods = false;
List<OrderGoods> orderGoodsList = orderGoodsService.listByOrderId(orderId);
- if(orderGoodsList!=null&&!orderGoodsList.isEmpty()){
+ if (orderGoodsList != null && !orderGoodsList.isEmpty()) {
StringJoiner memberCouponSJ = new StringJoiner(",");
- for(OrderGoods orderGoods : orderGoodsList){
- if(order.getOrderFrom()==2){
+ for (OrderGoods orderGoods : orderGoodsList) {
+ if (order.getOrderFrom() == 2) {
//redis库存控制极简版
//活动订单回退库存
- String goodsLock = "goods_lock_"+order.getActivityId()+"_"+orderGoods.getGoodsId();
+ String goodsLock = "goods_lock_" + order.getActivityId() + "_" + orderGoods.getGoodsId();
RLock redissonLock = redissonClient.getLock(goodsLock);
- try{
+ try {
redissonLock.lock(30, TimeUnit.SECONDS);
- Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS+"-"+order.getActivityId()+"-"+orderGoods.getGoodsId());
- redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS+"-"+order.getActivityId()+"-"+orderGoods.getGoodsId(),surpNum+orderGoods.getBuyNum());
- }finally{
+ Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId());
+ redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId(), surpNum + orderGoods.getBuyNum());
+ } finally {
redissonLock.unlock();
}
//改变活动库存
@@ -3457,7 +3890,7 @@
activityRecord.setUserId(order.getUserId());
activityRecord.setOrderTime(order.getCreateTime());
remoteActivityService.delActivityRecord(activityRecord);
- }else{
+ } else {
memberCouponSJ.add(orderGoods.getCouponId());
}
switch (orderGoods.getGoodsType()) {
@@ -3482,7 +3915,7 @@
}
}
//回退优惠券
- if(memberCouponSJ!=null){
+ if (memberCouponSJ != null) {
remoteCouponService.backMemberCoupon(memberCouponSJ.toString());
}
}
@@ -3541,43 +3974,97 @@
activityTotalChangeDto.setUserId(order.getUserId());
remoteActivityService.changeActivityTotal(activityTotalChangeDto);
}
+
+ // 用户取消订单退款
+ BigDecimal onlinePayMoney = order.getOnlinePayMoney();
+ if(BigDecimal.ZERO.compareTo(onlinePayMoney) < 0){
+ // 订单支付金额大于0,可发起退款
+ //orderWxApplyRefund(orderId, refundId, onlinePayMoney, orderRefund);
+ }
+
+ orderRefund.setRefundStatus(1);
+ orderRefundService.saveOrUpdate(orderRefund);
}
/**
- * @description 员工端活动订单统计
- * @author jqs
- * @date 2023/7/17 15:25
+ * 申请退款API
+ */
+ /*private void orderWxApplyRefund(String orderId, String outRefundNo, BigDecimal payMoney, OrderRefund orderRefund){
+ try {
+ // 创建支付订单
+ OrderPayment orderPayment = orderPaymentService.getByOrderId(orderId);
+ if (null == orderPayment) {
+ return;
+ }
+ String subMchId = orderPayment.getSubMchId();
+ WxPayConfig config = wxService.getConfig();
+
+ RefundsRequest request = new RefundsRequest();
+ request.setSpAppid(config.getAppId());
+ request.setSubMchid(subMchId);
+ request.setTransactionId(orderPayment.getTransactionId());
+ request.setOutRefundNo(outRefundNo);
+ request.setReason("用户取消订单");
+ // 订单金额
+ int total = payMoney.multiply(new BigDecimal(100)).intValue();
+ RefundsRequest.Amount amount = RefundsRequest.Amount.builder().refund(total).total(total).currency("CNY").build();
+ request.setAmount(amount);
+ request.setNotifyUrl(config.getNotifyUrl());
+
+ RefundsResult result = wxService.getEcommerceService().refunds(request);
+
+ // 微信退款id
+ orderRefund.setWxRefundId(result.getRefundId());
+
+ // 请求参数
+ Gson gson = new Gson();
+ String refundRequestJson = gson.toJson(request);
+ // 返回参数
+ String refundResponseJson = gson.toJson(result);
+
+ // 保存支付订单统一下单日志
+ paymentMessageService.savePaymentMessage("3", orderId, refundRequestJson, refundResponseJson);
+
+ } catch (WxPayException e) {
+ throw new ServiceException(e.getMessage());
+ }
+ }*/
+
+ /**
* @param staffTotalDto
- * @return StaffActivityOrderTotalVo
+ * @return StaffActivityOrderTotalVo
+ * @description 员工端活动订单统计
+ * @author jqs
+ * @date 2023/7/17 15:25
*/
@Override
- public StaffActivityOrderTotalVo getStaffActivityOrderTotal(StaffTotalDto staffTotalDto){
+ public StaffActivityOrderTotalVo getStaffActivityOrderTotal(StaffTotalDto staffTotalDto) {
StaffActivityOrderTotalVo staffActivityOrderTotalVo = orderMapper.getStaffActivityOrderTotal(staffTotalDto);
return staffActivityOrderTotalVo;
}
/**
- * @description 员工端活动统计
- * @author jqs
- * @date 2023/7/17 15:51
* @param staffTotalDto
- * @return StaffActivityTotalVo
+ * @return StaffActivityTotalVo
+ * @description 员工端活动统计
+ * @author jqs
+ * @date 2023/7/17 15:51
*/
@Override
- public StaffActivityTotalVo getStaffActivityTotal(StaffTotalDto staffTotalDto){
+ public StaffActivityTotalVo getStaffActivityTotal(StaffTotalDto staffTotalDto) {
StaffActivityTotalVo staffActivityTotalVo = orderMapper.getStaffActivityTotal(staffTotalDto);
return staffActivityTotalVo;
}
/**
- * @description 员工端活动统计订单分布
- * @author jqs
- * @date 2023/7/17 16:16
* @param staffTotalDto
- * @return MerOrderDistributionTotalVo
+ * @return MerOrderDistributionTotalVo
+ * @description 员工端活动统计订单分布
+ * @author jqs
+ * @date 2023/7/17 16:16
*/
@Override
- public MerOrderDistributionTotalVo getStaffOrderDistributionTotal(StaffTotalDto staffTotalDto){
+ public MerOrderDistributionTotalVo getStaffOrderDistributionTotal(StaffTotalDto staffTotalDto) {
MerOrderDistributionTotalVo orderDistributionTotalVo = new MerOrderDistributionTotalVo();
// 获取订单年龄用户列表
MerTotalDto merTotalDto = new MerTotalDto();
@@ -3618,7 +4105,7 @@
}
// 如果用户ID列表不为空
if (userIdList != null && !userIdList.isEmpty()) {
- mgtMapTotalPlusVo = orderMapper.listStaffActivityOrderDistributionTotal(userIdList,staffTotalDto.getShopId(),staffTotalDto.getActivityId());
+ mgtMapTotalPlusVo = orderMapper.listStaffActivityOrderDistributionTotal(userIdList, staffTotalDto.getShopId(), staffTotalDto.getActivityId());
orderTotalValue[i] = mgtMapTotalPlusVo.getMapValueFirst();
orderMoneyValue[i] = mgtMapTotalPlusVo.getMapValueSecond();
} else {
@@ -3637,14 +4124,14 @@
/**
- * @description 员工端活动统计销售占比
- * @author jqs
- * @date 2023/7/17 17:03
* @param staffTotalDto
- * @return MerOrderTypeTotalVo
+ * @return MerOrderTypeTotalVo
+ * @description 员工端活动统计销售占比
+ * @author jqs
+ * @date 2023/7/17 17:03
*/
@Override
- public MerOrderTypeTotalVo getStaffOrderTypeTotal(StaffTotalDto staffTotalDto){
+ public MerOrderTypeTotalVo getStaffOrderTypeTotal(StaffTotalDto staffTotalDto) {
MerOrderTypeTotalVo orderTypeTotalVo = new MerOrderTypeTotalVo();
//获取商品分类销售数据
List<MgtMapTotalPlusVo> MgtMapIntTotalVoGoodsType = orderMapper.listStaffOrderTotalGoodsType(staffTotalDto);
@@ -3682,11 +4169,11 @@
}
/**
- * @description 员工端获客人数
- * @author jqs
- * @date 2023/7/17 18:42
* @param staffTotalDto
- * @return StaffActivityDateMemberTotalVo
+ * @return StaffActivityDateMemberTotalVo
+ * @description 员工端获客人数
+ * @author jqs
+ * @date 2023/7/17 18:42
*/
@Override
public StaffActivityDateMemberTotalVo getStaffActivityGetMemberTotal(StaffTotalDto staffTotalDto) {
@@ -3723,11 +4210,11 @@
}
/**
- * @description 员工端获客人数
- * @author jqs
- * @date 2023/7/17 18:42
* @param staffTotalDto
- * @return StaffActivityDateMemberTotalVo
+ * @return StaffActivityDateMemberTotalVo
+ * @description 员工端获客人数
+ * @author jqs
+ * @date 2023/7/17 18:42
*/
@Override
public StaffActivityDateMemberTotalVo getStaffActivityMemberTotal(StaffTotalDto staffTotalDto) {
@@ -3764,12 +4251,12 @@
}
/**
- * @description 获取时间段日期
- * @author jqs
- * @date 2023/7/17 19:11
* @param startDate
* @param endDate
- * @return List<String>
+ * @return List<String>
+ * @description 获取时间段日期
+ * @author jqs
+ * @date 2023/7/17 19:11
*/
public static List<String> getDateRange(String startDate, String endDate) {
List<String> dateList = new ArrayList<>();
@@ -3783,50 +4270,87 @@
}
/**
- * @description 检查订单状态定时任务
- * @author jqs
- * @date 2023/7/25 14:40
* @param
- * @return void
+ * @return void
+ * @description 检查订单状态定时任务
+ * @author jqs
+ * @date 2023/7/25 14:40
*/
@Override
- public void checkOrderStatus(){
+ public void checkOrderStatus() {
Integer delayTime = 30;
- if(redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)){
+ if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) {
delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
}
delayTime = delayTime + 5;
- Date checkTime = DateUtils.addMinutes(new Date(),delayTime);
+ Date checkTime = DateUtils.addMinutes(new Date(), -delayTime);
LambdaQueryWrapper<Order> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(Order::getDelFlag,0);
- queryWrapper.lt(Order::getCreateTime,checkTime);
- queryWrapper.eq(Order::getOrderStatus,1);
+ queryWrapper.eq(Order::getDelFlag, 0);
+ queryWrapper.lt(Order::getCreateTime, checkTime);
+ queryWrapper.eq(Order::getOrderStatus, 1);
List<Order> orderList = this.list(queryWrapper);
- if(orderList!=null&&!orderList.isEmpty()){
- for(Order order: orderList){
+ if (orderList != null && !orderList.isEmpty()) {
+ for (Order order : orderList) {
autoTimeCancelOrder(order);
}
}
}
- private void autoTimeCancelOrder(Order order){
+ @Override
+ public void profitSharingBack(ProfitSharingNotifyResult result) {
+
+ try {
+ String outOrderNo = result.getOutOrderNo();
+ ProfitSharing profitSharing = profitSharingService.getById(outOrderNo);
+ if(null != profitSharing){
+ profitSharing.setWxOrderId(result.getOrderId());
+ profitSharing.setFinishTime(result.getSuccessTime());
+ profitSharing.setFinishFlag(1);
+
+ profitSharingService.saveOrUpdate(profitSharing);
+ }
+ } catch (Exception e){
+
+ log.error("==分账回成功回调操作====【{}】========={}", result.getOutOrderNo(), e.getMessage());
+ }
+ }
+
+ @Override
+ public void orderRefundBack(RefundNotifyResult result) {
+ try {
+ String outRefundNo = result.getOutRefundNo();
+ String refundStatus = result.getRefundStatus();
+ OrderRefund orderRefund = orderRefundService.getById(outRefundNo);
+ if(null != orderRefund){
+ orderRefund.setWxRefundId(result.getRefundId());
+ orderRefund.setBackTime(result.getSuccessTime());
+ orderRefund.setRefundStatus(IDict.getCodeByText(RefundStatusEnum.class, refundStatus));
+ orderRefundService.saveOrUpdate(orderRefund);
+ }
+ } catch (Exception e){
+
+ log.error("==退款回成功回调操作====【{}】========={}", result.getOutRefundNo(), e.getMessage());
+ }
+ }
+
+ private void autoTimeCancelOrder(Order order) {
String orderId = order.getOrderId();
order.setOrderStatus(0);
order.setCancelTime(new Date());
this.saveOrUpdate(order);
//活动订单回退库存
- if(order.getOrderFrom()==2){
+ if (order.getOrderFrom() == 2) {
List<OrderGoods> orderGoodsList = orderGoodsService.listByOrderId(orderId);
- if(orderGoodsList!=null&&!orderGoodsList.isEmpty()){
- for(OrderGoods orderGoods : orderGoodsList){
+ if (orderGoodsList != null && !orderGoodsList.isEmpty()) {
+ for (OrderGoods orderGoods : orderGoodsList) {
//redis库存控制极简版
- String goodsLock = "goods_lock_"+order.getActivityId()+"_"+orderGoods.getGoodsId();
+ String goodsLock = "goods_lock_" + order.getActivityId() + "_" + orderGoods.getGoodsId();
RLock redissonLock = redissonClient.getLock(goodsLock);
- try{
+ try {
redissonLock.lock(30, TimeUnit.SECONDS);
- Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS+"-"+order.getActivityId()+"-"+orderGoods.getGoodsId());
- redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS+"-"+order.getActivityId()+"-"+orderGoods.getGoodsId(),surpNum+orderGoods.getBuyNum());
- }finally{
+ Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId());
+ redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId(), surpNum + orderGoods.getBuyNum());
+ } finally {
redissonLock.unlock();
}
//改变活动库存
@@ -3847,16 +4371,16 @@
remoteActivityService.delActivityRecord(activityRecord);
}
}
- }else{
- if(order.getCouponMoney().compareTo(BigDecimal.ZERO)>0){
+ } else {
+ if (order.getCouponMoney().compareTo(BigDecimal.ZERO) > 0) {
//回退优惠券
List<OrderGoods> orderGoodsList = orderGoodsService.listByOrderId(orderId);
- if(orderGoodsList!=null&&!orderGoodsList.isEmpty()) {
+ if (orderGoodsList != null && !orderGoodsList.isEmpty()) {
StringJoiner memberCouponSJ = new StringJoiner(",");
for (OrderGoods orderGoods : orderGoodsList) {
memberCouponSJ.add(orderGoods.getCouponId());
}
- if(memberCouponSJ!=null){
+ if (memberCouponSJ != null) {
remoteCouponService.backMemberCoupon(memberCouponSJ.toString());
}
@@ -3864,4 +4388,69 @@
}
}
}
+
+ /**
+ * @description 获取商户订单统计
+ * @author jqs
+ * @date 2023/8/4 10:25
+ * @param mgtShopAllOrderPageDto
+ * @return MgtShopAllOrderTotal
+ */
+ @Override
+ public MgtShopAllOrderTotal getMgtShopAllOrderTotal(MgtShopAllOrderPageDto mgtShopAllOrderPageDto){
+ MgtShopAllOrderTotal shopAllOrderTotal = orderMapper.getMgtShopAllOrderTotal(mgtShopAllOrderPageDto);
+ return shopAllOrderTotal;
+ }
+
+ /**
+ * 分页获取会员消费记录
+ * @param merOrderPageDto
+ * @return
+ */
+ @Override
+ public List<MerOrderPageVo> pageMerMemberPayOrder(Page page,MerMemberNoClearOrderDto merOrderPageDto){
+ List<MerOrderPageVo> merOrderPageVoList = orderMapper.pageMerMemberPayOrder(page, merOrderPageDto);
+ if (merOrderPageVoList != null && !merOrderPageVoList.isEmpty()) {
+ Long userId;
+ Member member;
+ Integer orderFrom;
+ String orderFromDesc;
+ BigDecimal zeroBig = new BigDecimal("0.00");
+ StringJoiner userIdSj = new StringJoiner(",");
+ for (MerOrderPageVo merOrderPageVo : merOrderPageVoList) {
+ userId = merOrderPageVo.getUserId();
+ userIdSj.add(userId.toString());
+ orderFrom = merOrderPageVo.getOrderFrom();
+ if (orderFrom != null) {
+ if (orderFrom == 1) {
+ orderFromDesc = "商城订单";
+ } else {
+ orderFromDesc = "线下创建";
+ }
+ } else {
+ orderFromDesc = "商城订单";
+ }
+ merOrderPageVo.setOrderFromDesc(orderFromDesc);
+ merOrderPageVo.setUnPaidMoney(merOrderPageVo.getPayMoney().subtract(merOrderPageVo.getReceiveMoney()));
+ if (merOrderPageVo.getUnPaidMoney() == null) {
+ merOrderPageVo.setUnPaidMoney(zeroBig);
+ }
+ }
+ MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto();
+ mgtBaseBathDto.setIds(userIdSj.toString());
+ List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(mgtBaseBathDto).getData();
+ Map<Long, MgtSimpleMemberVo> userMap = simpleMemberVoList.stream()
+ .collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity()));
+ for (MerOrderPageVo merOrderPageVo : merOrderPageVoList) {
+ if(merOrderPageVo.getUserId()!=null&&userMap.get(merOrderPageVo.getUserId())!=null){
+ merOrderPageVo.setUserName(userMap.get(merOrderPageVo.getUserId()).getRealName());
+ merOrderPageVo.setNickName(userMap.get(merOrderPageVo.getUserId()).getNickName());
+ merOrderPageVo.setUserMobile(userMap.get(merOrderPageVo.getUserId()).getUserMobile());
+ }else{
+ log.debug("订单merOrderPageVo"+merOrderPageVo.getOrderId()+"缺少用户");
+ }
+ }
+ }
+ return merOrderPageVoList;
+ }
}
--
Gitblit v1.7.1