From d2dace7dc16d324bd762efe4f79c9ca44d7a5407 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期一, 19 八月 2024 16:17:15 +0800
Subject: [PATCH] 短信封装,小程序更换手机号

---
 ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java                             |   37 +++
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/MsgConstants.java       |   35 +++
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java |    5 
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java          |    5 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java      |   34 +++
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/HttpUtils.java             |  311 +++++++++++++++++++++++++++++++
 ruoyi-auth/pom.xml                                                                                  |    6 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TAdvertisingController.java      |    2 
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java      |   10 
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/UpdatePhoneDTO.java             |   22 ++
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/MsgUtil.java               |  127 ++++++++----
 11 files changed, 546 insertions(+), 48 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/UpdatePhoneDTO.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/UpdatePhoneDTO.java
new file mode 100644
index 0000000..b393bf8
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/UpdatePhoneDTO.java
@@ -0,0 +1,22 @@
+package com.ruoyi.account.api.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+
+@Data
+@ApiModel(value = "UpdatePhoneDTO对象",description = "更换手机号DTO")
+public class UpdatePhoneDTO implements Serializable {
+
+    @ApiModelProperty(value = "手机号")
+    @NotBlank(message = "手机号不能为空")
+    private String phone;
+
+    @ApiModelProperty(value = "验证码")
+    @NotBlank(message = "验证码不能为空")
+    private String code;
+
+}
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java
index e89e3b6..b811b76 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java
@@ -41,6 +41,11 @@
             }
 
             @Override
+            public R<TAppUser> selectByPhone(String phone) {
+                return R.fail("通过手机号查询用户失败:"+throwable.getMessage());
+            }
+
+            @Override
             public R<List<TAppUser>> getUserByIds(List<Long> appUserIds) {
                 return R.fail("根据用户id查询用户信息失败:"+throwable.getMessage());
             }
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java
index 845eba3..a408ac7 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java
@@ -39,6 +39,14 @@
     
     
     
-    @PostMapping("/t-app-user//user/updateAppUser")
+    @PostMapping("/t-app-user/user/updateAppUser")
     R updateAppUser(@RequestBody TAppUser appUser);
+
+    /**
+     * 通过手机号查询用户
+     * @param phone
+     * @return
+     */
+    @GetMapping("/t-app-user/user/selectByPhone")
+    R<TAppUser> selectByPhone(@RequestParam("phone") String phone);
 }
diff --git a/ruoyi-auth/pom.xml b/ruoyi-auth/pom.xml
index df1fa2a..ee4cf04 100644
--- a/ruoyi-auth/pom.xml
+++ b/ruoyi-auth/pom.xml
@@ -85,6 +85,12 @@
             <version>${hutool.version}</version>
         </dependency>
 
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>ruoyi-api-account</artifactId>
+            <version>3.6.2</version>
+        </dependency>
+
     </dependencies>
 	
     <build>
diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java
index 8a06c5d..7f333d2 100644
--- a/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java
+++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java
@@ -5,6 +5,14 @@
 
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.ruoyi.account.api.feignClient.AppUserClient;
+import com.ruoyi.account.api.model.TAppUser;
+import com.ruoyi.common.core.constant.Constants;
+import com.ruoyi.common.core.constant.MsgConstants;
+import com.ruoyi.common.core.utils.HttpUtils;
+import com.ruoyi.common.core.utils.MsgUtil;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.redis.service.RedisService;
 import com.ruoyi.system.api.domain.SysRole;
 import com.ruoyi.system.api.domain.SysUser;
 import com.ruoyi.system.api.feignClient.SysUserClient;
