ActivityOpenController.java 13 KB

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