diff --git a/epdc-cloud-news/src/main/java/com/elink/esua/epdc/controller/EpdcAppNewsController.java b/epdc-cloud-news/src/main/java/com/elink/esua/epdc/controller/EpdcAppNewsController.java index 5ffbb1f..292c31c 100644 --- a/epdc-cloud-news/src/main/java/com/elink/esua/epdc/controller/EpdcAppNewsController.java +++ b/epdc-cloud-news/src/main/java/com/elink/esua/epdc/controller/EpdcAppNewsController.java @@ -131,23 +131,8 @@ public class EpdcAppNewsController { * @author qushutong * @date 2019/9/10 20:58 */ - @GetMapping("list") + @GetMapping("listBanner") public Result> listBanner(@RequestBody EpdcBannerListFromDTO fromDTO) { return new Result().ok(bannerService.listBanner(fromDTO)); } - - /** - * 根据新闻类别,获取banner列表 - * - * @param fromDTO - * @return com.elink.esua.epdc.commons.tools.utils.Result> - * @author work@yujt.net.cn - * @date 2020/5/22 17:53 - */ - @GetMapping("listBannerByCategory") - public Result> listBannerByCategory(@RequestBody EpdcBannerListByCategoryFromDTO fromDTO) { - ValidatorUtils.validateEntity(fromDTO); - List bannerList = bannerService.listBannerByCategory(fromDTO); - return new Result().ok(bannerList); - } } \ No newline at end of file diff --git a/epdc-cloud-news/src/main/java/com/elink/esua/epdc/dao/BannerDao.java b/epdc-cloud-news/src/main/java/com/elink/esua/epdc/dao/BannerDao.java index 97d1615..4f78a3f 100644 --- a/epdc-cloud-news/src/main/java/com/elink/esua/epdc/dao/BannerDao.java +++ b/epdc-cloud-news/src/main/java/com/elink/esua/epdc/dao/BannerDao.java @@ -19,7 +19,6 @@ package com.elink.esua.epdc.dao; import com.elink.esua.epdc.commons.mybatis.dao.BaseDao; import com.elink.esua.epdc.dto.BannerDTO; -import com.elink.esua.epdc.dto.epdc.form.EpdcBannerListByCategoryFromDTO; import com.elink.esua.epdc.dto.epdc.form.EpdcBannerListFromDTO; import com.elink.esua.epdc.dto.epdc.result.EpdcBannerListResultDTO; import com.elink.esua.epdc.entity.BannerEntity; @@ -44,17 +43,6 @@ public interface BannerDao extends BaseDao { */ List selectListBanner(EpdcBannerListFromDTO fromDTO); - /** - * 根据新闻类别,获取banner列表 - * - * @param fromDTO - * @return java.util.List - * @author work@yujt.net.cn - * @date 2020/5/22 17:53 - */ - List listBannerByCategory(EpdcBannerListByCategoryFromDTO fromDTO); - - /*** * 根据新闻id获取bannerID * @param newsId diff --git a/epdc-cloud-news/src/main/java/com/elink/esua/epdc/dao/NewsDao.java b/epdc-cloud-news/src/main/java/com/elink/esua/epdc/dao/NewsDao.java index 750289c..1f25897 100644 --- a/epdc-cloud-news/src/main/java/com/elink/esua/epdc/dao/NewsDao.java +++ b/epdc-cloud-news/src/main/java/com/elink/esua/epdc/dao/NewsDao.java @@ -99,25 +99,32 @@ public interface NewsDao extends BaseDao { List selectAllPage(Map params); /** - * * 查询需要修改组织机构信息 * - * @params [deptId] * @return java.util.List + * @params [deptId] * @author liuchuang * @since 2020/3/7 14:44 */ List selectListOfOrganizationInfo(String deptId); /** - * * 更新部门名称 * - * @params [newDeptName, deptId] * @return void + * @params [newDeptName, deptId] * @author liuchuang * @since 2020/3/7 1:20 */ - void updateDeptNameByDeptId(String newDeptName, Long deptId); + void updateDeptNameByDeptId(@Param("newDeptName") String newDeptName, @Param("deptId") Long deptId); + /** + * 查询新闻信息,包括新闻类别信息 + * + * @param newsId + * @return com.elink.esua.epdc.dto.NewsDTO + * @author work@yujt.net.cn + * @date 2020/5/27 09:52 + */ + NewsDTO selectOneNewsDto(@Param("newsId") String newsId); } \ No newline at end of file diff --git a/epdc-cloud-news/src/main/java/com/elink/esua/epdc/entity/BannerEntity.java b/epdc-cloud-news/src/main/java/com/elink/esua/epdc/entity/BannerEntity.java index adcbe29..92a1bda 100644 --- a/epdc-cloud-news/src/main/java/com/elink/esua/epdc/entity/BannerEntity.java +++ b/epdc-cloud-news/src/main/java/com/elink/esua/epdc/entity/BannerEntity.java @@ -58,11 +58,6 @@ public class BannerEntity extends BaseEpdcEntity { */ private String bannerType; - /** - * 新闻类别ID - */ - private String newsCategory; - /** * 上下架状态(0-下架,1-上架) */ diff --git a/epdc-cloud-news/src/main/java/com/elink/esua/epdc/service/BannerService.java b/epdc-cloud-news/src/main/java/com/elink/esua/epdc/service/BannerService.java index 7c3a5aa..9f34716 100644 --- a/epdc-cloud-news/src/main/java/com/elink/esua/epdc/service/BannerService.java +++ b/epdc-cloud-news/src/main/java/com/elink/esua/epdc/service/BannerService.java @@ -21,7 +21,6 @@ import com.elink.esua.epdc.commons.mybatis.service.BaseService; import com.elink.esua.epdc.commons.tools.page.PageData; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.dto.BannerDTO; -import com.elink.esua.epdc.dto.epdc.form.EpdcBannerListByCategoryFromDTO; import com.elink.esua.epdc.dto.epdc.form.EpdcBannerListFromDTO; import com.elink.esua.epdc.dto.epdc.result.EpdcBannerListResultDTO; import com.elink.esua.epdc.entity.BannerEntity; @@ -106,16 +105,6 @@ public interface BannerService extends BaseService { */ List listBanner(EpdcBannerListFromDTO fromDTO); - /** - * 根据新闻类别,获取banner列表 - * - * @param fromDTO - * @return java.util.List - * @author work@yujt.net.cn - * @date 2020/5/22 17:52 - */ - List listBannerByCategory(EpdcBannerListByCategoryFromDTO fromDTO); - /*** * 新闻上banner * @param banner diff --git a/epdc-cloud-news/src/main/java/com/elink/esua/epdc/service/impl/BannerServiceImpl.java b/epdc-cloud-news/src/main/java/com/elink/esua/epdc/service/impl/BannerServiceImpl.java index 5741b05..8455a88 100644 --- a/epdc-cloud-news/src/main/java/com/elink/esua/epdc/service/impl/BannerServiceImpl.java +++ b/epdc-cloud-news/src/main/java/com/elink/esua/epdc/service/impl/BannerServiceImpl.java @@ -17,7 +17,6 @@ package com.elink.esua.epdc.service.impl; -import cn.hutool.core.collection.CollUtil; 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; @@ -32,9 +31,7 @@ import com.elink.esua.epdc.commons.tools.constant.FieldConstant; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.dao.BannerDao; import com.elink.esua.epdc.dto.BannerDTO; -import com.elink.esua.epdc.dto.NewsUserAttitudeDTO; import com.elink.esua.epdc.dto.ParentAndAllDeptDTO; -import com.elink.esua.epdc.dto.epdc.form.EpdcBannerListByCategoryFromDTO; import com.elink.esua.epdc.dto.epdc.form.EpdcBannerListFromDTO; import com.elink.esua.epdc.dto.epdc.result.EpdcBannerListResultDTO; import com.elink.esua.epdc.entity.BannerEntity; @@ -43,7 +40,6 @@ import com.elink.esua.epdc.rocketmq.dto.OrganizationModifyDTO; import com.elink.esua.epdc.service.BannerDepartmentService; import com.elink.esua.epdc.service.BannerService; import com.elink.esua.epdc.util.NewsUtils; -import com.google.common.collect.Lists; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -96,11 +92,6 @@ public class BannerServiceImpl extends BaseServiceImpl public BannerDTO get(String id) { BannerEntity entity = baseDao.selectById(id); BannerDTO dto = ConvertUtils.sourceToTarget(entity, BannerDTO.class); - /*if(StringUtils.isNotBlank(dto.getAllDeptIds())){ - String[] idsShow = dto.getAllDeptIds().split(","); - List ids = Arrays.asList(idsShow); - dto.setAllDeptIdsShow(ids.subList(1,ids.size())); - }*/ return dto; } @@ -165,14 +156,6 @@ public class BannerServiceImpl extends BaseServiceImpl return baseDao.selectListBanner(fromDto); } - @Override - public List listBannerByCategory(EpdcBannerListByCategoryFromDTO fromDto) { - if (CollUtil.isEmpty(fromDto.getCategoryCodeList())) { - return Lists.newArrayList(); - } - return baseDao.listBannerByCategory(fromDto); - } - @Override public Result saveNewsToBanner(BannerDTO banner, List deptIds) { BannerEntity bannerEntity = ConvertUtils.sourceToTarget(banner, BannerEntity.class); diff --git a/epdc-cloud-news/src/main/java/com/elink/esua/epdc/service/impl/NewsServiceImpl.java b/epdc-cloud-news/src/main/java/com/elink/esua/epdc/service/impl/NewsServiceImpl.java index 36a8a1c..2541e1a 100644 --- a/epdc-cloud-news/src/main/java/com/elink/esua/epdc/service/impl/NewsServiceImpl.java +++ b/epdc-cloud-news/src/main/java/com/elink/esua/epdc/service/impl/NewsServiceImpl.java @@ -31,6 +31,8 @@ import com.elink.esua.epdc.commons.tools.security.user.UserDetail; import com.elink.esua.epdc.commons.tools.utils.ConvertUtils; import com.elink.esua.epdc.commons.tools.constant.FieldConstant; import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.constant.NewsConstant; +import com.elink.esua.epdc.dao.NewsCategoryDao; import com.elink.esua.epdc.dao.NewsDao; import com.elink.esua.epdc.dto.BannerDTO; import com.elink.esua.epdc.dto.NewsDTO; @@ -38,10 +40,12 @@ import com.elink.esua.epdc.dto.NewsUserAttitudeDTO; import com.elink.esua.epdc.dto.ParentAndAllDeptDTO; import com.elink.esua.epdc.dto.epdc.form.*; import com.elink.esua.epdc.dto.epdc.result.EpdcNewsListResultDTO; +import com.elink.esua.epdc.entity.NewsCategoryEntity; import com.elink.esua.epdc.entity.NewsUserAttitudeEntity; import com.elink.esua.epdc.enums.AppNewsLikeEnum; import com.elink.esua.epdc.dto.epdc.result.EpdcNewsDetailResultDTO; import com.elink.esua.epdc.entity.NewsEntity; +import com.elink.esua.epdc.enums.BannerPositionEnum; import com.elink.esua.epdc.enums.IndependentFunctionCodeEnum; import com.elink.esua.epdc.feign.AdminFeignClient; import com.elink.esua.epdc.rocketmq.dto.OrganizationModifyDTO; @@ -97,17 +101,12 @@ public class NewsServiceImpl extends BaseServiceImpl implem private QueryWrapper getWrapper(Map params) { UserDetail user = SecurityUser.getUser(); String draft = (String) params.get("draft"); - /*String streetId = (String) params.get(FieldConstant.STREET_ID_HUMP); - String communityId = (String) params.get(FieldConstant.COMMUNITY_ID_HUMP);*/ String gridId = (String) params.get(FieldConstant.GRID_ID_HUMP); String startTime = (String) params.get("startTime"); String endTime = (String) params.get("endTime"); String category = (String) params.get("category"); String keyword = ((String) params.get("keyword")); QueryWrapper wrapper = new QueryWrapper<>(); - /*wrapper.eq(StringUtils.isNotBlank(streetId), FieldConstant.STREET_ID, streetId); - wrapper.eq(StringUtils.isNotBlank(communityId), "COMMUNITY_ID", communityId); - wrapper.eq(StringUtils.isNotBlank(gridId), FieldConstant.GRID_ID, gridId);*/ wrapper.ge(StringUtils.isNotBlank(startTime), FieldConstant.CREATED_TIME, startTime); wrapper.lt(StringUtils.isNotBlank(endTime), FieldConstant.CREATED_TIME, endTime); wrapper.eq(StringUtils.isNotBlank(category), "NEWS_CATERORY_ID", category); @@ -130,14 +129,7 @@ public class NewsServiceImpl extends BaseServiceImpl implem @Override public NewsDTO get(String id) { - NewsEntity entity = baseDao.selectById(id); - NewsDTO dto = ConvertUtils.sourceToTarget(entity, NewsDTO.class); - /*if(StringUtils.isNotBlank(dto.getAllDeptIds())){ - String[] idsShow = dto.getAllDeptIds().split(","); - List ids = Arrays.asList(idsShow); - dto.setAllDeptIdsShow(ids.subList(1,ids.size())); - }*/ - return dto; + return baseDao.selectOneNewsDto(id); } @Override @@ -224,26 +216,16 @@ public class NewsServiceImpl extends BaseServiceImpl implem private void saveOrUpdateNews(NewsDTO newsDto, String newsReleaseState, String isDraftsPublishNews) { NewsEntity entity = ConvertUtils.sourceToTarget(newsDto, NewsEntity.class); UserDetail user = SecurityUser.getUser(); - Long newsDeptId = user.getDeptId(); //是不是草稿箱 entity.setNewsReleaseState(newsReleaseState); boolean isSave = true; if (StringUtils.isBlank(newsDto.getId())) { - // 新增操作时,保存创建人,创建人部门信息。 - entity.setCreatorName(user.getRealName()); - entity.setDeptId(newsDeptId); - entity.setDeptName(user.getDeptName()); - // 初始化互动数 - entity.setLikeNumber(NumConstant.ZERO); - entity.setUnLikeNumber(NumConstant.ZERO); - entity.setReadingAmount(NumConstant.ZERO); - // 发布的时候 默认是0 手动下线 为1 - entity.setNewsUpDownState(YesOrNoEnum.NO.value()); + initNews(entity, user); } else { isSave = false; } // 新闻所属部门id(新闻发布方所在部门) - ParentAndAllDeptDTO deptDto = getParentAndAllDeptDTO(String.valueOf(newsDeptId)); + ParentAndAllDeptDTO deptDto = getParentAndAllDeptDTO(String.valueOf(user.getDeptId())); DeptEntityUtils.loadDeptInfo( ConvertUtils.sourceToTarget(deptDto, DeptEntityUtils.DeptDto.class), entity @@ -259,24 +241,17 @@ public class NewsServiceImpl extends BaseServiceImpl implem if (isSave) { insert(entity); } else { - // 修改草稿 - if (YesOrNoEnum.YES.value().equals(newsReleaseState)) { - entity.setUpdatedBy(user.getRealName()); - entity.setUpdatedTime(new Date()); - this.baseDao.updateNewsById(entity); - } else { - entity.setUpdatedBy(user.getRealName()); - entity.setUpdatedTime(new Date()); - this.baseDao.updateNewsById(entity); - + updateNewsById(entity, user.getRealName(), new Date(), null); + // 不是修改草稿 + if (YesOrNoEnum.NO.value().equals(newsReleaseState)) { // 已经上banner的处理 if (newsDto.getBannerFlag().equals(YesOrNoEnum.YES.value())) { String bannerId = bannerService.getBannerIdByNewsId(newsDto.getId()); BannerDTO bannerDto = ConvertUtils.sourceToTarget(newsDto, BannerDTO.class); bannerDto.setId(bannerId); bannerDto.setAllDeptIdsShow(allDeptIdsShow); - bannerDto = packBannerDtoByNews(bannerDto, newsDto.getId(), newsDto.getNewsImageUrl(), newsDto.getNewsTitle()); - bannerService.saveOrUpdate(bannerDto); + bannerDto.setPosition(getBannerPositionByCategoryId(newsDto.getNewsCateroryId())); + bannerService.saveOrUpdate(packBannerDtoByNews(bannerDto, newsDto.getId(), newsDto.getNewsImageUrl(), newsDto.getNewsTitle())); } } // 只要是修改操作,新闻部门关系,先删除再插入 @@ -284,14 +259,33 @@ public class NewsServiceImpl extends BaseServiceImpl implem } this.newsDepartmentService.save(entity.getId(), newsGridList); } else { - // 发布一条新闻,只可能是修改,直接修改 - entity.setUpdatedBy(user.getRealName()); - entity.setUpdatedTime(new Date()); - entity.setCreatedTime(new Date()); - this.baseDao.updateNewsById(entity); + // 从草稿发布一条新闻,只可能是修改,直接修改 + updateNewsById(entity, user.getRealName(), new Date(), new Date()); } } + + private void initNews(NewsEntity entity, UserDetail user) { + // 新增操作时,保存创建人,创建人部门信息。 + entity.setCreatorName(user.getRealName()); + entity.setDeptId(user.getDeptId()); + entity.setDeptName(user.getDeptName()); + // 初始化互动数 + entity.setLikeNumber(NumConstant.ZERO); + entity.setUnLikeNumber(NumConstant.ZERO); + entity.setReadingAmount(NumConstant.ZERO); + // 发布的时候 默认是0 手动下线 为1 + entity.setNewsUpDownState(YesOrNoEnum.NO.value()); + } + + + private void updateNewsById(NewsEntity entity, String updatedBy, Date updatedTime, Date createdTime) { + entity.setUpdatedBy(updatedBy); + entity.setUpdatedTime(updatedTime); + entity.setCreatedTime(createdTime); + this.baseDao.updateNewsById(entity); + } + private ParentAndAllDeptDTO getParentAndAllDeptDTO(String gridId) { // 获取组织结构冗余信息 Result parentAndAllDeptDTOResult = adminFeignClient.getParentAndAllDept(gridId); @@ -312,8 +306,6 @@ public class NewsServiceImpl extends BaseServiceImpl implem bannerDto.setTitle(newsTitle); // 数据字典值,2-新闻类型 bannerDto.setBannerType(NumConstant.TWO_STR); - // banner位置,0顶部;1中间 - bannerDto.setPosition(NumConstant.ZERO_STR); return bannerDto; } @@ -329,11 +321,9 @@ public class NewsServiceImpl extends BaseServiceImpl implem @Override public List listNewsByCategory(EpdcNewsListByCategoryFromDTO formDto) { - if (!IndependentFunctionCodeEnum.POLICE_NOTICE.getCode().equals(formDto.getCategoryCode()) - && !IndependentFunctionCodeEnum.SAFETY_PRECAUTIONS.getCode().equals(formDto.getCategoryCode())) { + if (IndependentFunctionCodeEnum.getByCode(formDto.getCategoryCode()) == null) { return Lists.newArrayList(); } - int pageIndex = (formDto.getPageIndex() - NumConstant.ONE) * formDto.getPageSize(); formDto.setPageIndex(pageIndex); return this.baseDao.selectListAppNewsByCategory(formDto); @@ -437,8 +427,8 @@ public class NewsServiceImpl extends BaseServiceImpl implem @Transactional(rollbackFor = Exception.class) public Result newsToBanner(String newsId) { - NewsEntity newsEntity = baseDao.selectById(newsId); - if (null == newsEntity || YesOrNoEnum.YES.value().equals(newsEntity.getBannerFlag())) { + NewsDTO newsDto = baseDao.selectOneNewsDto(newsId); + if (null == newsDto || YesOrNoEnum.YES.value().equals(newsDto.getBannerFlag())) { return new Result().error("操作失败,新闻不存在或已是banner"); } @@ -447,11 +437,9 @@ public class NewsServiceImpl extends BaseServiceImpl implem throw new RenException("获取部门信息失败"); } - BannerDTO banner = ConvertUtils.sourceToTarget(newsEntity, BannerDTO.class); - banner = packBannerDtoByNews(banner, newsId, newsEntity.getNewsImageUrl(), newsEntity.getNewsTitle()); - // 平安榆山相关新闻上banner时,POSITION设为2 - banner.setPosition(NumConstant.TWO_STR); - banner.setNewsCategory(newsEntity.getNewsCateroryId()); + BannerDTO banner = packBannerDtoByNews(ConvertUtils.sourceToTarget(newsDto, BannerDTO.class), + newsId, newsDto.getNewsImageUrl(), newsDto.getNewsTitle()); + banner.setPosition(getBannerPosition(newsDto.getNewsCateroryCode())); this.bannerService.saveNewsToBanner(banner, deptIds); NewsEntity news = new NewsEntity(); @@ -463,6 +451,44 @@ public class NewsServiceImpl extends BaseServiceImpl implem } + @Autowired + private NewsCategoryDao newsCategoryDao; + + /** + * 新闻上banner时,根据新闻类别id确定banner位置 + * + * @param newsCategoryId + * @return java.lang.String + * @author work@yujt.net.cn + * @date 2020/5/27 10:15 + */ + private String getBannerPositionByCategoryId(String newsCategoryId) { + String newsCategoryCode = StringUtils.EMPTY; + NewsCategoryEntity categoryEntity = newsCategoryDao.selectById(newsCategoryId); + if (null != categoryEntity) { + newsCategoryCode = categoryEntity.getCategoryCode(); + } + return getBannerPosition(newsCategoryCode); + } + + /** + * 新闻上banner时,根据新闻类别编码确定banner位置 + * + * @param newsCategoryCode + * @return java.lang.String + * @author work@yujt.net.cn + * @date 2020/5/27 10:15 + */ + private String getBannerPosition(String newsCategoryCode) { + switch (newsCategoryCode) { + case NewsConstant.POLICE_NOTICE: + case NewsConstant.SAFETY_PRECAUTIONS: + return BannerPositionEnum.SAFETY.getValue(); + default: + return BannerPositionEnum.HOME_PAGE_HEAD.getValue(); + } + } + /** * 用户新闻参与类型 * diff --git a/epdc-cloud-news/src/main/java/com/elink/esua/epdc/util/NewsUtils.java b/epdc-cloud-news/src/main/java/com/elink/esua/epdc/util/NewsUtils.java index f8b1520..698fb74 100644 --- a/epdc-cloud-news/src/main/java/com/elink/esua/epdc/util/NewsUtils.java +++ b/epdc-cloud-news/src/main/java/com/elink/esua/epdc/util/NewsUtils.java @@ -1,6 +1,7 @@ package com.elink.esua.epdc.util; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ArrayUtil; import com.elink.esua.epdc.commons.tools.constant.NumConstant; import com.elink.esua.epdc.commons.tools.exception.RenException; import com.google.common.collect.Lists; @@ -26,9 +27,10 @@ public class NewsUtils { public static List getAllGridId(List allDeptIdsShow) { List gridIdList = Lists.newArrayList(); for (Long[] deptOptions : allDeptIdsShow) { - gridIdList.add(deptOptions[deptOptions.length - NumConstant.ONE]); + if (ArrayUtil.isNotEmpty(deptOptions)) { + gridIdList.add(deptOptions[deptOptions.length - NumConstant.ONE]); + } } - if (CollUtil.isEmpty(gridIdList)) { throw new RenException("请选择至少一个最低机构部门"); } diff --git a/epdc-cloud-news/src/main/resources/mapper/BannerDao.xml b/epdc-cloud-news/src/main/resources/mapper/BannerDao.xml index beae99f..be64882 100644 --- a/epdc-cloud-news/src/main/resources/mapper/BannerDao.xml +++ b/epdc-cloud-news/src/main/resources/mapper/BannerDao.xml @@ -24,29 +24,6 @@ limit 5 - - + SELECT + n.*,c.CATEGORY_CODE AS newsCateroryCode + FROM + epdc_news n + LEFT JOIN epdc_news_category c ON n.NEWS_CATERORY_ID = c.ID AND c.DEL_FLAG = '0' + WHERE n.DEL_FLAG = '0' AND n.ID = #{newsId} + + \ No newline at end of file