user.go 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package bizhi
  2. import (
  3. models2 "duoduo/apis/bizhi/models"
  4. orm "duoduo/database"
  5. "duoduo/tools"
  6. "strconv"
  7. )
  8. type User struct {
  9. ID int64 `gorm:"column:id;type:bigint(20);primary_key;AUTO_INCREMENT" json:"id"` // 主键
  10. Phone string `gorm:"column:phone;type:varchar(24)" json:"phone"` // 手机号
  11. OpenID1 string `gorm:"column:open_id_1;type:varchar(255)" json:"openId1"` // 上级open_id
  12. NickName string `gorm:"column:nick_name;type:varchar(255)" json:"nickName"` // 微信用户名
  13. AvatarUrl string `gorm:"column:avatar_url;type:varchar(255)" json:"avatarUrl"` // 头像url
  14. Admin int `gorm:"column:admin;type:int(11)" json:"admin"` // 1-管理员
  15. OpenID string `gorm:"column:open_id;type:varchar(255)" json:"openId"` // open_id
  16. CreateTime string `gorm:"column:create_time;type:datetime" json:"createTime"` // 创建时间
  17. UpdateTime string `gorm:"column:update_time;type:datetime" json:"updateTime"` // 更新时间
  18. Score int `gorm:"column:score;type:int(11)" json:"score"` // 积分
  19. }
  20. func (m *User) TableName() string {
  21. return "user"
  22. }
  23. func (u *User) GetNum() int {
  24. var count int
  25. tableCount := orm.BzMysql.Table(u.TableName()).Where("open_id = ? ", u.OpenID)
  26. tableCount.Count(&count)
  27. return count
  28. }
  29. func (u *User) Create() (User, error) {
  30. var doc User
  31. result := orm.Eloquent.Table(u.TableName()).Create(&u)
  32. if result.Error != nil {
  33. err := result.Error
  34. return doc, err
  35. }
  36. doc = *u
  37. return doc, nil
  38. }
  39. func (u *User) GetScore() (User, error) {
  40. var doc User
  41. if err := orm.BzMysql.Table(u.TableName()).Where("open_id = ?", u.OpenID).Select("score").First(&doc).Error; err != nil {
  42. return doc, err
  43. }
  44. return doc, nil
  45. }
  46. func (u *User) SubScore(req models2.SubUserScoreRequest) error {
  47. var score ScoreLog
  48. var err error
  49. tx := orm.BzMysql.Begin()
  50. defer func() {
  51. if err != nil {
  52. tx.Rollback()
  53. } else {
  54. tx.Commit()
  55. }
  56. }()
  57. score.Score = req.Score
  58. score.OpenID = req.OpenId
  59. score.CreateTime = tools.GetCurrntTimeStr()
  60. scoreStr := strconv.Itoa(req.Score)
  61. //scoreStr := tools.IntToString(req.Score)
  62. if err := tx.Table(u.TableName()).Model(&u).Where("open_id = ? ", u.OpenID).Updates(
  63. map[string]interface{}{
  64. "score": "score + " + scoreStr}).Error; err != nil {
  65. return err
  66. }
  67. if err := tx.Table(score.TableName()).Create(&score).Error; err != nil {
  68. return err
  69. }
  70. return nil
  71. }
  72. //list 接口使用
  73. func (u *User) GetOpenIdList(pageSize int, pageIndex int) ([]User, int, error) {
  74. var doc []User
  75. table := orm.BzMysql.Table(u.TableName())
  76. table = table.Where("open_id_1 = ? ", u.OpenID)
  77. var count int
  78. 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 {
  79. return nil, 0, err
  80. }
  81. table.Count(&count)
  82. return doc, count, nil
  83. }