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 43c5468cc3..3a213b5191 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 @@ -138,7 +138,9 @@ public enum EpmetErrorCode { REPEATED_SUBMIT_ERROR(8804, "请勿重复提交"), CUSTOMER_VALIDATE_ERROR(8805, "内部数据校验异常"), CATEGORY_IS_NULL(8806, "请设置分类"), - + EXISTED_SPECIAL_PROJECT(8807, "已经添加过此专题"), + CAN_NOT_DEL_SPECIAL_PROJECT(8808, "您没有权限删除此专题"), + TAG_NOT_EXIST(8809,"标签不存在"), //公众号 865..开头的码 PUBLIC_NOT_EXISTS(8651,"手机号未注册,请先完成信息注册"), diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/SpecialSubjectDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/SpecialSubjectDTO.java index a20c1d77ff..96cb4a1bdf 100644 --- a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/SpecialSubjectDTO.java +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/SpecialSubjectDTO.java @@ -17,9 +17,10 @@ package com.epmet.dto; +import lombok.Data; + import java.io.Serializable; import java.util.Date; -import lombok.Data; /** @@ -102,4 +103,6 @@ public class SpecialSubjectDTO implements Serializable { */ private Date updatedTime; + // 扩展属性 + private String tagName; } \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/AddSpecialSubjectFormDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/AddSpecialSubjectFormDTO.java new file mode 100644 index 0000000000..ba663245db --- /dev/null +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/AddSpecialSubjectFormDTO.java @@ -0,0 +1,54 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * 【专题管理】添加专题 + * + * @author yinzuomei@elink-cn.com + * @date 2021/7/15 14:24 + */ +@Data +public class AddSpecialSubjectFormDTO implements Serializable { + private static final long serialVersionUID = -4469613386814496224L; + + public interface AddUserInternalGroup { + } + + /** + * 当前所在网格或者组织id + */ + @NotBlank(message = "orgId不能为空", groups = AddUserInternalGroup.class) + private String orgId; + + /** + * 网格:grid;社区级:community, 乡(镇、街道)级:street, 区县级: district, 市级: city 省级:province + */ + @NotBlank(message = "orgLevel不能为空", groups = AddUserInternalGroup.class) + private String orgLevel; + + /** + * 所选的标签id + */ + @NotBlank(message = "tagId不能为空", groups = AddUserInternalGroup.class) + private String tagId; + + // 以下属性从token中获取 + /** + * 从TokenDto中获取当前用户id + */ + @NotBlank(message = "从token中获取userId为空", groups = AddUserInternalGroup.class) + private String addUserId; + + /** + * 从TokenDto中获取当前用户所属的agencyId + */ + @NotBlank(message = "从token中获取用户所属组织id为空", groups = AddUserInternalGroup.class) + private String addUserAgencyId; + + @NotBlank(message = "从token中获取客户id为空", groups = AddUserInternalGroup.class) + private String customerId; +} diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/DelSpecialSubjectFormDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/DelSpecialSubjectFormDTO.java new file mode 100644 index 0000000000..4c3d964bc0 --- /dev/null +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/DelSpecialSubjectFormDTO.java @@ -0,0 +1,39 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * 【专题管理】删除专题 + * + * @author yinzuomei@elink-cn.com + * @date 2021/7/15 20:50 + */ +@Data +public class DelSpecialSubjectFormDTO implements Serializable { + private static final long serialVersionUID = -2305529822756834522L; + + public interface AddUserInternalGroup { + } + + /** + * 专题id + */ + @NotBlank(message = "specialSubjectId不能为空", groups = AddUserInternalGroup.class) + private String specialSubjectId; + + /** + * 当前所在网格或者组织id + */ + @NotBlank(message = "orgId不能为空", groups = AddUserInternalGroup.class) + private String orgId; + + + /** + * 从TokenDto中获取当前用户id + */ + @NotBlank(message = "从token中获取userId为空", groups = AddSpecialSubjectFormDTO.AddUserInternalGroup.class) + private String userId; +} diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/QuerySpecialSubFormDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/QuerySpecialSubFormDTO.java new file mode 100644 index 0000000000..02ec4d2e6f --- /dev/null +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/form/QuerySpecialSubFormDTO.java @@ -0,0 +1,32 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * 【专题管理】已有专题列表 + * + * @author yinzuomei@elink-cn.com + * @date 2021/7/15 21:09 + */ +@Data +public class QuerySpecialSubFormDTO implements Serializable { + private static final long serialVersionUID = -436139256753489157L; + + public interface AddUserInternalGroup { + } + + /** + * 当前所在网格或者组织id + */ + @NotBlank(message = "orgId不能为空", groups = AddUserInternalGroup.class) + private String orgId; + + /** + * orgId的所有上级id + */ + @NotBlank(message = "pids不能为空", groups = AddUserInternalGroup.class) + private String pids; +} diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/AddSpecialSubjectResultDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/AddSpecialSubjectResultDTO.java new file mode 100644 index 0000000000..6e31d7fa46 --- /dev/null +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/AddSpecialSubjectResultDTO.java @@ -0,0 +1,23 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 【专题管理】添加专题 + * + * @author yinzuomei@elink-cn.com + * @date 2021/7/15 17:46 + */ +@Data +public class AddSpecialSubjectResultDTO implements Serializable { + /** + * 刚添加成功的专题id + * */ + private String specialSubjectId; + + public AddSpecialSubjectResultDTO(String id) { + this.specialSubjectId=id; + } +} diff --git a/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/WorkSpecialSubjectResultDTO.java b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/WorkSpecialSubjectResultDTO.java new file mode 100644 index 0000000000..451a44c296 --- /dev/null +++ b/epmet-module/gov-voice/gov-voice-client/src/main/java/com/epmet/dto/result/WorkSpecialSubjectResultDTO.java @@ -0,0 +1,35 @@ +package com.epmet.dto.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 【专题管理】已有专题列表 + * + * @author yinzuomei@elink-cn.com + * @date 2021/7/15 21:14 + */ +@Data +public class WorkSpecialSubjectResultDTO implements Serializable { + private static final long serialVersionUID = 8147664815754574860L; + /** + * 标签id + */ + private String tagId; + + /** + * 标签名称 + */ + private String tagName; + + /** + * true代表可以删除。false不可删除,隐藏减号 + */ + private Boolean canDel; + + /** + * 专题id + */ + private String specialSubjectId; +} diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/SpecialSubjectController.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/SpecialSubjectController.java index 37d780ce55..018c88bc33 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/SpecialSubjectController.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/SpecialSubjectController.java @@ -17,11 +17,24 @@ package com.epmet.controller; +import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.security.dto.GovTokenDto; +import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.validator.ValidatorUtils; +import com.epmet.dto.form.AddSpecialSubjectFormDTO; +import com.epmet.dto.form.DelSpecialSubjectFormDTO; +import com.epmet.dto.form.QuerySpecialSubFormDTO; +import com.epmet.dto.result.AddSpecialSubjectResultDTO; +import com.epmet.dto.result.WorkSpecialSubjectResultDTO; import com.epmet.service.SpecialSubjectService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.List; + /** * 专题表 @@ -32,8 +45,50 @@ import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("specialsubject") public class SpecialSubjectController { - + @Autowired private SpecialSubjectService specialSubjectService; + /** + * @param formDTO + * @return com.epmet.commons.tools.utils.Result + * @author yinzuomei + * @description 添加专题 + * @Date 2021/7/15 15:31 + **/ + @PostMapping("add") + public Result addSpecialSubject(@LoginUser GovTokenDto tokenDto, @RequestBody AddSpecialSubjectFormDTO formDTO) { + formDTO.setAddUserId(tokenDto.getUserId()); + formDTO.setAddUserAgencyId(tokenDto.getAgencyId()); + ValidatorUtils.validateEntity(formDTO, AddSpecialSubjectFormDTO.AddUserInternalGroup.class); + return new Result().ok(specialSubjectService.addSpecialSubject(formDTO)); + } + + /** + * @return com.epmet.commons.tools.utils.Result + * @param + * @author yinzuomei + * @description 【专题管理】删除专题 + * @Date 2021/7/15 20:49 + **/ + @PostMapping("del") + public Result delSpecialSubject(@RequestBody DelSpecialSubjectFormDTO formDTO){ + ValidatorUtils.validateEntity(formDTO); + specialSubjectService.delSpecialSubject(formDTO); + return new Result(); + } + + + /** + * @return com.epmet.commons.tools.utils.Result> + * @param formDTO + * @author yinzuomei + * @description 【专题管理】已有专题列表 + * @Date 2021/7/15 21:17 + **/ + @PostMapping("existedlist") + public Result> queryExistedList(@RequestBody QuerySpecialSubFormDTO formDTO) { + ValidatorUtils.validateEntity(formDTO, QuerySpecialSubFormDTO.AddUserInternalGroup.class); + return new Result>().ok(specialSubjectService.queryExistedList(formDTO)); + } } \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/SpecialSubjectDao.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/SpecialSubjectDao.java index a4737a5ffc..a759dd78fd 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/SpecialSubjectDao.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/dao/SpecialSubjectDao.java @@ -18,8 +18,12 @@ package com.epmet.dao; import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.SpecialSubjectDTO; import com.epmet.entity.SpecialSubjectEntity; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * 专题表 @@ -29,5 +33,10 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface SpecialSubjectDao extends BaseDao { - + + SpecialSubjectEntity selectByOrgIdAndTagId(@Param("orgId") String orgId, @Param("tagId") String tagId); + + int delSpecialSubject(@Param("id") String id, @Param("userId") String userId); + + List queryExistedList(@Param("orgId") String orgId,@Param("notList")List notList); } \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/SpecialSubjectService.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/SpecialSubjectService.java index 451910e743..3d64580035 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/SpecialSubjectService.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/SpecialSubjectService.java @@ -20,6 +20,11 @@ package com.epmet.service; import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.tools.page.PageData; import com.epmet.dto.SpecialSubjectDTO; +import com.epmet.dto.form.AddSpecialSubjectFormDTO; +import com.epmet.dto.form.DelSpecialSubjectFormDTO; +import com.epmet.dto.form.QuerySpecialSubFormDTO; +import com.epmet.dto.result.AddSpecialSubjectResultDTO; +import com.epmet.dto.result.WorkSpecialSubjectResultDTO; import com.epmet.entity.SpecialSubjectEntity; import java.util.List; @@ -92,4 +97,34 @@ public interface SpecialSubjectService extends BaseService * @date 2021-07-15 */ void delete(String[] ids); + + /** + * 添加专题 + * + * @param formDTO + * @return void + * @author yinzuomei + * @date 2021-07-15 + */ + AddSpecialSubjectResultDTO addSpecialSubject(AddSpecialSubjectFormDTO formDTO); + + /** + * 【专题管理】删除专题 + * + * @param formDTO + * @return void + * @author yinzuomei + * @date 2021-07-15 + */ + void delSpecialSubject(DelSpecialSubjectFormDTO formDTO); + + /** + * 【专题管理】已有专题列表 + * + * @param formDTO + * @return void + * @author yinzuomei + * @date 2021-07-15 + */ + List queryExistedList(QuerySpecialSubFormDTO formDTO); } \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/SpecialSubjectServiceImpl.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/SpecialSubjectServiceImpl.java index 9bc8edba52..09b7230c6a 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/SpecialSubjectServiceImpl.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/SpecialSubjectServiceImpl.java @@ -21,19 +21,35 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.tools.constant.FieldConstant; +import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.constant.StrConstant; +import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.dao.SpecialSubjectDao; import com.epmet.dto.SpecialSubjectDTO; +import com.epmet.dto.TagCustomerDTO; +import com.epmet.dto.form.AddSpecialSubjectFormDTO; +import com.epmet.dto.form.DelSpecialSubjectFormDTO; +import com.epmet.dto.form.QuerySpecialSubFormDTO; +import com.epmet.dto.result.AddSpecialSubjectResultDTO; +import com.epmet.dto.result.WorkSpecialSubjectResultDTO; import com.epmet.entity.SpecialSubjectEntity; import com.epmet.service.SpecialSubjectService; +import com.epmet.service.TagCustomerService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * 专题表 @@ -41,8 +57,11 @@ import java.util.Map; * @author generator generator@elink-cn.com * @since v1.0.0 2021-07-15 */ +@Slf4j @Service public class SpecialSubjectServiceImpl extends BaseServiceImpl implements SpecialSubjectService { + @Autowired + private TagCustomerService tagCustomerService; @Override public PageData page(Map params) { @@ -96,4 +115,99 @@ public class SpecialSubjectServiceImpl extends BaseServiceImpl queryExistedList(QuerySpecialSubFormDTO formDTO) { + List resultDTOList = new ArrayList<>(); + List notList = new ArrayList<>(); + //当前组织或者网格自己建立的 + List currentOrgList = new ArrayList<>(); + List currentOrgCreatedList = baseDao.queryExistedList(formDTO.getOrgId(), notList); + currentOrgCreatedList.forEach(dto -> { + WorkSpecialSubjectResultDTO result = new WorkSpecialSubjectResultDTO(); + result.setSpecialSubjectId(dto.getId()); + result.setTagId(dto.getTagId()); + result.setTagName(dto.getTagName()); + result.setCanDel(true); + currentOrgList.add(result); + }); + if (CollectionUtils.isNotEmpty(currentOrgList)) { + notList = currentOrgList.stream().map(WorkSpecialSubjectResultDTO::getSpecialSubjectId).distinct().collect(Collectors.toList()); + } + if (!NumConstant.ZERO_STR.equals(formDTO.getPids())) { + //存在上级组织...,从上往下查 + List pidList = Arrays.asList(formDTO.getPids().split(StrConstant.COLON)); + for (String pid : pidList) { + //优先展示自己的,所以要排除掉 领导们给我建立的专题 + List list = baseDao.queryExistedList(pid, notList); + list.forEach(dto -> { + WorkSpecialSubjectResultDTO result = new WorkSpecialSubjectResultDTO(); + result.setSpecialSubjectId(dto.getId()); + result.setTagId(dto.getTagId()); + result.setTagName(dto.getTagName()); + result.setCanDel(false); + resultDTOList.add(result); + }); + } + } + //自己建立的在最后面 + if (CollectionUtils.isNotEmpty(currentOrgList)) { + resultDTOList.addAll(currentOrgList); + } + return resultDTOList; + } } \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/SpecialSubjectDao.xml b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/SpecialSubjectDao.xml index d671b8b4eb..c40828ae10 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/SpecialSubjectDao.xml +++ b/epmet-module/gov-voice/gov-voice-server/src/main/resources/mapper/SpecialSubjectDao.xml @@ -2,7 +2,39 @@ + + + update special_subject set del_flag='1',UPDATED_BY=#{userId},UPDATED_TIME=Now() + where id=#{id} + - + \ No newline at end of file