go-common/app/job/main/member/model/model.go
2019-04-22 18:49:16 +08:00

201 lines
5.1 KiB
Go

package model
import (
"encoding/json"
"fmt"
"time"
xtime "go-common/library/time"
"github.com/satori/go.uuid"
)
const (
// FlagNo 否
FlagNo = int32(0)
// FlagYes 是
FlagYes = int32(1)
// ExpFlagOnLogin 每日登录经验
ExpFlagOnLogin = int32(1)
// ExpFlagOnShare 每日分享经验
ExpFlagOnShare = int32(2)
// ExpFlagOnView 每日播放经验
ExpFlagOnView = int32(4)
// ExpFlagOnEmail 一次性绑定邮箱
ExpFlagOnEmail = int32(8)
// ExpFlagOnPhone 一次性绑定手机
ExpFlagOnPhone = int32(16)
// ExpFlagOnSafe 一次性绑定密保
ExpFlagOnSafe = int32(32)
// ExpFlagOnIdentify 一次性实名认证
ExpFlagOnIdentify = int32(64)
// ExpActOnCoin 投币奖励动作
ExpActOnCoin = int64(1)
// ExpActOnLogin 登录奖励动作
ExpActOnLogin = int64(2)
// ExpActOnView 播放奖励动作
ExpActOnView = int64(3)
// ExpActOnShare 分享奖励动作
ExpActOnShare = int64(4)
// ExpActOnEmail 绑定邮箱动作
ExpActOnEmail = int64(5)
// ExpActOnPhone 绑定手机动作
ExpActOnPhone = int64(6)
// ExpActOnSafe 绑定密保动作
ExpActOnSafe = int64(7)
// ExpActOnIdentify 实名认证动作
ExpActOnIdentify = int64(8)
)
var (
login = &ExpOper{ExpFlagOnLogin, 5, "login", "登录奖励"}
share = &ExpOper{ExpFlagOnShare, 5, "shareClick", "分享视频奖励"}
view = &ExpOper{ExpFlagOnView, 5, "watch", "观看视频奖励"}
email = &ExpOper{ExpFlagOnEmail, 20, "bindEmail", "绑定邮箱奖励"}
safe = &ExpOper{ExpFlagOnSafe, 30, "pwdPro", "设置密保奖励"}
phone = &ExpOper{ExpFlagOnPhone, 100, "bindPhone", "绑定手机奖励"}
identify = &ExpOper{ExpFlagOnIdentify, 50, "realIdentity", "实名认证奖励"}
// ExpFlagOper exp flag map for oper
ExpFlagOper = map[string]*ExpOper{"login": login, "share": share, "view": view, "email": email, "phone": phone, "safe": safe, "identify": identify}
)
// Exp userexp for mysql scan.
type Exp struct {
Mid int64 `json:"mid"`
Exp float32 `json:"exp"`
Mtime xtime.Time `json:"modify_time"`
}
// ExpLog user exp log for mysql
type ExpLog struct {
Mid int64 `json:"mid"`
FromExp float32 `json:"from_exp"`
ToExp float32 `json:"to_exp"`
Operater string `json:"operater"`
Reason string `json:"reason"`
Action int64 `json:"actin_id"`
Mtime xtime.Time `json:"modify_time"`
}
// NewExp userexp for mysql scan.
type NewExp struct {
Mid int64 `json:"mid"`
Exp int64 `json:"exp"`
Flag int32 `json:"flag"`
Addtime xtime.Time `json:"addtime"`
Mtime xtime.Time `json:"mtime"`
}
// ExpOper exp operation
type ExpOper struct {
Flag int32
Count int64
Oper string
Reason string
}
// Message binlog databus msg.
type Message struct {
Action string `json:"action"`
Table string `json:"table"`
New json.RawMessage `json:"new"`
Old json.RawMessage `json:"old"`
}
//Flag is.
type Flag struct {
Mid int64 `json:"mid,omitempty"`
Flag int64 `json:"finish_action"`
Exp int64 `json:"modify_exp"`
}
// UserLog user log.
type UserLog struct {
Mid int64 `json:"mid"`
IP string `json:"ip"`
TS int64 `json:"ts"`
LogID string `json:"log_id"`
Content map[string]string `json:"content"`
}
// AddExp databus add exp arg.
type AddExp struct {
Event string `json:"event,omitempty"`
Mid int64 `json:"mid,omitempty"`
IP string `json:"ip,omitempty"`
Ts int64 `json:"ts,omitempty"`
}
// LoginLog user login log.
type LoginLog struct {
Mid int64 `json:"mid,omitempty"`
Loginip int64 `json:"loginip,omitempty"`
Timestamp int64 `json:"timestamp,omitempty"`
}
// LoginLogIPString user login log message with string ip.
type LoginLogIPString struct {
Mid int64 `json:"mid,omitempty"`
Loginip string `json:"loginip,omitempty"`
Timestamp int64 `json:"timestamp,omitempty"`
}
// FaceCheckRes face check result.
type FaceCheckRes struct {
FileName string `json:"file_name,omitempty"`
Bucket string `json:"bucket,omitempty"`
Sex float64 `json:"sex,omitempty"`
Politics float64 `json:"politics,omitempty"`
}
// FacePath is
func (fcr *FaceCheckRes) FacePath() string {
return fmt.Sprintf("/bfs/%s/%s", fcr.Bucket, fcr.FileName)
}
//String is.
func (fcr *FaceCheckRes) String() string {
return fmt.Sprintf("Sex: %.4f, Politics: %.4f", fcr.Sex, fcr.Politics)
}
// MemberMid member mid
type MemberMid struct {
Mid int64 `json:"mid"`
}
// MemberAso member aso
type MemberAso struct {
Email string `json:"email"`
Telphone string `json:"telphone"`
SafeQs int8 `json:"safe_question"`
Spacesta int8 `json:"spacesta"`
}
// ExpMessage exp msg
type ExpMessage struct {
Mid int64 `json:"mid"`
Exp int64 `json:"exp"`
}
// FlagDailyReset reset daily flag with ts.
func (e *NewExp) FlagDailyReset(now time.Time) {
e.Flag = e.Flag & ^0x7
e.Addtime = RestrictDate(xtime.Time(now.Unix()))
}
// RestrictDate restric user brithday
func RestrictDate(xt xtime.Time) xtime.Time {
t := xt.Time()
year := t.Year()
if year < 0 {
year = 0
}
return xtime.Time(time.Date(year, t.Month(), t.Day(), 0, 0, 0, 0, t.Location()).Unix())
}
// UUID4 is generate uuid
func UUID4() string {
return uuid.NewV4().String()
}