Browse Source

消息发送

luowei 2 năm trước cách đây
mục cha
commit
a552be38e9
33 tập tin đã thay đổi với 942 bổ sung201 xóa
  1. 24 0
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteJobService.java
  2. 12 0
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteMessageSendService.java
  3. 4 0
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteUserService.java
  4. 149 0
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/dto/SysJobDTO.java
  5. 13 0
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/dto/SysRoleOrgDTO.java
  6. 33 0
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteJobFallbackFactory.java
  7. 6 0
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteUserFallbackFactory.java
  8. 1 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/constant/ServiceNameConstants.java
  9. 10 8
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/information/controller/CoreMessageCenterController.java
  10. 68 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/information/controller/CoreResumptionConfigurationController.java
  11. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/information/domain/CoreMessageCenter.java
  12. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/information/domain/CoreResumptionConfiguration.java
  13. 79 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/information/dto/CoreMessageCenterDTO.java
  14. 9 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/information/mapper/CoreMessageCenterMapper.java
  15. 2 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/information/mapper/CoreResumptionConfigurationMapper.java
  16. 4 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/information/service/ICoreMessageCenterService.java
  17. 27 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/information/service/ICoreResumptionConfigurationService.java
  18. 14 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/information/service/impl/CoreMessageCenterServiceImpl.java
  19. 22 14
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/information/service/impl/CoreMessageSendServiceImpl.java
  20. 175 39
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/information/service/impl/CoreResumptionConfigurationServiceImpl.java
  21. 15 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/ResumptionMapper.java
  22. 117 93
      soc-modules/soc-modules-core/src/main/resources/mapper/information/CoreMessageCenterMapper.xml
  23. 1 1
      soc-modules/soc-modules-core/src/main/resources/mapper/information/CoreResumptionConfigurationMapper.xml
  24. 26 9
      soc-modules/soc-modules-core/src/main/resources/mapper/resumption/ResumptionMapper.xml
  25. 24 0
      soc-modules/soc-modules-job/src/main/java/com/xunmei/job/controller/SysJobController.java
  26. 1 1
      soc-modules/soc-modules-job/src/main/java/com/xunmei/job/service/impl/SysJobServiceImpl.java
  27. 36 2
      soc-modules/soc-modules-job/src/main/java/com/xunmei/job/task/CoreMessageSendTask.java
  28. 3 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/SocSystemApplication.java
  29. 15 8
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysUserController.java
  30. 26 20
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/mapper/SysUserMapper.java
  31. 3 1
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysUserService.java
  32. 7 2
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysUserServiceImpl.java
  33. 14 0
      soc-modules/soc-modules-system/src/main/resources/mapper/system/SysUserMapper.xml

+ 24 - 0
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteJobService.java

