|
@@ -1,27 +1,164 @@
|
|
|
package com.yonge.cooleshow.biz.dal.service.impl;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.extension.service.additional.query.impl.LambdaQueryChainWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
-import org.springframework.stereotype.Service;
|
|
|
-import com.yonge.cooleshow.biz.dal.entity.MusicTag;
|
|
|
-import com.yonge.cooleshow.biz.dal.vo.MusicTagVo;
|
|
|
-import com.yonge.cooleshow.biz.dal.dto.search.MusicTagSearch;
|
|
|
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
|
|
|
+import com.yonge.cooleshow.auth.api.entity.SysUser;
|
|
|
import com.yonge.cooleshow.biz.dal.dao.MusicTagDao;
|
|
|
+import com.yonge.cooleshow.biz.dal.dto.MusicTagSaveDto;
|
|
|
+import com.yonge.cooleshow.biz.dal.dto.search.MusicTagSearch;
|
|
|
+import com.yonge.cooleshow.biz.dal.entity.MusicTag;
|
|
|
+import com.yonge.cooleshow.biz.dal.enums.OpenEnum;
|
|
|
+import com.yonge.cooleshow.biz.dal.enums.StateEnum;
|
|
|
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
|
|
|
import com.yonge.cooleshow.biz.dal.service.MusicTagService;
|
|
|
+import com.yonge.cooleshow.biz.dal.vo.MusicTagVo;
|
|
|
+import com.yonge.cooleshow.common.exception.BizException;
|
|
|
+import jodd.util.StringUtil;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Objects;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
@Service
|
|
|
public class MusicTagServiceImpl extends ServiceImpl<MusicTagDao, MusicTag> implements MusicTagService {
|
|
|
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private MusicTagDao musicTagDao;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private SysUserFeignService sysUserFeignService;
|
|
|
+
|
|
|
@Override
|
|
|
public MusicTagVo detail(Long id) {
|
|
|
- MusicTagVo detail = baseMapper.detail(id);
|
|
|
- return detail;
|
|
|
+ return baseMapper.detail(id);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
@Override
|
|
|
public IPage<MusicTagVo> selectPage(IPage<MusicTagVo> page, MusicTagSearch query){
|
|
|
- return page.setRecords(baseMapper.selectPage(page, query));
|
|
|
+ IPage<MusicTagVo> musicTagVoIPage = page.setRecords(baseMapper.selectPage(page, query));
|
|
|
+ // 将父类的id 拿出来,集体查出子集
|
|
|
+ List<Long> longList = musicTagVoIPage
|
|
|
+ .getRecords()
|
|
|
+ .stream()
|
|
|
+ .map(MusicTag::getId)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ List<MusicTagVo> musicTagVoList = musicTagDao.getChildrenByParentIdList(longList,query.getState());
|
|
|
+
|
|
|
+ // 根据父级id, 将子集分类
|
|
|
+ Map<String, List<MusicTagVo>> musicTagMap = musicTagVoList.stream()
|
|
|
+ .collect(Collectors.groupingBy( vo -> vo.getParentTagId().toString()));
|
|
|
+ musicTagVoIPage.getRecords()
|
|
|
+ .forEach(musicTagVo -> {
|
|
|
+ List<MusicTagVo> childrenList = musicTagMap.get(musicTagVo.getId().toString());
|
|
|
+ // 如果没有按名称查询 或 父级标签包含了名称 , 展示所有子集 标签列表子集收起
|
|
|
+ if (StringUtil.isBlank(query.getIdAndName()) || musicTagVo.getName().contains(query.getIdAndName())) {
|
|
|
+ musicTagVo.setChildren(childrenList);
|
|
|
+ } else {
|
|
|
+ // 如果名称查询中,父级不包含名称,子集包含,只展示包含的子集,并且默认展开子集列表
|
|
|
+ musicTagVo.setOpen(OpenEnum.OPEN);
|
|
|
+ List<MusicTagVo> childrenNameList = childrenList.stream()
|
|
|
+ .filter(vo -> vo.getName()
|
|
|
+ .contains(query.getIdAndName()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ musicTagVo.setChildren(childrenNameList);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return musicTagVoIPage;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean del(Long musicTagId) {
|
|
|
+ MusicTag musicTag = new MusicTag();
|
|
|
+ musicTag.setId(musicTagId);
|
|
|
+ musicTag.setDelFlag(YesOrNoEnum.YES);
|
|
|
+ return this.updateById(musicTag);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean state(Long musicTagId) {
|
|
|
+ MusicTag tag = this.getById(musicTagId);
|
|
|
+ if (Objects.isNull(tag)) {
|
|
|
+ throw new BizException("标签信息不存在");
|
|
|
+ }
|
|
|
+ MusicTag musicTag = new MusicTag();
|
|
|
+ musicTag.setId(musicTagId);
|
|
|
+ if (tag.getState().getCode().equals(StateEnum.STOP.getCode())) {
|
|
|
+ musicTag.setState(StateEnum.ENABLE);
|
|
|
+ } else {
|
|
|
+ musicTag.setState(StateEnum.STOP);
|
|
|
+ }
|
|
|
+ return this.updateById(musicTag);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void createMusicTag(MusicTagSaveDto musicTagSaveDto) {
|
|
|
+
|
|
|
+ if (checkNameRepeat(musicTagSaveDto.getName(), musicTagSaveDto.getId())) {
|
|
|
+ throw new BizException("标签名称重复");
|
|
|
+ }
|
|
|
+
|
|
|
+ SysUser sysUser = sysUserFeignService.queryUserInfo();
|
|
|
+ MusicTag musicTag = new MusicTag();
|
|
|
+ musicTag.setDelFlag(YesOrNoEnum.NO);
|
|
|
+ musicTag.setState(StateEnum.STOP);
|
|
|
+ if (musicTagSaveDto.getParentTagId() == null) {
|
|
|
+ musicTag.setParentTagId(0L);
|
|
|
+ } else {
|
|
|
+ musicTag.setParentTagId(musicTagSaveDto.getParentTagId());
|
|
|
+ }
|
|
|
+ musicTag.setName(musicTagSaveDto.getName());
|
|
|
+ musicTag.setCreateTime(new Date());
|
|
|
+ musicTag.setCreateBy(sysUser.getId());
|
|
|
+ this.save(musicTag);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 检查标签名称重复
|
|
|
+ *
|
|
|
+ * @param name 名称
|
|
|
+ * @param id 标签id, 更新
|
|
|
+ * @return boolean
|
|
|
+ */
|
|
|
+ private boolean checkNameRepeat(String name,Long id) {
|
|
|
+ LambdaQueryChainWrapper<MusicTag> eq = this.lambdaQuery()
|
|
|
+ .eq(MusicTag::getDelFlag, YesOrNoEnum.NO.getCode())
|
|
|
+ .eq(MusicTag::getName, name);
|
|
|
+ if (id != null) {
|
|
|
+ eq.ne(MusicTag::getId,id);
|
|
|
+ }
|
|
|
+ return eq.count() != 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void updateMusicTag(MusicTagSaveDto musicTagSaveDto) {
|
|
|
+
|
|
|
+ if (checkNameRepeat(musicTagSaveDto.getName(), musicTagSaveDto.getId())) {
|
|
|
+ throw new BizException("标签名称重复");
|
|
|
+ }
|
|
|
+
|
|
|
+ SysUser sysUser = sysUserFeignService.queryUserInfo();
|
|
|
+ MusicTag musicTag = new MusicTag();
|
|
|
+ musicTag.setDelFlag(YesOrNoEnum.NO);
|
|
|
+ musicTag.setId(musicTagSaveDto.getId());
|
|
|
+ if (musicTagSaveDto.getParentTagId() == null) {
|
|
|
+ musicTag.setParentTagId(0L);
|
|
|
+ } else {
|
|
|
+ musicTag.setParentTagId(musicTagSaveDto.getParentTagId());
|
|
|
+ }
|
|
|
+ musicTag.setName(musicTagSaveDto.getName());
|
|
|
+ musicTag.setUpdateTime(new Date());
|
|
|
+ musicTag.setUpdateBy(sysUser.getId());
|
|
|
+ this.updateById(musicTag);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|