front.go 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. package front
  2. import (
  3. qu "qfw/util"
  4. "time"
  5. . "../util"
  6. "github.com/go-xweb/xweb"
  7. "gopkg.in/mgo.v2/bson"
  8. )
  9. type Front struct {
  10. *xweb.Action
  11. login xweb.Mapper `xweb:"/"` //登录页面
  12. index xweb.Mapper `xweb:"/front/index"` //index页面
  13. logout xweb.Mapper `xweb:"/front/logout"` //注销
  14. updatePwd xweb.Mapper `xweb:"/front/updatepwd"` //更新密码
  15. //user
  16. user xweb.Mapper `xweb:"/front/user"` //查所有用户
  17. userDel xweb.Mapper `xweb:"/front/user/del"` //删除用户
  18. userSave xweb.Mapper `xweb:"/front/user/save"` //保存用户
  19. //menu
  20. menu xweb.Mapper `xweb:"/front/menu"` //查一级菜单
  21. menuSave xweb.Mapper `xweb:"/front/menu/save"` //保存一级菜单
  22. menuDel xweb.Mapper `xweb:"/front/menu/del"` //删除一级菜单
  23. menuSecond xweb.Mapper `xweb:"/front/menuSecond"` //查二级菜单
  24. menuSecondSave xweb.Mapper `xweb:"/front/menuSecond/save"` //保存二级菜单
  25. menuSecondDel xweb.Mapper `xweb:"/front/menuSecond/del"` //删除二级菜单
  26. }
  27. func (f *Front) Login() {
  28. defer qu.Catch()
  29. if f.Method() == "POST" {
  30. email := f.GetString("email")
  31. password := f.GetString("pwd")
  32. //f.SetSession("password", password)
  33. passwordEn := qu.SE.EncodeString(password)
  34. query := bson.M{
  35. "s_email": email,
  36. "s_pwd": passwordEn,
  37. }
  38. user, _ := Mgo.FindOne("user", query)
  39. checked := false
  40. if (*user) != nil {
  41. checked = true
  42. f.SetSession("user", map[string]interface{}{
  43. "name": (*user)["s_name"],
  44. "role": (*user)["s_role"],
  45. "pwd": password,
  46. "email": email,
  47. "id": qu.BsonIdToSId((*user)["_id"]),
  48. })
  49. }
  50. f.ServeJson(map[string]interface{}{
  51. "checked": checked,
  52. })
  53. } else {
  54. f.Render("login.html")
  55. }
  56. }
  57. func (f *Front) Index() {
  58. defer qu.Catch()
  59. f.Render("index.html")
  60. }
  61. func (f *Front) Logout() {
  62. f.DelSession("user")
  63. f.Redirect("/")
  64. }
  65. func (f *Front) UpdatePwd() {
  66. defer qu.Catch()
  67. id := f.GetString("id")
  68. password := f.GetString("pwd")
  69. set := bson.M{
  70. "$set": bson.M{
  71. "s_pwd": qu.SE.EncodeString(password),
  72. },
  73. }
  74. if Mgo.UpdateById("user", id, set) {
  75. sessionuser := f.GetSession("user").(map[string]interface{})
  76. sessionuser["pwd"] = password
  77. f.SetSession("user", sessionuser)
  78. }
  79. }
  80. func (f *Front) User() {
  81. defer qu.Catch()
  82. if f.Method() == "POST" {
  83. data, _ := Mgo.Find("user", nil, `{"_id":1}`, nil, false, -1, -1)
  84. for _, d := range *data {
  85. d["s_pwd"] = qu.SE.DecodeString(qu.ObjToString(d["s_pwd"]))
  86. }
  87. f.ServeJson(map[string]interface{}{
  88. "data": data,
  89. })
  90. } else {
  91. f.Render("com/user.html")
  92. }
  93. }
  94. func (f *Front) UserDel() {
  95. defer qu.Catch()
  96. _id := f.GetString("_id")
  97. query := bson.M{
  98. "_id": qu.StringTOBsonId(_id),
  99. }
  100. b := Mgo.Del("user", query)
  101. f.ServeJson(map[string]interface{}{
  102. "rep": b,
  103. })
  104. }
  105. func (f *Front) UserSave() {
  106. _id := f.GetString("_id")
  107. role := f.GetString("role")
  108. name := f.GetString("name")
  109. email := f.GetString("email")
  110. pwd := f.GetString("pwd")
  111. set := bson.M{
  112. "$set": bson.M{
  113. "s_role": role,
  114. "s_name": name,
  115. "s_email": email,
  116. "s_pwd": qu.SE.EncodeString(pwd),
  117. "i_comeintime": time.Now().Unix(),
  118. },
  119. }
  120. query := bson.M{
  121. "_id": qu.StringTOBsonId(_id),
  122. }
  123. if _id == "" {
  124. query = bson.M{
  125. "_id": bson.NewObjectId(),
  126. }
  127. }
  128. b := Mgo.Update("user", query, set, true, false)
  129. //b := Mgo.UpdateById("user", _id, set)
  130. f.ServeJson(map[string]interface{}{
  131. "rep": b,
  132. })
  133. }