From 612ea1fc6e46a9f1997e593295f5d76201a341d5 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Wed, 21 May 2025 11:51:51 +0800
Subject: [PATCH] refactor(mall): 重构代理列表页面布局
---
src/main/java/cc/mrbird/febs/pay/service/impl/XcxPayServiceImpl.java | 115 +++++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 86 insertions(+), 29 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 1645921..6a4705b 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
@@ -18,17 +18,11 @@
import cc.mrbird.febs.pay.util.WeixinServiceUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.text.StrFormatter;
-import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
-import cn.hutool.extra.spring.SpringUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
-import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
-import com.alibaba.fastjson.JSON;
-import com.baomidou.dynamic.datasource.toolkit.Base64;
-import com.baomidou.mybatisplus.extension.exceptions.ApiException;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
@@ -46,7 +40,6 @@
import java.io.*;
import java.math.BigDecimal;
-import java.net.*;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.HashMap;
@@ -57,6 +50,12 @@
@Service
@RequiredArgsConstructor
public class XcxPayServiceImpl implements IXcxPayService {
+
+ @Autowired
+ private HappyActivityOrderMapper happyActivityOrderMapper;
+
+ @Autowired
+ private HappyActivityMapper happyActivityMapper;
@Autowired
private MallOrderInfoMapper mallOrderInfoMapper;
@@ -85,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()+"}";
+ String attrStr = "{'rechargeNo':"+rechargeNo
+ +",'memberId':"+mallMember.getId()
+ +",'agentApplyId':"+agentApplyId
+ +",'type':"+apiRechargeWalletDto.getType()+"}";
if (debug) {
payData = weixinServiceUtil.createRechargeWallet("[测试]" + productNames, rechargeNo,
1, mallMember.getOpenId(), attrStr);
@@ -95,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;
}
@@ -216,6 +212,27 @@
}
@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);
@@ -225,11 +242,10 @@
orderStateMsgVo.setTemplate_id(info.getTemplateId());//订阅消息模板id
orderStateMsgVo.setPage(info.getPage());
Map<String, WxTemplateData> m = new HashMap<>(4);
- m.put("thing4.DATA", new WxTemplateData(info.getAddressArea()));
- m.put("phone_number14.DATA", new WxTemplateData(info.getLeaderPhone()));
- m.put("thing3.DATA", new WxTemplateData(info.getGoodsName()));
- m.put("thing5.DATA", new WxTemplateData(info.getDetailAddress()));
- m.put("thing15.DATA", new WxTemplateData(info.getRemark()));
+ m.put("thing19", new WxTemplateData(info.getAddressArea()));
+ m.put("phone_number18", new WxTemplateData(info.getLeaderPhone()));
+ m.put("thing3", new WxTemplateData(info.getGoodsName()));
+ m.put("thing15", new WxTemplateData(info.getRemark()));
orderStateMsgVo.setData(m);
String s = JSONUtil.toJsonStr(orderStateMsgVo);
log.info(s);
@@ -287,12 +303,15 @@
}
@Override
- public List<String> getTemplateId() {
- List<String> wxTemplates = new ArrayList<>();
+ public List<HashMap<String, String>> getTemplateId() {
+ List<HashMap<String, String>> wxTemplates = new ArrayList<>();
List<DataDictionaryCustom> wxTemplateList = dataDictionaryCustomMapper.selectDicByType(DataDictionaryEnum.WX_TEMPLATE_ID_THREE.getType());
if(CollUtil.isNotEmpty(wxTemplateList)){
for(DataDictionaryCustom dic : wxTemplateList){
- wxTemplates.add(dic.getValue());
+ HashMap<String, String> objectObjectHashMap = new HashMap<>();
+ objectObjectHashMap.put("name",dic.getCode());
+ objectObjectHashMap.put("value",dic.getValue());
+ wxTemplates.add(objectObjectHashMap);
}
}
return wxTemplates;
@@ -327,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);
@@ -341,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);
}
@@ -400,9 +439,9 @@
* @return
*/
//图片上传路径
- public static final String IMG_UPLOAD_PATH="/mnt/sdc/webresource/groupbuy/wxcode";
+ 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/groupbuy/wxcode";
+ String urlPrefix="https://hcres.csxuncong.com/wxcode";
String imgPath=IMG_UPLOAD_PATH+imgName;
if(!FileUtil.exist(imgPath)){
@@ -411,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 );
}
@@ -432,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);
@@ -456,7 +496,7 @@
}
}
log.debug("生成微信小程序码成功,路径:" + imgPath);
- return urlPrefix+"/"+imgName;
+ return urlPrefix+imgName;
}
/**
@@ -496,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