Administrator
1 days ago 5b9d8648f3a0da63bb26fdb17c39d8999c9491c4
feat(ai): 增加公司ID筛选功能

- 在 AdminMoveChooseInfoDto 中添加 companyId 字段
- 在 AiMemberRoleController 中获取当前用户所在公司ID,并设置到DTO中
- 在 AiMemberRoleServiceImpl 中根据公司ID筛选会员角色列表
- 修改 AiProductService 接口,增加按公司ID筛选产品的功能
- 实现 AiProductServiceImpl 中按公司ID筛选产品的逻辑
- 在 BaseController 中添加获取当前用户公司ID的方法
- 在 UserServiceImpl 中实现根据用户名查找用户描述的方法
9 files modified
62 ■■■■■ changed files
src/main/java/cc/mrbird/febs/ai/controller/memberRole/AiMemberRoleController.java 8 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/controller/memberRole/ViewController.java 4 ●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/req/AdminMoveChooseInfoDto.java 1 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/service/AiProductService.java 2 ●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberRoleServiceImpl.java 11 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/service/impl/AiProductServiceImpl.java 3 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/common/controller/BaseController.java 9 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/system/service/IUserService.java 8 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/system/service/impl/UserServiceImpl.java 16 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/ai/controller/memberRole/AiMemberRoleController.java
@@ -31,7 +31,8 @@
    @GetMapping("list")
    public FebsResponse list(AiMemberRole dto, QueryRequest request) {
        String companyId = getCurrentUserCompanyId();
        dto.setCompanyId(companyId);
        Map<String, Object> data = getDataTable(aiMemberRoleService.listInPage(dto, request));
        return new FebsResponse().success().data(data);
    }
@@ -49,7 +50,8 @@
    @PostMapping("add")
    @ControllerEndpoint(operation = "新增", exceptionMessage = "操作失败")
    public FebsResponse add(@RequestBody @Valid AiMemberRole dto) {
        String companyId = getCurrentUserCompanyId();
        dto.setCompanyId(companyId);
        return aiMemberRoleService.memberRoleAdd(dto);
    }
