TeacherVipGroupController.java 12 KB

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