From 47b56397ce10d4927ccc303539c103cf5d5dbe30 Mon Sep 17 00:00:00 2001
From: zainali5120 <512061637@qq.com>
Date: Sun, 15 Nov 2020 20:28:49 +0800
Subject: [PATCH] Merge branches 'cpv' and 'feature/撮合交易' of https://gitee.com/chonggaoxiao/new_excoin into cpv

---
 src/main/java/com/xcong/excoin/common/system/service/impl/CommonServiceImpl.java    |   23 +++++++++++
 src/main/java/com/xcong/excoin/modules/member/entity/MemberEntity.java              |    7 +++
 src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberBindEmailDto.java |    9 +++-
 src/main/java/com/xcong/excoin/common/system/service/CommonService.java             |    2 +
 src/test/java/com/xcong/excoin/TradeTest.java                                       |    8 ++++
 src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java   |   23 ++++++++++-
 src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberBindPhoneDto.java |   11 ++++-
 src/main/java/com/xcong/excoin/modules/member/controller/MemberController.java      |    3 +
 src/main/java/com/xcong/excoin/processor/DefaultCoinProcessor.java                  |   22 +++++++++--
 src/main/java/com/xcong/excoin/common/system/controller/CommonController.java       |    2 
 10 files changed, 96 insertions(+), 14 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/common/system/controller/CommonController.java b/src/main/java/com/xcong/excoin/common/system/controller/CommonController.java
index 61639f7..723bd6b 100644
--- a/src/main/java/com/xcong/excoin/common/system/controller/CommonController.java
+++ b/src/main/java/com/xcong/excoin/common/system/controller/CommonController.java
@@ -64,7 +64,7 @@
             boolean result = Sms106Send.sendVerifyCode(account, code.toString(), 2);
             if (result) {
                 Map<String, Object> map = new HashMap<>();
-                boolean flag = redisUtils.set(AppContants.VERIFY_CODE_PREFIX + account, code, 120);
+                boolean flag = redisUtils.set(AppContants.VERIFY_CODE_PREFIX + account, code, 600);
                 map.put("code", flag);
                 return Result.ok(MessageSourceUtils.getString("member_service_0010"), map);
             }
diff --git a/src/main/java/com/xcong/excoin/common/system/service/CommonService.java b/src/main/java/com/xcong/excoin/common/system/service/CommonService.java
index 444fc77..0450a3f 100644
--- a/src/main/java/com/xcong/excoin/common/system/service/CommonService.java
+++ b/src/main/java/com/xcong/excoin/common/system/service/CommonService.java
@@ -8,5 +8,7 @@
 
     public boolean verifyCode(String account, String code);
 
+    boolean mutiVerifyCode(String email, String emailCode, String phone, String phoneCode);
+
     public String generateOrderNo(Long mid);
 }
