package com.tzy.base.controller; import com.tzy.base.domain.PaniniBaseInfo; import com.tzy.base.domain.PaniniCheckListInfo; import com.tzy.base.dto.*; import com.tzy.base.dto.entry.*; import com.tzy.base.service.PaniniBaseInfoService; import com.tzy.base.service.SysBaseService; import com.tzy.base.service.SysFileBaseService; import com.tzy.common.annotation.Log; import com.tzy.common.constant.SysDictTypeKeyConstants; import com.tzy.common.core.controller.BaseController; import com.tzy.common.core.domain.AjaxResult; import com.tzy.common.core.page.TableDataInfo; import com.tzy.common.easy.factory.EasyExcelFactory; import com.tzy.common.easy.factory.EasyExcelTypeEnums; import com.tzy.common.enums.BusinessType; import com.tzy.common.enums.EasyColumnEnums; import com.tzy.common.utils.StringUtils; import com.tzy.framework.util.RandomUtil; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.*; import java.util.stream.Collectors; /** * */ @Slf4j @Controller @RequestMapping("/v2/base/PaniniBaseInfo") public class PaniniBaseInfoController extends BaseController { String prefix = "baseV/paniniChecklist"; @Autowired private PaniniBaseInfoService paniniBaseInfoService; @Autowired private SysFileBaseService sysFileBaseService; @Autowired private SysBaseService sysBaseService; /** * @return */ @RequiresPermissions("base:paniniBaseInfo:view") @GetMapping() public String PaniniBaseInfo() { return prefix + "/paniniChecklistBaseInfo"; } /** * 查询Panini checklist基础信息列表 */ @Log(title = "查询Panini checklist基础信息列表", businessType = BusinessType.SEARCH) @RequiresPermissions("base:paniniBaseInfo:list") @PostMapping("/list") @ResponseBody public TableDataInfo list(PaniniBaseInfo paniniBaseInfo) { startPageOrderBy(""); if(null == paniniBaseInfo.getDelFlg()){ paniniBaseInfo.setDelFlg(0L); } List list = paniniBaseInfoService.selectPaniniBaseInfoList(paniniBaseInfo); if (null != list && list.size() > 0) { List replayTeamSports = sysBaseService.selectDictData(SysDictTypeKeyConstants.REPLAY_TEAM_SPORT); List sports = new ArrayList<>(); if (CollectionUtils.isNotEmpty(replayTeamSports)) { sports = replayTeamSports.stream() .map(DictBaseDto::getValue) .collect(Collectors.toList()); } Set paniniBaseInfoIds = list.stream() .map(PaniniBaseInfo::getId) .collect(Collectors.toSet()); List baseInfoNum = paniniBaseInfoService.selectCuntByCheckBaseIds(paniniBaseInfoIds); Map baseInfoNumMap = null; if(CollectionUtils.isNotEmpty(baseInfoNum)){ baseInfoNumMap = baseInfoNum.stream() .collect(Collectors.groupingBy(ChecklistNumDto::getChecklistBaseId, Collectors.summingLong(ChecklistNumDto::getNum))); } List finalSports = sports; Map finalBaseInfoNumMap = baseInfoNumMap; list.forEach(baseInfo -> { baseInfo.setReplayTeam(finalSports.contains(baseInfo.getSport())); if (Objects.nonNull(finalBaseInfoNumMap)) { Long num = finalBaseInfoNumMap.get(baseInfo.getId()); baseInfo.setNum(Objects.isNull(num) ? 0 : num); } // baseInfo.setNum(paniniBaseInfoService.selectCuntByCheckBaseId(baseInfo.getId())); }); } return getDataTable(list); } /** * 新增Panini checklist基础信息 */ @GetMapping("/add") public String add(ModelMap map) { map.put("code", RandomUtil.getRandom(RandomUtil.CHECKLIST)); return prefix + "/add"; } /** * 新增保存Panini checklist基础信息 */ @Log(title = "新增保存Panini checklist基础信息", businessType = BusinessType.INSERT) @RequiresPermissions("base:paniniBaseInfo:add") @PostMapping("/add") @ResponseBody public AjaxResult addSave(@RequestBody(required = false) PaniniBaseInfo paniniBaseInfo) { return toAjax(paniniBaseInfoService.insertPaniniBaseInfo(paniniBaseInfo)); } /** * 修改Panini checklist基础信息 */ @GetMapping("/edit/{id}") public String edit(@PathVariable("id") Long id, ModelMap mmap) { PaniniBaseInfo paniniBaseInfo = paniniBaseInfoService.selectPaniniBaseInfoById(id); mmap.put("paniniBaseInfo", paniniBaseInfo); return prefix + "/edit"; } /** * 修改保存Panini checklist基础信息 */ @Log(title = "修改保存Panini checklist基础信息", businessType = BusinessType.UPDATE) @RequiresPermissions("base:paniniBaseInfo:edit") @PostMapping("/edit") @ResponseBody public AjaxResult editSave(@RequestBody(required = false) PaniniBaseInfo paniniBaseInfo) { return toAjax(paniniBaseInfoService.updatePaniniBaseInfo(paniniBaseInfo)); } /** * 修改保存Panini checklist基础信息 */ @Log(title = "上下架Panini checklist基础信息", businessType = BusinessType.UPDATE) @RequiresPermissions("base:paniniBaseInfo:edit") @PostMapping("/lock/{id}/{lock}") @ResponseBody public AjaxResult lock(@PathVariable("id")Long id,@PathVariable("lock")Long lock) { return toAjax(paniniBaseInfoService.lock(id,lock)); } /** * 上传 list 版本信息 */ @GetMapping("/setVersionConfig/{id}") public String setVersionConfig(@PathVariable("id") Long id, ModelMap mmap) { PaniniBaseInfo paniniBaseInfo = paniniBaseInfoService.selectPaniniBaseInfoById(id); mmap.put("paniniBaseInfo", paniniBaseInfo); return prefix + "/setVersionConfig"; } /** * list基础库版本维护 v2 */ @GetMapping("/v2/setVersionConfig/{id}") public String setVersionConfigV2(@PathVariable("id") Long id, ModelMap mmap) { PaniniBaseInfo paniniBaseInfo = paniniBaseInfoService.selectPaniniBaseInfoById(id); mmap.put("paniniBaseInfo", paniniBaseInfo); return prefix + "/modal/setVersionConfigNew"; } /** * 获取版本信息 */ @Log(title = "获取版本信息", businessType = BusinessType.SEARCH) @PostMapping("/searchVersionConfig/{id}") @ResponseBody public AjaxResult searchVersionConfig(@PathVariable("id") Long id) { List paniniVersionConfigDtos = paniniBaseInfoService.searchSetVersionConfigs(id); return AjaxResult.success() .put("items",paniniVersionConfigDtos); } /** * 获取版本信息 */ @Log(title = "获取版本信息-v2", businessType = BusinessType.SEARCH) @PostMapping("/v2/searchVersionConfig/{id}") @ResponseBody public TableDataInfo searchVersionConfigV2(@PathVariable("id") Long id) { List paniniVersionConfigDtos = paniniBaseInfoService.searchSetVersionConfigs(id); return getDataTable(paniniVersionConfigDtos); } /** * 添加版本信息页面 */ @GetMapping("/addSetVersionConfig/{id}") public String addSetVersionConfig(@PathVariable("id") Long id, ModelMap mmap) { mmap.put("id", id); return prefix + "/modal/addSetVersionConfig"; } /** * 保存版本信息 */ @Log(title = "保存版本信息", businessType = BusinessType.INSERT) @PostMapping("/addSetVersionConfig") @ResponseBody public AjaxResult addSaveSetVersionConfig(@RequestBody PaniniVersionConfigEntry paniniVersionConfigEntry) { return paniniBaseInfoService.addSaveSetVersionConfig(paniniVersionConfigEntry); } /** * @return */ @RequestMapping(value = "/setVersionConfig/edit",method = {RequestMethod.GET,RequestMethod.POST}) public String setVersionConfigEdit(ModelMap mmap) { mmap.put("host",sysFileBaseService.getHost()); return prefix + "/modal/setVersionConfigEdit"; } /** * 更新版本信息 */ @Log(title = "更新版本信息", businessType = BusinessType.UPDATE) @PostMapping("/holdSetVersionConfig") @ResponseBody public AjaxResult holdSetVersionConfig(@RequestBody PaniniVersionConfigEntry paniniVersionConfigEntry) { return paniniBaseInfoService.holdSetVersionConfig(paniniVersionConfigEntry); } /** * @return */ @RequestMapping(value = "/setVersionConfig/detail",method = {RequestMethod.GET,RequestMethod.POST}) public String setVersionConfigDetail(ModelMap mmap) { mmap.put("host",sysFileBaseService.getHost()); return prefix + "/modal/setVersionConfigDetail"; } /** * 上传文件 */ @Log(title = "上传文件", businessType = BusinessType.IMPORT) @PostMapping("/importBySetVersion") @ResponseBody public AjaxResult importBySetVersion(CheckListBaseInfoEntry checkListBaseInfoEntry) { return paniniBaseInfoService.exportBySetVersion(checkListBaseInfoEntry); } /** * 查看 */ @GetMapping("/detail/{id}") public String detail(@PathVariable("id") Long id, ModelMap mmap) { PaniniBaseInfo paniniBaseInfo = paniniBaseInfoService.selectPaniniBaseInfoById(id); mmap.put("baseInfo", paniniBaseInfo); mmap.put("host",sysFileBaseService.getHost()+"/"); return prefix + "/allcards"; } /** * 查询Panini checklist基础信息列表 */ @Log(title = "查询Panini checklist列表", businessType = BusinessType.SEARCH) @RequiresPermissions("base:paniniChecklist:list") @PostMapping("/checkListRecords/{id}") @ResponseBody public TableDataInfo checkListRecords(@PathVariable("id") Long id,PaniniCheckListInfo checkListInfo) { checkListInfo.setChecklistBaseId(id); startPageOrderBy(" pcl.no,pcl.id "); List list = paniniBaseInfoService.selectPaniniChecklistInfoList(checkListInfo); return getDataTable(list); } /** * 编辑卡种 */ @GetMapping("/holdCardSets/{id}/{cardsetsId}") public String holdCardSets(@PathVariable("id") String id, @PathVariable("cardsetsId") String cardsetsId, ModelMap mmap) { //如果是编辑则查询数据 否则 if ("undefined".equals(cardsetsId)) { cardsetsId = null; } PaniniBaseInfo paniniBaseInfo = paniniBaseInfoService.selectPaniniBaseInfoById(Long.valueOf(id)); mmap.put("paniniBaseInfo", paniniBaseInfo); PaniniCheckListInfo cardCheckList = new PaniniCheckListInfo(); if (StringUtils.isNotEmpty(cardsetsId)) { cardCheckList = paniniBaseInfoService.selectPaniniCheckListById(Long.valueOf(cardsetsId)); } mmap.put("host", sysFileBaseService.getHost()); mmap.put("checklist", cardCheckList); return prefix + "/modal/editCardSets"; } /** * 删除checklist基础信息 */ @Log(title = "编辑卡种", businessType = BusinessType.UPDATE) @PostMapping("/holdCardSets") @ResponseBody public AjaxResult holdCardSetsInfo(PaniniCheckListInfo cardCheckList) { return paniniBaseInfoService.holdCardSetsInfo(cardCheckList); } /** * 系列活动 */ @GetMapping("/setsActModal/{id}") public String setsActModal(@PathVariable("id") String id, ModelMap mmap) { PaniniBaseInfo paniniBaseInfo = paniniBaseInfoService.selectPaniniBaseInfoById(Long.valueOf(id)); mmap.put("paniniBaseInfo", paniniBaseInfo); return prefix + "/modal/setsActs"; } /** * 系列活动 */ @Log(title = "系列活动", businessType = BusinessType.UPDATE) @PostMapping("/addSetsActs") @ResponseBody public AjaxResult addSetsActs(@RequestBody CheckListBaseInfoEntry checkListBaseInfoEntry) { return paniniBaseInfoService.addSetsActs(checkListBaseInfoEntry); } /** * @param checklistBaseInfo * @return */ @Log(title = "获取CheckList", businessType = BusinessType.SEARCH) @PostMapping("/searchBaseInfoBySelect") @ResponseBody public AjaxResult searchBaseInfoBySelect(@RequestBody PaniniBaseInfo checklistBaseInfo) { return paniniBaseInfoService.searchBaseInfoBySelect(checklistBaseInfo); } /** * @param checklistBaseInfo * @return */ @Log(title = "获取CheckList", businessType = BusinessType.SEARCH) @PostMapping("/v2/searchBaseInfoBySelect") @ResponseBody public AjaxResult searchBaseInfoBySelectV2(@RequestBody PaniniBaseInfo checklistBaseInfo) { return paniniBaseInfoService.searchBaseInfoBySelectV2(checklistBaseInfo); } /** * 下载模板 */ @Log(title="下载模板" ,businessType = BusinessType.EXPORT) @PostMapping("/downloadTemp") @ResponseBody public void downloadTemplate(){ // ExcelUtil util = new ExcelUtil<>(PaniniChecklistDownloadTemp.class); // util.exportExcelHttp(new ArrayList<>(), ServletUtils.getResponse(),"基础库导入模板"); EasyExcelFactory.init(EasyExcelTypeEnums.EXPORT , PaniniChecklistDownloadTemp.class, "基础库导入模板", EasyColumnEnums.include, null) .build() .doWriteStream(new ArrayList<>()); } /** * 导出指定的list */ @ApiOperation(value = "导出指定的list",hidden = true) @RequiresPermissions("checklist:base:export") @Log(title = "导出指定的list", businessType = BusinessType.EXPORT) @PostMapping("/downloadById/{id}/{setVersion}") @ResponseBody public void downloadById(@PathVariable("id") Long id,@PathVariable("setVersion") String setVersion) { paniniBaseInfoService.downloadChecklistByBaseId(id,setVersion); } /** * @param entry * @return */ @RequiresPermissions("checklist:cardset:import") @Log(title = "导入checklist ", businessType = BusinessType.IMPORT) @PostMapping("/importEditList") @ResponseBody public AjaxResult importEditList(PaniniCheckListImportEntry entry){ return paniniBaseInfoService.importEditList(entry); } /** * 更新版本信息 */ @Log(title = "处理旧数据到新版本", businessType = BusinessType.UPDATE) @PostMapping("/applySetVersionConfig") @ResponseBody public AjaxResult applySetVersionConfig() { return paniniBaseInfoService.applySetVersionConfig(); } /** * 锁定版本信息 */ @RequiresPermissions("checklist:config:lock") @Log(title = "锁定版本信息", businessType = BusinessType.UPDATE) @PostMapping("/lockSetVersionConfig") @ResponseBody public AjaxResult lockSetVersionConfig(@RequestBody PaniniVersionConfigEntry paniniVersionConfigEntry) { return paniniBaseInfoService.lockSetVersionConfig(paniniVersionConfigEntry); } /** * @param id * @param mmap * @return */ @GetMapping("/replayTeam/{id}") public String replayTeam(@PathVariable("id") Long id, ModelMap mmap){ String url = prefix + "/modal/replayTeam"; mmap.put("id",id); PaniniBaseInfo paniniBaseInfo = paniniBaseInfoService.selectPaniniBaseInfoById(id); mmap.put("info", paniniBaseInfo); if(StringUtils.isNotBlank(paniniBaseInfo.getSport()) && Objects.equals(paniniBaseInfo.getSport().toLowerCase(), "basketball")){ url = prefix + "/modal/replayBasketBallTeam"; } else if(StringUtils.isNotBlank(paniniBaseInfo.getSport()) && (Objects.equals(paniniBaseInfo.getSport().toUpperCase(), "NFL") || Objects.equals(paniniBaseInfo.getSport().toUpperCase(), "NHL") || Objects.equals(paniniBaseInfo.getSport().toUpperCase(), "MLB")) ){ url = prefix + "/modal/replayTeam"; } return url; } @Log(title = "生成球队list", businessType = BusinessType.INSERT) @PostMapping("/replayTeam") @ResponseBody public AjaxResult replayTeam(@RequestBody @Valid PaniniReplayTeamEntry paniniReplayTeamEntry){ return paniniBaseInfoService.replayTeam(paniniReplayTeamEntry); } /** * @param name * @return */ @Log(title = "模糊查询系列名称返回数据", businessType = BusinessType.SEARCH) @PostMapping("/checkName") @ResponseBody public HashMap checkName(String name) { name = StringUtils.isEmpty(name) ? "" : name.trim().replaceAll("'", ""); PaniniBaseInfo paniniBaseInfo = new PaniniBaseInfo(); paniniBaseInfo.setColumnsearch(" and sets ilike '%" + name + "%' "); List list = paniniBaseInfoService.selectBySets(paniniBaseInfo); HashMap response = new HashMap<>(); response.put("items", list); return response; } /** * 生态购list 页面 */ @Log(title = "生态购list", businessType = BusinessType.OTHER) @GetMapping("/ecologicalReplay/{id}") public String ecologicalReplay(@PathVariable("id") Long id, ModelMap mmap) { mmap.put("id",id); mmap.put("info", paniniBaseInfoService.selectPaniniBaseInfoById(id)); return prefix+"/modal/ecologicalReplay"; } /** * 生态购list * @param paniniReplayTeamEntry * @return */ @Log(title = "生态购list", businessType = BusinessType.OTHER) @PostMapping("/doEcologicalReplay") @ResponseBody public AjaxResult doEcologicalReplay(@RequestBody @Valid PaniniReplayTeamEntry paniniReplayTeamEntry) { return paniniBaseInfoService.ecologicalReplay(paniniReplayTeamEntry); } /** * 跳转地址 */ @GetMapping("/syncImage/{id}") public String syncImage(@PathVariable("id") Long id,ModelMap map) { map.put("id",id); //查询版本,版本球员数量, 球队数量,无图片数量, map.put("setVersionImgs",paniniBaseInfoService.selectSetVersionImg(id)); return prefix + "/modal/syncImage"; } /** * 同步球员,球队图片 到 checklist 基础库管理 */ @Log(title = "同步球员,球队图片 到 checklist 基础库管理", businessType = BusinessType.UPDATE) @PostMapping("/syncImage") @ResponseBody public AjaxResult syncImage(@RequestBody PaniniSyncImageReq req) { return paniniBaseInfoService.syncImage(req); } /** * 跳转地址 同步到拼团list */ @GetMapping("/syncToGroup/{id}/{setVersion}") public String syncToGroupImage(@PathVariable("id") Long id, @PathVariable("setVersion") String setVersion, ModelMap map) { map.put("id",id); map.put("setVersion",setVersion); //list 基础信息 map.put("info",paniniBaseInfoService.selectPaniniBaseInfoById(id)); //checklist 默认商家 map.put("defaultMerchant",paniniBaseInfoService.selectDefaultShop()); //当前list 球员特殊卡密图数量,卡种特殊卡密数量 List paniniSetsVersionCarmichaelImgDtos = paniniBaseInfoService.selectSetsVersionCarmichaelImg(id, setVersion); map.put("imageInfo", Optional.ofNullable(paniniSetsVersionCarmichaelImgDtos).orElse(Collections.singletonList(PaniniSetsVersionCarmichaelImgDto.init())).get(0)); return prefix + "/modal/syncToGroup"; } /** * 同步到拼团list */ @Log(title = "同步到拼团list", businessType = BusinessType.UPDATE) @PostMapping("/syncToGroupImage") @ResponseBody public AjaxResult syncToGroupImage(@RequestBody PaniniSyncImageReq req) { return paniniBaseInfoService.syncToGroupImage(req); } /** * 同步球队图片 * @param id * @param mmap * @return */ @RequestMapping(value = "/syncTeamBgModal/{id}/{version}",method = RequestMethod.GET) public String syncTeamBgModal(@PathVariable("id") Long id, @PathVariable("version") String version,ModelMap mmap) { String host = (String) sysFileBaseService.initQiniuConfig().get("img_static_qiniu_host"); mmap.put("host",host); mmap.put("id",id); mmap.put("version",version); //查询当前list version 的球队图片有无数量 mmap.put("teamLogoCount", paniniBaseInfoService.checkTeamLogoCount(id, version )); return "baseV/paniniChecklist/modal/syncTeamBg"; } /** * 同步球队图片 * @return */ @Log(title = "同步球队图片列表", businessType = BusinessType.UPDATE) @PostMapping(value = "/syncTeamBg" ) @ResponseBody public TableDataInfo syncTeamBg(@RequestBody PaniniSyncImageReq req) { List teamImgDtos = paniniBaseInfoService.selectTeamImgByBaseInfoIdAndVersion(req.getId(), req.getVersion()); return new TableDataInfo(0, teamImgDtos , teamImgDtos.size()); } /** * 同步球队图片 * @return */ @Log(title = "同步球队图片列表", businessType = BusinessType.UPDATE) @PostMapping(value = "/doSyncTeamBg" ) @ResponseBody public AjaxResult doSyncTeamBg(@RequestBody PaniniSyncImageReq req){ return paniniBaseInfoService.doSyncTeamBg(req); } }