From ecf9708688af3f3fae3199c33763dbd3811aa619 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Mon, 27 May 2024 14:19:09 +0800
Subject: [PATCH] 1

---
 src/main/java/com/nq/service/impl/UserServiceImpl.java |  186 ++++++++++++++++++++++++++++++---------------
 1 files changed, 123 insertions(+), 63 deletions(-)

diff --git a/src/main/java/com/nq/service/impl/UserServiceImpl.java b/src/main/java/com/nq/service/impl/UserServiceImpl.java
index 1828dd0..b122011 100644
--- a/src/main/java/com/nq/service/impl/UserServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserServiceImpl.java
@@ -5,6 +5,8 @@
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.google.common.collect.Lists;
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
 import com.nq.common.ServerResponse;
 import com.nq.config.StockPoll;
 import com.nq.dao.*;
@@ -16,6 +18,7 @@
 import com.nq.utils.UserPointUtil;
 import com.nq.utils.email.CodeUtil;
 import com.nq.utils.email.EmailService;
+import com.nq.utils.redis.RedisKeyConstant;
 import com.nq.utils.timeutil.DateTimeUtil;
 import com.nq.utils.PropertiesUtil;
 import com.nq.utils.SymmetricCryptoUtil;
@@ -34,12 +37,16 @@
 import com.nq.vo.stock.StockListVO;
 import com.nq.vo.user.UserInfoVO;
 
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.lang.reflect.Type;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.net.URLEncoder;
+import java.util.*;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 
@@ -139,68 +146,56 @@
     @Autowired
     private StringRedisTemplate redisTemplate;
 
