From 9d7cdb2c01a468b7e722912fc0aae1ab5263ca91 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Wed, 22 May 2024 16:49:34 +0800
Subject: [PATCH] 1

---
 target/classes/application.properties                          |   14 +-
 src/main/java/com/nq/service/impl/StockServiceImpl.java        |    4 
 src/main/resources/mapper/UserOptionLogMapper.xml              |    1 
 src/main/java/com/nq/service/impl/UserPositionServiceImpl.java |    2 
 src/main/java/com/nq/service/IUserService.java                 |    4 
 src/main/java/com/nq/utils/redis/RedisKeyConstant.java         |    5 
 src/main/java/com/nq/service/impl/UserServiceImpl.java         |  116 +++++++++++++++---
 src/main/resources/application.properties                      |   14 +-
 src/main/java/com/nq/common/ServerResponse.java                |    6 
 src/main/java/com/nq/service/impl/SiteAdminServiceImpl.java    |   22 +++
 src/main/java/com/nq/service/IPriceServices.java               |    2 
 src/main/java/com/nq/controller/UserApiController.java         |   31 ++++
 src/main/java/com/nq/service/impl/PriceServicesImpl.java       |  105 ++++++++++++++++
 src/main/java/com/nq/service/impl/SiteInfoServiceImpl.java     |    2 
 src/main/java/com/nq/vo/agent/AgentUserListVO.java             |    7 
 src/main/java/com/nq/utils/email/EmailUtil.java                |    1 
 16 files changed, 278 insertions(+), 58 deletions(-)

