嗨森逛服务
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
hai-server/hai-service/src/main/java/com/hai/service/impl/SecUserServiceImpl.java

250 lines
8.0 KiB

4 years ago
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;
4 years ago
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;
4 years ago
@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<SecUserRoleRel> 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);
4 years ago
}
@Override
public SecUser findByPhone(String phone) {
if (StringUtils.isBlank(phone)){
return null;
}
SecUserExample example = new SecUserExample();
example.createCriteria().andTelephoneEqualTo(phone).andStatusEqualTo(1);
List<SecUser> 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<SecUser> 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<SecUser> 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<SecUser> userList = secUserMapper.selectByExample(example);
if (userList != null && userList.size() == 1) {
return userList.get(0);
}else {
return null;
}
}
@Override
public PageInfo<SecUserModel> findPage(Long companyId, Long organizationId, String userName, String phone, Integer pageNum, Integer pageSize) {
PageHelper.startPage(pageNum,pageSize);
return new PageInfo<SecUserModel>(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<SecUserRoleRel> 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
4 years ago
public SecUser getMainAccount(Integer objectType, Long objectId) {
4 years ago
SecUserExample example = new SecUserExample();
4 years ago
example.createCriteria().andAdminFlagEqualTo(1).andObjectTypeEqualTo(objectType).andObjectIdEqualTo(objectId);
4 years ago
4 years ago
List<SecUser> list = secUserMapper.selectByExample(example);
if (list != null && list.size() > 0) {
return list.get(0);
4 years ago
}
return null;
}
@Override
public List<SecUser> 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<BsOrganization> 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<SecUser> getMerchantStoreUser(Long merchantStoreId) {
SecUserExample example = new SecUserExample();
example.createCriteria().andObjectTypeEqualTo(3).andObjectIdEqualTo(merchantStoreId).andStatusEqualTo(1);
return secUserMapper.selectByExample(example);
}
4 years ago
//构建考勤员工树
public void buildAttendUserTree(UserTreeModel parent, List<BsOrganization> organizations) {
// 查询部门下员工
List<SecUser> 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);
}
});
}
}