From 5ee80b98b9b1b2e44aa4d9600ef68f6bc1629927 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Mon, 10 May 2021 18:56:27 +0800
Subject: [PATCH] 20210510 云顶
---
src/main/java/com/xcong/excoin/modules/yunding/entity/YdProductEntity.java | 8
src/main/java/com/xcong/excoin/modules/yunding/vo/YdBasicSettingVo.java | 29 +
src/main/java/com/xcong/excoin/modules/yunding/dao/YdBasicSettingDao.java | 7
src/main/java/com/xcong/excoin/modules/yunding/controller/YunDingController.java | 88 +++++
src/main/java/com/xcong/excoin/modules/yunding/vo/YdProductVo.java | 128 ++++++++
src/main/resources/mapper/yunding/YdProductDao.xml | 21 +
src/main/java/com/xcong/excoin/modules/yunding/entity/YdBasicSettingEntity.java | 37 ++
src/main/java/com/xcong/excoin/modules/yunding/dao/YdOrderDao.java | 8
src/main/java/com/xcong/excoin/configurations/security/WebSecurityConfig.java | 3
src/main/java/com/xcong/excoin/modules/yunding/service/YunDingService.java | 17 +
src/main/java/com/xcong/excoin/modules/yunding/vo/YdOrderVo.java | 100 ++++++
src/main/resources/mapper/yunding/YdOrderDao.xml | 17 +
src/main/java/com/xcong/excoin/modules/yunding/vo/OrderAllInfoVo.java | 26 +
src/main/java/com/xcong/excoin/modules/yunding/dto/YdProductListDto.java | 26 +
src/main/java/com/xcong/excoin/modules/yunding/entity/YdOrderEntity.java | 28 +
src/main/java/com/xcong/excoin/modules/yunding/dto/YdOrderListDto.java | 26 +
src/main/java/com/xcong/excoin/modules/yunding/dao/YdProductDao.java | 9
src/main/java/com/xcong/excoin/modules/yunding/dto/PayProductDto.java | 26 +
src/main/resources/mapper/yunding/YdBasicSettingDao.xml | 7
src/main/java/com/xcong/excoin/modules/yunding/service/Impl/YunDingServiceImpl.java | 286 +++++++++++++++++++
20 files changed, 892 insertions(+), 5 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/configurations/security/WebSecurityConfig.java b/src/main/java/com/xcong/excoin/configurations/security/WebSecurityConfig.java
index c79d04b..8f8d054 100644
--- a/src/main/java/com/xcong/excoin/configurations/security/WebSecurityConfig.java
+++ b/src/main/java/com/xcong/excoin/configurations/security/WebSecurityConfig.java
@@ -58,6 +58,9 @@
.antMatchers("/api/trader/beTraderStatusCondition").permitAll()
.antMatchers("/api/activity/getActivityMain").permitAll()
.antMatchers("/api/helpCenter/**").permitAll()
+ .antMatchers("/api/yd/findAllInfo").permitAll()
+ .antMatchers("/api/yd/getProductList").permitAll()
+ .antMatchers("/api/yd/findProductInfo").permitAll()
.anyRequest().authenticated()
.and().apply(securityConfiguereAdapter());
}
diff --git a/src/main/java/com/xcong/excoin/modules/yunding/controller/YunDingController.java b/src/main/java/com/xcong/excoin/modules/yunding/controller/YunDingController.java
index ffa347e..9c5568f 100644
--- a/src/main/java/com/xcong/excoin/modules/yunding/controller/YunDingController.java
+++ b/src/main/java/com/xcong/excoin/modules/yunding/controller/YunDingController.java
@@ -1,11 +1,17 @@
package com.xcong.excoin.modules.yunding.controller;
-import com.xcong.excoin.modules.activity.service.ActivityService;
+import com.xcong.excoin.common.response.Result;
+import com.xcong.excoin.modules.yunding.dto.PayProductDto;
+import com.xcong.excoin.modules.yunding.dto.YdOrderListDto;
+import com.xcong.excoin.modules.yunding.dto.YdProductListDto;
import com.xcong.excoin.modules.yunding.service.YunDingService;
-import io.swagger.annotations.Api;
+import com.xcong.excoin.modules.yunding.vo.OrderAllInfoVo;
+import com.xcong.excoin.modules.yunding.vo.YdOrderVo;
+import com.xcong.excoin.modules.yunding.vo.YdProductVo;
+import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@@ -18,5 +24,79 @@
@Resource
YunDingService yunDingService;
+ /**
+ * 全网数据
+ */
+ @ApiOperation(value = "全网数据")
+ @GetMapping(value = "/findAllInfo")
+ public Result findAllInfo() {
+ return yunDingService.findAllInfo();
+ }
+
+ /**
+ * 算力产品列表
+ */
+ @ApiOperation(value = "产品列表")
+ @ApiResponses({
+ @ApiResponse(code = 0, message = "success", response = YdProductVo.class)
+ })
+ @PostMapping(value = "/getProductList")
+ public Result getProductList(@RequestBody @Validated YdProductListDto ydProductListDto) {
+ return yunDingService.getProductList(ydProductListDto);
+ }
+
+ /**
+ * 获取算力产品详情
+ */
+ @ApiOperation(value = "获取产品详情")
+ @GetMapping(value = "/findProductInfo")
+ public Result findProductInfoById(@ApiParam(name = "id", value = "产品ID", required = true, example = "1")
+ @RequestParam(value = "id") Long id) {
+ return yunDingService.findProductInfoById(id);
+ }
+
+ /**
+ * 获取USDT余额
+ */
+ @ApiOperation(value = "获取USDT余额")
+ @GetMapping(value = "/getBalance")
+ public Result getBalance() {
+ return yunDingService.getBalance();
+ }
+
+ /**
+ * 支付
+ */
+ @ApiOperation(value = "购买,点击支付")
+ @PostMapping(value = "/payProduct")
+ public Result payProduct(@RequestBody @Validated PayProductDto payProductDto) {
+ return yunDingService.payProduct(payProductDto);
+ }
+
+ /**
+ * 订单列表
+ */
+ @ApiOperation(value = "订单列表")
+ @ApiResponses({
+ @ApiResponse(code = 0, message = "success", response = YdOrderVo.class)
+ })
+ @PostMapping(value = "/getOrderList")
+ public Result getOrderList(@RequestBody @Validated YdOrderListDto ydOrderListDto) {
+ return yunDingService.getOrderList(ydOrderListDto);
+ }
+
+ /**
+ *订单头部数据
+ */
+ @ApiOperation(value = "订单头部数据")
+ @ApiResponses({
+ @ApiResponse(code = 0, message = "success", response = OrderAllInfoVo.class)
+ })
+ @GetMapping(value = "/findOrderAllInfo")
+ public Result findOrderAllInfo() {
+ return yunDingService.findOrderAllInfo();
+ }
+
+
}
diff --git a/src/main/java/com/xcong/excoin/modules/yunding/dao/YdBasicSettingDao.java b/src/main/java/com/xcong/excoin/modules/yunding/dao/YdBasicSettingDao.java
new file mode 100644
index 0000000..5278de5
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/yunding/dao/YdBasicSettingDao.java
@@ -0,0 +1,7 @@
+package com.xcong.excoin.modules.yunding.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.xcong.excoin.modules.yunding.entity.YdBasicSettingEntity;
+
+public interface YdBasicSettingDao extends BaseMapper<YdBasicSettingEntity> {
+}
diff --git a/src/main/java/com/xcong/excoin/modules/yunding/dao/YdOrderDao.java b/src/main/java/com/xcong/excoin/modules/yunding/dao/YdOrderDao.java
index 09d74c8..1ed46d4 100644
--- a/src/main/java/com/xcong/excoin/modules/yunding/dao/YdOrderDao.java
+++ b/src/main/java/com/xcong/excoin/modules/yunding/dao/YdOrderDao.java
@@ -1,7 +1,15 @@
package com.xcong.excoin.modules.yunding.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.yunding.dto.YdOrderListDto;
import com.xcong.excoin.modules.yunding.entity.YdOrderEntity;
+import com.xcong.excoin.modules.yunding.vo.YdOrderVo;
+import org.apache.ibatis.annotations.Param;
public interface YdOrderDao extends BaseMapper<YdOrderEntity> {
+
+ IPage<YdOrderVo> getOrderList(Page<YdOrderVo> page, @Param("record") YdOrderEntity ydOrderEntity);
+
}
diff --git a/src/main/java/com/xcong/excoin/modules/yunding/dao/YdProductDao.java b/src/main/java/com/xcong/excoin/modules/yunding/dao/YdProductDao.java
index 6bd625b..22d5529 100644
--- a/src/main/java/com/xcong/excoin/modules/yunding/dao/YdProductDao.java
+++ b/src/main/java/com/xcong/excoin/modules/yunding/dao/YdProductDao.java
@@ -1,7 +1,16 @@
package com.xcong.excoin.modules.yunding.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.yunding.dto.YdProductListDto;
import com.xcong.excoin.modules.yunding.entity.YdProductEntity;
+import com.xcong.excoin.modules.yunding.vo.YdProductVo;
+import org.apache.ibatis.annotations.Param;
public interface YdProductDao extends BaseMapper<YdProductEntity> {
+
+ IPage<YdProductVo> getProductList(Page<YdProductVo> page, @Param("record") YdProductListDto ydProductListDto);
+
+ YdProductVo findProductInfoById(@Param("id")Long id);
}
diff --git a/src/main/java/com/xcong/excoin/modules/yunding/dto/PayProductDto.java b/src/main/java/com/xcong/excoin/modules/yunding/dto/PayProductDto.java
new file mode 100644
index 0000000..28b7e00
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/yunding/dto/PayProductDto.java
@@ -0,0 +1,26 @@
+package com.xcong.excoin.modules.yunding.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "PayProductDto", description = "支付入参类")
+public class PayProductDto {
+
+
+ @NotNull
+ @ApiModelProperty(value = "产品ID", example = "2")
+ private Long id;
+
+ /**
+ * 购买数量
+ */
+ @NotNull
+ @ApiModelProperty(value = "购买数量", example = "2")
+ private BigDecimal quantity;
+
+}
diff --git a/src/main/java/com/xcong/excoin/modules/yunding/dto/YdOrderListDto.java b/src/main/java/com/xcong/excoin/modules/yunding/dto/YdOrderListDto.java
new file mode 100644
index 0000000..7a931d9
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/yunding/dto/YdOrderListDto.java
@@ -0,0 +1,26 @@
+package com.xcong.excoin.modules.yunding.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+
+@Data
+@ApiModel(value = "YdOrderListDto", description = "订单列表入参类")
+public class YdOrderListDto {
+
+ @NotNull
+ @Min(1)
+ @ApiModelProperty(value = "第几页", example = "1")
+ private int pageNum;
+
+ @NotNull
+ @ApiModelProperty(value = "每页数量", example = "10")
+ private int pageSize;
+
+ @ApiModelProperty(value = "订单状态1:待生效 2:生效中 3:已终止", example = "2")
+ private Integer state;
+
+}
diff --git a/src/main/java/com/xcong/excoin/modules/yunding/dto/YdProductListDto.java b/src/main/java/com/xcong/excoin/modules/yunding/dto/YdProductListDto.java
new file mode 100644
index 0000000..178eb61
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/yunding/dto/YdProductListDto.java
@@ -0,0 +1,26 @@
+package com.xcong.excoin.modules.yunding.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+
+@Data
+@ApiModel(value = "YdProductListDto", description = "产品列表入参类")
+public class YdProductListDto {
+
+ @NotNull
+ @Min(1)
+ @ApiModelProperty(value = "第几页", example = "1")
+ private int pageNum;
+
+ @NotNull
+ @ApiModelProperty(value = "每页数量", example = "10")
+ private int pageSize;
+
+ @ApiModelProperty(value = "产品类型1:期货 2:现货", example = "2")
+ private Integer typeCoin;
+
+}
diff --git a/src/main/java/com/xcong/excoin/modules/yunding/entity/YdBasicSettingEntity.java b/src/main/java/com/xcong/excoin/modules/yunding/entity/YdBasicSettingEntity.java
new file mode 100644
index 0000000..12fac7c
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/yunding/entity/YdBasicSettingEntity.java
@@ -0,0 +1,37 @@
+package com.xcong.excoin.modules.yunding.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+//yd_basic_setting基础参数设置表
+@Data
+@TableName("yd_basic_setting")
+public class YdBasicSettingEntity {
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id",type = IdType.AUTO)
+ private Long id;
+
+ //合伙人收益比例
+ private BigDecimal partnerRatio;
+
+ //当前每T预计产生收益
+ private BigDecimal prifitT;
+
+ //全网算力
+ private BigDecimal allPower;
+
+ //日平均收益
+ private BigDecimal profitDay;
+
+ //矿机模式
+ private String powerModel;
+
+ //24小时爆块
+ private BigDecimal explosiveBlock;
+
+}
diff --git a/src/main/java/com/xcong/excoin/modules/yunding/entity/YdOrderEntity.java b/src/main/java/com/xcong/excoin/modules/yunding/entity/YdOrderEntity.java
index ab1eda4..c99efc0 100644
--- a/src/main/java/com/xcong/excoin/modules/yunding/entity/YdOrderEntity.java
+++ b/src/main/java/com/xcong/excoin/modules/yunding/entity/YdOrderEntity.java
@@ -16,6 +16,12 @@
private static final long serialVersionUID = 1L;
/**
+ * 会员ID
+ */
+
+ private Long memberId;
+
+ /**
* 产品ID
*/
@@ -26,6 +32,19 @@
*/
private Integer quantity;
+ /**
+ * 返利状态 1:待返利 2:已返利
+ */
+
+ private Integer returnState;
+
+ public static final int RETURN_STATE_READY = 1;
+ public static final int RETURN_STATE_DONE = 2;
+ /**
+ * 返利类型 1:USDT 2:XCH
+ */
+
+ private Integer returnType;
/**
* 总金额
@@ -50,6 +69,15 @@
*/
private Integer state;
+ public static final int ORDER_STATE_READY = 1;
+ public static final int ORDER_STATE_WORK = 2;
+ public static final int ORDER_STATE_END = 3;
+
+ /**
+ * 购买日期
+ */
+
+ private Date buyTime;
/**
* 生效日期
diff --git a/src/main/java/com/xcong/excoin/modules/yunding/entity/YdProductEntity.java b/src/main/java/com/xcong/excoin/modules/yunding/entity/YdProductEntity.java
index 078e396..f20dc36 100644
--- a/src/main/java/com/xcong/excoin/modules/yunding/entity/YdProductEntity.java
+++ b/src/main/java/com/xcong/excoin/modules/yunding/entity/YdProductEntity.java
@@ -90,10 +90,16 @@
private Integer type;
/**
- * 1:期货 2:现货
+ * 产品类型1:期货 2:现货
*/
private Integer typeCoin;
+ /**
+ * 优惠 1:免除电费
+ */
+
+ private Integer favourable;
+
}
diff --git a/src/main/java/com/xcong/excoin/modules/yunding/service/Impl/YunDingServiceImpl.java b/src/main/java/com/xcong/excoin/modules/yunding/service/Impl/YunDingServiceImpl.java
index 1427ad6..1836528 100644
--- a/src/main/java/com/xcong/excoin/modules/yunding/service/Impl/YunDingServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/yunding/service/Impl/YunDingServiceImpl.java
@@ -1,14 +1,300 @@
package com.xcong.excoin.modules.yunding.service.Impl;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xcong.excoin.common.LoginUserUtils;
+import com.xcong.excoin.common.response.Result;
+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.modules.yunding.dao.YdBasicSettingDao;
import com.xcong.excoin.modules.yunding.dao.YdOrderDao;
+import com.xcong.excoin.modules.yunding.dao.YdProductDao;
+import com.xcong.excoin.modules.yunding.dto.PayProductDto;
+import com.xcong.excoin.modules.yunding.dto.YdOrderListDto;
+import com.xcong.excoin.modules.yunding.dto.YdProductListDto;
+import com.xcong.excoin.modules.yunding.entity.YdBasicSettingEntity;
import com.xcong.excoin.modules.yunding.entity.YdOrderEntity;
+import com.xcong.excoin.modules.yunding.entity.YdProductEntity;
import com.xcong.excoin.modules.yunding.service.YunDingService;
+import com.xcong.excoin.modules.yunding.vo.OrderAllInfoVo;
+import com.xcong.excoin.modules.yunding.vo.YdBasicSettingVo;
+import com.xcong.excoin.modules.yunding.vo.YdOrderVo;
+import com.xcong.excoin.modules.yunding.vo.YdProductVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.text.DecimalFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
@Slf4j
@Service
public class YunDingServiceImpl extends ServiceImpl<YdOrderDao, YdOrderEntity> implements YunDingService {
+ @Resource
+ private YdProductDao ydProductDao;
+ @Resource
+ private YdBasicSettingDao ydBasicSettingDao;
+ @Resource
+ private YdOrderDao ydOrderDao;
+ @Resource
+ private MemberWalletCoinDao memberWalletCoinDao;
+
+ @Override
+ public Result findAllInfo() {
+ log.info("全网数据");
+ YdBasicSettingVo ydBasicSettingVo = new YdBasicSettingVo();
+ Wrapper<YdBasicSettingEntity> queryWrapper = new QueryWrapper<>();
+ List<YdBasicSettingEntity> ydBasicSettingEntities = ydBasicSettingDao.selectList(queryWrapper);
+ if(CollUtil.isNotEmpty(ydBasicSettingEntities)){
+ // 不足四位小数补0
+ DecimalFormat decimalFormat = new DecimalFormat("0.0000#");
+ YdBasicSettingEntity ydBasicSettingEntity = ydBasicSettingEntities.get(0);
+ ydBasicSettingVo.setAllPower(ydBasicSettingEntity.getAllPower() == null ? decimalFormat.format(BigDecimal.ZERO) : decimalFormat.format(ydBasicSettingEntity.getAllPower()));
+ ydBasicSettingVo.setProfitDay(ydBasicSettingEntity.getProfitDay() == null ?decimalFormat.format(BigDecimal.ZERO) : decimalFormat.format(ydBasicSettingEntity.getProfitDay()));
+ ydBasicSettingVo.setPowerModel(ydBasicSettingEntity.getPowerModel() == null ? "" : ydBasicSettingEntity.getPowerModel());
+ ydBasicSettingVo.setExplosiveBlock(ydBasicSettingEntity.getExplosiveBlock() == null ?decimalFormat.format(BigDecimal.ZERO) : decimalFormat.format(ydBasicSettingEntity.getExplosiveBlock()));
+ }
+ return Result.ok(ydBasicSettingVo);
+ }
+
+ @Override
+ public Result getProductList(YdProductListDto ydProductListDto) {
+ log.info("获取产品列表");
+ Integer typeCoin = ydProductListDto.getTypeCoin();
+ //默认查询现货的产品
+ if(ObjectUtil.isEmpty(typeCoin)){
+ typeCoin = 2;
+ }
+ //MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
+ Page<YdProductVo> page = new Page<>(ydProductListDto.getPageNum(), ydProductListDto.getPageSize());
+ IPage<YdProductVo> list = ydProductDao.getProductList(page, ydProductListDto);
+ return Result.ok(list);
+ }
+
+ @Override
+ public Result findProductInfoById(Long id) {
+ log.info("获取产品详情");
+ YdProductVo ydProductVo = ydProductDao.findProductInfoById(id);
+ if (ObjectUtil.isEmpty(ydProductVo)) {
+ return Result.fail("产品不存在!");
+ }
+ //预计收益
+ Wrapper<YdBasicSettingEntity> queryWrapper = new QueryWrapper<>();
+ List<YdBasicSettingEntity> ydBasicSettingEntities = ydBasicSettingDao.selectList(queryWrapper);
+ if(CollUtil.isNotEmpty(ydBasicSettingEntities)){
+ BigDecimal prifitT = ydBasicSettingEntities.get(0).getPrifitT();
+ if(ObjectUtil.isNotEmpty(prifitT)){
+ ydProductVo.setProfitT(prifitT);
+ }
+ }
+ /**
+ *产出规则
+ */
+ Date date = DateUtil.date();
+ ydProductVo.setNowTime(date);
+ //上架天数
+ Integer shelvesDays = ydProductVo.getShelvesDays();
+ Date workTime = DateUtil.offsetDay(date, shelvesDays);
+ ydProductVo.setWorkTime(workTime);
+ //服务周期
+ Integer proCycle = ydProductVo.getProCycle();
+ Date endTime = DateUtil.offsetDay(workTime, proCycle);
+ ydProductVo.setEndTime(endTime);
+ return Result.ok(ydProductVo);
+ }
+
+ @Override
+ public Result getBalance() {
+ log.info("获取可用USDT");
+ MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
+ Long memberId = memberEntity.getId();
+// Long memberId = 28L;
+ MemberWalletCoinEntity memberWalletCoinEntity = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, "USDT");
+ BigDecimal availableBalance = memberWalletCoinEntity.getAvailableBalance();
+ return Result.ok(availableBalance);
+ }
+
+ @Override
+ @Transactional
+ public Result payProduct(PayProductDto payProductDto) {
+ log.info("购买,点击支付");
+ /**
+ * 获取购买数量和当前价格,计算出支付总数
+ * 去加减币币账户余额,减少产品的剩余数目
+ * 成功后
+ * 生成订单记录
+ * 生成返利记录
+ */
+ MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
+ Long memberId = memberEntity.getId();
+// Long memberId = 28L;
+ BigDecimal quantity = payProductDto.getQuantity();
+ if(ObjectUtil.isEmpty(quantity)){
+ return Result.fail("请输入购买数量");
+ }
+ if(quantity.compareTo(BigDecimal.ZERO) <= 0){
+ return Result.fail("请输入正确的购买数量");
+ }
+ Long id = payProductDto.getId();
+ YdProductEntity ydProductEntity = ydProductDao.selectById(id);
+ if(ObjectUtil.isEmpty(ydProductEntity)){
+ return Result.fail("请重新选择产品");
+ }
+ BigDecimal salePrice = ydProductEntity.getSalePrice();
+ //剩余产品数量
+ BigDecimal surplusT = ydProductEntity.getSurplusT();
+ if(quantity.compareTo(surplusT) > 0){
+ return Result.fail("当前产品数量不足,请联系客服");
+ }
+ //支付总数
+ BigDecimal multiplyUsdt = quantity.multiply(salePrice);
+ if(multiplyUsdt.compareTo(BigDecimal.ZERO) <= 0){
+ return Result.fail("支付失败");
+ }
+ //去加减币币账户余额,减少产品的剩余数目
+ boolean flag = updateWalletCoin(memberId, multiplyUsdt,id,quantity);
+ if(flag == false){
+ return Result.fail("支付失败");
+ }
+ //生成订单
+ YdOrderEntity ydOrderEntity = new YdOrderEntity();
+ ydOrderEntity.setMemberId(memberId);
+ ydOrderEntity.setProductId(id);
+ ydOrderEntity.setQuantity(Integer.parseInt(quantity.toString()));
+ ydOrderEntity.setAmount(multiplyUsdt);
+ ydOrderEntity.setTotalProfit(BigDecimal.ZERO);
+ ydOrderEntity.setTodayProfit(BigDecimal.ZERO);
+ ydOrderEntity.setState(YdOrderEntity.ORDER_STATE_READY);
+ Date date = DateUtil.date();
+ ydOrderEntity.setBuyTime(date);
+ //上架天数
+ Integer shelvesDays = ydProductEntity.getShelvesDays();
+ Date workTime = DateUtil.offsetDay(date, shelvesDays);
+ ydOrderEntity.setWorkTime(workTime);
+ //服务周期
+ Integer proCycle = ydProductEntity.getProCycle();
+ Date endTime = DateUtil.offsetDay(workTime, proCycle);
+ ydOrderEntity.setEndTime(endTime);
+ ydOrderEntity.setReturnState(YdOrderEntity.RETURN_STATE_READY);
+ ydOrderDao.insert(ydOrderEntity);
+ return Result.ok("支付成功");
+ }
+
+ @Override
+ public Result getOrderList(YdOrderListDto ydOrderListDto) {
+
+ log.info("获取订单列表");
+ Integer state = ydOrderListDto.getState();
+ //默认查询待生效
+ if(ObjectUtil.isEmpty(state)){
+ state = 1;
+ }
+ MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
+ Long memberId = memberEntity.getId();
+ //Long memberId = 28L;
+ Page<YdOrderVo> page = new Page<>(ydOrderListDto.getPageNum(), ydOrderListDto.getPageSize());
+ YdOrderEntity ydOrderEntity = new YdOrderEntity();
+ ydOrderEntity.setMemberId(memberId);
+ ydOrderEntity.setState(state);
+ IPage<YdOrderVo> list = ydOrderDao.getOrderList(page, ydOrderEntity);
+ return Result.ok(list);
+ }
+
+ @Override
+ public Result findOrderAllInfo() {
+
+ log.info("订单头部数据");
+
+ MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
+ Long memberId = memberEntity.getId();
+// Long memberId = 28L;
+ OrderAllInfoVo orderAllInfoVo = new OrderAllInfoVo();
+ DecimalFormat decimalFormat = new DecimalFormat("0.0000#");
+ //历史总收益
+ BigDecimal totalProfitAll = BigDecimal.ZERO;
+ QueryWrapper<YdOrderEntity> objectQueryWrapper = new QueryWrapper<>();
+ objectQueryWrapper.eq("member_id",memberId);
+ List<YdOrderEntity> ydOrderEntities = ydOrderDao.selectList(objectQueryWrapper);
+ if(CollUtil.isNotEmpty(ydOrderEntities)){
+ for(YdOrderEntity order : ydOrderEntities){
+ BigDecimal totalProfit = order.getTotalProfit();
+ totalProfitAll = totalProfitAll.add(totalProfit);
+ }
+ }
+ orderAllInfoVo.setAllProfit(decimalFormat.format(totalProfitAll));
+ //当前已生效算力
+ int powerNow = 0;
+ QueryWrapper<YdOrderEntity> powerNowQuery = new QueryWrapper<>();
+ powerNowQuery.eq("member_id",memberId);
+ powerNowQuery.eq("state",YdOrderEntity.ORDER_STATE_WORK);
+ List<YdOrderEntity> PowerNowQuery = ydOrderDao.selectList(powerNowQuery);
+ if(CollUtil.isNotEmpty(PowerNowQuery)){
+ for(YdOrderEntity order : PowerNowQuery){
+ int quantity = order.getQuantity();
+ powerNow = powerNow + quantity;
+ }
+ }
+ orderAllInfoVo.setPowerNow(powerNow);
+ //当前待生效算力
+ int powerReady = 0;
+ QueryWrapper<YdOrderEntity> powerReradyQuery = new QueryWrapper<>();
+ powerReradyQuery.eq("member_id",memberId);
+ powerReradyQuery.eq("state",YdOrderEntity.ORDER_STATE_READY);
+ List<YdOrderEntity> PowerReradyQuery = ydOrderDao.selectList(powerNowQuery);
+ if(CollUtil.isNotEmpty(PowerReradyQuery)){
+ for(YdOrderEntity order : PowerReradyQuery){
+ int quantity = order.getQuantity();
+ powerReady = powerReady + quantity;
+ }
+ }
+ orderAllInfoVo.setPowerReady(powerReady);
+ return Result.ok(orderAllInfoVo);
+ }
+
+ /**
+ * 去加减币币账户余额,减少产品的剩余数目
+ * @param memberId
+ * @param multiplyUsdt
+ * @param productId
+ * @param quantity
+ * @return
+ */
+ public synchronized boolean updateWalletCoin(Long memberId,BigDecimal multiplyUsdt,Long productId,BigDecimal quantity){
+ MemberWalletCoinEntity memberWalletCoinEntity = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, "USDT");
+ BigDecimal availableBalance = memberWalletCoinEntity.getAvailableBalance();
+ BigDecimal totalBalance = memberWalletCoinEntity.getTotalBalance();
+ BigDecimal availableSubtract = availableBalance.subtract(multiplyUsdt);
+ BigDecimal totalSubtract = totalBalance.subtract(multiplyUsdt);
+ boolean flag = false;
+ if(availableSubtract.compareTo(BigDecimal.ZERO) >= 0){
+ //更新余额
+ memberWalletCoinEntity.setAvailableBalance(availableSubtract);
+ memberWalletCoinEntity.setTotalBalance(totalSubtract);
+ memberWalletCoinDao.updateById(memberWalletCoinEntity);
+ //减少产品的剩余数量
+ YdProductEntity ydProductEntity = ydProductDao.selectById(productId);
+ BigDecimal surplusT = ydProductEntity.getSurplusT();
+ BigDecimal subtract = surplusT.subtract(quantity);
+ ydProductEntity.setSurplusT(subtract);
+ ydProductDao.updateById(ydProductEntity);
+ flag = true;
+ }
+ return flag;
+ }
+
}
diff --git a/src/main/java/com/xcong/excoin/modules/yunding/service/YunDingService.java b/src/main/java/com/xcong/excoin/modules/yunding/service/YunDingService.java
index f832ac4..3c7391a 100644
--- a/src/main/java/com/xcong/excoin/modules/yunding/service/YunDingService.java
+++ b/src/main/java/com/xcong/excoin/modules/yunding/service/YunDingService.java
@@ -1,8 +1,25 @@
package com.xcong.excoin.modules.yunding.service;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.xcong.excoin.common.response.Result;
+import com.xcong.excoin.modules.yunding.dto.PayProductDto;
+import com.xcong.excoin.modules.yunding.dto.YdOrderListDto;
+import com.xcong.excoin.modules.yunding.dto.YdProductListDto;
import com.xcong.excoin.modules.yunding.entity.YdOrderEntity;
public interface YunDingService extends IService<YdOrderEntity> {
+ Result findAllInfo();
+
+ Result getProductList(YdProductListDto ydProductListDto);
+
+ Result findProductInfoById(Long id);
+
+ Result getBalance();
+
+ Result payProduct(PayProductDto payProductDto);
+
+ Result getOrderList(YdOrderListDto ydOrderListDto);
+
+ Result findOrderAllInfo();
}
diff --git a/src/main/java/com/xcong/excoin/modules/yunding/vo/OrderAllInfoVo.java b/src/main/java/com/xcong/excoin/modules/yunding/vo/OrderAllInfoVo.java
new file mode 100644
index 0000000..eec1263
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/yunding/vo/OrderAllInfoVo.java
@@ -0,0 +1,26 @@
+package com.xcong.excoin.modules.yunding.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "OrderAllInfoVo", description = "产品详情")
+public class OrderAllInfoVo {
+
+ //昨日收益
+ @ApiModelProperty("昨日收益")
+ private String lastdayProfit;
+
+ //当前拥有算力
+ @ApiModelProperty("当前拥有算力")
+ private int powerNow;
+ //当前待生效拥有算力
+ @ApiModelProperty("当前待生效拥有算力")
+ private int powerReady;
+
+ //历史总受益
+ @ApiModelProperty("历史总受益")
+ private String allProfit;
+
+}
diff --git a/src/main/java/com/xcong/excoin/modules/yunding/vo/YdBasicSettingVo.java b/src/main/java/com/xcong/excoin/modules/yunding/vo/YdBasicSettingVo.java
new file mode 100644
index 0000000..328594c
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/yunding/vo/YdBasicSettingVo.java
@@ -0,0 +1,29 @@
+package com.xcong.excoin.modules.yunding.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "YdBasicSettingVo", description = "产品详情")
+public class YdBasicSettingVo {
+
+ //全网算力
+ @ApiModelProperty("全网算力")
+ private String allPower;
+
+ //日平均收益
+ @ApiModelProperty("日平均收益")
+ private String profitDay;
+
+ //矿机模式
+ @ApiModelProperty("矿机模式")
+ private String powerModel;
+
+ //24小时爆块
+ @ApiModelProperty("24小时爆块")
+ private String explosiveBlock;
+
+}
diff --git a/src/main/java/com/xcong/excoin/modules/yunding/vo/YdOrderVo.java b/src/main/java/com/xcong/excoin/modules/yunding/vo/YdOrderVo.java
new file mode 100644
index 0000000..fc22349
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/yunding/vo/YdOrderVo.java
@@ -0,0 +1,100 @@
+package com.xcong.excoin.modules.yunding.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 = "YdOrderVo", description = "订单详情")
+public class YdOrderVo {
+
+
+ @ApiModelProperty("订单ID")
+ private Long id;
+
+ /**
+ * 产品ID
+ */
+
+ @ApiModelProperty("产品ID")
+ private Long productId;
+
+ /**
+ * 购买数量
+ */
+
+ @ApiModelProperty("购买数量")
+ private Integer quantity;
+
+ /**
+ * 总金额
+ */
+
+ @ApiModelProperty("总金额")
+ private BigDecimal amount;
+
+ /**
+ * 累计收益
+ */
+
+ @ApiModelProperty("累计收益")
+ private BigDecimal totalProfit;
+
+ /**
+ * 今日收益
+ */
+
+ @ApiModelProperty("今日收益")
+ private BigDecimal todayProfit;
+
+ /**
+ * 1:待生效 2:生效中 3:已终止
+ */
+
+ @ApiModelProperty("1:待生效 2:生效中 3:已终止")
+ private Integer state;
+
+ /**
+ * 购买日期
+ */
+
+ @ApiModelProperty("购买日期")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private Date buyTime;
+
+ /**
+ * 生效日期
+ */
+
+ @ApiModelProperty("生效日期")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private Date workTime;
+
+ /**
+ * 终止日期
+ */
+
+ @ApiModelProperty("终止日期")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private Date endTime;
+
+ /**
+ * 名称
+ */
+ @ApiModelProperty("名称")
+ private String name;
+ /**
+ * 产品售价
+ */
+ @ApiModelProperty("产品售价")
+ private BigDecimal salePrice;
+ /**
+ * 1:期货 2:现货
+ */
+ @ApiModelProperty("产品类型 1:期货 2:现货")
+ private Integer typeCoin;
+}
diff --git a/src/main/java/com/xcong/excoin/modules/yunding/vo/YdProductVo.java b/src/main/java/com/xcong/excoin/modules/yunding/vo/YdProductVo.java
new file mode 100644
index 0000000..427b509
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/yunding/vo/YdProductVo.java
@@ -0,0 +1,128 @@
+package com.xcong.excoin.modules.yunding.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 = "YdProductVo", description = "产品详情")
+public class YdProductVo {
+
+ @ApiModelProperty("产品ID")
+ private Long id;
+
+ /**
+ * 名称
+ */
+ @ApiModelProperty("名称")
+ private String name;
+
+ /**
+ * 编码
+ */
+ @ApiModelProperty("编码")
+ private String code;
+
+ /**
+ * 预计产出
+ */
+ @ApiModelProperty("预计产出")
+ private BigDecimal profitT;
+
+ /**
+ * 产品总数
+ */
+ @ApiModelProperty("产品总数")
+ private BigDecimal totalT;
+
+ /**
+ * 剩余产品数量
+ */
+ @ApiModelProperty("剩余产品数量")
+ private BigDecimal surplusT;
+
+ /**
+ * 产品售价
+ */
+ @ApiModelProperty("产品售价")
+ private BigDecimal salePrice;
+
+ /**
+ * 服务周期
+ */
+ @ApiModelProperty("服务周期")
+ private Integer proCycle;
+
+ /**
+ * 管理费
+ */
+ @ApiModelProperty("管理费")
+ private BigDecimal manageExpense;
+
+ /**
+ * 上架天数
+ */
+ @ApiModelProperty("上架天数")
+ private Integer shelvesDays;
+
+ /**
+ * 单位
+ */
+ @ApiModelProperty("单位")
+ private String proUnit;
+
+ /**
+ * 产品币种
+ */
+ @ApiModelProperty("产品币种")
+ private String coin;
+
+ /**
+ * 限购
+ */
+ @ApiModelProperty("限购")
+ private Integer limitedNum;
+
+ /**
+ * 1:体验 2:正式
+ */
+ @ApiModelProperty("1:体验 2:正式")
+ private Integer type;
+
+ /**
+ * 1:期货 2:现货
+ */
+ @ApiModelProperty("产品类型 1:期货 2:现货")
+ private Integer typeCoin;
+
+ /**
+ * 优惠 1:免除电费
+ */
+ @ApiModelProperty("优惠 1:免除电费")
+ private Integer favourable;
+
+ /**
+ * 当前日期
+ */
+ @ApiModelProperty("当前日期")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private Date nowTime;
+
+ /**
+ * 生效日期
+ */
+ @ApiModelProperty("生效日期")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private Date workTime;
+
+ /**
+ * 终止日期
+ */
+ @ApiModelProperty("终止日期")
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private Date endTime;
+}
diff --git a/src/main/resources/mapper/yunding/YdBasicSettingDao.xml b/src/main/resources/mapper/yunding/YdBasicSettingDao.xml
new file mode 100644
index 0000000..e4b83ea
--- /dev/null
+++ b/src/main/resources/mapper/yunding/YdBasicSettingDao.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.xcong.excoin.modules.yunding.dao.YdBasicSettingDao">
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/yunding/YdOrderDao.xml b/src/main/resources/mapper/yunding/YdOrderDao.xml
index acc7a49..e633040 100644
--- a/src/main/resources/mapper/yunding/YdOrderDao.xml
+++ b/src/main/resources/mapper/yunding/YdOrderDao.xml
@@ -4,4 +4,21 @@
<mapper namespace="com.xcong.excoin.modules.yunding.dao.YdOrderDao">
+ <select id="getOrderList" resultType="com.xcong.excoin.modules.yunding.vo.YdOrderVo">
+ SELECT
+ *
+ FROM
+ yd_order a
+ left join yd_product b on b.id = a.product_id
+ <if test="record != null">
+ <where>
+ and a.member_id = #{record.memberId}
+ <if test="record.state != null" >
+ and a.state=#{record.state}
+ </if>
+ </where>
+ </if>
+ ORDER BY a.create_time DESC
+ </select>
+
</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/yunding/YdProductDao.xml b/src/main/resources/mapper/yunding/YdProductDao.xml
index 18158de..68fd1aa 100644
--- a/src/main/resources/mapper/yunding/YdProductDao.xml
+++ b/src/main/resources/mapper/yunding/YdProductDao.xml
@@ -4,4 +4,25 @@
<mapper namespace="com.xcong.excoin.modules.yunding.dao.YdProductDao">
+ <select id="getProductList" resultType="com.xcong.excoin.modules.yunding.vo.YdProductVo">
+ select
+ *
+ from yd_product
+ <if test="record != null">
+ <where>
+ <if test="record.typeCoin != null" >
+ and type_coin=#{record.typeCoin}
+ </if>
+ </where>
+ </if>
+ order by type,id asc
+ </select>
+
+ <select id="findProductInfoById" resultType="com.xcong.excoin.modules.yunding.vo.YdProductVo">
+ select
+ *
+ from yd_product
+ where id = #{id}
+ </select>
+
</mapper>
\ No newline at end of file
--
Gitblit v1.9.1