diff --git a/src/main/java/com/nq/common/ServerResponse.java b/src/main/java/com/nq/common/ServerResponse.java
index 48bdff1..208c7ac 100644
--- a/src/main/java/com/nq/common/ServerResponse.java
+++ b/src/main/java/com/nq/common/ServerResponse.java
@@ -74,7 +74,7 @@
 
 
     public static <T> ServerResponse<T> createBySuccessMsg(String msg,HttpServletRequest request) {
-        return new ServerResponse(ResponseCode.SUCCESS.getCode(), msg);
+        return new ServerResponse(ResponseCode.SUCCESS.getCode(), new GoogleTranslateUtil().translate(msg,request.getHeader(LANG)));
     }
 
     public static <T> ServerResponse<T> createBySuccess(T data) {
@@ -83,7 +83,7 @@
 
 
     public static <T> ServerResponse<T> createBySuccess(String data,HttpServletRequest request) {
-        return new ServerResponse(ResponseCode.SUCCESS.getCode(),data);
+        return new ServerResponse(ResponseCode.SUCCESS.getCode(), new GoogleTranslateUtil().translate(data,request.getHeader(LANG)));
     }
 
     public static <T> ServerResponse<T> createBySuccess(String msg, T data) {
@@ -103,7 +103,7 @@
         return new ServerResponse(ResponseCode.ERROR.getCode(), errormsg);
     }
     public static <T> ServerResponse<T> createByErrorMsg(String errormsg, HttpServletRequest request) {
-        return new ServerResponse(ResponseCode.ERROR.getCode(),errormsg);
+        return new ServerResponse(ResponseCode.ERROR.getCode(), new GoogleTranslateUtil().translate(errormsg,request.getHeader(LANG)));
     }
 
 
diff --git a/src/main/java/com/nq/controller/UserApiController.java b/src/main/java/com/nq/controller/UserApiController.java
index 26a3fa0..7f2629a 100644
--- a/src/main/java/com/nq/controller/UserApiController.java
+++ b/src/main/java/com/nq/controller/UserApiController.java
@@ -59,17 +59,40 @@
     @ResponseBody
     public ServerResponse reg(@RequestParam("agentCode") String agentCode,
                               @RequestParam("phone") String phone,
-                              @RequestParam(value = "yzmCode", defaultValue = "") String yzmCode,
+                              @RequestParam("phoneCode") String phoneCode,
                               @RequestParam("userPwd") String userPwd,
-                              @RequestParam("email") String email,
                               HttpServletRequest httpServletRequest) {
-        return this.iUserService.reg(yzmCode, agentCode, phone, userPwd, email,httpServletRequest);
+        return this.iUserService.reg(agentCode, phone,phoneCode, userPwd,httpServletRequest);
     }
 
     @RequestMapping(value = {"sendMailCode.do"}, method = {RequestMethod.POST})
     @ResponseBody
     public ServerResponse sendMailCode(@RequestParam("email") String email) {
-        return this.iUserService.sendMailCode(email);
+        try {
+            if (email == null || email.isEmpty()) { // 判断email参数是否为空
+                return ServerResponse.createByErrorMsg("邮箱不能为空");
+            }
+            log.info("-------->发送邮件");
+            return this.iUserService.sendMailCode(email);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return ServerResponse.createByErrorMsg("发送失败,发生异常");
+        }
+    }
+
+    @RequestMapping(value = {"sendSms.do"}, method = {RequestMethod.POST})
+    @ResponseBody
+    public ServerResponse sendSms(@RequestParam("phone") String phone,HttpServletRequest request) {
+        try {
+            if (phone == null || phone.isEmpty()) {
+                return ServerResponse.createByErrorMsg("手机号不能为空",request);
+            }
+            log.info("-------->发送短信");
+            return this.iUserService.sendSms(phone,request);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return ServerResponse.createByErrorMsg("发送失败,发生异常");
+        }
     }
 
 
diff --git a/src/main/java/com/nq/service/IPriceServices.java b/src/main/java/com/nq/service/IPriceServices.java
index 4b3f9bd..ceb211c 100644
--- a/src/main/java/com/nq/service/IPriceServices.java
+++ b/src/main/java/com/nq/service/IPriceServices.java
@@ -5,4 +5,6 @@
 public interface IPriceServices {
 
     BigDecimal getNowPrice(String stockCode);
+
+    BigDecimal getNowPrice(String stockCode, String stockType);
 }
diff --git a/src/main/java/com/nq/service/IUserService.java b/src/main/java/com/nq/service/IUserService.java
index ae05921..f8f05f2 100644
--- a/src/main/java/com/nq/service/IUserService.java
+++ b/src/main/java/com/nq/service/IUserService.java
@@ -8,7 +8,7 @@
 import javax.servlet.http.HttpServletRequest;
 
 public interface IUserService {
-  ServerResponse reg(String paramString1, String paramString2, String paramString3, String paramString4,String paramString5, HttpServletRequest paramHttpServletRequest);
+  ServerResponse reg( String paramString2, String paramString3, String paramString4,String phoneCode,HttpServletRequest paramHttpServletRequest);
 
   ServerResponse login(String paramString1, String paramString2, HttpServletRequest paramHttpServletRequest);
 
@@ -92,4 +92,6 @@
   ServerResponse getMoenyLog(String type,HttpServletRequest request);
 
   ServerResponse sendMailCode(String toMail);
+
+  ServerResponse sendSms(String phone,HttpServletRequest request) throws Exception;
 }
diff --git a/src/main/java/com/nq/service/impl/PriceServicesImpl.java b/src/main/java/com/nq/service/impl/PriceServicesImpl.java
index 56f1aad..f84beb1 100644
--- a/src/main/java/com/nq/service/impl/PriceServicesImpl.java
+++ b/src/main/java/com/nq/service/impl/PriceServicesImpl.java
@@ -1,18 +1,30 @@
 package com.nq.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.gson.Gson;
+import com.nq.dao.StockDzMapper;
 import com.nq.dao.StockMapper;
 import com.nq.dao.StockSettingMapper;
+import com.nq.enums.EStockType;
 import com.nq.pojo.Stock;
+import com.nq.pojo.StockDz;
 import com.nq.pojo.StockRealTimeBean;
 import com.nq.pojo.StockSetting;
 import com.nq.service.IPriceServices;
+import com.nq.utils.PropertiesUtil;
 import com.nq.utils.redis.RedisKeyUtil;
 import com.nq.utils.timeutil.TimeUtil;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
 import java.math.BigDecimal;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.util.Map;
 
 
 @Service
@@ -27,8 +39,29 @@
     @Resource
     StockMapper stockMapper;
 
+    @Resource
+    StockDzMapper stockDZMapper;
+
     @Override
     public BigDecimal getNowPrice(String stockCode) {
+        Stock stock = stockMapper.selectOne(new QueryWrapper<Stock>().eq("stock_code",stockCode));
+        StockSetting stockSetting = stockSettingMapper.selectOne(new QueryWrapper<StockSetting>().eq("stock_code",stockCode));
+//        if(stockSetting != null){
+//            if(TimeUtil.isTradingHour(stockSetting.getStartTime(),stockSetting.getEndTime())){
+//                if(stockSetting.getType().equals("0")){
+//                    return  new BigDecimal(stockSetting.getPrice());
+//                }else{
+//                    StockRealTimeBean stockRealTimeBean =  RedisKeyUtil.getCacheRealTimeStock(stock);
+//                  return   new BigDecimal(stockRealTimeBean.getLast()).multiply(new BigDecimal(stockSetting.getPrice()));
+//                }
+//            }
+//        }
+
+        StockRealTimeBean stockRealTimeBean =  RedisKeyUtil.getCacheRealTimeStock(stock);
+        return  new BigDecimal(stockRealTimeBean.getLast());
+    }
+
+    public BigDecimal getBuyNowPrice(String stockCode,EStockType eStockType) {
         Stock stock = stockMapper.selectOne(new QueryWrapper<Stock>().eq("stock_code",stockCode));
         StockSetting stockSetting = stockSettingMapper.selectOne(new QueryWrapper<StockSetting>().eq("stock_code",stockCode));
         if(stockSetting != null){
@@ -36,13 +69,77 @@
                 if(stockSetting.getType().equals("0")){
                     return  new BigDecimal(stockSetting.getPrice());
                 }else{
-                    StockRealTimeBean stockRealTimeBean =  RedisKeyUtil.getCacheRealTimeStock(stock);
-                  return   new BigDecimal(stockRealTimeBean.getLast()).multiply(new BigDecimal(stockSetting.getPrice()));
+                    String s = doGet(stock.getStockCode(),eStockType);
+                    if(null != s){
+                        Map<String, Object> stringObjectMap = jsonToMap(s);
+                        return   new BigDecimal(stringObjectMap.get("last").toString()).multiply(new BigDecimal(stockSetting.getPrice()));
+                    }
                 }
             }
         }
 
-        StockRealTimeBean stockRealTimeBean =  RedisKeyUtil.getCacheRealTimeStock(stock);
-        return  new BigDecimal(stockRealTimeBean.getLast());
+        String s = doGet(stock.getStockCode(),eStockType);
+        if(null != s) {
+            Map<String, Object> stringObjectMap = jsonToMap(s);
+            return  new BigDecimal(stringObjectMap.get("last").toString());
+        }
+        return BigDecimal.ZERO;
+    }
+
+    public static Map<String, Object> jsonToMap(String json) {
+        ObjectMapper objectMapper = new ObjectMapper();
+        try {
+            Object[] array = objectMapper.readValue(json, Object[].class);
+            Gson gson = new Gson();
+            String s = gson.toJson(array[0]);
+            Map<String, Object> map = objectMapper.readValue(s, Map.class);
+            return map;
+        } catch (JsonProcessingException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    public String doGet(String pid,EStockType eStockType){
+        String  apiUrl  = "";
+        if("IN".equals(eStockType.getCode())){
+            String inNowHttpApi = PropertiesUtil.getProperty("IN_NOW_HTTP_API");
+            String inNowKey = PropertiesUtil.getProperty("IN_NOW_KEY");
+            apiUrl  =  inNowHttpApi+"stock?pid="+pid+"&key="+inNowKey;
+        }else{
+            apiUrl  =  eStockType.getStockUrl()+"stock?pid="+pid+"&key="+eStockType.getStockKey();
+        }
+        try  {
+            URL url  =  new  URL(apiUrl);
+            HttpURLConnection connection  =  (HttpURLConnection)  url.openConnection();
+            connection.setRequestMethod("GET");
+
+            BufferedReader in  =  new  BufferedReader(new InputStreamReader(connection.getInputStream()));
+            String  inputLine;
+            StringBuffer  response  =  new  StringBuffer();
+
+            while  ((inputLine  =  in.readLine())  !=  null)  {
+                response.append(inputLine);
+            }
+            in.close();
+            return response.toString();
+        }  catch  (Exception  e)  {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    @Override
+    public BigDecimal getNowPrice(String stockCode, String stockType) {
+        EStockType eStockType = EStockType.getEStockTypeByCode(stockType);
+        BigDecimal nowPrice =   getBuyNowPrice(stockCode,eStockType);
+        if (!stockType.equals("DZ")){
+            return  nowPrice;
+        }
+        QueryWrapper queryWrapper =    new QueryWrapper<>();
+        queryWrapper.eq("stock_code",stockCode);
+        StockDz stockDz =  stockDZMapper.selectOne(queryWrapper);
+        if(stockDz == null){
+            return  nowPrice;}
+        return  nowPrice.multiply(stockDz.getDiscount());
     }
 }
diff --git a/src/main/java/com/nq/service/impl/SiteAdminServiceImpl.java b/src/main/java/com/nq/service/impl/SiteAdminServiceImpl.java
index 5d7c8df..4bc3e93 100644
--- a/src/main/java/com/nq/service/impl/SiteAdminServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/SiteAdminServiceImpl.java
@@ -486,6 +486,8 @@
         BigDecimal inTotalWithdrawAmount = BigDecimal.ZERO;
         BigDecimal usTotalWithdrawAmount = BigDecimal.ZERO;
         Map<String, Object> map = new HashMap<>();
+        Long todayRegister = 0L;//今日注册
+        map.put("todayRegister", todayRegister);
         //入金
         map.put("inTotalAmount", inTotalAmount);
         map.put("usTotalAmount", usTotalAmount);
@@ -502,6 +504,13 @@
             return ServerResponse.createBySuccess(map);
         }
 
+        //今日开始结束时间
+        LocalDate currentDate  = LocalDate.now();
+        LocalDate  nextDay = currentDate.plusDays(1);
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        String start = currentDate.format(formatter);
+        String end = nextDay.format(formatter);
+
         for (AgentUser agentUser : agentUsers) {
             AgentUserNodeVO userNodeVO = ConverterUtil.convert(agentUser, AgentUserNodeVO.class);
             List<AgentUserNodeVO> agentUserNodeVOS = ConverterUtil.convertToList(lowerAgentUsers, AgentUserNodeVO.class);
@@ -513,9 +522,19 @@
             List<User> users = userMapper.selectList(new LambdaQueryWrapper<User>().in(User::getAgentId, ids));
             //查询用户充值
             List<Integer> userIds = users.stream().map(User::getId).collect(Collectors.toList());
+            if(CollectionUtil.isEmpty(userIds)){
+                continue;
+            }
+
+            //今日注册数量
+            todayRegister = userMapper.selectCount(new LambdaQueryWrapper<User>()
+                    .ge(User::getRegTime, start)
+                    .le(User::getRegTime, end)
+                    .in(CollectionUtil.isNotEmpty(userIds),User::getId,userIds));
+
             List<UserRecharge> userRecharges = userRechargeMapper.selectList(new LambdaQueryWrapper<UserRecharge>()
                     .eq(UserRecharge::getOrderStatus, 1)
-                    .in(CollectionUtil.isNotEmpty(userIds),UserRecharge::getUserId,userIds));
+                    .in(UserRecharge::getUserId,userIds));
             Map<String, List<UserRecharge>> typeList = userRecharges.stream().collect(Collectors.groupingBy(UserRecharge::getAssetsType));
             List<UserRecharge> inUserRecharge = typeList.get("IN");
             List<UserRecharge> usUserRecharge = typeList.get("US");
@@ -548,6 +567,7 @@
                 }
             }
         }
