package cc.mrbird.febs.ai.service.impl; import cc.mrbird.febs.ai.entity.AiMemberRole; import cc.mrbird.febs.ai.entity.AiMemberRoleProduct; import cc.mrbird.febs.ai.mapper.AiMemberRoleMapper; import cc.mrbird.febs.ai.req.AdminMoveChooseInfoDto; import cc.mrbird.febs.ai.service.AiMemberRoleProductService; import cc.mrbird.febs.ai.service.AiMemberRoleService; import cc.mrbird.febs.ai.service.AiProductService; import cc.mrbird.febs.ai.util.UUID; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.entity.QueryRequest; import cc.mrbird.febs.system.service.IUserService; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; 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 java.util.Date; import java.util.List; /** * AI用户选择角色表 Service实现类 * * @author yourname * @date 2025-07-29 */ @Slf4j @Service @RequiredArgsConstructor public class AiMemberRoleServiceImpl extends ServiceImpl implements AiMemberRoleService { private final AiMemberRoleMapper aiMemberRoleMapper; private final AiProductService aiProductService; private final AiMemberRoleProductService aiMemberRoleProductService; private final IUserService iUserService; @Override public AiMemberRole getById(String id) { return aiMemberRoleMapper.selectById(id); } @Override public IPage listInPage(AiMemberRole dto, QueryRequest request) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); LambdaQueryWrapper query = Wrappers.lambdaQuery(AiMemberRole.class); if (StrUtil.isNotEmpty(dto.getCompanyId())){ query.eq(AiMemberRole::getCompanyId, dto.getCompanyId()); } query.ne(AiMemberRole::getState, 2); query.orderByAsc(AiMemberRole::getSort); Page pages = aiMemberRoleMapper.selectPage(page, query); return pages; } @Override public FebsResponse changeState(String id, Integer state) { AiMemberRole entity = this.getById(id); if(ObjectUtil.isNotEmpty(entity)){ this.update(null, Wrappers.lambdaUpdate(AiMemberRole.class) .set(AiMemberRole::getState, state) .set(AiMemberRole::getUpdatedTime, new Date()) .eq(AiMemberRole::getId, id)); } return new FebsResponse().success().message("操作成功"); } @Override public FebsResponse memberRoleAdd(AiMemberRole dto) { AiMemberRole entity = new AiMemberRole(); entity.setId(UUID.getSimpleUUIDString()); entity.setName(dto.getName()); entity.setCode(dto.getCode()); entity.setIconImg(dto.getIconImg()); entity.setSort(dto.getSort()); entity.setState(dto.getState()); entity.setCompanyId(dto.getCompanyId()); entity.setCreatedTime(new Date()); this.save( entity); return new FebsResponse().success().message("操作成功"); } @Override public FebsResponse updateMemberRole(AiMemberRole dto) { String id = dto.getId(); AiMemberRole entity = this.getById(id); if(ObjectUtil.isNotNull( entity)){ this.update(null, Wrappers.lambdaUpdate(AiMemberRole.class) .set(AiMemberRole::getCode, dto.getCode()) .set(AiMemberRole::getName, dto.getName()) .set(AiMemberRole::getIconImg, dto.getIconImg()) .set(AiMemberRole::getSort, dto.getSort()) .set(AiMemberRole::getUpdatedTime, new Date()) .eq(AiMemberRole::getId, id)); } return new FebsResponse().success().message("操作成功"); } @Override public FebsResponse delete(String id) { AiMemberRole entity = this.getById(id); if(ObjectUtil.isNotNull( entity)){ this.update(null, Wrappers.lambdaUpdate(AiMemberRole.class) .set(AiMemberRole::getState, 2) .set(AiMemberRole::getUpdatedTime, new Date()) .eq(AiMemberRole::getId, id)); } return new FebsResponse().success().message("操作成功"); } @Override public FebsResponse productSet(AdminMoveChooseInfoDto dto) { String chooseId = dto.getChooseId(); List chooseIds = dto.getChooseIds(); AiMemberRole aiMemberRole = this.getById(chooseId); if (ObjectUtil.isNotNull(aiMemberRole)) { String companyId = aiMemberRole.getCompanyId(); aiMemberRoleProductService.deleteByQuery( Wrappers.lambdaQuery(AiMemberRoleProduct.class) .eq(AiMemberRoleProduct::getRoleId,chooseId) .eq(AiMemberRoleProduct::getCompanyId,companyId) ); if(CollUtil.isNotEmpty(chooseIds)){ Date createdTime = new Date(); for (String item : chooseIds){ AiMemberRoleProduct entity = new AiMemberRoleProduct(); entity.setId(UUID.getSimpleUUIDString()); entity.setRoleId(chooseId); entity.setProductId(item); entity.setCompanyId(companyId); entity.setCreatedTime(createdTime); aiMemberRoleProductService.getBaseMapper().insert(entity); } } } return new FebsResponse().success().message("操作成功"); } }