package com.goafanti.admin.service.impl; import java.util.*; import com.goafanti.common.dao.*; import com.goafanti.common.model.AmbSystem; import com.goafanti.common.model.Role; import com.goafanti.common.utils.AsyncUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.goafanti.admin.bo.AdminDetail; import com.goafanti.admin.bo.AdminListBo; import com.goafanti.admin.service.NewAdminService; import com.goafanti.common.constant.AFTConstants; import com.goafanti.common.model.Admin; import com.goafanti.common.model.UserRole; import com.goafanti.common.utils.StringUtils; import com.goafanti.core.mybatis.BaseMybatisDao; import com.goafanti.core.mybatis.page.Pagination; import com.goafanti.core.shiro.token.TokenManager; @Service public class NewAdminServiceImpl extends BaseMybatisDao implements NewAdminService { @Autowired private AdminMapper adminMapper; @Autowired private UserRoleMapper userRoleMapper; @Autowired private AdminLocationMapper adminLocationMapper; @Autowired private AmbSystemMapper ambSystemMapper; @Autowired private RoleMapper roleMapper; @Autowired private AsyncUtils asyncUtils; @Override public Pagination listAdmin(AdminListBo alb, String rid,String roleName,Integer pageNo, Integer pageSize) { Map params = new HashMap(); if(StringUtils.isNotBlank(alb.getName())) params.put("name", alb.getName()); if(StringUtils.isNotBlank(roleName)) params.put("roleName", roleName); if(StringUtils.isNotBlank(alb.getDepartmentId())) params.put("departmentId", alb.getDepartmentId()); if(StringUtils.isNotBlank(rid)) params.put("rid", rid); if(StringUtils.isNotBlank(alb.getDuty())) params.put("duty",alb.getDuty()); if(StringUtils.isNotBlank(alb.getPosition())) params.put("position", alb.getPosition()); if(StringUtils.isNotBlank(alb.getStatus())) params.put("status", alb.getStatus()); if(StringUtils.isNotBlank(alb.getMobile())) params.put("mobile", alb.getMobile()); if(StringUtils.isNotBlank(alb.getSuperiorId())) params.put("superiorId", alb.getSuperiorId()); if(StringUtils.isNotBlank(alb.getAmbId())) params.put("ambId", alb.getAmbId()); if(StringUtils.isNotBlank(alb.getAncestors())) params.put("ancestors", alb.getAncestors()); if(alb.getAmbManage()!=null) params.put("ambManage", alb.getAmbManage()); Pagination p=(Pagination)findPage("selectAdminListByPage","selectAdminCount",params,pageNo,pageSize); List list= (List) p.getList(); for(AdminListBo i:list){ pushRolesName(i); } return p; } @Override public void pushRolesName(AdminListBo i) { List roles = adminMapper.selectRolesByUid(i.getId()); i.setRoles(roles); List ls=new ArrayList<>(); for (Role role : roles) { ls.add(role.getRoleName()); } i.setRolesName(ls); } @Override public List selectAllAdmin() { return adminMapper.selectAllAdmin(null); } @Override public Admin selectByMobile(String mobile) { return adminMapper.selectByMobile(mobile); } @Override public Admin selectByPrimaryKey(String key) { return adminMapper.selectByPrimaryKey(key); } @Override public int insert(Admin ad) { return adminMapper.insert(ad); } @SuppressWarnings("unused") @Override public int updateByPrimaryKeySelective(Admin ad, List roleIds) { Map params = new HashMap<>(); params.put("uid", ad.getId()); params.put("roles", roleIds); Set useRole = roleMapper.findRoleByUserId(ad.getId()); if (ad.getId() != "1") { userRoleMapper.deleteByUserId(ad.getId()); if (!roleIds.isEmpty()) { userRoleMapper.insertBatch(params); } TokenManager.clearUserAuthByUserId(ad.getId()); } ad.setType(sumType(roleIds)); int count=adminMapper.updateByPrimaryKeySelective(ad); pushAmbRole(ad); pushAdminRole(ad.getId(),roleIds,useRole); if (count>0&&ad.getAmbId()!=null){ //进行巴人数计算 // AmbSystem ambSystem = ambSystemMapper.selectByPrimaryKey(Long.valueOf(ad.getAmbId())); // if (ambSystem.getAncestors()!=null){ // List list = Arrays.asList(ambSystem.getAncestors().split(",")); // // } } return count; } private void pushAdminRole(String id,ListroleIds, Set useRole) { boolean flag=false; if (useRole!=null){ for (String s : useRole) { if (AFTConstants.COMPANY_MANAGER.equals(s)){ flag=true; break; } } } List roleList = roleMapper.selectByIdList(roleIds); if (roleList!=null){ for (Role role : roleList) { if (AFTConstants.COMPANY_MANAGER.equals(role.getRoleType().toString())){ flag=true; break; } } } if (flag){ Admin admin = adminMapper.selectByPrimaryKey(id); asyncUtils.updateexamineName(2,admin.getDepartmentId(),admin.getId()); } } private int sumType(List roleIds) { int type=0; for (String roleId : roleIds) { Role r=userRoleMapper.selectById(roleId); String rt=r.getRoleType().toString(); if (rt.equals(AFTConstants.TECH)||rt.equals(AFTConstants.TECH_MANAGER)||rt.equals(AFTConstants.TECH_ADMIN)){ type=3; break; } else if (rt.equals(AFTConstants.SALESMAN)||rt.equals(AFTConstants.SALESMAN_MANAGER)||rt.equals(AFTConstants.SALESMAN_ADMIN)){ type=1; break; }else if (rt.equals(AFTConstants.FINANCE)||rt.equals(AFTConstants.FINANCE_MANAGER)||rt.equals(AFTConstants.FINANCE_ADMIN)){ type=2; break; } } return type; } @Override public int updateByPrimaryKey(Admin a) { return adminMapper.updateByPrimaryKeySelective(a); } @Override public AdminDetail selectAdminDetail(String id) { Admin a = adminMapper.selectByPrimaryKey(id); if (null == a) { return null; } AdminDetail ad = new AdminDetail(); BeanUtils.copyProperties(a, ad); ad.setRoles(adminMapper.selectRolesByPrimaryKey(id)); return null; } @Override public List selectCognizanceConsultant() { return adminMapper.selectCognizanceConsultant(); } @Override public List selectPatentAuthor() { return adminMapper.selectPatentAuthor(); } @Override public List selectPatentPrincipal() { return adminMapper.selectPatentPrincipal(); } @Override public List selectCopyrightConsultant() { return adminMapper.selectCopyrightConsultant(); } @Override public List selectCognizancePrincipal() { return adminMapper.selectCognizancePrincipal(); } @Override public List selectCopyrightPrincipal() { return adminMapper.selectCopyrightPrincipal(); } @Override public List selectTechprojectConsultant() { return adminMapper.selectTechprojectConsultant(); } @Override public List selectTechprojectPrincipal() { return adminMapper.selectTechprojectPrincipal(); } @Override public List selectRoleByPrimaryKey(String uid) { return adminMapper.selectRoleByPrimaryKey(uid); } @Override public List listAuditor() { return userRoleMapper.listAuditor(); } @Override public Map selectAccoutManager() { return disposeAdminList(adminMapper.selectAccoutManager()); } @Override public Map selectTechnician() { return disposeAdminList(adminMapper.selectTechnician()); } @Override public Map selectSalesman() { return disposeAdminList(adminMapper.selectSalesman()); } @Override public Map selectContractManager() { return disposeAdminList(adminMapper.selectContractManager()); } @Override public Map selectTechBroder() { return disposeAdminList(adminMapper.selectTechBroder()); } @Override public int insertNewAdmin(Admin ad ,List roleIds) { ad.setStatus("0"); ad.setId(UUID.randomUUID().toString()); ad.setType(sumType(roleIds)); Map params = new HashMap<>(); params.put("uid", ad.getId()); params.put("roles", roleIds); if (ad.getId() != "1") { userRoleMapper.deleteByUserId(ad.getId()); if (!roleIds.isEmpty()) { userRoleMapper.insertBatch(params); } TokenManager.clearUserAuthByUserId(ad.getId()); } if(ad.getAmbId()!=null)pushAmbRole(ad); adminMapper.insertSelective(ad); pushAdminRole(ad.getId(),roleIds,null); return 1; } /** * 计算巴权限 * @param ad */ private void pushAmbRole(Admin ad) { if (ad.getId()!=null){ ad.setAmbRole("7"); }else { Admin use = adminMapper.selectByPrimaryKey(ad.getId()); AmbSystem ambSystem = ambSystemMapper.selectByPrimaryKey(Long.valueOf(ad.getAmbId())); if (ambSystem.getLvl() == 5 || ambSystem.getLvl() == 6) { if (use.getAmbRole() == null) { ad.setAmbRole("7"); } else { if (!use.getAmbRole().contains("7")) { ad.setAmbRole(use.getAmbRole() + ",7"); } } } } } @Override public Map listAdminSelect() { if (TokenManager.hasRole(AFTConstants.SUPERADMIN)) { return disposeAdminList(adminMapper.listAdminSelectBySuperAdmin()); } else if (TokenManager.hasRole(AFTConstants.AREAADMIN)) { List provinceList = adminLocationMapper .selectProvinceWhereCityIsNullByAdminId(TokenManager.getAdminId()); List cityList = adminLocationMapper.selectCityByAdminId(TokenManager.getAdminId()); provinceList.addAll(cityList); return disposeAdminList(adminMapper.listAdminSelectByAreaAdmin(provinceList, cityList)); } return null; } private Map disposeAdminList(List list) { Map map = new TreeMap(); for (Admin o : list) { map.put(o.getId(), o.getName() + " " + (StringUtils.isBlank(o.getPosition()) ? "" : o.getPosition())); } return map; } @Override public List listAdminByName(String name) { return adminMapper.listAdminByName(name,0); } @Override public Admin selectAllByid(String id) { Admin admin=adminMapper.selectAllByid(id); return admin; } @Override public int deleteById(String id) { adminMapper.deleteById(id); if(id!="1"){ userRoleMapper.deleteByUserId(id); } return 1; } @Override public List selectAdminByOrg() { return adminMapper.selectSubList(TokenManager.getAdminId()); } @Override public boolean checkAdminRole(List roles, Admin admin) { List list=userRoleMapper. selectAdminRole(AFTConstants.CONSULTANT_MANAGER); if (!roles.isEmpty()) { for (String s : roles) { if (list.size()>0) { if (null==admin) { if (list.get(0).getRid().equals(s)) { return true; } }else { if (list.get(0).getRid().equals(s)&&!list.get(0).getUid().equals((admin.getId()))) { return true; } } } } } return false; } }