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