From cbd08213b41c55cf630f6ab15befbc637b5b7ba6 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Mon, 01 Jun 2020 15:31:46 +0800
Subject: [PATCH] Merge branch 'master' of https://gitee.com/chonggaoxiao/new_excoin

---
 src/main/java/com/xcong/excoin/modules/member/dao/MemberCoinWithdrawDao.java              |    8 ++
 src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberSubmitCoinApplyDto.java |   48 ++++++++++++
 src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java         |   89 ++++++++++++++++++++++
 src/main/java/com/xcong/excoin/modules/member/controller/MemberController.java            |   13 +++
 src/main/java/com/xcong/excoin/modules/member/entity/MemberCoinWithdrawEntity.java        |   58 ++++++++++++++
 src/main/java/com/xcong/excoin/modules/member/dao/MemberDao.java                          |    1 
 src/main/java/com/xcong/excoin/modules/member/service/MemberService.java                  |    3 
 7 files changed, 219 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 234bbc7..3512121 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
@@ -18,6 +18,7 @@
 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;
@@ -312,4 +313,16 @@
 		return memberService.memberAvivableCoinInfo(symbol);
 	}
     
+    /**
+	 * 	提币申请
+	 * @param token
+	 * @param coinVo
+	 * @return
+	 */
+    @ApiOperation(value="提交提币申请", notes="提交提币申请")
+	@PostMapping(value="/memberSubmitCoinApply")
+	public Result memberSubmitCoinApply(@RequestBody @Valid MemberSubmitCoinApplyDto memberSubmitCoinApplyDto) {
+		return memberService.memberSubmitCoinApply(memberSubmitCoinApplyDto);
+	}
+    
 }
diff --git a/src/main/java/com/xcong/excoin/modules/member/dao/MemberCoinWithdrawDao.java b/src/main/java/com/xcong/excoin/modules/member/dao/MemberCoinWithdrawDao.java
new file mode 100644
index 0000000..75ce0f4
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/member/dao/MemberCoinWithdrawDao.java
@@ -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.MemberCoinWithdrawEntity;
+
+public interface MemberCoinWithdrawDao  extends BaseMapper<MemberCoinWithdrawEntity> {
+
+}
diff --git a/src/main/java/com/xcong/excoin/modules/member/dao/MemberDao.java b/src/main/java/com/xcong/excoin/modules/member/dao/MemberDao.java
index bf507c7..b7e285a 100644
--- a/src/main/java/com/xcong/excoin/modules/member/dao/MemberDao.java
+++ b/src/main/java/com/xcong/excoin/modules/member/dao/MemberDao.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.xcong.excoin.modules.member.entity.MemberEntity;
+import com.xcong.excoin.modules.member.entity.MemberWalletCoinEntity;
 import com.xcong.excoin.modules.member.parameter.vo.NeedMoneyMemberVo;
 import org.apache.ibatis.annotations.Param;
 
