From c619972c50577bb699be6ee099b5e2741882fabb Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Wed, 27 Dec 2023 16:15:59 +0800
Subject: [PATCH] 直推奖励,冻结的用户,则直推奖励销毁,用户未冻结才能领取成功
---
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAppServiceImpl.java | 98 +++++++++++++++++++++++++++++-------------------
1 files changed, 59 insertions(+), 39 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAppServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAppServiceImpl.java
index 61abecf..3616044 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAppServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAppServiceImpl.java
@@ -21,7 +21,9 @@
import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.asymmetric.KeyType;
import cn.hutool.crypto.asymmetric.RSA;
+import cn.hutool.db.sql.Order;
import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -167,33 +169,6 @@
}else{
totalCarriage = total;
}
- //减少用户积分和余额
-
- BigDecimal avaAmount = totalCarriage;//剩余需要折扣的金额
- if(avaAmount.compareTo(memberAmount) >= 0){
- //清零用户的积分和余额
- mallMemberWallet.setBalance(BigDecimal.ZERO);
- mallMemberWallet.setScore(BigDecimal.ZERO);
- mallMemberWalletMapper.updateBalanceScoreWithId(mallMemberWallet);
- }else{
- /**
- * 先扣积分,再扣余额
- */
- if(avaAmount.compareTo(score) >= 0){
- mallMemberWallet.setScore(BigDecimal.ZERO);
- avaAmount = avaAmount.subtract(score);
- }else{
- mallMemberWallet.setScore(score.subtract(avaAmount));
- avaAmount = BigDecimal.ZERO;
- }
- //积分不够
- if(avaAmount.compareTo(BigDecimal.ZERO) > 0){
- mallMemberWallet.setBalance(balance.subtract(avaAmount));
- }else{
- mallMemberWallet.setBalance(balance);
- }
- mallMemberWalletMapper.updateBalanceScoreWithId(mallMemberWallet);
- }
}
orderInfo.setCarriage(totalCarriage);
}
@@ -314,10 +289,15 @@
@Override
public FebsResponse getOrder(ApiGetOrderDto apiGetOrderDto) {
- ApiGetOrderListVo apiGetOrderListVo = mallOrderInfoMapper.getAppOrderByOrderId(apiGetOrderDto.getOrderId());
+ Long orderId = apiGetOrderDto.getOrderId();
+ ApiGetOrderListVo apiGetOrderListVo = mallOrderInfoMapper.getAppOrderByOrderId(orderId);
if(ObjectUtil.isNotEmpty(apiGetOrderListVo)){
apiGetOrderListVo.setItems(mallOrderItemMapper.getAppOrderItemByOrderId(apiGetOrderListVo.getId()));
}
+// mallOrderInfoMapper.deleteById(orderId);
+// QueryWrapper<MallOrderItem> mallOrderItemQuery = new QueryWrapper<>();
+// mallOrderItemQuery.eq("order_id",orderId);
+// mallOrderItemMapper.delete(mallOrderItemQuery);
return new FebsResponse().success().data(apiGetOrderListVo);
}
@@ -331,21 +311,50 @@
}
@Override
+ @Transactional
public FebsResponse wxCodePay(ApiWxCodePayDto wxCodePayDto) {
Long orderId = wxCodePayDto.getOrderId();
- String wxPayCode = wxCodePayDto.getWxPayCode();
- /**
- * auth_code 扫码支付付款码 微信付款码规则:18位纯数字,前缀以10、11、12、13、14、15开头
- */
- String regex = "^(10|11|12|13|14|15)\\d{16}$";
- boolean flag = wxPayCode.matches(regex);
- if(!flag){
- throw new FebsException("请打开微信付款码!");
- }
MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(orderId);
if(OrderStatusEnum.FINISH.getValue() == (mallOrderInfo.getStatus())){
throw new FebsException("已支付");
}
+ BigDecimal amount = mallOrderInfo.getAmount();
+ BigDecimal carriage = mallOrderInfo.getCarriage();
+ //减少用户积分和余额
+ if(ObjectUtil.isNotEmpty(mallOrderInfo.getMemberId())){
+ BigDecimal avaAmount = carriage;//剩余需要折扣的金额
+ if(avaAmount.compareTo(BigDecimal.ZERO) > 0){
+ MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(mallOrderInfo.getMemberId());
+ BigDecimal score = mallMemberWallet.getScore();
+ BigDecimal balance = mallMemberWallet.getBalance();
+ BigDecimal memberAmount = score.add(balance);
+ if(avaAmount.compareTo(memberAmount) >= 0){
+ //清零用户的积分和余额
+ mallMemberWallet.setBalance(BigDecimal.ZERO);
+ mallMemberWallet.setScore(BigDecimal.ZERO);
+ mallMemberWalletMapper.updateBalanceScoreWithId(mallMemberWallet);
+ }else{
+ /**
+ * 先扣积分,再扣余额
+ */
+ if(avaAmount.compareTo(score) >= 0){
+ mallMemberWallet.setScore(BigDecimal.ZERO);
+ avaAmount = avaAmount.subtract(score);
+ }else{
+ mallMemberWallet.setScore(score.subtract(avaAmount));
+ avaAmount = BigDecimal.ZERO;
+ }
+ //积分不够
+ if(avaAmount.compareTo(BigDecimal.ZERO) > 0){
+ mallMemberWallet.setBalance(balance.subtract(avaAmount));
+ }else{
+ mallMemberWallet.setBalance(balance);
+ }
+ mallMemberWalletMapper.updateBalanceScoreWithId(mallMemberWallet);
+ }
+ }
+ }
+ String wxPayCode = wxCodePayDto.getWxPayCode();
mallOrderInfo.setTakeCode(wxPayCode);
List<ApiGetOrderOrderItemVo> appOrderItemByOrderId = mallOrderItemMapper.getAppOrderItemByOrderId(orderId);
if(CollUtil.isEmpty(appOrderItemByOrderId)){
@@ -353,10 +362,21 @@
}else{
mallOrderInfo.setName(appOrderItemByOrderId.get(0).getGoodsName());
}
-// mallOrderInfo.setPayResult(2);
+ mallOrderInfo.setStatus(OrderStatusEnum.FINISH.getValue());
mallOrderInfoMapper.updateById(mallOrderInfo);
// 发起付款码支付请求
- String payResult = xcxCodePayService.pay(mallOrderInfo);
+ String payResult = "支付成功";
+ if(amount.subtract(carriage).compareTo(BigDecimal.ZERO) > 0){
+ /**
+ * auth_code 扫码支付付款码 微信付款码规则:18位纯数字,前缀以10、11、12、13、14、15开头
+ */
+ String regex = "^(10|11|12|13|14|15)\\d{16}$";
+ boolean flag = wxPayCode.matches(regex);
+ if(!flag){
+ throw new FebsException("请打开微信付款码!");
+ }
+ payResult = xcxCodePayService.pay(mallOrderInfo);
+ }
return new FebsResponse().success().message(payResult);
}
--
Gitblit v1.9.1