@@ -0,0 +1,24 @@
+package com.xunmei.system.api;
+
+import com.xunmei.common.core.constant.SecurityConstants;
+import com.xunmei.common.core.constant.ServiceNameConstants;
+import com.xunmei.common.core.web.domain.AjaxResult;
+import com.xunmei.system.api.domain.SysRole;
+import com.xunmei.system.api.dto.SysJobDTO;
+import com.xunmei.system.api.factory.RemoteJobFallbackFactory;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @author :LuoWei
+ * @date : 2023/9/22
+ */
+@FeignClient(contextId = "remoteJobService", value = ServiceNameConstants.JOB_SERVICE)
+public interface RemoteJobService {
+
+    @PostMapping("/job/remoteAdd")
+    public AjaxResult remoteAdd(@RequestBody SysJobDTO sysJobDTO, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+
+    @DeleteMapping("/job/remoteRemove")
+    AjaxResult remoteRemove(@RequestParam("jobIds") Long[] jobIds, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+}

+ 12 - 0
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteMessageSendService.java

@@ -24,4 +24,16 @@ public interface RemoteMessageSendService {
      */
     @GetMapping("/send/timedTransmission")
     AjaxResult timedTransmission(@RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+
+
+    @GetMapping("/configuration/resumptionRemind")
+    AjaxResult resumptionRemind(@RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+    @GetMapping("/configuration/font")
+    AjaxResult font(@RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+    @GetMapping("/configuration/centre")
+    AjaxResult centre(@RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+    @GetMapping("/configuration/after")
+    AjaxResult after(@RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+    @GetMapping("/configuration/allDay")
+    AjaxResult allDay(@RequestHeader(SecurityConstants.FROM_SOURCE) String source);
 }

+ 4 - 0
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteUserService.java

@@ -4,6 +4,7 @@ import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.constant.ServiceNameConstants;
 import com.xunmei.common.core.domain.R;
 import com.xunmei.common.core.domain.message.domain.CoreAnnouncementNotificationToRole;
+import com.xunmei.system.api.dto.SysRoleOrgDTO;
 import com.xunmei.system.api.domain.SysUser;
 import com.xunmei.system.api.factory.RemoteUserFallbackFactory;
 import com.xunmei.system.api.model.LoginUser;
@@ -68,4 +69,7 @@ public interface RemoteUserService {
 
     @PostMapping("/user/userListByRole")
     public List<SysUser>  getUserListByRole(@RequestBody List<CoreAnnouncementNotificationToRole> notificationToRoles, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+
+    @PostMapping("/user/userListByRoleAndOrg")
+    public List<SysUser> userListByRoleAndOrg(@RequestBody SysRoleOrgDTO sysRoleOrgDTO, @RequestHeader(SecurityConstants.FROM_SOURCE) String source) ;
 }

+ 149 - 0
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/dto/SysJobDTO.java

@@ -0,0 +1,149 @@
+package com.xunmei.system.api.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.xunmei.common.core.constant.ScheduleConstants;
+import com.xunmei.common.core.utils.StringUtils;
+import com.xunmei.common.core.web.domain.BaseEntity;
+import lombok.Data;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Size;
+import java.util.Date;
+
+/**
+ * @author :LuoWei
+ * @date : 2023/9/22
+ */@Data
+public class SysJobDTO  extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /** 任务ID */
+    private Long jobId;
+
+    /** 任务名称 */
+    private String jobName;
+
+    /** 任务组名 */
+    private String jobGroup;
+
+    /** 调用目标字符串 */
+    private String invokeTarget;
+
+    /** cron执行表达式 */
+    private String cronExpression;
+
+    /** cron计划策略 */
+    private String misfirePolicy = ScheduleConstants.MISFIRE_DEFAULT;
+
+    /** 是否并发执行(0允许 1禁止) */
+    private String concurrent;
+
+    /** 任务状态(0正常 1暂停) */
+    private String status;
+
+    public Long getJobId()
+    {
+        return jobId;
+    }
+
+    public void setJobId(Long jobId)
+    {
+        this.jobId = jobId;
+    }
+
+    @NotBlank(message = "任务名称不能为空")
+    @Size(min = 0, max = 64, message = "任务名称不能超过64个字符")
+    public String getJobName()
+    {
+        return jobName;
+    }
+
+    public void setJobName(String jobName)
+    {
+        this.jobName = jobName;
+    }
+
+    public String getJobGroup()
+    {
+        return jobGroup;
+    }
+
+    public void setJobGroup(String jobGroup)
+    {
+        this.jobGroup = jobGroup;
+    }
+
+    @NotBlank(message = "调用目标字符串不能为空")
+    @Size(min = 0, max = 500, message = "调用目标字符串长度不能超过500个字符")
+    public String getInvokeTarget()
+    {
+        return invokeTarget;
+    }
+
+    public void setInvokeTarget(String invokeTarget)
+    {
+        this.invokeTarget = invokeTarget;
+    }
+
+    @NotBlank(message = "Cron执行表达式不能为空")
+    @Size(min = 0, max = 255, message = "Cron执行表达式不能超过255个字符")
+    public String getCronExpression()
+    {
+        return cronExpression;
+    }
+
+    public void setCronExpression(String cronExpression)
+    {
+        this.cronExpression = cronExpression;
+    }
+
+
+    public String getMisfirePolicy()
+    {
+        return misfirePolicy;
+    }
+
+    public void setMisfirePolicy(String misfirePolicy)
+    {
+        this.misfirePolicy = misfirePolicy;
+    }
+
+    public String getConcurrent()
+    {
+        return concurrent;
+    }
+
+    public void setConcurrent(String concurrent)
+    {
+        this.concurrent = concurrent;
+    }
+
+    public String getStatus()
+    {
+        return status;
+    }
+
+    public void setStatus(String status)
+    {
+        this.status = status;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("jobId", getJobId())
+                .append("jobName", getJobName())
+                .append("jobGroup", getJobGroup())
+                .append("cronExpression", getCronExpression())
+                .append("misfirePolicy", getMisfirePolicy())
+                .append("concurrent", getConcurrent())
+                .append("status", getStatus())
+                .append("createBy", getCreateBy())
+                .append("createTime", getCreateTime())
+                .append("updateBy", getUpdateBy())
+                .append("updateTime", getUpdateTime())
+                .toString();
+    }
+}

+ 13 - 0
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/dto/SysRoleOrgDTO.java

@@ -0,0 +1,13 @@
+package com.xunmei.system.api.dto;
+
+import lombok.Data;
+
+/**
+ * @author :LuoWei
+ * @date : 2023/9/21
+ */
+@Data
+public class SysRoleOrgDTO {
+    private Long orgId;
+    private Long roleId;
+}

+ 33 - 0
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteJobFallbackFactory.java

@@ -0,0 +1,33 @@
+package com.xunmei.system.api.factory;
+
+import com.xunmei.common.core.web.domain.AjaxResult;
+import com.xunmei.system.api.RemoteJobService;
+import com.xunmei.system.api.RemoteLogService;
+import com.xunmei.system.api.dto.SysJobDTO;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cloud.openfeign.FallbackFactory;
+
+/**
+ * @author :LuoWei
+ * @date : 2023/9/22
+ */
+public class RemoteJobFallbackFactory implements FallbackFactory<RemoteJobService> {
+    private static final Logger log = LoggerFactory.getLogger(RemoteJobFallbackFactory.class);
+    @Override
+    public RemoteJobService create(Throwable cause) {
+        log.error("日志服务调用失败:{}", cause.getMessage());
+        return new RemoteJobService(){
+
+            @Override
+            public AjaxResult remoteAdd(SysJobDTO sysJobDTO, String source) {
+                return null;
+            }
+
+            @Override
+            public AjaxResult remoteRemove(Long[] jobIds, String source) {
+                return null;
+            }
+        };
+    }
+}

+ 6 - 0
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteUserFallbackFactory.java

@@ -4,6 +4,7 @@ import com.xunmei.common.core.domain.R;
 import com.xunmei.common.core.domain.message.domain.CoreAnnouncementNotificationToRole;
 import com.xunmei.system.api.RemoteUserService;
 import com.xunmei.system.api.domain.SysUser;
+import com.xunmei.system.api.dto.SysRoleOrgDTO;
 import com.xunmei.system.api.model.LoginUser;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -66,6 +67,11 @@ public class RemoteUserFallbackFactory implements FallbackFactory<RemoteUserServ
                 return new ArrayList<>();
             }
 
+            @Override
+            public List<SysUser> userListByRoleAndOrg(SysRoleOrgDTO sysRoleOrgDTO, String source) {
+                return null;
+            }
+
         };
     }
 }

+ 1 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/constant/ServiceNameConstants.java

@@ -24,4 +24,5 @@ public class ServiceNameConstants
     public static final String CORE_SERVICE = "soc-core";
 
     public static final String SYNC_SERVICE = "soc-sync";
+    public static final String JOB_SERVICE="soc-job";
 }

+ 10 - 8
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/information/controller/CoreMessageCenterController.java

@@ -8,6 +8,7 @@ import com.xunmei.common.log.annotation.Log;
 import com.xunmei.common.log.enums.BusinessType;
 import com.xunmei.common.security.annotation.RequiresPermissions;
 import com.xunmei.core.information.domain.CoreMessageCenter;
+import com.xunmei.core.information.dto.CoreMessageCenterDTO;
 import com.xunmei.core.information.service.ICoreMessageCenterService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -30,15 +31,16 @@ public class CoreMessageCenterController extends BaseController {
 /**
  * 查询消息中心列表
  */
-//@ApiOperation(value = "查询CoreMessageCenter列表")
-//@RequiresPermissions("system:center:list")
-//@GetMapping("/list")
-//    public TableDataInfo<CoreMessageCenter> list(CoreMessageCenter coreMessageCenter) {
-//
-//        return coreMessageCenterService.selectPage( coreMessageCenter);
-//    }
-
 
+@ApiOperation(value = "查询消息列表")
+@RequiresPermissions("system:center:list")
+@GetMapping("/messageList")
+public TableDataInfo<CoreMessageCenter> list(CoreMessageCenterDTO coreMessageCenter) {
+    if (null==coreMessageCenter.getType()){
+        coreMessageCenter.setType("3");
+    }
+    return  coreMessageCenterService.selectByPage(coreMessageCenter);
+}
 
     /**
      * 获取消息中心详细信息

+ 68 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/information/controller/CoreResumptionConfigurationController.java

@@ -5,6 +5,7 @@ import com.xunmei.common.core.web.controller.BaseController;
 import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.common.log.annotation.Log;
 import com.xunmei.common.log.enums.BusinessType;
+import com.xunmei.common.security.annotation.InnerAuth;
 import com.xunmei.common.security.annotation.RequiresPermissions;
 import com.xunmei.core.information.domain.CoreResumptionConfiguration;
 import com.xunmei.core.resumption.dto.CoreResumptionConfigurationDTO;
@@ -14,6 +15,8 @@ import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.time.LocalDate;
+
 /**
  * 履职任务定时提醒Controller
  *
@@ -26,6 +29,7 @@ import org.springframework.web.bind.annotation.*;
 public class CoreResumptionConfigurationController extends BaseController {
     @Autowired
     private ICoreResumptionConfigurationService coreResumptionConfigurationService;
+
     /**
      * 获取履职任务定时提醒详细信息
      */
@@ -40,7 +44,7 @@ public class CoreResumptionConfigurationController extends BaseController {
      * 新增履职任务定时提醒
      */
     @ApiOperation(value = "新增CoreResumptionConfiguration")
-   // @RequiresPermissions("core:configuration:add")
+    // @RequiresPermissions("core:configuration:add")
     @Log(title = "履职任务定时提醒", businessType = BusinessType.INSERT)
     @PostMapping
     public AjaxResult add(@RequestBody CoreResumptionConfigurationDTO coreResumptionConfigurationDTO) {
@@ -68,4 +72,67 @@ public class CoreResumptionConfigurationController extends BaseController {
     public AjaxResult remove(@PathVariable Long[] ids) {
         return toAjax(coreResumptionConfigurationService.deleteCoreResumptionConfigurationByIds(ids));
     }
+
+    /**
+     * 定时发送履职提醒
+     *
+     * @param taskTime
+     * @return
+     */
+    @InnerAuth
+    @GetMapping("/resumptionRemind")
+    public AjaxResult resumptionRemind(@RequestParam(value = "taskTime", required = false) LocalDate taskTime) {
+        try {
+            coreResumptionConfigurationService.resumptionRemind(taskTime);
+            return AjaxResult.success("任务生成成功");
+        } catch (Exception e) {
+            e.printStackTrace();
+            return AjaxResult.error("任务生成失败" + e.getMessage());
+        }
+    }
+
+    @InnerAuth
+    @GetMapping("/font")
+    public AjaxResult font(@RequestParam(value = "taskTime", required = false) LocalDate taskTime) {
+        try {
+            coreResumptionConfigurationService.font();
+            return AjaxResult.success("任务生成成功");
+        } catch (Exception e) {
+            e.printStackTrace();
+            return AjaxResult.error("任务生成失败" + e.getMessage());
+        }
+    }
+    @InnerAuth
+    @GetMapping("/centre")
+    public AjaxResult centre(@RequestParam(value = "taskTime", required = false) LocalDate taskTime) {
+        try {
+            coreResumptionConfigurationService.centre();
+            return AjaxResult.success("任务生成成功");
+        } catch (Exception e) {
+            e.printStackTrace();
+            return AjaxResult.error("任务生成失败" + e.getMessage());
+        }
+    }
+    @InnerAuth
+    @GetMapping("/after")
+    public AjaxResult after(@RequestParam(value = "taskTime", required = false) LocalDate taskTime) {
+        try {
+            coreResumptionConfigurationService.after();
+            return AjaxResult.success("任务生成成功");
+        } catch (Exception e) {
+            e.printStackTrace();
+            return AjaxResult.error("任务生成失败" + e.getMessage());
+        }
+    }
+    @InnerAuth
+    @GetMapping("/allDay")
+    public AjaxResult allDay(@RequestParam(value = "taskTime", required = false) LocalDate taskTime) {
+        try {
+            coreResumptionConfigurationService.allDay();
+            return AjaxResult.success("任务生成成功");
+        } catch (Exception e) {
+            e.printStackTrace();
+            return AjaxResult.error("任务生成失败" + e.getMessage());
+        }
+    }
 }

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/information/domain/CoreMessageCenter.java

@@ -48,7 +48,7 @@ public class CoreMessageCenter extends BaseEntity {
      * 0未读1已读
      */
     @ApiModelProperty(value = "0未读1已读")
-    private String read;
+    private String isRead;
 
     /**
      * 内容

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/information/domain/CoreResumptionConfiguration.java

@@ -33,7 +33,7 @@ private static final long serialVersionUID=1L;
     private Long id;
 
     /** 履职周期 */
-            @ApiModelProperty(value = "履职周期")
+            @ApiModelProperty(value = "履职周期2天3周4月5季度6半年7年")
     private String resumptionCycle;
 
     /** $column.columnComment */

+ 79 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/information/dto/CoreMessageCenterDTO.java

@@ -0,0 +1,79 @@
+package com.xunmei.core.information.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.xunmei.common.core.web.domain.PageRequest;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author :LuoWei
+ * @date : 2023/9/22
+ */
+@Data
+public class CoreMessageCenterDTO extends PageRequest {
+    /**
+     * 主键
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+
+    /**
+     * 1公告通知2业务提醒
+     */
+    @ApiModelProperty(value = "1公告通知2业务提醒3消息")
+    private String type;
+
+    /**
+     * 标题
+     */
+    @ApiModelProperty(value = "标题")
+    private String title;
+
+    /**
+     * 0未读1已读
+     */
+    @ApiModelProperty(value = "0未读1已读")
+    private String isRead;
+
+    /**
+     * 内容
+     */
+    @ApiModelProperty(value = "内容")
+    private String content;
+
+    /**
+     * 0未2删
+     */
+    private String delFlag = "0";
+    /**
+     * 用户ID
+     */
+    private Long userId;
+
+
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    /**
+     * 更新者
+     */
+
+    private String updateBy;
+
+    /**
+     * 更新时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+}

+ 9 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/information/mapper/CoreMessageCenterMapper.java

@@ -2,7 +2,13 @@ package com.xunmei.core.information.mapper;
 
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.xunmei.common.core.domain.retrieval.domain.CoreMonitoringRetrievalTask;
+import com.xunmei.core.access.dto.CoreMonitoringTaskRegistrationDTO;
 import com.xunmei.core.information.domain.CoreMessageCenter;
+import com.xunmei.core.information.dto.CoreMessageCenterDTO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -12,7 +18,10 @@ import java.util.List;
  * @author xunmei
  * @date 2023-09-19
  */
+@Mapper
 public interface CoreMessageCenterMapper extends BaseMapper<CoreMessageCenter> {
+
+    Page<CoreMessageCenter> selectByPage(Page<CoreMessageCenter> page, @Param("request") CoreMessageCenterDTO request);
     /**
      * 查询消息中心
      *

+ 2 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/information/mapper/CoreResumptionConfigurationMapper.java

@@ -3,6 +3,7 @@ package com.xunmei.core.information.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.xunmei.core.information.domain.CoreResumptionConfiguration;
+import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
 
@@ -12,6 +13,7 @@ import java.util.List;
  * @author xunmei
  * @date 2023-09-14
  */
+@Mapper
 public interface CoreResumptionConfigurationMapper extends BaseMapper<CoreResumptionConfiguration> {
     /**
      * 查询履职任务定时提醒

+ 4 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/information/service/ICoreMessageCenterService.java

@@ -3,7 +3,9 @@ package com.xunmei.core.information.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.xunmei.common.core.web.page.TableDataInfo;
+import com.xunmei.core.access.dto.CoreMonitoringTaskRegistrationDTO;
 import com.xunmei.core.information.domain.CoreMessageCenter;
+import com.xunmei.core.information.dto.CoreMessageCenterDTO;
 
 import java.util.List;
 
@@ -30,6 +32,8 @@ public interface ICoreMessageCenterService extends IService<CoreMessageCenter> {
      */
     List<CoreMessageCenter> selectCoreMessageCenterList(CoreMessageCenter coreMessageCenter);
 
+
+    TableDataInfo selectByPage(CoreMessageCenterDTO coreMessageCenterDTO);
     /**
      * 新增消息中心
      *

+ 27 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/information/service/ICoreResumptionConfigurationService.java

@@ -6,6 +6,7 @@ import com.xunmei.core.information.domain.CoreResumptionConfiguration;
 import com.xunmei.core.resumption.dto.CoreResumptionConfigurationDTO;
 import com.xunmei.core.resumption.vo.CoreResumptionConfigurationVO;
 
+import java.time.LocalDate;
 import java.util.List;
 
 /**
@@ -63,4 +64,30 @@ public interface ICoreResumptionConfigurationService extends IService<CoreResump
      */
     int deleteCoreResumptionConfigurationById(Long id);
 
+    /**
+     * 履职提醒
+     *
+     * @param taskTime
+     */
+    void resumptionRemind(LocalDate taskTime);
+
+    /**
+     * 每日营业前
+     */
+    void font();
+
+    /**
+     * 每日营业中
+     */
+    void centre();
+
+    /**
+     * 每日营业后
+     */
+    void after();
+
+    /**
+     * 每日全天
+     */
+    void allDay();
 }

+ 14 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/information/service/impl/CoreMessageCenterServiceImpl.java

@@ -2,10 +2,13 @@ package com.xunmei.core.information.service.impl;
 
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xunmei.common.core.domain.retrieval.domain.CoreMonitoringRetrievalTask;
 import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.core.information.domain.CoreMessageCenter;
+import com.xunmei.core.information.dto.CoreMessageCenterDTO;
 import com.xunmei.core.information.mapper.CoreMessageCenterMapper;
 import com.xunmei.core.information.service.ICoreMessageCenterService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -47,6 +50,17 @@ public class CoreMessageCenterServiceImpl extends ServiceImpl<CoreMessageCenterM
         return coreMessageCenterMapper.selectList(new QueryWrapper<>(coreMessageCenter));
     }
 
+    @Override
+    public TableDataInfo selectByPage(CoreMessageCenterDTO coreMessageCenterDTO) {
+        Page<CoreMessageCenter> coreMessageCenterPage = coreMessageCenterMapper.selectByPage(coreMessageCenterDTO.getPageRequest(), coreMessageCenterDTO);
+        TableDataInfo<CoreMessageCenter> tableDataInfo = new TableDataInfo();
+        tableDataInfo.setMsg("操作成功");
+        tableDataInfo.setCode(200);
+        tableDataInfo.setTotal(coreMessageCenterPage.getTotal());
+        tableDataInfo.setRows(coreMessageCenterPage.getRecords());
+        return tableDataInfo;
+    }
+
     /**
      * 新增消息中心
      *

+ 22 - 14
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/information/service/impl/CoreMessageSendServiceImpl.java

@@ -100,7 +100,7 @@ public class CoreMessageSendServiceImpl extends ServiceImpl<CoreMessageSendMappe
                 CoreMessageCenter coreMessageCenter = new CoreMessageCenter();
                 coreMessageCenter.setTitle(coreMessageSend.getTitle());
                 coreMessageCenter.setContent(coreMessageSend.getContent());
-                coreMessageCenter.setRead("0");
+                coreMessageCenter.setIsRead("0");
                 coreMessageCenter.setType("3");
                 coreMessageCenter.setCreateTime(DateUtils.getNowDate());
                 coreMessageCenter.setCreateBy(coreMessageSend.getCreateBy());
@@ -161,25 +161,27 @@ public class CoreMessageSendServiceImpl extends ServiceImpl<CoreMessageSendMappe
             taskTime = LocalDate.now();
         }
         CoreMessageSend coreMessageSend = new CoreMessageSend();
-Date nowTime=null;
-        SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd");
-        SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        String format = sd.format(new Date())+" 00:00:00";
+        Date nowTime = null;
+        SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String format = sd.format(new Date()) + " 00:00:00";
         try {
-            nowTime=simpleDateFormat.parse(format);
-        }catch (Exception e){
+            nowTime = simpleDateFormat.parse(format);
+        } catch (Exception e) {
             e.getMessage();
         }
         coreMessageSend.setSendTime(nowTime);
+        //查询符合条件的
         List<CoreMessageSend> coreMessageSends = baseMapper.selectBySendTime(coreMessageSend);
         if (CollectionUtil.isNotEmpty(coreMessageSends)) {
             List<Long> collect = new ArrayList<>();
-            List<CoreMessageCenter> coreMessageCenters = new ArrayList<>();
+
             for (CoreMessageSend c : coreMessageSends) {
+                List<CoreMessageCenter> coreMessageCenters = new ArrayList<>();
                 if (null != c.getSendRole()) {
                     List<CoreAnnouncementNotificationToRole> notificationToRoles = new ArrayList<>();
                     CoreAnnouncementNotificationToRole coreAnnouncementNotificationToRole = new CoreAnnouncementNotificationToRole();
-                    coreAnnouncementNotificationToRole.setRoleId(coreMessageSend.getSendRole());
+                    coreAnnouncementNotificationToRole.setRoleId(c.getSendRole());
                     notificationToRoles.add(coreAnnouncementNotificationToRole);
                     List<SysUser> userListByRole = remoteUserService.getUserListByRole(notificationToRoles, SecurityConstants.INNER);
                     collect = userListByRole.stream().map(SysUser::getId).collect(Collectors.toList());
@@ -187,17 +189,23 @@ Date nowTime=null;
                 collect.add(c.getSendUser());
                 for (Long userId : collect) {
                     CoreMessageCenter coreMessageCenter = new CoreMessageCenter();
-                    coreMessageCenter.setTitle(coreMessageSend.getTitle());
-                    coreMessageCenter.setContent(coreMessageSend.getContent());
-                    coreMessageCenter.setRead("0");
+                    coreMessageCenter.setTitle(c.getTitle());
+                    coreMessageCenter.setContent(c.getContent());
+                    coreMessageCenter.setIsRead("0");
                     coreMessageCenter.setType("3");
                     coreMessageCenter.setCreateTime(DateUtils.getNowDate());
-                    coreMessageCenter.setCreateBy(coreMessageSend.getCreateBy());
+                    coreMessageCenter.setCreateBy(c.getCreateBy());
                     coreMessageCenter.setUserId(userId);
                     coreMessageCenters.add(coreMessageCenter);
                 }
+                boolean b = coreMessageCenterService.saveBatch(coreMessageCenters);
+                //如果定时成功,修改为已发送状态
+                if (b) {
+                    c.setSendStatus("1");
+                    coreMessageSendMapper.updateById(c);
+                }
             }
-            coreMessageCenterService.saveBatch(coreMessageCenters);
+
         }
     }
 

+ 175 - 39
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/information/service/impl/CoreResumptionConfigurationServiceImpl.java

@@ -2,18 +2,36 @@ package com.xunmei.core.information.service.impl;
 
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xunmei.common.core.constant.SecurityConstants;
+import com.xunmei.common.core.web.domain.AjaxResult;
+import com.xunmei.core.information.service.ICoreMessageCenterService;
+import com.xunmei.system.api.RemoteJobService;
+import com.xunmei.system.api.domain.SysUser;
+import com.xunmei.system.api.dto.SysJobDTO;
+import com.xunmei.system.api.dto.SysRoleOrgDTO;
 import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.security.utils.SecurityUtils;
+import com.xunmei.core.information.domain.CoreMessageCenter;
 import com.xunmei.core.information.domain.CoreResumptionConfiguration;
+import com.xunmei.core.information.mapper.CoreMessageCenterMapper;
+import com.xunmei.core.resumption.domain.Resumption;
 import com.xunmei.core.resumption.dto.CoreResumptionConfigurationDTO;
 import com.xunmei.core.information.mapper.CoreResumptionConfigurationMapper;
 import com.xunmei.core.information.service.ICoreResumptionConfigurationService;
+import com.xunmei.core.resumption.mapper.ResumptionMapper;
 import com.xunmei.core.resumption.vo.CoreResumptionConfigurationVO;
+import com.xunmei.system.api.RemoteUserService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Calendar;
 import java.util.List;
 
 /**
@@ -26,50 +44,20 @@ import java.util.List;
 public class CoreResumptionConfigurationServiceImpl extends ServiceImpl<CoreResumptionConfigurationMapper, CoreResumptionConfiguration> implements ICoreResumptionConfigurationService {
     @Autowired
     private CoreResumptionConfigurationMapper coreResumptionConfigurationMapper;
-   /* @Autowired
-    private ISysOrgService orgService;*/
-
-/*    @Override
-    public TableDataInfo<CoreResumptionConfiguration> selectPage(CoreResumptionConfiguration coreResumptionConfiguration) {
-        //未删除
-        coreResumptionConfiguration.setDeleted(0L);
-        Page<CoreResumptionConfiguration> page;
-        //分页
-        if (coreResumptionConfiguration.getPageNum()!=null&&coreResumptionConfiguration.getPageSize()!=null)
-        {
-            page = new Page<>(coreResumptionConfiguration.getPageNum(), coreResumptionConfiguration.getPageSize());
-        }else{
-            page = new Page<>();
-        }
-        //查询条件
-        QueryWrapper<CoreResumptionConfiguration> query = new QueryWrapper<>(coreResumptionConfiguration);
-        //下穿
-        if (coreResumptionConfiguration.getCheckSub()){
-            List<Long> ids = orgService.selectCheckSubOrgIdList(coreResumptionConfiguration.getOrgId());
-            //清空前端传递的org_id
-            coreResumptionConfiguration.setOrgId(null);
-            //添加in条件
-            query.in("org_id",ids);
-        }
-        //时间范围查询
-        if (coreResumptionConfiguration.getParams().get("beginTime")!=null&&coreResumptionConfiguration.getParams().get("endTime")!=null){
-            query.between("create_time", coreResumptionConfiguration.getParams().get("beginTime"), coreResumptionConfiguration.getParams().get("endTime"));
-        }
-        //获取数据
-        page = coreResumptionConfigurationMapper.selectPage(page, query);
-        //抓换为TableDataInfo适配前端
-        return TableDataInfo.build(page);
-
-
-
-
-    }*/
+    @Autowired
+    private ResumptionMapper resumptionMapper;
 
+    @Autowired
+    private RemoteUserService remoteUserService;
+    @Autowired
+    private ICoreMessageCenterService coreMessageCenterService;
+    @Autowired
+    private RemoteJobService remoteJobService;
 
     /**
      * 查询履职任务定时提醒
      *
-     * @param id 履职任务定时提醒主键
+     * @param
      * @return 履职任务定时提醒
      */
     @Override
@@ -99,6 +87,8 @@ public class CoreResumptionConfigurationServiceImpl extends ServiceImpl<CoreResu
      */
     @Override
     public int insertCoreResumptionConfiguration(CoreResumptionConfigurationDTO coreResumptionConfiguration) {
+        Long[] jobIds = {100l, 101L, 102L, 103L};
+        remoteJobService.remoteRemove(jobIds, SecurityConstants.INNER);
         int insert = 0;
         for (CoreResumptionConfiguration c : coreResumptionConfiguration.getCoreResumptionConfiguration()) {
             if (null == c.getId()) {
@@ -110,6 +100,43 @@ public class CoreResumptionConfigurationServiceImpl extends ServiceImpl<CoreResu
                 c.setUpdateBy(SecurityUtils.getUsername());
                 insert = coreResumptionConfigurationMapper.updateById(c);
             }
+            //每天
+            if (c.getResumptionCycle().equals("2")) {
+                SysJobDTO sysJobDTO = new SysJobDTO();
+                sysJobDTO.setJobName("营业前定时提醒");
+                sysJobDTO.setJobGroup("DEFAULT");
+                String front = "0 0 " + c.getFront() + " * * ?";
+                sysJobDTO.setCronExpression(front);
+                sysJobDTO.setMisfirePolicy("1");
+                sysJobDTO.setConcurrent("1");
+                sysJobDTO.setCreateBy(SecurityUtils.getUsername());
+                sysJobDTO.setJobId(100L);
+                sysJobDTO.setInvokeTarget("CoreMessageSendTask.font");
+                sysJobDTO.setStatus("0");
+                //营业前
+                remoteJobService.remoteAdd(sysJobDTO, SecurityConstants.INNER);
+                sysJobDTO.setJobName("营业中定时提醒");
+                String centre = "0 0 " + c.getCentre() + " * * ?";
+                sysJobDTO.setCronExpression(centre);
+                sysJobDTO.setJobId(101L);
+                sysJobDTO.setInvokeTarget("CoreMessageSendTask.centre");
+                //营业中
+                remoteJobService.remoteAdd(sysJobDTO, SecurityConstants.INNER);
+                sysJobDTO.setJobName("营业后定时提醒");
+                String after = "0 0 " + c.getAfter() + " * * ?";
+                sysJobDTO.setCronExpression(after);
+                sysJobDTO.setJobId(102L);
+                sysJobDTO.setInvokeTarget("CoreMessageSendTask.after");
+                //营业后
+                remoteJobService.remoteAdd(sysJobDTO, SecurityConstants.INNER);
+                sysJobDTO.setJobName("全天定时提醒");
+                String allDay = "0 0 " + c.getAllDay() + " * * ?";
+                sysJobDTO.setCronExpression(allDay);
+                sysJobDTO.setJobId(103L);
+                sysJobDTO.setInvokeTarget("CoreMessageSendTask.allDay");
+                //全天
+                remoteJobService.remoteAdd(sysJobDTO, SecurityConstants.INNER);
+            }
             if (insert < 1) {
                 return insert;
             }
@@ -150,4 +177,113 @@ public class CoreResumptionConfigurationServiceImpl extends ServiceImpl<CoreResu
     public int deleteCoreResumptionConfigurationById(Long id) {
         return coreResumptionConfigurationMapper.deleteById(id);
     }
+
+    private String getTime(int time) {
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        Calendar c = Calendar.getInstance();
+        c.set(Calendar.HOUR_OF_DAY, 0);
+        c.set(Calendar.MINUTE, 0);
+        c.set(Calendar.SECOND, 0);
+        c.set(Calendar.MILLISECOND, 0);
+        c.add(Calendar.DAY_OF_MONTH, time);
+        System.out.print(simpleDateFormat.format(c.getTime()));
+        return simpleDateFormat.format(c.getTime());
+    }
+
+    private void addMassageCenter(String taskName, String time, String cycle, Long orgId, Long roleId) {
+        SysRoleOrgDTO sysRoleOrgDTO = new SysRoleOrgDTO();
+        sysRoleOrgDTO.setRoleId(roleId);
+        sysRoleOrgDTO.setOrgId(orgId);
+        //根据角色和机构查人
+        List<SysUser> sysUsers = remoteUserService.userListByRoleAndOrg(sysRoleOrgDTO, SecurityConstants.INNER);
+        if (CollectionUtils.isNotEmpty(sysUsers)) {
+            List<CoreMessageCenter> coreMessageCenters = new ArrayList<>();
+            for (SysUser sysUser : sysUsers) {
+                CoreMessageCenter coreMessageCenter = new CoreMessageCenter();
+                coreMessageCenter.setType("2");
+                coreMessageCenter.setTitle("履职临期提醒");
+                coreMessageCenter.setIsRead("0");
+                String timeUnit = "天";
+                if (cycle.equals("1")) {
+                    coreMessageCenter.setContent("您有履职任务" + taskName + "快到期");
+                }else {
+                    coreMessageCenter.setContent("您有履职任务" + taskName + "还有" + time + timeUnit + "到期");
+                }
+                coreMessageCenter.setUserId(sysUser.getId());
+                coreMessageCenter.setCreateTime(DateUtils.getNowDate());
+                coreMessageCenter.setId(IdWorker.getId());
+                coreMessageCenters.add(coreMessageCenter);
+            }
+            coreMessageCenterService.saveBatch(coreMessageCenters);
+        }
+
+    }
+
+    @Override
+    public void resumptionRemind(LocalDate taskTime) {
+        List<CoreResumptionConfiguration> coreResumptionConfigurations = baseMapper.selectCoreResumptionConfigurationList(new CoreResumptionConfiguration());
+        for (CoreResumptionConfiguration c : coreResumptionConfigurations) {
+            switch (c.getResumptionCycle()) {
+                //天
+                case "2":
+                    break;
+
+                //默认为周月季度年等
+                default:
+                    //查询临期任务,只匹配年月日
+                    List<Resumption> resumptions = resumptionMapper.selectAllByPlanStartTime(Integer.valueOf(c.getResumptionCycle()), getTime(Integer.parseInt(c.getAllDay())));
+                    resumptions.forEach(resumption -> {
+                        addMassageCenter(resumption.getName(), c.getAllDay(), c.getTimeUnit(), resumption.getOrgId(), resumption.getRoleId());
+                    });
+            }
+        }
+    }
+
+    @Override
+    public void font() {
+        CoreResumptionConfiguration coreResumptionConfiguration=new CoreResumptionConfiguration();
+        coreResumptionConfiguration.setTimeUnit("1");
+        coreResumptionConfiguration.setDelFlag("0");
+        List<CoreResumptionConfiguration> coreResumptionConfigurations = baseMapper.selectCoreResumptionConfigurationList(coreResumptionConfiguration);
+        List<Resumption> resumptions = resumptionMapper.selectDay(getTime(0),"2");
+        resumptions.forEach(r->{
+            addMassageCenter(r.getName(),null, coreResumptionConfigurations.get(0).getTimeUnit(),r.getOrgId(),r.getRoleId());
+        });
+    }
+
+    @Override
+    public void centre() {
+        CoreResumptionConfiguration coreResumptionConfiguration=new CoreResumptionConfiguration();
+        coreResumptionConfiguration.setTimeUnit("1");
+        coreResumptionConfiguration.setDelFlag("0");
+        List<CoreResumptionConfiguration> coreResumptionConfigurations = baseMapper.selectCoreResumptionConfigurationList(coreResumptionConfiguration);
+        List<Resumption> resumptions = resumptionMapper.selectDay(getTime(0),"3");
+        resumptions.forEach(r->{
+            addMassageCenter(r.getName(),null, coreResumptionConfigurations.get(0).getTimeUnit(),r.getOrgId(),r.getRoleId());
+        });
+    }
+
+    @Override
+    public void after() {
+        CoreResumptionConfiguration coreResumptionConfiguration=new CoreResumptionConfiguration();
+        coreResumptionConfiguration.setTimeUnit("1");
+        coreResumptionConfiguration.setDelFlag("0");
+        List<CoreResumptionConfiguration> coreResumptionConfigurations = baseMapper.selectCoreResumptionConfigurationList(coreResumptionConfiguration);
+        List<Resumption> resumptions = resumptionMapper.selectDay(getTime(0),"4");
+        resumptions.forEach(r->{
+            addMassageCenter(r.getName(),null, coreResumptionConfigurations.get(0).getTimeUnit(),r.getOrgId(),r.getRoleId());
+        });
+    }
+
+    @Override
+    public void allDay() {
+        CoreResumptionConfiguration coreResumptionConfiguration=new CoreResumptionConfiguration();
+        coreResumptionConfiguration.setTimeUnit("1");
+        coreResumptionConfiguration.setDelFlag("0");
+        List<CoreResumptionConfiguration> coreResumptionConfigurations = baseMapper.selectCoreResumptionConfigurationList(coreResumptionConfiguration);
+        List<Resumption> resumptions = resumptionMapper.selectDay(getTime(0),"1");
+        resumptions.forEach(r->{
+            addMassageCenter(r.getName(),null, coreResumptionConfigurations.get(0).getTimeUnit(),r.getOrgId(),r.getRoleId());
+        });
+    }
 }

+ 15 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/ResumptionMapper.java

@@ -27,4 +27,19 @@ public interface ResumptionMapper extends BaseMapper<Resumption> {
     void updateResumption(@Param("resumption") Resumption resumption);
 
     List<ResumptionAppVo> findResumptionApp(@Param("res") ResumptionTaskNewDto res);
+
+    /**
+     * 根据类型和计划结束时间查询履职
+     * @param type
+     * @param planEndTime
+     * @return
+     */
+    List<Resumption>selectAllByPlanStartTime(@Param("type")Integer type,@Param("planEndTime")String planEndTime);
+
+    /**
+     * 根据时间和plan_exec查询每天
+     * @param planEndTime
+     * @return
+     */
+    List<Resumption>selectDay(@Param("planEndTime")String planEndTime,@Param("planExec")String planExec);
 }

+ 117 - 93
soc-modules/soc-modules-core/src/main/resources/mapper/information/CoreMessageCenterMapper.xml

@@ -5,20 +5,29 @@
 <mapper namespace="com.xunmei.core.information.mapper.CoreMessageCenterMapper">
 
     <resultMap type="com.xunmei.core.information.domain.CoreMessageCenter" id="CoreMessageCenterResult">
-                <result property="id" column="id"/>
-                <result property="type" column="type"/>
-                <result property="title" column="title"/>
-                <result property="read" column="read"/>
-                <result property="content" column="content"/>
-                <result property="delFlag" column="del_flag"/>
-                <result property="createTime" column="create_time"/>
-                <result property="createBy" column="create_by"/>
-                <result property="updateBy" column="update_by"/>
-                <result property="updateTime" column="update_time"/>
+        <result property="id" column="id"/>
+        <result property="type" column="type"/>
+        <result property="title" column="title"/>
+        <result property="isRead" column="is_read"/>
+        <result property="content" column="content"/>
+        <result property="delFlag" column="del_flag"/>
+        <result property="createTime" column="create_time"/>
+        <result property="createBy" column="create_by"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
     </resultMap>
 
     <sql id="selectCoreMessageCenterVo">
-        select id, type, title, read, content, del_flag, create_time, create_by, update_by, update_time
+        select id,
+               type,
+               title,
+               is_read,
+               content,
+               del_flag,
+               create_time,
+               create_by,
+               update_by,
+               update_time
         from core_message_center
     </sql>
 
@@ -26,112 +35,127 @@
             resultMap="CoreMessageCenterResult">
         <include refid="selectCoreMessageCenterVo"/>
         <where>
-                        <if test="type != null  and type != ''">
-                            and type = #{type}
-                        </if>
-                        <if test="title != null  and title != ''">
-                            and title = #{title}
-                        </if>
-                        <if test="read != null  and read != ''">
-                            and read = #{read}
-                        </if>
-                        <if test="content != null  and content != ''">
-                            and content = #{content}
-                        </if>
+            <if test="type != null  and type != ''">
+                and type = #{type}
+            </if>
+            <if test="title != null  and title != ''">
+                and title = #{title}
+            </if>
+            <if test="isRead != null  and isRead != ''">
+                and is_read = #{isRead}
+            </if>
+            <if test="content != null  and content != ''">
+                and content = #{content}
+            </if>
         </where>
     </select>
 
     <select id="selectCoreMessageCenterById" parameterType="Long"
             resultMap="CoreMessageCenterResult">
-            <include refid="selectCoreMessageCenterVo"/>
-            where id = #{id}
+        <include refid="selectCoreMessageCenterVo"/>
+        where id = #{id}
+    </select>
+    <select id="selectByPage" resultType="com.xunmei.core.information.domain.CoreMessageCenter">
+        SELECT
+        *
+        FROM
+        core_message_center
+        WHERE
+        del_flag =0
+        <if test="request.type != null ">
+            and type = #{request.type}
+        </if>
+        <if test="request.userId !=null">
+            and user_id=#{request.userId}
+        </if>
     </select>
 
     <insert id="insertCoreMessageCenter" parameterType="com.xunmei.core.information.domain.CoreMessageCenter">
         insert into core_message_center
         <trim prefix="(" suffix=")" suffixOverrides=",">
-                    <if test="id != null">id,
-                    </if>
-                    <if test="type != null">type,
-                    </if>
-                    <if test="title != null">title,
-                    </if>
-                    <if test="read != null">read,
-                    </if>
-                    <if test="content != null">content,
-                    </if>
-                    <if test="delFlag != null">del_flag,
-                    </if>
-                    <if test="createTime != null">create_time,
-                    </if>
-                    <if test="createBy != null">create_by,
-                    </if>
-                    <if test="updateBy != null">update_by,
-                    </if>
-                    <if test="updateTime != null">update_time,
-                    </if>
+            <if test="id != null">id,
+            </if>
+            <if test="type != null">type,
+            </if>
+            <if test="title != null">title,
+            </if>
+            <if test="isRead != null">is_read,
+            </if>
+            <if test="content != null">content,
+            </if>
+            <if test="delFlag != null">del_flag,
+            </if>
+            <if test="createTime != null">create_time,
+            </if>
+            <if test="createBy != null">create_by,
+            </if>
+            <if test="updateBy != null">update_by,
+            </if>
+            <if test="updateTime != null">update_time,
+            </if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
-                    <if test="id != null">#{id},
-                    </if>
-                    <if test="type != null">#{type},
-                    </if>
-                    <if test="title != null">#{title},
-                    </if>
-                    <if test="read != null">#{read},
-                    </if>
-                    <if test="content != null">#{content},
-                    </if>
-                    <if test="delFlag != null">#{delFlag},
-                    </if>
-                    <if test="createTime != null">#{createTime},
-                    </if>
-                    <if test="createBy != null">#{createBy},
-                    </if>
-                    <if test="updateBy != null">#{updateBy},
-                    </if>
-                    <if test="updateTime != null">#{updateTime},
-                    </if>
+            <if test="id != null">#{id},
+            </if>
+            <if test="type != null">#{type},
+            </if>
+            <if test="title != null">#{title},
+            </if>
+            <if test="isRead != null">#{isRead},
+            </if>
+            <if test="content != null">#{content},
+            </if>
+            <if test="delFlag != null">#{delFlag},
+            </if>
+            <if test="createTime != null">#{createTime},
+            </if>
+            <if test="createBy != null">#{createBy},
+            </if>
+            <if test="updateBy != null">#{updateBy},
+            </if>
+            <if test="updateTime != null">#{updateTime},
+            </if>
         </trim>
     </insert>
 
     <update id="updateCoreMessageCenter" parameterType="com.xunmei.core.information.domain.CoreMessageCenter">
         update core_message_center
         <trim prefix="SET" suffixOverrides=",">
-                    <if test="type != null">type =
-                        #{type},
-                    </if>
-                    <if test="title != null">title =
-                        #{title},
-                    </if>
-                    <if test="read != null">read =
-                        #{read},
-                    </if>
-                    <if test="content != null">content =
-                        #{content},
-                    </if>
-                    <if test="delFlag != null">del_flag =
-                        #{delFlag},
-                    </if>
-                    <if test="createTime != null">create_time =
-                        #{createTime},
-                    </if>
-                    <if test="createBy != null">create_by =
-                        #{createBy},
-                    </if>
-                    <if test="updateBy != null">update_by =
-                        #{updateBy},
-                    </if>
-                    <if test="updateTime != null">update_time =
-                        #{updateTime},
-                    </if>
+            <if test="type != null">type =
+                #{type},
+            </if>
+            <if test="title != null">title =
+                #{title},
+            </if>
+            <if test="isRead != null">is_read =
+                #{isRead},
+            </if>
+            <if test="content != null">content =
+                #{content},
+            </if>
+            <if test="delFlag != null">del_flag =
+                #{delFlag},
+            </if>
+            <if test="createTime != null">create_time =
+                #{createTime},
+            </if>
+            <if test="createBy != null">create_by =
+                #{createBy},
+            </if>
+            <if test="updateBy != null">update_by =
+                #{updateBy},
+            </if>
+            <if test="updateTime != null">update_time =
+                #{updateTime},
+            </if>
         </trim>
         where id = #{id}
     </update>
 
     <delete id="deleteCoreMessageCenterById" parameterType="Long">
         delete
-        from core_message_center where id = #{id}
+        from core_message_center
+        where id = #{id}
     </delete>
 
     <delete id="deleteCoreMessageCenterByIds" parameterType="String">

+ 1 - 1
soc-modules/soc-modules-core/src/main/resources/mapper/information/CoreResumptionConfigurationMapper.xml

@@ -19,7 +19,7 @@
     </resultMap>
 
     <sql id="selectCoreResumptionConfigurationVo">
-        select id, resumption_cycle, create_by, create_time, update_by, update_time, del_flag, all_day, front, centre, after
+        select id, resumption_cycle, create_by, create_time, update_by, update_time, del_flag, all_day, front, centre, after,time_unit
         from core_resumption_configuration
     </sql>
 

+ 26 - 9
soc-modules/soc-modules-core/src/main/resources/mapper/resumption/ResumptionMapper.xml

@@ -4,15 +4,15 @@
     <update id="updateResumption">
         update core_resumption
         set update_by=#{resumption.updateBy},
-            update_time=#{resumption.updateTime},
-            exception_count=#{resumption.exceptionCount},
-            status=#{resumption.status},
-            submit_time=#{resumption.submitTime},
-            start_time=#{resumption.startTime},
-            end_time=#{resumption.endTime}
+        update_time=#{resumption.updateTime},
+        exception_count=#{resumption.exceptionCount},
+        status=#{resumption.status},
+        submit_time=#{resumption.submitTime},
+        start_time=#{resumption.startTime},
+        end_time=#{resumption.endTime}
         where id = #{resumption.id}
-<!--          and ymd_year = #{resumption.ymd.year}-->
-<!--          and ymd_quarter = #{resumption.ymd.quarter}-->
+        <!--          and ymd_year = #{resumption.ymd.year}-->
+        <!--          and ymd_quarter = #{resumption.ymd.quarter}-->
     </update>
 
 
@@ -89,7 +89,7 @@
           and ymd_quarter = #{quarter}
     </select>
     <select id="findOneByTaskId" resultType="java.util.Map">
-        SELECT a.update_by AS submitBy,
+        SELECT a.update_by     AS submitBy,
                a.submit_time   AS submitTime,
                a.id            AS id,
                b.plan_name     AS title,
@@ -125,4 +125,21 @@
             and r.ymd_date = #{res.dateTime}
         </if>
     </select>
+    <select id="selectAllByPlanStartTime" resultType="com.xunmei.core.resumption.domain.Resumption">
+        SELECT *
+        FROM core_resumption
+        WHERE `status` =1 and type = #{type}
+          and plan_end_time like concat(#{planEndTime}, '%')
+    </select>
+    <select id="selectDay" resultType="com.xunmei.core.resumption.domain.Resumption">
+        SELECT
+            a.*
+        FROM
+            core_resumption a
+                LEFT JOIN core_resumption_plan b ON a.plan_id = b.id
+        WHERE
+            a.type =2 AND b.plan_exec=#{planExec} and a.`status` =1
+          AND a.plan_end_time like concat(#{planEndTime}, '%')
+
+    </select>
 </mapper>

+ 24 - 0
soc-modules/soc-modules-job/src/main/java/com/xunmei/job/controller/SysJobController.java

@@ -8,13 +8,16 @@ import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.common.log.annotation.Log;
 import com.xunmei.common.log.enums.BusinessType;
+import com.xunmei.common.security.annotation.InnerAuth;
 import com.xunmei.common.security.annotation.RequiresPermissions;
 import com.xunmei.common.security.utils.SecurityUtils;
 import com.xunmei.job.domain.SysJob;
 import com.xunmei.job.service.ISysJobService;
 import com.xunmei.job.util.CronUtils;
 import com.xunmei.job.util.ScheduleUtils;
+import com.xunmei.system.api.dto.SysJobDTO;
 import org.quartz.SchedulerException;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -51,6 +54,27 @@ public class SysJobController extends BaseController
         return success(jobService.selectJobById(jobId));
     }
 
+    @RequiresPermissions("monitor:job:add")
+    @Log(title = "定时任务远程", businessType = BusinessType.INSERT)
+    @InnerAuth
+    @PostMapping("/remoteAdd")
+    public AjaxResult remoteAdd(@RequestBody SysJobDTO sysJobDTO) throws SchedulerException, TaskException
+    {
+        SysJob job=new SysJob();
+        BeanUtils.copyProperties(sysJobDTO,job);
+        job.setCreateBy(SecurityUtils.getUsername());
+        return toAjax(jobService.insertJob(job));
+    }
+
+    @RequiresPermissions("monitor:job:remove")
+    @Log(title = "远程删除定时任务", businessType = BusinessType.DELETE)
+    @InnerAuth
+    @DeleteMapping("/remoteRemove")
+    public AjaxResult remoteRemove( Long[] jobIds) throws SchedulerException, TaskException
+    {
+        jobService.deleteJobByIds(jobIds);
+        return success();
+    }
     /**
      * 新增定时任务
      */

+ 1 - 1
soc-modules/soc-modules-job/src/main/java/com/xunmei/job/service/impl/SysJobServiceImpl.java

@@ -203,7 +203,7 @@ public class SysJobServiceImpl extends ServiceImpl<SysJobMapper, SysJob> impleme
     @Override
     @Transactional(rollbackFor = Exception.class)
     public int insertJob(SysJob job) throws SchedulerException, TaskException {
-        job.setStatus(ScheduleConstants.Status.PAUSE.getValue());
+        job.setStatus(ScheduleConstants.Status.NORMAL.getValue());
         int rows = jobMapper.insertJob(job);
         if (rows > 0) {
             ScheduleUtils.createScheduleJob(scheduler, job);

+ 36 - 2
soc-modules/soc-modules-job/src/main/java/com/xunmei/job/task/CoreMessageSendTask.java

@@ -20,14 +20,48 @@ import java.util.Date;
 public class CoreMessageSendTask {
     @Resource
     private RemoteMessageSendService remoteMessageSendService;
+
     /**
-     * 每天凌晨1点执行定时任务
+     * 消息发送管理
      */
-    public void messageSendTask(){
+    public void messageSendTask() {
         String id = UUID.fastUUID().toString();
         log.info("开始执行消息生成定时任务,当前任务 id:{},当前时间:{},无参数", id, new Date());
         AjaxResult ajaxResult = remoteMessageSendService.timedTransmission(SecurityConstants.INNER);
         log.info("公告通知生成定时任务执行结束,当前任务 id:{},当前时间:{},结果:{}", id, new Date(), JSON.toJSONString(ajaxResult));
     }
 
+    /**
+     * 临期履职提醒
+     */
+    public void resumptionRemind() {
+        String id = UUID.fastUUID().toString();
+        log.info("开始执行消息生成定时任务,当前任务 id:{},当前时间:{},无参数", id, new Date());
+        AjaxResult ajaxResult = remoteMessageSendService.resumptionRemind(SecurityConstants.INNER);
+        log.info("公告通知生成定时任务执行结束,当前任务 id:{},当前时间:{},结果:{}", id, new Date(), JSON.toJSONString(ajaxResult));
+    }
+    public void font() {
+        String id = UUID.fastUUID().toString();
+        log.info("开始执行营业前定时提醒任务,当前任务 id:{},当前时间:{},无参数", id, new Date());
+        AjaxResult ajaxResult = remoteMessageSendService.font(SecurityConstants.INNER);
+        log.info("营业前生成定时任务执行结束,当前任务 id:{},当前时间:{},结果:{}", id, new Date(), JSON.toJSONString(ajaxResult));
+    }
+    public void centre() {
+        String id = UUID.fastUUID().toString();
+        log.info("开始执行营业中定时提醒任务,当前任务 id:{},当前时间:{},无参数", id, new Date());
+        AjaxResult ajaxResult = remoteMessageSendService.centre(SecurityConstants.INNER);
+        log.info("营业前生成定时任务执行结束,当前任务 id:{},当前时间:{},结果:{}", id, new Date(), JSON.toJSONString(ajaxResult));
+    }
+    public void after() {
+        String id = UUID.fastUUID().toString();
+        log.info("开始执行营业后定时提醒任务,当前任务 id:{},当前时间:{},无参数", id, new Date());
+        AjaxResult ajaxResult = remoteMessageSendService.after(SecurityConstants.INNER);
+        log.info("营业前生成定时任务执行结束,当前任务 id:{},当前时间:{},结果:{}", id, new Date(), JSON.toJSONString(ajaxResult));
+    }
+    public void allDay() {
+        String id = UUID.fastUUID().toString();
+        log.info("开始执行营业全天定时提醒任务,当前任务 id:{},当前时间:{},无参数", id, new Date());
+        AjaxResult ajaxResult = remoteMessageSendService.allDay(SecurityConstants.INNER);
+        log.info("营业前生成定时任务执行结束,当前任务 id:{},当前时间:{},结果:{}", id, new Date(), JSON.toJSONString(ajaxResult));
+    }
 }

+ 3 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/SocSystemApplication.java

@@ -7,6 +7,9 @@ import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.scheduling.annotation.EnableAsync;
 
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+
 /**
  * 系统模块
  * 

+ 15 - 8
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysUserController.java

@@ -9,7 +9,6 @@ import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.core.utils.StringUtils;
 import com.xunmei.common.core.web.controller.BaseController;
 import com.xunmei.common.core.web.domain.AjaxResult;
-import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.common.log.annotation.Log;
 import com.xunmei.common.log.enums.BusinessType;
 import com.xunmei.common.security.annotation.InnerAuth;
@@ -24,6 +23,7 @@ import com.xunmei.system.api.model.LoginUser;
 import com.xunmei.system.domain.SysUserRole;
 import com.xunmei.system.domain.vo.SysUserListVo;
 import com.xunmei.system.domain.vo.UserRoleVo;
+import com.xunmei.system.api.dto.SysRoleOrgDTO;
 import com.xunmei.system.mapper.SysOrgMapper;
 import com.xunmei.system.service.*;
 import io.swagger.annotations.ApiOperation;
@@ -33,7 +33,6 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Set;
@@ -168,7 +167,7 @@ public class SysUserController extends BaseController {
         SysOrg org = orgMapper.selectOne(new LambdaQueryWrapper<SysOrg>()
                 .eq(SysOrg::getId, user.getOrgId())
                 .select(SysOrg::getType));
-        if(ObjectUtil.isNotEmpty(org)){
+        if (ObjectUtil.isNotEmpty(org)) {
             user.setOrgType(org.getType());
         }
         // 角色集合
@@ -424,11 +423,19 @@ public class SysUserController extends BaseController {
     @ApiOperation(value = "通过角色获取用户")
     @InnerAuth
     @PostMapping("/userListByRole")
-    public List<SysUser>userLoginInfo(@RequestBody List<CoreAnnouncementNotificationToRole> notificationToRoles) {
-         return userService.selectUserListByRole(notificationToRoles);
+    public List<SysUser> userLoginInfo(@RequestBody List<CoreAnnouncementNotificationToRole> notificationToRoles) {
+        return userService.selectUserListByRole(notificationToRoles);
     }
-    @PostMapping("/selectAllUser")
-    public List<SysUser> selectAllUser() {
-        return userService.selectAllUser();
+
+    @GetMapping("/selectAllUser")
+    public AjaxResult selectAllUser() {
+        return success(userService.selectAllUser());
+    }
+
+    @ApiOperation(value = "通过角色和机构获取用户")
+    @InnerAuth
+    @PostMapping("/userListByRoleAndOrg")
+    public List<SysUser> userListByRoleAndOrg(@RequestBody SysRoleOrgDTO sysRoleOrgDTO) {
+        return userService.selectUserListByRoleAndOrg(sysRoleOrgDTO);
     }
 }

+ 26 - 20
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/mapper/SysUserMapper.java

@@ -7,6 +7,7 @@ import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.domain.SysRole;
 import com.xunmei.system.api.domain.SysUser;
 import com.xunmei.system.domain.vo.SysUserVO;
+import com.xunmei.system.api.dto.SysRoleOrgDTO;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -16,25 +17,27 @@ import java.util.List;
  *
  * @author xunmei
  */
-public interface SysUserMapper extends BaseMapper<SysUser>
-{
+public interface SysUserMapper extends BaseMapper<SysUser> {
     /**
      * 根据条件分页查询用户列表
      *
      * @param sysUser 用户信息
      * @return 用户信息集合信息
      */
-     List<SysUser> selectUserList(SysUser sysUser);
-List<SysUser>selectAllUser();
+    List<SysUser> selectUserList(SysUser sysUser);
+
+    List<SysUser> selectAllUser();
+
     /**
      * sql重写分页数据
+     *
      * @param page
      * @param info
      * @return
      */
-     Page<SysUser> getPage(Page<SysUser> page,@Param("info") SysUser info);
+    Page<SysUser> getPage(Page<SysUser> page, @Param("info") SysUser info);
 
-     List<SysUser> getList(@Param("info") SysUser info);
+    List<SysUser> getList(@Param("info") SysUser info);
 
     /**
      * 根据条件分页查询已配用户角色列表
@@ -42,7 +45,7 @@ List<SysUser>selectAllUser();
      * @param user 用户信息
      * @return 用户信息集合信息
      */
-     List<SysUser> selectAllocatedList(SysUserVO user);
+    List<SysUser> selectAllocatedList(SysUserVO user);
 
     /**
      * 根据条件分页查询未分配用户角色列表
@@ -50,9 +53,9 @@ List<SysUser>selectAllUser();
      * @param user 用户信息
      * @return 用户信息集合信息
      */
-     List<SysUser> selectUnallocatedList(SysUserVO user);
+    List<SysUser> selectUnallocatedList(SysUserVO user);
 
-     List<SysUser> selectSyncUserList(SysUser user);
+    List<SysUser> selectSyncUserList(SysUser user);
 
 
     /**
@@ -61,7 +64,7 @@ List<SysUser>selectAllUser();
      * @param userName 用户名
      * @return 用户对象信息
      */
-     SysUser selectUserByUserName(String userName);
+    SysUser selectUserByUserName(String userName);
 
     /**
      * 通过用户ID查询用户
@@ -69,7 +72,7 @@ List<SysUser>selectAllUser();
      * @param userId 用户ID
      * @return 用户对象信息
      */
-     SysUser selectUserById(Long userId);
+    SysUser selectUserById(Long userId);
 
     /**
      * 新增用户信息
@@ -77,7 +80,7 @@ List<SysUser>selectAllUser();
      * @param user 用户信息
      * @return 结果
      */
-     int insertUser(SysUser user);
+    int insertUser(SysUser user);
 
     /**
      * 修改用户信息
@@ -85,16 +88,16 @@ List<SysUser>selectAllUser();
      * @param user 用户信息
      * @return 结果
      */
-     int updateUser(SysUser user);
+    int updateUser(SysUser user);
 
     /**
      * 修改用户头像
      *
      * @param userName 用户名
-     * @param avatar 头像地址
+     * @param avatar   头像地址
      * @return 结果
      */
-     int updateUserAvatar(@Param("userName") String userName, @Param("avatar") String avatar);
+    int updateUserAvatar(@Param("userName") String userName, @Param("avatar") String avatar);
 
     /**
      * 重置用户密码
@@ -103,7 +106,7 @@ List<SysUser>selectAllUser();
      * @param password 密码
      * @return 结果
      */
-     int resetUserPwd(@Param("userName") String userName, @Param("password") String password);
+    int resetUserPwd(@Param("userName") String userName, @Param("password") String password);
 
     /**
      * 通过用户ID删除用户
@@ -111,7 +114,7 @@ List<SysUser>selectAllUser();
      * @param userId 用户ID
      * @return 结果
      */
-     int deleteUserById(Long userId);
+    int deleteUserById(Long userId);
 
     /**
      * 批量删除用户信息
@@ -119,7 +122,7 @@ List<SysUser>selectAllUser();
      * @param userIds 需要删除的用户ID
      * @return 结果
      */
-     int deleteUserByIds(Long[] userIds);
+    int deleteUserByIds(Long[] userIds);
 
     /**
      * 校验用户名称是否唯一
@@ -127,7 +130,7 @@ List<SysUser>selectAllUser();
      * @param userName 用户名称
      * @return 结果
      */
-     SysUser checkUserNameUnique(String userName);
+    SysUser checkUserNameUnique(String userName);
 
     /**
      * 校验手机号码是否唯一
@@ -147,7 +150,10 @@ List<SysUser>selectAllUser();
 
     SysOrg selectSysByUserId(@Param("userId") Long userId);
 
-    List<SysRole> selectrolesByOrgId(@Param("orgId")Long orgId);
+    List<SysRole> selectrolesByOrgId(@Param("orgId") Long orgId);
 
     List<SysUser> selectUserListByRole(@Param("notificationToRoles") List<CoreAnnouncementNotificationToRole> notificationToRoles);
+
+    List<SysUser> selectUserListByRoleAndOrg(@Param("sysRoleOrgDTO") SysRoleOrgDTO sysRoleOrgDTO);
+
 }

+ 3 - 1
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysUserService.java

@@ -2,12 +2,12 @@ package com.xunmei.system.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.xunmei.common.core.domain.message.domain.CoreAnnouncementNotificationToRole;
-import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.system.api.domain.SysRole;
 import com.xunmei.system.api.domain.SysUser;
 import com.xunmei.system.domain.vo.SysUserListVo;
 import com.xunmei.system.domain.vo.SysUserVO;
+import com.xunmei.system.api.dto.SysRoleOrgDTO;
 
 import java.util.List;
 
@@ -221,5 +221,7 @@ public interface ISysUserService extends IService<SysUser> {
 
     List<SysUser> selectUserListByRole(List<CoreAnnouncementNotificationToRole> notificationToRoles);
 
+    List<SysUser> selectUserListByRoleAndOrg(SysRoleOrgDTO sysRoleOrgDTO);
+
     List<SysUser> selectAllUser();
 }

+ 7 - 2
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysUserServiceImpl.java

@@ -21,6 +21,7 @@ import com.xunmei.system.domain.SysUserPost;
 import com.xunmei.system.domain.SysUserRole;
 import com.xunmei.system.domain.vo.SysUserListVo;
 import com.xunmei.system.domain.vo.SysUserVO;
+import com.xunmei.system.api.dto.SysRoleOrgDTO;
 import com.xunmei.system.mapper.*;
 import com.xunmei.system.service.ISysConfigService;
 import com.xunmei.system.service.ISysOrgService;
@@ -36,7 +37,6 @@ import org.springframework.util.CollectionUtils;
 import javax.validation.Validator;
 import java.util.ArrayList;
 import java.util.Date;
-import java.util.HashSet;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -106,7 +106,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         user.setOrgPath(org.getPath());
 
         //获取数据
-        page = userMapper.getPage(page,user);
+        page = userMapper.getPage(page, user);
         /*List<SysUser> list = userMapper.getList(user);
         //由于构建角色数组导致分页失效手动构建
         // 计算起始索引
@@ -607,6 +607,11 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     }
 
     @Override
+    public List<SysUser> selectUserListByRoleAndOrg(SysRoleOrgDTO sysRoleOrgDTO) {
+        return userMapper.selectUserListByRoleAndOrg(sysRoleOrgDTO);
+    }
+
+    @Override
     public List<SysUser> selectAllUser() {
         return userMapper.selectAllUser();
     }

+ 14 - 0
soc-modules/soc-modules-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -587,4 +587,18 @@
                #{role.roleId}
            </foreach>
     </select>
+    <select id="selectUserListByRoleAndOrg" resultType="com.xunmei.system.api.domain.SysUser">
+        SELECT DISTINCT
+            a.*
+        FROM
+            sys_user a
+                LEFT JOIN sys_org b ON a.org_id = b.id
+                LEFT JOIN sys_user_role c ON c.user_id = a.id
+                LEFT JOIN sys_role d ON d.id = c.role_id
+        WHERE
+            a.deleted = 0
+          AND d.del_flag = 0
+          AND b.id = #{sysRoleOrgDTO.orgId}
+          AND d.id = #{sysRoleOrgDTO.roleId}
+    </select>
 </mapper>