Browse Source

company-app 新增岗位列表接口、部门列表接口、修改部门岗位接口

Long 1 day ago
parent
commit
cb131eb795

+ 32 - 0
fs-company-app/src/main/java/com/fs/app/controller/CompanyUserController.java

@@ -1,11 +1,14 @@
 package com.fs.app.controller;
 
+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.service.IAppService;
 import com.fs.app.vo.CompanySubUserVO;
 import com.fs.common.annotation.RepeatSubmit;
 import com.fs.common.constant.UserConstants;
@@ -53,6 +56,7 @@ public class CompanyUserController extends AppBaseController {
     private final IFsCourseRedPacketLogService courseRedPacketLogService;
     private final ICompanyUserChangeApplyService companyUserChangeApplyService;
     private final CompanyRoleMapper companyRoleMapper;
+    private final IAppService appService;
 
     @Login
     @ApiOperation("查询用户列表")
@@ -268,4 +272,32 @@ public class CompanyUserController extends AppBaseController {
         return R.ok().put("data", page);
     }
 
+    @Login
+    @ApiOperation("部门树列表")
+    @GetMapping("/deptList")
+    public R deptList() {
+        return R.ok().put("data", appService.getDeptTreeSelect(getCompanyId()));
+    }
+
+    @Login
+    @ApiOperation("岗位列表")
+    @GetMapping("/postList")
+    public R postList() {
+        return R.ok().put("data", appService.postList(getCompanyId()));
+    }
+
+    @Login
+    @ApiOperation("修改用户部门和岗位")
+    @PostMapping("/changeUserDeptAndPost")
+    public R changeUserDeptAndPost(@Valid @RequestBody ChangeUserDeptAndPostParam param) {
+        log.debug("changeUserDeptAndPost param: {}", JSON.toJSONString(param));
+
+        CompanyUser companyUser = companyUserService.selectCompanyUserByUserId(Long.parseLong(getUserId()));
+        if (!companyUser.isAdmin()) {
+            return R.error("没有权限");
+        }
+
+        appService.changeUserDeptAndPost(param);
+        return R.ok();
+    }
 }

+ 13 - 0
fs-company-app/src/main/java/com/fs/app/controller/UserController.java

@@ -11,6 +11,7 @@ import com.fs.app.param.LoginParam;
 import com.fs.app.utils.JwtUtils;
 import com.fs.app.vo.CompanyUserAppVO;
 import com.fs.app.vo.UserListVO;
+import com.fs.app.vo.UserPostVO;
 import com.fs.app.vo.UserVO;
 import com.fs.common.annotation.RepeatSubmit;
 import com.fs.common.config.FSConfig;
