瀏覽代碼

fix:自定义预警分组相关接口

fantingwei 1 年之前
父節點
當前提交
16fd77a394

+ 3 - 18
smsb-customer-manager-adapter/src/main/java/com/inspur/customer/web/controller/org/SmsbMessageGroupController.java

@@ -3,10 +3,7 @@ package com.inspur.customer.web.controller.org;
 import com.alibaba.cola.dto.Response;
 import com.inspur.customer.client.org.SmsbMessageGroupMemberService;
 import com.inspur.customer.client.org.SmsbMessageGroupService;
-import com.inspur.customer.object.org.SmsbMessageGroupDto;
-import com.inspur.customer.object.org.SmsbMessageGroupQuery;
-import com.inspur.customer.object.org.SmsbMessageMemberAddDto;
-import com.inspur.customer.object.org.SmsbMessageMemberUpdateDto;
+import com.inspur.customer.object.org.*;
 import com.inspur.logging.annotation.SmsbSysLog;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
@@ -61,18 +58,6 @@ public class SmsbMessageGroupController {
         return smsbMessageGroupService.pq(query);
     }
 
-
-
-
-
-
-
-
-
-
-
-
-
     /**
      * 根据groupId,主抄送类型,安播云用户id新增成员
      */
@@ -87,8 +72,8 @@ public class SmsbMessageGroupController {
      * 删除成员接口
      */
     @DeleteMapping("/keycloak/message/memberDelete")
-    public Response deleteMember (@RequestBody SmsbMessageMemberUpdateDto updateDto) {
-        return messageGroupMemberService.deleteByDepartmentUserIds(updateDto);
+    public Response deleteMember (@RequestBody SmsbMessageMemberDeleteDto deleteDto) {
+        return messageGroupMemberService.deleteByDepartmentUserIds(deleteDto);
     }
 
     /**

+ 5 - 0
smsb-customer-manager-app/src/main/java/com/inspur/customer/service/org/SmsbDepartmentUserServiceImpl.java

@@ -340,6 +340,8 @@ public class SmsbDepartmentUserServiceImpl extends ServiceImpl<SmsbDepartmentUse
         List<SmsbMessageMemberCO> resultList = new ArrayList<>();
         page.getRecords().forEach(record -> {
             SmsbMessageMemberCO co = BeanCopyUtils.copy(record, SmsbMessageMemberCO.class);
+            co.setEmail(null);
+            co.setPhone(null);
             KeycloakUserCO keycloakUser = userMap.get(record.getUserId());
             if (Objects.nonNull(keycloakUser)) {
                 co.setEmail(keycloakUser.getEmail());
@@ -353,6 +355,9 @@ public class SmsbDepartmentUserServiceImpl extends ServiceImpl<SmsbDepartmentUse
 
     @Override
     public List<SmsbMessageMemberCO> listByIds(List<Long> ids) {
+        if (CollectionUtils.isEmpty(ids)) {
+            return Collections.emptyList();
+        }
         List<SmsbDepartmentUserDO> list = lambdaQuery().in(SmsbDepartmentUserDO::getId, ids).list();
         return BeanCopyUtils.copyList(list, SmsbMessageMemberCO.class);
     }

+ 74 - 10
smsb-customer-manager-app/src/main/java/com/inspur/customer/service/org/SmsbMessageGroupMemberServiceImpl.java

@@ -1,5 +1,6 @@
 package com.inspur.customer.service.org;
 
+import com.alibaba.cola.dto.MultiResponse;
 import com.alibaba.cola.dto.PageResponse;
 import com.alibaba.cola.dto.Response;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -12,10 +13,7 @@ import com.inspur.customer.client.org.SmsbMessageGroupMemberService;
 import com.inspur.customer.infrastructure.mapper.org.SmsbMessageGroupMemberMapper;
 import com.inspur.customer.infrastructure.object.org.SmsbMessageGroupMemberDO;
 import com.inspur.customer.object.keycloak.KeycloakUserCO;
-import com.inspur.customer.object.org.SmsbMessageGroupQuery;
-import com.inspur.customer.object.org.SmsbMessageMemberAddDto;
-import com.inspur.customer.object.org.SmsbMessageMemberCO;
-import com.inspur.customer.object.org.SmsbMessageMemberUpdateDto;
+import com.inspur.customer.object.org.*;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.dubbo.config.annotation.DubboService;
@@ -66,11 +64,20 @@ public class SmsbMessageGroupMemberServiceImpl extends ServiceImpl<SmsbMessageGr
             member.setEnabled(memberMap.get(member.getId()).getEnabled());
         });
 
+        smsbMessageMemberCOS = smsbMessageMemberCOS.stream()
+            .sorted(Comparator.comparing(SmsbMessageMemberCO::getRecipientType))
+            .collect(Collectors.toList());
+
         return PageResponse.of(smsbMessageMemberCOS, (int) page.getTotal(), (int) page.getSize(), (int) page.getCurrent());
     }
 
     @Override
     public Response addMember(SmsbMessageMemberAddDto addDto) {
+        // 新增抄送人时,要保证当前分组下已经有收件人了
+        if (addDto.getRecipientType() == 2 && Boolean.FALSE.equals(isLeagle(addDto.getGroupId()))) {
+            return Response.buildFailure("400","请先添加收件人");
+        }
+
         List<Long> addDepartmentUserIds = addDto.getIdList();
 
         // 查询当前group下的所有用户,移除掉重复部分,避免重复新增
@@ -80,7 +87,21 @@ public class SmsbMessageGroupMemberServiceImpl extends ServiceImpl<SmsbMessageGr
             .stream()
             .map(SmsbMessageGroupMemberDO::getDepartmentUserId)
             .collect(Collectors.toList());
-        addDepartmentUserIds.removeAll(curIds);
+
+        // 找出重复的成员,并进行报错提示,请勿重复添加使用者名为:... 的账号
+        List<Long> intersection = new ArrayList<>(addDepartmentUserIds);
+        intersection.retainAll(curIds);
+        if (!CollectionUtils.isEmpty(intersection)) {
+            List<String> userName = smsbDepartmentUserService.listByIds(intersection)
+                .stream()
+                .map(SmsbMessageMemberCO::getUserName)
+                .collect(Collectors.toList());
+            MultiResponse<String> response = MultiResponse.of(userName);
+            response.setErrCode("400");
+            response.setSuccess(false);
+            return response;
+        }
+
         LocalDateTime now = LocalDateTime.now();
 
         List<SmsbMessageGroupMemberDO> addList = new ArrayList<>();
@@ -105,21 +126,55 @@ public class SmsbMessageGroupMemberServiceImpl extends ServiceImpl<SmsbMessageGr
 
     @Override
     public Response updateByDepartmentUserId(SmsbMessageMemberUpdateDto updateDto) {
+        // 获取有效的主送人信息
+        List<SmsbMessageGroupMemberDO> curList = lambdaQuery()
+            .eq(SmsbMessageGroupMemberDO::getGroupId, updateDto.getGroupId())
+            .eq(SmsbMessageGroupMemberDO::getEnabled, 1)
+            .eq(SmsbMessageGroupMemberDO::getRecipientType, 1)
+            .list();
+
+        // 修改用户状态、主抄送类型时,如果修改的是将主送修改成抄送,则要判断该用户是否是唯一的主送,如果是,则报错提示
+        if (Objects.equals(curList.size(), 1) && Objects.equals(updateDto.getDepartmentUserId(), curList.get(0).getDepartmentUserId())) {
+            if (Objects.nonNull(updateDto.getRecipientType()) && updateDto.getRecipientType() == 2) {
+                return Response.buildFailure("400","请至少保留一个收件人");
+            }
+            if (Objects.nonNull(updateDto.getEnabled()) && updateDto.getEnabled() == 0) {
+                return Response.buildFailure("400","请至少保留一个启用的收件人");
+            }
+        }
+
         boolean update = this.update(new LambdaUpdateWrapper<SmsbMessageGroupMemberDO>()
             .eq(SmsbMessageGroupMemberDO::getDepartmentUserId, updateDto.getDepartmentUserId())
             .eq(SmsbMessageGroupMemberDO::getGroupId, updateDto.getGroupId())
-            .set(SmsbMessageGroupMemberDO::getEnabled, updateDto.getEnabled())
-            .set(SmsbMessageGroupMemberDO::getRecipientType, updateDto.getRecipientType())
+            .set(Objects.nonNull(updateDto.getEnabled()), SmsbMessageGroupMemberDO::getEnabled, updateDto.getEnabled())
+            .set(Objects.nonNull(updateDto.getRecipientType()), SmsbMessageGroupMemberDO::getRecipientType, updateDto.getRecipientType())
             .set(SmsbMessageGroupMemberDO::getUpdateTime, LocalDateTime.now()));
 
         return update ? Response.buildSuccess() : Response.buildFailure("400", "更新失败");
     }
 
 
-    public Response deleteByDepartmentUserIds(SmsbMessageMemberUpdateDto updateDto) {
+    public Response deleteByDepartmentUserIds(SmsbMessageMemberDeleteDto deleteDto) {
+        // 获取当前group下的主送人用户部门id
+        List<Long> curList = lambdaQuery()
+            .eq(SmsbMessageGroupMemberDO::getGroupId, deleteDto.getGroupId())
+            .list()
+            .stream()
+            .filter(member -> member.getRecipientType() == 1)
+            .map(SmsbMessageGroupMemberDO::getDepartmentUserId)
+            .collect(Collectors.toList());
+        // 获取要删除的用户部门id
+        Set<Long> deleteSet = deleteDto.getDepartmentUserIds()
+            .stream()
+            .map(Long::valueOf)
+            .collect(Collectors.toSet());
+        if (deleteSet.containsAll(curList)) {
+            return Response.buildFailure("400","请至少保留一个收件人");
+        }
+
         boolean success = this.remove(new LambdaUpdateWrapper<SmsbMessageGroupMemberDO>()
-            .eq(SmsbMessageGroupMemberDO::getGroupId, updateDto.getGroupId())
-            .in(SmsbMessageGroupMemberDO::getDepartmentUserId, updateDto.getDepartmentUserIds()));
+            .eq(SmsbMessageGroupMemberDO::getGroupId, deleteDto.getGroupId())
+            .in(SmsbMessageGroupMemberDO::getDepartmentUserId, deleteDto.getDepartmentUserIds()));
         return success ? Response.buildSuccess() : Response.buildFailure("400","删除失败");
     }
 
@@ -160,4 +215,13 @@ public class SmsbMessageGroupMemberServiceImpl extends ServiceImpl<SmsbMessageGr
         return resultMap;
     }
 
+    // 新增、修改、删除组员时要保证组内必须至少有一个收件人
+    private Boolean isLeagle (Long groupId){
+        return lambdaQuery().eq(SmsbMessageGroupMemberDO::getGroupId, groupId)
+            .list()
+            .stream()
+            .map(SmsbMessageGroupMemberDO::getRecipientType)
+            .anyMatch(recipientType -> recipientType == 1);
+    }
+
 }

+ 1 - 1
smsb-customer-manager-app/src/main/java/com/inspur/customer/service/org/SmsbMessageGroupServiceImpl.java

@@ -92,7 +92,7 @@ public class SmsbMessageGroupServiceImpl extends ServiceImpl<SmsbMessageGroupMap
         records.forEach(record -> {
             SmsbMessageGroupDto dto = BeanCopyUtils.copy(record, SmsbMessageGroupDto.class);
             result.add(dto);
-            if (Objects.equals(record.getInformLevel(), 9999)) {
+            if (Objects.equals(record.getInformLevel(), 9999) && Objects.nonNull(record.getInformType())) {
                 // 转化成集合
                 String informType = record.getInformType();
                 dto.setInformType(Arrays.stream(informType.replaceAll("\\[|\\]|\\s", "").split(","))

+ 2 - 1
smsb-customer-manager-client/src/main/java/com/inspur/customer/client/org/SmsbMessageGroupMemberService.java

@@ -4,6 +4,7 @@ import com.alibaba.cola.dto.Response;
 import com.inspur.customer.object.keycloak.KeycloakUserCO;
 import com.inspur.customer.object.org.SmsbMessageGroupQuery;
 import com.inspur.customer.object.org.SmsbMessageMemberAddDto;
+import com.inspur.customer.object.org.SmsbMessageMemberDeleteDto;
 import com.inspur.customer.object.org.SmsbMessageMemberUpdateDto;
 
 import java.util.List;
@@ -34,7 +35,7 @@ public interface SmsbMessageGroupMemberService {
     /**
      * 根据smsb_department_user主表id集合、分组id,删除成员
      */
-    Response deleteByDepartmentUserIds(SmsbMessageMemberUpdateDto updateDto);
+    Response deleteByDepartmentUserIds(SmsbMessageMemberDeleteDto updateDto);
 
     /**
      * 根据groupIds获取启用的成员数据,key为groupId,value为对应成员

+ 11 - 0
smsb-customer-manager-client/src/main/java/com/inspur/customer/object/org/SmsbMessageGroupDto.java

@@ -1,8 +1,11 @@
 package com.inspur.customer.object.org;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
+import java.time.LocalDateTime;
 import java.util.List;
 
 /**
@@ -45,6 +48,14 @@ public class SmsbMessageGroupDto implements Serializable {
 
     private String createUser;
 
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime updateTime;
+
     /**
      * 租户
      */

+ 25 - 0
smsb-customer-manager-client/src/main/java/com/inspur/customer/object/org/SmsbMessageMemberDeleteDto.java

@@ -0,0 +1,25 @@
+package com.inspur.customer.object.org;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @Author fantingwei
+ * @Date 2024/6/17 11:22
+ */
+@Data
+public class SmsbMessageMemberDeleteDto implements Serializable {
+    private static final long serialVersionUID = -514586097597178413L;
+
+    /**
+     * 分组id
+     */
+    private String groupId;
+
+    /**
+     * 安播云用户idList
+     */
+    private List<String> departmentUserIds;
+}