From 8aa47d90a9596c34def404a29b50eddc2dac756f Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Fri, 25 Feb 2022 13:19:47 +0800 Subject: [PATCH] 20222223 --- src/main/resources/mapper/walletCoinOrder/ZhiYaRecordDao.xml | 28 ++++ src/main/java/com/xcong/excoin/modules/coin/parameter/vo/UsdtToGusdVo.java | 7 + src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java | 79 ++++++++++-- src/main/java/com/xcong/excoin/modules/coin/parameter/vo/ZhiyaInfoVo.java | 6 + src/main/java/com/xcong/excoin/modules/coin/dao/ZhiyaRewardDao.java | 7 + src/main/java/com/xcong/excoin/modules/coin/parameter/vo/ZhiyaRewardVo.java | 30 +++++ src/main/java/com/xcong/excoin/modules/coin/parameter/dto/ZhiyaRewardRecordsPageDto.java | 26 ++++ src/main/java/com/xcong/excoin/modules/coin/service/CoinService.java | 5 src/main/java/com/xcong/excoin/modules/coin/dao/ZhiYaRecordDao.java | 11 + src/main/java/com/xcong/excoin/modules/coin/controller/CoinController.java | 15 ++ src/main/java/com/xcong/excoin/modules/coin/entity/ZhiyaRewardEntity.java | 38 ++++++ src/main/java/com/xcong/excoin/quartz/job/ZhiyarRewardJob.java | 33 +++++ src/test/java/com/xcong/excoin/GuijiTest.java | 42 +++++++ src/main/java/com/xcong/excoin/modules/coin/parameter/dto/UsdtToGusdDto.java | 4 14 files changed, 311 insertions(+), 20 deletions(-) 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 94e5eb3..499787e 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 @@ -5,6 +5,7 @@ import javax.annotation.Resource; import javax.validation.Valid; +import com.xcong.excoin.common.annotations.SubmitRepeat; import com.xcong.excoin.modules.coin.parameter.dto.*; import com.xcong.excoin.modules.coin.parameter.vo.*; @@ -206,6 +207,7 @@ */ @ApiOperation(value="USDT兌換成GUSD", notes="USDT兌換成GUSD") @PostMapping(value="/usdtToGusd") + @SubmitRepeat public Result usdtToGusd(@RequestBody @Valid UsdtToGusdDto usdtToGusdDto) { BigDecimal balance = usdtToGusdDto.getBalance(); Integer type = usdtToGusdDto.getType(); @@ -228,6 +230,7 @@ */ @ApiOperation(value="质押GUSD", notes="质押GUSD") @PostMapping(value="/zhiYaGusd") + @SubmitRepeat public Result zhiYaGusd(@RequestBody @Valid ZhiYaGusdDto zhiYaGusdDto) { BigDecimal balance = zhiYaGusdDto.getBalance(); return coinService.zhiYaGusd(balance); @@ -249,11 +252,23 @@ */ @ApiOperation(value="赎回GUSD", notes="赎回GUSD") @PostMapping(value="/shuhuiGusd") + @SubmitRepeat public Result shuhuiGusd(@RequestBody @Valid ShuhuiGusdDto shuhuiGusdDto) { BigDecimal balance = shuhuiGusdDto.getBalance(); Long id = shuhuiGusdDto.getId(); return coinService.shuhuiGusd(balance,id); } + + /** + * 获取质押GUSD奖励记录 + * @return + */ + @ApiOperation(value="获取质押GUSD奖励记录", notes="获取质押GUSD奖励记录") + @ApiResponses({@ApiResponse( code = 200, message = "success", response = ZhiyaRewardVo.class)}) + @PostMapping(value="/getZhiyaReward") + public Result getZhiyaReward(@RequestBody @Valid ZhiyaRewardRecordsPageDto recordsPageDto) { + return coinService.getZhiyaReward(recordsPageDto); + } } 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 26dd1de..71da7f4 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 @@ -6,9 +6,12 @@ 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.entity.ZhiyaRewardEntity; import com.xcong.excoin.modules.coin.parameter.vo.ZhiyaInfoVo; +import com.xcong.excoin.modules.coin.parameter.vo.ZhiyaRewardVo; import org.apache.ibatis.annotations.Param; +import java.util.Date; import java.util.List; public interface ZhiYaRecordDao extends BaseMapper<ZhiYaRecordEntity> { @@ -22,4 +25,12 @@ List<ZhiyaInfoVo> selectByMemberId(@Param("memberId")Long memberId); IPage<ZhiyaInfoVo> selectByMemberIdInPage(Page<ZhiyaInfoVo> page, @Param("record") ZhiYaEntity zhiya); + + IPage<ZhiyaRewardVo> selectZhiyaRewardByMemberIdInPage(Page<ZhiyaRewardVo> page, @Param("record") ZhiyaRewardEntity zhiyaRewardEntity); + + List<ZhiYaRecordEntity> selectZhiYaRewardByStatueAndTime(@Param("orderStatus")int i, @Param("now")Date date); + + Long selectTotalGusdByStatueAndTime(@Param("orderStatus")int i, @Param("now")Date date); + +// void selectZhiYaRewardByStatueAndTime(@Param("orderStatus")int i, @Param("now")Date date); } diff --git a/src/main/java/com/xcong/excoin/modules/coin/dao/ZhiyaRewardDao.java b/src/main/java/com/xcong/excoin/modules/coin/dao/ZhiyaRewardDao.java new file mode 100644 index 0000000..0e972ca --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/coin/dao/ZhiyaRewardDao.java @@ -0,0 +1,7 @@ +package com.xcong.excoin.modules.coin.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.xcong.excoin.modules.coin.entity.ZhiyaRewardEntity; + +public interface ZhiyaRewardDao extends BaseMapper<ZhiyaRewardEntity> { +} diff --git a/src/main/java/com/xcong/excoin/modules/coin/entity/ZhiyaRewardEntity.java b/src/main/java/com/xcong/excoin/modules/coin/entity/ZhiyaRewardEntity.java new file mode 100644 index 0000000..ef3a7d9 --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/coin/entity/ZhiyaRewardEntity.java @@ -0,0 +1,38 @@ +package com.xcong.excoin.modules.coin.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.xcong.excoin.common.system.base.BaseEntity; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 质押记录表 + */ +@Data +@TableName("zhiya_reward") +public class ZhiyaRewardEntity extends BaseEntity { + /** + * + */ + private static final long serialVersionUID = 1L; + + /** + * 会员ID + */ + private Long memberId; + + /** + * 质押ID + */ + private Long recordId; + /** + * 质押编号 + */ + private String recordNo; + /** + * 奖励金额 + */ + private BigDecimal rewardAmout; + +} 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 43efc70..d1270bc 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 = "转换类型 1:USDT转GUSD 2GUSD转USDT") - @ApiModelProperty(value = "币种", example = "1") + @NotNull(message = "转换类型不能为空") + @ApiModelProperty(value = "转换类型1:USDT转GUSD 2GUSD转USDT", example = "1") private Integer type; } diff --git a/src/main/java/com/xcong/excoin/modules/coin/parameter/dto/ZhiyaRewardRecordsPageDto.java b/src/main/java/com/xcong/excoin/modules/coin/parameter/dto/ZhiyaRewardRecordsPageDto.java new file mode 100644 index 0000000..65eddae --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/coin/parameter/dto/ZhiyaRewardRecordsPageDto.java @@ -0,0 +1,26 @@ +package com.xcong.excoin.modules.coin.parameter.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 = "ZhiyaRewardRecordsPageDto", description = "参数接受类") +public class ZhiyaRewardRecordsPageDto { + + @NotNull(message = "编号不能为空") + @ApiModelProperty(value = "编号", example = "1") + private String orderNo; + + @NotNull + @Min(1) + @ApiModelProperty(value = "第几页", example = "1") + private int pageNum; + + @NotNull + @ApiModelProperty(value = "每页数量", example = "10") + private int pageSize; +} 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 index 0d721e8..d854aaa 100644 --- 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 @@ -1,9 +1,12 @@ 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 = "UsdtToGusdVo", description = "返回参数类") @@ -23,4 +26,8 @@ * 状态【0:待审核 1:成功2:失败】 */ private int status; + + @ApiModelProperty(value = "时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; } 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 index c10007a..63c3605 100644 --- 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 @@ -34,6 +34,12 @@ */ @ApiModelProperty(value = "数量") private BigDecimal zhiyaCnt; + + /** + * 总数 + */ + @ApiModelProperty(value = "总数") + private BigDecimal rewardCnt; /** * 状态 1:生效中 2:已赎回 */ diff --git a/src/main/java/com/xcong/excoin/modules/coin/parameter/vo/ZhiyaRewardVo.java b/src/main/java/com/xcong/excoin/modules/coin/parameter/vo/ZhiyaRewardVo.java new file mode 100644 index 0000000..61f79be --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/coin/parameter/vo/ZhiyaRewardVo.java @@ -0,0 +1,30 @@ +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 = "ZhiyaRewardVo", description = "返回参数类") +public class ZhiyaRewardVo { + + /** + * 质押编号 + */ + @ApiModelProperty(value = "质押编号") + private String recordNo; + /** + * 奖励金额 + */ + @ApiModelProperty(value = "奖励金额") + private BigDecimal rewardAmout; + + @ApiModelProperty(value = "时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + +} 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 c5e5e96..e506fb8 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 @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.xcong.excoin.common.response.Result; import com.xcong.excoin.modules.coin.parameter.dto.RecordsPageDto; +import com.xcong.excoin.modules.coin.parameter.dto.ZhiyaRewardRecordsPageDto; import com.xcong.excoin.modules.member.entity.MemberWalletCoinEntity; import org.apache.ibatis.annotations.Param; @@ -53,4 +54,8 @@ Result getZhiyaRecords(RecordsPageDto recordsPageDto); Result getusdtToGusdRecords(RecordsPageDto recordsPageDto); + + void grantZhiyaAmount(); + + Result getZhiyaReward(ZhiyaRewardRecordsPageDto 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 54eed4f..fa81e53 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 @@ -9,8 +9,9 @@ import cn.hutool.core.date.DateUtil; import com.xcong.excoin.modules.coin.dao.ZhiYaDao; 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.dao.ZhiyaRewardDao; +import com.xcong.excoin.modules.coin.entity.*; +import com.xcong.excoin.modules.coin.parameter.dto.ZhiyaRewardRecordsPageDto; import com.xcong.excoin.modules.coin.parameter.vo.*; import com.xcong.excoin.modules.platform.entity.PlatformCnyUsdtExchangeEntity; import org.springframework.stereotype.Service; @@ -24,8 +25,6 @@ import com.xcong.excoin.common.enumerates.MemberWalletCoinEnum; import com.xcong.excoin.common.response.Result; import com.xcong.excoin.modules.coin.dao.MemberAccountMoneyChangeDao; -import com.xcong.excoin.modules.coin.entity.MemberAccountMoneyChange; -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.service.CoinService; @@ -61,6 +60,8 @@ MemberWalletAgentDao memberWalletAgentDao; @Resource ZhiYaRecordDao zhiYaRecordDao; + @Resource + ZhiyaRewardDao zhiyaRewardDao; @Resource ZhiYaDao zhiYaDao; @Resource @@ -612,6 +613,7 @@ } @Override + @Transactional public Result usdtToGusd(BigDecimal balance,Integer type) { //获取用户ID Long memberId = LoginUserUtils.getAppLoginUser().getId(); @@ -722,6 +724,7 @@ } @Override + @Transactional public Result zhiYaGusd(BigDecimal balance) { //获取用户ID Long memberId = LoginUserUtils.getAppLoginUser().getId(); @@ -751,8 +754,8 @@ return Result.fail(MessageSourceUtils.getString("member_service_0096")); } //产生质押单,当前有的话,累加质押数量 - ZhiYaRecordEntity zhiYaRecord = zhiYaRecordDao.selectByMemberIdAndOrderStatus(memberId,1); - if(ObjectUtil.isEmpty(zhiYaRecord)){ +// ZhiYaRecordEntity zhiYaRecord = zhiYaRecordDao.selectByMemberIdAndOrderStatus(memberId,1); +// if(ObjectUtil.isEmpty(zhiYaRecord)){ //产生一条质押记录 ZhiYaRecordEntity zhiYaRecordEntity = new ZhiYaRecordEntity(); zhiYaRecordEntity.setMemberId(memberId); @@ -764,18 +767,19 @@ Date newDate = DateUtil.offsetDay(date, 1); zhiYaRecordEntity.setEffectDate(newDate); zhiYaRecordDao.insert(zhiYaRecordEntity); - }else{ - zhiYaRecord.setZhiyaCnt(zhiYaRecord.getZhiyaCnt().add(balance)); - Date date = new Date(); - Date newDate = DateUtil.offsetDay(date, 1); - zhiYaRecord.setEffectDate(newDate); - zhiYaRecordDao.updateById(zhiYaRecord); - } +// }else{ +// zhiYaRecord.setZhiyaCnt(zhiYaRecord.getZhiyaCnt().add(balance)); +// Date date = new Date(); +// Date newDate = DateUtil.offsetDay(date, 1); +// zhiYaRecord.setEffectDate(newDate); +// zhiYaRecordDao.updateById(zhiYaRecord); +// } return Result.ok(MessageSourceUtils.getString("member_service_0024")); } @Override + @Transactional public Result shuhuiGusd(BigDecimal balance,Long id) { //获取用户ID Long memberId = LoginUserUtils.getAppLoginUser().getId(); @@ -794,10 +798,11 @@ 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); +// zhiYaRecordEntity.setZhiyaCnt(zhiyaCnt.subtract(balance)); + if(zhiyaCnt.compareTo(balance) != 0){ + return Result.fail(MessageSourceUtils.getString("zhiya_service_0001")); } + zhiYaRecordEntity.setOrderStatus(2); zhiYaRecordDao.updateById(zhiYaRecordEntity); //赎回Gusd,质押数量进入可用余额, ZhiYaEntity zhiya = zhiYaDao.selectByMemberId(memberId); @@ -856,6 +861,48 @@ return Result.ok(lists); } + @Override + @Transactional + public void grantZhiyaAmount() { + //获取每日总奖励 + BigDecimal gusdReward = new BigDecimal(redisUtils.getString("GUSDREWARD")); + //获取每日质押总数 + Long totalGusd = zhiYaRecordDao.selectTotalGusdByStatueAndTime(1,new Date()); + BigDecimal totalGusdBigDecimal = new BigDecimal(totalGusd); + if(totalGusdBigDecimal.compareTo(BigDecimal.ZERO) > 0){ + //平均一个获取奖励数量 + BigDecimal divide = gusdReward.divide(totalGusdBigDecimal,2, BigDecimal.ROUND_HALF_UP); + //获取今天之前满足发放奖励的全部质押单 + //生效时间小于当前时间 + //状态为生效中 + List<ZhiYaRecordEntity> lists = zhiYaRecordDao.selectZhiYaRewardByStatueAndTime(1,new Date()); + if(CollUtil.isNotEmpty(lists)){ + for(ZhiYaRecordEntity zhiYaRecordEntity : lists){ + ZhiyaRewardEntity zhiyaRewardEntity = new ZhiyaRewardEntity(); + zhiyaRewardEntity.setRecordId(zhiYaRecordEntity.getId()); + zhiyaRewardEntity.setRecordNo(zhiYaRecordEntity.getOrderNo()); + zhiyaRewardEntity.setMemberId(zhiYaRecordEntity.getMemberId()); + zhiyaRewardEntity.setRewardAmout(divide.multiply(zhiYaRecordEntity.getZhiyaCnt())); + zhiyaRewardDao.insert(zhiyaRewardEntity); + } + } + } + } + + @Override + public Result getZhiyaReward(ZhiyaRewardRecordsPageDto recordsPageDto) { + + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + + Page<ZhiyaRewardVo> page = new Page<>(recordsPageDto.getPageNum(), recordsPageDto.getPageSize()); + ZhiyaRewardEntity zhiyaRewardEntity = new ZhiyaRewardEntity(); + zhiyaRewardEntity.setMemberId(memberId); + zhiyaRewardEntity.setRecordNo(recordsPageDto.getOrderNo()); + IPage<ZhiyaRewardVo> lists = zhiYaRecordDao.selectZhiyaRewardByMemberIdInPage(page, zhiyaRewardEntity); + return Result.ok(lists); + } + public String generateSimpleSerialno(String userId) { StringBuilder sb = new StringBuilder(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); diff --git a/src/main/java/com/xcong/excoin/quartz/job/ZhiyarRewardJob.java b/src/main/java/com/xcong/excoin/quartz/job/ZhiyarRewardJob.java new file mode 100644 index 0000000..e9c4a46 --- /dev/null +++ b/src/main/java/com/xcong/excoin/quartz/job/ZhiyarRewardJob.java @@ -0,0 +1,33 @@ +package com.xcong.excoin.quartz.job; + +import com.xcong.excoin.modules.coin.service.CoinService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * 质押 + */ +@Slf4j +@Component +public class ZhiyarRewardJob { + + + @Resource + private CoinService coinService; + + /** + * 质押奖励计算 + */ + @Scheduled(cron = "0 0/1 * * * ? ") + public void updateDoingPrice() { + log.info("#质押奖励计算#"); + try { + coinService.grantZhiyaAmount(); + } catch (Exception e) { + log.error("#质押奖励计算错误#", e); + } + } +} diff --git a/src/main/resources/mapper/walletCoinOrder/ZhiYaRecordDao.xml b/src/main/resources/mapper/walletCoinOrder/ZhiYaRecordDao.xml index 5c5b215..45c778d 100644 --- a/src/main/resources/mapper/walletCoinOrder/ZhiYaRecordDao.xml +++ b/src/main/resources/mapper/walletCoinOrder/ZhiYaRecordDao.xml @@ -20,15 +20,39 @@ </select> <select id="selectByMemberIdInPage" resultType="com.xcong.excoin.modules.coin.parameter.vo.ZhiyaInfoVo"> - select * from zhiya_record + select a.*,(SELECT ifnull(sum(b.reward_amout),0) FROM zhiya_reward b where b.member_id = #{record.memberId} and b.record_no = a.order_no) rewardCnt from zhiya_record a <if test="record != null"> <where> <if test="record.memberId != null" > - and member_id=#{record.memberId} + and a.member_id=#{record.memberId} </if> </where> </if> order by id desc </select> + <select id="selectZhiyaRewardByMemberIdInPage" resultType="com.xcong.excoin.modules.coin.parameter.vo.ZhiyaRewardVo"> + select * from zhiya_reward + <if test="record != null"> + <where> + <if test="record.memberId != null" > + and member_id=#{record.memberId} + </if> + <if test="record.recordNo != null" > + and record_no=#{record.recordNo} + </if> + </where> + </if> + order by id desc + </select> + + <select id="selectZhiYaRewardByStatueAndTime" resultType="com.xcong.excoin.modules.coin.entity.ZhiYaRecordEntity"> + SELECT a.* FROM zhiya_record a where a.order_status= #{orderStatus} and #{now} > a.effect_date + </select> + + + <select id="selectTotalGusdByStatueAndTime" resultType="long"> + SELECT ifnull(sum(a.zhiya_cnt),0) FROM zhiya_record a where a.order_status= #{orderStatus} and #{now} > a.effect_date + </select> + </mapper> diff --git a/src/test/java/com/xcong/excoin/GuijiTest.java b/src/test/java/com/xcong/excoin/GuijiTest.java index 295adcf..bab0e7c 100644 --- a/src/test/java/com/xcong/excoin/GuijiTest.java +++ b/src/test/java/com/xcong/excoin/GuijiTest.java @@ -2,11 +2,18 @@ import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.concurrent.ExecutionException; import javax.annotation.Resource; +import com.xcong.excoin.modules.coin.dao.ZhiYaDao; +import com.xcong.excoin.modules.coin.dao.ZhiYaRecordDao; +import com.xcong.excoin.modules.coin.dao.ZhiyaRewardDao; +import com.xcong.excoin.modules.coin.entity.ZhiYaRecordEntity; +import com.xcong.excoin.modules.coin.entity.ZhiyaRewardEntity; +import com.xcong.excoin.utils.RedisUtils; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; @@ -40,6 +47,14 @@ private MemberCoinAddressDao memberCoinAddressDao; @Resource private MemberWalletCoinDao memberWalletCoinDao; + @Resource + ZhiYaRecordDao zhiYaRecordDao; + @Resource + ZhiyaRewardDao zhiyaRewardDao; + @Resource + ZhiYaDao zhiYaDao; + @Resource + RedisUtils redisUtils; public void pool() throws ExecutionException, InterruptedException { //List<MemberCoinChargeEntity> list = memberCoinChargeDao.selectAllBySymbolAndTag(CoinTypeEnum.USDT.name(), "ERC20", 1); @@ -117,6 +132,33 @@ } } + @Test + public void reward(){ + //获取每日总奖励 + BigDecimal gusdReward = new BigDecimal(redisUtils.getString("GUSDREWARD")); + //获取每日质押总数 + Long totalGusd = zhiYaRecordDao.selectTotalGusdByStatueAndTime(1,new Date()); + BigDecimal totalGusdBigDecimal = new BigDecimal(totalGusd); + if(totalGusdBigDecimal.compareTo(BigDecimal.ZERO) > 0){ + //平均一个获取奖励数量 + BigDecimal divide = gusdReward.divide(totalGusdBigDecimal); + //获取今天之前满足发放奖励的全部质押单 + //生效时间小于当前时间 + //状态为生效中 + List<ZhiYaRecordEntity> lists = zhiYaRecordDao.selectZhiYaRewardByStatueAndTime(1,new Date()); + if(CollUtil.isNotEmpty(lists)){ + for(ZhiYaRecordEntity zhiYaRecordEntity : lists){ + ZhiyaRewardEntity zhiyaRewardEntity = new ZhiyaRewardEntity(); + zhiyaRewardEntity.setRecordId(zhiYaRecordEntity.getId()); + zhiyaRewardEntity.setRecordNo(zhiYaRecordEntity.getOrderNo()); + zhiyaRewardEntity.setMemberId(zhiYaRecordEntity.getMemberId()); + zhiyaRewardEntity.setRewardAmout(divide.multiply(zhiYaRecordEntity.getZhiyaCnt())); + zhiyaRewardDao.insert(zhiyaRewardEntity); + } + } + } + } + } -- Gitblit v1.9.1