package com.fdkankan.fusion.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.fdkankan.fusion.common.ResultCode; import com.fdkankan.fusion.common.ResultCode; import com.fdkankan.fusion.entity.CaseTag; import com.fdkankan.fusion.exception.BusinessException; import com.fdkankan.fusion.entity.HotIcon; import com.fdkankan.fusion.mapper.IHotIconMapper; import com.fdkankan.fusion.service.ICaseTagService; import com.fdkankan.fusion.service.IHotIconService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.stream.Collectors; /** *

* 服务实现类 *

* * @author * @since 2022-08-02 */ @Service public class HotIconServiceImpl extends ServiceImpl implements IHotIconService { @Autowired ICaseTagService caseTagService; @Override public List getListByUserName(String username) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(HotIcon::getUserName,username) .or().eq(HotIcon::getIsSystem,1); wrapper.orderByDesc(HotIcon::getIsSystem) // 官方默认 .orderByDesc(HotIcon::getIsNew) // 新增 .orderByDesc(HotIcon::getLastUse) // 上次使用 .orderByDesc(HotIcon::getUseNum) // 使用次数 .orderByDesc(HotIcon::getCreateTime); return this.list(wrapper); } @Override public HotIcon getDefaultIcon() { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(HotIcon::getIsSystem,1); wrapper.orderByDesc(HotIcon::getCreateTime); List list = this.list(wrapper); if(list!= null && list.size() >0){ return list.get(0); } return null; } @Override public void addUseNum(Integer hotIconId) { HotIcon hotIcon = this.getById(hotIconId); if(hotIcon == null){ throw new BusinessException(ResultCode.HOT_ICON_NOT_EXIST); } hotIcon.setUseNum( hotIcon.getUseNum() + 1); hotIcon.setLastUse(1); LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); wrapper.set(HotIcon::getLastUse,0); wrapper.eq(HotIcon::getUserName,hotIcon.getUserName()); this.update(wrapper); hotIcon.setUpdateTime(null); this.updateById(hotIcon); } @Override public void cancelIsNew(String username) { LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); wrapper.set(HotIcon::getIsNew,1) .eq(HotIcon::getUserName,username); this.update(wrapper); } @Override public List getListByCaseId(Integer caseId) { HashSet hotIconIds = new HashSet<>(); List list = caseTagService.getListByCaseId(caseId); if(list.size() >0){ List ids = list.parallelStream().map(CaseTag::getHotIconId).collect(Collectors.toList()); if(!ids.isEmpty()){ hotIconIds.addAll(ids); } } hotIconIds.add(getDefaultIcon().getIconId()); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(HotIcon::getCaseId,caseId); List list1 = this.list(wrapper); List ids = list1.stream().map(HotIcon::getIconId).collect(Collectors.toList()); if(!ids.isEmpty()){ hotIconIds.addAll(ids); } if(hotIconIds.isEmpty()){ return new ArrayList<>(); } return this.getByIds(hotIconIds); } @Override public List getByIds( HashSet hotIconIds) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.in(HotIcon::getIconId,hotIconIds); wrapper.orderByDesc(HotIcon::getIsSystem) // 官方默认 .orderByDesc(HotIcon::getIsNew) // 新增 .orderByDesc(HotIcon::getLastUse) // 上次使用 .orderByDesc(HotIcon::getUseNum) // 使用次数 .orderByDesc(HotIcon::getCreateTime); return this.list(wrapper); } }