@@ -73,6 +75,8 @@
    @ControllerEndpoint(operation = "产品配置", exceptionMessage = "操作失败")
    public FebsResponse productSet(@RequestBody @Valid AdminMoveChooseInfoDto dto) {
        String companyId = getCurrentUserCompanyId();
        dto.setCompanyId(companyId);
        return aiMemberRoleService.productSet(dto);
    }
}
src/main/java/cc/mrbird/febs/ai/controller/memberRole/ViewController.java
@@ -69,11 +69,13 @@
        Set<String> productIds = new HashSet<>();
        AiMemberRole entity = aiMemberRoleService.getById(id);
        String companyId = entity.getCompanyId();
        if(ObjectUtil.isNotNull(entity)){
            //右侧数据
            LambdaQueryWrapper<AiMemberRoleProduct> query = Wrappers.lambdaQuery(AiMemberRoleProduct.class);
            if(StrUtil.isNotEmpty(id)){
                query.eq(AiMemberRoleProduct::getRoleId, id);
                query.eq(AiMemberRoleProduct::getCompanyId, companyId);
            }
            List<AiMemberRoleProduct> selectedList = aiMemberRoleProductService.selectListByQuery(query);
            if(CollUtil.isNotEmpty(selectedList)){
@@ -82,7 +84,7 @@
            }
            //左侧数据
            List<AiProduct> allList = aiProductService.selectList();
            List<AiProduct> allList = aiProductService.selectList(companyId);
            if(CollUtil.isNotEmpty(allList)){
                //stream流操作mallMembers,生成一个新的List<MallMemberVo>
                vos = allList.stream().map(AiProduct -> {
src/main/java/cc/mrbird/febs/ai/req/AdminMoveChooseInfoDto.java
@@ -8,6 +8,7 @@
public class AdminMoveChooseInfoDto {
    private String chooseId;
    private String companyId;
    private List<String> chooseIds;
}
src/main/java/cc/mrbird/febs/ai/service/AiProductService.java
@@ -34,7 +34,7 @@
    FebsResponse delete(String id);
    List<AiProduct> selectList();
    List<AiProduct> selectList(String companyId);
    FebsResponse productSet(AdminMoveChooseInfoDto dto);
src/main/java/cc/mrbird/febs/ai/service/impl/AiMemberRoleServiceImpl.java
@@ -10,8 +10,10 @@
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;
@@ -38,6 +40,7 @@
    private final AiMemberRoleMapper aiMemberRoleMapper;
    private final AiProductService aiProductService;
    private final AiMemberRoleProductService aiMemberRoleProductService;
    private final IUserService iUserService;
    @Override
    public AiMemberRole getById(String id) {
@@ -46,9 +49,11 @@
    @Override
    public IPage<AiMemberRole> listInPage(AiMemberRole dto, QueryRequest request) {
        Page<AiMemberRole> page = new Page<>(request.getPageNum(), request.getPageSize());
        LambdaQueryWrapper<AiMemberRole> 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<AiMemberRole> pages = aiMemberRoleMapper.selectPage(page, query);
@@ -77,6 +82,7 @@
        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("操作成功");
@@ -118,12 +124,14 @@
    @Override
    public FebsResponse productSet(AdminMoveChooseInfoDto dto) {
        String chooseId = dto.getChooseId();
        String companyId = dto.getCompanyId();
        List<String> chooseIds = dto.getChooseIds();
        AiMemberRole aiMemberRole = this.getById(chooseId);
        if (ObjectUtil.isNotNull(aiMemberRole)) {
            aiMemberRoleProductService.deleteByQuery(
                    Wrappers.lambdaQuery(AiMemberRoleProduct.class)
                            .eq(AiMemberRoleProduct::getRoleId,chooseId)
                            .eq(AiMemberRoleProduct::getCompanyId,companyId)
            );
            if(CollUtil.isNotEmpty(chooseIds)){
                Date createdTime = new Date();
@@ -132,6 +140,7 @@
                    entity.setId(UUID.getSimpleUUIDString());
                    entity.setRoleId(chooseId);
                    entity.setProductId(item);
                    entity.setCompanyId(companyId);
                    entity.setCreatedTime(createdTime);
                    aiMemberRoleProductService.getBaseMapper().insert(entity);
                }
src/main/java/cc/mrbird/febs/ai/service/impl/AiProductServiceImpl.java
@@ -158,9 +158,10 @@
    }
    @Override
    public List<AiProduct> selectList() {
    public List<AiProduct> selectList(String companyId) {
        return aiProductMapper.selectList(
                Wrappers.lambdaQuery(AiProduct.class)
                        .eq(AiProduct::getCompanyId, companyId)
                .ne(AiProduct::getState, 2)
        );
    }
src/main/java/cc/mrbird/febs/common/controller/BaseController.java
@@ -23,6 +23,15 @@
        return (User) getSubject().getPrincipal();
    }
    protected String getCurrentUserCompanyId() {
        String description = null;
        User user = (User) getSubject().getPrincipal();
        if (user != null){
            description = user.getDescription();
        }
        return description;
    }
    protected Session getSession() {
        return getSubject().getSession();
    }
src/main/java/cc/mrbird/febs/system/service/IUserService.java
@@ -18,6 +18,14 @@
     * @param username 用户名
     * @return 用户
     */
    String findDesByName(String username);
    /**
     * 通过用户名查找用户
     *
     * @param username 用户名
     * @return 用户
     */
    User findByName(String username);
    /**
src/main/java/cc/mrbird/febs/system/service/impl/UserServiceImpl.java
@@ -14,10 +14,12 @@
import cc.mrbird.febs.system.service.IUserDataPermissionService;
import cc.mrbird.febs.system.service.IUserRoleService;
import cc.mrbird.febs.system.service.IUserService;
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.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
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;
@@ -45,6 +47,20 @@
    private final ShiroRealm shiroRealm;
    @Override
    public String findDesByName(String username) {
        String description = null;
        User user = this.baseMapper.selectOne(
                Wrappers.lambdaQuery(User.class)
                .eq(User::getUsername, username)
                .last("limit 1")
        );
        if (user != null){
            description = user.getDescription();
        }
        return description;
    }
    @Override
    public User findByName(String username) {
        return this.baseMapper.findByName(username);
    }