From de70d21d8dea3e8ae972722456e3e8223a798ae5 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期五, 12 七月 2024 18:26:28 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
server/service/src/main/java/com/doumee/service/business/impl/NewsServiceImpl.java | 222 +++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 188 insertions(+), 34 deletions(-)
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/NewsServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/NewsServiceImpl.java
index 5bc8b55..f51413f 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/NewsServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/NewsServiceImpl.java
@@ -1,19 +1,32 @@
package com.doumee.service.business.impl;
+import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Constants;
import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.MultifileMapper;
import com.doumee.dao.business.NewsMapper;
+import com.doumee.dao.business.model.BjParam;
+import com.doumee.dao.business.model.Multifile;
import com.doumee.dao.business.model.News;
+import com.doumee.dao.system.model.SystemUser;
import com.doumee.service.business.NewsService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
+import java.util.ArrayList;
+import java.util.Date;
import java.util.List;
/**
@@ -26,16 +39,60 @@
@Autowired
private NewsMapper newsMapper;
+ @Autowired
+ private MultifileMapper multifileMapper;
+ @Autowired
+ private SystemDictDataBiz systemDictDataBiz;
@Override
- public Long create(News news) {
- newsMapper.insert(news);
- return news.getId();
+ @Transactional
+ public Long create(News param) {
+ LoginUserInfo userInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+ param.setIsdeleted(Constants.ZERO);
+ param.setEditor(userInfo.getId());
+ param.setCreator(userInfo.getId());
+ param.setStatus(Constants.formatIntegerNum(param.getStatus()));
+ param.setCreateDate(new Date());
+ param.setEditDate(param.getCreateDate());
+ param.setPublishUserid(param.getCreator());
+ param.setFileType(Constants.formatIntegerNum(param.getFileType()));
+ newsMapper.insert(param);
+ if(param.getFileList()!=null && param.getFileList().size()>0){
+ List<Multifile> multifiles = new ArrayList<>();
+ int index =1;
+ for(Multifile f : param.getFileList()){
+ if(StringUtils.isNotBlank(f.getFileurl())){
+ f.setId(null);
+ f.setIsdeleted(Constants.ZERO);
+ f.setObjId(param.getId());
+ f.setType(StringUtils.endsWith(f.getFileurl(),".mp4")?Constants.ONE:Constants.ZERO);
+ f.setObjType(Constants.MultiFile.NEWS_FILE.getKey());
+ f.setCreator(param.getCreator());
+ f.setCreateDate(param.getCreateDate());
+ f.setSortnum(index++);
+ multifiles.add(f);
+ }
+ }
+ if(multifiles.size()>0){
+ multifileMapper.insert(multifiles);
+ }
+ }
+ return param.getId();
}
@Override
public void deleteById(Long id) {
- newsMapper.deleteById(id);
+ LoginUserInfo userInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+ newsMapper.update(null,new UpdateWrapper<News>().lambda()
+ .set(News::getIsdeleted,Constants.ONE )
+ .set(News::getEditor,userInfo.getId() )
+ .set(News::getEditDate,new Date() )
+ .eq(News::getId,id));
+ multifileMapper.update(null,new UpdateWrapper<Multifile>().lambda()
+ .set(Multifile::getIsdeleted,Constants.ONE )
+ .eq(Multifile::getIsdeleted,Constants.ZERO )
+ .eq(Multifile::getObjType,Constants.MultiFile.NEWS_FILE.getKey())
+ .eq(Multifile::getObjId,id));
}
@Override
@@ -49,12 +106,44 @@
if (CollectionUtils.isEmpty(ids)) {
return;
}
- newsMapper.deleteBatchIds(ids);
+ for(Long id : ids){
+ deleteById(id);
+ }
}
@Override
+ @Transactional
public void updateById(News news) {
+ LoginUserInfo userInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+ news.setEditor(userInfo.getId());
+ news.setEditDate(new Date());
+ news.setPublishUserid(news.getEditor());
newsMapper.updateById(news);
+ if(news.getFileList()!=null && news.getFileList().size()>0){
+ List<Multifile> multifiles = new ArrayList<>();
+ int index =1;
+ for(Multifile f : news.getFileList()){
+ if(StringUtils.isNotBlank(f.getFileurl())){
+ f.setId(null);
+ f.setIsdeleted(Constants.ZERO);
+ f.setType(StringUtils.endsWith(f.getFileurl(),".mp4")?Constants.ONE:Constants.ZERO);
+ f.setObjId(news.getId());
+ f.setObjType(Constants.MultiFile.NEWS_FILE.getKey());
+ f.setCreator(news.getCreator());
+ f.setCreateDate(news.getCreateDate());
+ f.setSortnum(index++);
+ multifiles.add(f);
+ }
+ }
+ if(multifiles.size()>0){
+ multifileMapper.update(null,new UpdateWrapper<Multifile>().lambda()
+ .set(Multifile::getIsdeleted,Constants.ONE )
+ .eq(Multifile::getIsdeleted,Constants.ZERO )
+ .eq(Multifile::getObjType,Constants.MultiFile.NEWS_FILE.getKey())
+ .eq(Multifile::getObjId,news.getId() ));
+ multifileMapper.insert(multifiles);
+ }
+ }
}
@Override
@@ -87,76 +176,141 @@
@Override
public PageData<News> findPage(PageWrap<News> pageWrap) {
IPage<News> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
- QueryWrapper<News> queryWrapper = new QueryWrapper<>();
+ MPJLambdaWrapper<News> queryWrapper = new MPJLambdaWrapper<>();
Utils.MP.blankToNull(pageWrap.getModel());
+ pageWrap.getModel().setIsdeleted(Constants.ZERO);
+ queryWrapper.leftJoin(SystemUser.class,SystemUser::getId,News::getEditor)
+ .selectAll(News.class)
+ .selectAs(SystemUser::getRealname,News::getEditorName);
if (pageWrap.getModel().getId() != null) {
- queryWrapper.lambda().eq(News::getId, pageWrap.getModel().getId());
+ queryWrapper.eq(News::getId, pageWrap.getModel().getId());
}
if (pageWrap.getModel().getCreator() != null) {
- queryWrapper.lambda().eq(News::getCreator, pageWrap.getModel().getCreator());
+ queryWrapper.eq(News::getCreator, pageWrap.getModel().getCreator());
}
if (pageWrap.getModel().getCreateDate() != null) {
- queryWrapper.lambda().ge(News::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
- queryWrapper.lambda().le(News::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
+ queryWrapper.ge(News::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
+ queryWrapper.le(News::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
}
if (pageWrap.getModel().getEditor() != null) {
- queryWrapper.lambda().eq(News::getEditor, pageWrap.getModel().getEditor());
+ queryWrapper.eq(News::getEditor, pageWrap.getModel().getEditor());
}
if (pageWrap.getModel().getEditDate() != null) {
- queryWrapper.lambda().ge(News::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
- queryWrapper.lambda().le(News::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
+ queryWrapper.ge(News::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
+ queryWrapper.le(News::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
}
if (pageWrap.getModel().getIsdeleted() != null) {
- queryWrapper.lambda().eq(News::getIsdeleted, pageWrap.getModel().getIsdeleted());
+ queryWrapper.eq(News::getIsdeleted, pageWrap.getModel().getIsdeleted());
}
if (pageWrap.getModel().getRemark() != null) {
- queryWrapper.lambda().eq(News::getRemark, pageWrap.getModel().getRemark());
+ queryWrapper.eq(News::getRemark, pageWrap.getModel().getRemark());
}
if (pageWrap.getModel().getTitle() != null) {
- queryWrapper.lambda().like(News::getTitle, pageWrap.getModel().getTitle());
+ queryWrapper.like(News::getTitle, pageWrap.getModel().getTitle());
}
if (pageWrap.getModel().getSubTitle() != null) {
- queryWrapper.lambda().eq(News::getSubTitle, pageWrap.getModel().getSubTitle());
+ queryWrapper.eq(News::getSubTitle, pageWrap.getModel().getSubTitle());
}
if (pageWrap.getModel().getSortnum() != null) {
- queryWrapper.lambda().eq(News::getSortnum, pageWrap.getModel().getSortnum());
+ queryWrapper.eq(News::getSortnum, pageWrap.getModel().getSortnum());
}
if (pageWrap.getModel().getContent() != null) {
- queryWrapper.lambda().eq(News::getContent, pageWrap.getModel().getContent());
+ queryWrapper.eq(News::getContent, pageWrap.getModel().getContent());
}
if (pageWrap.getModel().getLinkType() != null) {
- queryWrapper.lambda().eq(News::getLinkType, pageWrap.getModel().getLinkType());
+ queryWrapper.eq(News::getLinkType, pageWrap.getModel().getLinkType());
}
if (pageWrap.getModel().getStatus() != null) {
- queryWrapper.lambda().eq(News::getStatus, pageWrap.getModel().getStatus());
+ queryWrapper.eq(News::getStatus, pageWrap.getModel().getStatus());
}
if (pageWrap.getModel().getLookNum() != null) {
- queryWrapper.lambda().eq(News::getLookNum, pageWrap.getModel().getLookNum());
+ queryWrapper.eq(News::getLookNum, pageWrap.getModel().getLookNum());
}
if (pageWrap.getModel().getDonwloadNum() != null) {
- queryWrapper.lambda().eq(News::getDonwloadNum, pageWrap.getModel().getDonwloadNum());
+ queryWrapper.eq(News::getDonwloadNum, pageWrap.getModel().getDonwloadNum());
}
if (pageWrap.getModel().getPublishDate() != null) {
- queryWrapper.lambda().ge(News::getPublishDate, Utils.Date.getStart(pageWrap.getModel().getPublishDate()));
- queryWrapper.lambda().le(News::getPublishDate, Utils.Date.getEnd(pageWrap.getModel().getPublishDate()));
+ queryWrapper.ge(News::getPublishDate, Utils.Date.getStart(pageWrap.getModel().getPublishDate()));
+ queryWrapper.le(News::getPublishDate, Utils.Date.getEnd(pageWrap.getModel().getPublishDate()));
}
if (pageWrap.getModel().getPublishUserid() != null) {
- queryWrapper.lambda().eq(News::getPublishUserid, pageWrap.getModel().getPublishUserid());
+ queryWrapper.eq(News::getPublishUserid, pageWrap.getModel().getPublishUserid());
}
if (pageWrap.getModel().getPublishInfo() != null) {
- queryWrapper.lambda().eq(News::getPublishInfo, pageWrap.getModel().getPublishInfo());
+ queryWrapper.eq(News::getPublishInfo, pageWrap.getModel().getPublishInfo());
}
if (pageWrap.getModel().getType() != null) {
- queryWrapper.lambda().eq(News::getType, pageWrap.getModel().getType());
+ queryWrapper.eq(News::getType, pageWrap.getModel().getType());
}
- for(PageWrap.SortData sortData: pageWrap.getSorts()) {
- if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
- queryWrapper.orderByDesc(sortData.getProperty());
- } else {
+
+ PageData<News> pageData = PageData.from(newsMapper.selectJoinPage(page, News.class,queryWrapper));
+ if(pageData!=null && pageData.getRecords()!=null && pageData.getRecords().size()>0){
+
+ List<Long> idList = new ArrayList<>();
+ for(News model : pageData.getRecords()){
+ idList.add(model.getId());
}
- queryWrapper.orderByAsc(sortData.getProperty());
+ List<Multifile> files = dealMultifileList(idList);
+ for(News model : pageData.getRecords()){
+ setFilelistById(model,files);
+ }
+
}
- return PageData.from(newsMapper.selectPage(page, queryWrapper));
+ return pageData;
+ }
+
+ private void setFilelistById(News model, List<Multifile> multifiles) {
+ if(multifiles!=null && multifiles.size()>0){
+ for(Multifile f : multifiles){
+ if(Constants.equalsLong(f.getObjId(),model.getId())){
+ if(Constants.equalsInteger(model.getType(),Constants.ZERO) &&Constants.equalsInteger(model.getFileType(),Constants.ONE) && Constants.equalsInteger(f.getType(),Constants.ONE)){
+ //濡傛灉鏄棰�
+ if(model.getFileList() == null){
+ model.setFileList(new ArrayList<>());
+ }
+ model.getFileList().add(f);
+ break;
+ }
+ if(Constants.equalsInteger(model.getType(),Constants.ZERO) && Constants.equalsInteger(model.getFileType(),Constants.ZERO) && Constants.equalsInteger(f.getType(),Constants.ZERO)){
+ //濡傛灉鏄棰�
+ if(model.getFileList() == null){
+ model.setFileList(new ArrayList<>());
+ }
+ model.getFileList().add(f);
+ }
+
+ if(Constants.equalsInteger(model.getType(),Constants.ONE)){
+ //濡傛灉鏄棰�
+ if(model.getFileList() == null){
+ model.setFileList(new ArrayList<>());
+ }
+ model.getFileList().add(f);
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ private List<Multifile> dealMultifileList(List<Long> idList) {
+ List<Integer> types = new ArrayList<>();
+ types.add(Constants.MultiFile.NEWS_FILE.getKey());
+ List<Multifile> multifiles = multifileMapper.selectList(new QueryWrapper<Multifile>().lambda()
+ .eq(Multifile::getIsdeleted,Constants.ZERO )
+ .in(Multifile::getObjType,types)
+ .in(Multifile::getObjId,idList )
+ .orderByAsc(Multifile::getSortnum)
+ );
+ if(multifiles!=null && multifiles.size()>0){
+ String path = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.RESOURCE_PATH ).getCode() +
+ systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE,Constants.NEWS_FILE ).getCode();
+ for(Multifile f : multifiles){
+ if(StringUtils.isNotBlank(f.getFileurl())){
+ f.setFileurlFull(path + f.getFileurl());
+ }
+ }
+ }
+ return multifiles;
}
@Override
--
Gitblit v1.9.3