UserServiceImpl.java 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344
  1. package com.hssx.cloudmodel.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.github.pagehelper.PageHelper;
  4. import com.github.pagehelper.PageInfo;
  5. import com.hssx.cloudmodel.constant.Constant;
  6. import com.hssx.cloudmodel.entity.*;
  7. import com.hssx.cloudmodel.entity.vo.MouldVO;
  8. import com.hssx.cloudmodel.entity.vo.UserVO;
  9. import com.hssx.cloudmodel.mapper.*;
  10. import com.hssx.cloudmodel.service.UserService;
  11. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  12. import com.hssx.cloudmodel.util.HttpRespMsg;
  13. import com.hssx.cloudmodel.util.MD5Util;
  14. import com.hssx.cloudmodel.util.PageUtil;
  15. import org.springframework.beans.BeanUtils;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.stereotype.Service;
  18. import javax.annotation.Resource;
  19. import javax.servlet.http.HttpServletRequest;
  20. import java.util.ArrayList;
  21. import java.util.List;
  22. import java.util.UUID;
  23. /**
  24. * <p>
  25. * 服务实现类
  26. * </p>
  27. *
  28. * @author 吴涛涛
  29. * @since 2019-07-26
  30. */
  31. @Service
  32. public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
  33. @Resource
  34. UserMapper userMapper;
  35. @Resource
  36. CompanyMapper companyMapper;
  37. @Resource
  38. UserCompanyMapper userCompanyMapper;
  39. @Resource
  40. ProjectUserMapper projectUserMapper;
  41. @Resource
  42. ProjectMapper projectMapper;
  43. @Resource
  44. ProjectApproveMapper projectApproveMapper;
  45. @Override
  46. public HttpRespMsg login(UserVO userVO, HttpServletRequest request) {
  47. System.out.println("user" + userVO);
  48. HttpRespMsg msg = new HttpRespMsg();
  49. //验证用户名是否存在
  50. QueryWrapper<User> qw = new QueryWrapper<>();
  51. qw.eq("account", userVO.getAccount());
  52. Integer count = userMapper.selectCount(qw);
  53. //验证用户名是否正确
  54. if (count > 0) {
  55. User newUser = userMapper.selectOne(qw);
  56. //验证密码是否正确
  57. if (MD5Util.getPassword(userVO.getPassword()).equals(newUser.getPassword())) {
  58. newUser.setPassword("");
  59. BeanUtils.copyProperties(newUser, userVO);
  60. //判断该用户是否为某个项目的项目经理
  61. if (projectMapper.selectCount(new QueryWrapper<Project>().eq("manager_id", newUser.getId())) > 0) {
  62. userVO.setIsManager(1);
  63. }
  64. msg.data = userVO;
  65. } else {
  66. msg.setError("密码错误");
  67. }
  68. } else {
  69. msg.setError("账号不存在");
  70. }
  71. return msg;
  72. }
  73. @Override
  74. public HttpRespMsg pageList(PageUtil page, Integer companyId, Integer flag, String keyName, User user, Integer roleType) {
  75. HttpRespMsg msg = new HttpRespMsg();
  76. PageHelper.startPage(page.getPageNum(), page.getPageSize());
  77. List<UserVO> users = userMapper.selectListByCondition(roleType, companyId, flag, user, keyName);
  78. List<Project> projects = new ArrayList<>();
  79. for (UserVO userVO : users) {
  80. List<Integer> set = new ArrayList<>();
  81. set.add(-1);
  82. List<MouldVO> moulds = new ArrayList<>();
  83. if (userVO.getId() != null) {
  84. QueryWrapper<Project> qw = new QueryWrapper<>();
  85. if (Constant.SYS_PARENT_ID == userVO.getParentId()) {
  86. //系统超级管理员,可获得所有项目
  87. projects = projectMapper.selectList(qw);
  88. for (Project project : projects) {
  89. set.add(project.getId());
  90. }
  91. } else if (Constant.SYS_ID == userVO.getParentId()) {
  92. //资产方管理员,看到自己创建的项目
  93. qw.select("id").eq("creator_id", user.getId());
  94. projects = projectMapper.selectList(qw);
  95. for (Project project : projects) {
  96. set.add(project.getId());
  97. }
  98. } else {
  99. QueryWrapper<Project> qwPro = new QueryWrapper<>();
  100. qwPro.eq("manager_id", user.getId());
  101. List<Project> projectList = projectMapper.selectList(qw);
  102. for (Project project : projectList) {
  103. set.add(project.getId());
  104. }
  105. //项目经理或者普通用户
  106. List<ProjectUser> projectUsers = projectUserMapper.selectList(new QueryWrapper<ProjectUser>().eq("user_id", user.getId()));
  107. for (ProjectUser projectUser : projectUsers) {
  108. set.add(projectUser.getProjectId());
  109. }
  110. //作为审批人
  111. List<ProjectApprove> projectApproves = projectApproveMapper.selectList(new QueryWrapper<ProjectApprove>().eq("approver_id", userVO.getId()));
  112. for (ProjectApprove projectApprove : projectApproves) {
  113. set.add(projectApprove.getProjectId());
  114. }
  115. qw.in("id", set);
  116. projects = projectMapper.selectList(qw);
  117. }
  118. userVO.setProjects(projects);
  119. } else {
  120. msg.setError("当前用户未登录,或者用户不存在");
  121. }
  122. }
  123. PageInfo<UserVO> pageInfos = new PageInfo<>(users);
  124. msg.data = pageInfos;
  125. return msg;
  126. }
  127. @Override
  128. public HttpRespMsg deleteUser(User user) {
  129. HttpRespMsg msg = new HttpRespMsg();
  130. QueryWrapper<ProjectUser> qw = new QueryWrapper<>();
  131. qw.eq("user_id", user.getId());
  132. //普通用户应用到项目不能删除
  133. Integer count = projectUserMapper.selectCount(qw);
  134. if (count > 0) {
  135. msg.setError("该用户已被应用到项目,暂不提供删除操作");
  136. return msg;
  137. }
  138. //是项目经理不能删除
  139. Integer countProject = projectMapper.selectCount(new QueryWrapper<Project>().eq("manager_id", user.getId()));
  140. if (countProject > 0) {
  141. msg.setError("该用户已被应用到项目,暂不提供删除操作");
  142. return msg;
  143. }
  144. //删除用户
  145. userMapper.deleteById(user.getId());
  146. //删除合作的公司
  147. userCompanyMapper.delete(new QueryWrapper<UserCompany>().eq("user_id", user.getId()));
  148. return msg;
  149. }
  150. @Override
  151. public HttpRespMsg addAndUpdateUser(User user, Integer flag, Integer addType) {
  152. //获取该账号的创建者
  153. User parentUser = userMapper.selectById(user.getParentId());
  154. HttpRespMsg msg = new HttpRespMsg();
  155. if (Constant.SYS_PARENT_ID == parentUser.getParentId()) {
  156. //此时是创建admind,当前创建人是超级管理员
  157. int count = userMapper.selectCount(new QueryWrapper<User>().eq("company_id", user.getCompanyId()).eq("parent_id", parentUser.getId()));
  158. if (flag == 0) {
  159. if (count > 0) {
  160. //所选公司下的admin已存在
  161. msg.setError("该公司下的管理员已存在");
  162. return msg;
  163. }
  164. //添加用户
  165. QueryWrapper<User> qw = new QueryWrapper<>();
  166. qw.eq("account", user.getAccount());
  167. count = userMapper.selectCount(qw);
  168. if (count > 0) {
  169. User existingUser = userMapper.selectOne(qw);
  170. msg.setError("当前账号已存在");
  171. return msg;
  172. } else {
  173. //创建账号默认密码"000000"
  174. user.setPassword(MD5Util.getPassword(Constant.DEFAULT_PWD));
  175. user.setHeadImgurl(UUID.randomUUID().toString().replaceAll("-", ""));
  176. //获取角色所属的团体
  177. Company company = companyMapper.selectById(user.getCompanyId());
  178. if (Constant.ASSETS_COMPANY == company.getCompanyType()) {
  179. user.setSubordinateType(Constant.ASSETS_COMPANY);
  180. user.setTeamName("资产方");
  181. } else if (Constant.PRODUCER_COMPANY == company.getCompanyType()) {
  182. user.setSubordinateType(Constant.PRODUCER_COMPANY);
  183. user.setTeamName("生产方");
  184. }
  185. userMapper.insert(user);
  186. if(addType != null){
  187. if (addType == 0) {
  188. Company com = new Company();
  189. com.setId(user.getCompanyId());
  190. com.setAdministrator(user.getUsername());
  191. com.setAdministratorId(user.getId());
  192. companyMapper.updateById(com);
  193. }
  194. }
  195. }
  196. } else if (flag == 1) {
  197. //更新角色信息
  198. Company company = companyMapper.selectById(user.getCompanyId());
  199. if (Constant.ASSETS_COMPANY == company.getCompanyType()) {
  200. user.setSubordinateType(Constant.ASSETS_COMPANY);
  201. user.setTeamName("资产方");
  202. } else if (Constant.PRODUCER_COMPANY == company.getCompanyType()) {
  203. user.setSubordinateType(Constant.PRODUCER_COMPANY);
  204. user.setTeamName("生产方");
  205. }
  206. userMapper.updateById(user);
  207. }
  208. } else if (Constant.SYS_ID == parentUser.getParentId()) {
  209. //admin创建用户
  210. if (flag == 0) {
  211. //添加用户
  212. QueryWrapper<User> qw = new QueryWrapper<>();
  213. qw.eq("account", user.getAccount());
  214. int count = userMapper.selectCount(qw);
  215. if (count > 0) {
  216. User existingUser = userMapper.selectOne(qw);
  217. if (existingUser.getParentId() == parentUser.getId()) {
  218. msg.setError("该账号已存在,请勿重新创建");
  219. return msg;
  220. } else {
  221. //此时用户已经有了,则建立一条合作公司的关系
  222. UserCompany userCompany = new UserCompany();
  223. userCompany.setUserId(existingUser.getId());
  224. userCompany.setBelongCompanyId(existingUser.getCompanyId());
  225. userCompany.setCooperationCompanyId(parentUser.getCompanyId());
  226. QueryWrapper<UserCompany> qWra = new QueryWrapper<>(userCompany);
  227. int userCompanyCount = userCompanyMapper.selectCount(qWra);
  228. if (userCompanyCount == 0) {
  229. userCompanyMapper.insert(userCompany);
  230. }
  231. }
  232. } else {
  233. //创建账号默认密码"000000"
  234. user.setPassword(MD5Util.getPassword(Constant.DEFAULT_PWD));
  235. user.setHeadImgurl(UUID.randomUUID().toString().replaceAll("-", ""));
  236. //获取角色所属的团体
  237. Company company = companyMapper.selectById(user.getCompanyId());
  238. if (Constant.ASSETS_COMPANY == company.getCompanyType()) {
  239. user.setSubordinateType(Constant.ASSETS_COMPANY);
  240. user.setTeamName("资产方");
  241. } else if (Constant.PRODUCER_COMPANY == company.getCompanyType()) {
  242. user.setSubordinateType(Constant.PRODUCER_COMPANY);
  243. user.setTeamName("生产方");
  244. }
  245. userMapper.insert(user);
  246. UserCompany userCompany = new UserCompany();
  247. userCompany.setUserId(user.getId());
  248. userCompany.setBelongCompanyId(user.getCompanyId());
  249. userCompany.setCooperationCompanyId(parentUser.getCompanyId());
  250. QueryWrapper<UserCompany> qWra = new QueryWrapper<>(userCompany);
  251. int userCompanyCount = userCompanyMapper.selectCount(qWra);
  252. if (userCompanyCount == 0) {
  253. userCompanyMapper.insert(userCompany);
  254. }
  255. }
  256. } else if (flag == 1) {
  257. //更新角色信息
  258. Company company = companyMapper.selectById(user.getCompanyId());
  259. if (Constant.ASSETS_COMPANY == company.getCompanyType()) {
  260. user.setSubordinateType(Constant.ASSETS_COMPANY);
  261. user.setTeamName("资产方");
  262. } else if (Constant.PRODUCER_COMPANY == company.getCompanyType()) {
  263. user.setSubordinateType(Constant.PRODUCER_COMPANY);
  264. user.setTeamName("生产方");
  265. }
  266. userMapper.updateById(user);
  267. }
  268. } else {
  269. //此时是项目经理创建人员
  270. //查询创建该项目经理的人
  271. User managerParent = userMapper.selectOne(new QueryWrapper<User>().eq("id", parentUser.getParentId()));
  272. if (flag == 0) {
  273. //添加用户
  274. QueryWrapper<User> qw = new QueryWrapper<>();
  275. qw.eq("account", user.getAccount());
  276. int count = userMapper.selectCount(qw);
  277. if (count > 0) {
  278. //当前账号已被创建
  279. User existingUser = userMapper.selectOne(qw);
  280. //判断创建该账号的是admin或者是项目经理自己创建的账号,如果再次创建直接提示创建重复
  281. if (existingUser.getParentId() == managerParent.getId() || existingUser.getParentId() == parentUser.getId()) {
  282. msg.setError("该账号已存在,请勿重新创建");
  283. return msg;
  284. } else {
  285. //此时用户已经有了,则建立一条合作公司的关系
  286. UserCompany userCompany = new UserCompany();
  287. userCompany.setUserId(existingUser.getId());
  288. userCompany.setBelongCompanyId(existingUser.getCompanyId());
  289. userCompany.setCooperationCompanyId(managerParent.getCompanyId());
  290. QueryWrapper<UserCompany> qWra = new QueryWrapper<>(userCompany);
  291. int userCompanyCount = userCompanyMapper.selectCount(qWra);
  292. if (userCompanyCount == 0) {
  293. userCompanyMapper.insert(userCompany);
  294. }
  295. }
  296. } else {
  297. //创建账号默认密码"000000"
  298. user.setPassword(MD5Util.getPassword(Constant.DEFAULT_PWD));
  299. user.setHeadImgurl(UUID.randomUUID().toString().replaceAll("-", ""));
  300. //获取角色所属的团体
  301. Company company = companyMapper.selectById(user.getCompanyId());
  302. if (Constant.ASSETS_COMPANY == company.getCompanyType()) {
  303. user.setSubordinateType(Constant.ASSETS_COMPANY);
  304. user.setTeamName("资产方");
  305. } else if (Constant.PRODUCER_COMPANY == company.getCompanyType()) {
  306. user.setSubordinateType(Constant.PRODUCER_COMPANY);
  307. user.setTeamName("生产方");
  308. }
  309. userMapper.insert(user);
  310. UserCompany userCompany = new UserCompany();
  311. userCompany.setUserId(user.getId());
  312. userCompany.setBelongCompanyId(user.getCompanyId());
  313. userCompany.setCooperationCompanyId(managerParent.getCompanyId());
  314. QueryWrapper<UserCompany> qWra = new QueryWrapper<>(userCompany);
  315. int userCompanyCount = userCompanyMapper.selectCount(qWra);
  316. if (userCompanyCount == 0) {
  317. userCompanyMapper.insert(userCompany);
  318. }
  319. }
  320. } else if (flag == 1) {
  321. //更新角色信息
  322. Company company = companyMapper.selectById(user.getCompanyId());
  323. if (Constant.ASSETS_COMPANY == company.getCompanyType()) {
  324. user.setSubordinateType(Constant.ASSETS_COMPANY);
  325. user.setTeamName("资产方");
  326. } else if (Constant.PRODUCER_COMPANY == company.getCompanyType()) {
  327. user.setSubordinateType(Constant.PRODUCER_COMPANY);
  328. user.setTeamName("生产方");
  329. }
  330. userMapper.updateById(user);
  331. }
  332. }
  333. return msg;
  334. }
  335. }