ActivityController.java 51 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139
  1. package platform.modules.government.web;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.aliyuncs.exceptions.ClientException;
  5. import com.github.pagehelper.PageInfo;
  6. import org.apache.catalina.Executor;
  7. import org.apache.commons.io.IOUtils;
  8. import org.apache.commons.lang3.StringUtils;
  9. import org.springframework.beans.BeanUtils;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.boot.autoconfigure.AutoConfigureOrder;
  12. import org.springframework.stereotype.Controller;
  13. import org.springframework.ui.ModelMap;
  14. import org.springframework.util.CollectionUtils;
  15. import org.springframework.web.bind.annotation.*;
  16. import platform.common.Constant;
  17. import platform.common.annotation.OperationLog;
  18. import platform.common.base.controller.BaseController;
  19. import platform.common.base.model.Dict;
  20. import platform.common.base.model.DictionaryItem;
  21. import platform.common.base.service.DictService;
  22. import platform.common.base.service.DictionaryItemService;
  23. import platform.common.util.AlibabaSMSUtil;
  24. import platform.common.util.ExportExcel;
  25. import platform.common.util.ShiroUtils;
  26. import platform.common.util.WxAppUtil;
  27. import platform.modules.build.DTO.CompanyDto;
  28. import platform.modules.build.entity.BuildInfo;
  29. import platform.modules.build.entity.Company;
  30. import platform.modules.build.service.BuildInfoService;
  31. import platform.modules.build.service.CompanyService;
  32. import platform.modules.government.dto.ActivityReview;
  33. import platform.modules.government.dto.ActivitySearchCondition;
  34. import platform.modules.government.dto.SearchCondition;
  35. import platform.modules.government.dto.StreetsBuildingsCompanies;
  36. import platform.modules.government.entity.*;
  37. import platform.modules.government.service.AttachmentService;
  38. import platform.modules.government.service.StreetService;
  39. import platform.modules.government.service.UserService;
  40. import platform.modules.request.ActivityFindRequest;
  41. import platform.modules.request.ContractReportFindRequest;
  42. import platform.modules.sys.entity.*;
  43. import platform.modules.sys.report.ActivityRegistrationExports;
  44. import platform.modules.sys.report.ActivitySignExports;
  45. import platform.modules.sys.report.ContractExport;
  46. import platform.modules.sys.service.*;
  47. import platform.modules.sys.web.ResponseMessage;
  48. import javax.servlet.http.HttpServletResponse;
  49. import java.io.IOException;
  50. import java.io.InputStream;
  51. import java.io.OutputStream;
  52. import java.text.SimpleDateFormat;
  53. import java.util.*;
  54. import java.util.concurrent.ExecutorService;
  55. import java.util.concurrent.Executors;
  56. import java.util.concurrent.ThreadPoolExecutor;
  57. @Controller
  58. @RequestMapping(value = "/government/activity")
  59. public class ActivityController extends BaseController {
  60. @Autowired
  61. private ActivityService activityService;
  62. @Autowired
  63. private ActivityRegistrationService activityRegistrationService;
  64. @Autowired
  65. private ActivityFeedbackService activityFeedbackService;
  66. @Autowired
  67. private DictionaryItemService dictionaryItemService;
  68. @Autowired
  69. private StreetService streetService;
  70. @Autowired
  71. private BuildInfoService buildInfoService;
  72. @Autowired
  73. private CompanyService companyService;
  74. @Autowired
  75. private AttachmentService attachmentService;
  76. @Autowired
  77. private MessageService messageService;
  78. @Autowired
  79. private UserService userService;
  80. @Autowired
  81. private WaitToDoService waitToDoService;
  82. @OperationLog(value = "查看活动列表")
  83. @GetMapping(value = "/list")
  84. public String list(@RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
  85. ActivitySearchCondition condition, ModelMap modelMap) throws Exception {
  86. try {
  87. log.info("分页查询活动信息,pageNum = {},condition = {}", pageNum, condition.toString(), false);
  88. PageInfo<ActivityDetail> pageInfo = activityService.findAvtivityList(pageNum, PAGESIZE, condition);
  89. log.info("分页查询活动信息列表结果! pageInfo = {}", pageInfo);
  90. List<DictionaryItem> activityTypeList = dictionaryItemService.findListByTypeName(Constant.DictionaryType.ACTIVITY_TYPE);
  91. modelMap.addAttribute("activity_type", activityTypeList);
  92. modelMap.put("pageInfo", pageInfo);
  93. modelMap.put("condition", condition);
  94. log.info("菜单跳转到活动管理页面!");
  95. } catch (Exception e) {
  96. e.printStackTrace();
  97. }
  98. return BASE_GOVERNMENT_PATH + "activity_list";
  99. }
  100. /**
  101. * 跳转到详情页面
  102. *
  103. * @return
  104. */
  105. @OperationLog(value = "查看活动详情")
  106. @GetMapping(value = "/get/{id}")
  107. public String view(@PathVariable("id") Integer id, ModelMap modelMap) throws Exception {
  108. log.info("跳转到活动详情页面!");
  109. ActivityDetail activityDetail = activityService.findOne(id.toString());
  110. List<Attachment> attachments = attachmentService.selectByIdAndBusinessId(Constant.Attachment.ACTIVITY, activityDetail.getId(), null);
  111. if (null != attachments && attachments.size() > 0) {
  112. FileDown fileDown = new FileDown(attachments.get(0).getId(), attachments.get(0).getFile_name(), attachments.get(0).getFile_url(), attachments.get(0).getDownload_uri());
  113. activityDetail.setFileDown(fileDown);
  114. }
  115. List<DictionaryItem> activityTypeList = dictionaryItemService.findListByTypeName(Constant.DictionaryType.ACTIVITY_TYPE);
  116. for (DictionaryItem item : activityTypeList) {
  117. if (Objects.equals(item.getValue(), activityDetail.getActivity_type())) {
  118. activityDetail.setActivity_type(item.getName());
  119. }
  120. }
  121. List<ActivityPush> pushList = activityDetail.getPushList();
  122. String streetIds = "", buildIds = "", companyIds = "", names = "";
  123. if (!CollectionUtils.isEmpty(pushList)) {
  124. for (ActivityPush push : pushList) {
  125. if (Objects.equals("4", push.getUser_type())) {
  126. streetIds += push.getUser_id() + ",";
  127. names += push.getUser_name() + ",";
  128. }
  129. if (Objects.equals("1", push.getUser_type())) {
  130. buildIds += push.getUser_id() + ",";
  131. names += push.getUser_name() + ",";
  132. }
  133. if (Objects.equals("3", push.getUser_type())) {
  134. companyIds += push.getUser_id() + ",";
  135. names += push.getUser_name() + ",";
  136. }
  137. }
  138. activityDetail.setPush_street_ids(streetIds);
  139. activityDetail.setPush_build_ids(buildIds);
  140. activityDetail.setPush_company_ids(companyIds);
  141. activityDetail.setPush_names(names);
  142. }
  143. modelMap.addAttribute("activity", activityDetail);
  144. List<ActivityRegistration> registrationList = activityRegistrationService.findRegistrationList(id);
  145. List<ActivityRegistration> signList = activityRegistrationService.findSginList(id);
  146. List<ActivityFeedback> feedbackList = activityFeedbackService.findAvtivityList(id);
  147. String quota = activityDetail.getActivity_quota();
  148. //if (StringUtils.isBlank(quota)) quota = "0";
  149. int num = 0;
  150. for (ActivityRegistration registration : registrationList) {
  151. if (Objects.equals("1", registration.getReview_state())) {
  152. num++;
  153. }
  154. }
  155. modelMap.put("fileUrl", setFileUrl());
  156. modelMap.addAttribute("registrationList", registrationList);
  157. modelMap.addAttribute("signList", signList);
  158. modelMap.addAttribute("feedbackList", feedbackList);
  159. modelMap.addAttribute("quota", quota);
  160. modelMap.addAttribute("num", num);
  161. return BASE_GOVERNMENT_PATH + "activity_detail";
  162. }
  163. /**
  164. * 跳转到打印详情页面
  165. *
  166. * @return
  167. */
  168. @OperationLog(value = "打印活动详情")
  169. @GetMapping(value = "/printReg/{id}")
  170. public String printReg(@PathVariable("id") Integer id, ModelMap modelMap) throws Exception {
  171. log.info("跳转到活动报名打印页面!");
  172. List<ActivityRegistration> registrationList = activityRegistrationService.findRegistrationList(id);
  173. modelMap.addAttribute("registrationList", registrationList);
  174. return BASE_GOVERNMENT_PATH + "activity_print";
  175. }
  176. /**
  177. * 跳转到报名信息导出excel
  178. *
  179. * @return
  180. */
  181. @OperationLog(value = "导出活动报名信息表")
  182. @GetMapping(value = "/exportExcelRegistration")
  183. public void exportExcelRegistration(HttpServletResponse response, ActivityFindRequest activityFindRequest) throws Exception {
  184. log.info("跳转到活动报名下载!");
  185. Integer id = activityFindRequest.getId();
  186. ActivityDetail activityDetail = activityService.findOne(id.toString());
  187. String fileName = activityDetail.getActivity_title() + "报名信息表.xlsx";
  188. List<ActivityRegistrationExports> registrationList = activityRegistrationService.findRegistrationListExports(id);
  189. for (ActivityRegistrationExports activityRegistrationExports : registrationList) {
  190. String regway = dictionaryItemService.findNameByTypeAndValue(Constant.DictionaryType.ACTIVITY_REGISTRATION_WAY, activityRegistrationExports.getRegistration_way());
  191. activityRegistrationExports.setRegistration_way(regway);
  192. if (Objects.equals(activityRegistrationExports.getReview_state(), "0")) {
  193. activityRegistrationExports.setReview_state("待审核");
  194. }
  195. if (Objects.equals(activityRegistrationExports.getReview_state(), "1")) {
  196. activityRegistrationExports.setReview_state("通过");
  197. }
  198. if (Objects.equals(activityRegistrationExports.getReview_state(), "2")) {
  199. activityRegistrationExports.setReview_state("驳回");
  200. }
  201. if (Objects.equals(activityRegistrationExports.getReview_state(), "3")) {
  202. activityRegistrationExports.setReview_state("取消报名");
  203. }
  204. }
  205. new ExportExcel(activityDetail.getActivity_title() + "报名信息表", ActivityRegistrationExports.class).setDataList(registrationList).write(response, fileName).dispose();
  206. }
  207. /**
  208. * 跳转到签到信息导出excel
  209. *
  210. * @return
  211. */
  212. @OperationLog(value = "导出活动签到信息表")
  213. @GetMapping(value = "/exportExcelSign")
  214. public void exportExcelSign(HttpServletResponse response, ActivityFindRequest activityFindRequest) throws Exception {
  215. log.info("跳转到活动报名下载!");
  216. Integer id = activityFindRequest.getId();
  217. ActivityDetail activityDetail = activityService.findOne(id.toString());
  218. String fileName = activityDetail.getActivity_title() + "签到信息表.xlsx";
  219. List<ActivityRegistration> activityRegistrationList = activityRegistrationService.findSginList(id);
  220. List<ActivitySignExports> signList = new ArrayList<>();
  221. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  222. for (ActivityRegistration activityRegistration : activityRegistrationList) {
  223. ActivitySignExports activitySignExports = new ActivitySignExports();
  224. BeanUtils.copyProperties(activityRegistration, activitySignExports);
  225. if (activityRegistration.getRegistration_time() != null)
  226. activitySignExports.setRegistration_time(sdf.format(activityRegistration.getRegistration_time()));
  227. if (activityRegistration.getSign_time() != null)
  228. activitySignExports.setSign_time(sdf.format(activityRegistration.getSign_time()));
  229. if (StringUtils.isBlank(activitySignExports.getSign_state())) {
  230. activitySignExports.setSign_state("待确认");
  231. }
  232. if (Objects.equals(activitySignExports.getSign_state(), "0")) {
  233. activitySignExports.setSign_state("已签到");
  234. }
  235. if (Objects.equals(activitySignExports.getSign_state(), "1")) {
  236. activitySignExports.setSign_state("未参加");
  237. }
  238. signList.add(activitySignExports);
  239. }
  240. new ExportExcel(activityDetail.getActivity_title() + "签到信息表", ActivitySignExports.class).setDataList(signList).write(response, fileName).dispose();
  241. }
  242. /**
  243. * 跳转到详情页面
  244. *
  245. * @return
  246. */
  247. @GetMapping(value = "/printPass/{id}")
  248. public String printPass(@PathVariable("id") Integer id, ModelMap modelMap) throws Exception {
  249. log.info("跳转到活动报名打印页面!");
  250. List<ActivityRegistration> registrationList = activityRegistrationService.findRegistrationList(id);
  251. List<ActivityRegistration> resultList = new ArrayList<>();
  252. for (ActivityRegistration activityRegistration : registrationList) {
  253. if (Objects.equals(activityRegistration.getReview_state(), "1")) {
  254. resultList.add(activityRegistration);
  255. }
  256. }
  257. modelMap.addAttribute("registrationList", resultList);
  258. return BASE_GOVERNMENT_PATH + "activity_print";
  259. }
  260. /**
  261. * 跳转到审核页面
  262. *
  263. * @return
  264. */
  265. @GetMapping(value = "/review/{id}")
  266. public String review(@PathVariable("id") Integer id, ModelMap modelMap) throws Exception {
  267. log.info("跳转到活动审核页面!");
  268. List<ActivityRegistration> registrationList = activityRegistrationService.findRegistrationList(id);
  269. ActivityDetail activity = activityService.findOne(id + "");
  270. List<ActivityRegistration> registration_waited = new ArrayList<ActivityRegistration>();
  271. List<ActivityRegistration> registration_passed = new ArrayList<ActivityRegistration>();
  272. List<ActivityRegistration> registration_reject = new ArrayList<ActivityRegistration>();
  273. List<String> registration_waited_name_list = new ArrayList<>();
  274. List<String> registration_passed_name_list = new ArrayList<>();
  275. List<String> registration_reject_name_list = new ArrayList<>();
  276. for (ActivityRegistration activityRegistration : registrationList) {
  277. if (Objects.equals(activityRegistration.getReview_state(), "0")) {
  278. registration_waited.add(activityRegistration);
  279. boolean flag = true;
  280. for (String name : registration_waited_name_list) {
  281. if (Objects.equals(name, activityRegistration.getUser_name())) {
  282. flag = false;
  283. }
  284. }
  285. if (flag) {
  286. registration_waited_name_list.add(activityRegistration.getUser_name());
  287. }
  288. }
  289. if (Objects.equals(activityRegistration.getReview_state(), "1")) {
  290. registration_passed.add(activityRegistration);
  291. boolean flag = true;
  292. for (String name : registration_passed_name_list) {
  293. if (Objects.equals(name, activityRegistration.getUser_name())) {
  294. flag = false;
  295. }
  296. }
  297. if (flag) {
  298. registration_passed_name_list.add(activityRegistration.getUser_name());
  299. }
  300. }
  301. if (Objects.equals(activityRegistration.getReview_state(), "2")) {
  302. registration_reject.add(activityRegistration);
  303. boolean flag = true;
  304. for (String name : registration_reject_name_list) {
  305. if (Objects.equals(name, activityRegistration.getUser_name())) {
  306. flag = false;
  307. }
  308. }
  309. if (flag) {
  310. registration_reject_name_list.add(activityRegistration.getUser_name());
  311. }
  312. }
  313. }
  314. List<ActivityReview> registration_waited_list = new ArrayList<>();
  315. List<ActivityReview> registration_passed_list = new ArrayList<>();
  316. List<ActivityReview> registration_rejected_list = new ArrayList<>();
  317. for (String name : registration_waited_name_list) {
  318. ActivityReview activityReview = new ActivityReview();
  319. activityReview.setUser_name(name);
  320. List<ActivityRegistration> temp = new ArrayList<>();
  321. for (ActivityRegistration reg : registration_waited) {
  322. if (Objects.equals(name, reg.getUser_name())) {
  323. activityReview.setRegistration_time(reg.getRegistration_time());
  324. temp.add(reg);
  325. }
  326. activityReview.setActivityRegistrationList(temp);
  327. }
  328. registration_waited_list.add(activityReview);
  329. }
  330. for (String name : registration_passed_name_list) {
  331. ActivityReview activityReview = new ActivityReview();
  332. activityReview.setUser_name(name);
  333. List<ActivityRegistration> temp = new ArrayList<>();
  334. for (ActivityRegistration reg : registration_passed) {
  335. if (Objects.equals(name, reg.getUser_name())) {
  336. activityReview.setRegistration_time(reg.getRegistration_time());
  337. temp.add(reg);
  338. }
  339. activityReview.setActivityRegistrationList(temp);
  340. }
  341. registration_passed_list.add(activityReview);
  342. }
  343. for (String name : registration_reject_name_list) {
  344. ActivityReview activityReview = new ActivityReview();
  345. activityReview.setUser_name(name);
  346. List<ActivityRegistration> temp = new ArrayList<>();
  347. for (ActivityRegistration reg : registration_reject) {
  348. if (Objects.equals(name, reg.getUser_name())) {
  349. activityReview.setRegistration_time(reg.getRegistration_time());
  350. temp.add(reg);
  351. }
  352. activityReview.setActivityRegistrationList(temp);
  353. }
  354. registration_rejected_list.add(activityReview);
  355. }
  356. String quota = activity.getActivity_quota();
  357. if (StringUtils.isBlank(quota)) quota = "0";
  358. int num = 0;
  359. int Outnumber = 0;
  360. for (ActivityReview activityReview : registration_passed_list) {
  361. num += activityReview.getActivityRegistrationList().size();
  362. }
  363. int remain = Integer.parseInt(quota) - num;
  364. if (remain < 0) {
  365. remain = 0;
  366. Outnumber = num - Integer.parseInt(quota);
  367. }
  368. modelMap.addAttribute("activityId", id);
  369. modelMap.addAttribute("Outnumber", Outnumber);
  370. modelMap.addAttribute("quota", quota);
  371. modelMap.addAttribute("remain", remain);
  372. modelMap.addAttribute("registration_waited", registration_waited_list);
  373. modelMap.addAttribute("registration_passed", registration_passed_list);
  374. modelMap.addAttribute("registration_reject", registration_rejected_list);
  375. modelMap.put("fileUrl", setFileUrl());
  376. return BASE_GOVERNMENT_PATH + "activity_review";
  377. }
  378. /**
  379. * 跳转到签到页面
  380. *
  381. * @return
  382. */
  383. @GetMapping(value = "/sign/{id}")
  384. public String sign(@PathVariable("id") Integer id, ModelMap modelMap) throws Exception {
  385. log.info("跳转到活动签到页面!");
  386. List<ActivityRegistration> signList = activityRegistrationService.findSginList(id);
  387. List<ActivityRegistration> sign_waited = new ArrayList<ActivityRegistration>();
  388. List<ActivityRegistration> sign_passed = new ArrayList<ActivityRegistration>();
  389. List<ActivityRegistration> sign_reject = new ArrayList<ActivityRegistration>();
  390. for (ActivityRegistration activityRegistration : signList) {
  391. if (Objects.equals(activityRegistration.getSign_state(), "0")) {
  392. sign_passed.add(activityRegistration);
  393. } else if (Objects.equals(activityRegistration.getSign_state(), "1")) {
  394. sign_reject.add(activityRegistration);
  395. } else if (!Objects.equals(activityRegistration.getReview_state(), "0")) {
  396. sign_waited.add(activityRegistration);
  397. }
  398. }
  399. modelMap.addAttribute("sign_waited", sign_waited);
  400. modelMap.addAttribute("sign_passed", sign_passed);
  401. modelMap.addAttribute("sign_reject", sign_reject);
  402. return BASE_GOVERNMENT_PATH + "activity_sign";
  403. }
  404. /**
  405. * 跳转到取消活动页面
  406. *
  407. * @return
  408. */
  409. @GetMapping(value = "/abort/{id}")
  410. public String abort(@PathVariable("id") Integer id, ModelMap modelMap) throws Exception {
  411. log.info("跳转到活动取消页面!");
  412. modelMap.addAttribute("activity_id", id);
  413. return BASE_GOVERNMENT_PATH + "activity_cancel";
  414. }
  415. /**
  416. * 取消活动
  417. *
  418. * @param id
  419. * @param state
  420. * @param message
  421. * @param modelMap
  422. * @return
  423. * @throws Exception
  424. */
  425. @OperationLog(value = "取消活动")
  426. @ResponseBody
  427. @PostMapping(value = "/activityAbort")
  428. public ResponseMessage activityAbort(@RequestParam("id") String id, @RequestParam("state") String state, @RequestParam("message") String message, ModelMap modelMap) throws Exception {
  429. if (IsTooFrequently()) {
  430. return ResponseMessage.success("操作过于频繁,请稍后再试!");
  431. }
  432. log.info("更新活动状态");
  433. ActivityDetail activityDetail = new ActivityDetail();
  434. activityDetail.setId(Integer.parseInt(id));
  435. activityDetail.setActivity_state(state);
  436. //取消消息
  437. if (Objects.equals("2", state)) {
  438. ActivityDetail activity = activityService.findOne(id + "");
  439. String streetids = "", buildids = "", companyids = "", governmentids = "";
  440. List<ActivityRegistration> activityRegistrationList = activityRegistrationService.findRegistrationList(Integer.parseInt(id));
  441. //-2018-05-30-发送活动取消短信
  442. activityRegistrationService.sendActivityAbortSMS(activity, activityRegistrationList);
  443. for (ActivityRegistration registration : activityRegistrationList) {
  444. String type = registration.getUser_type();
  445. if (Objects.equals(type, Constant.UserType.STREET.toString())) {
  446. String streetId = userService.getUser(registration.getUser_id()).getStreet_id().toString();
  447. streetids += streetId + ",";
  448. } else if (Objects.equals(type, Constant.UserType.BUILD.toString())) {
  449. String buildId = userService.getUser(registration.getUser_id()).getBuild_id().toString();
  450. buildids += buildId + ",";
  451. } else if (Objects.equals(type, Constant.UserType.COMPANY.toString())) {
  452. String companyId = userService.getUser(registration.getUser_id()).getCompany_id().toString();
  453. companyids += companyId + ",";
  454. } else if (Objects.equals(type, Constant.UserType.GOVERNMENT.toString())) {
  455. //String governmentId = userService.getUser(registration.getUser_id()).get.toString();
  456. governmentids += registration.getUser_id() + ",";
  457. }
  458. }
  459. Message messages = new Message();
  460. messages.setApply_id(Integer.parseInt(id));
  461. messages.setTitle(activity.getActivity_title() + "活动取消");
  462. messages.setContent(message);
  463. messages.setBusiness_type(Constant.Message_Business_type.ACTIVITY);
  464. if (!StringUtils.isEmpty(streetids)) {
  465. String[] streetArr = streetids.split(",");
  466. Set<String> set = new HashSet<>();
  467. for (int i = 0; i < streetArr.length; i++) {
  468. set.add(streetArr[i]);
  469. }
  470. String[] streetArrs = (String[]) set.toArray(new String[set.size()]);
  471. int[] streetArrInt = new int[streetArrs.length];
  472. for (int i = 0; i < streetArrs.length; i++) {
  473. streetArrInt[i] = Integer.parseInt(streetArrs[i]);
  474. }
  475. messageService.saveMessageAndPush(messages, streetArrInt, Constant.UserType.STREET);
  476. }
  477. if (!StringUtils.isEmpty(buildids)) {
  478. String[] buildArr = buildids.split(",");
  479. Set<String> set = new HashSet<>();
  480. for (int i = 0; i < buildArr.length; i++) {
  481. set.add(buildArr[i]);
  482. }
  483. String[] buildArrs = (String[]) set.toArray(new String[set.size()]);
  484. int[] buildArrInt = new int[buildArrs.length];
  485. for (int i = 0; i < buildArrs.length; i++) {
  486. buildArrInt[i] = Integer.parseInt(buildArrs[i]);
  487. }
  488. messageService.saveMessageAndPush(messages, buildArrInt, Constant.UserType.BUILD);
  489. }
  490. if (!StringUtils.isEmpty(companyids)) {
  491. String[] companyArr = companyids.split(",");
  492. Set<String> set = new HashSet<>();
  493. for (int i = 0; i < companyArr.length; i++) {
  494. set.add(companyArr[i]);
  495. }
  496. String[] companyArrs = (String[]) set.toArray(new String[set.size()]);
  497. int[] companyArrInt = new int[companyArrs.length];
  498. for (int i = 0; i < companyArrs.length; i++) {
  499. companyArrInt[i] = Integer.parseInt(companyArrs[i]);
  500. }
  501. messageService.saveMessageAndPush(messages, companyArrInt, Constant.UserType.COMPANY);
  502. }
  503. if (!StringUtils.isEmpty(governmentids)) {
  504. String[] governmentArr = governmentids.split(",");
  505. Set<String> set = new HashSet<>();
  506. for (int i = 0; i < governmentArr.length; i++) {
  507. set.add(governmentArr[i]);
  508. }
  509. String[] governmentArrs = (String[]) set.toArray(new String[set.size()]);
  510. int[] governmentArrInt = new int[governmentArrs.length];
  511. for (int i = 0; i < governmentArrs.length; i++) {
  512. governmentArrInt[i] = Integer.parseInt(governmentArrs[i]);
  513. }
  514. messageService.saveMessageAndPush(messages, governmentArrInt, Constant.UserType.GOVERNMENT);
  515. }
  516. }
  517. return ResponseMessage.success("操作成功", activityService.updateActivitySelective(activityDetail));
  518. }
  519. /**
  520. * 跳转到添加页面
  521. *
  522. * @return
  523. */
  524. @GetMapping(value = "/add")
  525. public String add(ModelMap modelMap) {
  526. log.info("跳转到活动添加页面!");
  527. List<DictionaryItem> activityTypeList = dictionaryItemService.findListByTypeName(Constant.DictionaryType.ACTIVITY_TYPE);
  528. modelMap.addAttribute("activity_type", activityTypeList);
  529. return BASE_GOVERNMENT_PATH + "activity_add";
  530. }
  531. /**
  532. * 跳转到修改页面
  533. *
  534. * @return
  535. */
  536. @GetMapping(value = "/edit/{id}")
  537. public String edit(@PathVariable("id") Integer id, ModelMap modelMap) throws Exception {
  538. log.info("跳转到活动编辑页面!");
  539. List<DictionaryItem> activityTypeList = dictionaryItemService.findListByTypeName(Constant.DictionaryType.ACTIVITY_TYPE);
  540. modelMap.addAttribute("activity_type", activityTypeList);
  541. ActivityDetail activityDetail = activityService.findOne(id.toString());
  542. List<Attachment> attachments = attachmentService.selectByIdAndBusinessId(Constant.Attachment.ACTIVITY, activityDetail.getId(), null);
  543. if (null != attachments && attachments.size() > 0) {
  544. FileDown fileDown = new FileDown(attachments.get(0).getId(), attachments.get(0).getFile_name(), attachments.get(0).getFile_url(), attachments.get(0).getDownload_uri());
  545. activityDetail.setFileDown(fileDown);
  546. }
  547. List<ActivityPush> pushList = activityDetail.getPushList();
  548. String streetIds = "", buildIds = "", companyIds = "", names = "";
  549. if (!CollectionUtils.isEmpty(pushList)) {
  550. for (ActivityPush push : pushList) {
  551. if (Objects.equals("4", push.getUser_type())) {
  552. streetIds += push.getUser_id() + ",";
  553. names += push.getUser_name() + ",";
  554. }
  555. if (Objects.equals("1", push.getUser_type())) {
  556. buildIds += push.getUser_id() + ",";
  557. names += push.getUser_name() + ",";
  558. }
  559. if (Objects.equals("3", push.getUser_type())) {
  560. companyIds += push.getUser_id() + ",";
  561. names += push.getUser_name() + ",";
  562. }
  563. }
  564. activityDetail.setPush_street_ids(streetIds);
  565. activityDetail.setPush_build_ids(buildIds);
  566. activityDetail.setPush_company_ids(companyIds);
  567. activityDetail.setPush_names(names);
  568. }
  569. modelMap.put("fileUrl", setFileUrl());
  570. modelMap.addAttribute("activity", activityDetail);
  571. return BASE_GOVERNMENT_PATH + "activity_edit";
  572. }
  573. /**
  574. * 添加活动信息
  575. *
  576. * @param activityDetail
  577. * @return
  578. */
  579. @OperationLog(value = "添加活动")
  580. @ResponseBody
  581. @PostMapping(value = "/save")
  582. public ResponseMessage saveActivity(ActivityDetail activityDetail, @RequestParam("activity_state") String activity_state) throws Exception {
  583. log.debug("添加活动信息! ActivityDetail = {}", activityDetail);
  584. if (IsTooFrequently()) {
  585. return ResponseMessage.success("操作过于频繁,请稍后再试!");
  586. }
  587. if (Objects.equals("1", activity_state)) {
  588. SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  589. Date currentTime = new Date();
  590. String dateString = formatter.format(currentTime);
  591. activityDetail.setActivity_publishtime(dateString);
  592. }
  593. int activityid = activityService.saveActivity(activityDetail);
  594. if (Objects.equals("1", activity_state)) {
  595. if (Objects.equals(activityDetail.getPush_level(), "1")) {
  596. String streetids = activityDetail.getPush_street_ids();
  597. String buildids = activityDetail.getPush_build_ids();
  598. String companyids = activityDetail.getPush_company_ids();
  599. Message message = new Message();
  600. message.setApply_id(activityid);
  601. message.setTitle("您接收到了一条关于" + activityDetail.getActivity_title() + "的活动推送");
  602. message.setContent(activityDetail.getContent());
  603. message.setBusiness_type(Constant.Message_Business_type.ACTIVITY);
  604. if (!StringUtils.isEmpty(streetids)) {
  605. String[] streetArr = streetids.split(",");
  606. int[] streetArrInt = new int[streetArr.length];
  607. for (int i = 0; i < streetArr.length; i++) {
  608. streetArrInt[i] = Integer.parseInt(streetArr[i]);
  609. }
  610. messageService.saveMessageAndPush(message, streetArrInt, Constant.UserType.STREET);
  611. }
  612. if (!StringUtils.isEmpty(buildids)) {
  613. String[] buildArr = buildids.split(",");
  614. int[] buildArrInt = new int[buildArr.length];
  615. for (int i = 0; i < buildArr.length; i++) {
  616. buildArrInt[i] = Integer.parseInt(buildArr[i]);
  617. }
  618. messageService.saveMessageAndPush(message, buildArrInt, Constant.UserType.BUILD);
  619. }
  620. if (!StringUtils.isEmpty(companyids)) {
  621. String[] companyArr = companyids.split(",");
  622. int[] companyArrInt = new int[companyArr.length];
  623. for (int i = 0; i < companyArr.length; i++) {
  624. companyArrInt[i] = Integer.parseInt(companyArr[i]);
  625. }
  626. messageService.saveMessageAndPush(message, companyArrInt, Constant.UserType.COMPANY);
  627. }
  628. }
  629. }
  630. return ResponseMessage.success("保存成功!");
  631. }
  632. /**
  633. * 编辑活动信息
  634. *
  635. * @param activityDetail
  636. * @return
  637. */
  638. @OperationLog(value = "编辑活动")
  639. @ResponseBody
  640. @PostMapping(value = "/edit")
  641. public ResponseMessage editActivity(ActivityDetail activityDetail, @RequestParam("activity_state") String activity_state) throws Exception {
  642. log.debug("编辑活动信息! ActivityDetail = {}", activityDetail);
  643. if (IsTooFrequently()) {
  644. return ResponseMessage.success("操作过于频繁,请稍后再试!");
  645. }
  646. if (Objects.equals("1", activity_state)) {
  647. SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  648. Date currentTime = new Date();
  649. String dateString = formatter.format(currentTime);
  650. activityDetail.setActivity_publishtime(dateString);
  651. }
  652. activityService.updateActivity(activityDetail);
  653. if (Objects.equals("1", activity_state)) {
  654. if (Objects.equals(activityDetail.getPush_level(), "1")) {
  655. String streetids = activityDetail.getPush_street_ids();
  656. String buildids = activityDetail.getPush_build_ids();
  657. String companyids = activityDetail.getPush_company_ids();
  658. Message message = new Message();
  659. message.setApply_id(activityDetail.getId());
  660. message.setTitle(activityDetail.getActivity_title() + "活动修改");
  661. message.setContent(activityDetail.getActivity_reason());
  662. message.setBusiness_type(Constant.Message_Business_type.ACTIVITY);
  663. if (!StringUtils.isEmpty(streetids)) {
  664. String[] streetArr = streetids.split(",");
  665. int[] streetArrInt = new int[streetArr.length];
  666. for (int i = 0; i < streetArr.length; i++) {
  667. streetArrInt[i] = Integer.parseInt(streetArr[i]);
  668. }
  669. messageService.saveMessageAndPush(message, streetArrInt, Constant.UserType.STREET);
  670. }
  671. if (!StringUtils.isEmpty(buildids)) {
  672. String[] buildArr = buildids.split(",");
  673. int[] buildArrInt = new int[buildArr.length];
  674. for (int i = 0; i < buildArr.length; i++) {
  675. buildArrInt[i] = Integer.parseInt(buildArr[i]);
  676. }
  677. messageService.saveMessageAndPush(message, buildArrInt, Constant.UserType.BUILD);
  678. }
  679. if (!StringUtils.isEmpty(companyids)) {
  680. String[] companyArr = companyids.split(",");
  681. int[] companyArrInt = new int[companyArr.length];
  682. for (int i = 0; i < companyArr.length; i++) {
  683. companyArrInt[i] = Integer.parseInt(companyArr[i]);
  684. }
  685. messageService.saveMessageAndPush(message, companyArrInt, Constant.UserType.COMPANY);
  686. }
  687. //发送活动编辑变更短信
  688. List<ActivityRegistration> activityRegistrationList = activityRegistrationService.findRegistrationList(activityDetail.getId());
  689. activityRegistrationService.sendActivityUpdateSMS(activityDetail, activityRegistrationList);
  690. }
  691. }
  692. return ResponseMessage.success("保存成功!");
  693. }
  694. /**
  695. * 跳转到添加推送页面
  696. *
  697. * @return
  698. * @throws Exception
  699. */
  700. @GetMapping(value = "/addPush")
  701. public String addPush(ModelMap modelMap) throws Exception {
  702. log.info("跳转到添加推送页面!");
  703. List<Street> streetList = streetService.findList();
  704. modelMap.addAttribute("streetList", streetList);
  705. return BASE_GOVERNMENT_PATH + "activityMessagepush_add";
  706. }
  707. /**
  708. * 跳转到添加推送页面
  709. *
  710. * @return
  711. * @throws Exception
  712. */
  713. @GetMapping(value = "/calendar")
  714. public String calendar(ModelMap modelMap) throws Exception {
  715. log.info("跳转到活动日历!");
  716. return BASE_GOVERNMENT_PATH + "activity_calendar";
  717. }
  718. @ResponseBody
  719. @GetMapping(value = "/getAllEvents")
  720. public ResponseMessage getAllEvents() {
  721. log.info("获取所有活动时间");
  722. List<String> dates = activityService.getAllEventsDate(null);
  723. return ResponseMessage.success("", dates);
  724. }
  725. @ResponseBody
  726. @PostMapping(value = "/getEventList")
  727. public ResponseMessage getEventList(ActivityDetail activityDetail) {
  728. log.info("获取一天内的所有活动");
  729. List<ActivityDetail> dates = activityService.getEventList(activityDetail.getActivity_starttime());
  730. return ResponseMessage.success("", dates);
  731. }
  732. /**
  733. * 跳转到签到页面
  734. *
  735. * @return
  736. */
  737. @GetMapping(value = "/preview")
  738. public String preview(ModelMap modelMap) throws Exception {
  739. log.info("跳转预览页面!");
  740. return BASE_GOVERNMENT_PATH + "activity_preview";
  741. }
  742. @ResponseBody
  743. @PostMapping(value = "/getBuildsByStreetIds")
  744. public ResponseMessage getBuildsByStreetIds(@RequestParam("streetIds") String streetIds) {
  745. log.info("根据街道ids获取园区!");
  746. String[] idsArr = streetIds.split(",");
  747. List<String> ids = new ArrayList<String>();
  748. for (String id : idsArr) {
  749. ids.add(id);
  750. }
  751. List<BuildInfo> buildList = buildInfoService.findBuildsByStreetIds(ids);
  752. return ResponseMessage.success("", buildList);
  753. }
  754. @ResponseBody
  755. @PostMapping(value = "/getCompanysByBuildIds")
  756. public ResponseMessage getCompanysByBuildIds(@RequestParam("buildIds") String buildIds, @RequestParam("type_id") String type_id) {
  757. log.info("根据街道ids获取园区!");
  758. String[] idsArr = buildIds.split(",");
  759. List<String> ids = new ArrayList<String>();
  760. for (String id : idsArr) {
  761. ids.add(id);
  762. }
  763. List<Company> companyList = companyService.findCompanysByBuildIds(ids, type_id);
  764. return ResponseMessage.success("", companyList);
  765. }
  766. @ResponseBody
  767. @PostMapping(value = "/findStreetBuildCompanyByName")
  768. public ResponseMessage findStreetBuildCompanyByName(@RequestParam("name") String name, ModelMap modelMap) throws Exception {
  769. log.info("模糊查询街道园区企业");
  770. return ResponseMessage.success("", activityService.findStreetBuildCompanyByName(name));
  771. }
  772. @ResponseBody
  773. @PostMapping(value = "/updateSignState")
  774. public ResponseMessage updateState(@RequestParam("id") String id, @RequestParam("state") String state, ModelMap modelMap) throws Exception {
  775. log.info("更新活动签到状态");
  776. ActivityRegistration activityRegistration = new ActivityRegistration();
  777. activityRegistration.setId(Integer.parseInt(id));
  778. activityRegistration.setSign_state(state);
  779. activityRegistration.setSign_time(new Date());
  780. return ResponseMessage.success("操作成功", activityRegistrationService.updateState(activityRegistration));
  781. }
  782. @ResponseBody
  783. @PostMapping(value = "/updateSignStateBatch")
  784. public ResponseMessage updateStateBatch(@RequestParam("ids") String ids, @RequestParam("state") String state, ModelMap modelMap) throws Exception {
  785. log.info("批量更新活动签到状态");
  786. ActivityRegistration activityRegistration = new ActivityRegistration();
  787. activityRegistration.setSign_state(state);
  788. activityRegistration.setSign_time(new Date());
  789. String[] idsArr = ids.split(",");
  790. List<String> idList = new ArrayList<String>();
  791. if (idsArr.length > 0) {
  792. for (String id : idsArr) {
  793. idList.add(id);
  794. }
  795. }
  796. activityRegistrationService.updateStateBatch(idList, activityRegistration);
  797. return ResponseMessage.success("操作成功", null);
  798. }
  799. @ResponseBody
  800. @PostMapping(value = "/updateReviewState")
  801. public ResponseMessage updateReviewState(@RequestParam("id") String id, @RequestParam("state") String state, @RequestParam("message") String message, ModelMap modelMap) throws Exception {
  802. log.info("更新活动审核状态");
  803. ActivityRegistration activityRegistration = new ActivityRegistration();
  804. activityRegistration.setId(Integer.parseInt(id));
  805. activityRegistration.setReview_state(state);
  806. ActivityRegistration reg = activityRegistrationService.findById(Integer.parseInt(id));
  807. ActivityDetail activity = activityService.findOne(reg.getActivity_id() + "");
  808. Message messages = new Message();
  809. messages.setApply_id(activity.getId());
  810. messages.setTitle("企业报名审核确认");
  811. messages.setBusiness_type(Constant.Message_Business_type.ACTIVITY);
  812. String templateCode = Constant.SMS_TemplateCode.ACT_REGISTRATION_SUCCESS;
  813. //驳回消息
  814. if (Objects.equals("2", state)) {
  815. messages.setContent("您关于" + activity.getActivity_title() + "活动的报名信息已被确认不通过");
  816. templateCode = Constant.SMS_TemplateCode.ACT_REGISTRATION_FAILED;
  817. }
  818. //通过消息
  819. if (Objects.equals("1", state)) {
  820. messages.setContent("您关于" + activity.getActivity_title() + "活动的报名信息已被确认通过");
  821. }
  822. if (!reg.getUser_type().equals(Constant.UserType.PERSONAL.toString())) {
  823. int[] arrInt = new int[1];
  824. arrInt[0] = Integer.parseInt(reg.getRelation_id());
  825. if (Objects.equals(Constant.UserType.GOVERNMENT, reg.getUser_type())) {
  826. messageService.saveMessageAndPush(messages, arrInt, Constant.UserType.GOVERNMENT);
  827. } else if (Objects.equals(Constant.UserType.BUILD, reg.getUser_type())) {
  828. messageService.saveMessageAndPush(messages, arrInt, Constant.UserType.BUILD);
  829. } else if (Objects.equals(Constant.UserType.STREET, reg.getUser_type())) {
  830. messageService.saveMessageAndPush(messages, arrInt, Constant.UserType.STREET);
  831. } else if (Objects.equals(Constant.UserType.COMPANY, reg.getUser_type())) {
  832. messageService.saveMessageAndPush(messages, arrInt, Constant.UserType.COMPANY);
  833. }
  834. waitToDoService.completeAllTODO(activity.getId(), Constant.DictionaryType.ACTIVITY_APPLICATION);
  835. }
  836. //发送短息
  837. Map<String, String> params = new HashMap<>();
  838. params.put("activity_title", activity.getActivity_title());
  839. // User user = userService.findById(Integer.parseInt(id));
  840. AlibabaSMSUtil.sendSMS(
  841. reg.getPhone(), templateCode, Constant.SINGNAMW, JSONObject.toJSONString(params));
  842. return ResponseMessage.success("操作成功", activityRegistrationService.updateState(activityRegistration));
  843. }
  844. @ResponseBody
  845. @PostMapping(value = "/updateReviewStateBatch")
  846. public ResponseMessage updateReviewStateBatch(@RequestParam("ids") String ids, @RequestParam("state") String state, @RequestParam("message") String message, ModelMap modelMap) throws Exception {
  847. log.info("批量更新活动审核状态");
  848. ActivityRegistration activityRegistration = new ActivityRegistration();
  849. activityRegistration.setReview_state(state);
  850. String[] idsArr = ids.split(",");
  851. List<String> idList = new ArrayList<String>();
  852. //短信模版
  853. String templateCode = Constant.SMS_TemplateCode.ACT_REGISTRATION_SUCCESS;
  854. //发送短信线程池
  855. ExecutorService executor = Executors.newFixedThreadPool(10);
  856. if (idsArr.length > 0) {
  857. for (String id : idsArr) {
  858. idList.add(id);
  859. ActivityRegistration reg = activityRegistrationService.findById(Integer.parseInt(id));
  860. ActivityDetail activity = activityService.findOne(reg.getActivity_id() + "");
  861. Message messages = new Message();
  862. messages.setApply_id(activity.getId());
  863. messages.setTitle("企业报名审核确认");
  864. messages.setBusiness_type(Constant.Message_Business_type.ACTIVITY);
  865. //驳回消息
  866. if (Objects.equals("2", state)) {
  867. messages.setContent("您关于" + activity.getActivity_title() + "活动的报名信息已被确认不通过");
  868. templateCode = Constant.SMS_TemplateCode.ACT_REGISTRATION_FAILED;
  869. }
  870. //通过消息
  871. if (Objects.equals("1", state)) {
  872. messages.setContent("您关于" + activity.getActivity_title() + "活动的报名信息已被确认通过");
  873. }
  874. if (!reg.getUser_type().equals(Constant.UserType.PERSONAL.toString())) {
  875. int[] streetArrInt = new int[1];
  876. streetArrInt[0] = Integer.parseInt(reg.getRelation_id());
  877. if (Objects.equals(Constant.UserType.GOVERNMENT, reg.getUser_type())) {
  878. messageService.saveMessageAndPush(messages, streetArrInt, Constant.UserType.GOVERNMENT);
  879. } else if (Objects.equals(Constant.UserType.BUILD, reg.getUser_type())) {
  880. messageService.saveMessageAndPush(messages, streetArrInt, Constant.UserType.BUILD);
  881. } else if (Objects.equals(Constant.UserType.STREET, reg.getUser_type())) {
  882. messageService.saveMessageAndPush(messages, streetArrInt, Constant.UserType.STREET);
  883. } else if (Objects.equals(Constant.UserType.COMPANY, reg.getUser_type())) {
  884. messageService.saveMessageAndPush(messages, streetArrInt, Constant.UserType.COMPANY);
  885. }
  886. waitToDoService.completeAllTODO(activity.getId(), Constant.DictionaryType.ACTIVITY_APPLICATION);
  887. }
  888. //发送短信
  889. Map<String, String> params = new HashMap<>();
  890. params.put("activity_title", activity.getActivity_title());
  891. if (StringUtils.isNotBlank(reg.getPhone())) {
  892. String finalTemplateCode = templateCode;
  893. System.out.println("当前线程数:" + ((ThreadPoolExecutor) executor).getActiveCount());
  894. Runnable runnable = () -> {
  895. try {
  896. AlibabaSMSUtil.sendSMS(
  897. reg.getPhone(), finalTemplateCode, Constant.SINGNAMW, JSONObject.toJSONString(params));
  898. } catch (ClientException | InterruptedException e) {
  899. e.printStackTrace();
  900. }
  901. };
  902. executor.submit(runnable);
  903. }
  904. }
  905. }
  906. activityRegistrationService.updateStateBatch(idList, activityRegistration);
  907. return ResponseMessage.success("操作成功", null);
  908. }
  909. @GetMapping(value = "/reject/{id}")
  910. public String reject(@PathVariable("id") String id, ModelMap modelMap) throws Exception {
  911. log.info("跳转到审核驳回页面!");
  912. modelMap.addAttribute("activity_id", id);
  913. return BASE_GOVERNMENT_PATH + "activity_reject";
  914. }
  915. /**
  916. * 跳转到活动二维码
  917. *
  918. * @return
  919. */
  920. @GetMapping(value = "/qrcode/{id}")
  921. public String qrcode(@PathVariable("id") String id, ModelMap modelMap) {
  922. log.info("跳转到活动二维码!");
  923. try {
  924. InputStream is_detail = activityService.getQRcode("1", "350", id);
  925. byte[] bytes_detail = IOUtils.toByteArray(is_detail);
  926. String encoded_detail = Base64.getEncoder().encodeToString(bytes_detail);
  927. InputStream is_sign = activityService.getQRcode("2", "350", id);
  928. byte[] bytes_sign = IOUtils.toByteArray(is_sign);
  929. String encoded_sign = Base64.getEncoder().encodeToString(bytes_sign);
  930. modelMap.addAttribute("qrcode_detail", "data:image/jpg;base64," + encoded_detail);
  931. modelMap.addAttribute("qrcode_sign", "data:image/jpg;base64," + encoded_sign);
  932. } catch (IOException e) {
  933. e.printStackTrace();
  934. }
  935. modelMap.addAttribute("activity_id", id);
  936. return BASE_GOVERNMENT_PATH + "activity_qrcode";
  937. }
  938. /**
  939. * @Author: huZhiHao
  940. * @Description: 获取小程序二维码
  941. * @Date: 2019/12/18
  942. * @Params: [activity_id, type 1报名 2签到]
  943. * @Return: void
  944. **/
  945. @GetMapping(value = "/download/qrcode/{activity_id}/{type}")
  946. public void getDetailQRcode(@PathVariable("activity_id") String id, @PathVariable("type") String type, HttpServletResponse response) throws IOException {
  947. // try {
  948. // URL url = new URL("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + access_token);
  949. // HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
  950. // // conn.setConnectTimeout(10000);//连接超时 单位毫秒
  951. // // conn.setReadTimeout(2000);//读取超时 单位毫秒
  952. // // 发送POST请求必须设置如下两行
  953. // httpURLConnection.setDoOutput(true); // 打开写入属性
  954. // httpURLConnection.setDoInput(true); // 打开读取属性
  955. // httpURLConnection.setRequestMethod("POST");// 提交方式
  956. // // 不得不说一下这个提交方式转换!!真的坑。。改了好长时间!!一定要记得加响应头
  957. // httpURLConnection.setRequestProperty("Content-Type", "application/x-javascript; charset=UTF-8");// 设置响应头
  958. // // 获取URLConnection对象对应的输出流
  959. // PrintWriter printWriter = new PrintWriter(httpURLConnection.getOutputStream());
  960. // // 发送请求参数
  961. // JSONObject paramJson = new JSONObject();
  962. // paramJson.put("scene", "xxx"); // 你要放的内容
  963. // paramJson.put("path", "pages/index/index");
  964. // paramJson.put("width", 430); // 宽度
  965. // //paramJson.put("auto_color", true);
  966. // printWriter.write(paramJson.toString());
  967. // // flush输出流的缓冲
  968. // printWriter.flush();
  969. // BufferedInputStream bis = new BufferedInputStream(httpURLConnection.getInputStream());
  970. // //创建一个空文件
  971. // OutputStream os = new FileOutputStream(new File("E:/upload/test.jpg"));
  972. // //ByteArrayOutputStream os = new ByteArrayOutputStream();
  973. // int len;
  974. // byte[] arr = new byte[1024];
  975. // while ((len = bis.read(arr)) != -1) {
  976. // os.write(arr, 0, len);
  977. // os.flush();
  978. // }
  979. // os.close();
  980. // // 上传云储存
  981. // //InputStream is = new ByteArrayInputStream(os.toByteArray());
  982. // //retMap = UploadUtils.upload(is);
  983. // } catch (Exception e) {
  984. // e.printStackTrace();
  985. // }
  986. InputStream is = null;
  987. String name = "";
  988. if ("1".equals(type)) {
  989. name = "报名二维码.jpg";
  990. is = activityService.getQRcode(type, "430", id);
  991. } else if ("2".equals(type)) {
  992. name = "签到二维码.jpg";
  993. is = activityService.getQRcode(type, "430", id);
  994. }
  995. name = new String(name.getBytes(), "ISO-8859-1");
  996. response.setHeader("Content-type", "application/octet-stream");
  997. response.setHeader("Content-disposition", "attachment;fileName=\"" + name + "\"");
  998. OutputStream os = response.getOutputStream(); //输出数据
  999. IOUtils.copy(is, os);
  1000. is.close();
  1001. os.close();
  1002. }
  1003. /**
  1004. * 跳转到地图
  1005. *
  1006. * @return
  1007. * @throws Exception
  1008. */
  1009. @GetMapping(value = "/map")
  1010. public String toMap() throws Exception {
  1011. log.info("跳转到地图!");
  1012. return BASE_GOVERNMENT_PATH + "map_component/map";
  1013. }
  1014. }