From 4fc2e0257cf4f6ff91fc098d4438a8faf6a3c6a6 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Tue, 15 Jun 2021 14:37:25 +0800
Subject: [PATCH] modify

---
 src/main/java/com/xcong/excoin/modules/coin/entity/GbzOrderEntity.java         |    2 +
 src/main/java/com/xcong/excoin/modules/coin/controller/GbzOrderController.java |   51 +++++++++++++++++++++++++
 src/main/resources/mapper/walletCoinOrder/GbzOrderDao.xml                      |    6 +++
 src/main/java/com/xcong/excoin/modules/coin/parameter/vo/PriceVo.java          |   22 +++++++++++
 src/main/java/com/xcong/excoin/modules/coin/dao/GbzOrderDao.java               |    5 ++
 5 files changed, 85 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/coin/controller/GbzOrderController.java b/src/main/java/com/xcong/excoin/modules/coin/controller/GbzOrderController.java
index e39fdd3..73d6f78 100644
--- a/src/main/java/com/xcong/excoin/modules/coin/controller/GbzOrderController.java
+++ b/src/main/java/com/xcong/excoin/modules/coin/controller/GbzOrderController.java
@@ -1,5 +1,6 @@
 package com.xcong.excoin.modules.coin.controller;
 
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.xcong.excoin.common.LoginUserUtils;
@@ -9,11 +10,15 @@
 import com.xcong.excoin.modules.coin.entity.GbzOrderEntity;
 import com.xcong.excoin.modules.coin.parameter.dto.GbzAddDto;
 import com.xcong.excoin.modules.coin.parameter.dto.GbzListDto;
+import com.xcong.excoin.modules.coin.parameter.vo.PriceVo;
 import com.xcong.excoin.modules.member.dao.MemberWalletCoinDao;
 import com.xcong.excoin.modules.member.entity.MemberEntity;
 import com.xcong.excoin.modules.member.entity.MemberWalletCoinEntity;
+import com.xcong.excoin.utils.RedisUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
@@ -34,9 +39,17 @@
     @Autowired
     private MemberWalletCoinDao memberWalletCoinDao;
 
+    @Autowired
+    private RedisUtils redisUtils;
+
     @ApiOperation(value = "新增订单", notes = "新增订单")
     @PostMapping(value = "/add")
     public Result add(@RequestBody GbzAddDto gbzAddDto) {
+        String status = redisUtils.getString("bzz_order_status");
+        if ("1".equals(status)) {
+            return Result.fail("无法购买");
+        }
+
         MemberEntity loginUser = LoginUserUtils.getAppLoginUser();
         BigDecimal price = new BigDecimal(66);
         BigDecimal amount = BigDecimal.valueOf(gbzAddDto.getCount()).multiply(price);
@@ -46,10 +59,15 @@
         gbzOrder.setCnt(gbzAddDto.getCount());
         gbzOrder.setMemberId(loginUser.getId());
         gbzOrder.setSymbol(CoinTypeEnum.BZZ.name());
+        gbzOrder.setStatus(1);
 
         gbzOrderDao.insert(gbzOrder);
 
         MemberWalletCoinEntity wallet = memberWalletCoinDao.selectWalletCoinBymIdAndCode(loginUser.getId(), CoinTypeEnum.USDT.name());
+        if (amount.compareTo(wallet.getAvailableBalance()) < 0) {
+            return Result.fail("可用金额不足");
+        }
+
         memberWalletCoinDao.updateBlockBalance(wallet.getId(), amount.negate(), BigDecimal.ZERO, 0);
         return Result.ok("购买成功");
     }
@@ -65,9 +83,40 @@
     }
 
     @ApiOperation(value = "获取最新价")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "sucess", response = PriceVo.class)
+    })
     @GetMapping(value = "/findPrice")
     public Result findPrice() {
-        return Result.ok(BigDecimal.valueOf(66));
+        PriceVo priceVo = new PriceVo();
+        String newPriceStr = redisUtils.getString("bzz_order_new_price");
+        priceVo.setNewPrice(StrUtil.isNotBlank(newPriceStr) ? new BigDecimal(newPriceStr) : BigDecimal.valueOf(66));
+
+        String status = redisUtils.getString("bzz_order_status");
+        priceVo.setStatus(StrUtil.isNotBlank(status) ? Integer.parseInt(status) : 2);
+
+        BigDecimal totalAmount = gbzOrderDao.selectOrderTotalAmount(LoginUserUtils.getAppLoginUser().getId());
+        priceVo.setTotalAmount(totalAmount);
+        return Result.ok(priceVo);
     }
 
