package cc.mrbird.febs.ai.service.impl; import cc.mrbird.febs.ai.entity.AiMemberRole; import cc.mrbird.febs.ai.entity.AiProductCategory; import cc.mrbird.febs.ai.enumerates.ProductCategoryLevelEnum; import cc.mrbird.febs.ai.mapper.AiProductCategoryMapper; import cc.mrbird.febs.ai.req.productCategory.ApiProductCategoryAllDto; import cc.mrbird.febs.ai.req.productCategory.ApiProductCategoryHotDto; import cc.mrbird.febs.ai.req.productCategory.ApiProductCategoryPageDto; import cc.mrbird.febs.ai.res.productCategory.ApiProductCategoryVo; import cc.mrbird.febs.ai.service.AiProductCategoryService; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.mall.vo.ApiActivityInfoVo; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; /** * AI产品类别 Service实现类 * * @author yourname * @date 2025-07-29 */ @Slf4j @Service @RequiredArgsConstructor public class AiProductCategoryServiceImpl extends ServiceImpl implements AiProductCategoryService { private final AiProductCategoryMapper aiProductCategoryMapper; @Override public List getListByQuery(LambdaQueryWrapper query) { return aiProductCategoryMapper.selectList(query); } @Override public Page getPageListByQuery(Page page , ApiProductCategoryPageDto dto) { return aiProductCategoryMapper.selectPageListByQuery(page,dto); } @Override public FebsResponse hot() { List list = new ArrayList<>(); LambdaQueryWrapper query = Wrappers.lambdaQuery(AiProductCategory.class); query.eq(AiProductCategory::getLevel, ProductCategoryLevelEnum.LEVEL_TWO.getLevel()); query.eq(AiProductCategory::getState, 1); query.eq(AiProductCategory::getHotState, 1); query.orderByAsc(AiProductCategory::getSort); List listByQuery = this.getListByQuery(query); if (CollUtil.isNotEmpty(listByQuery)){ for (AiProductCategory aiProductCategory : listByQuery){ ApiProductCategoryVo apiProductCategoryVo = new ApiProductCategoryVo(); apiProductCategoryVo.setId(aiProductCategory.getId()); apiProductCategoryVo.setName(aiProductCategory.getName()); apiProductCategoryVo.setBackImg(aiProductCategory.getBackImg()); apiProductCategoryVo.setIconImg(aiProductCategory.getIconImg()); list.add(apiProductCategoryVo); } } return new FebsResponse().success().data(list); } @Override public FebsResponse hotV1(ApiProductCategoryHotDto dto) { List list = new ArrayList<>(); LambdaQueryWrapper query = Wrappers.lambdaQuery(AiProductCategory.class); if (StrUtil.isNotEmpty(dto.getCompanyId())){ query.eq(AiProductCategory::getCompanyId, dto.getCompanyId()); }else{ query.isNull(AiProductCategory::getCompanyId); } query.eq(AiProductCategory::getLevel, ProductCategoryLevelEnum.LEVEL_TWO.getLevel()); query.eq(AiProductCategory::getState, 1); query.eq(AiProductCategory::getHotState, 1); query.orderByAsc(AiProductCategory::getSort); List listByQuery = this.getListByQuery(query); if (CollUtil.isNotEmpty(listByQuery)){ for (AiProductCategory aiProductCategory : listByQuery){ ApiProductCategoryVo apiProductCategoryVo = new ApiProductCategoryVo(); apiProductCategoryVo.setId(aiProductCategory.getId()); apiProductCategoryVo.setName(aiProductCategory.getName()); apiProductCategoryVo.setBackImg(aiProductCategory.getBackImg()); apiProductCategoryVo.setIconImg(aiProductCategory.getIconImg()); list.add(apiProductCategoryVo); } } return new FebsResponse().success().data(list); } @Override public FebsResponse hotV2(ApiProductCategoryHotDto dto) { List list = new ArrayList<>(); LambdaQueryWrapper query = Wrappers.lambdaQuery(AiProductCategory.class); if (StrUtil.isNotEmpty(dto.getCompanyId())){ query.eq(AiProductCategory::getCompanyId, dto.getCompanyId()); }else{ query.isNull(AiProductCategory::getCompanyId); } query.eq(AiProductCategory::getLevel, ProductCategoryLevelEnum.LEVEL_ONE.getLevel()); query.eq(AiProductCategory::getState, 1); query.eq(AiProductCategory::getHotState, 1); query.orderByAsc(AiProductCategory::getSort); List listByQuery = this.getListByQuery(query); if (CollUtil.isNotEmpty(listByQuery)){ for (AiProductCategory aiProductCategory : listByQuery){ ApiProductCategoryVo apiProductCategoryVo = new ApiProductCategoryVo(); apiProductCategoryVo.setId(aiProductCategory.getId()); apiProductCategoryVo.setName(aiProductCategory.getName()); apiProductCategoryVo.setBackImg(aiProductCategory.getBackImg()); apiProductCategoryVo.setIconImg(aiProductCategory.getIconImg()); list.add(apiProductCategoryVo); } } return new FebsResponse().success().data(list); } @Override public FebsResponse categoryChildList(ApiProductCategoryPageDto dto) { List vos = new ArrayList<>(); List aiProductCategories = aiProductCategoryMapper.selectList( Wrappers.lambdaQuery(AiProductCategory.class) .eq(AiProductCategory::getParentId, dto.getParentId()) .eq(AiProductCategory::getState, 1) .orderByAsc(AiProductCategory::getSort) ); if (CollUtil.isNotEmpty(aiProductCategories)){ for (AiProductCategory aiProductCategory : aiProductCategories) { ApiProductCategoryVo vo = new ApiProductCategoryVo(); vo.setId(aiProductCategory.getId()); vo.setName(aiProductCategory.getName()); vos.add(vo); } } return new FebsResponse().success().data(vos); } @Override public String getDefaultProductCategoryId() { LambdaQueryWrapper query = Wrappers.lambdaQuery(AiProductCategory.class); query.eq(AiProductCategory::getState, 1); query.isNull(AiProductCategory::getCompanyId); query.eq(AiProductCategory::getHotState, 1); query.orderByAsc(AiProductCategory::getSort); query.last("limit 1"); List listByQuery = this.getListByQuery(query); if (CollUtil.isNotEmpty(listByQuery)){ return listByQuery.get(0).getId(); } return null; } @Override public FebsResponse allList(ApiProductCategoryAllDto dto) { List list = new ArrayList<>(); LambdaQueryWrapper query = Wrappers.lambdaQuery(AiProductCategory.class); if (StrUtil.isNotEmpty(dto.getCompanyId())){ query.eq(AiProductCategory::getCompanyId, dto.getCompanyId()); }else{ query.isNull(AiProductCategory::getCompanyId); } query.eq(AiProductCategory::getState, 1); query.eq(AiProductCategory::getLevel, ProductCategoryLevelEnum.LEVEL_ONE.getLevel()); query.orderByAsc(AiProductCategory::getSort); List listByQuery = this.getListByQuery(query); if (CollUtil.isNotEmpty(listByQuery)){ for (AiProductCategory aiProductCategory : listByQuery){ ApiProductCategoryVo apiProductCategoryVo = new ApiProductCategoryVo(); apiProductCategoryVo.setId(aiProductCategory.getId()); apiProductCategoryVo.setName(aiProductCategory.getName()); apiProductCategoryVo.setBackImg(aiProductCategory.getBackImg()); apiProductCategoryVo.setIconImg(aiProductCategory.getIconImg()); list.add(apiProductCategoryVo); } } return new FebsResponse().success().data(list); } }