DzCardsController.java 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. package com.ruoyi.web.controller.dz;
  2. import java.util.List;
  3. import javax.servlet.http.HttpServletResponse;
  4. import javax.validation.ValidationException;
  5. import com.ruoyi.common.core.domain.entity.SysUser;
  6. import com.ruoyi.common.enums.ExamType;
  7. import com.ruoyi.common.utils.SecurityUtils;
  8. import com.ruoyi.dz.domain.DzAgent;
  9. import com.ruoyi.dz.service.IDzAgentService;
  10. import com.ruoyi.enums.CardAction;
  11. import com.ruoyi.enums.CardType;
  12. import com.ruoyi.enums.UserTypeEnum;
  13. import io.swagger.annotations.Api;
  14. import io.swagger.annotations.ApiOperation;
  15. import io.swagger.annotations.ApiParam;
  16. import org.springframework.security.access.prepost.PreAuthorize;
  17. import org.springframework.beans.factory.annotation.Autowired;
  18. import org.springframework.web.bind.annotation.*;
  19. import com.ruoyi.common.annotation.Log;
  20. import com.ruoyi.common.core.controller.BaseController;
  21. import com.ruoyi.common.core.domain.AjaxResult;
  22. import com.ruoyi.common.enums.BusinessType;
  23. import com.ruoyi.dz.domain.DzCards;
  24. import com.ruoyi.dz.service.IDzCardsService;
  25. import com.ruoyi.common.utils.poi.ExcelUtil;
  26. import com.ruoyi.common.core.page.TableDataInfo;
  27. /**
  28. * 学习卡Controller
  29. *
  30. * @author ruoyi
  31. * @date 2025-09-12
  32. */
  33. @RestController
  34. @RequestMapping("/dz/cards")
  35. @Api(tags = "后台-学习卡管理")
  36. public class DzCardsController extends BaseController
  37. {
  38. @Autowired
  39. private IDzCardsService dzCardsService;
  40. @Autowired
  41. private IDzAgentService agentService;
  42. /**
  43. * 查询学习卡列表
  44. */
  45. @PreAuthorize("@ss.hasPermi('dz:cards:list')")
  46. @GetMapping("/list")
  47. @ApiOperation("列表")
  48. public TableDataInfo list(DzCards dzCards)
  49. {
  50. startPage();
  51. List<DzCards> list = dzCardsService.selectDzCardsList(dzCards);
  52. return getDataTable(list);
  53. }
  54. /**
  55. * 导出学习卡列表
  56. */
  57. @PreAuthorize("@ss.hasPermi('dz:cards:export')")
  58. @Log(title = "学习卡", businessType = BusinessType.EXPORT)
  59. @PostMapping("/export")
  60. public void export(HttpServletResponse response, DzCards dzCards)
  61. {
  62. List<DzCards> list = dzCardsService.selectDzCardsList(dzCards);
  63. ExcelUtil<DzCards> util = new ExcelUtil<DzCards>(DzCards.class);
  64. util.exportExcel(response, list, "学习卡数据");
  65. }
  66. /**
  67. * 获取学习卡详细信息
  68. */
  69. @PreAuthorize("@ss.hasPermi('dz:cards:query')")
  70. @GetMapping(value = "/{cardId}")
  71. @ApiOperation("详情")
  72. public AjaxResult getInfo(@PathVariable("cardId") Long cardId)
  73. {
  74. return success(dzCardsService.selectDzCardsByCardId(cardId));
  75. }
  76. /**
  77. * 新增学习卡
  78. */
  79. @PreAuthorize("@ss.hasPermi('dz:cards:add')")
  80. @Log(title = "学习卡", businessType = BusinessType.INSERT)
  81. @PostMapping
  82. public AjaxResult add(@RequestBody DzCards dzCards)
  83. {
  84. return toAjax(dzCardsService.insertDzCards(dzCards));
  85. }
  86. /**
  87. * 修改学习卡
  88. */
  89. @PreAuthorize("@ss.hasPermi('dz:cards:edit')")
  90. @Log(title = "学习卡", businessType = BusinessType.UPDATE)
  91. @PutMapping
  92. public AjaxResult edit(@RequestBody DzCards dzCards)
  93. {
  94. return toAjax(dzCardsService.updateDzCards(dzCards));
  95. }
  96. /**
  97. * 删除学习卡
  98. */
  99. @PreAuthorize("@ss.hasPermi('dz:cards:remove')")
  100. @Log(title = "学习卡", businessType = BusinessType.DELETE)
  101. @DeleteMapping("/{cardIds}")
  102. public AjaxResult remove(@PathVariable Long[] cardIds)
  103. {
  104. return toAjax(dzCardsService.deleteDzCardsByCardIds(cardIds));
  105. }
  106. @Log(title = "制卡", businessType = BusinessType.INSERT)
  107. @PostMapping("/issueCard")
  108. @ApiOperation("制卡")
  109. public AjaxResult issueCard(@ApiParam("机构") Long institutionId, @ApiParam("卡类型") CardType type, @ApiParam("数量") Integer count)
  110. {
  111. dzCardsService.issueCard(institutionId, type, count);
  112. return AjaxResult.success();
  113. }
  114. @Log(title = "分配卡", businessType = BusinessType.INSERT)
  115. @PostMapping("/assignCard")
  116. @ApiOperation("分配卡")
  117. public AjaxResult assignCard(@ApiParam("代理商") @RequestParam Long agentId, @ApiParam("开始号") @RequestParam String begin, @ApiParam("结束号") @RequestParam String end,
  118. @ApiParam("省份") @RequestParam(required = false) String location,
  119. @ApiParam("考生类型") @RequestParam(required = false) ExamType examType,
  120. @ApiParam("学校") @RequestParam(required = false) Long schoolId)
  121. {
  122. SysUser sysUser = SecurityUtils.getLoginUser().getUser();
  123. DzAgent agent = agentService.selectDzAgentByAgentId(agentId);
  124. if(UserTypeEnum.Agent.getVal().equals(sysUser.getUserType())) { // 代理商分配
  125. if (!sysUser.getUserTypeId().equals(agent.getParentId())) {
  126. throw new ValidationException("只能分配给下级代理");
  127. }
  128. dzCardsService.assignCard(sysUser.getUserTypeId(), agentId, begin, end, location, examType, schoolId);
  129. } else if(UserTypeEnum.Institution.getVal().equals(sysUser.getUserType())) { // 机构分配卡给自己的下级
  130. if (!sysUser.getDeptId().equals(agent.getDeptId())) {
  131. throw new ValidationException("只能分配给下级代理");
  132. }
  133. dzCardsService.assignCard(null == agent.getParentId() ? agentId : agent.getParentId(), agentId, begin, end, location, examType, schoolId);
  134. } else if(null == agent.getParentId()) { // 平台指定, TODO 暂只支持二级代理
  135. dzCardsService.assignCard(null == agent.getParentId() ? agentId : agent.getParentId(), agentId, begin, end, location, examType, schoolId);
  136. }
  137. return AjaxResult.success();
  138. }
  139. @Log(title = "直接开卡", businessType = BusinessType.INSERT)
  140. @PostMapping("/openCard")
  141. @ApiOperation("直接开卡")
  142. public AjaxResult openCard(@ApiParam("学校") Long schoolId, @ApiParam("开始号") String begin, @ApiParam("结束号") String end)
  143. {
  144. Long agentId = 0L;
  145. return AjaxResult.success(dzCardsService.openCard(schoolId, agentId, begin, end));
  146. }
  147. @Log(title = "分配校区", businessType = BusinessType.INSERT)
  148. @PostMapping("/changeCampus")
  149. @ApiOperation("分配校区")
  150. public AjaxResult changeCampus(@ApiParam("校区") Long campusId, @ApiParam("开始号") String begin, @ApiParam("结束号") String end)
  151. {
  152. return AjaxResult.success(dzCardsService.changeCampus(campusId, begin, end));
  153. }
  154. @Log(title = "修改卡", businessType = BusinessType.UPDATE)
  155. @PostMapping("/changeCard")
  156. @ApiOperation("修改卡 重卡/关卡/支付")
  157. public AjaxResult changeCard(@ApiParam("操作") @RequestParam CardAction action, @ApiParam("卡ID") @RequestParam Long[] cardIds)
  158. {
  159. dzCardsService.changeCard(action, cardIds);
  160. return AjaxResult.success();
  161. }
  162. }