package com.hai.service.impl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.hai.dao.BsOrganizationMapper; import com.hai.dao.SecUserMapper; import com.hai.dao.SecUserMapperExt; import com.hai.dao.SecUserRoleRelMapper; import com.hai.entity.*; import com.hai.model.SecUserModel; import com.hai.model.UserTreeModel; import com.hai.service.BsOrganizationService; import com.hai.service.SecUserService; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.List; @Service("secUserService") public class SecUserServiceImpl implements SecUserService { @Resource private SecUserMapper secUserMapper; @Resource private SecUserMapperExt secUserMapperExt; @Resource private BsOrganizationMapper bsOrganizationMapper; @Resource private SecUserRoleRelMapper secUserRoleRelMapper; @Resource private BsOrganizationService bsOrganizationService; @Override @Transactional public void addUser(SecUser user) { secUserMapper.insert(user); // 用户角色关系 if(user.getRoleId() != null && user.getId() != null){ SecUserRoleRelExample exp = new SecUserRoleRelExample(); exp.createCriteria().andUserIdEqualTo(user.getId()); List rels = secUserRoleRelMapper.selectByExample(exp); if(rels != null && rels.size() != 0){ for(SecUserRoleRel rel : rels){ secUserRoleRelMapper.deleteByPrimaryKey(rel.getId()); } } SecUserRoleRel rel = new SecUserRoleRel(); rel.setRoleId(user.getRoleId()); rel.setUserId(user.getId()); secUserRoleRelMapper.insert(rel); } // 如果用户被设为部门管理员 if (user.isManager()) { BsOrganization organization = bsOrganizationMapper.selectByPrimaryKey(user.getOrganizationId()); organization.setManagerId(user.getId()); organization.setManagerName(user.getUserName()); organization.setManagerPhone(user.getTelephone()); bsOrganizationMapper.updateByPrimaryKey(organization); } } @Override public void updateUser(SecUser secUser) { secUserMapper.updateByPrimaryKey(secUser); } @Override public SecUser findById(Long userId) { return secUserMapper.selectByPrimaryKey(userId); } @Override public SecUser userLogin(String loginName, String password) { return secUserMapperExt.login(loginName,password); } @Override public SecUser findByPhone(String phone) { if (StringUtils.isBlank(phone)){ return null; } SecUserExample example = new SecUserExample(); example.createCriteria().andTelephoneEqualTo(phone).andStatusEqualTo(1); List users = secUserMapper.selectByExample(example); if (users != null && users.size() != 0) { return users.get(0); } return null; } @Override public SecUser findByLoginName(String loginName) { SecUserExample example = new SecUserExample(); example.createCriteria().andLoginNameEqualTo(loginName).andStatusEqualTo(1); List users = secUserMapper.selectByExample(example); if (users != null && users.size() != 0) { return users.get(0); } return null; } @Override public SecUser findByOpenId(String openId) { if (StringUtils.isBlank(openId)){ return null; } SecUserExample example = new SecUserExample(); example.createCriteria().andExt1EqualTo(openId).andStatusEqualTo(1); List users = secUserMapper.selectByExample(example); if (users != null && users.size() != 0) { return users.get(0); } return null; } @Override public SecUser selectAdminUser(Long companyId) { SecUserExample example = new SecUserExample(); example.createCriteria().andCompanyIdEqualTo(companyId).andAdminFlagEqualTo(1); List userList = secUserMapper.selectByExample(example); if (userList != null && userList.size() == 1) { return userList.get(0); }else { return null; } } @Override public PageInfo findPage(Long companyId, Long organizationId, String userName, String phone, Integer pageNum, Integer pageSize) { PageHelper.startPage(pageNum,pageSize); return new PageInfo(secUserMapper.findPage(companyId,organizationId,userName,phone)); } @Override @Transactional public void modifyUser(SecUser user) { // 是否更换部门 SecUser secUser = secUserMapper.selectByPrimaryKey(user.getId()); if (secUser.getOrganizationId() != null && (!secUser.getOrganizationId().equals(user.getOrganizationId()) || user.getStatus() == 0)) { BsOrganization organization = bsOrganizationMapper.selectByPrimaryKey(secUser.getOrganizationId()); // 更换前是部门管理员的,去除管理员 // 删除用户的,去除管理员 if (secUser.getId().equals(organization.getManagerId())) { organization.setManagerId(null); organization.setManagerName(null); organization.setManagerPhone(null); bsOrganizationMapper.updateByPrimaryKey(organization); } } secUserMapper.updateByPrimaryKeySelective(user); // 删除原来关系 SecUserRoleRelExample exp = new SecUserRoleRelExample(); exp.createCriteria().andUserIdEqualTo(user.getId()); List rels = secUserRoleRelMapper.selectByExample(exp); if(rels != null && rels.size() != 0){ for(SecUserRoleRel rel : rels){ secUserRoleRelMapper.deleteByPrimaryKey(rel.getId()); } } if(user.getRoleId() != null && user.getId() != null && user.getStatus() != 0){ SecUserRoleRel rel = new SecUserRoleRel(); rel.setUserId(user.getId()); rel.setRoleId(user.getRoleId()); secUserRoleRelMapper.insert(rel); } } @Override public SecUser getMainAccount(Integer objectType, Long objectId) { SecUserExample example = new SecUserExample(); example.createCriteria().andAdminFlagEqualTo(1).andObjectTypeEqualTo(objectType).andObjectIdEqualTo(objectId); List list = secUserMapper.selectByExample(example); if (list != null && list.size() > 0) { return list.get(0); } return null; } @Override public List findUserList(Long organizationId, String phone) { SecUserExample example = new SecUserExample(); SecUserExample.Criteria criteria = example.createCriteria(); if(organizationId != null){ criteria.andOrganizationIdEqualTo(organizationId); } if (StringUtils.isNotBlank(phone)) { criteria.andTelephoneLike("%" + phone + "%"); } criteria.andStatusEqualTo(1); example.setOrderByClause("create_time desc"); return secUserMapper.selectByExample(example); } @Override public UserTreeModel findAttendUserTree(Long companyId, BsOrganization organization) { // 查询公司下全部子级部门 List organizationList = bsOrganizationService.findAllSon(companyId); UserTreeModel userTreeModel = new UserTreeModel(); userTreeModel.setTitle(organization.getName()); userTreeModel.setKey("o" + organization.getId()); userTreeModel.setType(false); //构建树 buildAttendUserTree(userTreeModel,organizationList); return userTreeModel; } @Override public List getMerchantStoreUser(Long merchantStoreId) { SecUserExample example = new SecUserExample(); example.createCriteria().andObjectTypeEqualTo(3).andObjectIdEqualTo(merchantStoreId).andStatusEqualTo(1); return secUserMapper.selectByExample(example); } //构建考勤员工树 public void buildAttendUserTree(UserTreeModel parent, List organizations) { // 查询部门下员工 List userList = findUserList(Long.valueOf(parent.getKey().substring(1)),null); for (SecUser secUser : userList) { UserTreeModel child = new UserTreeModel(); child.setKey(secUser.getId().toString()); child.setTitle(secUser.getUserName()); child.setType(true); child.setPhone(secUser.getTelephone()); parent.add(child); } organizations.forEach(organization -> { if (organization.getParentId().toString().equals(parent.getKey().substring(1))) { UserTreeModel child = new UserTreeModel(); child.setKey("o" + organization.getId()); child.setTitle(organization.getName()); child.setType(false); parent.add(child); buildAttendUserTree(child, organizations); } }); } }