From 29bfa500bb81066ad096d3b75fab52c27e9eed7a Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Mon, 10 Apr 2023 16:58:56 +0800
Subject: [PATCH] 后台修改
---
src/main/java/cc/mrbird/febs/mall/service/IMallMemberWithdrawService.java | 3
src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java | 6 +
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 4
src/main/java/cc/mrbird/febs/common/enumerates/MemberLevelEnum.java | 32 +++-
src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java | 2
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java | 6
src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java | 7 +
src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java | 4
src/main/java/cc/mrbird/febs/mall/entity/MallMemberWithdraw.java | 6 +
src/main/java/cc/mrbird/febs/common/enumerates/PerkEnum.java | 4
src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java | 15 +
src/main/resources/templates/febs/views/modules/system/poolSet.html | 12 ++
src/main/resources/mapper/modules/MallMoneyFlowMapper.xml | 8 +
src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java | 2
src/main/java/cc/mrbird/febs/mall/dto/WithdrawalScoreDto.java | 25 ++++
src/main/java/cc/mrbird/febs/mall/dto/MoneyChargeListDto.java | 2
src/main/java/cc/mrbird/febs/mall/service/impl/MallMemberWithdrawServiceImpl.java | 98 ++++++++++++++++
src/main/java/cc/mrbird/febs/mall/vo/AdminPoolSetVo.java | 5
src/main/resources/mapper/modules/MallMemberMapper.xml | 12 -
src/main/resources/templates/febs/views/modules/mallMember/chargeFlowList.html | 27 ++++
src/main/java/cc/mrbird/febs/mall/vo/AdminMoneyChargeListVo.java | 7 +
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java | 37 +++--
src/main/java/cc/mrbird/febs/mall/vo/TeamListVo.java | 3
src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java | 2
src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java | 1
src/main/java/cc/mrbird/febs/mall/vo/MyCommissionVo.java | 29 +++-
26 files changed, 299 insertions(+), 60 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/MemberLevelEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/MemberLevelEnum.java
index 60e18fe..2361f61 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/MemberLevelEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/MemberLevelEnum.java
@@ -10,30 +10,32 @@
/**
* 董事
*/
- V_DIRECTOR("V_DIRECTOR",8),
+ V_DIRECTOR("V_DIRECTOR",8,"董事"),
/**
* v1-v6
* V1 个体户,V2 经销商,V3 区代理,V4 市代理,V5 省代理,V6 运营中心
*/
- V6("V6",7),
- V5("V5",6),
- V4("V4",5),
- V3("V3",4),
- V2("V2",3),
- V1("V1",2),
+ V6("V6",7,"运营中心"),
+ V5("V5",6,"省代理"),
+ V4("V4",5,"市代理"),
+ V3("V3",4,"区代理"),
+ V2("V2",3,"经销商"),
+ V1("V1",2,"个体户"),
//普通用户
- NORMAL("NORMAL",1),
+ NORMAL("NORMAL",1,"普通会员"),
//粉丝非会员
- FANS("FANS",0);
+ FANS("FANS",0,"粉丝");
private String type;
private Integer code;
+ private String description;
- MemberLevelEnum(String type, Integer code) {
+ MemberLevelEnum(String type, Integer code,String description) {
this.type = type;
this.code = code;
+ this.description = description;
}
public List<String> getLevelType(){
@@ -44,6 +46,16 @@
return strs;
}
+ public String getLevelDescription(String Level){
+ String description = "粉丝";
+ for (MemberLevelEnum value : MemberLevelEnum.values()) {
+ if(value.type.equals(Level)){
+ description = value.description;
+ }
+ }
+ return description;
+ }
+
public int getLevelCode(String Level){
int codeOne = 0;
for (MemberLevelEnum value : MemberLevelEnum.values()) {
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java
index 6200f0c..e170980 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeEnum.java
@@ -128,7 +128,12 @@
/**
* 代理积分补贴
*/
- AGENT_SCORE_PERK(25);
+ AGENT_SCORE_PERK(25),
+
+ /**
+ * 积分转余额
+ */
+ SCORE_TO_CASH(26);
private final int value;
diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/PerkEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/PerkEnum.java
index 3e82fc5..44c1fdd 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/PerkEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/PerkEnum.java
@@ -8,6 +8,10 @@
@Getter
public enum PerkEnum {
/**
+ * 转换的30%金额回流到积分池现金
+ */
+ WITHDRAW_SCORE_CASH_PERCENT("PERK_SET","WITHDRAW_SCORE_CASH_PERCENT"),
+ /**
* 积分池积分价格 = 积分池现金 / 积分池积分
*/
POOL_SCORE_PRICE("PERK_SET", "POOL_SCORE_PRICE"),
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java b/src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java
index 0180d0b..b909e8f 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java
@@ -97,6 +97,10 @@
PerkEnum.POOL_SCORE_PRICE.getType(),
PerkEnum.POOL_SCORE_PRICE.getCode(),
adminPoolSetVo.getPoolScorePrice());
+ commonService.updateDataDic(
+ PerkEnum.WITHDRAW_SCORE_CASH_PERCENT.getType(),
+ PerkEnum.WITHDRAW_SCORE_CASH_PERCENT.getCode(),
+ adminPoolSetVo.getWithdrawScoreCashPercent());
return new FebsResponse().success();
}
}
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java
index 3ffb084..5c8dee2 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java
@@ -111,6 +111,13 @@
return new FebsResponse().success().message("提交成功");
}
+ @ApiOperation(value = "积分转余额")
+ @PostMapping(value = "/withdrawalScore")
+ public FebsResponse withdrawalScore(@RequestBody @Validated WithdrawalScoreDto withdrawalScoreDto) {
+ mallMemberWithdrawService.withdrawalScore(withdrawalScoreDto);
+ return new FebsResponse().success().message("提交成功");
+ }
+
@ApiOperation(value = "设置收款方式")
@PostMapping(value = "/setPayment")
public FebsResponse setPayment(@RequestBody MallMemberPayment mallMemberPayment) {
@@ -131,10 +138,10 @@
return new FebsResponse().success().message("绑定成功");
}
- @ApiOperation(value = "可提现金额")
- @GetMapping(value = "/canWithdrawal")
- public FebsResponse canWithdrawal() {
- return new FebsResponse().success().data(memberService.canMoney());
+ @ApiOperation(value = "可提现金额 1:余额 2:积分")
+ @GetMapping(value = "/canWithdrawal/{type}")
+ public FebsResponse canWithdrawal(@PathVariable("type") int type) {
+ return new FebsResponse().success().data(memberService.canMoney(type));
}
@ApiOperation(value = "用户消费排名")
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java b/src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java
index 8307618..f6170b4 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ViewSystemController.java
@@ -197,6 +197,12 @@
if (poolScorePercentDic != null) {
adminPoolSetVo.setPoolScorePercent(poolScorePercentDic.getValue());
}
+ DataDictionaryCustom withdrawScoreCashPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ PerkEnum.WITHDRAW_SCORE_CASH_PERCENT.getType(),
+ PerkEnum.WITHDRAW_SCORE_CASH_PERCENT.getCode());
+ if (withdrawScoreCashPercentDic != null) {
+ adminPoolSetVo.setWithdrawScoreCashPercent(withdrawScoreCashPercentDic.getValue());
+ }
model.addAttribute("adminPoolSet", adminPoolSetVo);
return FebsUtil.view("modules/system/poolSet");
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/MoneyChargeListDto.java b/src/main/java/cc/mrbird/febs/mall/dto/MoneyChargeListDto.java
index f8cd89a..ce754e3 100644
--- a/src/main/java/cc/mrbird/febs/mall/dto/MoneyChargeListDto.java
+++ b/src/main/java/cc/mrbird/febs/mall/dto/MoneyChargeListDto.java
@@ -12,4 +12,6 @@
private String phone;
private Integer status;
+
+ private Integer type;
}
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/WithdrawalScoreDto.java b/src/main/java/cc/mrbird/febs/mall/dto/WithdrawalScoreDto.java
new file mode 100644
index 0000000..67b9e28
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/WithdrawalScoreDto.java
@@ -0,0 +1,25 @@
+package cc.mrbird.febs.mall.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "WithdrawalScoreDto", description = "接收参数类")
+public class WithdrawalScoreDto {
+
+ @Min(0)
+ @NotNull(message = "参数不能为空")
+ @ApiModelProperty(value = "数量")
+ private BigDecimal amount;
+
+ @NotBlank(message = "参数不能为空")
+ @ApiModelProperty(value = "交易密码")
+ private String tradePwd;
+
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallMemberWithdraw.java b/src/main/java/cc/mrbird/febs/mall/entity/MallMemberWithdraw.java
index aa9a6cd..ef429d2 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallMemberWithdraw.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallMemberWithdraw.java
@@ -32,4 +32,10 @@
private String withdrawNo;
private String remark;
+ //提现类型 1:余额提现 2:积分提现
+ private int type;
+
+ private BigDecimal scoreCnt;
+
+ private BigDecimal scorePrice;
}
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java
index eaa05c6..adcbeb3 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java
@@ -34,7 +34,7 @@
BigDecimal selectProfitByDateAndMemberId(Long memberId);
- BigDecimal selectCommissionIncome(@Param("type") Integer type, @Param("date") Date date, @Param("memberId") Long memebrid);
+ BigDecimal selectCommissionIncome(@Param("flowType") Integer flowType, @Param("type") Integer type, @Param("date") Date date, @Param("memberId") Long memebrid);
BigDecimal selectThankfulCommission(@Param("date") Date date, @Param("memberId") Long memberId);
}
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 d9653e6..cdcb136 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java
@@ -47,7 +47,7 @@
void bindPhone(AccountAndCodeDto accountAndCodeDto);
- BigDecimal canMoney();
+ BigDecimal canMoney(int type);
List<MallMember> findRankList(RankListDto rankListDto);
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IMallMemberWithdrawService.java b/src/main/java/cc/mrbird/febs/mall/service/IMallMemberWithdrawService.java
index 500c484..ef092c7 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IMallMemberWithdrawService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IMallMemberWithdrawService.java
@@ -1,10 +1,13 @@
package cc.mrbird.febs.mall.service;
import cc.mrbird.febs.mall.dto.WithdrawalDto;
+import cc.mrbird.febs.mall.dto.WithdrawalScoreDto;
import cc.mrbird.febs.mall.entity.MallMemberWithdraw;
import com.baomidou.mybatisplus.extension.service.IService;
public interface IMallMemberWithdrawService extends IService<MallMemberWithdraw> {
void withdrawal(WithdrawalDto withdrawalDto);
+
+ void withdrawalScore(WithdrawalScoreDto withdrawalScoreDto);
}
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 ec0abbc..2dfd91b 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,10 +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.FlowTypeEnum;
-import cc.mrbird.febs.common.enumerates.MemberLevelEnum;
-import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
+import cc.mrbird.febs.common.enumerates.*;
import cc.mrbird.febs.common.exception.FebsException;
import cc.mrbird.febs.common.utils.LoginUserUtil;
import cc.mrbird.febs.common.utils.MallUtils;
@@ -176,6 +173,7 @@
mallMoneyFlow.setStatus(2);
mallMoneyFlowMapper.updateById(mallMoneyFlow);
}
+
/**
* 调用汇聚代付
*/
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
index a79369c..194a485 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
@@ -399,7 +399,6 @@
poolCash.toString()
);
-
DataDictionaryCustom poolScorePriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
PerkEnum.POOL_SCORE_PRICE.getType(),
PerkEnum.POOL_SCORE_PRICE.getCode());
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 03e3920..a29e916 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
@@ -34,6 +34,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import java.lang.reflect.Member;
import java.math.BigDecimal;
import java.util.*;
@@ -249,7 +250,7 @@
if (payment != null) {
mallMemberVo.setHasPayment(1);
}
- mallMemberVo.setLevelName(mallMember.getLevel());
+ mallMemberVo.setLevelName(MemberLevelEnum.NORMAL.getLevelDescription(mallMember.getLevel()));
mallMemberVo.setPartner(mallMember.getPartner());
MallMemberWallet wallet = mallMemberWalletMapper.selectWalletByMemberId(mallMemberVo.getId());
mallMemberVo.setBalance(wallet.getBalance());
@@ -324,6 +325,12 @@
MallMember mallMember = this.baseMapper.selectById(memberId);
List<TeamListVo> list = this.baseMapper.selectTeamListByInviteId(mallMember.getInviteId());
+ if(CollUtil.isNotEmpty(list)){
+ for(TeamListVo teamListVo : list){
+ String levelDescription = MemberLevelEnum.NORMAL.getLevelDescription(teamListVo.getLevel());
+ teamListVo.setLevelName(levelDescription);
+ }
+ }
MyTeamVo myTeamVo = new MyTeamVo();
myTeamVo.setTeam(list);
@@ -428,16 +435,15 @@
}
@Override
- public BigDecimal canMoney() {
+ public BigDecimal canMoney(int type) {
Long memberId = LoginUserUtil.getLoginUser().getId();
MallMemberWallet wallet = mallMemberWalletMapper.selectWalletByMemberId(memberId);
- BigDecimal profit = mallMoneyFlowMapper.selectProfitByDateAndMemberId(memberId);
-
- BigDecimal canMoney = wallet.getCommission();
- if (profit != null) {
- if(canMoney.compareTo(BigDecimal.ZERO) > 0) {
- canMoney = canMoney.subtract(profit);
- }
+ BigDecimal canMoney = BigDecimal.ZERO;
+ if(1 == type){
+ canMoney = wallet.getBalance();
+ }
+ if(2 == type){
+ canMoney = wallet.getScore();
}
return canMoney;
}
@@ -478,11 +484,14 @@
}
MallMemberWallet wallet = mallMemberWalletMapper.selectWalletByMemberId(id);
- commissionVo.setCommission(wallet.getCommission());
- commissionVo.setToday(mallMoneyFlowMapper.selectCommissionIncome(1, new Date(), id));
- commissionVo.setMonth(mallMoneyFlowMapper.selectCommissionIncome(2, new Date(), id));
- commissionVo.setTotal(mallMoneyFlowMapper.selectCommissionIncome(null, null, id));
- commissionVo.setWaitCommission(BigDecimal.ZERO);
+ commissionVo.setCommissionBalance(wallet.getBalance());
+ commissionVo.setCommissionScore(wallet.getScore());
+ commissionVo.setTodayBalance(mallMoneyFlowMapper.selectCommissionIncome(1,1, new Date(), id));
+ commissionVo.setMonthBalance(mallMoneyFlowMapper.selectCommissionIncome(1,2, new Date(), id));
+ commissionVo.setTotalBalance(mallMoneyFlowMapper.selectCommissionIncome(1, null,null, id));
+ commissionVo.setTodayScore(mallMoneyFlowMapper.selectCommissionIncome(2, 1,new Date(), id));
+ commissionVo.setMonthScore(mallMoneyFlowMapper.selectCommissionIncome(2, 2,new Date(), id));
+ commissionVo.setTotalScore(mallMoneyFlowMapper.selectCommissionIncome(2, null,null, id));
return commissionVo;
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
index bc1e7d1..fb811d4 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -365,7 +365,7 @@
if (orderInfo.getOrderType() != 2) {
throw new FebsException("非积分订单,无法使用积分支付");
}
- payResultStr = balancePay(orderInfo, payOrderDto.getTradePwd(), "prizeScore");
+ payResultStr = balancePay(orderInfo, payOrderDto.getTradePwd(), "score");
orderInfo.setPayOrderNo(orderInfo.getOrderNo());
orderInfo.setPayMethod("积分支付");
@@ -373,7 +373,7 @@
orderInfo.setPayTime(new Date());
orderInfo.setPayResult("1");
- mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.PRIZE_SCORE.getValue());
+ mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.SCORE.getValue());
break;
case "5":
// AgreementSignDto agreementSignDto = new AgreementSignDto();
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/MallMemberWithdrawServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/MallMemberWithdrawServiceImpl.java
index 9a715bc..f67580b 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/MallMemberWithdrawServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/MallMemberWithdrawServiceImpl.java
@@ -3,10 +3,13 @@
import cc.mrbird.febs.common.enumerates.DataDictionaryEnum;
import cc.mrbird.febs.common.enumerates.FlowTypeEnum;
import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
+import cc.mrbird.febs.common.enumerates.PerkEnum;
import cc.mrbird.febs.common.exception.FebsException;
+import cc.mrbird.febs.common.utils.AppContants;
import cc.mrbird.febs.common.utils.LoginUserUtil;
import cc.mrbird.febs.common.utils.MallUtils;
import cc.mrbird.febs.mall.dto.WithdrawalDto;
+import cc.mrbird.febs.mall.dto.WithdrawalScoreDto;
import cc.mrbird.febs.mall.entity.*;
import cc.mrbird.febs.mall.mapper.*;
import cc.mrbird.febs.mall.service.IApiMallMemberService;
@@ -90,6 +93,7 @@
withdraw.setStatus(1);
withdraw.setAmountFee(serviceFee.multiply(withdrawalDto.getAmount()));
withdraw.setWtihdrawTypeId(mallMemberBank.getId());
+ withdraw.setType(1);
this.baseMapper.insert(withdraw);
mallMemberService.addMoneyFlow(memberId,
@@ -102,4 +106,98 @@
1,
FlowTypeEnum.BALANCE.getValue());
}
+
+ @Override
+ public void withdrawalScore(WithdrawalScoreDto withdrawalScoreDto) {
+ Long memberId = LoginUserUtil.getLoginUser().getId();
+ MallMember mallMember = mallMemberService.getById(memberId);
+ if (StrUtil.isBlank(mallMember.getTradePassword())) {
+ throw new FebsException("未设置支付密码");
+ }
+
+ if (!mallMember.getTradePassword().equals(SecureUtil.md5(withdrawalScoreDto.getTradePwd()))) {
+ throw new FebsException("支付密码错误");
+ }
+
+ DataDictionaryCustom poolScorePriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(PerkEnum.POOL_SCORE_PRICE.getType(),
+ PerkEnum.POOL_SCORE_PRICE.getCode());
+ //积分价格
+ BigDecimal poolScorePrice = new BigDecimal(poolScorePriceDic.getValue());
+
+ DataDictionaryCustom withDrawScoreCashPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(PerkEnum.WITHDRAW_SCORE_CASH_PERCENT.getType(),
+ PerkEnum.WITHDRAW_SCORE_CASH_PERCENT.getCode());
+ //提现的30%金额回流到积分池现金
+ BigDecimal withDrawScoreCashPercent = new BigDecimal(withDrawScoreCashPercentDic.getValue()).multiply(AppContants.PERCENTAGE);
+
+ MallMemberWallet wallet = mallMemberWalletMapper.selectWalletByMemberId(memberId);
+ if(wallet.getScore().compareTo(BigDecimal.ZERO) <= 0){
+ throw new FebsException("积分不足");
+ }
+ if(withdrawalScoreDto.getAmount().compareTo(wallet.getScore()) > 0) {
+ throw new FebsException("积分不足");
+ }
+ //积分减少
+ walletService.reduce(withdrawalScoreDto.getAmount(), memberId, "score");
+ String orderNo = MallUtils.getOrderNum("W");
+
+ BigDecimal scoreAmount = withdrawalScoreDto.getAmount().multiply(poolScorePrice).setScale(2, BigDecimal.ROUND_DOWN);
+ BigDecimal amountFee = scoreAmount.multiply(withDrawScoreCashPercent).setScale(2,BigDecimal.ROUND_DOWN);
+ //余额增加
+ walletService.add(scoreAmount.subtract(amountFee), memberId, "balance");
+
+ MallMemberWithdraw withdraw = new MallMemberWithdraw();
+ withdraw.setWithdrawNo(orderNo);
+ withdraw.setMemberId(memberId);
+ withdraw.setAmount(scoreAmount);
+ withdraw.setStatus(2);
+ withdraw.setAmountFee(amountFee);
+ withdraw.setType(2);
+ withdraw.setScoreCnt(withdrawalScoreDto.getAmount());
+ withdraw.setScorePrice(poolScorePrice);
+ this.baseMapper.insert(withdraw);
+
+ mallMemberService.addMoneyFlow(memberId,
+ withdrawalScoreDto.getAmount().negate(),
+ MoneyFlowTypeEnum.SCORE_TO_CASH.getValue(),
+ orderNo,
+ null,
+ null,
+ null,
+ 1,
+ FlowTypeEnum.SCORE.getValue());
+
+ //卖出规则:卖出即销毁减少,70%现金到帐.30%回流底池,意味卖出后全网积分变少了,回流的30%到池子后.积分的价格变高了
+ DataDictionaryCustom poolCashDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ PerkEnum.POOL_CASH.getType(),
+ PerkEnum.POOL_CASH.getCode()
+ );
+ BigDecimal poolCash = new BigDecimal(poolCashDic.getValue());
+ poolCash = poolCash.add(amountFee);
+ dataDictionaryCustomMapper.updateDicValueByTypeAndCode(
+ PerkEnum.POOL_CASH.getType(),
+ PerkEnum.POOL_CASH.getCode(),
+ poolCash.toString()
+ );
+
+ DataDictionaryCustom poolScoreDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ PerkEnum.POOL_SCORE.getType(),
+ PerkEnum.POOL_SCORE.getCode()
+ );
+ BigDecimal poolScore = new BigDecimal(poolScoreDic.getValue());
+ poolScore = poolScore.subtract(withdraw.getScoreCnt());
+ dataDictionaryCustomMapper.updateDicValueByTypeAndCode(
+ PerkEnum.POOL_SCORE.getType(),
+ PerkEnum.POOL_SCORE.getCode(),
+ poolScore.toString()
+ );
+
+ if(poolScore.compareTo(BigDecimal.ZERO) > 0 && poolCash.compareTo(BigDecimal.ZERO) > 0){
+ BigDecimal divide = poolCash.divide(poolScore, 2, BigDecimal.ROUND_DOWN);
+ dataDictionaryCustomMapper.updateDicValueByTypeAndCode(
+ PerkEnum.POOL_SCORE_PRICE.getType(),
+ PerkEnum.POOL_SCORE_PRICE.getCode(),
+ divide.toString()
+ );
+ }
+ }
}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminMoneyChargeListVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminMoneyChargeListVo.java
index 49df3af..7e7d16a 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/AdminMoneyChargeListVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminMoneyChargeListVo.java
@@ -29,5 +29,12 @@
private String phone;
private String bindPhone;
+
private String remark;
+
+ private Integer type;
+
+ private BigDecimal scoreCnt;
+
+ private BigDecimal scorePrice;
}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminPoolSetVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminPoolSetVo.java
index 64bb6bc..9255102 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/AdminPoolSetVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminPoolSetVo.java
@@ -32,4 +32,9 @@
* 套餐进去积分池积分比例
*/
private String poolScorePercent;
+
+ /**
+ * 转换的30%金额回流到积分池现金
+ */
+ private String withdrawScoreCashPercent;
}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java b/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java
index 73cc655..14239a4 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java
@@ -66,7 +66,7 @@
@ApiModelProperty(value = "累计消费")
private BigDecimal totalCost;
- @ApiModelProperty(value = "赠送积分")
+ @ApiModelProperty(value = "积分")
private BigDecimal score;
@ApiModelProperty(value = "抽奖积分")
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/MyCommissionVo.java b/src/main/java/cc/mrbird/febs/mall/vo/MyCommissionVo.java
index 3833469..7ffe234 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/MyCommissionVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/MyCommissionVo.java
@@ -32,20 +32,29 @@
@ApiModelProperty(value = "推荐人头像")
private String referrerAvatar;
- @ApiModelProperty(value = "可提现")
- private BigDecimal commission;
+ @ApiModelProperty(value = "可提现余额")
+ private BigDecimal commissionBalance;
- @ApiModelProperty(value = "待结算")
- private BigDecimal waitCommission;
+ @ApiModelProperty(value = "可提现积分")
+ private BigDecimal commissionScore;
- @ApiModelProperty(value = "本日收入")
- private BigDecimal today;
+ @ApiModelProperty(value = "本日收入余额")
+ private BigDecimal todayBalance;
- @ApiModelProperty(value = "本月收入")
- private BigDecimal month;
+ @ApiModelProperty(value = "本月收入余额")
+ private BigDecimal monthBalance;
- @ApiModelProperty(value = "累计收入")
- private BigDecimal total;
+ @ApiModelProperty(value = "累计收入余额")
+ private BigDecimal totalBalance;
+
+ @ApiModelProperty(value = "本日收入积分")
+ private BigDecimal todayScore;
+
+ @ApiModelProperty(value = "本月收入积分")
+ private BigDecimal monthScore;
+
+ @ApiModelProperty(value = "累计收入积分")
+ private BigDecimal totalScore;
}
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/TeamListVo.java b/src/main/java/cc/mrbird/febs/mall/vo/TeamListVo.java
index d92a485..1658346 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/TeamListVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/TeamListVo.java
@@ -48,6 +48,9 @@
private BigDecimal prizeScore;
@ApiModelProperty(value = "用户等级")
+ private String level;
+
+ @ApiModelProperty(value = "用户等级")
private String levelName;
}
diff --git a/src/main/resources/mapper/modules/MallMemberMapper.xml b/src/main/resources/mapper/modules/MallMemberMapper.xml
index 5f36eb1..6dbbd6c 100644
--- a/src/main/resources/mapper/modules/MallMemberMapper.xml
+++ b/src/main/resources/mapper/modules/MallMemberMapper.xml
@@ -83,23 +83,21 @@
a.name,
a.phone,
a.invite_id,
+ a.level,
2 isCurrent,
a.created_time,
p.prize_score,
- u.description levelName,
(select sum(e.amount)
- from mall_order_info e
+ from mall_achieve_record e
inner join mall_member b on e.member_id=b.ID
- inner join mall_order_item c on e.id = c.order_id -- and c.is_normal=2
- where e.status in (2, 3, 4) and e.order_type=1 and (b.invite_id=a.invite_id or b.referrer_id=a.invite_id)) amount,
+ where (b.invite_id=a.invite_id or b.referrer_id=a.invite_id)) amount,
(select count(1) from mall_member e
inner join mall_order_info b on e.id=b.member_id and b.status in (2, 3, 4)
where find_in_set(a.invite_id, e.referrer_ids)) orderCnt,
(select count(1) from mall_member x where find_in_set(a.invite_id, x.referrer_ids)) cnt
from mall_member a
- inner join mall_member_wallet p on a.id=p.member_id
- left join data_dictionary_custom u on a.level=u.code and u.type='AGENT_LEVEL'
- where a.referrer_id=#{inviteId}
+ inner join mall_member_wallet p on a.id = p.member_id
+ where a.referrer_id = #{inviteId}
</select>
<select id="selectOwnOrderAmountByInviteId" resultType="java.math.BigDecimal">
diff --git a/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml b/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
index 89c4558..32503ab 100644
--- a/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
+++ b/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
@@ -75,6 +75,9 @@
a.withdraw_no withdrawNo,
a.remark remark,
a.status status,
+ a.type type,
+ a.score_cnt scoreCnt,
+ a.score_price scorePrice,
b.name,
b.bind_phone bindPhone,
b.phone
@@ -90,6 +93,9 @@
</if>
<if test="record.status!=null and record.status!=''">
and a.status = #{record.status}
+ </if>
+ <if test="record.type!=null and record.type!=''">
+ and a.type = #{record.type}
</if>
</if>
</where>
@@ -116,7 +122,7 @@
<select id="selectCommissionIncome" resultType="java.math.BigDecimal">
select ifnull(sum(amount),0) from mall_money_flow
- where flow_type =4 and type in (1,2,3,4,5,6,7,15,16,17) and member_id=#{memberId}
+ where flow_type = #{flowType} and member_id = #{memberId}
<if test="type == 1">
and date_format(created_time, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d')
</if>
diff --git a/src/main/resources/templates/febs/views/modules/mallMember/chargeFlowList.html b/src/main/resources/templates/febs/views/modules/mallMember/chargeFlowList.html
index a73e35b..02ce73e 100644
--- a/src/main/resources/templates/febs/views/modules/mallMember/chargeFlowList.html
+++ b/src/main/resources/templates/febs/views/modules/mallMember/chargeFlowList.html
@@ -30,6 +30,16 @@
</select>
</div>
</div>
+ <div class="layui-inline">
+ <label class="layui-form-label">类型:</label>
+ <div class="layui-input-inline">
+ <select name="type">
+ <option value="">请选择</option>
+ <option value="1">余额提现</option>
+ <option value="2">积分兑换</option>
+ </select>
+ </div>
+ </div>
</div>
</div>
<div class="layui-col-md2 layui-col-sm12 layui-col-xs12 table-action-area">
@@ -125,10 +135,20 @@
{field: 'withdrawNo', title: '编号', minWidth: 100,align:'left', totalRowText: '合计:'},
{field: 'name', title: '名称', minWidth: 100,align:'left'},
{field: 'phone', title: '账号', minWidth: 150,align:'left'},
- // {field: 'bindPhone', title: '手机号', minWidth: 150,align:'left'},
+ {field: 'type', title: '类型',
+ templet: function (d) {
+ if (d.type === 1) {
+ return '<span style="color:green;">余额提现</span>'
+ } else if (d.type === 2) {
+ return '<span style="color:blue;">积分兑换</span>'
+ } else{
+ return ''
+ }
+ }, minWidth: 80,align:'center'},
{field: 'amount', title: '金额', minWidth: 150,align:'left',totalRow: '{{= parseInt(d.amount) }}'},
{field: 'amountFee', title: '手续费', minWidth: 150,align:'left',totalRow: '{{= parseInt(d.amountFee) }}'},
- // {field: 'remark', title: '错误信息', minWidth: 150,align:'left'},
+ {field: 'scoreCnt', title: '数量', minWidth: 80,align:'left',totalRow: '{{= parseInt(d.scoreCnt) }}'},
+ {field: 'scorePrice', title: '价格', minWidth: 80,align:'left',totalRow: '{{= parseInt(d.scorePrice) }}'},
{field: 'status', title: '状态',
templet: function (d) {
if (d.status === 1) {
@@ -149,7 +169,7 @@
+'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="chargeDisagree" shiro:hasPermission="user:update">拒绝</button>'
+'<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="paymentInfo" shiro:hasPermission="user:update">查看收款方式</button>'
}else{
- return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="paymentInfo" shiro:hasPermission="user:update">查看收款方式</button>'
+ return ''
}
},minWidth: 300,align:'center'}
]]
@@ -162,6 +182,7 @@
name: $searchForm.find('input[name="name"]').val().trim(),
phone: $searchForm.find('input[name="phone"]').val().trim(),
status: $searchForm.find("select[name='status']").val(),
+ type: $searchForm.find("select[name='type']").val(),
};
}
diff --git a/src/main/resources/templates/febs/views/modules/system/poolSet.html b/src/main/resources/templates/febs/views/modules/system/poolSet.html
index 0ffbf7b..958ef7c 100644
--- a/src/main/resources/templates/febs/views/modules/system/poolSet.html
+++ b/src/main/resources/templates/febs/views/modules/system/poolSet.html
@@ -52,6 +52,17 @@
<div class="layui-form-mid layui-word-aux">%,进入积分池。</div>
</div>
</div>
+ <blockquote class="layui-elem-quote blue-border">积分转换比例设置(转换后,积分池【积分】减少,积分池【现金】增加)</blockquote>
+ <div class="layui-form-item">
+ <div class="layui-inline">
+ <label class="layui-form-label febs-form-item-require">积分:</label>
+ <div class="layui-form-mid layui-word-aux">每次转换积分数量乘积分当前价格后的:</div>
+ <div class="layui-input-inline">
+ <input type="text" name="withdrawScoreCashPercent" lay-verify="required" placeholder="请输入数字" autocomplete="off" class="layui-input">
+ </div>
+ <div class="layui-form-mid layui-word-aux">%,进入积分现金池。</div>
+ </div>
+ </div>
</div>
<div class="layui-card-footer">
@@ -95,6 +106,7 @@
"poolScore": adminPoolSet.poolScore,
"poolScorePrice": adminPoolSet.poolScorePrice,
"poolCashPercent": adminPoolSet.poolCashPercent,
+ "withdrawScoreCashPercent": adminPoolSet.withdrawScoreCashPercent,
"poolScorePercent": adminPoolSet.poolScorePercent
});
}
--
Gitblit v1.9.1