龚焕茏
2024-05-07 49429bad1036c81c056faeadfa009c53ba777fad
src/main/java/com/mindskip/xzs/controller/admin/DepartmentController.java
@@ -5,38 +5,71 @@
import com.mindskip.xzs.base.RestResponse;
import com.mindskip.xzs.domain.Department;
import com.mindskip.xzs.domain.User;
import com.mindskip.xzs.domain.UserDepartment;
import com.mindskip.xzs.domain.vo.BaseSelect;
import com.mindskip.xzs.domain.vo.DepartmentVO;
import com.mindskip.xzs.domain.vo.UpdateDeptAdminVO;
import com.mindskip.xzs.domain.vo.UserVO;
import com.mindskip.xzs.repository.DepartmentMapper;
import com.mindskip.xzs.repository.UserDepartmentMapper;
import com.mindskip.xzs.service.DepartmentService;
import com.mindskip.xzs.service.UserService;
import com.mindskip.xzs.utility.PageInfoHelper;
import com.mindskip.xzs.viewmodel.admin.department.DepartmentResponseVM;
import com.mindskip.xzs.viewmodel.admin.user.UserPageRequestVM;
import com.mindskip.xzs.viewmodel.admin.user.UserResponseVM;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@RestController("AdminDepartmentController")
@RequestMapping("/api/admin/department")
@RequiredArgsConstructor
public class DepartmentController extends BaseApiController {
    private final DepartmentService departmentService;
    private final UserService userService;
    private final UserDepartmentMapper userDepartmentMapper;
    private final DepartmentMapper departmentMapper;
    @Autowired
    public DepartmentController(DepartmentService departmentService) {
        this.departmentService = departmentService;
    /**
     * 获取部门下用户列表(下拉)
     * @param deptId
     * @return
     */
    @GetMapping("/{id}/user-list")
    public RestResponse<List<BaseSelect>> getDeptUserList(@PathVariable("id") Integer deptId) {
        List<BaseSelect> data = departmentService.getDeptUserList(deptId);
        return RestResponse.ok(data);
    }
    @PostMapping("/update-admin")
    public RestResponse updateAdmin(@RequestBody UpdateDeptAdminVO form) {
        departmentService.updateAdmin(form);
        return RestResponse.ok();
    }
    @RequestMapping(value = "/list", method = RequestMethod.POST)
    public RestResponse<List<Department>> getAll(){
        List<Department> res = departmentService.gets(-1);
        return RestResponse.ok(res);
    }
    @RequestMapping(value = "/page/list", method = RequestMethod.POST)
    public RestResponse<PageInfo<DepartmentResponseVM>> pageList(@RequestBody DepartmentResponseVM model) {
        PageInfo<Department> pageInfo = departmentService.gets(model);
        PageInfo<DepartmentResponseVM> page = PageInfoHelper.copyMap(pageInfo, q -> {
            DepartmentResponseVM vm = modelMapper.map(q,DepartmentResponseVM.class);
            return vm;
        });
        return RestResponse.ok(page);
        PageInfo<DepartmentResponseVM> pageInfo = departmentService.gets(model);
        return RestResponse.ok(pageInfo);
    }
    @RequestMapping(value = "/add", method = RequestMethod.POST)
@@ -53,4 +86,37 @@
    public RestResponse update(@PathVariable Integer id) {
        return RestResponse.ok(departmentService.getById(id));
    }
    @RequestMapping(value = "/getUserByDepartment/{id}", method = RequestMethod.POST)
    public RestResponse<List<User>> getUserByDepartment(@PathVariable Integer id){
        return RestResponse.ok(userService.getUserByLevel(id));
    }
    @RequestMapping(value = "/getDepartmentUser", method = RequestMethod.POST)
    public RestResponse<List<DepartmentVO>> getUserDepartment(){
        User currentUser = webContext.getCurrentUser();
        Integer deptId = null;
        if (Objects.nonNull(currentUser)) {
            // 如果是部门管理员,需要做数据权限
            if ("1".equals(currentUser.getDeptAdmin())) {
                deptId = departmentMapper.selectByAdminId(currentUser.getId());
            }
        }
        List<DepartmentVO> res = departmentService.gets(deptId)
                .stream().map(e->{
                    DepartmentVO departmentVO = new DepartmentVO();
                    List<UserDepartment> userDepartments = userDepartmentMapper.selectByDepartmentId(e.getId());
                    List<User> list = new ArrayList<>();
                    for (UserDepartment userDepartment : userDepartments) {
                        User user = userService.getUserById(userDepartment.getUserId());
                        if (ObjectUtils.isNotEmpty(user)) {
                            list.add(user);
                        }
                    }
                    departmentVO.setUserList(list);
                    departmentVO.setDepartment(e);
                    return departmentVO;
                }).collect(Collectors.toList());
        return RestResponse.ok(res);
    }
}