leon 5 лет назад
Родитель
Сommit
dc9cfbe493

+ 10 - 0
src/main/java/com/mokamrp/privates/controller/pangu/PromoteCodeController.java

@@ -101,6 +101,16 @@ public class PromoteCodeController extends BaseController<PromoteCode> {
         if (bindingResult.hasErrors()) {
             return AjaxResult.error(HttpStatus.ERROR, bindingResult.getFieldError().getDefaultMessage());
         }
+        if (editHandle.getRaw().getHourUvMax() != null){
+            PromoteQrcodePool save = new PromoteQrcodePool();
+            save.setHourUvMax(editHandle.getRaw().getHourUvMax());
+            promoteQrcodePoolService.update(save,new QueryWrapper<PromoteQrcodePool>().eq("promote_id",editHandle.getIds()));
+        }
+        if (editHandle.getRaw().getDayUvMax() != null){
+            PromoteQrcodePool save = new PromoteQrcodePool();
+            save.setDayUvMax(editHandle.getRaw().getDayUvMax());
+            promoteQrcodePoolService.update(save,new QueryWrapper<PromoteQrcodePool>().eq("promote_id",editHandle.getIds()));
+        }
         this.onUpdate(editHandle);
         service.update(editHandle.getRaw(), new QueryWrapper<PromoteCode>().in("id", editHandle.getIds()));
         this.sync();

+ 1 - 1
src/main/java/com/mokamrp/privates/controller/pangu/PromoteCodeDataController.java

@@ -126,7 +126,7 @@ public class PromoteCodeDataController{
         res.put("longTouchPv",total.getLongTouchPv());
         res.put("longTouchUv",total.getLongTouchUv());
         res.put("takeQrcodePv",total.getTakeQrcodePv());
-        res.put("takeQrcodeUv",total.getTakeQrcodePv());
+        res.put("takeQrcodeUv",total.getTakeQrcodeUv());
         return AjaxResult.success(res);
     }
 

+ 2 - 0
src/main/java/com/mokamrp/privates/mapper/pangu/pojo/PromoteCode.java

@@ -73,6 +73,8 @@ public class PromoteCode extends Model<PromoteCode> {
 
     private Integer custservicePlaybillId;
 
+    private Integer hourResumeType;
+
     private LocalDateTime createAt;
 
     private LocalDateTime updateAt;

+ 2 - 0
src/main/java/com/mokamrp/privates/mapper/pangu/pojo/PromoteCodeVo.java

@@ -95,6 +95,8 @@ public class PromoteCodeVo extends Model<PromoteCodeVo> {
 
     private String custserviceQrcodeY;
 
+    private Integer hourResumeType;
+
     private LocalDateTime createAt;
 
     private LocalDateTime updateAt;

+ 3 - 3
src/main/java/com/mokamrp/privates/mapper/pangu/pojo/PromoteQrcodePool.java

@@ -51,11 +51,11 @@ public class PromoteQrcodePool extends Model<PromoteQrcodePool> {
      */
     private LocalDateTime updateAt;
 
-    private Integer weight = 1;
+    private Integer weight;
 
-    private Integer dayUvMax = 0;
+    private Integer dayUvMax;
 
-    private Integer hourUvMax = 0;
+    private Integer hourUvMax;
 
 
     public Integer getId() {

+ 77 - 0
src/main/java/com/mokamrp/privates/task/pangu/CheckPromoteView.java

@@ -0,0 +1,77 @@
+package com.mokamrp.privates.task.pangu;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.mokamrp.privates.constant.RedisKey;
+import com.mokamrp.privates.mapper.pangu.pojo.DomainFirst;
+import com.mokamrp.privates.mapper.pangu.pojo.DomainSecond;
+import com.mokamrp.privates.mapper.pangu.pojo.PromoteCode;
+import com.mokamrp.privates.mapper.pangu.pojo.PromoteQrcodePool;
+import com.mokamrp.privates.service.pangu.DomainFirstService;
+import com.mokamrp.privates.service.pangu.DomainSecondService;
+import com.mokamrp.privates.service.pangu.PromoteCodeService;
+import com.mokamrp.privates.service.pangu.PromoteQrcodePoolService;
+import com.mokamrp.privates.utils.Cmd;
+import com.mokamrp.privates.utils.http.HttpUtils;
+import net.javacrumbs.shedlock.core.SchedulerLock;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.StringRedisTemplate;
+import org.springframework.data.redis.core.ZSetOperations;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+@Component
+public class CheckPromoteView {
+    @Autowired
+    public PromoteQrcodePoolService promoteQrcodePoolService;
+
+    @Autowired
+    public PromoteCodeService promoteCodeService;
+
+    @Autowired
+    public StringRedisTemplate stringRedisTemplate;
+
+    @Autowired
+    public ResetCustserviceViewTask resetCustserviceViewTask;
+
+    private final String feishu = "https://open.feishu.cn/open-apis/bot/v2/hook/d2b5556d-30fb-400e-b10f-cb9310dbc705";
+
+    @Scheduled(cron = "* */1 * * * ?") //.间隔 5分钟
+    @SchedulerLock(name = "pangu:CheckPromoteView", lockAtLeastForString = "PT5S", lockAtMostForString = "PT15M")
+    public void execute() {
+        System.out.println("[cronjob]:检测个微活码访问上限");
+        List<PromoteCode> list = promoteCodeService.list();
+        for (PromoteCode promoteCode : list){
+            Boolean hasKey = stringRedisTemplate.hasKey(RedisKey.PanCustServiceIdView + promoteCode.getId());
+            if (!hasKey){
+                continue;
+            }
+            Set<ZSetOperations.TypedTuple<String>> res = stringRedisTemplate.opsForZSet().rangeByScoreWithScores(RedisKey.PanCustServiceIdView + promoteCode.getId(),-1,promoteCode.getHourUvMax()-1);
+            if (res.size() == 0){
+                if (promoteCode.getHourResumeType().equals(1)){
+                    List<PromoteQrcodePool> pool = promoteQrcodePoolService.list(new QueryWrapper<PromoteQrcodePool>().eq("promote_id",promoteCode.getId()));
+                    for (PromoteQrcodePool promoteQrcodePool :pool) {
+                        resetCustserviceViewTask.addRedis(promoteQrcodePool.getPromoteId(),promoteQrcodePool.getCustserviceId(),promoteQrcodePool.getWeight());
+                    }
+                }else{
+                    Cmd.sendFeishuMsg(feishu,"[警告]:活码ID:"+promoteCode.getId()+"|"+promoteCode.getName()+",当前小时所有二维码阈值上限,需要人工添加二维码");
+                }
+            }
+        }
+    }
+
+    private PromoteQrcodePool getPool(List<PromoteQrcodePool> row,Integer promoteId,Integer custserviceId){
+        for (PromoteQrcodePool promoteQrcodePool : row){
+            if (promoteQrcodePool.getPromoteId().equals(promoteId) && promoteQrcodePool.getCustserviceId().equals(custserviceId)){
+                return promoteQrcodePool;
+            }
+        }
+        return null;
+    }
+}

+ 2 - 2
src/main/java/com/mokamrp/privates/task/pangu/ResetCustserviceViewTask.java

@@ -29,7 +29,7 @@ public class ResetCustserviceViewTask {
     @Autowired
     public StringRedisTemplate stringRedisTemplate;
 
-    @Scheduled(cron = "* * */1 * * ?") //.每小时重置个微客户访问量
+    @Scheduled(cron = "0 0 */1 * * ?") //.每小时重置个微客户访问量
     @SchedulerLock(name = "pangu:ResetCustserviceViewTask", lockAtLeastForString = "PT5S", lockAtMostForString = "PT15M")
     public void execute() {
         System.out.println("[cronjob]:盘古活码个微每小时访问量清空");
@@ -65,7 +65,7 @@ public class ResetCustserviceViewTask {
         }
     }
 
-    private Boolean addRedis(Integer promoteId, Integer custserviceId, Integer weight) {
+    public Boolean addRedis(Integer promoteId, Integer custserviceId, Integer weight) {
         String scoreStr = BigDecimal.valueOf(weight.doubleValue()/1000).setScale(4, RoundingMode.HALF_EVEN).stripTrailingZeros().toPlainString();
         float score = Float.parseFloat(scoreStr);
         Long index = stringRedisTemplate.opsForZSet().rank(RedisKey.PanCustServiceIdView + promoteId, Integer.toString(custserviceId));

+ 1 - 1
src/main/java/com/mokamrp/privates/task/pangu/SyncFosterwxMobile.java

@@ -38,7 +38,7 @@ public class SyncFosterwxMobile {
 
     public List<FosterwxMobile> fosterwxMobileList;
 
-    @Scheduled(cron = "* */1 * * * ?")
+    @Scheduled(cron = "0 */1 * * * ?")
     @SchedulerLock(name = "pangu:SyncFosterwxMobile", lockAtLeastForString = "PT5S", lockAtMostForString = "PT15M")
     public void execute() {
         System.out.println("[cronjob]:同步微信养号站点账号到REDIS");

+ 1 - 1
src/main/java/com/mokamrp/privates/task/pangu/SyncNewFosterwxTask.java

@@ -31,7 +31,7 @@ public class SyncNewFosterwxTask {
     @Autowired
     public StringRedisTemplate stringRedisTemplate;
 
-    @Scheduled(cron = "* */1 * * * ?")
+    @Scheduled(cron = "0 */1 * * * ?")
     @SchedulerLock(name = "pangu:SyncNewFosterwxTask", lockAtLeastForString = "PT5S", lockAtMostForString = "PT15M")
     public void execute() {
         System.out.println("[cronjob]:同步微信养号任务到REDIS");