From db43ef4bc6d068cdbcf3052871dd18c57dc4fcb7 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Tue, 16 Sep 2025 15:14:22 +0800
Subject: [PATCH] feat(ai): 新增 AiMemberPoint 实体、Mapper 及 XML配置

---
 src/main/java/cc/mrbird/febs/pay/service/impl/XcxPayServiceImpl.java |   98 +++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 86 insertions(+), 12 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/pay/service/impl/XcxPayServiceImpl.java b/src/main/java/cc/mrbird/febs/pay/service/impl/XcxPayServiceImpl.java
index 5a2774e..95c77c8 100644
--- a/src/main/java/cc/mrbird/febs/pay/service/impl/XcxPayServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/pay/service/impl/XcxPayServiceImpl.java
@@ -23,6 +23,7 @@
 import cn.hutool.http.HttpRequest;
 import cn.hutool.http.HttpResponse;
 import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.CollectionUtils;
@@ -41,15 +42,18 @@
 import java.io.*;
 import java.math.BigDecimal;
 import java.nio.charset.Charset;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 @Slf4j
 @Service
 @RequiredArgsConstructor
 public class XcxPayServiceImpl implements IXcxPayService {
+
+    @Autowired
+    private HappyActivityOrderMapper happyActivityOrderMapper;
+
+    @Autowired
+    private HappyActivityMapper happyActivityMapper;
 
     @Autowired
     private MallOrderInfoMapper mallOrderInfoMapper;
@@ -64,6 +68,8 @@
     @Autowired
     private MallMemberWithdrawMapper mallMemberWithdrawMapper;
     private final IMallMoneyFlowService mallMoneyFlowService;
+    private final ClothesTypeMapper clothesTypeMapper;
+    private final ClothesOrderMapper clothesOrderMapper;
     @Autowired
     RedisUtils redisUtils;
 
@@ -206,6 +212,55 @@
     }
 
     @Override