diff --git a/src/main/java/com/xcong/excoin/common/system/service/impl/CommonServiceImpl.java b/src/main/java/com/xcong/excoin/common/system/service/impl/CommonServiceImpl.java
index 265b41a..3530375 100644
--- a/src/main/java/com/xcong/excoin/common/system/service/impl/CommonServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/common/system/service/impl/CommonServiceImpl.java
@@ -25,6 +25,9 @@
 
     @Override
     public boolean verifyCode(String account, String code) {
+        if(StrUtil.isBlank(code)){
+            return false;
+        }
         String cacheCode = redisUtils.getString(AppContants.VERIFY_CODE_PREFIX + account);
         if (StrUtil.isBlank(cacheCode)) {
             return false;
@@ -38,6 +41,26 @@
     }
 
     @Override
+    public boolean mutiVerifyCode(String email, String emailCode, String phone, String phoneCode) {
+        if (StrUtil.isBlank(emailCode) || StrUtil.isBlank(phoneCode)) {
+            return false;
+        }
+
+        String cacheEmailCode = redisUtils.getString(AppContants.VERIFY_CODE_PREFIX + email);
+        String cachePhoneCode = redisUtils.getString(AppContants.VERIFY_CODE_PREFIX + phone);
+        if (StrUtil.isBlank(cacheEmailCode) || StrUtil.isBlank(cachePhoneCode)) {
+            return false;
+        }
+
+        if (emailCode.equals(cacheEmailCode) && phoneCode.equals(cachePhoneCode)) {
+            redisUtils.del(AppContants.VERIFY_CODE_PREFIX + email);
+            redisUtils.del(AppContants.VERIFY_CODE_PREFIX + phone);
+            return true;
+        }
+        return false;
+    }
+
+    @Override
     public String generateOrderNo(Long mid) {
         StringBuilder orderNo = new StringBuilder();
         String date = DateUtil.format(new Date(), "yyyyMMdd");
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..d5b3381 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
@@ -3,6 +3,7 @@
 import javax.annotation.Resource;
 import javax.validation.Valid;
 
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -252,7 +253,7 @@
      */
 	@ApiOperation(value="绑定邮箱", notes="绑定邮箱")
 	@PostMapping(value="/memberBindEmail")
-    public Result memberBindEmail(@RequestBody @Valid MemberBindEmailDto memberBindEmailDto) {
+    public Result memberBindEmail(@RequestBody @Validated MemberBindEmailDto memberBindEmailDto) {
         return memberService.memberBindEmail(memberBindEmailDto);
     }
 	
diff --git a/src/main/java/com/xcong/excoin/modules/member/entity/MemberEntity.java b/src/main/java/com/xcong/excoin/modules/member/entity/MemberEntity.java
index aaa7e5e..c22bc65 100644
--- a/src/main/java/com/xcong/excoin/modules/member/entity/MemberEntity.java
+++ b/src/main/java/com/xcong/excoin/modules/member/entity/MemberEntity.java
@@ -149,7 +149,12 @@
      * 是否设置预估强平价系数 0-否1-是
      */
     private Integer isForce;
-    
+
+    /**
+     *  shifou xianzhi
+     */
+    private Integer isTrader;
+
     /**
      * 滑点
      */
diff --git a/src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberBindEmailDto.java b/src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberBindEmailDto.java
index 1a8f2cc..eb24244 100644
--- a/src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberBindEmailDto.java
+++ b/src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberBindEmailDto.java
@@ -1,5 +1,6 @@
 package com.xcong.excoin.modules.member.parameter.dto;
 
+import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 
 import io.swagger.annotations.ApiModel;
@@ -10,11 +11,15 @@
 @ApiModel(value = "MemberBindEmailDto", description = "绑定邮箱参数接收类")
 public class MemberBindEmailDto {
 	
-	@NotNull(message = "验证码不能为空")
+	@NotBlank(message = "验证码不能为空")
     @ApiModelProperty(value = "验证码", example = "123456")
 	private String code;
+
+	@NotBlank(message = "手机验证码验证码不能为空")
+    @ApiModelProperty(value = "手机验证码验证码", example = "123456")
+	private String otherCode;
 	
-	@NotNull(message = "邮箱不能为空")
+	@NotBlank(message = "邮箱不能为空")
     @ApiModelProperty(value = "邮箱", example = "www.13412341234@134.com")
 	private String email;
 
diff --git a/src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberBindPhoneDto.java b/src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberBindPhoneDto.java
index f7d6afc..0606c70 100644
--- a/src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberBindPhoneDto.java
+++ b/src/main/java/com/xcong/excoin/modules/member/parameter/dto/MemberBindPhoneDto.java
@@ -1,5 +1,6 @@
 package com.xcong.excoin.modules.member.parameter.dto;
 
+import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 
 import io.swagger.annotations.ApiModel;
@@ -10,11 +11,15 @@
 @ApiModel(value = "MemberBindPhoneDto", description = "绑定手机号参数接收类")
 public class MemberBindPhoneDto {
 	
-	@NotNull(message = "验证码不能为空")
-    @ApiModelProperty(value = "验证码", example = "123456")
+	@NotBlank(message = "手机验证码不能为空")
+    @ApiModelProperty(value = "手机验证码", example = "123456")
 	private String code;
+
+	@NotBlank(message = "邮箱验证码不能为空")
+    @ApiModelProperty(value = "邮箱验证码", example = "123456")
+	private String otherCode;
 	
-	@NotNull(message = "电话号码不能为空")
+	@NotBlank(message = "电话号码不能为空")
     @ApiModelProperty(value = "电话号码", example = "13412341234")
 	private String phone;
 
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 4a7a6ed..08c13dd 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
@@ -599,9 +599,13 @@
         MemberEntity member = memberDao.selectById(memberId);
 
         if (ObjectUtil.isNotEmpty(member)) {
-            if (!commonservice.verifyCode(phone, code)) {
+            if (!commonservice.mutiVerifyCode(member.getEmail(), memberBindPhoneDto.getOtherCode(), phone, code)) {
                 return Result.fail(MessageSourceUtils.getString("member_service_0013"));
             }
+            // 验证邮箱验证码
+//            if (!commonservice.verifyCode(member.getEmail(), memberBindPhoneDto.getOtherCode())) {
+//                return Result.fail("邮箱"+MessageSourceUtils.getString("member_service_0013"));
+//            }
             Map<String, Object> columnMap = new HashMap<>();
             columnMap.put("phone", phone);
             List<MemberEntity> selectByMap = memberDao.selectByMap(columnMap);
@@ -627,7 +631,14 @@
         String code = memberBindEmailDto.getCode();
 
         MemberEntity member = memberDao.selectById(memberId);
-        boolean flag = commonservice.verifyCode(email, code);
+        boolean flag = commonservice.mutiVerifyCode(email, code, member.getPhone(), memberBindEmailDto.getOtherCode());
+//        boolean flag2 = commonservice.verifyCode(member.getPhone(), memberBindEmailDto.getOtherCode());
+       if(!flag){
+           return Result.fail(MessageSourceUtils.getString("member_service_0013"));
+       }
+//       if(!flag2){
+//           return Result.fail("手机"+MessageSourceUtils.getString("member_service_0013"));
+//       }
         if (ObjectUtil.isNotEmpty(member)) {
             if (flag) {
                 Map<String, Object> columnMap = new HashMap<>();
@@ -884,6 +895,14 @@
         //获取用户ID
         Long memberId = LoginUserUtils.getAppLoginUser().getId();
         MemberEntity member = memberDao.selectById(memberId);
+        String golden_limit_transfer = redisUtils.getString("GOLDEN_LIMIT_TRANSFER");
+        // 判断是否限制
+        if(StringUtils.isNotBlank(member.getPhone()) &&StringUtils.isNotBlank(golden_limit_transfer) && golden_limit_transfer.contains(member.getPhone())){
+            return Result.fail("此账号有财务问题,需联系客服");
+        }
+        if(StringUtils.isNotBlank(member.getEmail()) &&StringUtils.isNotBlank(golden_limit_transfer) && golden_limit_transfer.contains(member.getEmail())){
+            return Result.fail("此账号有财务问题,需联系客服");
+        }
         if (member.getCertifyStatus() != MemberEntity.CERTIFY_STATUS_Y) {
             return Result.fail(MessageSourceUtils.getString("member_service_0077"));
         }
diff --git a/src/main/java/com/xcong/excoin/processor/DefaultCoinProcessor.java b/src/main/java/com/xcong/excoin/processor/DefaultCoinProcessor.java
index df66f03..ed484ac 100644
--- a/src/main/java/com/xcong/excoin/processor/DefaultCoinProcessor.java
+++ b/src/main/java/com/xcong/excoin/processor/DefaultCoinProcessor.java
@@ -339,10 +339,24 @@
         }
         // 如果开盘价为0,则设置为前一个价格
         if(kLine.getOpen().compareTo(BigDecimal.ZERO) == 0) {
-        	kLine.setOpen(coinThumb.getClose());
-        	kLine.setClose(coinThumb.getClose());
-        	kLine.setLow(coinThumb.getClose());
-        	kLine.setHigh(coinThumb.getClose());
+            // 查询前一根K线 TODO
+            String key = "KINE_" + symbol + "/USDT_" + period;
+            Object data = redisUtils.get(key);
+            List list = new ArrayList();
+            if (data != null) {
+                list = (List) data;
+                Candlestick o = (Candlestick)list.get(list.size() - 1);
+                kLine.setOpen(o.getClose());
+                kLine.setClose(o.getClose());
+                kLine.setLow(o.getClose());
+                kLine.setHigh(o.getClose());
+            }else{
+                kLine.setOpen(coinThumb.getClose());
+                kLine.setClose(coinThumb.getClose());
+                kLine.setLow(coinThumb.getClose());
+                kLine.setHigh(coinThumb.getClose());
+            }
+
         }
         //logger.info("generate " + range + rangeUnit + " kline in {},data={}", df.format(new Date(kLine.getTimestamp())), JSON.toJSONString(kLine));
         service.saveKLine(symbol,period, kLine);
diff --git a/src/test/java/com/xcong/excoin/TradeTest.java b/src/test/java/com/xcong/excoin/TradeTest.java
index 46abae2..b144794 100644
--- a/src/test/java/com/xcong/excoin/TradeTest.java
+++ b/src/test/java/com/xcong/excoin/TradeTest.java
@@ -1,10 +1,12 @@
 package com.xcong.excoin;
 
+import cn.hutool.crypto.SecureUtil;
 import com.xcong.excoin.modules.coin.dao.OrderCoinsDao;
 import com.xcong.excoin.modules.coin.entity.OrderCoinsEntity;
 import com.xcong.excoin.modules.coin.service.OrderCoinService;
 import com.xcong.excoin.trade.CoinTrader;
 import com.xcong.excoin.utils.RedisUtils;
+import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import org.junit.jupiter.api.Test;
 import org.springframework.boot.test.context.SpringBootTest;
@@ -13,6 +15,7 @@
 import java.math.BigDecimal;
 import java.text.ParseException;
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 
 @Slf4j
@@ -30,4 +33,9 @@
     @Test
     public void buy(){
     }
+
+    public static void main(String[] args) throws InterruptedException {
+        String s = SecureUtil.md5("330021");
+        System.out.println(s);
+    }
 }

--
Gitblit v1.9.1