218 lines
5.5 KiB
Go
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
|
|
}
|