package bizhi import ( models2 "duoduo/apis/bizhi/models" orm "duoduo/database" "duoduo/tools" "fmt" "github.com/jinzhu/gorm" "strconv" ) type User struct { ID int64 `gorm:"column:id;type:bigint(20);primary_key;AUTO_INCREMENT" json:"id"` // 主键 Phone string `gorm:"column:phone;type:varchar(24)" json:"phone"` // 手机号 OpenID1 string `gorm:"column:open_id_1;type:varchar(255)" json:"openId1"` // 上级open_id NickName string `gorm:"column:nick_name;type:varchar(255)" json:"nickName"` // 微信用户名 AvatarUrl string `gorm:"column:avatar_url;type:varchar(255)" json:"avatarUrl"` // 头像url Admin int `gorm:"column:admin;type:int(11)" json:"admin"` // 1-管理员 OpenID string `gorm:"column:open_id;type:varchar(255)" json:"openId"` // open_id CreateTime string `gorm:"column:create_time;type:datetime" json:"createTime"` // 创建时间 UpdateTime string `gorm:"column:update_time;type:datetime" json:"updateTime"` // 更新时间 Score int `gorm:"column:score;type:int(11)" json:"score"` // 积分 } func (m *User) TableName() string { return "user" } func (u *User) GetNum() int { var count int tableCount := orm.BzMysql.Table(u.TableName()).Where("open_id = ? ", u.OpenID) tableCount.Count(&count) return count } func (u *User) Create() (User, error) { var doc User var err error tx := orm.BzMysql.Begin() defer func() { if err != nil { tx.Rollback() } else { tx.Commit() } }() if u.OpenID1 != "" { //有上级 var score ScoreLogs err := tx.Table(u.TableName()).Create(&u).Error if err != nil { fmt.Println(err) return doc, err } score.Des = "新用户赠送积分" score.OpenID = u.OpenID score.Score = 3 score.Type = 1 score.CreateTime = tools.GetCurrntTimeStr() err = tx.Table("score_log").Create(&score).Error if err != nil { fmt.Println(err) return doc, err } score.Des = "邀请好友赠送积分" score.OpenID = u.OpenID1 score.Score = 2 score.Type = 4 score.CreateTime = tools.GetCurrntTimeStr() err = tx.Table("score_log").Create(&score).Error if err != nil { fmt.Println(err) return doc, err } //更新用户积分 scoreStr := strconv.Itoa(2) if err := tx.Table(u.TableName()).Where("open_id = ? ", u.OpenID1).Updates( map[string]interface{}{ "score": gorm.Expr("score + ?", scoreStr), "update_time": tools.GetCurrntTimeStr()}).Error; err != nil { return doc, err } } else { var score ScoreLog err := tx.Table(u.TableName()).Create(&u).Error if err != nil { fmt.Println(err) return doc, err } score.Des = "新用户赠送积分" score.OpenID = u.OpenID score.Score = 3 score.Type = 1 score.CreateTime = tools.GetCurrntTimeStr() err = tx.Table("score_log").Create(&score).Error if err != nil { fmt.Println(err) return doc, err } } doc = *u return doc, nil } func (u *User) GetScore() (User, error) { var doc User if err := orm.BzMysql.Table(u.TableName()).Where("open_id = ?", u.OpenID).Select("*").First(&doc).Error; err != nil { return doc, err } return doc, nil } func (u *User) SubScore(req models2.SubUserScoreRequest) error { var score ScoreLog var err error tx := orm.BzMysql.Begin() defer func() { if err != nil { tx.Rollback() } else { tx.Commit() } }() score.Score = req.Score score.OpenID = req.OpenId score.Des = req.Des score.CreateTime = tools.GetCurrntTimeStr() score.Type = req.Type //scoreStr := strconv.Itoa(req.Score) //scoreStr := tools.IntToString(req.Score) if err := tx.Table(u.TableName()).Model(&u).Where("open_id = ? ", u.OpenID).Updates( map[string]interface{}{ "score": gorm.Expr("score + ?", req.Score), "update_time": tools.GetCurrntTimeStr()}).Error; err != nil { return err } if err := tx.Table(score.TableName()).Create(&score).Error; err != nil { return err } return nil } //list 接口使用 func (u *User) GetOpenIdList(pageSize int, pageIndex int) ([]User, int, error) { var doc []User table := orm.BzMysql.Table(u.TableName()) table = table.Where("open_id_1 = ? ", u.OpenID) var count int if err := table.Select("id,nick_name,avatar_url,DATE_FORMAT(create_time,'%Y-%m-%d %H:%i:%s') as create_time").Order("id desc").Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&doc).Error; err != nil { return nil, 0, err } table.Count(&count) return doc, count, nil } func (u *User) UpdateUserName() error { if err := orm.BzMysql.Table(u.TableName()).Model(&u).Where("open_id = ? ", u.OpenID).Updates( map[string]interface{}{ "nick_name": u.NickName, "avatar_url": u.AvatarUrl, "update_time": tools.GetCurrntTimeStr()}).Error; err != nil { return err } return nil }