123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- 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
- }
|