123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310 |
- package com.ruoyi.web.service.impl;
- import cn.hutool.core.bean.BeanUtil;
- import cn.hutool.core.util.ObjectUtil;
- import cn.hutool.core.util.StrUtil;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import com.ruoyi.common.core.domain.entity.SysUser;
- import com.ruoyi.common.enums.BusinessType;
- import com.ruoyi.common.exception.ServiceException;
- import com.ruoyi.common.utils.SecurityUtils;
- import com.ruoyi.system.service.ISysUserService;
- import com.ruoyi.web.domain.dto.government.GovernmentInfoAddRequest;
- import com.ruoyi.web.domain.dto.government.GovernmentInfoEditRequest;
- import com.ruoyi.web.domain.dto.government.GovernmentInfoQueryRequest;
- import com.ruoyi.web.domain.entity.GovernmentInfo;
- import com.ruoyi.web.domain.enums.GovernmentInfoEnum;
- import com.ruoyi.web.domain.vo.GovernmentInfoVO;
- import com.ruoyi.web.mapper.GovernmentInfoMapper;
- import com.ruoyi.web.service.GovernmentInfoService;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import java.util.*;
- import java.util.stream.Collectors;
- /**
- *
- */
- @Service
- public class GovernmentInfoServiceImpl extends ServiceImpl<GovernmentInfoMapper, GovernmentInfo>
- implements GovernmentInfoService {
- @Autowired
- private ISysUserService userService;
- @Override
- public Integer addGovernmentInfo(GovernmentInfoAddRequest governmentInfoAddRequest) {
- if (governmentInfoAddRequest == null) {
- throw new ServiceException("请求参数为空");
- }
- try {
- // 转换为实体对象
- GovernmentInfo governmentInfo = new GovernmentInfo();
- BeanUtil.copyProperties(governmentInfoAddRequest, governmentInfo);
- //数据校验
- validGovernmentInfo(governmentInfo, BusinessType.INSERT);
- Integer status = governmentInfo.getStatus();
- if (status.equals(GovernmentInfoEnum.PUBLISHED.getValue())) {
- // 填充发布日期和发布人
- governmentInfo.setDate(new Date()); // 设置发布日期为当前时间
- Long userId = SecurityUtils.getUserId();
- governmentInfo.setIssuerId(userId.intValue());// 设置发布人ID
- governmentInfo.setStatus(GovernmentInfoEnum.PUBLISHED.getValue());
- }
- // 保存到数据库
- this.save(governmentInfo);
- return governmentInfo.getId();
- } catch (Exception e) {
- log.error("添加政务信息失败", e);
- throw new ServiceException("添加政务信息失败");
- }
- }
- @Override
- public boolean deleteGovernmentInfo(String ids) {
- if (StrUtil.isBlank(ids)) {
- throw new ServiceException("id不能为空或id异常");
- }
- // 2. 分割ID字符串为List<Integer>
- List<Long> idList = Arrays.stream(ids.split(","))
- .map(String::trim)
- .filter(StrUtil::isNotBlank)
- .map(Long::parseLong)
- .collect(Collectors.toList());
- if (idList.isEmpty()) {
- throw new ServiceException("ID格式异常");
- }
- // 3. 构建删除条件
- QueryWrapper<GovernmentInfo> queryWrapper = new QueryWrapper<>();
- queryWrapper.in("id", idList);
- // 4. 执行删除(返回是否删除成功)
- return remove(queryWrapper);
- }
- @Override
- public void editGovernmentInfo(GovernmentInfoEditRequest governmentInfoEditRequest) {
- // 判断是否存在
- Integer id = governmentInfoEditRequest.getId();
- GovernmentInfo oldGovernmentInfo = this.getById(id);
- if (oldGovernmentInfo == null) {
- throw new ServiceException("没有找到政务信息");
- }
- GovernmentInfo governmentInfo = new GovernmentInfo();
- BeanUtil.copyProperties(governmentInfoEditRequest, governmentInfo);
- governmentInfo.setUpdateTime(new Date());
- //如果修改状态为 发布 时,填充 发布日期 和 发布人
- if (GovernmentInfoEnum.PUBLISHED.getValue() == governmentInfo.getStatus()) {
- // 填充发布日期和发布人
- governmentInfo.setDate(new Date()); // 设置发布日期为当前时间
- Long userId = SecurityUtils.getUserId();
- governmentInfo.setIssuerId(userId.intValue());// 设置发布人ID
- }
- // 数据校验
- validGovernmentInfo(governmentInfo, BusinessType.UPDATE);
- // 操作数据库
- boolean result = this.updateById(governmentInfo);
- if (!result) {
- throw new ServiceException("修改政务信息操作失败");
- }
- }
- /**
- * 发布
- *
- * @param id
- * @return
- */
- @Override
- public boolean publishGovernmentInfo(int id) {
- if (id <= 0) {
- throw new ServiceException("参数错误");
- }
- GovernmentInfo governmentInfo = this.getById(id);
- if (governmentInfo == null) {
- throw new ServiceException("没有找到政务信息");
- }
- Integer status = governmentInfo.getStatus();
- if (status.equals(GovernmentInfoEnum.NON_PUBLISHED.getValue())) {
- // 填充发布日期和发布人
- governmentInfo.setDate(new Date()); // 设置发布日期为当前时间
- Long userId = SecurityUtils.getUserId();
- governmentInfo.setIssuerId(userId.intValue());// 设置发布人ID
- governmentInfo.setStatus(GovernmentInfoEnum.PUBLISHED.getValue());
- this.updateById(governmentInfo);
- } else {
- throw new ServiceException("只有未发布的才能发布");
- }
- return true;
- }
- /**
- * 下架
- *
- * @param id
- * @return
- */
- @Override
- public boolean removeGovernmentInfo(int id) {
- if (id <= 0) {
- throw new ServiceException("参数错误");
- }
- GovernmentInfo governmentInfo = this.getById(id);
- if (governmentInfo == null) {
- throw new ServiceException("没有找到政务信息");
- }
- Integer status = governmentInfo.getStatus();
- if (status.equals(GovernmentInfoEnum.PUBLISHED.getValue())) {
- governmentInfo.setStatus(GovernmentInfoEnum.REMOVED.getValue());
- } else {
- throw new ServiceException("发布的才能下架");
- }
- this.updateById(governmentInfo);
- return true;
- }
- /**
- * 校验政务信息
- *
- * @param governmentInfo
- */
- public void validGovernmentInfo(GovernmentInfo governmentInfo, BusinessType type) {
- if (ObjectUtil.isEmpty(governmentInfo)) {
- throw new ServiceException("数据为空");
- }
- Integer id = governmentInfo.getId();
- String title = governmentInfo.getTitle();
- String tag = governmentInfo.getTag();
- String serviceType = governmentInfo.getType();
- String content = governmentInfo.getContent();
- // 添加id无需校验,修改时,id 不能为空
- if (type != BusinessType.INSERT && ObjectUtil.isEmpty(id)) {
- throw new ServiceException("id不能为空");
- }
- if (StrUtil.isBlank(title)) {
- throw new ServiceException("标题不能为空");
- }
- if (StrUtil.isBlank(tag)) {
- throw new ServiceException("标签不能为空");
- }
- if (StrUtil.isBlank(serviceType)) {
- throw new ServiceException("类型不能为空");
- }
- if (StrUtil.isBlank(content)) {
- throw new ServiceException("内容不能为空");
- }
- }
- @Override
- public GovernmentInfoVO getGovernmentInfoById(int id) {
- if (id <= 0 || ObjectUtil.isEmpty(id)) {
- throw new ServiceException("id不能为空或id异常");
- }
- GovernmentInfo governmentInfo = this.getById(id);
- if (governmentInfo == null) {
- return null;
- }
- return getGovernmentInfoVO(governmentInfo);
- }
- @Override
- public Page<GovernmentInfoVO> getListGovernmentInfoByPage(GovernmentInfoQueryRequest governmentInfoQueryRequest) {
- long current = governmentInfoQueryRequest.getPageNum();
- long size = governmentInfoQueryRequest.getPageSize();
- Page<GovernmentInfo> servicePage = this.page(new Page<>(current, size),
- getQueryWrapper(governmentInfoQueryRequest));
- // 创建VO分页对象
- Page<GovernmentInfoVO> voPage = new Page<>(current, size, servicePage.getTotal());
- // 转换为VO列表
- List<GovernmentInfoVO> voList = new ArrayList<>();
- for (GovernmentInfo service : servicePage.getRecords()) {
- voList.add(getGovernmentInfoVO(service));
- }
- voPage.setRecords(voList);
- return voPage;
- }
- /**
- * 将实体转换为VO,并填充发布人信息
- */
- @Override
- public GovernmentInfoVO getGovernmentInfoVO(GovernmentInfo governmentInfo) {
- GovernmentInfoVO vo = new GovernmentInfoVO();
- BeanUtil.copyProperties(governmentInfo, vo);
- // 如果有发布人ID,获取发布人信息
- Integer issuerId = governmentInfo.getIssuerId();
- if (issuerId != null) {
- try {
- SysUser user = userService.selectUserById(issuerId.longValue());
- if (user != null) {
- Map<String, String> issuer = new HashMap<>();
- issuer.put("nickName", user.getNickName());
- // 填充其他信息
- vo.setIssuer(issuer);
- }
- } catch (Exception e) {
- log.error("获取发布人信息失败", e);
- throw new ServiceException("获取发布人信息失败");
- }
- }
- return vo;
- }
- @Override
- public QueryWrapper<GovernmentInfo> getQueryWrapper(GovernmentInfoQueryRequest governmentInfoQueryRequest) {
- QueryWrapper<GovernmentInfo> queryWrapper = new QueryWrapper<>();
- if (governmentInfoQueryRequest == null) {
- return queryWrapper;
- }
- // 从对象中取值
- String tag = governmentInfoQueryRequest.getTag();
- String keyword = governmentInfoQueryRequest.getKeyword();
- Date startTime = governmentInfoQueryRequest.getStartTime();
- Date endTime = governmentInfoQueryRequest.getEndTime();
- Integer status = governmentInfoQueryRequest.getStatus();
- String sortField = governmentInfoQueryRequest.getSortField();
- String sortOrder = governmentInfoQueryRequest.getSortOrder();
- queryWrapper.eq(ObjectUtil.isNotEmpty(status), "status", status)
- .eq(StrUtil.isNotEmpty(tag), "tag", tag);
- // 如果关键字不为空,添加模糊查询条件 标题或内容
- if (StrUtil.isNotBlank(keyword)) {
- queryWrapper.like("title", keyword)
- .or()
- .like("content", keyword);
- }
- // 日期范围查询(优先判断范围)
- if (startTime != null && endTime != null) {
- queryWrapper.between("date", startTime, endTime);
- } else if (startTime != null) {
- queryWrapper.ge("date", startTime); // >= 开始日期
- } else if (endTime != null) {
- queryWrapper.le("date", endTime); // <= 结束日期
- }
- // 排序
- queryWrapper.orderBy(StrUtil.isNotEmpty(sortField), "ascend".equals(sortOrder), sortField);
- return queryWrapper;
- }
- }
|