src/main/java/com/xcong/excoin/modules/member/controller/MemberController.java
@@ -346,8 +346,8 @@ @ApiOperation(value="提交提币申请", notes="提交提币申请") @PostMapping(value="/memberSubmitCoinApply") public Result memberSubmitCoinApply(@RequestBody @Valid MemberSubmitCoinApplyDto memberSubmitCoinApplyDto) { return Result.fail("暂未开放提币"); // return memberService.memberSubmitCoinApply(memberSubmitCoinApplyDto); // return Result.fail("暂未开放提币"); return memberService.memberSubmitCoinApply(memberSubmitCoinApplyDto); } /** @@ -361,4 +361,46 @@ return memberService.memberTeam(memberTeamRecordsPageDto); } /** * 获取内转提币地址 * @return */ @ApiOperation(value = "获取内转提币地址列表", notes = "获取内转提币地址列表") @ApiResponses({@ApiResponse( code = 200, message = "success", response = MemberCoinAddressInListVo.class)}) @GetMapping(value = "/memberCoinAddressInList") public Result memberCoinAddressInList() { return memberService.memberCoinAddressInList(); } /** * 添加内转提币地址 * @return */ @ApiOperation(value = "添加内转提币地址", notes = "添加内转提币地址") @PostMapping(value = "/memberAddCoinAddressIn") public Result memberAddCoinAddressIn(@RequestBody @Valid MemberAddCoinAddressInDto memberAddCoinAddressDto) { return memberService.memberAddCoinAddressIn(memberAddCoinAddressDto); } /** * 提币申请--内转 * @return */ @ApiOperation(value="提交提币申请--内转", notes="提交提币申请--内转") @PostMapping(value="/memberSubmitCoinApplyIn") public Result memberSubmitCoinApplyIn(@RequestBody @Valid MemberSubmitCoinApplyInDto memberSubmitCoinApplyInDto) { return memberService.memberSubmitCoinApplyIn(memberSubmitCoinApplyInDto); } /** * 删除内转提币地址 * @return */ @ApiOperation(value="删除内转提币地址", notes="删除内转提币地址") @PostMapping(value="/memberDelCoinAddressIn") public Result memberDelCoinAddressIn(@RequestBody @Valid MemberDelCoinAddressDto memberDelCoinAddressDto) { return memberService.memberDelCoinAddressIn(memberDelCoinAddressDto); } } src/main/java/com/xcong/excoin/modules/member/dao/MemberCoinAddressInDao.java
New file @@ -0,0 +1,8 @@ package com.xcong.excoin.modules.member.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.xcong.excoin.modules.member.entity.MemberCoinAddressInEntity; public interface MemberCoinAddressInDao extends BaseMapper<MemberCoinAddressInEntity> { } src/main/java/com/xcong/excoin/modules/member/entity/MemberCoinAddressInEntity.java
New file @@ -0,0 +1,29 @@ package com.xcong.excoin.modules.member.entity; import com.baomidou.mybatisplus.annotation.TableName; import com.xcong.excoin.common.system.base.BaseEntity; import lombok.Data; @Data @TableName("member_coin_address_in") public class MemberCoinAddressInEntity extends BaseEntity { /** * */ private static final long serialVersionUID = 1L; /** * 会员ID */ private Long memberId; /** * 备注 */ private String content; /** * 账号 */ private String account; } src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberAddCoinAddressInDto.java
New file @@ -0,0 +1,26 @@ package com.xcong.excoin.modules.member.parameter.dto; import javax.validation.constraints.NotNull; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel(value = "MemberAddCoinAddressInDto", description = "参数接收类") public class MemberAddCoinAddressInDto { /** * 地址 */ @NotNull(message = "账号不能为空") @ApiModelProperty(value = "账号") private String address; /** * 备注 */ @ApiModelProperty(value = "备注") private String remark; } src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberSubmitCoinApplyInDto.java
New file @@ -0,0 +1,41 @@ package com.xcong.excoin.modules.member.parameter.dto; import java.math.BigDecimal; import javax.validation.constraints.NotNull; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel(value = "MemberSubmitCoinApplyInDto", description = "参数接收类") public class MemberSubmitCoinApplyInDto { @NotNull(message = "账户名") @ApiModelProperty(value = "账户名", example = "asfdsdafsdafdsaf1231232sdfsa") private String address; @NotNull(message = "币数量不能为空") @ApiModelProperty(value = "币数量", example = "10") private BigDecimal coinNumber; @NotNull(message = "交易密码不能为空") @ApiModelProperty(value = "交易密码", example = "123456") private String tradePassword; @NotNull(message = "验证码不能为空") @ApiModelProperty(value = "验证码", example = "123456") private String code; @NotNull(message = "验证方式不能为空") @ApiModelProperty(value = "验证方式", example = "13412341234") private String account; @NotNull(message = "币种不能为空") @ApiModelProperty(value = "币种", example = "BTC") private String symbol; @ApiModelProperty(value = "币种子类", example = "ERC20") private String lable; } src/main/java/com/xcong/excoin/modules/member/parameter/vo/MemberCoinAddressInListVo.java
New file @@ -0,0 +1,25 @@ package com.xcong.excoin.modules.member.parameter.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel(value = "MemberCoinAddressInListVo", description = "返回") public class MemberCoinAddressInListVo { @ApiModelProperty(value = "ID") private Long id; /** * 备注 */ @ApiModelProperty(value = "备注") private String content; /** * 账号 */ @ApiModelProperty(value = "账号") private String account; } src/main/java/com/xcong/excoin/modules/member/service/MemberService.java
@@ -84,4 +84,12 @@ Result memberTeam(MemberTeamRecordsPageDto memberTeamRecordsPageDto); Result findDefaultWay(); Result memberCoinAddressInList(); Result memberAddCoinAddressIn(MemberAddCoinAddressInDto memberAddCoinAddressDto); Result memberSubmitCoinApplyIn(MemberSubmitCoinApplyInDto memberSubmitCoinApplyInDto); Result memberDelCoinAddressIn(MemberDelCoinAddressDto memberDelCoinAddressDto); } src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
@@ -81,6 +81,9 @@ private MemberWalletCoinDao memberWalletCoinDao; @Resource private MemberCoinAddressInDao memberCoinAddressInDao; @Resource private ZhiYaDao zhiYaDao; @Resource @@ -1132,6 +1135,146 @@ } return Result.ok(defaultWayVo); } public Result memberCoinAddressInList() { //获取用户ID Long memberId = LoginUserUtils.getAppLoginUser().getId(); Map<String, Object> columnMap = new HashMap<>(); columnMap.put("member_id", memberId); List<MemberCoinAddressInEntity> selectByMap = memberCoinAddressInDao.selectByMap(columnMap ); List<MemberCoinAddressInListVo> arrayList = new ArrayList<>(); if (CollUtil.isNotEmpty(selectByMap)) { for (MemberCoinAddressInEntity memberCoinAddressInEntity : selectByMap) { MemberCoinAddressInListVo memberCoinAddressInListVo = new MemberCoinAddressInListVo(); memberCoinAddressInListVo.setId(memberCoinAddressInEntity.getId()); memberCoinAddressInListVo.setAccount(memberCoinAddressInEntity.getAccount()); memberCoinAddressInListVo.setContent(memberCoinAddressInEntity.getContent()); arrayList.add(memberCoinAddressInListVo); } } return Result.ok(arrayList); } @Override @Transactional public Result memberAddCoinAddressIn(MemberAddCoinAddressInDto memberAddCoinAddressDto) { //获取用户ID Long memberId = LoginUserUtils.getAppLoginUser().getId(); String address = memberAddCoinAddressDto.getAddress(); String remark = memberAddCoinAddressDto.getRemark(); MemberCoinAddressInEntity memberCoinAddressInEntity = new MemberCoinAddressInEntity(); memberCoinAddressInEntity.setAccount(address); memberCoinAddressInEntity.setMemberId(memberId); memberCoinAddressInEntity.setContent(remark); memberCoinAddressInDao.insert(memberCoinAddressInEntity); return Result.ok(MessageSourceUtils.getString("member_service_0024")); } @Override @Transactional public Result memberSubmitCoinApplyIn(@Valid MemberSubmitCoinApplyInDto memberSubmitCoinApplyInDto) { //获取用户ID Long memberId = LoginUserUtils.getAppLoginUser().getId(); MemberEntity member = memberDao.selectById(memberId); if (member.getCertifyStatus() != MemberEntity.CERTIFY_STATUS_Y) { return Result.fail(MessageSourceUtils.getString("member_service_0077")); } if (StrUtil.isEmpty(member.getTradePassword())) { return Result.fail(MessageSourceUtils.getString("member_service_0081")); } if (member.getTradePassword() == null) { return Result.fail(MessageSourceUtils.getString("member_service_0082")); } if (!member.getTradePassword().equals(SecureUtil.md5(memberSubmitCoinApplyInDto.getTradePassword()))) { return Result.fail(MessageSourceUtils.getString("member_service_0082")); } boolean flag = commonservice.verifyCode(memberSubmitCoinApplyInDto.getAccount(), memberSubmitCoinApplyInDto.getCode()); if (flag) { //获取到账地址 String address = memberSubmitCoinApplyInDto.getAddress(); //根据账号获取会员信息 MemberEntity selectMemberInfoByAccount = memberDao.selectMemberInfoByAccount(address); if(ObjectUtil.isEmpty(selectMemberInfoByAccount)) { return Result.fail(MessageSourceUtils.getString("member_service_0087")); } Long memberInfoId = selectMemberInfoByAccount.getId(); String symbol = memberSubmitCoinApplyInDto.getSymbol(); String addressIn = ""; Map<String, Object> columnMapAddress = new HashMap<>(); columnMapAddress.put("member_id", memberInfoId); columnMapAddress.put("symbol", symbol); List<MemberCoinAddressEntity> selectByMap2 = memberCoinAddressDao.selectByMap(columnMapAddress); if(CollUtil.isEmpty(selectByMap2)) { // return Result.fail(MessageSourceUtils.getString("member_service_0087")); addressIn = address; } else { MemberCoinAddressEntity memberCoinAddressEntity = selectByMap2.get(0); if(StrUtil.isEmpty(memberCoinAddressEntity.getAddress())){ addressIn = selectMemberInfoByAccount.getInviteId(); }else{ addressIn = memberCoinAddressEntity.getAddress(); } } MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, memberSubmitCoinApplyInDto.getSymbol()); BigDecimal availableBalance = walletCoin.getAvailableBalance(); BigDecimal coinNumber = memberSubmitCoinApplyInDto.getCoinNumber(); if (availableBalance.compareTo(BigDecimal.ZERO) > 0 && availableBalance.compareTo(coinNumber) >= 0) { //新增提币记录 MemberCoinWithdrawEntity memberCoinWithdrawEntity = new MemberCoinWithdrawEntity(); memberCoinWithdrawEntity.setAddress(addressIn); memberCoinWithdrawEntity.setAmount(coinNumber); memberCoinWithdrawEntity.setFeeAmount(BigDecimal.ZERO); memberCoinWithdrawEntity.setSymbol(memberSubmitCoinApplyInDto.getSymbol()); memberCoinWithdrawEntity.setMemberId(memberId); memberCoinWithdrawEntity.setStatus(MemberCoinWithdrawEntity.STATUS_DOING); memberCoinWithdrawEntity.setIsInside(MemberCoinWithdrawEntity.ISINSIDE_YES); memberCoinWithdrawEntity.setLabel(memberSubmitCoinApplyInDto.getLable()); memberCoinWithdrawDao.insert(memberCoinWithdrawEntity); BigDecimal subtract = walletCoin.getAvailableBalance().subtract(coinNumber); walletCoin.setAvailableBalance(subtract); BigDecimal add = walletCoin.getFrozenBalance().add(coinNumber); walletCoin.setFrozenBalance(add); memberWalletCoinDao.updateById(walletCoin); MemberAccountMoneyChange accountRecord = new MemberAccountMoneyChange(); accountRecord.setContent("提币"); accountRecord.setMemberId(memberId); accountRecord.setAmount(coinNumber); accountRecord.setWithdrawId(memberCoinWithdrawEntity.getId()); accountRecord.setStatus(MemberAccountMoneyChange.STATUS_WAIT_INTEGER); accountRecord.setSymbol(memberSubmitCoinApplyInDto.getSymbol()); accountRecord.setType(MemberAccountMoneyChange.TYPE_WALLET_COIN); memberAccountMoneyChangeDao.insert(accountRecord); ThreadPoolUtils.sendDingTalk(3); return Result.ok(MessageSourceUtils.getString("member_service_0086")); } else { return Result.fail(MessageSourceUtils.getString("member_service_0005")); } } else { return Result.fail(MessageSourceUtils.getString("member_service_0039")); } } @Override public Result memberDelCoinAddressIn(MemberDelCoinAddressDto memberDelCoinAddressDto) { //获取用户ID Long memberId = LoginUserUtils.getAppLoginUser().getId(); MemberEntity member = memberDao.selectById(memberId); if (ObjectUtil.isNotEmpty(member)) { Long id = memberDelCoinAddressDto.getId(); memberCoinAddressInDao.deleteById(id); } return Result.ok("success"); } }