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