package com.bosshand.virgo.service; import com.alibaba.fastjson.JSONObject; import com.bosshand.virgo.core.dao.AttendanceDao; import com.bosshand.virgo.core.dao.MgrOrganizationDao; import com.bosshand.virgo.core.dao.MgrUserDao; import com.bosshand.virgo.core.dao.MgrUserRoleDao; import com.bosshand.virgo.core.model.Attendance; import com.bosshand.virgo.core.model.MgrOrganization; import com.bosshand.virgo.core.model.MgrUser; import com.bosshand.virgo.core.model.MgrUserRole; import com.bosshand.virgo.core.utils.CodeCache; import com.bosshand.virgo.core.utils.Utils; import com.bosshand.virgo.core.utils.WeChatUtil; import com.bosshand.virgo.util.MD5Utils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.*; @Service public class UserService { @Autowired private MgrUserDao mgrUserDao; @Autowired private MgrUserRoleDao mgrUserRoleDao; @Autowired private MgrOrganizationDao mgrOrganizationDao; @Autowired private AttendanceDao attendanceDao; public MgrUser getById(long id) { MgrUser user = mgrUserDao.getById(id); user.setMgrOrganization(mgrOrganizationDao.get(user.getLastOrganizationId())); return user; } public MgrUser getByPhone(String phone) { return mgrUserDao.getByPhone(phone); } public int update(MgrUser user) { int update = mgrUserDao.update(user); //修改聊天用户信息 JSONObject js = new JSONObject(); js.put("nickname", user.getName()); js.put("avatarUrl", user.getPortrait()); WeChatUtil.httpPost("http://git.waywish.com:9120/user/update", js, this.getYelToken(String.valueOf(user.getId()))); return update; } /** * 获取Yel-Token */ public String getYelToken(String userId) { JSONObject js = new JSONObject(); js.put("userId", userId); long timestamp = System.currentTimeMillis() + 30 * 1000; js.put("timestamp", timestamp); String sign = MD5Utils.code(userId + timestamp + "50abd47112ebe8c5a73f4694c96a49ce"); js.put("sign", sign); String str = WeChatUtil.httpPost("http://git.waywish.com:9120/user/token/get", js, null); JSONObject jsonObject = JSONObject.parseObject(str); return jsonObject.getJSONObject("data").getString("token"); } public void updateResources(MgrUserRole userRole) { mgrUserRoleDao.updateResources(userRole); } public int banUser(long id, int status) { return mgrUserDao.banUser(id, status); } public int checkFace(long id) { return mgrUserDao.checkFace(id); } public List listUser(long organizationId, long roleId) { List list = mgrUserRoleDao.getOrganizationId(organizationId); Map map = new HashMap<>(); List userIds = new ArrayList<>(); for (MgrUserRole mur : list) { if (mur.getRoles() != null) { List ll = new ArrayList<>(Arrays.asList(mur.getRoles().split(","))); if (ll.contains(String.valueOf(roleId))) { userIds.add(mur.getUserId()); map.put(mur.getUserId(), mur.getResources()); } } } if (userIds.size() > 0) { List userList = mgrUserDao.getIds(userIds); userList.forEach(ls -> ls.setResources(map.get(ls.getId()))); return userList; } return new ArrayList<>(); } public void deleteUser(long organizationId, long userId) { MgrUserRole mgrUserRole = mgrUserRoleDao.getUser(userId, organizationId); if (mgrUserRole != null) { mgrUserRoleDao.delete(mgrUserRole.getId()); } } public void addUser(MgrUser user, long organizationId, String roleIds) { long userId = 0; MgrUser mgrUser = mgrUserDao.getByPhone(user.getPhone()); if (mgrUser != null) { userId = mgrUser.getId(); } else { if (user.getName() == null) { user.setName(CodeCache.DefaultUserName); } //mgrUserDao.insert(user); //userId = user.getId(); userId = registerOrganization(user); // 聊天用户新增 JSONObject js = new JSONObject(); js.put("userId", userId); js.put("nickname", user.getName()); js.put("avatarUrl", CodeCache.DefaultPortrait); WeChatUtil.httpPost("http://git.waywish.com:9120/user/register", js, null); } MgrUserRole mur = mgrUserRoleDao.getUser(userId, organizationId); if (mur != null) { if (mur.getRoles() == null) { mur.setRoles(roleIds); } else { List list = new ArrayList<>(Arrays.asList(mur.getRoles().split(","))); if (list.contains(roleIds)) { return; } list.add(roleIds); mur.setRoles(String.join(",", list)); } mgrUserRoleDao.update(mur); } else { MgrUserRole userRole = new MgrUserRole(); userRole.setUserId(userId); userRole.setOrganizationId(organizationId); userRole.setRoles(roleIds); mgrUserRoleDao.insert(userRole); } } /** * 新加用户注册组织 */ private long registerOrganization(MgrUser user){ MgrOrganization mgrOrganization = new MgrOrganization(); mgrOrganization.setName(null); mgrOrganization.setContact(user.getName()); mgrOrganization.setContactTel(user.getPhone()); mgrOrganization.setOrganizationCode("CZF" + Utils.random(8)); mgrOrganizationDao.insert(mgrOrganization); user.setLastOrganizationId(mgrOrganization.getId()); mgrUserDao.insert(user); MgrUserRole userRole = new MgrUserRole(); userRole.setAdmin(true); userRole.setOrganizationId(mgrOrganization.getId()); userRole.setUserId(user.getId()); mgrUserRoleDao.insert(userRole); return user.getId(); } public List getUserByOrganizationId(long organizationId) { List list = mgrUserRoleDao.getOrganizationId(organizationId); List ids = new ArrayList<>(); for (MgrUserRole mur : list) { ids.add(mur.getUserId()); } if (ids.size() > 0) { return mgrUserDao.getIds(ids); } return new ArrayList<>(); } public void updateUserRole(MgrUserRole userRole) { MgrUserRole mur = mgrUserRoleDao.getUser(userRole.getUserId(), userRole.getOrganizationId()); if (mur.getRoles() == null) { mur.setRoles(userRole.getRoles()); } else { List list = new ArrayList<>(Arrays.asList(mur.getRoles().split(","))); String[] split = userRole.getRoles().split(","); for (String s : split) { if (!list.contains(s)) { list.add(s); } } mur.setRoles(String.join(",", list)); mgrUserRoleDao.update(mur); } } public int saveAttendance(Attendance attendance) { return attendanceDao.insert(attendance); } public List getAttendance(Attendance attendance) { if (attendance.getEndDate() != null) { attendance.setEndDate(attendance.getEndDate() + " 23:59:59"); } return attendanceDao.getByUser(attendance); } }