src/main/java/cc/mrbird/febs/common/enumerates/FlowTypeNewEnum.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeNewEnum.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/mall/controller/ApiMallProductController.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/mall/dto/ApiGfdTransDto.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/mall/service/IApiMallProductService.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallProductServiceImpl.java | ●●●●● patch | view | raw | blame | history |
src/main/java/cc/mrbird/febs/common/enumerates/FlowTypeNewEnum.java
@@ -5,7 +5,7 @@ @Getter public enum FlowTypeNewEnum { GSD(4,"GSD"), GSD(4,"GFD"), NFT(3,"NFT"), TOKEN(2,"门票"), FCM_COIN(1,"GFA代币")// src/main/java/cc/mrbird/febs/common/enumerates/MoneyFlowTypeNewEnum.java
@@ -11,6 +11,8 @@ @Getter public enum MoneyFlowTypeNewEnum { GSD_GFA(26,"GFD兑换GFA"), GSD_NFT(25,"GFD兑换NFT"), GFA_GSD(24,"GFA兑换GFD"), NFT_GSD(23,"NFT兑换GFD"), TEAM_PERK_EQUALS_DONE(22,"平级奖励"), src/main/java/cc/mrbird/febs/mall/controller/ApiMallProductController.java
@@ -127,6 +127,13 @@ return iApiMallProductService.transGfd(transGfdDto); } @ApiOperation(value = "FCM-GFD兑换NFT,GFD兑换GFA", notes = "FCM-GFD兑换NFT,GFD兑换GFA") @PostMapping(value = "/gfdTrans") public FebsResponse gfdTrans(@RequestBody @Valid ApiGfdTransDto transGfdDto) { return iApiMallProductService.gfdTrans(transGfdDto); } @ApiOperation(value = "FCM-NFT提现", notes = "FCM-NFT提现") @PostMapping(value = "/outNFT") public FebsResponse outNFT(@RequestBody @Valid ApiOutNFTDto outNFTDto) { src/main/java/cc/mrbird/febs/mall/dto/ApiGfdTransDto.java
New file @@ -0,0 +1,30 @@ package cc.mrbird.febs.mall.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.Valid; import javax.validation.constraints.Min; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.math.BigDecimal; @Data @ApiModel(value = "ApiGfdTransDto", description = "请求类") public class ApiGfdTransDto { @Valid @NotNull(message = "数量不能为空") @Min(0) @ApiModelProperty(value = "兑换数量", example = "1") private BigDecimal cnt; @NotNull(message = "类型不能为空") @ApiModelProperty(value = "类型 1:GFD兑换NFT, 2:GFD兑换GFA", example = "1") private Integer type; @NotBlank(message = "交易密码不能为空") @ApiModelProperty(value = "交易密码", example = "1") private String tradePassword; } src/main/java/cc/mrbird/febs/mall/service/IApiMallProductService.java
@@ -41,4 +41,6 @@ FebsResponse orderBuyRecord(ApiOrderBuyInfoDto apiOrderBuyInfoDto); FebsResponse transGfd(ApiTransGfdDto transGfdDto); FebsResponse gfdTrans(ApiGfdTransDto transGfdDto); } src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallProductServiceImpl.java
@@ -767,4 +767,67 @@ } return new FebsResponse().success(); } @Override @Transactional public FebsResponse gfdTrans(ApiGfdTransDto transGfdDto) { Long memberId = LoginUserUtil.getLoginUser().getId(); BigDecimal cnt = transGfdDto.getCnt();//兑换数量 MallMember mallMember = memberMapper.selectById(memberId); String tradePassword = SecureUtil.md5(transGfdDto.getTradePassword()); Boolean aBoolean = operationPermissionMemberFrozen(memberId); if(aBoolean){ throw new FebsException("用户已冻结"); } if(!tradePassword.equals(mallMember.getTradePassword())){ throw new FebsException("请输入正确的交易密码"); } MallMemberAmount mallMemberAmount = mallMemberAmountMapper.selectByMemberId(memberId); BigDecimal gsd = mallMemberAmount.getGsd(); if(BigDecimal.ZERO.compareTo(gsd) >= 0){ throw new FebsException("积分不足"); } if(cnt.compareTo(gsd) > 0){ throw new FebsException("积分不足"); } Integer type = transGfdDto.getType(); String orderNo = MallUtils.getOrderNum("GSD"); if(1 == type){//GFD兑换NFT BigDecimal trendsNft = mallMemberAmount.getTrendsNft(); mallMemberAmount.setTrendsNft(trendsNft.add(cnt)); mallMemberAmount.setGsd(mallMemberAmount.getGsd().subtract(cnt)); mallMemberAmountMapper.updateTrendsNftAndGsdById(mallMemberAmount); iMallMoneyFlowService.addMoneyFlow( memberId, cnt, MoneyFlowTypeNewEnum.GSD_NFT.getValue(), orderNo, mallMember.getId(), FlowTypeNewEnum.GSD.getValue(), MoneyFlowTypeNewEnum.GSD_NFT.getDescrition()); } if(2 == type){//GFD兑换GFA BigDecimal fcmCntAva = mallMemberAmount.getFcmCntAva(); DataDictionaryCustom fcmPriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( DataDictionaryEnum.FCM_PRICE.getType(), DataDictionaryEnum.FCM_PRICE.getCode()); BigDecimal fcmPrice = ObjectUtil.isEmpty(fcmPriceDic) ? new BigDecimal(2) : new BigDecimal(fcmPriceDic.getValue()); BigDecimal gsdCnt = cnt.divide(fcmPrice,2,BigDecimal.ROUND_DOWN); mallMemberAmount.setFcmCntAva(fcmCntAva.add(gsdCnt)); mallMemberAmount.setGsd(mallMemberAmount.getGsd().subtract(cnt)); mallMemberAmountMapper.updateFcmCntAvaAndGsdById(mallMemberAmount); iMallMoneyFlowService.addMoneyFlow( memberId, cnt, MoneyFlowTypeNewEnum.GSD_GFA.getValue(), orderNo, mallMember.getId(), FlowTypeNewEnum.GSD.getValue(), MoneyFlowTypeNewEnum.GSD_GFA.getDescrition()); } return new FebsResponse().success(); } }