| 
					
				 | 
			
			
				@@ -1,13 +1,11 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 package com.fs.app.controller; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import cn.hutool.core.util.ObjectUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.alibaba.fastjson.JSON; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.baomidou.mybatisplus.core.conditions.Wrapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.baomidou.mybatisplus.core.toolkit.Wrappers; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 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.vo.CompanySubUserVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 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.bean.BeanUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.fs.company.domain.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.fs.company.dto.UserProjectDTO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 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.core.security.SecurityUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.fs.course.service.IFsCourseRedPacketLogService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 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.PageInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import io.swagger.annotations.Api; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -33,6 +34,8 @@ import io.swagger.annotations.ApiOperation; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import io.swagger.annotations.ApiParam; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import lombok.AllArgsConstructor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 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 javax.validation.Valid; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -57,7 +60,10 @@ public class CompanyUserController extends AppBaseController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private final ICompanyUserChangeApplyService companyUserChangeApplyService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private final CompanyRoleMapper companyRoleMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private final IAppService appService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private final IFsUserCompanyUserService fsUserCompanyUserService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private final ICompanyTagUserService companyTagUserService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private ISysDictDataService dictDataService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Login 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @ApiOperation("查询用户列表") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @GetMapping("/getCompanyUserList") 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -227,7 +233,7 @@ public class CompanyUserController extends AppBaseController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @RepeatSubmit 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @ApiOperation("更换会员归属申请") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @PostMapping("/changeUserParentApply") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public R changeVipUser(@Valid @RequestBody CompanyUserChangeApplyParam param) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public R changeVipUser(@RequestBody CompanyUserChangeApplyParam param) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 参数校验 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         CompanyUser fromUser = companyUserService.selectCompanyUserById(param.getFrom()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (Objects.isNull(fromUser)) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -247,8 +253,10 @@ public class CompanyUserController extends AppBaseController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             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) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             throw new ServiceException("存在待审核申请"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         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(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 查询标签和项目中的会员添加 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @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 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @ApiOperation("申请列表") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @GetMapping("/applyList") 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -319,4 +370,23 @@ public class CompanyUserController extends AppBaseController { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         appService.changeUserDeptAndPost(param); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |