211 lines
4.8 KiB
Go
211 lines
4.8 KiB
Go
package bws
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
|
|
bwsmdl "go-common/app/interface/main/activity/model/bws"
|
|
"go-common/library/ecode"
|
|
"go-common/library/log"
|
|
)
|
|
|
|
// RedisInfo .
|
|
func (s *Service) RedisInfo(c context.Context, loginMid, mid int64, key, day, typ string, del int) (data json.RawMessage, err error) {
|
|
if !s.isAdmin(loginMid) {
|
|
err = ecode.ActivityNotAdmin
|
|
return
|
|
}
|
|
if key == "" {
|
|
if key, err = s.midToKey(c, mid); err != nil {
|
|
return
|
|
}
|
|
}
|
|
var (
|
|
bid int64 = 1
|
|
bs []byte
|
|
)
|
|
switch typ {
|
|
case "point":
|
|
if del == 1 {
|
|
err = s.dao.DelCachePoints(c, bid)
|
|
return
|
|
}
|
|
var points *bwsmdl.Points
|
|
if points, err = s.dao.CachePoints(c, bid); err != nil || points == nil || len(points.Points) == 0 {
|
|
log.Error("RedisInfo point error (%v)", err)
|
|
return
|
|
}
|
|
if bs, err = json.Marshal(points.Points); err != nil {
|
|
log.Error("RedisInfo point json error (%v)", err)
|
|
return
|
|
}
|
|
data = json.RawMessage(bs)
|
|
case "achieve":
|
|
if del == 1 {
|
|
err = s.dao.DelCacheAchievements(c, bid)
|
|
return
|
|
}
|
|
var achieves *bwsmdl.Achievements
|
|
if achieves, err = s.dao.CacheAchievements(c, bid); err != nil || achieves == nil || len(achieves.Achievements) == 0 {
|
|
log.Error("RedisInfo achieve error (%v)", err)
|
|
return
|
|
}
|
|
if bs, err = json.Marshal(achieves.Achievements); err != nil {
|
|
log.Error("RedisInfo achieve json error (%v)", err)
|
|
return
|
|
}
|
|
data = json.RawMessage(bs)
|
|
case "user_point":
|
|
if del == 1 {
|
|
err = s.dao.DelCacheUserPoints(c, bid, key)
|
|
return
|
|
}
|
|
var res []*bwsmdl.UserPoint
|
|
if res, err = s.dao.CacheUserPoints(c, bid, key); err != nil {
|
|
log.Error("RedisInfo user point key(%s) error (%v)", key, err)
|
|
return
|
|
}
|
|
if bs, err = json.Marshal(res); err != nil {
|
|
log.Error("RedisInfo user point json error (%v)", err)
|
|
return
|
|
}
|
|
data = json.RawMessage(bs)
|
|
case "user_achieve":
|
|
if del == 1 {
|
|
err = s.dao.DelCacheUserAchieves(c, bid, key)
|
|
return
|
|
}
|
|
var res []*bwsmdl.UserAchieve
|
|
if res, err = s.dao.CacheUserAchieves(c, bid, key); err != nil {
|
|
log.Error("RedisInfo user achieve key(%s) error (%v)", key, err)
|
|
return
|
|
}
|
|
if bs, err = json.Marshal(res); err != nil {
|
|
log.Error("RedisInfo user achieve json error (%v)", err)
|
|
return
|
|
}
|
|
data = json.RawMessage(bs)
|
|
case "achieve_cnt":
|
|
if day == "" {
|
|
day = today()
|
|
}
|
|
if del == 1 {
|
|
err = s.dao.DelCacheAchieveCounts(c, bid, day)
|
|
return
|
|
}
|
|
var res []*bwsmdl.CountAchieves
|
|
if res, err = s.dao.CacheAchieveCounts(c, bid, day); err != nil {
|
|
log.Error("RedisInfo achieve_cnt day(%s) error (%v)", day, err)
|
|
return
|
|
}
|
|
if bs, err = json.Marshal(res); err != nil {
|
|
log.Error("RedisInfo achieve_cnt json error (%v)", err)
|
|
return
|
|
}
|
|
data = json.RawMessage(bs)
|
|
case "achieve_cnt_db":
|
|
if day == "" {
|
|
day = today()
|
|
}
|
|
var res []*bwsmdl.CountAchieves
|
|
if res, err = s.dao.RawAchieveCounts(c, bid, day); err != nil {
|
|
log.Error("RedisInfo achieve_cnt_db day(%s) error (%v)", day, err)
|
|
return
|
|
}
|
|
if bs, err = json.Marshal(res); err != nil {
|
|
log.Error("RedisInfo achieve_cnt_db json error (%v)", err)
|
|
return
|
|
}
|
|
data = json.RawMessage(bs)
|
|
default:
|
|
err = ecode.RequestErr
|
|
}
|
|
return
|
|
}
|
|
|
|
// KeyInfo .
|
|
func (s *Service) KeyInfo(c context.Context, loginMid, keyID, mid int64, key, typ string, del int) (data json.RawMessage, err error) {
|
|
if !s.isAdmin(loginMid) {
|
|
err = ecode.ActivityNotAdmin
|
|
return
|
|
}
|
|
var (
|
|
bs []byte
|
|
)
|
|
switch typ {
|
|
case "id":
|
|
if keyID == 0 {
|
|
err = ecode.RequestErr
|
|
return
|
|
}
|
|
var user *bwsmdl.Users
|
|
if user, err = s.dao.UserByID(c, keyID); err != nil {
|
|
return
|
|
}
|
|
if bs, err = json.Marshal(user); err != nil {
|
|
return
|
|
}
|
|
data = json.RawMessage(bs)
|
|
case "mid":
|
|
if mid == 0 {
|
|
err = ecode.RequestErr
|
|
return
|
|
}
|
|
if del == 1 {
|
|
err = s.dao.DelCacheUsersMid(c, mid)
|
|
return
|
|
}
|
|
var res *bwsmdl.Users
|
|
if res, err = s.dao.CacheUsersMid(c, mid); err != nil {
|
|
return
|
|
}
|
|
if bs, err = json.Marshal(res); err != nil {
|
|
return
|
|
}
|
|
data = json.RawMessage(bs)
|
|
case "key":
|
|
if key == "" {
|
|
err = ecode.RequestErr
|
|
return
|
|
}
|
|
if del == 1 {
|
|
err = s.dao.DelCacheUsersKey(c, key)
|
|
return
|
|
}
|
|
var res *bwsmdl.Users
|
|
if res, err = s.dao.CacheUsersKey(c, key); err != nil {
|
|
return
|
|
}
|
|
if bs, err = json.Marshal(res); err != nil {
|
|
return
|
|
}
|
|
data = json.RawMessage(bs)
|
|
default:
|
|
err = ecode.RequestErr
|
|
}
|
|
return
|
|
}
|
|
|
|
// AdminInfo get admin info.
|
|
func (s *Service) AdminInfo(c context.Context, bid, mid int64) (data *bwsmdl.AdminInfo, err error) {
|
|
data = new(bwsmdl.AdminInfo)
|
|
if s.isAdmin(mid) {
|
|
data.IsAdmin = true
|
|
}
|
|
var points *bwsmdl.Points
|
|
if points, err = s.dao.Points(c, bid); err != nil || points == nil || len(points.Points) == 0 {
|
|
log.Error("s.dao.Points error(%v)", err)
|
|
err = ecode.ActivityPointFail
|
|
return
|
|
}
|
|
for _, v := range points.Points {
|
|
if v.Ower == mid {
|
|
data.Point = v
|
|
}
|
|
}
|
|
if data.Point == nil {
|
|
data.Point = struct{}{}
|
|
}
|
|
return
|
|
}
|