user.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package twong
  2. import (
  3. "errors"
  4. "fmt"
  5. "git.wanbits.cc/sin/flytalk/config"
  6. "git.wanbits.cc/sin/flytalk/models"
  7. "git.wanbits.cc/sin/flytalk/tools"
  8. "git.wanbits.cc/sin/flytalk/user"
  9. "github.com/jinzhu/gorm"
  10. )
  11. /**
  12. 美天旺的 iuser 实现
  13. 同时可能支持所有基于 crmeb 的应用
  14. */
  15. const twong_confile = config.Dir + "twong.json"
  16. var (
  17. Db *gorm.DB
  18. )
  19. func init() {
  20. mysql := config.CreateMysql(twong_confile)
  21. dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8&parseTime=True&loc=Local", mysql.Username, mysql.Password, mysql.Server, mysql.Port, mysql.Database)
  22. var err error
  23. Db, err = gorm.Open("mysql", dsn)
  24. if err != nil {
  25. panic("美天旺数据库连接失败!")
  26. }
  27. Db.SingularTable(true)
  28. Db.LogMode(false)
  29. //DB.SetLogger(tools.Logger())
  30. Db.DB().SetMaxIdleConns(3)
  31. Db.DB().SetMaxOpenConns(30)
  32. }
  33. type TwUser struct {
  34. Uid uint64
  35. Nickname string
  36. Avatar string
  37. }
  38. type Twong struct{}
  39. func NewTwongUser() user.IUser {
  40. return &Twong{}
  41. }
  42. func (self *Twong) GetVisitorInfo(key interface{}) (*models.Visitor, error) {
  43. uid, ok := key.(uint64)
  44. if !ok {
  45. return nil, errors.New("参数错误")
  46. }
  47. var u TwUser
  48. Db.Where("uid=?", uid).First(&u)
  49. if u.Uid != uid {
  50. return nil, errors.New("用户不存在")
  51. }
  52. return &models.Visitor{
  53. Name: u.Nickname,
  54. Avator: u.Avatar,
  55. VisitorId: self.GenVisitorId(key),
  56. }, nil
  57. }
  58. func (self *Twong) GetKeFuInfo(key interface{}) (*models.User, error) {
  59. return nil, nil
  60. }
  61. func (self *Twong) GenVisitorId(key interface{}) string {
  62. // 用 md5 就行?
  63. uid, ok := key.(uint64)
  64. if !ok {
  65. panic("bad uid")
  66. }
  67. suid := fmt.Sprintf("%v", uid)
  68. return tools.Md5(suid)
  69. }