ActivityInfoController.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  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 com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  7. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  8. import com.xjrsoft.common.exception.MyException;
  9. import com.xjrsoft.common.model.result.RT;
  10. import com.xjrsoft.common.mybatis.SqlRunnerAdapter;
  11. import com.xjrsoft.common.page.ConventPage;
  12. import com.xjrsoft.common.page.PageOutput;
  13. import com.xjrsoft.module.activity.dto.ActivityEnrollPageDto;
  14. import com.xjrsoft.module.activity.dto.ActivityInfoPageDto;
  15. import com.xjrsoft.module.activity.dto.AddActivityInfoDto;
  16. import com.xjrsoft.module.activity.dto.ChangeStatusDto;
  17. import com.xjrsoft.module.activity.dto.UpdateActivityInfoDto;
  18. import com.xjrsoft.module.activity.dto.UserEnrollDto;
  19. import com.xjrsoft.module.activity.entity.ActivityEnroll;
  20. import com.xjrsoft.module.activity.entity.ActivityInfo;
  21. import com.xjrsoft.module.activity.service.IActivityEnrollService;
  22. import com.xjrsoft.module.activity.service.IActivityInfoService;
  23. import com.xjrsoft.module.activity.vo.ActivityEnrollPageVo;
  24. import com.xjrsoft.module.activity.vo.ActivityEnrollRangeVo;
  25. import com.xjrsoft.module.activity.vo.ActivityInfoPageVo;
  26. import com.xjrsoft.module.activity.vo.ActivityInfoVo;
  27. import com.xjrsoft.module.base.entity.BaseClass;
  28. import com.xjrsoft.module.base.service.IBaseClassService;
  29. import com.xjrsoft.module.concat.service.IXjrUserService;
  30. import com.xjrsoft.module.organization.entity.Department;
  31. import com.xjrsoft.module.organization.service.IDepartmentService;
  32. import com.xjrsoft.module.system.entity.File;
  33. import com.xjrsoft.module.system.service.IFileService;
  34. import com.xjrsoft.module.teacher.entity.XjrUser;
  35. import io.swagger.annotations.Api;
  36. import io.swagger.annotations.ApiOperation;
  37. import lombok.AllArgsConstructor;
  38. import org.springframework.web.bind.annotation.DeleteMapping;
  39. import org.springframework.web.bind.annotation.GetMapping;
  40. import org.springframework.web.bind.annotation.PostMapping;
  41. import org.springframework.web.bind.annotation.PutMapping;
  42. import org.springframework.web.bind.annotation.RequestBody;
  43. import org.springframework.web.bind.annotation.RequestMapping;
  44. import org.springframework.web.bind.annotation.RequestParam;
  45. import org.springframework.web.bind.annotation.RestController;
  46. import javax.validation.Valid;
  47. import java.util.ArrayList;
  48. import java.util.List;
  49. import java.util.Map;
  50. import java.util.Set;
  51. import java.util.stream.Collectors;
  52. /**
  53. * @title: 活动信息
  54. * @Author dzx
  55. * @Date: 2024-07-19
  56. * @Version 1.0
  57. */
  58. @RestController
  59. @RequestMapping("/activity" + "/activityInfo")
  60. @Api(value = "/activity" + "/activityInfo",tags = "活动信息代码")
  61. @AllArgsConstructor
  62. public class ActivityInfoController {
  63. private final IActivityInfoService activityInfoService;
  64. private final IBaseClassService classService;
  65. private final IDepartmentService departmentService;
  66. private final IXjrUserService xjrUserService;
  67. private final IFileService fileService;
  68. private final IActivityEnrollService enrollService;
  69. @GetMapping(value = "/page")
  70. @ApiOperation(value="活动信息列表(分页)")
  71. @SaCheckPermission("activityinfo:detail")
  72. public RT<PageOutput<ActivityInfoPageVo>> page(@Valid ActivityInfoPageDto dto){
  73. Page<ActivityInfoPageVo> page = activityInfoService.getPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
  74. PageOutput<ActivityInfoPageVo> pageOutput = ConventPage.getPageOutput(page, ActivityInfoPageVo.class);
  75. return RT.ok(pageOutput);
  76. }
  77. @GetMapping(value = "/info")
  78. @ApiOperation(value="根据id查询活动信息信息")
  79. @SaCheckPermission("activityinfo:detail")
  80. public RT<ActivityInfoVo> info(@RequestParam Long id){
  81. ActivityInfo activityInfo = activityInfoService.getByIdDeep(id);
  82. if (activityInfo == null) {
  83. return RT.error("找不到此数据!");
  84. }
  85. ActivityInfoVo infoVo = BeanUtil.toBean(activityInfo, ActivityInfoVo.class);
  86. if(infoVo.getOrgId() != null){
  87. Department department = departmentService.getById(infoVo.getOrgId());
  88. if(department != null){
  89. infoVo.setOrgName(department.getName());
  90. }
  91. }
  92. if(infoVo.getEnterpriseId() != null){
  93. String tableName = "company_coop";
  94. Entity where = Entity.create(tableName);
  95. where.set("id", infoVo.getEnterpriseId());
  96. Map<String, Object> objectMap = SqlRunnerAdapter.db().dynamicSelectOne(tableName, where);
  97. if(objectMap != null && objectMap.containsKey("company_name")){
  98. infoVo.setEnterpriseName(objectMap.get("company_name").toString());
  99. }
  100. }
  101. List<ActivityEnrollRangeVo> userRelationList = new ArrayList<>();
  102. for (ActivityEnroll jsonElement : activityInfo.getActivityEnrollList()) {
  103. ActivityEnrollRangeVo relationDto = BeanUtil.toBean(jsonElement, ActivityEnrollRangeVo.class);
  104. if(relationDto.getUserId() != null){
  105. XjrUser xjrUser = xjrUserService.getById(relationDto.getUserId());
  106. if(xjrUser != null){
  107. relationDto.setName(xjrUser.getName());
  108. }
  109. }else if(relationDto.getDeptId() != null){
  110. Department department = departmentService.getById(relationDto.getDeptId());
  111. if(department != null){
  112. relationDto.setName(department.getName());
  113. }
  114. }else if(relationDto.getClassId() != null){
  115. BaseClass aClass = classService.getById(relationDto.getClassId());
  116. if(aClass != null){
  117. relationDto.setName(aClass.getName());
  118. }
  119. }
  120. userRelationList.add(relationDto);
  121. }
  122. infoVo.setActivityEnrollRangeList(userRelationList);
  123. ActivityEnrollPageDto dto = new ActivityEnrollPageDto();
  124. dto.setActivityInfoId(id);
  125. List<ActivityEnrollPageVo> enrollList = enrollService.getList(dto);
  126. infoVo.setEnrollCount(enrollList.size());
  127. Set<ActivityEnrollPageVo> teacherSet = enrollList.stream().filter(x -> x.getRoleId() == 2L).collect(Collectors.toSet());
  128. infoVo.setTeacherCount(teacherSet.size());
  129. Set<ActivityEnrollPageVo> studentSet = enrollList.stream().filter(x -> x.getRoleId() == 3L).collect(Collectors.toSet());
  130. infoVo.setStudentCount(studentSet.size());
  131. Set<ActivityEnrollPageVo> suretSet = enrollList.stream().filter(x -> (x.getStatus() == 1 || x.getStatus() == 2)).collect(Collectors.toSet());
  132. infoVo.setSureCount(suretSet.size());
  133. Set<ActivityEnrollPageVo> notSuretSet = enrollList.stream().filter(x -> x.getStatus() == 0).collect(Collectors.toSet());
  134. infoVo.setNotSureCount(notSuretSet.size());
  135. return RT.ok(infoVo);
  136. }
  137. @PostMapping(value = "/change-status")
  138. @ApiOperation(value="修改状态")
  139. @SaCheckPermission("officebuild:detail")
  140. public RT<Boolean> changeStatus(@Valid @RequestBody ChangeStatusDto dto) throws Exception {
  141. ActivityInfo activityInfo = activityInfoService.getById(dto.getId());
  142. if(activityInfo == null){
  143. throw new MyException("未能找到活动信息");
  144. }
  145. activityInfo.setStatus(dto.getStatus());
  146. activityInfoService.updateById(activityInfo);
  147. return RT.ok(true);
  148. }
  149. @PostMapping
  150. @ApiOperation(value = "新增活动信息")
  151. @SaCheckPermission("activityinfo:add")
  152. public RT<Boolean> add(@Valid @RequestBody AddActivityInfoDto dto){
  153. boolean isSuccess = activityInfoService.add(dto);
  154. return RT.ok(isSuccess);
  155. }
  156. @PutMapping
  157. @ApiOperation(value = "修改活动信息")
  158. @SaCheckPermission("activityinfo:edit")
  159. public RT<Boolean> update(@Valid @RequestBody UpdateActivityInfoDto dto){
  160. ActivityInfo activityInfo = BeanUtil.toBean(dto, ActivityInfo.class);
  161. return RT.ok(activityInfoService.update(activityInfo));
  162. }
  163. @DeleteMapping
  164. @ApiOperation(value = "删除活动信息")
  165. @SaCheckPermission("activityinfo:delete")
  166. public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
  167. return RT.ok(activityInfoService.delete(ids));
  168. }
  169. @GetMapping(value = "/effective-list")
  170. @ApiOperation(value="移动端活动信息列表(分页)")
  171. @SaCheckPermission("activityinfo:detail")
  172. public RT<PageOutput<ActivityInfoPageVo>> mobilePage(@Valid ActivityInfoPageDto dto){
  173. dto.setIsEffective(1);
  174. Page<ActivityInfoPageVo> page = activityInfoService.getPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
  175. List<ActivityEnroll> enrollList = enrollService.list(
  176. new QueryWrapper<ActivityEnroll>().lambda()
  177. .eq(ActivityEnroll::getUserId, StpUtil.getLoginIdAsLong())
  178. );
  179. Set<Long> collect = enrollList.stream().map(ActivityEnroll::getActivityInfoId).collect(Collectors.toSet());
  180. for (ActivityInfoPageVo record : page.getRecords()) {
  181. record.setIsEnroll(0);
  182. if(collect.contains(Long.parseLong(record.getId()))){
  183. record.setIsEnroll(1);
  184. }
  185. if(record.getCoverFileId() != null){
  186. File file = fileService.getOne(new QueryWrapper<File>().lambda().eq(File::getFolderId, record.getCoverFileId()));
  187. if(file != null){
  188. record.setCoverFileUrl(file.getFileUrl());
  189. }
  190. }
  191. }
  192. PageOutput<ActivityInfoPageVo> pageOutput = ConventPage.getPageOutput(page, ActivityInfoPageVo.class);
  193. return RT.ok(pageOutput);
  194. }
  195. @GetMapping(value = "/my-enroll-list")
  196. @ApiOperation(value="我的报名记录(分页)")
  197. @SaCheckPermission("activityinfo:detail")
  198. public RT<PageOutput<ActivityInfoPageVo>> myEnrollList(@Valid ActivityInfoPageDto dto){
  199. dto.setLoginUserId(StpUtil.getLoginIdAsLong());
  200. Page<ActivityInfoPageVo> page = activityInfoService.getMyPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
  201. PageOutput<ActivityInfoPageVo> pageOutput = ConventPage.getPageOutput(page, ActivityInfoPageVo.class);
  202. return RT.ok(pageOutput);
  203. }
  204. }