From 8441d05e7e170d6377415b4cb2554e8a82d23ed2 Mon Sep 17 00:00:00 2001 From: zy_Java <654600784@qq.com> Date: Tue, 14 Jul 2020 15:15:13 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E9=80=81=E6=8F=90=E9=86=92=E6=B6=88?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ccsens/game/netty/ChannelManager.java | 2 +- .../game/netty/wsserver/WebSocketDecoder.java | 4 +- .../game/netty/wsserver/WebSocketHandler.java | 2 +- .../ccsens/game/service/MessageService.java | 4 +- .../ccsens/game/service/ScreenService.java | 2 +- .../java/com/ccsens/health/api/WxTest.java | 7 +- .../ccsens/mt/service/MessageServicer.java | 5 +- .../com/ccsens/tall/bean/dto/TaskDto.java | 41 ++++++ .../com/ccsens/tall/bean/po/ProRemind.java | 11 ++ .../ccsens/tall/bean/po/ProRemindExample.java | 70 ++++++++++ .../java/com/ccsens/tall/bean/vo/TaskVo.java | 40 ++++++ .../ccsens/tall/persist/dao/ProRemindDao.java | 18 +++ .../com/ccsens/tall/rabbitMQ/MessageTest.java | 5 +- .../tall/scheduled/ScheduledService.java | 113 ++++++++++++++++ .../com/ccsens/tall/service/ExcelService.java | 2 +- .../tall/service/IProjectMessageService.java | 8 ++ .../ccsens/tall/service/IRobotService.java | 6 + .../tall/service/ITaskSubTimeService.java | 18 ++- .../ccsens/tall/service/MessageService.java | 10 +- .../tall/service/ProTaskDetailService.java | 43 ++++-- .../tall/service/ProjectMessageService.java | 46 +++++++ .../com/ccsens/tall/service/RingService.java | 2 +- .../com/ccsens/tall/service/RobotService.java | 34 ++++- .../tall/service/TaskSubTimeService.java | 125 ++++++++++++++++-- .../com/ccsens/tall/util/WxTemplateUtil.java | 2 +- .../com/ccsens/tall/web/DebugController.java | 5 +- .../com/ccsens/tall/web/ExcelController.java | 5 +- .../com/ccsens/tall/web/IndexController.java | 4 +- .../ccsens/tall/web/ProjectController.java | 4 +- .../com/ccsens/tall/web/TaskController.java | 27 +++- .../resources/mapper_dao/ProRemindDao.xml | 48 +++++++ .../resources/mapper_raw/ProRemindMapper.xml | 29 +++- .../main/java/com/ccsens/util/CodeEnum.java | 2 + .../main/java/com/ccsens/util/Md5Util.java | 8 +- .../main/java/com/ccsens/util/Sha1Util.java | 3 + .../main/java/com/ccsens/util/SmsUtil.java | 5 +- .../util/config/H5WebSocketInterceptor.java | 3 +- .../com/ccsens/util/cron/NatureToDate.java | 4 +- .../util/enterprisewx/WXBizMsgCrypt.java | 4 +- .../java/com/ccsens/util/wx/WxGzhUtil.java | 3 +- .../java/com/ccsens/util/wx/WxRobotUtil.java | 14 +- .../test/java/com/ccsens/util/Base64Test.java | 12 +- .../test/java/com/ccsens/util/ZipTest.java | 15 ++- 43 files changed, 727 insertions(+), 88 deletions(-) create mode 100644 tall/src/main/java/com/ccsens/tall/scheduled/ScheduledService.java create mode 100644 tall/src/main/resources/mapper_dao/ProRemindDao.xml diff --git a/game/src/main/java/com/ccsens/game/netty/ChannelManager.java b/game/src/main/java/com/ccsens/game/netty/ChannelManager.java index 0308e9d6..c1453616 100644 --- a/game/src/main/java/com/ccsens/game/netty/ChannelManager.java +++ b/game/src/main/java/com/ccsens/game/netty/ChannelManager.java @@ -386,7 +386,7 @@ public class ChannelManager { } public static String getRecordIdByChannel(Channel channel) { - System.out.println(rawChannels.containsKey(channel) ? rawChannels.get(channel).getRecordId() : null); + log.info(rawChannels.containsKey(channel) ? rawChannels.get(channel).getRecordId() : null); return rawChannels.containsKey(channel) ? rawChannels.get(channel).getRecordId() : null; } } diff --git a/game/src/main/java/com/ccsens/game/netty/wsserver/WebSocketDecoder.java b/game/src/main/java/com/ccsens/game/netty/wsserver/WebSocketDecoder.java index e343a2da..76c43f54 100644 --- a/game/src/main/java/com/ccsens/game/netty/wsserver/WebSocketDecoder.java +++ b/game/src/main/java/com/ccsens/game/netty/wsserver/WebSocketDecoder.java @@ -6,6 +6,7 @@ import com.ccsens.util.WebConstant; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.MessageToMessageDecoder; import io.netty.handler.codec.http.websocketx.TextWebSocketFrame; +import lombok.extern.slf4j.Slf4j; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -15,6 +16,7 @@ import java.util.List; /** * @author wei */ +@Slf4j public class WebSocketDecoder extends MessageToMessageDecoder { private static Logger logger = LoggerFactory.getLogger(WebSocketDecoder.class); @@ -37,7 +39,7 @@ protected void decode(ChannelHandlerContext channelHandlerContext, TextWebSocket String text = msg.text(); BaseMessageDto baseMessage = JacksonUtil.jsonToBean(text,BaseMessageDto.class); WebConstant.Message_Type type = WebConstant.Message_Type.phaseOf(baseMessage.getType()); - System.out.println(text); + log.info(text); switch (type){ case Heart: { out.add(JacksonUtil.jsonToBean(text, HeartMessageDto.class)); diff --git a/game/src/main/java/com/ccsens/game/netty/wsserver/WebSocketHandler.java b/game/src/main/java/com/ccsens/game/netty/wsserver/WebSocketHandler.java index f11c04ec..705d778a 100644 --- a/game/src/main/java/com/ccsens/game/netty/wsserver/WebSocketHandler.java +++ b/game/src/main/java/com/ccsens/game/netty/wsserver/WebSocketHandler.java @@ -91,7 +91,7 @@ public class WebSocketHandler extends SimpleChannelInboundHandler 0 ? endTime : 0, () -> { try { //查询游戏用户,通知游戏结束 diff --git a/health/src/main/java/com/ccsens/health/api/WxTest.java b/health/src/main/java/com/ccsens/health/api/WxTest.java index 9fafe3f0..ff25bdd3 100644 --- a/health/src/main/java/com/ccsens/health/api/WxTest.java +++ b/health/src/main/java/com/ccsens/health/api/WxTest.java @@ -5,6 +5,7 @@ import cn.hutool.json.JSONUtil; import com.ccsens.util.JacksonUtil; import com.ccsens.util.enterprisewx.AesException; import com.ccsens.util.enterprisewx.WXBizMsgCrypt; +import lombok.extern.slf4j.Slf4j; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; @@ -14,7 +15,7 @@ import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import java.io.StringReader; import java.net.URLDecoder; - +@Slf4j public class WxTest { public static void main(String[] args) throws Exception { String sToken = "4CxIpRDBWHMiePP3x6muNe4hRj"; @@ -31,9 +32,9 @@ public class WxTest { String sVerifyNonce = "1"; String sEchoStr = wxcpt.VerifyURL(sVerifyMsgSig, sVerifyTimeStamp, sVerifyNonce, sVerifyEchoStr); - System.out.println("verifyurl echostr: " + sEchoStr); + log.info("verifyurl echostr: " + sEchoStr); String s = JacksonUtil.xmlToJson(sEchoStr); - System.out.println("s:"+s); + log.info("s:"+s); } diff --git a/mt/src/main/java/com/ccsens/mt/service/MessageServicer.java b/mt/src/main/java/com/ccsens/mt/service/MessageServicer.java index c94d5bce..787633ae 100644 --- a/mt/src/main/java/com/ccsens/mt/service/MessageServicer.java +++ b/mt/src/main/java/com/ccsens/mt/service/MessageServicer.java @@ -6,10 +6,11 @@ import com.ccsens.util.JacksonUtil; import com.ccsens.util.bean.message.common.InMessage; import com.ccsens.util.bean.message.common.MessageConstant; import com.ccsens.util.config.RabbitMQConfig; +import lombok.extern.slf4j.Slf4j; import org.springframework.amqp.core.AmqpTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; - +@Slf4j @Service public class MessageServicer implements IMessageService{ @Autowired @@ -17,7 +18,7 @@ public class MessageServicer implements IMessageService{ @Override public void sendSyncMessageWithShow(SyncMessageWithShowDto message) throws Exception { - System.out.println(JacksonUtil.beanToJson(message)); + log.info(JacksonUtil.beanToJson(message)); // rabbitTemplate.convertAndSend(RabbitMQConfig.RabbitMQ_QUEUE_NAME, // JacksonUtil.beanToJson(message)); InMessage inMessage = new InMessage(); diff --git a/tall/src/main/java/com/ccsens/tall/bean/dto/TaskDto.java b/tall/src/main/java/com/ccsens/tall/bean/dto/TaskDto.java index 95be0ece..8a539412 100644 --- a/tall/src/main/java/com/ccsens/tall/bean/dto/TaskDto.java +++ b/tall/src/main/java/com/ccsens/tall/bean/dto/TaskDto.java @@ -41,6 +41,8 @@ public class TaskDto { private String taskDeliver; @ApiModelProperty("插件") private List pluginList; + @ApiModelProperty("任务提醒消息") + private TaskRemind taskRemind; } @ApiModel @@ -140,6 +142,8 @@ public class TaskDto { private int delay; @ApiModelProperty("延迟切换时间") private Long delayTime; + @ApiModelProperty("任务提醒信息") + private List taskRemindList; } @ApiModel @@ -247,5 +251,42 @@ public class TaskDto { } } } + @Data + @ApiModel("删除任务提醒") + public static class DeleteTaskRemind{ + @ApiModelProperty("提醒记录的id") + private Long remindId; + } + @Data + @ApiModel("设置任务提醒") + public static class UpdateTaskRemind{ + @NotNull + @ApiModelProperty("任务日期id(subTimeId)") + private Long remindId; + @ApiModelProperty("提醒时机 0不提醒 1开始前,2开始时,3开始后,4结束前,5结束时,6结束后,7自定义时间") + private Byte remindTiming; + @ApiModelProperty("时长 提醒时机是“开始时”或“结束时”可以为空") + private Long duration = 0L; + @ApiModelProperty("时间单位 0分钟 1小时 2天") + private Byte unit; + public Long getDuration(){ + if(ObjectUtil.isNull(unit)) { + throw new BaseException("时间单位不能为空"); + } + if(remindTiming == 7){ + return duration; + } + switch (unit) { + case 0: + return duration * 60 * 1000L; + case 1: + return duration * 60 * 60 * 1000L; + case 2: + return duration * 24 * 60 * 60 * 1000L; + default: + return duration; + } + } + } } diff --git a/tall/src/main/java/com/ccsens/tall/bean/po/ProRemind.java b/tall/src/main/java/com/ccsens/tall/bean/po/ProRemind.java index d7019676..86b2fce7 100644 --- a/tall/src/main/java/com/ccsens/tall/bean/po/ProRemind.java +++ b/tall/src/main/java/com/ccsens/tall/bean/po/ProRemind.java @@ -22,6 +22,8 @@ public class ProRemind implements Serializable { private Byte recStatus; + private String duration; + private static final long serialVersionUID = 1L; public Long getId() { @@ -96,6 +98,14 @@ public class ProRemind implements Serializable { this.recStatus = recStatus; } + public String getDuration() { + return duration; + } + + public void setDuration(String duration) { + this.duration = duration == null ? null : duration.trim(); + } + @Override public String toString() { StringBuilder sb = new StringBuilder(); @@ -111,6 +121,7 @@ public class ProRemind implements Serializable { sb.append(", createdAt=").append(createdAt); sb.append(", updatedAt=").append(updatedAt); sb.append(", recStatus=").append(recStatus); + sb.append(", duration=").append(duration); sb.append("]"); return sb.toString(); } diff --git a/tall/src/main/java/com/ccsens/tall/bean/po/ProRemindExample.java b/tall/src/main/java/com/ccsens/tall/bean/po/ProRemindExample.java index 2b89c5b4..4344b56d 100644 --- a/tall/src/main/java/com/ccsens/tall/bean/po/ProRemindExample.java +++ b/tall/src/main/java/com/ccsens/tall/bean/po/ProRemindExample.java @@ -644,6 +644,76 @@ public class ProRemindExample { addCriterion("rec_status not between", value1, value2, "recStatus"); return (Criteria) this; } + + public Criteria andDurationIsNull() { + addCriterion("duration is null"); + return (Criteria) this; + } + + public Criteria andDurationIsNotNull() { + addCriterion("duration is not null"); + return (Criteria) this; + } + + public Criteria andDurationEqualTo(String value) { + addCriterion("duration =", value, "duration"); + return (Criteria) this; + } + + public Criteria andDurationNotEqualTo(String value) { + addCriterion("duration <>", value, "duration"); + return (Criteria) this; + } + + public Criteria andDurationGreaterThan(String value) { + addCriterion("duration >", value, "duration"); + return (Criteria) this; + } + + public Criteria andDurationGreaterThanOrEqualTo(String value) { + addCriterion("duration >=", value, "duration"); + return (Criteria) this; + } + + public Criteria andDurationLessThan(String value) { + addCriterion("duration <", value, "duration"); + return (Criteria) this; + } + + public Criteria andDurationLessThanOrEqualTo(String value) { + addCriterion("duration <=", value, "duration"); + return (Criteria) this; + } + + public Criteria andDurationLike(String value) { + addCriterion("duration like", value, "duration"); + return (Criteria) this; + } + + public Criteria andDurationNotLike(String value) { + addCriterion("duration not like", value, "duration"); + return (Criteria) this; + } + + public Criteria andDurationIn(List values) { + addCriterion("duration in", values, "duration"); + return (Criteria) this; + } + + public Criteria andDurationNotIn(List values) { + addCriterion("duration not in", values, "duration"); + return (Criteria) this; + } + + public Criteria andDurationBetween(String value1, String value2) { + addCriterion("duration between", value1, value2, "duration"); + return (Criteria) this; + } + + public Criteria andDurationNotBetween(String value1, String value2) { + addCriterion("duration not between", value1, value2, "duration"); + return (Criteria) this; + } } public static class Criteria extends GeneratedCriteria { diff --git a/tall/src/main/java/com/ccsens/tall/bean/vo/TaskVo.java b/tall/src/main/java/com/ccsens/tall/bean/vo/TaskVo.java index 8c772e56..d2da3b2d 100644 --- a/tall/src/main/java/com/ccsens/tall/bean/vo/TaskVo.java +++ b/tall/src/main/java/com/ccsens/tall/bean/vo/TaskVo.java @@ -1,6 +1,7 @@ package com.ccsens.tall.bean.vo; import cn.hutool.core.util.ObjectUtil; +import com.ccsens.util.exception.BaseException; import com.fasterxml.jackson.annotation.JsonIgnore; import com.github.pagehelper.PageInfo; import io.swagger.annotations.ApiModel; @@ -9,6 +10,8 @@ import lombok.Data; import lombok.Getter; import lombok.Setter; +import javax.validation.constraints.NotNull; +import java.io.ByteArrayInputStream; import java.math.BigDecimal; import java.util.List; @@ -143,6 +146,8 @@ public class TaskVo { private Byte routineLocation; @ApiModelProperty("入参") private String importParam; + @ApiModelProperty("提醒的信息") + private List remindInfoList; public Long getDuration(){ if(ObjectUtil.isNotNull(beginTime) && ObjectUtil.isNotNull(endTime)) { return endTime - beginTime; @@ -352,4 +357,39 @@ public class TaskVo { private Integer mine; } + @Data + public static class RemindTask{ + //任务详情id + private Long taskDetailId; + //任务id(任务日期id) + private Long subTaskId; + //任务名 + private String taskName; + //任务名 + private String taskBeginTime; + //任务名 + private String taskEndTime; + //提醒信息的id + private Long remindId; + //需要被提醒的时间 + private String absoluteTime; + //提醒的时机 + private Byte timing; + //任务负责人id(需要被提醒) + private Long executorRole; + //项目id + private Long projectId; + //项目名 + private String projectName; + } + @ApiModel + @Data + public static class RemindInfo{ + @ApiModelProperty("提醒记录的id") + private Long remindId; + @ApiModelProperty("提醒的时机") + private Integer remindTiming; + @ApiModelProperty("时间") + private String time; + } } diff --git a/tall/src/main/java/com/ccsens/tall/persist/dao/ProRemindDao.java b/tall/src/main/java/com/ccsens/tall/persist/dao/ProRemindDao.java index eee43488..1b8dabd9 100644 --- a/tall/src/main/java/com/ccsens/tall/persist/dao/ProRemindDao.java +++ b/tall/src/main/java/com/ccsens/tall/persist/dao/ProRemindDao.java @@ -1,11 +1,29 @@ package com.ccsens.tall.persist.dao; +import com.ccsens.tall.bean.po.ProRemind; +import com.ccsens.tall.bean.vo.TaskVo; import com.ccsens.tall.persist.mapper.ProRemindMapper; +import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; +import java.util.List; + /** * @author 逗 */ @Repository public interface ProRemindDao extends ProRemindMapper { + /** + * 获取当前需要提醒的任务 + * @param now + * @return + */ + List queryRemindByNow(@Param("now") long now); + + /** + * 获取任务的提醒消息 + * @param taskId + * @return + */ + List queryRemindByTask(@Param("taskId") Long taskId); } diff --git a/tall/src/main/java/com/ccsens/tall/rabbitMQ/MessageTest.java b/tall/src/main/java/com/ccsens/tall/rabbitMQ/MessageTest.java index 86119df1..52333846 100644 --- a/tall/src/main/java/com/ccsens/tall/rabbitMQ/MessageTest.java +++ b/tall/src/main/java/com/ccsens/tall/rabbitMQ/MessageTest.java @@ -6,9 +6,10 @@ import com.ccsens.util.bean.message.common.MessageConstant; import com.ccsens.util.bean.message.common.ServerMessage; import com.ccsens.util.config.RabbitMQConfig; +import lombok.extern.slf4j.Slf4j; import org.springframework.amqp.core.AmqpTemplate; import org.springframework.beans.factory.annotation.Autowired; - +@Slf4j public class MessageTest { @Autowired private AmqpTemplate rabbitTemplate; @@ -18,7 +19,7 @@ public class MessageTest { serverMessage.setType("Ping"); InMessage inMessage = InMessage.newToServerMessage(MessageConstant.DomainType.Server,serverMessage); String j = JacksonUtil.beanToJson(inMessage); - System.out.println(j); + log.info(j); //FixMe 发送到消息队列 rabbitTemplate.convertAndSend(RabbitMQConfig.MESSAGE_QUEUE_NAME,j); } diff --git a/tall/src/main/java/com/ccsens/tall/scheduled/ScheduledService.java b/tall/src/main/java/com/ccsens/tall/scheduled/ScheduledService.java new file mode 100644 index 00000000..bc497031 --- /dev/null +++ b/tall/src/main/java/com/ccsens/tall/scheduled/ScheduledService.java @@ -0,0 +1,113 @@ +package com.ccsens.tall.scheduled; + +import cn.hutool.core.collection.CollectionUtil; +import com.ccsens.tall.bean.po.ProRemind; +import com.ccsens.tall.bean.po.SysProjectRobot; +import com.ccsens.tall.bean.po.SysProjectRobotExample; +import com.ccsens.tall.bean.vo.TaskVo; +import com.ccsens.tall.persist.dao.ProRemindDao; +import com.ccsens.tall.service.IProjectMessageService; +import com.ccsens.tall.service.IRobotService; +import com.ccsens.tall.util.TallConstant; +import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @author 逗 + */ +@Slf4j +@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) +@Component +@EnableScheduling +public class ScheduledService { + @Resource + private ProRemindDao proRemindDao; + @Resource + private IRobotService robotService; + @Resource + private IProjectMessageService projectMessageService; + + public static final String BEFORE_START = "您在项目's'中的任务's'将在s开始"; + public static final String START = "您在项目's'中的任务's'开始了"; + public static final String AFTER_START = "您在项目's'中的任务's'已经在's'开始了"; + public static final String BEFORE_END = "您在项目's'中的任务's'将在's'结束"; + public static final String END = "您在项目's'中的任务's'结束了"; + public static final String AFTER_END = "您在项目's'中的任务's'已经在's'结束了"; + public static final String USER_DEFINED = "来自项目's'中的任务's'的提醒"; + + @Scheduled(cron = "*/60 * * * * ?") + public void runfirst(){ + long now = System.currentTimeMillis(); +// long now = 1594611047000L; + List taskRemindList = proRemindDao.queryRemindByNow(now); + if(CollectionUtil.isNotEmpty(taskRemindList)){ + log.info(taskRemindList.toString()); + taskRemindList.forEach(taskRemind -> { + //修改提醒信息的状态(设为进行中) + ProRemind proRemind = new ProRemind(); + proRemind.setId(taskRemind.getRemindId()); + proRemind.setFinishStatus((byte) 2); + proRemindDao.updateByPrimaryKeySelective(proRemind); + + String content = ""; + switch (taskRemind.getTiming()){ + case 1: + content = BEFORE_START.replaceFirst("s",taskRemind.getProjectName()); + content = content.replaceFirst("s",taskRemind.getTaskName()); + content = content.replaceFirst("s",taskRemind.getTaskBeginTime()); + break; + case 2: + content = START.replaceFirst("s",taskRemind.getProjectName()); + content = content.replaceFirst("s",taskRemind.getTaskName()); + break; + case 3: + content = AFTER_START.replaceFirst("s",taskRemind.getProjectName()); + content = content.replaceFirst("s",taskRemind.getTaskName()); + content = content.replaceFirst("s",taskRemind.getTaskBeginTime()); + break; + case 4: + content = BEFORE_END.replaceFirst("s",taskRemind.getProjectName()); + content = content.replaceFirst("s",taskRemind.getTaskName()); + content = content.replaceFirst("s",taskRemind.getTaskEndTime()); + break; + case 5: + content = END.replaceFirst("s",taskRemind.getProjectName()); + content = content.replaceFirst("s",taskRemind.getTaskName()); + break; + case 6: + content = AFTER_END.replaceFirst("s",taskRemind.getProjectName()); + content = content.replaceFirst("s",taskRemind.getTaskName()); + content = content.replaceFirst("s",taskRemind.getTaskEndTime()); + break; + case 7: + content = USER_DEFINED.replaceFirst("s",taskRemind.getProjectName()); + content = content.replaceFirst("s",taskRemind.getTaskName()); + break; + default: + break; + } + try { + //机器人发送 + robotService.sendRemindByRobot(taskRemind,content); + //公众号 + projectMessageService.sendRemindByWx(taskRemind,content); + + //修改提醒信息的状态 + proRemind.setFinishStatus((byte) 4); + proRemindDao.updateByPrimaryKeySelective(proRemind); + } catch (Exception e) { + e.printStackTrace(); + } + }); + } + } + + +} diff --git a/tall/src/main/java/com/ccsens/tall/service/ExcelService.java b/tall/src/main/java/com/ccsens/tall/service/ExcelService.java index 4df86362..1b95efc1 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ExcelService.java +++ b/tall/src/main/java/com/ccsens/tall/service/ExcelService.java @@ -189,7 +189,7 @@ public class ExcelService implements IExcelService { //是否是模板,新加的不是模板 0 sysProject.setTemplate((byte) 0); projectService.saveProject(sysProject); - System.out.println(sysProject); + log.info(String.valueOf(sysProject)); //TODO 添加项目的展示配置 暂时全是默认 ProShow proShow = new ProShow(); proShow.setId(snowflake.nextId()); diff --git a/tall/src/main/java/com/ccsens/tall/service/IProjectMessageService.java b/tall/src/main/java/com/ccsens/tall/service/IProjectMessageService.java index c58d3f14..2983090f 100644 --- a/tall/src/main/java/com/ccsens/tall/service/IProjectMessageService.java +++ b/tall/src/main/java/com/ccsens/tall/service/IProjectMessageService.java @@ -3,6 +3,7 @@ package com.ccsens.tall.service; import com.ccsens.tall.bean.dto.ProjectMessageDto; import com.ccsens.tall.bean.vo.MessageVo; import com.ccsens.tall.bean.vo.ProjectMessageVo; +import com.ccsens.tall.bean.vo.TaskVo; import com.ccsens.util.CodeEnum; import com.ccsens.util.annotation.OperateType; import com.ccsens.util.wx.WxTemplateMessage; @@ -62,4 +63,11 @@ public interface IProjectMessageService { * @return */ PageInfo queryProjectMsg(ProjectMessageDto.ProjectMsg param, Long userId); + + /** + * 任务提醒 + * @param taskRemind 提醒相关消息 + * @param content 提醒的内容 + */ + void sendRemindByWx(TaskVo.RemindTask taskRemind, String content) throws Exception; } diff --git a/tall/src/main/java/com/ccsens/tall/service/IRobotService.java b/tall/src/main/java/com/ccsens/tall/service/IRobotService.java index 3bf14221..dab530d2 100644 --- a/tall/src/main/java/com/ccsens/tall/service/IRobotService.java +++ b/tall/src/main/java/com/ccsens/tall/service/IRobotService.java @@ -76,4 +76,10 @@ public interface IRobotService { * @return */ String getRobotTemplate(int code); + + /** + * 通过机器人发送提醒消息 + * @param taskRemind 需要发送的任务信息 + */ + void sendRemindByRobot(TaskVo.RemindTask taskRemind,String content) throws Exception; } diff --git a/tall/src/main/java/com/ccsens/tall/service/ITaskSubTimeService.java b/tall/src/main/java/com/ccsens/tall/service/ITaskSubTimeService.java index 481c90de..8472cd68 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ITaskSubTimeService.java +++ b/tall/src/main/java/com/ccsens/tall/service/ITaskSubTimeService.java @@ -29,5 +29,21 @@ public interface ITaskSubTimeService { * @param userId 当前用户的id * @param taskRemind 任务id 提醒的时机和时间 */ - void saveRemind(Long userId, TaskDto.TaskRemind taskRemind) throws Exception; + List saveRemind(Long userId, TaskDto.TaskRemind taskRemind) throws Exception; + + /** + * 删除任务的提醒 + * @param currentUserId userId + * @param deleteTaskRemind 任务提醒记录的id + * @return 返回这个任务下的所有提醒 + */ + List deleteRemind(Long currentUserId, TaskDto.DeleteTaskRemind deleteTaskRemind); + + /** + * 修改提醒的信息 + * @param currentUserId userId + * @param updateTaskRemind 需要修改的信息 + * @return 返回值这个任务的所有提醒 + */ + List updateRemind(Long currentUserId, TaskDto.UpdateTaskRemind updateTaskRemind); } diff --git a/tall/src/main/java/com/ccsens/tall/service/MessageService.java b/tall/src/main/java/com/ccsens/tall/service/MessageService.java index 40fb82cf..ca5acc61 100644 --- a/tall/src/main/java/com/ccsens/tall/service/MessageService.java +++ b/tall/src/main/java/com/ccsens/tall/service/MessageService.java @@ -62,7 +62,7 @@ public class MessageService implements IMessageService{ SyncMessageWithStartDto message = new SyncMessageWithStartDto(projectId, sender, receivers, roleId, taskId, null, time, duration,player); //FixMe 发送到消息队列 - System.out.println("+++++++++++++"+JacksonUtil.beanToJson(message)); + log.info("+++++++++++++"+JacksonUtil.beanToJson(message)); // rabbitTemplate.convertAndSend(RabbitMQConfig.RabbitMQ_QUEUE_NAME, // JacksonUtil.beanToJson(message)); @@ -76,14 +76,14 @@ public class MessageService implements IMessageService{ @Override public void sendDeliverMessageWithUpload(InMessage inMessage) throws Exception { - System.out.println(JacksonUtil.beanToJson(inMessage)); + log.info(JacksonUtil.beanToJson(inMessage)); //FixMe 发送到消息队列 rabbitTemplate.convertAndSend(RabbitMQConfig.MESSAGE_QUEUE_NAME,JacksonUtil.beanToJson(inMessage)); } @Override public void sendDeliverMessageWithChecker(InMessage inMessage) throws Exception { - System.out.println(JacksonUtil.beanToJson(inMessage)); + log.info(JacksonUtil.beanToJson(inMessage)); //FixMe 发送到消息队列 rabbitTemplate.convertAndSend(RabbitMQConfig.MESSAGE_QUEUE_NAME, JacksonUtil.beanToJson(inMessage)); @@ -91,7 +91,7 @@ public class MessageService implements IMessageService{ @Override public void sendDeliverMessageWithDelete(InMessage inMessage) throws Exception { - System.out.println(JacksonUtil.beanToJson(inMessage)); + log.info(JacksonUtil.beanToJson(inMessage)); //FixMe 发送到消息队列 rabbitTemplate.convertAndSend(RabbitMQConfig.MESSAGE_QUEUE_NAME , JacksonUtil.beanToJson(inMessage)); @@ -99,7 +99,7 @@ public class MessageService implements IMessageService{ @Override public void sendStartTaskMessage(SyncMessageWithStartDto syncMessage) throws Exception { - System.out.println(JacksonUtil.beanToJson(syncMessage)); + log.info(JacksonUtil.beanToJson(syncMessage)); //FixMe 发送到消息队列 // rabbitTemplate.convertAndSend(RabbitMQConfig.RabbitMQ_QUEUE_NAME , // JacksonUtil.beanToJson(syncMessage)); diff --git a/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java b/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java index c3b8e0d6..edd2e92e 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java +++ b/tall/src/main/java/com/ccsens/tall/service/ProTaskDetailService.java @@ -21,7 +21,6 @@ import com.ccsens.util.WebConstant; import com.ccsens.util.cron.CronConstant; import com.ccsens.util.cron.NatureToDate; import com.ccsens.util.exception.BaseException; -import lombok.Builder; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; @@ -53,6 +52,8 @@ public class ProTaskDetailService implements IProTaskDetailService { @Resource private TaskSubTimeDao taskSubTimeDao; @Resource + private ITaskSubTimeService taskSubTimeService; + @Resource private TaskMemberDao taskMemberDao; @Resource private ProSubTimeMemberDao proSubTimeMemberDao; @@ -72,6 +73,8 @@ public class ProTaskDetailService implements IProTaskDetailService { private ProPluginConfigMapper proPluginConfigMapper; @Resource private IRobotService robotService; + @Resource + private ProRemindDao proRemindDao; @Override public void saveTaskDetail(ProTaskDetail taskDetail) { @@ -102,7 +105,7 @@ public class ProTaskDetailService implements IProTaskDetailService { // obj = getTaskInfoByMvp(projectId, page, pageSize); // } else if (parentRole.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.PM.value)) { - obj = getTaskInfoByProjectIdAndPM(currentUserId, projectId, roleId, startTime, endTime, process, page, pageSize); + obj = getTaskInfoByProjectIdAndPM(currentUserId, projectId, roleId, startTime, endTime, process, page, pageSize,priority); } else if (parentRole.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.Member.value)) { obj = getTaskInfoByProjectIdAndRoleId(currentUserId, projectId, roleId, startTime, endTime, process, page, pageSize,priority); } @@ -135,7 +138,7 @@ public class ProTaskDetailService implements IProTaskDetailService { * 查看任务 项目经理 */ private TaskVo.ProTaskInfo getTaskInfoByProjectIdAndPM(Long currentUserId, Long projectId,Long roleId, Long startTime, Long endTime, - Integer process, Integer page, Integer pageSize) throws Exception { + Integer process, Integer page, Integer pageSize,Integer priority) throws Exception { TaskVo.ProTaskInfo proTaskInfo = new TaskVo.ProTaskInfo(); List globalTaskList = new ArrayList<>(); @@ -201,6 +204,8 @@ public class ProTaskDetailService implements IProTaskDetailService { } //二级任务配置 task.setProTaskConfig(getProTaskShow(task.getDetailId())); + //提醒信息 + normalTask.setRemindInfoList(proRemindDao.queryRemindByTask(normalTask.getId())); } TaskUtil.Task task = TaskUtil.splitTask(secondNormalTaskList, startTime, endTime, process); if (CollectionUtil.isNotEmpty(task.getGlobalTask())) { @@ -240,7 +245,7 @@ public class ProTaskDetailService implements IProTaskDetailService { List globalTaskList = new ArrayList<>(); List normalTaskList = new ArrayList<>(); - TaskVo.GlobalTask globalTask = null; + TaskVo.GlobalTask globalTask; //获取“全体成员”角色 ProRole allMember = proRoleService.getAllMember(projectId); Long allMemberId = null; @@ -276,6 +281,8 @@ public class ProTaskDetailService implements IProTaskDetailService { } //任务配置 normalTask.setProTaskConfig(getProTaskShow(normalTask.getDetailId())); + //提醒信息 + normalTask.setRemindInfoList(proRemindDao.queryRemindByTask(normalTask.getId())); } TaskUtil.Task task = TaskUtil.splitTask(secondTaskVoList, startTime, endTime, process); @@ -503,7 +510,7 @@ public class ProTaskDetailService implements IProTaskDetailService { taskDeliverByMvp.setDelivers(taskDeliverService.selectDeliverOrInputByTask(task.getId(), 0)); }else { Long now = System.currentTimeMillis(); - System.out.println(task.getName()); + log.info(task.getName()); TaskVo.TaskIdAndSubTimeIdByParentIdAndTime taskAndSubTime = taskDetailDao.selectSubTimeByTaskParentIdAndTime(task.getId(), now); if(ObjectUtil.isNotNull(taskAndSubTime)){ taskDeliverByMvp.setDelivers(taskDeliverService.selectDeliverOrInputByTask(taskAndSubTime.getTaskId(), 0)); @@ -556,14 +563,15 @@ public class ProTaskDetailService implements IProTaskDetailService { //添加项目信息和插件信息 normalTaskAddPlugin(currentUserId, subTime.getTaskDetailId(), taskDetail); List groupTaskList = new ArrayList<>(); - + //提醒信息 + taskDetail.setRemindInfoList(proRemindDao.queryRemindByTask(taskDetail.getId())); //获取此任务的子任务 ProTaskDetailExample detailExample = new ProTaskDetailExample(); detailExample.createCriteria().andParentIdEqualTo(taskDetail.getDetailId()); List detailList = taskDetailDao.selectByExample(detailExample); if(CollectionUtil.isNotEmpty(detailList)){ for(ProTaskDetail detail : detailList){ - TaskVo.NormalTask groupTask = null; + TaskVo.NormalTask groupTask; Long subTimeId = taskDeliverService.isTaskOrSubTime(detail.getId()); if(ObjectUtil.isNotNull(subTimeId)){ groupTask = taskDetailDao.selectTaskByTaskId(subTimeId, detail.getId(),detail.getExecutorRole()); @@ -862,13 +870,14 @@ public class ProTaskDetailService implements IProTaskDetailService { //关键词模糊搜索 if (StrUtil.isNotEmpty(key)) { if (CollectionUtil.isNotEmpty(normalTaskList)) { - Iterator it = normalTaskList.iterator(); - while (it.hasNext()) { - TaskVo.NormalTask normalTask = it.next(); - if (!normalTask.getName().contains(key)) { - it.remove(); - } - } + normalTaskList.removeIf(normalTask -> !normalTask.getName().contains(key)); +// Iterator it = normalTaskList.iterator(); +// while (it.hasNext()) { +// TaskVo.NormalTask normalTask = it.next(); +// if (!normalTask.getName().contains(key)) { +// it.remove(); +// } +// } } } //业务分页 @@ -1127,6 +1136,12 @@ public class ProTaskDetailService implements IProTaskDetailService { } //修改数据 taskDetailDao.updateByPrimaryKeySelective(taskDetail); + //修改提醒信息 + if(CollectionUtil.isNotEmpty(updateTaskInfo.getTaskRemindList())){ + updateTaskInfo.getTaskRemindList().forEach(updateTaskRemind -> { + taskSubTimeService.updateRemind(currentUserId,updateTaskRemind); + }); + } //返回的任务详细信息 Long subTimeId = taskDeliverService.isTaskOrSubTime(taskDetail.getId()); normalTask = getTaskInfoByTaskId(currentUserId,project.getId(),subTimeId); diff --git a/tall/src/main/java/com/ccsens/tall/service/ProjectMessageService.java b/tall/src/main/java/com/ccsens/tall/service/ProjectMessageService.java index 41ad0ef0..683c5981 100644 --- a/tall/src/main/java/com/ccsens/tall/service/ProjectMessageService.java +++ b/tall/src/main/java/com/ccsens/tall/service/ProjectMessageService.java @@ -1,6 +1,7 @@ package com.ccsens.tall.service; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Snowflake; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; @@ -12,6 +13,7 @@ import com.ccsens.tall.bean.po.SysOperation; import com.ccsens.tall.bean.po.SysOperationMessage; import com.ccsens.tall.bean.vo.MessageVo; import com.ccsens.tall.bean.vo.ProjectMessageVo; +import com.ccsens.tall.bean.vo.TaskVo; import com.ccsens.tall.bean.vo.UserVo; import com.ccsens.tall.persist.dao.ProMemberDao; import com.ccsens.tall.persist.dao.SysAuthDao; @@ -67,6 +69,8 @@ public class ProjectMessageService implements IProjectMessageService { private SysMessageSendDao sysMessageSendDao; @Resource private SysAuthDao sysAuthDao; + @Resource + private IUserService userService; @Resource private AmqpTemplate rabbitTemplate; @@ -365,4 +369,46 @@ public class ProjectMessageService implements IProjectMessageService { List list = sysOperationDao.queryProjectMsg(param); return new PageInfo<>(list); } + + @Override + public void sendRemindByWx(TaskVo.RemindTask taskRemind, String content) throws Exception { + //查询角色下的所有人员的userId + List userIds = userService.selectUserIdByRoleId(taskRemind.getExecutorRole()); + //查询关注公众号的用户 + List oauths = sysAuthDao.queryOauth2WX(userIds); + List openids = new ArrayList<>(); + oauths.forEach(oauth2WX -> { + openids.add(oauth2WX.getOpenid()); + }); + openids.forEach(openid -> { + String url = String.format(WechatUtil.PROJECT_URL, taskRemind.getProjectId()); + WxTemplateMessage.MiniProgram miniProgram = new WxTemplateMessage.MiniProgram(WechatUtil.appid,url); + + WxTemplateMessage.TemplateData data = new WxTemplateMessage.TemplateData(); + data.setFirst(new WxTemplateMessage.TemplateSettings("任务提醒")); + data.setKeyword1(new WxTemplateMessage.TemplateSettings(taskRemind.getTaskName())); + data.setKeyword2(new WxTemplateMessage.TemplateSettings("提醒")); + + WxTemplateMessage wxTemplateMessage = new WxTemplateMessage(); + wxTemplateMessage.setTouser(openid); + wxTemplateMessage.setMiniprogram(miniProgram); + wxTemplateMessage.setTemplate_id(WxGzhUtil.Template.TASK_PROGRESS.templateId); + wxTemplateMessage.setData(data); + wxTemplateMessage.getData().setRemark(new WxTemplateMessage.TemplateSettings(content)); + + String result = RestTemplateUtil.postBody(WebConstant.Wx.TEMPLATE_SEND, wxTemplateMessage); + log.info("发送模板返回结果:{}", result); + + JsonResponse response = null; + try { + response = JacksonUtil.xmlToBean(result, JsonResponse.class); + } catch (IOException e) { + e.printStackTrace(); + } + if (response.getCode().intValue() != CodeEnum.SUCCESS.getCode().intValue()) { + //TODO 报警 + log.error("公众号通知失败{}", result); + } + }); + } } diff --git a/tall/src/main/java/com/ccsens/tall/service/RingService.java b/tall/src/main/java/com/ccsens/tall/service/RingService.java index a9660d69..7384bc81 100644 --- a/tall/src/main/java/com/ccsens/tall/service/RingService.java +++ b/tall/src/main/java/com/ccsens/tall/service/RingService.java @@ -102,7 +102,7 @@ public class RingService implements IRingService { //发送消息 RingMessageWithSendDto ringMessageWithSendDto = new RingMessageWithSendDto( ringMsg.getId(), ringSendDto.getProjectId(), ringMsg.getValue(), time); - System.out.println(JSONObject.toJSONString(ringMessageWithSendDto.getData())); + log.info(JSONObject.toJSONString(ringMessageWithSendDto.getData())); InMessage inMessage = new InMessage(); inMessage.setToDomain(MessageConstant.DomainType.User); inMessage.setTos(userIdSet); diff --git a/tall/src/main/java/com/ccsens/tall/service/RobotService.java b/tall/src/main/java/com/ccsens/tall/service/RobotService.java index aea261ec..a94a4cdc 100644 --- a/tall/src/main/java/com/ccsens/tall/service/RobotService.java +++ b/tall/src/main/java/com/ccsens/tall/service/RobotService.java @@ -22,6 +22,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; @@ -81,7 +82,6 @@ public class RobotService implements IRobotService{ } catch (Exception e) { e.printStackTrace(); } - break; case 1://钉钉 break; @@ -387,4 +387,36 @@ public class RobotService implements IRobotService{ // 添加wx消息通知 RobotUtil.setWxTemplate(WxTemplateUtil.getAddComment(project.getId(), userName)); } + + + @Override + public void sendRemindByRobot(TaskVo.RemindTask taskRemind,String content) throws Exception { + String[] rolePhone = getMemberPhonesByRoleId(taskRemind.getExecutorRole()); + //获取机器人信息 + SysProjectRobotExample sysProjectRobotExample = new SysProjectRobotExample(); + sysProjectRobotExample.createCriteria().andProjectIdEqualTo(taskRemind.getProjectId()); + List sysProjectRobotList = sysProjectRobotDao.selectByExample(sysProjectRobotExample); + if(CollectionUtil.isNotEmpty(sysProjectRobotList)){ + sysProjectRobotList.forEach(sysProjectRobot -> { + //获取机器人信息 + SysRobot sysRobot = sysRobotDao.selectByPrimaryKey(sysProjectRobot.getRobotId()); + //4.发送消息 + if(ObjectUtil.isNotNull(sysRobot)){ + switch (sysRobot.getClientType()){ + case 0://微信 + try { + WxRobotUtil.sendRobotInfo(sysRobot.getWebHook(), content,"text",null, Arrays.asList(rolePhone)); + } catch (Exception e) { + e.printStackTrace(); + } + break; + case 1://钉钉 + break; + default: + } + } +// } + }); + } + } } diff --git a/tall/src/main/java/com/ccsens/tall/service/TaskSubTimeService.java b/tall/src/main/java/com/ccsens/tall/service/TaskSubTimeService.java index 3af4d6ff..d68f2861 100644 --- a/tall/src/main/java/com/ccsens/tall/service/TaskSubTimeService.java +++ b/tall/src/main/java/com/ccsens/tall/service/TaskSubTimeService.java @@ -20,10 +20,12 @@ import com.ccsens.util.cron.NatureToDate; import com.ccsens.util.exception.BaseException; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.sun.corba.se.spi.ior.ObjectKey; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.unit.DataUnit; import javax.annotation.Resource; import java.util.*; @@ -421,11 +423,18 @@ public class TaskSubTimeService implements ITaskSubTimeService { if (ObjectUtil.isNull(subTimeId) && CollectionUtil.isNotEmpty(proTaskSubTimeList)) { subTimeId = proTaskSubTimeList.get(0).getId(); } + //添加任务提醒 + List remindInfoList = new ArrayList<>(); + if(ObjectUtil.isNotNull(addTask.getTaskRemind())){ + remindInfoList = saveRemind(currentUserId,addTask.getTaskRemind()); + } + //返回 TaskVo.NormalTask taskDetail = taskDetailDao.selectTaskByTaskId(subTimeId, detail.getId(), detail.getExecutorRole()); if (ObjectUtil.isNotNull(taskDetail)) { taskDetailService.managePlugin(currentUserId, detail.getExecutorRole(), taskDetail); + taskDetail.setRemindInfoList(remindInfoList); } //通过智能助手发送通知 robotService.addTaskRobotSend(currentUserId, project, addTask.getTaskName(), addTask.getExecutorId()); @@ -473,7 +482,7 @@ public class TaskSubTimeService implements ITaskSubTimeService { if (ObjectUtil.isNull(type)) { for (Map.Entry entry : typeMap.entrySet()) { - System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue()); + log.info("key= " + entry.getKey() + " and value= " + entry.getValue()); TaskVo.KanBan kanBan = new TaskVo.KanBan(); kanBan.setCode(entry.getKey()); kanBan.setTypeName(entry.getValue()); @@ -531,7 +540,7 @@ public class TaskSubTimeService implements ITaskSubTimeService { @Override - public void saveRemind(Long userId,TaskDto.TaskRemind taskRemind) throws Exception { + public List saveRemind(Long userId,TaskDto.TaskRemind taskRemind) throws Exception { ProTaskSubTime proTaskSubTime = taskSubTimeDao.selectByPrimaryKey(taskRemind.getTaskId()); if(ObjectUtil.isNull(proTaskSubTime)){ throw new BaseException(CodeEnum.NOT_TASK); @@ -540,13 +549,13 @@ public class TaskSubTimeService implements ITaskSubTimeService { if(ObjectUtil.isNull(proTaskDetail)){ throw new BaseException(CodeEnum.NOT_TASK); } - //判断用户是否是任务的负责人 - ProRole role = proRoleDao.selectByPrimaryKey(proTaskDetail.getExecutorRole()); - Boolean isBelongRole = proMemberService.userIsBelongRole(userId, role.getId()); - if (!role.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.AllMember.phase) && !isBelongRole) { - log.info("此用户不是该任务的负责人:{}", role); - throw new BaseException(CodeEnum.IS_NOT_EXECUTOR); - } +// //判断用户是否是任务的负责人 +// ProRole role = proRoleDao.selectByPrimaryKey(proTaskDetail.getExecutorRole()); +// Boolean isBelongRole = proMemberService.userIsBelongRole(userId, role.getId()); +// if (!role.getName().equalsIgnoreCase(WebConstant.ROLE_NAME.AllMember.phase) && !isBelongRole) { +// log.info("此用户不是该任务的负责人:{}", role); +// throw new BaseException(CodeEnum.IS_NOT_EXECUTOR); +// } Long absoluteTime = 0L; //计算提醒的绝对时间 switch (taskRemind.getRemindTiming()) { @@ -573,6 +582,19 @@ public class TaskSubTimeService implements ITaskSubTimeService { break; default: } + //获取时长 + String unit = ""; + if(taskRemind.getRemindTiming() == 2 || taskRemind.getRemindTiming() == 5 || taskRemind.getRemindTiming() == 7){ + unit = DateUtil.format(new Date(absoluteTime),"MM月dd日HH时mm分"); + }else { + if(taskRemind.getUnit() == 0){ + unit = taskRemind.getDuration()/60/1000 + "分钟"; + }else if(taskRemind.getUnit() == 1){ + unit = taskRemind.getDuration()/60/60/1000 + "小时"; + }else if(taskRemind.getUnit() == 2){ + unit = taskRemind.getDuration()/24/60/60/1000 + "天"; + } + } //添加提醒信息 ProRemind remind = new ProRemind(); remind.setId(snowflake.nextId()); @@ -580,6 +602,91 @@ public class TaskSubTimeService implements ITaskSubTimeService { remind.setRemindTiming(taskRemind.getRemindTiming()); remind.setRemindAbsoluteTime(absoluteTime); remind.setFinishStatus((byte) 0); + remind.setDuration(unit); proRemindDao.insertSelective(remind); + //返回这个任务的所有提醒信息 + return proRemindDao.queryRemindByTask(taskRemind.getTaskId()); + } + + @Override + public List deleteRemind(Long currentUserId, TaskDto.DeleteTaskRemind deleteTaskRemind) { + ProRemind proRemind = proRemindDao.selectByPrimaryKey(deleteTaskRemind.getRemindId()); + if(ObjectUtil.isNull(proRemind)){ + throw new BaseException(CodeEnum.PARAM_ERROR); + } + proRemind.setRecStatus((byte) 2); + proRemindDao.updateByPrimaryKeySelective(proRemind); + return proRemindDao.queryRemindByTask(proRemind.getSubTaskId()); + } + + @Override + public List updateRemind(Long currentUserId, TaskDto.UpdateTaskRemind updateTaskRemind) { + //查找提醒 + ProRemind proRemind = proRemindDao.selectByPrimaryKey(updateTaskRemind.getRemindId()); + if(ObjectUtil.isNull(proRemind)){ + throw new BaseException(CodeEnum.PARAM_ERROR); + } + //查找任务 + ProTaskSubTime proTaskSubTime = taskSubTimeDao.selectByPrimaryKey(proRemind.getSubTaskId()); + if(ObjectUtil.isNull(proTaskSubTime)){ + throw new BaseException(CodeEnum.NOT_TASK); + } + //修改提醒的时机 + Long absoluteTime = 0L; + if(updateTaskRemind.getRemindTiming() != null){ + proRemind.setRemindTiming(updateTaskRemind.getRemindTiming()); + switch (proRemind.getRemindTiming()) { + case TallConstant.TaskRemindTiming.REMIND_TASK_START: + absoluteTime = proTaskSubTime.getBeginTime(); + break; + case TallConstant.TaskRemindTiming.REMIND_TASK_END: + absoluteTime = proTaskSubTime.getEndTime(); + break; + case TallConstant.TaskRemindTiming.REMIND_TASK_USER_DEFINED: + absoluteTime = updateTaskRemind.getDuration(); + break; + default: + } + } + //修改时间和单位 + if(updateTaskRemind.getDuration() != null){ + if(updateTaskRemind.getUnit() == null){ + throw new BaseException(CodeEnum.NOT_UNIT); + } + switch (proRemind.getRemindTiming()) { + case TallConstant.TaskRemindTiming.REMIND_TASK_BEFORE_START: + absoluteTime = proTaskSubTime.getBeginTime() - updateTaskRemind.getDuration(); + break; + case TallConstant.TaskRemindTiming.REMIND_TASK_AFTER_START: + absoluteTime = proTaskSubTime.getBeginTime() + updateTaskRemind.getDuration(); + break; + case TallConstant.TaskRemindTiming.REMIND_TASK_BEFORE_END: + absoluteTime = proTaskSubTime.getEndTime() - updateTaskRemind.getDuration(); + break; + case TallConstant.TaskRemindTiming.REMIND_TASK_AFTER_END: + absoluteTime = proTaskSubTime.getEndTime() + updateTaskRemind.getDuration(); + break; + default: + } + //获取时长 + String unit = ""; + if(proRemind.getRemindTiming() == 2 || proRemind.getRemindTiming() == 5 || proRemind.getRemindTiming() == 7){ + unit = DateUtil.format(new Date(absoluteTime),"MM月dd日HH时mm分"); + }else { + if(updateTaskRemind.getUnit() == 0){ + unit = updateTaskRemind.getDuration()/60/1000 + "分钟"; + }else if(updateTaskRemind.getUnit() == 1){ + unit = updateTaskRemind.getDuration()/60/60/1000 + "小时"; + }else if(updateTaskRemind.getUnit() == 2){ + unit = updateTaskRemind.getDuration()/24/60/60/1000 + "天"; + } + } + proRemind.setDuration(unit); + } + if(absoluteTime != 0){ + proRemind.setRemindAbsoluteTime(absoluteTime); + } + proRemindDao.updateByPrimaryKeySelective(proRemind); + return proRemindDao.queryRemindByTask(proRemind.getSubTaskId()); } } diff --git a/tall/src/main/java/com/ccsens/tall/util/WxTemplateUtil.java b/tall/src/main/java/com/ccsens/tall/util/WxTemplateUtil.java index f3e58e28..a1a37e2c 100644 --- a/tall/src/main/java/com/ccsens/tall/util/WxTemplateUtil.java +++ b/tall/src/main/java/com/ccsens/tall/util/WxTemplateUtil.java @@ -158,7 +158,7 @@ public class WxTemplateUtil { */ public static WxTemplateMessage getAddComment(Long projectId, String userName) { WxTemplateMessage message = getWxTemplateMessage(projectId); - message.setTemplate_id(WxGzhUtil.Template.COMMENT.templateId); + message.setTemplate_id(WxGzhUtil.Template.TASK_PROGRESS.templateId); WxTemplateMessage.TemplateData data = new WxTemplateMessage.TemplateData(); data.setFirst(new WxTemplateMessage.TemplateSettings(userName + "进行了点评")); data.setKeyword1(new WxTemplateMessage.TemplateSettings(userName)); diff --git a/tall/src/main/java/com/ccsens/tall/web/DebugController.java b/tall/src/main/java/com/ccsens/tall/web/DebugController.java index 025fe5df..197912e7 100644 --- a/tall/src/main/java/com/ccsens/tall/web/DebugController.java +++ b/tall/src/main/java/com/ccsens/tall/web/DebugController.java @@ -12,6 +12,7 @@ import com.ccsens.util.config.RabbitMQConfig; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; import org.springframework.amqp.core.AmqpTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.PlatformTransactionManager; @@ -24,7 +25,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.util.HashSet; import java.util.Set; - +@Slf4j @Api(tags = "DEBUG" , description = "DebugController | ") @RestController @RequestMapping("/debug") @@ -78,7 +79,7 @@ public class DebugController { InMessage inMessage = InMessage.newToUserMessage("1175954520199532544",s,null,messageRule,l); String j = JacksonUtil.beanToJson(inMessage); - System.out.println(j); + log.info(j); //FixMe 发送到消息队列 rabbitTemplate.convertAndSend(RabbitMQConfig.MESSAGE_QUEUE_NAME,j); diff --git a/tall/src/main/java/com/ccsens/tall/web/ExcelController.java b/tall/src/main/java/com/ccsens/tall/web/ExcelController.java index 3227fd62..9ecc7afe 100644 --- a/tall/src/main/java/com/ccsens/tall/web/ExcelController.java +++ b/tall/src/main/java/com/ccsens/tall/web/ExcelController.java @@ -12,6 +12,7 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -20,7 +21,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.Part; import java.io.File; - +@Slf4j @Api(tags = "Excel" , description = "") @RestController @RequestMapping("/projects") @@ -44,7 +45,7 @@ public class ExcelController { String allowedExts = "xls,xlsx"; String dir = WebConstant.UPLOAD_PROJECT_WBS + File.separator; String path = UploadFileUtil_Servlet3.uploadFile(file, allowedExts, dir); - System.out.println(dir+""+path); + log.info(dir+""+path); //获取文件路径,文件名,和文件大小 String filePath = WebConstant.UPLOAD_PATH_PROJECT + File.separator + path; String name = UploadFileUtil_Servlet3.getFileNameByPart(file); diff --git a/tall/src/main/java/com/ccsens/tall/web/IndexController.java b/tall/src/main/java/com/ccsens/tall/web/IndexController.java index baa4beac..027f3158 100644 --- a/tall/src/main/java/com/ccsens/tall/web/IndexController.java +++ b/tall/src/main/java/com/ccsens/tall/web/IndexController.java @@ -2,6 +2,7 @@ package com.ccsens.tall.web; import com.ccsens.cloudutil.bean.QueryParam; import com.ccsens.tall.config.BusinessProps; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.PostMapping; @@ -14,6 +15,7 @@ import org.springframework.web.bind.annotation.RestController; * @author: wuHuiJuan * @create: 2019/11/26 15:06 */ +@Slf4j @RestController public class IndexController { @@ -25,7 +27,7 @@ public class IndexController { @RequestMapping({"","/","/index"}) public String index(){ - System.out.println("=============================: " + businessProps.getPacketRate()); + log.info("=============================: " + businessProps.getPacketRate()); return "hello world"; } diff --git a/tall/src/main/java/com/ccsens/tall/web/ProjectController.java b/tall/src/main/java/com/ccsens/tall/web/ProjectController.java index d850fcd2..5d315f5f 100644 --- a/tall/src/main/java/com/ccsens/tall/web/ProjectController.java +++ b/tall/src/main/java/com/ccsens/tall/web/ProjectController.java @@ -15,6 +15,7 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -25,6 +26,7 @@ import java.util.List; /** * @author 逗 */ +@Slf4j @Api(tags = "项目相关API") @RestController @RequestMapping("/projects") @@ -65,7 +67,7 @@ public class ProjectController { Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject()); String authHeader = request.getHeader(WebConstant.HEADER_KEY_TOKEN); String token = authHeader.substring(WebConstant.HEADER_KEY_TOKEN_PREFIX.length()); - System.out.println(token); + log.info(token); List projectInfoList = projectService.getProjectInfo(currentUserId,date,orderType,order,token); return JsonResponse.newInstance().ok(projectInfoList); } diff --git a/tall/src/main/java/com/ccsens/tall/web/TaskController.java b/tall/src/main/java/com/ccsens/tall/web/TaskController.java index 27e1e266..8ac81c07 100644 --- a/tall/src/main/java/com/ccsens/tall/web/TaskController.java +++ b/tall/src/main/java/com/ccsens/tall/web/TaskController.java @@ -173,13 +173,34 @@ public class TaskController { @ApiImplicitParams({ }) @RequestMapping(value = "/remind", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) - public JsonResponse saveRemind(HttpServletRequest request, + public JsonResponse saveRemind(HttpServletRequest request, @ApiParam @Validated @RequestBody TaskDto.TaskRemind taskRemind) throws Exception { Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject()); - subTimeService.saveRemind(currentUserId,taskRemind); - return JsonResponse.newInstance().ok(); + List remindInfo = subTimeService.saveRemind(currentUserId,taskRemind); + return JsonResponse.newInstance().ok(remindInfo); + } + + @ApiOperation(value = "删除任务上的提醒", notes = "") + @ApiImplicitParams({ + }) + @RequestMapping(value = "/remind/delete", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) + public JsonResponse deleteRemind(HttpServletRequest request, + @ApiParam @Validated @RequestBody TaskDto.DeleteTaskRemind deleteTaskRemind) throws Exception { + Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject()); + List remindInfo = subTimeService.deleteRemind(currentUserId,deleteTaskRemind); + return JsonResponse.newInstance().ok(remindInfo); } + @ApiOperation(value = "修改任务上的提醒", notes = "") + @ApiImplicitParams({ + }) + @RequestMapping(value = "/remind/update", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) + public JsonResponse updateRemind(HttpServletRequest request, + @ApiParam @Validated @RequestBody TaskDto.UpdateTaskRemind updateTaskRemind) throws Exception { + Long currentUserId = Long.valueOf(((Claims) request.getAttribute(WebConstant.REQUEST_KEY_CLAIMS)).getSubject()); + List remindInfo = subTimeService.updateRemind(currentUserId,updateTaskRemind); + return JsonResponse.newInstance().ok(remindInfo); + } //============================================================== @OperateType(value = 3) diff --git a/tall/src/main/resources/mapper_dao/ProRemindDao.xml b/tall/src/main/resources/mapper_dao/ProRemindDao.xml new file mode 100644 index 00000000..feb5b9e6 --- /dev/null +++ b/tall/src/main/resources/mapper_dao/ProRemindDao.xml @@ -0,0 +1,48 @@ + + + + + + + + + \ No newline at end of file diff --git a/tall/src/main/resources/mapper_raw/ProRemindMapper.xml b/tall/src/main/resources/mapper_raw/ProRemindMapper.xml index 3e867bb8..4975c3e9 100644 --- a/tall/src/main/resources/mapper_raw/ProRemindMapper.xml +++ b/tall/src/main/resources/mapper_raw/ProRemindMapper.xml @@ -11,6 +11,7 @@ + @@ -72,7 +73,7 @@ id, sub_task_id, remind_timing, remind_absolute_time, finish_status, remind_times, - created_at, updated_at, rec_status + created_at, updated_at, rec_status, duration @@ -211,6 +218,9 @@ rec_status = #{record.recStatus,jdbcType=TINYINT}, + + duration = #{record.duration,jdbcType=VARCHAR}, + @@ -226,7 +236,8 @@ remind_times = #{record.remindTimes,jdbcType=INTEGER}, created_at = #{record.createdAt,jdbcType=TIMESTAMP}, updated_at = #{record.updatedAt,jdbcType=TIMESTAMP}, - rec_status = #{record.recStatus,jdbcType=TINYINT} + rec_status = #{record.recStatus,jdbcType=TINYINT}, + duration = #{record.duration,jdbcType=VARCHAR} @@ -258,6 +269,9 @@ rec_status = #{recStatus,jdbcType=TINYINT}, + + duration = #{duration,jdbcType=VARCHAR}, + where id = #{id,jdbcType=BIGINT} @@ -270,7 +284,8 @@ remind_times = #{remindTimes,jdbcType=INTEGER}, created_at = #{createdAt,jdbcType=TIMESTAMP}, updated_at = #{updatedAt,jdbcType=TIMESTAMP}, - rec_status = #{recStatus,jdbcType=TINYINT} + rec_status = #{recStatus,jdbcType=TINYINT}, + duration = #{duration,jdbcType=VARCHAR} where id = #{id,jdbcType=BIGINT} \ No newline at end of file diff --git a/util/src/main/java/com/ccsens/util/CodeEnum.java b/util/src/main/java/com/ccsens/util/CodeEnum.java index 132dea01..8368030e 100644 --- a/util/src/main/java/com/ccsens/util/CodeEnum.java +++ b/util/src/main/java/com/ccsens/util/CodeEnum.java @@ -126,6 +126,8 @@ public enum CodeEnum { FILE_NOT_FOUND(106,"未找到对应的文件,请检查后操作",true), SIGNATURE_FAIL(107,"签名验证失败",true), + NOT_UNIT(107,"时间单位不能为空",true), + diff --git a/util/src/main/java/com/ccsens/util/Md5Util.java b/util/src/main/java/com/ccsens/util/Md5Util.java index 0ca76e92..e2a8d181 100644 --- a/util/src/main/java/com/ccsens/util/Md5Util.java +++ b/util/src/main/java/com/ccsens/util/Md5Util.java @@ -1,12 +1,14 @@ package com.ccsens.util; +import lombok.extern.slf4j.Slf4j; + import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.math.BigInteger; import java.security.MessageDigest; - +@Slf4j public class Md5Util { // // //获取文件MD5 @@ -44,14 +46,14 @@ public class Md5Util { } str = md5; } catch (Exception e) { - System.out.println(e); + log.info(String.valueOf(e)); } finally { try { if (in != null) { in.close(); } } catch (IOException e) { - System.out.println(e); + log.info(String.valueOf(e)); } } return str; diff --git a/util/src/main/java/com/ccsens/util/Sha1Util.java b/util/src/main/java/com/ccsens/util/Sha1Util.java index 91939b62..95b7eef6 100644 --- a/util/src/main/java/com/ccsens/util/Sha1Util.java +++ b/util/src/main/java/com/ccsens/util/Sha1Util.java @@ -1,10 +1,13 @@ package com.ccsens.util; +import lombok.extern.slf4j.Slf4j; + import java.io.File; import java.io.FileInputStream; import java.math.BigInteger; import java.security.MessageDigest; + public class Sha1Util { public static String getFileSha1(File file) { String str = null; diff --git a/util/src/main/java/com/ccsens/util/SmsUtil.java b/util/src/main/java/com/ccsens/util/SmsUtil.java index 5161c03f..d59dd72f 100644 --- a/util/src/main/java/com/ccsens/util/SmsUtil.java +++ b/util/src/main/java/com/ccsens/util/SmsUtil.java @@ -5,10 +5,11 @@ import cn.hutool.json.JSONException; import com.github.qcloudsms.SmsSingleSender; import com.github.qcloudsms.SmsSingleSenderResult; import com.github.qcloudsms.httpclient.HTTPException; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import java.io.IOException; - +@Slf4j @Component public class SmsUtil { private static final int appid = 1400188778; // 1400开头 @@ -25,7 +26,7 @@ public class SmsUtil { SmsSingleSender ssender = new SmsSingleSender(appid, appkey); SmsSingleSenderResult result = ssender.sendWithParam("86", phoneNumbers[0], templateId, params, smsSign, "", ""); // 签名参数未提供或者为空时,会使用默认签名发送短信 - System.out.println(result); + log.info(String.valueOf(result)); } catch (HTTPException e) { // HTTP响应码错误 e.printStackTrace(); diff --git a/util/src/main/java/com/ccsens/util/config/H5WebSocketInterceptor.java b/util/src/main/java/com/ccsens/util/config/H5WebSocketInterceptor.java index e2c3c505..b57e63aa 100644 --- a/util/src/main/java/com/ccsens/util/config/H5WebSocketInterceptor.java +++ b/util/src/main/java/com/ccsens/util/config/H5WebSocketInterceptor.java @@ -1,6 +1,7 @@ package com.ccsens.util.config; import com.ccsens.util.WebConstant; +import lombok.extern.slf4j.Slf4j; import org.springframework.http.server.ServerHttpRequest; import org.springframework.http.server.ServerHttpResponse; import org.springframework.http.server.ServletServerHttpRequest; @@ -9,7 +10,7 @@ import org.springframework.web.socket.WebSocketHandler; import org.springframework.web.socket.server.HandshakeInterceptor; import java.util.Map; - +@Slf4j public class H5WebSocketInterceptor implements HandshakeInterceptor { @Override public boolean beforeHandshake(ServerHttpRequest serverHttpRequest, diff --git a/util/src/main/java/com/ccsens/util/cron/NatureToDate.java b/util/src/main/java/com/ccsens/util/cron/NatureToDate.java index d35e5b9f..70ade98f 100644 --- a/util/src/main/java/com/ccsens/util/cron/NatureToDate.java +++ b/util/src/main/java/com/ccsens/util/cron/NatureToDate.java @@ -4,6 +4,7 @@ package com.ccsens.util.cron; import com.ccsens.util.DateUtil; import com.ccsens.util.StringUtil; import com.ccsens.util.exception.BaseException; +import lombok.extern.slf4j.Slf4j; import org.springframework.util.CollectionUtils; import java.text.SimpleDateFormat; @@ -14,6 +15,7 @@ import java.util.*; * @author: wu huijuan * @create: 2019/11/14 11:55 */ +@Slf4j public class NatureToDate { public static void main(String[] args) throws Exception { @@ -42,7 +44,7 @@ public class NatureToDate { // System.out.println("第八天:" + generateDates("第八天", start, end)); // System.out.println("每月15号下午5点:" + generateDates("每月15号下午5点", start, end)); - System.out.println("周一-周五 8点-9点: " + generateDates("周一-周五 8点-9点", start, end)); + log.info("周一-周五 8点-9点: " + generateDates("周一-周五 8点-9点", start, end)); } diff --git a/util/src/main/java/com/ccsens/util/enterprisewx/WXBizMsgCrypt.java b/util/src/main/java/com/ccsens/util/enterprisewx/WXBizMsgCrypt.java index 7a8f4024..7d31a288 100644 --- a/util/src/main/java/com/ccsens/util/enterprisewx/WXBizMsgCrypt.java +++ b/util/src/main/java/com/ccsens/util/enterprisewx/WXBizMsgCrypt.java @@ -21,6 +21,7 @@ import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.binary.Base64; /** @@ -38,6 +39,7 @@ import org.apache.commons.codec.binary.Base64; *
  • 如果安装了JDK,将两个jar文件放到%JDK_HOME%\jre\lib\security目录下覆盖原来文件
  • * */ +@Slf4j public class WXBizMsgCrypt { static Charset CHARSET = Charset.forName("utf-8"); Base64 base64 = new Base64(); @@ -281,7 +283,7 @@ public class WXBizMsgCrypt { if (!signature.equals(msgSignature)) { throw new AesException(AesException.ValidateSignatureError); } - System.out.println("验签通过"); + log.info("验签通过"); String result = decrypt(echoStr); return result; } diff --git a/util/src/main/java/com/ccsens/util/wx/WxGzhUtil.java b/util/src/main/java/com/ccsens/util/wx/WxGzhUtil.java index 77068743..11f35a9c 100644 --- a/util/src/main/java/com/ccsens/util/wx/WxGzhUtil.java +++ b/util/src/main/java/com/ccsens/util/wx/WxGzhUtil.java @@ -102,7 +102,7 @@ public class WxGzhUtil { TASK_ADD("Tj0n5-aLvrrAksbGH5A1h-Dx44Z3c9u6cu7WZK5StEQ","工作分配通知", "{{first.DATA}}工作内容:{{keyword1.DATA}}创建时间:{{keyword2.DATA}}{{remark.DATA}}"), TASK_DELETE("0qi0qqFyNQL0UChGlXLx92EtsBDhTLMINnt0akK1pyM","工作取消通知", "{{first.DATA}}工作内容:{{keyword1.DATA}}工作时间:{{keyword2.DATA}}详情:{{keyword3.DATA}}{{remark.DATA}}"), TASK_PROGRESS("NeBLAEbPRFV4O5gkFeHTgPmwcpIUaMY_XkmhjLZ9v_4","工作进度通知", "{{first.DATA}}工作内容:{{keyword1.DATA}}当前状态:{{keyword2.DATA}}{{remark.DATA}}"), - COMMENT("NeBLAEbPRFV4O5gkFeHTgPmwcpIUaMY_XkmhjLZ9v_4","工作进度通知", "{{first.DATA}}工作内容:{{keyword1.DATA}}当前状态:{{keyword2.DATA}}{{remark.DATA}}"), +// COMMENT("NeBLAEbPRFV4O5gkFeHTgPmwcpIUaMY_XkmhjLZ9v_4","工作进度通知", "{{first.DATA}}工作内容:{{keyword1.DATA}}当前状态:{{keyword2.DATA}}{{remark.DATA}}"), ; public String templateId; public String title; @@ -113,7 +113,6 @@ public class WxGzhUtil { this.title = title; this.content = content; } - } public static final class Field{ diff --git a/util/src/main/java/com/ccsens/util/wx/WxRobotUtil.java b/util/src/main/java/com/ccsens/util/wx/WxRobotUtil.java index 409debe2..4b24248d 100644 --- a/util/src/main/java/com/ccsens/util/wx/WxRobotUtil.java +++ b/util/src/main/java/com/ccsens/util/wx/WxRobotUtil.java @@ -5,6 +5,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.json.JSONUtil; import com.ccsens.util.JacksonUtil; import lombok.Data; +import lombok.extern.slf4j.Slf4j; import org.json.JSONObject; import java.io.*; @@ -12,7 +13,7 @@ import java.net.URL; import java.net.URLConnection; import java.util.ArrayList; import java.util.List; - +@Slf4j public class WxRobotUtil { @Data public static class WxRobotVo{ @@ -74,6 +75,15 @@ public class WxRobotUtil { } } + /** + * 微信机器人 + * @param webHook 机器人地址 + * @param content 消息的内容 + * @param msgType 消息格式 + * @param mentionedList 通过id@群内人员 + * @param mentionedMobileList 通过手机号@群内人员 + * @throws Exception + */ public static void sendRobotInfo(String webHook,String content,String msgType,List mentionedList,List mentionedMobileList)throws Exception { WxRobotVo wxRobotVo = new WxRobotVo(); wxRobotVo.setMsgtype(msgType); @@ -94,7 +104,7 @@ public class WxRobotUtil { } String body = JacksonUtil.beanToJson(wxRobotVo); - System.out.println(body); + log.info(body); sendPost(webHook,body); } public static void main(String[] args) throws Exception { diff --git a/util/src/test/java/com/ccsens/util/Base64Test.java b/util/src/test/java/com/ccsens/util/Base64Test.java index 283860ba..06f237a3 100644 --- a/util/src/test/java/com/ccsens/util/Base64Test.java +++ b/util/src/test/java/com/ccsens/util/Base64Test.java @@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.ccsens.util.wx.WxXcxUtil; +import lombok.extern.slf4j.Slf4j; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -13,16 +14,14 @@ import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * @description: * @author: wuHuiJuan * @create: 2019/12/17 17:26 */ +@Slf4j public class Base64Test { @Test @@ -36,14 +35,13 @@ public class Base64Test { FileOutputStream out = new FileOutputStream(file); out.write(decode); out.close(); - System.out.println(System.currentTimeMillis()); + log.info(String.valueOf(System.currentTimeMillis())); } @Test public void test02() throws Exception { - File file = new File("d:"+File.separator+"1.png"); - System.out.println(file.length()); + } diff --git a/util/src/test/java/com/ccsens/util/ZipTest.java b/util/src/test/java/com/ccsens/util/ZipTest.java index e50b183f..90acd8a7 100644 --- a/util/src/test/java/com/ccsens/util/ZipTest.java +++ b/util/src/test/java/com/ccsens/util/ZipTest.java @@ -2,6 +2,7 @@ package com.ccsens.util; import cn.hutool.core.codec.Base64; import cn.hutool.core.util.ZipUtil; +import lombok.extern.slf4j.Slf4j; import org.junit.Test; import javax.script.ScriptEngine; @@ -14,19 +15,20 @@ import java.io.UnsupportedEncodingException; * @author: wuHuiJuan * @create: 2019/12/10 15:44 */ +@Slf4j public class ZipTest { @Test public void gzip() throws UnsupportedEncodingException { String content = "QueryDto(param=DoctorDto.Submit(positionId=1204239831257976832, titleId=1204239838740615168, name=李院长, sex=0, age=38), userId=1202064120040525824, token=null)--"; - System.out.println("content长度" + content.length()); + log.info("content长度" + content.length()); byte[] gzip = ZipUtil.gzip(content, "UTF-8"); String encode = Base64.encode(gzip); - System.out.println("encode长度:" + encode.length()); + log.info("encode长度:" + encode.length()); String zipContent = new String(gzip); - System.out.println(zipContent); + log.info(zipContent); byte[] bytes = ZipUtil.unGzip(Base64.decode(encode)); - System.out.println("ungzip:" + new String(bytes, "UTF-8") ); - System.out.println("length:" + new String(bytes, "UTF-8").length()); + log.info("ungzip:" + new String(bytes, "UTF-8") ); + log.info("length:" + new String(bytes, "UTF-8").length()); } @Test @@ -35,8 +37,7 @@ public class ZipTest { ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("js"); Object result = engine.eval(expr); - System.out.println(result.getClass()); - System.out.println(result); + log.info((String) result); }