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