package com.doumee.service.business.impl; 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.PinYinUtil; import com.doumee.core.utils.Utils; import com.doumee.dao.business.CateAttrMapper; import com.doumee.dao.business.CateParamMapper; import com.doumee.dao.business.CateParamSelectMapper; import com.doumee.dao.business.CategoryMapper; import com.doumee.dao.business.model.*; import com.doumee.service.business.CategoryService; 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 org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.*; /** * 品类信息表Service实现 * @author 江蹄蹄 * @date 2023/05/12 13:58 */ @Service public class CategoryServiceImpl implements CategoryService { @Autowired private CategoryMapper categoryMapper; @Autowired private CateParamMapper cateParamMapper; @Autowired private CateAttrMapper cateAttrMapper; @Autowired private CateBudgetMapper cateBudgetMapper; @Autowired private SystemDictDataBiz systemDictDataBiz; @Autowired private CateParamSelectMapper cateParamSelectMapper; @Override public Integer create(Category category) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(categoryMapper.selectCount(new QueryWrapper().eq("ISDELETED",Constants.ZERO).eq("name",category.getName()))>0){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"【"+category.getName()+"】已存在"); }; category.setStatus(Constants.ZERO); category.setCreateDate(new Date()); category.setCreator(user.getId()); category.setIsdeleted(Constants.ZERO); //处理拼音问题 category.setPinyin(PinYinUtil.getFullSpell(category.getName())); category.setShortPinyin(PinYinUtil.getFirstSpell(category.getName())); categoryMapper.insert(category); List paramList = category.getParamList(); if(!Objects.isNull(paramList)&¶mList.size()> Constants.ZERO){ for (int i = 0; i < paramList.size(); i++) { CateParam cateParam = paramList.get(i); cateParam.setCreator(user.getId()); cateParam.setCreateDate(new Date()); cateParam.setIsdeleted(Constants.ZERO); cateParam.setSortnum(i+Constants.ONE); cateParam.setStatus(Constants.ZERO); cateParam.setCategoryId(category.getId()); cateParamMapper.insert(cateParam); } } List attrFirst = category.getAttrFirstList(); if(!Objects.isNull(attrFirst)&&attrFirst.size()> Constants.ZERO){ for (int i = 0; i < attrFirst.size(); i++) { CateAttr cateAttr = attrFirst.get(i); cateAttr.setCreator(user.getId()); cateAttr.setCreateDate(new Date()); cateAttr.setIsdeleted(Constants.ZERO); cateAttr.setSortnum(i+Constants.ONE); cateAttr.setStatus(Constants.ZERO); cateAttr.setCategoryId(category.getId()); cateAttr.setType(Constants.ZERO); cateAttrMapper.insert(cateAttr); } } List attrSecond = category.getAttrSecondList(); if(!Objects.isNull(attrSecond)&&attrSecond.size()> Constants.ZERO){ for (int i = 0; i < attrSecond.size(); i++) { CateAttr cateAttr = attrSecond.get(i); cateAttr.setCreator(user.getId()); cateAttr.setCreateDate(new Date()); cateAttr.setIsdeleted(Constants.ZERO); cateAttr.setSortnum(i+Constants.ONE); cateAttr.setStatus(Constants.ZERO); cateAttr.setCategoryId(category.getId()); cateAttr.setType(Constants.ONE); cateAttrMapper.insert(cateAttr); } } List budgetList = category.getBudgetList(); if(!Objects.isNull(budgetList)&&budgetList.size()> Constants.ZERO){ for (int i = 0; i < budgetList.size(); i++) { CateBudget cateBudget = budgetList.get(i); cateBudget.setCreator(user.getId()); cateBudget.setCreateDate(new Date()); cateBudget.setIsdeleted(Constants.ZERO); cateBudget.setSortnum(i+Constants.ONE); cateBudget.setStatus(Constants.ZERO); cateBudget.setCategoryId(category.getId()); cateBudgetMapper.insert(cateBudget); } } return category.getId(); } @Override public Integer companyCreate(Category category) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(categoryMapper.selectCount(new QueryWrapper().eq("ISDELETED",Constants.ZERO) .eq("COMPANY_ID",user.getCompanyId()).eq("name",category.getName()))>0){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"【"+category.getName()+"】已存在"); }; category.setStatus(Constants.ZERO); category.setCreateDate(new Date()); category.setCreator(user.getId()); category.setIsdeleted(Constants.ZERO); category.setCompanyId(user.getCompanyId()); //处理拼音问题 category.setPinyin(PinYinUtil.getFullSpell(category.getName())); category.setShortPinyin(PinYinUtil.getFirstSpell(category.getName())); categoryMapper.insert(category); List paramList = category.getParamList(); if(!Objects.isNull(paramList)&¶mList.size()> Constants.ZERO){ for (int i = 0; i < paramList.size(); i++) { CateParam cateParam = paramList.get(i); cateParam.setCreator(user.getId()); cateParam.setCreateDate(new Date()); cateParam.setIsdeleted(Constants.ZERO); cateParam.setSortnum(i+Constants.ONE); cateParam.setStatus(Constants.ZERO); cateParam.setCategoryId(category.getId()); cateParamMapper.insert(cateParam); } } List budgetList = category.getBudgetList(); if(!Objects.isNull(budgetList)&&budgetList.size()> Constants.ZERO){ for (int i = 0; i < budgetList.size(); i++) { CateBudget cateBudget = budgetList.get(i); cateBudget.setCreator(user.getId()); cateBudget.setCreateDate(new Date()); cateBudget.setIsdeleted(Constants.ZERO); cateBudget.setSortnum(i+Constants.ONE); cateBudget.setStatus(Constants.ZERO); cateBudget.setCategoryId(category.getId()); cateBudgetMapper.insert(cateBudget); } } return category.getId(); } @Override public void deleteById(Integer id) { Category category = categoryMapper.selectById(id); if(Objects.isNull(category)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到对象信息"); } category.setIsdeleted(Constants.ONE); categoryMapper.updateById(category); } @Override public void delete(Category category) { UpdateWrapper deleteWrapper = new UpdateWrapper<>(category); categoryMapper.delete(deleteWrapper); } @Override public void deleteByIdInBatch(List ids) { if (CollectionUtils.isEmpty(ids)) { return; } categoryMapper.deleteBatchIds(ids); } @Override public void updateById(Category category) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(categoryMapper.selectCount(new QueryWrapper().eq("ISDELETED",Constants.ZERO).ne("id",category.getId()).eq("name",category.getName()))>0){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"【"+category.getName()+"】已存在"); }; category.setStatus(Constants.ZERO); category.setEditDate(new Date()); category.setEditor(user.getId()); category.setIsdeleted(Constants.ZERO); //处理拼音问题 category.setPinyin(PinYinUtil.getFullSpell(category.getName())); category.setShortPinyin(PinYinUtil.getFirstSpell(category.getName())); categoryMapper.updateById(category); //处理属性1数据 cateParamMapper.delete(new QueryWrapper().eq("CATEGORY_ID",category.getId())); List paramList = category.getParamList(); if(!Objects.isNull(paramList)&¶mList.size()> Constants.ZERO){ for (int i = 0; i < paramList.size(); i++) { CateParam cateParam = paramList.get(i); cateParam.setCreator(user.getId()); cateParam.setCreateDate(new Date()); cateParam.setIsdeleted(Constants.ZERO); cateParam.setSortnum(i+Constants.ONE); cateParam.setStatus(Constants.ZERO); cateParam.setCategoryId(category.getId()); cateParamMapper.insert(cateParam); } } // this.dealCateAttr(category.getAttrFirstList(),Constants.ZERO,category.getId(),user); // this.dealCateAttr(category.getAttrSecondList(),Constants.ONE,category.getId(),user); // cateAttrMapper.delete(new QueryWrapper().eq("CATEGORY_ID",category.getId())); // List attrFirst = category.getAttrFirstList(); // if(!Objects.isNull(attrFirst)&&attrFirst.size()> Constants.ZERO){ // for (int i = 0; i < attrFirst.size(); i++) { // CateAttr cateAttr = attrFirst.get(i); // cateAttr.setCreator(user.getId()); // cateAttr.setCreateDate(new Date()); // cateAttr.setIsdeleted(Constants.ZERO); // cateAttr.setSortnum(i+Constants.ONE); // cateAttr.setStatus(Constants.ZERO); // cateAttr.setCategoryId(category.getId()); // cateAttr.setType(Constants.ZERO); // cateAttrMapper.insert(cateAttr); // } // } // List attrSecond = category.getAttrSecondList(); // if(!Objects.isNull(attrSecond)&&attrSecond.size()> Constants.ZERO){ // for (int i = 0; i < attrSecond.size(); i++) { // CateAttr cateAttr = attrSecond.get(i); // cateAttr.setCreator(user.getId()); // cateAttr.setCreateDate(new Date()); // cateAttr.setIsdeleted(Constants.ZERO); // cateAttr.setSortnum(i+Constants.ONE); // cateAttr.setStatus(Constants.ZERO); // cateAttr.setCategoryId(category.getId()); // cateAttr.setType(Constants.ONE); // cateAttrMapper.insert(cateAttr); // } // } cateBudgetMapper.delete(new QueryWrapper().eq("CATEGORY_ID",category.getId())); List budgetList = category.getBudgetList(); if(!Objects.isNull(budgetList)&&budgetList.size()> Constants.ZERO){ for (int i = 0; i < budgetList.size(); i++) { CateBudget cateBudget = budgetList.get(i); cateBudget.setCreator(user.getId()); cateBudget.setCreateDate(new Date()); cateBudget.setIsdeleted(Constants.ZERO); cateBudget.setSortnum(i+Constants.ONE); cateBudget.setStatus(Constants.ZERO); cateBudget.setCategoryId(category.getId()); cateBudgetMapper.insert(cateBudget); } } } @Override public void companyUpdateById(Category category) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(categoryMapper.selectCount(new QueryWrapper().eq("ISDELETED",Constants.ZERO).eq("COMPANY_ID",user.getCompanyId()) .ne("id",category.getId()).eq("name",category.getName()))>0){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"【"+category.getName()+"】已存在"); }; category.setStatus(Constants.ZERO); category.setEditDate(new Date()); category.setEditor(user.getId()); category.setIsdeleted(Constants.ZERO); //处理拼音问题 category.setPinyin(PinYinUtil.getFullSpell(category.getName())); category.setShortPinyin(PinYinUtil.getFirstSpell(category.getName())); categoryMapper.updateById(category); //处理属性配置 this.dealCateParam(category.getParamList(),category.getId(),user); cateBudgetMapper.delete(new QueryWrapper().eq("CATEGORY_ID",category.getId())); List budgetList = category.getBudgetList(); if(!Objects.isNull(budgetList)&&budgetList.size()> Constants.ZERO){ for (int i = 0; i < budgetList.size(); i++) { CateBudget cateBudget = budgetList.get(i); cateBudget.setCreator(user.getId()); cateBudget.setCreateDate(new Date()); cateBudget.setIsdeleted(Constants.ZERO); cateBudget.setSortnum(i+Constants.ONE); cateBudget.setStatus(Constants.ZERO); cateBudget.setCategoryId(category.getId()); cateBudgetMapper.insert(cateBudget); } } } public void dealCateParam(List cateParamList,Integer categoryId,LoginUserInfo userInfo ){ List oldCateParamList = cateParamMapper.selectList(new QueryWrapper() .eq("ISDELETED",Constants.ZERO).eq("CATEGORY_ID",categoryId)); List updCateParam = new ArrayList<>(); List delCateParam = new ArrayList<>(); for (CateParam oldCateParam:oldCateParamList) { Boolean flag = false; for (CateParam cateParam:cateParamList) { if(oldCateParam.getId().equals(cateParam.getId())){ updCateParam.add(cateParam); flag = true; break; } } if(!flag){ delCateParam.add(oldCateParam); } } CateParam maxCateParam = cateParamMapper.selectOne(new QueryWrapper().eq("ISDELETED",Constants.ZERO) .eq("CATEGORY_ID",categoryId).orderByDesc(" SORTNUM ").last(" limit 1 ")); Integer nextSortNum = 0; if(!Objects.isNull(maxCateParam)){ nextSortNum = maxCateParam.getSortnum(); } for (CateParam cateParam:cateParamList) { if(Objects.isNull(cateParam.getId())){ nextSortNum ++ ; cateParam.setCreator(userInfo.getId()); cateParam.setCreateDate(new Date()); cateParam.setIsdeleted(Constants.ZERO); cateParam.setSortnum(nextSortNum); cateParam.setStatus(Constants.ZERO); cateParam.setCategoryId(categoryId); cateParamMapper.insert(cateParam); } } delCateParam.forEach(i->{ cateParamMapper.deleteById(i.getId()); }); updCateParam.forEach(i->{ i.setEditDate(new Date()); i.setEditor(userInfo.getId()); cateParamMapper.updateById(i); }); } @Override public void updateDisableById(Category category) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); category.setEditDate(new Date()); category.setEditor(user.getId()); categoryMapper.updateById(category); } @Override public void updateByIdInBatch(List categorys) { if (CollectionUtils.isEmpty(categorys)) { return; } for (Category category: categorys) { this.updateById(category); } } @Override public Category findById(Integer id) { Category category = categoryMapper.selectById(id); String prefixUrl = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(Constants.OSS, Constants.CATEGORY_IMG).getCode(); category.setPrefixUrl(prefixUrl); category.setParamList(cateParamMapper.selectList(new QueryWrapper().eq("CATEGORY_ID",id).eq("ISDELETED",Constants.ZERO).orderByAsc(" SORTNUM "))); category.setBudgetList(cateBudgetMapper.selectList(new QueryWrapper().eq("CATEGORY_ID",id).eq("ISDELETED",Constants.ZERO).orderByAsc(" SORTNUM "))); return category; } @Override public Category findOne(Category category) { QueryWrapper wrapper = new QueryWrapper<>(category); return categoryMapper.selectOne(wrapper); } @Override public List findList(Category category) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); QueryWrapper wrapper = new QueryWrapper<>(category) .eq("STATUS",Constants.ZERO) .eq("ISDELETED",Constants.ZERO) .eq("COMPANY_ID",user.getCompanyId()) .orderByAsc(" SORTNUM "); List list = categoryMapper.selectList(wrapper); // String prefixUrl = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() // + systemDictDataBiz.queryByCode(Constants.OSS, Constants.CATEGORY_IMG).getCode(); // for (Category c:list) { // c.setPrefixUrl(prefixUrl); // c.setAttrFirstList(cateAttrMapper.selectList(new QueryWrapper().eq("TYPE",Constants.ZERO).eq("ISDELETED",Constants.ZERO).eq("CATEGORY_ID",c.getId()).orderByAsc(" SORTNUM "))); // c.setAttrSecondList(cateAttrMapper.selectList(new QueryWrapper().eq("TYPE",Constants.ONE).eq("ISDELETED",Constants.ZERO).eq("CATEGORY_ID",c.getId()).orderByAsc(" SORTNUM "))); // c.setBudgetList(cateBudgetMapper.selectList(new QueryWrapper().eq("CATEGORY_ID",c.getId()).orderByAsc(" SORTNUM "))); // } return list; } @Override public List findListSaaS(Category category) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(!user.getType().equals(Constants.UserType.ZHUBO.getKey())){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"用户类别错误,非主播用户!"); } QueryWrapper wrapper = new QueryWrapper<>(category) .eq("STATUS",Constants.ZERO) .eq("ISDELETED",Constants.ZERO) .eq("COMPANY_ID",user.getCompanyId()) .orderByAsc(" SORTNUM "); List list = categoryMapper.selectList(wrapper); String prefixUrl = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(Constants.OSS, Constants.CATEGORY_IMG).getCode(); for (Category c:list) { c.setPrefixUrl(prefixUrl); c.setBudgetList(cateBudgetMapper.selectList(new QueryWrapper().eq("CATEGORY_ID",c.getId()) .orderByAsc(" SORTNUM "))); this.getParamSelect(c); } return list; } public void getParamSelect(Category category){ List cateParamList = cateParamMapper.selectList(new QueryWrapper() .eq("CATEGORY_ID",category.getId()) .eq("ISSELECT",Constants.ONE) .eq("ISDELETED",Constants.ZERO) .eq("ISSHOW",Constants.ONE) .orderByAsc(" SORTNUM ") .last(" limit 2 ") ); if(!Objects.isNull(cateParamList)&&cateParamList.size()>Constants.ZERO){ for (int i = 0; i < cateParamList.size(); i++) { CateParam cateParam = cateParamList.get(i); List cateParamSelectList = cateParamSelectMapper.selectList(new QueryWrapper() .eq("PARAM_ID",cateParam.getId()) .eq("ISDELETED",Constants.ZERO)); if(i==0){ category.setAttrFirst(cateParam.getName()); category.setCateParamFirstList(cateParamSelectList); }else if(i==1){ category.setAttrSecond(cateParam.getName()); category.setCateParamSecondList(cateParamSelectList); } } } } @Override public List findListForGoods(Integer goodsId) { LoginUserInfo loginUserInfo = (LoginUserInfo)SecurityUtils.getSubject().getPrincipal(); QueryWrapper wrapper = new QueryWrapper() .eq("STATUS",Constants.ZERO) .eq("ISDELETED",Constants.ZERO) .eq("COMPANY_ID",loginUserInfo.getCompanyId()) .orderByAsc(" SORTNUM "); List list = categoryMapper.selectList(wrapper); String prefixUrl = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(Constants.OSS, Constants.CATEGORY_IMG).getCode(); for (Category c:list) { c.setPrefixUrl(prefixUrl); c.setAttrFirstList(cateAttrMapper.selectList(new QueryWrapper().eq("TYPE",Constants.ZERO).eq("ISDELETED",Constants.ZERO).eq("CATEGORY_ID",c.getId()).orderByAsc(" SORTNUM "))); c.setAttrSecondList(cateAttrMapper.selectList(new QueryWrapper().eq("TYPE",Constants.ONE).eq("ISDELETED",Constants.ZERO).eq("CATEGORY_ID",c.getId()).orderByAsc(" SORTNUM "))); c.setParamList(cateParamMapper.selectList(new QueryWrapper() .select(" * , ( select gp.VAL from goods_param gp where gp.GOODS_ID = "+goodsId+" and gp.PRAMA_ID = cate_param.id limit 1 ) as val ") .eq("CATEGORY_ID",c.getId()) .eq("ISSHOW",Constants.ONE) .eq("STATUS",Constants.ZERO) .eq("ISDELETED",Constants.ZERO) .orderByAsc(" SORTNUM "))); } return list; } @Override public PageData findPage(PageWrap pageWrap) { IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); QueryWrapper queryWrapper = new QueryWrapper<>(); Utils.MP.blankToNull(pageWrap.getModel()); queryWrapper.lambda().eq(Category::getIsdeleted, Constants.ZERO); if (pageWrap.getModel().getName() != null) { queryWrapper.lambda().like(Category::getName, pageWrap.getModel().getName()); } if (pageWrap.getModel().getStatus() != null) { queryWrapper.lambda().eq(Category::getStatus, pageWrap.getModel().getStatus()); } if (pageWrap.getModel().getType() != null) { queryWrapper.lambda().eq(Category::getType, pageWrap.getModel().getType()); } if (pageWrap.getModel().getCompanyId() != null) { queryWrapper.lambda().eq(Category::getCompanyId, pageWrap.getModel().getCompanyId()); } queryWrapper.lambda().orderByAsc(Category::getSortnum); IPage categoryIPage = categoryMapper.selectPage(page, queryWrapper); String prefixUrl = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(Constants.OSS, Constants.CATEGORY_IMG).getCode(); categoryIPage.getRecords().forEach(i->{ i.setPrefixUrl(prefixUrl); }); return PageData.from(categoryIPage); } @Override public long count(Category category) { QueryWrapper wrapper = new QueryWrapper<>(category); return categoryMapper.selectCount(wrapper); } /**********************************************************************************/ @Override public List companyFindList(Category category) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); QueryWrapper wrapper = new QueryWrapper<>(category) .eq("STATUS",Constants.ZERO) .eq("COMPANY_ID",user.getCompanyId()) .eq("ISDELETED",Constants.ZERO) .orderByAsc(" SORTNUM "); List list = categoryMapper.selectList(wrapper); String prefixUrl = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(Constants.OSS, Constants.CATEGORY_IMG).getCode(); for (Category c:list) { c.setPrefixUrl(prefixUrl); c.setBudgetList(cateBudgetMapper.selectList(new QueryWrapper().eq("STATUS",Constants.ZERO).eq("CATEGORY_ID",c.getId()).orderByAsc(" SORTNUM "))); c.setParamList(cateParamMapper.selectList(new QueryWrapper().eq("STATUS",Constants.ZERO).eq("CATEGORY_ID",c.getId()).orderByAsc("SORTNUM"))); } return list; } }