@@ -25,6 +33,7 @@
 import com.ruoyi.system.api.model.LoginUser;
 
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 
 /**
  * token 控制
@@ -42,7 +51,11 @@
     private SysLoginService sysLoginService;
     @Resource
     private SysUserClient userClient;
-    
+    @Autowired
+    private RedisService redisService;
+    @Autowired
+    private AppUserClient appUserClient;
+
     
     
     
@@ -115,4 +128,26 @@
         sysLoginService.register(registerBody.getUsername(), registerBody.getPassword(), request);
         return R.ok();
     }
+
+    /**
+     * 获取验证码
+     *
+     * @param phone 手机号
+     * @return 结果
+     */
+    @ApiOperation(value = "获取验证码",notes = "获取验证码",tags = {"更换手机号获取验证码"})
+    @GetMapping("getCode")
+    public AjaxResult getCode(@RequestParam("phone") String phone)
+    {
+        TAppUser appUser = appUserClient.selectByPhone(phone).getData();
+        if (Objects.nonNull(appUser)){
+            return AjaxResult.error("该手机号已绑定账号");
+        }
+        String code = MsgUtil.createCode();
+        redisService.setCacheObject(phone+Constants.APPLET,code,5L, TimeUnit.MINUTES);
+        String reqStr = MsgUtil.codeMsg(phone, code);
+        String result = HttpUtils.post(MsgConstants.SEND_URL, reqStr);
+        return AjaxResult.success(result);
+    }
+
 }
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java
index 56f106e..3a06693 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java
@@ -127,7 +127,10 @@
      */
     public static final String DATE_FORMATTER_TIME = "yyyy-MM-dd HH:mm:ss";
     public static final String DATE_FORMATTER_DATE = "yyyy-MM-dd";
