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()); } 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(); } } src/main/java/com/xcong/excoin/modules/yunding/dao/YdBasicSettingDao.java
New file @@ -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> { } 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); } 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); } src/main/java/com/xcong/excoin/modules/yunding/dto/PayProductDto.java
New file @@ -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; } src/main/java/com/xcong/excoin/modules/yunding/dto/YdOrderListDto.java
New file @@ -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; } src/main/java/com/xcong/excoin/modules/yunding/dto/YdProductListDto.java
New file @@ -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; } src/main/java/com/xcong/excoin/modules/yunding/entity/YdBasicSettingEntity.java
New file @@ -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; } 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; /** * 生效日期 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; } 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; } } 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(); } src/main/java/com/xcong/excoin/modules/yunding/vo/OrderAllInfoVo.java
New file @@ -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; } src/main/java/com/xcong/excoin/modules/yunding/vo/YdBasicSettingVo.java
New file @@ -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; } src/main/java/com/xcong/excoin/modules/yunding/vo/YdOrderVo.java
New file @@ -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; } src/main/java/com/xcong/excoin/modules/yunding/vo/YdProductVo.java
New file @@ -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; } src/main/resources/mapper/yunding/YdBasicSettingDao.xml
New file @@ -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> 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> 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>