|  | @@ -1,23 +1,101 @@
 | 
	
		
			
				|  |  |  package com.keao.edu.user.service.impl;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import com.keao.edu.auth.api.entity.SysUser;
 | 
	
		
			
				|  |  |  import com.keao.edu.common.dal.BaseDAO;
 | 
	
		
			
				|  |  | +import com.keao.edu.common.exception.BizException;
 | 
	
		
			
				|  |  |  import com.keao.edu.common.service.impl.BaseServiceImpl;
 | 
	
		
			
				|  |  | +import com.keao.edu.im.api.client.ImFeignService;
 | 
	
		
			
				|  |  | +import com.keao.edu.im.api.entity.ImResult;
 | 
	
		
			
				|  |  | +import com.keao.edu.im.api.entity.ImUserModel;
 | 
	
		
			
				|  |  |  import com.keao.edu.user.dao.AgencyDao;
 | 
	
		
			
				|  |  | +import com.keao.edu.user.dao.SysUserDao;
 | 
	
		
			
				|  |  |  import com.keao.edu.user.entity.Agency;
 | 
	
		
			
				|  |  | +import com.keao.edu.user.entity.Employee;
 | 
	
		
			
				|  |  |  import com.keao.edu.user.service.AgencyService;
 | 
	
		
			
				|  |  | +import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  |  import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  | +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 | 
	
		
			
				|  |  |  import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  | +import org.springframework.transaction.annotation.Transactional;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  @Service
 | 
	
		
			
				|  |  |  public class AgencyServiceImpl extends BaseServiceImpl<Integer, Agency> implements AgencyService {
 | 
	
		
			
				|  |  |  	
 | 
	
		
			
				|  |  |  	@Autowired
 | 
	
		
			
				|  |  |  	private AgencyDao agencyDao;
 | 
	
		
			
				|  |  | +	@Autowired
 | 
	
		
			
				|  |  | +	private ImFeignService imFeignService;
 | 
	
		
			
				|  |  | +	@Autowired
 | 
	
		
			
				|  |  | +	private SysUserDao sysUserDao;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	@Override
 | 
	
		
			
				|  |  |  	public BaseDAO<Integer, Agency> getDAO() {
 | 
	
		
			
				|  |  |  		return agencyDao;
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  | -	
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	@Override
 | 
	
		
			
				|  |  | +	@Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | +	public void add(Agency agency) {
 | 
	
		
			
				|  |  | +		SysUser sysUser = agency.getSysUser();
 | 
	
		
			
				|  |  | +		SysUser user = sysUserDao.queryByPhone(sysUser.getPhone());
 | 
	
		
			
				|  |  | +		if(user != null && user.getId() != null){
 | 
	
		
			
				|  |  | +			Agency agency1 = agencyDao.get(user.getId());
 | 
	
		
			
				|  |  | +			if(agency1 == null){
 | 
	
		
			
				|  |  | +				if(StringUtils.isEmpty(user.getPassword())){
 | 
	
		
			
				|  |  | +					sysUser.setPassword(new BCryptPasswordEncoder().encode("123456"));
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +				agency.setId(user.getId());
 | 
	
		
			
				|  |  | +				agencyDao.insert(agency);
 | 
	
		
			
				|  |  | +				//新增用户角色
 | 
	
		
			
				|  |  | +				sysUserDao.batchAddEmployeeRole(user.getId(),sysUser.getRoles());
 | 
	
		
			
				|  |  | +				user.setUserType(user.getUserType() + ",AGENCY");
 | 
	
		
			
				|  |  | +				user.setRealName(agency.getName());
 | 
	
		
			
				|  |  | +				user.setPhone(agency.getContactPhone());
 | 
	
		
			
				|  |  | +				sysUserDao.update(user);
 | 
	
		
			
				|  |  | +				return;
 | 
	
		
			
				|  |  | +			}else{
 | 
	
		
			
				|  |  | +				throw new BizException("用户已存在");
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		sysUser.setPassword(new BCryptPasswordEncoder().encode("123456"));
 | 
	
		
			
				|  |  | +		sysUser.setUserType("AGENCY");
 | 
	
		
			
				|  |  | +		sysUser.setRealName(agency.getName());
 | 
	
		
			
				|  |  | +		sysUser.setPhone(agency.getContactPhone());
 | 
	
		
			
				|  |  | +		sysUserDao.insert(sysUser);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		agency.setId(sysUser.getId());
 | 
	
		
			
				|  |  | +		agencyDao.insert(agency);
 | 
	
		
			
				|  |  | +		//新增用户角色
 | 
	
		
			
				|  |  | +		sysUserDao.delEmployeeRole(sysUser.getId());
 | 
	
		
			
				|  |  | +		sysUserDao.batchAddEmployeeRole(sysUser.getId(),sysUser.getRoles());
 | 
	
		
			
				|  |  | +		ImResult imResult = imFeignService.register(new ImUserModel(sysUser.getId().toString(), sysUser.getRealName(),null));
 | 
	
		
			
				|  |  | +		user.setImToken(imResult.getToken());
 | 
	
		
			
				|  |  | +		sysUserDao.update(sysUser);
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	@Override
 | 
	
		
			
				|  |  | +	@Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | +	public void updateAgency(Agency agency) {
 | 
	
		
			
				|  |  | +		SysUser sysUser = agency.getSysUser();
 | 
	
		
			
				|  |  | +		if(null == agencyDao.get(sysUser.getId())){
 | 
	
		
			
				|  |  | +			throw new BizException("代理商信息不存在");
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		agency.setId(sysUser.getId());
 | 
	
		
			
				|  |  | +		if(StringUtils.isNotEmpty(sysUser.getPhone())){
 | 
	
		
			
				|  |  | +			SysUser queryByPhone = sysUserDao.queryByPhone(sysUser.getPhone());
 | 
	
		
			
				|  |  | +			if(queryByPhone != null && !sysUser.getId().equals(queryByPhone.getId())){
 | 
	
		
			
				|  |  | +				throw new BizException("手机号已存在");
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		sysUser.setRealName(agency.getName());
 | 
	
		
			
				|  |  | +		sysUser.setPhone(agency.getContactPhone());
 | 
	
		
			
				|  |  | +		agencyDao.update(agency);
 | 
	
		
			
				|  |  | +		//删除当前用户角色
 | 
	
		
			
				|  |  | +		sysUserDao.delEmployeeRole(sysUser.getId());
 | 
	
		
			
				|  |  | +		//新增用户角色
 | 
	
		
			
				|  |  | +		sysUserDao.batchAddEmployeeRole(sysUser.getId(),sysUser.getRoles());
 | 
	
		
			
				|  |  | +		sysUserDao.update(sysUser);
 | 
	
		
			
				|  |  | +		imFeignService.update(new ImUserModel(sysUser.getId().toString(),sysUser.getRealName(),sysUser.getAvatar()));
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  }
 |