From cf17ea2587549dcd3a97361fdeb12d5634ab7aa5 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Fri, 20 Aug 2021 10:16:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=BE=A4=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tools/exception/EpmetErrorCode.java | 2 + .../dto/form/AddReceiverGroupFormDTO.java | 52 ++++++++++++++++ .../dto/result/AddReceiverGroupResultDTO.java | 17 ++++++ .../epmet/dto/result/ReplyInfoResultDTO.java | 17 ++++++ .../com/epmet/controller/InfoController.java | 45 +++++++++++--- .../com/epmet/dao/InfoReceiverGroupDao.java | 4 +- .../java/com/epmet/service/InfoService.java | 19 ++++-- .../epmet/service/impl/InfoServiceImpl.java | 60 ++++++++++++++++++- .../resources/mapper/InfoReceiverGroupDao.xml | 12 +++- 9 files changed, 212 insertions(+), 16 deletions(-) create mode 100644 epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/form/AddReceiverGroupFormDTO.java create mode 100644 epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/result/AddReceiverGroupResultDTO.java create mode 100644 epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/result/ReplyInfoResultDTO.java diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java index f4a72b9040..3ec318507f 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/exception/EpmetErrorCode.java @@ -105,6 +105,8 @@ public enum EpmetErrorCode { PLEASE_CHOOSE_RECEIVER(8609,"请选择接收人"), REPLY_INFO_CONTENT_NOT_NULL(8610,"回复内容不能为空"), + PLEASE_CHOOSE_MEMBER(8611,"请选择成员"), + INFO_GROUP_NAME_EXISTS(8612,"名称已存在"), // 爱心互助 居民端 NOT_IN_THE_SIGN_IN_RANGE(8510, "您还未进入指定的签到范围~"), diff --git a/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/form/AddReceiverGroupFormDTO.java b/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/form/AddReceiverGroupFormDTO.java new file mode 100644 index 0000000000..392b3d382b --- /dev/null +++ b/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/form/AddReceiverGroupFormDTO.java @@ -0,0 +1,52 @@ +package com.epmet.dto.form; + +import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.util.Set; + +/** + * @Description 发送消息-新增群组 + * @Author yinzuomei + * @Date 2021/8/20 9:39 上午 + */ +@Data +public class AddReceiverGroupFormDTO implements Serializable { + private static final long serialVersionUID = 6221853016790893895L; + public interface AddUserInternalGroup { + } + public interface AddUserShowGroup extends CustomerClientShowGroup { + } + + @NotBlank(message = "名称不能为空",groups = AddUserShowGroup.class) + @Length(min = 1,max = 20,groups = AddUserShowGroup.class,message = "名称最多输入20个字") + private String name; + + + /** + * 单独选择的人的userId集合 + */ + private Set staffIdList; + /** + * 按架构选择的,组织或者网格或者部门的集合 + */ + private Set orgList; + + + //以下参数从token中获取 + /** + * 当前用户id + */ + @NotBlank(message = "userId不能为空", groups = AddUserInternalGroup.class) + private String userId; + + /** + * 当前客户id + */ + @NotBlank(message = "customerId不能为空", groups = AddUserInternalGroup.class) + private String customerId; +} + diff --git a/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/result/AddReceiverGroupResultDTO.java b/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/result/AddReceiverGroupResultDTO.java new file mode 100644 index 0000000000..59f1519d2f --- /dev/null +++ b/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/result/AddReceiverGroupResultDTO.java @@ -0,0 +1,17 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Description 添加小组返参 + * @Author yinzuomei + * @Date 2021/8/20 9:56 上午 + */ +@Data +public class AddReceiverGroupResultDTO implements Serializable { + private static final long serialVersionUID = 4729777797252376046L; + private String receiverGroupId; +} + diff --git a/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/result/ReplyInfoResultDTO.java b/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/result/ReplyInfoResultDTO.java new file mode 100644 index 0000000000..90aed81589 --- /dev/null +++ b/epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/result/ReplyInfoResultDTO.java @@ -0,0 +1,17 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Description 回复消息返参 + * @Author yinzuomei + * @Date 2021/8/20 9:51 上午 + */ +@Data +public class ReplyInfoResultDTO implements Serializable { + private static final long serialVersionUID = -634463925415755405L; + private String replyId; +} + diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/controller/InfoController.java b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/controller/InfoController.java index d77ad612f8..859db0c3f6 100644 --- a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/controller/InfoController.java +++ b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/controller/InfoController.java @@ -21,10 +21,9 @@ import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; -import com.epmet.dto.form.ReadInfoFormDTO; -import com.epmet.dto.form.ReadReplyFormDTO; -import com.epmet.dto.form.ReplyInfoFormDTO; -import com.epmet.dto.form.SendInfoFormDTO; +import com.epmet.dto.form.*; +import com.epmet.dto.result.AddReceiverGroupResultDTO; +import com.epmet.dto.result.ReplyInfoResultDTO; import com.epmet.dto.result.SendInfoResultDTO; import com.epmet.service.InfoService; import org.springframework.beans.factory.annotation.Autowired; @@ -93,12 +92,11 @@ public class InfoController { * @date 2021/8/19 5:29 下午 */ @PostMapping("reply-info") - public Result replyInfo(@LoginUser TokenDto tokenDto,@RequestBody ReplyInfoFormDTO formDTO){ + public Result replyInfo(@LoginUser TokenDto tokenDto, @RequestBody ReplyInfoFormDTO formDTO){ formDTO.setCustomerId(tokenDto.getCustomerId()); formDTO.setUserId(tokenDto.getUserId()); ValidatorUtils.validateEntity(formDTO,ReplyInfoFormDTO.AddUserInternalGroup.class); - infoService.replyInfo(formDTO); - return new Result(); + return new Result().ok(infoService.replyInfo(formDTO)); } /** @@ -119,4 +117,37 @@ public class InfoController { return new Result(); } + + /** + * 添加群组 + * + * @param tokenDto + * @param formDTO + * @return com.epmet.commons.tools.utils.Result + * @author yinzuomei + * @date 2021/8/20 9:58 上午 + */ + @PostMapping("add-receivergroup") + public Result addReceiverGroup(@LoginUser TokenDto tokenDto, @RequestBody AddReceiverGroupFormDTO formDTO){ + formDTO.setCustomerId(tokenDto.getCustomerId()); + formDTO.setUserId(tokenDto.getUserId()); + ValidatorUtils.validateEntity(formDTO,AddReceiverGroupFormDTO.AddUserShowGroup.class,AddReceiverGroupFormDTO.AddUserInternalGroup.class); + return new Result().ok(infoService.addReceiverGroup(formDTO)); + } + + + + + + + + + + + + + + + + } \ No newline at end of file diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/dao/InfoReceiverGroupDao.java b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/dao/InfoReceiverGroupDao.java index a5b7f35b54..3b60dbc623 100644 --- a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/dao/InfoReceiverGroupDao.java +++ b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/dao/InfoReceiverGroupDao.java @@ -20,6 +20,7 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.entity.InfoReceiverGroupEntity; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** * 消息-群组表 @@ -29,5 +30,6 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface InfoReceiverGroupDao extends BaseDao { - + + int selectCountName(@Param("name") String name, @Param("customerId")String customerId, @Param("userId")String userId); } \ No newline at end of file diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/InfoService.java b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/InfoService.java index 61c4766577..601cbb4ab0 100644 --- a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/InfoService.java +++ b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/InfoService.java @@ -18,10 +18,9 @@ package com.epmet.service; import com.epmet.commons.mybatis.service.BaseService; -import com.epmet.dto.form.ReadInfoFormDTO; -import com.epmet.dto.form.ReadReplyFormDTO; -import com.epmet.dto.form.ReplyInfoFormDTO; -import com.epmet.dto.form.SendInfoFormDTO; +import com.epmet.dto.form.*; +import com.epmet.dto.result.AddReceiverGroupResultDTO; +import com.epmet.dto.result.ReplyInfoResultDTO; import com.epmet.dto.result.SendInfoResultDTO; import com.epmet.entity.InfoEntity; @@ -61,7 +60,7 @@ public interface InfoService extends BaseService { * @author yinzuomei * @date 2021/8/19 5:30 下午 */ - void replyInfo(ReplyInfoFormDTO formDTO); + ReplyInfoResultDTO replyInfo(ReplyInfoFormDTO formDTO); /** * 我发出的,发布人点击详情后,阅读回复,将未读回复数置为0 @@ -72,4 +71,14 @@ public interface InfoService extends BaseService { * @date 2021/8/19 5:51 下午 */ void readInfoReply(ReadReplyFormDTO formDTO); + + /** + * 添加群组 + * + * @param formDTO + * @return com.epmet.dto.result.AddReceiverGroupResultDTO + * @author yinzuomei + * @date 2021/8/20 9:58 上午 + */ + AddReceiverGroupResultDTO addReceiverGroup(AddReceiverGroupFormDTO formDTO); } \ No newline at end of file diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/InfoServiceImpl.java b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/InfoServiceImpl.java index 0a7c2d3f74..8139440f91 100644 --- a/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/InfoServiceImpl.java +++ b/epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/InfoServiceImpl.java @@ -29,6 +29,8 @@ import com.epmet.commons.tools.utils.Result; import com.epmet.constant.UserMessageConstans; import com.epmet.dao.*; import com.epmet.dto.form.*; +import com.epmet.dto.result.AddReceiverGroupResultDTO; +import com.epmet.dto.result.ReplyInfoResultDTO; import com.epmet.dto.result.SendInfoResultDTO; import com.epmet.entity.*; import com.epmet.feign.EpmetUserOpenFeignClient; @@ -187,6 +189,7 @@ public class InfoServiceImpl extends BaseServiceImpl implem * @author yinzuomei * @date 2021/8/19 5:03 下午 */ + @Transactional(rollbackFor = Exception.class) @Override public void readInfo(ReadInfoFormDTO formDTO) { //已读总人数+1 @@ -211,8 +214,9 @@ public class InfoServiceImpl extends BaseServiceImpl implem * @author yinzuomei * @date 2021/8/19 5:30 下午 */ + @Transactional(rollbackFor = Exception.class) @Override - public void replyInfo(ReplyInfoFormDTO formDTO) { + public ReplyInfoResultDTO replyInfo(ReplyInfoFormDTO formDTO) { //1、插入回复记录、回复附件 //内容和附件 2选一 if(StringUtils.isBlank(formDTO.getContent())&&CollectionUtils.isEmpty(formDTO.getAttachmentList())){ @@ -257,7 +261,9 @@ public class InfoServiceImpl extends BaseServiceImpl implem infoProfileEntity.setUnReadReplyNum(infoProfileEntity.getUnReadReplyNum()+1); infoProfileDao.updateById(infoProfileEntity); } - + ReplyInfoResultDTO resultDTO=new ReplyInfoResultDTO(); + resultDTO.setReplyId(infoReplyEntity.getId()); + return resultDTO; } /** @@ -268,6 +274,7 @@ public class InfoServiceImpl extends BaseServiceImpl implem * @author yinzuomei * @date 2021/8/19 5:51 下午 */ + @Transactional(rollbackFor = Exception.class) @Override public void readInfoReply(ReadReplyFormDTO formDTO) { InfoProfileEntity infoProfile = infoProfileDao.selectByInfoId(formDTO.getInfoId()); @@ -277,6 +284,55 @@ public class InfoServiceImpl extends BaseServiceImpl implem } } + /** + * 添加群组 + * + * @param formDTO + * @return com.epmet.dto.result.AddReceiverGroupResultDTO + * @author yinzuomei + * @date 2021/8/20 9:58 上午 + */ + @Transactional(rollbackFor = Exception.class) + @Override + public AddReceiverGroupResultDTO addReceiverGroup(AddReceiverGroupFormDTO formDTO) { + // 1、人员列表和组织列表不能同时为空 + if(CollectionUtils.isEmpty(formDTO.getStaffIdList())&&CollectionUtils.isEmpty(formDTO.getOrgList())){ + throw new RenException(EpmetErrorCode.PLEASE_CHOOSE_MEMBER.getCode(), EpmetErrorCode.PLEASE_CHOOSE_MEMBER.getMsg()); + } + // 2、选择了组织,但是组织下没有人,也要提示给用户,:请选择成员 + Set orgStaffIds=queryOrgStaffIds(formDTO.getCustomerId(),formDTO.getOrgList()); + if(CollectionUtils.isEmpty(formDTO.getStaffIdList())&&CollectionUtils.isEmpty(orgStaffIds)){ + throw new RenException(EpmetErrorCode.PLEASE_CHOOSE_MEMBER.getCode(), EpmetErrorCode.PLEASE_CHOOSE_MEMBER.getMsg()); + } + // 3、群名称是否存在 + if (infoReceiverGroupDao.selectCountName(formDTO.getName().trim(),formDTO.getCustomerId(),formDTO.getUserId()) > 1) { + throw new RenException(EpmetErrorCode.INFO_GROUP_NAME_EXISTS.getCode(), EpmetErrorCode.INFO_GROUP_NAME_EXISTS.getMsg()); + } + InfoReceiverGroupEntity groupEntity=new InfoReceiverGroupEntity(); + groupEntity.setCustomerId(formDTO.getCustomerId()); + groupEntity.setName(formDTO.getName()); + groupEntity.setCreateStaffId(formDTO.getUserId()); + // 4、插入小组表 + infoReceiverGroupDao.insert(groupEntity); + + Set members=new LinkedHashSet(); + members.addAll(formDTO.getStaffIdList()); + members.addAll(orgStaffIds); + members.forEach(memStaffId->{ + // 5、插入群成员表 + InfoGroupReceiversEntity memberEntity=new InfoGroupReceiversEntity(); + memberEntity.setCustomerId(formDTO.getCustomerId()); + memberEntity.setInfoReceiverGroupId(groupEntity.getId()); + memberEntity.setStaffId(memStaffId); + infoGroupReceiversDao.insert(memberEntity); + }); + + // 6、返回小组id + AddReceiverGroupResultDTO resultDTO=new AddReceiverGroupResultDTO(); + resultDTO.setReceiverGroupId(groupEntity.getId()); + return resultDTO; + } + /** * 查询架构里面的人 * diff --git a/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/InfoReceiverGroupDao.xml b/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/InfoReceiverGroupDao.xml index 264c96846f..23f4fec727 100644 --- a/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/InfoReceiverGroupDao.xml +++ b/epmet-module/epmet-message/epmet-message-server/src/main/resources/mapper/InfoReceiverGroupDao.xml @@ -3,6 +3,16 @@ - + \ No newline at end of file