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.MD5Util; import com.hssx.cloudmodel.util.PageUtil; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; 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 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 qw = new QueryWrapper<>(); qw.eq("account", userVO.getAccount()); Integer count = userMapper.selectCount(qw); //验证用户名是否正确 if (count > 0) { User newUser = userMapper.selectOne(qw); //验证密码是否正确 if (MD5Util.getPassword(userVO.getPassword()).equals(newUser.getPassword())) { newUser.setPassword(""); BeanUtils.copyProperties(newUser, userVO); //判断该用户是否为某个项目的项目经理 if (projectMapper.selectCount(new QueryWrapper().eq("manager_id", newUser.getId())) > 0) { userVO.setIsManager(1); } msg.data = userVO; } 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 users = userMapper.selectListByCondition(roleType, companyId, flag, user, keyName); List projects = new ArrayList<>(); for (UserVO userVO : users) { List set = new ArrayList<>(); set.add(-1); List moulds = new ArrayList<>(); if (userVO.getId() != null) { QueryWrapper 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 qwPro = new QueryWrapper<>(); qwPro.eq("manager_id", user.getId()); List projectList = projectMapper.selectList(qw); for (Project project : projectList) { set.add(project.getId()); } //项目经理或者普通用户 List projectUsers = projectUserMapper.selectList(new QueryWrapper().eq("user_id", user.getId())); for (ProjectUser projectUser : projectUsers) { set.add(projectUser.getProjectId()); } //作为审批人 List projectApproves = projectApproveMapper.selectList(new QueryWrapper().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 pageInfos = new PageInfo<>(users); msg.data = pageInfos; return msg; } @Override public HttpRespMsg deleteUser(User user) { HttpRespMsg msg = new HttpRespMsg(); QueryWrapper 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().eq("manager_id", user.getId())); if (countProject > 0) { msg.setError("该用户已被应用到项目,暂不提供删除操作"); return msg; } //删除用户 userMapper.deleteById(user.getId()); //删除合作的公司 userCompanyMapper.delete(new QueryWrapper().eq("user_id", user.getId())); return msg; } @Override public HttpRespMsg addAndUpdateUser(User user, Integer flag, Integer addType) { //获取该账号的创建者 User parentUser = userMapper.selectById(user.getParentId()); HttpRespMsg msg = new HttpRespMsg(); if (Constant.SYS_PARENT_ID == parentUser.getParentId()) { //此时是创建admind,当前创建人是超级管理员 int count = userMapper.selectCount(new QueryWrapper().eq("company_id", user.getCompanyId()).eq("parent_id", parentUser.getId())); if (flag == 0) { if (count > 0) { //所选公司下的admin已存在 msg.setError("该公司下的管理员已存在"); return msg; } //添加用户 QueryWrapper 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 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 qWra = new QueryWrapper<>(userCompany); int userCompanyCount = userCompanyMapper.selectCount(qWra); if (userCompanyCount == 0) { userCompanyMapper.insert(userCompany); } } } 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 qWra = new QueryWrapper<>(userCompany); int userCompanyCount = userCompanyMapper.selectCount(qWra); if (userCompanyCount == 0) { userCompanyMapper.insert(userCompany); } } } 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().eq("id", parentUser.getParentId())); if (flag == 0) { //添加用户 QueryWrapper qw = new QueryWrapper<>(); qw.eq("account", user.getAccount()); int count = userMapper.selectCount(qw); if (count > 0) { //当前账号已被创建 User existingUser = userMapper.selectOne(qw); //判断创建该账号的是admin或者是项目经理自己创建的账号,如果再次创建直接提示创建重复 if (existingUser.getParentId() == managerParent.getId() || existingUser.getParentId() == parentUser.getId()) { msg.setError("该账号已存在,请勿重新创建"); return msg; } else { //此时用户已经有了,则建立一条合作公司的关系 UserCompany userCompany = new UserCompany(); userCompany.setUserId(existingUser.getId()); userCompany.setBelongCompanyId(existingUser.getCompanyId()); userCompany.setCooperationCompanyId(managerParent.getCompanyId()); QueryWrapper qWra = new QueryWrapper<>(userCompany); int userCompanyCount = userCompanyMapper.selectCount(qWra); if (userCompanyCount == 0) { userCompanyMapper.insert(userCompany); } } } 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 qWra = new QueryWrapper<>(userCompany); int userCompanyCount = userCompanyMapper.selectCount(qWra); if (userCompanyCount == 0) { userCompanyMapper.insert(userCompany); } } } 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; } }