Browse Source

feat:1、AI对话接口迁移,获取关联的API KEY
bugfix:1、APIKEY设备管分配无法删除已关联设备

lihao16 5 tháng trước cách đây
mục cha
commit
c945fd9b14

+ 1 - 1
smsb-admin/src/main/resources/application-dev.yml

@@ -57,7 +57,7 @@ spring:
           # url: jdbc:mysql://127.0.0.1:20010/smsb-plus?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
           url: jdbc:mysql://117.73.3.135:3306/smsb-plus?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
           username: root
-          password: password
+          password: Hycpb@123
           # password: 7TuefPhoTnBxUWU2
         # 从库数据源
         slave:

+ 2 - 0
smsb-modules/smsb-device/src/main/java/com/inspur/device/domain/vo/SmsbDeviceChatKeyVo.java

@@ -80,4 +80,6 @@ public class SmsbDeviceChatKeyVo implements Serializable {
     private String updateUser;
 
 
+    private SmsbDeviceXfApiVo xfApiKey;
+
 }

+ 7 - 0
smsb-modules/smsb-device/src/main/java/com/inspur/device/mapper/SmsbDeviceChatKeyMapper.java

@@ -2,6 +2,7 @@ package com.inspur.device.mapper;
 
 import com.inspur.device.domain.SmsbDeviceChatKey;
 import com.inspur.device.domain.vo.SmsbDeviceChatKeyVo;
+import org.apache.ibatis.annotations.Param;
 import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
 
 /**
@@ -12,4 +13,10 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
  */
 public interface SmsbDeviceChatKeyMapper extends BaseMapperPlus<SmsbDeviceChatKey, SmsbDeviceChatKeyVo> {
 
+    /**
+     * 前端设备获取AI对话API key
+     * @param deviceId
+     * @return
+     */
+    SmsbDeviceChatKeyVo selectVoByDeviceId(@Param("deviceId") Long deviceId);
 }

+ 2 - 0
smsb-modules/smsb-device/src/main/java/com/inspur/device/mapper/SmsbDeviceChatKeyRelMapper.java

@@ -16,4 +16,6 @@ import java.util.List;
 public interface SmsbDeviceChatKeyRelMapper extends BaseMapperPlus<SmsbDeviceChatKeyRel, SmsbDeviceChatKeyRelVo> {
 
     void deleteByDeviceIds(@Param("deviceIds") List<Long> deviceIds);
+
+    void deleteByKeyId(@Param("keyId") Long keyId);
 }

+ 8 - 0
smsb-modules/smsb-device/src/main/java/com/inspur/device/service/ISmsbDeviceChatKeyService.java

@@ -2,6 +2,7 @@ package com.inspur.device.service;
 
 import com.inspur.device.domain.bo.SmsbDeviceChatKeyBo;
 import com.inspur.device.domain.vo.SmsbDeviceChatKeyVo;
+import org.dromara.common.core.domain.R;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 
@@ -79,4 +80,11 @@ public interface ISmsbDeviceChatKeyService {
      * @return
      */
     List<Long> getRelDeviceIds(Long id);
+
+    /**
+     * 前端设备AI对话 API KEY
+     * @param identifier
+     * @return
+     */
+    R<SmsbDeviceChatKeyVo> getChatConfig(String identifier);
 }

+ 31 - 2
smsb-modules/smsb-device/src/main/java/com/inspur/device/service/impl/SmsbDeviceChatKeyServiceImpl.java

@@ -4,14 +4,21 @@ import cn.hutool.core.collection.CollectionUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.inspur.device.domain.SmsbDevice;
 import com.inspur.device.domain.SmsbDeviceChatKey;
 import com.inspur.device.domain.SmsbDeviceChatKeyRel;
+import com.inspur.device.domain.SmsbDeviceXfApi;
 import com.inspur.device.domain.bo.SmsbDeviceChatKeyBo;
 import com.inspur.device.domain.vo.SmsbDeviceChatKeyVo;
+import com.inspur.device.domain.vo.SmsbDeviceVo;
+import com.inspur.device.domain.vo.SmsbDeviceXfApiVo;
 import com.inspur.device.mapper.SmsbDeviceChatKeyMapper;
 import com.inspur.device.mapper.SmsbDeviceChatKeyRelMapper;
+import com.inspur.device.mapper.SmsbDeviceMapper;
+import com.inspur.device.mapper.SmsbDeviceXfApiMapper;
 import com.inspur.device.service.ISmsbDeviceChatKeyService;
 import lombok.RequiredArgsConstructor;
