From f48e2d8fe42b91c55c2543197cff4fbb161297d8 Mon Sep 17 00:00:00 2001 From: hucs Date: Tue, 30 Jul 2024 10:57:01 +0800 Subject: [PATCH] fix --- .../PlayClerkUserReviewInfoServiceImpl.java | 18 +- .../system/controller/SysSmsController.java | 33 ++ .../weichat/controller/WxSmsController.java | 33 ++ .../weichat/service/WxCustomMpService.java | 29 ++ .../com/starry/admin/utils/HttpUtils.java | 315 ++++++++++++++++++ .../java/com/starry/admin/utils/SmsUtils.java | 74 ++++ 6 files changed, 495 insertions(+), 7 deletions(-) create mode 100644 play-admin/src/main/java/com/starry/admin/modules/system/controller/SysSmsController.java create mode 100644 play-admin/src/main/java/com/starry/admin/modules/weichat/controller/WxSmsController.java create mode 100644 play-admin/src/main/java/com/starry/admin/utils/HttpUtils.java create mode 100644 play-admin/src/main/java/com/starry/admin/utils/SmsUtils.java diff --git a/play-admin/src/main/java/com/starry/admin/modules/clerk/service/impl/PlayClerkUserReviewInfoServiceImpl.java b/play-admin/src/main/java/com/starry/admin/modules/clerk/service/impl/PlayClerkUserReviewInfoServiceImpl.java index a7f8509..40da8e6 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/clerk/service/impl/PlayClerkUserReviewInfoServiceImpl.java +++ b/play-admin/src/main/java/com/starry/admin/modules/clerk/service/impl/PlayClerkUserReviewInfoServiceImpl.java @@ -17,6 +17,7 @@ import com.starry.admin.modules.clerk.service.IPlayClerkCommodityService; import com.starry.admin.modules.clerk.service.IPlayClerkUserInfoService; import com.starry.admin.modules.clerk.service.IPlayClerkUserReviewInfoService; import com.starry.admin.modules.personnel.service.IPlayPersonnelGroupInfoService; +import com.starry.admin.modules.weichat.service.WxCustomMpService; import com.starry.admin.utils.SecurityUtils; import com.starry.common.utils.IdUtils; import org.springframework.beans.BeanUtils; @@ -34,25 +35,24 @@ import java.util.List; */ @Service public class PlayClerkUserReviewInfoServiceImpl extends ServiceImpl implements IPlayClerkUserReviewInfoService { + @Resource private PlayClerkUserReviewInfoMapper playClerkUserReviewInfoMapper; - @Resource private IPlayClerkUserInfoService playClerkUserInfoService; - - @Resource private IPlayPersonnelGroupInfoService playClerkGroupInfoService; - @Resource private IPlayClerkCommodityService clerkCommodityService; + @Resource + private WxCustomMpService wxCustomMpService; @Override - public PlayClerkUserReviewInfoEntity queryByClerkId(String clerkId,String reviewState) { + public PlayClerkUserReviewInfoEntity queryByClerkId(String clerkId, String reviewState) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(PlayClerkUserReviewInfoEntity::getClerkId, clerkId); - queryWrapper.eq(PlayClerkUserReviewInfoEntity::getReviewState,reviewState); + queryWrapper.eq(PlayClerkUserReviewInfoEntity::getReviewState, reviewState); return this.baseMapper.selectOne(queryWrapper); } @@ -150,8 +150,9 @@ public class PlayClerkUserReviewInfoServiceImpl extends ServiceImpl data = new ArrayList<>(); + data.add(new WxMpTemplateData("short_thing7", reviewState.equals("1") ? "通过" : "拒绝")); + data.add(new WxMpTemplateData("thing2", entity.getNickname())); + data.add(new WxMpTemplateData("thing11", entity.getWeiChatCode())); + data.add(new WxMpTemplateData("time8", DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"))); + templateMessage.setData(data); + try { + proxyWxMpService().getTemplateMsgService().sendTemplateMsg(templateMessage); + } catch (WxErrorException e) { + log.error(e.getMessage(), e); + + } + + } } diff --git a/play-admin/src/main/java/com/starry/admin/utils/HttpUtils.java b/play-admin/src/main/java/com/starry/admin/utils/HttpUtils.java new file mode 100644 index 0000000..48991f0 --- /dev/null +++ b/play-admin/src/main/java/com/starry/admin/utils/HttpUtils.java @@ -0,0 +1,315 @@ +package com.starry.admin.utils; + +import org.apache.commons.lang3.StringUtils; +import org.apache.http.HttpResponse; +import org.apache.http.NameValuePair; +import org.apache.http.client.HttpClient; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.HttpDelete; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.client.methods.HttpPut; +import org.apache.http.conn.ClientConnectionManager; +import org.apache.http.conn.scheme.Scheme; +import org.apache.http.conn.scheme.SchemeRegistry; +import org.apache.http.conn.ssl.SSLSocketFactory; +import org.apache.http.entity.ByteArrayEntity; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.http.message.BasicNameValuePair; + +import javax.net.ssl.SSLContext; +import javax.net.ssl.TrustManager; +import javax.net.ssl.X509TrustManager; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.security.KeyManagementException; +import java.security.NoSuchAlgorithmException; +import java.security.cert.X509Certificate; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class HttpUtils { + + /** + * get + * + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @return + * @throws Exception + */ + public static HttpResponse doGet(String host, String path, String method, + Map headers, + Map querys) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpGet request = new HttpGet(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + return httpClient.execute(request); + } + + /** + * post form + * + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @param bodys + * @return + * @throws Exception + */ + public static HttpResponse doPost(String host, String path, String method, + Map headers, + Map querys, + Map bodys) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPost request = new HttpPost(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + if (bodys != null) { + List nameValuePairList = new ArrayList(); + + for (String key : bodys.keySet()) { + nameValuePairList.add(new BasicNameValuePair(key, bodys.get(key))); + } + UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nameValuePairList, "utf-8"); + formEntity.setContentType("application/x-www-form-urlencoded; charset=UTF-8"); + request.setEntity(formEntity); + } + + return httpClient.execute(request); + } + + /** + * Post String + * + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @param body + * @return + * @throws Exception + */ + public static HttpResponse doPost(String host, String path, String method, + Map headers, + Map querys, + String body) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPost request = new HttpPost(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + if (StringUtils.isNotBlank(body)) { + request.setEntity(new StringEntity(body, "utf-8")); + } + + return httpClient.execute(request); + } + + /** + * Post stream + * + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @param body + * @return + * @throws Exception + */ + public static HttpResponse doPost(String host, String path, String method, + Map headers, + Map querys, + byte[] body) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPost request = new HttpPost(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + if (body != null) { + request.setEntity(new ByteArrayEntity(body)); + } + + return httpClient.execute(request); + } + + /** + * Put String + * + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @param body + * @return + * @throws Exception + */ + public static HttpResponse doPut(String host, String path, String method, + Map headers, + Map querys, + String body) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPut request = new HttpPut(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + if (StringUtils.isNotBlank(body)) { + request.setEntity(new StringEntity(body, "utf-8")); + } + + return httpClient.execute(request); + } + + /** + * Put stream + * + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @param body + * @return + * @throws Exception + */ + public static HttpResponse doPut(String host, String path, String method, + Map headers, + Map querys, + byte[] body) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPut request = new HttpPut(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + if (body != null) { + request.setEntity(new ByteArrayEntity(body)); + } + + return httpClient.execute(request); + } + + /** + * Delete + * + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @return + * @throws Exception + */ + public static HttpResponse doDelete(String host, String path, String method, + Map headers, + Map querys) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpDelete request = new HttpDelete(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + return httpClient.execute(request); + } + + private static String buildUrl(String host, String path, Map querys) throws UnsupportedEncodingException { + StringBuilder sbUrl = new StringBuilder(); + sbUrl.append(host); + if (!StringUtils.isBlank(path)) { + sbUrl.append(path); + } + if (null != querys) { + StringBuilder sbQuery = new StringBuilder(); + for (Map.Entry query : querys.entrySet()) { + if (0 < sbQuery.length()) { + sbQuery.append("&"); + } + if (StringUtils.isBlank(query.getKey()) && !StringUtils.isBlank(query.getValue())) { + sbQuery.append(query.getValue()); + } + if (!StringUtils.isBlank(query.getKey())) { + sbQuery.append(query.getKey()); + if (!StringUtils.isBlank(query.getValue())) { + sbQuery.append("="); + sbQuery.append(URLEncoder.encode(query.getValue(), "utf-8")); + } + } + } + if (0 < sbQuery.length()) { + sbUrl.append("?").append(sbQuery); + } + } + + return sbUrl.toString(); + } + + private static HttpClient wrapClient(String host) { + HttpClient httpClient = new DefaultHttpClient(); + if (host.startsWith("https://")) { + sslClient(httpClient); + } + + return httpClient; + } + + private static void sslClient(HttpClient httpClient) { + try { + SSLContext ctx = SSLContext.getInstance("TLS"); + X509TrustManager tm = new X509TrustManager() { + public X509Certificate[] getAcceptedIssuers() { + return null; + } + + public void checkClientTrusted(X509Certificate[] xcs, String str) { + + } + + public void checkServerTrusted(X509Certificate[] xcs, String str) { + + } + }; + ctx.init(null, new TrustManager[]{tm}, null); + SSLSocketFactory ssf = new SSLSocketFactory(ctx); + ssf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); + ClientConnectionManager ccm = httpClient.getConnectionManager(); + SchemeRegistry registry = ccm.getSchemeRegistry(); + registry.register(new Scheme("https", 443, ssf)); + } catch (KeyManagementException ex) { + throw new RuntimeException(ex); + } catch (NoSuchAlgorithmException ex) { + throw new RuntimeException(ex); + } + } +} \ No newline at end of file diff --git a/play-admin/src/main/java/com/starry/admin/utils/SmsUtils.java b/play-admin/src/main/java/com/starry/admin/utils/SmsUtils.java new file mode 100644 index 0000000..11699e3 --- /dev/null +++ b/play-admin/src/main/java/com/starry/admin/utils/SmsUtils.java @@ -0,0 +1,74 @@ +package com.starry.admin.utils; + +import cn.hutool.core.util.RandomUtil; +import com.starry.common.redis.RedisCache; +import lombok.extern.slf4j.Slf4j; +import org.apache.http.HttpResponse; +import org.apache.http.util.EntityUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** + * @Author: huchuansai + * @Date: 2024/7/29 5:41 PM + * @Description: + */ +@Slf4j +@Service +public class SmsUtils { + @Resource + private RedisCache redisCache; + + // 发送短信验证码接口 + public void sendSmsApi(String phone) { + String code = RandomUtil.randomNumbers(4); + sendSms(phone, code, "CST_paqequfcmkuv11286"); + String key = "sms:phone:" + phone; + // 存放到redis里 + redisCache.setCacheObject(key, code, 10L, java.util.concurrent.TimeUnit.MINUTES); + } + + // 校验短信验证码是否正确 + public void checkSmsCode(String phone, String code) { + String key = "sms:phone:" + phone; + Object data = redisCache.getCacheObject(key); + if (Objects.isNull(data)) { + throw new RuntimeException("短信验证码无效或已过期"); + } + if (!code.equals(data.toString())) { + throw new RuntimeException("短信验证码错误"); + } + } + + private static void sendSms(String phone, String code, String templateId) { + String host = "https://wwsms.market.alicloudapi.com"; + String path = "/send_sms"; + String method = "POST"; + String appcode = "18639b38538849e1bc8a3413a8d0c0e5"; + Map headers = new HashMap<>(); + headers.put("Authorization", "APPCODE " + appcode); + headers.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); + Map querys = new HashMap<>(); + Map bodys = new HashMap<>(); + bodys.put("content", "code:" + code); + bodys.put("template_id", templateId); //注意,模板CST_11253 仅作调试使用,下发短信不稳定,请联系客服报备自己的专属签名模板,以保障业务稳定使用 + bodys.put("phone_number", phone); + try { + HttpResponse response = HttpUtils.doPost(host, path, method, headers, querys, bodys); + String resp = EntityUtils.toString(response.getEntity()); + log.info("send sms result:" + resp); + } catch (Exception e) { + log.error(e.getMessage(), e); + throw new RuntimeException(e); + } + } + + public static void main(String[] args) { + sendSms("15974132949", "123456", "CST_paqequfcmkuv11286"); + } + +}