package com.kiisoo.ic.activity.controller; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.kiisoo.ic.activity.bean.ActivityInstanceVO; import com.kiisoo.ic.activity.bean.ActivityScheduleVO; import com.kiisoo.ic.activity.entity.PmnActivityPromotionCase; import com.kiisoo.ic.activity.entity.PmnActivitySchedule; import com.kiisoo.ic.activity.entity.PmnActivityStoreRelation; import com.kiisoo.ic.activity.mapper.PmnActivityInstanceDOMapper; import com.kiisoo.ic.activity.mapper.PmnActivityScheduleDOMapper; import com.kiisoo.ic.activity.mapper.PmnActivityStoreRelationMapper; import com.kiisoo.ic.activity.service.IPmnActivityInstanceService; import com.kiisoo.ic.activity.service.IPmnActivityScheduleService; import com.kiisoo.ic.activity.service.IPmnActivityStoreRelationService; import com.kiisoo.ic.common.BaseController; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; @RestController @Api(value = "后台-活动实例管理", tags = {"后台-活动实例管理"}) @RequestMapping(value = "/activity/instance") @Slf4j public class ActivityInstanceController extends BaseController { @Resource PmnActivityScheduleDOMapper pmnActivityScheduleDOMapper; @Resource PmnActivityInstanceDOMapper pmnActivityInstanceDOMapper; @Resource PmnActivityStoreRelationMapper pmnActivityStoreRelationMapper; @Resource IPmnActivityStoreRelationService pmnActivityStoreRelationService; @Resource IPmnActivityInstanceService pmnActivityInstanceService; @Resource IPmnActivityScheduleService pmnActivityScheduleService; @ApiOperation(value = "活动实例分页列表") @GetMapping(value = "/list") public Map instanceList() { // TODO 需要根据当前用户角色分开查询 return data(null); } @ApiOperation(value = "根据活动池新建实例,修改实例详情") @PostMapping(value = "/save") public Map saveInstance(@ModelAttribute ActivityInstanceVO activityInstanceVO) { // TODO 实现后移除TODO标签 try { boolean save = pmnActivityInstanceService.saveVO(activityInstanceVO); return save ? data(activityInstanceVO) : fail("操作失败"); } catch (Exception e) { log.error("查询出错", e); return fail(); } } @ApiOperation(value = "活动实例详情") @GetMapping(value = "/detail") public Map instanceDetail() { return data(null); } @ApiOperation(value = "根据活动实例修改场景") @PostMapping(value = "/promotionCase/save") public Map savePromotionCase(@ModelAttribute List promotionCase) { try { return data(null); } catch (Exception e) { log.error("查询出错", e); return fail(); } } @ApiOperation(value = "根据活动绑定店铺") @PostMapping(value = "/promotionStore/save") @ApiImplicitParams({ @ApiImplicitParam(name = "storeIds", required = true, value = "店铺ID数组", dataType = "array", paramType = "form"), @ApiImplicitParam(name = "caseId", value = "场景id", dataType = "int", paramType = "form", defaultValue = "0"), @ApiImplicitParam(name = "instanceId", required = true, value = "活动实例ID", dataType = "string", paramType = "form"), }) public Map saveStore(@RequestBody Long[] storeIds, @RequestParam int caseId, @RequestParam Long instanceId){ try { if(storeIds.length <= 0) { return fail("请选择店铺"); } if(instanceId == null) { return fail("请输入活动实例ID"); } List pmnActivityStoreRelations = new ArrayList<>(); for (Long storeId: storeIds) { PmnActivityStoreRelation pmnActivityStoreRelation = pmnActivityStoreRelationService.getOne(Wrappers.lambdaQuery().eq(PmnActivityStoreRelation::getStoreId, storeId).eq(PmnActivityStoreRelation::getInstanceId, instanceId)); if(pmnActivityStoreRelation == null) { pmnActivityStoreRelation = new PmnActivityStoreRelation(); } pmnActivityStoreRelation.setCaseId(Long.valueOf(caseId)); pmnActivityStoreRelation.setCreateTime(new Date()); pmnActivityStoreRelation.setStatus(1); pmnActivityStoreRelation.setInstanceId(instanceId); pmnActivityStoreRelation.setStoreId(storeId); pmnActivityStoreRelation.setUpdateTime(new Date()); pmnActivityStoreRelations.add(pmnActivityStoreRelation); } boolean save = pmnActivityStoreRelationService.saveOrUpdateBatch(pmnActivityStoreRelations); return save ? success() : fail("操作失败"); } catch (Exception e) { log.error("查询出错", e); return fail(); } } @ApiOperation(value = "活动实例终止") @PostMapping(value = "/terminate") public Map instanceTerminate() { // TODO 终止后不可恢复 return data(null); } }