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<Areas>().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<Labels> querySecond = new MPJLambdaWrapper<>();
|
querySecond.eq(Labels::getParentId,query.getId());
|
querySecond.eq(Labels::getIsdeleted,Constants.ZERO);
|
List<Labels> 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<Areas>().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<Labels> deleteWrapper = new UpdateWrapper<>(labels);
|
labelsMapper.delete(deleteWrapper);
|
}
|
|
@Override
|
public void deleteByIdInBatch(List<Integer> 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<Areas>().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<Areas>().lambda()
|
.set(Areas::getBigAreaId, null)
|
.eq(Areas::getBigAreaId, labels.getId()));
|
if( labels.getAreaIdList()!=null
|
&&labels.getAreaIdList().size()>0){
|
//设置最新绑定的数据
|
num += areasMapper.update(null, new UpdateWrapper<Areas>().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<Labels> 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<Areas>()
|
.eq(Areas::getIsdeleted,Constants.ZERO)
|
.eq(Areas::getBigAreaId,labels.getId())));
|
}
|
}
|
return labels;
|
}
|
|
@Override
|
public Labels findOne(Labels labels) {
|
QueryWrapper<Labels> wrapper = new QueryWrapper<>(labels);
|
return labelsMapper.selectOne(wrapper);
|
}
|
|
@Override
|
public List<Labels> findList(Labels labels) {
|
|
|
MPJLambdaWrapper<Labels> 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<Labels> list= labelsJoinMapper.selectList(query);
|
for(Labels model:list){
|
if(Constants.equalsInteger(model.getType(),Constants.LabelsType.BIG_AREA.getKey())){
|
//如果是大区信息,查询所有绑定额省份信息
|
model.setAreaList(areasMapper.selectList(new LambdaQueryWrapper<Areas>()
|
.eq(Areas::getIsdeleted,Constants.ZERO)
|
.eq(Areas::getBigAreaId,model.getId())));
|
}
|
}
|
return list;
|
}
|
|
@Override
|
public PageData<Labels> findPage(PageWrap<Labels> pageWrap) {
|
IPage<Labels> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
|
MPJLambdaWrapper<Labels> 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<Labels> 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())){
|
for(Labels model:result.getRecords()){
|
if(model.getParentId()==null){
|
model.setTypeLevel(0);
|
}else{
|
model.setTypeLevel(1);
|
}
|
if(Constants.equalsInteger(model.getType(),Constants.LabelsType.BIG_AREA.getKey())){
|
//如果是大区信息,查询所有绑定额省份信息
|
model.setAreaList(areasMapper.selectList(new LambdaQueryWrapper<Areas>()
|
.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<Labels> wrapper = new QueryWrapper<>(labels);
|
return labelsMapper.selectCount(wrapper);
|
}
|
|
@Override
|
public List<Labels> findListByType(Labels labels) {
|
QueryWrapper<Labels> wrapper = new QueryWrapper<>(labels);
|
wrapper.lambda().eq(Labels::getType,labels.getType())
|
.orderByAsc(Labels::getSortnum);
|
return labelsMapper.selectList(wrapper);
|
}
|
|
@Override
|
public List<Labels> findCoffeeArticleListByType() {
|
String preFixPath = systemDictDataBiz.getPreFixPath(Constants.RESOURCE_PATH, Constants.ACTIVITY_FILE);
|
Labels labels = new Labels();
|
labels.setType(8);
|
List<Labels> listByType = findListByType(labels);
|
if (CollectionUtils.isEmpty(listByType)){
|
return null;
|
}
|
listByType.forEach(s->{
|
s.setImgFullurl(preFixPath+s.getImgurl());
|
});
|
return listByType;
|
}
|
|
/****************************************移动端接口开始********************************************************************/
|
@Override
|
public List<LabelsResponse> getLabelsResponse(Integer type,Integer module,Integer parentId){
|
List<Labels> labelsList = this.labelsMapper.selectList(new QueryWrapper<Labels>()
|
.eq("type",type)
|
.eq(Objects.isNull(module),"module",module)
|
.eq(Objects.isNull(parentId),"parent_id",parentId)
|
);
|
List<LabelsResponse> 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<LabelsResponse> getGoodsLabels(Integer parentId) {
|
|
LambdaQueryWrapper<Labels> 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> labels = labelsMapper.selectList(wrapper);
|
List<LabelsResponse> collect = labels.stream().map(s -> {
|
LabelsResponse labelsResponse = new LabelsResponse();
|
BeanUtils.copyProperties(s, labelsResponse);
|
return labelsResponse;
|
}).collect(Collectors.toList());
|
return collect;
|
}
|
|
|
@Override
|
public List<LabelsResponse> getGoodsLabelsByType(Integer type) {
|
LambdaQueryWrapper<Labels> 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> labels = labelsMapper.selectList(wrapper);
|
List<LabelsResponse> collect = labels.stream().map(s -> {
|
LabelsResponse labelsResponse = new LabelsResponse();
|
BeanUtils.copyProperties(s, labelsResponse);
|
return labelsResponse;
|
}).collect(Collectors.toList());
|
return collect;
|
}
|
|
|
}
|