-
+    /**
+     * 后缀
+     */
+    public static final String APPLET = "_applet";
     /**
      * 定时任务违规的字符
      */
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/MsgConstants.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/MsgConstants.java
new file mode 100644
index 0000000..4a04905
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/MsgConstants.java
@@ -0,0 +1,35 @@
+package com.ruoyi.common.core.constant;
+
+/**
+ * 短信常量
+ * 
+ * @author ruoyi
+ */
+public class MsgConstants
+{
+    /** 短信发送地址 */
+    public static final String SEND_URL = "http://112.35.1.155:1992/sms/tmpsubmit";
+    /** 更换手机号短信验证码 TEMPLATE_ID */
+    public static final String CODE_TEMPLATE_ID = "5bf3949463e54c03a25c6fce3ad48139";
+
+    /** 停车占位提醒 TEMPLATE_ID */
+    public static final String STOP_TEMPLATE_ID = "4940ce98a3f94f67aa9f5cd2d4e05cbd";
+
+    /** 充电结束 TEMPLATE_ID */
+    public static final String CHARGE_TEMPLATE_ID = "47b2eb376cfa436faae041a6f2f22688";
+
+    /** 桩故障(自动/手动) TEMPLATE_ID */
+    public static final String FAULT_TEMPLATE_ID = "37956469a14a47e484a747a1e7e462de";
+    /** 更换手机号短信验证码 AP_ID */
+    public static final String CODE_AP_ID = "GH123";
+
+    /** 停车占位提醒 AP_ID */
+    public static final String STOP_AP_ID = "TC123";
+
+    /** 充电结束 AP_ID */
+    public static final String CHARGE_AP_ID = "CD123";
+
+    /** 桩故障(自动/手动) AP_ID */
+    public static final String FAULT_AP_ID = "GZ123";
+
+}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/HttpUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/HttpUtils.java
new file mode 100644
index 0000000..c41fbbd
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/HttpUtils.java
@@ -0,0 +1,311 @@
+package com.ruoyi.common.core.utils;
+
+import com.ruoyi.common.core.constant.Constants;
+import com.ruoyi.common.core.exception.ServiceException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.net.ssl.*;
+import java.io.*;
+import java.net.*;
+import java.nio.charset.StandardCharsets;
+import java.security.cert.X509Certificate;
+
+/**
+ * 通用http发送方法
+ * 
+ * @author ruoyi
+ */
+public class HttpUtils
+{
+    private static final Logger log = LoggerFactory.getLogger(HttpUtils.class);
+
+    /**
+     * 向指定 URL 发送GET方法的请求
+     *
+     * @param url 发送请求的 URL
+     * @return 所代表远程资源的响应结果
+     */
+    public static String sendGet(String url)
+    {
+        return sendGet(url, StringUtils.EMPTY);
+    }
+
+    /**
+     * 向指定 URL 发送GET方法的请求
+     *
+     * @param url 发送请求的 URL
+     * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
+     * @return 所代表远程资源的响应结果
+     */
+    public static String sendGet(String url, String param)
+    {
+        return sendGet(url, param, Constants.UTF8);
+    }
+
+    /**
+     * 向指定 URL 发送GET方法的请求
+     *
+     * @param url 发送请求的 URL
+     * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
+     * @param contentType 编码类型
+     * @return 所代表远程资源的响应结果
+     */
+    public static String sendGet(String url, String param, String contentType)
+    {
+        StringBuilder result = new StringBuilder();
+        BufferedReader in = null;
+        try
+        {
+            String urlNameString = StringUtils.isNotBlank(param) ? url + "?" + param : url;
+            log.info("sendGet - {}", urlNameString);
+            URL realUrl = new URL(urlNameString);
+            URLConnection connection = realUrl.openConnection();
+            connection.setRequestProperty("accept", "*/*");
+            connection.setRequestProperty("connection", "Keep-Alive");
+            connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
+            connection.connect();
+            in = new BufferedReader(new InputStreamReader(connection.getInputStream(), contentType));
+            String line;
+            while ((line = in.readLine()) != null)
+            {
+                result.append(line);
+            }
+            log.info("recv - {}", result);
+        }
+        catch (ConnectException e)
+        {
+            log.error("调用HttpUtils.sendGet ConnectException, url=" + url + ",param=" + param, e);
+        }
+        catch (SocketTimeoutException e)
+        {
+            log.error("调用HttpUtils.sendGet SocketTimeoutException, url=" + url + ",param=" + param, e);
+        }
+        catch (IOException e)
+        {
+            log.error("调用HttpUtils.sendGet IOException, url=" + url + ",param=" + param, e);
+        }
+        catch (Exception e)
+        {
+            log.error("调用HttpsUtil.sendGet Exception, url=" + url + ",param=" + param, e);
+        }
+        finally
+        {
+            try
+            {
+                if (in != null)
+                {
+                    in.close();
+                }
+            }
+            catch (Exception ex)
+            {
+                log.error("调用in.close Exception, url=" + url + ",param=" + param, ex);
+            }
+        }
+        return result.toString();
+    }
+
+    /**
+     * 向指定 URL 发送POST方法的请求
+     *
+     * @param url 发送请求的 URL
+     * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
+     * @return 所代表远程资源的响应结果
+     */
+    public static String sendPost(String url, String param)
+    {
+        PrintWriter out = null;
+        BufferedReader in = null;
+        StringBuilder result = new StringBuilder();
+        try
+        {
+            log.info("sendPost - {}", url);
+            URL realUrl = new URL(url);
+            URLConnection conn = realUrl.openConnection();
+            conn.setRequestProperty("accept", "*/*");
+            conn.setRequestProperty("connection", "Keep-Alive");
+            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
+            conn.setRequestProperty("Accept-Charset", "utf-8");
+            conn.setRequestProperty("contentType", "utf-8");
+            conn.setDoOutput(true);
+            conn.setDoInput(true);
+            out = new PrintWriter(conn.getOutputStream());
+            out.print(param);
+            out.flush();
+            in = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8));
+            String line;
+            while ((line = in.readLine()) != null)
+            {
+                result.append(line);
+            }
+            log.info("recv - {}", result);
+        }
+        catch (ConnectException e)
+        {
+            log.error("调用HttpUtils.sendPost ConnectException, url=" + url + ",param=" + param, e);
+        }
+        catch (SocketTimeoutException e)
+        {
+            log.error("调用HttpUtils.sendPost SocketTimeoutException, url=" + url + ",param=" + param, e);
+        }
+        catch (IOException e)
+        {
+            log.error("调用HttpUtils.sendPost IOException, url=" + url + ",param=" + param, e);
+        }
+        catch (Exception e)
+        {
+            log.error("调用HttpsUtil.sendPost Exception, url=" + url + ",param=" + param, e);
+        }
+        finally
+        {
+            try
+            {
+                if (out != null)
+                {
+                    out.close();
+                }
+                if (in != null)
+                {
+                    in.close();
+                }
+            }
+            catch (IOException ex)
+            {
+                log.error("调用in.close Exception, url=" + url + ",param=" + param, ex);
+            }
+        }
+        return result.toString();
+    }
+
+    public static String sendSSLPost(String url, String param)
+    {
+        StringBuilder result = new StringBuilder();
+        String urlNameString = url + "?" + param;
+        try
+        {
+            log.info("sendSSLPost - {}", urlNameString);
+            SSLContext sc = SSLContext.getInstance("SSL");
+            sc.init(null, new TrustManager[] { new TrustAnyTrustManager() }, new java.security.SecureRandom());
+            URL console = new URL(urlNameString);
+            HttpsURLConnection conn = (HttpsURLConnection) console.openConnection();
+            conn.setRequestProperty("accept", "*/*");
+            conn.setRequestProperty("connection", "Keep-Alive");
+            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
+            conn.setRequestProperty("Accept-Charset", "utf-8");
+            conn.setRequestProperty("contentType", "utf-8");
+            conn.setDoOutput(true);
+            conn.setDoInput(true);
+
+            conn.setSSLSocketFactory(sc.getSocketFactory());
+            conn.setHostnameVerifier(new TrustAnyHostnameVerifier());
+            conn.connect();
+            InputStream is = conn.getInputStream();
+            BufferedReader br = new BufferedReader(new InputStreamReader(is));
+            String ret = "";
+            while ((ret = br.readLine()) != null)
+            {
+                if (ret != null && !"".equals(ret.trim()))
+                {
+                    result.append(new String(ret.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8));
+                }
+            }
+            log.info("recv - {}", result);
+            conn.disconnect();
+            br.close();
+        }
+        catch (ConnectException e)
+        {
+            log.error("调用HttpUtils.sendSSLPost ConnectException, url=" + url + ",param=" + param, e);
+        }
+        catch (SocketTimeoutException e)
+        {
+            log.error("调用HttpUtils.sendSSLPost SocketTimeoutException, url=" + url + ",param=" + param, e);
+        }
+        catch (IOException e)
+        {
+            log.error("调用HttpUtils.sendSSLPost IOException, url=" + url + ",param=" + param, e);
+        }
+        catch (Exception e)
+        {
+            log.error("调用HttpsUtil.sendSSLPost Exception, url=" + url + ",param=" + param, e);
+        }
+        return result.toString();
+    }
+
+    public static String post(String strURL, String params) {
+        String result = "";
+        BufferedReader reader = null;
+        try {
+            URL url = new URL(strURL);// 创建连接
+            HttpURLConnection connection = (HttpURLConnection) url
+                    .openConnection();
+            connection.setDoOutput(true);
+            connection.setDoInput(true);
+            connection.setUseCaches(false);
+            connection.setInstanceFollowRedirects(true);
+            connection.setRequestMethod("POST"); // 设置请求方式
+            connection.setRequestProperty("Accept", "application/json"); // 设置接收数据的格式
+            connection.setRequestProperty("Content-Type", "application/json"); // 设置发送数据的格式
+            connection.connect();
+            if (params != null && !StringUtils.isEmpty(params)) {
+                byte[] writebytes = params.getBytes();
+                // 设置文件长度
+                //   connection.setRequestProperty("Content-Length", String.valueOf(writebytes.length));
+                OutputStream outwritestream = connection.getOutputStream();
+                outwritestream.write(params.getBytes());
+                outwritestream.flush();
+                outwritestream.close();
+                // Log.d("hlhupload", "doJsonPost: conn"+connection.getResponseCode());
+            }
+            if (connection.getResponseCode() == 200) {
+                log.info("<<<<<<<<<<<<<请求响应:{}", connection.getResponseMessage());
+                reader = new BufferedReader(
+                        new InputStreamReader(connection.getInputStream()));
+                result = reader.readLine();
+                log.info("<<<<<<<<<<<<<请求响应:{}", result);
+            } else {
+                throw new ServiceException(connection.getResponseMessage());
+            }
+        } catch (Exception e) {
+            throw new ServiceException("http的post请求异常!" + e.getMessage());
+        } finally {
+            if (reader != null) {
+                try {
+                    reader.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return result;
+    }
+
+    private static class TrustAnyTrustManager implements X509TrustManager
+    {
+        @Override
+        public void checkClientTrusted(X509Certificate[] chain, String authType)
+        {
+        }
+
+        @Override
+        public void checkServerTrusted(X509Certificate[] chain, String authType)
+        {
+        }
+
+        @Override
+        public X509Certificate[] getAcceptedIssuers()
+        {
+            return new X509Certificate[] {};
+        }
+    }
+
+    private static class TrustAnyHostnameVerifier implements HostnameVerifier
+    {
+        @Override
+        public boolean verify(String hostname, SSLSession session)
+        {
+            return true;
+        }
+    }
+}
\ No newline at end of file
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/MsgUtil.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/MsgUtil.java
index c99b884..188900d 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/MsgUtil.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/MsgUtil.java
@@ -1,6 +1,7 @@
 package com.ruoyi.common.core.utils;
 
 import com.alibaba.fastjson2.JSON;
+import com.ruoyi.common.core.constant.MsgConstants;
 import com.ruoyi.common.core.utils.req.SubmitTempletReq;
 import org.apache.commons.codec.binary.Base64;
 
@@ -15,23 +16,22 @@
 
 
     /**
-     * 更换手机号短信验证码
-     * @param phone
-     * @param code
-     * @param templateId
+     * 更换手机号:【签名】验证码:XXX,用于更换手机号。请勿转发。
+     * @param phone 手机号
+     * @param code 验证码
      * @return
      */
-    public static String codeMsg(String apId,String phone,String code,String templateId){
+    public static String codeMsg(String phone,String code){
         SubmitTempletReq submitReq = new SubmitTempletReq();
         String[] paramss = {code};
-        submitReq.setApId(apId);
+        submitReq.setApId(MsgConstants.CODE_AP_ID);
         submitReq.setEcName(ecName);
         submitReq.setSecretKey(secretKey);
         submitReq.setParams(JSON.toJSONString(paramss));
         submitReq.setMobiles(phone);
         submitReq.setAddSerial("");
         submitReq.setSign(sign);
-        submitReq.setTemplateId(templateId);
+        submitReq.setTemplateId(MsgConstants.CODE_TEMPLATE_ID);
         StringBuffer stringBuffer = new StringBuffer();
         stringBuffer.append(submitReq.getEcName());
         stringBuffer.append(submitReq.getApId());
@@ -51,46 +51,14 @@
 
 
     /**
-     * 审批流程短信
-     * @param phone
-     * @param name
-     * @param work
-     * @param templateId
+     * 停车占位提醒:车辆已在3小时前完成充电,请及时取车,避免长时间占用充电资源。
+     * @param phone 手机号
      * @return
      */
-    public static String auditMsg(String apId,String phone,String name,String work,String templateId){
+    public static String stopMsg(String phone){
         SubmitTempletReq submitReq = new SubmitTempletReq();
-        // 判断工程名称长度
-//        if(work.length()<=10){
-//            String[] paramss = {name,work};
-//            submitReq.setParams(JSON.toJSONString(paramss));
-//            submitReq.setTemplateId("1ebcb36e532742ed8fd7b998a8222aab");
-//        }else if (work.length()<=20){
-//            String work1 = work.substring(0,10);
-//            String work2 = work.substring(10);
-//            String[] paramss = {name,work1,work2};
-//            submitReq.setParams(JSON.toJSONString(paramss));
-//            submitReq.setTemplateId("1c9e6cbddec649b1bdfa6830448df8ad");
-//        }else if (work.length()<=30){
-//            String work1 = work.substring(0,10);
-//            String work2 = work.substring(10,20);
-//            String work3 = work.substring(20);
-//            String[] paramss = {name,work1,work2,work3};
-//            submitReq.setParams(JSON.toJSONString(paramss));
-//            submitReq.setTemplateId("91960e43e51446d0b3789129580f5bf8");
-//        }else {
-//            String work1 = work.substring(0, 10);
-//            String work2 = work.substring(10, 20);
-//            String work3 = work.substring(20, 30);
-//            String work4 = work.substring(30);
-//            String[] paramss = {name, work1, work2, work3, work4};
-//            submitReq.setParams(JSON.toJSONString(paramss));
-//            submitReq.setTemplateId("279dd31f0565494284ee62694ae3e326");
-//        }
-        String[] paramss = {name};
-        submitReq.setParams(JSON.toJSONString(paramss));
-        submitReq.setTemplateId("32b209c0096c48d7add8bafb290083dc");
-        submitReq.setApId(apId);
+        submitReq.setTemplateId(MsgConstants.STOP_TEMPLATE_ID);
+        submitReq.setApId(MsgConstants.STOP_AP_ID);
         submitReq.setEcName(ecName);
         submitReq.setSecretKey(secretKey);
         submitReq.setMobiles(phone);
@@ -114,6 +82,77 @@
     }
 
     /**
+     * 充电结束:车辆充电结束,请及时取车。
+     * @param phone 手机号
+     * @return
+     */
+    public static String chargeStopMsg(String phone){
+        SubmitTempletReq submitReq = new SubmitTempletReq();
+        submitReq.setTemplateId(MsgConstants.CHARGE_TEMPLATE_ID);
+        submitReq.setApId(MsgConstants.CHARGE_AP_ID);
+        submitReq.setEcName(ecName);
+        submitReq.setSecretKey(secretKey);
+        submitReq.setMobiles(phone);
+        submitReq.setAddSerial("");
+        submitReq.setSign(sign);
+        StringBuffer stringBuffer = new StringBuffer();
+        stringBuffer.append(submitReq.getEcName());
+        stringBuffer.append(submitReq.getApId());
+        stringBuffer.append(submitReq.getSecretKey());
+        stringBuffer.append(submitReq.getTemplateId());
+        stringBuffer.append(submitReq.getMobiles());
+        stringBuffer.append(submitReq.getParams());
+        stringBuffer.append(submitReq.getSign());
+        stringBuffer.append(submitReq.getAddSerial());
+        submitReq.setMac(MD5Util.getMD5(stringBuffer.toString()));
+        String reqText = JSON.toJSONString(submitReq);
+        //加密
+        String encode = Base64.encodeBase64String(reqText.getBytes());
+        System.err.println(encode);
+        return encode;
+    }
+
+    /**
+     * 桩故障(自动/手动):检测到【电站1】【编号】号桩设备离线,请及时查看处理!
+     * @param phone 手机号
+     * @param site 站点名称
+     * @param chargeGun 桩编号
+     * @return
+     */
+    public static String faultMsg(String phone,String site,String chargeGun){
+        SubmitTempletReq submitReq = new SubmitTempletReq();
+        if(site.length()<=10){
+            String[] paramss = {site,chargeGun};
+            submitReq.setParams(JSON.toJSONString(paramss));
+        }else{
+            String work1 = site.substring(0,10);
+            String[] paramss = {work1,chargeGun};
+            submitReq.setParams(JSON.toJSONString(paramss));
+        }
+        submitReq.setTemplateId(MsgConstants.FAULT_TEMPLATE_ID);
+        submitReq.setApId(MsgConstants.FAULT_AP_ID);
+        submitReq.setEcName(ecName);
+        submitReq.setSecretKey(secretKey);
+        submitReq.setMobiles(phone);
+        submitReq.setAddSerial("");
+        submitReq.setSign(sign);
+        StringBuffer stringBuffer = new StringBuffer();
+        stringBuffer.append(submitReq.getEcName());
+        stringBuffer.append(submitReq.getApId());
+        stringBuffer.append(submitReq.getSecretKey());
+        stringBuffer.append(submitReq.getTemplateId());
+        stringBuffer.append(submitReq.getMobiles());
+        stringBuffer.append(submitReq.getParams());
+        stringBuffer.append(submitReq.getSign());
+        stringBuffer.append(submitReq.getAddSerial());
+        submitReq.setMac(MD5Util.getMD5(stringBuffer.toString()));
+        String reqText = JSON.toJSONString(submitReq);
+        //加密
+        String encode = Base64.encodeBase64String(reqText.getBytes());
+        System.err.println(encode);
+        return encode;
+    }
+    /**
      * 生成验证码
      * @return
      */
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java
index 9e2e0b3..6915db6 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java
@@ -16,7 +16,9 @@
 import com.ruoyi.account.wx.model.WeixinProperties;
 import com.ruoyi.account.wx.tools.WxAppletTools;
 import com.ruoyi.account.util.GiveVipUtil;
+import com.ruoyi.common.core.constant.Constants;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.utils.bean.BeanUtils;
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.core.web.domain.BasePojo;
@@ -41,6 +43,7 @@
 import lombok.extern.slf4j.Slf4j;
 import org.aspectj.weaver.loadtime.Aj;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.client.RestTemplate;
 
@@ -86,6 +89,8 @@
     private ExchangeOrderClient exchangeOrderClient;
     @Autowired
     private TokenService tokenService;
+    @Autowired
+    private RedisService redisService;
 
     @Resource
     private  TAppUserSignService signService;
@@ -438,6 +443,24 @@
         return R.ok();
     }
 
+    @ApiOperation(value = "更换手机号", tags = {"小程序-用户管理-更换手机号"})
+    @PostMapping(value = "/user/updatePhone")
+    public AjaxResult<String> updatePhone(@Validated @RequestBody UpdatePhoneDTO dto) {
+        String code = redisService.getCacheObject(dto.getPhone() + Constants.APPLET);
+        if(StringUtils.isEmpty(code)){
+            return AjaxResult.error("验证码已过期,请重新获取验证码!");
+        }
+        if(!code.equals(dto.getCode())){
+            return AjaxResult.error("验证码错误!");
+        }
+        // 获取当前用户信息
+        Long userId = tokenService.getLoginUserApplet().getUserId();
+        TAppUser appUser = appUserService.getById(userId);
+        appUser.setPhone(dto.getPhone());
+        appUserService.updateById(appUser);
+        return AjaxResult.success();
+    }
+
     /**
      * 根据用户id查询用户信息
      * @param appUserIds 用户id
@@ -473,6 +496,17 @@
         return R.ok();
     }
 
+    /**
+     * 通过手机号查询用户
+     * @param phone
+     * @return
+     */
+    @GetMapping("/user/selectByPhone")
+    public R<TAppUser> selectByPhone(@RequestParam("phone") String phone){
+        return R.ok(appUserService.getOne(Wrappers.lambdaQuery(TAppUser.class)
+                .eq(TAppUser::getPhone,phone)
+                .last("LIMIT 1")));
+    }
 
 //    @ApiOperation(value = "签到", tags = {"小程序-个人中心-签到"})
 //    @PostMapping(value = "/user/sign")
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TAdvertisingController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TAdvertisingController.java
index 8bfd455..7d2b0bd 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TAdvertisingController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TAdvertisingController.java
@@ -64,7 +64,7 @@
     }
 
     @ApiOperation(tags = {"小程序-广告管理"},value = "广告列表查询")
-    @PostMapping(value = "/list")
+    @GetMapping(value = "/list")
     public AjaxResult<List<TAdvertising>> list() {
         return AjaxResult.ok(advertisingService.list(Wrappers.lambdaQuery(TAdvertising.class)
                 .eq(TAdvertising::getStatus, AdvertisingStatusEnum.YES.getCode())));

--
Gitblit v1.7.1