+    public BrandWCPayRequestData startPayment(ClothesOrder orderInfo) throws Exception {
+        BigDecimal unit = new BigDecimal("100");
+        BigDecimal money = new BigDecimal(orderInfo.getRealAmount().toString());
+        BrandWCPayRequestData payData;
+
+        ClothesType clothesType = clothesTypeMapper.selectById(orderInfo.getTypeId());
+        String productNames = clothesType.getName();
+        MallMember mallMember = mallMemberMapper.selectById(orderInfo.getMemberId());
+        Boolean debug = xcxProperties.getDebug();
+        if (debug) {
+            payData = weixinServiceUtil.createOrder("[测试]" + productNames, orderInfo.getOrderNo(),
+                    1, mallMember.getOpenId(), String.valueOf(orderInfo.getId()));
+        } else {
+            payData = weixinServiceUtil.createOrder(productNames, orderInfo.getOrderNo(),
+                    unit.multiply(money).intValue(),mallMember.getOpenId(), String.valueOf(orderInfo.getId()));
+        }
+        orderInfo.setPayOrderNo(payData.getPrepay_id());
+
+        clothesOrderMapper.update(null,
+                Wrappers.lambdaUpdate(ClothesOrder.class)
+                .set(ClothesOrder::getPayOrderNo, payData.getPrepay_id())
+                .set(ClothesOrder::getUpdatedTime, new Date())
+                .eq(ClothesOrder::getId, orderInfo.getId())
+                );
+        return payData;
+    }
+
+    @Override
+    public BrandWCPayRequestData startPaymentActivity(HappyActivityOrder dto) throws Exception {
+        BigDecimal unit = new BigDecimal("100");
+        BigDecimal money = new BigDecimal(dto.getAmount().toString());
+        BrandWCPayRequestData payData;
+        HappyActivity happyActivity = happyActivityMapper.selectById(dto.getActivityId());
+        String productNames = getActivityNames(happyActivity.getId(),dto.getNumCnt());
+        MallMember mallMember = mallMemberMapper.selectById(dto.getMemberId());
+        Boolean debug = xcxProperties.getDebug();
+        if (debug) {
+            payData = weixinServiceUtil.createActivityOrder("[测试]" + productNames, dto.getOrderNo(),
+                    1, mallMember.getOpenId(), String.valueOf(dto.getId()));
+        } else {
+            payData = weixinServiceUtil.createActivityOrder(productNames, dto.getOrderNo(),
+                    unit.multiply(money).intValue(),mallMember.getOpenId(), String.valueOf(dto.getId()));
+        }
+        dto.setWxOrderNo(payData.getPrepay_id());
+        happyActivityOrderMapper.updateById(dto);
+        return payData;
+    }
+
+    @Override
     public void pushOrderToAddress(OrderStateDto info) {
         RestTemplate restTemplate = new RestTemplate();
         String url =  WechatConfigure.SEND_INFO_URL  + redisUtils.get(WechatConfigure.WX_ACCESS_TOKEN_REDIS_KEY);
@@ -320,8 +375,8 @@
         }
 
         if (type == 3) {
-            String openId = wxGenerateQrCodeDto.getTypeParam();
-            MallMember member = mallMemberMapper.selectMemberByOpenId(openId);
+            String inviteId = wxGenerateQrCodeDto.getTypeParam();
+            MallMember member = mallMemberMapper.selectInfoByInviteId(inviteId);
             if(ObjectUtil.isNotNull(member)){
                 String wxCodeImg = member.getInviteImg();
                 if(StrUtil.isNotBlank(wxCodeImg)){
@@ -347,8 +402,8 @@
         }
 
         if (type == 3) {
-            String openId = wxGenerateQrCodeDto.getTypeParam();
-            MallMember member = mallMemberMapper.selectMemberByOpenId(openId);
+            String inviteId = wxGenerateQrCodeDto.getTypeParam();
+            MallMember member = mallMemberMapper.selectInfoByInviteId(inviteId);
             if(ObjectUtil.isNotNull(member)){
                 member.setInviteImg(codeImgPath);
                 mallMemberMapper.updateById(member);
@@ -412,9 +467,11 @@
      * @return
      */
     //图片上传路径
-    public  static  final String IMG_UPLOAD_PATH="/mnt/sdc/webresource/blnka/wxcode";
+            // todo 上线修改图片上传路径
+    public  static  final String IMG_UPLOAD_PATH="/home/javaweb/webresource/upload/wxcode";
     public  String generateAcode(String scene,String path,String imgName,String width, Integer type){
-        String urlPrefix="https://hwfile.csxuncong.com/blnka/wxcode";
+            // todo 上线修改图片上传路径
+        String urlPrefix="https://hcres.csxuncong.com/wxcode";
         String imgPath=IMG_UPLOAD_PATH+imgName;
         if(!FileUtil.exist(imgPath)){
 
@@ -444,7 +501,7 @@
             obj.set("is_hyaline", false);
             try {
                 HttpResponse execute = HttpRequest.post(url).body(obj.toString(), "application/json").execute();
-                log.error("微信返回值:{}", execute.body());
+//                log.error("微信返回值:{}", execute.body());
                 InputStream inputStream = execute.bodyStream();
                 File file = new File(imgPath);
                 FileUtil.writeFromStream(inputStream, file);
@@ -469,7 +526,7 @@
             }
         }
         log.debug("生成微信小程序码成功,路径:" + imgPath);
-        return urlPrefix+"/"+imgName;
+        return urlPrefix+imgName;
     }
 
     /**
@@ -509,4 +566,21 @@
         }
         return productNames;
     }
+
+    /**
+     * 根据用户ID和订单ID获取所购买商品名称
+     * @return 所含商品名称(多个以","隔开)
+     */
+    public String getActivityNames(Long activityId,Integer numCnt) {
+        HappyActivity happyActivity = happyActivityMapper.selectById(activityId);
+        StringBuffer productNameBuffer = new StringBuffer();
+        Integer maxLength = 25;
+        String goodsName = happyActivity.getName();
+        if (goodsName.length() > maxLength) {
+            productNameBuffer.append(goodsName.substring(0, maxLength) + "*"+numCnt);
+        }else{
+            productNameBuffer.append(goodsName+"*"+numCnt);
+        }
+        return productNameBuffer.toString();
+    }
 }

--
Gitblit v1.9.1