1
0

7 Коммитууд cb3b794e9e ... b5b0c77982

Эзэн SHA1 Мессеж Огноо
  云殇忆 b5b0c77982 添加广告上下架、检查过期广告回调地址反馈 1 жил өмнө
  JensionDzero f71df5bc18 修改bug 1 жил өмнө
  JensionDzero 1a2d99dc16 添加小程序禁用后通知回调地址 1 жил өмнө
  JensionDzero 235c781d5b 添加小程序禁用后通知回调地址 1 жил өмнө
  JensionDzero 5d51cca49d Merge branch 'lcy' of http://47.107.53.207:3000/traineeCoder001/Digital-Investment 1 жил өмнө
  JensionDzero d3553e3d4f 修改bug 1 жил өмнө
  JensionDzero ca271d277e 修改bug 1 жил өмнө

+ 2 - 2
pom.xml

@@ -74,7 +74,7 @@
             </properties>
             <activation>
                 <!-- 默认环境 -->
-                <activeByDefault>true</activeByDefault>
+                <activeByDefault>false</activeByDefault>
             </activation>
         </profile>
         <profile>
@@ -85,7 +85,7 @@
             </properties>
             <activation>
                 <!-- 默认环境 -->
-                <activeByDefault>false</activeByDefault>
+                <activeByDefault>true</activeByDefault>
             </activation>
         </profile>
         <profile>

+ 2 - 2
ruoyi-admin/src/test/java/com/ruoyi/test/WakeUpDormancyTest.java

