package com.panzhihua.service_community.service.impl; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; import javax.annotation.Resource; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.panzhihua.common.exceptions.ServiceException; import com.panzhihua.common.model.dtos.AppletesBackstageConfigDTO; import com.panzhihua.common.model.dtos.advertisement.ComOpsAdvDTO; import com.panzhihua.common.model.dtos.advertisement.ComOpsAdvJumpDTO; import com.panzhihua.common.model.dtos.advertisement.PageComOpsAdvDTO; import com.panzhihua.common.model.vos.R; import com.panzhihua.common.model.vos.advertisement.ComOpsAdvJumpVO; import com.panzhihua.common.model.vos.advertisement.ComOpsAdvPosVO; import com.panzhihua.common.model.vos.advertisement.ComOpsAdvVO; import com.panzhihua.service_community.dao.ComOpsAdvDAO; import com.panzhihua.service_community.dao.ComOpsAdvJumpDAO; import com.panzhihua.service_community.dao.ComOpsAdvPosDAO; import com.panzhihua.service_community.model.dos.ComOpsAdvDO; import com.panzhihua.service_community.model.dos.ComOpsAdvJumpDO; import com.panzhihua.service_community.model.dos.ComOpsAdvPosDO; import com.panzhihua.service_community.service.ComOpsAdvService; /** * @program: springcloud_k8s_panzhihuazhihuishequ * @description: 广告 * @author: huang.hongfa weixin hhf9596 qq 959656820 * @create: 2020-12-28 15:41 **/ @Service public class ComOpsAdvServiceImpl implements ComOpsAdvService { @Resource private ComOpsAdvJumpDAO comOpsAdvJumpDAO; @Resource private ComOpsAdvDAO comOpsAdvDAO; @Resource private ComOpsAdvPosDAO comOpsAdvPosDAO; /** * 获取广告跳转内容配置 * * @return 跳转内容集合 */ @Override public R getJumpContent() { List comOpsAdvJumpVOS = new ArrayList<>(); List comOpsAdvJumpDOS = comOpsAdvJumpDAO.selectList(new QueryWrapper<>()); if (!ObjectUtils.isEmpty(comOpsAdvJumpDOS)) { comOpsAdvJumpDOS.forEach(comOpsAdvJumpDO -> { ComOpsAdvJumpVO comOpsAdvJumpVO = new ComOpsAdvJumpVO(); comOpsAdvJumpVO.setId(comOpsAdvJumpDO.getId()); comOpsAdvJumpVO.setJumpContent(comOpsAdvJumpDO.getJumpContent()); comOpsAdvJumpVOS.add(comOpsAdvJumpVO); }); } return R.ok(comOpsAdvJumpVOS); } /** * 编辑运营后台系统配置 * * @param appletesBackstageConfigDTO * 编辑内容 * @return 编辑结果 */ @Override @Transactional(rollbackFor = Exception.class) public R putJumpContent(AppletesBackstageConfigDTO appletesBackstageConfigDTO) { List comOpsAdvJumpDTOS = appletesBackstageConfigDTO.getComOpsAdvJumpDTOS(); if (ObjectUtils.isEmpty(comOpsAdvJumpDTOS)) { return R.fail("广告跳转内容不能为空"); } // 查询所有正在使用的跳转内容id List ids = comOpsAdvDAO.selectAllBeUsedContent(); List notDeleteIds = new ArrayList<>(); List collect = comOpsAdvJumpDTOS.stream().map(comOpsAdvJumpDTO -> comOpsAdvJumpDTO.getId()).collect(Collectors.toList()); if (!ObjectUtils.isEmpty(ids)) { ids.forEach(aLong -> { if (!collect.contains(aLong)) { ComOpsAdvJumpDO comOpsAdvJumpDO = comOpsAdvJumpDAO.selectById(aLong); if (!ObjectUtils.isEmpty(comOpsAdvJumpDO)) { String jumpContent = comOpsAdvJumpDO.getJumpContent(); throw new ServiceException(jumpContent + " 已经在使用无法删除"); } } else { notDeleteIds.add(aLong); } }); } if (!ObjectUtils.isEmpty(notDeleteIds)) { comOpsAdvJumpDAO .delete(new QueryWrapper().lambda().notIn(ComOpsAdvJumpDO::getId, notDeleteIds)); } else { comOpsAdvJumpDAO.delete(null); } comOpsAdvJumpDTOS.forEach(comOpsAdvJumpDTO -> { Long id = comOpsAdvJumpDTO.getId(); if (!ids.contains(id)) { ComOpsAdvJumpDO comOpsAdvJumpDO = new ComOpsAdvJumpDO(); String jumpContent = comOpsAdvJumpDTO.getJumpContent(); if (ObjectUtils.isEmpty(jumpContent)) { throw new ServiceException("广告跳转内容不能为空"); } comOpsAdvJumpDO.setJumpContent(jumpContent); comOpsAdvJumpDAO.insert(comOpsAdvJumpDO); } }); return R.ok(); } /** * 首页广告banner * * @return 广告列表 */ @Override public R listAdvertisement(Integer type) { List comOpsAdvDOS = comOpsAdvDAO .selectList(new QueryWrapper().lambda().eq(ComOpsAdvDO::getPosId,type) .last(" and SYSDATE() BETWEEN on_at and off_at ")); List comOpsAdvVOS = new ArrayList<>(); if (!ObjectUtils.isEmpty(comOpsAdvDOS)) { comOpsAdvDOS.forEach(comOpsAdvDO -> { ComOpsAdvVO comOpsAdvVO = new ComOpsAdvVO(); BeanUtils.copyProperties(comOpsAdvDO, comOpsAdvVO); comOpsAdvVOS.add(comOpsAdvVO); }); } return R.ok(comOpsAdvVOS); } /** * 新增广告 * * @param comOpsAdvDTO * @return 新增结果 */ @Override public R addAdvertisement(ComOpsAdvDTO comOpsAdvDTO) { ComOpsAdvDO comOpsAdvDO = new ComOpsAdvDO(); BeanUtils.copyProperties(comOpsAdvDTO, comOpsAdvDO); int insert = comOpsAdvDAO.insert(comOpsAdvDO); if (insert > 0) { return R.ok(); } return R.fail(); } /** * 编辑广告 * * @param comOpsAdvDTO * 编辑内容 * @return 编辑结果 */ @Override public R putAdvertisement(ComOpsAdvDTO comOpsAdvDTO) { ComOpsAdvDO comOpsAdvDO = new ComOpsAdvDO(); BeanUtils.copyProperties(comOpsAdvDTO, comOpsAdvDO); int update = comOpsAdvDAO.updateById(comOpsAdvDO); if (update > 0) { return R.ok(); } return R.fail(); } /** * 广告位置下拉列表 * * @return 位置集合 */ @Override public R listadvpos() { List comOpsAdvPosDOS = comOpsAdvPosDAO.selectList(new LambdaQueryWrapper<>()); List comOpsAdvPosVOS = new ArrayList<>(); comOpsAdvPosDOS.forEach(comOpsAdvPosDO -> { ComOpsAdvPosVO comOpsAdvPosVO = new ComOpsAdvPosVO(); BeanUtils.copyProperties(comOpsAdvPosDO, comOpsAdvPosVO); comOpsAdvPosVOS.add(comOpsAdvPosVO); }); return R.ok(comOpsAdvPosVOS); } /** * 跳转内容下拉集合 * * @return 跳转集合 */ @Override public R listAdvjump() { List comOpsAdvJumpDOS = comOpsAdvJumpDAO.selectList(new LambdaQueryWrapper<>()); List comOpsAdvJumpVOS = new ArrayList<>(); if (!ObjectUtils.isEmpty(comOpsAdvJumpDOS)) { comOpsAdvJumpDOS.forEach(comOpsAdvJumpDO -> { ComOpsAdvJumpVO comOpsAdvJumpVO = new ComOpsAdvJumpVO(); BeanUtils.copyProperties(comOpsAdvJumpDO, comOpsAdvJumpVO); comOpsAdvJumpVOS.add(comOpsAdvJumpVO); }); } return R.ok(comOpsAdvJumpVOS); } /** * 分页查询广告 * * @param pageComOpsAdvDTO * 查询内容 * @return 查询结果 ComOpsAdvVO */ @Override public R pageAdvertisement(PageComOpsAdvDTO pageComOpsAdvDTO) { Page page = new Page<>(); Long pageNum = pageComOpsAdvDTO.getPageNum(); Long pageSize = pageComOpsAdvDTO.getPageSize(); if (null == pageNum || 0 == pageNum) { pageNum = 1l; } if (null == pageSize || 0 == pageSize) { pageSize = 10l; } page.setSize(pageSize); page.setCurrent(pageNum); IPage iPage = comOpsAdvDAO.pageAdvertisement(page, pageComOpsAdvDTO); return R.ok(iPage); } /** * 广告详情 * * @param id * 主键 * @return 广告内容 ComOpsAdvVO */ @Override public R detailAdvertisement(Long id) { ComOpsAdvVO comOpsAdvVO = comOpsAdvDAO.detailAdvertisement(id); return R.ok(comOpsAdvVO); } /** * 删除广告 * * @param id * 主键 * @return 删除结果 */ @Override public R deleteAdvertisement(Long id) { int delete = comOpsAdvDAO.deleteById(id); if (delete > 0) { return R.ok(); } return R.fail(); } }