+import org.dromara.common.core.domain.R;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.mybatis.core.page.PageQuery;
@@ -36,8 +43,9 @@ import java.util.stream.Collectors;
 public class SmsbDeviceChatKeyServiceImpl implements ISmsbDeviceChatKeyService {
 
     private final SmsbDeviceChatKeyMapper baseMapper;
-
     private final SmsbDeviceChatKeyRelMapper smsbDeviceChatKeyRelMapper;
+    private final SmsbDeviceMapper smsbDeviceMapper;
+    private final SmsbDeviceXfApiMapper smsbDeviceXfApiMapper;
 
     /**
      * 查询chat API KEY管理
@@ -147,7 +155,9 @@ public class SmsbDeviceChatKeyServiceImpl implements ISmsbDeviceChatKeyService {
             return false;
         }
         // 删除当前设备之前的关联关系
-        smsbDeviceChatKeyRelMapper.deleteByDeviceIds(deviceIds);
+        if (null != bo.getId()) {
+            smsbDeviceChatKeyRelMapper.deleteByKeyId(bo.getId());
+        }
         // 插入新的关联关系
         List<SmsbDeviceChatKeyRel> chatKeyRelList = new ArrayList<>();
         for (Long deviceId : deviceIds) {
@@ -170,4 +180,23 @@ public class SmsbDeviceChatKeyServiceImpl implements ISmsbDeviceChatKeyService {
         deviceIds = relList.stream().map(SmsbDeviceChatKeyRel::getDeviceId).collect(Collectors.toList());
         return deviceIds;
     }
+
+
+    @Override
+    public R<SmsbDeviceChatKeyVo> getChatConfig(String identifier) {
+        // 根据identifier 获取设备ID
+        SmsbDeviceVo smsbDeviceVo = smsbDeviceMapper.selectVoOne(new LambdaQueryWrapper<SmsbDevice>()
+            .eq(SmsbDevice::getIdentifier, identifier));
+        if (null == smsbDeviceVo) {
+            return R.fail("未查询到设备信息!");
+        }
+        Long deviceId = smsbDeviceVo.getId();
+        SmsbDeviceChatKeyVo resultVo = baseMapper.selectVoByDeviceId(deviceId);
+        if (null != resultVo) {
+            SmsbDeviceXfApiVo xfApiVo = smsbDeviceXfApiMapper.selectVoOne(new LambdaQueryWrapper<SmsbDeviceXfApi>()
+                .eq(SmsbDeviceXfApi::getStatus,1));
+            resultVo.setXfApiKey(xfApiVo);
+        }
+        return R.ok(resultVo);
+    }
 }

+ 14 - 0
smsb-modules/smsb-device/src/main/resources/mapper/device/SmsbDeviceChatKeyMapper.xml

@@ -0,0 +1,14 @@
+<?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.inspur.device.mapper.SmsbDeviceChatKeyMapper">
+    <select id="selectVoByDeviceId" parameterType="Long" resultType="com.inspur.device.domain.vo.SmsbDeviceChatKeyVo">
+        SELECT
+            *
+        FROM
+            smsb_device_chat_key
+        WHERE
+            id = (SELECT key_id FROM smsb_device_chat_key_rel WHERE device_id = #{deviceId})
+    </select>
+</mapper>

+ 4 - 0
smsb-modules/smsb-device/src/main/resources/mapper/device/SmsbDeviceChatKeyRelMapper.xml

@@ -9,4 +9,8 @@
             #{deviceId}
         </foreach>
     </delete>
+
+    <delete id="deleteByKeyId" parameterType="Long">
+        delete from smsb_device_chat_key_rel where key_id = #{keyId}
+    </delete>
 </mapper>

+ 13 - 3
smsb-modules/smsb-source/src/main/java/com/inspur/source/controller/SmsbFrontController.java

@@ -33,11 +33,8 @@ import java.util.List;
 public class SmsbFrontController {
 
     private final ISmsbItemPushService smsbItemPushService;
-
     private final SmsbDeviceTaskMapper smsbDeviceTaskMapper;
-
     private final ISmsbItemPushDeviceService smsbItemPushDeviceService;
-
     @Autowired
     private ISmsbOtaRecordService iSmsbOtaRecordService;
     @Autowired
@@ -48,6 +45,8 @@ public class SmsbFrontController {
     private ISmsbDeviceAuthService smsbDeviceAuthService;
     @Autowired
     private ISmsbDeviceTaskService smsbDeviceTaskService;
+    @Autowired
+    private ISmsbDeviceChatKeyService smsbDeviceChatKeyService;
 
     /**
      * 根据设备identifier 获取该设备最新内容下发记录
@@ -184,4 +183,15 @@ public class SmsbFrontController {
         return smsbDeviceService.uploadMultiCard(frontMultiCardUploadVo);
     }
 
+    /**
+     * 前端设备获取AI对话API key
+     *
+     * @param identifier
+     */
+    @SaIgnore
+    @PostMapping("/chat/config/{identifier}")
+    public R<SmsbDeviceChatKeyVo> getChatConfig(@PathVariable("identifier")String identifier) {
+        return smsbDeviceChatKeyService.getChatConfig(identifier);
+    }
+
 }