src/main/java/com/xcong/excoin/common/enumerates/CoinTypeEnum.java
@@ -7,6 +7,6 @@ */ public enum CoinTypeEnum { // USDT, BTC, ETH, LTC, EOS, XRP, BCH, ETC,BEA,GUSD,GOLDRICE, USDT, BTC, ETH, LTC, EOS, XRP, BCH, ETC,GOLDRICE, USDT, BTC, ETH, LTC, EOS, XRP, BCH, ETC,GRICE, // USDT, BTC, ETH, LTC, EOS, XRP, BCH, ETC,GUSD,GOLDRICE, } src/main/java/com/xcong/excoin/common/enumerates/SymbolEnum.java
@@ -9,7 +9,7 @@ public enum SymbolEnum { // BEA("BEA", "BEA/USDT") // ,GUSD("GUSD", "GUSD/USDT") GOLDRICE("GOLDRICE", "GOLDRICE/USDT") GRICE("GRICE", "GRICE/USDT") ,BTC("BTC", "BTC/USDT") ,ETH("ETH", "ETH/USDT") ,LTC("LTC", "LTC/USDT") src/main/java/com/xcong/excoin/modules/coin/controller/GbzOrderController.java
@@ -74,7 +74,7 @@ } if (Integer.parseInt(total) < gbzAddDto.getCount()) { return Result.fail("GOLDRICE数量不足"); return Result.fail("GRICE数量不足"); } GbzOrderEntity gbzOrder = new GbzOrderEntity(); @@ -82,14 +82,14 @@ gbzOrder.setAmount(amount); gbzOrder.setCnt(gbzAddDto.getCount()); gbzOrder.setMemberId(loginUser.getId()); gbzOrder.setSymbol(CoinTypeEnum.GOLDRICE.name()); gbzOrder.setSymbol(CoinTypeEnum.GRICE.name()); gbzOrder.setStatus(1); gbzOrderDao.insert(gbzOrder); memberWalletCoinDao.updateBlockBalance(wallet.getId(), amount.negate(), BigDecimal.ZERO, 0); redisUtils.set("bea_coin_total", Integer.parseInt(total) - gbzAddDto.getCount()); LogRecordUtils.insertMemberAccountMoneyChange(loginUser.getId(), "购买GOLDRICE", amount, "USDT", 1, 1); LogRecordUtils.insertMemberAccountMoneyChange(loginUser.getId(), "购买GRICE", amount, "USDT", 1, 1); return Result.ok("购买成功"); } @@ -144,11 +144,11 @@ } MemberWalletCoinEntity wallet = memberWalletCoinDao.selectWalletCoinBymIdAndCode(member.getId(), CoinTypeEnum .GOLDRICE.name()); .GRICE.name()); memberWalletCoinDao.updateBlockBalance(wallet.getId(), totalAmount, BigDecimal.ZERO, 0); gbzOrderDao.updateStatus(member.getId()); LogRecordUtils.insertMemberAccountMoneyChange(member.getId(), "提取GOLDRICE到资产", totalAmount, "GOLDRICE", 1, 1); LogRecordUtils.insertMemberAccountMoneyChange(member.getId(), "提取GRICE到资产", totalAmount, "GRICE", 1, 1); return Result.ok("提取成功"); } } src/main/java/com/xcong/excoin/modules/coin/controller/ZhiyaController.java
New file @@ -0,0 +1,110 @@ package com.xcong.excoin.modules.coin.controller; import com.xcong.excoin.common.annotations.SubmitRepeat; import com.xcong.excoin.common.response.Result; import com.xcong.excoin.modules.coin.parameter.dto.*; import com.xcong.excoin.modules.coin.parameter.vo.MemberGusdInfoVo; import com.xcong.excoin.modules.coin.parameter.vo.UsdtToGusdVo; import com.xcong.excoin.modules.coin.parameter.vo.ZhiyaInfoVo; import com.xcong.excoin.modules.coin.parameter.vo.ZhiyaRewardVo; import com.xcong.excoin.modules.coin.service.CoinService; import com.xcong.excoin.modules.coin.service.ZhiyaService; 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.web.bind.annotation.*; import javax.annotation.Resource; import javax.validation.Valid; import java.math.BigDecimal; @Slf4j @Api(value = "质押接口", tags = "质押接口") @RestController @RequestMapping(value = "/api/zhiya") public class ZhiyaController { @Resource private ZhiyaService zhiyaService; /** * 获取GUSD账户信息 */ @ApiOperation(value="获取GUSD账户信息", notes="获取GUSD账户信息") @ApiResponses({@ApiResponse( code = 200, message = "success", response = MemberGusdInfoVo.class)}) @GetMapping(value="/findMemberGusdInfo") public Result findMemberGusdInfo() { return zhiyaService.findMemberGusdInfo(); } /** * USDT兌換成GUSD * @return */ @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(); return zhiyaService.usdtToGusd(balance,type); } /** * 获取兌換GUSD记录 * @return */ @ApiOperation(value="获取兌換GUSD记录", notes="获取兌換GUSD记录") @ApiResponses({@ApiResponse( code = 200, message = "success", response = UsdtToGusdVo.class)}) @PostMapping(value="/getusdtToGusdRecords") public Result getusdtToGusdRecords(@RequestBody @Valid RecordsPageDto recordsPageDto) { return zhiyaService.getusdtToGusdRecords(recordsPageDto); } /** * 质押GUSD */ @ApiOperation(value="质押GUSD", notes="质押GUSD") @PostMapping(value="/zhiYaGusd") @SubmitRepeat public Result zhiYaGusd(@RequestBody @Valid ZhiYaGusdDto zhiYaGusdDto) { BigDecimal balance = zhiYaGusdDto.getBalance(); return zhiyaService.zhiYaGusd(balance); } /** * 获取质押GUSD记录 * @return */ @ApiOperation(value="获取质押GUSD记录", notes="获取质押GUSD记录") @ApiResponses({@ApiResponse( code = 200, message = "success", response = ZhiyaInfoVo.class)}) @PostMapping(value="/getZhiyaRecords") public Result getZhiyaRecords(@RequestBody @Valid RecordsPageDto recordsPageDto) { return zhiyaService.getZhiyaRecords(recordsPageDto); } /** * 赎回GUSD */ @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 zhiyaService.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 zhiyaService.getZhiyaReward(recordsPageDto); } } src/main/java/com/xcong/excoin/modules/coin/service/ZhiyaService.java
New file @@ -0,0 +1,28 @@ package com.xcong.excoin.modules.coin.service; import com.baomidou.mybatisplus.extension.service.IService; import com.xcong.excoin.common.response.Result; import com.xcong.excoin.modules.coin.entity.ZhiYaEntity; import com.xcong.excoin.modules.coin.parameter.dto.RecordsPageDto; import com.xcong.excoin.modules.coin.parameter.dto.ZhiyaRewardRecordsPageDto; import java.math.BigDecimal; public interface ZhiyaService extends IService<ZhiYaEntity> { Result usdtToGusd(BigDecimal balance, Integer type); Result zhiYaGusd(BigDecimal balance); Result shuhuiGusd(BigDecimal balance,Long id); Result findMemberGusdInfo(); Result getZhiyaRecords(RecordsPageDto recordsPageDto); Result getusdtToGusdRecords(RecordsPageDto recordsPageDto); void grantZhiyaAmount(); Result getZhiyaReward(ZhiyaRewardRecordsPageDto recordsPageDto); } src/main/java/com/xcong/excoin/modules/coin/service/impl/BlockCoinServiceImpl.java
@@ -470,7 +470,7 @@ } Long memberId = memberCoinAddress.getMemberId(); // 查询钱包 并更新 MemberWalletCoinEntity walletCoinEntity = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, CoinTypeEnum.GOLDRICE.name()); MemberWalletCoinEntity walletCoinEntity = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, CoinTypeEnum.GRICE.name()); if (walletCoinEntity == null) { // 创建一个钱包 // 创建这个钱包 @@ -486,15 +486,15 @@ memberWalletCoinDao.updateBlockBalance(walletCoinEntity.getId(), balance, BigDecimal.ZERO, 0); String orderNo = insertCoinCharge(address, memberId, balance, CoinTypeEnum.GOLDRICE.name(), "", BigDecimal.ZERO, null); String orderNo = insertCoinCharge(address, memberId, balance, CoinTypeEnum.GRICE.name(), "", BigDecimal.ZERO, null); // 插入财务记录 LogRecordUtils.insertMemberAccountMoneyChange(memberId, "转入", balance, CoinTypeEnum.GOLDRICE.name(), 1, 1); LogRecordUtils.insertMemberAccountMoneyChange(memberId, "转入", balance, CoinTypeEnum.GRICE.name(), 1, 1); try { ThreadPoolUtils.sendDingTalk(5); MemberEntity member = memberDao.selectById(memberId); if (StrUtil.isNotBlank(member.getPhone())) { String amount = balance.toPlainString() + "GOLDRICE"; String amount = balance.toPlainString() + "GRICE"; Sms106Send.sendRechargeMsg(member.getPhone(), DateUtil.format(new Date(), DatePattern.NORM_DATETIME_MINUTE_PATTERN), orderNo); } else { SubMailSend.sendRechargeMail(member.getEmail(), DateUtil.format(new Date(), DatePattern.NORM_DATETIME_MINUTE_PATTERN), orderNo); src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java
@@ -150,7 +150,7 @@ memberWalletCoinlist.add(coin); // coin.setWalletCode(CoinTypeEnum.GUSD.toString()); // memberWalletCoinlist.add(coin); coin.setWalletCode(CoinTypeEnum.GOLDRICE.toString()); coin.setWalletCode(CoinTypeEnum.GRICE.toString()); memberWalletCoinlist.add(coin); MemberWalletCoinVo memberWalletCoinVo = new MemberWalletCoinVo(); @@ -774,6 +774,9 @@ // zhiYaRecord.setEffectDate(newDate); // zhiYaRecordDao.updateById(zhiYaRecord); // } //更新团队算力表 //只计算直属团队的算力信息 return Result.ok(MessageSourceUtils.getString("member_service_0024")); } @@ -864,7 +867,7 @@ @Override @Transactional public void grantZhiyaAmount() { //获取每日总奖励 //获取每日总产出 BigDecimal gusdReward = new BigDecimal(redisUtils.getString("GUSDREWARD")); //获取每日质押总数 Long totalGusd = zhiYaRecordDao.selectTotalGusdByStatueAndTime(1,new Date()); @@ -884,6 +887,10 @@ zhiyaRewardEntity.setMemberId(zhiYaRecordEntity.getMemberId()); zhiyaRewardEntity.setRewardAmout(divide.multiply(zhiYaRecordEntity.getZhiyaCnt())); zhiyaRewardDao.insert(zhiyaRewardEntity); //给团队上级发送奖励goldrice //给账户的冻结 } } } src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java
@@ -809,7 +809,7 @@ @Override public Result findAllWalletCoinOrder() { List<OrderCoinsDealEntity> orderCoinsDealEntities = orderCoinDealDao.selectAllCoinDealsOrderBySymbol(CoinTypeEnum.GOLDRICE.toString()); List<OrderCoinsDealEntity> orderCoinsDealEntities = orderCoinDealDao.selectAllCoinDealsOrderBySymbol(CoinTypeEnum.GRICE.toString()); return Result.ok(orderCoinsDealEntities); } src/main/java/com/xcong/excoin/modules/coin/service/impl/ZhiyaServiceImpl.java
New file @@ -0,0 +1,380 @@ package com.xcong.excoin.modules.coin.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.date.DateUtil; 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.enumerates.MemberWalletCoinEnum; import com.xcong.excoin.common.response.Result; import com.xcong.excoin.modules.coin.dao.MemberAccountMoneyChangeDao; 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.MemberAccountMoneyChange; 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.dto.RecordsPageDto; import com.xcong.excoin.modules.coin.parameter.dto.ZhiyaRewardRecordsPageDto; import com.xcong.excoin.modules.coin.parameter.vo.MemberGusdInfoVo; import com.xcong.excoin.modules.coin.parameter.vo.UsdtToGusdVo; import com.xcong.excoin.modules.coin.parameter.vo.ZhiyaInfoVo; import com.xcong.excoin.modules.coin.parameter.vo.ZhiyaRewardVo; import com.xcong.excoin.modules.coin.service.ZhiyaService; import com.xcong.excoin.modules.member.dao.MemberWalletCoinDao; import com.xcong.excoin.modules.member.entity.MemberWalletCoinEntity; import com.xcong.excoin.utils.MessageSourceUtils; import com.xcong.excoin.utils.RedisUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.List; @Service public class ZhiyaServiceImpl extends ServiceImpl<ZhiYaDao, ZhiYaEntity> implements ZhiyaService { @Resource MemberWalletCoinDao memberWalletCoinDao; @Resource MemberAccountMoneyChangeDao memberAccountMoneyChangeDao; @Resource ZhiYaRecordDao zhiYaRecordDao; @Resource ZhiyaRewardDao zhiyaRewardDao; @Resource ZhiYaDao zhiYaDao; @Resource RedisUtils redisUtils; @Override @Transactional public Result usdtToGusd(BigDecimal balance, Integer type) { //获取用户ID Long memberId = LoginUserUtils.getAppLoginUser().getId(); if (balance.compareTo(BigDecimal.ZERO) <= 0) { return Result.fail(MessageSourceUtils.getString("member_service_0004")); } if(1 == type){ // 扣币 String walletCode = MemberWalletCoinEnum.WALLETCOINCODE.getValue(); MemberWalletCoinEntity memberWalletCoinEntity = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, walletCode); BigDecimal availableBalance = memberWalletCoinEntity.getAvailableBalance(); BigDecimal totalBalance = memberWalletCoinEntity.getTotalBalance(); BigDecimal available = availableBalance.subtract(balance); if (available.compareTo(BigDecimal.ZERO) < 0) { return Result.fail(MessageSourceUtils.getString("member_service_0005")); } BigDecimal total = totalBalance.subtract(balance); if (total.compareTo(BigDecimal.ZERO) < 0) { return Result.fail(MessageSourceUtils.getString("member_service_0005")); } memberWalletCoinEntity.setAvailableBalance(available); memberWalletCoinEntity.setTotalBalance(total); int i = memberWalletCoinDao.updateById(memberWalletCoinEntity); if (i < 1) { return Result.fail(MessageSourceUtils.getString("member_service_0096")); } //添加资金划转历史记录 MemberAccountMoneyChange memberAccountRecord = new MemberAccountMoneyChange(); //获取usdt兑换gusd的兑换比例 BigDecimal usdtToGusd = new BigDecimal(redisUtils.getString("USDTTOGSD")); BigDecimal gusdBalance = balance.multiply(usdtToGusd); ZhiYaEntity zhiya = zhiYaDao.selectByMemberId(memberId); BigDecimal gusdAvailableBalance = zhiya.getAvailableBalance(); BigDecimal gusdTotalBalance = zhiya.getTotalBalance(); zhiya.setAvailableBalance(gusdAvailableBalance.add(gusdBalance)); zhiya.setTotalBalance(gusdTotalBalance.add(gusdBalance)); int updateById = zhiYaDao.updateById(zhiya); if (updateById < 1) { return Result.fail(MessageSourceUtils.getString("member_service_0096")); } //添加资金划转历史记录 memberAccountRecord.setMemberId(memberId); memberAccountRecord.setStatus(MemberAccountMoneyChange.STATUS_SUCCESS_INTEGER); memberAccountRecord.setSymbol(walletCode); memberAccountRecord.setContent(MemberWalletCoinEnum.ZHIYATOGUSD.getValue()); memberAccountRecord.setType(MemberAccountMoneyChange.TYPE_WALLET_COIN); memberAccountRecord.setAmount(gusdBalance); memberAccountMoneyChangeDao.insert(memberAccountRecord); }else if(2 == type){ // 扣币 ZhiYaEntity zhiya = zhiYaDao.selectByMemberId(memberId); BigDecimal availableBalance = zhiya.getAvailableBalance(); BigDecimal totalBalance = zhiya.getTotalBalance(); BigDecimal available = availableBalance.subtract(balance); if (available.compareTo(BigDecimal.ZERO) < 0) { return Result.fail(MessageSourceUtils.getString("member_service_0005")); } BigDecimal total = totalBalance.subtract(balance); if (total.compareTo(BigDecimal.ZERO) < 0) { return Result.fail(MessageSourceUtils.getString("member_service_0005")); } zhiya.setAvailableBalance(available); zhiya.setTotalBalance(total); int i = zhiYaDao.updateById(zhiya); if (i < 1) { return Result.fail(MessageSourceUtils.getString("member_service_0096")); } //添加资金划转历史记录 MemberAccountMoneyChange memberAccountRecord = new MemberAccountMoneyChange(); //获取usdt兑换gusd的兑换比例 BigDecimal usdtToGusd = new BigDecimal(redisUtils.getString("USDTTOGSD")); BigDecimal usdtBalance = balance.divide(usdtToGusd); String walletCode = MemberWalletCoinEnum.WALLETCOINCODE.getValue(); MemberWalletCoinEntity memberWalletCoinEntity = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, walletCode); BigDecimal gusdAvailableBalance = memberWalletCoinEntity.getAvailableBalance(); BigDecimal gusdTotalBalance = memberWalletCoinEntity.getTotalBalance(); memberWalletCoinEntity.setAvailableBalance(gusdAvailableBalance.add(usdtBalance)); memberWalletCoinEntity.setTotalBalance(gusdTotalBalance.add(usdtBalance)); int updateById = memberWalletCoinDao.updateById(memberWalletCoinEntity); if (updateById < 1) { return Result.fail(MessageSourceUtils.getString("member_service_0096")); } //添加资金划转历史记录 memberAccountRecord.setMemberId(memberId); memberAccountRecord.setStatus(MemberAccountMoneyChange.STATUS_SUCCESS_INTEGER); memberAccountRecord.setSymbol(walletCode); memberAccountRecord.setContent(MemberWalletCoinEnum.ZHIYATOUSDT.getValue()); memberAccountRecord.setType(MemberAccountMoneyChange.TYPE_WALLET_COIN); memberAccountRecord.setAmount(usdtBalance); memberAccountMoneyChangeDao.insert(memberAccountRecord); }else{ return Result.fail("member_controller_0005"); } return Result.ok(MessageSourceUtils.getString("member_service_0024")); } @Override @Transactional public Result zhiYaGusd(BigDecimal balance) { //获取用户ID Long memberId = LoginUserUtils.getAppLoginUser().getId(); if (balance.compareTo(new BigDecimal(100)) < 0) { return Result.fail(MessageSourceUtils.getString("zhiya_service_0006")); } //质押Gusd,质押数量进入冻结余额, ZhiYaEntity zhiya = zhiYaDao.selectByMemberId(memberId); BigDecimal gusdAvailableBalance = zhiya.getAvailableBalance(); BigDecimal gusdTotalBalance = zhiya.getTotalBalance(); BigDecimal gusdfrozenBalance = zhiya.getFrozenBalance(); BigDecimal available = gusdAvailableBalance.subtract(balance); if (available.compareTo(BigDecimal.ZERO) < 0) { return Result.fail(MessageSourceUtils.getString("zhiya_service_0005")); } BigDecimal total = gusdTotalBalance.subtract(balance); if (total.compareTo(BigDecimal.ZERO) < 0) { return Result.fail(MessageSourceUtils.getString("zhiya_service_0005")); } zhiya.setFrozenBalance(gusdfrozenBalance.add(balance)); zhiya.setAvailableBalance(gusdAvailableBalance.subtract(balance)); int updateById = zhiYaDao.updateById(zhiya); if (updateById < 1) { return Result.fail(MessageSourceUtils.getString("member_service_0096")); } //产生质押单,当前有的话,累加质押数量 // ZhiYaRecordEntity zhiYaRecord = zhiYaRecordDao.selectByMemberIdAndOrderStatus(memberId,1); // if(ObjectUtil.isEmpty(zhiYaRecord)){ //产生一条质押记录 ZhiYaRecordEntity zhiYaRecordEntity = new ZhiYaRecordEntity(); zhiYaRecordEntity.setMemberId(memberId); zhiYaRecordEntity.setOrderNo(generateSimpleSerialno(memberId.toString())); zhiYaRecordEntity.setSymbol(MemberWalletCoinEnum.WALLETGUSDCOINCODE.getValue()); zhiYaRecordEntity.setZhiyaCnt(balance); zhiYaRecordEntity.setOrderStatus(1); Date date = new Date(); 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); // } //更新团队算力表 //只计算直属团队的算力信息 return Result.ok(MessageSourceUtils.getString("member_service_0024")); } @Override @Transactional public Result shuhuiGusd(BigDecimal balance,Long id) { //获取用户ID Long memberId = LoginUserUtils.getAppLoginUser().getId(); if (balance.compareTo(BigDecimal.ZERO) <= 0) { return Result.fail(MessageSourceUtils.getString("zhiya_service_0004")); } //赎回Gusd,获取质押单据, ZhiYaRecordEntity zhiYaRecordEntity = zhiYaRecordDao.selectByIdAndMemberId(id,memberId); if(ObjectUtil.isEmpty(zhiYaRecordEntity)){ return Result.fail(MessageSourceUtils.getString("zhiya_service_0002")); } if(1 != zhiYaRecordEntity.getOrderStatus()){ return Result.fail(MessageSourceUtils.getString("zhiya_service_0003")); } BigDecimal zhiyaCnt = zhiYaRecordEntity.getZhiyaCnt(); if(balance.compareTo(zhiyaCnt) > 0){ return Result.fail(MessageSourceUtils.getString("zhiya_service_0004")); } // 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); BigDecimal gusdAvailableBalance = zhiya.getAvailableBalance(); BigDecimal gusdTotalBalance = zhiya.getTotalBalance(); BigDecimal gusdfrozenBalance = zhiya.getFrozenBalance(); BigDecimal frozen = gusdfrozenBalance.subtract(balance); if (frozen.compareTo(BigDecimal.ZERO) < 0) { return Result.fail(MessageSourceUtils.getString("zhiya_service_0001")); } BigDecimal total = gusdTotalBalance.subtract(balance); if (total.compareTo(BigDecimal.ZERO) < 0) { return Result.fail(MessageSourceUtils.getString("member_service_0005")); } zhiya.setFrozenBalance(gusdfrozenBalance.subtract(balance)); zhiya.setAvailableBalance(gusdAvailableBalance.add(balance)); zhiYaDao.updateById(zhiya); return Result.ok(MessageSourceUtils.getString("member_service_0024")); } @Override public Result findMemberGusdInfo() { //获取用户ID Long memberId = LoginUserUtils.getAppLoginUser().getId(); ZhiYaEntity zhiYaEntity = zhiYaDao.selectByMemberId(memberId); MemberGusdInfoVo memberGusdInfoVo = new MemberGusdInfoVo(); memberGusdInfoVo.setMemberId(memberId); memberGusdInfoVo.setFrozenBalance(zhiYaEntity.getFrozenBalance()); memberGusdInfoVo.setTotalBalance(zhiYaEntity.getTotalBalance()); memberGusdInfoVo.setAvailableBalance(zhiYaEntity.getAvailableBalance()); return Result.ok(memberGusdInfoVo); } @Override public Result getZhiyaRecords(RecordsPageDto recordsPageDto) { //获取用户ID Long memberId = LoginUserUtils.getAppLoginUser().getId(); Page<ZhiyaInfoVo> page = new Page<>(recordsPageDto.getPageNum(), recordsPageDto.getPageSize()); ZhiYaEntity zhiya = new ZhiYaEntity(); zhiya.setMemberId(memberId); IPage<ZhiyaInfoVo> lists = zhiYaRecordDao.selectByMemberIdInPage(page, zhiya); return Result.ok(lists); } @Override public Result getusdtToGusdRecords(RecordsPageDto recordsPageDto) { //获取用户ID Long memberId = LoginUserUtils.getAppLoginUser().getId(); Page<UsdtToGusdVo> page = new Page<>(recordsPageDto.getPageNum(), recordsPageDto.getPageSize()); MemberAccountMoneyChange memberAccountMoneyChange = new MemberAccountMoneyChange(); memberAccountMoneyChange.setMemberId(memberId); IPage<UsdtToGusdVo> lists = memberAccountMoneyChangeDao.selectByMemberIdInPage(page, memberAccountMoneyChange); 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); //给团队上级发送奖励goldrice //给账户的冻结 } } } } @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"); SimpleDateFormat sd = new SimpleDateFormat("yyyyMMdd"); Date now = new Date(); sb.append(sd.format(now)); Calendar calendar = new GregorianCalendar(); calendar.setTime(now); calendar.add(calendar.DATE, 1); Date nextDate = calendar.getTime(); if (StrUtil.isNotEmpty(userId)) { sb.append(userId); } sb.append(RandomUtil.randomInt(2)); long count = zhiYaRecordDao.getOrderCountByToday(sdf.format(now), sdf.format(nextDate)); count++; int size = 4; for (int i = 0; i < size - String.valueOf(count).length(); i++) { sb.append("0"); } sb.append(count); return sb.toString(); } } src/main/java/com/xcong/excoin/modules/member/controller/MemberController.java
@@ -3,33 +3,13 @@ import javax.annotation.Resource; import javax.validation.Valid; import com.xcong.excoin.modules.coin.parameter.dto.RecordsPageDto; import com.xcong.excoin.modules.member.parameter.dto.*; import com.xcong.excoin.modules.member.parameter.vo.*; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import com.xcong.excoin.common.response.Result; import com.xcong.excoin.modules.member.parameter.dto.MemberAddCoinAddressDto; import com.xcong.excoin.modules.member.parameter.dto.MemberAuthenticationDto; import com.xcong.excoin.modules.member.parameter.dto.MemberBindEmailDto; import com.xcong.excoin.modules.member.parameter.dto.MemberBindPhoneDto; import com.xcong.excoin.modules.member.parameter.dto.MemberDelCoinAddressDto; import com.xcong.excoin.modules.member.parameter.dto.MemberDelPaymethodDto; import com.xcong.excoin.modules.member.parameter.dto.MemberForgetPwdDto; import com.xcong.excoin.modules.member.parameter.dto.MemberPaymethodDto; import com.xcong.excoin.modules.member.parameter.dto.MemberSubmitCoinApplyDto; import com.xcong.excoin.modules.member.parameter.dto.MemberUpdatePwdDto; import com.xcong.excoin.modules.member.parameter.dto.MemberUpdateTradePwdDto; import com.xcong.excoin.modules.member.parameter.dto.MemberUpdateTradersPwdTimeDto; import com.xcong.excoin.modules.member.parameter.vo.AppVersionListVo; import com.xcong.excoin.modules.member.parameter.vo.MemberAuthenticationInfoVo; import com.xcong.excoin.modules.member.parameter.vo.MemberAvivableCoinInfoVo; import com.xcong.excoin.modules.member.parameter.vo.MemberCoinAddressCountListVo; import com.xcong.excoin.modules.member.parameter.vo.MemberCoinAddressListVo; import com.xcong.excoin.modules.member.parameter.vo.MemberCoinInfoListVo; import com.xcong.excoin.modules.member.parameter.vo.MemberInfoVo; import com.xcong.excoin.modules.member.parameter.vo.MemberPaymethodDetailListVo; import com.xcong.excoin.modules.member.parameter.vo.MemberPaymethodDetailVo; import com.xcong.excoin.modules.member.parameter.vo.MemberPersonCenterInfoVo; import com.xcong.excoin.modules.member.parameter.vo.MemberSendCodeWayVo; import com.xcong.excoin.modules.member.service.MemberService; import io.swagger.annotations.Api; @@ -178,9 +158,6 @@ /** * 设置交易密码 * @param code * @param password * @param token * @return */ @ApiOperation(value="设置交易密码", notes="设置交易密码") @@ -334,8 +311,6 @@ /** * 提币币种可用资金 * @param token * @param coinVo * @return */ @ApiOperation(value = "提币币种可用资金", notes = "提币币种可用资金") @@ -350,8 +325,6 @@ /** * 提币申请 * @param token * @param coinVo * @return */ @ApiOperation(value="提交提币申请", notes="提交提币申请") @@ -360,5 +333,16 @@ return Result.fail("暂未开放提币"); // return memberService.memberSubmitCoinApply(memberSubmitCoinApplyDto); } /** * 我的直属团队 * @return */ @ApiOperation(value = "我的直属团队", notes = "我的直属团队") @ApiResponses({@ApiResponse( code = 200, message = "success", response = MemberTeamVo.class)}) @PostMapping(value="/memberTeam") public Result memberTeam(@RequestBody @Valid MemberTeamRecordsPageDto memberTeamRecordsPageDto) { return memberService.memberTeam(memberTeamRecordsPageDto); } } src/main/java/com/xcong/excoin/modules/member/dao/MemberDao.java
@@ -1,8 +1,12 @@ package com.xcong.excoin.modules.member.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.coin.parameter.vo.ZhiyaInfoVo; import com.xcong.excoin.modules.member.entity.MemberEntity; import com.xcong.excoin.modules.member.entity.MemberWalletCoinEntity; import com.xcong.excoin.modules.member.parameter.vo.MemberTeamVo; import com.xcong.excoin.modules.member.parameter.vo.NeedMoneyMemberVo; import org.apache.ibatis.annotations.Param; @@ -21,4 +25,5 @@ public List<NeedMoneyMemberVo> selectAllNeedMoneyMember(@Param("list") List<String> list); IPage<MemberTeamVo> selectAllTeamByInviteIdInPage(Page<MemberTeamVo> page, @Param("record")MemberEntity memberEntity); } src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberTeamRecordsPageDto.java
New file @@ -0,0 +1,25 @@ package com.xcong.excoin.modules.member.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 = "MemberTeamRecordsPageDto", description = "参数接受类") public class MemberTeamRecordsPageDto { // @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; } src/main/java/com/xcong/excoin/modules/member/parameter/vo/MemberTeamVo.java
New file @@ -0,0 +1,21 @@ package com.xcong.excoin.modules.member.parameter.vo; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; @Data @ApiModel(value = "MemberTeamVo", description = "返回参数") public class MemberTeamVo { @ApiModelProperty(value = "账号") private String account; @ApiModelProperty(value = "注册时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date createTime; } src/main/java/com/xcong/excoin/modules/member/service/MemberService.java
@@ -6,18 +6,7 @@ import com.xcong.excoin.common.response.Result; import com.xcong.excoin.common.system.dto.RegisterDto; import com.xcong.excoin.modules.member.entity.MemberEntity; import com.xcong.excoin.modules.member.parameter.dto.MemberAddCoinAddressDto; import com.xcong.excoin.modules.member.parameter.dto.MemberAuthenticationDto; import com.xcong.excoin.modules.member.parameter.dto.MemberBindEmailDto; import com.xcong.excoin.modules.member.parameter.dto.MemberBindPhoneDto; import com.xcong.excoin.modules.member.parameter.dto.MemberDelCoinAddressDto; import com.xcong.excoin.modules.member.parameter.dto.MemberDelPaymethodDto; import com.xcong.excoin.modules.member.parameter.dto.MemberForgetPwdDto; import com.xcong.excoin.modules.member.parameter.dto.MemberPaymethodDto; import com.xcong.excoin.modules.member.parameter.dto.MemberSubmitCoinApplyDto; import com.xcong.excoin.modules.member.parameter.dto.MemberUpdatePwdDto; import com.xcong.excoin.modules.member.parameter.dto.MemberUpdateTradePwdDto; import com.xcong.excoin.modules.member.parameter.dto.MemberUpdateTradersPwdTimeDto; import com.xcong.excoin.modules.member.parameter.dto.*; import com.xcong.excoin.modules.member.parameter.vo.NeedMoneyMemberVo; import org.apache.ibatis.annotations.Param; @@ -90,5 +79,5 @@ public Result getPcVersionInfo(); Result memberTeam(MemberTeamRecordsPageDto memberTeamRecordsPageDto); } src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
@@ -5,6 +5,8 @@ import cn.hutool.core.util.StrUtil; import cn.hutool.crypto.SecureUtil; 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.contants.AppContants; @@ -17,20 +19,10 @@ import com.xcong.excoin.modules.coin.dao.ZhiYaDao; import com.xcong.excoin.modules.coin.entity.MemberAccountMoneyChange; import com.xcong.excoin.modules.coin.entity.ZhiYaEntity; import com.xcong.excoin.modules.coin.parameter.vo.ZhiyaInfoVo; import com.xcong.excoin.modules.member.dao.*; import com.xcong.excoin.modules.member.entity.*; import com.xcong.excoin.modules.member.parameter.dto.MemberAddCoinAddressDto; import com.xcong.excoin.modules.member.parameter.dto.MemberAuthenticationDto; import com.xcong.excoin.modules.member.parameter.dto.MemberBindEmailDto; import com.xcong.excoin.modules.member.parameter.dto.MemberBindPhoneDto; import com.xcong.excoin.modules.member.parameter.dto.MemberDelCoinAddressDto; import com.xcong.excoin.modules.member.parameter.dto.MemberDelPaymethodDto; import com.xcong.excoin.modules.member.parameter.dto.MemberForgetPwdDto; import com.xcong.excoin.modules.member.parameter.dto.MemberPaymethodDto; import com.xcong.excoin.modules.member.parameter.dto.MemberSubmitCoinApplyDto; import com.xcong.excoin.modules.member.parameter.dto.MemberUpdatePwdDto; import com.xcong.excoin.modules.member.parameter.dto.MemberUpdateTradePwdDto; import com.xcong.excoin.modules.member.parameter.dto.MemberUpdateTradersPwdTimeDto; import com.xcong.excoin.modules.member.parameter.dto.*; import com.xcong.excoin.modules.member.parameter.vo.*; import com.xcong.excoin.modules.member.service.MemberService; import com.xcong.excoin.modules.platform.dao.PlatformFeeSettingDao; @@ -1033,6 +1025,19 @@ } return Result.ok(arrayList); } @Override public Result memberTeam(MemberTeamRecordsPageDto memberTeamRecordsPageDto) { //获取用户ID Long memberId = LoginUserUtils.getAppLoginUser().getId(); MemberEntity member = memberDao.selectById(memberId); Page<MemberTeamVo> page = new Page<>(memberTeamRecordsPageDto.getPageNum(), memberTeamRecordsPageDto.getPageSize()); MemberEntity memberEntity = new MemberEntity(); memberEntity.setId(memberId); memberEntity.setInviteId(member.getInviteId()); IPage<MemberTeamVo> lists = memberDao.selectAllTeamByInviteIdInPage(page, memberEntity); return Result.ok(lists); } } src/main/java/com/xcong/excoin/modules/symbols/constants/SymbolsConstats.java
@@ -5,8 +5,8 @@ public class SymbolsConstats { public final static List<String> EXCHANGE_SYMBOLS = new ArrayList<>(); public final static String ROC = "GOLDRICE"; public final static String ROC = "GRICE"; static { EXCHANGE_SYMBOLS.add("GOLDRICE"); EXCHANGE_SYMBOLS.add("GRICE"); } } src/main/java/com/xcong/excoin/processor/DefaultCoinProcessor.java
@@ -382,7 +382,7 @@ kLine.setLow(kLine.getClose()); kLine.setHigh(kLine.getClose()); kLine.setVolume(BigDecimal.ZERO); redisUtils.set("GOLDRICE/USDT",kLine); redisUtils.set("GRICE/USDT",kLine); } } src/main/java/com/xcong/excoin/quartz/job/ZhiyarRewardJob.java
@@ -1,6 +1,6 @@ package com.xcong.excoin.quartz.job; import com.xcong.excoin.modules.coin.service.CoinService; import com.xcong.excoin.modules.coin.service.ZhiyaService; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @@ -16,7 +16,7 @@ @Resource private CoinService coinService; private ZhiyaService zhiyaService; /** * 质押奖励计算 @@ -25,7 +25,7 @@ public void updateDoingPrice() { log.info("#质押奖励计算#"); try { coinService.grantZhiyaAmount(); zhiyaService.grantZhiyaAmount(); } catch (Exception e) { log.error("#质押奖励计算错误#", e); } src/main/java/com/xcong/excoin/rabbit/consumer/ExchangeConsumer.java
@@ -52,7 +52,7 @@ @RabbitListener(queues = RabbitMqConfig.QUEUE_TRADE_PLATE) public void tradePlate(String content) { //log.info("--发送盘口消息--"); tradePlateSendWebSocket.sendMessagePlate("GOLDRICE/USDT",content,null); tradePlateSendWebSocket.sendMessagePlate("GRICE/USDT",content,null); } /** src/main/java/com/xcong/excoin/utils/CoinTypeConvert.java
@@ -22,8 +22,8 @@ return "EOS/USDT"; case "etcusdt": return "ETC/USDT"; case "goldriceusdt": return "GOLDRICE/USDT"; case "griceusdt": return "GRICE/USDT"; default: return null; } @@ -33,8 +33,8 @@ switch (symbol) { case "BTC/USDT": return "btcusdt"; case "GOLDRICE/USDT": return "goldriceusdt"; case "GRICE/USDT": return "griceusdt"; default: return null; } @@ -56,8 +56,8 @@ return "EOS_NEW_PRICE"; case "ETC/USDT": return "ETC_NEW_PRICE"; case "GOLDRICE/USDT": return "GOLDRICE_NEW_PRICE"; case "GRICE/USDT": return "GRICE_NEW_PRICE"; default: return null; } src/main/java/com/xcong/excoin/websocket/TradePlateSendWebSocket.java
@@ -98,7 +98,7 @@ // 发送订阅消息 String nekk = factory.getTrader(SymbolsConstats.ROC).sendTradePlateMessage(); SubResultModel subResultModel = new SubResultModel(); subResultModel.setId("goldriceusdt"); subResultModel.setId("griceusdt"); subResultModel.setSubbed(sub); synchronized (session) { try { @@ -220,7 +220,7 @@ String key = "KINE_{}_{}"; // 币币k线数据 //key = StrUtil.format(key, symbol, period); key = StrUtil.format(key, "GOLDRICE/USDT", period); key = StrUtil.format(key, "GRICE/USDT", period); RedisUtils bean = SpringContextHolder.getBean(RedisUtils.class); Object o = bean.get(key); List<CandlestickModel> candlestickModels = new ArrayList<>(); src/main/resources/mapper/member/MemberDao.xml
@@ -44,4 +44,12 @@ #{item} </foreach > </select> <select id="selectAllTeamByInviteIdInPage" resultType="com.xcong.excoin.modules.member.parameter.vo.MemberTeamVo"> SELECT m.phone account, m.create_time createTime FROM member m where m.referer_id = #{record.inviteId} order by m.create_time desc </select> </mapper>