Kaynağa Gözat

盘古个微活码兼容盘古养号个微池

leon 4 yıl önce
ebeveyn
işleme
03bb2e7101

+ 3 - 17
src/main/java/com/mokamrp/privates/controller/pangu/CustserviceController.java

@@ -62,20 +62,6 @@ public class CustserviceController extends BaseController<Custservice> {
         return AjaxResult.success(res);
     }
 
-    /**
-     * (API)负载均衡获取个微客服码+海报底图
-     * @param promoteId
-     * @return
-     */
-    @GetMapping("/getRandCustservice")
-    public Object getRandCustservice(@RequestParam(name = "promoteId") String promoteId){
-        Map<String,Object> res = custserviceService.getRandCustservice(promoteId);
-        if (res.get("err") != null){
-            return AjaxResult.error(HttpStatus.ERROR,res.get("err").toString());
-        }
-        return AjaxResult.success(res.get("res"));
-    }
-
     @PostMapping("/del")
     public Object delete(@Valid @RequestBody DelHandle<Custservice> delHandle, BindingResult bindingResult) {
         if (bindingResult.hasErrors()) {
@@ -101,7 +87,7 @@ public class CustserviceController extends BaseController<Custservice> {
         this.onInsert(addHandle.getRaw());
         Boolean res = service.save(addHandle.getRaw());
         if (res) {
-            this.sync();
+//            this.sync();
             return AjaxResult.success(Constants.SUCCESS, res);
         } else {
             return AjaxResult.error("新增失败", res);
@@ -140,7 +126,7 @@ public class CustserviceController extends BaseController<Custservice> {
         }
         this.onUpdate(editHandle);
         service.update(editHandle.getRaw(), new QueryWrapper<Custservice>().in("id", editHandle.getIds()));
-        this.sync();
+//        this.sync();
         return AjaxResult.success(Constants.SUCCESS, true);
     }
 
@@ -153,7 +139,7 @@ public class CustserviceController extends BaseController<Custservice> {
         custservice.setGroupId(setGroupHandle.getGroupId());
         custservice.setUpdateAt(LocalDateTime.now());
         service.update(custservice,new QueryWrapper<Custservice>().in("id",setGroupHandle.getIds()));
-        this.sync();
+//        this.sync();
         return AjaxResult.success(Constants.SUCCESS,true);
     }
 

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

@@ -155,7 +155,7 @@ public class FosterwxStationController extends BaseController<FosterwxStation> {
         boolean res = service.remove(QueryWrapper);
         if (!res) {
             for (String id : ids){
-                stringRedisTemplate.opsForHash().delete(RedisKey.PanCustServiceInfo,id);
+                stringRedisTemplate.opsForHash().delete(RedisKey.PanWxFosterStationInfo,id);
             }
             return AjaxResult.error("删除失败");
         }

+ 20 - 50
src/main/java/com/mokamrp/privates/controller/pangu/PromoteQrcodePoolController.java

@@ -64,7 +64,13 @@ public class PromoteQrcodePoolController extends BaseController<PromoteQrcodePoo
 
     @PostMapping("/list")
     public Object list(@RequestBody GetPromoteQrcodePoolHandle pageHandle) {
-        Object res = promoteQrcodePoolService.getlist(pageHandle);
+        PromoteCode promoteCode = promoteCodeService.getOne(new QueryWrapper<PromoteCode>().eq("id",pageHandle.getPromoteId()));
+        Object res = new Object();
+        if (promoteCode.getPromoteType().equals(1)){
+            res = promoteQrcodePoolService.getDefaultList(pageHandle);
+        }else{
+            res = promoteQrcodePoolService.getMobilePoolList(pageHandle);
+        }
         return AjaxResult.success(res);
     }
 
@@ -100,51 +106,6 @@ public class PromoteQrcodePoolController extends BaseController<PromoteQrcodePoo
         return AjaxResult.success(Constants.SUCCESS, res);
     }
 
-    @Override
-    @PostMapping("/add")
-    public Object add(@Valid @RequestBody AddHandle<PromoteQrcodePool> addHandle, BindingResult bindingResult) {
-        if (bindingResult.hasErrors()) {
-            return AjaxResult.error(HttpStatus.ERROR, bindingResult.getFieldError().getDefaultMessage());
-        }
-        //.排重
-        PromoteQrcodePool hasone = promoteQrcodePoolService.getOne(new QueryWrapper<PromoteQrcodePool>()
-                .eq("promote_id", addHandle.getRaw().getPromoteId())
-                .eq("custservice_id", addHandle.getRaw().getCustserviceId()));
-        if (hasone != null) {
-            return AjaxResult.error(addHandle.getRaw().getCustserviceId() + "号个微码已经存在");
-        }
-        PromoteCode promoteCode = promoteCodeService.getOne(new QueryWrapper<PromoteCode>().eq("id", addHandle.getRaw().getPromoteId()));
-        PromoteQrcodePool promoteQrcodePool = promoteQrcodePoolService.getOne(
-                new QueryWrapper<PromoteQrcodePool>()
-                        .eq("promote_id", addHandle.getRaw().getPromoteId())
-                        .orderByDesc("weight")
-                        .last("limit 1")
-        );
-        if (promoteQrcodePool != null) {
-            Integer weight = promoteQrcodePool.getWeight();
-            //.权重自动分配最大999
-            if (weight >= 999) {
-                addHandle.getRaw().setWeight(999);
-            } else {
-                addHandle.getRaw().setWeight(weight + 1);
-            }
-        }else{
-            addHandle.getRaw().setWeight(1);
-        }
-        addHandle.getRaw().setDayUvMax(promoteCode.getDayUvMax());
-        addHandle.getRaw().setHourUvMax(promoteCode.getHourUvMax());
-        this.onInsert(addHandle.getRaw());
-        Boolean res = promoteQrcodePoolService.save(addHandle.getRaw());
-        if (res) {
-            //.同步到redis
-            promoteQrcodePoolService.addRedis(addHandle.getRaw().getPromoteId(), addHandle.getRaw().getCustserviceId(), addHandle.getRaw().getWeight());
-            this.sync();
-            return AjaxResult.success(Constants.SUCCESS, res);
-        } else {
-            return AjaxResult.error("新增失败", res);
-        }
-    }
-
     @PostMapping("/adds")
     public Object adds(@Valid @RequestBody AddsHandle<PromoteQrcodePool> addsHandle, BindingResult bindingResult) {
         if (bindingResult.hasErrors()) {
@@ -187,7 +148,6 @@ public class PromoteQrcodePoolController extends BaseController<PromoteQrcodePoo
             if (res) {
                 //.同步到redis
                 promoteQrcodePoolService.addRedis(raw.getPromoteId(), raw.getCustserviceId(), raw.getWeight());
-                this.sync();
                 successList.add(raw.getCustserviceId());
                 continue;
             } else {
@@ -195,6 +155,8 @@ public class PromoteQrcodePoolController extends BaseController<PromoteQrcodePoo
                 continue;
             }
         }
+        this.syncDefault();
+        this.syncMobilePool();
         result.put("successList", successList);
         result.put("errorList", errorList);
         return AjaxResult.success(result);
@@ -208,13 +170,21 @@ public class PromoteQrcodePoolController extends BaseController<PromoteQrcodePoo
         }
         onUpdate(editHandle);
         promoteQrcodePoolService.update(editHandle.getRaw(), new QueryWrapper<PromoteQrcodePool>().in("id", editHandle.getIds()));
-        this.sync();
+        this.syncDefault();
         return AjaxResult.success(Constants.SUCCESS, true);
     }
 
 
-    private Boolean sync(){
-        List<PromoteQrcodePoolVo> list = promoteQrcodePoolService.getAlllist();
+    private Boolean syncDefault(){
+        List<PromoteQrcodePoolVo> list = promoteQrcodePoolService.getAllDefaultList();
+        for (PromoteQrcodePoolVo poolVo : list) {
+            stringRedisTemplate.opsForHash().put(RedisKey.PanPromoteCodePool+poolVo.getPromoteId(), Integer.toString(poolVo.getCustserviceId()), JSON.toJSONString(poolVo));
+        }
+        return true;
+    }
+
+    private Boolean syncMobilePool(){
+        List<PromoteQrcodePoolVo> list = promoteQrcodePoolService.getAllMobilePoolList();
         for (PromoteQrcodePoolVo poolVo : list) {
             stringRedisTemplate.opsForHash().put(RedisKey.PanPromoteCodePool+poolVo.getPromoteId(), Integer.toString(poolVo.getCustserviceId()), JSON.toJSONString(poolVo));
         }

+ 1 - 0
src/main/java/com/mokamrp/privates/entity/pangu/PromoteCodeListHandle.java

@@ -13,6 +13,7 @@ import java.time.LocalDateTime;
 public class PromoteCodeListHandle<T> {
     private Integer id;
     private String name;
+    private Integer promoteType;
     private LocalDateTime startDate;
     private LocalDateTime endDate;
     @NotBlank(message = "page 不可为空")

+ 1 - 0
src/main/java/com/mokamrp/privates/mapper/pangu/PromoteCodeMapper.xml

@@ -49,6 +49,7 @@
                           from pan_promote_qrcode_pool_record
                           group by promote_id) as E ON A.id = E.promote_id
         <where>
+            <if test="promoteCodeListHandle.promoteType != null">and A.promote_type = #{promoteCodeListHandle.promoteType}</if>
             <if test="deptId != null">and A.dept_id = #{deptId}</if>
             <if test="promoteCodeListHandle.name != null">and A.name like CONCAT('%',#{promoteCodeListHandle.name},'%')</if>
             <if test="promoteCodeListHandle.startDate != null">and A.create_at between #{promoteCodeListHandle.startDate} and #{promoteCodeListHandle.endDate}</if>

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

@@ -22,4 +22,6 @@ import java.util.List;
  */
 public interface PromoteQrcodePoolMapper extends BaseMapper<PromoteQrcodePool> {
     public List<PromoteQrcodePoolVo> getlist(IPage<PromoteQrcodePoolVo> page, @Param("pageHandle") GetPromoteQrcodePoolHandle pageHandle);
+    public List<PromoteQrcodePoolVo> getDefaultList(IPage<PromoteQrcodePoolVo> page, @Param("pageHandle") GetPromoteQrcodePoolHandle pageHandle);
+    public List<PromoteQrcodePoolVo> getMobilePoolList(IPage<PromoteQrcodePoolVo> page, @Param("pageHandle") GetPromoteQrcodePoolHandle pageHandle);
 }

+ 73 - 3
src/main/java/com/mokamrp/privates/mapper/pangu/PromoteQrcodePoolMapper.xml

@@ -18,6 +18,39 @@
     </sql>
     <select id="getlist" resultType="com.mokamrp.privates.mapper.pangu.pojo.PromoteQrcodePoolVo">
         SELECT
+        A.id,
+        A.promote_id,
+        A.custservice_id,
+        A.playbill_id,
+        A.day_uv_max,
+        A.hour_uv_max,
+        A.weight,
+        B.name AS playbill_name,
+        B.playbill,
+        B.qrcode_x,
+        B.qrcode_y,
+        C.name AS custservice_name,
+        C.qrcode,
+        IFNULL(D.long_touch_pv,0) as long_touch_pv,
+        IFNULL(D.take_qrcode_pv,0) as take_qrcode_pv,
+        IFNULL(D.today_long_touch_pv,0) as today_long_touch_pv,
+        IFNULL(D.today_take_qrcode_pv,0) as today_take_qrcode_pv,
+        IFNULL(D.long_touch_uv,0) as long_touch_uv,
+        IFNULL(D.take_qrcode_uv,0) as take_qrcode_uv,
+        IFNULL(D.today_long_touch_uv,0) as today_long_touch_uv,
+        IFNULL(D.today_take_qrcode_uv,0) as today_take_qrcode_uv
+        FROM pan_promote_qrcode_pool AS A
+        LEFT JOIN pan_playbill AS B ON A.playbill_id = B.id
+        LEFT JOIN pan_custservice AS C ON A.custservice_id = C.id
+        LEFT JOIN pan_promote_qrcode_pool_record AS D on A.custservice_id = D.custservice_id and A.promote_id = D.promote_id
+        <where>
+            <if test="pageHandle.promoteId != null">and A.promote_id = #{pageHandle.promoteId}</if>
+            <if test="pageHandle.id != null">and A.id = #{pageHandle.id}</if>
+        </where>
+    </select>
+
+    <select id="getDefaultList" resultType="com.mokamrp.privates.mapper.pangu.pojo.PromoteQrcodePoolVo">
+        SELECT
             A.id,
             A.promote_id,
             A.custservice_id,
@@ -40,13 +73,50 @@
             IFNULL(D.today_long_touch_uv,0) as today_long_touch_uv,
             IFNULL(D.today_take_qrcode_uv,0) as today_take_qrcode_uv
          FROM pan_promote_qrcode_pool AS A
+         LEFT JOIN pan_promote_code as A1 on A.promote_id = A1.id
          LEFT JOIN pan_playbill AS B ON A.playbill_id = B.id
          LEFT JOIN pan_custservice AS C ON A.custservice_id = C.id
          LEFT JOIN pan_promote_qrcode_pool_record AS D on A.custservice_id = D.custservice_id and A.promote_id = D.promote_id
         <where>
-        <if test="pageHandle.promoteId != null">and A.promote_id = #{pageHandle.promoteId}</if>
-        <if test="pageHandle.id != null">and A.id = #{pageHandle.id}</if>
-    </where>
+            and A1.promote_type = 1
+            <if test="pageHandle.promoteId != null">and A.promote_id = #{pageHandle.promoteId}</if>
+            <if test="pageHandle.id != null">and A.id = #{pageHandle.id}</if>
+        </where>
+    </select>
+
+    <select id="getMobilePoolList" resultType="com.mokamrp.privates.mapper.pangu.pojo.PromoteQrcodePoolVo">
+        SELECT
+        A.id,
+        A.promote_id,
+        A.custservice_id,
+        A.playbill_id,
+        A.day_uv_max,
+        A.hour_uv_max,
+        A.weight,
+        B.name AS playbill_name,
+        B.playbill,
+        B.qrcode_x,
+        B.qrcode_y,
+        C.mobile_no AS custservice_name,
+        C.code_url as qrcode,
+        IFNULL(D.long_touch_pv,0) as long_touch_pv,
+        IFNULL(D.take_qrcode_pv,0) as take_qrcode_pv,
+        IFNULL(D.today_long_touch_pv,0) as today_long_touch_pv,
+        IFNULL(D.today_take_qrcode_pv,0) as today_take_qrcode_pv,
+        IFNULL(D.long_touch_uv,0) as long_touch_uv,
+        IFNULL(D.take_qrcode_uv,0) as take_qrcode_uv,
+        IFNULL(D.today_long_touch_uv,0) as today_long_touch_uv,
+        IFNULL(D.today_take_qrcode_uv,0) as today_take_qrcode_uv
+        FROM pan_promote_qrcode_pool AS A
+        LEFT JOIN pan_promote_code as A1 on A.promote_id = A1.id
+        LEFT JOIN pan_playbill AS B ON A.playbill_id = B.id
+        LEFT JOIN pan_fosterwx_mobile_pool AS C ON A.custservice_id = C.id
+        LEFT JOIN pan_promote_qrcode_pool_record AS D on A.custservice_id = D.custservice_id and A.promote_id = D.promote_id
+        <where>
+            and A1.promote_type = 2
+            <if test="pageHandle.promoteId != null">and A.promote_id = #{pageHandle.promoteId}</if>
+            <if test="pageHandle.id != null">and A.id = #{pageHandle.id}</if>
+        </where>
     </select>
 
 </mapper>

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

@@ -28,6 +28,8 @@ public class PromoteCode extends Model<PromoteCode> {
      */
       @TableId(value = "id", type = IdType.AUTO)
     private Integer id;
+    private Integer promoteType;
+
     private String deptId;
     private String name;
 

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

@@ -1,6 +1,7 @@
 package com.mokamrp.privates.mapper.pangu.pojo;
 
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
@@ -28,6 +29,10 @@ public class PromoteCodeVo extends Model<PromoteCodeVo> {
      */
     @TableId(value = "id", type = IdType.AUTO)
     private Integer id;
+
+    @TableField(exist = false)
+    private Integer promoteType;
+
     private String deptId;
 
     private String name;

+ 0 - 2
src/main/java/com/mokamrp/privates/service/pangu/CustserviceService.java

@@ -22,8 +22,6 @@ public interface CustserviceService extends IService<Custservice> {
     public Object getlist(CustserviceListHandle custserviceListHandle);
     //.盘古所有客服库列表
     public List<CustserviceVo> getAlllist();
-    //.按阈值大小获取客服码
-    public Map<String,Object> getRandCustservice(String promotePoolKey);
     //.批量上下架
     public Boolean setGrounding(SetGroundingHandle setGroundingHandle);
 }

+ 8 - 1
src/main/java/com/mokamrp/privates/service/pangu/PromoteQrcodePoolService.java

@@ -22,8 +22,15 @@ public interface PromoteQrcodePoolService extends IService<PromoteQrcodePool> {
     //.活码内个微海报码列表
     public Object getlist(GetPromoteQrcodePoolHandle pageHandle);
 
+    public Object getDefaultList(GetPromoteQrcodePoolHandle pageHandle);
+
+    public Object getMobilePoolList(GetPromoteQrcodePoolHandle pageHandle);
+
     //.活码所有微海报码列表
-    public List<PromoteQrcodePoolVo> getAlllist();
+    public List<PromoteQrcodePoolVo> getAllDefaultList();
+
+    //.活码所有游戏导粉个微海报列表
+    public List<PromoteQrcodePoolVo> getAllMobilePoolList();
 
     //.通过ID获取信息
     public PromoteQrcodePoolVo getInfoById(String id);

+ 0 - 43
src/main/java/com/mokamrp/privates/service/pangu/impl/CustserviceServiceImpl.java

@@ -73,49 +73,6 @@ public class CustserviceServiceImpl extends ServiceImpl<CustserviceMapper, Custs
     }
 
     /**
-     * (API)按阈值大小获取客服码
-     *
-     * @param promoteId
-     * @return
-     */
-    public Map<String, Object> getRandCustservice(String promoteId) {
-        Map<String, Object> res = new HashMap<>();
-        res.put("err", null);
-        //.获取活码小时访问量上限
-        Object promoteInfoObj = stringRedisTemplate.opsForHash().get(RedisKey.PanPromoteCodeInfo, promoteId);
-        if (promoteInfoObj == null) {
-            res.put("err", "promote info null");
-            return res;
-        }
-        String promoteInfoStr = promoteInfoObj.toString();
-        PromoteCode promoteCode = JSON.parseObject(promoteInfoStr, PromoteCode.class);
-        Set<String> ids = stringRedisTemplate.opsForZSet().reverseRangeByScore(RedisKey.PanCustServiceIdView + promoteId, -1, promoteCode.getHourUvMax(), 0, 1);
-        if (ids == null || ids.size() == 0) {
-            res.put("err", "ids null");
-            return res;
-        }
-        //.校验当前客服ID全天访问量是否达到上限
-        String custserviceId = ids.toArray()[0].toString();
-        Double dayView = stringRedisTemplate.opsForZSet().score(RedisKey.PanCustServiceIdDayView + promoteId, custserviceId);
-        if (dayView == null) {
-            dayView = 0.00;
-        }
-        if (dayView > promoteCode.getDayUvMax()) {
-            res.put("err", "custservice day view max");
-            return res;
-        }
-        //.获取个微客服相信信息
-        Object jsonStr = stringRedisTemplate.opsForHash().get(RedisKey.PanCustServiceInfo, custserviceId);
-        Custservice custservice = JSON.parseObject(jsonStr.toString(), Custservice.class);
-        //.记录打点数
-        stringRedisTemplate.opsForZSet().incrementScore(RedisKey.PanCustServiceIdView + promoteId, custserviceId, 1);
-        //.记录全天打点数
-        stringRedisTemplate.opsForZSet().incrementScore(RedisKey.PanCustServiceIdDayView + promoteId, custserviceId, 1);
-        res.put("res", custservice);
-        return res;
-    }
-
-    /**
      * 批量上下架 并且线上REDIS更新
      * @param setGroundingHandle
      * @return

+ 30 - 2
src/main/java/com/mokamrp/privates/service/pangu/impl/PromoteQrcodePoolServiceImpl.java

@@ -63,12 +63,40 @@ public class PromoteQrcodePoolServiceImpl extends ServiceImpl<PromoteQrcodePoolM
         return res;
     }
 
-    public List<PromoteQrcodePoolVo> getAlllist(){
+    public Object getDefaultList(GetPromoteQrcodePoolHandle pageHandle){
+        Page<PromoteQrcodePoolVo> page = new Page<PromoteQrcodePoolVo>(pageHandle.getPage(),pageHandle.getPagesize());
+        List<PromoteQrcodePoolVo> list = promoteQrcodePoolMapper.getDefaultList(page,pageHandle);
+        Map<String,Object> res = new HashMap<>();
+        res.put("list",list);
+        res.put("total",page.getTotal());
+        return res;
+    }
+
+    public Object getMobilePoolList(GetPromoteQrcodePoolHandle pageHandle){
+        Page<PromoteQrcodePoolVo> page = new Page<PromoteQrcodePoolVo>(pageHandle.getPage(),pageHandle.getPagesize());
+        List<PromoteQrcodePoolVo> list = promoteQrcodePoolMapper.getMobilePoolList(page,pageHandle);
+        Map<String,Object> res = new HashMap<>();
+        res.put("list",list);
+        res.put("total",page.getTotal());
+        return res;
+    }
+
+    public List<PromoteQrcodePoolVo> getAllDefaultList(){
         GetPromoteQrcodePoolHandle pageHandle = new GetPromoteQrcodePoolHandle();
         pageHandle.setPage(1);
         pageHandle.setPagesize(99999);
         Page<PromoteQrcodePoolVo> page = new Page<PromoteQrcodePoolVo>(pageHandle.getPage(),pageHandle.getPagesize());
-        List<PromoteQrcodePoolVo> list = promoteQrcodePoolMapper.getlist(page,pageHandle);
+        List<PromoteQrcodePoolVo> list = promoteQrcodePoolMapper.getDefaultList(page,pageHandle);
+        return list;
+    }
+
+
+    public List<PromoteQrcodePoolVo> getAllMobilePoolList(){
+        GetPromoteQrcodePoolHandle pageHandle = new GetPromoteQrcodePoolHandle();
+        pageHandle.setPage(1);
+        pageHandle.setPagesize(99999);
+        Page<PromoteQrcodePoolVo> page = new Page<PromoteQrcodePoolVo>(pageHandle.getPage(),pageHandle.getPagesize());
+        List<PromoteQrcodePoolVo> list = promoteQrcodePoolMapper.getMobilePoolList(page,pageHandle);
         return list;
     }