|
|
@@ -0,0 +1,340 @@
|
|
|
+package com.fs.aiCallSop.service.impl;
|
|
|
+
|
|
|
+
|
|
|
+import cn.hutool.http.HttpRequest;
|
|
|
+import cn.hutool.http.HttpUtil;
|
|
|
+import cn.hutool.json.JSONUtil;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.fs.aiCallSop.commonConstant.AiSopCallRemoteUrlConstant;
|
|
|
+import com.fs.aiCallSop.domain.AiSopCallKnowledgeBase;
|
|
|
+import com.fs.aiCallSop.domain.AiSopCallUser;
|
|
|
+import com.fs.aiCallSop.mapper.AiSopCallKnowledgeBaseMapper;
|
|
|
+import com.fs.aiCallSop.mapper.AiSopCallUserMapper;
|
|
|
+import com.fs.aiCallSop.param.*;
|
|
|
+import com.fs.aiCallSop.service.IAiSopCallUserService;
|
|
|
+import com.fs.common.core.domain.R;
|
|
|
+import com.fs.company.mapper.CompanyUserMapper;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 员工角色Service业务层处理
|
|
|
+ *
|
|
|
+ * @author fs
|
|
|
+ * @date 2025-12-23
|
|
|
+ */
|
|
|
+@Slf4j
|
|
|
+@Service
|
|
|
+public class AiSopCallUserServiceImpl extends ServiceImpl<AiSopCallUserMapper, AiSopCallUser> implements IAiSopCallUserService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private CompanyUserMapper companyUserMapper;
|
|
|
+ @Autowired
|
|
|
+ private AiSopCallKnowledgeBaseMapper aiSopCallKnowledgeBaseMapper;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询员工角色
|
|
|
+ *
|
|
|
+ * @param id 员工角色主键
|
|
|
+ * @return 员工角色
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public AiSopCallUser selectAiSopCallUserById(Long id)
|
|
|
+ {
|
|
|
+ return baseMapper.selectAiSopCallUserById(id);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public R selectAiSopCallUserByStaffNumber(String staffNumber) {
|
|
|
+ String url = AiSopCallRemoteUrlConstant.GET_STAFF_NUMBER_URL + "/" + staffNumber;
|
|
|
+
|
|
|
+ try {
|
|
|
+
|
|
|
+ // 发送 DELETE 请求
|
|
|
+ String result = HttpRequest.delete(url)
|
|
|
+ .timeout(5000)
|
|
|
+ .header("Content-Type", "application/json")
|
|
|
+ .header("Accept", "application/json")
|
|
|
+ .execute()
|
|
|
+ .body();
|
|
|
+
|
|
|
+ // 解析响应
|
|
|
+ ModelListResult bean = JSONUtil.toBean(result, ModelListResult.class);
|
|
|
+
|
|
|
+ if (bean.getCode() == 0) {
|
|
|
+
|
|
|
+ AiSopCallUser userResult = JSONUtil.toBean(bean.getData(),AiSopCallUser.class);
|
|
|
+
|
|
|
+ return R.ok().put("data",userResult);
|
|
|
+ } else {
|
|
|
+ return R.error("查询信息失败:"+bean.getCode()+":"+bean.getMsg());
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+
|
|
|
+ return R.error("查询信息失败" + e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询员工角色列表
|
|
|
+ *
|
|
|
+ * @param aiSopCallUser 员工角色
|
|
|
+ * @return 员工角色
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public List<AiSopCallUser> selectAiSopCallUserList(AiSopCallUser aiSopCallUser)
|
|
|
+ {
|
|
|
+ return baseMapper.selectAiSopCallUserList(aiSopCallUser);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 新增员工角色
|
|
|
+ *
|
|
|
+ * @param aiSopCallUser 员工角色
|
|
|
+ * @return 结果
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public R insertAiSopCallUser(AiSopCallUser aiSopCallUser)
|
|
|
+ {
|
|
|
+
|
|
|
+ String url = AiSopCallRemoteUrlConstant.GET_STAFF_CREATE_URL;
|
|
|
+
|
|
|
+ try {
|
|
|
+
|
|
|
+ aiSopCallUser.setStaff_name(aiSopCallUser.getStaffName());
|
|
|
+ aiSopCallUser.setStaff_number(aiSopCallUser.getStaffNumber());
|
|
|
+ aiSopCallUser.setIs_clone_voice(aiSopCallUser.getIsCloneVoice());
|
|
|
+ aiSopCallUser.setIs_force_clone(aiSopCallUser.getIsForceClone());
|
|
|
+ aiSopCallUser.setVoice_id(aiSopCallUser.getVoiceId());
|
|
|
+ aiSopCallUser.setVoice_path(aiSopCallUser.getVoicePath());
|
|
|
+ aiSopCallUser.setVoice_text(aiSopCallUser.getVoiceText());
|
|
|
+
|
|
|
+ AiSopCallUser.staff_models models=new AiSopCallUser.staff_models();
|
|
|
+ models.setModel_id(aiSopCallUser.getStaffModelsId());
|
|
|
+ models.setModel_function(aiSopCallUser.getModel_function());
|
|
|
+ models.setModel_factory(aiSopCallUser.getModel_factory());
|
|
|
+ aiSopCallUser.getStaff_models().add(models);
|
|
|
+ if(aiSopCallUser.getKnowledgeBaseId() != null){
|
|
|
+ AiSopCallKnowledgeBase callKnowledgeBase = aiSopCallKnowledgeBaseMapper.selectAiSopCallKnowledgeBaseById(aiSopCallUser.getKnowledgeBaseId());
|
|
|
+ if(callKnowledgeBase != null){
|
|
|
+ aiSopCallUser.setKnowledge_resource_id(callKnowledgeBase.getRemoteKnowledgeId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 使用 Hutool 发送 POST 请求
|
|
|
+ String jsonBody = JSONUtil.toJsonStr(aiSopCallUser);
|
|
|
+
|
|
|
+ String result = HttpUtil.post(url, jsonBody, 5000);
|
|
|
+
|
|
|
+ // 解析响应
|
|
|
+ ModelListResult bean = JSONUtil.toBean(result, ModelListResult.class);
|
|
|
+
|
|
|
+ if (bean.getCode()==0){
|
|
|
+ aiSopCallUser.setId(Long.valueOf(bean.getData()));
|
|
|
+ int i = baseMapper.insertAiSopCallUser(aiSopCallUser);
|
|
|
+ companyUserMapper.updateCompanyUserByAiSopCall(aiSopCallUser.getCompanyUserId(),aiSopCallUser.getId());
|
|
|
+ return R.ok();
|
|
|
+ }else {
|
|
|
+ return R.error("新增失败:"+bean.getCode()+":"+bean.getMsg());
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("调用模型列表接口失败", e);
|
|
|
+ ModelListResponse response = new ModelListResponse();
|
|
|
+ response.setCode(500);
|
|
|
+ response.setMsg("列表失败:" + e.getMessage());
|
|
|
+
|
|
|
+ return R.error("新增失败"+e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 修改员工角色
|
|
|
+ *
|
|
|
+ * @param aiSopCallUser 员工角色
|
|
|
+ * @return 结果
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public R updateAiSopCallUser(AiSopCallUser aiSopCallUser)
|
|
|
+ {
|
|
|
+ String url = AiSopCallRemoteUrlConstant.GET_STAFF_URL;
|
|
|
+ try {
|
|
|
+
|
|
|
+ aiSopCallUser.setStaff_name(aiSopCallUser.getStaffName());
|
|
|
+ aiSopCallUser.setStaff_number(aiSopCallUser.getStaffNumber());
|
|
|
+ aiSopCallUser.setIs_clone_voice(aiSopCallUser.getIsCloneVoice());
|
|
|
+ aiSopCallUser.setIs_force_clone(aiSopCallUser.getIsForceClone());
|
|
|
+ aiSopCallUser.setVoice_id(aiSopCallUser.getVoiceId());
|
|
|
+ aiSopCallUser.setVoice_path(aiSopCallUser.getVoicePath());
|
|
|
+ aiSopCallUser.setVoice_text(aiSopCallUser.getVoiceText());
|
|
|
+
|
|
|
+ AiSopCallUser.staff_models models=new AiSopCallUser.staff_models();
|
|
|
+ models.setModel_id(aiSopCallUser.getStaffModelsId());
|
|
|
+ models.setModel_function(aiSopCallUser.getModel_function());
|
|
|
+ models.setStaff_id(aiSopCallUser.getId());
|
|
|
+ aiSopCallUser.getStaff_models().add(models);
|
|
|
+ if(aiSopCallUser.getKnowledgeBaseId() != null){
|
|
|
+ AiSopCallKnowledgeBase callKnowledgeBase = aiSopCallKnowledgeBaseMapper.selectAiSopCallKnowledgeBaseById(aiSopCallUser.getKnowledgeBaseId());
|
|
|
+ if(callKnowledgeBase != null){
|
|
|
+ aiSopCallUser.setKnowledge_resource_id(callKnowledgeBase.getRemoteKnowledgeId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 使用 Hutool 发送 POST 请求
|
|
|
+ String jsonBody = JSONUtil.toJsonStr(aiSopCallUser);
|
|
|
+
|
|
|
+ // 方式1:使用 HttpRequest
|
|
|
+ String result = HttpRequest.put(url)
|
|
|
+ .timeout(5000)
|
|
|
+ .body(jsonBody)
|
|
|
+ .header("Content-Type", "application/json; charset=UTF-8")
|
|
|
+ .execute()
|
|
|
+ .body();
|
|
|
+
|
|
|
+ // 解析响应
|
|
|
+ ModelListResponse bean = JSONUtil.toBean(result, ModelListResponse.class);
|
|
|
+
|
|
|
+ if (bean.getCode()==0){
|
|
|
+ int i = baseMapper.updateAiSopCallUser(aiSopCallUser);
|
|
|
+ return R.ok();
|
|
|
+ }else {
|
|
|
+ return R.error("修改失败:"+bean.getCode()+":"+bean.getMsg());
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("调用模型列表接口失败", e);
|
|
|
+ ModelListResponse response = new ModelListResponse();
|
|
|
+ response.setCode(500);
|
|
|
+ response.setMsg("列表失败:" + e.getMessage());
|
|
|
+
|
|
|
+ return R.error("新增失败"+e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 批量删除员工角色
|
|
|
+ *
|
|
|
+ * @param ids 需要删除的员工角色主键
|
|
|
+ * @return 结果
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public int deleteAiSopCallUserByIds(Long[] ids)
|
|
|
+ {
|
|
|
+ return baseMapper.deleteAiSopCallUserByIds(ids);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除员工角色信息
|
|
|
+ *
|
|
|
+ * @param id 员工角色主键
|
|
|
+ * @return 结果
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public R deleteAiSopCallUserById(Long id)
|
|
|
+ {
|
|
|
+ String url = AiSopCallRemoteUrlConstant.GET_STAFF_URL + "/" + id;
|
|
|
+
|
|
|
+ try {
|
|
|
+
|
|
|
+ // 发送 DELETE 请求
|
|
|
+ String result = HttpRequest.delete(url)
|
|
|
+ .timeout(5000)
|
|
|
+ .header("Content-Type", "application/json")
|
|
|
+ .header("Accept", "application/json")
|
|
|
+ .execute()
|
|
|
+ .body();
|
|
|
+
|
|
|
+ // 解析响应
|
|
|
+ ModelListResponse bean = JSONUtil.toBean(result, ModelListResponse.class);
|
|
|
+
|
|
|
+ if (bean.getCode() == 0) {
|
|
|
+ int i = baseMapper.deleteAiSopCallUserById(id);
|
|
|
+ companyUserMapper.deleteCompanyUserByAiSopCallId(id);
|
|
|
+ return R.ok("删除成功");
|
|
|
+ } else {
|
|
|
+ return R.error("删除失败:"+bean.getCode()+":"+bean.getMsg());
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("删除员工失败,ID: {}", id, e);
|
|
|
+ return R.error("删除失败: " + e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ModelListResponse getModeList(ModelListRequest request) {
|
|
|
+ String url = AiSopCallRemoteUrlConstant.GET_MODEL_LIST_URL;
|
|
|
+
|
|
|
+ try {
|
|
|
+ // 使用 Hutool 发送 POST 请求
|
|
|
+ String jsonBody = JSONUtil.toJsonStr(request);
|
|
|
+
|
|
|
+ String result = HttpUtil.post(url, jsonBody, 5000);
|
|
|
+
|
|
|
+ // 解析响应
|
|
|
+ return JSONUtil.toBean(result, ModelListResponse.class);
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("调用模型列表接口失败", e);
|
|
|
+ ModelListResponse response = new ModelListResponse();
|
|
|
+ response.setCode(500);
|
|
|
+ response.setMsg("获取模型列表失败:" + e.getMessage());
|
|
|
+ return response;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public VoicesDictRes getVoicesDict(ModelListRequest request) {
|
|
|
+ String url = AiSopCallRemoteUrlConstant.GET_VOICES_LIST_ALL_URL;
|
|
|
+
|
|
|
+ try {
|
|
|
+ // 使用 Hutool 发送 POST 请求
|
|
|
+ String jsonBody = JSONUtil.toJsonStr(request);
|
|
|
+
|
|
|
+ String result = HttpUtil.post(url, jsonBody, 5000);
|
|
|
+
|
|
|
+ // 解析响应
|
|
|
+ return JSONUtil.toBean(result, VoicesDictRes.class);
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("调用模型列表接口失败", e);
|
|
|
+ VoicesDictRes response = new VoicesDictRes();
|
|
|
+ response.setCode(500);
|
|
|
+ response.setMsg("获取模型列表失败:" + e.getMessage());
|
|
|
+ return response;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public VoicesDictResPage getVoicesDictByModelId(ModelListRequest request) {
|
|
|
+ String url = AiSopCallRemoteUrlConstant.GET_VOICES_LIST_URL;
|
|
|
+
|
|
|
+ try {
|
|
|
+ // 使用 Hutool 发送 POST 请求
|
|
|
+ String jsonBody = JSONUtil.toJsonStr(request);
|
|
|
+
|
|
|
+ String result = HttpUtil.post(url, jsonBody, 5000);
|
|
|
+
|
|
|
+ // 解析响应
|
|
|
+ return JSONUtil.toBean(result, VoicesDictResPage.class);
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("调用模型列表接口失败", e);
|
|
|
+ VoicesDictResPage response = new VoicesDictResPage();
|
|
|
+ response.setCode(500);
|
|
|
+ response.setMsg("获取模型列表失败:" + e.getMessage());
|
|
|
+ return response;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|