浏览代码

通知规则修改

xujie 1 年之前
父节点
当前提交
842696aa2f
共有 17 个文件被更改,包括 325 次插入92 次删除
  1. 4 4
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/notice/CoreNoticeRule.java
  2. 8 8
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/notice/CoreNoticeRuleItem.java
  3. 15 7
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/notice/controller/CoreNoticeRuleController.java
  4. 2 8
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/notice/dto/CoreNoticeRuleDto.java
  5. 29 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/notice/dto/NoticeRuleUserItem.java
  6. 6 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/notice/mapper/CoreNoticeRuleItemMapper.java
  7. 3 2
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/notice/mapper/CoreNoticeRuleMapper.java
  8. 4 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/notice/service/ICoreNoticeRuleItemService.java
  9. 6 2
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/notice/service/ICoreNoticeRuleService.java
  10. 41 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/notice/service/impl/CoreNoticeRuleItemServiceImpl.java
  11. 65 39
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/notice/service/impl/CoreNoticeRuleServiceImpl.java
  12. 25 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/notice/vo/CoreNoticeRuleDetailVo.java
  13. 19 6
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/notice/vo/CoreNoticeRuleVo.java
  14. 28 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/notice/vo/NoticeRuleUserItemVo.java
  15. 14 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/notice/vo/SysRoleVo.java
  16. 27 0
      soc-modules/soc-modules-core/src/main/resources/mapper/notice/CoreNoticeRuleItemMapper.xml
  17. 29 15
      soc-modules/soc-modules-core/src/main/resources/mapper/notice/CoreNoticeRuleMapper.xml

+ 4 - 4
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/notice/CoreNoticeRule.java

