AdminServiceImpl.java 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486
  1. package com.goafanti.admin.service.impl;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.List;
  5. import java.util.Map;
  6. import java.util.TreeMap;
  7. import java.util.UUID;
  8. import javax.annotation.Resource;
  9. import org.springframework.beans.BeanUtils;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.stereotype.Service;
  12. import com.goafanti.admin.bo.AdminContacts;
  13. import com.goafanti.admin.bo.AdminCustomerBo;
  14. import com.goafanti.admin.bo.AdminCustomerDetailBo;
  15. import com.goafanti.admin.bo.AdminDetail;
  16. import com.goafanti.admin.bo.AdminListBo;
  17. import com.goafanti.admin.bo.depCountBo;
  18. import com.goafanti.admin.service.AdminService;
  19. import com.goafanti.common.constant.AFTConstants;
  20. import com.goafanti.common.dao.AdminLocationMapper;
  21. import com.goafanti.common.dao.AdminMapper;
  22. import com.goafanti.common.dao.OrganizationManagementMapper;
  23. import com.goafanti.common.dao.UserBusinessMapper;
  24. import com.goafanti.common.dao.UserLockReleaseMapper;
  25. import com.goafanti.common.dao.UserRoleMapper;
  26. import com.goafanti.common.model.Admin;
  27. import com.goafanti.common.model.UserBusiness;
  28. import com.goafanti.common.utils.LoggerUtils;
  29. import com.goafanti.common.utils.PasswordUtil;
  30. import com.goafanti.common.utils.StringUtils;
  31. import com.goafanti.core.mybatis.BaseMybatisDao;
  32. import com.goafanti.core.mybatis.page.Pagination;
  33. import com.goafanti.core.shiro.token.TokenManager;
  34. import com.goafanti.customer.bo.BusinessListBo;
  35. import com.goafanti.organization.bo.OrganizationListOut;
  36. @Service
  37. public class AdminServiceImpl extends BaseMybatisDao<AdminMapper> implements AdminService {
  38. @Autowired
  39. private AdminMapper adminMapper;
  40. @Autowired
  41. private UserRoleMapper userRoleMapper;
  42. @Autowired
  43. private AdminLocationMapper adminLocationMapper;
  44. @Autowired
  45. private UserLockReleaseMapper userLockReleaseMapper;
  46. @Autowired
  47. private UserBusinessMapper userBusinessMapper;
  48. @Autowired
  49. private OrganizationManagementMapper organizationManagementMapper;
  50. @Resource(name = "passwordUtil")
  51. private PasswordUtil passwordUtil;
  52. @Override
  53. public List<Admin> selectAllAdmin() {
  54. return adminMapper.selectAllAdmin(null);
  55. }
  56. @Override
  57. public Admin selectByMobile(String mobile) {
  58. return adminMapper.selectByMobile(mobile);
  59. }
  60. @Override
  61. public Admin selectByPrimaryKey(String key) {
  62. return adminMapper.selectByPrimaryKey(key);
  63. }
  64. @SuppressWarnings("unchecked")
  65. @Override
  66. public Pagination<AdminListBo> listAdmin(Integer province, Integer number, String mobile, String name,String roleName,
  67. Integer pageNo, Integer pageSize) {
  68. Map<String, Object> params = new HashMap<>();
  69. if (StringUtils.isNotBlank(roleName))params.put("roleName", roleName);
  70. if (StringUtils.isNotBlank(mobile))params.put("mobile", mobile);
  71. if (StringUtils.isNotBlank(name))params.put("name", name);
  72. if (null != number)params.put("number", number);
  73. if (pageNo == null || pageNo < 0)pageNo = 1;
  74. if (pageSize == null || pageSize < 0 || pageSize > 10)pageSize = 10;
  75. if (province != null) params.put("province", province);
  76. return (Pagination<AdminListBo>) findPage("findAdminListByPage", "findAdminCount", params, pageNo,
  77. pageSize);
  78. }
  79. @Override
  80. public int insert(Admin ad) {
  81. return adminMapper.insert(ad);
  82. }
  83. @Override
  84. public int updateByPrimaryKeySelective(Admin ad, List<String> roleIds) {
  85. Map<String, Object> params = new HashMap<>();
  86. params.put("uid", ad.getId());
  87. params.put("roles", roleIds);
  88. if (ad.getId() != "1") {
  89. userRoleMapper.deleteByUserId(ad.getId());
  90. if (!roleIds.isEmpty()) {
  91. userRoleMapper.insertBatch(params);
  92. }
  93. TokenManager.clearUserAuthByUserId(ad.getId());
  94. }
  95. return adminMapper.updateByPrimaryKeySelective(ad);
  96. }
  97. @Override
  98. public int updateByPrimaryKey(Admin a) {
  99. return adminMapper.updateByPrimaryKeySelective(a);
  100. }
  101. @Override
  102. public AdminDetail selectAdminDetail(String id) {
  103. Admin a = adminMapper.selectByPrimaryKey(id);
  104. if (null == a) {
  105. return null;
  106. }
  107. AdminDetail ad = new AdminDetail();
  108. BeanUtils.copyProperties(a, ad);
  109. ad.setRoles(adminMapper.selectRolesByPrimaryKey(id));
  110. return null;
  111. }
  112. @Override
  113. public List<Admin> selectCognizanceConsultant() {
  114. return adminMapper.selectCognizanceConsultant();
  115. }
  116. @Override
  117. public List<Admin> selectPatentAuthor() {
  118. return adminMapper.selectPatentAuthor();
  119. }
  120. @Override
  121. public List<Admin> selectPatentPrincipal() {
  122. return adminMapper.selectPatentPrincipal();
  123. }
  124. @Override
  125. public List<Admin> selectCopyrightConsultant() {
  126. return adminMapper.selectCopyrightConsultant();
  127. }
  128. @Override
  129. public List<Admin> selectCognizancePrincipal() {
  130. return adminMapper.selectCognizancePrincipal();
  131. }
  132. @Override
  133. public List<Admin> selectCopyrightPrincipal() {
  134. return adminMapper.selectCopyrightPrincipal();
  135. }
  136. @Override
  137. public List<Admin> selectTechprojectConsultant() {
  138. return adminMapper.selectTechprojectConsultant();
  139. }
  140. @Override
  141. public List<Admin> selectTechprojectPrincipal() {
  142. return adminMapper.selectTechprojectPrincipal();
  143. }
  144. @Override
  145. public List<String> selectRoleByPrimaryKey(String uid) {
  146. return adminMapper.selectRoleByPrimaryKey(uid);
  147. }
  148. @Override
  149. public List<String> listAuditor() {
  150. return userRoleMapper.listAuditor();
  151. }
  152. @Override
  153. public Map<String, String> selectAccoutManager() {
  154. return disposeAdminList(adminMapper.selectAccoutManager());
  155. }
  156. @Override
  157. public Map<String, String> selectTechnician() {
  158. return disposeAdminList(adminMapper.selectTechnician());
  159. }
  160. @Override
  161. public Map<String, String> selectSalesman() {
  162. return disposeAdminList(adminMapper.selectSalesman());
  163. }
  164. @Override
  165. public Map<String, String> selectContractManager() {
  166. return disposeAdminList(adminMapper.selectContractManager());
  167. }
  168. @Override
  169. public Map<String, String> selectTechBroder() {
  170. return disposeAdminList(adminMapper.selectTechBroder());
  171. }
  172. @Override
  173. public int insertNewAdmin(Admin ad) {
  174. return adminMapper.insert(ad);
  175. }
  176. @Override
  177. public Map<String, String> listAdminSelect() {
  178. if (TokenManager.hasRole(AFTConstants.SUPERADMIN)) {
  179. return disposeAdminList(adminMapper.listAdminSelectBySuperAdmin());
  180. } else if (TokenManager.hasRole(AFTConstants.AREAADMIN)) {
  181. List<Integer> provinceList = adminLocationMapper
  182. .selectProvinceWhereCityIsNullByAdminId(TokenManager.getAdminId());
  183. List<Integer> cityList = adminLocationMapper.selectCityByAdminId(TokenManager.getAdminId());
  184. provinceList.addAll(cityList);
  185. return disposeAdminList(adminMapper.listAdminSelectByAreaAdmin(provinceList, cityList));
  186. }
  187. return null;
  188. }
  189. private Map<String, String> disposeAdminList(List<Admin> list) {
  190. Map<String, String> map = new TreeMap<String, String>();
  191. for (Admin o : list) {
  192. map.put(o.getId(), o.getName());
  193. }
  194. return map;
  195. }
  196. @Override
  197. public List<Admin> listAdminByName(String name) {
  198. return adminMapper.listAdminByName(name);
  199. }
  200. @Override
  201. public List<AdminListBo> selectDepartmentStaff(String departmentId, String name) {
  202. return adminMapper.selectDepartmentStaff( departmentId, name);
  203. }
  204. @Override
  205. public int updateLockAdmin() {
  206. int count=0;
  207. List<Admin> list=adminMapper.selectAllAdmin(null);//获取所有用户
  208. List<List<Admin>>aList=groupList(list);//拆分成多个
  209. String lockIds = "";
  210. for(List<Admin> al:aList){
  211. for (Admin a : al) {
  212. String pwd=a.getPassword();
  213. a.setPassword("123456");
  214. String pwd2=passwordUtil.getEncryptPwd(a);
  215. if (pwd.equals(pwd2)) {
  216. lockIds += a.getId() + ",";
  217. }
  218. }
  219. if(lockIds.length()>0){
  220. try {
  221. lockIds = "'" + lockIds.substring(0,lockIds.length()-1).replace(",", "','") + "'";
  222. count+= adminMapper.updateLockIds(lockIds);
  223. lockIds = "";
  224. Thread.sleep(1000);
  225. } catch (InterruptedException e) {
  226. LoggerUtils.error(getClass(), "未修改管理员锁定失败", e);
  227. }
  228. }
  229. }
  230. return count;
  231. }
  232. /*
  233. * List分割
  234. */
  235. public List<List<Admin>> groupList(List<Admin> list) {
  236. List<List<Admin>> listGroup = new ArrayList<List<Admin>>();
  237. int listSize = list.size();
  238. //子集合的长度
  239. int toIndex = 100;
  240. for (int i = 0; i < list.size(); i += toIndex) {
  241. if (i + toIndex > listSize) {
  242. toIndex = listSize - i;
  243. }
  244. List<Admin> newList = list.subList(i, i + toIndex);
  245. listGroup.add(newList);
  246. }
  247. return listGroup;
  248. }
  249. @Override
  250. public List<Admin> getListDefaultPassword(String depId) {
  251. List<Admin> list=adminMapper.selectAllAdmin(depId);
  252. List<Admin> list2=new ArrayList<>();
  253. for (Admin a : list) {
  254. String pwd=a.getPassword();
  255. a.setPassword("123456");
  256. String pwd2=passwordUtil.getEncryptPwd(a);
  257. if (pwd.equals(pwd2)) {
  258. list2.add(a);
  259. }
  260. }
  261. return list2;
  262. }
  263. @Override
  264. public List<Admin> getAdminRoleList(String roleName) {
  265. return adminMapper.getAdminRoleList(roleName);
  266. }
  267. @Override
  268. public int addFrequentContacts(String id) {
  269. String []ss=id.split(",");
  270. List<String> list=adminMapper.getaidFrequentContacts(TokenManager.getAdminId()==null?"1":TokenManager.getAdminId());
  271. for (String s : ss) {
  272. boolean flag=true;
  273. for (String s2 : list) {
  274. if (s.equals(s2)) {
  275. flag=false;
  276. }
  277. }
  278. if (flag) {
  279. AdminContacts a=new AdminContacts();
  280. a.setId(UUID.randomUUID().toString());
  281. a.setAid(TokenManager.getAdminId()==null?"1":TokenManager.getAdminId());
  282. a.setContactsId(s);
  283. adminMapper.addAdminContacts(a);
  284. }
  285. }
  286. return 1;
  287. }
  288. @SuppressWarnings("unchecked")
  289. @Override
  290. public Pagination<AdminListBo> frequentContactsList(String depId, String name,String roleName, Integer pageSize, Integer pageNo) {
  291. Map<String, Object> params = new HashMap<String, Object>();
  292. if(pageSize==null||pageSize<0)pageSize=10;
  293. if(pageNo==null||pageNo<0)pageNo=1;
  294. if (StringUtils.isNotBlank(depId)) params.put("depId", depId);
  295. if (StringUtils.isNotBlank(name)) params.put("name", name);
  296. if (StringUtils.isNotBlank(roleName)) params.put("roleName", roleName);
  297. params.put("aid", TokenManager.getAdminId()==null?"1":TokenManager.getAdminId());
  298. Pagination<AdminListBo> p = (Pagination<AdminListBo>)findPage("frequentContactsList", "frequentContactsCount", params, pageNo, pageSize);
  299. List<AdminListBo> list=(List<AdminListBo>)p.getList();
  300. for(AdminListBo i:list){
  301. i.setRoles(adminMapper.selectRolesByUid(i.getContactId()));
  302. }
  303. return p;
  304. }
  305. @Override
  306. public int deleteFrequentContacts(String id) {
  307. return adminMapper.deleteFrequentContacts(id);
  308. }
  309. @SuppressWarnings("unchecked")
  310. @Override
  311. public Pagination<AdminCustomerBo> selectAdminCustomerStatistics(String depId, String startTime, String endTime, Integer pageSize, Integer pageNo) {
  312. Map<String, Object> params = new HashMap<String, Object>();
  313. if(pageSize==null||pageSize<0)pageSize=10;
  314. if(pageNo==null||pageNo<0)pageNo=1;
  315. if (StringUtils.isNotBlank(depId)) params.put("depId", depId);
  316. if (StringUtils.isNotBlank(startTime)) params.put("startTime", startTime);
  317. if (StringUtils.isNotBlank(endTime)) params.put("endTime", endTime+" 23:59:59");
  318. return (Pagination<AdminCustomerBo>)findPage("selectAdminCustomerList", "selectAdminCustomerCount", params, pageNo, pageSize);
  319. }
  320. @Override
  321. public depCountBo selectAllUser(String depId, String startTime, String endTime,String aName) {
  322. depCountBo acb=new depCountBo();
  323. List<depCountBo >deps=new ArrayList<>();
  324. if (depId!=null){
  325. OrganizationListOut oo=organizationManagementMapper.selectAllById(depId);
  326. acb.setName(oo.getName());
  327. deps=organizationManagementMapper.selectBysuperName(acb.getName());
  328. }else {
  329. acb.setName("总计");
  330. deps=organizationManagementMapper.selectAll();
  331. }
  332. acb.setCompleteCount(0);
  333. acb.setInputCount(0);
  334. acb.setInterviewCount(0);
  335. acb.setReceiveCount(0);
  336. acb.setUserCount(0);
  337. //从一级开是计算待开发
  338. //迭代查出所有层级并计算
  339. acb.setList(nestingList(deps,startTime, endTime,aName));
  340. //计算顶层
  341. acb.setaList(organizationManagementMapper.getDepAll(acb.getName(),null,aName,startTime, endTime));
  342. sumCount(acb,0);
  343. return acb;
  344. }
  345. private List<depCountBo> nestingList(List<depCountBo>deps,String startTime, String endTime,String name) {
  346. List<depCountBo> res=new ArrayList<>();
  347. //循环取出其中
  348. for (depCountBo ab : deps) {
  349. //找出每一个部门的直部门,并嵌套下去,先获取然后将
  350. List<depCountBo >deps2=organizationManagementMapper.selectBysuperName(ab.getName());
  351. //查找所有部门的人的信息
  352. List<AdminCustomerBo> aList=organizationManagementMapper.getDepAll(ab.getName(),null,name,startTime, endTime);
  353. ab.setList(nestingList(deps2,startTime, endTime,name));
  354. ab.setaList(aList);
  355. //计算总数
  356. sumCount(ab,1);
  357. if (ab.getCompleteCount()!=0||ab.getInputCount()!=0||ab.getInterviewCount()!=0
  358. ||ab.getReceiveCount()!=0||ab.getUserCount()!=0) {
  359. res.add(ab);
  360. }
  361. }
  362. return res;
  363. }
  364. /**
  365. *
  366. * @param ab
  367. * @param type 0 部门计算 1人员计算
  368. */
  369. private void sumCount(depCountBo ab,int type ) {
  370. int completeCount=0,inputCount=0,interviewCount=0,receiveCount=0,userCount=0;
  371. if (ab.getList()!=null&&!ab.getList().isEmpty()) {
  372. for (depCountBo a : ab.getList()) {
  373. if ( a.getCompleteCount()!=0) completeCount+=a.getCompleteCount();
  374. if ( a.getInputCount()!=0) inputCount+=a.getInputCount();
  375. if ( a.getInterviewCount()!=0) interviewCount+=a.getInterviewCount();
  376. if ( a.getReceiveCount()!=0) receiveCount+=a.getReceiveCount();
  377. if ( a.getUserCount()!=0) userCount+=a.getUserCount();
  378. }
  379. }
  380. if (ab.getaList()!=null&&!ab.getaList().isEmpty()) {
  381. for (AdminCustomerBo a : ab.getaList()) {
  382. if ( a.getCompleteCount()!=0) completeCount+=a.getCompleteCount();
  383. if ( a.getInputCount()!=0) inputCount+=a.getInputCount();
  384. if ( a.getInterviewCount()!=0) interviewCount+=a.getInterviewCount();
  385. if ( a.getReceiveCount()!=0) receiveCount+=a.getReceiveCount();
  386. if ( a.getUserCount()!=0) userCount+=a.getUserCount();
  387. }
  388. }
  389. ab.setCompleteCount(completeCount);
  390. ab.setInputCount(inputCount);
  391. ab.setInterviewCount(interviewCount);
  392. ab.setReceiveCount(receiveCount);
  393. ab.setUserCount(userCount);
  394. }
  395. @SuppressWarnings("unchecked")
  396. @Override
  397. public Pagination<AdminCustomerDetailBo> selectAdminCustomerList(String aid, String startTime, String endTime,Integer type,
  398. Integer pageSize, Integer pageNo) {
  399. Map<String, Object> params = new HashMap<String, Object>();
  400. if(pageSize==null||pageSize<0)pageSize=10;
  401. if(pageNo==null||pageNo<0)pageNo=1;
  402. if (StringUtils.isNotBlank(aid)) params.put("aid", aid);
  403. if (type==null) params.put("type", 0);
  404. else params.put("type", type);
  405. if (StringUtils.isNotBlank(startTime)) params.put("startTime", startTime);
  406. if (StringUtils.isNotBlank(endTime)) params.put("endTime", endTime+" 23:59:59");
  407. return (Pagination<AdminCustomerDetailBo>)findPage("selectAdminCustomerDetailList", "selectAdminCustomerDetailCount", params, pageNo, pageSize);
  408. }
  409. @Override
  410. public int updatePrivateBusinessTransfer(String inputId, String uid, String pid) {
  411. String aid=TokenManager.getAdminId();
  412. int i=userLockReleaseMapper.updatePrivateBusinessTransfer( inputId, uid, pid,aid);
  413. if (i>0) {
  414. List<BusinessListBo> l=userBusinessMapper.selectBusinessProjectByUAPid(uid, inputId, pid);
  415. if (l.isEmpty()) {
  416. UserBusiness ub=new UserBusiness();
  417. ub.setId(UUID.randomUUID().toString());
  418. ub.setAid(inputId);
  419. ub.setUid(uid);
  420. ub.setBusinessProjectId(pid);
  421. ub.setCustomerStatus(4);
  422. ub.setFollowSituation(5);
  423. ub.setRemarks("转交客户业务触发");
  424. userBusinessMapper.insertSelective(ub);
  425. }
  426. }
  427. return i;
  428. }
  429. }