@@ -272,6 +273,7 @@ public class UserController extends AppBaseController {
         for (CompanyUserVO u : list) {
             UserVO vo = new UserVO();
             if (Objects.nonNull(u.getDept())) {
+                vo.setDeptId(u.getDept().getDeptId());
                 vo.setDeptName(u.getDept().getDeptName());
             }
             vo.setFirstLetter(PinYinUtil.cn2py(u.getNickName().substring(0, 1)));
@@ -284,6 +286,17 @@ public class UserController extends AppBaseController {
             vo.setStatus(u.getStatus());
             vo.setPhoneNumber(u.getPhonenumber());
             vo.setIsAudit(u.getIsAudit());
+
+            // 岗位信息
+            if (Objects.nonNull(u.getPosts())) {
+                vo.setPost(u.getPosts().stream().map(p -> {
+                    UserPostVO post = new UserPostVO();
+                    post.setPostId(p.getPostId());
+                    post.setPostName(p.getPostName());
+                    return post;
+                }).collect(Collectors.toList()));
+            }
+
             users.add(vo);
         }
         Map<Object, List<UserVO>> res = users.parallelStream().collect(

+ 0 - 5
fs-company-app/src/main/java/com/fs/app/controller/WxCompanyUserController.java

@@ -10,14 +10,10 @@ import com.fs.app.param.LoginMaWxParam;
 import com.fs.app.utils.JwtUtils;
 import com.fs.common.core.domain.R;
 import com.fs.common.core.redis.RedisCache;
-import com.fs.common.exception.CustomException;
-import com.fs.common.utils.IpUtil;
 import com.fs.common.utils.ServletUtils;
-import com.fs.company.domain.CompanyDept;
 import com.fs.company.domain.CompanyUser;
 import com.fs.company.service.ICompanyDeptService;
 import com.fs.company.service.ICompanyUserService;
-import com.fs.core.security.SecurityUtils;
 import com.fs.store.domain.FsUser;
 import com.fs.store.service.IFsUserService;
 import com.fs.wx.miniapp.config.WxMaConfiguration;
@@ -34,7 +30,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.Date;
-import java.util.Objects;
 
 @Api("微信小程序相关接口(暂废弃,后面再删除)")
 @RestController

+ 22 - 0
fs-company-app/src/main/java/com/fs/app/param/ChangeUserDeptAndPostParam.java

@@ -0,0 +1,22 @@
+package com.fs.app.param;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+@Data
+public class ChangeUserDeptAndPostParam {
+    /**
+     * 销售ID
+     */
+    @NotBlank(message = "销售ID不能为空")
+    private String companyUserIds;
+    /**
+     * 部门ID
+     */
+    private Long deptId;
+    /**
+     * 岗位ID
+     */
+    private String postIds;
+}

+ 31 - 0
fs-company-app/src/main/java/com/fs/app/service/IAppService.java

@@ -0,0 +1,31 @@
+package com.fs.app.service;
+
+import com.fs.app.param.ChangeUserDeptAndPostParam;
+import com.fs.app.vo.UserPostVO;
+import com.fs.company.domain.CompanyDeptTreeSelect;
+
+import java.util.List;
+
+
+public interface IAppService {
+
+    /**
+     * 修改用户部门和岗位
+     * @param param 参数
+     */
+    void changeUserDeptAndPost(ChangeUserDeptAndPostParam param);
+
+    /**
+     * 获取公司部门树
+     * @param companyId 公司ID
+     * @return  list
+     */
+    List<CompanyDeptTreeSelect> getDeptTreeSelect(Long companyId);
+
+    /**
+     * 获取公司岗位列表
+     * @param companyId 公司ID
+     * @return list
+     */
+    List<UserPostVO> postList(Long companyId);
+}

+ 119 - 0
fs-company-app/src/main/java/com/fs/app/service/impl/AppServiceImpl.java

@@ -0,0 +1,119 @@
+package com.fs.app.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.fs.app.param.ChangeUserDeptAndPostParam;
+import com.fs.app.service.IAppService;
+import com.fs.app.vo.UserPostVO;
+import com.fs.common.exception.CustomException;
+import com.fs.common.utils.StringUtils;
+import com.fs.company.domain.*;
+import com.fs.company.service.ICompanyDeptService;
+import com.fs.company.service.ICompanyPostService;
+import com.fs.company.service.ICompanyUserPostService;
+import com.fs.company.service.ICompanyUserService;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+@Service
+@Slf4j
+@AllArgsConstructor
+public class AppServiceImpl implements IAppService {
+
+    private final ICompanyUserService companyUserService;
+    private final ICompanyDeptService companyDeptService;
+    private final ICompanyPostService companyPostService;
+    private final ICompanyUserPostService companyUserPostService;
+
+    /**
+     * 修改用户部门和岗位
+     * @param param 参数
+     */
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void changeUserDeptAndPost(ChangeUserDeptAndPostParam param) {
+        log.debug("change user dept and post param: {}", JSON.toJSONString(param));
+        Set<Long> companyUserIds = Arrays.stream(param.getCompanyUserIds().split(",")).map(Long::new).collect(Collectors.toSet());
+
+        List<CompanyUser> companyUsers = companyUserService.selectCompanyUserByIds(companyUserIds);
+        if (Objects.isNull(companyUsers) || companyUsers.isEmpty()) {
+            throw new CustomException("销售不存在");
+        }
+
+        // 修改部门
+        if (Objects.nonNull(param.getDeptId())) {
+            CompanyDept companyDept = companyDeptService.selectCompanyDeptById(param.getDeptId());
+            if (Objects.isNull(companyDept)) {
+                throw new CustomException("部门不存在");
+            }
+
+            companyUsers.forEach(companyUser -> {
+                companyUser.setDeptId(param.getDeptId());
+                companyUserService.updateCompanyUser(companyUser);
+            });
+        }
+
+        // 修改岗位
+        if (StringUtils.isNotBlank(param.getPostIds())) {
+            List<Long> postIds = Arrays.stream(param.getPostIds().split(",")).map(Long::new).collect(Collectors.toList());
+            List<CompanyPost> companyPosts =  companyPostService.selectCompanyPostByIds(postIds);
+            if (Objects.nonNull(companyPosts) && !companyPosts.isEmpty()) {
+                companyUsers.forEach(companyUser -> {
+                    companyUserPostService.deleteCompanyUserPostById(companyUser.getUserId());
+                    companyUserPostService.batchInsertCompanyUserPost(companyPosts.stream().map(p -> {
+                        CompanyUserPost companyUserPost = new CompanyUserPost();
+                        companyUserPost.setPostId(p.getPostId());
+                        companyUserPost.setUserId(companyUser.getUserId());
+                        return companyUserPost;
+                    }).collect(Collectors.toList()));
+                });
+            }
+        }
+    }
+
+    /**
+     * 获取公司部门树
+     * @param companyId 公司ID
+     * @return  list
+     */
+    @Override
+    public List<CompanyDeptTreeSelect> getDeptTreeSelect(Long companyId) {
+        log.debug("getDeptTreeSelect companyId: {}", companyId);
+        if (Objects.isNull(companyId)) {
+            throw new CustomException("获取companyId失败, 请重新登录");
+        }
+        CompanyDept dept = new CompanyDept();
+        dept.setCompanyId(companyId);
+        dept.setStatus("0");
+        List<CompanyDept> depts = companyDeptService.selectCompanyDeptList(dept);
+        return companyDeptService.buildDeptTreeSelect(depts);
+    }
+
+    /**
+     * 获取公司岗位列表
+     * @param companyId 公司ID
+     * @return list
+     */
+    @Override
+    public List<UserPostVO> postList(Long companyId) {
+        log.debug("postList companyId: {}", companyId);
+        if (Objects.isNull(companyId)) {
+            throw new CustomException("获取companyId失败, 请重新登录");
+        }
+        CompanyPost companyPost = new CompanyPost();
+        companyPost.setCompanyId(companyId);
+        return companyPostService.selectCompanyPostList(companyPost).stream().map(p -> {
+            UserPostVO userPostVO = new UserPostVO();
+            userPostVO.setPostId(p.getPostId());
+            userPostVO.setPostName(p.getPostName());
+            return userPostVO;
+        }).collect(Collectors.toList());
+    }
+}

+ 17 - 0
fs-company-app/src/main/java/com/fs/app/vo/UserPostVO.java

@@ -0,0 +1,17 @@
+package com.fs.app.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class UserPostVO {
+    /**
+     * 岗位ID
+     */
+    private Long postId;
+    /**
+     * 岗位名称
+     */
+    private String postName;
+}

+ 5 - 0
fs-company-app/src/main/java/com/fs/app/vo/UserVO.java

@@ -5,12 +5,15 @@ import lombok.Getter;
 import lombok.Setter;
 
 import java.time.LocalDate;
+import java.util.List;
 
 @Getter
 @Setter
 public class UserVO {
     String nickName;
     String firstLetter;
+    // 部门ID
+    private Long deptId;
     String deptName;
     Long userId;
     String avatar;
@@ -24,4 +27,6 @@ public class UserVO {
     private String phoneNumber;
     // 审核状态 0未审核 1已审核
     private Integer isAudit;
+    // 岗位
+    private List<UserPostVO> post;
 }

+ 7 - 0
fs-service-system/src/main/java/com/fs/company/mapper/CompanyPostMapper.java

@@ -70,4 +70,11 @@ public interface CompanyPostMapper
     List<Integer> selectPostListByUserId(Long userId);
     @Select("select p.post_name from company_user_post up left join company_post p on p.post_id=up.post_id where up.user_id=#{userId}  ")
     List<String> selectPostNameListByUserId(Long userId);
+
+    /**
+     * 根据ID集合查询岗位列表
+     * @param postIds   id集合
+     * @return  list
+     */
+    List<CompanyPost> selectCompanyPostByIds(@Param("postIds") List<Long> postIds);
 }

+ 7 - 0
fs-service-system/src/main/java/com/fs/company/service/ICompanyPostService.java

@@ -65,4 +65,11 @@ public interface ICompanyPostService
     List<Integer> selectPostListByUserId(Long userId);
 
     List<String> selectPostNameListByUserId(Long userId);
+
+    /**
+     * 根据id集合查询岗位列表
+     * @param postIds   id集合
+     * @return  list
+     */
+    List<CompanyPost> selectCompanyPostByIds(List<Long> postIds);
 }

+ 6 - 0
fs-service-system/src/main/java/com/fs/company/service/ICompanyUserPostService.java

@@ -59,4 +59,10 @@ public interface ICompanyUserPostService
      * @return 结果
      */
     public int deleteCompanyUserPostById(Long userId);
+
+    /**
+     * 批量新增用户岗位
+     * @param companyUserPosts 岗位信息
+     */
+    void batchInsertCompanyUserPost(List<CompanyUserPost> companyUserPosts);
 }

+ 10 - 0
fs-service-system/src/main/java/com/fs/company/service/impl/CompanyPostServiceImpl.java

@@ -109,4 +109,14 @@ public class CompanyPostServiceImpl implements ICompanyPostService
     public List<String> selectPostNameListByUserId(Long userId) {
         return companyPostMapper.selectPostNameListByUserId(userId);
     }
+
+    /**
+     * 根据id集合查询岗位列表
+     * @param postIds   id集合
+     * @return  list
+     */
+    @Override
+    public List<CompanyPost> selectCompanyPostByIds(List<Long> postIds) {
+        return companyPostMapper.selectCompanyPostByIds(postIds);
+    }
 }

