From e16ac98e0d1049d18c508799d64f11d942c74920 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Sun, 27 Apr 2025 14:32:57 +0800
Subject: [PATCH] refactor(votesActivity): 修改自主报名字段名称

---
 src/main/java/cc/mrbird/febs/pay/service/impl/XcxPayServiceImpl.java |   88 +++++++++++++++++++++++++++++++++++++------
 1 files changed, 75 insertions(+), 13 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 7f848cc..56ddd88 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
@@ -52,6 +52,12 @@
 public class XcxPayServiceImpl implements IXcxPayService {
 
     @Autowired
+    private HappyActivityOrderMapper happyActivityOrderMapper;
+
+    @Autowired
+    private HappyActivityMapper happyActivityMapper;
+
+    @Autowired
     private MallOrderInfoMapper mallOrderInfoMapper;
     @Autowired
     private MallMemberMapper mallMemberMapper;
@@ -78,9 +84,13 @@
         BrandWCPayRequestData payData;
         String productNames = "小程序充值";
         MallMember mallMember = mallMemberMapper.selectById(apiRechargeWalletDto.getMemberId());
-        String rechargeNo = "CZ_"+MallUtils.getOrderNum();
+        String rechargeNo = apiRechargeWalletDto.getRechargeNo();
+        Long agentApplyId = apiRechargeWalletDto.getAgentApplyId() == null ? 0L : apiRechargeWalletDto.getAgentApplyId();
         Boolean debug = xcxProperties.getDebug();
-        String attrStr = "{'rechargeNo':"+rechargeNo+",'memberId':"+mallMember.getId()+",'type':"+apiRechargeWalletDto.getType()+"}";
+        String attrStr = "{'rechargeNo':"+rechargeNo
+                +",'memberId':"+mallMember.getId()
+                +",'agentApplyId':"+agentApplyId
+                +",'type':"+apiRechargeWalletDto.getType()+"}";
         if (debug) {
             payData = weixinServiceUtil.createRechargeWallet("[测试]" + productNames, rechargeNo,
                     1, mallMember.getOpenId(), attrStr);
@@ -88,13 +98,6 @@
             payData = weixinServiceUtil.createRechargeWallet(productNames, rechargeNo,
                     unit.multiply(money).intValue(),mallMember.getOpenId(), attrStr);
         }
-        mallMoneyFlowService.addMoneyFlow(
-                mallMember.getId(),
-                money,
-                MoneyFlowTypeEnum.RECHARGE.getValue(),
-                rechargeNo,
-                FlowTypeEnum.BALANCE.getValue(),
-                "余额充值",1);
         return payData;
     }
 
@@ -205,6 +208,27 @@
         }
         mallOrderInfo.setWxOrderNo(payData.getPrepay_id());
         mallOrderInfoMapper.updateById(mallOrderInfo);
+        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;
     }
 
@@ -322,6 +346,17 @@
             }
         }
 
+        if (type == 3) {
+            String inviteId = wxGenerateQrCodeDto.getTypeParam();
+            MallMember member = mallMemberMapper.selectInfoByInviteId(inviteId);
+            if(ObjectUtil.isNotNull(member)){
+                String wxCodeImg = member.getInviteImg();
+                if(StrUtil.isNotBlank(wxCodeImg)){
+                    return new FebsResponse().success().data(wxCodeImg);
+                }
+            }
+        }
+
         String randomNum = MallUtils.getRandomNum(5);
         String imgName="/user_" + randomNum + "_acode_1.jpg";
         String codeImgPath = generateAcode(wxGenerateQrCodeDto.getScene(), wxGenerateQrCodeDto.getPage(), imgName, "400px", null);
@@ -336,6 +371,15 @@
             MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(uniqueCode);
             mallTeamLeader.setWxCodeImg(codeImgPath);
             mallTeamLeaderMapper.updateById(mallTeamLeader);
+        }
+
+        if (type == 3) {
+            String inviteId = wxGenerateQrCodeDto.getTypeParam();
+            MallMember member = mallMemberMapper.selectInfoByInviteId(inviteId);
+            if(ObjectUtil.isNotNull(member)){
+                member.setInviteImg(codeImgPath);
+                mallMemberMapper.updateById(member);
+            }
         }
         return new FebsResponse().success().data(codeImgPath);
     }
@@ -395,9 +439,9 @@
      * @return
      */
     //图片上传路径
-    public  static  final String IMG_UPLOAD_PATH="/mnt/sdc/webresource/groupbuy/wxcode";
+    public  static  final String IMG_UPLOAD_PATH="/mnt/sdc/webresource/blnka/wxcode";
     public  String generateAcode(String scene,String path,String imgName,String width, Integer type){
-        String urlPrefix="https://hwfile.csxuncong.com/groupbuy/wxcode";
+        String urlPrefix="https://file.blnka.cn/blnka/wxcode";
         String imgPath=IMG_UPLOAD_PATH+imgName;
         if(!FileUtil.exist(imgPath)){
 
@@ -406,12 +450,12 @@
             String url = null;
             if (type == null) {
                 // 该接口无数量限制,但是 scene 传参最大字符长度为32个字符
-                url = StrFormatter.format("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token={}",redisUtils.get(WechatConfigure.WX_ACCESS_TOKEN_REDIS_KEY).toString());
+                url = StrUtil.format("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token={}",redisUtils.get(WechatConfigure.WX_ACCESS_TOKEN_REDIS_KEY).toString());
                 obj.set("scene", scene);
                 obj.set("page", path);
             } else {
                 // 该接口存在数量限制, 总共可生成10w个, 但参数是接在path后面
-                url = StrFormatter.format("https://api.weixin.qq.com/wxa/getwxacode?access_token={}", redisUtils.get(WechatConfigure.WX_ACCESS_TOKEN_REDIS_KEY).toString());
+                url = StrUtil.format("https://api.weixin.qq.com/wxa/getwxacode?access_token={}", redisUtils.get(WechatConfigure.WX_ACCESS_TOKEN_REDIS_KEY).toString());
                 obj.set("page", path + "?" + scene );
             }
 
@@ -427,6 +471,7 @@
             obj.set("is_hyaline", false);
             try {
                 HttpResponse execute = HttpRequest.post(url).body(obj.toString(), "application/json").execute();
+                log.error("微信返回值:{}", execute.body());
                 InputStream inputStream = execute.bodyStream();
                 File file = new File(imgPath);
                 FileUtil.writeFromStream(inputStream, file);
@@ -491,4 +536,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