|  | @@ -1,13 +1,11 @@
 | 
											
												
													
														|  |  package com.fs.app.controller;
 |  |  package com.fs.app.controller;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +import cn.hutool.core.util.ObjectUtil;
 | 
											
												
													
														|  |  import com.alibaba.fastjson.JSON;
 |  |  import com.alibaba.fastjson.JSON;
 | 
											
												
													
														|  |  import com.baomidou.mybatisplus.core.conditions.Wrapper;
 |  |  import com.baomidou.mybatisplus.core.conditions.Wrapper;
 | 
											
												
													
														|  |  import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 |  |  import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 | 
											
												
													
														|  |  import com.fs.app.annotation.Login;
 |  |  import com.fs.app.annotation.Login;
 | 
											
												
													
														|  | -import com.fs.app.param.ChangeUserDeptAndPostParam;
 |  | 
 | 
											
												
													
														|  | -import com.fs.app.param.CompanyUserChangeApplyParam;
 |  | 
 | 
											
												
													
														|  | -import com.fs.app.param.CompanyUserParam;
 |  | 
 | 
											
												
													
														|  | -import com.fs.app.param.CompanyUserUpdateParam;
 |  | 
 | 
											
												
													
														|  | 
 |  | +import com.fs.app.param.*;
 | 
											
												
													
														|  |  import com.fs.app.service.IAppService;
 |  |  import com.fs.app.service.IAppService;
 | 
											
												
													
														|  |  import com.fs.app.vo.CompanySubUserVO;
 |  |  import com.fs.app.vo.CompanySubUserVO;
 | 
											
												
													
														|  |  import com.fs.common.annotation.RepeatSubmit;
 |  |  import com.fs.common.annotation.RepeatSubmit;
 | 
											
										
											
												
													
														|  | @@ -17,15 +15,18 @@ import com.fs.common.exception.ServiceException;
 | 
											
												
													
														|  |  import com.fs.common.utils.PatternUtils;
 |  |  import com.fs.common.utils.PatternUtils;
 | 
											
												
													
														|  |  import com.fs.common.utils.bean.BeanUtils;
 |  |  import com.fs.common.utils.bean.BeanUtils;
 | 
											
												
													
														|  |  import com.fs.company.domain.*;
 |  |  import com.fs.company.domain.*;
 | 
											
												
													
														|  | 
 |  | +import com.fs.company.dto.UserProjectDTO;
 | 
											
												
													
														|  |  import com.fs.company.mapper.CompanyRoleMapper;
 |  |  import com.fs.company.mapper.CompanyRoleMapper;
 | 
											
												
													
														|  | -import com.fs.company.service.ICompanyDeptService;
 |  | 
 | 
											
												
													
														|  | -import com.fs.company.service.ICompanyService;
 |  | 
 | 
											
												
													
														|  | -import com.fs.company.service.ICompanyUserChangeApplyService;
 |  | 
 | 
											
												
													
														|  | -import com.fs.company.service.ICompanyUserService;
 |  | 
 | 
											
												
													
														|  | 
 |  | +import com.fs.company.service.*;
 | 
											
												
													
														|  | 
 |  | +import com.fs.company.vo.CompanyTagUserVO;
 | 
											
												
													
														|  |  import com.fs.company.vo.CompanyUserChangeApplyVO;
 |  |  import com.fs.company.vo.CompanyUserChangeApplyVO;
 | 
											
												
													
														|  |  import com.fs.core.security.SecurityUtils;
 |  |  import com.fs.core.security.SecurityUtils;
 | 
											
												
													
														|  |  import com.fs.course.service.IFsCourseRedPacketLogService;
 |  |  import com.fs.course.service.IFsCourseRedPacketLogService;
 | 
											
												
													
														|  |  import com.fs.course.service.IFsCourseWatchLogService;
 |  |  import com.fs.course.service.IFsCourseWatchLogService;
 | 
											
												
													
														|  | 
 |  | +import com.fs.store.domain.FsUserCompanyUser;
 | 
											
												
													
														|  | 
 |  | +import com.fs.store.service.IFsUserCompanyUserService;
 | 
											
												
													
														|  | 
 |  | +import com.fs.system.service.ISysDictDataService;
 | 
											
												
													
														|  | 
 |  | +import com.fs.system.vo.DictVO;
 | 
											
												
													
														|  |  import com.github.pagehelper.PageHelper;
 |  |  import com.github.pagehelper.PageHelper;
 | 
											
												
													
														|  |  import com.github.pagehelper.PageInfo;
 |  |  import com.github.pagehelper.PageInfo;
 | 
											
												
													
														|  |  import io.swagger.annotations.Api;
 |  |  import io.swagger.annotations.Api;
 | 
											
										
											
												
													
														|  | @@ -33,6 +34,8 @@ import io.swagger.annotations.ApiOperation;
 | 
											
												
													
														|  |  import io.swagger.annotations.ApiParam;
 |  |  import io.swagger.annotations.ApiParam;
 | 
											
												
													
														|  |  import lombok.AllArgsConstructor;
 |  |  import lombok.AllArgsConstructor;
 | 
											
												
													
														|  |  import lombok.extern.slf4j.Slf4j;
 |  |  import lombok.extern.slf4j.Slf4j;
 | 
											
												
													
														|  | 
 |  | +import org.apache.commons.collections.CollectionUtils;
 | 
											
												
													
														|  | 
 |  | +import org.springframework.beans.factory.annotation.Autowired;
 | 
											
												
													
														|  |  import org.springframework.web.bind.annotation.*;
 |  |  import org.springframework.web.bind.annotation.*;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  import javax.validation.Valid;
 |  |  import javax.validation.Valid;
 | 
											
										
											
												
													
														|  | @@ -57,7 +60,10 @@ public class CompanyUserController extends AppBaseController {
 | 
											
												
													
														|  |      private final ICompanyUserChangeApplyService companyUserChangeApplyService;
 |  |      private final ICompanyUserChangeApplyService companyUserChangeApplyService;
 | 
											
												
													
														|  |      private final CompanyRoleMapper companyRoleMapper;
 |  |      private final CompanyRoleMapper companyRoleMapper;
 | 
											
												
													
														|  |      private final IAppService appService;
 |  |      private final IAppService appService;
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | 
 |  | +    private final IFsUserCompanyUserService fsUserCompanyUserService;
 | 
											
												
													
														|  | 
 |  | +    private final ICompanyTagUserService companyTagUserService;
 | 
											
												
													
														|  | 
 |  | +    @Autowired
 | 
											
												
													
														|  | 
 |  | +    private ISysDictDataService dictDataService;
 | 
											
												
													
														|  |      @Login
 |  |      @Login
 | 
											
												
													
														|  |      @ApiOperation("查询用户列表")
 |  |      @ApiOperation("查询用户列表")
 | 
											
												
													
														|  |      @GetMapping("/getCompanyUserList")
 |  |      @GetMapping("/getCompanyUserList")
 | 
											
										
											
												
													
														|  | @@ -227,7 +233,7 @@ public class CompanyUserController extends AppBaseController {
 | 
											
												
													
														|  |      @RepeatSubmit
 |  |      @RepeatSubmit
 | 
											
												
													
														|  |      @ApiOperation("更换会员归属申请")
 |  |      @ApiOperation("更换会员归属申请")
 | 
											
												
													
														|  |      @PostMapping("/changeUserParentApply")
 |  |      @PostMapping("/changeUserParentApply")
 | 
											
												
													
														|  | -    public R changeVipUser(@Valid @RequestBody CompanyUserChangeApplyParam param) {
 |  | 
 | 
											
												
													
														|  | 
 |  | +    public R changeVipUser(@RequestBody CompanyUserChangeApplyParam param) {
 | 
											
												
													
														|  |          // 参数校验
 |  |          // 参数校验
 | 
											
												
													
														|  |          CompanyUser fromUser = companyUserService.selectCompanyUserById(param.getFrom());
 |  |          CompanyUser fromUser = companyUserService.selectCompanyUserById(param.getFrom());
 | 
											
												
													
														|  |          if (Objects.isNull(fromUser)) {
 |  |          if (Objects.isNull(fromUser)) {
 | 
											
										
											
												
													
														|  | @@ -247,8 +253,10 @@ public class CompanyUserController extends AppBaseController {
 | 
											
												
													
														|  |              throw new ServiceException("类型不正确");
 |  |              throw new ServiceException("类型不正确");
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -        if (param.getType() == 1 && (Objects.isNull(param.getIds()) || param.getIds().isEmpty())) {
 |  | 
 | 
											
												
													
														|  | -            throw new ServiceException("请先选择会员");
 |  | 
 | 
											
												
													
														|  | 
 |  | +        if (param.getType() == 1 && (Objects.isNull(param.getIds()) || param.getIds().isEmpty())
 | 
											
												
													
														|  | 
 |  | +                &&Objects.isNull(param.getProject()) || param.getProject().isEmpty()
 | 
											
												
													
														|  | 
 |  | +        &&Objects.isNull(param.getTagList()) || param.getTagList().isEmpty()) {
 | 
											
												
													
														|  | 
 |  | +            throw new ServiceException("请先选择会员!");
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          // 存在待审核的申请不能再次申请
 |  |          // 存在待审核的申请不能再次申请
 | 
											
										
											
												
													
														|  | @@ -258,14 +266,57 @@ public class CompanyUserController extends AppBaseController {
 | 
											
												
													
														|  |          if (companyUserChangeApplyService.count(applyWrapper) > 0) {
 |  |          if (companyUserChangeApplyService.count(applyWrapper) > 0) {
 | 
											
												
													
														|  |              throw new ServiceException("存在待审核申请");
 |  |              throw new ServiceException("存在待审核申请");
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  |          CompanyUser companyUser = companyUserService.selectCompanyUserById(Long.parseLong(getUserId()));
 |  |          CompanyUser companyUser = companyUserService.selectCompanyUserById(Long.parseLong(getUserId()));
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | 
 |  | +        List<UserProjectDTO> list = param.getIds();
 | 
											
												
													
														|  | 
 |  | +        List<UserProjectDTO> userProjectDTOS = addUserId(param.getProject(),param.getTagList(),param.getFrom());
 | 
											
												
													
														|  | 
 |  | +        if (CollectionUtils.isNotEmpty(userProjectDTOS)){
 | 
											
												
													
														|  | 
 |  | +            list.addAll(userProjectDTOS);
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  |          // 添加申请
 |  |          // 添加申请
 | 
											
												
													
														|  | -        companyUserChangeApplyService.apply(param.getFrom(), param.getTo(), param.getType(), param.getIds(), companyUser.getCompanyId(), companyUser.getUserName());
 |  | 
 | 
											
												
													
														|  | 
 |  | +        companyUserChangeApplyService.apply(param.getFrom(), param.getTo(), param.getType(),list, companyUser.getCompanyId(), companyUser.getUserName());
 | 
											
												
													
														|  |          return R.ok();
 |  |          return R.ok();
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +    /**
 | 
											
												
													
														|  | 
 |  | +     * 查询标签和项目中的会员添加
 | 
											
												
													
														|  | 
 |  | +     * @param project
 | 
											
												
													
														|  | 
 |  | +     * @param tagList
 | 
											
												
													
														|  | 
 |  | +     * @param companyUserId
 | 
											
												
													
														|  | 
 |  | +     * @return
 | 
											
												
													
														|  | 
 |  | +     */
 | 
											
												
													
														|  | 
 |  | +    private List<UserProjectDTO> addUserId(List<Long> projects, List<Long> tagList, Long companyUserId) {
 | 
											
												
													
														|  | 
 |  | +        // Prepare parameters map
 | 
											
												
													
														|  | 
 |  | +        Map<String, Object> params = new HashMap<>();
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        if (CollectionUtils.isNotEmpty(projects)) {
 | 
											
												
													
														|  | 
 |  | +            params.put("projectIds", projects);
 | 
											
												
													
														|  | 
 |  | +        } else {
 | 
											
												
													
														|  | 
 |  | +            params.put("tagIds", tagList);
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        // Set company user ID
 | 
											
												
													
														|  | 
 |  | +        Long effectiveCompanyUserId = ObjectUtil.isNotEmpty(companyUserId)
 | 
											
												
													
														|  | 
 |  | +                ? companyUserId
 | 
											
												
													
														|  | 
 |  | +                : getCompanyUserId();
 | 
											
												
													
														|  | 
 |  | +        params.put("companyUserId", effectiveCompanyUserId);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        // Get data from service
 | 
											
												
													
														|  | 
 |  | +        List<CompanyTagUserVO> voList = companyTagUserService.selectUserByMap(params);
 | 
											
												
													
														|  | 
 |  | +        if (CollectionUtils.isEmpty(voList)) {
 | 
											
												
													
														|  | 
 |  | +            return Collections.emptyList();
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        // Transform data
 | 
											
												
													
														|  | 
 |  | +        return voList.stream()
 | 
											
												
													
														|  | 
 |  | +                .map(vo -> {
 | 
											
												
													
														|  | 
 |  | +                    UserProjectDTO dto = new UserProjectDTO();
 | 
											
												
													
														|  | 
 |  | +                    dto.setUserId(vo.getUserId());
 | 
											
												
													
														|  | 
 |  | +                    dto.setProjectId(vo.getProjectId());
 | 
											
												
													
														|  | 
 |  | +                    return dto;
 | 
											
												
													
														|  | 
 |  | +                })
 | 
											
												
													
														|  | 
 |  | +                .collect(Collectors.toList());
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |      @Login
 |  |      @Login
 | 
											
												
													
														|  |      @ApiOperation("申请列表")
 |  |      @ApiOperation("申请列表")
 | 
											
												
													
														|  |      @GetMapping("/applyList")
 |  |      @GetMapping("/applyList")
 | 
											
										
											
												
													
														|  | @@ -319,4 +370,23 @@ public class CompanyUserController extends AppBaseController {
 | 
											
												
													
														|  |          appService.changeUserDeptAndPost(param);
 |  |          appService.changeUserDeptAndPost(param);
 | 
											
												
													
														|  |          return R.ok();
 |  |          return R.ok();
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    @ApiOperation("查询指定公司中存在会员的项目")
 | 
											
												
													
														|  | 
 |  | +    @PostMapping("/getDictByKeyByProject")
 | 
											
												
													
														|  | 
 |  | +    public R getDictByKey(
 | 
											
												
													
														|  | 
 |  | +            @RequestBody TagProjectParam tagProjectParam){
 | 
											
												
													
														|  | 
 |  | +        List<DictVO> dictVOS=dictDataService.selectDictDataListByType("sys_course_project");
 | 
											
												
													
														|  | 
 |  | +        Map<String,Object> param = new HashMap<>();
 | 
											
												
													
														|  | 
 |  | +        param.put("tagIds",tagProjectParam.getTagIds());
 | 
											
												
													
														|  | 
 |  | +        param.put("companyUserId",tagProjectParam.getCompanyUserId());
 | 
											
												
													
														|  | 
 |  | +        List<Long> projectIds =fsUserCompanyUserService.selectFsUserCompanyUserList(param);
 | 
											
												
													
														|  | 
 |  | +        if (CollectionUtils.isEmpty(projectIds)){
 | 
											
												
													
														|  | 
 |  | +            return R.ok().put("data",new ArrayList<DictVO>());
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        List<DictVO> filteredDictVOS = dictVOS.stream()
 | 
											
												
													
														|  | 
 |  | +                .filter(dictVO -> projectIds.contains(Long.parseLong(dictVO.getDictValue())))
 | 
											
												
													
														|  | 
 |  | +                .collect(Collectors.toList());
 | 
											
												
													
														|  | 
 |  | +        return R.ok().put("data",filteredDictVOS);
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  |  }
 |  |  }
 |