@@ -34,14 +34,14 @@ public class CoreNoticeRule implements Serializable {
     @TableField("name")
     private String name;
 
-    @ApiModelProperty(value = "是否发送短信:0.否 1.是")
-    @TableField("send_sms")
-    private Integer sendSms;
-
     @ApiModelProperty(value = "是否启用:0.否 1.是")
     @TableField("enable")
     private Integer enable;
 
+    @ApiModelProperty(value = "组织机构")
+    @TableField("org_id")
+    private Long orgId;
+
     @ApiModelProperty(value = "是否删除:0.否 1.是")
     @TableField("is_deleted")
     private Integer isDeleted;

+ 8 - 8
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/notice/CoreNoticeRuleItem.java

@@ -38,12 +38,16 @@ public class CoreNoticeRuleItem implements Serializable {
     private Long orgId;
 
     @ApiModelProperty(value = "角色id")
-    @TableField("role_ids")
-    private String roleIds;
+    @TableField("role_id")
+    private Long roleId;
 
     @ApiModelProperty(value = "用户id")
-    @TableField("user_ids")
-    private String userIds;
+    @TableField("user_id")
+    private Long userId;
+
+    @ApiModelProperty(value = "是否发送短信:0.否 1.是")
+    @TableField("send_sms")
+    private Integer sendSms;
 
     @ApiModelProperty(value = "是否选择角色下所有用户:0.否 1.是")
     @TableField("all_role_user")
@@ -53,10 +57,6 @@ public class CoreNoticeRuleItem implements Serializable {
     @TableField("product_type")
     private String productType;
 
-    @ApiModelProperty(value = "是否是所选机构外选择的用户:0.否 1.是")
-    @TableField("special")
-    private Integer special;
-
     @ApiModelProperty(value = "是否删除:0.否 1.是")
     @TableField("is_deleted")
     private Integer isDeleted;

+ 15 - 7
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/notice/controller/CoreNoticeRuleController.java

@@ -37,13 +37,6 @@ public class CoreNoticeRuleController {
 
     @ApiOperation(value = "查询机构下用户")
     //@RequiresPermissions("core:noticeRule:getSelectUser")
-    @GetMapping("/getSelectUser")
-    public AjaxResult getSelectUser(CoreNoticeRuleDto dto) throws InterruptedException {
-        return AjaxResult.success(coreNoticeRuleService.selectUserList(dto));
-    }
-
-    @ApiOperation(value = "查询机构下用户")
-    //@RequiresPermissions("core:noticeRule:getSelectUser")
     @GetMapping("/getSelectUser/{orgId}")
     public AjaxResult getSelectUserByOrgId(@PathVariable Long orgId) throws InterruptedException {
         return AjaxResult.success(coreNoticeRuleService.selectUserListByOrgId(orgId));
@@ -64,6 +57,13 @@ public class CoreNoticeRuleController {
         return AjaxResult.success();
     }
 
+    @ApiOperation(value = "详情")
+    //@RequiresPermissions("core:noticeRule:getSelectUser")
+    @GetMapping("/detail/{id}")
+    public AjaxResult detail(@PathVariable Long id) throws InterruptedException {
+        return AjaxResult.success(coreNoticeRuleService.getDetailById(id));
+    }
+
     @ApiOperation(value = "删除")
     //@RequiresPermissions("core:noticeRule:getSelectUser")
     @DeleteMapping("/remove/{id}")
@@ -71,5 +71,13 @@ public class CoreNoticeRuleController {
         coreNoticeRuleService.deleteNoticeRule(id);
         return AjaxResult.success();
     }
+
+    @ApiOperation(value = "获取机构下用户的角色")
+    //@RequiresPermissions("core:noticeRule:getSelectUser")
+    @GetMapping("/getOrgRules/{id}")
+    public AjaxResult getOrgRules(@PathVariable Long id) throws InterruptedException {
+        coreNoticeRuleService.deleteNoticeRule(id);
+        return AjaxResult.success(coreNoticeRuleService.getOrgRules(id));
+    }
 }
 

+ 2 - 8
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/notice/dto/CoreNoticeRuleDto.java

@@ -12,17 +12,11 @@ public class CoreNoticeRuleDto extends PageRequest {
 
     private String name;
 
-    private List<Long> orgIds;
+    private Long orgId;
 
-    private List<String> roleIds;
-
-    private List<String> userIds;
-
-    private List<String> productTypes;
+    List<NoticeRuleUserItem> items;
 
     private Boolean enable;
 
-    private Boolean sendSms;
-
     private String remark;
 }

+ 29 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/notice/dto/NoticeRuleUserItem.java

@@ -0,0 +1,29 @@
+package com.xunmei.core.notice.dto;
+
+import lombok.Data;
+import java.util.List;
+
+@Data
+public class NoticeRuleUserItem {
+
+    private Long orgId;
+
+    private String orgName;
+
+    private Long roleId;
+
+    private String roleName;
+
+    private List<String> userIds;
+
+    private String userNames;
+
+    private List<String> productTypes;
+
+    private String productTypeNames;
+
+    private Integer sendSms;
+
+    //用于页面删除数据唯一标识,无特殊意义
+    private String uniqueId;
+}

+ 6 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/notice/mapper/CoreNoticeRuleItemMapper.java

@@ -2,6 +2,11 @@ package com.xunmei.core.notice.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.xunmei.common.core.domain.notice.CoreNoticeRuleItem;
+import com.xunmei.core.notice.dto.NoticeRuleUserItem;
+import com.xunmei.core.notice.vo.NoticeRuleUserItemVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -12,5 +17,5 @@ import com.xunmei.common.core.domain.notice.CoreNoticeRuleItem;
  * @since 2024-09-19
  */
 public interface CoreNoticeRuleItemMapper extends BaseMapper<CoreNoticeRuleItem> {
-
+    List<NoticeRuleUserItemVo> getByRuleId(@Param("ruleId") Long ruleId);
 }

+ 3 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/notice/mapper/CoreNoticeRuleMapper.java

@@ -8,6 +8,7 @@ import com.xunmei.core.notice.dto.CoreNoticeRuleDto;
 import com.xunmei.core.notice.vo.CoreNoticeRuleVo;
 import com.xunmei.core.notice.vo.SelectProductVo;
 import com.xunmei.core.notice.vo.SelectUserVo;
+import com.xunmei.core.notice.vo.SysRoleVo;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -25,9 +26,9 @@ public interface CoreNoticeRuleMapper extends BaseMapper<CoreNoticeRule> {
 
     Page<CoreNoticeRuleVo> selectPageData(Page<CoreNoticeRuleVo> page, @Param("request") CoreNoticeRuleDto request);
 
-    List<SelectUserVo> selectUserList(@Param("orgIds")List<Long> orgIds);
-
     List<SelectUserVo> selectUserListByOrgId(@Param("orgId")Long orgId);
 
     List<SelectProductVo> selectProductTypeList();
+
+    List<SysRoleVo> getOrgRules(@Param("orgId") Long orgId);
 }

+ 4 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/notice/service/ICoreNoticeRuleItemService.java

@@ -2,6 +2,9 @@ package com.xunmei.core.notice.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.xunmei.common.core.domain.notice.CoreNoticeRuleItem;
+import com.xunmei.core.notice.dto.NoticeRuleUserItem;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +16,5 @@ import com.xunmei.common.core.domain.notice.CoreNoticeRuleItem;
  */
 public interface ICoreNoticeRuleItemService extends IService<CoreNoticeRuleItem> {
 
+    List<NoticeRuleUserItem> getByRuleId(Long ruleId);
 }

+ 6 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/notice/service/ICoreNoticeRuleService.java

@@ -4,8 +4,10 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.xunmei.common.core.domain.notice.CoreNoticeRule;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.core.notice.dto.CoreNoticeRuleDto;
+import com.xunmei.core.notice.vo.CoreNoticeRuleDetailVo;
 import com.xunmei.core.notice.vo.SelectProductVo;
 import com.xunmei.core.notice.vo.SelectUserVo;
+import com.xunmei.core.notice.vo.SysRoleVo;
 
 import java.io.Serializable;
 import java.util.List;
@@ -22,8 +24,6 @@ public interface ICoreNoticeRuleService extends IService<CoreNoticeRule> {
 
     TableDataInfo selectPage(CoreNoticeRuleDto dto);
 
-    List<SelectUserVo> selectUserList(CoreNoticeRuleDto dto);
-
     List<SelectUserVo> selectUserListByOrgId(Long orgId);
 
     List<SelectProductVo> selectProductTypeList();
@@ -31,4 +31,8 @@ public interface ICoreNoticeRuleService extends IService<CoreNoticeRule> {
     void saveOrUpdate(CoreNoticeRuleDto dto);
 
     void deleteNoticeRule(Serializable id);
+
+    CoreNoticeRuleDetailVo getDetailById(Long id);
+
+    List<SysRoleVo> getOrgRules(Long orgId);
 }

+ 41 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/notice/service/impl/CoreNoticeRuleItemServiceImpl.java

@@ -1,11 +1,19 @@
 package com.xunmei.core.notice.service.impl;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.domain.notice.CoreNoticeRuleItem;
+import com.xunmei.common.core.utils.uuid.UUID;
+import com.xunmei.core.notice.dto.NoticeRuleUserItem;
 import com.xunmei.core.notice.mapper.CoreNoticeRuleItemMapper;
 import com.xunmei.core.notice.service.ICoreNoticeRuleItemService;
+import com.xunmei.core.notice.vo.NoticeRuleUserItemVo;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
 /**
  * <p>
  *  服务实现类
@@ -17,4 +25,37 @@ import org.springframework.stereotype.Service;
 @Service
 public class CoreNoticeRuleItemServiceImpl extends ServiceImpl<CoreNoticeRuleItemMapper, CoreNoticeRuleItem> implements ICoreNoticeRuleItemService {
 
+
+    @Override
+    public List<NoticeRuleUserItem> getByRuleId(Long ruleId) {
+        List<NoticeRuleUserItem> itemList = new ArrayList<>();
+        List<NoticeRuleUserItemVo> userItemVos = baseMapper.getByRuleId(ruleId);
+        if (userItemVos != null && userItemVos.size() > 0){
+            for (NoticeRuleUserItemVo userItemVo : userItemVos){
+                NoticeRuleUserItem item = new NoticeRuleUserItem();
+                item.setOrgId(userItemVo.getOrgId());
+                item.setOrgName(userItemVo.getOrgName());
+                item.setRoleId(userItemVo.getRoleId());
+                item.setRoleName(userItemVo.getRoleName());
+                if (ObjectUtil.isNotEmpty(userItemVo.getUserIds())){
+                    String userIds = userItemVo.getUserIds();
+                    String[] split = userIds.split(",");
+                    List<String> list = Arrays.asList(split);
+                    item.setUserIds(list);
+                }
+                item.setUserNames(userItemVo.getUserNames());
+                if (ObjectUtil.isNotEmpty(userItemVo.getProductTypes())){
+                    String productTypes = userItemVo.getProductTypes();
+                    String[] split = productTypes.split(",");
+                    List<String> list = Arrays.asList(split);
+                    item.setProductTypes(list);
+                }
+                item.setProductTypeNames(userItemVo.getProductTypeNames());
+                item.setSendSms(userItemVo.getSendSms());
+                item.setUniqueId(UUID.randomUUID().toString());
+                itemList.add(item);
+            }
+        }
+        return itemList;
+    }
 }

+ 65 - 39
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/notice/service/impl/CoreNoticeRuleServiceImpl.java

@@ -9,12 +9,11 @@ import com.xunmei.common.core.domain.notice.CoreNoticeRule;
 import com.xunmei.common.core.domain.notice.CoreNoticeRuleItem;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.core.notice.dto.CoreNoticeRuleDto;
+import com.xunmei.core.notice.dto.NoticeRuleUserItem;
 import com.xunmei.core.notice.mapper.CoreNoticeRuleMapper;
 import com.xunmei.core.notice.service.ICoreNoticeRuleItemService;
 import com.xunmei.core.notice.service.ICoreNoticeRuleService;
-import com.xunmei.core.notice.vo.CoreNoticeRuleVo;
-import com.xunmei.core.notice.vo.SelectProductVo;
-import com.xunmei.core.notice.vo.SelectUserVo;
+import com.xunmei.core.notice.vo.*;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -23,6 +22,7 @@ import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -46,14 +46,6 @@ public class CoreNoticeRuleServiceImpl extends ServiceImpl<CoreNoticeRuleMapper,
     }
 
     @Override
-    public List<SelectUserVo> selectUserList(CoreNoticeRuleDto dto) {
-        if (dto != null && dto.getOrgIds() != null && dto.getOrgIds().size() > 0) {
-            return baseMapper.selectUserList(dto.getOrgIds());
-        }
-        return null;
-    }
-
-    @Override
     public List<SelectUserVo> selectUserListByOrgId(Long orgId) {
         return baseMapper.selectUserListByOrgId(orgId);
     }
@@ -70,7 +62,7 @@ public class CoreNoticeRuleServiceImpl extends ServiceImpl<CoreNoticeRuleMapper,
         noticeRule.setName(dto.getName());
         noticeRule.setRemark(dto.getRemark());
         noticeRule.setEnable(dto.getEnable() ? 1 : 0);
-        noticeRule.setSendSms(dto.getSendSms() ? 1 : 0);
+        noticeRule.setOrgId(dto.getOrgId());
 
         if (dto.getId() != null){
             noticeRule.setId(dto.getId());
@@ -101,38 +93,72 @@ public class CoreNoticeRuleServiceImpl extends ServiceImpl<CoreNoticeRuleMapper,
         itemService.remove(wrapper);
     }
 
+    @Override
+    public CoreNoticeRuleDetailVo getDetailById(Long id) {
+        CoreNoticeRuleDetailVo detailVo = new CoreNoticeRuleDetailVo();
+        CoreNoticeRule noticeRule = getById(id);
+        if (noticeRule != null){
+            detailVo.setId(noticeRule.getId());
+            detailVo.setName(noticeRule.getName());
+            detailVo.setRemark(noticeRule.getRemark());
+            detailVo.setEnable(noticeRule.getEnable());
+            detailVo.setOrgId(noticeRule.getOrgId());
+            List<NoticeRuleUserItem> itemList = itemService.getByRuleId(id);
+            detailVo.setItems(itemList);
+        }
+        return detailVo;
+    }
+
+    @Override
+    public List<SysRoleVo> getOrgRules(Long orgId) {
+        return baseMapper.getOrgRules(orgId);
+    }
+
     private void saveOrUpdateItem(CoreNoticeRuleDto dto, Long ruleId) {
-        ArrayList<CoreNoticeRuleItem> items = new ArrayList<>();
-        String userId = handStr(dto.getUserIds());
-        String roleId = handStr(dto.getRoleIds());
-        //String productType = handStr(dto.getProductTypes());
-
-        for (Long orgId : dto.getOrgIds()) {
-            for (String productType : dto.getProductTypes()) {
-                CoreNoticeRuleItem item = new CoreNoticeRuleItem();
-                item.setRuleId(ruleId);
-                item.setOrgId(orgId);
-                item.setUserIds(userId);
-                item.setRoleIds(roleId);
-                item.setAllRoleUser(0);
-                if (ObjectUtil.isEmpty(userId)){
-                    item.setAllRoleUser(1);
+        List<CoreNoticeRuleItem> items = new ArrayList<>();
+        if (dto.getItems() != null && dto.getItems().size() > 0) {
+            List<NoticeRuleUserItem> itemList = dto.getItems();
+            for (NoticeRuleUserItem item : itemList) {
+                List<String> userIds = item.getUserIds();
+                List<String> productTypes = item.getProductTypes();
+                //有具体人员,角色就不生效
+                if (userIds != null && userIds.size() > 0) {
+                    for(String userId : userIds){
+                        for (String productType : productTypes) {
+                            CoreNoticeRuleItem coreNoticeRuleItem = new CoreNoticeRuleItem();
+                            coreNoticeRuleItem.setRuleId(ruleId);
+                            coreNoticeRuleItem.setRoleId(null);
+                            coreNoticeRuleItem.setOrgId(item.getOrgId());
+                            coreNoticeRuleItem.setUserId(Long.valueOf(userId));
+                            coreNoticeRuleItem.setProductType(productType);
+                            coreNoticeRuleItem.setAllRoleUser(0);
+                            coreNoticeRuleItem.setSendSms(item.getSendSms());
+                            coreNoticeRuleItem.setIsDeleted(0);
+                            items.add(coreNoticeRuleItem);
+                        }
+                    }
+                }else {
+                    for (String productType : productTypes) {
+                        CoreNoticeRuleItem coreNoticeRuleItem = new CoreNoticeRuleItem();
+                        coreNoticeRuleItem.setRuleId(ruleId);
+                        coreNoticeRuleItem.setRoleId(item.getRoleId());
+                        coreNoticeRuleItem.setOrgId(item.getOrgId());
+                        coreNoticeRuleItem.setUserId(null);
+                        coreNoticeRuleItem.setProductType(productType);
+                        coreNoticeRuleItem.setAllRoleUser(1);
+                        coreNoticeRuleItem.setSendSms(item.getSendSms());
+                        coreNoticeRuleItem.setIsDeleted(0);
+                        items.add(coreNoticeRuleItem);
+                    }
                 }
-                item.setProductType(productType);
-                items.add(item);
             }
         }
-        itemService.saveBatch(items);
-    }
 
-    private String handStr(List<String> list){
-        StringBuilder sb = new StringBuilder();
-        for (int i = 0; i < list.size(); i++) {
-            sb.append(list.get(i));
-            if (i < list.size() - 1) {
-                sb.append(",");
-            }
+        //删除相同数据
+        if(items.size() > 0){
+            List<CoreNoticeRuleItem> distinctList = items.stream().distinct().collect(Collectors.toList());
+
+            itemService.saveBatch(distinctList);
         }
-        return sb.toString();
     }
 }

+ 25 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/notice/vo/CoreNoticeRuleDetailVo.java

@@ -0,0 +1,25 @@
+package com.xunmei.core.notice.vo;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.xunmei.core.notice.dto.NoticeRuleUserItem;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class CoreNoticeRuleDetailVo {
+
+    private Long id;
+
+    private String name;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long orgId;
+
+    private String remark;
+
+    private Integer enable;
+
+    private List<NoticeRuleUserItem> items;
+}

+ 19 - 6
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/notice/vo/CoreNoticeRuleVo.java

@@ -1,9 +1,12 @@
 package com.xunmei.core.notice.vo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import lombok.Data;
 
+import java.util.Date;
+
 @Data
 public class CoreNoticeRuleVo {
 
@@ -16,17 +19,27 @@ public class CoreNoticeRuleVo {
 
     private Integer enable;
 
-    private Integer sendSms;
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long orgId;
 
-    private String roleIds;
+    private String orgName;
 
-    private String userIds;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
 
-    private String orgIds;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
 
-    private String orgNames;
+    private String noticeOrgNames;
 
-    private String productTypes;
 
+    //页面展示用数据
+    private String orgIds;
+    private String orgNames;
+    private String roleIds;
+    private String roleNames;
+    private String userIds;
+    private String userNames;
+    private String productTypes;
     private String productTypeNames;
 }

+ 28 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/notice/vo/NoticeRuleUserItemVo.java

@@ -0,0 +1,28 @@
+package com.xunmei.core.notice.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class NoticeRuleUserItemVo {
+
+    private Long orgId;
+
+    private String orgName;
+
+    private Long roleId;
+
+    private String roleName;
+
+    private String userIds;
+
+    private String userNames;
+
+    private String productTypes;
+
+    private String productTypeNames;
+
+    private Integer sendSms;
+
+}

+ 14 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/notice/vo/SysRoleVo.java

@@ -0,0 +1,14 @@
+package com.xunmei.core.notice.vo;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import lombok.Data;
+
+@Data
+public class SysRoleVo {
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+
+    private String roleName;
+}

+ 27 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/notice/CoreNoticeRuleItemMapper.xml

@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xunmei.core.notice.mapper.CoreNoticeRuleItemMapper">
+
+    <select id="getByRuleId" resultType="com.xunmei.core.notice.vo.NoticeRuleUserItemVo">
+        SELECT
+            t.org_id AS orgId,
+            o.short_name AS orgName,
+            t.role_id AS roleId,
+            r.role_name AS roleName,
+            t.send_sms AS sendSms,
+            GROUP_CONCAT( DISTINCT t.user_id ) AS userIds,
+            GROUP_CONCAT( DISTINCT u.`name` ) AS userNames,
+            GROUP_CONCAT( DISTINCT t.product_type ) AS productTypes,
+            GROUP_CONCAT( DISTINCT s.product_name ) AS productTypeNames
+        FROM
+            core_notice_rule_item t
+                LEFT JOIN sys_org o ON t.org_id = o.id
+                LEFT JOIN sys_role r ON r.id = t.role_id
+                LEFT JOIN sys_user u ON t.user_id = u.id
+                LEFT JOIN iot_alarm_system_field s ON t.product_type = s.product_type
+        WHERE
+            t.is_deleted = 0 and t.rule_id = #{ruleId}
+        GROUP BY
+            t.role_id,t.org_id,t.send_sms
+    </select>
+</mapper>

+ 29 - 15
soc-modules/soc-modules-core/src/main/resources/mapper/notice/CoreNoticeRuleMapper.xml

@@ -6,19 +6,25 @@
         SELECT
             e.id AS id,
             e.`name` AS `name`,
+            e.org_id AS orgId,
+            o1.short_name AS orgName,
             e.remark AS remark,
-            e.`enable` as `enable`,
-            e.send_sms as sendSms,
-            GROUP_CONCAT( DISTINCT n.role_ids ) AS roleIds,
-            GROUP_CONCAT( DISTINCT n.user_ids ) AS userIds,
+            e.`enable` AS `enable`,
             GROUP_CONCAT( DISTINCT n.org_id ) AS orgIds,
-            GROUP_CONCAT( DISTINCT o.short_name ) AS orgNames,
+            GROUP_CONCAT( DISTINCT o2.short_name ) AS orgNames,
+            GROUP_CONCAT( DISTINCT n.role_id ) AS roleIds,
+            GROUP_CONCAT( DISTINCT r.role_name ) AS roleNames,
+            GROUP_CONCAT( DISTINCT n.user_id ) AS userIds,
+            GROUP_CONCAT( DISTINCT u.`name` ) AS userNames,
             GROUP_CONCAT( DISTINCT n.product_type ) AS productTypes,
             GROUP_CONCAT( DISTINCT s.product_name ) AS productTypeNames
         FROM
             core_notice_rule e
             LEFT JOIN core_notice_rule_item n ON e.id = n.rule_id
-            LEFT JOIN sys_org o ON n.org_id = o.id
+            LEFT JOIN sys_org o1 ON e.org_id = o1.id
+            LEFT JOIN sys_org o2 ON n.org_id = o2.id
+            LEFT JOIN sys_role r ON n.role_id = r.id
+            LEFT JOIN sys_user u ON n.user_id = u.id
             LEFT JOIN iot_alarm_system_field s ON n.product_type = s.product_type
         where 1=1
         <if test="request.name != null and request.name != ''">
@@ -26,13 +32,6 @@
         </if>
         group by e.id
     </select>
-    <select id="selectUserList" resultType="com.xunmei.core.notice.vo.SelectUserVo">
-        select id,`name`,username from sys_user where is_lock = 0
-        and org_id in
-        <foreach collection="orgIds" item="orgId" open="(" separator="," close=")">
-            #{orgId}
-        </foreach>
-    </select>
     <select id="selectProductTypeList" resultType="com.xunmei.core.notice.vo.SelectProductVo">
         select product_type,product_name from iot_alarm_system_field where alarm_rule_property = 1 and `enable` = 1 GROUP BY product_type ;
     </select>
@@ -45,12 +44,27 @@
             GROUP_CONCAT( DISTINCT o.role_name ) AS roleNames
         FROM
             sys_user u
-                LEFT JOIN sys_user_role r ON r.user_id = u.id
-                LEFT JOIN sys_role o ON r.role_id = o.id
+            LEFT JOIN sys_user_role r ON r.user_id = u.id
+            LEFT JOIN sys_role o ON r.role_id = o.id
         WHERE
             u.is_lock = 0
             AND u.org_id = #{orgId}
         GROUP BY
             u.id
     </select>
+    <select id="getOrgRules" resultType="com.xunmei.core.notice.vo.SysRoleVo">
+        SELECT
+            o.id,
+            o.role_name
+        FROM
+            sys_user u
+            LEFT JOIN sys_user_role s ON s.user_id = u.id
+            LEFT JOIN sys_role o ON s.role_id = o.id
+        WHERE
+            o.id IS NOT NULL
+            AND u.is_lock = 0
+            AND u.org_id = #{orgId}
+        GROUP BY
+            o.id
+    </select>
 </mapper>