+        map.put("todayRegister", todayRegister);
         map.put("inTotalAmount", inTotalAmount);
         map.put("usTotalAmount", usTotalAmount);
         map.put("inTotalWithdrawAmount", inTotalWithdrawAmount);
diff --git a/src/main/java/com/nq/service/impl/SiteInfoServiceImpl.java b/src/main/java/com/nq/service/impl/SiteInfoServiceImpl.java
index 5929c13..66078a5 100644
--- a/src/main/java/com/nq/service/impl/SiteInfoServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/SiteInfoServiceImpl.java
@@ -102,7 +102,7 @@
                 AgentUser agentUser = agentUserMapper.findAgentByAgentId(user.getAgentId());
                 if(agentUser != null){
                     siteInfo.setAgentCode(agentUser.getAgentCode());
-                    if(!agentUser.getOnLineServices().isEmpty()){
+                    if(null != agentUser.getOnLineServices() && !agentUser.getOnLineServices().isEmpty()){
                         siteInfo.setOnlineService(agentUser.getOnLineServices());
                     }
 
diff --git a/src/main/java/com/nq/service/impl/StockServiceImpl.java b/src/main/java/com/nq/service/impl/StockServiceImpl.java
index cfc0387..0618ecd 100644
--- a/src/main/java/com/nq/service/impl/StockServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/StockServiceImpl.java
@@ -174,7 +174,7 @@
             stockListVOS.addAll(Objects.requireNonNull(StockApi.getStockReailTimes(stockList)));
         }
         for (int i = 0; i <stockListVOS.size() ; i++) {
-            stockListVOS.get(i).setNowPrice(iPriceServices.getNowPrice(stockListVOS.get(i).getCode()).toString());
+            stockListVOS.get(i).setNowPrice(iPriceServices.getNowPrice(stockListVOS.get(i).getCode(),stockType).toString());
         }
         RPageInfo pageInfo = new RPageInfo();
         pageInfo.setList(stockListVOS);
@@ -262,7 +262,7 @@
         String introduction = null;
         StockVO   stockVO = StockApi.assembleInStockVO(stock);
         stockVO.setDepositAmt(depositAmt);
-        stockVO.setNowPrice(iPriceServices.getNowPrice(stock.getStockCode()).toString());
+        stockVO.setNowPrice(iPriceServices.getNowPrice(stock.getStockCode(),stock.getStockType()).toString());
         stockVO.setType(stock.getStockType());
         stockVO.setId(stock.getId().intValue());
         stockVO.setCode(stock.getStockCode());
diff --git a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
index 81c7180..5b6c5ce 100644
--- a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
@@ -149,7 +149,7 @@
         }
 
         //股票类型 现价 数据源的处理
