using System; using System.Collections.Generic; using System.Data; using System.Drawing; using System.Drawing.Printing; using System.Linq; using System.Text; using System.Threading.Tasks; using CommonHelper; using Dapper; using GasolineBlend.Entity; using Google.Protobuf.WellKnownTypes; using Microsoft.Office.Interop.Excel; using MySql.Data.MySqlClient; namespace GasolineBlend.DAL { public class ChatHistoryDAL : BaseMySQLDAL { public List GetChatHistoryList(int UserId, int AgentId, string Keyword, int PageNum, int PageSize) { using (IDbConnection connection = new MySqlConnection(connectionString)) { var sql = $"SELECT * FROM chathistorydata WHERE userid = '{UserId}' AND agentid = '{AgentId}' "; if (!string.IsNullOrEmpty(Keyword)) { sql += $" and content like '%{Keyword.Trim()}%' "; } int offset = (PageNum - 1) * PageSize; sql += $" ORDER BY id DESC LIMIT {PageSize} OFFSET {offset}"; return connection.Query(sql).ToList(); } } public int GetChatHistoryCount(int UserId, int AgentId, string Keyword) { using (IDbConnection connection = new MySqlConnection(connectionString)) { var sql = $"SELECT COUNT(*) FROM chathistorydata WHERE userid = '{UserId}' AND agentid = '{AgentId}' "; if (!string.IsNullOrEmpty(Keyword)) { sql += $" and content like '%{Keyword.Trim()}%' "; } sql += $" ORDER BY id DESC "; int Count = connection.Query(sql).FirstOrDefault(); return Count; } } public List GetChatHistory6List(int UserId, int AgentId) { using (IDbConnection connection = new MySqlConnection(connectionString)) { var sql = $"SELECT content,role FROM chathistorydata WHERE userid ='{UserId}' AND agentid = '{AgentId}' ORDER BY id DESC LIMIT 6"; return connection.Query(sql).ToList(); } } public int AddChatHistoryData(ChatHistoryDataPage chatHistoryDataPage) { using (IDbConnection connection = new MySqlConnection(connectionString)) { var sql = @" INSERT INTO chathistorydata (content, createtime, totaltokens, model, created, chatid, object, userid, agentid, role) VALUES (@Content, NOW(), @TotalTokens, @Model, @Created, @Chatid, @Object, @UserId, @AgentId, @Role)"; var parameters = new { Content = chatHistoryDataPage.Content, TotalTokens = chatHistoryDataPage.TotalTokens, Model = chatHistoryDataPage.Model, Created = chatHistoryDataPage.Created, Chatid = chatHistoryDataPage.Chatid, Object = chatHistoryDataPage.Object, UserId = chatHistoryDataPage.UserId, AgentId = chatHistoryDataPage.AgentId, Role = chatHistoryDataPage.Role, }; connection.Open(); // 打开数据库连接 // 执行插入操作 int affectedRows = connection.Execute(sql, parameters); if (affectedRows > 0) { // 获取最后插入的ID var lastInsertIdSql = "SELECT LAST_INSERT_ID()"; var lastInsertId = connection.Query(lastInsertIdSql).FirstOrDefault(); return lastInsertId; } return -1; // 如果没有行受影响,返回-1或其他错误代码 } } public bool DelChatHistoryDataById(int Id) { using (IDbConnection connection = new MySqlConnection(connectionString)) { var sql = $"delete from chathistorydata where id={Id}"; connection.Open(); return connection.Execute(sql) > 0; } } public string GetPromptData(int id) { using (IDbConnection connection = new MySqlConnection(connectionString)) { return connection.QueryFirstOrDefault($"SELECT prompt FROM agentdata WHERE id={id}"); } } public bool UpdataUserNoById(int AgentId, int UserId) { using (IDbConnection connection = new MySqlConnection(connectionString)) { string sqlUpdateQuestion = $"UPDATE agentdata SET questionno = COALESCE(questionno, 0) + 1 WHERE id = {AgentId}"; string sqlCount = $"SELECT COUNT(*) FROM chathistorydata WHERE userid = {UserId} and agentid={AgentId}"; string sqlUpdateUser = $"UPDATE agentdata SET userno = COALESCE(userno, 0) + 1 WHERE id = {AgentId}"; int count = 0; connection.Open(); using (IDataReader reader = connection.ExecuteReader(sqlCount)) { if (reader.Read()) { count = reader.GetInt32(0); } } if (count == 0) { connection.Execute(sqlUpdateUser); } return connection.Execute(sqlUpdateQuestion) > 0; } } } }