269 lines
7.2 KiB
Go
269 lines
7.2 KiB
Go
|
// 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
|
||
|
}
|