// Package dao ----------------------------- // @author : JJXu // @contact : wavingbear@163.com // @time : 2024-09-10 15:50:24 // ------------------------------------------- package dao import ( "errors" "fmt" "github.com/fonchain_enterprise/micro-account/api/accountFiee" "github.com/fonchain_enterprise/micro-account/pkg/common/db" "github.com/fonchain_enterprise/micro-account/pkg/m" "github.com/fonchain_enterprise/micro-account/pkg/model" ) type chatDao struct { } var AsChatDao = new(chatDao) // 创建ChatRecord func (chatDao) CreateChatRecord(data *model.ChatRecord) error { return model.DB.Debug().Create(data).Error } // 删除ChatRecord func (chatDao) DeleteChatRecords(id int64, ids []int64) (err error) { if id != 0 { err = model.DB.Delete(&model.ChatRecord{}, id).Error } else if len(ids) > 0 { err = model.DB.Delete(&model.ChatRecord{}, ids).Error } if err != nil { //log.L().Error("CreateChatRecord Err", zap.Error(err)) err = errors.New(m.DBError) } return nil } // 更新ChatRecord func (chatDao) UpdateChatRecord(data *model.ChatRecord) (err error) { var thisData model.ChatRecord if err = model.DB.First(&thisData, "id = ?", data.ID).Error; err != nil { return err } if data.SessionId != "" { thisData.SessionId = data.SessionId } if data.UserId != 0 { thisData.UserId = data.UserId } if data.Name != "" { thisData.Name = data.Name } if data.Avatar != "" { thisData.Avatar = data.Avatar } if data.MsgType != 0 { thisData.MsgType = data.MsgType } if data.Content != "" { thisData.Content = data.Content } if data.WaiterRead != 0 { thisData.WaiterRead = data.WaiterRead } if data.LocalStamp != 0 { thisData.LocalStamp = data.LocalStamp } if err = model.DB.Updates(&thisData).Error; err != nil { return err } //更新关联关系 return } // 覆盖ChatRecord func (chatDao) SaveChatRecord(data *model.ChatRecord) (err error) { if err = model.DB.Omit("created_at,deleted_at").Save(&data).Error; err != nil { return err } //更新关联关系 return } // 使用id查询ChatRecord func (chatDao) GetChatRecordById(id int) (res model.ChatRecord, err error) { err = model.DB.Where("id = ?", id).First(&res).Error if err != nil { //log.L().Error("GetChatRecord Err", zap.Error(err)) err = errors.New(m.DBError) } return } // 批量查询ChatRecord func (chatDao) GetChatRecordList(info *accountFiee.GetChatRecordListRequest) (resp []model.ChatRecord, total int64, err error) { var dbQuery = model.DB.Model(&model.ChatRecord{}).Preload("Medias") if info.Query != nil { if info.Query.SessionId != "" { dbQuery = dbQuery.Where("session_id =?", info.Query.SessionId) } if info.Query.UserId != 0 { dbQuery = dbQuery.Where("user_id = ?", info.Query.UserId) } if info.Query.Name != "" { dbQuery = dbQuery.Where(fmt.Sprintf("name like '%%%v%%'", info.Query.Name)) } if info.Query.Avatar != "" { dbQuery = dbQuery.Where(fmt.Sprintf("avatar like '%%%v%%'", info.Query.Avatar)) } if info.Query.MsgType != 0 { dbQuery = dbQuery.Where("msg_type = ?", info.Query.MsgType) } if info.Query.Content != "" { dbQuery = dbQuery.Where(fmt.Sprintf("content like '%%%v%%'", info.Query.Content)) } if info.Query.WaiterRead != 0 { dbQuery = dbQuery.Where("waiter_read = ?", info.Query.WaiterRead) } if info.Query.LocalStamp != 0 { dbQuery = dbQuery.Where("local_stamp = ?", info.Query.LocalStamp) } } if info.Where != "" { dbQuery = dbQuery.Where(info.Where) } if info.Order != "" { dbQuery = dbQuery.Order(info.Order) } //数据查询 dbQuery.Count(&total) err = dbQuery.Scopes(db.Pagination(info.Page, info.PageSize)).Find(&resp).Error if err != nil { //log.L().Error("GetChatRecordList Err", zap.Error(err)) err = errors.New(m.DBError) } return } // 创建ChatMedia func (chatDao) CreateChatMedia(data *model.ChatMedia) error { return model.DB.Create(data).Error } // 删除ChatMedia func (chatDao) DeleteChatMedias(id int64, ids []int64) (err error) { if id != 0 { err = model.DB.Delete(&model.ChatMedia{}, id).Error } else if len(ids) > 0 { err = model.DB.Delete(&model.ChatMedia{}, ids).Error } if err != nil { //log.L().Error("CreateChatMedia Err", zap.Error(err)) err = errors.New(m.DBError) } return nil } // 更新ChatMedia func (chatDao) UpdateChatMedia(data *model.ChatMedia) (err error) { var thisData model.ChatMedia if err = model.DB.First(&thisData, "id = ?", data.ID).Error; err != nil { return err } if data.Url != "" { thisData.Url = data.Url } if data.Md5 != "" { thisData.Md5 = data.Md5 } if data.Size != "" { thisData.Size = data.Size } if data.Ext != "" { thisData.Ext = data.Ext } if data.ConvText != "" { thisData.ConvText = data.ConvText } if err = model.DB.Updates(&thisData).Error; err != nil { return err } //更新关联关系 return } // 覆盖ChatMedia func (chatDao) SaveChatMedia(data *model.ChatMedia) (err error) { if err = model.DB.Omit("created_at,deleted_at").Save(&data).Error; err != nil { return err } //更新关联关系 return } // 使用id查询ChatMedia func (chatDao) GetChatMediaById(id int64) (res model.ChatMedia, err error) { err = model.DB.Where("id = ?", id).First(&res).Error if err != nil { //log.L().Error("GetChatMedia Err", zap.Error(err)) err = errors.New(m.DBError) } return } // 批量查询ChatMedia func (chatDao) GetChatMediaList(info *accountFiee.GetChatMediaListRequest) (resp []model.ChatMedia, total int64, err error) { var dbQuery = model.DB.Model(&model.ChatMedia{}) if info.Query != nil { if info.Query.Url != "" { dbQuery = dbQuery.Where(fmt.Sprintf("url like '%%%v%%'", info.Query.Url)) } if info.Query.Md5 != "" { dbQuery = dbQuery.Where("md5 =?", info.Query.Md5) } if info.Query.Size != "" { dbQuery = dbQuery.Where(fmt.Sprintf("size like '%%%v%%'", info.Query.Size)) } if info.Query.Ext != "" { dbQuery = dbQuery.Where(fmt.Sprintf("ext like '%%%v%%'", info.Query.Ext)) } } if info.Where != "" { dbQuery = dbQuery.Where(info.Where) } if info.Order != "" { dbQuery = dbQuery.Order(info.Order) } //数据查询 dbQuery.Count(&total) err = dbQuery.Scopes(db.Pagination(info.Page, info.PageSize)).Find(&resp).Error if err != nil { //log.L().Error("GetChatMediaList Err", zap.Error(err)) err = errors.New(m.DBError) } return } // 批量查询ChatMedia func (chatDao) GetChatUserList(req *accountFiee.GetChatUserListRequest2) (resp []*accountFiee.ChatUser2, total int64, err error) { var dbQuery = model.DB.Table(`(SELECT su.id user_id,su.mgmt_artist_uid artist_uid,CASE WHEN su.is_real_name=0 THEN icu.name ELSE rn.name END name,icu.head_img avatar FROM sys_user su LEFT JOIN real_name rn ON rn.id = su.real_name_id AND rn.deleted_at =0 LEFT JOIN in_circle_user icu ON icu.user_id=su.id AND icu.deleted_at =0 WHERE su.deleted_at = 0) as t`) if req.Where != "" { dbQuery = dbQuery.Where(req.Where) } if req.UserIdIn != nil { dbQuery = dbQuery.Where("user_id in (?)", req.UserIdIn) } if req.Name != "" { dbQuery = dbQuery.Where(fmt.Sprintf("name like '%%%v%%'", req.Name)) } //数据查询 dbQuery.Count(&total) err = dbQuery.Scopes(db.Pagination(req.Page, req.PageSize)).Find(&resp).Error if err != nil { //log.L().Error("GetChatUserList Err", zap.Error(err)) err = errors.New(m.DBError) } return }