From ccad384233cedb89bc5895976b2326f3d1a34f85 Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Wed, 18 Dec 2024 11:23:35 +0800
Subject: [PATCH] refactor(mall): 重构会员充值相关功能
---
src/main/java/cc/mrbird/febs/mall/controller/ApiRunVipController.java | 14 -
src/main/java/cc/mrbird/febs/mall/vo/ApiGoChargeVo.java | 3
src/main/java/cc/mrbird/febs/mall/service/impl/RunVipServiceImpl.java | 44 ++--
src/main/java/cc/mrbird/febs/common/enumerates/RunVipMoneyFlowTypeEnum.java | 26 ++
src/main/java/cc/mrbird/febs/mall/service/impl/MallMoneyFlowServiceImpl.java | 19 ++
src/main/java/cc/mrbird/febs/mall/controller/AdminRunVipController.java | 5
src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java | 2
src/main/java/cc/mrbird/febs/mall/service/IRunVipService.java | 2
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java | 25 ++
src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html | 4
src/main/java/cc/mrbird/febs/mall/entity/MallCharge.java | 2
src/main/java/cc/mrbird/febs/mall/service/IAdminRunVipService.java | 5
src/main/resources/templates/febs/views/modules/mallMember/moneyFlowList.html | 142 ++---------------
src/main/java/cc/mrbird/febs/mall/service/impl/AdminRunVipServiceImpl.java | 19 ++
src/main/java/cc/mrbird/febs/common/enumerates/RunVipDataDictionaryEnum.java | 17 +
src/main/java/cc/mrbird/febs/mall/chain/ercCoin/BscUsdtContractEvent.java | 2
src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java | 23 ++
src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java | 68 -------
src/main/java/cc/mrbird/febs/mall/chain/trcCoin/quartz/ChainTrcListenerJob.java | 2
src/main/java/cc/mrbird/febs/mall/service/IMallMoneyFlowService.java | 3
src/main/java/cc/mrbird/febs/mall/entity/RunVip.java | 3
21 files changed, 186 insertions(+), 244 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/RunVipDataDictionaryEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/RunVipDataDictionaryEnum.java
index c29e4af..33ee4f1 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/RunVipDataDictionaryEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/RunVipDataDictionaryEnum.java
@@ -10,25 +10,28 @@
CHARGE_TYPE_BSC("CHARGE_TYPE", "CHARGE_TYPE_BSC"),
//系统充值失效时间
- CHARGE_SYS_FAIL_TIME("CHARGE_SYS_FAIL_TIME", "CHARGE_SYS_FAIL_TIME"),
+ CHARGE_SYS_FAIL_TIME("CHARGE_TYPE", "CHARGE_SYS_FAIL_TIME"),
//系统充值地址
- CHARGE_SYS_ADDRESS("CHARGE_SYS_ADDRESS", "CHARGE_SYS_ADDRESS"),
+ CHARGE_SYS_ADDRESS_TRC("CHARGE_TYPE", "CHARGE_SYS_ADDRESS_TRC"),
+
+ //系统充值地址
+ CHARGE_SYS_ADDRESS_BSC("CHARGE_TYPE", "CHARGE_SYS_ADDRESS_BSC"),
//碳币兑换USDT的手续费率
- RUN_VIP_BALANCE_TO_COIN_PERCENT("RUN_VIP_BALANCE_TO_COIN_PERCENT", "RUN_VIP_BALANCE_TO_COIN_PERCENT"),
+ RUN_VIP_BALANCE_TO_COIN_PERCENT("CHARGE_TYPE", "RUN_VIP_BALANCE_TO_COIN_PERCENT"),
//碳币兑换USDT的最小数
- RUN_VIP_BALANCE_TO_COIN_MIN("RUN_VIP_BALANCE_TO_COIN_MIN", "RUN_VIP_BALANCE_TO_COIN_MIN"),
+ RUN_VIP_BALANCE_TO_COIN_MIN("CHARGE_TYPE", "RUN_VIP_BALANCE_TO_COIN_MIN"),
//碳币兑换USDT的比值,如果为0.5,则表示1碳币兑换0.5个USDT
- RUN_VIP_BALANCE_TO_COIN("RUN_VIP_BALANCE_TO_COIN", "RUN_VIP_BALANCE_TO_COIN"),
+ RUN_VIP_BALANCE_TO_COIN("CHARGE_TYPE", "RUN_VIP_BALANCE_TO_COIN"),
//用户碳积分兑换碳币的比值 如果为0.5,则表示1积分兑换0.5个碳币
- RUN_VIP_SCORE_TO_BALANCE("RUN_VIP_SCORE_TO_BALANCE", "RUN_VIP_SCORE_TO_BALANCE"),
+ RUN_VIP_SCORE_TO_BALANCE("CHARGE_TYPE", "RUN_VIP_SCORE_TO_BALANCE"),
//用户碳积分兑换碳币的最小兑换数值
- RUN_VIP_SCORE_MIN("RUN_VIP_SCORE_MIN", "RUN_VIP_SCORE_MIN");
+ RUN_VIP_SCORE_MIN("CHARGE_TYPE", "RUN_VIP_SCORE_MIN");
private String type;
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/RunVipMoneyFlowTypeEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/RunVipMoneyFlowTypeEnum.java
index a883b57..ba19bd8 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/RunVipMoneyFlowTypeEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/RunVipMoneyFlowTypeEnum.java
@@ -6,41 +6,53 @@
public enum RunVipMoneyFlowTypeEnum {
/**
+ * 系统拨付碳积分
+ */
+ SYS_SCORE(8,"系统拨付碳积分{}","系统拨付碳积分"),
+
+ /**
+ * 系统拨付碳币
+ */
+ SYS_BALANCE(7,"系统拨付碳币{}","系统拨付碳币"),
+
+ /**
* 购买VIP返利
*/
- BUY_VIP_REBATE(6,"{}购买{},返利{}碳币"),
+ BUY_VIP_REBATE(6,"{}购买{},返利{}碳币","用户返利碳币"),
/**
* 碳币提现
*/
- BALANCE_OUT(5,"{}碳币兑换{}USDT,手续费{}USDT"),
+ BALANCE_OUT(5,"{}碳币兑换{}USDT,手续费{}USDT","碳币提现"),
/**
* 碳积分兑换碳币
*/
- SCORE_OUT_BALANCE_IN(4,"{}碳积分兑换{}碳币"),
+ SCORE_OUT_BALANCE_IN(4,"{}碳积分兑换{}碳币","获得碳币"),
/**
* 碳积分兑换碳币
*/
- SCORE_OUT_BALANCE(3,"{}碳积分兑换{}碳币"),
+ SCORE_OUT_BALANCE(3,"{}碳积分兑换{}碳币","碳积分兑换"),
/**
* 碳币转赠好友-转入
*/
- BALANCE_IN_GIVE_FRIEND(2,"获得好友{},{}碳币"),
+ BALANCE_IN_GIVE_FRIEND(2,"获得好友{},{}碳币","碳币转赠好友-转入"),
/**
* 碳币转赠好友-转出
*/
- BALANCE_OUT_GIVE_FRIEND(1,"转赠好友{},{}碳币");
+ BALANCE_OUT_GIVE_FRIEND(1,"转赠好友{},{}碳币","碳币转赠好友-转出");
private final int value;
private final String description;
+ private final String typeDec;
- RunVipMoneyFlowTypeEnum(int value,String description) {
+ RunVipMoneyFlowTypeEnum(int value,String description,String typeDec) {
this.value = value;
this.description = description;
+ this.typeDec = typeDec;
}
}
diff --git a/src/main/java/cc/mrbird/febs/mall/chain/ercCoin/BscUsdtContractEvent.java b/src/main/java/cc/mrbird/febs/mall/chain/ercCoin/BscUsdtContractEvent.java
index 9c74dca..4eada3f 100644
--- a/src/main/java/cc/mrbird/febs/mall/chain/ercCoin/BscUsdtContractEvent.java
+++ b/src/main/java/cc/mrbird/febs/mall/chain/ercCoin/BscUsdtContractEvent.java
@@ -36,7 +36,7 @@
return;
}
String sysAddress = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
- RunVipDataDictionaryEnum.CHARGE_SYS_ADDRESS.getType(), RunVipDataDictionaryEnum.CHARGE_SYS_ADDRESS.getCode()
+ RunVipDataDictionaryEnum.CHARGE_SYS_ADDRESS_BSC.getType(), RunVipDataDictionaryEnum.CHARGE_SYS_ADDRESS_BSC.getCode()
).getValue();
String type = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
RunVipDataDictionaryEnum.CHARGE_TYPE_BSC.getType(), RunVipDataDictionaryEnum.CHARGE_TYPE_BSC.getCode()
diff --git a/src/main/java/cc/mrbird/febs/mall/chain/trcCoin/quartz/ChainTrcListenerJob.java b/src/main/java/cc/mrbird/febs/mall/chain/trcCoin/quartz/ChainTrcListenerJob.java
index 7c82fab..92a7e26 100644
--- a/src/main/java/cc/mrbird/febs/mall/chain/trcCoin/quartz/ChainTrcListenerJob.java
+++ b/src/main/java/cc/mrbird/febs/mall/chain/trcCoin/quartz/ChainTrcListenerJob.java
@@ -62,7 +62,7 @@
public void chainBlockUpdate() {
log.info("TRC20同步");
String sysAddress = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
- RunVipDataDictionaryEnum.CHARGE_SYS_ADDRESS.getType(), RunVipDataDictionaryEnum.CHARGE_SYS_ADDRESS.getCode()
+ RunVipDataDictionaryEnum.CHARGE_SYS_ADDRESS_TRC.getType(), RunVipDataDictionaryEnum.CHARGE_SYS_ADDRESS_TRC.getCode()
).getValue();
String type = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
RunVipDataDictionaryEnum.CHARGE_TYPE_TRC.getType(), RunVipDataDictionaryEnum.CHARGE_TYPE_TRC.getCode()
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/AdminRunVipController.java b/src/main/java/cc/mrbird/febs/mall/controller/AdminRunVipController.java
index 1bd492a..1f6aa6b 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/AdminRunVipController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminRunVipController.java
@@ -28,6 +28,11 @@
private final IAdminRunVipService iAdminRunVipService;
private final MallMemberMapper mallMemberMapper;
+ @GetMapping(value = "/allMoneyType")
+ public FebsResponse allMoneyType() {
+ return new FebsResponse().success().data(iAdminRunVipService.allMoneyType());
+ }
+
@GetMapping(value = "/allVipList")
public FebsResponse allVipList() {
return new FebsResponse().success().data(iAdminRunVipService.list());
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiRunVipController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiRunVipController.java
index 6878d75..577e80c 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ApiRunVipController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiRunVipController.java
@@ -6,7 +6,6 @@
import cc.mrbird.febs.mall.dto.ApiGoChargeDto;
import cc.mrbird.febs.mall.dto.ApiGoChargeInfoDto;
import cc.mrbird.febs.mall.service.IRunVipService;
-import cc.mrbird.febs.mall.vo.ApiChargeInfoVo;
import cc.mrbird.febs.mall.vo.ApiChargeVo;
import cc.mrbird.febs.mall.vo.ApiGoChargeVo;
import cc.mrbird.febs.mall.vo.ApiRunVipVo;
@@ -41,16 +40,7 @@
return new FebsResponse().success().data(iRunVipService.vipInfo());
}
- @ApiOperation(value = "【购买VIP】基本数据", notes = "【余额充值】基本数据")
- @ApiResponses({
- @ApiResponse(code = 200, message = "success", response = ApiChargeInfoVo.class)
- })
- @GetMapping(value = "/getChargeInfo")
- public FebsResponse getChargeInfo() {
- return iRunVipService.getChargeInfo();
- }
-
- @ApiOperation(value = "【购买VIP】列表", notes = "【余额充值】列表")
+ @ApiOperation(value = "【购买VIP】列表", notes = "【购买VIP】列表")
@ApiResponses({
@ApiResponse(code = 200, message = "success", response = ApiChargeVo.class)
})
@@ -69,7 +59,7 @@
return iRunVipService.goCharge(apiGoChargeDto);
}
- @ApiOperation(value = "【购买VIP】马上支付", notes = "【余额充值】马上支付")
+ @ApiOperation(value = "【购买VIP】马上支付", notes = "【购买VIP】马上支付")
@ApiResponses({
@ApiResponse(code = 200, message = "success", response = ApiGoChargeVo.class)
})
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallCharge.java b/src/main/java/cc/mrbird/febs/mall/entity/MallCharge.java
index 38f1b9b..af4aec1 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallCharge.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallCharge.java
@@ -15,7 +15,7 @@
private Long memberId;
private String orderNo;
private Integer state;//2-进行中 1-成功 0-失败
- private String type;//1-trc 2-erc
+ private String type;//trc erc
private String address;
private BigDecimal amount;
private Date failTime;
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/RunVip.java b/src/main/java/cc/mrbird/febs/mall/entity/RunVip.java
index 53c5e59..161bcf4 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/RunVip.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/RunVip.java
@@ -6,6 +6,9 @@
import java.math.BigDecimal;
+/**
+ * 序号越小,等级越低
+ */
@Data
@TableName("run_vip")
public class RunVip extends BaseEntity {
diff --git a/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java b/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java
index 068ef23..8644275 100644
--- a/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java
+++ b/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java
@@ -1,36 +1,12 @@
package cc.mrbird.febs.mall.quartz;
-import cc.mrbird.febs.common.enumerates.AgentLevelEnum;
-import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
-import cc.mrbird.febs.common.utils.MallUtils;
-import cc.mrbird.febs.mall.entity.MallMember;
-import cc.mrbird.febs.mall.entity.MallMoneyFlow;
-import cc.mrbird.febs.mall.mapper.MallMemberMapper;
-import cc.mrbird.febs.mall.mapper.MallMoneyFlowMapper;
-import cc.mrbird.febs.mall.service.IApiMallMemberService;
-import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
import cc.mrbird.febs.mall.service.IMemberProfitService;
-import cc.mrbird.febs.mall.service.impl.CommonService;
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.date.DateTime;
-import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.util.StrUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
-import org.springframework.transaction.annotation.Transactional;
-import java.math.BigDecimal;
-import java.math.RoundingMode;
-import java.util.Date;
-import java.util.List;
-
-/**
- * @author wzy
- * @date 2021-09-28
- **/
@Slf4j
@Component
@ConditionalOnProperty(prefix = "system", name = "job", havingValue = "true")
@@ -39,41 +15,11 @@
@Autowired
private IMemberProfitService memberProfitService;
-// /**
-// * 代理分红
-// */
-// @Scheduled(cron = "0 30 0 * * ?")
-// public void profitJob() {
-// memberProfitService.agentProfit(null);
-// }
-//
-// @Scheduled(cron = "0 30 1 * * ?")
-// public void storeAndDirectorJob() {
-// memberProfitService.storeAndDirectorProfit(null);
-// }
-//
-// /**
-// * 感恩奖
-// */
-// @Scheduled(cron = "0 0 1 * * ?")
-// public void thankfulJob() {
-// memberProfitService.thankfulProfit(null);
-// }
-//
-//
-// /**
-// * 静态分红
-// */
-// @Scheduled(cron = "0 0 0 * * ?")
-// public void staticProfitJob() {
-// memberProfitService.staticProfit(null);
-// }
-//
-// /**
-// * 排名奖 每月1号
-// */
-// @Scheduled(cron = "0 30 0 1 * ?")
-// public void rankJob() {
-// memberProfitService.rankProfit();
-// }
+ /**
+ * 套餐过期后,更新用户为游客等级
+ */
+ @Scheduled(cron = "0 0 0 * * ?")
+ public void updateMemberLevel() {
+ memberProfitService.updateMemberLevel();
+ }
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IAdminRunVipService.java b/src/main/java/cc/mrbird/febs/mall/service/IAdminRunVipService.java
index ab0ca39..7d71dbe 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IAdminRunVipService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IAdminRunVipService.java
@@ -4,9 +4,12 @@
import cc.mrbird.febs.common.entity.QueryRequest;
import cc.mrbird.febs.mall.entity.MallCharge;
import cc.mrbird.febs.mall.entity.MallMemberWithdraw;
+import cc.mrbird.febs.mall.entity.MallMoneyFlow;
import cc.mrbird.febs.mall.entity.RunVip;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
public interface IAdminRunVipService extends IService<RunVip> {
@@ -23,4 +26,6 @@
FebsResponse sellAgree(Integer state, Long id);
IPage<MallMemberWithdraw> sellList(MallMemberWithdraw mallMemberWithdraw, QueryRequest request);
+
+ List<MallMoneyFlow> allMoneyType();
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IMallMoneyFlowService.java b/src/main/java/cc/mrbird/febs/mall/service/IMallMoneyFlowService.java
index 81d430d..e261d18 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IMallMoneyFlowService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IMallMoneyFlowService.java
@@ -17,4 +17,7 @@
void addMoneyFlow(Long memberId, BigDecimal amount, Integer type, String orderNo, Long rtMemberId, Integer flowType);
+ void runVipMoneyFlowAdd(
+ Long memberId, Long rtMemberId, String orderNo,Integer flowType, Integer type, BigDecimal amount, String description, Integer status);
+
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java b/src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java
index 853979d..f47e4b8 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IMemberProfitService.java
@@ -41,4 +41,6 @@
void storeAndDirectorProfit(Date profitDate);
void getOrderCoupon(Long orderId);
+
+ void updateMemberLevel();
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IRunVipService.java b/src/main/java/cc/mrbird/febs/mall/service/IRunVipService.java
index 4ee013f..c13df6d 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IRunVipService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IRunVipService.java
@@ -18,7 +18,5 @@
FebsResponse goChargeInfo(ApiGoChargeInfoDto apiGoChargeInfoDto);
- FebsResponse getChargeInfo();
-
List<ApiChargeVo> getChargeList(ApiChargeListDto apiChargeListDto);
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java
index ed6031a..026eaba 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java
@@ -2,9 +2,7 @@
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.common.entity.QueryRequest;
-import cc.mrbird.febs.common.enumerates.AgentLevelEnum;
-import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
-import cc.mrbird.febs.common.enumerates.YesOrNoEnum;
+import cc.mrbird.febs.common.enumerates.*;
import cc.mrbird.febs.common.exception.FebsException;
import cc.mrbird.febs.common.utils.AppContants;
import cc.mrbird.febs.common.utils.MallUtils;
@@ -503,11 +501,20 @@
}
Integer type = mallSystemPayDto.getType();
+ Integer flowType = 0;
+ Integer moneyType = 0;
+ String moneyTypeDec = "";
String filedType = "";
if (type == 1) {
filedType = "balance";
+ flowType = FlowTypeEnum.BALANCE.getValue();
+ moneyType = RunVipMoneyFlowTypeEnum.SYS_BALANCE.getValue();
+ moneyTypeDec = RunVipMoneyFlowTypeEnum.SYS_BALANCE.getDescription();
} else if (type == 2) {
filedType = "score";
+ flowType = FlowTypeEnum.SCORE.getValue();
+ moneyType = RunVipMoneyFlowTypeEnum.SYS_SCORE.getValue();
+ moneyTypeDec = RunVipMoneyFlowTypeEnum.SYS_SCORE.getDescription();
} else if (type == 3) {
filedType = "prizeScore";
} else {
@@ -523,7 +530,17 @@
} else {
iApiMallMemberWalletService.add(mallSystemPayDto.getAddBalance(), mallSystemPayDto.getId(), filedType);
}
- mallMoneyFlowService.addMoneyFlow(memberId, bigDecimal, MoneyFlowTypeEnum.SYSTEM.getValue(), MallUtils.getOrderNum(), type, null,2);
+ String orderNo = MallUtils.getOrderNum("SYS");
+ mallMoneyFlowService.runVipMoneyFlowAdd(
+ mallMember.getId(),
+ mallMember.getId(),
+ orderNo,
+ flowType,
+ moneyType,
+ bigDecimal,
+ StrUtil.format(moneyTypeDec,bigDecimal),
+ YesOrNoEnum.YES.getValue()
+ );
return new FebsResponse().success();
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminRunVipServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminRunVipServiceImpl.java
index a5674b7..07f46ee 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminRunVipServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminRunVipServiceImpl.java
@@ -2,6 +2,7 @@
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.common.entity.QueryRequest;
+import cc.mrbird.febs.common.enumerates.RunVipMoneyFlowTypeEnum;
import cc.mrbird.febs.common.enumerates.YesOrNoEnum;
import cc.mrbird.febs.common.exception.FebsException;
import cc.mrbird.febs.mall.entity.MallCharge;
@@ -23,6 +24,9 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
@Slf4j
@Service
@@ -113,4 +117,19 @@
IPage<MallMemberWithdraw> adminChargeListVoIPage = mallChargeMapper.selectAdminWithdrawListInPage(page, mallMemberWithdraw);
return adminChargeListVoIPage;
}
+
+ @Override
+ public List<MallMoneyFlow> allMoneyType() {
+ List<MallMoneyFlow> mallMoneyFlows = new ArrayList<>();
+ RunVipMoneyFlowTypeEnum[] values = RunVipMoneyFlowTypeEnum.values();
+ for (RunVipMoneyFlowTypeEnum value : values) {
+ MallMoneyFlow mallMoneyFlow = new MallMoneyFlow();
+ mallMoneyFlow.setType(value.getValue());
+ mallMoneyFlow.setDescription(value.getDescription());
+ mallMoneyFlow.setRemark(value.getTypeDec());
+ mallMoneyFlows.add(mallMoneyFlow);
+ }
+
+ return mallMoneyFlows;
+ }
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/MallMoneyFlowServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/MallMoneyFlowServiceImpl.java
index bd2bd99..02be53e 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/MallMoneyFlowServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/MallMoneyFlowServiceImpl.java
@@ -54,4 +54,23 @@
public void addMoneyFlow(Long memberId, BigDecimal amount, Integer type, String orderNo, Long rtMemberId, Integer flowType) {
this.addMoneyFlow(memberId, amount, type, orderNo, null, null, rtMemberId, null, flowType, null);
}
+
+ @Override
+ public void runVipMoneyFlowAdd(Long memberId, Long rtMemberId, String orderNo,Integer flowType, Integer type, BigDecimal amount, String description, Integer status) {
+ // 创建一个新的商城资金流水对象
+ MallMoneyFlow flow = new MallMoneyFlow();
+
+ // 设置资金流水的各项属性
+ flow.setMemberId(memberId);
+ flow.setRtMemberId(rtMemberId);
+ flow.setOrderNo(orderNo);
+ flow.setFlowType(flowType);
+ flow.setType(type);
+ flow.setAmount(amount);
+ flow.setDescription(description);
+ flow.setStatus(status);
+
+ // 插入资金流水记录到数据库
+ this.baseMapper.insert(flow);
+ }
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java
index 642f7f9..7f2e537 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/MemberProfitServiceImpl.java
@@ -8,15 +8,14 @@
import cc.mrbird.febs.mall.entity.*;
import cc.mrbird.febs.mall.mapper.*;
import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
-import cc.mrbird.febs.mall.service.IMallAchieveService;
import cc.mrbird.febs.mall.service.IMallMoneyFlowService;
import cc.mrbird.febs.mall.service.IMemberProfitService;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateField;
-import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor;
@@ -48,6 +47,7 @@
private final MallMoneyFlowMapper mallMoneyFlowMapper;
private final MallAchieveRecordMapper mallAchieveRecordMapper;
private final MallMemberCouponMapper mallMemberCouponMapper;
+ private final RunVipMapper runVipMapper;
@Override
@Transactional(rollbackFor = Exception.class)
@@ -494,4 +494,23 @@
}
}
}
+
+ @Override
+ public void updateMemberLevel() {
+ List<RunVip> runVips = runVipMapper.selectList(new LambdaQueryWrapper<RunVip>().orderByAsc(RunVip :: getOrderNumber));
+ RunVip runVip = runVips.get(0);
+
+ //获取过期时间小于等于当前时间,并且会员等级不是最小等级游客的所有用户
+ LambdaQueryWrapper<MallMember> mallMemberLambdaQueryWrapper = new LambdaQueryWrapper<>();
+ mallMemberLambdaQueryWrapper.le(MallMember :: getVipLevelTime,DateUtil.date());
+ mallMemberLambdaQueryWrapper.ne(MallMember :: getLevel,runVip.getVipCode());
+ List<MallMember> mallMembers = mallMemberMapper.selectList(mallMemberLambdaQueryWrapper);
+ if(CollUtil.isNotEmpty(mallMembers)){
+ mallMembers.forEach(
+ item -> {
+ mallMemberMapper.updateVipLevelTimeAndLevel(item.getId(),item.getVipLevelTime(),item.getLevel());
+ }
+ );
+ }
+ }
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/RunVipServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/RunVipServiceImpl.java
index 7204a35..9310a62 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/RunVipServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/RunVipServiceImpl.java
@@ -11,13 +11,15 @@
import cc.mrbird.febs.mall.dto.ApiGoChargeDto;
import cc.mrbird.febs.mall.dto.ApiGoChargeInfoDto;
import cc.mrbird.febs.mall.dto.ApiMemberChargeFailDto;
-import cc.mrbird.febs.mall.entity.*;
+import cc.mrbird.febs.mall.entity.MallCharge;
+import cc.mrbird.febs.mall.entity.MallMember;
+import cc.mrbird.febs.mall.entity.MallMemberPayment;
+import cc.mrbird.febs.mall.entity.RunVip;
import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper;
import cc.mrbird.febs.mall.mapper.MallChargeMapper;
import cc.mrbird.febs.mall.mapper.MallMemberPaymentMapper;
import cc.mrbird.febs.mall.mapper.RunVipMapper;
import cc.mrbird.febs.mall.service.IRunVipService;
-import cc.mrbird.febs.mall.vo.ApiChargeInfoVo;
import cc.mrbird.febs.mall.vo.ApiChargeVo;
import cc.mrbird.febs.mall.vo.ApiGoChargeVo;
import cc.mrbird.febs.mall.vo.ApiRunVipVo;
@@ -36,7 +38,6 @@
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
-import java.util.stream.Collectors;
@Slf4j
@Service
@@ -86,10 +87,23 @@
return new FebsResponse().fail().message("请先绑定你的地址");
}
- String sysAddress = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
- RunVipDataDictionaryEnum.CHARGE_SYS_ADDRESS.getType(),
- RunVipDataDictionaryEnum.CHARGE_SYS_ADDRESS.getCode()
+ //判断系统的充值地址
+ String trcType = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ RunVipDataDictionaryEnum.CHARGE_TYPE_TRC.getType(),
+ RunVipDataDictionaryEnum.CHARGE_TYPE_TRC.getCode()
).getValue();
+ String sysAddress = "";
+ if(trcType.equals(mallMemberPayment.getBankNo())){
+ sysAddress = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ RunVipDataDictionaryEnum.CHARGE_SYS_ADDRESS_TRC.getType(),
+ RunVipDataDictionaryEnum.CHARGE_SYS_ADDRESS_TRC.getCode()
+ ).getValue();
+ }else{
+ sysAddress = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ RunVipDataDictionaryEnum.CHARGE_SYS_ADDRESS_BSC.getType(),
+ RunVipDataDictionaryEnum.CHARGE_SYS_ADDRESS_BSC.getCode()
+ ).getValue();
+ }
String failMinutes = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
RunVipDataDictionaryEnum.CHARGE_SYS_FAIL_TIME.getType(),
RunVipDataDictionaryEnum.CHARGE_SYS_FAIL_TIME.getCode()
@@ -115,6 +129,7 @@
apiGoChargeVo.setAddress(mallCharge.getAddress());
apiGoChargeVo.setAmount(mallCharge.getAmount());
apiGoChargeVo.setSysAddress(mallCharge.getSysAddress());
+ apiGoChargeVo.setSysAddressType(mallCharge.getType());
/**
* 充值接口调用后,发送一个延时队列
@@ -143,23 +158,8 @@
apiGoChargeVo.setAddress(mallCharge.getAddress());
apiGoChargeVo.setAmount(mallCharge.getAmount());
apiGoChargeVo.setSysAddress(mallCharge.getSysAddress());
+ apiGoChargeVo.setSysAddressType(mallCharge.getType());
return new FebsResponse().success().data(apiGoChargeVo);
- }
-
- @Override
- public FebsResponse getChargeInfo() {
- Long memberId = LoginUserUtil.getLoginUser().getId();
- ApiChargeInfoVo apiChargeInfoVo = new ApiChargeInfoVo();
-
- String sysAddress = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
- RunVipDataDictionaryEnum.CHARGE_SYS_ADDRESS.getType(),
- RunVipDataDictionaryEnum.CHARGE_SYS_ADDRESS.getCode()
- ).getValue();
- apiChargeInfoVo.setChargeAddress(sysAddress);
- List<DataDictionaryCustom> dataDictionaryCustoms = dataDictionaryCustomMapper.selectDicByType(RunVipDataDictionaryEnum.CHARGE_TYPE_TRC.getType());
- List<String> coinTypeList = dataDictionaryCustoms.stream().map(DataDictionaryCustom::getValue).collect(Collectors.toList());
- apiChargeInfoVo.setCoinType(coinTypeList);
- return new FebsResponse().success().data(apiChargeInfoVo);
}
@Override
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiGoChargeVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiGoChargeVo.java
index 7b9ffc0..e0c197b 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/ApiGoChargeVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiGoChargeVo.java
@@ -24,4 +24,7 @@
@ApiModelProperty(value = "系统收款地址")
private String sysAddress;
+
+ @ApiModelProperty(value = "系统收款地址类型")
+ private String sysAddressType;
}
diff --git a/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html b/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html
index 08d58d3..a5464b2 100644
--- a/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html
+++ b/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html
@@ -16,7 +16,7 @@
<div class="layui-inline">
<label class="layui-form-label layui-form-label-sm">会员类型</label>
<div class="layui-input-inline">
- <select name="levelType" class="vip-level-set-level_member">
+ <select name="levelType" class="vip-level-set-level-member">
<option value="">请选择</option>
</select>
</div>
@@ -124,7 +124,7 @@
var data = res.data;
for (var k in data)
{
- $(".vip-level-set-level_member").append("<option value='" + data[k].vipCode + "'>" + data[k].vipName + "</option>");
+ $(".vip-level-set-level-member").append("<option value='" + data[k].vipCode + "'>" + data[k].vipName + "</option>");
}
layui.use('form', function () {
var form = layui.form;
diff --git a/src/main/resources/templates/febs/views/modules/mallMember/moneyFlowList.html b/src/main/resources/templates/febs/views/modules/mallMember/moneyFlowList.html
index 30223e5..3f9007c 100644
--- a/src/main/resources/templates/febs/views/modules/mallMember/moneyFlowList.html
+++ b/src/main/resources/templates/febs/views/modules/mallMember/moneyFlowList.html
@@ -8,12 +8,6 @@
<div class="layui-col-md10">
<div class="layui-form-item">
<div class="layui-inline">
- <label class="layui-form-label layui-form-label-sm">用户昵称</label>
- <div class="layui-input-inline">
- <input type="text" placeholder="用户昵称" name="name" autocomplete="off" class="layui-input">
- </div>
- </div>
- <div class="layui-inline">
<label class="layui-form-label layui-form-label-sm">手机号码</label>
<div class="layui-input-inline">
<input type="text" placeholder="手机号码" name="phone" autocomplete="off" class="layui-input">
@@ -22,30 +16,8 @@
<div class="layui-inline">
<label class="layui-form-label layui-form-label-sm">流水类型</label>
<div class="layui-input-inline">
- <select name="type">
+ <select name="type" class="money-flow-type">
<option value="">请选择</option>
-<!-- <option value="1">静态收益</option>-->
-<!-- <option value="2">直推奖</option>-->
-<!-- <option value="3">代理收益</option>-->
-<!-- <option value="4">排名收益</option>-->
-<!-- <option value="5">总监收益</option>-->
-<!-- <option value="6">社区店补</option>-->
-<!-- <option value="7">一代收益</option>-->
-<!-- <option value="8">提现</option>-->
-<!-- <option value="9">转账</option>-->
- <option value="10">余额支付</option>
- <option value="11">余额退款</option>
-<!-- <option value="12">佣金转竞猜积分</option>-->
-<!-- <option value="13">佣金转余额</option>-->
-<!-- <option value="14">竞猜积分签到</option>-->
-<!-- <option value="15">感恩奖</option>-->
- <option value="16">系统拨付</option>
-<!-- <option value="17">抽奖</option>-->
- <option value="18">充值</option>
- <option value="20">赠送金额</option>
- <option value="21">微信支付</option>
- <option value="22">微信退款</option>
-<!-- <option value="19">收益</option>-->
</select>
</div>
</div>
@@ -54,12 +26,11 @@
<div class="layui-input-inline">
<select name="flowType">
<option value="">请选择</option>
- <option value="1">余额</option>
- <option value="3">积分</option>
+ <option value="1">碳币</option>
+ <option value="2">碳积分</option>
</select>
</div>
</div>
-
<div class="layui-inline">
<label class="layui-form-label layui-form-label-sm">开始时间</label>
<div class="layui-input-inline">
@@ -120,6 +91,19 @@
form.render();
+ //(下拉框)
+ $.get(ctx + 'admin/runVip/allMoneyType', function (res) {
+ var data = res.data;
+ for (var k in data)
+ {
+ $(".money-flow-type").append("<option value='" + data[k].type + "'>" + data[k].remark + "</option>");
+ }
+ layui.use('form', function () {
+ var form = layui.form;
+ form.render();
+ });
+ });
+
// 表格初始化
initTable();
@@ -149,106 +133,21 @@
url: ctx + 'admin/mallMember/getMoneyFlowList',
totalRow : true,
cols: [[
+ {field: 'orderNo', title: '订单编号', minWidth: 150,align:'left'},
{field: 'name', title: '用户昵称', minWidth: 100,align:'left',totalRowText:"合计"},
{field: 'phone', title: '手机号码', minWidth: 150,align:'left'},
{field: 'amount', title: '金额', minWidth: 150,align:'left', totalRow:true},
- {field: 'type', title: '流水类型',
- templet: function (d) {
- if (d.flowType === 3) {
- if (d.type === 1) {
- return '<span>积分支付</span>'
- } else if (d.type === 2) {
- return '<span>购买商品获得积分</span>'
- } else if (d.type === 3) {
- return '<span>推荐下单获得积分</span>'
- } else if (d.type === 16) {
- return '<span>拨付积分</span>'
- }else{
- return '<span>-</span>'
- }
- }
- if (d.flowType === 5) {
- if (d.type === 21) {
- return '<span>微信支付</span>'
- } else if (d.type === 22) {
- return '<span>微信退款</span>'
- } else{
- return '<span>-</span>'
- }
- }
- if (d.flowType === 2) {
- if (d.type === 16) {
- return '<span>拨付积分</span>'
- }else{
- return '<span>-</span>'
- }
- }
-
- if (d.flowType === 1) {
- if (d.type === 1) {
- return '<span>静态收益</span>'
- } else if (d.type === 2) {
- return '<span>直推奖</span>'
- } else if (d.type === 3) {
- return '<span>代理收益</span>'
- } else if (d.type === 4) {
- return '<span>排名收益</span>'
- }else if (d.type === 5) {
- return '<span>总监收益</span>'
- }else if (d.type === 6) {
- return '<span>社区店补</span>'
- }else if (d.type === 7) {
- return '<span>一代收益</span>'
- }else if (d.type === 8) {
- return '<span>提现</span>'
- }else if (d.type === 9) {
- return '<span>转账</span>'
- }else if (d.type === 10) {
- return '<span>余额支付</span>'
- }else if (d.type === 11) {
- return '<span>退款</span>'
- }else if (d.type === 12) {
- return '<span>佣金转竞猜积分</span>'
- }else if (d.type === 13) {
- return '<span>佣金转余额</span>'
- }else if (d.type === 14) {
- return '<span>竞猜积分签到</span>'
- }else if (d.type === 15) {
- return '<span>感恩奖</span>'
- }else if (d.type === 16) {
- return '<span>拨付余额</span>'
- }else if (d.type === 17) {
- return '<span>抽奖</span>'
- }else if (d.type === 18) {
- return '<span>充值</span>'
- }else if (d.type === 19) {
- return '<span>收益</span>'
- }else if (d.type === 20) {
- return '<span>赠送金额</span>'
- }else if (d.type === 21) {
- return '<span>微信支付</span>'
- }else if (d.type === 22) {
- return '<span>微信退款</span>'
- }else{
- return '<span>-</span>'
- }
- }
- }, minWidth: 80,align:'center'},
+ {field: 'description', title: '流水类型', minWidth: 150,align:'left', totalRow:true},
{field: 'flowType', title: '资金类型',
templet: function (d) {
if (d.flowType === 1) {
- return '余额';
- } else if(d.flowType === 3) {
- return '积分'
+ return '碳币';
} else if(d.flowType === 2) {
- return '系统'
- } else if(d.flowType === 5) {
- return '微信'
+ return '碳积分'
} else {
return '-';
}
}, minWidth: 80,align:'center'},
- {field: 'orderNo', title: '订单编号', minWidth: 150,align:'left'},
{field: 'createdTime', title: '创建时间', minWidth: 180,align:'center'}
]]
});
@@ -265,7 +164,6 @@
return {
startTime: $searchForm.find('input[name="startTime"]').val().trim(),
endTime: $searchForm.find('input[name="endTime"]').val().trim(),
- name: $searchForm.find('input[name="name"]').val().trim(),
phone: $searchForm.find('input[name="phone"]').val().trim(),
type: $searchForm.find("select[name='type']").val(),
flowType: $searchForm.find("select[name='flowType']").val(),
--
Gitblit v1.9.1