123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413 |
- package com.hssx.cloudmodel.service.impl;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.github.pagehelper.PageHelper;
- import com.github.pagehelper.PageInfo;
- import com.hssx.cloudmodel.constant.Constant;
- import com.hssx.cloudmodel.entity.*;
- import com.hssx.cloudmodel.entity.vo.MouldVO;
- import com.hssx.cloudmodel.entity.vo.UserVO;
- import com.hssx.cloudmodel.mapper.*;
- import com.hssx.cloudmodel.service.UserService;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import com.hssx.cloudmodel.util.HttpRespMsg;
- import com.hssx.cloudmodel.util.ListUtil;
- import com.hssx.cloudmodel.util.MD5Util;
- import com.hssx.cloudmodel.util.PageUtil;
- import org.springframework.beans.BeanUtils;
- import org.springframework.stereotype.Service;
- import javax.annotation.Resource;
- import javax.servlet.http.HttpServletRequest;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.UUID;
- /**
- * @author 吴涛涛
- * @since 2019-07-26
- */
- @Service
- public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
- @Resource
- UserMapper userMapper;
- @Resource
- CompanyMapper companyMapper;
- @Resource
- UserCompanyMapper userCompanyMapper;
- @Resource
- ProjectUserMapper projectUserMapper;
- @Resource
- ProjectMapper projectMapper;
- @Resource
- ProjectApproveMapper projectApproveMapper;
- @Override
- public HttpRespMsg login(UserVO userVO, HttpServletRequest request) {
- System.out.println("user" + userVO);
- HttpRespMsg msg = new HttpRespMsg();
- //验证用户名是否存在
- QueryWrapper<User> qw = new QueryWrapper<>();
- qw.eq("account", userVO.getAccount());
- Integer count = userMapper.selectCount(qw);
- //验证用户名是否正确
- if (count > 0) {
- UserVO newUser = userMapper.getUserByAccount(userVO);
- //验证密码是否正确
- if (MD5Util.getPassword(userVO.getPassword()).equals(newUser.getPassword())) {
- newUser.setPassword("");
- //判断该用户是否为某个项目的项目经理
- if (projectMapper.selectCount(new QueryWrapper<Project>().eq("manager_id", newUser.getId())) > 0) {
- newUser.setIsManager(1);
- }
- msg.data = newUser;
- } else {
- msg.setError("密码错误");
- }
- } else {
- msg.setError("账号不存在");
- }
- return msg;
- }
- @Override
- public HttpRespMsg pageList(PageUtil page, Integer companyId, Integer flag, String keyName, User user, Integer roleType) {
- HttpRespMsg msg = new HttpRespMsg();
- PageHelper.startPage(page.getPageNum(), page.getPageSize());
- List<UserVO> users = userMapper.selectListByCondition(roleType, companyId, flag, user, keyName);
- List<Project> projects = new ArrayList<>();
- for (UserVO userVO : users) {
- List<Integer> set = new ArrayList<>();
- set.add(-1);
- List<MouldVO> moulds = new ArrayList<>();
- if (userVO.getId() != null) {
- QueryWrapper<Project> qw = new QueryWrapper<>();
- if (Constant.SYS_PARENT_ID == userVO.getParentId()) {
- //系统超级管理员,可获得所有项目
- projects = projectMapper.selectList(qw);
- for (Project project : projects) {
- set.add(project.getId());
- }
- } else if (Constant.SYS_ID == userVO.getParentId()) {
- //资产方管理员,看到自己创建的项目
- qw.select("id").eq("creator_id", user.getId());
- projects = projectMapper.selectList(qw);
- for (Project project : projects) {
- set.add(project.getId());
- }
- } else {
- QueryWrapper<Project> qwPro = new QueryWrapper<>();
- qwPro.eq("manager_id", user.getId());
- List<Project> projectList = projectMapper.selectList(qwPro);
- for (Project project : projectList) {
- set.add(project.getId());
- }
- //项目经理或者普通用户
- List<ProjectUser> projectUsers = projectUserMapper.selectList(new QueryWrapper<ProjectUser>().eq("user_id", user.getId()));
- for (ProjectUser projectUser : projectUsers) {
- set.add(projectUser.getProjectId());
- }
- //作为审批人
- List<ProjectApprove> projectApproves = projectApproveMapper.selectList(new QueryWrapper<ProjectApprove>().eq("approver_id", userVO.getId()));
- for (ProjectApprove projectApprove : projectApproves) {
- set.add(projectApprove.getProjectId());
- }
- qw.in("id", set);
- projects = projectMapper.selectList(qw);
- }
- userVO.setProjects(projects);
- } else {
- msg.setError("当前用户未登录,或者用户不存在");
- }
- }
- PageInfo<UserVO> pageInfos = new PageInfo<>(users);
- msg.data = pageInfos;
- return msg;
- }
- @Override
- public HttpRespMsg deleteUser(User user) {
- HttpRespMsg msg = new HttpRespMsg();
- QueryWrapper<ProjectUser> qw = new QueryWrapper<>();
- qw.eq("user_id", user.getId());
- //普通用户应用到项目不能删除
- Integer count = projectUserMapper.selectCount(qw);
- if (count > 0) {
- msg.setError("该用户已被应用到项目,暂不提供删除操作");
- return msg;
- }
- //是项目经理不能删除
- Integer countProject = projectMapper.selectCount(new QueryWrapper<Project>().eq("manager_id", user.getId()));
- if (countProject > 0) {
- msg.setError("该用户已被应用到项目,暂不提供删除操作");
- return msg;
- }
- //删除用户
- userMapper.deleteById(user.getId());
- //删除合作的公司
- userCompanyMapper.delete(new QueryWrapper<UserCompany>().eq("user_id", user.getId()));
- return msg;
- }
- @Override
- public HttpRespMsg changeUserInfo(User user) {
- HttpRespMsg msg = new HttpRespMsg();
- User newUser = new User();
- newUser.setId(user.getId());
- if (null != user.getPassword()) {
- newUser.setPassword(MD5Util.getPassword(user.getPassword()));
- }
- if(null != user.getUsername()){
- newUser.setUsername(user.getUsername());
- }
- userMapper.updateById(newUser);
- return msg;
- }
- @Override
- public HttpRespMsg addAndUpdateUser(User user, Integer flag, Integer addType, String projectIds) {
- //获取该账号的创建者
- User parentUser = userMapper.selectById(user.getParentId());
- HttpRespMsg msg = new HttpRespMsg();
- if (Constant.SYS_PARENT_ID == parentUser.getParentId()) {
- //此时是创建admind,当前创建人是超级管理员,此时没有项目id
- int count = userMapper.selectCount(new QueryWrapper<User>().eq("company_id", user.getCompanyId()).eq("parent_id", parentUser.getId()));
- if (flag == 0) {
- if (count > 0) {
- //所选公司下的admin已存在
- msg.setError("该公司下的管理员已存在");
- return msg;
- }
- //添加用户
- QueryWrapper<User> qw = new QueryWrapper<>();
- qw.eq("account", user.getAccount());
- count = userMapper.selectCount(qw);
- if (count > 0) {
- User existingUser = userMapper.selectOne(qw);
- msg.setError("当前账号已存在");
- return msg;
- } else {
- //创建账号默认密码"000000"
- user.setPassword(MD5Util.getPassword(Constant.DEFAULT_PWD));
- user.setHeadImgurl(UUID.randomUUID().toString().replaceAll("-", ""));
- //获取角色所属的团体
- Company company = companyMapper.selectById(user.getCompanyId());
- if (Constant.ASSETS_COMPANY == company.getCompanyType()) {
- user.setSubordinateType(Constant.ASSETS_COMPANY);
- user.setTeamName("资产方");
- } else if (Constant.PRODUCER_COMPANY == company.getCompanyType()) {
- user.setSubordinateType(Constant.PRODUCER_COMPANY);
- user.setTeamName("生产方");
- }
- userMapper.insert(user);
- if (addType != null) {
- if (addType == 0) {
- Company com = new Company();
- com.setId(user.getCompanyId());
- com.setAdministrator(user.getUsername());
- com.setAdministratorId(user.getId());
- companyMapper.updateById(com);
- }
- }
- }
- } else if (flag == 1) {
- //更新角色信息
- Company company = companyMapper.selectById(user.getCompanyId());
- if (Constant.ASSETS_COMPANY == company.getCompanyType()) {
- user.setSubordinateType(Constant.ASSETS_COMPANY);
- user.setTeamName("资产方");
- } else if (Constant.PRODUCER_COMPANY == company.getCompanyType()) {
- user.setSubordinateType(Constant.PRODUCER_COMPANY);
- user.setTeamName("生产方");
- }
- userMapper.updateById(user);
- }
- } else if (Constant.SYS_ID == parentUser.getParentId()) {
- //admin创建用户
- if (flag == 0) {
- //添加用户
- QueryWrapper<User> qw = new QueryWrapper<>();
- qw.eq("account", user.getAccount());
- int count = userMapper.selectCount(qw);
- if (count > 0) {
- User existingUser = userMapper.selectOne(qw);
- if (existingUser.getParentId() == parentUser.getId()) {
- msg.setError("该账号已存在,请勿重新创建");
- return msg;
- } else {
- //此时用户已经有了,则建立一条合作公司的关系
- UserCompany userCompany = new UserCompany();
- userCompany.setUserId(existingUser.getId());
- userCompany.setBelongCompanyId(existingUser.getCompanyId());
- userCompany.setCooperationCompanyId(parentUser.getCompanyId());
- QueryWrapper<UserCompany> qWra = new QueryWrapper<>(userCompany);
- int userCompanyCount = userCompanyMapper.selectCount(qWra);
- if (userCompanyCount == 0) {
- userCompanyMapper.insert(userCompany);
- }
- //添加项目参与人记录
- if (projectIds != null) {
- List<Integer> ids = ListUtil.convertIntegerIdsArrayToList(projectIds);
- ids.stream().forEach(e ->{
- ProjectUser projectUser = new ProjectUser();
- projectUser.setProjectId(e);
- projectUser.setSubordinate(existingUser.getCompanyId());
- projectUser.setUserId(existingUser.getId());
- projectUser.setSubordinateType(existingUser.getSubordinateType());
- projectUserMapper.insert(projectUser);
- });
- }
- }
- } else {
- //创建账号默认密码"000000"
- user.setPassword(MD5Util.getPassword(Constant.DEFAULT_PWD));
- user.setHeadImgurl(UUID.randomUUID().toString().replaceAll("-", ""));
- //获取角色所属的团体
- Company company = companyMapper.selectById(user.getCompanyId());
- if (Constant.ASSETS_COMPANY == company.getCompanyType()) {
- user.setSubordinateType(Constant.ASSETS_COMPANY);
- user.setTeamName("资产方");
- } else if (Constant.PRODUCER_COMPANY == company.getCompanyType()) {
- user.setSubordinateType(Constant.PRODUCER_COMPANY);
- user.setTeamName("生产方");
- }
- userMapper.insert(user);
- UserCompany userCompany = new UserCompany();
- userCompany.setUserId(user.getId());
- userCompany.setBelongCompanyId(user.getCompanyId());
- userCompany.setCooperationCompanyId(parentUser.getCompanyId());
- QueryWrapper<UserCompany> qWra = new QueryWrapper<>(userCompany);
- int userCompanyCount = userCompanyMapper.selectCount(qWra);
- if (userCompanyCount == 0) {
- userCompanyMapper.insert(userCompany);
- }
- //添加项目参与人记录
- if (projectIds != null) {
- List<Integer> ids = ListUtil.convertIntegerIdsArrayToList(projectIds);
- ids.stream().forEach(e ->{
- ProjectUser projectUser = new ProjectUser();
- projectUser.setProjectId(e);
- projectUser.setSubordinate(user.getCompanyId());
- projectUser.setUserId(user.getId());
- projectUser.setSubordinateType(user.getSubordinateType());
- projectUserMapper.insert(projectUser);
- });
- }
- }
- } else if (flag == 1) {
- //更新角色信息
- Company company = companyMapper.selectById(user.getCompanyId());
- if (Constant.ASSETS_COMPANY == company.getCompanyType()) {
- user.setSubordinateType(Constant.ASSETS_COMPANY);
- user.setTeamName("资产方");
- } else if (Constant.PRODUCER_COMPANY == company.getCompanyType()) {
- user.setSubordinateType(Constant.PRODUCER_COMPANY);
- user.setTeamName("生产方");
- }
- userMapper.updateById(user);
- }
- } else {
- //此时是项目经理创建人员
- //查询创建该项目经理的人
- User managerParent = userMapper.selectOne(new QueryWrapper<User>().eq("id", parentUser.getParentId()));
- if (flag == 0) {
- //添加用户
- QueryWrapper<User> qw = new QueryWrapper<>();
- qw.eq("account", user.getAccount());
- int count = userMapper.selectCount(qw);
- if (count > 0) {
- //当前账号已被创建
- User existingUser = userMapper.selectOne(qw);
- //查询该账号是否已参与创建项目经理的admin公司下的项目
- //得到admin公司下的所有项目
- List<Project> projects = projectMapper.selectList(new QueryWrapper<Project>().eq("owner_company", managerParent.getCompanyId()));
- List<Integer> ids = new ArrayList<>();
- ids.add(-1);
- for (Project project : projects) {
- ids.add(project.getId());
- }
- List<ProjectUser> projectUsers = projectUserMapper.selectList(new QueryWrapper<ProjectUser>().in("project_id", ids).eq("user_id", existingUser.getId()));
- if (projectUsers.size() > 0) {
- msg.setError("该账号已参与本资产方公司下的其他项目,请前往本项目详情添加即可");
- return msg;
- }
- List<ProjectApprove> projectApproves = projectApproveMapper.selectList(new QueryWrapper<ProjectApprove>().eq("approver_id", existingUser.getId()).in("project_id", ids));
- if (projectApproves.size() > 0) {
- msg.setError("该账号已参与本资产方公司下的其他项目,请前往本项目详情添加即可");
- return msg;
- }
- //此时用户已经有了,创建人不是该忍之前参与过的项目的公司下的项目经理创建,则建立一条合作公司的关系
- UserCompany userCompany = new UserCompany();
- userCompany.setUserId(existingUser.getId());
- userCompany.setBelongCompanyId(existingUser.getCompanyId());
- userCompany.setCooperationCompanyId(managerParent.getCompanyId());
- QueryWrapper<UserCompany> qWra = new QueryWrapper<>(userCompany);
- int userCompanyCount = userCompanyMapper.selectCount(qWra);
- if (userCompanyCount == 0) {
- userCompanyMapper.insert(userCompany);
- }
- //添加项目参与人记录
- if (projectIds != null) {
- ids = ListUtil.convertIntegerIdsArrayToList(projectIds);
- ids.stream().forEach(e ->{
- ProjectUser projectUser = new ProjectUser();
- projectUser.setProjectId(e);
- projectUser.setSubordinate(existingUser.getCompanyId());
- projectUser.setUserId(existingUser.getId());
- projectUser.setSubordinateType(existingUser.getSubordinateType());
- projectUserMapper.insert(projectUser);
- });
- }
- } else {
- //创建账号默认密码"000000"
- user.setPassword(MD5Util.getPassword(Constant.DEFAULT_PWD));
- user.setHeadImgurl(UUID.randomUUID().toString().replaceAll("-", ""));
- //获取角色所属的团体
- Company company = companyMapper.selectById(user.getCompanyId());
- if (Constant.ASSETS_COMPANY == company.getCompanyType()) {
- user.setSubordinateType(Constant.ASSETS_COMPANY);
- user.setTeamName("资产方");
- } else if (Constant.PRODUCER_COMPANY == company.getCompanyType()) {
- user.setSubordinateType(Constant.PRODUCER_COMPANY);
- user.setTeamName("生产方");
- }
- userMapper.insert(user);
- UserCompany userCompany = new UserCompany();
- userCompany.setUserId(user.getId());
- userCompany.setBelongCompanyId(user.getCompanyId());
- userCompany.setCooperationCompanyId(managerParent.getCompanyId());
- QueryWrapper<UserCompany> qWra = new QueryWrapper<>(userCompany);
- int userCompanyCount = userCompanyMapper.selectCount(qWra);
- if (userCompanyCount == 0) {
- userCompanyMapper.insert(userCompany);
- }
- //添加项目参与人记录
- if (projectIds != null) {
- List<Integer> ids = ListUtil.convertIntegerIdsArrayToList(projectIds);
- ids.stream().forEach(e ->{
- ProjectUser projectUser = new ProjectUser();
- projectUser.setProjectId(e);
- projectUser.setSubordinate(user.getCompanyId());
- projectUser.setUserId(user.getId());
- projectUser.setSubordinateType(user.getSubordinateType());
- projectUserMapper.insert(projectUser);
- });
- }
- }
- } else if (flag == 1) {
- //更新角色信息
- Company company = companyMapper.selectById(user.getCompanyId());
- if (Constant.ASSETS_COMPANY == company.getCompanyType()) {
- user.setSubordinateType(Constant.ASSETS_COMPANY);
- user.setTeamName("资产方");
- } else if (Constant.PRODUCER_COMPANY == company.getCompanyType()) {
- user.setSubordinateType(Constant.PRODUCER_COMPANY);
- user.setTeamName("生产方");
- }
- userMapper.updateById(user);
- }
- }
- return msg;
- }
- }
|