dsx пре 2 година
родитељ
комит
4435eb8de9

+ 27 - 2
src/main/java/com/fdkankan/openApi/aop/ValidateApiAOP.java

@@ -15,6 +15,7 @@ import com.fdkankan.web.response.ResultData;
 import lombok.extern.slf4j.Slf4j;
 import org.aspectj.lang.JoinPoint;
 import org.aspectj.lang.annotation.AfterReturning;
+import org.aspectj.lang.annotation.AfterThrowing;
 import org.aspectj.lang.annotation.Aspect;
 import org.aspectj.lang.annotation.Before;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -42,7 +43,7 @@ public class ValidateApiAOP {
     private LocalOverCache localOverCache;
 
     @Before("@annotation(validateApi)")
-    public void Before(JoinPoint joinPoint, ValidateApi validateApi) {
+    public void doBefore(JoinPoint joinPoint, ValidateApi validateApi) {
         String method = validateApi.method();
         boolean counting = validateApi.counting();
 
@@ -77,7 +78,7 @@ public class ValidateApiAOP {
                 //预减次数
                 long decrStock = redisUtil.decr(String.format(RedisKey.API_METHOD_COUNT, authorization), 1);
                 log.info("前置减次数后,{}", decrStock);
-                if (decrStock < 1) {
+                if (decrStock < 0) {
                     localOverCache.setTimedCache(authorization, true);
                     redisUtil.incr(String.format(RedisKey.API_METHOD_COUNT, authorization), 1);
                     throw new ApiBusinessException(HttpStatus.COUNT_OVER, "");
@@ -116,4 +117,28 @@ public class ValidateApiAOP {
             }
         }
     }
+
+    /**
+     * 处理请求后执行
+     *
+     * @param joinPoint
+     * @param validateApi
+     * @param jsonResult
+     * @return
+     */
+    @AfterThrowing(throwing = "ex",pointcut = "@annotation(validateApi)")
+    public void doAfterThrowing(Throwable ex, ValidateApi validateApi) throws NoSuchMethodException {
+        String method = validateApi.method();
+        boolean counting = validateApi.counting();
+        log.info("后置拦截截鉴权计数,{}", method);
+        //获取请求对象
+        ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+        HttpServletRequest request = servletRequestAttributes.getRequest();
+        String authorization = request.getHeader("Authorization");
+        if(counting){
+            redisUtil.incr(String.format(RedisKey.API_METHOD_COUNT, authorization), 1);
+        }
+    }
+
+
 }

+ 21 - 0
src/main/java/com/fdkankan/openApi/controller/www/SceneCooperationController.java

@@ -0,0 +1,21 @@
+package com.fdkankan.openApi.controller.www;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2023-05-19
+ */
+@RestController
+@RequestMapping("/openApi/sceneCooperation")
+public class SceneCooperationController {
+
+}
+

+ 54 - 0
src/main/java/com/fdkankan/openApi/entity/www/SceneCooperation.java

@@ -0,0 +1,54 @@
+package com.fdkankan.openApi.entity.www;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2023-05-19
+ */
+@Getter
+@Setter
+@TableName("t_scene_cooperation")
+public class SceneCooperation implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 场景码
+     */
+    @TableField("scene_num")
+    private String sceneNum;
+
+    /**
+     * 协作的用户id
+     */
+    @TableField("user_id")
+    private Long userId;
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @TableField("update_time")
+    private Date updateTime;
+
+    @TableField("rec_status")
+    @TableLogic(value = "A", delval = "I")
+    private String recStatus;
+
+
+}

+ 8 - 8
src/main/java/com/fdkankan/openApi/generate/AutoGenerate.java

@@ -21,7 +21,7 @@ public class AutoGenerate {
         String path =System.getProperty("user.dir");
 
         generate(path,"openApi", getTables(new String[]{
-                "t_account",
+                "t_scene_cooperation",
         }));
 
 //        generate(path,"goods", getTables(new String[]{
@@ -49,7 +49,7 @@ public class AutoGenerate {
 
 
     public static void  generate(String path,String moduleName,  List<String> tables){
-        FastAutoGenerator.create("jdbc:mysql://120.24.144.164:3306/4dkankan_open_api",
+        FastAutoGenerator.create("jdbc:mysql://120.24.144.164:3306/4dkankan_v4",
                 "root","4Dage@4Dage#@168")
                 .globalConfig(builder -> {
                     builder.author("")               //作者
@@ -63,13 +63,13 @@ public class AutoGenerate {
                 .packageConfig(builder -> {
                     builder.parent("com.fdkankan")
                             .moduleName(moduleName)
-                            .entity("entity.system")
-                            .service("service.system")
-                            .serviceImpl("service.system.impl")
-                            .controller("controller.system")
-                            .mapper("mapper.system")
+                            .entity("entity.www")
+                            .service("service.www")
+                            .serviceImpl("service.www.impl")
+                            .controller("controller.www")
+                            .mapper("mapper.www")
                             .xml("test.mapper")
-                            .pathInfo(Collections.singletonMap(OutputFile.mapperXml,path+"\\src\\main\\resources\\mapper\\system"));
+                            .pathInfo(Collections.singletonMap(OutputFile.mapperXml,path+"\\src\\main\\resources\\mapper\\www"));
                 })
                 .strategyConfig(builder -> {
                     builder.addInclude(tables)

+ 18 - 0
src/main/java/com/fdkankan/openApi/mapper/www/ISceneCooperationMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.openApi.mapper.www;
+
+import com.fdkankan.openApi.entity.www.SceneCooperation;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-05-19
+ */
+@Mapper
+public interface ISceneCooperationMapper extends BaseMapper<SceneCooperation> {
+
+}

+ 4 - 0
src/main/java/com/fdkankan/openApi/mapper/www/IScenePlusMapper.java

@@ -1,7 +1,9 @@
 package com.fdkankan.openApi.mapper.www;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.openApi.entity.www.ScenePlus;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fdkankan.openApi.vo.www.PageScenesParamVo;
 import org.apache.ibatis.annotations.Mapper;
 
 /**
@@ -15,4 +17,6 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface IScenePlusMapper extends BaseMapper<ScenePlus> {
 
+    Page<ScenePlus> pageList(Page<ScenePlus> page, PageScenesParamVo param);
+
 }

+ 1 - 4
src/main/java/com/fdkankan/openApi/mq/listener/CallApiListener.java

@@ -54,12 +54,9 @@ public class CallApiListener {
             log.info("callApi开始,id:{},deliveryTag:{},消息体:{}", messageId, deliveryTag, msg);
             CallApiDTO param = JSONObject.parseObject(msg, CallApiDTO.class);
             if (StrUtil.isNotEmpty(param.getAppKey())){
-                int i = userAuthService.updateCallCounts(param.getAppKey());
-                log.info("修改数据量为{}", i);
+                userAuthService.decrCallCount(param.getAppKey());
             }
             channel.basicAck(deliveryTag, false);
-
-
         } catch (DeadlockLoserDataAccessException e) {
             log.info("修改死锁重新入队");
             channel.basicReject(deliveryTag, true);

+ 2 - 0
src/main/java/com/fdkankan/openApi/service/system/IUserAuthInfoService.java

@@ -25,6 +25,8 @@ public interface IUserAuthInfoService extends IService<UserAuthInfo> {
 
     boolean updateCallCounts(String appKey, Integer count);
 
+    boolean decrCallCount(String appKey);
+
     boolean updateCallCountsByType(String appKey, Integer count, Integer type);
 
     UserAuthInfo getEffectUserAuthInfo(String appKey);

+ 6 - 0
src/main/java/com/fdkankan/openApi/service/system/impl/UserAuthInfoInfoServiceImpl.java

@@ -3,6 +3,7 @@ package com.fdkankan.openApi.service.system.impl;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fdkankan.common.constant.CommonStatus;
 import com.fdkankan.common.constant.ErrorCode;
@@ -151,4 +152,9 @@ public class UserAuthInfoInfoServiceImpl extends ServiceImpl<IUserAuthInfoMapper
         }
         redisUtil.incr(String.format(RedisKey.API_METHOD_COUNT, appKey), count);
     }
+
+    @Override
+    public boolean decrCallCount(String appKey) {
+        return this.update(new LambdaUpdateWrapper<UserAuthInfo>().setSql("call_count = call_count + " + 1).eq(UserAuthInfo::getAppKey, appKey));
+    }
 }

+ 20 - 0
src/main/java/com/fdkankan/openApi/service/www/ISceneCooperationService.java

@@ -0,0 +1,20 @@
+package com.fdkankan.openApi.service.www;
+
+import com.fdkankan.openApi.entity.www.SceneCooperation;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-05-19
+ */
+public interface ISceneCooperationService extends IService<SceneCooperation> {
+
+    List<String> getNumByUserIds(List<Long> userIds);
+
+}

+ 36 - 0
src/main/java/com/fdkankan/openApi/service/www/impl/SceneCooperationServiceImpl.java

@@ -0,0 +1,36 @@
+package com.fdkankan.openApi.service.www.impl;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fdkankan.openApi.entity.www.SceneCooperation;
+import com.fdkankan.openApi.mapper.www.ISceneCooperationMapper;
+import com.fdkankan.openApi.service.www.ISceneCooperationService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-05-19
+ */
+@DS("www")
+@Service
+public class SceneCooperationServiceImpl extends ServiceImpl<ISceneCooperationMapper, SceneCooperation> implements ISceneCooperationService {
+
+    @Override
+    public List<String> getNumByUserIds(List<Long> userIds) {
+        LambdaQueryWrapper<SceneCooperation> wrapper = new LambdaQueryWrapper<>();
+        wrapper.in(SceneCooperation::getUserId,userIds);
+        Set<String> collect = this.list(wrapper).parallelStream().map(SceneCooperation::getSceneNum).collect(Collectors.toSet());
+        return new ArrayList<>(collect);
+    }
+
+}

+ 10 - 12
src/main/java/com/fdkankan/openApi/service/www/impl/ScenePlusServiceImpl.java

@@ -78,21 +78,16 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
     private ISceneEditControlsService sceneEditControlsService;
     @Autowired
     private RedisUtil redisUtil;
-
     @Autowired
     private ICameraService cameraService;
-
     @Autowired
     private ICameraDetailService cameraDetailService;
-
     @Autowired
     private FYunFileConfig fYunFileConfig;
-
-    @Autowired
-    private FilterService filterService;
-
     @Autowired
     private SceneService sceneService;
+    @Autowired
+    private ISceneCooperationService sceneCooperationService;
 
     @Override
     public ScenePlus getByNumAndUserId(long userId, String num) {
@@ -314,20 +309,23 @@ public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlu
 
     @Override
     public PageInfo<SceneVO> getScenesByUserId(Long userId, PageScenesParamVo param) {
-        LambdaQueryWrapper<ScenePlus> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(ScenePlus::getUserId,userId);
+        param.setUserId(userId);
+        //查询协作场景列表
+        List<String> cooperationNumList = sceneCooperationService.getNumByUserIds(Arrays.asList(userId));
+        param.setCooperationNumList(cooperationNumList);
 
         if (!ObjectUtils.isEmpty(param.getCameraType())) {
             switch (param.getCameraType()){
                 case "mega":
-                    queryWrapper.eq(ScenePlus::getSceneSource, 4);
+                    param.setSceneSourceIn(Arrays.asList(SceneSource.JG.code(), SceneSource.SG.code()));
                     break;
                 case "kankan":
-                    queryWrapper.ne(ScenePlus::getSceneSource, 4);
+                    param.setSceneSourceNotIn(Arrays.asList(SceneSource.JG.code(), SceneSource.SG.code()));
                     break;
             }
         }
-        Page<ScenePlus> scenePage = this.page(new Page<>(param.getPageNum(), param.getPageSize()), queryWrapper);
+
+        Page<ScenePlus> scenePage = this.baseMapper.pageList(new Page<>(param.getPageNum(), param.getPageSize()), param);
         if(CollUtil.isEmpty(scenePage.getRecords())){
             return PageInfo.PageInfo(scenePage);
         }

+ 10 - 0
src/main/java/com/fdkankan/openApi/vo/www/PageScenesParamVo.java

@@ -7,6 +7,7 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 
 import java.io.Serializable;
+import java.util.List;
 
 /**
  * <p>
@@ -39,4 +40,13 @@ public class PageScenesParamVo extends RequestBase implements Serializable {
 
     private String snCode;
 
+    private Long userId;
+
+    private List<String> cooperationNumList;
+
+    private List<Integer> sceneSourceIn;
+
+    private List<Integer> sceneSourceNotIn;
+
+
 }

+ 5 - 0
src/main/resources/mapper/www/SceneCooperationMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fdkankan.openApi.mapper.www.ISceneCooperationMapper">
+
+</mapper>

+ 36 - 0
src/main/resources/mapper/www/ScenePlusMapper.xml

@@ -2,4 +2,40 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fdkankan.openApi.mapper.www.IScenePlusMapper">
 
+    <select id="pageList" parameterType="com.fdkankan.openApi.vo.www.PageScenesParamVo" resultType="com.fdkankan.openApi.entity.www.ScenePlus">
+        SELECT *
+        FROM t_scene_plus p
+        WHERE  p.rec_status = 'A'
+        <if test= 'param.userId != null or param.cooperationNumList != null or param.cameraId != null'>
+            and  ( 1!=1
+        </if>
+        <if test="param.userId != null">
+            or  p.user_id =#{param.userId}
+        </if>
+        <if test="param.cooperationNumList !=null and param.cooperationNumList.size >0">
+            or p.num in
+            <foreach collection="param.cooperationNumList" item="sceneNum" open="("  separator="," close=")">
+                #{sceneNum}
+            </foreach>
+        </if>
+        <if test= 'param.userId != null or param.cooperationNumList != null'>
+            )
+        </if>
+        <if test="param.sceneSourceIn !=null and param.sceneSourceIn.size > 0">
+            and  p.scene_source in
+            <foreach collection="param.sceneSourceIn" item="sceneSource" open="("  separator="," close=")">
+                #{sceneSource}
+            </foreach>
+        </if>
+        <if test="param.sceneSourceNotIn !=null and param.sceneSourceNotIn.size > 0">
+            and  p.scene_source not in
+            <foreach collection="param.sceneSourceNotIn" item="sceneSource" open="("  separator="," close=")">
+                #{sceneSource}
+            </foreach>
+        </if>
+        <if test="param.orderBy !=null and param.orderBy !='' and param.sortBy != null and param.sortBy != ''">
+            ORDER BY ${param.orderBy} ${param.sortBy}
+        </if>
+    </select>
+
 </mapper>