@@ -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 //运行镜像 |
@@ -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 | |||
@@ -62,6 +62,18 @@ | |||
<version>2.0.5</version> | |||
</dependency> | |||
<dependency> | |||
<groupId>com.aliyun</groupId> | |||
<artifactId>tea-console</artifactId> | |||
<version>0.0.1</version> | |||
</dependency> | |||
<dependency> | |||
<groupId>com.aliyun</groupId> | |||
<artifactId>dyvmsapi20170525</artifactId> | |||
<version>3.0.0</version> | |||
</dependency> | |||
<dependency> | |||
<groupId>com.alibaba</groupId> | |||
<artifactId>fastjson</artifactId> | |||
@@ -89,6 +101,7 @@ | |||
<filtering>true</filtering> | |||
</resource> | |||
</resources> | |||
<finalName>sms-msg-sender</finalName> | |||
<plugins> | |||
<plugin> | |||
<groupId>org.springframework.boot</groupId> | |||
@@ -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 |
@@ -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; | |||
} |
@@ -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; | |||
} | |||
} |
@@ -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 { | |||
@@ -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(); | |||
} | |||
} |
@@ -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; | |||
} | |||
} | |||
@@ -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 # 配置文件名称,可以自定义 | |||