GoodsController.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397
  1. package com.zhongzheng.controller.goods;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import cn.hutool.core.lang.Validator;
  4. import com.zhongzheng.common.annotation.Log;
  5. import com.zhongzheng.common.core.controller.BaseController;
  6. import com.zhongzheng.common.core.domain.AjaxResult;
  7. import com.zhongzheng.common.core.page.TableDataInfo;
  8. import com.zhongzheng.common.enums.BusinessType;
  9. import com.zhongzheng.common.utils.poi.ExcelUtil;
  10. import com.zhongzheng.modules.bank.service.IQuestionService;
  11. import com.zhongzheng.modules.exam.bo.ExamNumberGoodsQueryBo;
  12. import com.zhongzheng.modules.exam.vo.ExamNumberGoodsVo;
  13. import com.zhongzheng.modules.goods.bo.*;
  14. import com.zhongzheng.modules.goods.service.IGoodsAttachedService;
  15. import com.zhongzheng.modules.goods.service.IGoodsService;
  16. import com.zhongzheng.modules.goods.vo.*;
  17. import io.swagger.annotations.Api;
  18. import io.swagger.annotations.ApiOperation;
  19. import lombok.RequiredArgsConstructor;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import org.springframework.security.access.prepost.PreAuthorize;
  22. import org.springframework.web.bind.annotation.*;
  23. import java.util.ArrayList;
  24. import java.util.List;
  25. /**
  26. * 商品Controller
  27. *
  28. * @author hjl
  29. * @date 2021-10-12
  30. */
  31. @Api(value = "商品控制器", tags = {"商品管理"})
  32. @RequiredArgsConstructor(onConstructor_ = @Autowired)
  33. @RestController
  34. @RequestMapping("/goods")
  35. public class GoodsController extends BaseController {
  36. private final IGoodsService iGoodsService;
  37. private final IGoodsAttachedService iGoodsAttachedService;
  38. private final IQuestionService iQuestionService;
  39. /**
  40. * 查询商品列表
  41. */
  42. @ApiOperation("查询商品列表")
  43. @PreAuthorize("@ss.hasPermi('system:goods:list')")
  44. @GetMapping("/list")
  45. public TableDataInfo<GoodsVo> list(GoodsQueryBo bo) {
  46. /* bo.setStatus(new ArrayList<Integer>(){{
  47. add(1);
  48. }});*/
  49. startPage();
  50. List<GoodsVo> list = iGoodsService.selectList(bo);
  51. return getDataTable(list);
  52. }
  53. @ApiOperation("导出直播商品列表")
  54. @PreAuthorize("@ss.hasPermi('system:goods:list')")
  55. @GetMapping("/export_list")
  56. public AjaxResult<ExportLiveGoodsVo> export_list(GoodsQueryBo bo) {
  57. List<GoodsVo> list = iGoodsService.selectList(bo);
  58. List<ExportLiveGoodsVo> list1 = new ArrayList<>();
  59. for(GoodsVo vo : list){
  60. ExportLiveGoodsVo goodsVo = BeanUtil.toBean(vo, ExportLiveGoodsVo.class);
  61. goodsVo.setBusinessName(vo.getEducationName()+"-"+vo.getProjectName()+"-"+vo.getBusinessName());
  62. if(Validator.isEmpty(vo.getPeriod())){
  63. goodsVo.setPeriod(0L);
  64. }
  65. list1.add(goodsVo);
  66. }
  67. ExcelUtil<ExportLiveGoodsVo> util = new ExcelUtil<>(ExportLiveGoodsVo.class);
  68. return util.exportExcel(list1,"直播学习记录");
  69. }
  70. @ApiOperation("查询商品列表To录单")
  71. @PreAuthorize("@ss.hasPermi('system:goods:list')")
  72. @GetMapping("/listToInput")
  73. public TableDataInfo<GoodsVo> listToInput(GoodsQueryBo bo) {
  74. startPage();
  75. List<GoodsVo> list = iGoodsService.selectListToInput(bo);
  76. return getDataTable(list);
  77. }
  78. @ApiOperation("获取商品规格模板列表")
  79. @GetMapping("/spec/list/{goodsId}")
  80. public AjaxResult<List<GoodsSpecTemplateVo>> getSpecTemplateList(@PathVariable("goodsId") Long goodsId) {
  81. List<GoodsSpecTemplateVo> list = iGoodsService.getSpecTemplateList(goodsId);
  82. return AjaxResult.success(list);
  83. }
  84. @ApiOperation("修改商品默认规格模板")
  85. @PostMapping("/update/spec")
  86. public AjaxResult<Void> updateSpecTemplate(@RequestBody GoodsSpecTempEditBo bo) {
  87. return toAjax(iGoodsService.updateSpecTemplate(bo) ? 1 : 0);
  88. }
  89. @ApiOperation("取消商品默认规格模板")
  90. @PostMapping("/cancel/spec")
  91. public AjaxResult<Void> cancelSpecTemplate(@RequestBody GoodsSpecTempEditBo bo) {
  92. return toAjax(iGoodsService.cancelSpecTemplate(bo) ? 1 : 0);
  93. }
  94. /**
  95. * 导出商品列表
  96. */
  97. /*selectList*/
  98. /**
  99. * 获取商品详细信息
  100. */
  101. @ApiOperation("获取商品详细信息")
  102. @PreAuthorize("@ss.hasPermi('system:goods:query')")
  103. @GetMapping("/{goodsId}")
  104. public AjaxResult<GoodsVo> getInfo(@PathVariable("goodsId" ) Long goodsId) {
  105. return AjaxResult.success(iGoodsService.selectDetail(goodsId));
  106. }
  107. /**
  108. * 新增课程商品
  109. */
  110. @ApiOperation("新增课程商品")
  111. @PreAuthorize("@ss.hasPermi('system:goods:add')")
  112. @Log(title = "商品", businessType = BusinessType.INSERT)
  113. @PostMapping()
  114. public AjaxResult<Void> add(@RequestBody GoodsAddBo bo) {
  115. return toAjax(iGoodsService.insertByAddBo(bo) ? 1 : 0);
  116. }
  117. /**
  118. * 修改商品
  119. */
  120. @ApiOperation("修改商品")
  121. @PreAuthorize("@ss.hasPermi('system:goods:edit')")
  122. @Log(title = "商品", businessType = BusinessType.UPDATE)
  123. @PostMapping("/edit")
  124. public AjaxResult<Void> edit(@RequestBody GoodsEditBo bo) {
  125. return toAjax(iGoodsService.updateByEditBo(bo) ? 1 : 0);
  126. }
  127. /**
  128. * 商品批量上下架
  129. */
  130. @ApiOperation("商品批量上下架")
  131. @PostMapping("/batch/updateStatus")
  132. public AjaxResult<Void> batchUpdateStatus(@RequestBody GoodsBatchUpdateStatusBo bo) {
  133. return toAjax(iGoodsService.GoodsBatchUpdateStatusBo(bo) ? 1 : 0);
  134. }
  135. /**
  136. * 商品批量删除
  137. */
  138. @ApiOperation("商品批量删除")
  139. @PostMapping("/batch/del")
  140. public AjaxResult<Void> batchDelGoods(@RequestBody GoodsBatchDelBo bo) {
  141. return toAjax(iGoodsService.batchDelGoods(bo) ? 1 : 0);
  142. }
  143. /**
  144. * 删除商品
  145. */
  146. /* @ApiOperation("删除商品")
  147. @PreAuthorize("@ss.hasPermi('system:goods:remove')")
  148. @Log(title = "商品" , businessType = BusinessType.DELETE)
  149. @DeleteMapping("/{goodsIds}")
  150. public AjaxResult<Void> remove(@PathVariable Long[] goodsIds) {
  151. return toAjax(iGoodsService.deleteWithValidByIds(Arrays.asList(goodsIds), true) ? 1 : 0);
  152. }*/
  153. /**
  154. * 新增题库商品
  155. */
  156. @ApiOperation("新增题库商品")
  157. @PreAuthorize("@ss.hasPermi('system:goods:add')")
  158. @Log(title = "商品", businessType = BusinessType.INSERT)
  159. @PostMapping("/bank")
  160. public AjaxResult<Void> addBank(@RequestBody GoodsBankAddBo bo) {
  161. return toAjax(iGoodsService.insertBankByAddBo(bo)>0 ? 1 : 0);
  162. }
  163. @ApiOperation("新增讲义商品")
  164. @PreAuthorize("@ss.hasPermi('system:goods:add')")
  165. @Log(title = "商品", businessType = BusinessType.INSERT)
  166. @PostMapping("/handouts")
  167. public AjaxResult<Void> addHandouts(@RequestBody GoodsAddBo bo) {
  168. return toAjax(iGoodsService.insertHandoutsByAddBo(bo)>0 ? 1 : 0);
  169. }
  170. /**
  171. * 修改商品
  172. */
  173. @ApiOperation("修改题库商品")
  174. @PreAuthorize("@ss.hasPermi('system:goods:edit')")
  175. @Log(title = "题库商品", businessType = BusinessType.UPDATE)
  176. @PostMapping("/bank/edit")
  177. public AjaxResult<Void> editBank(@RequestBody GoodsBankEditBo bo) {
  178. return toAjax(iGoodsService.updateBankByEditBo(bo) ? 1 : 0);
  179. }
  180. @ApiOperation("修改讲义商品")
  181. @PreAuthorize("@ss.hasPermi('system:goods:edit')")
  182. @Log(title = "讲义商品", businessType = BusinessType.UPDATE)
  183. @PostMapping("/handouts/edit")
  184. public AjaxResult<Void> editHandouts(@RequestBody GoodsEditBo bo) {
  185. return toAjax(iGoodsService.updateHandoutsByEditBo(bo) ? 1 : 0);
  186. }
  187. /**
  188. * 查询题目业务层次关系列表
  189. */
  190. @ApiOperation("查询题库商品试卷列表")
  191. @PreAuthorize("@ss.hasPermi('system:business:list')")
  192. @GetMapping("/bank/list")
  193. public AjaxResult<List<GoodsAttachedVo>> bankList(GoodsAttachedQueryBo bo) {
  194. List<GoodsAttachedVo> list = iGoodsAttachedService.getList(bo);
  195. return AjaxResult.success(list);
  196. }
  197. /**
  198. * 新增课程商品
  199. */
  200. @ApiOperation("新增补考商品")
  201. @PreAuthorize("@ss.hasPermi('system:goods:add')")
  202. @Log(title = "商品", businessType = BusinessType.INSERT)
  203. @PostMapping("/make")
  204. public AjaxResult<Void> addMake(@RequestBody GoodsAddBo bo) {
  205. return toAjax(iGoodsService.insertMakeByAddBo(bo) ? 1 : 0);
  206. }
  207. /**
  208. * 修改商品
  209. */
  210. @ApiOperation("修改补考商品")
  211. @PreAuthorize("@ss.hasPermi('system:goods:edit')")
  212. @Log(title = "商品", businessType = BusinessType.UPDATE)
  213. @PostMapping("/make/edit")
  214. public AjaxResult<Void> editMake(@RequestBody GoodsEditBo bo) {
  215. return toAjax(iGoodsService.updateMakeByEditBo(bo) ? 1 : 0);
  216. }
  217. /**
  218. * 新增课程商品
  219. */
  220. @ApiOperation("新增前培商品")
  221. @PreAuthorize("@ss.hasPermi('system:goods:add')")
  222. @Log(title = "商品", businessType = BusinessType.INSERT)
  223. @PostMapping("/front")
  224. public AjaxResult<Void> addFront(@RequestBody GoodsAddBo bo) {
  225. return toAjax(iGoodsService.insertFrontByAddBo(bo) ? 1 : 0);
  226. }
  227. /**
  228. * 修改商品
  229. */
  230. @ApiOperation("修改前培商品")
  231. @PreAuthorize("@ss.hasPermi('system:goods:edit')")
  232. @Log(title = "商品", businessType = BusinessType.UPDATE)
  233. @PostMapping("/front/edit")
  234. public AjaxResult<Void> editFront(@RequestBody GoodsEditBo bo) {
  235. return toAjax(iGoodsService.updateFrontByEditBo(bo) ? 1 : 0);
  236. }
  237. /**
  238. * 查询考试配置绑定商品列表
  239. */
  240. @ApiOperation("查询前培或补考商品列表")
  241. @PreAuthorize("@ss.hasPermi('system:goods:list')")
  242. @GetMapping("/listGoods")
  243. public TableDataInfo<ExamNumberGoodsVo> listGoods(ExamNumberGoodsQueryBo bo) {
  244. startPage();
  245. List<ExamNumberGoodsVo> list = iGoodsService.listGoods(bo);
  246. return getDataTable(list);
  247. }
  248. /**
  249. * 查询免费题库商品列表
  250. */
  251. @ApiOperation("查询免费题库商品列表")
  252. @GetMapping("/listFreeGoodsList")
  253. public TableDataInfo<GoodsUserQuestionVo> listFreeGoodsList(GoodsQueryBo bo) {
  254. startPage();
  255. List<GoodsUserQuestionVo> list = iQuestionService.listFreeGoodsList(bo);
  256. return getDataTable(list);
  257. }
  258. /**
  259. * 查询免费题库商品列表
  260. */
  261. @ApiOperation("查询用户题库商品列表")
  262. @GetMapping("/listBankGoodsList")
  263. public TableDataInfo<GoodsUserQuestionVo> listBankGoodsList(GoodsQueryBo bo) {
  264. startPage();
  265. List<GoodsUserQuestionVo> list = iQuestionService.listBankGoodsList(bo);
  266. return getDataTable(list);
  267. }
  268. /**
  269. * 获取题库商品每日一练试卷列表
  270. */
  271. @ApiOperation("获取题库商品每日一练试卷列表")
  272. @GetMapping("/getBankGoodsExamList/{goodsId}")
  273. public AjaxResult<List<BankGoodsExamVo>> getBankGoodsExamList(@PathVariable("goodsId") Long goodsId) {
  274. List<BankGoodsExamVo> list = iQuestionService.getBankGoodsExamList(goodsId);
  275. return AjaxResult.success(list);
  276. }
  277. /**
  278. * 新增每日一练试卷时间
  279. */
  280. @ApiOperation("新增每日一练试卷时间")
  281. @PostMapping("/addExamTime")
  282. public AjaxResult<Void> addGoodsExamTime(@RequestBody List<BankGoodsExamAddBo> addBo) {
  283. return toAjax(iQuestionService.addGoodsExamTime(addBo) ? 1 : 0);
  284. }
  285. /**
  286. * 商品批量复制(新机构)
  287. */
  288. @ApiOperation("商品批量复制(全量)")
  289. @PostMapping("/batch/copy/all")
  290. public AjaxResult<Void> goodsBatchCopyTenant(@RequestBody GoodsBatchCopyTenantBo bo) {
  291. return toAjax(iGoodsService.goodsBatchCopyTenant(bo) ? 1 : 0);
  292. }
  293. /**
  294. * 商品批量复制(新机构)
  295. */
  296. @ApiOperation("商品批量复制(增量)")
  297. @PostMapping("/batch/copy/add")
  298. public AjaxResult<Void> goodsBatchCopyAddTenant(@RequestBody GoodsBatchCopyTenantBo bo) {
  299. return toAjax(iGoodsService.goodsBatchCopyIncrementTenant(bo) ? 1 : 0);
  300. }
  301. /**
  302. * 商品节点复制
  303. */
  304. @ApiOperation("商品节点复制")
  305. @PostMapping("/node/copy/add")
  306. public AjaxResult<Void> goodsNodeCopyAddTenant(@RequestBody GoodsNodeCopyTenantBo bo) {
  307. return toAjax(iGoodsService.goodsNodeCopyAddTenant(bo) ? 1 : 0);
  308. }
  309. /**
  310. * 商品讲义复制
  311. */
  312. @ApiOperation("商品讲义复制")
  313. @PostMapping("/handouts/copy/add")
  314. public AjaxResult<Void> goodsHandoutsCopyAddTenant(@RequestBody GoodsHandoutsCopyTenantBo bo) {
  315. return toAjax(iGoodsService.goodsHandoutsCopyAddTenant(bo) ? 1 : 0);
  316. }
  317. /**
  318. * 商品关系ID处理(全量复制后的处理方法)
  319. */
  320. @ApiOperation("商品关系ID处理(全量复制后的处理方法)")
  321. @GetMapping("/batch/copy/dispose")
  322. public AjaxResult<Void> goodsBatchCopyDisposeTenant() {
  323. return toAjax(iGoodsService.goodsBatchCopyDisposeTenant() ? 1 : 0);
  324. }
  325. /**
  326. * 修改商品课程关联
  327. */
  328. @ApiOperation("修改商品课程关联")
  329. @PostMapping("/update/course")
  330. public AjaxResult<Void> updateCourse() {
  331. return toAjax(iGoodsService.goodsBatchCopyDisposeTenant() ? 1 : 0);
  332. }
  333. /**
  334. * 修复二建/二造商品(注意不接页面,自己使用)
  335. */
  336. @ApiOperation("修复二建/二造商品")
  337. @PostMapping("/update/goods/repair")
  338. public AjaxResult<Void> updateGoodsRepair(@RequestBody UpdateGoodsRepairBo bo) {
  339. return toAjax(iGoodsService.updateGoodsRepair(bo) ? 1 : 0);
  340. }
  341. @ApiOperation("查询商品普通列表")
  342. @PreAuthorize("@ss.hasPermi('system:goods:list')")
  343. @GetMapping("/queryList")
  344. public AjaxResult<List<GoodsVo>> queryList(GoodsQueryBo bo) {
  345. bo.setStatus(new ArrayList<Integer>(){{
  346. add(1);
  347. }});
  348. List<GoodsVo> list = iGoodsService.queryList(bo);
  349. return AjaxResult.success(list);
  350. }
  351. }