From 9ee5d996a6537121aad58c46adb066c82381fa1c Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Thu, 24 Feb 2022 15:31:58 +0800 Subject: [PATCH] 20222223 --- src/main/resources/mapper/walletCoinOrder/ZhiYaRecordDao.xml | 22 ++ src/main/java/com/xcong/excoin/modules/coin/parameter/vo/UsdtToGusdVo.java | 26 +++ src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java | 233 ++++++++++++++++++++-------- src/main/java/com/xcong/excoin/modules/coin/parameter/vo/ZhiyaInfoVo.java | 49 ++++++ src/main/java/com/xcong/excoin/modules/coin/dao/MemberAccountMoneyChangeDao.java | 3 src/main/java/com/xcong/excoin/modules/coin/service/CoinService.java | 10 + src/main/resources/i18n/messages_en_US.properties | 5 src/main/java/com/xcong/excoin/modules/coin/dao/ZhiYaRecordDao.java | 12 + src/main/java/com/xcong/excoin/modules/coin/parameter/dto/ShuhuiGusdDto.java | 4 src/main/resources/i18n/messages_zh_CN.properties | 5 src/main/java/com/xcong/excoin/modules/coin/controller/CoinController.java | 46 ++++- src/main/java/com/xcong/excoin/modules/coin/parameter/vo/MemberGusdInfoVo.java | 34 ++++ src/main/java/com/xcong/excoin/modules/coin/parameter/dto/UsdtToGusdDto.java | 6 src/main/resources/mapper/member/MemberAccountMoneyChangeDao.xml | 13 + src/main/java/com/xcong/excoin/common/enumerates/MemberWalletCoinEnum.java | 1 15 files changed, 387 insertions(+), 82 deletions(-) diff --git a/src/main/java/com/xcong/excoin/common/enumerates/MemberWalletCoinEnum.java b/src/main/java/com/xcong/excoin/common/enumerates/MemberWalletCoinEnum.java index 39f42f6..116a68b 100644 --- a/src/main/java/com/xcong/excoin/common/enumerates/MemberWalletCoinEnum.java +++ b/src/main/java/com/xcong/excoin/common/enumerates/MemberWalletCoinEnum.java @@ -18,6 +18,7 @@ CONTENTFROMAGENT("0005","由代理账户转入"), ZHIYATOGUSD("0006","兑换GUSD"), + ZHIYATOUSDT("0007","兑换USDT"), WALLETCOINCODE("USDT", "USDT"), WALLETGUSDCOINCODE("GUSD", "GUSD"), diff --git a/src/main/java/com/xcong/excoin/modules/coin/controller/CoinController.java b/src/main/java/com/xcong/excoin/modules/coin/controller/CoinController.java index 0cfeb74..94e5eb3 100644 --- a/src/main/java/com/xcong/excoin/modules/coin/controller/CoinController.java +++ b/src/main/java/com/xcong/excoin/modules/coin/controller/CoinController.java @@ -6,13 +6,7 @@ import javax.validation.Valid; import com.xcong.excoin.modules.coin.parameter.dto.*; -import com.xcong.excoin.modules.coin.parameter.vo.AllWalletCoinVo; -import com.xcong.excoin.modules.coin.parameter.vo.MemberAccountMoneyChangeInfoVo; -import com.xcong.excoin.modules.coin.parameter.vo.MemberAgentIntoInfoVo; -import com.xcong.excoin.modules.coin.parameter.vo.MemberWalletAgentInfoVo; -import com.xcong.excoin.modules.coin.parameter.vo.MemberWalletCoinInfoVo; -import com.xcong.excoin.modules.coin.parameter.vo.MemberWalletCoinVo; -import com.xcong.excoin.modules.coin.parameter.vo.MemberWalletContractInfoVo; +import com.xcong.excoin.modules.coin.parameter.vo.*; import io.swagger.annotations.*; import org.springframework.web.bind.annotation.GetMapping; @@ -197,6 +191,16 @@ } /** + * 获取GUSD账户信息 + */ + @ApiOperation(value="获取GUSD账户信息", notes="获取GUSD账户信息") + @ApiResponses({@ApiResponse( code = 200, message = "success", response = MemberGusdInfoVo.class)}) + @GetMapping(value="/findMemberGusdInfo") + public Result findMemberGusdInfo() { + return coinService.findMemberGusdInfo(); + } + + /** * USDT兌換成GUSD * @return */ @@ -204,7 +208,19 @@ @PostMapping(value="/usdtToGusd") public Result usdtToGusd(@RequestBody @Valid UsdtToGusdDto usdtToGusdDto) { BigDecimal balance = usdtToGusdDto.getBalance(); - return coinService.usdtToGusd(balance); + Integer type = usdtToGusdDto.getType(); + return coinService.usdtToGusd(balance,type); + } + + /** + * 获取兌換GUSD记录 + * @return + */ + @ApiOperation(value="获取兌換GUSD记录", notes="获取兌換GUSD记录") + @ApiResponses({@ApiResponse( code = 200, message = "success", response = UsdtToGusdVo.class)}) + @PostMapping(value="/getusdtToGusdRecords") + public Result getusdtToGusdRecords(@RequestBody @Valid RecordsPageDto recordsPageDto) { + return coinService.getusdtToGusdRecords(recordsPageDto); } /** @@ -218,13 +234,25 @@ } /** + * 获取质押GUSD记录 + * @return + */ + @ApiOperation(value="获取质押GUSD记录", notes="获取质押GUSD记录") + @ApiResponses({@ApiResponse( code = 200, message = "success", response = ZhiyaInfoVo.class)}) + @PostMapping(value="/getZhiyaRecords") + public Result getZhiyaRecords(@RequestBody @Valid RecordsPageDto recordsPageDto) { + return coinService.getZhiyaRecords(recordsPageDto); + } + + /** * 赎回GUSD */ @ApiOperation(value="赎回GUSD", notes="赎回GUSD") @PostMapping(value="/shuhuiGusd") public Result shuhuiGusd(@RequestBody @Valid ShuhuiGusdDto shuhuiGusdDto) { BigDecimal balance = shuhuiGusdDto.getBalance(); - return coinService.shuhuiGusd(balance); + Long id = shuhuiGusdDto.getId(); + return coinService.shuhuiGusd(balance,id); } diff --git a/src/main/java/com/xcong/excoin/modules/coin/dao/MemberAccountMoneyChangeDao.java b/src/main/java/com/xcong/excoin/modules/coin/dao/MemberAccountMoneyChangeDao.java index 2319534..70cfaea 100644 --- a/src/main/java/com/xcong/excoin/modules/coin/dao/MemberAccountMoneyChangeDao.java +++ b/src/main/java/com/xcong/excoin/modules/coin/dao/MemberAccountMoneyChangeDao.java @@ -2,6 +2,8 @@ import java.util.List; +import com.xcong.excoin.modules.coin.parameter.vo.UsdtToGusdVo; +import com.xcong.excoin.modules.coin.parameter.vo.ZhiyaInfoVo; import org.apache.ibatis.annotations.Param; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -32,4 +34,5 @@ IPage<MemberAccountMoneyChange> selectWalletAgentIntoRecordsByMemIdTypeSymbol(Page<OrderCoinsDealEntity> page, @Param("record")MemberAccountMoneyChange memberAccountMoneyChange); + IPage<UsdtToGusdVo> selectByMemberIdInPage(Page<UsdtToGusdVo> page, @Param("record")MemberAccountMoneyChange memberAccountMoneyChange); } diff --git a/src/main/java/com/xcong/excoin/modules/coin/dao/ZhiYaRecordDao.java b/src/main/java/com/xcong/excoin/modules/coin/dao/ZhiYaRecordDao.java index 45f45be..26dd1de 100644 --- a/src/main/java/com/xcong/excoin/modules/coin/dao/ZhiYaRecordDao.java +++ b/src/main/java/com/xcong/excoin/modules/coin/dao/ZhiYaRecordDao.java @@ -1,13 +1,25 @@ package com.xcong.excoin.modules.coin.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.xcong.excoin.modules.coin.entity.OrderCoinsEntity; +import com.xcong.excoin.modules.coin.entity.ZhiYaEntity; import com.xcong.excoin.modules.coin.entity.ZhiYaRecordEntity; +import com.xcong.excoin.modules.coin.parameter.vo.ZhiyaInfoVo; import org.apache.ibatis.annotations.Param; + +import java.util.List; public interface ZhiYaRecordDao extends BaseMapper<ZhiYaRecordEntity> { long getOrderCountByToday(@Param("now")String now, @Param("tomorrow") String tomorrow); ZhiYaRecordEntity selectByMemberIdAndOrderStatus(@Param("memberId")Long memberId,@Param("orderStatus") Integer orderStatus); + + ZhiYaRecordEntity selectByIdAndMemberId(@Param("id") Long id,@Param("memberId")Long memberId); + + List<ZhiyaInfoVo> selectByMemberId(@Param("memberId")Long memberId); + + IPage<ZhiyaInfoVo> selectByMemberIdInPage(Page<ZhiyaInfoVo> page, @Param("record") ZhiYaEntity zhiya); } diff --git a/src/main/java/com/xcong/excoin/modules/coin/parameter/dto/ShuhuiGusdDto.java b/src/main/java/com/xcong/excoin/modules/coin/parameter/dto/ShuhuiGusdDto.java index 5231c35..6a7bcad 100644 --- a/src/main/java/com/xcong/excoin/modules/coin/parameter/dto/ShuhuiGusdDto.java +++ b/src/main/java/com/xcong/excoin/modules/coin/parameter/dto/ShuhuiGusdDto.java @@ -11,6 +11,10 @@ @ApiModel(value = "ShuhuiGusdDto", description = "参数接收类") public class ShuhuiGusdDto { + @NotNull(message = "不能为空") + @ApiModelProperty(value = "ID", example = "1") + private Long id; + @NotNull(message = "金额不能为空") @ApiModelProperty(value = "金额", example = "100") private BigDecimal balance; diff --git a/src/main/java/com/xcong/excoin/modules/coin/parameter/dto/UsdtToGusdDto.java b/src/main/java/com/xcong/excoin/modules/coin/parameter/dto/UsdtToGusdDto.java index 3640770..43efc70 100644 --- a/src/main/java/com/xcong/excoin/modules/coin/parameter/dto/UsdtToGusdDto.java +++ b/src/main/java/com/xcong/excoin/modules/coin/parameter/dto/UsdtToGusdDto.java @@ -15,8 +15,8 @@ @ApiModelProperty(value = "划转金额", example = "100") private BigDecimal balance; - @NotNull(message = "币种不能为空") - @ApiModelProperty(value = "币种", example = "USDT") - private String symbol; + @NotNull(message = "转换类型 1:USDT转GUSD 2GUSD转USDT") + @ApiModelProperty(value = "币种", example = "1") + private Integer type; } diff --git a/src/main/java/com/xcong/excoin/modules/coin/parameter/vo/MemberGusdInfoVo.java b/src/main/java/com/xcong/excoin/modules/coin/parameter/vo/MemberGusdInfoVo.java new file mode 100644 index 0000000..270b370 --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/coin/parameter/vo/MemberGusdInfoVo.java @@ -0,0 +1,34 @@ +package com.xcong.excoin.modules.coin.parameter.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class MemberGusdInfoVo { + + /** + * 用户Id + */ + @ApiModelProperty(value = "用户Id") + private Long memberId; + + /** + * 可用余额 + */ + @ApiModelProperty(value = "可用余额") + private BigDecimal availableBalance; + + /** + * 总金额 + */ + @ApiModelProperty(value = "总金额") + private BigDecimal totalBalance; + + /** + * 冻结金额 + */ + @ApiModelProperty(value = "冻结金额") + private BigDecimal frozenBalance; +} diff --git a/src/main/java/com/xcong/excoin/modules/coin/parameter/vo/UsdtToGusdVo.java b/src/main/java/com/xcong/excoin/modules/coin/parameter/vo/UsdtToGusdVo.java new file mode 100644 index 0000000..0d721e8 --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/coin/parameter/vo/UsdtToGusdVo.java @@ -0,0 +1,26 @@ +package com.xcong.excoin.modules.coin.parameter.vo; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@ApiModel(value = "UsdtToGusdVo", description = "返回参数类") +public class UsdtToGusdVo { + + private Long memberId; + + /** + * 金额 + */ + private BigDecimal amount; + /** + * 记录内容 + */ + private String content; + /** + * 状态【0:待审核 1:成功2:失败】 + */ + private int status; +} diff --git a/src/main/java/com/xcong/excoin/modules/coin/parameter/vo/ZhiyaInfoVo.java b/src/main/java/com/xcong/excoin/modules/coin/parameter/vo/ZhiyaInfoVo.java new file mode 100644 index 0000000..c10007a --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/coin/parameter/vo/ZhiyaInfoVo.java @@ -0,0 +1,49 @@ +package com.xcong.excoin.modules.coin.parameter.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +@ApiModel(value = "ZhiyaInfoVo", description = "返回参数类") +public class ZhiyaInfoVo { + + private Long id; + + /** + * 会员ID + */ + @ApiModelProperty(value = "会员ID") + private Long memberId; + /** + * 编号 + */ + @ApiModelProperty(value = "编号") + private String orderNo; + /** + * 币种 + */ + @ApiModelProperty(value = "币种") + private String symbol; + /** + * 委托量 + */ + @ApiModelProperty(value = "数量") + private BigDecimal zhiyaCnt; + /** + * 状态 1:生效中 2:已赎回 + */ + @ApiModelProperty(value = "状态 1:生效中 2:已赎回") + private Integer orderStatus; + /** + * 生效日期 + */ + @ApiModelProperty(value = "生效日期") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date effectDate; + +} diff --git a/src/main/java/com/xcong/excoin/modules/coin/service/CoinService.java b/src/main/java/com/xcong/excoin/modules/coin/service/CoinService.java index bf00adf..c5e5e96 100644 --- a/src/main/java/com/xcong/excoin/modules/coin/service/CoinService.java +++ b/src/main/java/com/xcong/excoin/modules/coin/service/CoinService.java @@ -42,9 +42,15 @@ void updateWalletBalance(@Param("id") Long id, @Param("availableBalance")BigDecimal availableBalance,@Param("totalBalance")BigDecimal totalBalance, @Param("frozenBalance")BigDecimal frozenBalance); - Result usdtToGusd(BigDecimal balance); + Result usdtToGusd(BigDecimal balance,Integer type); Result zhiYaGusd(BigDecimal balance); - Result shuhuiGusd(BigDecimal balance); + Result shuhuiGusd(BigDecimal balance,Long id); + + Result findMemberGusdInfo(); + + Result getZhiyaRecords(RecordsPageDto recordsPageDto); + + Result getusdtToGusdRecords(RecordsPageDto recordsPageDto); } diff --git a/src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java b/src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java index bffd942..54eed4f 100644 --- a/src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java +++ b/src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java @@ -11,6 +11,7 @@ import com.xcong.excoin.modules.coin.dao.ZhiYaRecordDao; import com.xcong.excoin.modules.coin.entity.ZhiYaEntity; import com.xcong.excoin.modules.coin.entity.ZhiYaRecordEntity; +import com.xcong.excoin.modules.coin.parameter.vo.*; import com.xcong.excoin.modules.platform.entity.PlatformCnyUsdtExchangeEntity; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -27,13 +28,6 @@ import com.xcong.excoin.modules.coin.entity.OrderCoinsDealEntity; import com.xcong.excoin.modules.coin.mapper.MemberAccountMoneyChangeMapper; import com.xcong.excoin.modules.coin.parameter.dto.RecordsPageDto; -import com.xcong.excoin.modules.coin.parameter.vo.AllWalletCoinVo; -import com.xcong.excoin.modules.coin.parameter.vo.MemberAccountMoneyChangeInfoVo; -import com.xcong.excoin.modules.coin.parameter.vo.MemberAgentIntoInfoVo; -import com.xcong.excoin.modules.coin.parameter.vo.MemberWalletAgentInfoVo; -import com.xcong.excoin.modules.coin.parameter.vo.MemberWalletCoinInfoVo; -import com.xcong.excoin.modules.coin.parameter.vo.MemberWalletCoinVo; -import com.xcong.excoin.modules.coin.parameter.vo.MemberWalletContractInfoVo; import com.xcong.excoin.modules.coin.service.CoinService; import com.xcong.excoin.modules.member.dao.MemberWalletAgentDao; import com.xcong.excoin.modules.member.dao.MemberWalletCoinDao; @@ -60,8 +54,6 @@ @Resource MemberWalletCoinDao memberWalletCoinDao; @Resource - ZhiYaDao zhiYaDao; - @Resource MemberWalletContractDao memberWalletContractDao; @Resource MemberAccountMoneyChangeDao memberAccountMoneyChangeDao; @@ -69,6 +61,8 @@ MemberWalletAgentDao memberWalletAgentDao; @Resource ZhiYaRecordDao zhiYaRecordDao; + @Resource + ZhiYaDao zhiYaDao; @Resource RedisUtils redisUtils; @@ -618,59 +612,111 @@ } @Override - public Result usdtToGusd(BigDecimal balance) { + public Result usdtToGusd(BigDecimal balance,Integer type) { //获取用户ID Long memberId = LoginUserUtils.getAppLoginUser().getId(); if (balance.compareTo(BigDecimal.ZERO) <= 0) { return Result.fail(MessageSourceUtils.getString("member_service_0004")); } + if(1 == type){ + // 扣币 + String walletCode = MemberWalletCoinEnum.WALLETCOINCODE.getValue(); + MemberWalletCoinEntity memberWalletCoinEntity = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, walletCode); + BigDecimal availableBalance = memberWalletCoinEntity.getAvailableBalance(); + BigDecimal totalBalance = memberWalletCoinEntity.getTotalBalance(); - // 扣币 - String walletCode = MemberWalletCoinEnum.WALLETCOINCODE.getValue(); - MemberWalletCoinEntity memberWalletCoinEntity = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, walletCode); - BigDecimal availableBalance = memberWalletCoinEntity.getAvailableBalance(); - BigDecimal totalBalance = memberWalletCoinEntity.getTotalBalance(); + BigDecimal available = availableBalance.subtract(balance); + if (available.compareTo(BigDecimal.ZERO) < 0) { + return Result.fail(MessageSourceUtils.getString("member_service_0005")); + } + BigDecimal total = totalBalance.subtract(balance); + if (total.compareTo(BigDecimal.ZERO) < 0) { + return Result.fail(MessageSourceUtils.getString("member_service_0005")); + } - BigDecimal available = availableBalance.subtract(balance); - if (available.compareTo(BigDecimal.ZERO) < 0) { - return Result.fail(MessageSourceUtils.getString("member_service_0005")); + memberWalletCoinEntity.setAvailableBalance(available); + memberWalletCoinEntity.setTotalBalance(total); + int i = memberWalletCoinDao.updateById(memberWalletCoinEntity); + if (i < 1) { + return Result.fail(MessageSourceUtils.getString("member_service_0096")); + } + //添加资金划转历史记录 + MemberAccountMoneyChange memberAccountRecord = new MemberAccountMoneyChange(); + //获取usdt兑换gusd的兑换比例 + BigDecimal usdtToGusd = new BigDecimal(redisUtils.getString("USDTTOGSD")); + BigDecimal gusdBalance = balance.multiply(usdtToGusd); + + ZhiYaEntity zhiya = zhiYaDao.selectByMemberId(memberId); + BigDecimal gusdAvailableBalance = zhiya.getAvailableBalance(); + BigDecimal gusdTotalBalance = zhiya.getTotalBalance(); + zhiya.setAvailableBalance(gusdAvailableBalance.add(gusdBalance)); + zhiya.setTotalBalance(gusdTotalBalance.add(gusdBalance)); + + int updateById = zhiYaDao.updateById(zhiya); + if (updateById < 1) { + return Result.fail(MessageSourceUtils.getString("member_service_0096")); + } + + //添加资金划转历史记录 + memberAccountRecord.setMemberId(memberId); + memberAccountRecord.setStatus(MemberAccountMoneyChange.STATUS_SUCCESS_INTEGER); + memberAccountRecord.setSymbol(walletCode); + memberAccountRecord.setContent(MemberWalletCoinEnum.ZHIYATOGUSD.getValue()); + memberAccountRecord.setType(MemberAccountMoneyChange.TYPE_WALLET_COIN); + memberAccountRecord.setAmount(gusdBalance); + memberAccountMoneyChangeDao.insert(memberAccountRecord); + }else if(2 == type){ + // 扣币 + ZhiYaEntity zhiya = zhiYaDao.selectByMemberId(memberId); + BigDecimal availableBalance = zhiya.getAvailableBalance(); + BigDecimal totalBalance = zhiya.getTotalBalance(); + + BigDecimal available = availableBalance.subtract(balance); + if (available.compareTo(BigDecimal.ZERO) < 0) { + return Result.fail(MessageSourceUtils.getString("member_service_0005")); + } + BigDecimal total = totalBalance.subtract(balance); + if (total.compareTo(BigDecimal.ZERO) < 0) { + return Result.fail(MessageSourceUtils.getString("member_service_0005")); + } + + zhiya.setAvailableBalance(available); + zhiya.setTotalBalance(total); + int i = zhiYaDao.updateById(zhiya); + if (i < 1) { + return Result.fail(MessageSourceUtils.getString("member_service_0096")); + } + //添加资金划转历史记录 + MemberAccountMoneyChange memberAccountRecord = new MemberAccountMoneyChange(); + //获取usdt兑换gusd的兑换比例 + BigDecimal usdtToGusd = new BigDecimal(redisUtils.getString("USDTTOGSD")); + BigDecimal usdtBalance = balance.divide(usdtToGusd); + + String walletCode = MemberWalletCoinEnum.WALLETCOINCODE.getValue(); + MemberWalletCoinEntity memberWalletCoinEntity = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, walletCode); + + BigDecimal gusdAvailableBalance = memberWalletCoinEntity.getAvailableBalance(); + BigDecimal gusdTotalBalance = memberWalletCoinEntity.getTotalBalance(); + memberWalletCoinEntity.setAvailableBalance(gusdAvailableBalance.add(usdtBalance)); + memberWalletCoinEntity.setTotalBalance(gusdTotalBalance.add(usdtBalance)); + + int updateById = memberWalletCoinDao.updateById(memberWalletCoinEntity); + if (updateById < 1) { + return Result.fail(MessageSourceUtils.getString("member_service_0096")); + } + + //添加资金划转历史记录 + memberAccountRecord.setMemberId(memberId); + memberAccountRecord.setStatus(MemberAccountMoneyChange.STATUS_SUCCESS_INTEGER); + memberAccountRecord.setSymbol(walletCode); + memberAccountRecord.setContent(MemberWalletCoinEnum.ZHIYATOUSDT.getValue()); + memberAccountRecord.setType(MemberAccountMoneyChange.TYPE_WALLET_COIN); + memberAccountRecord.setAmount(usdtBalance); + memberAccountMoneyChangeDao.insert(memberAccountRecord); + + }else{ + return Result.fail("member_controller_0005"); } - BigDecimal total = totalBalance.subtract(balance); - if (total.compareTo(BigDecimal.ZERO) < 0) { - return Result.fail(MessageSourceUtils.getString("member_service_0005")); - } - - memberWalletCoinEntity.setAvailableBalance(available); - memberWalletCoinEntity.setTotalBalance(total); - int i = memberWalletCoinDao.updateById(memberWalletCoinEntity); - if (i < 1) { - return Result.fail(MessageSourceUtils.getString("member_service_0096")); - } - //添加资金划转历史记录 - MemberAccountMoneyChange memberAccountRecord = new MemberAccountMoneyChange(); - //获取usdt兑换gusd的兑换比例 - ZhiYaEntity zhiya = zhiYaDao.selectByMemberId(memberId); - -// String gusdName = MemberWalletCoinEnum.WALLETGUSDCOINCODE.getValue(); -// MemberWalletCoinEntity gusdMemberWalletCoinEntity = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, gusdName); - BigDecimal gusdAvailableBalance = zhiya.getAvailableBalance(); - BigDecimal gusdTotalBalance = zhiya.getTotalBalance(); - zhiya.setAvailableBalance(gusdAvailableBalance.add(balance)); - zhiya.setTotalBalance(gusdTotalBalance.add(balance)); - - int updateById = zhiYaDao.updateById(zhiya); - if (updateById < 1) { - return Result.fail(MessageSourceUtils.getString("member_service_0096")); - } - - //添加资金划转历史记录 - memberAccountRecord.setMemberId(memberId); - memberAccountRecord.setStatus(MemberAccountMoneyChange.STATUS_SUCCESS_INTEGER); - memberAccountRecord.setSymbol(walletCode); - memberAccountRecord.setContent(MemberWalletCoinEnum.ZHIYATOGUSD.getValue()); - memberAccountRecord.setType(MemberAccountMoneyChange.TYPE_WALLET_COIN); - memberAccountRecord.setAmount(balance); - memberAccountMoneyChangeDao.insert(memberAccountRecord); return Result.ok(MessageSourceUtils.getString("member_service_0024")); } @@ -680,12 +726,10 @@ //获取用户ID Long memberId = LoginUserUtils.getAppLoginUser().getId(); if (balance.compareTo(new BigDecimal(100)) < 0) { - return Result.fail(MessageSourceUtils.getString("member_service_0005")); + return Result.fail(MessageSourceUtils.getString("zhiya_service_0006")); } - //质押Gusd,质押数量进入冻结余额, -// String gusdName = MemberWalletCoinEnum.WALLETGUSDCOINCODE.getValue(); -// MemberWalletCoinEntity gusdMemberWalletCoinEntity = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, gusdName); + //质押Gusd,质押数量进入冻结余额, ZhiYaEntity zhiya = zhiYaDao.selectByMemberId(memberId); BigDecimal gusdAvailableBalance = zhiya.getAvailableBalance(); BigDecimal gusdTotalBalance = zhiya.getTotalBalance(); @@ -693,13 +737,13 @@ BigDecimal available = gusdAvailableBalance.subtract(balance); if (available.compareTo(BigDecimal.ZERO) < 0) { - return Result.fail(MessageSourceUtils.getString("member_service_0005")); + return Result.fail(MessageSourceUtils.getString("zhiya_service_0005")); } BigDecimal total = gusdTotalBalance.subtract(balance); if (total.compareTo(BigDecimal.ZERO) < 0) { - return Result.fail(MessageSourceUtils.getString("member_service_0005")); + return Result.fail(MessageSourceUtils.getString("zhiya_service_0005")); } - zhiya.setFrozenBalance(gusdfrozenBalance.add(gusdfrozenBalance)); + zhiya.setFrozenBalance(gusdfrozenBalance.add(balance)); zhiya.setAvailableBalance(gusdAvailableBalance.subtract(balance)); int updateById = zhiYaDao.updateById(zhiya); @@ -732,15 +776,30 @@ } @Override - public Result shuhuiGusd(BigDecimal balance) { + public Result shuhuiGusd(BigDecimal balance,Long id) { //获取用户ID Long memberId = LoginUserUtils.getAppLoginUser().getId(); if (balance.compareTo(BigDecimal.ZERO) <= 0) { - return Result.fail(MessageSourceUtils.getString("order_service_0010")); + return Result.fail(MessageSourceUtils.getString("zhiya_service_0004")); } - //质押Gusd,质押数量进入冻结余额, -// String gusdName = MemberWalletCoinEnum.WALLETGUSDCOINCODE.getValue(); -// MemberWalletCoinEntity gusdMemberWalletCoinEntity = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, gusdName); + //赎回Gusd,获取质押单据, + ZhiYaRecordEntity zhiYaRecordEntity = zhiYaRecordDao.selectByIdAndMemberId(id,memberId); + if(ObjectUtil.isEmpty(zhiYaRecordEntity)){ + return Result.fail(MessageSourceUtils.getString("zhiya_service_0002")); + } + if(1 != zhiYaRecordEntity.getOrderStatus()){ + return Result.fail(MessageSourceUtils.getString("zhiya_service_0003")); + } + BigDecimal zhiyaCnt = zhiYaRecordEntity.getZhiyaCnt(); + if(balance.compareTo(zhiyaCnt) > 0){ + return Result.fail(MessageSourceUtils.getString("zhiya_service_0004")); + } + zhiYaRecordEntity.setZhiyaCnt(zhiyaCnt.subtract(balance)); + if(zhiyaCnt.compareTo(balance) == 0){ + zhiYaRecordEntity.setOrderStatus(2); + } + zhiYaRecordDao.updateById(zhiYaRecordEntity); + //赎回Gusd,质押数量进入可用余额, ZhiYaEntity zhiya = zhiYaDao.selectByMemberId(memberId); BigDecimal gusdAvailableBalance = zhiya.getAvailableBalance(); BigDecimal gusdTotalBalance = zhiya.getTotalBalance(); @@ -754,7 +813,47 @@ if (total.compareTo(BigDecimal.ZERO) < 0) { return Result.fail(MessageSourceUtils.getString("member_service_0005")); } - return null; + zhiya.setFrozenBalance(gusdfrozenBalance.subtract(balance)); + zhiya.setAvailableBalance(gusdAvailableBalance.add(balance)); + zhiYaDao.updateById(zhiya); + return Result.ok(MessageSourceUtils.getString("member_service_0024")); + } + + @Override + public Result findMemberGusdInfo() { + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + ZhiYaEntity zhiYaEntity = zhiYaDao.selectByMemberId(memberId); + MemberGusdInfoVo memberGusdInfoVo = new MemberGusdInfoVo(); + memberGusdInfoVo.setMemberId(memberId); + memberGusdInfoVo.setFrozenBalance(zhiYaEntity.getFrozenBalance()); + memberGusdInfoVo.setTotalBalance(zhiYaEntity.getTotalBalance()); + memberGusdInfoVo.setAvailableBalance(zhiYaEntity.getAvailableBalance()); + return Result.ok(memberGusdInfoVo); + } + + @Override + public Result getZhiyaRecords(RecordsPageDto recordsPageDto) { + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + + Page<ZhiyaInfoVo> page = new Page<>(recordsPageDto.getPageNum(), recordsPageDto.getPageSize()); + ZhiYaEntity zhiya = new ZhiYaEntity(); + zhiya.setMemberId(memberId); + IPage<ZhiyaInfoVo> lists = zhiYaRecordDao.selectByMemberIdInPage(page, zhiya); + return Result.ok(lists); + } + + @Override + public Result getusdtToGusdRecords(RecordsPageDto recordsPageDto) { + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + + Page<UsdtToGusdVo> page = new Page<>(recordsPageDto.getPageNum(), recordsPageDto.getPageSize()); + MemberAccountMoneyChange memberAccountMoneyChange = new MemberAccountMoneyChange(); + memberAccountMoneyChange.setMemberId(memberId); + IPage<UsdtToGusdVo> lists = memberAccountMoneyChangeDao.selectByMemberIdInPage(page, memberAccountMoneyChange); + return Result.ok(lists); } public String generateSimpleSerialno(String userId) { diff --git a/src/main/resources/i18n/messages_en_US.properties b/src/main/resources/i18n/messages_en_US.properties index bcb900b..cca5fc3 100644 --- a/src/main/resources/i18n/messages_en_US.properties +++ b/src/main/resources/i18n/messages_en_US.properties @@ -242,4 +242,9 @@ submit_repeat=Do not repeat submission zhiya_service_0001=Redemption quantity is greater than pledge quantity +zhiya_service_0002=Data does not exist, please refresh and try again +zhiya_service_0003=Only valid documents can be redeemed +zhiya_service_0004=Please enter the correct and reasonable quantity +zhiya_service_0005=Insufficient available balance +zhiya_service_0006=The minimum quantity is 100 diff --git a/src/main/resources/i18n/messages_zh_CN.properties b/src/main/resources/i18n/messages_zh_CN.properties index fb28c93..26a735c 100644 --- a/src/main/resources/i18n/messages_zh_CN.properties +++ b/src/main/resources/i18n/messages_zh_CN.properties @@ -242,3 +242,8 @@ submit_repeat=请勿重复提交 zhiya_service_0001=赎回数量大于质押数量 +zhiya_service_0002=数据不存在,请刷新后重试 +zhiya_service_0003=只有生效中的单据才能赎回 +zhiya_service_0004=请输入正确合理的数量 +zhiya_service_0005=可用余额不足 +zhiya_service_0006=数量最少需要100 diff --git a/src/main/resources/mapper/member/MemberAccountMoneyChangeDao.xml b/src/main/resources/mapper/member/MemberAccountMoneyChangeDao.xml index 1c47b40..fd42b09 100644 --- a/src/main/resources/mapper/member/MemberAccountMoneyChangeDao.xml +++ b/src/main/resources/mapper/member/MemberAccountMoneyChangeDao.xml @@ -64,4 +64,17 @@ order by id desc </select> + <select id="selectByMemberIdInPage" resultType="com.xcong.excoin.modules.coin.parameter.vo.UsdtToGusdVo"> + select * from member_account_money_change + <if test="record != null"> + <where> + type = 1 and (content = '兑换GUSD' or content = '兑换USDT') + <if test="record.memberId != null" > + and member_id=#{record.memberId} + </if> + </where> + </if> + order by id desc + </select> + </mapper> \ No newline at end of file diff --git a/src/main/resources/mapper/walletCoinOrder/ZhiYaRecordDao.xml b/src/main/resources/mapper/walletCoinOrder/ZhiYaRecordDao.xml index 4075b09..5c5b215 100644 --- a/src/main/resources/mapper/walletCoinOrder/ZhiYaRecordDao.xml +++ b/src/main/resources/mapper/walletCoinOrder/ZhiYaRecordDao.xml @@ -8,7 +8,27 @@ </select> <select id="selectByMemberIdAndOrderStatus" resultType="com.xcong.excoin.modules.coin.entity.ZhiYaRecordEntity"> - SELECT * FROM zhiya_record a where a.member_id= #{memberId} and a.order_status = #{orderStatus} + SELECT a.* FROM zhiya_record a where a.member_id= #{memberId} and a.order_status = #{orderStatus} + </select> + + <select id="selectByIdAndMemberId" resultType="com.xcong.excoin.modules.coin.entity.ZhiYaRecordEntity"> + SELECT a.* FROM zhiya_record a where a.member_id= #{memberId} and a.id = #{id} + </select> + + <select id="selectByMemberId" resultType="com.xcong.excoin.modules.coin.parameter.vo.ZhiyaInfoVo"> + SELECT a.* FROM zhiya_record a where a.member_id= #{memberId} + </select> + + <select id="selectByMemberIdInPage" resultType="com.xcong.excoin.modules.coin.parameter.vo.ZhiyaInfoVo"> + select * from zhiya_record + <if test="record != null"> + <where> + <if test="record.memberId != null" > + and member_id=#{record.memberId} + </if> + </where> + </if> + order by id desc </select> </mapper> -- Gitblit v1.9.1