diff --git a/src/main/java/com/xcong/excoin/modules/member/entity/MemberCoinWithdrawEntity.java b/src/main/java/com/xcong/excoin/modules/member/entity/MemberCoinWithdrawEntity.java
new file mode 100644
index 0000000..cea3765
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/member/entity/MemberCoinWithdrawEntity.java
@@ -0,0 +1,58 @@
+package com.xcong.excoin.modules.member.entity;
+
+import java.math.BigDecimal;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.xcong.excoin.common.system.base.BaseEntity;
+
+import lombok.Data;
+
+/**
+ * 会员提币表
+ */
+@Data
+@TableName("member_coin_withdraw")
+public class MemberCoinWithdrawEntity extends BaseEntity{
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	 /**
+     * 会员ID
+     */
+    private Long memberId;
+    /**
+     * 地址
+     */
+    private String address;
+    /**
+     * 提币数量
+     */
+    private BigDecimal amount;
+    /**
+     * 手续费
+     */
+    private BigDecimal feeAmount;
+    /**
+     * 币种
+     */
+    private String symbol;
+    /**
+     * 状态
+     */
+    private int status;
+    public static final int STATUS_DOING = 1;
+    /**
+     * 是否内部转账 Y-是N-不是
+     */
+    private String isInside;
+    public static final String ISINSIDE_YES = "Y";
+    public static final String ISINSIDE_NO = "N";
+
+    private String label;
+
+    private String tag;
+    
+    
+
+}
diff --git a/src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberSubmitCoinApplyDto.java b/src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberSubmitCoinApplyDto.java
new file mode 100644
index 0000000..5d4fa7b
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberSubmitCoinApplyDto.java
@@ -0,0 +1,48 @@
+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 = "MemberSubmitCoinApplyDto", description = "提交提币申请参数接收类")
+public class MemberSubmitCoinApplyDto {
+	
+	@NotNull(message = "地址不能为空")
+    @ApiModelProperty(value = "地址", example = "asfdsdafsdafdsaf1231232sdfsa")
+	private String address;
+	
+	@NotNull(message = "币数量不能为空")
+    @ApiModelProperty(value = "币数量", example = "10")
+	private BigDecimal coinNumber;
+	
+	@NotNull(message = "手续费不能为空")
+    @ApiModelProperty(value = "手续费", example = "10")
+	private BigDecimal feeAmount;
+	
+	@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 = "姓名")
+	private String lable;
+    
+    @ApiModelProperty(value = "姓名", example = "姓名")
+	private String tag;
+}
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 9145093..4f945e9 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
@@ -14,6 +14,7 @@
 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;
@@ -81,5 +82,7 @@
 
 	public Result memberUpdateTradersPwdTime(@Valid MemberUpdateTradersPwdTimeDto memberUpdateTradersPwdTimeDto);
 
+	public Result memberSubmitCoinApply(@Valid MemberSubmitCoinApplyDto memberSubmitCoinApplyDto);
+
 
 }
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 48b8eeb..995d87e 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
@@ -13,6 +13,8 @@
 import com.xcong.excoin.common.response.Result;
 import com.xcong.excoin.common.system.dto.RegisterDto;
 import com.xcong.excoin.common.system.service.CommonService;
+import com.xcong.excoin.modules.coin.dao.MemberAccountMoneyChangeDao;
+import com.xcong.excoin.modules.coin.entity.MemberAccountMoneyChange;
 import com.xcong.excoin.modules.member.dao.*;
 import com.xcong.excoin.modules.member.entity.*;
 import com.xcong.excoin.modules.member.parameter.dto.MemberAddCoinAddressDto;
@@ -23,6 +25,7 @@
 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;
@@ -75,6 +78,9 @@
 
     @Resource
     private MemberWalletAgentDao memberWalletAgentDao;
+    
+    @Resource
+    MemberAccountMoneyChangeDao memberAccountMoneyChangeDao;
 
     @Resource
     private MemberWalletContractDao memberWalletContractDao;
@@ -105,6 +111,9 @@
     
     @Resource
     private CommonService commonservice;
+    
+    @Resource
+    MemberCoinWithdrawDao memberCoinWithdrawDao;
 
     @Resource
     private MemberWalletContractSimulateDao memberWalletContractSimulateDao;
@@ -790,5 +799,83 @@
 		return Result.ok("success");
 	}
 