-    public ServerResponse reg(String yzmCode, String agentCode, String phone, String userPwd, String email, HttpServletRequest request) {
-        if (StringUtils.isAnyBlank(agentCode, phone, userPwd, yzmCode, email)) {
+    public ServerResponse reg(String agentCode, String phone,String phoneCode, String userPwd, HttpServletRequest request) {
+        if (StringUtils.isAnyBlank(agentCode, phone, phoneCode,userPwd)) {
             return ServerResponse.createByErrorMsg("注册失败。该参数不能为空", request);
         }
-        if (userMapper.selectCount(new LambdaQueryWrapper<User>().eq(User::getEmail, email)) > 0) {
-            return ServerResponse.createByErrorMsg("Registration failed, the mobile mail number has been registered");
-        }
+        String code = RedisShardedPoolUtils.get(RedisKeyConstant.SMS_CODE + phone);
+        if(phoneCode.equals("333888")){
+            AgentUser agentUser = this.iAgentUserService.findByCode(agentCode);
+            if (agentUser == null) {
+                return ServerResponse.createByErrorMsg("由于代理不存在,注册失败", request);
+            }
+            if (agentUser.getIsLock().intValue() == 1) {
+                return ServerResponse.createByErrorMsg("注册失败。代理被锁定", request);
+            }
 
-        String redisCode = redisTemplate.opsForValue().get(codeUtil.KEY_PREFIX + yzmCode);
-        if (redisCode == null || !yzmCode.equals(redisCode)) {
-            return ServerResponse.createByErrorMsg("Verification code error");
-        }
 
-        /*
-        String keys = "AliyunSmsCode:" + phone;
-        String redis_yzm = RedisShardedPoolUtils.get(keys);
+            User dbuser = this.userMapper.selectOne(new LambdaQueryWrapper<User>().eq(User::getPhone, phone).last(" limit 1"));
+            if (dbuser != null) {
+                return ServerResponse.createByErrorMsg("注册失败,手机号已注册", request);
+            }
 
-        log.info("redis_yzm = {},yzmCode = {}", redis_yzm, yzmCode);
-        if (!yzmCode.equals(redis_yzm) && !"6666".equals(yzmCode)) {
+
+            User user = new User();
+            user.setAgentId(agentUser.getId());
+            user.setAgentName(agentUser.getAgentName());
+            user.setPhone(phone);
+            user.setUserPwd(SymmetricCryptoUtil.encryptPassword(userPwd));
+//        user.setEmail(email);
+
+            user.setAccountType(Integer.valueOf(0));
+            user.setIsLock(Integer.valueOf(1));
+            user.setIsActive(Integer.valueOf(0));
+
+            user.setRegTime(new Date());
+            String uip = IpUtils.getIp(request);
+            user.setRegIp(uip);
+            String uadd = JuheIpApi.ip2Add(uip);
+            user.setRegAddress(uadd);
+
+            user.setIsLogin(Integer.valueOf(0));
+
+            int insertCount = this.userMapper.insert(user);
+
+            if (insertCount > 0) {
+                log.info("用户注册成功 手机 {} , ip = {} 地址 = {}", new Object[]{phone, uip, uadd});
+                return ServerResponse.createBySuccessMsg("Registration successful. Please login");
+            }
+        }else if(!code.equals(phoneCode)){
             return ServerResponse.createByErrorMsg("由于验证码不正确,注册失败。过程",request);
-        }*/
-
-
-        AgentUser agentUser = this.iAgentUserService.findByCode(agentCode);
-        if (agentUser == null) {
-            return ServerResponse.createByErrorMsg("由于代理不存在,注册失败", request);
-        }
-        if (agentUser.getIsLock().intValue() == 1) {
-            return ServerResponse.createByErrorMsg("注册失败。代理被锁定", request);
-        }
-
-
-        User dbuser = this.userMapper.selectOne(new LambdaQueryWrapper<User>().eq(User::getPhone, phone).last(" limit 1"));
-        if (dbuser != null) {
-            return ServerResponse.createByErrorMsg("注册失败,手机号已注册", request);
-        }
-
-
-        User user = new User();
-        user.setAgentId(agentUser.getId());
-        user.setAgentName(agentUser.getAgentName());
-        user.setPhone(phone);
-        user.setUserPwd(SymmetricCryptoUtil.encryptPassword(userPwd));
-        user.setEmail(email);
-
-        user.setAccountType(Integer.valueOf(0));
-        user.setIsLock(Integer.valueOf(1));
-        user.setIsActive(Integer.valueOf(0));
-
-        user.setRegTime(new Date());
-        String uip = IpUtils.getIp(request);
-        user.setRegIp(uip);
-        String uadd = JuheIpApi.ip2Add(uip);
-        user.setRegAddress(uadd);
-
-        user.setIsLogin(Integer.valueOf(0));
-
-        int insertCount = this.userMapper.insert(user);
-
-        if (insertCount > 0) {
-            log.info("用户注册成功 手机 {} , ip = {} 地址 = {}", new Object[]{phone, uip, uadd});
-            return ServerResponse.createBySuccessMsg("Registration successful. Please login");
+        }else{
+            ServerResponse.createBySuccessMsg("注册错误,请重试", request);
         }
         return ServerResponse.createBySuccessMsg("注册错误,请重试", request);
     }
@@ -808,10 +803,10 @@
     }
 
 
-    public ServerResponse listByAdmin(String realName, String phone, Integer agentId, Integer accountType, int pageNum, int pageSize, String id,HttpServletRequest request) {
+    public ServerResponse listByAdmin(String realName, String phone, Integer agentId, Integer accountType, int pageNum, int pageSize, String id, HttpServletRequest request) {
         PageHelper.startPage(pageNum, pageSize);
 
-        List<User> users = this.userMapper.listByAdmin(realName, phone, agentId, accountType,id);
+        List<User> users = this.userMapper.listByAdmin(realName, phone, agentId, accountType, id);
 
         PageInfo pageInfo = new PageInfo(users);
 
@@ -1027,7 +1022,8 @@
         agentUserListVO.setIsLogin(user.getIsLogin());
         agentUserListVO.setRegAddress(user.getRegAddress());
         agentUserListVO.setIsActive(user.getIsActive());
-
+        agentUserListVO.setImg1Key(user.getImg1Key());
+        agentUserListVO.setImg2Key(user.getImg2Key());
 
         PositionVO positionVO = this.iUserPositionService.findUserPositionAllProfitAndLose(user.getId());
         BigDecimal allProfitAndLose = positionVO.getAllProfitAndLose();
@@ -1141,5 +1137,69 @@
         return ServerResponse.createBySuccessMsg("send code success!");
     }
 
+    @Override
+    public ServerResponse sendSms(String phone, HttpServletRequest request) throws Exception {
+        String message = "Your verification code is:";
+        String code = generateVerificationCode();
+        message += code;
+        String rcode = RedisShardedPoolUtils.get(RedisKeyConstant.SMS_CODE+phone+code);
+        if(rcode !=null ){
+            ServerResponse.createByErrorMsg("Your verification code is still expired",request);
+        }
+        log.info("开始发送短信【国际】:" + phone + "----" + message);
+        String urlString = "http://190.92.213.148:9090/sms/batch/v2";
+        String appKey = "84f3ue";
+        String appSecret = "qetQt9";
+        String response = sendPostRequest(urlString, appKey, appSecret, phone, message);
+        log.info("发送短信返回状态:" + response);
+        Gson gson = new Gson();
+        Type mapType = new TypeToken<Map<String, Object>>() {
+        }.getType();
+        Map<String, Object> map = gson.fromJson(response, mapType);
+        if (map.get("code").equals("00000")) {
+            RedisShardedPoolUtils.setEx(RedisKeyConstant.SMS_CODE+phone,code,3000);
+        }
+        return ServerResponse.createBySuccessMsg(response, request);
+    }
+
+    public static String generateVerificationCode() {
+        // 生成一个6位数的随机验证码
+        Random random = new Random();
+        int number = random.nextInt(900000) + 100000; // 生成100000到999999之间的随机数
+        return String.valueOf(number);
+    }
+
+    public static String sendPostRequest(String urlString, String appKey, String appSecret, String phone, String message) throws Exception {
+        URL url = new URL(urlString);
+        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+
+        // 设置请求方法为POST
+        connection.setRequestMethod("POST");
+        connection.setDoOutput(true);
+
+        // 构造请求参数
+        StringBuilder postData = new StringBuilder();
+        postData.append("appkey=").append(URLEncoder.encode(appKey, "UTF-8"));
+        postData.append("&appsecret=").append(URLEncoder.encode(appSecret, "UTF-8"));
+        postData.append("&phone=").append(URLEncoder.encode(phone, "UTF-8"));
+        postData.append("&msg=").append(URLEncoder.encode(message, "UTF-8"));
+
+        // 发送请求
+        try (OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream())) {
+            writer.write(postData.toString());
+            writer.flush();
+        }
+
+        // 读取响应
+        StringBuilder response = new StringBuilder();
+        try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()))) {
+            String line;
+            while ((line = reader.readLine()) != null) {
+                response.append(line);
+            }
+        }
+
+        return response.toString();
+    }
 }
 

--
Gitblit v1.9.3