Commit f3d0dfb3 by 袁伟铭

修改

parent f92630d8
...@@ -60,6 +60,7 @@ ...@@ -60,6 +60,7 @@
<artifactId>mybatis-plus-boot-starter</artifactId> <artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis.plus.version}</version> <version>${mybatis.plus.version}</version>
</dependency> </dependency>
<!--Mybatis plus多数据源-->
<dependency> <dependency>
<groupId>com.baomidou</groupId> <groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
......
...@@ -25,7 +25,8 @@ public class StatsTimingTask { ...@@ -25,7 +25,8 @@ public class StatsTimingTask {
private final BzStatsService bzStatsService; private final BzStatsService bzStatsService;
private final YlStatsService ylStatsService; private final YlStatsService ylStatsService;
private final AreaDao areaDao; private final AreaDao areaDao;
private final String cron = "0 0 0/2 * * ?"; // private final String cron = "0 0 0/3 * * ?";
private final String cron = "0 45 18 * * ?";
@Scheduled(cron = cron) @Scheduled(cron = cron)
...@@ -47,84 +48,129 @@ public class StatsTimingTask { ...@@ -47,84 +48,129 @@ public class StatsTimingTask {
// 统计区下面的数据 // 统计区下面的数据
hyStatsService.getAreaUnderMarriageStatsList(StatsReqVo.builder().areaCode("450000000000").build()); hyStatsService.getAreaUnderMarriageStatsList(StatsReqVo.builder().areaCode("450000000000").build());
List<SystemArea> systemAreaList = areaDao.selectList(Wrappers.lambdaQuery(SystemArea.builder().parentId("450000000000").build())); List<SystemArea> cityAreaList = areaDao.selectList(Wrappers.lambdaQuery(SystemArea.builder().parentId("450000000000").build()));
for (SystemArea systemArea : systemAreaList) { for (SystemArea cityArea : cityAreaList) {
// 统计市下面的数据 // 统计市下面的数据
hyStatsService.getAreaUnderMarriageStatsList(StatsReqVo.builder().areaCode(systemArea.getCode()).build()); hyStatsService.getFivesYearMarriageLine(StatsReqVo.builder().areaCode(cityArea.getCode()).build());
hyStatsService.getMarriageStats(StatsReqVo.builder().areaCode(cityArea.getCode()).build());
hyStatsService.getMonthMarriageLine(StatsReqVo.builder().areaCode(cityArea.getCode()).build());
hyStatsService.getAreaUnderMarriageStatsList(StatsReqVo.builder().areaCode(cityArea.getCode()).build());
List<SystemArea> areaList = areaDao.selectList(Wrappers.lambdaQuery(SystemArea.builder().parentId(cityArea.getCode()).build()));
for (SystemArea area : areaList) {
hyStatsService.getFivesYearMarriageLine(StatsReqVo.builder().areaCode(area.getCode()).build());
hyStatsService.getMarriageStats(StatsReqVo.builder().areaCode(area.getCode()).build());
hyStatsService.getMonthMarriageLine(StatsReqVo.builder().areaCode(area.getCode()).build());
hyStatsService.getAreaUnderMarriageStatsList(StatsReqVo.builder().areaCode(area.getCode()).build());
}
} }
} }
@Scheduled(cron = cron) @Scheduled(cron = cron)
public void etStats() { public void etStats() {
System.out.println("儿童福利机构-基本数统计 触发时间 :" + new Date()); System.out.println("儿童福利机构-基本数统计 触发时间 :" + new Date());
List<SystemArea> systemAreaList = areaDao.selectList(Wrappers.lambdaQuery(SystemArea.builder().parentId("450000000000").build())); List<SystemArea> cityAreaList = areaDao.selectList(Wrappers.lambdaQuery(SystemArea.builder().parentId("450000000000").build()));
etStatsService.getAgencyChildStats(StatsReqVo.builder().areaCode("450000000000").build()); etStatsService.getAgencyChildStats(StatsReqVo.builder().areaCode("450000000000").build());
etStatsService.getAgencyChildStatsList(StatsReqVo.builder().areaCode("450000000000").build()); etStatsService.getAgencyChildStatsList(StatsReqVo.builder().areaCode("450000000000").build());
etStatsService.getAgencyUnderChildStatsList(StatsReqVo.builder().areaCode("450000000000").build()); etStatsService.getAgencyUnderChildStatsList(StatsReqVo.builder().areaCode("450000000000").build());
etStatsService.getAgencyPercentageStats(StatsReqVo.builder().areaCode("450000000000").build()); etStatsService.getAgencyPercentageStats(StatsReqVo.builder().areaCode("450000000000").build());
for (SystemArea systemArea : systemAreaList) { for (SystemArea cityArea : cityAreaList) {
etStatsService.getAgencyChildStats(StatsReqVo.builder().areaCode(systemArea.getCode()).build()); etStatsService.getAgencyChildStats(StatsReqVo.builder().areaCode(cityArea.getCode()).build());
etStatsService.getAgencyChildStatsList(StatsReqVo.builder().areaCode(systemArea.getCode()).build()); etStatsService.getAgencyChildStatsList(StatsReqVo.builder().areaCode(cityArea.getCode()).build());
etStatsService.getAgencyUnderChildStatsList(StatsReqVo.builder().areaCode(systemArea.getCode()).build()); etStatsService.getAgencyUnderChildStatsList(StatsReqVo.builder().areaCode(cityArea.getCode()).build());
etStatsService.getAgencyPercentageStats(StatsReqVo.builder().areaCode(systemArea.getCode()).build()); etStatsService.getAgencyPercentageStats(StatsReqVo.builder().areaCode(cityArea.getCode()).build());
List<SystemArea> areaList = areaDao.selectList(Wrappers.lambdaQuery(SystemArea.builder().parentId(cityArea.getCode()).build()));
for (SystemArea area : areaList) {
etStatsService.getAgencyChildStats(StatsReqVo.builder().areaCode(area.getCode()).build());
etStatsService.getAgencyChildStatsList(StatsReqVo.builder().areaCode(area.getCode()).build());
etStatsService.getAgencyUnderChildStatsList(StatsReqVo.builder().areaCode(area.getCode()).build());
etStatsService.getAgencyPercentageStats(StatsReqVo.builder().areaCode(area.getCode()).build());
}
} }
} }
@Scheduled(cron = cron) @Scheduled(cron = cron)
public void shzzStats() { public void shzzStats() {
System.out.println("社会组织-基本数统计 触发时间 :" + new Date()); System.out.println("社会组织-基本数统计 触发时间 :" + new Date());
List<SystemArea> systemAreaList = areaDao.selectList(Wrappers.lambdaQuery(SystemArea.builder().parentId("450000000000").build())); List<SystemArea> cityAreaList = areaDao.selectList(Wrappers.lambdaQuery(SystemArea.builder().parentId("450000000000").build()));
shzzStatsService.getSoorganStats(StatsReqVo.builder().areaCode("450000000000").build()); shzzStatsService.getSoorganStats(StatsReqVo.builder().areaCode("450000000000").build());
shzzStatsService.getAreaUnderSoorganStatsList(StatsReqVo.builder().areaCode("450000000000").build()); shzzStatsService.getAreaUnderSoorganStatsList(StatsReqVo.builder().areaCode("450000000000").build());
shzzStatsService.getSoorganPercentageStats(StatsReqVo.builder().areaCode("450000000000").build()); shzzStatsService.getSoorganPercentageStats(StatsReqVo.builder().areaCode("450000000000").build());
for (SystemArea systemArea : systemAreaList) { for (SystemArea cityArea : cityAreaList) {
shzzStatsService.getSoorganStats(StatsReqVo.builder().areaCode(systemArea.getCode()).build()); shzzStatsService.getSoorganStats(StatsReqVo.builder().areaCode(cityArea.getCode()).build());
shzzStatsService.getAreaUnderSoorganStatsList(StatsReqVo.builder().areaCode(systemArea.getCode()).build()); shzzStatsService.getAreaUnderSoorganStatsList(StatsReqVo.builder().areaCode(cityArea.getCode()).build());
shzzStatsService.getSoorganPercentageStats(StatsReqVo.builder().areaCode(systemArea.getCode()).build()); shzzStatsService.getSoorganPercentageStats(StatsReqVo.builder().areaCode(cityArea.getCode()).build());
List<SystemArea> areaList = areaDao.selectList(Wrappers.lambdaQuery(SystemArea.builder().parentId(cityArea.getCode()).build()));
for (SystemArea area : areaList) {
shzzStatsService.getSoorganStats(StatsReqVo.builder().areaCode(area.getCode()).build());
shzzStatsService.getAreaUnderSoorganStatsList(StatsReqVo.builder().areaCode(area.getCode()).build());
shzzStatsService.getSoorganPercentageStats(StatsReqVo.builder().areaCode(area.getCode()).build());
}
} }
} }
@Scheduled(cron = cron) @Scheduled(cron = cron)
public void cjStats() { public void cjStats() {
System.out.println("残疾-基本数统计 触发时间 :" + new Date()); System.out.println("残疾-基本数统计 触发时间 :" + new Date());
List<SystemArea> systemAreaList = areaDao.selectList(Wrappers.lambdaQuery(SystemArea.builder().parentId("450000000000").build())); List<SystemArea> cityAreaList = areaDao.selectList(Wrappers.lambdaQuery(SystemArea.builder().parentId("450000000000").build()));
cjStatsService.getDisabledLevelStats(StatsReqVo.builder().areaCode("450000000000").build()); cjStatsService.getDisabledLevelStats(StatsReqVo.builder().areaCode("450000000000").build());
cjStatsService.getYearDisabledIssueStats(StatsReqVo.builder().areaCode("450000000000").build()); cjStatsService.getYearDisabledIssueStats(StatsReqVo.builder().areaCode("450000000000").build());
cjStatsService.getAreaDisabledIssueStats(StatsReqVo.builder().areaCode("450000000000").build()); cjStatsService.getAreaDisabledIssueStats(StatsReqVo.builder().areaCode("450000000000").build());
for (SystemArea systemArea : systemAreaList) { for (SystemArea cityArea : cityAreaList) {
cjStatsService.getDisabledLevelStats(StatsReqVo.builder().areaCode(systemArea.getCode()).build()); cjStatsService.getDisabledLevelStats(StatsReqVo.builder().areaCode(cityArea.getCode()).build());
cjStatsService.getYearDisabledIssueStats(StatsReqVo.builder().areaCode(systemArea.getCode()).build()); cjStatsService.getYearDisabledIssueStats(StatsReqVo.builder().areaCode(cityArea.getCode()).build());
cjStatsService.getAreaDisabledIssueStats(StatsReqVo.builder().areaCode(systemArea.getCode()).build()); cjStatsService.getAreaDisabledIssueStats(StatsReqVo.builder().areaCode(cityArea.getCode()).build());
List<SystemArea> areaList = areaDao.selectList(Wrappers.lambdaQuery(SystemArea.builder().parentId(cityArea.getCode()).build()));
for (SystemArea area : areaList) {
cjStatsService.getDisabledLevelStats(StatsReqVo.builder().areaCode(area.getCode()).build());
cjStatsService.getYearDisabledIssueStats(StatsReqVo.builder().areaCode(area.getCode()).build());
cjStatsService.getAreaDisabledIssueStats(StatsReqVo.builder().areaCode(area.getCode()).build());
}
} }
} }
@Scheduled(cron = cron) @Scheduled(cron = cron)
public void bzStats() { public void bzStats() {
System.out.println("殡葬-基本数统计 触发时间 :" + new Date()); System.out.println("殡葬-基本数统计 触发时间 :" + new Date());
List<SystemArea> systemAreaList = areaDao.selectList(Wrappers.lambdaQuery(SystemArea.builder().parentId("450000000000").build())); List<SystemArea> cityAreaList = areaDao.selectList(Wrappers.lambdaQuery(SystemArea.builder().parentId("450000000000").build()));
bzStatsService.getCremationStats(StatsReqVo.builder().areaCode("450000000000").build()); bzStatsService.getCremationStats(StatsReqVo.builder().areaCode("450000000000").build());
bzStatsService.getCremationStatsList(StatsReqVo.builder().areaCode("450000000000").build()); bzStatsService.getCremationStatsList(StatsReqVo.builder().areaCode("450000000000").build());
bzStatsService.getCremationRateStats(StatsReqVo.builder().areaCode("450000000000").build()); bzStatsService.getCremationRateStats(StatsReqVo.builder().areaCode("450000000000").build());
for (SystemArea systemArea : systemAreaList) { for (SystemArea cityArea : cityAreaList) {
bzStatsService.getCremationStats(StatsReqVo.builder().areaCode(systemArea.getCode()).build()); bzStatsService.getCremationStats(StatsReqVo.builder().areaCode(cityArea.getCode()).build());
bzStatsService.getCremationStatsList(StatsReqVo.builder().areaCode(systemArea.getCode()).build()); bzStatsService.getCremationStatsList(StatsReqVo.builder().areaCode(cityArea.getCode()).build());
bzStatsService.getCremationRateStats(StatsReqVo.builder().areaCode(systemArea.getCode()).build()); bzStatsService.getCremationRateStats(StatsReqVo.builder().areaCode(cityArea.getCode()).build());
List<SystemArea> areaList = areaDao.selectList(Wrappers.lambdaQuery(SystemArea.builder().parentId(cityArea.getCode()).build()));
for (SystemArea area : areaList) {
bzStatsService.getCremationStats(StatsReqVo.builder().areaCode(area.getCode()).build());
bzStatsService.getCremationStatsList(StatsReqVo.builder().areaCode(area.getCode()).build());
bzStatsService.getCremationRateStats(StatsReqVo.builder().areaCode(area.getCode()).build());
}
} }
} }
@Scheduled(cron = cron) @Scheduled(cron = cron)
public void ylStats() { public void ylStats() {
System.out.println("养老-基本数统计 触发时间 :" + new Date()); System.out.println("养老-基本数统计 触发时间 :" + new Date());
List<SystemArea> systemAreaList = areaDao.selectList(Wrappers.lambdaQuery(SystemArea.builder().parentId("450000000000").build())); List<SystemArea> cityAreaList = areaDao.selectList(Wrappers.lambdaQuery(SystemArea.builder().parentId("450000000000").build()));
ylStatsService.getAreaNursingStatsList(StatsReqVo.builder().areaCode("450000000000").build()); ylStatsService.getAreaNursingStatsList(StatsReqVo.builder().areaCode("450000000000").build());
for (SystemArea systemArea : systemAreaList) { for (SystemArea cityArea : cityAreaList) {
ylStatsService.getAreaNursingStatsList(StatsReqVo.builder().areaCode(systemArea.getCode()).build()); ylStatsService.getAreaNursingStatsList(StatsReqVo.builder().areaCode(cityArea.getCode()).build());
List<SystemArea> areaList = areaDao.selectList(Wrappers.lambdaQuery(SystemArea.builder().parentId(cityArea.getCode()).build()));
for (SystemArea area : areaList) {
ylStatsService.getAreaNursingStatsList(StatsReqVo.builder().areaCode(area.getCode()).build());
}
} }
} }
......
...@@ -4,11 +4,7 @@ ...@@ -4,11 +4,7 @@
<select id="getFivesYearStats" resultType="java.util.Map"> <select id="getFivesYearStats" resultType="java.util.Map">
SELECT iscity, SELECT iscity,
ROUND(SUM(sum_year_2017)/10000) 's2017', ROUND(SUM(sum_year_2017) / 10000) 's2017', ROUND(SUM(sum_year_2018) / 10000) 's2018', ROUND(SUM(sum_year_2019) / 10000) 's2019', ROUND(SUM(sum_year_2020) / 10000) 's2020', ROUND(SUM(sum_year_2021) / 10000) 's2021'
ROUND(SUM(sum_year_2018)/10000) 's2018',
ROUND(SUM(sum_year_2019)/10000) 's2019',
ROUND(SUM(sum_year_2020)/10000) 's2020',
ROUND(SUM(sum_year_2021)/10000) 's2021'
FROM `v_shjz_provide` FROM `v_shjz_provide`
WHERE DATE_FORMAT(create_time, '%Y-%m-%d') = WHERE DATE_FORMAT(create_time, '%Y-%m-%d') =
(SELECT DATE_FORMAT(create_time, '%Y-%m-%d') FROM v_shjz_achieve ORDER BY create_time DESC LIMIT 1) (SELECT DATE_FORMAT(create_time, '%Y-%m-%d') FROM v_shjz_achieve ORDER BY create_time DESC LIMIT 1)
...@@ -17,10 +13,11 @@ ...@@ -17,10 +13,11 @@
</select> </select>
<select id="getStatsByYear" resultType="java.util.Map"> <select id="getStatsByYear" resultType="java.util.Map">
SELECT get_upunitname 'city', ROUND(sum_year_${year}/10000) 'provideNum' SELECT get_upunitname 'city', ROUND(sum_year_${year} / 10000) 'provideNum'
FROM `v_shjz_provide` FROM `v_shjz_provide`
WHERE DATE_FORMAT(create_time, '%Y-%m-%d') = WHERE DATE_FORMAT(create_time, '%Y-%m-%d') =
(SELECT DATE_FORMAT(create_time, '%Y-%m-%d') FROM v_shjz_achieve ORDER BY create_time DESC LIMIT 1) (SELECT DATE_FORMAT(create_time, '%Y-%m-%d') FROM v_shjz_achieve ORDER BY create_time DESC
LIMIT 1)
AND iscity = '低保' AND iscity = '低保'
</select> </select>
......
...@@ -65,11 +65,18 @@ ...@@ -65,11 +65,18 @@
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId> <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency> </dependency>
<!--Mybatis plus-->
<dependency> <dependency>
<groupId>com.baomidou</groupId> <groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId> <artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis.plus.version}</version> <version>${mybatis.plus.version}</version>
</dependency> </dependency>
<!--Mybatis plus多数据源-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.4.0</version>
</dependency>
<dependency> <dependency>
<groupId>com.alibaba</groupId> <groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId> <artifactId>druid-spring-boot-starter</artifactId>
......
...@@ -15,12 +15,23 @@ spring: ...@@ -15,12 +15,23 @@ spring:
# 连接超时时间 # 连接超时时间
timeout: 5000 timeout: 5000
datasource: datasource:
druid: dynamic: # mybatis plus多数据源插件
db-type: com.alibaba.druid.pool.DruidDataSource primary: master #设置默认的数据源或者数据源组,默认值即为master
driver-class-name: com.mysql.cj.jdbc.Driver strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
datasource:
master:
type: com.alibaba.druid.pool.DruidDataSource
url: ${jdbc.url}
username: ${jdbc.username} username: ${jdbc.username}
password: ${jdbc.password} password: ${jdbc.password}
url: ${jdbc.url} driver-class-name: ${jdbc.driver-class-name}
gxshzz:
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://192.168.0.193:3306/shzz?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: rooT123!321
driver-class-name: com.mysql.cj.jdbc.Driver
druid:
# 初始连接数 # 初始连接数
initial-size: 5 initial-size: 5
# 最小连接数 # 最小连接数
...@@ -40,23 +51,53 @@ spring: ...@@ -40,23 +51,53 @@ spring:
test-on-return: false test-on-return: false
# 检测连接是否有效 # 检测连接是否有效
validation-query: select 1 validation-query: select 1
# 配置监控统计 filters: stat
webStatFilter:
enabled: true
stat-view-servlet:
enabled: true
url-pattern: /druid/*
reset-enable: false
filter:
stat: stat:
enabled: true
# 记录慢SQL
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true merge-sql: true
wall: log-slow-sql: true
config: slow-sql-millis: 2000
multi-statement-allow: true # druid:
# db-type: com.alibaba.druid.pool.DruidDataSource
# driver-class-name: com.mysql.cj.jdbc.Driver
# username: ${jdbc.username}
# password: ${jdbc.password}
# url: ${jdbc.url}
# # 初始连接数
# initial-size: 5
# # 最小连接数
# min-idle: 10
# # 最大连接数
# max-active: 20
# # 获取连接超时时间
# max-wait: 5000
# # 连接有效性检测时间
# time-between-eviction-runs-millis: 60000
# # 连接在池中最小生存的时间
# min-evictable-idle-time-millis: 300000
# # 连接在池中最大生存的时间
# max-evictable-idle-time-millis: 900000
# test-while-idle: true
# test-on-borrow: false
# test-on-return: false
# # 检测连接是否有效
# validation-query: select 1
# # 配置监控统计
# webStatFilter:
# enabled: true
# stat-view-servlet:
# enabled: true
# url-pattern: /druid/*
# reset-enable: false
# filter:
# stat:
# enabled: true
# # 记录慢SQL
# log-slow-sql: true
# slow-sql-millis: 1000
# merge-sql: true
# wall:
# config:
# multi-statement-allow: true
#配置 Jpa #配置 Jpa
jpa: jpa:
properties: properties:
......
...@@ -65,6 +65,7 @@ ...@@ -65,6 +65,7 @@
<artifactId>mybatis-plus-boot-starter</artifactId> <artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis.plus.version}</version> <version>${mybatis.plus.version}</version>
</dependency> </dependency>
<!--Mybatis plus多数据源-->
<dependency> <dependency>
<groupId>com.baomidou</groupId> <groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
......
...@@ -16,6 +16,7 @@ import com.zq.common.vo.ApiTokenVo; ...@@ -16,6 +16,7 @@ import com.zq.common.vo.ApiTokenVo;
import com.zq.user.dao.PfuserDao; import com.zq.user.dao.PfuserDao;
import com.zq.user.dao.UserDao; import com.zq.user.dao.UserDao;
import com.zq.user.manager.CacheKeys; import com.zq.user.manager.CacheKeys;
import com.zq.user.utils.MobileSmsUtils;
import com.zq.user.vo.LoginVo; import com.zq.user.vo.LoginVo;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -39,10 +40,9 @@ public class UserService { ...@@ -39,10 +40,9 @@ public class UserService {
*/ */
public void sendCode(String phone) { public void sendCode(String phone) {
String code = RandomUtil.randomNumbers(6); String code = RandomUtil.randomNumbers(6);
code = "111111";
log.info(">> phone: {}, sendCode: {}", phone, code);
String content = "您的验证码为:" + code + "(5分钟内有效)。为了保障信息安全,如非本人操作请忽略本短信。"; String content = "您的验证码为:" + code + "(5分钟内有效)。为了保障信息安全,如非本人操作请忽略本短信。";
// TencentSmsUtils.sendSms(phone, code); boolean sendMsg = MobileSmsUtils.sendMsg(phone, content);
log.info(">> phone: {}, sendCode: {}, success: {}", phone, code, sendMsg);
redisUtils.setStr(CacheKeys.authCodeKey(phone), code, 5); redisUtils.setStr(CacheKeys.authCodeKey(phone), code, 5);
} }
......
package com.zq.user.utils;
import com.alibaba.fastjson.JSON;
import lombok.Data;
import org.apache.commons.codec.binary.Base64;
import org.springframework.util.DigestUtils;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
import java.nio.charset.StandardCharsets;
public class MobileSmsUtils {
/**
* 账号
*/
private static String apId = "sjfx";
/**
* 密码
*/
private static String secretKey = "Shujufenxi!2345";
/**
* 集团名称
*/
private static String ecName = "广西壮族自治区民政厅";
/**
* 网关签名编码
*/
private static String sign = "nMbQzvoRh";
/**
* 拓展码(可以为空)
*/
private static String addSerial = "";
/**
* url
*/
private static String url = "http://112.35.1.155:1992/sms/norsubmit";
/**
* 多用户发送短信信息
*
* @param mobiles 手机号码逗号分隔
* @param content 短信内容
* @return 返回1表示成功,0表示失败
*/
public static boolean sendMsg(String mobiles, String content) {
SendReq sendReq = new SendReq();
sendReq.setApId(apId);
sendReq.setEcName(ecName);
sendReq.setSecretKey(secretKey);
sendReq.setContent(content);
sendReq.setMobiles(mobiles);
sendReq.setAddSerial(addSerial);
sendReq.setSign(sign);
String stringBuffer = sendReq.getEcName() +
sendReq.getApId() +
sendReq.getSecretKey() +
sendReq.getMobiles() +
sendReq.getContent() +
sendReq.getSign() +
sendReq.getAddSerial();
sendReq.setMac(DigestUtils.md5DigestAsHex(stringBuffer.getBytes()).toLowerCase());
String reqText = JSON.toJSONString(sendReq);
// BASE64编码
String encode = Base64.encodeBase64String(reqText.getBytes(StandardCharsets.UTF_8));
// System.out.println(encode);
String resStr = sendPost(url, encode);
// System.out.println("发送短信结果:" + resStr);
SendRes sendRes = JSON.parseObject(resStr, SendRes.class);
return sendRes.getSuccess() && !"".equals(sendRes.getMsgGroup()) && "success".equals(sendRes.getRspcod());
}
/**
* main方法测试发送短信,返回1表示成功,0表示失败
*
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
String msg = "这是发送短信的内容!";
sendMsg("15224553696", msg);
}
/**
* 向指定 URL 发送POST方法的请求
*
* @param url 发送请求的 URL
* @param param 请求参数
* @return 所代表远程资源的响应结果
*/
private static String sendPost(String url, String param) {
OutputStreamWriter out = null;
BufferedReader in = null;
StringBuilder result = new StringBuilder();
try {
URL realUrl = new URL(url);
URLConnection conn = realUrl.openConnection();
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("contentType", "utf-8");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
conn.setDoOutput(true);
conn.setDoInput(true);
out = new OutputStreamWriter(conn.getOutputStream());
out.write(param);
out.flush();
in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result.append("\n").append(line);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (out != null) {
out.close();
}
if (in != null) {
in.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
return result.toString();
}
@Data
public static class SendReq {
/**
* 集团客户名称
*/
private String ecName;
/**
* 用户名
*/
private String apId;
/**
* 密码
*/
private String secretKey;
/**
* 手机号码逗号分隔。(如“1813728****,1813728****,1813728****”)
*/
private String mobiles;
/**
* 发送短信内容
*/
private String content;
/**
* 网关签名编码,必填,签名编码在中国移动集团开通帐号后分配,可以在云MAS网页端管理子系统-SMS接口管理功能中下载。
*/
private String sign;
/**
* 扩展码,根据向移动公司申请的通道填写,如果申请的精确匹配通道,则填写空字符串(""),否则添加移动公司允许的扩展码。
*/
private String addSerial;
/**
* 按文档要求加密后的mac
*/
private String mac;
}
@Data
public static class SendRes {
/**
* 响应状态码
*/
private String rspcod;
/**
* 消息批次号,由云MAS平台生成,用于验证短信提交报告和状态报告的一致性(取值msgGroup)注:如果数据验证不通过msgGroup为空
*/
private String msgGroup;
/**
* 数据校验结果
*/
private Boolean success;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment