|
@@ -4,6 +4,8 @@ import (
|
|
|
models2 "duoduo/apis/bizhi/models"
|
|
|
orm "duoduo/database"
|
|
|
"duoduo/tools"
|
|
|
+ "fmt"
|
|
|
+ "github.com/jinzhu/gorm"
|
|
|
"strconv"
|
|
|
)
|
|
|
|
|
@@ -33,18 +35,80 @@ func (u *User) GetNum() int {
|
|
|
}
|
|
|
func (u *User) Create() (User, error) {
|
|
|
var doc User
|
|
|
- result := orm.Eloquent.Table(u.TableName()).Create(&u)
|
|
|
- if result.Error != nil {
|
|
|
- err := result.Error
|
|
|
- return doc, err
|
|
|
+ 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("score").First(&doc).Error; err != nil {
|
|
|
+ if err := orm.BzMysql.Table(u.TableName()).Where("open_id = ?", u.OpenID).Select("*").First(&doc).Error; err != nil {
|
|
|
return doc, err
|
|
|
}
|
|
|
return doc, nil
|
|
@@ -63,13 +127,15 @@ func (u *User) SubScore(req models2.SubUserScoreRequest) error {
|
|
|
}()
|
|
|
score.Score = req.Score
|
|
|
score.OpenID = req.OpenId
|
|
|
-
|
|
|
+ score.Des = req.Des
|
|
|
score.CreateTime = tools.GetCurrntTimeStr()
|
|
|
- scoreStr := strconv.Itoa(req.Score)
|
|
|
+ score.Type = req.Type
|
|
|
+
|
|
|
|
|
|
if err := tx.Table(u.TableName()).Model(&u).Where("open_id = ? ", u.OpenID).Updates(
|
|
|
map[string]interface{}{
|
|
|
- "score": "score + " + scoreStr}).Error; err != nil {
|
|
|
+ "score": gorm.Expr("score + ?", req.Score),
|
|
|
+ "update_time": tools.GetCurrntTimeStr()}).Error; err != nil {
|
|
|
return err
|
|
|
}
|
|
|
|
|
@@ -95,3 +161,15 @@ func (u *User) GetOpenIdList(pageSize int, pageIndex int) ([]User, int, error) {
|
|
|
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
|
|
|
+}
|