package com.ruoyi.system.service.impl.config; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.system.api.constant.AppErrorConstant; import com.ruoyi.system.api.domain.poji.config.SysTag; import com.ruoyi.system.api.service.RemoteGoodsService; import com.ruoyi.system.api.service.RemoteMemberService; import com.ruoyi.system.api.service.RemoteShopService; import com.ruoyi.system.domain.dto.MgtTagEditDto; import com.ruoyi.system.domain.dto.MgtTagImportDto; import com.ruoyi.system.domain.dto.MgtTagPageDto; import com.ruoyi.system.domain.vo.MgtTagPageVo; import com.ruoyi.system.mapper.config.SysTagMapper; import com.ruoyi.system.service.config.SysTagService; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.Date; import java.util.List; import java.util.Objects; /** *

* 系统标签 服务实现类 *

* * @author jqs * @since 2023-04-25 */ @Service public class SysTagServiceImpl extends ServiceImpl implements SysTagService { @Resource private SysTagMapper sysTagMapper; @Resource private RemoteGoodsService remoteGoodsService; @Resource private RemoteShopService remoteShopService; @Resource private RemoteMemberService remoteMemberService; /** * 通过id获取系统标签 * @param tagId * @return */ @Override public SysTag getByTagId(Long tagId){ return this.getById(tagId); } /** * 通过type获取系统标签列表 * @param tagType * @return */ @Override public List listByType(Integer tagType){ LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); queryWrapper.eq(SysTag::getDelFlag, 0).eq(SysTag::getTagType, 1); List sysTagsList = this.list(queryWrapper); return sysTagsList; } /** * @description 标签管理 * @author jqs * @date 2023/6/8 14:09 * @param page * @param mgtTagPageDto * @return List */ @Override public List pageTag(Page page, MgtTagPageDto mgtTagPageDto){ return sysTagMapper.pageTag(page, mgtTagPageDto); } /** * @description 修改标签 * @author jqs * @date 2023/6/8 15:01 * @param mgtTagEditDto * @return void */ @Override public void editTag(MgtTagEditDto mgtTagEditDto){ // 创建LambdaQueryWrapper对象,用于构建查询条件 LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(SysTag::getDelFlag, 0) // 查询条件:delFlag=0 .eq(SysTag::getTagType, mgtTagEditDto.getTagType()) // 查询条件:tagType=mgtTagEditDto的tagType属性 .eq(SysTag::getTagName, mgtTagEditDto.getTagName()); // 查询条件:tagName=mgtTagEditDto的tagName属性 // 执行查询,获取与查询条件匹配的SysTag对象 SysTag sysTagSame = this.getOne(queryWrapper); // 获取mgtTagEditDto的tagId属性 Long tagId = mgtTagEditDto.getTagId(); // 定义SysTag对象 SysTag sysTag; if (tagId != null) { // 如果tagId不为空 // 如果存在同类名同分类类型的分类,但是分类ID不同,抛出异常 if (sysTagSame != null && !Objects.equals(sysTagSame.getTagId(), tagId)) { throw new ServiceException(AppErrorConstant.TAG_DOUBLE); } // 根据tagId获取要修改的分类 sysTag = this.getById(tagId); } else { // 如果tagId为空 // 如果存在同类名同分类类型的分类,抛出异常 if (sysTagSame != null) { throw new ServiceException(AppErrorConstant.TAG_DOUBLE); } // 新建分类 sysTag = new SysTag(); sysTag.setDelFlag(0); } // 设置sysTag的属性 sysTag.setTagType(mgtTagEditDto.getTagType()); sysTag.setTagName(mgtTagEditDto.getTagName()); sysTag.setCreateTime(new Date()); sysTag.setSynFlag(0); // 执行保存或更新操作 this.saveOrUpdate(sysTag); } /** * @description 删除标签 * @author jqs * @date 2023/6/8 15:09 * @param tagId * @return void */ @Override public void deleteTag(Long tagId){ SysTag sysTag = this.getById(tagId); sysTag.setDelFlag(1); this.saveOrUpdate(sysTag); handleDeleteTag(sysTag.getTagType(),sysTag.getTagName()); } @Async protected void handleDeleteTag(Integer tagType, String tagName){ //标签类型1用户2合作商3商品4建议 switch (tagType){ case 1: remoteMemberService.deleteMemberTag(tagName); break; case 2: remoteShopService.deleteShopTag(tagName); break; case 3: remoteGoodsService.deleteGoodsTag(tagName); break; case 4: remoteMemberService.deleteMemberSuggestTag(tagName); remoteShopService.deleteShopSuggestTag(tagName); sysTagMapper.deleteStaffSuggestTag(tagName); break; default: break; } } /** * @description importTag * @param tagList * @param tagType * @param operName * @return String * @author jqs34 * @date 2023/6/24 17:32 */ public String importTag(List tagList, Integer tagType, String operName) { if (StringUtils.isNull(tagList) || tagList.size() == 0) { throw new ServiceException("导入标签数据不能为空!"); } int successNum = 0; int failureNum = 0; StringBuilder successMsg = new StringBuilder(); StringBuilder failureMsg = new StringBuilder(); String tagName; LambdaQueryWrapper queryWrapper; SysTag sysTagSame; SysTag sysTagNew; Date nowTime = new Date(); for (MgtTagImportDto entity : tagList) { try { tagName = entity.getTagName(); sysTagSame = null; // 验证是否存在这个用户 queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(SysTag::getDelFlag, 0) // 查询条件:delFlag=0 .eq(SysTag::getTagType, tagType) // 查询条件:tagType=mgtTagEditDto的tagType属性 .eq(SysTag::getTagName, tagName); // 查询条件:tagName=mgtTagEditDto的tagName属性 // 执行查询,获取与查询条件匹配的SysTag对象 sysTagSame = this.getOne(queryWrapper); if (sysTagSame == null) { sysTagNew = new SysTag(); sysTagNew.setDelFlag(0); sysTagNew.setTagType(tagType); sysTagNew.setTagName(tagName); sysTagNew.setCreateTime(nowTime); sysTagNew.setSynFlag(0); this.save(sysTagNew); successNum++; successMsg.append("
" + successNum + "、标签 " + sysTagNew.getTagName() + " 导入成功"); } else { failureNum++; failureMsg.append("
" + failureNum + "、标签 " + sysTagSame.getTagName() + " 已存在"); } } catch (Exception e) { failureNum++; String msg = "
" + failureNum + "、标签 " + entity.getTagName() + " 导入失败:"; failureMsg.append(msg + e.getMessage()); log.error(msg, e); } } if (failureNum > 0) { failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:"); throw new ServiceException(failureMsg.toString()); } else { successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:"); } return successMsg.toString(); } }