package com.ruoyi.demo.controller; import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaIgnore; import cn.dev33.satoken.stp.StpUtil; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.validate.AddGroup; import com.ruoyi.demo.entity.bo.PlanAddBo; import com.ruoyi.demo.entity.bo.PlanBo; import com.ruoyi.demo.entity.bo.UpDownBo; import com.ruoyi.demo.service.PlanService; import com.ruoyi.system.service.ISysUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.validation.constraints.NotBlank; @RestController @RequestMapping("/plan") public class PlanController { @Autowired PlanService planService; @Autowired ISysUserService sysUserService; // 广告管理 /** * 上下架广告计划 * @param planId 计划id * @return */ @SaCheckPermission("szzs:planManage:update") @PutMapping("/{planId}") public R planUpDown(@PathVariable String planId){ int i = planService.planUpDown(planId); if (i == 1) return R.ok("成功"); if (i == -1) return R.fail("计划不存在"); return R.fail("失败"); } /** * 查询广告计划列表 * @param bo 请求体 * @return */ @SaCheckPermission("szzs:planManage:list") @PostMapping("/list") public R planList(@RequestBody PlanBo bo){ if (bo.getStartTime() != null && bo.getEndTime() != null) if (bo.getStartTime().compareTo(bo.getEndTime()) > 0) return R.fail("起始时间不能大于结束时间"); return R.ok(planService.getPlanList(bo)); } /** * 查询广告计划明细 * @param planId 计划id * @return */ @SaCheckPermission("szzs:planManage:query") @GetMapping("/{planId}") public R planDetail(@PathVariable String planId){ return R.ok(planService.getPlanDetail(planId)); } /** * 投放广告计划 * @param equipmentCode 设备编号 * @return */ @SaIgnore @GetMapping("/push/{equipmentCode}") public R planPush(@PathVariable String equipmentCode){ return R.ok(planService.getPlanPushByCode(equipmentCode)); } // 广告计划管理 /** * 审核广告计划 * @param bo 请求体 * @return */ @SaCheckPermission("szzs:planAudit:check") @PutMapping("/audit") public R checkPlan(@RequestBody PlanBo bo){ // 获取用户id和用户名 String loginId = String.valueOf(StpUtil.getLoginId()); String numericPart = loginId.split(":")[1]; Long userId = Long.valueOf(numericPart); SysUser sysUser = sysUserService.selectUserById(userId); int i = planService.checkPlan(bo,userId,sysUser.getNickName()); if (i == 1) return R.ok("审核操作成功"); if (i == -1) return R.fail("该计划不存在"); if (i == -2) return R.fail("回调地址错误或失效"); return R.fail("审核操作失败"); } /** * 查询广告计划管理列表 * @param bo 请求体 * @return */ @SaCheckPermission("szzs:planAudit:list") @PostMapping("/audit/list") public R auditList(@RequestBody PlanBo bo){ if (bo.getStartTime() != null && bo.getEndTime() != null) if (bo.getStartTime().compareTo(bo.getEndTime()) > 0) return R.fail("起始时间不能大于结束时间"); return R.ok(planService.getPlanManageList(bo)); } /** * 查询广告计划管理明细 * @param planId 广告计划id * @return */ @SaCheckPermission("szzs:planAudit:query") @GetMapping("/audit/{planId}") public R auditDetail(@PathVariable String planId){ return R.ok(planService.getPlanManageDetail(planId)); } // 广告推送 /** * 获取sign——用于测试 * @param bo 请求体 * @return */ // @SaCheckPermission("szzs:plan:test") @SaIgnore @PostMapping("/getSign") public R getSign(@RequestBody PlanAddBo bo){ if (bo.getPlanStartTime() != null && bo.getPlanEndTime() != null) if (bo.getPlanStartTime().compareTo(bo.getPlanEndTime()) > 0) return R.fail("起始时间不能大于结束时间"); String sign = planService.getSign(bo); if (sign.equals("error")) return R.fail("无效的appkey"); return R.ok(sign); } /** * 添加广告推送计划 * @param bo 广告id * @return */ @SaIgnore @PostMapping() public R addPlan(@RequestBody @Validated(value = {AddGroup.class}) PlanAddBo bo){ if (bo.getPlanStartTime() != null && bo.getPlanEndTime() != null) if (bo.getPlanStartTime().compareTo(bo.getPlanEndTime()) > 0) return R.fail("起始时间不能大于结束时间"); String i = planService.addPlan(bo); if ("0".equals(i)) return R.fail("添加失败"); if ("-1".equals(i)) return R.fail("无效的appkey"); if ("-3".equals(i)) return R.fail("校验sign出错"); return R.ok(i); } /** * 删除广告推送计划 * @param planId 广告id * @return */ // @SaCheckPermission("szzs:plan:delete") @SaIgnore @DeleteMapping("/{planId}") public R deletePlan(@PathVariable String planId){ int i = planService.deletePlan(planId); if (i == -1) return R.fail("删除失败"); return R.ok("删除成功"); } /** * 查询广告计划推送计划列表 * @param bo 请求体 * @return */ // @SaCheckPermission("szzs:plan:list") @SaIgnore @PostMapping("/push/list") public R pushList(@RequestBody PlanBo bo){ if (bo.getStartTime() != null && bo.getEndTime() != null) if (bo.getStartTime().compareTo(bo.getEndTime()) > 0) return R.fail("起始时间不能大于结束时间"); return R.ok(planService.getPlanPushList(bo)); } /** * 上下架广告 * * @param bo * @return */ @SaIgnore @PostMapping("/push") public R planPushUpDown(@RequestBody UpDownBo bo){ int i = planService.planPushUpDown(bo); if (i == 1) return R.ok("上架/下架成功"); if (i == -1) return R.fail("无效的appkey"); if (i == -3) return R.fail("校验sign出错"); return R.fail("上架/下架失败"); } /** * 上下架广告——获取sign——用于测试 * * @param bo * @return */ @SaIgnore @PostMapping("/push/getSign") public R UpDownGetSign(@RequestBody UpDownBo bo){ String sign = planService.pushGetSign(bo); if ("error".equals(sign)) return R.fail("无效的appkey"); return R.ok(sign); } // 广告投放 /** * 广告投放列表 * @param bo 请求体 * @return */ @SaCheckPermission("szzs:planStatistics:list") @PostMapping("/statistics/list") public R statisticsList(@RequestBody PlanBo bo){ if (bo.getStartTime() != null && bo.getEndTime() != null) if (bo.getStartTime().compareTo(bo.getEndTime()) > 0) return R.fail("起始时间不能大于结束时间"); return R.ok(planService.getPlanPushStatisticsList(bo)); } /** * 立刻进行一次统计——用于测试 * @return */ @GetMapping("/statistics/start") public R statisticsStart(){ planService.planPushStatisticsStart(); return R.ok("更新完成"); } // 首页 /** * 获取总广告数 * @return */ @GetMapping("/total") public R total(){ return R.ok(planService.getPlanTotal()); } // 其他 /** * 获取设备信息 * @param bo 请求体 * @return */ @SaIgnore @PostMapping("/getEquipments") public R getEquipments(@RequestBody PlanBo bo){ return R.ok(planService.getEquipments(bo)); } /** * 下拉框——获取省市区地区码 * @param code 地区码 * @param level 城市等级 * @return */ @SaIgnore @GetMapping("/getAddrCategory") public R getAddrCategory(String code,String level){ return R.ok(planService.getAddrCategoryLevel(code,level)); } }