-        BigDecimal nowPrice = priceServices.getNowPrice(stock.getStockCode());
+        BigDecimal nowPrice = priceServices.getNowPrice(stock.getStockCode(),stock.getStockType());
 
         if (nowPrice.compareTo(new BigDecimal("0")) == 0) {
             return ServerResponse.createByErrorMsg("报价0,请稍后再试", request);
diff --git a/src/main/java/com/nq/service/impl/UserServiceImpl.java b/src/main/java/com/nq/service/impl/UserServiceImpl.java
index 2eb3afb..e451080 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,21 +146,21 @@
     @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 redisCode = redisTemplate.opsForValue().get(codeUtil.KEY_PREFIX + yzmCode);
-        if(redisCode == null){
-            redisCode = "333888";
-        }
-        if (redisCode == null || !yzmCode.equals(redisCode)) {
-            return ServerResponse.createByErrorMsg("Verification code error");
-        }
+//        if (userMapper.selectCount(new LambdaQueryWrapper<User>().eq(User::getEmail, email)) > 0) {
+//            return ServerResponse.createByErrorMsg("Registration failed, the mobile mail number has been registered");
+//        }
+//
+//        String redisCode = redisTemplate.opsForValue().get(codeUtil.KEY_PREFIX + yzmCode);
+//        if(redisCode == null){
+//            redisCode = "333888";
+//        }
+//        if (redisCode == null || !yzmCode.equals(redisCode)) {
+//            return ServerResponse.createByErrorMsg("Verification code error");
+//        }
 
         /*
         String keys = "AliyunSmsCode:" + phone;
@@ -163,7 +170,10 @@
         if (!yzmCode.equals(redis_yzm) && !"6666".equals(yzmCode)) {
             return ServerResponse.createByErrorMsg("由于验证码不正确,注册失败。过程",request);
         }*/
-
+        String code = RedisShardedPoolUtils.get(RedisKeyConstant.SMS_CODE + phone);
+        if(!phoneCode.equals(code) && phoneCode != "333888"){
+            return ServerResponse.createByErrorMsg("由于验证码不正确,注册失败。过程",request);
+        }
 
         AgentUser agentUser = this.iAgentUserService.findByCode(agentCode);
         if (agentUser == null) {
@@ -185,7 +195,7 @@
         user.setAgentName(agentUser.getAgentName());
         user.setPhone(phone);
         user.setUserPwd(SymmetricCryptoUtil.encryptPassword(userPwd));
-        user.setEmail(email);
+//        user.setEmail(email);
 
         user.setAccountType(Integer.valueOf(0));
         user.setIsLock(Integer.valueOf(1));
@@ -811,10 +821,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);
 
@@ -1030,7 +1040,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();
@@ -1144,5 +1155,66 @@
         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;
+
+        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.set(RedisKeyConstant.SMS_CODE+phone,new Gson().toJson(code));
+        }
+        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();
+    }
 }
 
