diff --git a/epdc-cloud-news/src/main/java/com/elink/esua/epdc/controller/ModuleTypeController.java b/epdc-cloud-news/src/main/java/com/elink/esua/epdc/controller/ModuleTypeController.java index 06c2488..08fcac1 100644 --- a/epdc-cloud-news/src/main/java/com/elink/esua/epdc/controller/ModuleTypeController.java +++ b/epdc-cloud-news/src/main/java/com/elink/esua/epdc/controller/ModuleTypeController.java @@ -25,6 +25,7 @@ import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils; import com.elink.esua.epdc.commons.tools.validator.group.AddGroup; import com.elink.esua.epdc.commons.tools.validator.group.DefaultGroup; import com.elink.esua.epdc.commons.tools.validator.group.UpdateGroup; +import com.elink.esua.epdc.dto.ModuleOption; import com.elink.esua.epdc.dto.ModuleTypeCategoryDTO; import com.elink.esua.epdc.dto.ModuleTypeDTO; import com.elink.esua.epdc.excel.ModuleTypeExcel; @@ -106,4 +107,18 @@ public class ModuleTypeController { return new Result>().ok(list); } + /** + * @describe: 根据用户角色获取栏目信息 + * @author wangtong + * @date 2021/8/10 14:38 + * @params [pid] + * @return com.elink.esua.epdc.commons.tools.utils.Result + */ + @GetMapping("getModuleListByRole") + public Result getModuleListByRole( ) { + ModuleOption moduleOption = moduleTypeService.getModuleListByRole(); + return new Result().ok(moduleOption); + } + + } \ No newline at end of file diff --git a/epdc-cloud-news/src/main/java/com/elink/esua/epdc/controller/NoticeController.java b/epdc-cloud-news/src/main/java/com/elink/esua/epdc/controller/NoticeController.java index b87e5a5..4b5bd94 100644 --- a/epdc-cloud-news/src/main/java/com/elink/esua/epdc/controller/NoticeController.java +++ b/epdc-cloud-news/src/main/java/com/elink/esua/epdc/controller/NoticeController.java @@ -23,8 +23,8 @@ import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.commons.tools.validator.AssertUtils; import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils; import com.elink.esua.epdc.commons.tools.validator.group.AddGroup; -import com.elink.esua.epdc.commons.tools.validator.group.UpdateGroup; import com.elink.esua.epdc.commons.tools.validator.group.DefaultGroup; +import com.elink.esua.epdc.commons.tools.validator.group.UpdateGroup; import com.elink.esua.epdc.dto.NoticeDTO; import com.elink.esua.epdc.excel.NoticeExcel; import com.elink.esua.epdc.service.NoticeService; @@ -111,4 +111,35 @@ public class NoticeController { return new Result(); } + /** + * @describe: 后台管理-内容发布 + * @author wangtong + * @date 2021/8/11 10:25 + * @params [dto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + */ + @PostMapping("saveOrUpContent") + public Result saveContent(@RequestBody NoticeDTO dto) { + return noticeService.saveOrUpContent(dto); + } + + @PutMapping("saveOrUpContent") + public Result updateContent(@RequestBody NoticeDTO dto) { + return noticeService.saveOrUpContent(dto); + } + + + /** + * @describe: 后台管理-内容列表 + * @author wangtong + * @date 2021/8/11 10:50 + * @params [params] + * @return com.elink.esua.epdc.commons.tools.utils.Result> + */ + @GetMapping("modulePage") + public Result> modulePage(@RequestParam Map params){ + PageData page = noticeService.modulePage(params); + return new Result>().ok(page); + } + } \ No newline at end of file diff --git a/epdc-cloud-news/src/main/java/com/elink/esua/epdc/dao/ModuleTypeDao.java b/epdc-cloud-news/src/main/java/com/elink/esua/epdc/dao/ModuleTypeDao.java index 23fe993..715db6e 100644 --- a/epdc-cloud-news/src/main/java/com/elink/esua/epdc/dao/ModuleTypeDao.java +++ b/epdc-cloud-news/src/main/java/com/elink/esua/epdc/dao/ModuleTypeDao.java @@ -18,6 +18,7 @@ package com.elink.esua.epdc.dao; import com.elink.esua.epdc.commons.mybatis.dao.BaseDao; +import com.elink.esua.epdc.dto.ModuleOptionDTO; import com.elink.esua.epdc.entity.ModuleTypeEntity; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -44,4 +45,13 @@ public interface ModuleTypeDao extends BaseDao { List getList(HashMap params); ModuleTypeEntity selectInfoById(@Param("id") String id); + + /** + * @describe: 根据角色id查询所对应栏目 + * @author wangtong + * @date 2021/8/10 16:42 + * @params [roleIStrings] + * @return java.util.List + */ + List getModuleListByRole(@Param("roleIStrings") String roleIStrings); } \ No newline at end of file diff --git a/epdc-cloud-news/src/main/java/com/elink/esua/epdc/dao/NoticeDao.java b/epdc-cloud-news/src/main/java/com/elink/esua/epdc/dao/NoticeDao.java index 2b4340d..6a67a5d 100644 --- a/epdc-cloud-news/src/main/java/com/elink/esua/epdc/dao/NoticeDao.java +++ b/epdc-cloud-news/src/main/java/com/elink/esua/epdc/dao/NoticeDao.java @@ -109,4 +109,13 @@ public interface NoticeDao extends BaseDao { * @since 2020/3/7 1:20 */ void updateDeptNameByDeptId(String newDeptName, Long deptId); + + /** + * @describe: 后台管理-内容列表 + * @author wangtong + * @date 2021/8/11 11:01 + * @params [params] + * @return java.util.List + */ + List getModulePageList(Map params); } \ No newline at end of file diff --git a/epdc-cloud-news/src/main/java/com/elink/esua/epdc/entity/NoticeEntity.java b/epdc-cloud-news/src/main/java/com/elink/esua/epdc/entity/NoticeEntity.java index f381ff2..ddfc435 100644 --- a/epdc-cloud-news/src/main/java/com/elink/esua/epdc/entity/NoticeEntity.java +++ b/epdc-cloud-news/src/main/java/com/elink/esua/epdc/entity/NoticeEntity.java @@ -104,9 +104,14 @@ public class NoticeEntity extends BaseEpdcEntity { private String extendFlag; /** - * 类别编码 + * 栏目ID */ - private String typeCode; + private String typeId; + + /** + * 所有栏目id + */ + private String allTypeId; /** * 置顶标识 0-否,1-是 diff --git a/epdc-cloud-news/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java b/epdc-cloud-news/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java index 0b29e43..00ff54e 100644 --- a/epdc-cloud-news/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java +++ b/epdc-cloud-news/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java @@ -15,7 +15,9 @@ import java.util.List; * @email yujintao@elink-cn.com * @date 2019/9/5 14:44 */ -@FeignClient(name = ServiceConstant.EPDC_ADMIN_SERVER, fallback = AdminFeignClientFallback.class) +@FeignClient(name = ServiceConstant.EPDC_ADMIN_SERVER, fallback = AdminFeignClientFallback.class + ,url = "http://127.0.0.1:9092" +) public interface AdminFeignClient { /** @@ -51,4 +53,7 @@ public interface AdminFeignClient { */ @GetMapping("sys/optimize/deptScope/listByTypeKey/{userId}") Result> getUserDeptScope(@PathVariable("userId") Long userId, String... typeKeys); + + @GetMapping("sys/role/getRoleStringIdsByUserId/{userId}") + Result getRoleStringIdsByUserId(@PathVariable("userId")Long userId); } diff --git a/epdc-cloud-news/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java b/epdc-cloud-news/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java index 35392b6..88e95c8 100644 --- a/epdc-cloud-news/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java +++ b/epdc-cloud-news/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java @@ -31,4 +31,9 @@ public class AdminFeignClientFallback implements AdminFeignClient { public Result> getUserDeptScope(Long userId, String... typeKeys) { return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getUserDeptScope", typeKeys); } + + @Override + public Result getRoleStringIdsByUserId(Long userId) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getRoleStringIdsByUserId", userId); + } } diff --git a/epdc-cloud-news/src/main/java/com/elink/esua/epdc/service/ModuleTypeService.java b/epdc-cloud-news/src/main/java/com/elink/esua/epdc/service/ModuleTypeService.java index 3a02a70..b61760c 100644 --- a/epdc-cloud-news/src/main/java/com/elink/esua/epdc/service/ModuleTypeService.java +++ b/epdc-cloud-news/src/main/java/com/elink/esua/epdc/service/ModuleTypeService.java @@ -19,6 +19,7 @@ package com.elink.esua.epdc.service; import com.elink.esua.epdc.commons.mybatis.service.BaseService; import com.elink.esua.epdc.commons.tools.page.PageData; +import com.elink.esua.epdc.dto.ModuleOption; import com.elink.esua.epdc.dto.ModuleTypeCategoryDTO; import com.elink.esua.epdc.dto.ModuleTypeDTO; import com.elink.esua.epdc.entity.ModuleTypeEntity; @@ -103,4 +104,14 @@ public interface ModuleTypeService extends BaseService { * @return com.elink.esua.epdc.commons.tools.utils.Result> */ List getList(HashMap params); + + /** + * @describe: 根据用户角色获取栏目信息 + * @author wangtong + * @date 2021/8/10 14:38 + * @params [pid] + * @return com.elink.esua.epdc.commons.tools.utils.Result + */ + ModuleOption getModuleListByRole( ); + } \ No newline at end of file diff --git a/epdc-cloud-news/src/main/java/com/elink/esua/epdc/service/NoticeService.java b/epdc-cloud-news/src/main/java/com/elink/esua/epdc/service/NoticeService.java index fd5dbcc..743063c 100644 --- a/epdc-cloud-news/src/main/java/com/elink/esua/epdc/service/NoticeService.java +++ b/epdc-cloud-news/src/main/java/com/elink/esua/epdc/service/NoticeService.java @@ -159,4 +159,22 @@ public interface NoticeService extends BaseService { * @since 2020/3/7 1:23 */ void modifyOrganizationInfo(OrganizationModifyDTO dto); + + /** + * @describe: 后台管理-内容发布 + * @author wangtong + * @date 2021/8/11 10:25 + * @params [dto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + */ + Result saveOrUpContent(NoticeDTO dto); + + /** + * @describe: 后台管理-内容列表 + * @author wangtong + * @date 2021/8/11 10:50 + * @params [params] + * @return com.elink.esua.epdc.commons.tools.utils.Result> + */ + PageData modulePage(Map params); } \ No newline at end of file diff --git a/epdc-cloud-news/src/main/java/com/elink/esua/epdc/service/impl/ModuleTypeServiceImpl.java b/epdc-cloud-news/src/main/java/com/elink/esua/epdc/service/impl/ModuleTypeServiceImpl.java index 452635c..a9bfe2e 100644 --- a/epdc-cloud-news/src/main/java/com/elink/esua/epdc/service/impl/ModuleTypeServiceImpl.java +++ b/epdc-cloud-news/src/main/java/com/elink/esua/epdc/service/impl/ModuleTypeServiceImpl.java @@ -17,6 +17,8 @@ package com.elink.esua.epdc.service.impl; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl; @@ -24,14 +26,20 @@ import com.elink.esua.epdc.commons.tools.constant.Constant; import com.elink.esua.epdc.commons.tools.constant.FieldConstant; import com.elink.esua.epdc.commons.tools.exception.RenException; import com.elink.esua.epdc.commons.tools.page.PageData; +import com.elink.esua.epdc.commons.tools.security.user.SecurityUser; import com.elink.esua.epdc.commons.tools.utils.ConvertUtils; +import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.commons.tools.utils.TreeUtils; import com.elink.esua.epdc.dao.ModuleTypeDao; +import com.elink.esua.epdc.dto.ModuleOption; +import com.elink.esua.epdc.dto.ModuleOptionDTO; import com.elink.esua.epdc.dto.ModuleTypeCategoryDTO; import com.elink.esua.epdc.dto.ModuleTypeDTO; import com.elink.esua.epdc.entity.ModuleTypeEntity; +import com.elink.esua.epdc.feign.AdminFeignClient; import com.elink.esua.epdc.redis.ModuleTypeRedis; import com.elink.esua.epdc.service.ModuleTypeService; +import com.google.common.collect.Lists; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -51,6 +59,9 @@ public class ModuleTypeServiceImpl extends BaseServiceImpl page(Map params) { IPage page = baseDao.selectPage( @@ -184,4 +195,82 @@ public class ModuleTypeServiceImpl extends BaseServiceImpl roleResult = adminFeignClient.getRoleStringIdsByUserId(SecurityUser.getUserId()); + if (!roleResult.success()) { + throw new RenException("获取用户角色失败"); + } + List deptList = baseDao.getModuleListByRole(roleResult.getData()); + + JSONObject node; + JSONArray headNodes = new JSONArray(); + for (ModuleOptionDTO deptItemDto : deptList) { + if (deptItemDto.getPid().longValue() == 0) { + node = new JSONObject(); + node.put("value", deptItemDto.getId()); + node.put("label", deptItemDto.getLabel()); + headNodes.add(node); + } + } + // 用于存放所有父级节点 + JSONArray parent; + parent = headNodes; + // 用于存放所有子级节点 + JSONArray allChildren = new JSONArray(); + JSONArray children; + // 用于存放单个子级节点 + JSONObject childNode; + // 存放其余未处理的类别(节点) + List others = this.getOtherDept(deptList, parent); + + while (!others.isEmpty()) { + for (int i = 0; i < parent.size(); i++) { + node = parent.getJSONObject(i); + children = new JSONArray(); + for (ModuleOptionDTO categoryTreeDto : others) { + if (categoryTreeDto.getPid().equals(node.get("value"))) { + childNode = new JSONObject(); + childNode.put("value", categoryTreeDto.getId()); + childNode.put("label", categoryTreeDto.getLabel()); + children.add(childNode); + allChildren.add(childNode); + } + } + if (!children.isEmpty()) { + node.put("children", children); + } + } + parent = allChildren; + + others = this.getOtherDept(others, parent); + + } + //存放到redis中 + ModuleOption option = new ModuleOption(); + option.setModuleOptions(headNodes); + + return option; + } + + + + List getOtherDept(List deptList, JSONArray parent) { + List already = Lists.newArrayList(); + for (int i = 0; i < parent.size(); i++) { + already.add((Long) parent.getJSONObject(i).get("value")); + } + + List others = Lists.newArrayList(); + + for (ModuleOptionDTO categoryTreeDto : deptList) { + Long categoryTreeDtoId = categoryTreeDto.getId(); + if (!already.contains(categoryTreeDtoId)) { + others.add(categoryTreeDto); + } + } + return others; + } + } \ No newline at end of file diff --git a/epdc-cloud-news/src/main/java/com/elink/esua/epdc/service/impl/NoticeServiceImpl.java b/epdc-cloud-news/src/main/java/com/elink/esua/epdc/service/impl/NoticeServiceImpl.java index 3a6edfc..b5c788f 100644 --- a/epdc-cloud-news/src/main/java/com/elink/esua/epdc/service/impl/NoticeServiceImpl.java +++ b/epdc-cloud-news/src/main/java/com/elink/esua/epdc/service/impl/NoticeServiceImpl.java @@ -72,8 +72,9 @@ public class NoticeServiceImpl extends BaseServiceImpl public PageData page(Map params) { String noticeTitle = (String) params.get("noticeTitle"); params.put("noticeTitle", noticeTitle.trim()); - QueryWrapper wrapper = this.getWrapper(params); -// .eq(FieldConstant.CREATED_BY, SecurityUser.getUserId()); + QueryWrapper wrapper = this.getWrapper(params) + .eq(FieldConstant.CREATED_BY, SecurityUser.getUserId()) + .isNull("type_id"); IPage page = baseDao.selectPage( getPage(params, FieldConstant.CREATED_TIME, false), @@ -117,6 +118,11 @@ public class NoticeServiceImpl extends BaseServiceImpl public NoticeDTO get(String id) { NoticeEntity entity = baseDao.selectById(id); NoticeDTO dto = ConvertUtils.sourceToTarget(entity, NoticeDTO.class); + if(StringUtils.isNotBlank(entity.getTypeId())){ + String[] ids = entity.getAllTypeId().split(","); + List moduleTypes = Arrays.asList(ids); + dto.setAllTypeId(moduleTypes); + } /*if(StringUtils.isNotBlank(dto.getAllDeptIds())){ String[] idsShow = dto.getAllDeptIds().split(","); List ids = Arrays.asList(idsShow); @@ -244,6 +250,70 @@ public class NoticeServiceImpl extends BaseServiceImpl baseDao.updateDeptNameByDeptId(dto.getNewDeptName(), dto.getDeptId()); } + @Override + public Result saveOrUpContent(NoticeDTO dto) { + saveContentOrUpdate(dto); + return new Result().ok(""); + } + + /** + * @describe: 后台内容管理-新增/更新 + * @author wangtong + * @date 2021/8/11 14:19 + * @params [] + * @return void + */ + private void saveContentOrUpdate(NoticeDTO dto){ + UserDetail user = SecurityUser.getUser(); + // 通知所属部门(发布者所在部门) + Long noticeDeptId = user.getDeptId(); + dto.setCreatorName(user.getRealName()); + + NoticeEntity entity = ConvertUtils.sourceToTarget(dto, NoticeEntity.class); + entity.setDeptId(noticeDeptId); + entity.setDeptName(user.getDeptName()); + entity.setAllTypeId(StringUtils.join(dto.getAllTypeId(), ",")); + // 塞入全部部门ids,names + Result parentResult = adminFeignClient.getParentAndAllDept(String.valueOf(noticeDeptId)); + if (!parentResult.success() || parentResult.getData() == null) { + throw new RenException("获取用户部门信息失败"); + } else { + ParentAndAllDeptDTO deptDTO = parentResult.getData(); + entity.setAllDeptIds(deptDTO.getAllDeptIds()); + entity.setAllDeptNames(deptDTO.getAllDeptNames()); + entity.setParentDeptIds(deptDTO.getParentDeptIds()); + entity.setParentDeptNames(deptDTO.getParentDeptNames()); + } + + List noticeGridList = NewsUtils.getAllGridId(dto.getAllDeptIdsShow()); + + boolean isSave = true; + if (StringUtils.isNotBlank(dto.getId())) { + isSave = false; + } + + if (isSave) { + entity.setReadingAmount(NumConstant.ZERO); + insert(entity); + } else { + entity.setUpdatedBy(user.getRealName()); + entity.setUpdatedTime(new Date()); + this.baseDao.updateNoticeById(entity); + noticeDepartmentService.deleteByNoticeId(entity.getId()); + } + + this.noticeDepartmentService.save(entity.getId(), noticeGridList); + } + + @Override + public PageData modulePage(Map params) { + params.put("createdBy", SecurityUser.getUserId()); + + IPage page = getPage(params); + List list = baseDao.getModulePageList(params); + return new PageData<>(list, page.getTotal()); + } + /** * * 组织机构信息处理 diff --git a/epdc-cloud-news/src/main/resources/mapper/ModuleTypeDao.xml b/epdc-cloud-news/src/main/resources/mapper/ModuleTypeDao.xml index b28fccc..3bc8bd1 100644 --- a/epdc-cloud-news/src/main/resources/mapper/ModuleTypeDao.xml +++ b/epdc-cloud-news/src/main/resources/mapper/ModuleTypeDao.xml @@ -27,6 +27,14 @@ select t1.*,(select t2.type_name from epdc_module_type t2 where t2.id=t1.pid)parentName from epdc_module_type t1 where t1.id = #{id} and t1.del_flag = 0 + \ No newline at end of file diff --git a/epdc-cloud-news/src/main/resources/mapper/NoticeDao.xml b/epdc-cloud-news/src/main/resources/mapper/NoticeDao.xml index 336771e..937d1ab 100644 --- a/epdc-cloud-news/src/main/resources/mapper/NoticeDao.xml +++ b/epdc-cloud-news/src/main/resources/mapper/NoticeDao.xml @@ -51,7 +51,9 @@ updated_by = #{updatedBy}, updated_time = #{updatedTime}, dept_id=#{deptId}, - dept_name=#{deptName} + dept_name=#{deptName}, + TOP_FLAG=#{topFlag}, + NOTICE_UP_DOWN_STATE=#{noticeUpDownState} WHERE id = #{id} AND del_flag = '0' @@ -94,5 +96,17 @@ UPDATE epdc_notice SET DEPT_NAME = #{newDeptName}, UPDATED_TIME = NOW() WHERE DEPT_ID = #{deptId} + \ No newline at end of file