Commit d7030105d0e4680ab4b2dfb18a5f0750ba6c6f3c

Authored by 陶汉栋
2 parents fc1b678f 8e0ce284
Exists in master

Merge branch 'master' of http://git.shunzhi.net/taohd/mycloud

cloud/common/src/main/java/com/sincere/common/dto/smartCampus/BindPushDto.java
1 1 package com.sincere.common.dto.smartCampus;
2 2  
  3 +import java.util.Date;
  4 +
3 5 /**
4 6 * @author chen
5 7 * @version 1.0
... ... @@ -8,9 +10,10 @@ package com.sincere.common.dto.smartCampus;
8 10 public class BindPushDto {
9 11  
10 12 private int schoolId ;
  13 + private String schoolName ;
11 14 private int type ; // 0是企业号,1是钉钉
12   - private String beginDate ;
13   - private String endDate ;
  15 + private Date beginDate ;
  16 + private Date endDate ;
14 17 private int intervalDays ;
15 18 private String pushTime ;
16 19 private String msg ;
... ... @@ -23,6 +26,14 @@ public class BindPushDto {
23 26 this.schoolId = schoolId;
24 27 }
25 28  
  29 + public String getSchoolName() {
  30 + return schoolName;
  31 + }
  32 +
  33 + public void setSchoolName(String schoolName) {
  34 + this.schoolName = schoolName;
  35 + }
  36 +
26 37 public int getType() {
27 38 return type;
28 39 }
... ... @@ -31,19 +42,19 @@ public class BindPushDto {
31 42 this.type = type;
32 43 }
33 44  
34   - public String getBeginDate() {
  45 + public Date getBeginDate() {
35 46 return beginDate;
36 47 }
37 48  
38   - public void setBeginDate(String beginDate) {
  49 + public void setBeginDate(Date beginDate) {
39 50 this.beginDate = beginDate;
40 51 }
41 52  
42   - public String getEndDate() {
  53 + public Date getEndDate() {
43 54 return endDate;
44 55 }
45 56  
46   - public void setEndDate(String endDate) {
  57 + public void setEndDate(Date endDate) {
47 58 this.endDate = endDate;
48 59 }
49 60  
... ...
cloud/common/src/main/java/com/sincere/common/dto/smartCampus/ParentDto.java
... ... @@ -8,7 +8,6 @@ package com.sincere.common.dto.smartCampus;
8 8 public class ParentDto {
9 9  
10 10 private int schoolId ;
11   - private int parentId ;
12 11 private String mobile ;
13 12  
14 13 public int getSchoolId() {
... ... @@ -19,14 +18,6 @@ public class ParentDto {
19 18 this.schoolId = schoolId;
20 19 }
21 20  
22   - public int getParentId() {
23   - return parentId;
24   - }
25   -
26   - public void setParentId(int parentId) {
27   - this.parentId = parentId;
28   - }
29   -
30 21 public String getMobile() {
31 22 return mobile;
32 23 }
... ...
cloud/quartz/src/main/java/com/sincere/quartz/job/BindPushJob.java
... ... @@ -5,7 +5,11 @@ import com.sincere.common.dto.smartCampus.ParentDto;
5 5 import com.sincere.common.enums.PushTypeEnums;
6 6 import com.sincere.common.util.DateUtils;
7 7 import com.sincere.quartz.feign.ScFeign;
  8 +import com.sincere.quartz.mapper.SmsMapper;
  9 +import com.sincere.quartz.model.ShortMsg;
8 10 import org.apache.commons.lang3.StringUtils;
  11 +import org.slf4j.Logger;
  12 +import org.slf4j.LoggerFactory;
9 13 import org.springframework.beans.factory.annotation.Autowired;
10 14 import org.springframework.scheduling.annotation.Scheduled;
11 15 import org.springframework.stereotype.Service;
... ... @@ -21,26 +25,24 @@ import java.util.*;
21 25 @Service
22 26 public class BindPushJob {
23 27  
  28 + private Logger logger = LoggerFactory.getLogger(KQJob.class);
  29 +
  30 +
24 31 @Autowired
25 32 ScFeign scFeign;
26 33  
27   - private static String date ;
28   - private static List<BindPushDto> schoolList = new ArrayList<>();
29   - private static Map<Integer , String> intervalDaysMap = new HashMap<>();
  34 + @Autowired
  35 + SmsMapper smsMapper;
  36 +
  37 + private static Map<String , String> intervalDaysMap = new HashMap<>(); //redis 持久化 替换 可避免重启导致间隔的错误
30 38  
31 39 @Scheduled(cron = "0 0-59 * * * ? ")
32 40 public void bindPush(){
33 41 Date nowDate = new Date();
34   - String now = DateUtils.date2String(nowDate,DateUtils.format1) ;
35   - if(StringUtils.isBlank(date) || !date.equals(now)){
36   - initMap(now);
37   - }
  42 + List<BindPushDto> schoolList = scFeign.selectBindPushSchool();
38 43 for(BindPushDto school : schoolList){
39   - int i =DateUtils.string2Date(school.getBeginDate(),DateUtils.format1).compareTo(nowDate) ;
40   - int j = DateUtils.string2Date(school.getEndDate(),DateUtils.format1).compareTo(nowDate) ;
41   - if(DateUtils.string2Date(school.getBeginDate(),DateUtils.format1).compareTo(nowDate) <= 0
42   - && DateUtils.string2Date(school.getEndDate(),DateUtils.format1).compareTo(nowDate) >= 0){
43   - String lastDate = intervalDaysMap.get(school.getSchoolId());
  44 + if(school.getBeginDate().compareTo(nowDate) <= 0 && school.getEndDate().compareTo(nowDate) >= 0){
  45 + String lastDate = intervalDaysMap.get(school.getSchoolId()+"_"+school.getType());
44 46 if(StringUtils.isBlank(lastDate)){
45 47 //下发推送
46 48 bindPush(school,nowDate);
... ... @@ -57,33 +59,42 @@ public class BindPushJob {
57 59  
58 60 private void bindPush(BindPushDto bindPushDto , Date nowDate){
59 61 if(bindPushDto.getPushTime().equals(DateUtils.date2String(nowDate,DateUtils.format4))){
  62 + intervalDaysMap.put(bindPushDto.getSchoolId()+"_"+bindPushDto.getType(),DateUtils.date2String(nowDate,DateUtils.format1));
  63 + //未关注
60 64 List<ParentDto> unFollowList = scFeign.selectNotFollow(bindPushDto.getSchoolId());
  65 + logger.info(bindPushDto.getSchoolName()+"未关注人数"+unFollowList.size());
  66 + for(ParentDto parentDto : unFollowList){
  67 + sendMessage(parentDto,bindPushDto.getMsg());
  68 + }
  69 + //未绑定
61 70 List<ParentDto> unBindList =scFeign.selectNotBind(bindPushDto.getSchoolId(),getThirdType(bindPushDto.getType()));
62   -
63   - intervalDaysMap.put(bindPushDto.getSchoolId(),DateUtils.date2String(nowDate,DateUtils.format1));
  71 + logger.info(bindPushDto.getSchoolName()+"未绑定人数"+unBindList.size());
  72 + for(ParentDto parentDto : unBindList){
  73 + sendMessage(parentDto,bindPushDto.getMsg());
  74 + }
64 75 }
65 76 }
66 77  
67   - private void initMap(String now){
68   - date = now ;
69   - //schoolList = scFeign.selectBindPushSchool();
70   - BindPushDto bindPushDto = new BindPushDto();
71   - bindPushDto.setSchoolId(16);
72   - bindPushDto.setBeginDate("2019-12-04");
73   - bindPushDto.setEndDate("2019-12-30");
74   - bindPushDto.setIntervalDays(1);
75   - bindPushDto.setPushTime("11:04");
76   - bindPushDto.setType(0);
77   - bindPushDto.setMsg("");
78   - schoolList = new ArrayList<>();
79   - schoolList.add(bindPushDto);
  78 + private void sendMessage(ParentDto parentDto , String message){
  79 + //手机号为空
  80 + if(StringUtils.isNotBlank(parentDto.getMobile())){
  81 + String tableSuffix = DateUtils.date2String(new Date(), DateUtils.format);
  82 + ShortMsg shortMsg = new ShortMsg();
  83 + shortMsg.setTableName("smsNew"+tableSuffix);
  84 + shortMsg.setSchoolId(parentDto.getSchoolId());
  85 + shortMsg.setMobile(parentDto.getMobile());
  86 + shortMsg.setMsg(message);
  87 + //smsMapper.insertSMS(shortMsg);
  88 + logger.info("----学校Id---"+parentDto.getSchoolId() + "----手机号----"+parentDto.getMobile()+"---"+message);
  89 + }
80 90 }
81 91  
  92 + // 0是企业号,1是钉钉
82 93 private int getThirdType(int type){
83 94 if(type == 0){
84   - return PushTypeEnums.DING.getType() ;
85   - }else {
86 95 return PushTypeEnums.QIYEHAO.getType() ;
  96 + }else {
  97 + return PushTypeEnums.DING.getType() ;
87 98 }
88 99 }
89 100  
... ...
cloud/quartz/src/main/java/com/sincere/quartz/mapper/SmsMapper.java
1 1 package com.sincere.quartz.mapper;
2 2  
3 3 import com.sincere.quartz.model.DingSms;
  4 +import com.sincere.quartz.model.ShortMsg;
4 5 import com.sincere.quartz.model.WeChatSms;
5 6  
6 7 /**
... ... @@ -13,4 +14,6 @@ public interface SmsMapper {
13 14 int insertDing(DingSms dingSms);
14 15  
15 16 int insertWeChat(WeChatSms weChatSms);
  17 +
  18 + int insertSMS(ShortMsg shortMsg);
16 19 }
... ...
cloud/quartz/src/main/java/com/sincere/quartz/model/ShortMsg.java 0 → 100644
... ... @@ -0,0 +1,47 @@
  1 +package com.sincere.quartz.model;
  2 +
  3 +/**
  4 + * @author chen
  5 + * @version 1.0
  6 + * @date 2019/12/13 0013 13:54
  7 + */
  8 +public class ShortMsg {
  9 +
  10 + private String tableName ;
  11 +
  12 + private int schoolId ;
  13 + private String mobile ;
  14 + private String msg ;
  15 +
  16 + public String getTableName() {
  17 + return tableName;
  18 + }
  19 +
  20 + public void setTableName(String tableName) {
  21 + this.tableName = tableName;
  22 + }
  23 +
  24 + public int getSchoolId() {
  25 + return schoolId;
  26 + }
  27 +
  28 + public void setSchoolId(int schoolId) {
  29 + this.schoolId = schoolId;
  30 + }
  31 +
  32 + public String getMobile() {
  33 + return mobile;
  34 + }
  35 +
  36 + public void setMobile(String mobile) {
  37 + this.mobile = mobile;
  38 + }
  39 +
  40 + public String getMsg() {
  41 + return msg;
  42 + }
  43 +
  44 + public void setMsg(String msg) {
  45 + this.msg = msg;
  46 + }
  47 +}
