From 3785fcd8bab3c3e0aee184edbad37e83337779c1 Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Wed, 27 Dec 2023 11:13:19 +0800
Subject: [PATCH] 富文本框输入版本变化
---
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAppServiceImpl.java | 159 +++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 130 insertions(+), 29 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 dc8d19c..4480c31 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
@@ -13,6 +13,7 @@
import cc.mrbird.febs.mall.mapper.*;
import cc.mrbird.febs.mall.service.IApiMallAppService;
import cc.mrbird.febs.mall.vo.*;
+import cc.mrbird.febs.pay.service.IXcxCodePayService;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
@@ -21,6 +22,7 @@
import cn.hutool.crypto.asymmetric.KeyType;
import cn.hutool.crypto.asymmetric.RSA;
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;
@@ -47,6 +49,7 @@
private final MallOrderInfoMapper mallOrderInfoMapper;
private final MallOrderItemMapper mallOrderItemMapper;
private final MallMemberWalletMapper mallMemberWalletMapper;
+ private final IXcxCodePayService xcxCodePayService;
public static void main(String[] args) {
System.out.println(SecureUtil.md5("a123456"));
@@ -80,7 +83,7 @@
@Override
public FebsResponse appMemberInfo(ApiMallAppMemberInfoDto apiMallAppMemberInfoDto) {
- Long memberId = LoginUserUtil.getLoginUser().getId();
+// Long memberId = LoginUserUtil.getLoginUser().getId();
List<ApiMallAppMemberInfoVo> mallMembers = this.baseMapper.selectMemberInfoLikePhone(apiMallAppMemberInfoDto.getPhone());
return new FebsResponse().success().data(mallMembers);
}
@@ -121,6 +124,7 @@
orderInfo.setIsApp(AppContants.IS_APP_ORDER);
orderInfo.setOrderTime(new Date());
orderInfo.setMemberId(addOrderDto.getMemberId());
+ orderInfo.setPayResult(2);
//会员结算
orderInfo.setStatus(OrderStatusEnum.WAIT_PAY.getValue());
mallOrderInfoMapper.insert(orderInfo);
@@ -165,32 +169,31 @@
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);
- }
+// 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);
}
@@ -210,6 +213,7 @@
orderInfo.setIsApp(AppContants.IS_APP_ORDER);
orderInfo.setOrderTime(new Date());
orderInfo.setStatus(OrderStatusEnum.WAIT_PAY.getValue());
+ orderInfo.setPayResult(2);
if (CollUtil.isEmpty(addOrderDto.getItems())) {
throw new FebsException("商品明细不能为空。");
}
@@ -236,7 +240,13 @@
}
orderInfo.setAmount(total);
mallOrderInfoMapper.updateById(orderInfo);
- return new FebsResponse().success().message("操作成功");
+
+ Integer cnt = 0;
+ List<MallOrderInfo> mallOrderInfos = mallOrderInfoMapper.selectOrderInfoByStatusIsApp(OrderStatusEnum.WAIT_PAY.getValue());
+ if(ObjectUtil.isNotEmpty(mallOrderInfos)){
+ cnt = mallOrderInfos.size();
+ }
+ return new FebsResponse().success().data(cnt).message("操作成功");
}
@Override
@@ -254,6 +264,7 @@
orderInfo.setIsApp(AppContants.IS_APP_ORDER);
orderInfo.setOrderTime(new Date());
orderInfo.setStatus(OrderStatusEnum.WAIT_PAY.getValue());
+ orderInfo.setPayResult(2);
if (CollUtil.isEmpty(addOrderDto.getItems())) {
throw new FebsException("商品明细不能为空。");
}
@@ -303,10 +314,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);
}
@@ -319,6 +335,91 @@
return new FebsResponse().success().message("订单已取消");
}
+ @Override
+ 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("已支付");
+ }
+ mallOrderInfo.setTakeCode(wxPayCode);
+ List<ApiGetOrderOrderItemVo> appOrderItemByOrderId = mallOrderItemMapper.getAppOrderItemByOrderId(orderId);
+ if(CollUtil.isEmpty(appOrderItemByOrderId)){
+ mallOrderInfo.setName("商品");
+ }else{
+ mallOrderInfo.setName(appOrderItemByOrderId.get(0).getGoodsName());
+ }
+// mallOrderInfo.setPayResult(2);
+ mallOrderInfoMapper.updateById(mallOrderInfo);
+ //减少用户积分和余额
+ if(ObjectUtil.isNotEmpty(mallOrderInfo.getMemberId())){
+ MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(mallOrderInfo.getMemberId());
+ BigDecimal totalCarriage = mallOrderInfo.getCarriage();
+ BigDecimal score = mallMemberWallet.getScore();
+ BigDecimal balance = mallMemberWallet.getBalance();
+ BigDecimal memberAmount = score.add(balance);
+ 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);
+ }
+ }
+ // 发起付款码支付请求
+ BigDecimal amount = mallOrderInfo.getAmount();
+ BigDecimal carriage = mallOrderInfo.getCarriage();
+ String payResult = "支付成功";
+ if(amount.subtract(carriage).compareTo(BigDecimal.ZERO) > 0){
+ payResult = xcxCodePayService.pay(mallOrderInfo);
+ }
+ return new FebsResponse().success().message(payResult);
+ }
+
+ @Override
+ public FebsResponse cancelOrder(Long id) {
+ MallOrderInfo orderInfo = mallOrderInfoMapper.selectById(id);
+ if (orderInfo == null || AppContants.DEL_FLAG_Y == orderInfo.getDelFlag()) {
+ throw new FebsException("订单不存在");
+ }
+
+ if (OrderStatusEnum.WAIT_PAY.getValue() != orderInfo.getStatus()) {
+ throw new FebsException("订单不是待付款, 无法取消");
+ }
+
+ orderInfo.setStatus(OrderStatusEnum.CANCEL.getValue());
+ orderInfo.setCancelType(MallOrderInfo.CANCEL_BY_SELF);
+ mallOrderInfoMapper.updateById(orderInfo);
+ return new FebsResponse().success().message("取消成功");
+ }
+
public String generateAsaToken(String token) {
RSA rsa = new RSA(null, AppContants.PUBLIC_KEY);
return rsa.encryptBase64(token + "_" + System.currentTimeMillis(), KeyType.PublicKey);
--
Gitblit v1.9.1