goProject/trunk/center/usercenter/internal/wxuser/logic.go
2025-01-23 16:12:49 +08:00

218 lines
5.5 KiB
Go

package wxuser
import (
"common/connection"
"goutil/logUtilPlus"
"sync"
)
var (
// 用户缓存对象
userInfoMap = make(map[string]*WxUserInfo)
rwmu sync.RWMutex
userRecordMap = make(map[int64]*RecordLoginOfWxUser)
rwmu2 sync.RWMutex
userADRecordMap = make(map[int64]*RecordWatchADOfWxUser)
rwmu3 sync.RWMutex
)
func GetUserByOpenId(openId string) (*WxUserInfo, error) {
var userInfo *WxUserInfo
func() *WxUserInfo {
rwmu.RLock()
defer rwmu.RUnlock()
ok := true
if userInfo, ok = userInfoMap[openId]; ok {
return userInfo
}
return nil
}()
if userInfo != nil {
return userInfo, nil
}
result := connection.GetUserDB().Where("openId = ?", openId).First(&userInfo)
if result.Error != nil {
return nil, result.Error
}
return userInfo, nil
}
// AddUser 添加用户
// AddUser 添加新的用户到数据库中。
// 参数 User: 包含用户信息的对象。
func AddUser(user *WxUserInfo) {
//处理一些验证
// 写入到数据库
result := connection.GetUserDB().Create(&user) // 通过数据的指针来创建
if result.Error != nil {
logUtilPlus.ErrorLog("添加用户失败 错误信息:", result.Error.Error())
}
}
func AddUserCache(user *WxUserInfo) {
rwmu.Lock()
defer rwmu.Unlock()
userInfoMap[user.OpenId] = user
}
// 登录登出相关
func AddUserRecordCache(userrecord *RecordLoginOfWxUser) {
rwmu2.Lock()
defer rwmu2.Unlock()
userRecordMap[userrecord.Uid] = userrecord
}
func GetUserRecord(uid int64) (*RecordLoginOfWxUser, error) {
var userRecord *RecordLoginOfWxUser
func() *RecordLoginOfWxUser {
rwmu2.RLock()
defer rwmu2.RUnlock()
ok := true
if userRecord, ok = userRecordMap[uid]; ok {
return userRecord
}
return nil
}()
if userRecord != nil {
return userRecord, nil
}
result := connection.GetUserDB().Where("uid = ?", uid).Last(&userRecord)
if result.Error != nil {
return nil, result.Error
}
//添加缓存
func() {
rwmu2.Lock()
defer rwmu2.Unlock()
userRecordMap[userRecord.Uid] = userRecord
}()
return userRecord, nil
}
func AddUserRecord(userrecord *RecordLoginOfWxUser) (int64, error) {
//处理一些验证
// 写入到数据库
result := connection.GetUserDB().Create(&userrecord) // 通过数据的指针来创建
if result.Error != nil {
logUtilPlus.ErrorLog("添加用户记录失败 错误信息:", result.Error.Error())
}
return userrecord.ID, nil
}
func SaveUserRecord(userrecord *RecordLoginOfWxUser) (int64, error) {
//处理一些验证
// 写入到数据库
result := connection.GetUserDB().Save(&userrecord) // 通过数据的指针来创建
if result.Error != nil {
logUtilPlus.ErrorLog("保存用户记录失败 错误信息:", result.Error.Error())
}
return userrecord.ID, nil
}
// 看广告相关
func AddUserADRecordCache(userADrecord *RecordWatchADOfWxUser) {
rwmu3.Lock()
defer rwmu3.Unlock()
userADRecordMap[userADrecord.Uid] = userADrecord
}
func GetUserADRecord(uid int64) (*RecordWatchADOfWxUser, error) {
var userADRecord *RecordWatchADOfWxUser
func() *RecordWatchADOfWxUser {
rwmu3.RLock()
defer rwmu3.RUnlock()
ok := true
if userADRecord, ok = userADRecordMap[uid]; ok {
return userADRecord
}
return nil
}()
if userADRecord != nil {
return userADRecord, nil
}
result := connection.GetUserDB().Where("uid = ?", uid).Last(&userADRecord)
if result.Error != nil {
return nil, result.Error
}
//添加缓存
func() {
rwmu3.Lock()
defer rwmu3.Unlock()
userADRecordMap[userADRecord.Uid] = userADRecord
}()
return userADRecord, nil
}
func AddUserADRecord(userADrecord *RecordWatchADOfWxUser) (int64, error) {
//处理一些验证
// 写入到数据库
result := connection.GetUserDB().Create(&userADrecord) // 通过数据的指针来创建
if result.Error != nil {
logUtilPlus.ErrorLog("添加用户看广告记录失败 错误信息:", result.Error.Error())
}
return userADrecord.ID, nil
}
func SaveUserADRecord(userADrecord *RecordWatchADOfWxUser) (int64, error) {
//处理一些验证
// 写入到数据库
result := connection.GetUserDB().Save(&userADrecord) // 通过数据的指针来创建
if result.Error != nil {
logUtilPlus.ErrorLog("保存用户看广告记录失败 错误信息:", result.Error.Error())
}
return userADrecord.ID, nil
}
// 区服相关
func AddUserSeverInfo(userSeverInfo *WxUserSeverInfo) (int64, error) {
//处理一些验证
// 写入到数据库
result := connection.GetUserDB().Create(&userSeverInfo) // 通过数据的指针来创建
if result.Error != nil {
logUtilPlus.ErrorLog("添加用户区服记录失败 错误信息:", result.Error.Error())
}
return userSeverInfo.ID, nil
}
func SaveUserSeverInfo(userSeverInfo *WxUserSeverInfo) (int64, error) {
//处理一些验证
// 写入到数据库
result := connection.GetUserDB().Save(&userSeverInfo) // 通过数据的指针来创建
if result.Error != nil {
logUtilPlus.ErrorLog("保存用户区服记录失败 错误信息:", result.Error.Error())
}
return userSeverInfo.ID, nil
}
func GetUserSeverInfo() (*WxUserSeverInfo, error) {
var userSeverInfoRecord *WxUserSeverInfo
result := connection.GetUserDB().Last(&userSeverInfoRecord)
if result.Error != nil {
return nil, result.Error
}
return userSeverInfoRecord, nil
}
func GetUserSeverInfoByIds(openId string, severId int32) (*WxUserSeverInfo, error) {
var userSeverInfoRecord *WxUserSeverInfo
result := connection.GetUserDB().Where("openId = ? AND severId = ?", openId, severId).First(&userSeverInfoRecord)
if result.Error != nil {
return nil, result.Error
}
return userSeverInfoRecord, nil
}