+ 9 - 0
fs-service-system/src/main/java/com/fs/company/service/impl/CompanyUserPostServiceImpl.java

@@ -91,4 +91,13 @@ public class CompanyUserPostServiceImpl implements ICompanyUserPostService
     {
         return companyUserPostMapper.deleteCompanyUserPostById(userId);
     }
+
+    /**
+     * 批量新增用户岗位
+     * @param companyUserPosts 岗位信息
+     */
+    @Override
+    public void batchInsertCompanyUserPost(List<CompanyUserPost> companyUserPosts) {
+        companyUserPostMapper.batchUserPost(companyUserPosts);
+    }
 }

+ 12 - 0
fs-service-system/src/main/resources/mapper/company/CompanyPostMapper.xml

@@ -117,4 +117,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 			 left join company_user u on u.user_id = up.user_id
 		where u.user_id = #{user_id}
 	</select>
+
+    <select id="selectCompanyPostByIds" resultType="com.fs.company.domain.CompanyPost">
+        <include refid="selectCompanyPostVo"/>
+        <where>
+            <if test="postIds != null">
+                post_id in
+                <foreach collection="postIds" item="id" open="(" close=")" separator=",">
+                    #{id}
+                </foreach>
+            </if>
+        </where>
+    </select>
 </mapper>