welcome.go 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. package controllers
  2. import (
  3. "box-gm/models"
  4. "box-gm/utils"
  5. "fmt"
  6. "log"
  7. "time"
  8. "github.com/astaxie/beego"
  9. "github.com/gomodule/redigo/redis"
  10. )
  11. type WelcomeController struct {
  12. beego.Controller
  13. }
  14. // 主界面
  15. // 通过c.Data[key]返回数据
  16. // ace模板文件通过{{.key}}获取数据
  17. func (c *WelcomeController) Get() {
  18. userinfo := c.GetSession("user")
  19. if userinfo == nil {
  20. c.Ctx.Redirect(302, "/accountlogin")
  21. return
  22. }
  23. username := userinfo.(*LoginInfo).Username
  24. c.Data["rolename"] = models.GetUserRoleName(username)
  25. c.Data["username"] = username
  26. c.Data["sharecode"] = models.GetUserShareCode(username)
  27. c.Data["token"] = models.GetToken()
  28. c.Data["sysTime"] = time.Unix(time.Now().Unix(), 0).Format("2006-01-02 15:04:05")
  29. //界面模板文件
  30. c.TplName = "welcome.tpl"
  31. }
  32. func (c *WelcomeController) Post() {
  33. if !models.CheckToken(c.GetString("token")) {
  34. c.Data["json"] = &map[string]interface{}{"status": false, "info": "操作失败,请重新刷新界面"}
  35. c.ServeJSON()
  36. return
  37. }
  38. userinfo := c.GetSession("user")
  39. if userinfo == nil {
  40. c.Ctx.Redirect(302, "/accountlogin")
  41. return
  42. }
  43. username := userinfo.(*LoginInfo).Username
  44. log.Printf("WelcomeController Post username[%s]", username)
  45. nUser := models.GetUserByUsername(username)
  46. if nUser == nil {
  47. c.Data["json"] = &map[string]interface{}{"status": false, "info": fmt.Sprintf("用户[%s]已存在", username)}
  48. c.ServeJSON()
  49. return
  50. }
  51. sharecode := c.GetString("sharecode")
  52. log.Printf("WelcomeController Post sharecode[%s]", sharecode)
  53. // 校验邀请码
  54. pool := utils.GetAccountRedisPool()
  55. if pool == nil {
  56. c.Data["json"] = &map[string]interface{}{"status": false, "info": "get redis pool fail"}
  57. c.ServeJSON()
  58. return
  59. }
  60. rd := pool.Get()
  61. defer rd.Close()
  62. result, _ := redis.Bool(rd.Do("sismember", "sharecode", sharecode))
  63. log.Printf("WelcomeController Post result[%v]", result)
  64. if result == true {
  65. c.Data["json"] = &map[string]interface{}{"status": false, "info": fmt.Sprintf("邀请码[%s]已占有!", sharecode)}
  66. c.ServeJSON()
  67. return
  68. }
  69. nUser.ShareCode = sharecode
  70. _, err := models.UpdateUser(nUser)
  71. if err != nil {
  72. c.Data["json"] = &map[string]interface{}{"status": false, "info": err}
  73. c.ServeJSON()
  74. return
  75. }
  76. rd.Do("sadd", "sharecode", sharecode)
  77. rd.Do("sadd", "sharecode:promoter", sharecode)
  78. c.Data["json"] = &map[string]interface{}{"status": true, "info": "更新用户成功"}
  79. c.ServeJSON()
  80. go models.SaveLog(username, "修改账号推广码", &map[string]interface{}{"username": username, "ShareCode": nUser.ShareCode})
  81. }