From 718d72ca04b9595cc3140b0e2189647a35229ec6 Mon Sep 17 00:00:00 2001 From: yk Date: Wed, 27 Mar 2024 10:30:47 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E8=AF=AD=E9=9F=B3=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 4 +- application.yml | 48 ++++++++++++ pom.xml | 13 ++++ push_image.sh | 4 + .../lecoo/wechat/config/VmsProperties.java | 19 +++++ .../wechat/controller/IndexController.java | 36 ++++++++- .../com/lecoo/wechat/entity/SmsReqEntity.java | 2 - .../com/lecoo/wechat/entity/VmsReqEntity.java | 37 ++++++++++ .../com/lecoo/wechat/service/VmsService.java | 74 +++++++++++++++++++ src/main/resources/config/application.yml | 32 ++------ 10 files changed, 236 insertions(+), 33 deletions(-) create mode 100644 application.yml create mode 100644 push_image.sh create mode 100644 src/main/java/com/lecoo/wechat/config/VmsProperties.java create mode 100644 src/main/java/com/lecoo/wechat/entity/VmsReqEntity.java create mode 100644 src/main/java/com/lecoo/wechat/service/VmsService.java diff --git a/Dockerfile b/Dockerfile index 3d739bf..1666d3c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,9 @@ FROM openjdk:8 MAINTAINER yangkai -ADD target/sms-msg-sender-1.0-SNAPSHOT.jar sms-msg-sender.jar +ADD target/sms-msg-sender.jar sms-msg-sender.jar COPY application.yml / RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime -EXPOSE 8080 +EXPOSE 9950 ENTRYPOINT ["java","-jar","sms-msg-sender.jar","--spring.config.location=/application.yml"] # docker run -d --restart=always --name dg-sms-sender -p 9950:9950 dg-sms-sender:v1 //运行镜像 \ No newline at end of file diff --git a/application.yml b/application.yml new file mode 100644 index 0000000..3772a6f --- /dev/null +++ b/application.yml @@ -0,0 +1,48 @@ +server: + port: 9950 + +nacos: + config: + server-addr: 127.0.0.1:8848 +# namespace: 6d0ee265-2a92-44cc-a6de-f34b3ea104e6 + enabled: true + file-extension: yaml + blocking-queue-size: 5000 + + +sys: + baseUrl: http://dev.hjkjg.top + mms: + url: http://192.168.10.119:9950 + receptionPhones: 18910801519 + accessKeyId: LTAI5tBxoXcHTkMZv1jUwCT8 + accessKeySecrect: E8i2eWczpxOIcYGtX9D0lNJtHApmh2 + endpoint: dysmsapi.aliyuncs.com + signName: 缔智元 + signNameVisitor: 缔智元 + template: SMS_228835440 + carTemplate: SMS_228850376 + fixedTemplate: SMS_228835443 + codeTemplate: SMS_229300003 + meetingOrderTemplate: SMS_460710519 + meetingQuitTemplate: SMS_460685561 + meetingRemindTemplate: SMS_460655546 + defaultRemindTemplate: SMS_460715556 + visitorTemplate: SMS_461045124 + robotName: 小酷 + +wx: + mp: + useRedis: false + redisConfig: + host: 127.0.0.1 + port: 6379 + configs: + - appId: wxde105494dd27c1ac # 第一个公众号的appid + secret: f81e44ef5a1ed2235ce471f0ee3d1445 # 公众号的appsecret + token: 83u4h # 接口配置里的Token值 + pushMsgTemplateId: BQlE4WmvD6C2YG6aMYUxlSztBYbiSFe_KjQaneTWrHY + auditTemplateId: Y1qGJ7SjY4GFky9V101dV8rYQzDR1uZ8g3e6d16M1Ts + regAuditTemplateId: RYDfkUjIRHnCWSy_O1XfDaFT9uE-jYqDAtrpkp49350 + url: ${sys.baseUrl}/f/wx/oauth2 + diff --git a/pom.xml b/pom.xml index 3ca679c..0f0b792 100644 --- a/pom.xml +++ b/pom.xml @@ -62,6 +62,18 @@ 2.0.5 + + com.aliyun + tea-console + 0.0.1 + + + + com.aliyun + dyvmsapi20170525 + 3.0.0 + + com.alibaba fastjson @@ -89,6 +101,7 @@ true + sms-msg-sender org.springframework.boot diff --git a/push_image.sh b/push_image.sh new file mode 100644 index 0000000..2d4c890 --- /dev/null +++ b/push_image.sh @@ -0,0 +1,4 @@ +docker build -t dg-sms-sender:latest . +docker login --username=缔智元2023 --password=digimeta@2023 registry.cn-beijing.aliyuncs.com +docker tag $(docker images | grep dg-sms-sender | head -1 | awk '{print $3}') registry.cn-beijing.aliyuncs.com/digimeta-common/sms-sender:latest +docker push registry.cn-beijing.aliyuncs.com/digimeta-common/sms-sender:latest \ No newline at end of file diff --git a/src/main/java/com/lecoo/wechat/config/VmsProperties.java b/src/main/java/com/lecoo/wechat/config/VmsProperties.java new file mode 100644 index 0000000..a77e1f2 --- /dev/null +++ b/src/main/java/com/lecoo/wechat/config/VmsProperties.java @@ -0,0 +1,19 @@ +package com.lecoo.wechat.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * sms properties + */ +@Data +@Component +@ConfigurationProperties(prefix = "sys.vms") +//@NacosConfigurationProperties(prefix = "sys.mms", dataId = "ali-sms",type = ConfigType.YAML, groupId = "DEFAULT_GROUP", autoRefreshed = true) +public class VmsProperties { + private String accessKeyId; + private String accessKeySecret; + private String endpoint; + +} diff --git a/src/main/java/com/lecoo/wechat/controller/IndexController.java b/src/main/java/com/lecoo/wechat/controller/IndexController.java index 717f7d2..733c657 100644 --- a/src/main/java/com/lecoo/wechat/controller/IndexController.java +++ b/src/main/java/com/lecoo/wechat/controller/IndexController.java @@ -2,9 +2,12 @@ package com.lecoo.wechat.controller; import com.alibaba.fastjson.JSONObject; import com.aliyun.dysmsapi20170525.models.SendSmsResponse; +import com.aliyun.dyvmsapi20170525.models.SingleCallByTtsResponse; import com.lecoo.wechat.entity.SmsReqEntity; +import com.lecoo.wechat.entity.VmsReqEntity; import com.lecoo.wechat.entity.WxMsgReqEntity; import com.lecoo.wechat.service.SmsService; +import com.lecoo.wechat.service.VmsService; import com.lecoo.wechat.utils.SendUtil; import me.chanjar.weixin.common.error.WxErrorException; import org.springframework.beans.factory.annotation.Autowired; @@ -22,13 +25,14 @@ public class IndexController { @Autowired SmsService smsService; + @Autowired + VmsService vmsService; + @RequestMapping(value = "/sendMsg", method = RequestMethod.POST, produces = "application/json;charset=UTF-8") public JSONObject sendMsg(@RequestBody WxMsgReqEntity wxMsgReqEntity) { JSONObject json = wxMsgReqEntity.toJson(); System.err.println(json); - - JSONObject result = new JSONObject(); result.put("status", 0); result.put("message", "send success!"); @@ -71,4 +75,32 @@ public class IndexController { System.err.println("send sms end..."); return result; } + + @RequestMapping(value = "/sendVms", method = RequestMethod.POST, produces = "application/json;charset=UTF-8") + public JSONObject sendVms(@RequestBody VmsReqEntity vmsReqEntity) { + System.err.println("receive a new req for send vms"); + JSONObject result = new JSONObject(); + result.put("status", 0); + result.put("message", "send success!"); + System.err.println(vmsReqEntity.toJson().toJSONString()); + try { + SingleCallByTtsResponse resp = vmsService.sendVms(vmsReqEntity.getTtsCode(), vmsReqEntity.getPhone()); + System.err.println(resp.getBody().getMessage()); + System.err.println(resp.getBody().getCode()); + if (resp.getBody().code.equalsIgnoreCase("ok")) { + return result; + } else { + result.put("status", -1); + result.put("message", resp.getBody().getMessage()); + return result; + } + } catch (Exception e) { + result.put("status", -1); + result.put("message", e.getMessage()); + e.printStackTrace(); + } + System.err.println(result.toJSONString()); + System.err.println("send vms end..."); + return result; + } } diff --git a/src/main/java/com/lecoo/wechat/entity/SmsReqEntity.java b/src/main/java/com/lecoo/wechat/entity/SmsReqEntity.java index 7d135f0..34aa867 100644 --- a/src/main/java/com/lecoo/wechat/entity/SmsReqEntity.java +++ b/src/main/java/com/lecoo/wechat/entity/SmsReqEntity.java @@ -1,11 +1,9 @@ package com.lecoo.wechat.entity; import com.alibaba.fastjson.JSONObject; -import com.lecoo.wechat.utils.JsonUtils; import lombok.Data; import javax.validation.constraints.NotBlank; -import java.util.Map; @Data public class SmsReqEntity { diff --git a/src/main/java/com/lecoo/wechat/entity/VmsReqEntity.java b/src/main/java/com/lecoo/wechat/entity/VmsReqEntity.java new file mode 100644 index 0000000..7840baa --- /dev/null +++ b/src/main/java/com/lecoo/wechat/entity/VmsReqEntity.java @@ -0,0 +1,37 @@ +package com.lecoo.wechat.entity; + +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Data +public class VmsReqEntity { + @NotBlank(message = "phone不能为空") + private String phone; + + @NotBlank(message = "ttsCode不能为空") + private String ttsCode; + + private String dataMap; + + public JSONObject toJson(){ + JSONObject json = new JSONObject(true); + json.put("phone", phone); + json.put("tssCode", ttsCode); + + if(dataMap!= null && dataMap.length() > 0){ + JSONObject jsonObject = JSONObject.parseObject(dataMap); + jsonObject.forEach((key, item)->{ + json.put(key, item); + }); + } + + return json; + } + + public String mapToString(){ + JSONObject jsonObject = JSONObject.parseObject(dataMap); + return jsonObject ==null ? "" : jsonObject.toJSONString(); + } +} diff --git a/src/main/java/com/lecoo/wechat/service/VmsService.java b/src/main/java/com/lecoo/wechat/service/VmsService.java new file mode 100644 index 0000000..9c28918 --- /dev/null +++ b/src/main/java/com/lecoo/wechat/service/VmsService.java @@ -0,0 +1,74 @@ +package com.lecoo.wechat.service; + +import com.aliyun.dyvmsapi20170525.Client; +import com.aliyun.dyvmsapi20170525.models.SingleCallByTtsRequest; +import com.aliyun.dyvmsapi20170525.models.SingleCallByTtsResponse; +import com.aliyun.tea.TeaException; +import com.aliyun.teautil.models.RuntimeOptions; +import com.lecoo.wechat.config.VmsProperties; +import lombok.AllArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * spring sms 工具类 + * + * @author xueyi + **/ +@Component +@AllArgsConstructor +@SuppressWarnings(value = {"unchecked", "rawtypes"}) +public class VmsService { + @Autowired + private VmsProperties vmsProperties; + + + public com.aliyun.dyvmsapi20170525.Client createClient() throws Exception { + System.err.println(vmsProperties.getAccessKeyId()); + System.err.println(vmsProperties.getAccessKeySecret()); + com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config() + // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。 + .setAccessKeyId(vmsProperties.getAccessKeyId()) + // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。 + .setAccessKeySecret(vmsProperties.getAccessKeySecret()); + // Endpoint 请参考 https://api.aliyun.com/product/Dyvmsapi + config.endpoint = vmsProperties.getEndpoint(); + return new com.aliyun.dyvmsapi20170525.Client(config); + } + + public SingleCallByTtsResponse sendVms(String ttsCode, String calledNumber) throws Exception { + System.err.println("calledNumber:" + calledNumber); + System.err.println("ttsCode:" + ttsCode); + Client client = this.createClient(); + SingleCallByTtsRequest singleCallByTtsRequest = new com.aliyun.dyvmsapi20170525.models.SingleCallByTtsRequest() + .setTtsCode(ttsCode) + .setCalledNumber(calledNumber); + RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions(); + SingleCallByTtsResponse resp = null; + try { + // 复制代码运行请自行打印 API 的返回值 + resp = client.singleCallByTtsWithOptions(singleCallByTtsRequest, runtime); + } catch (TeaException error) { + // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。 + // 错误 message + System.out.println(error.getMessage()); + // 诊断地址 + System.out.println(error.getData().get("Recommend")); + } catch (Exception _error) { + + System.out.println(_error.getMessage()); + TeaException error = new TeaException(_error.getMessage(), _error); + // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。 + // 错误 message + System.out.println(error.getMessage()); + // 诊断地址 +// System.out.println(error.getData().get("Recommend")); + } + return resp; + } + + +} + + + diff --git a/src/main/resources/config/application.yml b/src/main/resources/config/application.yml index 6ec6207..c60330a 100644 --- a/src/main/resources/config/application.yml +++ b/src/main/resources/config/application.yml @@ -1,20 +1,10 @@ server: port: 9950 - -nacos: - config: - server-addr: 127.0.0.1:8848 -# namespace: 6d0ee265-2a92-44cc-a6de-f34b3ea104e6 - enabled: true - file-extension: yaml - blocking-queue-size: 5000 - sys: baseUrl: http://dev.hjkjg.top mms: + url: http://192.168.10.119:9950 receptionPhones: 18910801519 -# accessKeyId: LTAI5tR67Z2jD21XdjZppe2E -# accessKeySecrect: 1q8QkQEzc8UZ3JmH8nt73tP1etO5Px accessKeyId: LTAI5tBxoXcHTkMZv1jUwCT8 accessKeySecrect: E8i2eWczpxOIcYGtX9D0lNJtHApmh2 endpoint: dysmsapi.aliyuncs.com @@ -30,7 +20,10 @@ sys: defaultRemindTemplate: SMS_460715556 visitorTemplate: SMS_461045124 robotName: 小酷 - + vms: + accessKeyId: LTAI5tBxoXcHTkMZv1jUwCT8 + accessKeySecret: E8i2eWczpxOIcYGtX9D0lNJtHApmh2 + endpoint: dyvmsapi.aliyuncs.com wx: mp: useRedis: false @@ -46,18 +39,3 @@ wx: regAuditTemplateId: RYDfkUjIRHnCWSy_O1XfDaFT9uE-jYqDAtrpkp49350 url: ${sys.baseUrl}/f/wx/oauth2 - -spring: - application: - name: sms-msg-sender # 业务服务的名称,用于注册到nacos中 - cloud: - nacos: - discovery: - server-addr: 127.0.0.1:18848 # nacos的服务地址 - - config: - server-addr: 127.0.0.1:18848 # nacos的配置地址 - file-extension: yml # 配置文件扩展名,默认为yml - data-id: ali-sms.yml # 配置文件名称,可以自定义 - -