From 28f0aa6728abd49e6789179ef43c213d42a750b0 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Fri, 28 Aug 2020 11:31:42 +0800
Subject: [PATCH] 20200828

---
 src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberSubmitCoinApplyInDto.java |   38 ++++++++++++
 src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java           |   83 +++++++++++++++++++++++++++
 src/main/resources/mapper/member/MemberDao.xml                                              |    2 
 src/main/java/com/xcong/excoin/modules/member/controller/MemberController.java              |   13 ++++
 src/main/java/com/xcong/excoin/modules/member/service/MemberService.java                    |    3 +
 5 files changed, 138 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/member/controller/MemberController.java b/src/main/java/com/xcong/excoin/modules/member/controller/MemberController.java
index c2a3f6e..26548cd 100644
--- a/src/main/java/com/xcong/excoin/modules/member/controller/MemberController.java
+++ b/src/main/java/com/xcong/excoin/modules/member/controller/MemberController.java
@@ -19,6 +19,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;
@@ -362,4 +363,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);
+	}
+    
 }
diff --git a/src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberSubmitCoinApplyInDto.java b/src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberSubmitCoinApplyInDto.java
new file mode 100644
index 0000000..0bc4ccf
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberSubmitCoinApplyInDto.java
@@ -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;
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/xcong/excoin/modules/member/service/MemberService.java b/src/main/java/com/xcong/excoin/modules/member/service/MemberService.java
index ae6e757..b5a7ec0 100644
--- a/src/main/java/com/xcong/excoin/modules/member/service/MemberService.java
+++ b/src/main/java/com/xcong/excoin/modules/member/service/MemberService.java
@@ -15,6 +15,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 +91,7 @@
 
 	public Result getPcVersionInfo();
 
+	public Result memberSubmitCoinApplyIn(@Valid MemberSubmitCoinApplyInDto memberSubmitCoinApplyInDto);
+
 
 }
diff --git a/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java b/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
index 97b4f6a..591f214 100644
--- a/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
@@ -26,6 +26,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;
@@ -1001,6 +1002,88 @@
         }
         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"));
+        }
+    }
 }
 
 
diff --git a/src/main/resources/mapper/member/MemberDao.xml b/src/main/resources/mapper/member/MemberDao.xml
index 4a65303..27fb5e7 100644
--- a/src/main/resources/mapper/member/MemberDao.xml
+++ b/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">

--
Gitblit v1.9.1