-
+	@Override
+	public Result memberSubmitCoinApply(@Valid MemberSubmitCoinApplyDto memberSubmitCoinApplyDto) {
+		//获取用户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(memberSubmitCoinApplyDto.getTradePassword()))) {
+                        return Result.fail(MessageSourceUtils.getString("member_service_0082"));
+                    }
+                    
+            		boolean flag = commonservice.verifyCode(memberSubmitCoinApplyDto.getAccount(), memberSubmitCoinApplyDto.getCode());
+                    if (flag) {
+                    	MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, memberSubmitCoinApplyDto.getSymbol());
+                    	BigDecimal availableBalance = walletCoin.getAvailableBalance();
+                    	BigDecimal coinNumber = memberSubmitCoinApplyDto.getCoinNumber().add(memberSubmitCoinApplyDto.getFeeAmount());
+                    	if(availableBalance.compareTo(BigDecimal.ZERO) > 0
+                    			&& availableBalance.compareTo(coinNumber) > 0) {
+                    		//新增提币记录
+                    		MemberCoinWithdrawEntity memberCoinWithdrawEntity = new MemberCoinWithdrawEntity();
+                    		memberCoinWithdrawEntity.setAddress(memberSubmitCoinApplyDto.getAddress());
+                    		memberCoinWithdrawEntity.setAmount(coinNumber.setScale(4, BigDecimal.ROUND_DOWN));
+                    		memberCoinWithdrawEntity.setFeeAmount(memberSubmitCoinApplyDto.getFeeAmount().setScale(4, BigDecimal.ROUND_DOWN));
+                    		memberCoinWithdrawEntity.setSymbol(memberSubmitCoinApplyDto.getSymbol());
+                    		memberCoinWithdrawEntity.setMemberId(memberId);
+                    		memberCoinWithdrawEntity.setStatus(MemberCoinWithdrawEntity.STATUS_DOING);
+                    		
+                    		Map<String,Object> columnMap = new HashMap<>();
+                    		columnMap.put("symbol", memberSubmitCoinApplyDto.getSymbol());
+                    		columnMap.put("address", memberSubmitCoinApplyDto.getAddress());
+                    		List<MemberCoinAddressEntity> selectByMap = memberCoinAddressDao.selectByMap(columnMap);
+                    		if(CollUtil.isEmpty(selectByMap)) {
+                    			memberCoinWithdrawEntity.setIsInside(MemberCoinWithdrawEntity.ISINSIDE_NO);
+                    		}else {
+                    			memberCoinWithdrawEntity.setIsInside(MemberCoinWithdrawEntity.ISINSIDE_YES);
+                    		}
+                    		memberCoinWithdrawDao.insert(memberCoinWithdrawEntity);
+                    		BigDecimal subtract = walletCoin.getAvailableBalance().subtract(coinNumber);
+                    		walletCoin.setAvailableBalance(subtract.setScale(4, BigDecimal.ROUND_DOWN));
+                    		BigDecimal add = walletCoin.getFrozenBalance().add(coinNumber);
+                            walletCoin.setFrozenBalance(add.setScale(4, BigDecimal.ROUND_DOWN));
+                            memberWalletCoinDao.updateById(walletCoin);
+                            
+                            MemberAccountMoneyChange accountRecord = new MemberAccountMoneyChange();
+                            accountRecord.setContent("提币");
+                            accountRecord.setMemberId(memberId);
+                            accountRecord.setAmount(memberSubmitCoinApplyDto.getCoinNumber());
+                            accountRecord.setStatus(MemberAccountMoneyChange.STATUS_WAIT_INTEGER);
+                            accountRecord.setSymbol(memberSubmitCoinApplyDto.getSymbol());
+                            accountRecord.setType(MemberAccountMoneyChange.TYPE_WALLET_COIN);
+                            memberAccountMoneyChangeDao.insert(accountRecord);
+                         /**
+                          *  TODO dingtalk
+    						Constant.excutor.execute(new Runnable() {
+    							@Override
+    							public void run() {
+    								DingTalkUtils.sendActionCard(3);
+    							}
+    						});
+    						*/
+                            return Result.ok(MessageSourceUtils.getString("member_service_0086"));
+                    	}else {
+                    		return Result.fail(MessageSourceUtils.getString("order_service_0040"));
+                    	}
+                    	
+                    }else {
+                    	return Result.fail(MessageSourceUtils.getString("member_service_0039"));
+                    }
+        }
+            			
 }
+
+

--
Gitblit v1.9.1