user.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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. "gorm.io/driver/mysql"
  10. "gorm.io/gorm"
  11. )
  12. /**
  13. 美天旺的 iuser 实现
  14. 同时可能支持所有基于 crmeb 的应用
  15. */
  16. var (
  17. db *gorm.DB
  18. )
  19. func InitDb() {
  20. dbc := config.C.Database
  21. dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8&parseTime=True&loc=Local",
  22. dbc.Username, dbc.Password, dbc.Server, dbc.Port, dbc.Db)
  23. var err error
  24. db, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
  25. if err != nil {
  26. panic("connect to twong database failed.")
  27. }
  28. }
  29. type TwUser struct {
  30. Uid uint64
  31. Nickname string
  32. Avatar string
  33. }
  34. type Twong struct{}
  35. func NewTwongUser() user.IUser {
  36. return &Twong{}
  37. }
  38. func (self *Twong) GetVisitorInfo(key interface{}) (*models.Visitor, error) {
  39. uid, ok := key.(uint64)
  40. if !ok {
  41. return nil, errors.New("参数错误")
  42. }
  43. var u TwUser
  44. db.Where("uid=?", uid).First(&u)
  45. if u.Uid != uid {
  46. return nil, errors.New("用户不存在")
  47. }
  48. return &models.Visitor{
  49. Name: u.Nickname,
  50. Avator: u.Avatar,
  51. VisitorId: self.GenVisitorId(key),
  52. }, nil
  53. }
  54. func (self *Twong) GetKeFuInfo(key interface{}) (*models.User, error) {
  55. return nil, nil
  56. }
  57. func (self *Twong) GenVisitorId(key interface{}) string {
  58. // 用 md5 就行?
  59. uid, ok := key.(uint64)
  60. if !ok {
  61. panic("bad uid")
  62. }
  63. suid := fmt.Sprintf("%v", uid)
  64. return tools.Md5(suid)
  65. }