Browse Source

Merge branch 'lcy' of http://47.107.53.207:3000/traineeCoder001/Digital-Investment

JensionDzero 1 year ago
parent
commit
b045eb62b9

+ 8 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/controller/AppController.java

@@ -1,5 +1,6 @@
 package com.ruoyi.demo.controller;
 
+import cn.dev33.satoken.annotation.SaCheckPermission;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.pagehelper.PageInfo;
 import com.ruoyi.common.core.domain.R;
@@ -30,6 +31,7 @@ public class AppController {
      * @param appVo
      * @return
      */
+    @SaCheckPermission("szzs:app:add")
     @PostMapping("/addApp")
     public R addApp(@RequestBody @Validated(value={AddGroup.class}) AppVo appVo){
         R r = appService.addApp(appVo);
@@ -41,12 +43,14 @@ public class AppController {
      * @param appKeys
      * @return
      */
+    @SaCheckPermission("szzs:app:delete")
     @DeleteMapping("/deleteApp")
     public R deleteApp(String[] appKeys){
         appService.deleteApp(appKeys);
         return R.ok();
     }
 
+    @SaCheckPermission("szzs:app:other")
     @GetMapping("/getAppListByCommercialId")
     public R getAppListByCommercialId(AppVo appVo){
         PageInfo<App> appListByCommercialId = appService.getAppListByCommercialId(appVo);
@@ -58,6 +62,7 @@ public class AppController {
      * @param appVo
      * @return
      */
+    @SaCheckPermission("szzs:app:query")
     @GetMapping("/getApp")
     public R getApp(@Validated(value = {QueryGroup.class}) AppVo appVo){
         App app = appService.getApp(appVo);
@@ -69,6 +74,7 @@ public class AppController {
      * @param appVo
      * @return
      */
+    @SaCheckPermission("szzs:app:update")
     @PutMapping("/updateApp")
     public R updateApp(@RequestBody @Validated(value={EditGroup.class})AppVo appVo){
         R r = appService.updateApp(appVo);
@@ -86,6 +92,7 @@ public class AppController {
      * @param appVo
      * @return
      */
+    @SaCheckPermission("szzs:app:list")
     @GetMapping("/getAppList")
     public R getAppList(AppVo appVo){
         Page<App> appList = appService.getAppList(appVo);
@@ -96,6 +103,7 @@ public class AppController {
      * 获取商户列表(下拉框)
      * @return
      */
+    @SaCheckPermission("szzs:app:other")
     @GetMapping("/getCommercialList")
     public R getCommercialList(){
         List<Commercial> commercialList = appService.getCommercialList();

+ 7 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/controller/CommercialController.java

@@ -1,5 +1,6 @@
 package com.ruoyi.demo.controller;
 
+import cn.dev33.satoken.annotation.SaCheckPermission;
 import com.github.pagehelper.PageInfo;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.validate.AddGroup;
@@ -27,12 +28,14 @@ public class CommercialController {
      * @param commercialVo
      * @return
      */
+    @SaCheckPermission("szzs:commerce:add")
     @PostMapping("/addCommercial")
     public R addCommercial(@RequestBody @Validated(value = {AddGroup.class}) CommercialVo commercialVo){
         commericalService.addCommercial(commercialVo);
         return R.ok();
     }
 
+    @SaCheckPermission("szzs:commerce:update")
     @PutMapping("/updateCommercial")
     public R updateCommercial(@RequestBody @Validated(value = {EditGroup.class}) CommercialVo commercialVo){
         commericalService.updateCommercial(commercialVo);
@@ -44,6 +47,7 @@ public class CommercialController {
      * @param commercialIds
      * @return
      */
+    @SaCheckPermission("szzs:commerce:delete")
     @DeleteMapping("/deleteCommercial")
     public R deleteCommercial(@NotEmpty(message = "待删除商户Id不能为空") String[] commercialIds){
         String s = commericalService.deleteCommercial(commercialIds);
@@ -55,6 +59,7 @@ public class CommercialController {
      * @param commercialId
      * @return
      */
+    @SaCheckPermission("szzs:commerce:query")
     @GetMapping("/getCommercial")
     public R getCommercial(@NotBlank(message = "商户Id不能为空") String commercialId){
         Commercial commercial = commericalService.getCommercial(commercialId);
@@ -66,12 +71,14 @@ public class CommercialController {
      * @param commercialVo
      * @return
      */
+    @SaCheckPermission("szzs:commerce:list")
     @GetMapping("/getCommercialList")
     public R getCommercialList(CommercialVo commercialVo){
         HashMap commercialList = commericalService.getCommercialList(commercialVo);
         return R.ok(commercialList);
     }
 
+    @SaCheckPermission("szzs:commerce:query")
     @GetMapping("/getCommercialName")
     public R getCommercialName(){
         List<Commercial> commercialName = commericalService.getCommercialName();

+ 7 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/controller/DlUserController.java

@@ -1,5 +1,6 @@
 package com.ruoyi.demo.controller;
 
+import cn.dev33.satoken.annotation.SaCheckPermission;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.demo.entity.bo.PlanBo;
 import com.ruoyi.demo.service.DlUserService;
@@ -12,6 +13,12 @@ public class DlUserController {
     @Autowired
     DlUserService dlUserService;
 
+    /**
+     * 查询用户列表
+     * @param bo
+     * @return
+     */
+    @SaCheckPermission("szzs:dlUser:list")
     @PostMapping("/list")
     public R list(@RequestBody PlanBo bo){
         if (bo.getStartTime() != null && bo.getEndTime() != null)

+ 16 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/controller/EquipmentController.java

@@ -1,5 +1,6 @@
 package com.ruoyi.demo.controller;
 
+import cn.dev33.satoken.annotation.SaCheckPermission;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.pagehelper.PageInfo;
@@ -39,6 +40,7 @@ public class EquipmentController {
      * @param equipmentVo
      * @return
      */
+    @SaCheckPermission("szzs:equipment:add")
     @PostMapping("/addEquipment")
     public R addEquipment(@RequestBody @Validated(value = {AddGroup.class}) EquipmentVo equipmentVo){
         Integer integer = equipmentService.addEquipment(equipmentVo);
@@ -52,6 +54,7 @@ public class EquipmentController {
      * @param equipmentVo
      * @return
      */
+    @SaCheckPermission("szzs:equipment:update")
     @PutMapping("/updateEquipment")
     public R updateEquipment(@RequestBody @Validated(value = {AddGroup.class})EquipmentVo equipmentVo){
         R r = equipmentService.updateEquipment(equipmentVo);
@@ -63,6 +66,7 @@ public class EquipmentController {
      * @param equipmentId
      * @return
      */
+    @SaCheckPermission("szzs:equipment:query")
     @GetMapping("/getEquipment")
     public R getEquipment(@NotBlank String equipmentId){
         EquipmentBo equipment = equipmentService.getEquipment(equipmentId);
@@ -72,6 +76,7 @@ public class EquipmentController {
     /**
      * 获取设备列表
      * */
+    @SaCheckPermission("szzs:equipment:list")
     @GetMapping("/getEquipmentList")
     public R getEquipmentList(EquipmentVo equipmentVo){
         HashMap hashMap = equipmentService.getEquipmentList(equipmentVo);
@@ -83,6 +88,7 @@ public class EquipmentController {
      * @param equipmentIds
      * @return
      */
+    @SaCheckPermission("szzs:equipment:delete")
     @DeleteMapping("/deleteEquipment")
     public R deleteEquipment(@NotEmpty String[] equipmentIds){
         String s = equipmentService.deleteEquipment(equipmentIds);
@@ -94,6 +100,7 @@ public class EquipmentController {
      * @param equipmentVo
      * @return
      */
+    @SaCheckPermission("szzs:equipment:query")
     @GetMapping("/getEquipmentPlanList")
     public R getEquipmentPlanList(@Validated(value = {QueryGroup.class}) EquipmentVo equipmentVo){
         IPage<PlanItemBo> euipmentPlanList = equipmentService.getEquipmentPlanList(equipmentVo);
@@ -105,12 +112,14 @@ public class EquipmentController {
      * @param planItemVo
      * @return
      */
+    @SaCheckPermission("szzs:equipment:update")
     @PutMapping("/updateEquipmentPlan")
     public R updateEquipmentPlan(@RequestBody @Validated(value = {EditGroup.class}) PlanItemVo planItemVo){
         equipmentService.updateEquipmentPlan(planItemVo);
         return R.ok();
     }
 
+    @SaCheckPermission("szzs:equipment:other")
     @DeleteMapping("/deleteEquipmentPlan")
     public R deleteEquipmentPlan(@NotEmpty String[] planItemIds){
         equipmentService.deleteEquipmentPlan(planItemIds);
@@ -123,6 +132,7 @@ public class EquipmentController {
      * @param equipmentVo
      * @return
      */
+    @SaCheckPermission("szzs:equipment:query")
     @GetMapping("/getEquipmentBySelect")
     public R getEquipmentBySelect(EquipmentVo equipmentVo){
         Page<Equipment> equipments = equipmentService.getEquipmentBySelect(equipmentVo);
@@ -134,6 +144,7 @@ public class EquipmentController {
      * @param equipmentVo
      * @return
      */
+    @SaCheckPermission("szzs:equipment:add")
     @PutMapping("/addStoreEquipment")
     public R addStoreEquipment(@RequestBody @Validated(value = {QueryGroup.class}) EquipmentVo equipmentVo){
         if (equipmentVo.getStoreId() == null || equipmentVo.getStoreId().equals(""))
@@ -147,6 +158,7 @@ public class EquipmentController {
      * @param equipmentIds
      * @return
      */
+    @SaCheckPermission("szzs:equipment:update")
     @DeleteMapping("/deleteStoreEquipment")
     public R deleteStoreEquipment(@NotEmpty String[] equipmentIds){
         equipmentService.deleteStoreEquipment(equipmentIds);
@@ -158,6 +170,7 @@ public class EquipmentController {
      * @param equipmentVo
      * @return
      */
+    @SaCheckPermission("szzs:equipment:query")
     @GetMapping("/getEquipmentByStoreId")
     public R getEquipmentByStoreId(EquipmentVo equipmentVo){
         Page<Equipment> equipments = equipmentService.getEquipmentByStoreId(equipmentVo);
@@ -168,6 +181,7 @@ public class EquipmentController {
      * 获取总设备数
      * @return
      */
+    @SaCheckPermission("szzs:equipment:query")
     @GetMapping("/getEquipmentCount")
     public R getEquipmentCount(){
         HashMap equipmentCount = equipmentService.getEquipmentCount();
@@ -178,6 +192,7 @@ public class EquipmentController {
      * 获取设备授权状态(下拉框)
      * @return
      */
+    @SaCheckPermission("szzs:equipment:query")
     @GetMapping("/getEquipmentState")
     public R getEquipmentState(){
         EquipmentStateEnum[] values = EquipmentStateEnum.values();
@@ -195,6 +210,7 @@ public class EquipmentController {
      * 获取设备在线状态(下拉框)
      * @return
      */
+    @SaCheckPermission("szzs:equipment:query")
     @GetMapping("/getEquipmentOnState")
     public R getEquipmentOnState(){
         EquipmentOnStateEnum[] values = EquipmentOnStateEnum.values();

+ 5 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/controller/ExposureController.java

@@ -15,6 +15,11 @@ public class ExposureController {
     @Autowired
     ExposureService exposureService;
 
+    /**
+     * 添加曝光记录
+     * @param bo
+     * @return
+     */
     @PostMapping()
     public R add(@RequestBody Exposure bo){
         int i = exposureService.add(bo);

+ 11 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/controller/GoodsController.java

@@ -1,5 +1,6 @@
 package com.ruoyi.demo.controller;
 
+import cn.dev33.satoken.annotation.SaCheckPermission;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.demo.entity.Goods;
 import com.ruoyi.demo.entity.bo.GoodsBo;
@@ -15,6 +16,7 @@ public class GoodsController {
     @Autowired
     GoodsService goodsService;
 
+    @SaCheckPermission("szzs:goods:add")
     @PostMapping()
     public R addGoods(@RequestBody Goods goods){
         int i = goodsService.addGoods(goods);
@@ -25,6 +27,7 @@ public class GoodsController {
         return R.fail("添加失败");
     }
 
+    @SaCheckPermission("szzs:goods:delete")
     @DeleteMapping()
     public R deleteGoods(@RequestBody GoodsDeleteBo bo){
         int i = goodsService.deleteGoods(bo);
@@ -33,6 +36,12 @@ public class GoodsController {
         return R.fail("删除失败");
     }
 
+    /**
+     * 查询商品信息列表
+     * @param bo
+     * @return
+     */
+    @SaCheckPermission("szzs:goods:list")
     @PostMapping("/list")
     public R goodsList(@RequestBody PlanBo bo){
         if (bo.getStartTime() != null && bo.getEndTime() != null)
@@ -41,11 +50,13 @@ public class GoodsController {
         return R.ok(goodsService.getGoodsList(bo));
     }
 
+    @SaCheckPermission("szzs:goods:query")
     @PostMapping("/detail")
     public R goodsDetail(@RequestBody GoodsBo bo){
         return R.ok(goodsService.getGoodsDetail(bo));
     }
 
+    @SaCheckPermission("szzs:goods:update")
     @PutMapping()
     public R editGoods(@RequestBody Goods goods){
         int i = goodsService.editGoods(goods);

+ 18 - 3
ruoyi-demo/src/main/java/com/ruoyi/demo/controller/OrderController.java

@@ -1,5 +1,6 @@
 package com.ruoyi.demo.controller;
 
+import cn.dev33.satoken.annotation.SaCheckPermission;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.validate.AddGroup;
 import com.ruoyi.demo.entity.Order;
@@ -16,7 +17,12 @@ public class OrderController {
     @Autowired
     OrderService orderService;
 
-    // 获取sign——用于测试
+    /**
+     * 获取sign——用于测试
+     * @param bo
+     * @return
+     */
+    @SaCheckPermission("szzs:order:test")
     @PostMapping("/getSign")
     public R getSign(@RequestBody OrderAddBo bo){
         String sign = orderService.getSign(bo);
@@ -25,7 +31,11 @@ public class OrderController {
         return R.ok(sign);
     }
 
-    // 添加订单
+    /**
+     * 添加订单
+     * @param bo
+     * @return
+     */
     @PostMapping()
     public R addOrder(@RequestBody @Validated(value = {AddGroup.class}) OrderAddBo bo){
         int i = orderService.addOrder(bo);
@@ -38,7 +48,12 @@ public class OrderController {
         return R.fail("添加失败");
     }
 
-    // 查询订单列表
+    /**
+     * 查询订单列表
+     * @param bo
+     * @return
+     */
+    @SaCheckPermission("szzs:order:list")
     @PostMapping("/list")
     public R orderList(@RequestBody PlanBo bo){
         if (bo.getStartTime() != null && bo.getEndTime() != null)

+ 71 - 12
ruoyi-demo/src/main/java/com/ruoyi/demo/controller/PlanController.java

@@ -1,5 +1,6 @@
 package com.ruoyi.demo.controller;
 
+import cn.dev33.satoken.annotation.SaCheckPermission;
 import cn.dev33.satoken.stp.StpUtil;
 import com.github.pagehelper.PageInfo;
 import com.ruoyi.common.core.domain.R;
@@ -29,7 +30,12 @@ public class PlanController {
     ISysUserService sysUserService;
 
     // 广告管理
-    // 上下架广告计划
+    /**
+     * 上下架广告计划
+     * @param planId
+     * @return
+     */
+    @SaCheckPermission("szzs:planManage:update")
     @PutMapping("/{planId}")
     public R planUpDown(@PathVariable String planId){
         int i = planService.planUpDown(planId);
@@ -39,7 +45,12 @@ public class PlanController {
             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)
@@ -48,19 +59,33 @@ public class PlanController {
         PageInfo<List<PlanListVo>> planList = planService.getPlanList(bo);
         return R.ok(planList);
     }
-    // 查询广告计划明细
+    /**
+     * 查询广告计划明细
+     * @param planId
+     * @return
+     */
+    @SaCheckPermission("szzs:planManage:query")
     @GetMapping("/{planId}")
     public R planDetail(@PathVariable String planId){
         return R.ok(planService.getPlanDetail(planId));
     }
-    // 投放广告计划
+    /**
+     * 投放广告计划
+     * @param equipmentCode
+     * @return
+     */
     @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和用户名
@@ -85,7 +110,12 @@ public class PlanController {
         vos.add(new StateVo(StateUtil.NOT_APPROVED,StateUtil.NOT_APPROVED_CHAR));
         return R.ok(vos);
     }
-    // 查询广告计划管理列表
+    /**
+     * 查询广告计划管理列表
+     * @param bo
+     * @return
+     */
+    @SaCheckPermission("szzs:planAudit:list")
     @PostMapping("/audit/list")
     public R auditList(@RequestBody PlanBo bo){
         if (bo.getStartTime() != null && bo.getEndTime() != null)
@@ -94,14 +124,24 @@ public class PlanController {
         PageInfo<List<PlanManageListVo>> list = planService.getPlanManageList(bo);
         return R.ok(list);
     }
-    // 查询广告计划管理明细
+    /**
+     * 查询广告计划管理明细
+     * @param planId
+     * @return
+     */
+    @SaCheckPermission("szzs:planAudit:query")
     @GetMapping("/audit/{planId}")
     public R auditDetail(@PathVariable String planId){
         return R.ok(planService.getPlanManageDetail(planId));
     }
 
     // 广告推送
-    // 获取sign——用于测试
+    /**
+     * 获取sign——用于测试
+     * @param bo
+     * @return
+     */
+    @SaCheckPermission("szzs:plan:test")
     @PostMapping("/getSign")
     public R getSign(@RequestBody PlanAddBo bo){
         if (bo.getPlanStartTime() != null && bo.getPlanEndTime() != null)
@@ -112,7 +152,11 @@ public class PlanController {
             return R.fail("无效的appkey");
         return R.ok(sign);
     }
-    // 添加广告推送计划
+    /**
+     * 添加广告推送计划
+     * @param bo
+     * @return
+     */
     @PostMapping()
     public R addPlan(@RequestBody @Validated(value = {AddGroup.class}) PlanAddBo bo){
         if (bo.getPlanStartTime() != null && bo.getPlanEndTime() != null)
@@ -127,7 +171,12 @@ public class PlanController {
             return R.fail("校验sign出错");
         return R.fail("广告添加失败");
     }
-    // 删除广告推送计划
+    /**
+     * 删除广告推送计划
+     * @param planId
+     * @return
+     */
+    @SaCheckPermission("szzs:plan:delete")
     @DeleteMapping("/{planId}")
     public R deletePlan(@PathVariable String planId){
         int i = planService.deletePlan(planId);
@@ -135,7 +184,12 @@ public class PlanController {
             return R.ok("删除成功");
         return R.fail("删除失败");
     }
-    // 查询广告计划推送计划列表
+    /**
+     * 查询广告计划推送计划列表
+     * @param bo
+     * @return
+     */
+    @SaCheckPermission("szzs:plan:list")
     @PostMapping("/push/list")
     public R pushList(@RequestBody PlanBo bo){
         if (bo.getStartTime() != null && bo.getEndTime() != null)
@@ -147,7 +201,12 @@ public class PlanController {
 
 
     // 广告投放
-    // 广告投放列表
+    /**
+     * 广告投放列表
+     * @param bo
+     * @return
+     */
+    @SaCheckPermission("szzs:planStatistics:list")
     @PostMapping("/statistics/list")
     public R statisticsList(@RequestBody PlanBo bo){
         if (bo.getStartTime() != null && bo.getEndTime() != null)

+ 7 - 1
ruoyi-demo/src/main/java/com/ruoyi/demo/controller/StatisticsController.java

@@ -1,5 +1,6 @@
 package com.ruoyi.demo.controller;
 
+import cn.dev33.satoken.annotation.SaCheckPermission;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.validate.AddGroup;
 import com.ruoyi.demo.entity.Statistics;
@@ -37,7 +38,12 @@ public class StatisticsController {
         return R.ok(statisticsService.getScanTotal());
     }
 
-    // 获取sign——用于测试
+    /**
+     * 获取sign——用于测试
+     * @param bo
+     * @return
+     */
+    @SaCheckPermission("szzs:statistics:test")
     @PostMapping("/getSign")
     public R getSign(@RequestBody StatisticsAddBo bo){
         String sign = statisticsService.getSign(bo);

+ 6 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/controller/StoreController.java

@@ -1,5 +1,6 @@
 package com.ruoyi.demo.controller;
 
+import cn.dev33.satoken.annotation.SaCheckPermission;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.validate.AddGroup;
 import com.ruoyi.common.core.validate.EditGroup;
@@ -26,6 +27,7 @@ public class StoreController {
      * @param storeVo
      * @return
      */
+    @SaCheckPermission("szzs:store:add")
     @PostMapping("/addStore")
     public R addStore(@RequestBody @Validated(value = {AddGroup.class})StoreVo storeVo){
         storeService.addStore(storeVo);
@@ -37,6 +39,7 @@ public class StoreController {
      * @param storeVo
      * @return
      */
+    @SaCheckPermission("szzs:store:update")
     @PutMapping("/updateStore")
     public R updateStore(@RequestBody @Validated(value = {EditGroup.class})StoreVo storeVo){
         storeService.updateStore(storeVo);
@@ -48,6 +51,7 @@ public class StoreController {
      * @param storeIds
      * @return
      */
+    @SaCheckPermission("szzs:store:delete")
     @DeleteMapping("/deleteStore")
     public R deleteStore(@NotEmpty(message = "店铺Id不能为空") String[] storeIds){
         storeService.deleteStore(storeIds);
@@ -59,12 +63,14 @@ public class StoreController {
      * @param storeVo
      * @return
      */
+    @SaCheckPermission("szzs:store:list")
     @GetMapping("/getStoreList")
     public R getStoreList(StoreVo storeVo){
         HashMap storeList = storeService.getStoreList(storeVo);
         return R.ok(storeList);
     }
 
+    @SaCheckPermission("szzs:store:other")
     @GetMapping("/getStore")
     public R getStore(@NotBlank(message = "店铺Id不能为空") String storeId){
         Store store = storeService.getStore(storeId);

+ 6 - 0
ruoyi-job/pom.xml

@@ -29,6 +29,12 @@
             <artifactId>xxl-job-core</artifactId>
         </dependency>
 
+        <!-- ruoyi-demo -->
+        <dependency>
+            <groupId>com.ruoyi</groupId>
+            <artifactId>ruoyi-demo</artifactId>
+        </dependency>
+
     </dependencies>
 
 </project>

+ 19 - 0
ruoyi-job/src/main/java/com/ruoyi/job/service/PlanPushService.java

@@ -0,0 +1,19 @@
+package com.ruoyi.job.service;
+
+import com.ruoyi.demo.service.PlanService;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Slf4j
+@Service
+public class PlanPushService {
+    @Autowired
+    PlanService planService;
+
+    @XxlJob("planPushJobHandler")
+    public void start() throws Exception {
+        planService.planPushStatisticsStart();
+    }
+}