LoginController.java 47 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006
  1. package com.template.controller;
  2. import com.alibaba.fastjson.JSON;
  3. import com.baomidou.mybatisplus.core.metadata.IPage;
  4. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  5. import com.google.gson.Gson;
  6. import com.google.gson.reflect.TypeToken;
  7. import com.template.annotation.PassToken;
  8. import com.template.api.LoginControllerAPI;
  9. import com.template.common.utils.*;
  10. import com.template.config.WxOpenidConfig;
  11. import com.template.model.enumModel.*;
  12. import com.template.model.pojo.*;
  13. import com.template.model.request.changePasswordRequest;
  14. import com.template.model.request.loginRequest;
  15. import com.template.model.result.CommonResult;
  16. import com.template.model.result.PageUtils;
  17. import com.template.model.result.Wx_user;
  18. import com.template.model.vo.*;
  19. import com.template.services.*;
  20. import org.apache.commons.io.IOUtils;
  21. import org.slf4j.Logger;
  22. import org.slf4j.LoggerFactory;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.transaction.annotation.Transactional;
  25. import org.springframework.util.StringUtils;
  26. import org.springframework.validation.BindingResult;
  27. import org.springframework.web.bind.annotation.RequestBody;
  28. import org.springframework.web.bind.annotation.RestController;
  29. import javax.imageio.ImageIO;
  30. import javax.servlet.ServletOutputStream;
  31. import javax.servlet.http.HttpServletResponse;
  32. import java.awt.image.BufferedImage;
  33. import java.io.IOException;
  34. import java.net.URLEncoder;
  35. import java.util.*;
  36. /**
  37. * @Author: xwt
  38. * @Date: 2023/7/5 星期三 9:28
  39. * @Description: com.template.controller
  40. * @Version: 1.0
  41. */
  42. @RestController
  43. public class LoginController implements LoginControllerAPI {
  44. @Autowired
  45. private WeiXiaoUtil weiXiaoUtil;
  46. @Autowired
  47. private WxOpenidConfig wxOpenidConfig;
  48. @Autowired
  49. private AlumniUserService alumniUserService;
  50. @Autowired
  51. private AlumniOrgService alumniOrgService;
  52. @Autowired
  53. private SysCaptchaService sysCaptchaService;
  54. @Autowired
  55. private AlumniClubApplyService alumniClubApplyService;
  56. @Autowired
  57. private AlumniActivityService alumniActivityService;
  58. @Autowired
  59. private AlumniEndorseService alumniEndorseService;
  60. @Autowired
  61. private AlumniImageService alumniImageService;
  62. @Autowired
  63. private ActivityImageService activityImageService;
  64. @Autowired
  65. private AlumniClubService alumniClubService;
  66. private static Logger logger = LoggerFactory.getLogger(LoginController.class);
  67. @Override
  68. @PassToken
  69. @Transactional(rollbackFor = {Exception.class})
  70. public CommonResult Openid(String wxcode, String urlstr,String state, HttpServletResponse response) throws Exception {
  71. logger.info("微校授权:" + wxcode +";redirect_uri:" +urlstr+ ";H5:" + state);
  72. Gson gson = new Gson();
  73. String tokenUrl = "https://open.wecard.qq.com/connect/oauth2/token";
  74. Map<String, String> tokenParams = new HashMap<>();
  75. tokenParams.put("wxcode", wxcode);
  76. tokenParams.put("app_key", wxOpenidConfig.getAppid());
  77. tokenParams.put("app_secret", wxOpenidConfig.getAppkey());
  78. tokenParams.put("grant_type", wxOpenidConfig.getGranttype());
  79. tokenParams.put("redirect_uri", state); // H5
  80. logger.info("微校授权1:");
  81. // wecode换取token
  82. String respon = HttpsClient.post(tokenUrl, tokenParams);
  83. logger.info("微校授权2:" + respon);
  84. if (!StringUtils.hasText(respon)) {
  85. logger.info("微校授权异常信息:respon为空" + respon);
  86. return CommonResult.fail("微校授权异常信息");
  87. }
  88. HashMap<String, Object> tokenMap = gson.fromJson(respon, new TypeToken<HashMap<String, Object>>() {
  89. }.getType());
  90. logger.info("微校授权3");
  91. String accessToken = (String) tokenMap.get("access_token");
  92. logger.info("微校授权4");
  93. // token换取用户信息
  94. String userInfoUrl = "https://open.wecard.qq.com/connect/oauth/get-user-info";
  95. logger.info("微校授权5");
  96. Map<String, String> userInfoParam = new HashMap<>();
  97. logger.info("微校授权6");
  98. userInfoParam.put("access_token", accessToken);
  99. logger.info("微校授权7");
  100. String userinfo = HttpsClient.post(userInfoUrl, userInfoParam);
  101. logger.info("微校授权8");
  102. String card_number = null;
  103. String user_name = null;
  104. String phone = null;
  105. int identity_type = 0;
  106. String college = null;
  107. String grade = null;
  108. String profession = null;
  109. String campus = null;
  110. String classStr = null;
  111. Wx_user userinfos = gson.fromJson(userinfo, new TypeToken<Wx_user>() {
  112. }.getType());
  113. logger.info("微校授权9");
  114. logger.info("微校授权获取用户信息:" + userinfo);
  115. logger.info("微校授权获取用户信息类别:" + userinfos.getIdentity_type());
  116. try {
  117. card_number = userinfos.getCard_number();
  118. user_name = userinfos.getName();
  119. phone = userinfos.getTelephone();
  120. identity_type = userinfos.getIdentity_type();
  121. college = userinfos.getCollege();//学院
  122. grade = userinfos.getGrade();//学段 年级
  123. profession = userinfos.getProfession();//专业
  124. campus = userinfos.getCampus();
  125. classStr = userinfos.getClassStr();//班级
  126. } catch (Exception e) {
  127. logger.info("微校授权异常信息:" + e.getMessage());
  128. response.sendRedirect(wxOpenidConfig.getIp() + "/#/pages/404/404/?message=" + URLEncoder.encode("获取用户信息失败", "UTF-8"));
  129. return CommonResult.fail(e.getMessage());
  130. }
  131. if (card_number == null || card_number.equals("")) {
  132. response.sendRedirect(wxOpenidConfig.getIp() + "/#/pages/404/404/?message=" + URLEncoder.encode("获取用户信息失败", "UTF-8"));
  133. return CommonResult.fail("卡号为空,授权失败");
  134. }
  135. //根据卡号判断用户是否存在 根据卡号查询alumni_user表中的用户信息
  136. AlumniUser user = alumniUserService.queryDataByCardNumber(card_number);
  137. //region 学院 学段 专业 班级
  138. Integer collegeId = null;
  139. String collegeName = null;
  140. Integer gradeId = null;
  141. String gradeName = null;
  142. Integer professId = null;
  143. String professName = null;
  144. Integer classId = null;
  145. String className = null;
  146. //endregion
  147. //上下级关系 学院 -》 学段 -》 专业 -》 班级
  148. List<String> orgNames = new ArrayList<>();
  149. orgNames.add(college);//学院
  150. orgNames.add(grade);//学段 年级
  151. orgNames.add(profession);//专业
  152. orgNames.add(classStr);//班级
  153. List<AlumniOrg> aos = alumniOrgService.queryAlumniOrgsByName(orgNames);
  154. //region 原来的学院学段专业班级赋值
  155. //学段得拿父级做筛选 因为会有重名的
  156. // String collegeStr = college;
  157. // Optional<AlumniOrg> oCollege = aos.stream().filter(e -> e.getName().equals(collegeStr)).findFirst();
  158. // if (oCollege == null) {
  159. // CommonResult result = weiXiaoUtil.queryOrgs();
  160. // aos = new ArrayList<>();
  161. // aos = alumniOrgService.queryAlumniOrgsByName(orgNames);
  162. // }
  163. // Optional<AlumniOrg> fCollege = aos.stream().filter(e -> e.getName().equals(collegeStr)).findFirst();
  164. // if (fCollege != null && fCollege.isPresent()) {
  165. // collegeId = fCollege.get().getId();
  166. // collegeName = fCollege.get().getName();
  167. //
  168. // Optional<AlumniOrg> oG = aos.stream().filter(e -> e.getParentId().intValue() == fCollege.get().getId().intValue()).findFirst();
  169. // if (oG != null && oG.isPresent()) {
  170. // gradeId = oG.get().getId();
  171. // gradeName = oG.get().getName();
  172. //
  173. // Optional<AlumniOrg> pG = aos.stream().filter(e -> e.getParentId().intValue() == oG.get().getId().intValue()).findFirst();
  174. // if (pG != null && pG.isPresent()) {
  175. // professId = pG.get().getId();
  176. // professName = pG.get().getName();
  177. //
  178. // Optional<AlumniOrg> cG = aos.stream().filter(e -> e.getParentId().intValue() == pG.get().getId().intValue()).findFirst();
  179. // if (cG != null && cG.isPresent()) {
  180. // classId = cG.get().getId();
  181. // className = cG.get().getName();
  182. // }
  183. // }
  184. // }
  185. // }
  186. //endregion
  187. //region 学院学段专业班级赋值
  188. if (StringUtils.hasText(college)) {
  189. String collegeStr = college;
  190. Optional<AlumniOrg> oCollege = aos.stream().filter(e -> e.getName().equals(collegeStr)).findFirst();
  191. if (oCollege != null && oCollege.isPresent()) {
  192. collegeId = oCollege.get().getId();
  193. collegeName = college;
  194. } else if (StringUtils.hasText(college)) {
  195. AlumniOrg insertData = new AlumniOrg();
  196. insertData.setParentId(1);//父级是南昌交通学院
  197. insertData.setName(college);
  198. insertData.setTypeId(eOrgType.College.getValue());
  199. collegeId = alumniOrgService.insertOrg(insertData);
  200. collegeName = college;
  201. }
  202. if (collegeId != null && collegeId.intValue() != 0) {
  203. int cid = collegeId.intValue();
  204. Optional<AlumniOrg> oG = aos.stream().filter(e -> e.getParentId().intValue() == cid).findFirst();
  205. if (oG != null && oG.isPresent()) {
  206. gradeId = oG.get().getId();
  207. gradeName = oG.get().getName();
  208. } else if (StringUtils.hasText(grade)) {
  209. AlumniOrg insertData = new AlumniOrg();
  210. insertData.setParentId(cid);
  211. insertData.setName(grade);
  212. insertData.setTypeId(eOrgType.Period.getValue());
  213. gradeId = alumniOrgService.insertOrg(insertData);
  214. gradeName = grade;
  215. }
  216. if (gradeId != null && gradeId.intValue() != 0) {
  217. int gid = gradeId.intValue();
  218. Optional<AlumniOrg> pG = aos.stream().filter(e -> e.getParentId().intValue() == gid).findFirst();
  219. if (pG != null && pG.isPresent()) {
  220. professId = pG.get().getId();
  221. professName = pG.get().getName();
  222. } else if (StringUtils.hasText(profession)) {
  223. AlumniOrg insertData = new AlumniOrg();
  224. insertData.setParentId(gid);
  225. insertData.setName(profession);
  226. insertData.setTypeId(eOrgType.Major.getValue());
  227. professId = alumniOrgService.insertOrg(insertData);
  228. professName = profession;
  229. }
  230. if (professId != null && professId.intValue() != 0) {
  231. int pid = professId.intValue();
  232. Optional<AlumniOrg> cG = aos.stream().filter(e -> e.getParentId().intValue() == pid).findFirst();
  233. if (cG != null && cG.isPresent()) {
  234. classId = cG.get().getId();
  235. className = cG.get().getName();
  236. } else if (StringUtils.hasText(classStr)) {
  237. AlumniOrg insertData = new AlumniOrg();
  238. insertData.setParentId(pid);
  239. insertData.setName(classStr);
  240. insertData.setTypeId(eOrgType.ClassStr.getValue());
  241. classId = alumniOrgService.insertOrg(insertData);
  242. className = classStr;
  243. }
  244. }
  245. }
  246. }
  247. }
  248. //endregion
  249. logger.info("微校授权校区:" + campus);
  250. if (user == null) {
  251. try {
  252. user = new AlumniUser();
  253. user.setName(user_name);
  254. user.setCardNumber(card_number);
  255. user.setCollegeId(collegeId);
  256. user.setCollegeName(collegeName);
  257. user.setPeriodId(gradeId);
  258. user.setPeriodName(gradeName);
  259. user.setMajorId(professId);
  260. user.setMajorName(professName);
  261. user.setClassId(classId);
  262. user.setClassName(className);
  263. user.setPhone(phone);
  264. user.setTypeId(eAccountType.User.getValue());
  265. int num = alumniUserService.insertAlumniUser(user);
  266. if (num <= 0) {
  267. logger.info("微校授权失败,用户信息新增异常:" + user_name + "" + card_number);
  268. response.sendRedirect(wxOpenidConfig.getIp() + "/#/pages/404/404/?message=" + URLEncoder.encode("用户新增异常", "UTF-8"));
  269. throw new Exception("微校授权失败!");
  270. }
  271. user.setId(num);
  272. } catch (Exception e) {
  273. logger.info("微校授权异常信息:" + e.getMessage());
  274. response.sendRedirect(wxOpenidConfig.getIp() + "/#/pages/404/404/?message=" + URLEncoder.encode("获取用户信息失败", "UTF-8"));
  275. throw new Exception("微校授权失败!");
  276. }
  277. } else {
  278. //更新微校获取的学段(年级) 班级 学院 专业信息
  279. user.setCollegeId(collegeId);
  280. user.setCollegeName(collegeName);
  281. user.setPeriodId(gradeId);
  282. user.setPeriodName(gradeName);
  283. user.setMajorId(professId);
  284. user.setMajorName(professName);
  285. user.setClassId(classId);
  286. user.setClassName(className);
  287. user.setPhone(phone);
  288. int num = alumniUserService.updateAlumniUser(user);
  289. if (num <= 0) {
  290. logger.info("微校授权失败,用户信息更新异常:" + user_name + "" + card_number);
  291. response.sendRedirect(wxOpenidConfig.getIp() + "/#/pages/404/404/?message=" + URLEncoder.encode("用户更新异常", "UTF-8"));
  292. throw new Exception("微校授权失败!");
  293. }
  294. }
  295. wxLoginVo wlv = new wxLoginVo();
  296. wlv.setUserId(user.getId());
  297. wlv.setUserName(user.getName());
  298. wlv.setCardNumber(user.getCardNumber());
  299. wlv.setUserPhone(user.getPhone().replace("(+86)", ""));
  300. long expired = 1000 * 60 * 60 * 24 * 365;
  301. String token = JWTUtil.getToken(user, expired);
  302. wlv.setToken(token);
  303. logger.info("微校授权成功:" + user_name + "" + card_number);
  304. response.sendRedirect(wxOpenidConfig.getIp() + "/#/pages/index/index/?urlstr=" + urlstr+ "&token=" + token);
  305. return CommonResult.ok(wlv);
  306. }
  307. @Override
  308. @PassToken
  309. public void captcha(HttpServletResponse response, String uuid) throws IOException {
  310. response.setHeader("Cache-Control", "no-store, no-cache");
  311. response.setContentType("image/jpeg");
  312. //获取图片验证码
  313. BufferedImage image = sysCaptchaService.getCaptcha(uuid);
  314. if (image == null) {
  315. logger.info("验证码图片生成失败:" + uuid);
  316. }
  317. ServletOutputStream out = response.getOutputStream();
  318. ImageIO.write(image, "jpg", out);
  319. IOUtils.closeQuietly(out);
  320. }
  321. /**
  322. * 查看系统版本号
  323. *
  324. * @return
  325. */
  326. @Override
  327. @PassToken
  328. public CommonResult queryReduce() {
  329. //alumniUserService.createUser("yahahah",16);
  330. return CommonResult.ok("当前系统版本为:1V");
  331. }
  332. /**
  333. * 登录接口
  334. *
  335. * @param loginRequest
  336. * @return
  337. */
  338. /**
  339. * @param loginRequest account 账号
  340. * password 密码
  341. * uuid 唯一标识
  342. * captcha 验证码
  343. * @param bindingResult
  344. * @return
  345. */
  346. @Override
  347. @PassToken
  348. public CommonResult Login(@RequestBody loginRequest loginRequest, BindingResult bindingResult) {
  349. if (loginRequest == null) {
  350. return CommonResult.fail("请传递参数");
  351. }
  352. if (bindingResult.hasErrors()) {
  353. String st = paramUtils.getParamError(bindingResult);
  354. return CommonResult.fail(st);
  355. }
  356. AlumniUser result = alumniUserService.queryDataByAccount(loginRequest.getAccount());
  357. if (result == null) {
  358. return CommonResult.fail("账号或密码错误");
  359. }
  360. String encPassword = AesUtils.encrypt(loginRequest.getPassword());
  361. if (!encPassword.equals(result.getPassword())) {
  362. return CommonResult.fail("密码错误");
  363. }
  364. String token = JWTUtil.getToken(result, null);
  365. LoginVO login = new LoginVO();
  366. login.setToken(token);
  367. login.setTokenTtl(JWTUtil.getExpired());
  368. login.setUserId(result.getId());
  369. login.setUserName(result.getName());
  370. login.setPhone(result.getPhone());
  371. return CommonResult.ok("登录成功", login);
  372. }
  373. /**
  374. * 修改密码
  375. *
  376. * @param cpr oldPassword 旧密码
  377. * newPassword 新密码
  378. * confirmPassword 确认密码
  379. * @param userId
  380. * @param bindingResult
  381. * @return
  382. */
  383. @Override
  384. public CommonResult ChangePassword(Integer userId, changePasswordRequest cpr, BindingResult bindingResult) {
  385. if (bindingResult.hasErrors()) {
  386. String st = paramUtils.getParamError(bindingResult);
  387. return CommonResult.fail(st);
  388. }
  389. if (!cpr.getNewPassword().equals(cpr.getConfirmPassword())) {
  390. return CommonResult.fail("确认密码和新密码不一致!");
  391. }
  392. AlumniUser operateData = alumniUserService.getById(userId);
  393. if (operateData == null) {
  394. return CommonResult.fail("当前账号不合法!");
  395. }
  396. String encPassword = AesUtils.encrypt(cpr.getOldPassword());
  397. if (!encPassword.equals(operateData.getPassword())) {
  398. return CommonResult.fail("原密码错误!");
  399. }
  400. operateData.setPassword(cpr.getNewPassword());
  401. int result = alumniUserService.updateAlumniUser(operateData);
  402. return result > 0 ? CommonResult.ok("修改成功") : CommonResult.fail("修改失败");
  403. }
  404. @Override
  405. public CommonResult queryTypes() {
  406. List<ListDataVO> result = new ArrayList<>();
  407. for (int i = 1; i <= eApplyType.values().length; i++) {
  408. ListDataVO data = new ListDataVO();
  409. data.setId(i);
  410. data.setName(eApplyType.stringOf(i));
  411. result.add(data);
  412. }
  413. return CommonResult.ok(result);
  414. }
  415. //我发起的
  416. @Override
  417. public CommonResult queryIinitiatedApply(int currentPage, int pageCount, Integer userId, int typeId, String keyword) {
  418. AlumniUser au = alumniUserService.queryDataById(userId);
  419. if (au == null) {
  420. return CommonResult.fail("当前操作人已失效,无法查看数据");
  421. }
  422. IPage<InitiatedPageVo> accountData = new Page<>();
  423. PageUtils<InitiatedPageVo> finallResult = new PageUtils<InitiatedPageVo>(accountData);
  424. List<InitiatedPageVo> datas = new ArrayList<>();
  425. if (typeId == eApplyType.Org.getValue()) {//组织
  426. PageUtils<ApplyClubVo> pages = alumniClubApplyService.queryMyClubApplys(userId, currentPage, pageCount, keyword);
  427. for (ApplyClubVo pg : pages.getList()) {
  428. InitiatedPageVo data = new InitiatedPageVo();
  429. data.setId(pg.getId());
  430. data.setModelId(typeId);
  431. data.setModelName(eApplyType.stringOf(typeId));
  432. data.setUserName(au.getName());
  433. data.setPhone(au.getPhone());
  434. data.setOrgName(pg.getName());
  435. data.setIsPass(pg.getIsPass());
  436. data.setPassName(ePassType.stringOf(pg.getIsPass()));
  437. data.setCreateTime(pg.getCreateTime());
  438. datas.add(data);
  439. }
  440. finallResult.setList(datas);
  441. finallResult.setTotalPage(pages.getTotalPage());
  442. finallResult.setPageSize(pages.getPageSize());
  443. finallResult.setCurrentPage(pages.getCurrentPage());
  444. finallResult.setTotalCount(pages.getTotalCount());
  445. } else if (typeId == eApplyType.Activity.getValue()) {//活动
  446. PageUtils<AlumniMyActivityPageVo> pages = alumniActivityService.queryMyActivityApplyPages(currentPage, pageCount, userId, keyword);
  447. for (AlumniMyActivityPageVo pg : pages.getList()) {
  448. InitiatedPageVo data = new InitiatedPageVo();
  449. data.setId(pg.getId());
  450. data.setModelId(typeId);
  451. data.setModelName(eApplyType.stringOf(typeId));
  452. data.setUserName(au.getName());
  453. data.setPhone(au.getPhone());
  454. data.setOrgName(pg.getOrgName());
  455. data.setIsPass(pg.getIsPass());
  456. data.setPassName(ePassType.stringOf(pg.getIsPass()));
  457. data.setCreateTime(TimeExchange.DateToString(pg.getCreateTime(), "yyyy-MM-dd HH:mm:ss"));
  458. datas.add(data);
  459. }
  460. finallResult.setList(datas);
  461. finallResult.setTotalPage(pages.getTotalPage());
  462. finallResult.setPageSize(pages.getPageSize());
  463. finallResult.setCurrentPage(pages.getCurrentPage());
  464. finallResult.setTotalCount(pages.getTotalCount());
  465. } else if (typeId == eApplyType.Endorse.getValue()) {//母校代言
  466. PageUtils<ApplicationRecordPageVo> pages = alumniEndorseService.applicationMyRecordDatas(currentPage, pageCount, userId, keyword);
  467. for (ApplicationRecordPageVo pg : pages.getList()) {
  468. InitiatedPageVo data = new InitiatedPageVo();
  469. data.setId(pg.getId());
  470. data.setModelId(typeId);
  471. data.setModelName(eApplyType.stringOf(typeId));
  472. data.setUserName(au.getName());
  473. data.setPhone(au.getPhone());
  474. data.setOrgName(au.getOrgName());
  475. data.setIsPass(pg.getIsPass());
  476. data.setPassName(ePassType.stringOf(pg.getIsPass()));
  477. data.setCreateTime(pg.getCreateTime());
  478. datas.add(data);
  479. }
  480. finallResult.setList(datas);
  481. finallResult.setTotalPage(pages.getTotalPage());
  482. finallResult.setPageSize(pages.getPageSize());
  483. finallResult.setCurrentPage(pages.getCurrentPage());
  484. finallResult.setTotalCount(pages.getTotalCount());
  485. } else if (typeId == eApplyType.Image.getValue()) {//相册
  486. PageUtils<ImageMyPageVo> pages = alumniImageService.imageMyApplyPageDatas(currentPage, pageCount, userId, keyword);
  487. for (ImageMyPageVo pg : pages.getList()) {
  488. InitiatedPageVo data = new InitiatedPageVo();
  489. data.setId(pg.getId());
  490. data.setModelId(typeId);
  491. data.setModelName(eApplyType.stringOf(typeId));
  492. data.setUserName(au.getName());
  493. data.setPhone(au.getPhone());
  494. data.setOrgName(au.getOrgName());
  495. data.setIsPass(pg.getIsPass());
  496. data.setPassName(ePassType.stringOf(pg.getIsPass()));
  497. data.setCreateTime(TimeExchange.DateToString(pg.getCreateTime(), "yyyy-MM-dd HH:mm:ss"));
  498. datas.add(data);
  499. }
  500. finallResult.setList(datas);
  501. finallResult.setTotalPage(pages.getTotalPage());
  502. finallResult.setPageSize(pages.getPageSize());
  503. finallResult.setCurrentPage(pages.getCurrentPage());
  504. finallResult.setTotalCount(pages.getTotalCount());
  505. } else {//活动相册
  506. PageUtils<ActivityMyImageApplyVo> pages = activityImageService.activityMyImagePageDatas(currentPage, pageCount, userId, keyword);
  507. for (ActivityMyImageApplyVo pg : pages.getList()) {
  508. InitiatedPageVo data = new InitiatedPageVo();
  509. data.setId(pg.getId());
  510. data.setModelId(typeId);
  511. data.setModelName(eApplyType.stringOf(typeId));
  512. data.setUserName(au.getName());
  513. data.setPhone(au.getPhone());
  514. data.setOrgName(au.getOrgName());
  515. data.setIsPass(pg.getIsPass());
  516. data.setPassName(ePassType.stringOf(pg.getIsPass()));
  517. data.setCreateTime(pg.getCreateTime());
  518. datas.add(data);
  519. }
  520. finallResult.setList(datas);
  521. finallResult.setTotalPage(pages.getTotalPage());
  522. finallResult.setPageSize(pages.getPageSize());
  523. finallResult.setCurrentPage(pages.getCurrentPage());
  524. finallResult.setTotalCount(pages.getTotalCount());
  525. }
  526. return CommonResult.ok(finallResult);
  527. }
  528. //我审核的
  529. @Override
  530. public CommonResult queryIapproveApply(int currentPage, int pageCount, Integer userId, int typeId, String keyword) {
  531. AlumniUser au = alumniUserService.queryDataById(userId);
  532. if (au == null) {
  533. return CommonResult.fail("当前操作人已失效,无法查看数据");
  534. }
  535. if(au.getRoleId().intValue() == eRoleType.Super.getValue()){
  536. userId = null;
  537. }
  538. IPage<ApprovePageVo> accountData = new Page<>();
  539. PageUtils<ApprovePageVo> finallResult = new PageUtils<ApprovePageVo>(accountData);
  540. List<ApprovePageVo> datas = new ArrayList<>();
  541. if (typeId == eApplyType.Org.getValue()) {//组织
  542. PageUtils<ApplyClubVo> pages = alumniClubApplyService.queryApproveClubApplys(currentPage, pageCount, userId, keyword);
  543. for (ApplyClubVo pg : pages.getList()) {
  544. ApprovePageVo data = new ApprovePageVo();
  545. data.setId(pg.getId());
  546. data.setModelId(typeId);
  547. data.setModelName(eApplyType.stringOf(typeId));
  548. data.setUserName(au.getName());
  549. data.setPhone(au.getPhone());
  550. data.setOrgName(pg.getName());
  551. data.setIsPass(pg.getIsPass());
  552. String collegeName = au.getCollegeName() == null ? "" : au.getCollegeName();
  553. String periodName = au.getPeriodName() == null ? "" : "/" + au.getPeriodName();
  554. String majorName = au.getMajorName() == null ? "" : "/" + au.getMajorName();
  555. String className = au.getClassName() == null ? "" : "/" + au.getClassName();
  556. data.setCollegeName(collegeName + "" + periodName + "" + majorName + "" + className);
  557. data.setPassName(ePassType.stringOf(pg.getIsPass()));
  558. data.setCreateTime(pg.getCreateTime());
  559. datas.add(data);
  560. }
  561. finallResult.setList(datas);
  562. finallResult.setTotalPage(pages.getTotalPage());
  563. finallResult.setPageSize(pages.getPageSize());
  564. finallResult.setCurrentPage(pages.getCurrentPage());
  565. finallResult.setTotalCount(pages.getTotalCount());
  566. } else if (typeId == eApplyType.Activity.getValue()) {//活动
  567. PageUtils<AlumniMyActivityPageVo> pages = alumniActivityService.queryApproveActivityApplyPages(currentPage, pageCount, userId, keyword);
  568. for (AlumniMyActivityPageVo pg : pages.getList()) {
  569. ApprovePageVo data = new ApprovePageVo();
  570. data.setId(pg.getId());
  571. data.setModelId(typeId);
  572. data.setModelName(eApplyType.stringOf(typeId));
  573. data.setUserName(au.getName());
  574. data.setPhone(au.getPhone());
  575. data.setOrgName(pg.getOrgName());
  576. data.setTheme(pg.getTheme());
  577. data.setIsPass(pg.getIsPass());
  578. String collegeName = au.getCollegeName() == null ? "" : au.getCollegeName();
  579. String periodName = au.getPeriodName() == null ? "" : "/" + au.getPeriodName();
  580. String majorName = au.getMajorName() == null ? "" : "/" + au.getMajorName();
  581. String className = au.getClassName() == null ? "" : "/" + au.getClassName();
  582. data.setCollegeName(collegeName + "" + periodName + "" + majorName + "" + className);
  583. data.setPassName(ePassType.stringOf(pg.getIsPass()));
  584. data.setCreateTime(TimeExchange.DateToString(pg.getCreateTime(), "yyyy-MM-dd HH:mm:ss"));
  585. datas.add(data);
  586. }
  587. finallResult.setList(datas);
  588. finallResult.setTotalPage(pages.getTotalPage());
  589. finallResult.setPageSize(pages.getPageSize());
  590. finallResult.setCurrentPage(pages.getCurrentPage());
  591. finallResult.setTotalCount(pages.getTotalCount());
  592. } else if (typeId == eApplyType.Endorse.getValue()) {//母校代言
  593. PageUtils<ApplicationRecordPageVo> pages = alumniEndorseService.applicationApproveRecordDatas(currentPage, pageCount, userId, keyword);
  594. for (ApplicationRecordPageVo pg : pages.getList()) {
  595. ApprovePageVo data = new ApprovePageVo();
  596. data.setId(pg.getId());
  597. data.setModelId(typeId);
  598. data.setModelName(eApplyType.stringOf(typeId));
  599. data.setUserName(au.getName());
  600. data.setPhone(au.getPhone());
  601. data.setOrgName(au.getOrgName());
  602. data.setIsPass(pg.getIsPass());
  603. String collegeName = au.getCollegeName() == null ? "" : au.getCollegeName();
  604. String periodName = au.getPeriodName() == null ? "" : "/" + au.getPeriodName();
  605. String majorName = au.getMajorName() == null ? "" : "/" + au.getMajorName();
  606. String className = au.getClassName() == null ? "" : "/" + au.getClassName();
  607. data.setCollegeName(collegeName + "" + periodName + "" + majorName + "" + className);
  608. data.setPassName(ePassType.stringOf(pg.getIsPass()));
  609. data.setCreateTime(pg.getCreateTime());
  610. datas.add(data);
  611. }
  612. finallResult.setList(datas);
  613. finallResult.setTotalPage(pages.getTotalPage());
  614. finallResult.setPageSize(pages.getPageSize());
  615. finallResult.setCurrentPage(pages.getCurrentPage());
  616. finallResult.setTotalCount(pages.getTotalCount());
  617. } else if (typeId == eApplyType.Image.getValue()) {//相册
  618. PageUtils<ImageMyPageVo> pages = alumniImageService.imageApproveApplyPageDatas(currentPage, pageCount, userId, keyword);
  619. for (ImageMyPageVo pg : pages.getList()) {
  620. ApprovePageVo data = new ApprovePageVo();
  621. data.setId(pg.getId());
  622. data.setModelId(typeId);
  623. data.setModelName(eApplyType.stringOf(typeId));
  624. data.setUserName(au.getName());
  625. data.setPhone(au.getPhone());
  626. data.setOrgName(au.getOrgName());
  627. data.setIsPass(pg.getIsPass());
  628. String collegeName = au.getCollegeName() == null ? "" : au.getCollegeName();
  629. String periodName = au.getPeriodName() == null ? "" : "/" + au.getPeriodName();
  630. String majorName = au.getMajorName() == null ? "" : "/" + au.getMajorName();
  631. String className = au.getClassName() == null ? "" : "/" + au.getClassName();
  632. data.setCollegeName(collegeName + "" + periodName + "" + majorName + "" + className);
  633. data.setPassName(ePassType.stringOf(pg.getIsPass()));
  634. data.setCreateTime(TimeExchange.DateToString(pg.getCreateTime(), "yyyy-MM-dd HH:mm:ss"));
  635. datas.add(data);
  636. }
  637. finallResult.setList(datas);
  638. finallResult.setTotalPage(pages.getTotalPage());
  639. finallResult.setPageSize(pages.getPageSize());
  640. finallResult.setCurrentPage(pages.getCurrentPage());
  641. finallResult.setTotalCount(pages.getTotalCount());
  642. } else {//活动相册
  643. PageUtils<ActivityMyImageApplyVo> pages = activityImageService.activityApproveImagePageDatas(currentPage, pageCount, userId, keyword);
  644. for (ActivityMyImageApplyVo pg : pages.getList()) {
  645. ApprovePageVo data = new ApprovePageVo();
  646. data.setId(pg.getId());
  647. data.setModelId(typeId);
  648. data.setModelName(eApplyType.stringOf(typeId));
  649. data.setUserName(au.getName());
  650. data.setPhone(au.getPhone());
  651. data.setOrgName(au.getOrgName());
  652. data.setTheme(pg.getTheme());
  653. data.setIsPass(pg.getIsPass());
  654. String collegeName = au.getCollegeName() == null ? "" : au.getCollegeName();
  655. String periodName = au.getPeriodName() == null ? "" : "/" + au.getPeriodName();
  656. String majorName = au.getMajorName() == null ? "" : "/" + au.getMajorName();
  657. String className = au.getClassName() == null ? "" : "/" + au.getClassName();
  658. data.setCollegeName(collegeName + "" + periodName + "" + majorName + "" + className);
  659. data.setPassName(ePassType.stringOf(pg.getIsPass()));
  660. data.setCreateTime(pg.getCreateTime());
  661. datas.add(data);
  662. }
  663. finallResult.setList(datas);
  664. finallResult.setTotalPage(pages.getTotalPage());
  665. finallResult.setPageSize(pages.getPageSize());
  666. finallResult.setCurrentPage(pages.getCurrentPage());
  667. finallResult.setTotalCount(pages.getTotalCount());
  668. }
  669. return CommonResult.ok(finallResult);
  670. }
  671. @Override
  672. public CommonResult toExamineData(Integer userId, int typeId, int id, int isPass, String passValue) throws Exception {
  673. if (typeId == eApplyType.Org.getValue()) {//组织
  674. if (isPass == ePassType.Rejected.getValue() && !org.springframework.util.StringUtils.hasText(passValue)) {
  675. return CommonResult.fail("审批意见必填");
  676. }
  677. AlumniUser au = alumniUserService.queryDataById(userId);
  678. if (au == null) {
  679. return CommonResult.fail("当前操作人已失效,无法进行审核操作");
  680. }
  681. AlumniClubApply aca = alumniClubApplyService.queryDataById(id);
  682. if (aca == null) {
  683. return CommonResult.fail("组织审核数据已失效,无法进行审核操作");
  684. }
  685. if (aca.getIsPass().intValue() != ePassType.Approval.getValue()) {
  686. return CommonResult.fail("只有待审核数据能被审核");
  687. }
  688. AlumniUser cau = alumniUserService.queryDataById(Integer.valueOf(aca.getCreateUser()));
  689. if (cau == null) {
  690. return CommonResult.fail("申请人已失效,无法审核");
  691. }
  692. List<String> userIds = Arrays.asList(aca.getApplyUser().split(","));
  693. if (userIds != null && userIds.size() > 0) {
  694. if (!userIds.contains(String.valueOf(userId))) {
  695. return CommonResult.fail("当前操作人无法操作此审核单");
  696. }
  697. } else {
  698. return CommonResult.fail("当前操作人无法操作此审核单");
  699. }
  700. AlumniClub ac = alumniClubService.queryDataById(aca.getClubId());
  701. if (ac == null) {
  702. return CommonResult.fail("组织数据已失效,无法进行审核操作");
  703. }
  704. if (isPass == ePassType.Passed.getValue()) {
  705. au.setOrgId(ac.getId());
  706. au.setOrgName(ac.getName());
  707. }
  708. aca.setIsPass(isPass);
  709. aca.setPassValue(passValue);
  710. try {
  711. int result = alumniClubApplyService.updateAlumniClubApply(aca);
  712. if (result <= 0) {
  713. logger.info("审核更新失败,审核失败!");
  714. throw new Exception("审核更新失败,审核失败!");
  715. }
  716. int updateUser = alumniUserService.updateAlumniUser(au);
  717. if (updateUser <= 0) {
  718. logger.info("用户更新失败,审核失败!");
  719. throw new Exception("用户更新失败,审核失败!");
  720. }
  721. } catch (Exception e) {
  722. logger.info("入会审核组织异常信息:" + e.getMessage());
  723. throw new Exception("入会审核失败!");
  724. }
  725. //发送微校通知
  726. //审核完成后系统生成通知发送给用户:“
  727. // [申请人姓名],申请加入组织名称 [组织名称]。已通过或已拒绝”。
  728. List<String> cardnumbers = new ArrayList<>();
  729. cardnumbers.add(cau.getCardNumber());
  730. String content = cau.getName() + ",申请加入组织名称 " + ac.getName() + "。" + ePassType.stringOf(aca.getIsPass());
  731. CommonResult sendMessage = weiXiaoUtil.sendNotice(cardnumbers, "加入组织审核结果", "加入组织审核结果", content, null);
  732. if (!sendMessage.getCode().equals("200")) {
  733. logger.info("微校通知发送失败,cardnumber:" + JSON.toJSON(cardnumbers) + ",Content:" + content + ",id" + id);
  734. }
  735. } else if (typeId == eApplyType.Activity.getValue()) {//活动
  736. if (isPass == ePassType.Rejected.getValue() && !org.springframework.util.StringUtils.hasText(passValue)) {
  737. return CommonResult.fail("审批意见必填");
  738. }
  739. AlumniUser au = alumniUserService.queryDataById(userId);
  740. if (au == null) {
  741. return CommonResult.fail("当前操作人已失效,无法进行审核操作");
  742. }
  743. AlumniActivity aa = alumniActivityService.queryDataById(id);
  744. if (aa == null) {
  745. return CommonResult.fail("活动数据已失效,无法进行审核操作");
  746. }
  747. if (aa.getIsPass().intValue() != ePassType.Approval.getValue()) {
  748. return CommonResult.fail("只有待审核数据能被审核");
  749. }
  750. AlumniUser cau = alumniUserService.queryDataById(Integer.valueOf(aa.getCreateUser()));
  751. if (cau == null) {
  752. return CommonResult.fail("申请人已失效,无法审核");
  753. }
  754. //查看当前操作人是否在
  755. List<String> userIds = Arrays.asList(aa.getApplyUser().split(","));
  756. if (userIds != null && userIds.size() > 0) {
  757. if (!userIds.contains(String.valueOf(userId))) {
  758. return CommonResult.fail("当前操作人无法操作此审核单");
  759. }
  760. } else {
  761. return CommonResult.fail("当前操作人无法操作此审核单");
  762. }
  763. aa.setIsPass(isPass);
  764. aa.setPassTime(new Date());
  765. aa.setPassValue(passValue);
  766. int result = alumniActivityService.updateAlumniActivity(aa);
  767. if (result <= 0) {
  768. return CommonResult.fail("审核失败");
  769. }
  770. //发送微校通知
  771. //审核完成后系统生成通知发送给用户:“
  772. // [上传人姓名],母校代言。已通过或已拒绝。”
  773. List<String> cardnumbers = new ArrayList<>();
  774. cardnumbers.add(cau.getCardNumber());
  775. String content = cau.getName() + "," + aa.getTheme() + "活动。" + ePassType.stringOf(aa.getIsPass());
  776. CommonResult sendMessage = weiXiaoUtil.sendNotice(cardnumbers, "活动审核结果", "活动审核结果", content, null);
  777. if (!sendMessage.getCode().equals("200")) {
  778. logger.info("微校通知发送失败,cardnumber:" + JSON.toJSON(cardnumbers) + ",Content:" + content + ",id" + id);
  779. }
  780. } else if (typeId == eApplyType.Endorse.getValue()) {//母校代言
  781. if (isPass == ePassType.Rejected.getValue() && !org.springframework.util.StringUtils.hasText(passValue)) {
  782. return CommonResult.fail("审批意见必填");
  783. }
  784. AlumniUser au = alumniUserService.queryDataById(userId);
  785. if (au == null) {
  786. return CommonResult.fail("当前操作人已失效,无法进行审核操作");
  787. }
  788. AlumniEndorse ai = alumniEndorseService.queryDataById(id);
  789. if (ai == null) {
  790. return CommonResult.fail("母校代言审核数据已失效,无法进行审核操作");
  791. }
  792. AlumniUser cau = alumniUserService.queryDataById(Integer.valueOf(ai.getCreateUser()));
  793. if (cau == null) {
  794. return CommonResult.fail("申请人已失效,无法审核");
  795. }
  796. if (ai.getIsPass().intValue() != ePassType.Approval.getValue()) {
  797. return CommonResult.fail("只有待审核数据能被审核");
  798. }
  799. List<String> userIds = Arrays.asList(ai.getApplyUser().split(","));
  800. if (userIds != null && userIds.size() > 0) {
  801. if (!userIds.contains(String.valueOf(userId))) {
  802. return CommonResult.fail("当前操作人无法操作此审核单");
  803. }
  804. } else {
  805. return CommonResult.fail("当前操作人无法操作此审核单");
  806. }
  807. ai.setIsPass(isPass);
  808. ai.setPassValue(passValue);
  809. int result = alumniEndorseService.updateAlumniEndorse(ai);
  810. if (result <= 0) {
  811. return CommonResult.fail("审核失败");
  812. }
  813. //发送微校通知
  814. //审核完成后系统生成通知发送给用户:“
  815. // [上传人姓名],母校代言。已通过或已拒绝。”
  816. List<String> cardnumbers = new ArrayList<>();
  817. cardnumbers.add(cau.getCardNumber());
  818. String content = cau.getName() + ",母校代言。" + ePassType.stringOf(ai.getIsPass());
  819. CommonResult sendMessage = weiXiaoUtil.sendNotice(cardnumbers, "母校代言审核结果", "母校代言审核结果", content, null);
  820. if (!sendMessage.getCode().equals("200")) {
  821. logger.info("微校通知发送失败,cardnumber:" + JSON.toJSON(cardnumbers) + ",Content:" + content + ",id" + id);
  822. }
  823. } else if (typeId == eApplyType.Image.getValue()) {//相册
  824. if (isPass == ePassType.Rejected.getValue() && !org.springframework.util.StringUtils.hasText(passValue)) {
  825. return CommonResult.fail("审批意见必填");
  826. }
  827. AlumniUser au = alumniUserService.queryDataById(userId);
  828. if (au == null) {
  829. return CommonResult.fail("当前操作人已失效,无法进行审核操作");
  830. }
  831. AlumniImage ai = alumniImageService.queryDataById(id);
  832. if (ai == null) {
  833. return CommonResult.fail("校友相册审核数据已失效,无法进行审核操作");
  834. }
  835. AlumniUser cau = alumniUserService.queryDataById(Integer.valueOf(ai.getCreateUser()));
  836. if (cau == null) {
  837. return CommonResult.fail("申请人已失效,无法审核");
  838. }
  839. if (ai.getIsPass().intValue() != ePassType.Approval.getValue()) {
  840. return CommonResult.fail("只有待审核数据能被审核");
  841. }
  842. List<String> userIds = Arrays.asList(ai.getApplyUser().split(","));
  843. if (userIds != null && userIds.size() > 0) {
  844. if (!userIds.contains(String.valueOf(userId))) {
  845. return CommonResult.fail("当前操作人无法操作此审核单");
  846. }
  847. } else {
  848. return CommonResult.fail("当前操作人无法操作此审核单");
  849. }
  850. ai.setIsPass(isPass);
  851. ai.setPassValue(passValue);
  852. int result = alumniImageService.updateAlumniImage(ai);
  853. if (result <= 0) {
  854. return CommonResult.fail("审核失败");
  855. }
  856. //发送微校通知
  857. //审核完成后系统生成通知发送给用户:“
  858. // [上传人姓名],相册分类为 [相册分类]。已通过或已拒绝。”
  859. List<String> cardnumbers = new ArrayList<>();
  860. cardnumbers.add(cau.getCardNumber());
  861. String content = cau.getName() + ",相册分类为 " + ai.getCategoryName() + "。" + ePassType.stringOf(ai.getIsPass());
  862. CommonResult sendMessage = weiXiaoUtil.sendNotice(cardnumbers, "校友相册审核结果", "校友相册审核结果", content, null);
  863. if (!sendMessage.getCode().equals("200")) {
  864. logger.info("微校通知发送失败,cardnumber:" + JSON.toJSON(cardnumbers) + ",Content:" + content + ",id" + id);
  865. }
  866. } else {//活动相册
  867. if (isPass == ePassType.Rejected.getValue() && !org.springframework.util.StringUtils.hasText(passValue)) {
  868. return CommonResult.fail("审批意见必填");
  869. }
  870. AlumniUser au = alumniUserService.queryDataById(userId);
  871. if (au == null) {
  872. return CommonResult.fail("当前操作人已失效,无法进行审核操作");
  873. }
  874. ActivityImage ai = activityImageService.queryDataById(id);
  875. if (ai == null) {
  876. return CommonResult.fail("活动相册审核数据已失效,无法进行审核操作");
  877. }
  878. AlumniUser cau = alumniUserService.queryDataById(Integer.valueOf(ai.getCreateUser()));
  879. if (cau == null) {
  880. return CommonResult.fail("申请人已失效,无法审核");
  881. }
  882. if (ai.getIsPass().intValue() != ePassType.Approval.getValue()) {
  883. return CommonResult.fail("只有待审核数据能被审核");
  884. }
  885. List<String> userIds = Arrays.asList(ai.getApplyUser().split(","));
  886. if (userIds != null && userIds.size() > 0) {
  887. if (!userIds.contains(String.valueOf(userId))) {
  888. return CommonResult.fail("当前操作人无法操作此审核单");
  889. }
  890. } else {
  891. return CommonResult.fail("当前操作人无法操作此审核单");
  892. }
  893. ai.setIsPass(isPass);
  894. ai.setPassValue(passValue);
  895. int result = activityImageService.updateActivityImage(ai);
  896. if (result <= 0) {
  897. return CommonResult.fail("审核失败");
  898. }
  899. //发送微校通知
  900. //审核完成后系统生成通知发送给用户:“
  901. // [上传人姓名],母校代言。已通过或已拒绝。”
  902. // List<String> cardnumbers= new ArrayList<>();
  903. // cardnumbers.add(cau.getCardNumber());
  904. // String content = cau.getName()+",活动照片。"+ePassType.stringOf(ai.getIsPass());
  905. // CommonResult sendMessage = weiXiaoUtil.sendNotice(cardnumbers, "活动照片审核结果", "活动照片审核结果", content, null);
  906. // if (!sendMessage.getCode().equals("200")) {
  907. // logger.info("微校通知发送失败,cardnumber:"+ JSON.toJSON(cardnumbers)+",Content:"+content+",id"+id);
  908. // }
  909. }
  910. return CommonResult.ok("操作成功");
  911. }
  912. }