ActivityRegistrationService.java 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466
  1. package platform.modules.sys.service;
  2. import com.github.pagehelper.PageHelper;
  3. import com.github.pagehelper.PageInfo;
  4. import org.apache.commons.lang3.StringUtils;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.stereotype.Service;
  7. import org.springframework.transaction.annotation.Transactional;
  8. import platform.common.Constant;
  9. import platform.common.base.service.BaseService;
  10. import platform.common.util.AlibabaSMSUtil;
  11. import platform.common.util.ShiroUtils;
  12. import platform.modules.carrier.dto.ActivityStatistic;
  13. import platform.modules.government.entity.Attachment;
  14. import platform.modules.government.entity.FileDown;
  15. import platform.modules.government.entity.User;
  16. import platform.modules.government.service.AttachmentService;
  17. import platform.modules.government.service.UserService;
  18. import platform.modules.home.service.HomeRefactorService;
  19. import platform.modules.sys.dao.ActivityRegistrationDao;
  20. import platform.modules.sys.entity.ActivityDetail;
  21. import platform.modules.sys.entity.ActivityRegistration;
  22. import platform.modules.sys.entity.ActivityReview;
  23. import platform.modules.sys.report.ActivityRegistrationExports;
  24. import platform.modules.sys.report.ActivitySignExports;
  25. import java.util.ArrayList;
  26. import java.util.Date;
  27. import java.util.List;
  28. import java.util.Objects;
  29. @Service
  30. @Transactional
  31. public class ActivityRegistrationService extends BaseService<ActivityRegistration> {
  32. @Autowired
  33. private ActivityRegistrationDao activityRegistrationDao;
  34. @Autowired
  35. private ActivityService activityService;
  36. @Autowired
  37. private UserService userService;
  38. @Autowired
  39. private AttachmentService attachmentService;
  40. @Autowired
  41. private HomeRefactorService homeRefactorService;
  42. @Autowired
  43. private ActivityReviewService activityReviewService;
  44. /**
  45. * 获取指定活动的已审核报名人数
  46. *
  47. * @param activityId
  48. * @return
  49. */
  50. public Integer getActivityRegistrationNumber(Integer activityId) {
  51. return activityRegistrationDao.getRegistrationNumber(activityId);
  52. }
  53. /**
  54. * 保存报名信息
  55. *
  56. * @param activityRegistration
  57. * @return
  58. */
  59. public Integer saveActivityRegistration(ActivityRegistration activityRegistration) {
  60. ActivityDetail activityDetail = activityService.findById(activityRegistration.getActivity_id());
  61. String quota = activityDetail.getActivity_quota();
  62. String isReview = activityDetail.getIs_review();
  63. //已报名人数
  64. int registrationNumber = getActivityRegistrationNumber(activityRegistration.getActivity_id());
  65. User currUser = new User();
  66. if (activityRegistration.getUser_id() != null && !activityRegistration.getUser_id().equals("")) {
  67. currUser = userService.findById(activityRegistration.getUser_id());
  68. } else {
  69. currUser = ShiroUtils.getUserEntity();
  70. }
  71. activityRegistration.setUser_id(currUser.getId());
  72. activityRegistration.setUser_type(currUser.getUser_type().toString());
  73. if (Objects.equals(Constant.UserType.GOVERNMENT, currUser.getUser_type())) {
  74. activityRegistration.setRelation_id("0");
  75. } else if (Objects.equals(Constant.UserType.BUILD, currUser.getUser_type())) {
  76. activityRegistration.setRelation_id(currUser.getBuild_id() + "");
  77. } else if (Objects.equals(Constant.UserType.STREET, currUser.getUser_type())) {
  78. activityRegistration.setRelation_id(currUser.getStreet_id() + "");
  79. } else if (Objects.equals(Constant.UserType.COMPANY, currUser.getUser_type())) {
  80. activityRegistration.setRelation_id(currUser.getCompany_id() + "");
  81. } else if (Objects.equals(Constant.UserType.PERSONAL, currUser.getUser_type())) {
  82. activityRegistration.setRelation_id(currUser.getId() + "");
  83. } else if (Objects.equals(Constant.UserType.WECHAT, currUser.getUser_type())) {
  84. activityRegistration.setRelation_id(currUser.getId() + "");
  85. activityRegistration.setUser_type(currUser.getUser_type() + "");
  86. }
  87. activityRegistration.setRegistration_time(new Date());
  88. //签到状态 0已签到 1未签到
  89. activityRegistration.setSign_state(null);
  90. if (Objects.equals(quota, null) || Objects.equals(quota, "")) {
  91. //如果不限人数
  92. if (Objects.equals(isReview, "0")) {
  93. //需要审核
  94. //由政府用户进行报名确认,如在活动结束时间还未被审核的报名者,则活动状态为取消
  95. //审核状态(0待审核,1通过,2退回)
  96. activityRegistration.setReview_state("0");
  97. } else {
  98. //不需要审核
  99. //所有报名的用户会在点击报名的同一时刻被确认参与活动
  100. //审核状态(0待审核,1通过,2退回)
  101. activityRegistration.setReview_state("1");
  102. }
  103. } else {
  104. //限制人数
  105. /*if (registrationNumber < Integer.parseInt(quota)) {*/
  106. if (Objects.equals(isReview, "0")) {
  107. //需要审核
  108. //由政府用户进行报名确认,如在活动结束时间还未被审核的报名者,则活动状态为取消
  109. //审核状态(0待审核,1通过,2退回)
  110. activityRegistration.setReview_state("0");
  111. } else {
  112. //不需要审核
  113. //则所有报名的,且在名额数目内的用户会在点击报名的同一时刻被确认参与活动。名额满后则报名通道关闭,除非已被确认的用户取消参加,报名通道重新打开
  114. //审核状态(0待审核,1通过,2退回)
  115. activityRegistration.setReview_state("1");
  116. }
  117. /* } else {
  118. //报名人数已满
  119. return -1;
  120. }*/
  121. }
  122. if (activityRegistration.getId() != null)
  123. return this.updateSelective(activityRegistration);
  124. return this.saveSelective(activityRegistration);
  125. }
  126. /**
  127. * 政府活动管理-报名信息
  128. *
  129. * @param pageNum
  130. * @param pageSize
  131. * @param id
  132. * @return
  133. * @throws Exception
  134. */
  135. @Transactional(readOnly = true)
  136. public PageInfo<ActivityRegistration> findRegistrationPage(Integer pageNum, Integer pageSize, Integer id) throws Exception {
  137. PageHelper.startPage(pageNum, pageSize);
  138. List<ActivityRegistration> list = activityRegistrationDao.findRegistrationPage(id, null);
  139. return new PageInfo<ActivityRegistration>(list);
  140. }
  141. @Transactional(readOnly = true)
  142. public List<ActivityRegistration> findRegistrationList(Integer id) throws Exception {
  143. List<ActivityRegistration> list = activityRegistrationDao.findRegistrationPage(id, null);
  144. return list;
  145. }
  146. @Transactional(readOnly = true)
  147. public List<ActivityRegistrationExports> findRegistrationListExports(Integer id) throws Exception {
  148. List<ActivityRegistrationExports> list = activityRegistrationDao.findRegistrationExport(id, null);
  149. return list;
  150. }
  151. @Transactional(readOnly = true)
  152. public Integer getRegistrationNumber(Integer pageNum, Integer pageSize, Integer id) throws Exception {
  153. List<ActivityRegistration> list = activityRegistrationDao.findRegistrationPage(id, null);
  154. return list.size();
  155. }
  156. @Transactional(readOnly = true)
  157. public List<ActivityRegistration> findByActivityIdAndUserIdAndPhones(String activity_id, String user_id, List<ActivityRegistration> registrations) {
  158. return activityRegistrationDao.findByActivityIdAndUserIdAndPhones(activity_id, user_id, registrations);
  159. }
  160. /**
  161. * 政府活动管理-签到信息
  162. *
  163. * @param pageNum
  164. * @param pageSize
  165. * @param id
  166. * @return
  167. * @throws Exception
  168. */
  169. @Transactional(readOnly = true)
  170. public PageInfo<ActivityRegistration> findSginPage(Integer pageNum, Integer pageSize, Integer id) throws Exception {
  171. PageHelper.startPage(pageNum, pageSize);
  172. List<ActivityRegistration> list = activityRegistrationDao.findSginPage(id, null);
  173. return new PageInfo<ActivityRegistration>(list);
  174. }
  175. @Transactional(readOnly = true)
  176. public List<ActivityRegistration> findSginList(Integer id) throws Exception {
  177. List<ActivityRegistration> list = activityRegistrationDao.findSginPage(id, null);
  178. return list;
  179. }
  180. @Transactional(readOnly = true)
  181. public Integer getSginNumber(Integer pageNum, Integer pageSize, Integer id) throws Exception {
  182. List<ActivityRegistration> list = activityRegistrationDao.findSginPage(id, null);
  183. return list.size();
  184. }
  185. /**
  186. * 园区街道企业-我的活动
  187. *
  188. * @param pageNum
  189. * @param pageSize
  190. * @param activityRegistration
  191. * @return
  192. * @throws Exception
  193. */
  194. @Transactional(readOnly = true)
  195. public PageInfo<ActivityRegistration> findMyActivityPage(Integer pageNum, Integer pageSize, ActivityRegistration activityRegistration) throws Exception {
  196. PageHelper.startPage(pageNum, pageSize);
  197. List<ActivityRegistration> list = activityRegistrationDao.findMyActivityPage(activityRegistration);
  198. return new PageInfo<ActivityRegistration>(list);
  199. }
  200. /**
  201. * 修改状态
  202. *
  203. * @param activityRegistration
  204. * @return
  205. */
  206. public Boolean updateState(ActivityRegistration activityRegistration) {
  207. if (Objects.equals(activityRegistrationDao.updateState(activityRegistration), 1))
  208. return true;
  209. return false;
  210. }
  211. /**
  212. * 批量修改状态
  213. *
  214. * @param idList
  215. */
  216. public void updateStateBatch(List<String> idList, ActivityRegistration activityRegistration) {
  217. activityRegistrationDao.updateStateBatch(idList, activityRegistration);
  218. }
  219. /**
  220. * 获取当前账户所在单位已报名的
  221. *
  222. * @return
  223. */
  224. public List<ActivityRegistration> getCurrRegUsers(String activity_id) {
  225. Integer userType = ShiroUtils.getUserType();
  226. String relationId = "";
  227. if (Objects.equals(Constant.UserType.GOVERNMENT, userType)) {
  228. relationId = "0";
  229. } else if (Objects.equals(Constant.UserType.BUILD, userType)) {
  230. relationId = ShiroUtils.getBuildId().toString();
  231. } else if (Objects.equals(Constant.UserType.STREET, userType)) {
  232. relationId = ShiroUtils.getStreetId().toString();
  233. } else if (Objects.equals(Constant.UserType.COMPANY, userType)) {
  234. relationId = ShiroUtils.getCompanyId().toString();
  235. } else if (Objects.equals(Constant.UserType.PERSONAL, userType)) {
  236. relationId = ShiroUtils.getUserId().toString();
  237. }
  238. return activityRegistrationDao.findByRelationIdAndType(userType.toString(), relationId, activity_id);
  239. }
  240. /**
  241. * 获取当前账户所在单位已报名的
  242. *
  243. * @return
  244. */
  245. public List<ActivityRegistration> getCurrRegUsers(String activity_id, String user_id) {
  246. /*User user = userService.findByMobile(phone);
  247. if (user == null)
  248. return null;
  249. Integer userType = user.getUser_type();
  250. String relationId = "";
  251. if (Objects.equals(Constant.UserType.GOVERNMENT, userType)) {
  252. relationId = "0";
  253. } else if (Objects.equals(Constant.UserType.BUILD, userType)) {
  254. relationId = user.getBuild_id().toString();
  255. } else if (Objects.equals(Constant.UserType.STREET, userType)) {
  256. relationId = user.getStreet_id().toString();
  257. } else if (Objects.equals(Constant.UserType.COMPANY, userType)) {
  258. relationId = user.getCompany_id().toString();
  259. } else if (Objects.equals(Constant.UserType.PERSONAL, userType)) {
  260. relationId = user.getId().toString();
  261. } else if (Objects.equals(Constant.UserType.WECHAT, userType)) {
  262. relationId = user.getId().toString();
  263. }*/
  264. return activityRegistrationDao.findByActivityAndUserId(activity_id, user_id);
  265. }
  266. /**
  267. * 获取当前账户所在单位已报名的
  268. *
  269. * @return
  270. */
  271. public List<ActivityRegistration> getWechatCurrRegUsers(String activity_id, Integer user_id) {
  272. User user = userService.findById(user_id);
  273. if (user == null)
  274. return null;
  275. Integer userType = user.getUser_type();
  276. String relationId = "";
  277. if (Objects.equals(Constant.UserType.GOVERNMENT, userType)) {
  278. relationId = "0";
  279. } else if (Objects.equals(Constant.UserType.BUILD, userType)) {
  280. relationId = user.getBuild_id().toString();
  281. } else if (Objects.equals(Constant.UserType.STREET, userType)) {
  282. relationId = user.getStreet_id().toString();
  283. } else if (Objects.equals(Constant.UserType.COMPANY, userType)) {
  284. relationId = user.getCompany_id().toString();
  285. } else if (Objects.equals(Constant.UserType.PERSONAL, userType)) {
  286. relationId = user.getId().toString();
  287. } else if (Objects.equals(Constant.UserType.WECHAT, userType)) {
  288. relationId = user.getId().toString();
  289. }
  290. return activityRegistrationDao.findByRelationIdAndType(userType.toString(), relationId, activity_id);
  291. }
  292. public Boolean sendActivityAbortSMS(ActivityDetail activity, List<ActivityRegistration> registrations) {
  293. //您报名的活动:${activity_title} 已取消。具体信息请登录PC端查看。感谢您的支持。
  294. try {
  295. if (null != registrations && registrations.size() > 0) {
  296. for (ActivityRegistration registration : registrations) {
  297. String phone = registration.getPhone();
  298. if (StringUtils.isNotBlank(phone)) {
  299. String activity_title = activity.getActivity_title();
  300. String templateParam = "{\"activity_title\":\"" + activity_title + "\"}";
  301. AlibabaSMSUtil.sendSMS(phone, Constant.SMS_TemplateCode.ACTIVITY_ABORT, "企业提升发展服务平台", templateParam);
  302. }
  303. }
  304. }
  305. return true;
  306. } catch (Exception e) {
  307. e.printStackTrace();
  308. return false;
  309. }
  310. }
  311. public Boolean sendActivityUpdateSMS(ActivityDetail activity, List<ActivityRegistration> registrations) {
  312. //您报名的活动:${activity_title} 活动内容有变更。具体信息请登录PC端查看。感谢您的支持。
  313. try {
  314. if (null != registrations && registrations.size() > 0) {
  315. for (ActivityRegistration registration : registrations) {
  316. String phone = registration.getPhone();
  317. String activity_title = activity.getActivity_title();
  318. String templateParam = "{\"activity_title\":\"" + activity_title + "\"}";
  319. AlibabaSMSUtil.sendSMS(phone, Constant.SMS_TemplateCode.ACTIVITY_UPDATE, "企业提升发展服务平台", templateParam);
  320. }
  321. }
  322. return true;
  323. } catch (Exception e) {
  324. e.printStackTrace();
  325. return false;
  326. }
  327. }
  328. /**
  329. * 取消报名
  330. *
  331. * @param ids
  332. */
  333. public void adortRegister(List<String> ids) {
  334. activityRegistrationDao.adortRegister(ids);
  335. }
  336. /**
  337. * 获取用户报名活动的报名信息
  338. *
  339. * @param activityId
  340. * @param userId
  341. * @return
  342. */
  343. public List<ActivityRegistration> getActivityRegistration(Integer activityId, int userId) {
  344. return activityRegistrationDao.getActivityRegistration(activityId, userId);
  345. }
  346. /**
  347. * 活动统计
  348. *
  349. * @param userId
  350. * @return
  351. */
  352. public ActivityStatistic findActivityStatistic(Integer userId) {
  353. ActivityStatistic statistic = new ActivityStatistic();
  354. statistic.setPending(activityRegistrationDao.findPendingActivity(userId).size());
  355. statistic.setComment(activityRegistrationDao.findCommentActivity(userId).size());
  356. statistic.setExpired(activityRegistrationDao.findExpiredActivity(userId).size());
  357. statistic.setCompleted(activityRegistrationDao.findCompletedActivity(userId).size());
  358. statistic.setPush(activityRegistrationDao.findPushActivity(userId).size());
  359. statistic.setCollection(activityRegistrationDao.findCollectionActivity(userId).size());
  360. return statistic;
  361. }
  362. /**
  363. * 获取各类活动
  364. *
  365. * @param type
  366. * @return
  367. */
  368. public List<ActivityDetail> findTypesActivitys(String type, Integer userId) {
  369. List<ActivityDetail> statistics = new ArrayList<>();
  370. switch (type) {
  371. case "pending"://待参加
  372. statistics = activityRegistrationDao.findPendingActivity(userId);
  373. break;
  374. case "comment":
  375. statistics = activityRegistrationDao.findCommentActivity(userId);
  376. break;
  377. case "expired":
  378. statistics = activityRegistrationDao.findExpiredActivity(userId);
  379. break;
  380. case "completed":
  381. statistics = activityRegistrationDao.findCompletedActivity(userId);
  382. break;
  383. case "push":
  384. statistics = activityRegistrationDao.findPushActivity(userId);
  385. break;
  386. case "collection":
  387. statistics = activityRegistrationDao.findCollectionActivity(userId);
  388. break;
  389. }
  390. for (ActivityDetail activity : statistics) {
  391. //活动图片
  392. List<Attachment> attachments = attachmentService.selectByIdAndBusinessId(Constant.Attachment.ACTIVITY, activity.getId(), null);
  393. if (null != attachments && attachments.size() > 0) {
  394. FileDown fileDown = new FileDown(attachments.get(0).getId(), attachments.get(0).getFile_name(), attachments.get(0).getFile_url(), attachments.get(0).getDownload_uri());
  395. activity.setFileDown(fileDown);
  396. }
  397. //是否收藏
  398. if (homeRefactorService.isFavourited(activity.getId(), userId)) {
  399. activity.setIs_favourited("1");
  400. } else {
  401. activity.setIs_favourited("0");
  402. }
  403. //活动回顾
  404. ActivityReview activityReview = activityReviewService.findByActivityId(activity.getId());
  405. if (activityReview != null) {
  406. activity.setActivityReviewId(activityReview.getId());
  407. }
  408. }
  409. return statistics;
  410. }
  411. }