| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 | package bizhiimport (	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}
 |