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