ActivityOpenController.java 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372
  1. package platform.modules.api.web;
  2. import org.apache.commons.lang3.StringUtils;
  3. import org.apache.ibatis.annotations.Param;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.util.CollectionUtils;
  6. import org.springframework.web.bind.annotation.*;
  7. import platform.common.Constant;
  8. import platform.common.annotation.OperationLog;
  9. import platform.common.base.controller.BaseController;
  10. import platform.common.util.ShiroUtils;
  11. import platform.modules.build.entity.Company;
  12. import platform.modules.build.service.CompanyService;
  13. import platform.modules.government.dto.ParamRegistration;
  14. import platform.modules.government.entity.Attachment;
  15. import platform.modules.government.entity.FileDown;
  16. import platform.modules.government.entity.User;
  17. import platform.modules.government.service.AttachmentService;
  18. import platform.modules.government.service.UserService;
  19. import platform.modules.sys.entity.ActivityDetail;
  20. import platform.modules.sys.entity.ActivityFavourite;
  21. import platform.modules.sys.entity.ActivityFeedback;
  22. import platform.modules.sys.entity.ActivityRegistration;
  23. import platform.modules.sys.service.*;
  24. import platform.modules.sys.web.ResponseMessage;
  25. import java.util.*;
  26. /**
  27. * @Author :huZhiHao
  28. * @Date :Created in 2019/12/16 15:23
  29. * @Description: TODO
  30. * @Modified By:
  31. * @Version: v0.0.1
  32. */
  33. @RestController
  34. @RequestMapping(value = "/activity")
  35. public class ActivityOpenController extends BaseController {
  36. @Autowired
  37. private ActivityService activityService;
  38. @Autowired
  39. private ActivityRegistrationService activityRegistrationService;
  40. @Autowired
  41. private ActivityFeedbackService activityFeedbackService;
  42. @Autowired
  43. private AttachmentService attachmentService;
  44. @Autowired
  45. private ActivityFavouriteService activityFavouriteService;
  46. @Autowired
  47. private UserService userService;
  48. @Autowired
  49. private CompanyService companyService;
  50. @Autowired
  51. private WaitToDoService waitToDoService;
  52. /**
  53. * @Author: huZhiHao
  54. * @Description: 获取详情
  55. * @Date: 2019/12/17
  56. * @Params: [activity_id]
  57. * @Return: platform.modules.sys.web.ResponseMessage
  58. **/
  59. @GetMapping(value = "/detail/{activity_id}")
  60. public ResponseMessage getActivityDetail(@PathVariable("activity_id") int id) throws Exception {
  61. ActivityDetail activityDetail = activityService.findOne(id + "");
  62. activityService.increment(id + "");
  63. List<ActivityRegistration> registrationList = activityRegistrationService.findRegistrationList(id);
  64. int num = 0;
  65. String quota = activityDetail.getActivity_quota();
  66. if (StringUtils.isBlank(quota)) quota = "0";
  67. for (ActivityRegistration activityRegistration : registrationList) {
  68. if (Objects.equals(activityRegistration.getReview_state(), "1")) {
  69. num++;
  70. }
  71. }
  72. int remain = Integer.parseInt(quota) - num;
  73. if (remain < 0) {
  74. remain = 0;
  75. }
  76. activityDetail.setActivity_remain(remain + "");
  77. List<Attachment> attachments = attachmentService.selectByIdAndBusinessId(Constant.Attachment.ACTIVITY, activityDetail.getId(), null);
  78. if (null != attachments && attachments.size() > 0) {
  79. FileDown fileDown = new FileDown(attachments.get(0).getId(), attachments.get(0).getFile_name(), attachments.get(0).getFile_url(), attachments.get(0).getDownload_uri());
  80. activityDetail.setFileDown(fileDown);
  81. }
  82. return ResponseMessage.success("查询成功!", activityDetail);
  83. }
  84. /**
  85. * @Author: huZhiHao
  86. * @Description: 是否已报名
  87. * @Date: 2019/12/17
  88. * @Params: [activity_id]
  89. * @Return: platform.modules.sys.web.ResponseMessage
  90. **/
  91. @GetMapping(value = "/is_regist")
  92. public ResponseMessage getActivityDetail(@RequestParam("activity_id") String id, @RequestParam("phone") String phone) {
  93. List<ActivityRegistration> activityRegistrationList = activityRegistrationService.getCurrRegUsers(id, phone);
  94. if (!CollectionUtils.isEmpty(activityRegistrationList)) {
  95. for (ActivityRegistration activityRegistration : activityRegistrationList) {
  96. if (!Objects.equals("3", activityRegistration.getReview_state())) {
  97. return ResponseMessage.success("查询成功!", true);
  98. }
  99. }
  100. }
  101. return ResponseMessage.success("查询成功!", false);
  102. }
  103. /**
  104. * 获取已报名的用户
  105. *
  106. * @return
  107. */
  108. @GetMapping(value = "/getRegUsers")
  109. public ResponseMessage getRegUsers(String activity_id, String user_id) {
  110. log.info("获取已报名的用户!");
  111. return ResponseMessage.success("查询成功!", activityRegistrationService.getCurrRegUsers(activity_id, user_id));
  112. }
  113. /**
  114. * @Author: huZhiHao
  115. * @Description: 活动报名
  116. * @Date: 2019/12/17
  117. * @Params: [paramRegistration]
  118. * @Return: platform.modules.sys.web.ResponseMessage
  119. **/
  120. @OperationLog(value = "报名活动")
  121. @PostMapping(value = "/joinActivity")
  122. public ResponseMessage joinActivity(@RequestBody ParamRegistration paramRegistration) {
  123. log.info("活动报名");
  124. Integer id = paramRegistration.getRegistrationList().get(0).getActivity_id();
  125. ActivityDetail activityDetail = activityService.findById(id);
  126. String quota = activityDetail.getActivity_quota();
  127. String isReview = activityDetail.getIs_review();
  128. int registrationNumber = 0;
  129. if (!Objects.equals(quota, null) && !Objects.equals(quota, "")) {
  130. //名额有限
  131. if (Objects.equals(isReview, "1")) {
  132. //需要审核
  133. //已报名人数
  134. registrationNumber = activityRegistrationService.getActivityRegistrationNumber(id);
  135. if (registrationNumber >= Integer.parseInt(quota)) {
  136. return ResponseMessage.error("名额不足,仅剩" + (Integer.parseInt(quota) - registrationNumber) + "个名额,请修改人数!");
  137. }
  138. }
  139. }
  140. List<ActivityRegistration> registrationList = paramRegistration.getRegistrationList();
  141. if (!org.apache.commons.collections.CollectionUtils.isEmpty(registrationList)) {
  142. List<ActivityRegistration> registrations = activityRegistrationService.findByActivityIdAndUserIdAndPhones(id + "", registrationList.get(0).getUser_id() + "", registrationList);
  143. if (!org.apache.commons.collections.CollectionUtils.isEmpty(registrations)) {
  144. String phone = "";
  145. for (ActivityRegistration registration : registrations) {
  146. phone += registration.getPhone() + " ";
  147. }
  148. return ResponseMessage.error("手机号码为:" + phone + "的用户已报名");
  149. }
  150. for (ActivityRegistration registration : registrationList) {
  151. // if (registration.getId() == null) {
  152. activityRegistrationService.saveActivityRegistration(registration);
  153. // }
  154. }
  155. List<User> pusers = userService.findUsersByPermission("G_ACTIVITY_MANAGE");
  156. waitToDoService.completeAllTODO(activityDetail.getId(), Constant.DictionaryType.ACTIVITY_APPLICATION);
  157. for (User puser : pusers) {
  158. waitToDoService.newTODO(activityDetail.getActivity_title() + "审核", "/government/activity/review/" + activityDetail.getId(), Constant.WaitToDo_OperType.AUDIT, activityDetail.getId(),
  159. Constant.DictionaryType.ACTIVITY_APPLICATION, null, puser.getId().toString(), Constant.WaitToDo_IsSerial.IS_SERIAL, false);
  160. }
  161. }
  162. if (!Objects.equals(quota, null) && !Objects.equals(quota, "")) {
  163. //名额有限
  164. if (Objects.equals(isReview, "1")) {
  165. //需要审核
  166. //已报名人数
  167. registrationNumber = activityRegistrationService.getActivityRegistrationNumber(id);
  168. return ResponseMessage.success("报名成功,剩余" + (Integer.parseInt(quota) - registrationNumber) + "个名额!", true);
  169. }
  170. }
  171. return ResponseMessage.success("报名成功!", true);
  172. }
  173. @OperationLog(value = "取消报名")
  174. @DeleteMapping(value = "/cancel_regist")
  175. public ResponseMessage cancelRegist(@RequestParam("activity_id") String id, @RequestParam("phone") String phone) {
  176. List<ActivityRegistration> activityRegistrationList = activityRegistrationService.getCurrRegUsers(id, phone);
  177. if (!CollectionUtils.isEmpty(activityRegistrationList)) {
  178. List<String> ids = new ArrayList<>();
  179. for (ActivityRegistration activityRegistration : activityRegistrationList) {
  180. ids.add(activityRegistration.getId() + "");
  181. }
  182. activityRegistrationService.adortRegister(ids);
  183. }
  184. return ResponseMessage.success("操作成功!");
  185. }
  186. @OperationLog(value = "删除报名")
  187. @DeleteMapping(value = "/delete_regist")
  188. public ResponseMessage deleteRegist(@RequestParam("regist_id") String registId) {
  189. ActivityRegistration activityRegistration = new ActivityRegistration();
  190. activityRegistration.setId(Integer.parseInt(registId));
  191. activityRegistration.setDel_flag(true);
  192. activityRegistrationService.updateSelective(activityRegistration);
  193. return ResponseMessage.success("操作成功!");
  194. }
  195. /**
  196. * @Author: huZhiHao
  197. * @Description: 获取已报名
  198. * @Date: 2019/12/17
  199. * @Params: [id]
  200. * @Return: platform.modules.sys.web.ResponseMessage
  201. **/
  202. @GetMapping(value = "/regist_user/list")
  203. public ResponseMessage getCurrRegUsers(@RequestParam("activity_id") String id, @RequestParam("phone") String phone) {
  204. List<ActivityRegistration> activityRegistrationList = activityRegistrationService.getCurrRegUsers(id, phone);
  205. return ResponseMessage.success("查询成功!", activityRegistrationList);
  206. }
  207. /**
  208. * @Author: huZhiHao
  209. * @Description: 查询是否收藏
  210. * @Date: 2019/12/17
  211. * @Params: [id]
  212. * @Return: platform.modules.sys.web.ResponseMessage
  213. **/
  214. @GetMapping(value = "/is_favourite")
  215. public ResponseMessage isFavourite(@RequestParam("activity_id") String activityId, @RequestParam("user_id") String userId) throws Exception {
  216. log.info("查询是否收藏!activity_id = {}", activityId);
  217. ActivityFavourite activityFavourite = activityFavouriteService.selectByActivityIdAndUserId(activityId, userId);
  218. if (Objects.equals(activityFavourite, null)) return ResponseMessage.success("查询成功!", false);
  219. return ResponseMessage.success("查询成功!", true);
  220. }
  221. /**
  222. * @Author: huZhiHao
  223. * @Description: 添加收藏
  224. * @Date: 2019/12/17
  225. * @Params: [id]
  226. * @Return: platform.modules.sys.web.ResponseMessage
  227. **/
  228. @OperationLog(value = "收藏活动")
  229. @PostMapping(value = "/add_favourite")
  230. public ResponseMessage addFavourite(@RequestBody ActivityFavourite activityFavourite) throws Exception {
  231. int count = activityFavouriteService.saveActivityFavourite(activityFavourite);
  232. if (count > 0) return ResponseMessage.success("收藏成功!");
  233. return ResponseMessage.success("收藏失败!");
  234. }
  235. /**
  236. * @Author: huZhiHao
  237. * @Description: 取消收藏
  238. * @Date: 2019/12/17
  239. * @Params: [id]
  240. * @Return: platform.modules.sys.web.ResponseMessage
  241. **/
  242. @OperationLog(value = "取消收藏活动")
  243. @DeleteMapping(value = "/remove_favourite")
  244. public ResponseMessage removeFavourite(@RequestParam("activity_id") String activity_id, @RequestParam("user_id") String userId) throws Exception {
  245. boolean b = activityFavouriteService.deleteByActivityIdAndUserId(activity_id, userId);
  246. if (b) return ResponseMessage.success("取消收藏成功!");
  247. return ResponseMessage.success("取消收藏失败!");
  248. }
  249. //更新登记表
  250. @OperationLog(value = "更新登记表")
  251. @PutMapping(value = "/registration")
  252. public ResponseMessage updateRegistration(@RequestBody ActivityRegistration activityRegistration) {
  253. Integer ret = activityRegistrationService.updateSelective(activityRegistration);
  254. if (ret > 0) return ResponseMessage.success("更新成功!");
  255. return ResponseMessage.success("更新失败!");
  256. }
  257. //根据手机号获取报名信息
  258. @OperationLog(value = "根据手机号获取报名信息")
  259. @GetMapping(value = "/registration")
  260. public ResponseMessage getByPhone(@RequestParam("activity_id") Integer id, @RequestParam("phone") String phone) {
  261. ActivityRegistration activityRegistration = new ActivityRegistration();
  262. activityRegistration.setActivity_id(id);
  263. activityRegistration.setPhone(phone);
  264. List<ActivityRegistration> ret = activityRegistrationService.findListByWhere(activityRegistration);
  265. Iterator<ActivityRegistration> it = ret.iterator();
  266. while (it.hasNext()) {
  267. if (Objects.equals(it.next().getReview_state(), "3"))
  268. it.remove();
  269. }
  270. if (CollectionUtils.isEmpty(ret)) return ResponseMessage.success("查询成功!");
  271. return ResponseMessage.success("查询成功!", ret.get(0));
  272. }
  273. //签到
  274. @OperationLog(value = "签到")
  275. @PutMapping(value = "/sign")
  276. public ResponseMessage getByPhone(@RequestBody ActivityRegistration activityRegistration) {
  277. activityRegistration.setReview_state("1");
  278. ActivityRegistration activityRegistration1 = activityRegistrationService.findOne(activityRegistration);
  279. if (activityRegistration1 != null) {
  280. ActivityRegistration activityRegistration_n = new ActivityRegistration();
  281. activityRegistration_n.setId(activityRegistration1.getId());
  282. activityRegistration_n.setSign_state("0");
  283. activityRegistration_n.setSign_time(new Date());
  284. activityRegistrationService.updateSelective(activityRegistration_n);
  285. return ResponseMessage.success("签到成功!");
  286. }
  287. return ResponseMessage.error("签到失败!");
  288. }
  289. //根据手机号获取用户信息和企业信息
  290. @OperationLog(value = "根据手机号获取用户信息和企业信息")
  291. @GetMapping(value = "/user_info")
  292. public ResponseMessage getuserInfoByPhone(@RequestParam("phone") String phone) {
  293. Map<String, String> map = new HashMap<>();
  294. User user = userService.findByMobile(phone);
  295. if (user != null) {
  296. map.put("user_id", user.getId() + "");
  297. map.put("user_name", user.getUser_name());
  298. map.put("phone", user.getPhone());
  299. map.put("email", user.getEmail());
  300. if (user.getCompany_id() != null) {
  301. Company company = companyService.findById(user.getCompany_id());
  302. map.put("company_name", company.getCompany_name());
  303. map.put("industry_name", company.getIndustry_name());
  304. }
  305. }
  306. return ResponseMessage.success("查询成功!", map);
  307. }
  308. @OperationLog(value = "根据活动id获取最新的公开反馈评论信息")
  309. @GetMapping(value = "/feedback/list")
  310. public ResponseMessage feedbackList(@RequestParam("activity_id") String activityId, @RequestParam("min_score") String minScore, @RequestParam("max_score") String maxScore) {
  311. List<ActivityFeedback> list = activityFeedbackService.feedbackList(activityId, "1", "1", minScore, maxScore);
  312. return ResponseMessage.success("操作成功!", list);
  313. }
  314. @OperationLog(value = "根据活动id和用户id获取反馈评论信息")
  315. @GetMapping(value = "/feedback")
  316. public ResponseMessage feedbackGet(@RequestParam("activity_id") String activityId, @RequestParam("user_id") String userId) {
  317. return ResponseMessage.success("操作成功!", activityFeedbackService.feedbackGet(activityId, userId));
  318. }
  319. @OperationLog(value = "新增反馈")
  320. @PostMapping(value = "/feedback")
  321. public ResponseMessage feedbackSave(@RequestBody ActivityFeedback activityFeedback) {
  322. return ResponseMessage.success("操作成功!", activityFeedbackService.feedbackSave(activityFeedback));
  323. }
  324. @OperationLog(value = "获取各分数段人数")
  325. @GetMapping(value = "/feedback/score_count")
  326. public ResponseMessage feedbackScoreCount(@RequestParam("activity_id") String activityId) {
  327. return ResponseMessage.success("操作成功!", activityFeedbackService.getScoreCount(activityId, "1", "1", null, null));
  328. }
  329. }