... ...
cloud/quartz/src/main/resources/mapper/SmsMapper.xml
... ... @@ -11,4 +11,9 @@
11 11 insert into ${tableName} (SchoolID,MsgID,Guid,WapUrl,Status,intime,sendTime,SendUserName,ReceiveUserID,QiYeHaoUserId,AppID,Secret,tdtype,Remark)
12 12 values (#{schoolId},-1,#{msg},#{msgUrl},0,GETDATE(),GETDATE(),'智能校卫',#{receiveUserId},#{qiYeHaoUserId},#{appId},#{secret},#{tdType},#{name})
13 13 </insert>
  14 +
  15 + <insert id="insertSMS" parameterType="com.sincere.quartz.model.ShortMsg">
  16 + insert into ${tableName} (SchoolID,Mobile,Msg,tdtype,Status,IsNeedSend,SendTime,intime)
  17 + values (#{schoolId},#{mobile},#{msg},1,0,1,GETDATE(),GETDATE())
  18 + </insert>
14 19 </mapper>
... ...
cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/controller/RegisterPushController.java
... ... @@ -35,11 +35,6 @@ public class RegisterPushController {
35 35 return registerPushService.selectNotFollow(schoolId);
36 36 }
37 37  
38   - @RequestMapping(value = "selectFollow",method = RequestMethod.GET)
39   - List<ParentDto> selectFollow(@RequestParam("schoolId") int schoolId){
40   - return registerPushService.selectFollow(schoolId);
41   - }
42   -
43 38 @RequestMapping(value = "selectNotBind",method = RequestMethod.GET)
44 39 List<ParentDto> selectNotBind(@RequestParam("schoolId") int schoolId , @RequestParam("type") int type){
45 40 Map<String , Integer> map = new HashMap<>();
... ...
cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/mapper/RegisterPushMapper.java
... ... @@ -17,7 +17,5 @@ public interface RegisterPushMapper {
17 17  
18 18 List<ParentDto> selectNotFollow(int schoolId) ;
19 19  
20   - List<ParentDto> selectFollow(int schoolId) ;
21   -
22 20 List<ParentDto> selectNotBind(Map<String , Integer> map);
23 21 }
... ...
cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/RegisterPushService.java
... ... @@ -17,7 +17,5 @@ public interface RegisterPushService {
17 17  
18 18 List<ParentDto> selectNotFollow(int schoolId) ;
19 19  
20   - List<ParentDto> selectFollow(int schoolId) ;
21   -
22 20 List<ParentDto> selectNotBind(Map<String , Integer> map);
23 21 }
... ...
cloud/search_smartCampus/src/main/java/com/sincere/smartSearch/service/impl/RegisterPushServiceImpl.java
... ... @@ -32,11 +32,6 @@ public class RegisterPushServiceImpl implements RegisterPushService {
32 32 }
33 33  
34 34 @Override
35   - public List<ParentDto> selectFollow(int schoolId) {
36   - return registerPushMapper.selectFollow(schoolId);
37   - }
38   -
39   - @Override
40 35 public List<ParentDto> selectNotBind(Map<String, Integer> map) {
41 36 return registerPushMapper.selectNotBind(map);
42 37 }
... ...
cloud/search_smartCampus/src/main/resources/mapper/RegisterPushMapper.xml
... ... @@ -4,6 +4,7 @@
4 4  
5 5 <resultMap id="BindPushDto" type="com.sincere.common.dto.smartCampus.BindPushDto" >
6 6 <result column="SchoolId" property="schoolId" />
  7 + <result column="SchoolName" property="schoolName" />
7 8 <result column="type" property="type" />
8 9 <result column="BeginDate" property="beginDate" />
9 10 <result column="EndDate" property="endDate" />
... ... @@ -13,44 +14,32 @@
13 14 </resultMap>
14 15  
15 16 <select id="selectBindPushSchool" resultType="java.lang.Integer" resultMap="BindPushDto">
16   - select SchoolId , type , BeginDate , EndDate , IntervalDays. PushTime , Msg from EM_QYHID where isPush = 1
  17 + select SchoolId , SchoolName , type , BeginDate , EndDate , IntervalDays , PushTime , Msg from EM_QYHID where isPush = 1
17 18 </select>
18 19  
19 20  
20 21 <resultMap id="ParentMap" type="com.sincere.common.dto.smartCampus.ParentDto">
21   - <result column="parent_id" property="parentId"/>
22 22 <result column="school_id" property="schoolId"/>
23   - <result column="mobile" property="mobile"/>
  23 + <result column="ParentMobile" property="mobile"/>
24 24 </resultMap>
25 25  
26 26 <select id="selectNotFollow" parameterType="java.lang.Integer" resultMap="ParentMap">
27   - SELECT SZ_V_School_Parent.parent_id , SZ_V_School_Parent.school_id , SZ_V_School_Parent.mobile FROM SZ_V_School_Parent WHERE not EXISTS
  27 + SELECT SZ_V_School_Student.school_id , SZ_V_School_Student.ParentMobile FROM SZ_V_School_Student WHERE not EXISTS
28 28 (SELECT NULL
29   - FROM SZ_V_School_Student
  29 + FROM SZ_V_School_Parent
30 30 WHERE SZ_V_School_Parent.class_id = SZ_V_School_Student.class_id
31 31 AND SZ_V_School_Parent.parent_mobile = SZ_V_School_Student.ParentMobile
32 32 )
33 33 and school_id = #{schoolId}
34 34 </select>
35 35  
36   - <select id="selectFollow" parameterType="java.lang.Integer" resultMap="ParentMap">
37   - SELECT SZ_V_School_Parent.parent_id , SZ_V_School_Parent.school_id , SZ_V_School_Parent.mobile FROM SZ_V_School_Parent WHERE EXISTS
38   - (SELECT NULL
39   - FROM SZ_V_School_Student
40   - WHERE SZ_V_School_Parent.class_id = SZ_V_School_Student.class_id
41   - AND SZ_V_School_Parent.parent_mobile = SZ_V_School_Student.ParentMobile
42   - )
43   - and school_id = #{schoolId}
44   - </select>
45   -
46   - <select id="selectNotBind" parameterType="java.util.Map" resultMap="ParentMap">
47   - SELECT SZ_V_School_Parent.parent_id , SZ_V_School_Parent.school_id , SZ_V_School_Parent.mobile FROM SZ_V_School_Parent WHERE EXISTS
48   - (SELECT NULL
49   - FROM SZ_V_School_Student
50   - WHERE SZ_V_School_Parent.class_id = SZ_V_School_Student.class_id
51   - AND SZ_V_School_Parent.parent_mobile = SZ_V_School_Student.ParentMobile
52   - )
53   - and school_id = #{schoolId}
  36 + <resultMap id="ParentMap2" type="com.sincere.common.dto.smartCampus.ParentDto">
  37 + <result column="school_id" property="schoolId"/>
  38 + <result column="mobile" property="mobile"/>
  39 + </resultMap>
  40 + <select id="selectNotBind" parameterType="java.util.Map" resultMap="ParentMap2">
  41 + SELECT SZ_V_School_Parent.school_id , SZ_V_School_Parent.mobile FROM SZ_V_School_Parent
  42 + WHERE school_id = #{schoolId}
54 43 <if test="type == 4">
55 44 and ( DingUserId is null or DingUserId = '' )
56 45 </if>
... ...