src/main/java/com/xcong/excoin/modules/member/controller/MemberController.java
@@ -11,6 +11,7 @@ import com.xcong.excoin.common.response.Result; import com.xcong.excoin.modules.member.parameter.dto.MemberAddCoinAddressDto; import com.xcong.excoin.modules.member.parameter.dto.MemberAddCoinAddressInDto; 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; @@ -19,6 +20,7 @@ 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.MemberSubmitCoinApplyInDto; 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; @@ -26,6 +28,7 @@ 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.MemberCoinAddressInListVo; 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; @@ -282,6 +285,17 @@ } /** * 获取内转提币地址 * @return */ @ApiOperation(value = "获取内转提币地址列表", notes = "获取内转提币地址列表") @ApiResponses({@ApiResponse( code = 200, message = "success", response = MemberCoinAddressInListVo.class)}) @GetMapping(value = "/memberCoinAddressInList") public Result memberCoinAddressInList() { return memberService.memberCoinAddressInList(); } /** * 添加提币地址 * @return */ @@ -292,6 +306,16 @@ } /** * 添加内转提币地址 * @return */ @ApiOperation(value = "添加内转提币地址", notes = "添加内转提币地址") @PostMapping(value = "/memberAddCoinAddressIn") public Result memberAddCoinAddressIn(@RequestBody @Valid MemberAddCoinAddressInDto memberAddCoinAddressDto) { return memberService.memberAddCoinAddressIn(memberAddCoinAddressDto); } /** * 删除提币地址 * @return */ @@ -299,6 +323,16 @@ @PostMapping(value="/memberDelCoinAddress") public Result memberDelCoinAddress(@RequestBody @Valid MemberDelCoinAddressDto memberDelCoinAddressDto) { return memberService.memberDelCoinAddress(memberDelCoinAddressDto); } /** * 删除内转提币地址 * @return */ @ApiOperation(value="删除内转提币地址", notes="删除内转提币地址") @PostMapping(value="/memberDelCoinAddressIn") public Result memberDelCoinAddressIn(@RequestBody @Valid MemberDelCoinAddressDto memberDelCoinAddressDto) { return memberService.memberDelCoinAddressIn(memberDelCoinAddressDto); } /** @@ -362,4 +396,16 @@ return memberService.memberSubmitCoinApply(memberSubmitCoinApplyDto); } /** * 提币申请--内转 * @param token * @param coinVo * @return */ @ApiOperation(value="提交提币申请", notes="提交提币申请") @PostMapping(value="/memberSubmitCoinApplyIn") public Result memberSubmitCoinApplyIn(@RequestBody @Valid MemberSubmitCoinApplyInDto memberSubmitCoinApplyInDto) { return memberService.memberSubmitCoinApplyIn(memberSubmitCoinApplyInDto); } } 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,38 @@ 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; } 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
@@ -7,6 +7,7 @@ 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.MemberAddCoinAddressInDto; 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; @@ -15,6 +16,7 @@ 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.MemberSubmitCoinApplyInDto; 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; @@ -90,5 +92,13 @@ public Result getPcVersionInfo(); public Result memberSubmitCoinApplyIn(@Valid MemberSubmitCoinApplyInDto memberSubmitCoinApplyInDto); public Result memberAddCoinAddressIn(@Valid MemberAddCoinAddressInDto memberAddCoinAddressDto); public Result memberDelCoinAddressIn(@Valid MemberDelCoinAddressDto memberDelCoinAddressDto); public Result memberCoinAddressInList(); } src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
@@ -18,6 +18,7 @@ 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.MemberAddCoinAddressInDto; 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; @@ -26,6 +27,7 @@ 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.MemberSubmitCoinApplyInDto; 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; @@ -97,6 +99,9 @@ @Resource MemberCoinAddressDao memberCoinAddressDao; @Resource MemberCoinAddressInDao memberCoinAddressInDao; @Resource private CommonService commonservice; @@ -1001,6 +1006,138 @@ } return Result.ok(arrayList); } @Override 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(); 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")); } MemberCoinAddressEntity memberCoinAddressEntity = selectByMap2.get(0); String 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); 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 memberAddCoinAddressIn(@Valid 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 public Result memberDelCoinAddressIn(@Valid 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"); } @Override 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); } } src/main/resources/mapper/member/MemberCoinAddressInDao.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.member.dao.MemberCoinAddressInDao"> </mapper> src/main/resources/mapper/member/MemberDao.xml
@@ -3,7 +3,7 @@ <mapper namespace="com.xcong.excoin.modules.member.dao.MemberDao"> <select id="selectMemberInfoByAccount" resultType="com.xcong.excoin.modules.member.entity.MemberEntity"> select * from member where phone=#{account} or email=#{account} select * from member where phone=#{account} or email=#{account} or invite_id=#{account} </select> <select id="selectMemberInfoByInviteId" resultType="com.xcong.excoin.modules.member.entity.MemberEntity">