+    @ApiOperation(value = "提取到资产")
+    @PostMapping(value = "/changeWallet")
+    public Result changeWallet() {
+        String status = redisUtils.getString("bzz_order_status");
+        if (!"1".equals(status)) {
+            return Result.fail("暂无法划转");
+        }
+
+        MemberEntity member = LoginUserUtils.getAppLoginUser();
+        BigDecimal totalAmount = gbzOrderDao.selectOrderTotalAmount(member.getId());
+
+        if (totalAmount.compareTo(BigDecimal.ZERO) <= 0) {
+            return Result.fail("无可提取金额");
+        }
+
+        MemberWalletCoinEntity wallet = memberWalletCoinDao.selectWalletCoinBymIdAndCode(member.getId(), CoinTypeEnum.BZZ.name());
+        memberWalletCoinDao.updateBlockBalance(wallet.getId(), totalAmount, BigDecimal.ZERO, 0);
+        return Result.ok("提取成功");
+    }
 }
diff --git a/src/main/java/com/xcong/excoin/modules/coin/dao/GbzOrderDao.java b/src/main/java/com/xcong/excoin/modules/coin/dao/GbzOrderDao.java
index caf955c..718173a 100644
--- a/src/main/java/com/xcong/excoin/modules/coin/dao/GbzOrderDao.java
+++ b/src/main/java/com/xcong/excoin/modules/coin/dao/GbzOrderDao.java
@@ -4,8 +4,13 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.xcong.excoin.modules.coin.entity.GbzOrderEntity;
+import org.apache.ibatis.annotations.Param;
+
+import java.math.BigDecimal;
 
 public interface GbzOrderDao extends BaseMapper<GbzOrderEntity> {
 
     IPage<GbzOrderEntity> selectInPage(Page<GbzOrderEntity> page);
+
+    BigDecimal selectOrderTotalAmount(@Param("memberId") Long memberId);
 }
diff --git a/src/main/java/com/xcong/excoin/modules/coin/entity/GbzOrderEntity.java b/src/main/java/com/xcong/excoin/modules/coin/entity/GbzOrderEntity.java
index e4c479a..c7612bd 100644
--- a/src/main/java/com/xcong/excoin/modules/coin/entity/GbzOrderEntity.java
+++ b/src/main/java/com/xcong/excoin/modules/coin/entity/GbzOrderEntity.java
@@ -20,4 +20,6 @@
     private Long memberId;
 
     private String symbol;
+
+    private Integer status;
 }
diff --git a/src/main/java/com/xcong/excoin/modules/coin/parameter/vo/PriceVo.java b/src/main/java/com/xcong/excoin/modules/coin/parameter/vo/PriceVo.java
new file mode 100644
index 0000000..a191f9e
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/coin/parameter/vo/PriceVo.java
@@ -0,0 +1,22 @@
+package com.xcong.excoin.modules.coin.parameter.vo;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "PriceVo", description = "最新价接口返回参数类")
+public class PriceVo {
+
+    @ApiModelProperty(value = "最新价")
+    private BigDecimal newPrice;
+
+    @ApiModelProperty(value = "订单总金额")
+    private BigDecimal totalAmount;
+
+    @ApiModelProperty(value = "状态 1可提 2不可提")
+    private Integer status;
+}
diff --git a/src/main/resources/mapper/walletCoinOrder/GbzOrderDao.xml b/src/main/resources/mapper/walletCoinOrder/GbzOrderDao.xml
index 36a6b2b..24a18d7 100644
--- a/src/main/resources/mapper/walletCoinOrder/GbzOrderDao.xml
+++ b/src/main/resources/mapper/walletCoinOrder/GbzOrderDao.xml
@@ -6,4 +6,10 @@
         select * from gbz_order
         order by create_time desc
     </select>
+
+    <select id="selectOrderTotalAmount" resultType="java.math.BigDecimal">
+        select sum(cnt)
+        from gbz_order
+        where member_id=#{memberId} and status=1
+    </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.1