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.mapper.AiProductCategoryMapper; import cc.mrbird.febs.ai.service.AiProductCategoryService; import cc.mrbird.febs.ai.util.UUID; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.entity.QueryRequest; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; 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.*; /** * AI产品类别 Service实现类 * * @author yourname * @date 2025-07-29 */ @Slf4j @Service @RequiredArgsConstructor public class AiProductCategoryServiceImpl extends ServiceImpl implements AiProductCategoryService { private final AiProductCategoryMapper aiProductCategoryMapper; @Override public AiProductCategory getById(String id) { return aiProductCategoryMapper.selectById(id); } @Override public List getList() { LambdaQueryWrapper query = Wrappers.lambdaQuery(AiProductCategory.class); query.ne(AiProductCategory::getState, 2); query.orderByDesc(AiProductCategory::getHotState); query.orderByAsc(AiProductCategory::getSort); List aiProductCategories = aiProductCategoryMapper.selectList(query); return aiProductCategories; } @Override public Map selectMapByIds(Set collect) { Map map = new HashMap<>(); if(CollUtil.isNotEmpty( collect)){ List aiProductCategories = aiProductCategoryMapper.selectList( Wrappers.lambdaQuery(AiProductCategory.class) .in(AiProductCategory::getId,collect) ); if(CollUtil.isNotEmpty(aiProductCategories)){ aiProductCategories.forEach(aiProductCategory -> map.put(aiProductCategory.getId(),aiProductCategory)); } } return map; } @Override public IPage listInPage(AiProductCategory dto, QueryRequest request) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); LambdaQueryWrapper query = Wrappers.lambdaQuery(AiProductCategory.class); query.ne(AiProductCategory::getState, 2); query.orderByDesc(AiProductCategory::getHotState); query.orderByAsc(AiProductCategory::getSort); Page pages = aiProductCategoryMapper.selectPage(page, query); return pages; } @Override public FebsResponse changeState(String id, Integer type, Integer state) { AiProductCategory entity = this.getById(id); if(ObjectUtil.isNotNull(entity)){ if(1 == type){ aiProductCategoryMapper.update(null, Wrappers.lambdaUpdate(AiProductCategory.class) .set(AiProductCategory::getState, state) .eq(AiProductCategory::getId, id) ); } if(2 == type){ aiProductCategoryMapper.update(null, Wrappers.lambdaUpdate(AiProductCategory.class) .set(AiProductCategory::getHotState, state) .eq(AiProductCategory::getId, id) ); } } return new FebsResponse().success().message("操作成功"); } @Override public FebsResponse add(AiProductCategory dto) { AiProductCategory entity = new AiProductCategory(); entity.setId(UUID.getSimpleUUIDString()); entity.setCompanyId(dto.getCompanyId()); entity.setCode(dto.getCode()); entity.setName(dto.getName()); entity.setBackImg(dto.getBackImg()); entity.setIconImg(dto.getIconImg()); entity.setSort(dto.getSort()); entity.setCreatedTime(new Date()); this.save(entity); return new FebsResponse().success().message("操作成功"); } @Override public FebsResponse update(AiProductCategory dto) { String id = dto.getId(); AiProductCategory entity = this.getById(id); if (ObjectUtil.isNotNull( entity)){ this.update(null, Wrappers.lambdaUpdate(AiProductCategory.class) .set(AiProductCategory::getCode, dto.getCode()) .set(AiProductCategory::getName, dto.getName()) .set(AiProductCategory::getBackImg, dto.getBackImg()) .set(AiProductCategory::getIconImg, dto.getIconImg()) .set(AiProductCategory::getSort, dto.getSort()) .set(AiProductCategory::getUpdatedTime, new Date()) .eq(AiProductCategory::getId, id) ); } return new FebsResponse().success().message("操作成功"); } @Override public FebsResponse delete(String id) { AiProductCategory entity = this.getById(id); if(ObjectUtil.isNotNull( entity)){ this.update(null, Wrappers.lambdaUpdate(AiProductCategory.class) .set(AiProductCategory::getState, 2) .set(AiProductCategory::getUpdatedTime, new Date()) .eq(AiProductCategory::getId, id)); } return new FebsResponse().success().message("操作成功"); } @Override public List categoryTree() { return this.getList() ; } }