新增告警模块,告警相关(告警信息,短信相关)代码从 sm 模块抽离
17 files modified
70 files renamed
12 files added
18 files deleted
| | |
| | | /** |
| | | * nacos dev 地址 |
| | | */ |
| | | String NACOS_DEV_ADDR = "127.0.0.1:8848"; |
| | | String NACOS_DEV_ADDR = "127.0.0.1:8849"; |
| | | |
| | | /** |
| | | * nacos prod 地址 |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/constant/SmsConstant.java |
| | |
| | | package cn.gistack.sm.sms.constant; |
| | | package cn.gistack.common.constant; |
| | | |
| | | /** |
| | | * 短信常量 |
| | |
| | | <module>skjcmanager-system-api</module> |
| | | <module>skjcmanager-user-api</module> |
| | | <module>skjcmanager-sm-api</module> |
| | | <module>skjcmanager-alerts-api</module> |
| | | </modules> |
| | | |
| | | <dependencies> |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <project xmlns="http://maven.apache.org/POM/4.0.0" |
| | | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| | | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
| | | <parent> |
| | | <artifactId>skjcmanager-service</artifactId> |
| | | <groupId>cn.gistack</groupId> |
| | | <version>3.0.1.RELEASE</version> |
| | | </parent> |
| | | <modelVersion>4.0.0</modelVersion> |
| | | |
| | | <artifactId>skjcmanager-alerts-api</artifactId> |
| | | <name>${project.artifactId}</name> |
| | | <version>${bladex.project.version}</version> |
| | | <packaging>jar</packaging> |
| | | |
| | | </project> |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/alarmRule/entity/AlarmRecord.java |
| | |
| | | package cn.gistack.sm.alarmRule.entity; |
| | | package cn.gistack.alerts.alarmRule.entity; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import lombok.Data; |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/alarmRule/entity/AlarmRecordDetail.java |
| | |
| | | package cn.gistack.sm.alarmRule.entity; |
| | | package cn.gistack.alerts.alarmRule.entity; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/alarmRule/entity/AlarmRule.java |
| | |
| | | package cn.gistack.sm.alarmRule.entity; |
| | | package cn.gistack.alerts.alarmRule.entity; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import lombok.Data; |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/alarmRule/entity/AlarmRuleDetail.java |
| | |
| | | package cn.gistack.sm.alarmRule.entity; |
| | | package cn.gistack.alerts.alarmRule.entity; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import com.fasterxml.jackson.databind.annotation.JsonSerialize; |
| | | import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import org.springblade.core.mp.base.BaseEntity; |
| | | |
| | | import java.io.Serializable; |
| | | |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/alarmRule/vo/AlarmRecordDetailVO.java |
| | |
| | | package cn.gistack.sm.alarmRule.vo; |
| | | package cn.gistack.alerts.alarmRule.vo; |
| | | |
| | | import cn.gistack.sm.alarmRule.entity.AlarmRecordDetail; |
| | | import cn.gistack.alerts.alarmRule.entity.AlarmRecordDetail; |
| | | import lombok.Data; |
| | | |
| | | /** |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/alarmRule/vo/AlarmRecordVO.java |
| | |
| | | package cn.gistack.sm.alarmRule.vo; |
| | | package cn.gistack.alerts.alarmRule.vo; |
| | | |
| | | import cn.gistack.sm.alarmRule.entity.AlarmRecord; |
| | | import cn.gistack.alerts.alarmRule.entity.AlarmRecord; |
| | | import lombok.Data; |
| | | |
| | | /** |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/alarmRule/vo/AlarmRuleDetailVO.java |
| | |
| | | package cn.gistack.sm.alarmRule.vo; |
| | | package cn.gistack.alerts.alarmRule.vo; |
| | | |
| | | import cn.gistack.sm.alarmRule.entity.AlarmRuleDetail; |
| | | import cn.gistack.alerts.alarmRule.entity.AlarmRuleDetail; |
| | | import lombok.Data; |
| | | |
| | | /** |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/alarmRule/vo/AlarmRuleVO.java |
| | |
| | | package cn.gistack.sm.alarmRule.vo; |
| | | package cn.gistack.alerts.alarmRule.vo; |
| | | |
| | | import cn.gistack.sm.alarmRule.entity.AlarmRule; |
| | | import cn.gistack.sm.alarmRule.entity.AlarmRuleDetail; |
| | | import cn.gistack.alerts.alarmRule.entity.AlarmRule; |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/entity/SmsRecord.java |
| | |
| | | package cn.gistack.sm.sms.entity; |
| | | package cn.gistack.alerts.sms.entity; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import com.fasterxml.jackson.databind.annotation.JsonSerialize; |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/entity/SmsRequest.java |
| | |
| | | package cn.gistack.sm.sms.entity; |
| | | package cn.gistack.alerts.sms.entity; |
| | | |
| | | import lombok.Data; |
| | | |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/entity/SmsResult.java |
| | |
| | | package cn.gistack.sm.sms.entity; |
| | | package cn.gistack.alerts.sms.entity; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| | |
| | | import lombok.EqualsAndHashCode; |
| | | import lombok.experimental.Accessors; |
| | | import org.springblade.core.mp.base.BaseEntity; |
| | | import org.springblade.core.tenant.mp.TenantEntity; |
| | | |
| | | /** |
| | | * 短信发送结果 |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/entity/SmsTemplate.java |
| | |
| | | package cn.gistack.sm.sms.entity; |
| | | package cn.gistack.alerts.sms.entity; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import io.swagger.annotations.ApiModel; |
| New file |
| | |
| | | package cn.gistack.alerts.sms.feign; |
| | | |
| | | import org.springframework.cloud.openfeign.FeignClient; |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | | import org.springframework.web.bind.annotation.RequestParam; |
| | | |
| | | /** |
| | | * 短信发送记录 |
| | | * @author zhongrj |
| | | */ |
| | | @FeignClient( |
| | | value = "blade-alerts", |
| | | fallback = ISmsRecordClientFallback.class |
| | | ) |
| | | public interface ISmsRecordClient { |
| | | |
| | | String API_PREFIX = "/client"; |
| | | String SAVE_SMS_RECORD = API_PREFIX + "/saveSmsRecord"; |
| | | |
| | | /** |
| | | * 保存短信发送记录 |
| | | * @param userNumber |
| | | * @param messageContent |
| | | * @param templateId |
| | | * @param code |
| | | * @param msg |
| | | * @param number |
| | | */ |
| | | @GetMapping(SAVE_SMS_RECORD) |
| | | void saveSmsRecord(@RequestParam("userNumber")String userNumber, |
| | | @RequestParam("messageContent")String messageContent, |
| | | @RequestParam("templateId")String templateId, |
| | | @RequestParam("code")Integer code, |
| | | @RequestParam("msg")String msg, |
| | | @RequestParam("number")Integer number); |
| | | } |
| New file |
| | |
| | | package cn.gistack.alerts.sms.feign; |
| | | |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | |
| | | /** |
| | | * @ClassName Feign失败配置 |
| | | * @Description TODO |
| | | * @Author aix |
| | | * @Date 2023/4/23 19:40 |
| | | * @Version 1.0 |
| | | */ |
| | | @Component |
| | | public class ISmsRecordClientFallback implements ISmsRecordClient{ |
| | | |
| | | @Override |
| | | public void saveSmsRecord(String userNumber, String messageContent, String templateId, Integer code, String msg, Integer number) { |
| | | |
| | | } |
| | | } |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/vo/SmsRecordVO.java |
| | |
| | | package cn.gistack.sm.sms.vo; |
| | | package cn.gistack.alerts.sms.vo; |
| | | |
| | | import cn.gistack.sm.sms.entity.SmsRecord; |
| | | import cn.gistack.alerts.sms.entity.SmsRecord; |
| | | import lombok.Data; |
| | | |
| | | /** |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/vo/SmsResultVO.java |
| | |
| | | package cn.gistack.sm.sms.vo; |
| | | package cn.gistack.alerts.sms.vo; |
| | | |
| | | import cn.gistack.sm.sms.entity.SmsResult; |
| | | import cn.gistack.alerts.sms.entity.SmsResult; |
| | | import lombok.Data; |
| | | |
| | | /** |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/vo/SmsTemplateVO.java |
| | |
| | | package cn.gistack.sm.sms.vo; |
| | | package cn.gistack.alerts.sms.vo; |
| | | |
| | | import cn.gistack.sm.sms.entity.SmsTemplate; |
| | | import cn.gistack.alerts.sms.entity.SmsTemplate; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | |
| | | package cn.gistack.sm.sjztmd.feign; |
| | | |
| | | import cn.gistack.sm.sjztmd.entity.AttResManagePerson; |
| | | import cn.gistack.sm.sjztmd.vo.PersonVO; |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springframework.cloud.openfeign.FeignClient; |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | | import org.springframework.web.bind.annotation.RequestParam; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @ClassName AttResManagePersonClent |
| | |
| | | String API_PREFIX = "/client"; |
| | | String QUERY_LIST_BY_PHONE = API_PREFIX + "/queryListByPhone"; |
| | | String GET_AD_BASE = API_PREFIX + "/getAdBaseById"; |
| | | String GET_PERSONG_LIST_BY_RES_GUID = API_PREFIX + "/getPersonListByResGuid"; |
| | | String GET_USER_LIST_BY_RES_GUID = API_PREFIX + "/getUserListByResGuid"; |
| | | |
| | | @GetMapping(QUERY_LIST_BY_PHONE) |
| | | R queryListByPhone(@RequestParam("userPhone") String userPhone); |
| | |
| | | @GetMapping(GET_AD_BASE) |
| | | R getAdBaseById(@RequestParam("guid") String guid); |
| | | |
| | | /** |
| | | * 根据水库编号及责任人类型查询相关责任人信息 |
| | | * @param res_cd |
| | | * @param personList |
| | | * @return |
| | | */ |
| | | @GetMapping(GET_PERSONG_LIST_BY_RES_GUID) |
| | | List<PersonVO> getPersonListByResGuid(@RequestParam("res_cd") String res_cd, @RequestParam("personList") String personList); |
| | | |
| | | /** |
| | | * 根据水库编号查询除责任人之外的人员信息 |
| | | * @param res_cd |
| | | * @return |
| | | */ |
| | | @GetMapping(GET_USER_LIST_BY_RES_GUID) |
| | | List<PersonVO> getUserListByResGuid(@RequestParam("res_cd") String res_cd); |
| | | } |
| | |
| | | package cn.gistack.sm.sjztmd.feign; |
| | | |
| | | import cn.gistack.sm.sjztmd.entity.AttResManagePerson; |
| | | import cn.gistack.sm.sjztmd.vo.PersonVO; |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @ClassName Feign失败配置 |
| | |
| | | return R.fail("获取数据失败"); |
| | | } |
| | | |
| | | @Override |
| | | public List<PersonVO> getPersonListByResGuid(String res_cd, String personList) { |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public List<PersonVO> getUserListByResGuid(String res_cd) { |
| | | return null; |
| | | } |
| | | } |
| | |
| | | <module>skjcmanager-system</module> |
| | | <module>skjcmanager-user</module> |
| | | <module>skjcmanager-sm</module> |
| | | <module>skjcmanager-alerts</module> |
| | | </modules> |
| | | |
| | | <dependencies> |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| | | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
| | | <parent> |
| | | <artifactId>skjcmanager-service</artifactId> |
| | | <groupId>cn.gistack</groupId> |
| | | <version>3.0.1.RELEASE</version> |
| | | </parent> |
| | | <modelVersion>4.0.0</modelVersion> |
| | | |
| | | <artifactId>skjcmanager-alerts</artifactId> |
| | | <name>${project.artifactId}</name> |
| | | <version>${bladex.project.version}</version> |
| | | <packaging>jar</packaging> |
| | | |
| | | <dependencies> |
| | | <dependency> |
| | | <groupId>org.springblade</groupId> |
| | | <artifactId>blade-core-boot</artifactId> |
| | | </dependency> |
| | | <!--开启多数据源--> |
| | | <dependency> |
| | | <groupId>org.springblade</groupId> |
| | | <artifactId>blade-core-auto</artifactId> |
| | | <scope>compile</scope> |
| | | </dependency> |
| | | <!--引入 sms 短信 sdk --> |
| | | <dependency> |
| | | <groupId>cn.com.flaginfo.sdk.cmc</groupId> |
| | | <artifactId>send-api-sdk</artifactId> |
| | | <version>1.2.1</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>cn.gistack</groupId> |
| | | <artifactId>skjcmanager-sm-api</artifactId> |
| | | <version>3.0.1.RELEASE</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>cn.gistack</groupId> |
| | | <artifactId>skjcmanager-alerts-api</artifactId> |
| | | <version>3.0.1.RELEASE</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>cn.gistack</groupId> |
| | | <artifactId>skjcmanager-user-api</artifactId> |
| | | <version>3.0.1.RELEASE</version> |
| | | </dependency> |
| | | </dependencies> |
| | | |
| | | <build> |
| | | <plugins> |
| | | <plugin> |
| | | <groupId>com.spotify</groupId> |
| | | <artifactId>dockerfile-maven-plugin</artifactId> |
| | | <configuration> |
| | | <username>${docker.username}</username> |
| | | <password>${docker.password}</password> |
| | | <repository>${docker.registry.url}/${docker.namespace}/${project.artifactId}</repository> |
| | | <tag>${project.version}</tag> |
| | | <useMavenSettingsForAuth>true</useMavenSettingsForAuth> |
| | | <buildArgs> |
| | | <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE> |
| | | </buildArgs> |
| | | <skip>false</skip> |
| | | </configuration> |
| | | </plugin> |
| | | <plugin> |
| | | <groupId>org.apache.maven.plugins</groupId> |
| | | <artifactId>maven-antrun-plugin</artifactId> |
| | | </plugin> |
| | | </plugins> |
| | | </build> |
| | | |
| | | </project> |
| New file |
| | |
| | | package cn.gistack.alerts; |
| | | |
| | | import org.mybatis.spring.annotation.MapperScan; |
| | | import org.springblade.core.cloud.client.BladeCloudApplication; |
| | | import org.springblade.core.launch.BladeApplication; |
| | | import org.springframework.boot.web.client.RestTemplateBuilder; |
| | | import org.springframework.cloud.openfeign.EnableFeignClients; |
| | | import org.springframework.context.annotation.Bean; |
| | | import org.springframework.web.client.RestTemplate; |
| | | |
| | | @BladeCloudApplication |
| | | @EnableFeignClients({"cn.gistack"}) |
| | | @MapperScan({"org.springblade.**.mapper.**","cn.gistack.alerts.**.mapper.**"}) |
| | | public class AlertsApplication { |
| | | public static void main(String[] args) { |
| | | BladeApplication.run("blade-alerts", AlertsApplication.class, args); |
| | | } |
| | | |
| | | @Bean |
| | | public RestTemplate restTemplate(RestTemplateBuilder builder){ |
| | | return builder.build(); |
| | | } |
| | | |
| | | } |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/alarmRule/controller/AlarmRecordController.java |
| | |
| | | package cn.gistack.sm.alarmRule.controller; |
| | | package cn.gistack.alerts.alarmRule.controller; |
| | | |
| | | import cn.gistack.sm.alarmRule.entity.AlarmRecord; |
| | | import cn.gistack.sm.alarmRule.service.AlarmRecordService; |
| | | import cn.gistack.sm.alarmRule.vo.AlarmRecordVO; |
| | | import cn.gistack.alerts.alarmRule.entity.AlarmRecord; |
| | | import cn.gistack.alerts.alarmRule.service.AlarmRecordService; |
| | | import cn.gistack.alerts.alarmRule.vo.AlarmRecordVO; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import lombok.AllArgsConstructor; |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/alarmRule/controller/AlarmRecordDetailController.java |
| | |
| | | package cn.gistack.sm.alarmRule.controller; |
| | | package cn.gistack.alerts.alarmRule.controller; |
| | | |
| | | import cn.gistack.sm.alarmRule.entity.AlarmRecordDetail; |
| | | import cn.gistack.sm.alarmRule.service.AlarmRecordDetailService; |
| | | import cn.gistack.sm.alarmRule.vo.AlarmRecordDetailVO; |
| | | import cn.gistack.alerts.alarmRule.entity.AlarmRecordDetail; |
| | | import cn.gistack.alerts.alarmRule.service.AlarmRecordDetailService; |
| | | import cn.gistack.alerts.alarmRule.vo.AlarmRecordDetailVO; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import lombok.AllArgsConstructor; |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/alarmRule/controller/AlarmRuleController.java |
| | |
| | | package cn.gistack.sm.alarmRule.controller; |
| | | package cn.gistack.alerts.alarmRule.controller; |
| | | |
| | | import cn.gistack.sm.alarmRule.entity.AlarmRule; |
| | | import cn.gistack.sm.alarmRule.entity.AlarmRuleDetail; |
| | | import cn.gistack.sm.alarmRule.service.AlarmRuleDetailService; |
| | | import cn.gistack.sm.alarmRule.service.AlarmRuleService; |
| | | import cn.gistack.sm.alarmRule.vo.AlarmRuleVO; |
| | | import cn.gistack.alerts.alarmRule.entity.AlarmRule; |
| | | import cn.gistack.alerts.alarmRule.entity.AlarmRuleDetail; |
| | | import cn.gistack.alerts.alarmRule.service.AlarmRuleDetailService; |
| | | import cn.gistack.alerts.alarmRule.service.AlarmRuleService; |
| | | import cn.gistack.alerts.alarmRule.vo.AlarmRuleVO; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import io.swagger.annotations.ApiOperation; |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/alarmRule/controller/AlarmRuleDetailController.java |
| | |
| | | package cn.gistack.sm.alarmRule.controller; |
| | | package cn.gistack.alerts.alarmRule.controller; |
| | | |
| | | import cn.gistack.sm.alarmRule.entity.AlarmRuleDetail; |
| | | import cn.gistack.sm.alarmRule.service.AlarmRuleDetailService; |
| | | import cn.gistack.sm.alarmRule.vo.AlarmRuleDetailVO; |
| | | import cn.gistack.alerts.alarmRule.entity.AlarmRuleDetail; |
| | | import cn.gistack.alerts.alarmRule.service.AlarmRuleDetailService; |
| | | import cn.gistack.alerts.alarmRule.vo.AlarmRuleDetailVO; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import lombok.AllArgsConstructor; |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/alarmRule/mapper/AlarmRecordDetailMapper.java |
| | |
| | | package cn.gistack.sm.alarmRule.mapper; |
| | | package cn.gistack.alerts.alarmRule.mapper; |
| | | |
| | | import cn.gistack.sm.alarmRule.entity.AlarmRecordDetail; |
| | | import cn.gistack.sm.alarmRule.vo.AlarmRecordDetailVO; |
| | | import cn.gistack.sm.alarmRule.vo.AlarmRecordVO; |
| | | import cn.gistack.alerts.alarmRule.entity.AlarmRecordDetail; |
| | | import cn.gistack.alerts.alarmRule.vo.AlarmRecordDetailVO; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import org.apache.ibatis.annotations.Param; |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/alarmRule/mapper/AlarmRecordDetailMapper.xml |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="cn.gistack.sm.alarmRule.mapper.AlarmRecordDetailMapper"> |
| | | <mapper namespace="cn.gistack.alerts.alarmRule.mapper.AlarmRecordDetailMapper"> |
| | | |
| | | <!--自定义分页列表查询--> |
| | | <select id="selectAlarmRecordDetailPage" resultType="cn.gistack.sm.alarmRule.vo.AlarmRecordDetailVO"> |
| | | <select id="selectAlarmRecordDetailPage" resultType="cn.gistack.alerts.alarmRule.vo.AlarmRecordDetailVO"> |
| | | select * from sm_alarm_record_detail |
| | | where 1=1 |
| | | </select> |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/alarmRule/mapper/AlarmRecordMapper.java |
| | |
| | | package cn.gistack.sm.alarmRule.mapper; |
| | | package cn.gistack.alerts.alarmRule.mapper; |
| | | |
| | | import cn.gistack.sm.alarmRule.entity.AlarmRecord; |
| | | import cn.gistack.sm.alarmRule.vo.AlarmRecordVO; |
| | | import cn.gistack.alerts.alarmRule.entity.AlarmRecord; |
| | | import cn.gistack.alerts.alarmRule.vo.AlarmRecordVO; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import org.apache.ibatis.annotations.Param; |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/alarmRule/mapper/AlarmRecordMapper.xml |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="cn.gistack.sm.alarmRule.mapper.AlarmRecordMapper"> |
| | | <mapper namespace="cn.gistack.alerts.alarmRule.mapper.AlarmRecordMapper"> |
| | | |
| | | <!--自定义分页列表查询--> |
| | | <select id="selectAlarmRecordPage" resultType="cn.gistack.sm.alarmRule.vo.AlarmRecordVO"> |
| | | <select id="selectAlarmRecordPage" resultType="cn.gistack.alerts.alarmRule.vo.AlarmRecordVO"> |
| | | select |
| | | sar.*, |
| | | sar1.type,sar1.alarm_rule_type as alarmRuleType,sar1.create_alarm_type as createAlarmType, |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/alarmRule/mapper/AlarmRuleDetailMapper.java |
| | |
| | | package cn.gistack.sm.alarmRule.mapper; |
| | | package cn.gistack.alerts.alarmRule.mapper; |
| | | |
| | | import cn.gistack.sm.alarmRule.entity.AlarmRuleDetail; |
| | | import cn.gistack.sm.alarmRule.vo.AlarmRuleDetailVO; |
| | | import cn.gistack.alerts.alarmRule.entity.AlarmRuleDetail; |
| | | import cn.gistack.alerts.alarmRule.vo.AlarmRuleDetailVO; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import org.apache.ibatis.annotations.Param; |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/alarmRule/mapper/AlarmRuleDetailMapper.xml |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="cn.gistack.sm.alarmRule.mapper.AlarmRuleDetailMapper"> |
| | | <mapper namespace="cn.gistack.alerts.alarmRule.mapper.AlarmRuleDetailMapper"> |
| | | |
| | | <!--自定义分页列表查询--> |
| | | <select id="selectAlarmRuleDetailPage" resultType="cn.gistack.sm.alarmRule.vo.AlarmRuleDetailVO"> |
| | | <select id="selectAlarmRuleDetailPage" resultType="cn.gistack.alerts.alarmRule.vo.AlarmRuleDetailVO"> |
| | | select * from sm_alarm_rule_detail |
| | | </select> |
| | | |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/alarmRule/mapper/AlarmRuleMapper.java |
| | |
| | | package cn.gistack.sm.alarmRule.mapper; |
| | | package cn.gistack.alerts.alarmRule.mapper; |
| | | |
| | | import cn.gistack.sm.alarmRule.entity.AlarmRule; |
| | | import cn.gistack.sm.alarmRule.entity.AlarmRuleDetail; |
| | | import cn.gistack.sm.alarmRule.vo.AlarmRuleDetailVO; |
| | | import cn.gistack.sm.alarmRule.vo.AlarmRuleVO; |
| | | import cn.gistack.alerts.alarmRule.entity.AlarmRule; |
| | | import cn.gistack.alerts.alarmRule.vo.AlarmRuleDetailVO; |
| | | import cn.gistack.alerts.alarmRule.vo.AlarmRuleVO; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import org.apache.ibatis.annotations.Param; |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/alarmRule/mapper/AlarmRuleMapper.xml |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="cn.gistack.sm.alarmRule.mapper.AlarmRuleMapper"> |
| | | <mapper namespace="cn.gistack.alerts.alarmRule.mapper.AlarmRuleMapper"> |
| | | |
| | | <!--自定义分页列表查询--> |
| | | <select id="selectAlarmRulePage" resultType="cn.gistack.sm.alarmRule.vo.AlarmRuleVO"> |
| | | <select id="selectAlarmRulePage" resultType="cn.gistack.alerts.alarmRule.vo.AlarmRuleVO"> |
| | | select sar.* from YWXT.sm_alarm_rule sar where sar.is_deleted = 0 |
| | | <if test="alarmRule.type!=null and alarmRule.type!=''"> |
| | | and sar.type = #{alarmRule.type} |
| | |
| | | </select> |
| | | |
| | | <!--通过id查询--> |
| | | <select id="getDetailById" resultType="cn.gistack.sm.alarmRule.vo.AlarmRuleVO"> |
| | | <select id="getDetailById" resultType="cn.gistack.alerts.alarmRule.vo.AlarmRuleVO"> |
| | | select * from sm_alarm_rule where is_deleted = 0 and id = #{id} |
| | | </select> |
| | | |
| | | <!--通过id查询--> |
| | | <select id="getAlarmRuleDetailList" resultType="cn.gistack.sm.alarmRule.vo.AlarmRuleDetailVO"> |
| | | <select id="getAlarmRuleDetailList" resultType="cn.gistack.alerts.alarmRule.vo.AlarmRuleDetailVO"> |
| | | select sard.*,sst.content as alarmContent |
| | | from sm_alarm_rule_detail sard left join sm_sms_template sst on sard.template_id = sst.template_id |
| | | where sard.alarm_rule_id = #{id} |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/alarmRule/service/AlarmRecordDetailService.java |
| | |
| | | package cn.gistack.sm.alarmRule.service; |
| | | package cn.gistack.alerts.alarmRule.service; |
| | | |
| | | import cn.gistack.sm.alarmRule.entity.AlarmRecordDetail; |
| | | import cn.gistack.sm.alarmRule.vo.AlarmRecordDetailVO; |
| | | import cn.gistack.alerts.alarmRule.entity.AlarmRecordDetail; |
| | | import cn.gistack.alerts.alarmRule.vo.AlarmRecordDetailVO; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/alarmRule/service/AlarmRecordService.java |
| | |
| | | package cn.gistack.sm.alarmRule.service; |
| | | package cn.gistack.alerts.alarmRule.service; |
| | | |
| | | import cn.gistack.sm.alarmRule.entity.AlarmRecord; |
| | | import cn.gistack.sm.alarmRule.vo.AlarmRecordVO; |
| | | import cn.gistack.alerts.alarmRule.entity.AlarmRecord; |
| | | import cn.gistack.alerts.alarmRule.vo.AlarmRecordVO; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import org.springblade.core.mp.base.BaseService; |
| | | |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/alarmRule/service/AlarmRuleDetailService.java |
| | |
| | | package cn.gistack.sm.alarmRule.service; |
| | | package cn.gistack.alerts.alarmRule.service; |
| | | |
| | | import cn.gistack.sm.alarmRule.entity.AlarmRuleDetail; |
| | | import cn.gistack.sm.alarmRule.vo.AlarmRuleDetailVO; |
| | | import cn.gistack.alerts.alarmRule.entity.AlarmRuleDetail; |
| | | import cn.gistack.alerts.alarmRule.vo.AlarmRuleDetailVO; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/alarmRule/service/AlarmRuleService.java |
| | |
| | | package cn.gistack.sm.alarmRule.service; |
| | | package cn.gistack.alerts.alarmRule.service; |
| | | |
| | | import cn.gistack.sm.alarmRule.entity.AlarmRule; |
| | | import cn.gistack.sm.alarmRule.vo.AlarmRuleVO; |
| | | import cn.gistack.alerts.alarmRule.entity.AlarmRule; |
| | | import cn.gistack.alerts.alarmRule.vo.AlarmRuleVO; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import org.springblade.core.mp.base.BaseService; |
| | | |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/alarmRule/service/impl/AlarmRecordDetailServiceImpl.java |
| | |
| | | package cn.gistack.sm.alarmRule.service.impl; |
| | | package cn.gistack.alerts.alarmRule.service.impl; |
| | | |
| | | import cn.gistack.sm.alarmRule.entity.AlarmRecordDetail; |
| | | import cn.gistack.sm.alarmRule.mapper.AlarmRecordDetailMapper; |
| | | import cn.gistack.sm.alarmRule.service.AlarmRecordDetailService; |
| | | import cn.gistack.sm.alarmRule.vo.AlarmRecordDetailVO; |
| | | import cn.gistack.alerts.alarmRule.entity.AlarmRecordDetail; |
| | | import cn.gistack.alerts.alarmRule.mapper.AlarmRecordDetailMapper; |
| | | import cn.gistack.alerts.alarmRule.service.AlarmRecordDetailService; |
| | | import cn.gistack.alerts.alarmRule.vo.AlarmRecordDetailVO; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.springblade.core.mp.base.BaseServiceImpl; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/alarmRule/service/impl/AlarmRecordServiceImpl.java |
| | |
| | | package cn.gistack.sm.alarmRule.service.impl; |
| | | package cn.gistack.alerts.alarmRule.service.impl; |
| | | |
| | | import cn.gistack.sm.alarmRule.entity.AlarmRecord; |
| | | import cn.gistack.sm.alarmRule.mapper.AlarmRecordMapper; |
| | | import cn.gistack.sm.alarmRule.service.AlarmRecordService; |
| | | import cn.gistack.sm.alarmRule.vo.AlarmRecordVO; |
| | | import cn.gistack.alerts.alarmRule.entity.AlarmRecord; |
| | | import cn.gistack.alerts.alarmRule.mapper.AlarmRecordMapper; |
| | | import cn.gistack.alerts.alarmRule.service.AlarmRecordService; |
| | | import cn.gistack.alerts.alarmRule.vo.AlarmRecordVO; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import org.springblade.core.mp.base.BaseServiceImpl; |
| | | import org.springframework.stereotype.Service; |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/alarmRule/service/impl/AlarmRuleDetailServiceImpl.java |
| | |
| | | package cn.gistack.sm.alarmRule.service.impl; |
| | | package cn.gistack.alerts.alarmRule.service.impl; |
| | | |
| | | import cn.gistack.sm.alarmRule.entity.AlarmRuleDetail; |
| | | import cn.gistack.sm.alarmRule.mapper.AlarmRuleDetailMapper; |
| | | import cn.gistack.sm.alarmRule.service.AlarmRuleDetailService; |
| | | import cn.gistack.sm.alarmRule.vo.AlarmRuleDetailVO; |
| | | import cn.gistack.alerts.alarmRule.entity.AlarmRuleDetail; |
| | | import cn.gistack.alerts.alarmRule.mapper.AlarmRuleDetailMapper; |
| | | import cn.gistack.alerts.alarmRule.service.AlarmRuleDetailService; |
| | | import cn.gistack.alerts.alarmRule.vo.AlarmRuleDetailVO; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.springframework.stereotype.Service; |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/alarmRule/service/impl/AlarmRuleServiceImpl.java |
| | |
| | | package cn.gistack.sm.alarmRule.service.impl; |
| | | package cn.gistack.alerts.alarmRule.service.impl; |
| | | |
| | | import cn.gistack.sm.alarmRule.entity.AlarmRule; |
| | | import cn.gistack.sm.alarmRule.mapper.AlarmRuleMapper; |
| | | import cn.gistack.sm.alarmRule.service.AlarmRuleService; |
| | | import cn.gistack.sm.alarmRule.vo.AlarmRuleVO; |
| | | import cn.gistack.alerts.alarmRule.entity.AlarmRule; |
| | | import cn.gistack.alerts.alarmRule.mapper.AlarmRuleMapper; |
| | | import cn.gistack.alerts.alarmRule.service.AlarmRuleService; |
| | | import cn.gistack.alerts.alarmRule.vo.AlarmRuleVO; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import org.springblade.core.mp.base.BaseServiceImpl; |
| | | import org.springframework.stereotype.Service; |
| New file |
| | |
| | | package cn.gistack.alerts.launch; |
| | | |
| | | import org.springblade.core.auto.service.AutoService; |
| | | import cn.gistack.common.constant.LauncherConstant; |
| | | import org.springblade.core.launch.service.LauncherService; |
| | | import org.springblade.core.launch.utils.PropsUtil; |
| | | import org.springframework.boot.builder.SpringApplicationBuilder; |
| | | |
| | | import java.util.Properties; |
| | | |
| | | /** |
| | | * 启动参数拓展 |
| | | * |
| | | * @author smallchil |
| | | */ |
| | | @AutoService(LauncherService.class) |
| | | public class AlertsLauncherServiceImpl implements LauncherService { |
| | | |
| | | @Override |
| | | public void launcher(SpringApplicationBuilder builder, String appName, String profile, boolean isLocalDev) { |
| | | Properties props = System.getProperties(); |
| | | // 通用注册 |
| | | PropsUtil.setProperty(props, "spring.cloud.nacos.discovery.server-addr", LauncherConstant.nacosAddr(profile)); |
| | | PropsUtil.setProperty(props, "spring.cloud.nacos.config.server-addr", LauncherConstant.nacosAddr(profile)); |
| | | |
| | | |
| | | PropsUtil.setProperty(props, "spring.cloud.sentinel.transport.dashboard", LauncherConstant.sentinelAddr(profile)); |
| | | PropsUtil.setProperty(props, "spring.zipkin.base-url", LauncherConstant.zipkinAddr(profile)); |
| | | //开启多数据源 |
| | | PropsUtil.setProperty(props, "spring.datasource.dynamic.enabled", "true"); |
| | | |
| | | // 开启elk日志 |
| | | // PropsUtil.setProperty(props, "blade.log.elk.destination", LauncherConstant.elkAddr(profile)); |
| | | |
| | | // seata注册地址 |
| | | // PropsUtil.setProperty(props, "seata.service.grouplist.default", LauncherConstant.seataAddr(profile)); |
| | | // seata注册group格式 |
| | | // PropsUtil.setProperty(props, "seata.tx-service-group", LauncherConstant.seataServiceGroup(appName)); |
| | | // seata配置服务group |
| | | // PropsUtil.setProperty(props, "seata.service.vgroup-mapping.".concat(LauncherConstant.seataServiceGroup(appName)), LauncherConstant.DEFAULT_MODE); |
| | | // seata注册模式配置 |
| | | // PropsUtil.setProperty(props, "seata.registry.type", LauncherConstant.NACOS_MODE); |
| | | // PropsUtil.setProperty(props, "seata.registry.nacos.server-addr", LauncherConstant.nacosAddr(profile)); |
| | | // PropsUtil.setProperty(props, "seata.config.type", LauncherConstant.NACOS_MODE); |
| | | // PropsUtil.setProperty(props, "seata.config.nacos.server-addr", LauncherConstant.nacosAddr(profile)); |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | package cn.gistack.alerts.sms.controller; |
| | | |
| | | import cn.com.flaginfo.sdk.cmc.api.result.ComResult; |
| | | import cn.com.flaginfo.sdk.cmc.api.sms.dynsend.DynSMSSendDataResult; |
| | | import cn.com.flaginfo.sdk.cmc.api.sms.dynsend.DynSMSSendRequest; |
| | | import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendDataResult; |
| | | import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendRequest; |
| | | import cn.gistack.alerts.sms.entity.SmsRequest; |
| | | import cn.gistack.alerts.sms.entity.SmsResult; |
| | | import cn.gistack.alerts.sms.service.SmsService; |
| | | import cn.gistack.alerts.sms.util.SmsUtils; |
| | | import cn.gistack.alerts.sms.vo.SmsRequestTemplate; |
| | | import cn.gistack.system.user.entity.User; |
| | | import cn.gistack.system.user.feign.IUserClient; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springblade.core.redis.cache.BladeRedis; |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | import java.util.regex.Matcher; |
| | | import java.util.regex.Pattern; |
| | | import static cn.gistack.common.cache.CacheNames.PHONE_KEY; |
| | | |
| | | /** |
| | | * 短信发送控制层 |
| | | * @author zhongrj |
| | | * @date 2023-04-22 |
| | | */ |
| | | @Slf4j |
| | | @RestController |
| | | @RequestMapping("/sms/sms") |
| | | @AllArgsConstructor |
| | | public class SmsController { |
| | | |
| | | private final SmsService smsService; |
| | | |
| | | private final BladeRedis bladeRedis; |
| | | |
| | | private final IUserClient userClient; |
| | | |
| | | @GetMapping("/test") |
| | | public void setRedis(){ |
| | | saveCodeForRedis("super_admin","123456"); |
| | | } |
| | | |
| | | /** |
| | | * 短信固定内容发送通用方法(仅支持 {xx} 模式的模板) |
| | | * request 必须包含手机号,模板id,拼接好的内容 |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @PostMapping("/sendFixedContentByXXModel") |
| | | public R sendFixedContentByXXModel(@RequestBody SMSSendRequest request){ |
| | | // 手机号码校验 |
| | | if(validatePhone(request.getUserNumber())) { |
| | | // 发送操作 |
| | | ComResult<SMSSendDataResult> resultComResult = SmsUtils.sendMsg(request); |
| | | // 记录发送记录操作 |
| | | SmsResult smsResult = smsService.saveSendResult(request, 1); |
| | | if (null != smsResult){ |
| | | smsService.saveSendRecord(request, resultComResult.getCode(),resultComResult.getMsg(),smsResult.getId()); |
| | | } |
| | | // 返回发送信息 |
| | | return R.data(resultComResult); |
| | | } |
| | | // 返回发送信息 |
| | | return R.fail(400,"该手机号不存在!"); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 短信动态内容发送通用方法(仅支持 具名变量 {手机号码:11} 模式的模板) |
| | | * request 必须包含手机号,模板id,拼接好的内容 |
| | | * @param smsRequest |
| | | * @return |
| | | */ |
| | | @PostMapping("/sendFixedContentByNamedVariableModel") |
| | | public R sendFixedContentByNamedVariableModel(@RequestBody SmsRequest smsRequest){ |
| | | // 处理数据(可能是多个手机号情况) |
| | | List<String> list = Arrays.asList(smsRequest.getPhone().split(",")); |
| | | // 保存发送结果 |
| | | // 记录保存 |
| | | SMSSendRequest request = new SMSSendRequest(); |
| | | request.setMessageContent(smsRequest.getContent()); |
| | | request.setTemplateId(smsRequest.getTemplateId()); |
| | | SmsResult smsResult = smsService.saveSendResult(request, list.size()); |
| | | // 遍历 |
| | | for (String phone : list) { |
| | | DynSMSSendRequest dynSMSSendRequest = new DynSMSSendRequest(); |
| | | dynSMSSendRequest.setTemplateId(smsRequest.getTemplateId()); |
| | | dynSMSSendRequest.setDynData(smsRequest.getParams()); |
| | | // 手机号校验 |
| | | if(validator(phone)) { |
| | | // 发送邮件短信 |
| | | ComResult<DynSMSSendDataResult> resultComResult = SmsUtils.dynSendMethod(dynSMSSendRequest); |
| | | // 记录保存 |
| | | if (null != smsResult) { |
| | | SMSSendRequest smsSendRequest = new SMSSendRequest(); |
| | | smsSendRequest.setUserNumber(phone); |
| | | smsSendRequest.setMessageContent(smsRequest.getContent()); |
| | | smsSendRequest.setTemplateId(dynSMSSendRequest.getTemplateId()); |
| | | // 记录发送记录操作 |
| | | smsService.saveSendRecord(smsSendRequest, resultComResult.getCode(),resultComResult.getMsg(),smsResult.getId()); |
| | | } |
| | | }else { |
| | | // 手机号有误记录 |
| | | // 记录保存 |
| | | SMSSendRequest smsSendRequest = new SMSSendRequest(); |
| | | smsSendRequest.setUserNumber(phone); |
| | | smsSendRequest.setMessageContent(smsRequest.getContent()); |
| | | smsSendRequest.setTemplateId(dynSMSSendRequest.getTemplateId()); |
| | | // 记录发送记录操作 |
| | | smsService.saveSendRecord(smsSendRequest, 400,"手机号错误未发送...",null); |
| | | } |
| | | } |
| | | return R.status(true); |
| | | } |
| | | |
| | | /** |
| | | * 发送登录验证码 |
| | | * request 必须包含手机号 |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @PostMapping("/sendCode") |
| | | public R sendCode(@RequestBody SMSSendRequest request){ |
| | | // 手机号码校验 |
| | | if(validatePhone(request.getUserNumber())) { |
| | | //设置模板相关信息 |
| | | String templateId = "2431012205498"; |
| | | String randNumber = SmsUtils.getRandNumber(); |
| | | String content = "您的登录验证码是" + randNumber + ",5分钟内有效,请勿泄漏,如非本人操作,请忽略此信息"; |
| | | request.setMessageContent(content); |
| | | request.setTemplateId(templateId); |
| | | // 发送操作 |
| | | ComResult<SMSSendDataResult> resultComResult = SmsUtils.sendMsg(request); |
| | | // 记录发送记录操作 |
| | | SmsResult smsResult = smsService.saveSendResult(request, 1); |
| | | if (null != smsResult){ |
| | | smsService.saveSendRecord(request, resultComResult.getCode(),resultComResult.getMsg(),smsResult.getId()); |
| | | } |
| | | // 保存验证码到 redis |
| | | saveCodeForRedis(request.getUserNumber(), randNumber); |
| | | // 返回发送信息 |
| | | return R.data(resultComResult); |
| | | } |
| | | // 返回发送信息 |
| | | return R.fail(400,"该手机号不存在!"); |
| | | } |
| | | |
| | | /** |
| | | * 校验手机号码正确性 |
| | | * @param userNumber |
| | | * @return |
| | | */ |
| | | private boolean validatePhone(String userNumber) { |
| | | // 校验手机号码正确性 |
| | | if (validator(userNumber)){ |
| | | // 校验该账户是否已注册,通过手机号查询用户是否存在,tenantId 暂时写死,未登陆情况 tenantId 获取不到 |
| | | R<List<User>> list = userClient.userInfoByPhoneOrAccount("000000", userNumber); |
| | | if (list.getData().size()>0){ |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | * 校验手机号码 |
| | | */ |
| | | public static boolean validator(String phone) { |
| | | if (null!=phone && !phone.equals("")) { |
| | | String regex = "^((13[0-9])|(14[5,7,9])|(15([0-3]|[5-9]))|(166)|(17[0,1,3,5,6,7,8])|(18[0-9])|(19[8|9]))\\d{8}$"; |
| | | if (phone.length() != 11) { |
| | | return false; |
| | | } else { |
| | | Pattern p = Pattern.compile(regex); |
| | | Matcher m = p.matcher(phone); |
| | | boolean isMatch = m.matches(); |
| | | return isMatch; |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | * 保存验证码到 redis |
| | | * @param userNumber |
| | | * @param randNumber |
| | | */ |
| | | private void saveCodeForRedis(String userNumber, String randNumber) { |
| | | bladeRedis.setEx(PHONE_KEY + userNumber,randNumber,5*60L); |
| | | } |
| | | |
| | | /** |
| | | * 发送邮件提醒 |
| | | * @param smsRequest |
| | | * @return |
| | | */ |
| | | @PostMapping("/sendEmailMsg") |
| | | public R sendEmailMsg(@RequestBody SmsRequest smsRequest){ |
| | | // 处理数据(可能是多个手机号情况) |
| | | List<String> list = Arrays.asList(smsRequest.getPhone().split(",")); |
| | | // 保存发送结果 |
| | | // 记录保存 |
| | | SMSSendRequest request = new SMSSendRequest(); |
| | | request.setMessageContent(smsRequest.getContent()); |
| | | request.setTemplateId("2431012165299"); |
| | | SmsResult smsResult = smsService.saveSendResult(request, list.size()); |
| | | // 遍历 |
| | | for (String phone : list) { |
| | | DynSMSSendRequest dynSMSSendRequest = new DynSMSSendRequest(); |
| | | dynSMSSendRequest.setTemplateId("2431012165299"); |
| | | dynSMSSendRequest.setDynData(new String[][]{{"手机号码", "标题"}, {phone, smsRequest.getContent()}}); |
| | | // 手机号校验 |
| | | if(validator(phone)) { |
| | | // 发送邮件短信 |
| | | ComResult<DynSMSSendDataResult> resultComResult = SmsUtils.dynSendMethod(dynSMSSendRequest); |
| | | // 记录保存 |
| | | if (null != smsResult) { |
| | | SMSSendRequest smsSendRequest = new SMSSendRequest(); |
| | | smsSendRequest.setUserNumber(phone); |
| | | smsSendRequest.setMessageContent(smsRequest.getContent()); |
| | | smsSendRequest.setTemplateId(dynSMSSendRequest.getTemplateId()); |
| | | // 记录发送记录操作 |
| | | smsService.saveSendRecord(smsSendRequest, resultComResult.getCode(),resultComResult.getMsg(),smsResult.getId()); |
| | | } |
| | | }else { |
| | | // 手机号有误记录 |
| | | // 记录保存 |
| | | SMSSendRequest smsSendRequest = new SMSSendRequest(); |
| | | smsSendRequest.setUserNumber(phone); |
| | | smsSendRequest.setMessageContent(smsRequest.getContent()); |
| | | smsSendRequest.setTemplateId(dynSMSSendRequest.getTemplateId()); |
| | | // 记录发送记录操作 |
| | | smsService.saveSendRecord(smsSendRequest, 400,"手机号错误未发送...",null); |
| | | } |
| | | } |
| | | return R.status(true); |
| | | } |
| | | |
| | | /** |
| | | * 发送 xx 变量模板短信 |
| | | * @param smsRequest 发送对象 |
| | | * @return |
| | | */ |
| | | @PostMapping("/sendXXMsg") |
| | | public R sendXXMsg(@RequestBody SmsRequestTemplate smsRequest){ |
| | | return R.data(smsService.sendXXMsg(smsRequest.getSmsRequest(),smsRequest.getPhoneNumbers())); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 发送 具名 变量模板短信 |
| | | * @param smsRequest 发送对象 |
| | | * @return |
| | | */ |
| | | @PostMapping("/sendSignMsg") |
| | | public R sendSignMsg(@RequestBody SmsRequestTemplate smsRequest){ |
| | | return R.data(smsService.sendSignMsg(smsRequest)); |
| | | } |
| | | } |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/controller/SmsRecordController.java |
| | |
| | | package cn.gistack.sm.sms.controller; |
| | | package cn.gistack.alerts.sms.controller; |
| | | |
| | | import cn.gistack.sm.sms.entity.SmsRecord; |
| | | import cn.gistack.sm.sms.service.ISmsRecordService; |
| | | import cn.gistack.sm.sms.vo.SmsRecordVO; |
| | | import cn.gistack.alerts.sms.entity.SmsRecord; |
| | | import cn.gistack.alerts.sms.service.ISmsRecordService; |
| | | import cn.gistack.alerts.sms.vo.SmsRecordVO; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | |
| | | import org.springblade.core.mp.support.Query; |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.Arrays; |
| | | |
| | | /** |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/controller/SmsResultController.java |
| | |
| | | package cn.gistack.sm.sms.controller; |
| | | package cn.gistack.alerts.sms.controller; |
| | | |
| | | import cn.gistack.sm.sms.entity.SmsResult; |
| | | import cn.gistack.sm.sms.service.ISmsResultService; |
| | | import cn.gistack.sm.sms.vo.SmsResultVO; |
| | | import cn.gistack.alerts.sms.entity.SmsResult; |
| | | import cn.gistack.alerts.sms.service.ISmsResultService; |
| | | import cn.gistack.alerts.sms.vo.SmsResultVO; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/controller/SmsTemplateController.java |
| | |
| | | package cn.gistack.sm.sms.controller; |
| | | package cn.gistack.alerts.sms.controller; |
| | | |
| | | import cn.gistack.sm.sms.entity.SmsTemplate; |
| | | import cn.gistack.sm.sms.service.ISmsTemplateService; |
| | | import cn.gistack.sm.sms.vo.SmsTemplateVO; |
| | | import cn.gistack.alerts.sms.entity.SmsTemplate; |
| | | import cn.gistack.alerts.sms.service.ISmsTemplateService; |
| | | import cn.gistack.alerts.sms.vo.SmsTemplateVO; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| New file |
| | |
| | | package cn.gistack.alerts.sms.feign; |
| | | |
| | | import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendRequest; |
| | | import cn.gistack.alerts.sms.entity.SmsResult; |
| | | import cn.gistack.alerts.sms.service.SmsService; |
| | | import lombok.AllArgsConstructor; |
| | | import org.springblade.core.tenant.annotation.NonDS; |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | import springfox.documentation.annotations.ApiIgnore; |
| | | |
| | | /** |
| | | * 短信发送记录 |
| | | * @author zhongrj |
| | | * @date 2023-06-02 |
| | | */ |
| | | @NonDS |
| | | @ApiIgnore |
| | | @RestController |
| | | @AllArgsConstructor |
| | | public class SmsRecordClient implements ISmsRecordClient { |
| | | |
| | | private final SmsService smsService; |
| | | |
| | | /** |
| | | * 短信记录发送保存 |
| | | * @param userNumber |
| | | * @param messageContent |
| | | * @param templateId |
| | | * @param code |
| | | * @param msg |
| | | * @param number |
| | | */ |
| | | @Override |
| | | @GetMapping(SAVE_SMS_RECORD) |
| | | public void saveSmsRecord(String userNumber, |
| | | String messageContent, |
| | | String templateId, |
| | | Integer code, |
| | | String msg, |
| | | Integer number) { |
| | | SMSSendRequest request = new SMSSendRequest(); |
| | | request.setUserNumber(userNumber); |
| | | request.setTemplateId(templateId); |
| | | request.setMessageContent(messageContent); |
| | | // 记录发送记录操作 |
| | | SmsResult smsResult = smsService.saveSendResult(request, number); |
| | | if (null != smsResult){ |
| | | smsService.saveSendRecord(request, code,msg,smsResult.getId()); |
| | | } |
| | | } |
| | | } |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/mapper/SmsRecordMapper.java |
| | |
| | | package cn.gistack.sm.sms.mapper; |
| | | package cn.gistack.alerts.sms.mapper; |
| | | |
| | | import cn.gistack.sm.sms.entity.SmsRecord; |
| | | import cn.gistack.sm.sms.vo.SmsRecordVO; |
| | | import cn.gistack.alerts.sms.entity.SmsRecord; |
| | | import cn.gistack.alerts.sms.vo.SmsRecordVO; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import org.apache.ibatis.annotations.Param; |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/mapper/SmsRecordMapper.xml |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="cn.gistack.sm.sms.mapper.SmsRecordMapper"> |
| | | <mapper namespace="cn.gistack.alerts.sms.mapper.SmsRecordMapper"> |
| | | |
| | | <!--自定义分页列表查询--> |
| | | <select id="selectSmsRecordPage" resultType="cn.gistack.sm.sms.vo.SmsRecordVO"> |
| | | <select id="selectSmsRecordPage" resultType="cn.gistack.alerts.sms.vo.SmsRecordVO"> |
| | | select * from sm_sms_record where 1=1 and is_deleted = 0 |
| | | <if test="smsRecord.phone!=null and smsRecord.phone!=''"> |
| | | and phone like concat(concat('%',#{smsRecord.phone}),'%') |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/mapper/SmsResultMapper.java |
| | |
| | | package cn.gistack.sm.sms.mapper; |
| | | package cn.gistack.alerts.sms.mapper; |
| | | |
| | | import cn.gistack.sm.sms.entity.SmsResult; |
| | | import cn.gistack.sm.sms.vo.SmsResultVO; |
| | | import cn.gistack.alerts.sms.entity.SmsResult; |
| | | import cn.gistack.alerts.sms.vo.SmsResultVO; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/mapper/SmsResultMapper.xml |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="cn.gistack.sm.sms.mapper.SmsResultMapper"> |
| | | <mapper namespace="cn.gistack.alerts.sms.mapper.SmsResultMapper"> |
| | | |
| | | <!--自定义分页列表查询--> |
| | | <select id="selectSmsResultPage" resultType="cn.gistack.sm.sms.vo.SmsResultVO"> |
| | | <select id="selectSmsResultPage" resultType="cn.gistack.alerts.sms.vo.SmsResultVO"> |
| | | select * from sm_sms_result where 1=1 and is_deleted = 0 |
| | | order by id desc |
| | | </select> |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/mapper/SmsTemplateMapper.java |
| | |
| | | package cn.gistack.sm.sms.mapper; |
| | | package cn.gistack.alerts.sms.mapper; |
| | | |
| | | import cn.gistack.sm.sms.entity.SmsTemplate; |
| | | import cn.gistack.sm.sms.vo.SmsTemplateVO; |
| | | import cn.gistack.alerts.sms.entity.SmsTemplate; |
| | | import cn.gistack.alerts.sms.vo.SmsTemplateVO; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import org.apache.ibatis.annotations.Param; |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/mapper/SmsTemplateMapper.xml |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="cn.gistack.sm.sms.mapper.SmsTemplateMapper"> |
| | | <mapper namespace="cn.gistack.alerts.sms.mapper.SmsTemplateMapper"> |
| | | |
| | | <!--自定义列表查询--> |
| | | <select id="selectSmsTemplatePage" resultType="cn.gistack.sm.sms.vo.SmsTemplateVO"> |
| | | <select id="selectSmsTemplatePage" resultType="cn.gistack.alerts.sms.vo.SmsTemplateVO"> |
| | | select * from sm_sms_template where is_deleted = 0 |
| | | <if test="smsTemplate.templateName!=null and smsTemplate.templateName!=''"> |
| | | and template_name like concat(concat('%',#{smsTemplate.templateName}),'%') |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/service/ISmsRecordService.java |
| | |
| | | package cn.gistack.sm.sms.service; |
| | | package cn.gistack.alerts.sms.service; |
| | | |
| | | import cn.gistack.sm.sms.entity.SmsRecord; |
| | | import cn.gistack.sm.sms.vo.SmsRecordVO; |
| | | import cn.gistack.alerts.sms.entity.SmsRecord; |
| | | import cn.gistack.alerts.sms.vo.SmsRecordVO; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import org.springblade.core.mp.base.BaseService; |
| | | |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/service/ISmsResultService.java |
| | |
| | | package cn.gistack.sm.sms.service; |
| | | package cn.gistack.alerts.sms.service; |
| | | |
| | | import cn.gistack.sm.sms.entity.SmsResult; |
| | | import cn.gistack.sm.sms.vo.SmsResultVO; |
| | | import cn.gistack.alerts.sms.entity.SmsResult; |
| | | import cn.gistack.alerts.sms.vo.SmsResultVO; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import org.springblade.core.mp.base.BaseService; |
| | | |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/service/ISmsTemplateService.java |
| | |
| | | package cn.gistack.sm.sms.service; |
| | | package cn.gistack.alerts.sms.service; |
| | | |
| | | import cn.gistack.sm.sms.entity.SmsTemplate; |
| | | import cn.gistack.sm.sms.vo.SmsTemplateVO; |
| | | import cn.gistack.alerts.sms.entity.SmsTemplate; |
| | | import cn.gistack.alerts.sms.vo.SmsTemplateVO; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import org.springblade.core.mp.base.BaseService; |
| | | |
| New file |
| | |
| | | package cn.gistack.alerts.sms.service; |
| | | |
| | | import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendRequest; |
| | | import cn.gistack.alerts.sms.entity.SmsRecord; |
| | | import cn.gistack.alerts.sms.entity.SmsResult; |
| | | import cn.gistack.alerts.sms.vo.SmsRequestTemplate; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 短信发送服务接口 |
| | | * @author zhongrj |
| | | * @date 2023-05-30 |
| | | */ |
| | | public interface SmsService { |
| | | |
| | | /** |
| | | * 发送 xx 变量模板短信 |
| | | * @param phoneNumbers 手机号集合 |
| | | * @param request 内容对象 |
| | | * @return |
| | | */ |
| | | Object sendXXMsg(SMSSendRequest request, |
| | | List<String> phoneNumbers); |
| | | |
| | | /** |
| | | * 发送 具名 变量模板短信 |
| | | * @param smsRequestTemplate |
| | | * @return |
| | | */ |
| | | Object sendSignMsg(SmsRequestTemplate smsRequestTemplate); |
| | | |
| | | /** |
| | | * 保存短信发送结果 |
| | | * @param request |
| | | * @param number |
| | | * @return |
| | | */ |
| | | SmsResult saveSendResult(SMSSendRequest request, Integer number); |
| | | |
| | | /** |
| | | * 短信发送记录保存 |
| | | * @param request |
| | | * @param code |
| | | * @param sendMsg |
| | | * @param resultId |
| | | * @return |
| | | */ |
| | | SmsRecord saveSendRecord(SMSSendRequest request,Integer code, String sendMsg, Long resultId); |
| | | } |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/service/impl/SmsRecordServiceImpl.java |
| | |
| | | package cn.gistack.sm.sms.service.impl; |
| | | package cn.gistack.alerts.sms.service.impl; |
| | | |
| | | import cn.gistack.sm.sms.entity.SmsRecord; |
| | | import cn.gistack.sm.sms.mapper.SmsRecordMapper; |
| | | import cn.gistack.sm.sms.service.ISmsRecordService; |
| | | import cn.gistack.sm.sms.vo.SmsRecordVO; |
| | | import cn.gistack.alerts.sms.entity.SmsRecord; |
| | | import cn.gistack.alerts.sms.mapper.SmsRecordMapper; |
| | | import cn.gistack.alerts.sms.service.ISmsRecordService; |
| | | import cn.gistack.alerts.sms.vo.SmsRecordVO; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import org.springblade.core.mp.base.BaseServiceImpl; |
| | | import org.springframework.stereotype.Service; |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/service/impl/SmsResultServiceImpl.java |
| | |
| | | package cn.gistack.sm.sms.service.impl; |
| | | package cn.gistack.alerts.sms.service.impl; |
| | | |
| | | import cn.gistack.sm.sms.entity.SmsResult; |
| | | import cn.gistack.sm.sms.mapper.SmsResultMapper; |
| | | import cn.gistack.sm.sms.service.ISmsResultService; |
| | | import cn.gistack.sm.sms.vo.SmsResultVO; |
| | | import cn.gistack.alerts.sms.entity.SmsResult; |
| | | import cn.gistack.alerts.sms.mapper.SmsResultMapper; |
| | | import cn.gistack.alerts.sms.service.ISmsResultService; |
| | | import cn.gistack.alerts.sms.vo.SmsResultVO; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import org.springblade.core.mp.base.BaseServiceImpl; |
| | | import org.springframework.stereotype.Service; |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/service/impl/SmsServiceImpl.java |
| | |
| | | package cn.gistack.sm.sms.service.impl; |
| | | package cn.gistack.alerts.sms.service.impl; |
| | | |
| | | import cn.com.flaginfo.sdk.cmc.api.result.ComResult; |
| | | import cn.com.flaginfo.sdk.cmc.api.sms.dynsend.DynSMSSendDataResult; |
| | | import cn.com.flaginfo.sdk.cmc.api.sms.dynsend.DynSMSSendRequest; |
| | | import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendDataResult; |
| | | import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendRequest; |
| | | import cn.gistack.sm.alarmRule.entity.AlarmRecordDetail; |
| | | import cn.gistack.sm.alarmRule.service.AlarmRecordDetailService; |
| | | import cn.gistack.sm.sms.entity.SmsRecord; |
| | | import cn.gistack.sm.sms.entity.SmsResult; |
| | | import cn.gistack.sm.sms.entity.SmsTemplate; |
| | | import cn.gistack.sm.sms.service.ISmsRecordService; |
| | | import cn.gistack.sm.sms.service.ISmsResultService; |
| | | import cn.gistack.sm.sms.service.SmsService; |
| | | import cn.gistack.sm.sms.util.SmsUtils; |
| | | import cn.gistack.sm.sms.vo.SmsRequestTemplate; |
| | | import cn.gistack.alerts.alarmRule.entity.AlarmRecordDetail; |
| | | import cn.gistack.alerts.alarmRule.service.AlarmRecordDetailService; |
| | | import cn.gistack.alerts.sms.entity.SmsRecord; |
| | | import cn.gistack.alerts.sms.entity.SmsResult; |
| | | import cn.gistack.alerts.sms.entity.SmsTemplate; |
| | | import cn.gistack.alerts.sms.service.ISmsRecordService; |
| | | import cn.gistack.alerts.sms.service.ISmsResultService; |
| | | import cn.gistack.alerts.sms.service.SmsService; |
| | | import cn.gistack.alerts.sms.util.SmsUtils; |
| | | import cn.gistack.alerts.sms.vo.SmsRequestTemplate; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | |
| | | ComResult<SMSSendDataResult> result = SmsUtils.sendMsg(request); |
| | | if(null != smsResult) { |
| | | // 保存记录 |
| | | saveSmsRecord(request, result.getCode(), result.getMsg(), smsResult.getId()); |
| | | saveSendRecord(request, result.getCode(), result.getMsg(), smsResult.getId()); |
| | | } |
| | | list.add(result); |
| | | } |
| | |
| | | // 设置内容 |
| | | request.setMessageContent(format); |
| | | // 保存记录 |
| | | smsRecord = saveSmsRecord(request, resultComResult.getCode(), resultComResult.getMsg(), smsResult.getId()); |
| | | smsRecord = saveSendRecord(request, resultComResult.getCode(), resultComResult.getMsg(), smsResult.getId()); |
| | | if (null != smsRecord){ |
| | | alarmRecordDetail.setAlarmContent(format); |
| | | alarmRecordDetail.setSendRecordId(smsRecord.getId()); |
| | |
| | | SmsRecord smsRecord = new SmsRecord(); |
| | | if (null != smsResult){ |
| | | // 保存记录 |
| | | smsRecord = saveSmsRecord(request, resultComResult.getCode(), resultComResult.getMsg(), smsResult.getId()); |
| | | smsRecord = saveSendRecord(request, resultComResult.getCode(), resultComResult.getMsg(), smsResult.getId()); |
| | | } |
| | | Map<String, Object> map = new HashMap<>(2); |
| | | map.put("smsRecord",smsRecord); |
| | |
| | | return map; |
| | | } |
| | | |
| | | /** |
| | | * 保存发送短信记录信息 |
| | | * @param request |
| | | * @param code 响应code |
| | | * @param msg 响应消息 |
| | | * @param resultId |
| | | */ |
| | | private SmsRecord saveSmsRecord(SMSSendRequest request,Integer code,String msg, Long resultId) { |
| | | // 在保存明细 |
| | | SmsRecord smsRecord = new SmsRecord(); |
| | | smsRecord.setTel(request.getUserNumber()); |
| | | smsRecord.setContent(request.getMessageContent()); |
| | | smsRecord.setTemplateId(request.getTemplateId()); |
| | | smsRecord.setResultId(resultId); |
| | | smsRecord.setResponseStatus(code.toString()); |
| | | smsRecord.setResponseMsg(msg); |
| | | //插入记录 |
| | | smsRecordService.save(smsRecord); |
| | | // 返回 |
| | | return smsRecord; |
| | | } |
| | | |
| | | /** |
| | | * 发送记录保存 |
| | | * @param request 发送信息 |
| | | * @param number 号码个数 |
| | | */ |
| | | private SmsResult saveSendResult(SMSSendRequest request,Integer number) { |
| | | @Override |
| | | public SmsResult saveSendResult(SMSSendRequest request,Integer number) { |
| | | // 先保存结果表 |
| | | SmsResult smsResult = new SmsResult(); |
| | | smsResult.setTemplateId(request.getTemplateId()); |
| | |
| | | // 返回 |
| | | return null; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 保存发送短信记录信息 |
| | | * @param request |
| | | * @param code 响应code |
| | | * @param sendMsg 响应消息 |
| | | * @param resultId |
| | | */ |
| | | @Override |
| | | public SmsRecord saveSendRecord(SMSSendRequest request, Integer code, String sendMsg, Long resultId) { |
| | | // 在保存明细 |
| | | SmsRecord smsRecord = new SmsRecord(); |
| | | smsRecord.setTel(request.getUserNumber()); |
| | | smsRecord.setContent(request.getMessageContent()); |
| | | smsRecord.setTemplateId(request.getTemplateId()); |
| | | smsRecord.setResultId(resultId); |
| | | smsRecord.setResponseStatus(code.toString()); |
| | | smsRecord.setResponseMsg(sendMsg); |
| | | //插入记录 |
| | | smsRecordService.save(smsRecord); |
| | | // 返回 |
| | | return smsRecord; |
| | | } |
| | | } |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/service/impl/SmsTemplateServiceImpl.java |
| | |
| | | package cn.gistack.sm.sms.service.impl; |
| | | package cn.gistack.alerts.sms.service.impl; |
| | | |
| | | import cn.gistack.sm.sms.entity.SmsTemplate; |
| | | import cn.gistack.sm.sms.mapper.SmsTemplateMapper; |
| | | import cn.gistack.sm.sms.service.ISmsTemplateService; |
| | | import cn.gistack.sm.sms.vo.SmsTemplateVO; |
| | | import cn.gistack.alerts.sms.entity.SmsTemplate; |
| | | import cn.gistack.alerts.sms.mapper.SmsTemplateMapper; |
| | | import cn.gistack.alerts.sms.service.ISmsTemplateService; |
| | | import cn.gistack.alerts.sms.vo.SmsTemplateVO; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import org.springblade.core.mp.base.BaseServiceImpl; |
| | | import org.springframework.stereotype.Service; |
| New file |
| | |
| | | package cn.gistack.alerts.sms.util; |
| | | |
| | | import cn.com.flaginfo.sdk.cmc.api.ApiProvider; |
| | | import cn.com.flaginfo.sdk.cmc.api.request.ApiConfig; |
| | | import cn.com.flaginfo.sdk.cmc.api.result.ComResult; |
| | | import cn.com.flaginfo.sdk.cmc.api.sms.dynsend.DynSMSAPI; |
| | | import cn.com.flaginfo.sdk.cmc.api.sms.dynsend.DynSMSSendDataResult; |
| | | import cn.com.flaginfo.sdk.cmc.api.sms.dynsend.DynSMSSendRequest; |
| | | import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSApi; |
| | | import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendDataResult; |
| | | import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendRequest; |
| | | import cn.com.flaginfo.sdk.cmc.common.ApiEnum; |
| | | import cn.gistack.common.constant.SmsConstant; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.Date; |
| | | import java.util.Random; |
| | | |
| | | import static cn.gistack.common.constant.SmsConstant.*; |
| | | |
| | | /** |
| | | * 短信发送工具类 |
| | | * @author zhongrj |
| | | * @date 2023-05-30 |
| | | */ |
| | | @Component |
| | | public class SmsUtils { |
| | | |
| | | /** |
| | | * 固定内容发送 |
| | | */ |
| | | public static ComResult<SMSSendDataResult> sendMsg(SMSSendRequest sendRequest) { |
| | | ApiConfig apiConfig = new ApiConfig(SpCode, AppKey, AppSecret); |
| | | ApiProvider provider = ApiProvider.getInstance(apiConfig); |
| | | //请求接口 |
| | | SMSApi api = (SMSApi) provider.getApi(ApiEnum.SENDSMS); |
| | | api.setRequestUrl(SmsConstant.HOST + SmsConstant.sendUrl); |
| | | //请求参数 |
| | | sendRequest.setSerialNumber(new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date())); |
| | | ComResult<SMSSendDataResult> request = api.request(sendRequest); |
| | | // 返回 |
| | | return request; |
| | | } |
| | | |
| | | /** |
| | | * 获取随机字符串 |
| | | * @return |
| | | */ |
| | | public static String getRandNumber() { |
| | | Random random = new Random(); |
| | | //把随机生成的数字转成字符串 |
| | | String str = String.valueOf(random.nextInt(9)); |
| | | for (int i = 0; i < 5; i++) { |
| | | str += random.nextInt(9); |
| | | } |
| | | return str; |
| | | } |
| | | |
| | | /** |
| | | * 动态短信内容批量发送 |
| | | */ |
| | | public static ComResult<DynSMSSendDataResult> dynSendMethod(DynSMSSendRequest sendRequest) { |
| | | ApiConfig apiConfig = new ApiConfig(SpCode, AppKey, AppSecret); |
| | | ApiProvider provider = ApiProvider.getInstance(apiConfig); |
| | | //请求接口 |
| | | DynSMSAPI api = (DynSMSAPI) provider.getApi(ApiEnum.SENDDYNSMS); |
| | | api.setRequestUrl(SmsConstant.HOST + SmsConstant.sendVarUrl); |
| | | //请求参数 |
| | | sendRequest.setSerialNumber(new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date())); |
| | | ComResult<DynSMSSendDataResult> result = api.request(sendRequest); |
| | | // 返回 |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | | * 状态报告 |
| | | */ |
| | | // public void testReportMethod() { |
| | | // //请求接口 |
| | | // SMSReportAPI api = (SMSReportAPI) provider.getApi(ApiEnum.REPORTSMS); |
| | | // api.setRequestUrl(SmsConstant.HOST + "/info/sms/report"); |
| | | // //请求 |
| | | // ComResult<List<SMSReportResult>> result = api.request(new SMSReportRequest()); |
| | | // List<SMSReportResult> data = result.getData(); |
| | | // if (data.size() > 0) { |
| | | // System.out.println(data.get(0).getResult()); |
| | | // } |
| | | // System.out.println(JSON.toJSONString(data)); |
| | | // System.out.println(JSON.toJSONString(result)); |
| | | // |
| | | // } |
| | | |
| | | /** |
| | | * 上行回复查询 |
| | | */ |
| | | // public void testReplyMethod() { |
| | | // //请求接口 |
| | | // SMSReplyAPI api = (SMSReplyAPI) provider.getApi(ApiEnum.REPLYSMS); |
| | | // api.setRequestUrl(SmsConstant.HOST + "/info/sms/reply/query"); |
| | | // SMSReplyRequest smsReplyRequest = new SMSReplyRequest(); |
| | | // //请求 |
| | | // ComResult<SMSReplyDataResult> result = api.request(smsReplyRequest); |
| | | // System.out.println(result.getData().getMaxId()); |
| | | // if (result.getData().getApiSmsReplyBoList() != null && result.getData().getApiSmsReplyBoList().size() > 0) { |
| | | // System.out.println(result.getData().getApiSmsReplyBoList().get(0).getContent()); |
| | | // } |
| | | // System.out.println(JSON.toJSONString(result)); |
| | | // } |
| | | |
| | | /** |
| | | * 上行回复查询数据收到确认 |
| | | */ |
| | | // public void testReplyConfirmMethod() { |
| | | // //请求接口 |
| | | // SMSReplyConfirmAPI api = (SMSReplyConfirmAPI) provider.getApi(ApiEnum.REPLYSMSCONFIRM); |
| | | // //请求Url |
| | | // SMSReplyConfirmRequest req = new SMSReplyConfirmRequest(); |
| | | // api.setRequestUrl(SmsConstant.HOST + "/info/sms/reply/confirm"); |
| | | // req.setMaxId("10110572149"); |
| | | // ComResult request = api.request(req); |
| | | // System.out.println(request.isSucc()); |
| | | // System.out.println(JSON.toJSONString(request)); |
| | | // } |
| | | } |
| File was renamed from skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sms/vo/SmsRequestTemplate.java |
| | |
| | | package cn.gistack.sm.sms.vo; |
| | | package cn.gistack.alerts.sms.vo; |
| | | |
| | | import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendRequest; |
| | | import cn.gistack.sm.notice.vo.PersonVO; |
| | | import cn.gistack.sm.sms.entity.SmsTemplate; |
| | | import cn.gistack.alerts.sms.entity.SmsTemplate; |
| | | import cn.gistack.sm.sjztmd.vo.PersonVO; |
| | | import lombok.Data; |
| | | import java.io.Serializable; |
| | | import java.util.List; |
| New file |
| | |
| | | #服务器端口 |
| | | server: |
| | | port: 8111 |
| | | |
| | | #数据源配置 |
| | | #spring: |
| | | # datasource: |
| | | # url: ${blade.datasource.dev.url} |
| | | # username: ${blade.datasource.dev.username} |
| | | # password: ${blade.datasource.dev.password} |
| | | |
| | | #多数据源配置 |
| | | spring: |
| | | #排除DruidDataSourceAutoConfigure |
| | | autoconfigure: |
| | | exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure |
| | | datasource: |
| | | dynamic: |
| | | #设置默认的数据源或者数据源组,默认值即为master |
| | | primary: master |
| | | datasource: |
| | | ## 业务默认数据源 |
| | | master: |
| | | url: ${blade.datasource.dev.url} |
| | | username: ${blade.datasource.dev.username} |
| | | password: ${blade.datasource.dev.password} |
| | | ##中台数据源 |
| | | zt: |
| | | url: ${blade.datasource.dev.zt.url} |
| | | username: ${blade.datasource.dev.zt.username} |
| | | password: ${blade.datasource.dev.zt.password} |
| | | # 智能外呼数据库 |
| | | ztznwh: |
| | | url: ${blade.datasource.dev.ztznwh.url} |
| | | username: ${blade.datasource.dev.ztznwh.username} |
| | | password: ${blade.datasource.dev.ztznwh.password} |
| | | ## 定时器数据源 |
| | | xxljob: |
| | | url: ${blade.datasource.dev.xxljob.url} |
| | | username: ${blade.datasource.dev.xxljob.username} |
| | | password: ${blade.datasource.dev.xxljob.password} |
| | | main: |
| | | allow-circular-references: true |
| New file |
| | |
| | | #服务器端口 |
| | | server: |
| | | port: 8110 |
| | | |
| | | #数据源配置 |
| | | #spring: |
| | | # datasource: |
| | | # url: ${blade.datasource.prod.url} |
| | | # username: ${blade.datasource.prod.username} |
| | | # password: ${blade.datasource.prod.password} |
| | | |
| | | #多数据源配置 |
| | | spring: |
| | | #排除DruidDataSourceAutoConfigure |
| | | autoconfigure: |
| | | exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure |
| | | datasource: |
| | | dynamic: |
| | | #设置默认的数据源或者数据源组,默认值即为master |
| | | primary: master |
| | | datasource: |
| | | master: |
| | | url: ${blade.datasource.prod.url} |
| | | username: ${blade.datasource.prod.username} |
| | | password: ${blade.datasource.prod.password} |
| | | zt: |
| | | url: ${blade.datasource.prod.zt.url} |
| | | username: ${blade.datasource.prod.zt.username} |
| | | password: ${blade.datasource.prod.zt.password} |
| | | # 智能外呼数据库 |
| | | ztznwh: |
| | | url: ${blade.datasource.prod.ztznwh.url} |
| | | username: ${blade.datasource.prod.ztznwh.username} |
| | | password: ${blade.datasource.prod.ztznwh.password} |
| | | ## 定时器数据源 |
| | | xxljob: |
| | | url: ${blade.datasource.prod.xxljob.url} |
| | | username: ${blade.datasource.prod.xxljob.username} |
| | | password: ${blade.datasource.prod.xxljob.password} |
| | | main: |
| | | allow-circular-references: true |
| | |
| | | <artifactId>skjcmanager-user-api</artifactId> |
| | | <version>3.0.1.RELEASE</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>cn.gistack</groupId> |
| | | <artifactId>skjcmanager-alerts-api</artifactId> |
| | | <version>3.0.1.RELEASE</version> |
| | | </dependency> |
| | | <!--Job--> |
| | | <dependency> |
| | | <groupId>com.xuxueli</groupId> |
| | |
| | | import cn.gistack.sm.sjztmd.entity.AttAdBase; |
| | | import cn.gistack.sm.sjztmd.entity.AttResManagePerson; |
| | | import cn.gistack.sm.sjztmd.service.IAttAdBaseService; |
| | | import cn.gistack.sm.sjztmd.service.IAttResBaseService; |
| | | import cn.gistack.sm.sjztmd.service.IAttResManagePersonService; |
| | | import cn.gistack.sm.sjztmd.vo.PersonVO; |
| | | import jodd.util.StringUtil; |
| | | import lombok.AllArgsConstructor; |
| | | import org.springblade.core.mp.support.Condition; |
| | |
| | | import springfox.documentation.annotations.ApiIgnore; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | |
| | | private final IAttResManagePersonService attResManagePersonService; |
| | | private final IAttAdBaseService adBaseService; |
| | | private final IAttResBaseService attResBaseService; |
| | | |
| | | @Override |
| | | @GetMapping(QUERY_LIST_BY_PHONE) |
| | |
| | | |
| | | return R.data(null); |
| | | } |
| | | |
| | | /** |
| | | * 查询责任人相关信息 |
| | | * @param guid |
| | | * @param personList |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<PersonVO> getPersonListByResGuid(String guid, String personList) { |
| | | return attResManagePersonService.getPersonListByResGuid(guid, Arrays.asList(personList.split(","))); |
| | | } |
| | | |
| | | /** |
| | | * |
| | | * @param res_cd |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<PersonVO> getUserListByResGuid(String res_cd) { |
| | | return adBaseService.getPersonListByResGuid(res_cd); |
| | | } |
| | | } |
| | |
| | | package cn.gistack.sm.sjztmd.mapper; |
| | | |
| | | import cn.gistack.common.node.TreeNode; |
| | | import cn.gistack.sm.notice.vo.PersonVO; |
| | | import cn.gistack.sm.sjztmd.vo.PersonVO; |
| | | import cn.gistack.sm.sjztmd.entity.AttAdBase; |
| | | import cn.gistack.sm.sjztmd.vo.AttAdBaseVO; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | |
| | | </select> |
| | | |
| | | <!--根据水库编号查询除责任人之外的人员信息--> |
| | | <select id="getPersonListByResGuid" resultType="cn.gistack.sm.notice.vo.PersonVO"> |
| | | <select id="getPersonListByResGuid" resultType="cn.gistack.sm.sjztmd.vo.PersonVO"> |
| | | select bu.real_name,bu.phone,bd.ad_code from YWXT.blade_user bu left join YWXT.blade_dept bd on instr(bu.dept_id,bd.id)>0 and bd.is_deleted = 0 |
| | | where bu.is_deleted = 0 |
| | | and bd.ad_code in ( |
| | |
| | | package cn.gistack.sm.sjztmd.mapper; |
| | | |
| | | import cn.gistack.sm.notice.vo.PersonVO; |
| | | import cn.gistack.sm.sjztmd.entity.AttResManagePerson; |
| | | import cn.gistack.sm.sjztmd.entity.PatrolResponsiblePerson; |
| | | import cn.gistack.sm.sjztmd.vo.PersonVO; |
| | | import com.baomidou.dynamic.datasource.annotation.DS; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | |
| | | * @return |
| | | */ |
| | | @DS("zt") |
| | | List<PersonVO> getPersonListByResGuid(@Param("res_cd")String res_cd,@Param("list") List<String> personList); |
| | | List<PersonVO> getPersonListByResGuid(@Param("res_cd")String res_cd, @Param("list") List<String> personList); |
| | | } |
| | |
| | | </insert> |
| | | |
| | | <!--根据水库编号及责任人类型查询相关责任人信息--> |
| | | <select id="getPersonListByResGuid" resultType="cn.gistack.sm.notice.vo.PersonVO"> |
| | | <select id="getPersonListByResGuid" resultType="cn.gistack.sm.sjztmd.vo.PersonVO"> |
| | | select "user_name" as name,"user_phone" as phone |
| | | from "SJZT_MD"."att_res_manage_person" |
| | | where "res_guid" = #{res_cd} |
| | |
| | | package cn.gistack.sm.sjztmd.service; |
| | | |
| | | import cn.gistack.sm.notice.vo.PersonVO; |
| | | import cn.gistack.sm.sjztmd.entity.AttAdBase; |
| | | import cn.gistack.sm.sjztmd.vo.AttAdBaseVO; |
| | | import cn.gistack.sm.sjztmd.vo.PersonVO; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | |
| | | import java.util.List; |
| | |
| | | package cn.gistack.sm.sjztmd.service; |
| | | |
| | | import cn.gistack.sm.notice.vo.PersonVO; |
| | | import cn.gistack.sm.sjztmd.entity.AttResManagePerson; |
| | | import cn.gistack.sm.sjztmd.entity.PatrolResponsiblePerson; |
| | | import cn.gistack.sm.sjztmd.vo.PersonVO; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import org.springblade.core.tool.api.R; |
| | | |
| | |
| | | |
| | | import cn.gistack.common.node.TreeNode; |
| | | import cn.gistack.common.utils.NodeTreeUtil; |
| | | import cn.gistack.sm.notice.vo.PersonVO; |
| | | import cn.gistack.sm.sjztmd.vo.PersonVO; |
| | | import cn.gistack.sm.sjztmd.entity.AttAdBase; |
| | | import cn.gistack.sm.sjztmd.mapper.AttAdBaseMapper; |
| | | import cn.gistack.sm.sjztmd.service.IAttAdBaseService; |
| | |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Comparator; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | |
| | | package cn.gistack.sm.sjztmd.service.impl; |
| | | |
| | | import cn.gistack.sm.notice.vo.PersonVO; |
| | | import cn.gistack.sm.sjztmd.entity.AttResManagePerson; |
| | | import cn.gistack.sm.sjztmd.entity.PatrolResponsiblePerson; |
| | | import cn.gistack.sm.sjztmd.mapper.AttResManagePersonMapper; |
| | | import cn.gistack.sm.sjztmd.service.IAttResManagePersonService; |
| | | import cn.gistack.sm.sjztmd.vo.PersonVO; |
| | | import com.baomidou.dynamic.datasource.annotation.DS; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.springblade.core.tool.api.R; |
| | |
| | | package cn.gistack.sm.sms.controller; |
| | | |
| | | import cn.com.flaginfo.sdk.cmc.api.sms.dynsend.DynSMSSendRequest; |
| | | import cn.com.flaginfo.sdk.cmc.api.result.ComResult; |
| | | import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendDataResult; |
| | | import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendRequest; |
| | | import cn.gistack.sm.sms.entity.SmsRecord; |
| | | import cn.gistack.sm.sms.entity.SmsRequest; |
| | | import cn.gistack.sm.sms.entity.SmsResult; |
| | | import cn.gistack.sm.sms.service.ISmsRecordService; |
| | | import cn.gistack.sm.sms.service.ISmsResultService; |
| | | import cn.gistack.sm.sms.service.SmsService; |
| | | import cn.gistack.alerts.sms.feign.ISmsRecordClient; |
| | | import cn.gistack.sm.sms.util.SmsUtils; |
| | | import cn.gistack.sm.sms.vo.SmsRequestTemplate; |
| | | import cn.gistack.system.user.entity.User; |
| | | import cn.gistack.system.user.feign.IUserClient; |
| | | import com.alibaba.fastjson.JSON; |
| | |
| | | import org.springblade.core.redis.cache.BladeRedis; |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | import java.util.regex.Matcher; |
| | | import java.util.regex.Pattern; |
| | |
| | | @AllArgsConstructor |
| | | public class SmsController { |
| | | |
| | | private final ISmsRecordService smsRecordService; |
| | | |
| | | private final ISmsResultService smsResultService; |
| | | |
| | | private final SmsService smsService; |
| | | |
| | | private final BladeRedis bladeRedis; |
| | | |
| | | private final IUserClient userClient; |
| | | |
| | | @GetMapping("/test") |
| | | public void setRedis(){ |
| | | saveCodeForRedis("super_admin","123456"); |
| | | } |
| | | |
| | | /** |
| | | * 短信固定内容发送通用方法(仅支持 {xx} 模式的模板) |
| | | * request 必须包含手机号,模板id,拼接好的内容 |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @PostMapping("/sendFixedContentByXXModel") |
| | | public R sendFixedContentByXXModel(@RequestBody SMSSendRequest request){ |
| | | // 手机号码校验 |
| | | if(validatePhone(request.getUserNumber())) { |
| | | // 发送操作 |
| | | String sendMsg = JSON.toJSONString(SmsUtils.sendMsg(request)); |
| | | JSONObject jsonObject = JSON.parseObject(sendMsg); |
| | | // 记录发送记录操作 |
| | | SmsResult smsResult = saveSendResult(request, 1); |
| | | if (null != smsResult){ |
| | | saveSendRecord(request, sendMsg,smsResult.getId()); |
| | | } |
| | | // 返回发送信息 |
| | | return R.data(jsonObject); |
| | | } |
| | | // 返回发送信息 |
| | | return R.fail(400,"该手机号不存在!"); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 短信动态内容发送通用方法(仅支持 具名变量 {手机号码:11} 模式的模板) |
| | | * request 必须包含手机号,模板id,拼接好的内容 |
| | | * @param smsRequest |
| | | * @return |
| | | */ |
| | | @PostMapping("/sendFixedContentByNamedVariableModel") |
| | | public R sendFixedContentByNamedVariableModel(@RequestBody SmsRequest smsRequest){ |
| | | // 处理数据(可能是多个手机号情况) |
| | | List<String> list = Arrays.asList(smsRequest.getPhone().split(",")); |
| | | // 保存发送结果 |
| | | // 记录保存 |
| | | SMSSendRequest request = new SMSSendRequest(); |
| | | request.setMessageContent(smsRequest.getContent()); |
| | | request.setTemplateId(smsRequest.getTemplateId()); |
| | | SmsResult smsResult = saveSendResult(request, list.size()); |
| | | // 遍历 |
| | | for (String phone : list) { |
| | | DynSMSSendRequest dynSMSSendRequest = new DynSMSSendRequest(); |
| | | dynSMSSendRequest.setTemplateId(smsRequest.getTemplateId()); |
| | | dynSMSSendRequest.setDynData(smsRequest.getParams()); |
| | | // 手机号校验 |
| | | if(validator(phone)) { |
| | | // 发送邮件短信 |
| | | String dynSendMsg = JSON.toJSONString(SmsUtils.dynSendMethod(dynSMSSendRequest)); |
| | | // 记录保存 |
| | | if (null != smsResult) { |
| | | SMSSendRequest smsSendRequest = new SMSSendRequest(); |
| | | smsSendRequest.setUserNumber(phone); |
| | | smsSendRequest.setMessageContent(smsRequest.getContent()); |
| | | smsSendRequest.setTemplateId(dynSMSSendRequest.getTemplateId()); |
| | | // 记录发送记录操作 |
| | | saveSendRecord(smsSendRequest, dynSendMsg,smsResult.getId()); |
| | | } |
| | | }else { |
| | | // 手机号有误记录 |
| | | // 记录保存 |
| | | SMSSendRequest smsSendRequest = new SMSSendRequest(); |
| | | smsSendRequest.setUserNumber(phone); |
| | | smsSendRequest.setMessageContent(smsRequest.getContent()); |
| | | smsSendRequest.setTemplateId(dynSMSSendRequest.getTemplateId()); |
| | | // 记录发送记录操作 |
| | | saveSendRecord(smsSendRequest, "手机号错误未发送...",null); |
| | | } |
| | | } |
| | | return R.status(true); |
| | | } |
| | | private final ISmsRecordClient smsRecordClient; |
| | | |
| | | /** |
| | | * 发送登录验证码 |
| | |
| | | request.setMessageContent(content); |
| | | request.setTemplateId(templateId); |
| | | // 发送操作 |
| | | String sendMsg =JSON.toJSONString(SmsUtils.sendMsg(request)); |
| | | ComResult<SMSSendDataResult> resultComResult = SmsUtils.sendMsg(request); |
| | | String sendMsg =JSON.toJSONString(resultComResult); |
| | | JSONObject jsonObject = JSON.parseObject(sendMsg); |
| | | // 记录发送记录操作 |
| | | SmsResult smsResult = saveSendResult(request, 1); |
| | | if (null != smsResult){ |
| | | saveSendRecord(request, sendMsg,smsResult.getId()); |
| | | } |
| | | // 保存验证码到 redis |
| | | saveCodeForRedis(request.getUserNumber(), randNumber); |
| | | // 记录发送记录操作 |
| | | smsRecordClient.saveSmsRecord( |
| | | request.getUserNumber(), |
| | | request.getMessageContent(), |
| | | request.getTemplateId(), |
| | | resultComResult.getCode(), |
| | | resultComResult.getMsg(), |
| | | 1); |
| | | // 返回发送信息 |
| | | return R.data(jsonObject); |
| | | } |
| | |
| | | */ |
| | | private void saveCodeForRedis(String userNumber, String randNumber) { |
| | | bladeRedis.setEx(PHONE_KEY + userNumber,randNumber,5*60L); |
| | | } |
| | | |
| | | /** |
| | | * 发送记录保存 |
| | | * @param request 发送信息 |
| | | * @param sendMsg 响应数据 |
| | | * @param resultId 发送结果id |
| | | */ |
| | | private void saveSendRecord(SMSSendRequest request, String sendMsg,Long resultId) { |
| | | // 在保存明细 |
| | | SmsRecord smsRecord = new SmsRecord(); |
| | | smsRecord.setTel(request.getUserNumber()); |
| | | smsRecord.setContent(request.getMessageContent()); |
| | | smsRecord.setTemplateId(request.getTemplateId()); |
| | | smsRecord.setResContent(sendMsg); |
| | | smsRecord.setResultId(resultId); |
| | | // 解析 sendMsg |
| | | JSONObject jsonObject = JSON.parseObject(sendMsg); |
| | | smsRecord.setResponseStatus(jsonObject.getString("code")); |
| | | smsRecord.setResponseMsg(jsonObject.getString("msg")); |
| | | //插入记录 |
| | | smsRecordService.save(smsRecord); |
| | | } |
| | | |
| | | /** |
| | | * 发送记录保存 |
| | | * @param request 发送信息 |
| | | * @param number 号码个数 |
| | | */ |
| | | private SmsResult saveSendResult(SMSSendRequest request,Integer number) { |
| | | // 先保存结果表 |
| | | SmsResult smsResult = new SmsResult(); |
| | | smsResult.setTemplateId(request.getTemplateId()); |
| | | smsResult.setContent(request.getMessageContent()); |
| | | smsResult.setNumber(number); |
| | | //插入记录 |
| | | boolean save = smsResultService.save(smsResult); |
| | | if (save){ |
| | | return smsResult; |
| | | } |
| | | // 返回 |
| | | return null; |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 发送邮件提醒 |
| | | * @param smsRequest |
| | | * @return |
| | | */ |
| | | @PostMapping("/sendEmailMsg") |
| | | public R sendEmailMsg(@RequestBody SmsRequest smsRequest){ |
| | | // 处理数据(可能是多个手机号情况) |
| | | List<String> list = Arrays.asList(smsRequest.getPhone().split(",")); |
| | | // 保存发送结果 |
| | | // 记录保存 |
| | | SMSSendRequest request = new SMSSendRequest(); |
| | | request.setMessageContent(smsRequest.getContent()); |
| | | request.setTemplateId("2431012165299"); |
| | | SmsResult smsResult = saveSendResult(request, list.size()); |
| | | // 遍历 |
| | | for (String phone : list) { |
| | | DynSMSSendRequest dynSMSSendRequest = new DynSMSSendRequest(); |
| | | dynSMSSendRequest.setTemplateId("2431012165299"); |
| | | dynSMSSendRequest.setDynData(new String[][]{{"手机号码", "标题"}, {phone, smsRequest.getContent()}}); |
| | | // 手机号校验 |
| | | if(validator(phone)) { |
| | | // 发送邮件短信 |
| | | String dynSendMsg = JSON.toJSONString(SmsUtils.dynSendMethod(dynSMSSendRequest)); |
| | | // 记录保存 |
| | | if (null != smsResult) { |
| | | SMSSendRequest smsSendRequest = new SMSSendRequest(); |
| | | smsSendRequest.setUserNumber(phone); |
| | | smsSendRequest.setMessageContent(smsRequest.getContent()); |
| | | smsSendRequest.setTemplateId(dynSMSSendRequest.getTemplateId()); |
| | | // 记录发送记录操作 |
| | | saveSendRecord(smsSendRequest, dynSendMsg,smsResult.getId()); |
| | | } |
| | | }else { |
| | | // 手机号有误记录 |
| | | // 记录保存 |
| | | SMSSendRequest smsSendRequest = new SMSSendRequest(); |
| | | smsSendRequest.setUserNumber(phone); |
| | | smsSendRequest.setMessageContent(smsRequest.getContent()); |
| | | smsSendRequest.setTemplateId(dynSMSSendRequest.getTemplateId()); |
| | | // 记录发送记录操作 |
| | | saveSendRecord(smsSendRequest, "手机号错误未发送...",null); |
| | | } |
| | | } |
| | | return R.status(true); |
| | | } |
| | | |
| | | /** |
| | | * 发送 xx 变量模板短信 |
| | | * @param smsRequest 发送对象 |
| | | * @return |
| | | */ |
| | | @PostMapping("/sendXXMsg") |
| | | public R sendXXMsg(@RequestBody SmsRequestTemplate smsRequest){ |
| | | return R.data(smsService.sendXXMsg(smsRequest.getSmsRequest(),smsRequest.getPhoneNumbers())); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 发送 具名 变量模板短信 |
| | | * @param smsRequest 发送对象 |
| | | * @return |
| | | */ |
| | | @PostMapping("/sendSignMsg") |
| | | public R sendSignMsg(@RequestBody SmsRequestTemplate smsRequest){ |
| | | return R.data(smsService.sendSignMsg(smsRequest)); |
| | | } |
| | | } |
| | |
| | | import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendDataResult; |
| | | import cn.com.flaginfo.sdk.cmc.api.sms.send.SMSSendRequest; |
| | | import cn.com.flaginfo.sdk.cmc.common.ApiEnum; |
| | | import cn.gistack.sm.sms.constant.SmsConstant; |
| | | import cn.gistack.common.constant.SmsConstant; |
| | | import org.springframework.stereotype.Component; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.Date; |
| | | import java.util.Random; |
| | | import static cn.gistack.sm.sms.constant.SmsConstant.*; |
| | | |
| | | import static cn.gistack.common.constant.SmsConstant.*; |
| | | |
| | | /** |
| | | * 短信发送工具类 |