From fe00af0129ea00d7b3e33af06ab8f48acaf0389c Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Mon, 13 Feb 2023 13:31:22 +0800
Subject: [PATCH] 普通用户充值固定金额后,自动升级成为合伙人
---
src/main/java/cc/mrbird/febs/mall/dto/ApiRechargeWalletDto.java | 3 +++
src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java | 7 +++++++
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAgentServiceImpl.java | 4 +++-
src/main/resources/mapper/modules/MallAgentRecordMapper.xml | 11 +++++++++++
src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java | 2 ++
src/main/java/cc/mrbird/febs/pay/service/impl/XcxPayServiceImpl.java | 2 +-
src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java | 2 ++
src/main/java/cc/mrbird/febs/mall/mapper/MallAgentRecordMapper.java | 4 ++++
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java | 22 ++++++++++++++++++++++
9 files changed, 55 insertions(+), 2 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
index 928a949..b8210ab 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
@@ -8,6 +8,8 @@
//微信订阅模板ID,
// 微信订单通知
// WX_TEMPLATE_ID_ONE("WX_TEMPLATE", "WX_TEMPLATE_ID_ONE"),
+ // 成为合伙人的充值金额
+ PRICE_AMOUNT("AGENT_PRICE", "PRICE_AMOUNT"),
// 充值到账通知
WX_TEMPLATE_ID_TWO("WX_TEMPLATE", "WX_TEMPLATE_ID_TWO"),
// 提货通知
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiRechargeWalletDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiRechargeWalletDto.java
index fc8ea85..93b35e2 100644
--- a/src/main/java/cc/mrbird/febs/mall/dto/ApiRechargeWalletDto.java
+++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiRechargeWalletDto.java
@@ -10,6 +10,9 @@
@ApiModel(value = "ApiRechargeWalletDto", description = "余额充值接收类")
public class ApiRechargeWalletDto {
+ @ApiModelProperty(value = "1:普通充值 2:合伙人充值", example = "10")
+ private Integer type;
+
@ApiModelProperty(value = "充值金额", example = "10")
private BigDecimal amount;
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallAgentRecordMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallAgentRecordMapper.java
index 5e3b8cf..7cc7f02 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallAgentRecordMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallAgentRecordMapper.java
@@ -11,4 +11,8 @@
MallAgentRecord selectByMemberIdAndState(@Param("memberId")Long memberId, @Param("state")Integer applyIng);
IPage<MallAgentRecord> selectMallAgentRecordListInPage(Page<MallAgentRecord> page, @Param("record")MallAgentRecord mallAgentRecord);
+
+ void updateStateByMemberId(@Param("memberId")Long memberId);
+
+ void deleteByMemberIdAndState(@Param("memberId")Long memberId, @Param("state")Integer applyIng);
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java b/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java
index e07d737..8de90c2 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java
@@ -75,4 +75,6 @@
FebsResponse xcxOpen(ApiXcxOpenDto apiXcxOpenDto);
FebsResponse rechargeWallet(ApiRechargeWalletDto apiRechargeWalletDto);
+
+ void updateMemberAgent(Long memberId);
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAgentServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAgentServiceImpl.java
index 94ab94b..d9e4b82 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAgentServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAgentServiceImpl.java
@@ -12,6 +12,8 @@
import cc.mrbird.febs.mall.mapper.MallMemberMapper;
import cc.mrbird.febs.mall.service.IApiMallAgentService;
import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -36,7 +38,7 @@
//判断用户是否正在申请
MallAgentRecord mallAgentRecord = mallAgentRecordMapper.selectByMemberIdAndState(memberId,MallAgentRecord.APPLY_ING);
if(ObjectUtil.isNotEmpty(mallAgentRecord)){
- return new FebsResponse().fail().message("用户已申请");
+ mallAgentRecordMapper.deleteByMemberIdAndState(memberId,MallAgentRecord.APPLY_ING);
}
MallAgentRecord mallAgentRecordNew = MallAgentRecordConversion.INSTANCE.dtoToEntity(apiAgentApplyDto);
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
index 053e033..6404772 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
@@ -741,6 +741,18 @@
if(BigDecimal.ZERO.compareTo(amount)>0){
return new FebsResponse().fail().message("请输入正确的充值金额");
}
+ Integer type = apiRechargeWalletDto.getType();
+ if(2 == type){
+ //成为合伙人的充值金额
+ DataDictionaryCustom agentPriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.PRICE_AMOUNT.getType(),
+ DataDictionaryEnum.PRICE_AMOUNT.getCode());
+ String agentPrice = agentPriceDic.getValue();
+ BigDecimal price = new BigDecimal(agentPrice);
+ if(price.compareTo(amount) != 0){
+ return new FebsResponse().fail().message("成为合伙人的金额为"+agentPrice);
+ }
+ }
+
apiRechargeWalletDto.setMemberId(memberId);
BrandWCPayRequestData brandWCPayRequestData = null;
try {
@@ -756,6 +768,16 @@
return new FebsResponse().success().data(map).message("充值即将到账");
}
+ @Override
+ public void updateMemberAgent(Long memberId) {
+ mallAgentRecordMapper.updateStateByMemberId(memberId);
+
+ //更新用户表中的LEVEL
+ MallMember mallMember = this.baseMapper.selectById(memberId);
+ mallMember.setLevel(AgentLevelEnum.FIRST_LEVEL.name());
+ this.baseMapper.updateById(mallMember);
+ }
+
private String getXcxLoginUrl(String code) {
String wechatLoginUrl =xcxProperties.getWecharLoginUrl();
return String.format(wechatLoginUrl, xcxProperties.getXcxAppid(), xcxProperties.getXcxSecret(), code);
diff --git a/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java b/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java
index 011abe4..61e816c 100644
--- a/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java
+++ b/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java
@@ -13,6 +13,7 @@
import cc.mrbird.febs.mall.entity.MallMoneyFlow;
import cc.mrbird.febs.mall.entity.MallOrderInfo;
import cc.mrbird.febs.mall.mapper.*;
+import cc.mrbird.febs.mall.service.IApiMallMemberService;
import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
import cc.mrbird.febs.pay.model.NotifyData;
import cc.mrbird.febs.pay.model.OrderStateDto;
@@ -69,6 +70,8 @@
RedisUtils redisUtils;
@Autowired
private IApiMallMemberWalletService memberWalletService;
+ @Autowired
+ private IApiMallMemberService mallMemberService;
@Autowired
private IXcxPayService iXcxPayService;
@@ -109,6 +112,7 @@
attrStr = data.getAttach();
JSONObject jsonObject = JSONUtil.parseObj(attrStr);
String rechargeNo = (String) jsonObject.get("rechargeNo");
+ Integer type = (Integer) jsonObject.get("type");
Long memberId = Long.parseLong(jsonObject.get("memberId").toString());
// 检验订单状态
MallMoneyFlow mallMoneyFlow = mallMoneyFlowMapper.selectOneByOrderNoAndMemberId(rechargeNo,memberId);
@@ -132,6 +136,9 @@
if (ObjectUtil.isNotEmpty(mallMoneyFlow)) {
log.debug("检查支付金额payMoney={},mallMoneyFlow.getPayMoney()={}", payMoney, mallMoneyFlow.getAmount());
+ if(2 == type){
+ mallMemberService.updateMemberAgent(memberId);
+ }
memberWalletService.addBalance(payMoney,memberId);
mallMoneyFlow.setStatus(2);
mallMoneyFlowMapper.updateById(mallMoneyFlow);
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 1c65d04..7f848cc 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
@@ -80,7 +80,7 @@
MallMember mallMember = mallMemberMapper.selectById(apiRechargeWalletDto.getMemberId());
String rechargeNo = "CZ_"+MallUtils.getOrderNum();
Boolean debug = xcxProperties.getDebug();
- String attrStr = "{'rechargeNo':"+rechargeNo+",'memberId':"+mallMember.getId()+"}";
+ String attrStr = "{'rechargeNo':"+rechargeNo+",'memberId':"+mallMember.getId()+",'type':"+apiRechargeWalletDto.getType()+"}";
if (debug) {
payData = weixinServiceUtil.createRechargeWallet("[测试]" + productNames, rechargeNo,
1, mallMember.getOpenId(), attrStr);
diff --git a/src/main/resources/mapper/modules/MallAgentRecordMapper.xml b/src/main/resources/mapper/modules/MallAgentRecordMapper.xml
index a9fb76e..5234f22 100644
--- a/src/main/resources/mapper/modules/MallAgentRecordMapper.xml
+++ b/src/main/resources/mapper/modules/MallAgentRecordMapper.xml
@@ -31,4 +31,15 @@
GROUP BY a.id order by a.CREATED_TIME desc
</select>
+ <update id="updateStateByMemberId">
+ update mall_agent_record
+ set state = 2
+ where member_id = #{memberId}
+ </update>
+
+ <delete id="deleteByMemberIdAndState">
+ delete from mall_agent_record
+ where member_id = #{memberId} and state = #{state}
+ </delete>
+
</mapper>
\ No newline at end of file
--
Gitblit v1.9.1