package com.zhongzheng.controller.goods; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.lang.Validator; import com.zhongzheng.common.annotation.Log; import com.zhongzheng.common.core.controller.BaseController; import com.zhongzheng.common.core.domain.AjaxResult; import com.zhongzheng.common.core.page.TableDataInfo; import com.zhongzheng.common.enums.BusinessType; import com.zhongzheng.common.utils.poi.ExcelUtil; import com.zhongzheng.modules.bank.service.IQuestionService; import com.zhongzheng.modules.exam.bo.ExamNumberGoodsQueryBo; import com.zhongzheng.modules.exam.vo.ExamNumberGoodsVo; import com.zhongzheng.modules.goods.bo.*; import com.zhongzheng.modules.goods.service.IGoodsAttachedService; import com.zhongzheng.modules.goods.service.IGoodsService; import com.zhongzheng.modules.goods.vo.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.List; /** * 商品Controller * * @author hjl * @date 2021-10-12 */ @Api(value = "商品控制器", tags = {"商品管理"}) @RequiredArgsConstructor(onConstructor_ = @Autowired) @RestController @RequestMapping("/goods") public class GoodsController extends BaseController { private final IGoodsService iGoodsService; private final IGoodsAttachedService iGoodsAttachedService; private final IQuestionService iQuestionService; /** * 查询商品列表 */ @ApiOperation("查询商品列表") @PreAuthorize("@ss.hasPermi('system:goods:list')") @GetMapping("/list") public TableDataInfo list(GoodsQueryBo bo) { /* bo.setStatus(new ArrayList(){{ add(1); }});*/ startPage(); List list = iGoodsService.selectList(bo); return getDataTable(list); } @ApiOperation("导出直播商品列表") @PreAuthorize("@ss.hasPermi('system:goods:list')") @GetMapping("/export_list") public AjaxResult export_list(GoodsQueryBo bo) { List list = iGoodsService.selectList(bo); List list1 = new ArrayList<>(); for(GoodsVo vo : list){ ExportLiveGoodsVo goodsVo = BeanUtil.toBean(vo, ExportLiveGoodsVo.class); goodsVo.setBusinessName(vo.getEducationName()+"-"+vo.getProjectName()+"-"+vo.getBusinessName()); if(Validator.isEmpty(vo.getPeriod())){ goodsVo.setPeriod(0L); } list1.add(goodsVo); } ExcelUtil util = new ExcelUtil<>(ExportLiveGoodsVo.class); return util.exportExcel(list1,"直播学习记录"); } @ApiOperation("查询商品列表To录单") @PreAuthorize("@ss.hasPermi('system:goods:list')") @GetMapping("/listToInput") public TableDataInfo listToInput(GoodsQueryBo bo) { startPage(); List list = iGoodsService.selectListToInput(bo); return getDataTable(list); } @ApiOperation("获取商品规格模板列表") @GetMapping("/spec/list/{goodsId}") public AjaxResult> getSpecTemplateList(@PathVariable("goodsId") Long goodsId) { List list = iGoodsService.getSpecTemplateList(goodsId); return AjaxResult.success(list); } @ApiOperation("修改商品默认规格模板") @PostMapping("/update/spec") public AjaxResult updateSpecTemplate(@RequestBody GoodsSpecTempEditBo bo) { return toAjax(iGoodsService.updateSpecTemplate(bo) ? 1 : 0); } @ApiOperation("取消商品默认规格模板") @PostMapping("/cancel/spec") public AjaxResult cancelSpecTemplate(@RequestBody GoodsSpecTempEditBo bo) { return toAjax(iGoodsService.cancelSpecTemplate(bo) ? 1 : 0); } /** * 导出商品列表 */ /*selectList*/ /** * 获取商品详细信息 */ @ApiOperation("获取商品详细信息") @PreAuthorize("@ss.hasPermi('system:goods:query')") @GetMapping("/{goodsId}") public AjaxResult getInfo(@PathVariable("goodsId" ) Long goodsId) { return AjaxResult.success(iGoodsService.selectDetail(goodsId)); } /** * 新增课程商品 */ @ApiOperation("新增课程商品") @PreAuthorize("@ss.hasPermi('system:goods:add')") @Log(title = "商品", businessType = BusinessType.INSERT) @PostMapping() public AjaxResult add(@RequestBody GoodsAddBo bo) { return toAjax(iGoodsService.insertByAddBo(bo) ? 1 : 0); } /** * 修改商品 */ @ApiOperation("修改商品") @PreAuthorize("@ss.hasPermi('system:goods:edit')") @Log(title = "商品", businessType = BusinessType.UPDATE) @PostMapping("/edit") public AjaxResult edit(@RequestBody GoodsEditBo bo) { return toAjax(iGoodsService.updateByEditBo(bo) ? 1 : 0); } /** * 商品批量上下架 */ @ApiOperation("商品批量上下架") @PostMapping("/batch/updateStatus") public AjaxResult batchUpdateStatus(@RequestBody GoodsBatchUpdateStatusBo bo) { return toAjax(iGoodsService.GoodsBatchUpdateStatusBo(bo) ? 1 : 0); } /** * 商品批量删除 */ @ApiOperation("商品批量删除") @PostMapping("/batch/del") public AjaxResult batchDelGoods(@RequestBody GoodsBatchDelBo bo) { return toAjax(iGoodsService.batchDelGoods(bo) ? 1 : 0); } /** * 删除商品 */ /* @ApiOperation("删除商品") @PreAuthorize("@ss.hasPermi('system:goods:remove')") @Log(title = "商品" , businessType = BusinessType.DELETE) @DeleteMapping("/{goodsIds}") public AjaxResult remove(@PathVariable Long[] goodsIds) { return toAjax(iGoodsService.deleteWithValidByIds(Arrays.asList(goodsIds), true) ? 1 : 0); }*/ /** * 新增题库商品 */ @ApiOperation("新增题库商品") @PreAuthorize("@ss.hasPermi('system:goods:add')") @Log(title = "商品", businessType = BusinessType.INSERT) @PostMapping("/bank") public AjaxResult addBank(@RequestBody GoodsBankAddBo bo) { return toAjax(iGoodsService.insertBankByAddBo(bo)>0 ? 1 : 0); } @ApiOperation("新增讲义商品") @PreAuthorize("@ss.hasPermi('system:goods:add')") @Log(title = "商品", businessType = BusinessType.INSERT) @PostMapping("/handouts") public AjaxResult addHandouts(@RequestBody GoodsAddBo bo) { return toAjax(iGoodsService.insertHandoutsByAddBo(bo)>0 ? 1 : 0); } /** * 修改商品 */ @ApiOperation("修改题库商品") @PreAuthorize("@ss.hasPermi('system:goods:edit')") @Log(title = "题库商品", businessType = BusinessType.UPDATE) @PostMapping("/bank/edit") public AjaxResult editBank(@RequestBody GoodsBankEditBo bo) { return toAjax(iGoodsService.updateBankByEditBo(bo) ? 1 : 0); } @ApiOperation("修改讲义商品") @PreAuthorize("@ss.hasPermi('system:goods:edit')") @Log(title = "讲义商品", businessType = BusinessType.UPDATE) @PostMapping("/handouts/edit") public AjaxResult editHandouts(@RequestBody GoodsEditBo bo) { return toAjax(iGoodsService.updateHandoutsByEditBo(bo) ? 1 : 0); } /** * 查询题目业务层次关系列表 */ @ApiOperation("查询题库商品试卷列表") @PreAuthorize("@ss.hasPermi('system:business:list')") @GetMapping("/bank/list") public AjaxResult> bankList(GoodsAttachedQueryBo bo) { List list = iGoodsAttachedService.getList(bo); return AjaxResult.success(list); } /** * 新增课程商品 */ @ApiOperation("新增补考商品") @PreAuthorize("@ss.hasPermi('system:goods:add')") @Log(title = "商品", businessType = BusinessType.INSERT) @PostMapping("/make") public AjaxResult addMake(@RequestBody GoodsAddBo bo) { return toAjax(iGoodsService.insertMakeByAddBo(bo) ? 1 : 0); } /** * 修改商品 */ @ApiOperation("修改补考商品") @PreAuthorize("@ss.hasPermi('system:goods:edit')") @Log(title = "商品", businessType = BusinessType.UPDATE) @PostMapping("/make/edit") public AjaxResult editMake(@RequestBody GoodsEditBo bo) { return toAjax(iGoodsService.updateMakeByEditBo(bo) ? 1 : 0); } /** * 新增课程商品 */ @ApiOperation("新增前培商品") @PreAuthorize("@ss.hasPermi('system:goods:add')") @Log(title = "商品", businessType = BusinessType.INSERT) @PostMapping("/front") public AjaxResult addFront(@RequestBody GoodsAddBo bo) { return toAjax(iGoodsService.insertFrontByAddBo(bo) ? 1 : 0); } /** * 修改商品 */ @ApiOperation("修改前培商品") @PreAuthorize("@ss.hasPermi('system:goods:edit')") @Log(title = "商品", businessType = BusinessType.UPDATE) @PostMapping("/front/edit") public AjaxResult editFront(@RequestBody GoodsEditBo bo) { return toAjax(iGoodsService.updateFrontByEditBo(bo) ? 1 : 0); } /** * 查询考试配置绑定商品列表 */ @ApiOperation("查询前培或补考商品列表") @PreAuthorize("@ss.hasPermi('system:goods:list')") @GetMapping("/listGoods") public TableDataInfo listGoods(ExamNumberGoodsQueryBo bo) { startPage(); List list = iGoodsService.listGoods(bo); return getDataTable(list); } /** * 查询免费题库商品列表 */ @ApiOperation("查询免费题库商品列表") @GetMapping("/listFreeGoodsList") public TableDataInfo listFreeGoodsList(GoodsQueryBo bo) { startPage(); List list = iQuestionService.listFreeGoodsList(bo); return getDataTable(list); } /** * 查询免费题库商品列表 */ @ApiOperation("查询用户题库商品列表") @GetMapping("/listBankGoodsList") public TableDataInfo listBankGoodsList(GoodsQueryBo bo) { startPage(); List list = iQuestionService.listBankGoodsList(bo); return getDataTable(list); } /** * 获取题库商品每日一练试卷列表 */ @ApiOperation("获取题库商品每日一练试卷列表") @GetMapping("/getBankGoodsExamList/{goodsId}") public AjaxResult> getBankGoodsExamList(@PathVariable("goodsId") Long goodsId) { List list = iQuestionService.getBankGoodsExamList(goodsId); return AjaxResult.success(list); } /** * 新增每日一练试卷时间 */ @ApiOperation("新增每日一练试卷时间") @PostMapping("/addExamTime") public AjaxResult addGoodsExamTime(@RequestBody List addBo) { return toAjax(iQuestionService.addGoodsExamTime(addBo) ? 1 : 0); } /** * 商品批量复制(新机构) */ @ApiOperation("商品批量复制(全量)") @PostMapping("/batch/copy/all") public AjaxResult goodsBatchCopyTenant(@RequestBody GoodsBatchCopyTenantBo bo) { return toAjax(iGoodsService.goodsBatchCopyTenant(bo) ? 1 : 0); } /** * 商品批量复制(新机构) */ @ApiOperation("商品批量复制(增量)") @PostMapping("/batch/copy/add") public AjaxResult goodsBatchCopyAddTenant(@RequestBody GoodsBatchCopyTenantBo bo) { return toAjax(iGoodsService.goodsBatchCopyIncrementTenant(bo) ? 1 : 0); } /** * 商品节点复制 */ @ApiOperation("商品节点复制") @PostMapping("/node/copy/add") public AjaxResult goodsNodeCopyAddTenant(@RequestBody GoodsNodeCopyTenantBo bo) { return toAjax(iGoodsService.goodsNodeCopyAddTenant(bo) ? 1 : 0); } /** * 商品讲义复制 */ @ApiOperation("商品讲义复制") @PostMapping("/handouts/copy/add") public AjaxResult goodsHandoutsCopyAddTenant(@RequestBody GoodsHandoutsCopyTenantBo bo) { return toAjax(iGoodsService.goodsHandoutsCopyAddTenant(bo) ? 1 : 0); } /** * 商品关系ID处理(全量复制后的处理方法) */ @ApiOperation("商品关系ID处理(全量复制后的处理方法)") @GetMapping("/batch/copy/dispose") public AjaxResult goodsBatchCopyDisposeTenant() { return toAjax(iGoodsService.goodsBatchCopyDisposeTenant() ? 1 : 0); } /** * 修改商品课程关联 */ @ApiOperation("修改商品课程关联") @PostMapping("/update/course") public AjaxResult updateCourse() { return toAjax(iGoodsService.goodsBatchCopyDisposeTenant() ? 1 : 0); } /** * 修复二建/二造商品(注意不接页面,自己使用) */ @ApiOperation("修复二建/二造商品") @PostMapping("/update/goods/repair") public AjaxResult updateGoodsRepair(@RequestBody UpdateGoodsRepairBo bo) { return toAjax(iGoodsService.updateGoodsRepair(bo) ? 1 : 0); } @ApiOperation("查询商品普通列表") @PreAuthorize("@ss.hasPermi('system:goods:list')") @GetMapping("/queryList") public AjaxResult> queryList(GoodsQueryBo bo) { bo.setStatus(new ArrayList(){{ add(1); }}); List list = iGoodsService.queryList(bo); return AjaxResult.success(list); } }