TeacherVipGroupController.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. package com.ym.mec.teacher.controller;
  2. import com.ym.mec.auth.api.client.SysUserFeignService;
  3. import com.ym.mec.auth.api.entity.SysUser;
  4. import com.ym.mec.biz.dal.dao.TeacherDao;
  5. import com.ym.mec.biz.dal.dao.VipGroupCategoryDao;
  6. import com.ym.mec.biz.dal.dao.VipGroupDefaultClassesUnitPriceDao;
  7. import com.ym.mec.biz.dal.dto.StudentVipDouble11Dto;
  8. import com.ym.mec.biz.dal.dto.VipGroupApplyDto;
  9. import com.ym.mec.biz.dal.dto.VipGroupCostCountParamsDto;
  10. import com.ym.mec.biz.dal.entity.*;
  11. import com.ym.mec.biz.dal.page.StudentManageQueryInfo;
  12. import com.ym.mec.biz.service.StudentManageService;
  13. import com.ym.mec.biz.service.VipGroupService;
  14. import com.ym.mec.common.controller.BaseController;
  15. import com.ym.mec.common.entity.HttpResponseResult;
  16. import com.ym.mec.util.date.DateUtil;
  17. import com.yonge.log.model.AuditLogAnnotation;
  18. import io.swagger.annotations.Api;
  19. import io.swagger.annotations.ApiOperation;
  20. import org.apache.commons.lang3.StringUtils;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.http.HttpStatus;
  23. import org.springframework.security.access.prepost.PreAuthorize;
  24. import org.springframework.transaction.annotation.Transactional;
  25. import org.springframework.util.CollectionUtils;
  26. import org.springframework.web.bind.annotation.*;
  27. import java.util.*;
  28. import java.util.stream.Collectors;
  29. /**
  30. * @Author Joburgess
  31. * @Date 2019/9/21
  32. */
  33. @Api(tags = "vip课-教师端")
  34. @RequestMapping("teacherVipGroup")
  35. @RestController
  36. public class TeacherVipGroupController extends BaseController {
  37. @Autowired
  38. private VipGroupService vipGroupService;
  39. @Autowired
  40. private SysUserFeignService sysUserFeignService;
  41. @Autowired
  42. private TeacherDao teacherDao;
  43. @Autowired
  44. private StudentManageService studentManageService;
  45. @Autowired
  46. private VipGroupCategoryDao vipGroupCategoryDao;
  47. @Autowired
  48. private VipGroupDefaultClassesUnitPriceDao vipGroupDefaultClassesUnitPriceDao;
  49. @ApiOperation("vip课申请")
  50. @PostMapping("/vipGroupApply")
  51. @AuditLogAnnotation(operateName = "vip课申请")
  52. public Object vipGroupApply(@RequestBody VipGroupApplyDto vipGroupApplyDto) {
  53. SysUser user = sysUserFeignService.queryUserInfo();
  54. if (Objects.isNull(user)) {
  55. return failed(HttpStatus.FORBIDDEN, "请登录");
  56. }
  57. Integer userId = user.getId();
  58. Teacher teacher = teacherDao.get(userId);
  59. vipGroupApplyDto.getVipGroupApplyBaseInfo().setUserId(userId);
  60. vipGroupApplyDto.getVipGroupApplyBaseInfo().setTeacherId(Long.valueOf(userId));
  61. vipGroupApplyDto.getVipGroupApplyBaseInfo().setOrganIdList(teacher.getTeacherOrganId().toString());
  62. // vipGroupApplyDto.getVipGroupApplyBaseInfo().setOrganId(teacher.getTeacherOrganId());
  63. Integer firstStudentId = vipGroupApplyDto.getVipGroupApplyBaseInfo().getFirstStudentId();
  64. SysUser student = teacherDao.getUser(firstStudentId);
  65. if(Objects.isNull(student)||Objects.isNull(student.getOrganId())){
  66. return failed("学员信息异常");
  67. }
  68. vipGroupApplyDto.getVipGroupApplyBaseInfo().setOrganId(student.getOrganId());
  69. return vipGroupService.createVipGroup(vipGroupApplyDto);
  70. }
  71. @ApiOperation("vip课申请-双11")
  72. @PostMapping("/vipGroupApplyForDouble11")
  73. @Transactional(rollbackFor = Exception.class)
  74. public Object vipGroupApplyForDouble11(@RequestBody VipGroupApplyDto vipGroupApplyDto) {
  75. SysUser user = sysUserFeignService.queryUserInfo();
  76. if (Objects.isNull(user)) {
  77. return failed(HttpStatus.FORBIDDEN, "请登录");
  78. }
  79. Integer userId = user.getId();
  80. Teacher teacher = teacherDao.get(userId);
  81. vipGroupApplyDto.getVipGroupApplyBaseInfo().setUserId(userId);
  82. vipGroupApplyDto.getVipGroupApplyBaseInfo().setTeacherId(Long.valueOf(userId));
  83. vipGroupApplyDto.getVipGroupApplyBaseInfo().setOrganIdList(teacher.getTeacherOrganId().toString());
  84. // vipGroupApplyDto.getVipGroupApplyBaseInfo().setOrganId(teacher.getTeacherOrganId());
  85. Integer firstStudentId = vipGroupApplyDto.getVipGroupApplyBaseInfo().getFirstStudentId();
  86. SysUser student = teacherDao.getUser(firstStudentId);
  87. if(Objects.isNull(student)||Objects.isNull(student.getOrganId())){
  88. return failed("学员信息异常");
  89. }
  90. vipGroupApplyDto.getVipGroupApplyBaseInfo().setOrganId(student.getOrganId());
  91. vipGroupApplyDto.getVipGroupApplyBaseInfo().setRegistrationStartTime(DateUtil.addDays(new Date(), -1));
  92. vipGroupApplyDto.getVipGroupApplyBaseInfo().setPaymentExpireDate(vipGroupApplyDto.getVipGroupApplyBaseInfo().getRegistrationStartTime());
  93. vipGroupApplyDto.setOnlyProgress(true);
  94. VipGroupCategory vipGroupCategory = vipGroupCategoryDao.get(vipGroupApplyDto.getVipGroupApplyBaseInfo().getVipGroupCategoryId());
  95. if(Objects.isNull(vipGroupCategory)){
  96. return failed("课程形式错误");
  97. }
  98. List<Integer> studentIds = Arrays.stream(vipGroupApplyDto.getVipGroupApplyBaseInfo().getStudentIdList().split(",")).map(Integer::valueOf).collect(Collectors.toList());
  99. List<StudentVipDouble11Dto> studentDouble11Info = studentManageService.getStudentDouble11Info(studentIds);
  100. Map<Integer, StudentVipDouble11Dto> idStudentInfoMap = new HashMap<>();
  101. if(!CollectionUtils.isEmpty(studentDouble11Info)){
  102. idStudentInfoMap = studentDouble11Info.stream().collect(Collectors.toMap(StudentVipDouble11Dto::getUserId, s->s, (s1, s2)->s1));
  103. }
  104. for (Integer studentId : studentIds) {
  105. StudentVipDouble11Dto studentVipDouble11Dto = idStudentInfoMap.get(studentId);
  106. if(Objects.isNull(studentVipDouble11Dto)){
  107. return failed("部分学员可排课次不足");
  108. }
  109. boolean enableApply = false;
  110. switch (vipGroupCategory.getStudentNum()){
  111. case 1:
  112. enableApply = studentVipDouble11Dto.getCourseOneToOneTime()>=vipGroupApplyDto.getVipGroupApplyBaseInfo().getTotalClassTimes();
  113. break;
  114. case 2:
  115. enableApply = studentVipDouble11Dto.getCourseOneToTwoTime()>=vipGroupApplyDto.getVipGroupApplyBaseInfo().getTotalClassTimes();
  116. break;
  117. default:
  118. break;
  119. }
  120. if(!enableApply){
  121. return failed("部分学员可排课次不足");
  122. }
  123. }
  124. HttpResponseResult result = vipGroupService.createVipGroup(vipGroupApplyDto);
  125. if(result.getCode()==200){
  126. vipGroupService.addVipGroupStudents(vipGroupApplyDto.getVipGroupApplyBaseInfo().getId(), studentIds, new HashMap<>());
  127. }
  128. return result;
  129. }
  130. @ApiOperation("获取vip课课程和课酬总费用")
  131. @PostMapping("/getVipGroupCostCount")
  132. public Object getVipGroupCostCount(VipGroupCostCountParamsDto vipGroupCostCountParamsDto) {
  133. // return succeed(vipGroupService.vipGroupCostCount(vipGroupCostCountParamsDto));
  134. return succeed();
  135. }
  136. @ApiOperation("获取vip课教学点")
  137. @PostMapping("/getSchools")
  138. public Object getSchools() {
  139. SysUser user = sysUserFeignService.queryUserInfo();
  140. if (Objects.isNull(user)) {
  141. return failed(HttpStatus.FORBIDDEN, "请登录");
  142. }
  143. return succeed(vipGroupService.querySchoolByUserId(user.getId()));
  144. }
  145. @ApiOperation(value = "获取教师所在分部学生列表")
  146. @GetMapping("/queryStudentsWithTeacher")
  147. public Object queryStudentsWithTeacher(StudentManageQueryInfo queryInfo){
  148. SysUser user = sysUserFeignService.queryUserInfo();
  149. if (Objects.isNull(user)) {
  150. return failed(HttpStatus.FORBIDDEN, "请登录");
  151. }
  152. queryInfo.setTeacherId(user.getId());
  153. return succeed(studentManageService.queryStudentsWithTeacher(queryInfo));
  154. }
  155. @ApiOperation(value = "获取参与双十一活动学员列表")
  156. @GetMapping("/queryDouble11Students")
  157. public HttpResponseResult queryDouble11Students(StudentManageQueryInfo queryInfo){
  158. SysUser user = sysUserFeignService.queryUserInfo();
  159. if (Objects.isNull(user)) {
  160. return failed(HttpStatus.FORBIDDEN, "请登录");
  161. }
  162. queryInfo.setTeacherId(user.getId());
  163. return succeed(studentManageService.queryDouble11Students(queryInfo));
  164. }
  165. @ApiOperation(value = "获取六一活动学生列表")
  166. @GetMapping("queryChildrenDayStudentList")
  167. public Object queryStudentList(StudentManageQueryInfo queryInfo){
  168. SysUser sysUser = sysUserFeignService.queryUserInfo();
  169. if (sysUser == null) {
  170. return failed("用户信息获取失败");
  171. }
  172. Teacher teacher = teacherDao.get(sysUser.getId());
  173. if(Objects.isNull(teacher)){
  174. return failed("教师信息不存在");
  175. }
  176. if(Objects.nonNull(teacher.getTeacherOrganId())){
  177. queryInfo.setOrganId(teacher.getTeacherOrganId().toString());
  178. }
  179. if(StringUtils.isNotBlank(teacher.getFlowOrganRange())){
  180. queryInfo.setOrganId(queryInfo.getOrganId()+","+teacher.getFlowOrganRange());
  181. }
  182. if(StringUtils.isBlank(queryInfo.getOrganId())){
  183. return succeed(Collections.EMPTY_LIST);
  184. }
  185. queryInfo.setIsExport(false);
  186. return succeed(studentManageService.findStudentsByOrganId(queryInfo));
  187. }
  188. @ApiOperation(value = "创建六一活动vip课")
  189. @PostMapping("/createActivityVipGroup")
  190. public Object createActivityVipGroup(@RequestBody VipGroupApplyDto vipGroupApplyDto){
  191. SysUser sysUser = sysUserFeignService.queryUserInfo();
  192. if (sysUser == null) {
  193. return failed("用户信息获取失败");
  194. }
  195. vipGroupApplyDto.getVipGroupApplyBaseInfo().setUserId(sysUser.getId());
  196. Integer userId = vipGroupApplyDto.getVipGroupApplyBaseInfo().getUserId();
  197. Teacher teacher = teacherDao.get(userId);
  198. if(Objects.isNull(teacher)){
  199. return failed("请指定指导老师!");
  200. }
  201. Integer firstStudentId = vipGroupApplyDto.getVipGroupApplyBaseInfo().getFirstStudentId();
  202. SysUser student = teacherDao.getUser(firstStudentId);
  203. if(Objects.isNull(student)||Objects.isNull(student.getOrganId())){
  204. return failed("学员信息异常");
  205. }
  206. vipGroupApplyDto.getVipGroupApplyBaseInfo().setOrganId(student.getOrganId());
  207. for (CourseSchedule courseSchedule : vipGroupApplyDto.getCourseSchedules()) {
  208. courseSchedule.setEndClassTime(DateUtil.addMinutes(courseSchedule.getStartClassTime(), vipGroupApplyDto.getVipGroupApplyBaseInfo().getSingleClassMinutes()));
  209. }
  210. VipGroupDefaultClassesUnitPrice vipGroupDefaultClassesUnitPrice = vipGroupDefaultClassesUnitPriceDao.getByVipGroupCategory(vipGroupApplyDto.getVipGroupApplyBaseInfo().getVipGroupCategoryId(), vipGroupApplyDto.getVipGroupApplyBaseInfo().getOrganId());
  211. if(Objects.nonNull(vipGroupDefaultClassesUnitPrice)){
  212. vipGroupApplyDto.getVipGroupApplyBaseInfo().setOnlineClassesUnitPrice(vipGroupDefaultClassesUnitPrice.getOnlineClassesUnitPrice());
  213. vipGroupApplyDto.getVipGroupApplyBaseInfo().setOfflineClassesUnitPrice(vipGroupDefaultClassesUnitPrice.getOfflineClassesUnitPrice());
  214. }
  215. vipGroupApplyDto.getVipGroupApplyBaseInfo().setEducationalTeacherId(sysUser.getId());
  216. return vipGroupService.createActivityVipGroup(vipGroupApplyDto);
  217. }
  218. }