HomeRefactorController.java 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758
  1. package platform.modules.home.web;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.aliyuncs.exceptions.ClientException;
  4. import com.github.pagehelper.PageInfo;
  5. import com.xiaoleilu.hutool.crypto.SecureUtil;
  6. import io.jsonwebtoken.Claims;
  7. import org.apache.commons.lang3.StringUtils;
  8. import org.apache.shiro.authc.*;
  9. import org.apache.shiro.authc.pam.UnsupportedTokenException;
  10. import org.apache.shiro.subject.Subject;
  11. import org.omg.CORBA.INTERNAL;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.beans.factory.annotation.Value;
  14. import org.springframework.data.redis.core.HashOperations;
  15. import org.springframework.data.redis.core.RedisTemplate;
  16. import org.springframework.ui.ModelMap;
  17. import org.springframework.web.bind.annotation.*;
  18. import platform.common.Constant;
  19. import platform.common.annotation.OperationLog;
  20. import platform.common.base.controller.BaseController;
  21. import platform.common.base.model.CheckResult;
  22. import platform.common.base.model.DictionaryItem;
  23. import platform.common.base.service.DictionaryItemService;
  24. import platform.common.util.*;
  25. import platform.config.redis.RedisService;
  26. import platform.modules.api.dto.SyncUserDto;
  27. import platform.modules.api.service.SkyImageApiService;
  28. import platform.modules.build.entity.Company;
  29. import platform.modules.build.entity.CompanyContact;
  30. import platform.modules.build.entity.CompanyMaterial;
  31. import platform.modules.build.service.BuildInfoService;
  32. import platform.modules.build.service.CompanyContactService;
  33. import platform.modules.build.service.CompanyMaterialService;
  34. import platform.modules.build.service.CompanyService;
  35. import platform.modules.company.service.CompanyInfoManageService;
  36. import platform.modules.company.service.StockLandService;
  37. import platform.modules.government.dto.ActivitySearchCondition;
  38. import platform.modules.government.dto.FeedbackQuery;
  39. import platform.modules.government.dto.QueryCondition;
  40. import platform.modules.government.entity.*;
  41. import platform.modules.government.service.*;
  42. import platform.modules.home.dto.HomeRefactorDto;
  43. import platform.modules.home.dto.LoginDto;
  44. import platform.modules.home.request.FindRequest;
  45. import platform.modules.home.response.FindResponseProject;
  46. import platform.modules.home.service.HomeRefactorService;
  47. import platform.modules.sys.entity.*;
  48. import platform.modules.sys.service.*;
  49. import platform.modules.sys.shiro.UsernamePasswordToken;
  50. import platform.modules.sys.web.ResponseMessage;
  51. import sun.misc.BASE64Decoder;
  52. import javax.servlet.http.HttpServletRequest;
  53. import javax.servlet.http.HttpServletResponse;
  54. import java.text.ParseException;
  55. import java.text.SimpleDateFormat;
  56. import java.time.LocalDate;
  57. import java.time.format.DateTimeFormatter;
  58. import java.util.*;
  59. import static platform.common.Constant.HEAD_SESSION_STATUS_KEY;
  60. import static platform.common.Constant.HEAD_SESSION_STATUS_VALUE;
  61. /**
  62. * @author kevin
  63. * @since 2019/5/21 3:39 PM
  64. */
  65. @RestController
  66. @RequestMapping("/refactor/home")
  67. public class HomeRefactorController extends BaseController {
  68. @Autowired
  69. private HomeRefactorService homeRefactorService;
  70. @Autowired
  71. private ActivityService activityService;
  72. @Autowired
  73. private ProjectDeclarationService projectDeclarationService;
  74. @Autowired
  75. private ActivityFeedbackService activityFeedbackService;
  76. @Autowired
  77. private ActivityReviewService activityReviewService;
  78. @Autowired
  79. private StreetService streetService;
  80. @Autowired
  81. private DictionaryItemService dictionaryItemService;
  82. private static String profiles;
  83. @Value("${spring.profiles}")
  84. public void setProfiles(String param) {
  85. this.profiles = param;
  86. }
  87. @Autowired
  88. private VerificationCodeUtil verificationCodeUtil;
  89. @Autowired
  90. UserService userService;
  91. @Autowired
  92. private WaitToDoService waitToDoService;
  93. @Autowired
  94. private CompanyService companyService;
  95. @Autowired
  96. private AttachmentService attachmentService;
  97. @Autowired
  98. private SkyImageApiService skyImageApiService;
  99. @Autowired
  100. CompanyInfoManageService companyInfoManageService;
  101. @Autowired
  102. CompanyContactService companyContactService;
  103. @Autowired
  104. StockLandService stockLandService;
  105. @Autowired
  106. ApprovalService approvalService;
  107. @Autowired
  108. private CompanyMaterialService companyMaterialService;
  109. @Autowired
  110. private NavigationService navigationService;
  111. @Autowired
  112. private FriendLinkService friendLinkService;
  113. @Autowired
  114. private LogoService logoService;
  115. @Autowired
  116. private ContentService contentService;
  117. @Autowired
  118. private RedisTemplate redisTemplate;
  119. @Autowired
  120. private RedisService redisService;
  121. @Autowired
  122. private RedisUtil redisUtil;
  123. @Autowired
  124. private MenuService menuService;
  125. @Value("${carrier_hash_key}")
  126. private String carrier_hash_key;
  127. /**
  128. * 门户首页
  129. *
  130. * @return
  131. */
  132. @GetMapping("")
  133. public Object index() {
  134. HomeRefactorDto refactor = homeRefactorService.findHomeIndex();
  135. refactor.setFile_url(setFileUrl());
  136. return ResponseMessage.success("success", refactor);
  137. }
  138. /**
  139. * content列表
  140. *
  141. * @param request
  142. * @return
  143. */
  144. @PostMapping("/contentList")
  145. public Object contentList(@RequestBody FindRequest request) {
  146. PageInfo<Content> info = homeRefactorService.findContentList(request);
  147. return ResponseMessage.success("success", info);
  148. }
  149. /**
  150. * content详情
  151. *
  152. * @param id
  153. * @return
  154. */
  155. @GetMapping("/contentDetail/{id}")
  156. public Object contentDetail(@PathVariable Integer id) {
  157. Content content = homeRefactorService.contentDeatil(id);
  158. content.getFileDown().setDownload_uri(setFileUrl());
  159. return ResponseMessage.success("success", content);
  160. }
  161. /**
  162. * 专题活动列表
  163. *
  164. * @param request
  165. * @return
  166. */
  167. @PostMapping(value = "/activityList")
  168. public ResponseMessage findActivity(@RequestBody FindRequest request) {
  169. request.setFile_url(setFileUrl());
  170. PageInfo<ActivityDetail> pageInfo = activityService.findContentList(request);
  171. return ResponseMessage.success("查询成功", pageInfo);
  172. }
  173. /**
  174. * 活动回顾列表
  175. *
  176. * @param request
  177. * @return
  178. */
  179. @PostMapping(value = "/reviewList")
  180. public ResponseMessage findReviewList(@RequestBody QueryCondition request) {
  181. request.setFile_url(setFileUrl());
  182. PageInfo<ActivityReview> pageInfo = activityReviewService.findActivityReviewList(request);
  183. return ResponseMessage.success("查询成功", pageInfo);
  184. }
  185. /**
  186. * 专题活动详情
  187. *
  188. * @param id
  189. * @return
  190. */
  191. @GetMapping("/activityDetail/{id}")
  192. public Object activityDetail(@PathVariable Integer id, Integer user_id) {
  193. ActivityDetail activityDetail = homeRefactorService.findByActivityId(id, user_id);
  194. activityDetail.setFile_url(setFileUrl());
  195. return ResponseMessage.success("查询成功", activityDetail);
  196. }
  197. /**
  198. * 门户评论列表
  199. *
  200. * @param id
  201. * @return
  202. */
  203. @GetMapping("/feedbacks/{id}")
  204. public Object frontFeedbackList(@PathVariable Integer id, FeedbackQuery query) {
  205. //活动反馈与评论
  206. query.setActivity_id(id);
  207. PageInfo<ActivityFeedback> pageInfo = activityFeedbackService.findFeedbackList(query);
  208. return ResponseMessage.success("success", pageInfo);
  209. }
  210. /**
  211. * 项目申报列表
  212. *
  213. * @param request
  214. * @return
  215. */
  216. @PostMapping(value = "/projectList")
  217. public ResponseMessage findProject(@RequestBody FindRequest request) {
  218. PageInfo<ProjectDeclaration> pageInfo = projectDeclarationService.findProjectList(request);
  219. return ResponseMessage.success("查询成功", pageInfo);
  220. }
  221. /**
  222. * 项目申报详情
  223. *
  224. * @param id
  225. * @return
  226. */
  227. @GetMapping("/projectDetail/{id}/{isFilling}")
  228. public Object projectDetail(@PathVariable Integer id, @PathVariable Integer isFilling) {
  229. return ResponseMessage.success("查询成功", homeRefactorService.findProjectDetail(id, isFilling));
  230. }
  231. @PostMapping(value = "/getDayEventList")
  232. public Object getDayEventList(@RequestBody ActivityDetail activityDetail) {
  233. log.info("获取一天内的所有活动");
  234. String startTime = activityDetail.getActivity_starttime();
  235. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  236. try {
  237. Date parse = sdf.parse(startTime);
  238. startTime = sdf.format(parse);
  239. } catch (ParseException e) {
  240. e.printStackTrace();
  241. }
  242. List<ActivityDetail> dates = activityService.getEventList(startTime);
  243. return ResponseMessage.success("success", dates);
  244. }
  245. @GetMapping(value = "/activityList/time")
  246. @ResponseBody
  247. public ResponseMessage list(String startTime, String endTime) {
  248. ActivitySearchCondition param = new ActivitySearchCondition();
  249. param.setStartTime(startTime);
  250. param.setEndTime(endTime);
  251. List<ActivityDetail> list = activityService.findAvtivityListByTime(param);
  252. return ResponseMessage.success("success", list);
  253. }
  254. /**
  255. * 新首页查询 通知公告(其实是content内容管理) 和 活动
  256. */
  257. @GetMapping("/search/global")
  258. public Object searchGlobal(@RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
  259. @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
  260. @RequestParam(value = "keyword", defaultValue = "") String keyword) {
  261. return ResponseMessage.success("success", homeRefactorService.searchGlobal(pageNum, pageSize, keyword));
  262. }
  263. @GetMapping("/search/latest")
  264. public Object searchLatest(@RequestParam(value = "size", defaultValue = "10", required = false) Integer size) {
  265. return ResponseMessage.success("success", homeRefactorService.searchLatest(size));
  266. }
  267. @GetMapping(value = "/param/register")
  268. @ResponseBody
  269. public ResponseMessage registerParam(HttpServletRequest request, HttpServletResponse response, ModelMap modelMap) {
  270. log.info("注册页面参数!");
  271. //Ajax登录超时校验,如果超时,进行前台响应提示
  272. if (WebUtil.isAjaxRequest(request)) {
  273. response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
  274. response.setHeader(HEAD_SESSION_STATUS_KEY, HEAD_SESSION_STATUS_VALUE);
  275. response.setContentType("text/html;charset=utf-8");
  276. }
  277. List<Street> streetList = streetService.findList();
  278. modelMap.addAttribute("streetList", streetList);
  279. //查询企业性质
  280. List<DictionaryItem> companyTypeList = dictionaryItemService.findListByTypeName(Constant.DictionaryType.COMPANY_TYPE);
  281. modelMap.put("companyTypeList", companyTypeList);
  282. //modelMap.put("companyTypeList", buildTypeService.findList(Constant.DictType.COMPANY));
  283. //查询币种单位数据
  284. List<DictionaryItem> itemList = dictionaryItemService.findListByTypeName(Constant.DictionaryType.CURRENCY_UNIT);
  285. modelMap.put("itemList", itemList);
  286. //查询行业类型
  287. List<DictionaryItem> industryTypeList = dictionaryItemService.findListByTypeName(Constant.DictionaryType.INDUSTRY_TYPE);
  288. modelMap.put("industryTypeList", industryTypeList);
  289. return ResponseMessage.success("success", modelMap);
  290. }
  291. /**
  292. * 个人注册
  293. * 20200514 新门户使用
  294. *
  295. * @param userInfo
  296. * @return
  297. */
  298. @PostMapping("/personalRegister")
  299. @ResponseBody
  300. public ResponseMessage personalRegister(@RequestBody User userInfo) {
  301. try {
  302. if (!Constant.Environment.PROD_TEST.equals(profiles) && !Constant.Environment.TEST.equals(profiles)) {
  303. if (!verificationCodeUtil.validateVerificationCode(userInfo.getPhone(), userInfo.getValidateNum())) {
  304. return ResponseMessage.error("验证码错误!");
  305. }
  306. }
  307. User user = new User();
  308. user.setUser_name(userInfo.getUser_name());
  309. user.setNick_name(userInfo.getNick_name().trim());
  310. user.setPassword(SecureUtil.md5().digestHex(userInfo.getPassword().trim()));
  311. user.setPhone(userInfo.getPhone());
  312. user.setUser_type(Constant.UserType.PERSONAL);
  313. user.setIs_register(1);
  314. user.setFist_login(1);
  315. user.setIs_start(true);
  316. user.setIs_admin(false);
  317. user.setCreate_name(userInfo.getUser_name());
  318. user.setCreate_time(DateUtil.getTimeString(new Date()));
  319. userService.insertAndGetId(user);
  320. } catch (Exception e) {
  321. e.printStackTrace();
  322. return ResponseMessage.error("注册失败" + e.getMessage());
  323. }
  324. return ResponseMessage.success("注册成功");
  325. }
  326. /**
  327. * 企业注册
  328. * 20200514 新门户使用
  329. *
  330. * @param information
  331. * @return
  332. * @throws Exception
  333. */
  334. @PostMapping("/register")
  335. @ResponseBody
  336. public ResponseMessage register(@RequestBody Company information) {
  337. try {
  338. Approval approval = new Approval();
  339. if (!Constant.Environment.PROD_TEST.equals(profiles) && !Constant.Environment.TEST.equals(profiles)) {
  340. if (!verificationCodeUtil.validateVerificationCode(information.getPhone(), information.getValidateNum())) {
  341. return ResponseMessage.error("验证码错误!");
  342. }
  343. }
  344. Street street = new Street();
  345. if (null != information.getStreet_id()) {
  346. street = streetService.findById(information.getStreet_id());
  347. }
  348. /*
  349. if (StringUtils.isNotBlank(stockLandService.getCompanyRegister(information.getStreet_id()))) {
  350. approval.setNextchecker(stockLandService.getCompanyRegister(information.getStreet_id()));
  351. }
  352. //20180418-yl- 街道没有审批人也可以注册,分菜单给某角色,某个角色的人就可以审批
  353. else {
  354. return ResponseMessage.error("注册失败,本公司所属街道企业注册审核组没有配置人员,请联系街道管理员配置!");
  355. }*/
  356. approval.setOper_type(Constant.OperType.SUBMIT);
  357. approval.setType(Constant.DictionaryType.COMPANY_REGISTER);
  358. information.setIs_start(false);
  359. information.setIs_register(0);
  360. //查看是否已经存在企业
  361. // Company company = companyService.findByParkIdAndCompanyName(information.getCompany_name(), information.getBuild_id());
  362. Company company = companyService.findByCompanyName(information.getCompany_name());
  363. if (company != null) {
  364. information.setId(company.getId());
  365. information.setIs_register(0);
  366. companyService.update(information);
  367. } else {
  368. information.setStreet_name(street.getName());
  369. companyService.insertAndGetId(information);
  370. }
  371. approval.setApply_id(information.getId());
  372. approval.setDeal_time(DateUtil.getTimeString(new Date()));
  373. approval.setDel_flag(false);
  374. approval.setBefore_approvalstatus("0");
  375. approval.setCreate_name(information.getUser_name());
  376. //approvalService.insertAndGetId(approval);
  377. /*List<CompanyContact> companyContactList = information.getCompanyContacts();
  378. if (companyContactList != null && companyContactList.size() > 0) {
  379. for (CompanyContact companyContacts : companyContactList) {
  380. companyContacts.setCompany_id(information.getId());
  381. companyContactService.saveSelective(companyContacts);
  382. }
  383. }*/
  384. CompanyContact contact = new CompanyContact();
  385. contact.setCompany_id(information.getId());
  386. contact.setContact(information.getUser_name());
  387. contact.setPhone(information.getPhone());
  388. contact.setDel_flag(false);
  389. companyContactService.saveSelective(contact);
  390. List<CompanyContact> companyContactList = information.getContactList();
  391. if (companyContactList != null && companyContactList.size() > 0) {
  392. for (CompanyContact companyContacts : companyContactList) {
  393. if (companyContacts != null) {
  394. companyContacts.setCompany_id(information.getId());
  395. companyContactService.saveSelective(companyContacts);
  396. }
  397. }
  398. }
  399. List<FileDown> files = information.getFileDownList();
  400. if (files != null && files.size() > 0) {
  401. for (FileDown file : files) {
  402. if (file != null) {
  403. //attachmentDao.deleteByBusiness(Constant.Attachment.COMPANY_MATERIAL, information.getId());
  404. attachmentService.updateAttachment(Constant.Attachment.COMPANY_MATERIAL, information.getId(), file.getFile_id());
  405. CompanyMaterial companyMaterial = new CompanyMaterial();
  406. companyMaterial.setAttachment_id(file.getFile_id());
  407. companyMaterial.setCompany_id(information.getId());
  408. companyMaterial.setFile_name(file.getFile_name());
  409. companyMaterialService.insertAndGetId(companyMaterial);
  410. }
  411. }
  412. }
  413. User user = new User();
  414. user.setUser_name(information.getUser_name());
  415. user.setNick_name(information.getNick_name().trim());
  416. user.setPassword(SecureUtil.md5().digestHex(information.getPassword().trim()));
  417. user.setPhone(information.getPhone());
  418. user.setUser_type(Constant.UserType.COMPANY);
  419. user.setIs_register(0);
  420. user.setFist_login(1);
  421. user.setIs_start(false);
  422. user.setIs_admin(true);
  423. user.setCompany_id(information.getId());
  424. user.setCompany_name(information.getCompany_name());
  425. if (null != information.getBuild_id()) {
  426. user.setBuild_id(information.getBuild_id());
  427. user.setBuild_name(information.getBuild_name());
  428. }
  429. user.setStreet_id(information.getStreet_id());
  430. user.setStreet_name(information.getStreet_name());
  431. user.setCreate_name(information.getUser_name());
  432. userService.insertAndGetId(user);
  433. approval.setCreate_by(user.getId());
  434. approvalService.insertAndGetId(approval);
  435. information.setCreate_by(user.getId());
  436. information.setCreate_name(user.getUser_name());
  437. companyService.updateSelective(information);
  438. //同步信息天启
  439. SyncUserDto dto = new SyncUserDto();
  440. dto.setAction(Constant.METHOD_STATUS.INSERT);
  441. dto.setOldUserName("");
  442. dto.setUserName(user.getUser_name());
  443. dto.setUserLoginName(user.getNick_name());
  444. dto.setPassword(information.getPassword().trim());
  445. dto.setCompanyName(information.getCompany_name());
  446. if (null != information.getStreet_id()) {
  447. dto.setStreetName(street.getName());
  448. }
  449. dto.setToken(skyImageApiService.accessToken());
  450. skyImageApiService.syncUserInfo(dto);
  451. //新增街道待办
  452. addWaitToDo(information);
  453. //发送短信
  454. Map<String, String> params = new HashMap<>();
  455. params.put("user", user.getNick_name());
  456. params.put("street", information.getStreet_name());
  457. String templatCode = Constant.SMS_TemplateCode.REGISTER_REMIND;
  458. String templateParam = JSONObject.toJSONString(params);
  459. AlibabaSMSUtil.sendSMS(information.getPhone(), templatCode, Constant.SINGNAMW, templateParam);
  460. } catch (Exception e) {
  461. e.printStackTrace();
  462. return ResponseMessage.error("注册失败" + e.getMessage());
  463. }
  464. return ResponseMessage.success("您的申请正在属地审核中,审核通过后,您将收到消息提醒。");
  465. }
  466. /**
  467. * 用户登陆
  468. * 先根据用户名查询出一条用户记录再对比密码是否正确可以防止sql注入
  469. * 20200514 新门户使用
  470. *
  471. * @param login
  472. * @return
  473. */
  474. @OperationLog(value = "用户登录")
  475. @PostMapping(value = "/login")
  476. @ResponseBody
  477. public ResponseMessage login(@RequestBody LoginDto login) {
  478. String username = login.getUsername();
  479. String password = login.getPassword();
  480. Boolean isMobile = login.getIsMobile();
  481. try {
  482. //changeNewSession(request);
  483. BASE64Decoder decoder = new BASE64Decoder();
  484. username = new String(decoder.decodeBuffer(username), "UTF-8");
  485. password = new String(decoder.decodeBuffer(password), "UTF-8");
  486. //获取当前的Subject
  487. Subject currentUser = ShiroUtils.getSubject();
  488. UsernamePasswordToken token = new UsernamePasswordToken(username, password, isMobile, false);
  489. //在调用了login方法后,SecurityManager会收到AuthenticationToken,并将其发送给已配置的Realm执行必须的认证检查
  490. //每个Realm都能在必要时对提交的AuthenticationTokens作出反应
  491. //所以这一步在调用login(token)方法时,它会走到MyRealm.doGetAuthenticationInfo()方法中,具体验证方式详见此方法
  492. log.info("对用户进行登录验证..验证开始! username = {}", username);
  493. currentUser.login(token);
  494. //验证是否登录成功
  495. if (currentUser.isAuthenticated()) {
  496. log.info("对用户进行登录验证..验证通过! username = {}", username);
  497. ModelMap modelMap = new ModelMap();
  498. this.commonObject(modelMap, false);
  499. //获取token
  500. modelMap.put("token", userService.createToken());
  501. return ResponseMessage.success(Constant.USER_LOGIN_IN, modelMap);
  502. }
  503. } catch (UnknownAccountException e) { //账号不存在
  504. log.info("! username = {}", username);
  505. return ResponseMessage.error(Constant.USER_NOT_FIND);
  506. } catch (IncorrectCredentialsException e) {
  507. log.info("对用户进行登录验证..验证未通过,错误的凭证! username = {}", username);
  508. return ResponseMessage.error(Constant.USER_INVALID);
  509. } catch (LockedAccountException e) {
  510. log.info("对用户进行登录验证..验证未通过,账户已锁定! username = {}", username);
  511. return ResponseMessage.error(Constant.USER_HAS_REGISTERING);
  512. } catch (ExcessiveAttemptsException eae) {
  513. log.info("对用户进行登录验证..验证未通过,错误次数过多! username = {}", username);
  514. return ResponseMessage.error(Constant.USER_ERROR_MANY);
  515. } catch (AuthenticationException e) {
  516. return ResponseMessage.error(Constant.SYSTEM_ERRORS);
  517. } catch (Exception e) {
  518. log.error("对用户进行登录验证失败! username = {} e = {}", username, e);
  519. }
  520. return ResponseMessage.error(Constant.SYSTEM_ERRORS);
  521. }
  522. /**
  523. * 用户登出
  524. * 20200514 新门户使用
  525. */
  526. @OperationLog(value = "用户登出")
  527. @GetMapping(value = "/logout")
  528. @ResponseBody
  529. public ResponseMessage logout() {
  530. ShiroUtils.logout();
  531. return ResponseMessage.success("登出成功!");
  532. }
  533. /**
  534. * 账号名是否存在
  535. */
  536. @ResponseBody
  537. @GetMapping(value = "/existNickName")
  538. public ResponseMessage getNickName(@RequestParam("nick_name") String nickName) {
  539. boolean flag = false;
  540. log.debug("检验账号名是否存在! id= {}, nickName= {}", nickName);
  541. User record = userService.findByNickName(nickName);
  542. if (null != record) {
  543. flag = true;
  544. }
  545. log.info("检验账号名是否存在! flag = {}", flag);
  546. return ResponseMessage.success("success", flag);
  547. }
  548. //企业注册审核待办
  549. private void addWaitToDo(Company information) {
  550. if (null != information.getStreet_id()) {
  551. List<User> users = userService.findUsersByStreetId(information.getStreet_id());
  552. List<User> pusers = userService.findUsersByPermission("REGISTER_APPROVE");
  553. for (User user : users) {
  554. for (User puser : pusers) {
  555. if (Objects.equals(user.getId(), puser.getId())) {
  556. waitToDoService.newTODO("企业注册审核", "/register/approval?id=" + information.getId(), Constant.WaitToDo_OperType.AUDIT, information.getId(),
  557. Constant.DictionaryType.COMPANY_REGISTER, "", user.getId().toString(), Constant.WaitToDo_IsSerial.IS_SERIAL, false);
  558. //发送短信提醒
  559. Map<String, String> params = new HashMap<>();
  560. params.put("companyName", information.getCompany_name());
  561. String templatCode = Constant.SMS_TemplateCode.S_REGISTER_REMIND;
  562. String templateParam = JSONObject.toJSONString(params);
  563. try {
  564. AlibabaSMSUtil.sendSMS(information.getPhone(), templatCode, Constant.SINGNAMW, templateParam);
  565. } catch (ClientException | InterruptedException e) {
  566. e.printStackTrace();
  567. }
  568. }
  569. }
  570. }
  571. }
  572. }
  573. public void commonObject(ModelMap modelMap, Boolean isNav) throws Exception {
  574. Logo logo = logoService.findLogo();
  575. modelMap.put("fileUrl", setFileUrl());
  576. modelMap.put("logo", logo);
  577. modelMap.put("isLogin", ShiroUtils.isLogin());
  578. modelMap.put("userType", ShiroUtils.getUserType());
  579. modelMap.put("userName", ShiroUtils.getNickName());
  580. modelMap.put("userId", ShiroUtils.getUserId());
  581. User user = ShiroUtils.getUserEntity();
  582. if (user != null) {
  583. modelMap.put("firstLogin", user.getFist_login());
  584. if (org.apache.commons.lang3.StringUtils.isBlank(user.getUser_name()) || org.apache.commons.lang3.StringUtils.isBlank(user.getNick_name()) || StringUtils.isBlank(user.getPhone())) {
  585. modelMap.put("isComplete", false);
  586. } else {
  587. modelMap.put("isComplete", true);
  588. }
  589. }
  590. //获取有亲链接
  591. List<FriendLink> friendLinks = friendLinkService.findList();
  592. modelMap.put("friendLinks", friendLinks);
  593. if (isNav) {
  594. // 获取导航
  595. List<Navigation> navigations = navigationService.findList();
  596. modelMap.put("navigations", navigations);
  597. }
  598. }
  599. /**
  600. * 随机获取n个有图片的通知
  601. */
  602. @OperationLog(value = "随机获取n个有图片的通知")
  603. @GetMapping(value = "/content/random/{num}")
  604. @ResponseBody
  605. public ResponseMessage random(@PathVariable("num") Integer num) {
  606. ModelMap modelMap = new ModelMap();
  607. List<Map> list = contentService.randomPic(num);
  608. modelMap.put("fileUrl", setFileUrl());
  609. modelMap.put("contentList", list);
  610. return ResponseMessage.success("success", modelMap);
  611. }
  612. /**
  613. * 获取存量用地后台跳转链接
  614. */
  615. @OperationLog(value = "获取存量用地后台跳转链接")
  616. @GetMapping(value = "/stockland/url")
  617. @ResponseBody
  618. public ResponseMessage stocklandUrl(HttpServletRequest request) {
  619. String authorization = request.getHeader("Authorization");
  620. if (StringUtils.isEmpty(authorization)) {
  621. throw new NullPointerException("token不能为空");
  622. }
  623. if (!authorization.startsWith("Bearer")) {
  624. throw new UnsupportedTokenException("token不合法");
  625. }
  626. String verifyToken = authorization.substring(7, authorization.length());
  627. //验证JWT的签名,返回CheckResult对象
  628. CheckResult checkResult = JWTUtil.validateJWT(verifyToken);
  629. if (checkResult.getSuccess()) {
  630. Claims claims = checkResult.getClaims();
  631. String token_key = claims.getIssuer();
  632. String usertId = claims.getId();
  633. HashOperations<String, String, Object> hashOperations = redisTemplate.opsForHash();
  634. String token = (String) hashOperations.get(carrier_hash_key, token_key);
  635. if (token != null && !token.equals(authorization)) {
  636. return ResponseMessage.error("无效的token");
  637. }
  638. //获取用户权限
  639. //获取主身份信息
  640. User user = userService.findById(Integer.parseInt(usertId));
  641. if (user != null) {
  642. List<Menu> menus;
  643. if (user.getIs_admin()) {
  644. Menu menu = new Menu();
  645. menu.setUser_type(user.getUser_type());
  646. menus = menuService.findListByWhere(menu);
  647. } else {
  648. menus = menuService.findListMenuByUserId(user.getId(), user.getUser_type());
  649. }
  650. //单独定一个集合对象
  651. Map<String, String> map = new HashMap<>();
  652. if (menus != null) {
  653. for (Menu permission : menus) {
  654. if (Objects.equals(permission.getPermission(), "C_STOCKLAND_MANAGE")) {
  655. map.put("moudle","C_SERVICE_MANAGE");
  656. map.put("menu",permission.getPermission());
  657. } else if (Objects.equals(permission.getPermission(), "S_AREA_APPROVE")) {
  658. map.put("moudle","S_SERVICE_MANAGE");
  659. map.put("menu",permission.getPermission());
  660. } else if (Objects.equals(permission.getPermission(), "G_APPROVAL_PENDING")) {
  661. map.put("moudle","G_SERVICE_MANAGE");
  662. map.put("menu",permission.getPermission());
  663. }
  664. }
  665. }
  666. return ResponseMessage.success("success", map);
  667. } else {
  668. return ResponseMessage.error(",用户不存在");
  669. }
  670. } else {
  671. return ResponseMessage.error(checkResult.getErrCode() + ",token校验失败");
  672. }
  673. }
  674. }