UserService.java 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. package com.bosshand.virgo.service;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.bosshand.virgo.core.dao.AttendanceDao;
  4. import com.bosshand.virgo.core.dao.MgrOrganizationDao;
  5. import com.bosshand.virgo.core.dao.MgrUserDao;
  6. import com.bosshand.virgo.core.dao.MgrUserRoleDao;
  7. import com.bosshand.virgo.core.model.Attendance;
  8. import com.bosshand.virgo.core.model.MgrOrganization;
  9. import com.bosshand.virgo.core.model.MgrUser;
  10. import com.bosshand.virgo.core.model.MgrUserRole;
  11. import com.bosshand.virgo.core.utils.CodeCache;
  12. import com.bosshand.virgo.core.utils.Utils;
  13. import com.bosshand.virgo.core.utils.WeChatUtil;
  14. import com.bosshand.virgo.util.MD5Utils;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.stereotype.Service;
  17. import java.util.*;
  18. @Service
  19. public class UserService {
  20. @Autowired
  21. private MgrUserDao mgrUserDao;
  22. @Autowired
  23. private MgrUserRoleDao mgrUserRoleDao;
  24. @Autowired
  25. private MgrOrganizationDao mgrOrganizationDao;
  26. @Autowired
  27. private AttendanceDao attendanceDao;
  28. public MgrUser getById(long id) {
  29. MgrUser user = mgrUserDao.getById(id);
  30. user.setMgrOrganization(mgrOrganizationDao.get(user.getLastOrganizationId()));
  31. return user;
  32. }
  33. public MgrUser getByPhone(String phone) {
  34. return mgrUserDao.getByPhone(phone);
  35. }
  36. public int update(MgrUser user) {
  37. int update = mgrUserDao.update(user);
  38. //修改聊天用户信息
  39. JSONObject js = new JSONObject();
  40. js.put("nickname", user.getName());
  41. js.put("avatarUrl", user.getPortrait());
  42. WeChatUtil.httpPost("http://git.waywish.com:9120/user/update", js, this.getYelToken(String.valueOf(user.getId())));
  43. return update;
  44. }
  45. /**
  46. * 获取Yel-Token
  47. */
  48. public String getYelToken(String userId) {
  49. JSONObject js = new JSONObject();
  50. js.put("userId", userId);
  51. long timestamp = System.currentTimeMillis() + 30 * 1000;
  52. js.put("timestamp", timestamp);
  53. String sign = MD5Utils.code(userId + timestamp + "50abd47112ebe8c5a73f4694c96a49ce");
  54. js.put("sign", sign);
  55. String str = WeChatUtil.httpPost("http://git.waywish.com:9120/user/token/get", js, null);
  56. JSONObject jsonObject = JSONObject.parseObject(str);
  57. return jsonObject.getJSONObject("data").getString("token");
  58. }
  59. public void updateResources(MgrUserRole userRole) {
  60. mgrUserRoleDao.updateResources(userRole);
  61. }
  62. public int banUser(long id, int status) {
  63. return mgrUserDao.banUser(id, status);
  64. }
  65. public int checkFace(long id) {
  66. return mgrUserDao.checkFace(id);
  67. }
  68. public List<MgrUser> listUser(long organizationId, long roleId) {
  69. List<MgrUserRole> list = mgrUserRoleDao.getOrganizationId(organizationId);
  70. Map<Long, String> map = new HashMap<>();
  71. List<Long> userIds = new ArrayList<>();
  72. for (MgrUserRole mur : list) {
  73. if (mur.getRoles() != null) {
  74. List<String> ll = new ArrayList<>(Arrays.asList(mur.getRoles().split(",")));
  75. if (ll.contains(String.valueOf(roleId))) {
  76. userIds.add(mur.getUserId());
  77. map.put(mur.getUserId(), mur.getResources());
  78. }
  79. }
  80. }
  81. if (userIds.size() > 0) {
  82. List<MgrUser> userList = mgrUserDao.getIds(userIds);
  83. userList.forEach(ls -> ls.setResources(map.get(ls.getId())));
  84. return userList;
  85. }
  86. return new ArrayList<>();
  87. }
  88. public void deleteUser(long organizationId, long userId) {
  89. MgrUserRole mgrUserRole = mgrUserRoleDao.getUser(userId, organizationId);
  90. if (mgrUserRole != null) {
  91. mgrUserRoleDao.delete(mgrUserRole.getId());
  92. }
  93. }
  94. public void addUser(MgrUser user, long organizationId, String roleIds) {
  95. long userId = 0;
  96. MgrUser mgrUser = mgrUserDao.getByPhone(user.getPhone());
  97. if (mgrUser != null) {
  98. userId = mgrUser.getId();
  99. } else {
  100. if (user.getName() == null) {
  101. user.setName(CodeCache.DefaultUserName);
  102. }
  103. //mgrUserDao.insert(user);
  104. //userId = user.getId();
  105. userId = registerOrganization(user);
  106. // 聊天用户新增
  107. JSONObject js = new JSONObject();
  108. js.put("userId", userId);
  109. js.put("nickname", user.getName());
  110. js.put("avatarUrl", CodeCache.DefaultPortrait);
  111. WeChatUtil.httpPost("http://git.waywish.com:9120/user/register", js, null);
  112. }
  113. MgrUserRole mur = mgrUserRoleDao.getUser(userId, organizationId);
  114. if (mur != null) {
  115. if (mur.getRoles() == null) {
  116. mur.setRoles(roleIds);
  117. } else {
  118. List<String> list = new ArrayList<>(Arrays.asList(mur.getRoles().split(",")));
  119. if (list.contains(roleIds)) {
  120. return;
  121. }
  122. list.add(roleIds);
  123. mur.setRoles(String.join(",", list));
  124. }
  125. mgrUserRoleDao.update(mur);
  126. } else {
  127. MgrUserRole userRole = new MgrUserRole();
  128. userRole.setUserId(userId);
  129. userRole.setOrganizationId(organizationId);
  130. userRole.setRoles(roleIds);
  131. mgrUserRoleDao.insert(userRole);
  132. }
  133. }
  134. /**
  135. * 新加用户注册组织
  136. */
  137. private long registerOrganization(MgrUser user){
  138. MgrOrganization mgrOrganization = new MgrOrganization();
  139. mgrOrganization.setName(null);
  140. mgrOrganization.setContact(user.getName());
  141. mgrOrganization.setContactTel(user.getPhone());
  142. mgrOrganization.setOrganizationCode("CZF" + Utils.random(8));
  143. mgrOrganizationDao.insert(mgrOrganization);
  144. user.setLastOrganizationId(mgrOrganization.getId());
  145. mgrUserDao.insert(user);
  146. MgrUserRole userRole = new MgrUserRole();
  147. userRole.setAdmin(true);
  148. userRole.setOrganizationId(mgrOrganization.getId());
  149. userRole.setUserId(user.getId());
  150. mgrUserRoleDao.insert(userRole);
  151. return user.getId();
  152. }
  153. public List<MgrUser> getUserByOrganizationId(long organizationId) {
  154. List<MgrUserRole> list = mgrUserRoleDao.getOrganizationId(organizationId);
  155. List<Long> ids = new ArrayList<>();
  156. for (MgrUserRole mur : list) {
  157. ids.add(mur.getUserId());
  158. }
  159. if (ids.size() > 0) {
  160. return mgrUserDao.getIds(ids);
  161. }
  162. return new ArrayList<>();
  163. }
  164. public void updateUserRole(MgrUserRole userRole) {
  165. MgrUserRole mur = mgrUserRoleDao.getUser(userRole.getUserId(), userRole.getOrganizationId());
  166. if (mur.getRoles() == null) {
  167. mur.setRoles(userRole.getRoles());
  168. } else {
  169. List<String> list = new ArrayList<>(Arrays.asList(mur.getRoles().split(",")));
  170. String[] split = userRole.getRoles().split(",");
  171. for (String s : split) {
  172. if (!list.contains(s)) {
  173. list.add(s);
  174. }
  175. }
  176. mur.setRoles(String.join(",", list));
  177. mgrUserRoleDao.update(mur);
  178. }
  179. }
  180. public int saveAttendance(Attendance attendance) {
  181. return attendanceDao.insert(attendance);
  182. }
  183. public List<Attendance> getAttendance(Attendance attendance) {
  184. if (attendance.getEndDate() != null) {
  185. attendance.setEndDate(attendance.getEndDate() + " 23:59:59");
  186. }
  187. return attendanceDao.getByUser(attendance);
  188. }
  189. }