123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 |
- package model
- import (
- "active/constant"
- "encoding/json"
- "fmt"
- "io/ioutil"
- "log"
- "time"
- "git.jiaxianghudong.com/go/logs"
- "git.jiaxianghudong.com/webs/pkg/rds"
- "gopkg.in/yaml.v2"
- )
- var InviteBeanConf = &InviteBeanConfig{}
- var InviteBeanConf2 = &InviteBeanConfig2{}
- var invitebeanExpireAt int32
- // 邮件内容
- type appDownloadMail struct {
- Title string `json:"title" yaml:"title" config:"title"`
- Content string `json:"content" yaml:"content" config:"content"`
- Awards [][]int32 `json:"awards" yaml:"awards" config:"awards"`
- }
- type InviteBeanConfig struct {
- Count int64 `json:"count" yaml:"count"`
- AwardList []Award `json:"award_list" yaml:"award_list"`
- Appdownload_Opentag []string `json:"appdownload_opentag" yaml:"appdownload_opentag" ` //落地页app下载开放的平台
- Appdownload_Code string `json:"appdownload_code" yaml:"appdownload_code"` //落地页app下载带的标识码
- Appdownload_Mail appDownloadMail `json:"appdownload_mail" yaml:"appdownload_mail"` //落地页app下载邮件
- }
- type InviteBeanConfig2 struct {
- Count int64 `json:"count" yaml:"count"`
- AwardList2 []Award `json:"award_list" yaml:"award_list2"`
- Appdownload_Opentag []string `json:"appdownload_opentag" yaml:"appdownload_opentag" ` //落地页app下载开放的平台
- Appdownload_Code string `json:"appdownload_code" yaml:"appdownload_code"` //落地页app下载带的标识码
- Appdownload_Mail appDownloadMail `json:"appdownload_mail" yaml:"appdownload_mail"` //落地页app下载邮件
- Versionupdate_Mail appDownloadMail `json:"versionupdate_mail" yaml:"versionupdate_mail"` //版本更新邮件
- Appdownload_Opentag_Jx []string `json:"appdownload_opentag_jx" yaml:"appdownload_opentag_jx" ` //家乡包落地页app下载开放的平台
- Appdownload_Code_Jx string `json:"appdownload_code_jx" yaml:"appdownload_code_jx"` //家乡包落地页app下载带的标识码
- Appdownload_Mail_Jx appDownloadMail `json:"appdownload_mail_jx" yaml:"appdownload_mail_jx"` //家乡包落地页app下载邮件
- }
- type InviteRecord struct {
- Record []*Record `json:"record"`
- }
- type Record struct {
- UserInfo
- Status bool `json:"status"`
- Reason string `json:"reason"`
- Time int64 `json:"time"`
- }
- type Award struct {
- ShareType int64 `json:"share_type" yaml:"share_type"`
- Count int64 `json:"count" yaml:"count"`
- IsReceive bool `json:"is_receive"`
- Min int64 `json:"-" yaml:"min"`
- Max int64 `json:"-" yaml:"max"`
- Data []Data `json:"data" yaml:"data"`
- UserInfoList []UserInfo `json:"user_info_list"`
- }
- //获取奖品信息
- type Data struct {
- Id int64 `json:"id" yaml:"id"` //奖品id
- Count int64 `json:"count" yaml:"count"`
- Tag string `json:"tag" yaml:"tag"`
- Min int64 `json:"-" yaml:"min"`
- Max int64 `json:"-" yaml:"max"`
- }
- type UserInfo struct {
- UserId int64 `json:"user_id"`
- Url string `json:"url"`
- NickName string `json:"nick_name"`
- Sex int64 `json:"sex"` // 0女1男
- }
- func (this *InviteBeanConfig) GetConf(file string) {
- yamlFile, err := ioutil.ReadFile(fmt.Sprintf("./yaml/%v", file))
- if err != nil {
- log.Printf("yamlFile.Get err #%v ", err)
- }
- err = yaml.Unmarshal(yamlFile, this)
- if err != nil {
- log.Fatalf("Unmarshal: %v", err)
- }
- return
- }
- func (this *InviteBeanConfig2) GetConf(file string) {
- yamlFile, err := ioutil.ReadFile(fmt.Sprintf("./yaml/%v", file))
- if err != nil {
- log.Printf("yamlFile.Get err #%v ", err)
- }
- err = yaml.Unmarshal(yamlFile, this)
- if err != nil {
- log.Fatalf("Unmarshal: %v", err)
- }
- //log.Printf("%+v \n", *this)
- return
- }
- type InviteBeanList struct {
- List []InviteBean `json:"list"`
- }
- type InviteBean struct {
- IsReceive bool `json:"is_receive"`
- UserInfoList []UserInfo `json:"user_info_list"`
- }
- //获得储存信息数据
- func GetInviteBeanData(UserID string, tm string, endTm string) *InviteBeanList {
- //log.Println("key:",fmt.Sprintf(constant.INVITEBEANDATA,tm),UserID)
- data := rds.Redis.HGet(fmt.Sprintf(constant.INVITEBEANDATA, tm), UserID).Val()
- inviteBeanList := &InviteBeanList{}
- if data != "" { //有值状态下
- err := json.Unmarshal([]byte(data), inviteBeanList)
- if err != nil {
- logs.Errorf("redpacket[%s] GetInviteBeanData json err:%v", UserID, err)
- return inviteBeanList
- }
- } else { //如果没有值的话
- //log.Println("new ",UserID)
- for _ = range InviteBeanConf.AwardList {
- inviteBeanList.List = append(inviteBeanList.List, InviteBean{})
- }
- }
- return inviteBeanList
- }
- func GetInviteRecord(userID string, tm string) *InviteRecord {
- data := rds.Redis.HGet(fmt.Sprintf(constant.INVITERECORD, tm), userID).Val()
- inviteRecord := &InviteRecord{}
- if data != "" { //有值状态下
- json.Unmarshal([]byte(data), inviteRecord)
- }
- return inviteRecord
- }
- func (this *InviteRecord) SetInviteRecord(userID string, tm string, endTm string) {
- data, _ := json.Marshal(this)
- rds.Redis.HSet(fmt.Sprintf(constant.INVITERECORD, tm), userID, string(data))
- end, _ := time.Parse("2006-01-02 15:04:05", endTm)
- expireAt := end.Add(constant.REBATEDATATIMEOUT)
- rds.Redis.ExpireAt(fmt.Sprintf(constant.INVITERECORD, tm), expireAt)
- }
- //设置数据值
- func (this *InviteBeanList) SetInviteBeanData(UserID string, tm string, endTm string) bool {
- data, _ := json.Marshal(this)
- rds.Redis.HSet(fmt.Sprintf(constant.INVITEBEANDATA, tm), UserID, string(data))
- //if atomic.CompareAndSwapInt32(&invitebeanExpireAt, 0, 1) {
- end, _ := time.Parse("2006-01-02 15:04:05", endTm)
- expireAt := end.Add(constant.REBATEDATATIMEOUT)
- // log.Printf("---更新领取百万豆数据过期时间: expireAt:%v \n", expireAt)
- rds.Redis.ExpireAt(fmt.Sprintf(constant.INVITEBEANDATA, tm), expireAt)
- rds.Redis.ExpireAt(fmt.Sprintf(constant.INVITEBEANUSER, tm), expireAt)
- //log.Printf("---更新领取百万豆被邀请人数据过期时间: expireAt:%v \n", expireAt)
- //}
- return true
- }
- //得到受邀用户id值,来判断是否被邀请过了
- func GetInviteBeanUser(UserID string, tm string) string {
- data := rds.Redis.HGet(fmt.Sprintf(constant.INVITEBEANUSER, tm), UserID).Val()
- return data
- }
- //设置收到邀请的人数
- func SetInviteBeanUser(UserID string, tm string, endTm string) bool {
- rds.Redis.HSet(fmt.Sprintf(constant.INVITEBEANUSER, tm), UserID, "1") //
- return true
- }
|