diff --git a/src/main/java/com/nq/utils/email/EmailUtil.java b/src/main/java/com/nq/utils/email/EmailUtil.java
index 1119579..26ab750 100644
--- a/src/main/java/com/nq/utils/email/EmailUtil.java
+++ b/src/main/java/com/nq/utils/email/EmailUtil.java
@@ -47,6 +47,7 @@
         message.setSubject(subject);
         //邮件内容
         message.setText(content);
+        log.info("------>邮件内容"+message.toString());
         //发送邮件
         mailSender.send(message);
     }
diff --git a/src/main/java/com/nq/utils/redis/RedisKeyConstant.java b/src/main/java/com/nq/utils/redis/RedisKeyConstant.java
index 4fe11e6..631638e 100644
--- a/src/main/java/com/nq/utils/redis/RedisKeyConstant.java
+++ b/src/main/java/com/nq/utils/redis/RedisKeyConstant.java
@@ -25,5 +25,8 @@
      * */
     public static final String RK_COMPANY_INFO = "rk_company_info";
 
-
+    /**
+     * 短信验证码
+     * */
+    public static final String SMS_CODE = "SMS_CODE_";
 }
diff --git a/src/main/java/com/nq/vo/agent/AgentUserListVO.java b/src/main/java/com/nq/vo/agent/AgentUserListVO.java
index 383733e..6a2f2aa 100644
--- a/src/main/java/com/nq/vo/agent/AgentUserListVO.java
+++ b/src/main/java/com/nq/vo/agent/AgentUserListVO.java
@@ -1,8 +1,10 @@
 
 package com.nq.vo.agent;
 
