// Package dao ----------------------------- // @author : JJXu // @contact : wavingbear@163.com // @time : 2025-06-12 10:06:32 // ------------------------------------------- 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 chatUserDao struct { } var ChatUserDao = new(chatUserDao) // 创建聊天用户 func (chatUserDao) CreateChatUser(data *model.ChatUser) error { return model.DB.Create(data).Error } // 删除聊天用户 func (chatUserDao) DeleteChatUsers(id int64, ids []int64) (err error) { if id != 0 { err = model.DB.Delete(&model.ChatUser{}, id).Error } else if len(ids) > 0 { err = model.DB.Delete(&model.ChatUser{}, ids).Error } if err != nil { //log.L().Error("CreateChatUser Err", zap.Error(err)) err = errors.New(m.DBError) } return nil } // 更新聊天用户 func (chatUserDao) UpdateChatUser(data *model.ChatUser) (err error) { var thisData model.ChatUser if err = model.DB.First(&thisData, "id = ?", data.ID).Error; err != nil { return err } if data.ID != 0 { thisData.ID = data.ID } if data.NickName != "" { thisData.NickName = data.NickName } if data.Account != "" { thisData.Account = data.Account } if data.Role != 0 { thisData.Role = data.Role } if data.Origin != "" { thisData.Origin = data.Origin } if data.OriginId != 0 { thisData.OriginId = data.OriginId } if data.Avatar != "" { thisData.Avatar = data.Avatar } if err = model.DB.Updates(&thisData).Error; err != nil { return err } //更新关联关系 return } // 覆盖聊天用户 func (chatUserDao) SaveChatUser(data *model.ChatUser) (err error) { if err = model.DB.Omit("created_at,deleted_at").Save(&data).Error; err != nil { return err } //更新关联关系 return } // 使用map更新聊天用户 func (chatUserDao) UpdateUseMap(id string, updateMap map[string]any) (err error) { if err = model.DB.Model(&model.ChatUser{}).Where("id =?", id).Updates(&updateMap).Error; err != nil { return err } return } // 使用id查询聊天用户 func (chatUserDao) GetChatUserById(id int) (res model.ChatUser, err error) { err = model.DB.Where("id = ?", id).First(&res).Error if err != nil { //log.L().Error("GetChatUser Err", zap.Error(err)) err = errors.New(m.DBError) } return } // 批量查询聊天用户 func (chatUserDao) GetChatUserList(info *accountFiee.GetChatUserListRequest) (resp []model.ChatUser, total int64, err error) { var dbQuery = model.DB.Model(&model.ChatUser{}) if info.Query != nil { if info.Query.ID != 0 { dbQuery = dbQuery.Where(" = ?", info.Query.ID) } if info.Query.NickName != "" { dbQuery = dbQuery.Where(fmt.Sprintf("nick_name like '%%%v%%'", info.Query.NickName)) } if info.Query.Account != "" { dbQuery = dbQuery.Where(fmt.Sprintf("account like '%%%v%%'", info.Query.Account)) } if info.Query.Role != 0 { dbQuery = dbQuery.Where("role = ?", info.Query.Role) } if info.Query.Origin != "" { dbQuery = dbQuery.Where(fmt.Sprintf("origin like '%%%v%%'", info.Query.Origin)) } if info.Query.OriginId != 0 { dbQuery = dbQuery.Where("origin_id = ?", info.Query.OriginId) } if info.Query.Avatar != "" { dbQuery = dbQuery.Where(fmt.Sprintf("avatar like '%%%v%%'", info.Query.Avatar)) } } 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("GetChatUserList Err", zap.Error(err)) err = errors.New(m.DBError) } return }