package com.doumee.service.business.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.doumee.biz.system.SystemDictDataBiz; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.core.model.LoginUserInfo; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.core.utils.Constants; import com.doumee.core.utils.Utils; import com.doumee.dao.business.AreasMapper; import com.doumee.dao.business.LabelsMapper; import com.doumee.dao.business.join.GoodsAdminJoinMapper; import com.doumee.dao.business.join.LabelsJoinMapper; import com.doumee.dao.business.model.Activity; import com.doumee.dao.business.model.Areas; import com.doumee.dao.business.model.Goods; import com.doumee.dao.business.model.Labels; import com.doumee.dao.web.response.LabelsResponse; import com.doumee.service.business.AreasService; import com.doumee.service.business.LabelsService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.wrapper.MPJLambdaWrapper; import io.swagger.models.auth.In; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; /** * 标签信息表Service实现 * @author 江蹄蹄 * @date 2023/03/21 15:48 */ @Service public class LabelsServiceImpl implements LabelsService { @Autowired private LabelsMapper labelsMapper; @Autowired private LabelsJoinMapper labelsJoinMapper; @Autowired private AreasMapper areasMapper; @Autowired private AreasService areasService; @Autowired private SystemDictDataBiz systemDictDataBiz; @Autowired private GoodsAdminJoinMapper goodsAdminJoinMapper; @Override public Integer create(Labels labels) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); labels.setCreator(user.getId()); labels.setCreateDate(new Date()); labels.setEditor(user.getId()); labels.setEditDate(labels.getCreateDate()); labels.setIsdeleted(Constants.ZERO); labels.setStatus(Constants.ZERO); /* if(labels.getParentId()!=null){ labels.setType(Constants.LabelsType.GOODSTYPE.getKey()); }else{ labels.setType(Constants.LabelsType.GOODSBRAND.getKey()); }*/ labelsMapper.insert(labels); if(Constants.equalsInteger(labels.getType(),Constants.LabelsType.BIG_AREA.getKey()) && labels.getAreaIdList()!=null &&labels.getAreaIdList().size()>0){ areasMapper.update(null,new UpdateWrapper().lambda() .set(Areas::getBigAreaId,labels.getId()) .in(Areas::getId,labels.getAreaIdList())); areasService.cacheData(); } return labels.getId(); } @Override public void deleteById(Integer id) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); Labels query= labelsJoinMapper.selectById(id); //TODO parentId 空时为一级分类(查询二级分类是否关联,关联不允许删除),不为空为二级分类, /* if(query!=null&&query.getParentId()==null){ MPJLambdaWrapper querySecond = new MPJLambdaWrapper<>(); querySecond.eq(Labels::getParentId,query.getId()); querySecond.eq(Labels::getIsdeleted,Constants.ZERO); List secondList= labelsJoinMapper.selectList(querySecond); if(org.apache.commons.collections.CollectionUtils.isNotEmpty(secondList)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "该分类已被关联不允许操作!"); } }*/ Labels labels=new Labels(); labels.setId(id); labels.setIsdeleted(Constants.ONE); labels.setEditDate(new Date()); labels.setEditor(user.getId()); labelsMapper.updateById(labels); if(query!=null && Constants.equalsInteger(query.getType(),Constants.LabelsType.BIG_AREA.getKey())){ int num = areasMapper.update(null, new UpdateWrapper().lambda() .set(Areas::getBigAreaId, null) .eq(Areas::getBigAreaId, labels.getId())); if(num>0){ areasService.cacheData(); } } } @Override public void delete(Labels labels) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); labels.setIsdeleted(Constants.ONE); labels.setEditDate(new Date()); labels.setEditor(user.getId()); UpdateWrapper deleteWrapper = new UpdateWrapper<>(labels); labelsMapper.delete(deleteWrapper); } @Override public void deleteByIdInBatch(List ids) { if (CollectionUtils.isEmpty(ids)) { return; } LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); Labels labels=new Labels(); int num =0; for(Integer s : ids){ labels.setId(s); labels.setIsdeleted(Constants.ONE); labels.setEditDate(new Date()); labels.setEditor(user.getId()); labelsMapper.updateById(labels); num += areasMapper.update(null, new UpdateWrapper().lambda() .set(Areas::getBigAreaId, null) .eq(Areas::getBigAreaId, labels.getId())); } if(num>0){ areasService.cacheData(); } } @Override public void updateById(Labels labels) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); labels.setEditDate(new Date()); labels.setEditor(user.getId()); if(Constants.equalsInteger(labels.getId(),labels.getParentId())){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "参数错误!"); } Labels model = labelsMapper.selectById(labels.getId()); if(model ==null){ throw new BusinessException(ResponseStatus.DATA_EMPTY); } labelsMapper.updateById(labels); if(Constants.equalsInteger(model.getType(),Constants.LabelsType.BIG_AREA.getKey())){ //先清空原来所有绑定的数据 int num = areasMapper.update(null, new UpdateWrapper().lambda() .set(Areas::getBigAreaId, null) .eq(Areas::getBigAreaId, labels.getId())); if( labels.getAreaIdList()!=null &&labels.getAreaIdList().size()>0){ //设置最新绑定的数据 num += areasMapper.update(null, new UpdateWrapper().lambda() .set(Areas::getBigAreaId, labels.getId()) .in(Areas::getId, labels.getAreaIdList())); } if(num>0){ areasService.cacheData(); } } } @Override public void updateStatusById(Labels labels) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); labels.setEditDate(new Date()); labels.setEditor(user.getId()); labelsMapper.updateById(labels); } @Override public void updateByIdInBatch(List labelss) { if (CollectionUtils.isEmpty(labelss)) { return; } for (Labels labels: labelss) { this.updateById(labels); } } @Override public Labels findById(Integer id) { Labels labels= labelsMapper.selectById(id); if(labels != null){ String resourcePath=systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode(); getLablesIcon(labels,resourcePath); if(Constants.equalsInteger(labels.getType(),Constants.LabelsType.BIG_AREA.getKey())){ //如果是大区信息,查询所有绑定额省份信息 labels.setAreaList(areasMapper.selectList(new LambdaQueryWrapper() .eq(Areas::getIsdeleted,Constants.ZERO) .eq(Areas::getBigAreaId,labels.getId()))); } } return labels; } @Override public Labels findOne(Labels labels) { QueryWrapper wrapper = new QueryWrapper<>(labels); return labelsMapper.selectOne(wrapper); } @Override public List findList(Labels labels) { MPJLambdaWrapper query = new MPJLambdaWrapper<>(); if(labels!=null&&labels.getParentId()!=null){ query.eq(Labels::getParentId,labels.getParentId()); }else{ if(!Constants.equalsInteger(labels.getType(),Constants.LabelsType.HOMEZHUANQU.getKey())){ query.isNull(Labels::getParentId);//查询所有的父级 } } if(org.apache.commons.collections.CollectionUtils.isNotEmpty(labels.getTypeList())){ query.in(labels.getTypeList().size()>0,Labels::getType, labels.getTypeList()); } query.eq(Labels::getIsdeleted,Constants.ZERO); query.eq(labels.getType()!=null,Labels::getType,labels.getType()); List list= labelsJoinMapper.selectList(query); for(Labels model:list){ if(Constants.equalsInteger(model.getType(),Constants.LabelsType.BIG_AREA.getKey())){ //如果是大区信息,查询所有绑定额省份信息 model.setAreaList(areasMapper.selectList(new LambdaQueryWrapper() .eq(Areas::getIsdeleted,Constants.ZERO) .eq(Areas::getBigAreaId,model.getId()))); } } return list; } @Override public PageData findPage(PageWrap pageWrap) { IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); Utils.MP.blankToNull(pageWrap.getModel()); queryWrapper.selectAll(Labels.class); queryWrapper.select("(select name from labels where id=t.PARENT_ID) as parentName"); queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getName()),Labels::getName,pageWrap.getModel().getName()); queryWrapper.eq(pageWrap.getModel().getParentId()!=null,Labels::getParentId,pageWrap.getModel().getParentId()); queryWrapper.eq(pageWrap.getModel().getType()!=null,Labels::getType,pageWrap.getModel().getType()); if(org.apache.commons.collections.CollectionUtils.isNotEmpty(pageWrap.getModel().getTypeList())){ queryWrapper.in(pageWrap.getModel().getTypeList().size()>0,Labels::getType, pageWrap.getModel().getTypeList()); } if(pageWrap.getModel().getTypeLevel()!=null){ if(Constants.equalsInteger(pageWrap.getModel().getTypeLevel(),Constants.ZERO)){ queryWrapper.isNull(Labels::getParentId); }else if(Constants.equalsInteger(pageWrap.getModel().getTypeLevel(),Constants.ONE)){ queryWrapper.isNotNull(Labels::getParentId); } } queryWrapper.eq(Labels::getIsdeleted,Constants.ZERO); queryWrapper.orderByAsc(Labels::getSortnum); queryWrapper.orderByAsc(Labels::getCreateDate); IPage result = labelsJoinMapper.selectJoinPage(page,Labels.class, queryWrapper); /* String resourcePath=systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode();*/ if(org.apache.commons.collections.CollectionUtils.isNotEmpty(result.getRecords())){ String path = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(Constants.OSS,Constants.LABELS_IMG).getCode(); for(Labels model:result.getRecords()){ if(model.getParentId()==null){ model.setTypeLevel(0); }else{ model.setTypeLevel(1); } if(StringUtils.isNotBlank(model.getImgurl())){ model.setImgFullurl(path + model.getImgurl()); } if(Constants.equalsInteger(model.getType(),Constants.LabelsType.BIG_AREA.getKey())){ //如果是大区信息,查询所有绑定额省份信息 model.setAreaList(areasMapper.selectList(new LambdaQueryWrapper() .eq(Areas::getIsdeleted,Constants.ZERO) .eq(Areas::getBigAreaId,model.getId()))); } } } return PageData.from(result); } public void getLablesIcon(Labels model,String resourcePath){ if(model==null){ return ; } if(Constants.equalsInteger(model.getType(),Constants.LabelsType.BUSNESSLABEL.getKey())){ String path = resourcePath + systemDictDataBiz.queryByCode(Constants.OSS, Constants.SHOP_FILE).getCode(); if(StringUtils.isNotBlank(model.getImgurl())){ model.setImgFullurl(path+model.getImgurl()); } }else if(Constants.equalsInteger(model.getType(),Constants.LabelsType.COFFERBEANTYPE.getKey())|| Constants.equalsInteger(model.getType(),Constants.LabelsType.INFOTYPE.getKey())|| Constants.equalsInteger(model.getType(),Constants.LabelsType.ACTIVITYMATCHTYPE.getKey())|| Constants.equalsInteger(model.getType(),Constants.LabelsType.DARENTANDIANTYPE.getKey()) ){ String path = resourcePath+ systemDictDataBiz.queryByCode(Constants.OSS, Constants.ACTIVITY_FILE).getCode(); if(StringUtils.isNotBlank(model.getImgurl())){ model.setImgFullurl(path+model.getImgurl()); } }else{ String path = resourcePath + systemDictDataBiz.queryByCode(Constants.OSS, Constants.GOODS_FILE).getCode(); if(StringUtils.isNotBlank(model.getImgurl())){ model.setImgFullurl(path+model.getImgurl()); } } } @Override public long count(Labels labels) { QueryWrapper wrapper = new QueryWrapper<>(labels); return labelsMapper.selectCount(wrapper); } @Override public List findListByType(Labels labels) { QueryWrapper wrapper = new QueryWrapper<>(labels); wrapper.lambda().eq(Labels::getType,labels.getType()) .orderByAsc(Labels::getSortnum); return labelsMapper.selectList(wrapper); } @Override public List findCoffeeArticleListByType() { String preFixPath = systemDictDataBiz.getPreFixPath(Constants.RESOURCE_PATH, Constants.ACTIVITY_FILE); Labels labels = new Labels(); labels.setType(8); List listByType = findListByType(labels); if (CollectionUtils.isEmpty(listByType)){ return null; } listByType.forEach(s->{ s.setImgFullurl(preFixPath+s.getImgurl()); }); return listByType; } /****************************************移动端接口开始********************************************************************/ @Override public List getLabelsResponse(Integer type,Integer module,Integer parentId){ List labelsList = this.labelsMapper.selectList(new QueryWrapper() .eq("type",type) .eq(Objects.isNull(module),"module",module) .eq(Objects.isNull(parentId),"parent_id",parentId) ); List labelsResponses = new ArrayList<>(); if(Objects.isNull(labelsList)&&labelsList.size()>Constants.ZERO){ for (Labels labels : labelsList) { LabelsResponse labelsResponse = new LabelsResponse(); BeanUtils.copyProperties(labels,labelsResponse); labelsResponses.add(labelsResponse); } } return labelsResponses; } @Override public List getGoodsLabels(Integer parentId) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(Labels::getType,Constants.ZERO); wrapper.eq(Labels::getIsdeleted,Constants.ZERO); if (Objects.isNull(parentId)){ wrapper.isNull(Labels::getParentId); }else { wrapper.eq(Labels::getParentId,parentId); } List labels = labelsMapper.selectList(wrapper); List collect = labels.stream().map(s -> { LabelsResponse labelsResponse = new LabelsResponse(); BeanUtils.copyProperties(s, labelsResponse); return labelsResponse; }).collect(Collectors.toList()); return collect; } @Override public List getGoodsLabelsByType(Integer type) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(Labels::getStatus,Constants.ZERO); wrapper.eq(Labels::getIsdeleted,Constants.ZERO); wrapper.eq(Labels::getType,type); wrapper.orderByAsc(Labels::getSortnum,Labels::getCreateDate); List labels = labelsMapper.selectList(wrapper); List collect = labels.stream().map(s -> { LabelsResponse labelsResponse = new LabelsResponse(); BeanUtils.copyProperties(s, labelsResponse); return labelsResponse; }).collect(Collectors.toList()); return collect; } }