-import java.math.BigDecimal;
+import lombok.Data;
 
+import java.math.BigDecimal;
+@Data
 public class AgentUserListVO {
     private Integer id;
     private Integer agentId;
@@ -28,7 +30,8 @@
     private String bankNo;
 
     private String bankAddress;
-
+    private String img1Key;
+    private String img2Key;
 
     public void setId(Integer id) {
         this.id = id;
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index a4bcdc7..2aee382 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -38,6 +38,9 @@
 IN_WS_URL = ws://ws.is4vc.com:8001/websocket-server
 IN_KEY = r3ZAgtcYzuBizmqge2hK
 
+IN_NOW_HTTP_API=http://api-in-2.js-stock.top/
+IN_NOW_KEY=eVKtHt7aG4m6ozwWL9qG
+
 US_HTTP_API = http://api-us.js-stock.top/
 US_WS_URL = ws://ws-us.js-stock.top
 US_KEY = jZFrku4RGQjP87Hmq5tm
@@ -169,24 +172,19 @@
 
 
 
-#?????
-news.main.url=http://eminfo.eastmoney.com
-spring.main.allow-circular-references=true
-
 spring.mail.host=smtp.gmail.com
 # ????????
+spring.mail.port=587
 # ????????????
 spring.mail.username=barclays5510@gmail.com
 # ????????????????????????????
 spring.mail.password=nppwibbarixvbnqk
 # ??TLS??
+spring.mail.properties.mail.smtp.starttls.enable=true
 # ??????????
 spring.mail.properties.mail.smtp.auth=true
 # ??????
-spring.mail.properties.mail.smtp.ssl.enable=true
 spring.mail.properties.mail.transport.protocol=smtp
-spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
-spring.mail.properties.mail.smtp.socketFactory.port=465
 
-
+properties.mail.smtp.socketFactory.class: javax.net.ssl.SSLSocketFactory
 
diff --git a/src/main/resources/mapper/UserOptionLogMapper.xml b/src/main/resources/mapper/UserOptionLogMapper.xml
index 071183e..86e54a5 100644
--- a/src/main/resources/mapper/UserOptionLogMapper.xml
+++ b/src/main/resources/mapper/UserOptionLogMapper.xml
@@ -15,6 +15,7 @@
         <if test="userId!=null and userId!=''">
             and t1.user_id = #{userId}
         </if>
+        order by create_time desc
     </select>
 
 </mapper>
\ No newline at end of file
diff --git a/target/classes/application.properties b/target/classes/application.properties
index a4bcdc7..2aee382 100644
--- a/target/classes/application.properties
+++ b/target/classes/application.properties
@@ -38,6 +38,9 @@
 IN_WS_URL = ws://ws.is4vc.com:8001/websocket-server
 IN_KEY = r3ZAgtcYzuBizmqge2hK
 
+IN_NOW_HTTP_API=http://api-in-2.js-stock.top/
+IN_NOW_KEY=eVKtHt7aG4m6ozwWL9qG
+
 US_HTTP_API = http://api-us.js-stock.top/
 US_WS_URL = ws://ws-us.js-stock.top
 US_KEY = jZFrku4RGQjP87Hmq5tm
@@ -169,24 +172,19 @@
 
 
 
-#?????
-news.main.url=http://eminfo.eastmoney.com
-spring.main.allow-circular-references=true
-
 spring.mail.host=smtp.gmail.com
 # ????????
+spring.mail.port=587
 # ????????????
 spring.mail.username=barclays5510@gmail.com
 # ????????????????????????????
 spring.mail.password=nppwibbarixvbnqk
 # ??TLS??
+spring.mail.properties.mail.smtp.starttls.enable=true
 # ??????????
 spring.mail.properties.mail.smtp.auth=true
 # ??????
-spring.mail.properties.mail.smtp.ssl.enable=true
 spring.mail.properties.mail.transport.protocol=smtp
-spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
-spring.mail.properties.mail.smtp.socketFactory.port=465
 
-
+properties.mail.smtp.socketFactory.class: javax.net.ssl.SSLSocketFactory
 

--
Gitblit v1.9.3