ActivityInfoController.java 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340
  1. package com.xjrsoft.module.activity.controller;
  2. import cn.dev33.satoken.annotation.SaCheckPermission;
  3. import cn.dev33.satoken.stp.StpUtil;
  4. import cn.hutool.core.bean.BeanUtil;
  5. import cn.hutool.db.Entity;
  6. import cn.hutool.json.JSONArray;
  7. import cn.hutool.json.JSONUtil;
  8. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  9. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  10. import com.xjrsoft.common.exception.MyException;
  11. import com.xjrsoft.common.model.result.RT;
  12. import com.xjrsoft.common.mybatis.SqlRunnerAdapter;
  13. import com.xjrsoft.common.page.ConventPage;
  14. import com.xjrsoft.common.page.PageOutput;
  15. import com.xjrsoft.module.activity.dto.ActivityEnrollExportDto;
  16. import com.xjrsoft.module.activity.dto.ActivityInfoPageDto;
  17. import com.xjrsoft.module.activity.dto.ActivityInfoTodayDto;
  18. import com.xjrsoft.module.activity.dto.AddActivityEnrollRangeDto;
  19. import com.xjrsoft.module.activity.dto.AddActivityInfoDto;
  20. import com.xjrsoft.module.activity.dto.ChangeStatusDto;
  21. import com.xjrsoft.module.activity.dto.UpdateActivityInfoDto;
  22. import com.xjrsoft.module.activity.entity.ActivityEnroll;
  23. import com.xjrsoft.module.activity.entity.ActivityInfo;
  24. import com.xjrsoft.module.activity.service.IActivityEnrollRangeService;
  25. import com.xjrsoft.module.activity.service.IActivityEnrollService;
  26. import com.xjrsoft.module.activity.service.IActivityInfoService;
  27. import com.xjrsoft.module.activity.vo.ActivityEnrollPageVo;
  28. import com.xjrsoft.module.activity.vo.ActivityEnrollRangeVo;
  29. import com.xjrsoft.module.activity.vo.ActivityInfoPageVo;
  30. import com.xjrsoft.module.activity.vo.ActivityInfoVo;
  31. import com.xjrsoft.module.base.entity.BaseClass;
  32. import com.xjrsoft.module.base.service.IBaseClassService;
  33. import com.xjrsoft.module.concat.service.IXjrUserService;
  34. import com.xjrsoft.module.organization.entity.Department;
  35. import com.xjrsoft.module.organization.service.IDepartmentService;
  36. import com.xjrsoft.module.system.entity.File;
  37. import com.xjrsoft.module.system.service.IFileService;
  38. import com.xjrsoft.module.teacher.entity.XjrUser;
  39. import io.swagger.annotations.Api;
  40. import io.swagger.annotations.ApiOperation;
  41. import lombok.AllArgsConstructor;
  42. import org.springframework.web.bind.annotation.DeleteMapping;
  43. import org.springframework.web.bind.annotation.GetMapping;
  44. import org.springframework.web.bind.annotation.PostMapping;
  45. import org.springframework.web.bind.annotation.PutMapping;
  46. import org.springframework.web.bind.annotation.RequestBody;
  47. import org.springframework.web.bind.annotation.RequestMapping;
  48. import org.springframework.web.bind.annotation.RequestParam;
  49. import org.springframework.web.bind.annotation.RestController;
  50. import javax.validation.Valid;
  51. import java.time.LocalDateTime;
  52. import java.time.ZoneId;
  53. import java.util.ArrayList;
  54. import java.util.Date;
  55. import java.util.List;
  56. import java.util.Map;
  57. import java.util.Set;
  58. import java.util.stream.Collectors;
  59. /**
  60. * @title: 活动信息
  61. * @Author dzx
  62. * @Date: 2024-07-19
  63. * @Version 1.0
  64. */
  65. @RestController
  66. @RequestMapping("/activity" + "/activityInfo")
  67. @Api(value = "/activity" + "/activityInfo",tags = "活动信息代码")
  68. @AllArgsConstructor
  69. public class ActivityInfoController {
  70. private final IActivityInfoService activityInfoService;
  71. private final IBaseClassService classService;
  72. private final IDepartmentService departmentService;
  73. private final IXjrUserService xjrUserService;
  74. private final IFileService fileService;
  75. private final IActivityEnrollService enrollService;
  76. private final IActivityEnrollRangeService rangeService;
  77. @GetMapping(value = "/page")
  78. @ApiOperation(value="活动信息列表(分页)")
  79. @SaCheckPermission("activityinfo:detail")
  80. public RT<PageOutput<ActivityInfoPageVo>> page(@Valid ActivityInfoPageDto dto){
  81. Page<ActivityInfoPageVo> page = activityInfoService.getPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
  82. PageOutput<ActivityInfoPageVo> pageOutput = ConventPage.getPageOutput(page, ActivityInfoPageVo.class);
  83. return RT.ok(pageOutput);
  84. }
  85. @GetMapping(value = "/today-schedule")
  86. @ApiOperation(value="今日安排(分页)")
  87. @SaCheckPermission("activityinfo:detail")
  88. public RT<PageOutput<ActivityInfoPageVo>> todaySchedule(@Valid ActivityInfoTodayDto dto){
  89. List<String> roleList = StpUtil.getRoleList();
  90. if(dto.getLoginUserId() == null){
  91. dto.setLoginUserId(StpUtil.getLoginIdAsLong());
  92. }
  93. if(roleList.contains("STUDENT")){
  94. dto.setRoleType(3);
  95. }else if(roleList.contains("TEACHER")){
  96. dto.setRoleType(2);
  97. }
  98. return RT.ok();
  99. }
  100. @GetMapping(value = "/info")
  101. @ApiOperation(value="根据id查询活动信息信息")
  102. @SaCheckPermission("activityinfo:detail")
  103. public RT<ActivityInfoVo> info(@RequestParam Long id, Integer category){
  104. ActivityInfoVo infoVo = null;
  105. if(category == null || (category == 1 || category == 2)){
  106. ActivityInfo activityInfo = activityInfoService.getByIdDeep(id);
  107. if (activityInfo == null) {
  108. return RT.error("找不到此数据!");
  109. }
  110. infoVo = BeanUtil.toBean(activityInfo, ActivityInfoVo.class);
  111. if(infoVo.getOrgId() != null){
  112. Department department = departmentService.getById(infoVo.getOrgId());
  113. if(department != null){
  114. infoVo.setOrgName(department.getName());
  115. }
  116. }
  117. if(infoVo.getEnterpriseId() != null){
  118. String tableName = "company_coop";
  119. Entity where = Entity.create(tableName);
  120. where.set("id", infoVo.getEnterpriseId());
  121. Map<String, Object> objectMap = SqlRunnerAdapter.db().dynamicSelectOne(tableName, where);
  122. if(objectMap != null && objectMap.containsKey("company_name")){
  123. infoVo.setEnterpriseName(objectMap.get("company_name").toString());
  124. }
  125. }
  126. List<ActivityEnrollRangeVo> userRelationList = new ArrayList<>();
  127. if(activityInfo.getEnrollRange() != null && !activityInfo.getEnrollRange().isEmpty()){
  128. JSONArray asJsonArray = JSONUtil.parseArray(activityInfo.getEnrollRange());
  129. for (Object jsonElement : asJsonArray) {
  130. ActivityEnrollRangeVo relationDto = JSONUtil.toBean(JSONUtil.parseObj(jsonElement), ActivityEnrollRangeVo.class);
  131. if(relationDto.getUserId() != null){
  132. XjrUser xjrUser = xjrUserService.getById(relationDto.getUserId());
  133. if(xjrUser != null){
  134. relationDto.setName(xjrUser.getName());
  135. }
  136. }else if(relationDto.getDeptId() != null){
  137. Department department = departmentService.getById(relationDto.getDeptId());
  138. if(department != null){
  139. relationDto.setName(department.getName());
  140. }
  141. }else if(relationDto.getClassId() != null){
  142. BaseClass aClass = classService.getById(relationDto.getClassId());
  143. if(aClass != null){
  144. relationDto.setName(aClass.getName());
  145. }
  146. }
  147. userRelationList.add(relationDto);
  148. }
  149. }
  150. infoVo.setActivityEnrollRangeList(userRelationList);
  151. ActivityEnrollExportDto dto = new ActivityEnrollExportDto();
  152. dto.setActivityInfoId(id);
  153. List<ActivityEnrollPageVo> enrollList = enrollService.getList(dto);
  154. infoVo.setEnrollCount(enrollList.size());
  155. Set<ActivityEnrollPageVo> teacherSet = enrollList.stream().filter(x -> x.getTeacherId() != null).collect(Collectors.toSet());
  156. infoVo.setTeacherCount(teacherSet.size());
  157. Set<ActivityEnrollPageVo> studentSet = enrollList.stream().filter(x -> x.getStudentId() != null).collect(Collectors.toSet());
  158. infoVo.setStudentCount(studentSet.size());
  159. Set<ActivityEnrollPageVo> suretSet = enrollList.stream().filter(x -> (x.getStatus() == 2)).collect(Collectors.toSet());
  160. infoVo.setSureCount(suretSet.size());
  161. Set<ActivityEnrollPageVo> notSuretSet = enrollList.stream().filter(x -> (x.getStatus() == 1 || x.getStatus() == 0)).collect(Collectors.toSet());
  162. infoVo.setNotSureCount(notSuretSet.size());
  163. }else if(category == 3){
  164. String tableName = "club_activities";
  165. Entity where = Entity.create(tableName);
  166. where.set("id", id);
  167. Map<String, Object> objectMap = SqlRunnerAdapter.db().dynamicSelectOne(tableName, where);
  168. infoVo = new ActivityInfoVo();
  169. if(objectMap == null){
  170. return RT.ok(infoVo);
  171. }
  172. infoVo.setName(objectMap.get("club_activities_name").toString());
  173. infoVo.setContent(objectMap.get("club_activities_content").toString());
  174. infoVo.setStartDate((Date)objectMap.get("start_time"));
  175. infoVo.setEndDate((Date)objectMap.get("end_time"));
  176. infoVo.setPlace(objectMap.get("activity_location").toString());
  177. }else if(category == 4){
  178. String tableName = "moral_event";
  179. Entity where = Entity.create(tableName);
  180. where.set("id", id);
  181. Map<String, Object> objectMap = SqlRunnerAdapter.db().dynamicSelectOne(tableName, where);
  182. infoVo = new ActivityInfoVo();
  183. if(objectMap == null){
  184. return RT.ok(infoVo);
  185. }
  186. infoVo.setName(objectMap.get("moral_event_name").toString());
  187. infoVo.setContent(objectMap.get("event_content").toString());
  188. infoVo.setStartDate((Date)objectMap.get("event_start_time"));
  189. infoVo.setEndDate((Date)objectMap.get("event_end_time"));
  190. infoVo.setPlace(objectMap.get("event_address").toString());
  191. infoVo.setOrgName(objectMap.get("host_unit").toString());
  192. infoVo.setDutyPerson(objectMap.get("event_leader").toString());
  193. }else if(category == 5){
  194. String tableName = "wf_teacher_training";
  195. Entity where = Entity.create(tableName);
  196. where.set("id", id);
  197. Map<String, Object> objectMap = SqlRunnerAdapter.db().dynamicSelectOne(tableName, where);
  198. infoVo = new ActivityInfoVo();
  199. if(objectMap == null){
  200. return RT.ok(infoVo);
  201. }
  202. infoVo.setName(objectMap.get("training_name").toString());
  203. infoVo.setContent(objectMap.get("training_topic").toString());
  204. infoVo.setStartDate(Date.from(((LocalDateTime)objectMap.get("start_time")).atZone(ZoneId.systemDefault()).toInstant()));
  205. infoVo.setEndDate(Date.from(((LocalDateTime)objectMap.get("end_time")).atZone(ZoneId.systemDefault()).toInstant()));
  206. infoVo.setPlace(objectMap.get("training_address").toString());
  207. infoVo.setDutyPerson(objectMap.get("person_in_charge").toString());
  208. }else if(category == 6){
  209. String tableName = "party_build_event";
  210. Entity where = Entity.create(tableName);
  211. where.set("id", id);
  212. Map<String, Object> objectMap = SqlRunnerAdapter.db().dynamicSelectOne(tableName, where);
  213. infoVo = new ActivityInfoVo();
  214. if(objectMap == null){
  215. return RT.ok(infoVo);
  216. }
  217. infoVo.setName(objectMap.get("event_type").toString());
  218. infoVo.setContent(objectMap.get("event_content").toString());
  219. infoVo.setStartDate((Date)objectMap.get("event_start_time"));
  220. infoVo.setEndDate((Date)objectMap.get("event_end_time"));
  221. infoVo.setPlace(objectMap.get("event_address").toString());
  222. }
  223. return RT.ok(infoVo);
  224. }
  225. @PostMapping(value = "/change-status")
  226. @ApiOperation(value="修改状态")
  227. @SaCheckPermission("officebuild:detail")
  228. public RT<Boolean> changeStatus(@Valid @RequestBody ChangeStatusDto dto) throws Exception {
  229. ActivityInfo activityInfo = activityInfoService.getById(dto.getId());
  230. if(activityInfo == null){
  231. throw new MyException("未能找到活动信息");
  232. }
  233. activityInfo.setStatus(dto.getStatus());
  234. activityInfoService.updateById(activityInfo);
  235. return RT.ok(true);
  236. }
  237. @PostMapping
  238. @ApiOperation(value = "新增活动信息")
  239. @SaCheckPermission("activityinfo:add")
  240. public RT<Boolean> add(@Valid @RequestBody AddActivityInfoDto dto){
  241. boolean isSuccess = activityInfoService.add(dto);
  242. return RT.ok(isSuccess);
  243. }
  244. @PutMapping
  245. @ApiOperation(value = "修改活动信息")
  246. @SaCheckPermission("activityinfo:edit")
  247. public RT<Boolean> update(@Valid @RequestBody UpdateActivityInfoDto dto){
  248. return RT.ok(activityInfoService.update(dto));
  249. }
  250. @DeleteMapping
  251. @ApiOperation(value = "删除活动信息")
  252. @SaCheckPermission("activityinfo:delete")
  253. public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
  254. return RT.ok(activityInfoService.delete(ids));
  255. }
  256. @GetMapping(value = "/effective-list")
  257. @ApiOperation(value="移动端活动信息列表(分页)")
  258. @SaCheckPermission("activityinfo:detail")
  259. public RT<PageOutput<ActivityInfoPageVo>> mobilePage(@Valid ActivityInfoPageDto dto){
  260. AddActivityEnrollRangeDto rangeDto = new AddActivityEnrollRangeDto();
  261. if(dto.getLoginUserId() == null){
  262. dto.setLoginUserId(StpUtil.getLoginIdAsLong());
  263. }
  264. rangeDto.setUserId(dto.getLoginUserId());
  265. List<Long> activityInfoIds = rangeService.getActivityInfoIds(rangeDto);
  266. dto.setActivityInfoIds(activityInfoIds);
  267. dto.setIsEffective(1);
  268. Page<ActivityInfoPageVo> page = activityInfoService.getPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
  269. List<ActivityEnroll> enrollList = enrollService.list(
  270. new QueryWrapper<ActivityEnroll>().lambda()
  271. .eq(ActivityEnroll::getUserId, StpUtil.getLoginIdAsLong())
  272. );
  273. Set<Long> collect = enrollList.stream().map(ActivityEnroll::getActivityInfoId).collect(Collectors.toSet());
  274. for (ActivityInfoPageVo record : page.getRecords()) {
  275. record.setIsEnroll(0);
  276. if(collect.contains(Long.parseLong(record.getId()))){
  277. record.setIsEnroll(1);
  278. }
  279. if(record.getCoverFileId() != null){
  280. File file = fileService.getOne(new QueryWrapper<File>().lambda().eq(File::getFolderId, record.getCoverFileId()));
  281. if(file != null){
  282. record.setCoverFileUrl(file.getFileUrl());
  283. }
  284. }
  285. }
  286. PageOutput<ActivityInfoPageVo> pageOutput = ConventPage.getPageOutput(page, ActivityInfoPageVo.class);
  287. return RT.ok(pageOutput);
  288. }
  289. @GetMapping(value = "/my-enroll-list")
  290. @ApiOperation(value="我的报名记录(分页)")
  291. @SaCheckPermission("activityinfo:detail")
  292. public RT<PageOutput<ActivityInfoPageVo>> myEnrollList(@Valid ActivityInfoPageDto dto){
  293. dto.setLoginUserId(StpUtil.getLoginIdAsLong());
  294. Page<ActivityInfoPageVo> page = activityInfoService.getMyPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
  295. for (ActivityInfoPageVo record : page.getRecords()) {
  296. if(record.getCoverFileId() != null){
  297. File file = fileService.getOne(new QueryWrapper<File>().lambda().eq(File::getFolderId, record.getCoverFileId()));
  298. if(file != null){
  299. record.setCoverFileUrl(file.getFileUrl());
  300. }
  301. }
  302. }
  303. PageOutput<ActivityInfoPageVo> pageOutput = ConventPage.getPageOutput(page, ActivityInfoPageVo.class);
  304. return RT.ok(pageOutput);
  305. }
  306. }