@@ -12,7 +12,7 @@ public class WakeUpDormancyTest {
 
     @Test
     public void test(){
-        String equipmentCode = "MTX0141791";
+        String equipmentCode = "MTX0238999";
         System.out.println(mtStarUtil.getCMark(equipmentCode));
     }
 
@@ -24,7 +24,7 @@ public class WakeUpDormancyTest {
 
     @Test
     public void dormancy(){
-        String equipmentCode = "MTX0141791";
+        String equipmentCode = "MTX0238999";
         System.out.println(mtStarUtil.dormancy(equipmentCode));
     }
 }

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

@@ -48,7 +48,7 @@ public class EquipmentController {
     public R addEquipment(@RequestBody @Validated(value = {AddGroup.class}) EquipmentVo equipmentVo){
         Integer integer = equipmentService.addEquipment(equipmentVo);
         if (integer == 0)
-            R.ok("添加失败,设备编号已存在");
+            return R.fail("添加失败,设备编号已存在");
         return R.ok();
     }
 

+ 15 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/job/CheckPlanTimeJob.java

@@ -0,0 +1,15 @@
+package com.ruoyi.demo.job;
+
+import com.ruoyi.demo.service.PlanService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component("checkPlanTimeJob")
+public class CheckPlanTimeJob {
+    @Autowired
+    PlanService planService;
+
+    public void start(){
+        planService.checkPlanTime();
+    }
+}

+ 3 - 0
ruoyi-demo/src/main/java/com/ruoyi/demo/service/PlanService.java

@@ -37,4 +37,7 @@ public interface PlanService {
     List<AddrCategory> getAddrCategoryLevel(String code,String level);
     List<AddrCategory> getAddrCategory();
     Page<Equipment> getEquipments(PlanBo bo);
+
+    // Job
+    void checkPlanTime();
 }

+ 8 - 2
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/AppServiceImpl.java

@@ -121,7 +121,7 @@ public class AppServiceImpl implements AppService {
     public R updateApp(AppVo appVo) {
         //判断是否存在该app
         QueryWrapper<App> queryWrapper = new QueryWrapper<>();
-        queryWrapper.select("app_name","state");
+        queryWrapper.select("app_name","state","call_back");
         queryWrapper.eq("appkey",appVo.getAppkey());
         App app = appMapper.selectOne(queryWrapper);
         if (app != null){
@@ -134,6 +134,9 @@ public class AppServiceImpl implements AppService {
                 if (!appVo.equals(app.getAppName()))
                     planUpdateWrapper.set("app_name",app.getAppName());
                 planMapper.update(null,planUpdateWrapper);
+
+                //发通知,告知appkey被禁用
+                SendCallBackUtil.stopAppCallBack(app.getCallBack());
             }
 
             //2.修改信息
@@ -220,7 +223,7 @@ public class AppServiceImpl implements AppService {
     public R stopApp(String appKey) {
         //判断是否存在该app
         QueryWrapper<App> queryWrapper = new QueryWrapper<>();
-        queryWrapper.select("app_name","state");
+        queryWrapper.select("app_name","state","call_back");
         queryWrapper.eq("appkey",appKey);
         App app = appMapper.selectOne(queryWrapper);
         if (app != null){
@@ -231,6 +234,9 @@ public class AppServiceImpl implements AppService {
                 planUpdateWrapper.eq("appkey",appKey);
                 planUpdateWrapper.set("on_state",0); //关闭
                 planMapper.update(null,planUpdateWrapper);
+
+                //发通知,告知appkey被禁用
+                SendCallBackUtil.stopAppCallBack(app.getCallBack());
             }
 
             //2.修改信息

+ 11 - 2
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/CommercialServiceImpl.java

@@ -18,6 +18,7 @@ import com.ruoyi.demo.mapper.CommercialMapper;
 import com.ruoyi.demo.mapper.PlanMapper;
 import com.ruoyi.demo.service.CommericalService;
 import com.ruoyi.demo.utils.InitMapUtil;
+import com.ruoyi.demo.utils.SendCallBackUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -54,7 +55,7 @@ public class CommercialServiceImpl implements CommericalService {
     public void addCommercial(CommercialVo commercialVo) {
         Commercial commercial = new Commercial(commercialVo);
         commercial.setCreateTime(DateUtil.date());
-        commercial.setAddrCodeInfo(initMapUtil.getInitAddrCodeMap(commercial.getAddrCode()));
+       // commercial.setAddrCodeInfo(initMapUtil.getInitAddrCodeMap(commercial.getAddrCode()));
         commercialMapper.insert(commercial);
     }
 
@@ -175,7 +176,15 @@ public class CommercialServiceImpl implements CommericalService {
                     updateWrapper1.set("state",0);
                     appMapper.update(null,updateWrapper1);
 
-                    //2.下架所有广告
+                    //2.给所有app发送禁用消息
+                    QueryWrapper<App> queryWrapper1 = new QueryWrapper<>();
+                    queryWrapper1.select("call_back");
+                    queryWrapper1.eq("commercial_id",commercialVo.getCommercialId());
+                    for (App app : appMapper.selectList(queryWrapper1)) {
+                        SendCallBackUtil.stopAppCallBack(app.getCallBack());
+                    }
+
+                    //3.下架所有广告
                     UpdateWrapper<Plan> updateWrapper2 = new UpdateWrapper<>();
                     updateWrapper2.eq("commercial_id",commercialVo.getCommercialId());
                     updateWrapper2.set("on_state",0);

+ 2 - 3
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/EquipmentServiceImpl.java

@@ -80,7 +80,6 @@ public class EquipmentServiceImpl implements EquipmentService {
         QueryWrapper<Equipment> equipmentCode = new QueryWrapper<>();
         equipmentCode.eq("equipment_code", equipmentVo.getEquipmentCode());
         Long aLong = equipmentMapper.selectCount(equipmentCode);
-
         if (aLong == 0){
             Equipment equipment = new Equipment(equipmentVo);
             //1.新增地区码映射
@@ -88,8 +87,8 @@ public class EquipmentServiceImpl implements EquipmentService {
 
             //2.新增创建时间
             equipment.setEnterTime(DateUtil.date());
-
-            return equipmentMapper.insert(equipment);
+            equipmentMapper.insert(equipment);
+            return 1;
         }
         return 0;
     }

+ 43 - 1
ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/PlanServiceImpl.java

@@ -308,8 +308,21 @@ public class PlanServiceImpl implements PlanService {
             return -1;
         // 改变状态,1:上架;0:下架
         plan.setOnState(plan.getOnState() + 1);
-        if (plan.getOnState() >= 2)
+        if (plan.getOnState() >= 2) {
             plan.setOnState(0);
+            // 发送下架信息
+            try {
+                App app = appMapper.selectOne(new QueryWrapper<App>()
+                    .eq("appkey", plan.getAppkey())
+                    .eq("state", 1)
+                    .eq("deleted", "0"));
+                Map<String, Object> map = Dict.create()
+                    .set("msg", "您的广告\"" + plan.getPlanName() + "\"已下架")
+                    .set("time", DateUtil.date());
+                SendCallBackUtil.sendCallBack(app.getCallBack(), map);
+            } catch (Exception e) {
+            }
+        }
         return planMapper.updateById(plan);
     }
 
@@ -530,4 +543,33 @@ public class PlanServiceImpl implements PlanService {
         Page<Equipment> page = new Page<>(bo.getPageNum(), bo.getPageSize());
         return equipmentMapper.selectPage(page, equipmentQueryWrapper);
     }
+
+    @Override
+    public void checkPlanTime() {
+        /* 逻辑:
+         每天8点检查一次,假设当前时间为[2023-1-3 08:00:00],
+         查询[2023-1-3 08:00:00 >= 计划结束时间 >= 2023-1-2 08:00:00]的计划,
+         获得对应的appkey,在查询这些appkey对应的小程序,
+         获得对应的callBack,对这些callBack返回信息。
+        */
+        List<Plan> plans = planMapper.selectList(new QueryWrapper<Plan>()
+            .eq("state", StateUtil.APPROVED) // 通过审核
+            .eq("on_state", OnStateUtil.UP) // 上架
+            .apply("plan_end_time <= STR_TO_DATE({0},'%Y-%m-%d %H:%i:%s')", DateUtil.date().toString())
+            .apply("plan_end_time >= STR_TO_DATE({0},'%Y-%m-%d %H:%i:%s')", DateUtil.offsetDay(new Date(), -1).toString()));
+        for (Plan plan : plans) {
+            App app = appMapper.selectOne(new QueryWrapper<App>()
+                .eq("appkey", plan.getAppkey())
+                .eq("state", 1) // 启用
+                .eq("deleted", "0"));
+            Map<String, Object> map = Dict.create()
+                .set("msg", "您的广告\"" + plan.getPlanName() + "\"已下架")
+                .set("time", DateUtil.date());
+            try {
+                SendCallBackUtil.sendCallBack(app.getCallBack(), map);
+            } catch (Exception e) {
+                System.out.println("[appkey:" + app.getAppkey() + ",appName:" + app.getAppName() + "]的回调地址[" + app.getCallBack() + "]失效");
+            }
+        }
+    }
 }

+ 26 - 4
ruoyi-demo/src/main/java/com/ruoyi/demo/utils/SendCallBackUtil.java

@@ -5,23 +5,45 @@ import com.ruoyi.demo.entity.bo.CallBackBean;
 import org.springframework.web.client.RestTemplate;
 
 import java.time.LocalDateTime;
+import java.util.Map;
 
 public class SendCallBackUtil {
     // 例子
     public static void testCallBack(String callBack){
-        RestTemplate restTemplate = new RestTemplate();
         CallBackBean callBackBean = new CallBackBean();
         callBackBean.setTitle("这是个测试信息");
         callBackBean.setState("测试");
         callBackBean.setAuditPerson("自动回复");
         callBackBean.setAuditComment("这是个测试信息,请勿回复");
         callBackBean.setAuditTime(DateUtil.date());
-        restTemplate.postForObject(callBack,callBackBean,String.class);
+        sendCallBack(callBack,callBackBean);
+    }
+
+    /***
+     * 通知app被禁用
+     * @param callBack
+     */
+    public static void stopAppCallBack(String callBack){
+        CallBackBean callBackBean = new CallBackBean();
+        callBackBean.setTitle("appkey被禁用");
+        callBackBean.setState("通知");
+        callBackBean.setAuditPerson("数字招商");
+        callBackBean.setAuditComment("您的appkey已被禁用,请及时和管理人员联系");
+        callBackBean.setAuditTime(DateUtil.date());
+        sendCallBack(callBack,callBackBean);
     }
 
     // 实际使用
     public static void sendCallBack(String callBack,CallBackBean callBackBean){
-        RestTemplate restTemplate = new RestTemplate();
-        restTemplate.postForObject(callBack,callBackBean,String.class);
+        try {
+            RestTemplate restTemplate = new RestTemplate();
+            restTemplate.postForObject(callBack,callBackBean,String.class);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+
+    public static String sendCallBack(String callBack, Map<String, Object> map) {
+        return new RestTemplate().postForObject(callBack, map, String.class);
     }
 }

+ 24 - 0
ruoyi-job/src/main/java/com/ruoyi/job/service/CheckPlanTimeService.java

@@ -0,0 +1,24 @@
+package com.ruoyi.job.service;
+
+import cn.hutool.core.date.DateUtil;
+import com.ruoyi.demo.service.PlanService;
+import com.xxl.job.core.context.XxlJobHelper;
+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 CheckPlanTimeService {
+    @Autowired
+    PlanService planService;
+
+    // 每天8点检查一次
+    @XxlJob("checkPlanTimeJobHandler")
+    public void start(){
+        XxlJobHelper.log("start checkPlanTime"+ DateUtil.date());
+        planService.checkPlanTime();
+        XxlJobHelper.log("finish checkPlanTime"+ DateUtil.date());
+    }
+}