AI智能工牌的建表语句
This commit is contained in:
@@ -1,12 +1,10 @@
|
||||
package com.cst.langchain4jheima;
|
||||
package com.rj;
|
||||
|
||||
import org.mybatis.spring.annotation.MapperScan;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.context.annotation.ComponentScan;
|
||||
import org.springframework.context.annotation.FilterType;
|
||||
|
||||
@MapperScan("com.cst.langchain4jheima.mapper")
|
||||
@MapperScan("com.rj.mapper")
|
||||
@SpringBootApplication
|
||||
public class Langchain4jHeima20250803Application {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.cst.langchain4jheima.aiservice;
|
||||
package com.rj.aiservice;
|
||||
|
||||
import dev.langchain4j.service.spring.AiService;
|
||||
import dev.langchain4j.service.spring.AiServiceWiringMode;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.cst.langchain4jheima.aiservice;
|
||||
package com.rj.aiservice;
|
||||
|
||||
import dev.langchain4j.service.MemoryId;
|
||||
import dev.langchain4j.service.SystemMessage;
|
||||
@@ -1,14 +1,12 @@
|
||||
package com.cst.langchain4jheima.config;
|
||||
package com.rj.config;
|
||||
|
||||
import com.cst.langchain4jheima.aiservice.CstAIService;
|
||||
import com.cst.langchain4jheima.repository.RedisChatMemoryStore;
|
||||
import dev.langchain4j.community.store.embedding.redis.RedisEmbeddingStore;
|
||||
import com.rj.aiservice.CstAIService;
|
||||
import com.rj.repository.RedisChatMemoryStore;
|
||||
import dev.langchain4j.memory.ChatMemory;
|
||||
import dev.langchain4j.memory.chat.ChatMemoryProvider;
|
||||
import dev.langchain4j.memory.chat.MessageWindowChatMemory;
|
||||
import dev.langchain4j.model.openai.OpenAiChatModel;
|
||||
import dev.langchain4j.service.AiServices;
|
||||
import dev.langchain4j.store.memory.chat.ChatMemoryStore;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
82
src/main/java/com/rj/config/SwaggerOpenAPI.java
Normal file
82
src/main/java/com/rj/config/SwaggerOpenAPI.java
Normal file
@@ -0,0 +1,82 @@
|
||||
package com.rj.config;
|
||||
|
||||
//import io.swagger.models.Info;
|
||||
|
||||
//import io.swagger.annotations.Info;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.SerializationFeature;
|
||||
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
||||
import io.swagger.v3.oas.models.OpenAPI;
|
||||
import io.swagger.v3.oas.models.info.Contact;
|
||||
import io.swagger.v3.oas.models.info.Info;
|
||||
import io.swagger.v3.oas.models.servers.Server;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springdoc.core.models.GroupedOpenApi;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* http://localhost:9060/swagger-ui/index.html#/
|
||||
* https://index.huayang-star.com/swagger-ui/index.html#/ai-card-bag-controller
|
||||
*
|
||||
* Author: 李中华 wx: spllzh email(qq): 28668817@qq.com
|
||||
* Date: 2025/6/30 9:55
|
||||
**/
|
||||
@Slf4j
|
||||
@Configuration
|
||||
public class SwaggerOpenAPI {
|
||||
|
||||
@Value("${swagger.api.base-url}")
|
||||
private String baseUrl;
|
||||
|
||||
@Value("${langchain4j.community.dashscope.chat-model.api-key}")
|
||||
private String apiKey;
|
||||
|
||||
|
||||
@Configuration
|
||||
public class JacksonConfig {
|
||||
@Bean
|
||||
public ObjectMapper objectMapper() {
|
||||
return new ObjectMapper()
|
||||
.registerModule(new JavaTimeModule())
|
||||
.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
|
||||
}
|
||||
}
|
||||
|
||||
@Bean
|
||||
public OpenAPI customOpenAPI() {
|
||||
log.info("baseUrl = " + baseUrl);
|
||||
return new OpenAPI()
|
||||
.servers(List.of(new Server().url(baseUrl))) // 强制HTTPS
|
||||
.info(new Info()
|
||||
.title("AI Card API")
|
||||
.version("1.0.0")
|
||||
.description("Spring Boot 3.4 + Knife4j 集成 API")
|
||||
.contact(new Contact().name("Support").email("support@huayang-star.com"))
|
||||
);
|
||||
}
|
||||
@Bean
|
||||
public GroupedOpenApi publicApi() {
|
||||
return GroupedOpenApi.builder()
|
||||
.group("public-api")
|
||||
.pathsToMatch("/api/**")
|
||||
.build();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public GroupedOpenApi adminApi() {
|
||||
return GroupedOpenApi.builder()
|
||||
.group("admin-api")
|
||||
.pathsToMatch("/admin/**")
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
package com.cst.langchain4jheima.controller;
|
||||
package com.rj.controller;
|
||||
|
||||
import com.cst.langchain4jheima.aiservice.CstAIService;
|
||||
import com.cst.langchain4jheima.aiservice.CstAIStreamingService;
|
||||
import com.rj.aiservice.CstAIService;
|
||||
import com.rj.aiservice.CstAIStreamingService;
|
||||
import dev.langchain4j.model.openai.OpenAiChatModel;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import reactor.core.publisher.Flux;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.cst.langchain4jheima.controller;
|
||||
package com.rj.controller;
|
||||
|
||||
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.cst.langchain4jheima.embedding;
|
||||
package com.rj.embedding;
|
||||
|
||||
import dev.langchain4j.community.store.embedding.redis.RedisEmbeddingStore;
|
||||
import dev.langchain4j.data.document.Document;
|
||||
139
src/main/java/com/rj/entity/AudioManagement.java
Normal file
139
src/main/java/com/rj/entity/AudioManagement.java
Normal file
@@ -0,0 +1,139 @@
|
||||
package com.rj.entity;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import java.time.LocalDateTime;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import java.io.Serializable;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 录音管理表,含信息卡字段
|
||||
* </p>
|
||||
*
|
||||
* @author 李中华 ,spllzh
|
||||
* @since 2025-08-07
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@TableName("audio_management")
|
||||
@Schema(description="录音管理表,含信息卡字段")
|
||||
public class AudioManagement implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Schema(description = "主键,UUID")
|
||||
@TableId("id")
|
||||
private String id;
|
||||
|
||||
@Schema(description = "录音名称")
|
||||
@TableField("recording_name")
|
||||
private String recordingName;
|
||||
|
||||
@Schema(description = "录音时间")
|
||||
@TableField("recording_time")
|
||||
private LocalDateTime recordingTime;
|
||||
|
||||
@Schema(description = "所属销售ID")
|
||||
@TableField("sales_id")
|
||||
private String salesId;
|
||||
|
||||
@Schema(description = "所属销售名称")
|
||||
@TableField("sales_name")
|
||||
private String salesName;
|
||||
|
||||
@Schema(description = "录音时长(分钟)")
|
||||
@TableField("duration")
|
||||
private BigDecimal duration;
|
||||
|
||||
@Schema(description = "客户ID")
|
||||
@TableField("customer_id")
|
||||
private String customerId;
|
||||
|
||||
@Schema(description = "客户姓名")
|
||||
@TableField("customer_name")
|
||||
private String customerName;
|
||||
|
||||
@Schema(description = "客户手机号")
|
||||
@TableField("customer_phone")
|
||||
private String customerPhone;
|
||||
|
||||
@Schema(description = "上传时间")
|
||||
@TableField("upload_time")
|
||||
private LocalDateTime uploadTime;
|
||||
|
||||
@Schema(description = "意向级别(高意向, 中意向 , 低意向)")
|
||||
@TableField("intention_level")
|
||||
private String intentionLevel;
|
||||
|
||||
@Schema(description = "所属门店ID")
|
||||
@TableField("dealership_id")
|
||||
private String dealershipId;
|
||||
|
||||
@Schema(description = "所属门店名称")
|
||||
@TableField("dealership_name")
|
||||
private String dealershipName;
|
||||
|
||||
@Schema(description = "所属项目ID")
|
||||
@TableField("project_id")
|
||||
private String projectId;
|
||||
|
||||
@Schema(description = "所属项目名称")
|
||||
@TableField("project_name")
|
||||
private String projectName;
|
||||
|
||||
@Schema(description = "话术模型")
|
||||
@TableField("script_model")
|
||||
private String scriptModel;
|
||||
|
||||
@Schema(description = "上传状态")
|
||||
@TableField("upload_status")
|
||||
private String uploadStatus;
|
||||
|
||||
@Schema(description = "同步状态")
|
||||
@TableField("sync_status")
|
||||
private String syncStatus;
|
||||
|
||||
@Schema(description = "是否合并(0否1是)")
|
||||
@TableField("is_merged")
|
||||
private Boolean isMerged;
|
||||
|
||||
@Schema(description = "录音备注")
|
||||
@TableField("remarks")
|
||||
private String remarks;
|
||||
|
||||
@Schema(description = "公司类型")
|
||||
@TableField("company_type")
|
||||
private String companyType;
|
||||
|
||||
@Schema(description = "编辑状态")
|
||||
@TableField("edit_status")
|
||||
private String editStatus;
|
||||
|
||||
@Schema(description = "编辑时间")
|
||||
@TableField("edit_time")
|
||||
private LocalDateTime editTime;
|
||||
|
||||
@Schema(description = "信息卡类型(如意向车型、购买情况、来访目的、试驾结果、付款方式、试驾专员等)")
|
||||
@TableField("info_card_type")
|
||||
private String infoCardType;
|
||||
|
||||
@Schema(description = "信息卡内容")
|
||||
@TableField("info_card_description")
|
||||
private String infoCarddescription;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
@TableField("create_time")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@Schema(description = "更新时间")
|
||||
@TableField("update_time")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
|
||||
}
|
||||
77
src/main/java/com/rj/entity/CustomerManagement.java
Normal file
77
src/main/java/com/rj/entity/CustomerManagement.java
Normal file
@@ -0,0 +1,77 @@
|
||||
package com.rj.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import java.time.LocalDateTime;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import java.io.Serializable;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 客户管理表
|
||||
* </p>
|
||||
*
|
||||
* @author 李中华 ,spllzh
|
||||
* @since 2025-08-07
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@TableName("customer_management")
|
||||
@Schema(description="客户管理表")
|
||||
public class CustomerManagement implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Schema(description = "主键,UUID")
|
||||
@TableId("id")
|
||||
private String id;
|
||||
|
||||
@Schema(description = "客户姓名")
|
||||
@TableField("customer_name")
|
||||
private String customerName;
|
||||
|
||||
@Schema(description = "联系方式")
|
||||
@TableField("contact")
|
||||
private String contact;
|
||||
|
||||
@Schema(description = "所属门店ID")
|
||||
@TableField("dealership_id")
|
||||
private String dealershipId;
|
||||
|
||||
@Schema(description = "所属门店名称")
|
||||
@TableField("dealership_name")
|
||||
private String dealershipName;
|
||||
|
||||
@Schema(description = "所属销售ID")
|
||||
@TableField("sales_id")
|
||||
private String salesId;
|
||||
|
||||
@Schema(description = "所属销售名称")
|
||||
@TableField("sales_name")
|
||||
private String salesName;
|
||||
|
||||
@Schema(description = "录音条数")
|
||||
@TableField("recording_count")
|
||||
private Integer recordingCount;
|
||||
|
||||
@Schema(description = "意向车型")
|
||||
@TableField("intended_model")
|
||||
private String intendedModel;
|
||||
|
||||
@Schema(description = "信息卡")
|
||||
@TableField("info_card")
|
||||
private String infoCard;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
@TableField("create_time")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@Schema(description = "更新时间")
|
||||
@TableField("update_time")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
|
||||
}
|
||||
86
src/main/java/com/rj/entity/Dealership.java
Normal file
86
src/main/java/com/rj/entity/Dealership.java
Normal file
@@ -0,0 +1,86 @@
|
||||
package com.rj.entity;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import java.time.LocalDateTime;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import java.io.Serializable;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 汽车经销商门店信息表
|
||||
* </p>
|
||||
*
|
||||
* @author 李中华 ,spllzh
|
||||
* @since 2025-08-07
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@TableName("dealership")
|
||||
@Schema(description="汽车经销商门店信息表")
|
||||
public class Dealership implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Schema(description = "主键,UUID")
|
||||
@TableId("id")
|
||||
private String id;
|
||||
|
||||
@Schema(description = "经销商名称")
|
||||
@TableField("dealership_name")
|
||||
private String dealershipName;
|
||||
|
||||
@Schema(description = "经销商代码")
|
||||
@TableField("dealership_code")
|
||||
private String dealershipCode;
|
||||
|
||||
@Schema(description = "剩余时长(小时)")
|
||||
@TableField("remaining_hours")
|
||||
private BigDecimal remainingHours;
|
||||
|
||||
@Schema(description = "销售人员数量")
|
||||
@TableField("sales_count")
|
||||
private Integer salesCount;
|
||||
|
||||
@Schema(description = "人均录音条数")
|
||||
@TableField("avg_recordings")
|
||||
private Integer avgRecordings;
|
||||
|
||||
@Schema(description = "平均录音时长(分钟)")
|
||||
@TableField("avg_recording_duration")
|
||||
private BigDecimal avgRecordingDuration;
|
||||
|
||||
@Schema(description = "地区")
|
||||
@TableField("region")
|
||||
private String region;
|
||||
|
||||
@Schema(description = "分组")
|
||||
@TableField("group_name")
|
||||
private String groupName;
|
||||
|
||||
@Schema(description = "语言")
|
||||
@TableField("language")
|
||||
private String language;
|
||||
|
||||
@Schema(description = "经销商类型")
|
||||
@TableField("dealership_type")
|
||||
private String dealershipType;
|
||||
|
||||
@Schema(description = "状态(1正常 0停用)")
|
||||
@TableField("status")
|
||||
private Boolean status;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
@TableField("create_time")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@Schema(description = "更新时间")
|
||||
@TableField("update_time")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
|
||||
}
|
||||
109
src/main/java/com/rj/entity/DeviceManagement.java
Normal file
109
src/main/java/com/rj/entity/DeviceManagement.java
Normal file
@@ -0,0 +1,109 @@
|
||||
package com.rj.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import java.time.LocalDateTime;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import java.io.Serializable;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 设备管理表
|
||||
* </p>
|
||||
*
|
||||
* @author 李中华 ,spllzh
|
||||
* @since 2025-08-07
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@TableName("device_management")
|
||||
@Schema(description="设备管理表")
|
||||
public class DeviceManagement implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Schema(description = "主键,UUID")
|
||||
@TableId("id")
|
||||
private String id;
|
||||
|
||||
@Schema(description = "设备编号")
|
||||
@TableField("device_code")
|
||||
private String deviceCode;
|
||||
|
||||
@Schema(description = "所属门店ID")
|
||||
@TableField("dealership_id")
|
||||
private String dealershipId;
|
||||
|
||||
@Schema(description = "所属门店名称")
|
||||
@TableField("dealership_name")
|
||||
private String dealershipName;
|
||||
|
||||
@Schema(description = "最近联网时间")
|
||||
@TableField("last_online_time")
|
||||
private LocalDateTime lastOnlineTime;
|
||||
|
||||
@Schema(description = "最近开机时间")
|
||||
@TableField("last_power_on_time")
|
||||
private LocalDateTime lastPowerOnTime;
|
||||
|
||||
@Schema(description = "最近关机时间")
|
||||
@TableField("last_power_off_time")
|
||||
private LocalDateTime lastPowerOffTime;
|
||||
|
||||
@Schema(description = "WIFI名称")
|
||||
@TableField("wifi_name")
|
||||
private String wifiName;
|
||||
|
||||
@Schema(description = "未上传数量")
|
||||
@TableField("unuploaded_count")
|
||||
private Integer unuploadedCount;
|
||||
|
||||
@Schema(description = "空间大小(M)")
|
||||
@TableField("storage_size")
|
||||
private String storageSize;
|
||||
|
||||
@Schema(description = "已用空间(M)")
|
||||
@TableField("storage_used")
|
||||
private String storageUsed;
|
||||
|
||||
@Schema(description = "剩余电量")
|
||||
@TableField("remaining_battery")
|
||||
private String remainingBattery;
|
||||
|
||||
@Schema(description = "充电状态")
|
||||
@TableField("charging_status")
|
||||
private String chargingStatus;
|
||||
|
||||
@Schema(description = "绑定用户ID")
|
||||
@TableField("bind_user_id")
|
||||
private String bindUserId;
|
||||
|
||||
@Schema(description = "绑定用户名称")
|
||||
@TableField("bind_user_name")
|
||||
private String bindUserName;
|
||||
|
||||
@Schema(description = "所属项目ID")
|
||||
@TableField("project_id")
|
||||
private String projectId;
|
||||
|
||||
@Schema(description = "所属项目名称")
|
||||
@TableField("project_name")
|
||||
private String projectName;
|
||||
|
||||
@Schema(description = "绑定状态(1已绑定 0未绑定)")
|
||||
@TableField("bind_status")
|
||||
private Boolean bindStatus;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
@TableField("create_time")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@Schema(description = "更新时间")
|
||||
@TableField("update_time")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
|
||||
}
|
||||
82
src/main/java/com/rj/entity/ProjectManagement.java
Normal file
82
src/main/java/com/rj/entity/ProjectManagement.java
Normal file
@@ -0,0 +1,82 @@
|
||||
package com.rj.entity;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import java.time.LocalDateTime;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import java.io.Serializable;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 项目管理表
|
||||
* </p>
|
||||
*
|
||||
* @author 李中华 ,spllzh
|
||||
* @since 2025-08-07
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@TableName("project_management")
|
||||
@Schema(description="项目管理表")
|
||||
public class ProjectManagement implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Schema(description = "主键,UUID")
|
||||
@TableId("id")
|
||||
private String id;
|
||||
|
||||
@Schema(description = "所属经销商ID")
|
||||
@TableField("dealership_id")
|
||||
private String dealershipId;
|
||||
|
||||
@Schema(description = "项目名称")
|
||||
@TableField("project_name")
|
||||
private String projectName;
|
||||
|
||||
@Schema(description = "话术版本")
|
||||
@TableField("script_version")
|
||||
private Integer scriptVersion;
|
||||
|
||||
@Schema(description = "话术发布时间")
|
||||
@TableField("script_publish_time")
|
||||
private LocalDateTime scriptPublishTime;
|
||||
|
||||
@Schema(description = "销售人员数量")
|
||||
@TableField("salesperson_count")
|
||||
private Integer salespersonCount;
|
||||
|
||||
@Schema(description = "平均录音时长(分钟)")
|
||||
@TableField("avg_recording_duration")
|
||||
private BigDecimal avgRecordingDuration;
|
||||
|
||||
@Schema(description = "步骤")
|
||||
@TableField("step")
|
||||
private String step;
|
||||
|
||||
@Schema(description = "分组")
|
||||
@TableField("group_name")
|
||||
private String groupName;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
@TableField("create_time")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@Schema(description = "项目描述")
|
||||
@TableField("description")
|
||||
private String description;
|
||||
|
||||
@Schema(description = "项目状态(1启用 0停用)")
|
||||
@TableField("status")
|
||||
private Boolean status;
|
||||
|
||||
@Schema(description = "更新时间")
|
||||
@TableField("update_time")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
|
||||
}
|
||||
98
src/main/java/com/rj/entity/SalesManagement.java
Normal file
98
src/main/java/com/rj/entity/SalesManagement.java
Normal file
@@ -0,0 +1,98 @@
|
||||
package com.rj.entity;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import java.time.LocalDateTime;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import java.io.Serializable;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 销售管理表
|
||||
* </p>
|
||||
*
|
||||
* @author 李中华 ,spllzh
|
||||
* @since 2025-08-07
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@TableName("sales_management")
|
||||
@Schema(description="销售管理表")
|
||||
public class SalesManagement implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Schema(description = "主键,UUID")
|
||||
@TableId("id")
|
||||
private String id;
|
||||
|
||||
@Schema(description = "销售名称")
|
||||
@TableField("sales_name")
|
||||
private String salesName;
|
||||
|
||||
@Schema(description = "登录账号")
|
||||
@TableField("login_account")
|
||||
private String loginAccount;
|
||||
|
||||
@Schema(description = "录音数")
|
||||
@TableField("recording_count")
|
||||
private Integer recordingCount;
|
||||
|
||||
@Schema(description = "平均录音时间(分钟)")
|
||||
@TableField("avg_recording_duration")
|
||||
private BigDecimal avgRecordingDuration;
|
||||
|
||||
@Schema(description = "录音总时长(小时)")
|
||||
@TableField("total_recording_hours")
|
||||
private BigDecimal totalRecordingHours;
|
||||
|
||||
@Schema(description = "所属项目ID")
|
||||
@TableField("project_id")
|
||||
private String projectId;
|
||||
|
||||
@Schema(description = "所属项目名称")
|
||||
@TableField("project_name")
|
||||
private String projectName;
|
||||
|
||||
@Schema(description = "所属门店ID")
|
||||
@TableField("dealership_id")
|
||||
private String dealershipId;
|
||||
|
||||
@Schema(description = "所属门店名称")
|
||||
@TableField("dealership_name")
|
||||
private String dealershipName;
|
||||
|
||||
@Schema(description = "角色")
|
||||
@TableField("role")
|
||||
private String role;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
@TableField("create_time")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@Schema(description = "最近录音时间")
|
||||
@TableField("last_recording_time")
|
||||
private LocalDateTime lastRecordingTime;
|
||||
|
||||
@Schema(description = "最后登录时间")
|
||||
@TableField("last_login_time")
|
||||
private LocalDateTime lastLoginTime;
|
||||
|
||||
@Schema(description = "最后登录IP")
|
||||
@TableField("last_login_ip")
|
||||
private String lastLoginIp;
|
||||
|
||||
@Schema(description = "销售状态(1启用 0停用)")
|
||||
@TableField("status")
|
||||
private Boolean status;
|
||||
|
||||
@Schema(description = "更新时间")
|
||||
@TableField("update_time")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
|
||||
}
|
||||
82
src/main/java/com/rj/entity/VideoManagement.java
Normal file
82
src/main/java/com/rj/entity/VideoManagement.java
Normal file
@@ -0,0 +1,82 @@
|
||||
package com.rj.entity;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import java.time.LocalDateTime;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import java.io.Serializable;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 视频管理表
|
||||
* </p>
|
||||
*
|
||||
* @author 李中华 ,spllzh
|
||||
* @since 2025-08-07
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@TableName("video_management")
|
||||
@Schema(description="视频管理表")
|
||||
public class VideoManagement implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Schema(description = "主键,UUID")
|
||||
@TableId("id")
|
||||
private String id;
|
||||
|
||||
@Schema(description = "视频名称")
|
||||
@TableField("video_name")
|
||||
private String videoName;
|
||||
|
||||
@Schema(description = "所属门店ID")
|
||||
@TableField("dealership_id")
|
||||
private String dealershipId;
|
||||
|
||||
@Schema(description = "所属门店名称")
|
||||
@TableField("dealership_name")
|
||||
private String dealershipName;
|
||||
|
||||
@Schema(description = "所属销售ID")
|
||||
@TableField("sales_id")
|
||||
private String salesId;
|
||||
|
||||
@Schema(description = "所属销售名称")
|
||||
@TableField("sales_name")
|
||||
private String salesName;
|
||||
|
||||
@Schema(description = "客户ID")
|
||||
@TableField("customer_id")
|
||||
private String customerId;
|
||||
|
||||
@Schema(description = "客户姓名")
|
||||
@TableField("customer_name")
|
||||
private String customerName;
|
||||
|
||||
@Schema(description = "客户手机号")
|
||||
@TableField("customer_phone")
|
||||
private String customerPhone;
|
||||
|
||||
@Schema(description = "视频时长(分钟)")
|
||||
@TableField("duration")
|
||||
private BigDecimal duration;
|
||||
|
||||
@Schema(description = "录制时间")
|
||||
@TableField("record_time")
|
||||
private LocalDateTime recordTime;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
@TableField("create_time")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@Schema(description = "更新时间")
|
||||
@TableField("update_time")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.cst.langchain4jheima.mapper;
|
||||
package com.rj.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.cst.langchain4jheima.pojo.Reservation;
|
||||
import com.rj.pojo.Reservation;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.cst.langchain4jheima.pojo;
|
||||
package com.rj.pojo;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.cst.langchain4jheima.repository;
|
||||
package com.rj.repository;
|
||||
|
||||
import dev.langchain4j.data.message.ChatMessage;
|
||||
import dev.langchain4j.data.message.ChatMessageDeserializer;
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.cst.langchain4jheima.service;
|
||||
package com.rj.service;
|
||||
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.cst.langchain4jheima.pojo.Reservation;
|
||||
import com.rj.pojo.Reservation;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package com.cst.langchain4jheima.service.impl;
|
||||
package com.rj.service.impl;
|
||||
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.cst.langchain4jheima.mapper.ReservationMapper;
|
||||
import com.cst.langchain4jheima.pojo.Reservation;
|
||||
import com.cst.langchain4jheima.service.IReservationService;
|
||||
import com.rj.mapper.ReservationMapper;
|
||||
import com.rj.pojo.Reservation;
|
||||
import com.rj.service.IReservationService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.cst.langchain4jheima.tools;
|
||||
package com.rj.tools;
|
||||
|
||||
import com.cst.langchain4jheima.pojo.Reservation;
|
||||
import com.cst.langchain4jheima.service.IReservationService;
|
||||
import com.rj.pojo.Reservation;
|
||||
import com.rj.service.IReservationService;
|
||||
import dev.langchain4j.agent.tool.P;
|
||||
import dev.langchain4j.agent.tool.Tool;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -54,4 +54,31 @@ spring:
|
||||
|
||||
mybatis:
|
||||
configuration:
|
||||
map-underscore-to-camel-case: true
|
||||
map-underscore-to-camel-case: true
|
||||
|
||||
knife4j:
|
||||
# 开启增强模式
|
||||
enable: true
|
||||
# 开启生产环境屏蔽
|
||||
production: false
|
||||
# 基础配置
|
||||
basic:
|
||||
enable: true
|
||||
username: admin
|
||||
password: 123456
|
||||
|
||||
|
||||
springdoc:
|
||||
swagger-ui:
|
||||
path: /swagger-ui.html # Swagger UI 访问路径
|
||||
tags-sorter: alpha # 标签排序
|
||||
operations-sorter: alpha # 接口排序
|
||||
api-docs:
|
||||
path: /v3/api-docs # OpenAPI 描述文件路径
|
||||
default-consumes-media-type: application/json
|
||||
default-produces-media-type: application/json
|
||||
|
||||
swagger:
|
||||
api:
|
||||
base-url: http://localhost:9060
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<mapper namespace="com.rongl.mapper.ReservationMapper">
|
||||
|
||||
<!-- 通用查询映射结果 -->
|
||||
<resultMap id="BaseResultMap" type="com.cst.langchain4jheima.pojo.Reservation">
|
||||
<resultMap id="BaseResultMap" type="com.rj.pojo.Reservation">
|
||||
<id column="id" property="id" />
|
||||
<result column="name" property="name" />
|
||||
<result column="gender" property="gender" />
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.cst.langchain4jheima;
|
||||
package com.rj;
|
||||
|
||||
import dev.langchain4j.model.openai.OpenAiChatModel;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.cst.langchain4jheima;
|
||||
package com.rj;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.cst.langchain4jheima.service;
|
||||
package com.rj.service;
|
||||
|
||||
/**
|
||||
* Author: 李中华 wx: spllzh email(qq): 28668817@qq.com
|
||||
@@ -6,9 +6,10 @@ package com.cst.langchain4jheima.service;
|
||||
**/
|
||||
|
||||
|
||||
import com.cst.langchain4jheima.Langchain4jHeima20250803Application;
|
||||
import com.cst.langchain4jheima.pojo.Reservation;
|
||||
import com.rj.Langchain4jHeima20250803Application;
|
||||
import com.rj.pojo.Reservation;
|
||||
|
||||
import com.rj.service.impl.ReservationServiceImpl;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -19,8 +20,6 @@ import static org.junit.jupiter.api.Assertions.*;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
|
||||
@SpringBootTest(classes = Langchain4jHeima20250803Application.class)
|
||||
class ReservationServiceTest {
|
||||
@@ -58,7 +57,7 @@ class ReservationServiceTest {
|
||||
reservationService.save(reservation);
|
||||
|
||||
// 测试根据手机号查询功能
|
||||
List<Reservation> reservations = ((com.cst.langchain4jheima.service.impl.ReservationServiceImpl) reservationService)
|
||||
List<Reservation> reservations = ((ReservationServiceImpl) reservationService)
|
||||
.getReservationsByPhone("13900139000");
|
||||
|
||||
// 验证查询结果
|
||||
@@ -71,7 +70,7 @@ class ReservationServiceTest {
|
||||
@Test
|
||||
void testGetReservationsByPhoneWithNoResults() {
|
||||
// 测试查询不存在的手机号
|
||||
List<Reservation> reservations = ((com.cst.langchain4jheima.service.impl.ReservationServiceImpl) reservationService)
|
||||
List<Reservation> reservations = ((ReservationServiceImpl) reservationService)
|
||||
.getReservationsByPhone("00000000000");
|
||||
|
||||
// 验证查询结果为空
|
||||
Reference in New Issue
Block a user