front.go 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. package front
  2. import (
  3. "app.yhyue.com/moapp/jybase/common"
  4. "app.yhyue.com/moapp/jybase/encrypt"
  5. "app.yhyue.com/moapp/jybase/go-xweb/xweb"
  6. "app.yhyue.com/moapp/jybase/mongodb"
  7. "cmplatform/util"
  8. "go.mongodb.org/mongo-driver/bson"
  9. "go.mongodb.org/mongo-driver/bson/primitive"
  10. "strconv"
  11. "time"
  12. )
  13. var UserMenu map[string][]map[string]interface{} //存储菜单
  14. func init() {
  15. UserMenu = make(map[string][]map[string]interface{})
  16. }
  17. type Front struct {
  18. *xweb.Action
  19. login xweb.Mapper `xweb:"/"` //登录页面
  20. index xweb.Mapper `xweb:"/front/index"` //index页面
  21. logout xweb.Mapper `xweb:"/front/logout"` //注销
  22. updatePwd xweb.Mapper `xweb:"/front/updatepwd"` //更新密码
  23. //user
  24. user xweb.Mapper `xweb:"/front/user"` //查所有用户
  25. userDel xweb.Mapper `xweb:"/front/user/del"` //删除用户
  26. userSave xweb.Mapper `xweb:"/front/user/save"` //保存用户
  27. //menu
  28. menu xweb.Mapper `xweb:"/front/menu"` //查一级菜单
  29. menuSave xweb.Mapper `xweb:"/front/menu/save"` //保存一级菜单
  30. menuDel xweb.Mapper `xweb:"/front/menu/del"` //删除一级菜单
  31. menuSecond xweb.Mapper `xweb:"/front/menuSecond"` //查二级菜单
  32. menuSecondSave xweb.Mapper `xweb:"/front/menuSecond/save"` //保存二级菜单
  33. menuSecondDel xweb.Mapper `xweb:"/front/menuSecond/del"` //删除二级菜单
  34. personalMenu xweb.Mapper `xweb:"/front/personalMenu"`
  35. //role
  36. roleManager xweb.Mapper `xweb:"/front/role"` //角色权限管理
  37. roleNew xweb.Mapper `xweb:"/front/role/save"` //新增角色
  38. roleEdit xweb.Mapper `xweb:"/front/role/edit/(.*)"` //角色权限查看
  39. roleFirst xweb.Mapper `xweb:"/front/role/first"` //一级权限的查看
  40. roleSecond xweb.Mapper `xweb:"/front/role/second"` //二级权限的查看
  41. roleSave xweb.Mapper `xweb:"/front/role/edit/save"` //权限编辑保存
  42. roleDel xweb.Mapper `xweb:"/front/role/edit/del"` //权限编辑删除
  43. roleSecondEdit xweb.Mapper `xweb:"/front/role/second/edit"` //二级权限编辑
  44. }
  45. func (f *Front) Login() {
  46. defer common.Catch()
  47. if f.Method() == "POST" {
  48. email := f.GetString("email")
  49. password := f.GetString("pwd")
  50. passwordEn := encrypt.SE.EncodeString(password)
  51. query := bson.M{
  52. "s_email": email,
  53. "s_pwd": passwordEn,
  54. }
  55. user, _ := util.Mgo.FindOne("user", query)
  56. checked := false
  57. s_id := ""
  58. if user != nil && len(*user) > 0 {
  59. checked = true
  60. f.SetSession("user", map[string]interface{}{
  61. "name": (*user)["s_name"],
  62. "role": (*user)["s_role"],
  63. "pwd": password,
  64. "email": email,
  65. "id": mongodb.BsonIdToSId((*user)["_id"]),
  66. })
  67. UserMenu[email] = GetUserMenu(common.ObjToString((*user)["s_role"]))
  68. if common.ObjToString((*user)["s_role"]) == "3" {
  69. users, ok := util.Mgo.FindOne("cuser", map[string]interface{}{"s_name": (*user)["s_name"], "b_delete": false})
  70. if users != nil && ok {
  71. s_id = mongodb.BsonIdToSId((*users)["_id"])
  72. }
  73. }
  74. }
  75. f.ServeJson(map[string]interface{}{
  76. "checked": checked,
  77. "role": (*user)["s_role"],
  78. "id": s_id,
  79. })
  80. } else {
  81. f.Render("login.html")
  82. }
  83. }
  84. func (f *Front) Index() {
  85. defer common.Catch()
  86. f.Render("index.html")
  87. }
  88. func (f *Front) Logout() {
  89. f.DelSession("user")
  90. f.Redirect("/")
  91. }
  92. func (f *Front) UpdatePwd() {
  93. defer common.Catch()
  94. id := f.GetString("id")
  95. password := f.GetString("pwd")
  96. set := bson.M{
  97. "$set": bson.M{
  98. "s_pwd": encrypt.SE.EncodeString(password),
  99. },
  100. }
  101. if util.Mgo.UpdateById("user", id, set) {
  102. sessionuser := f.GetSession("user").(map[string]interface{})
  103. sessionuser["pwd"] = password
  104. f.SetSession("user", sessionuser)
  105. }
  106. }
  107. func (f *Front) User() {
  108. defer common.Catch()
  109. role, _ := util.Mgo.Find("role", nil, nil, nil, false, -1, -1)
  110. roleMap := make(map[string]string)
  111. for _, v := range *role {
  112. level := common.ObjToString(v["level"])
  113. if level != "" {
  114. roleMap[level] = common.ObjToString(v["name"])
  115. }
  116. }
  117. if f.Method() == "POST" {
  118. query := bson.M{
  119. "s_role": bson.M{
  120. "$ne": "0",
  121. },
  122. }
  123. data, _ := util.Mgo.Find("user", query, `{"_id":1}`, nil, false, -1, -1)
  124. for _, d := range *data {
  125. d["s_pwd"] = encrypt.SE.DecodeString(common.ObjToString(d["s_pwd"]))
  126. d["role_name"] = roleMap[common.ObjToString(d["s_role"])]
  127. }
  128. f.ServeJson(map[string]interface{}{
  129. "data": data,
  130. })
  131. } else {
  132. f.T["role"] = roleMap
  133. f.Render("com/user.html", &f.T)
  134. }
  135. }
  136. func (f *Front) UserDel() {
  137. defer common.Catch()
  138. _id := f.GetString("_id")
  139. query := bson.M{
  140. "_id": mongodb.StringTOBsonId(_id),
  141. }
  142. b := util.Mgo.Del("user", query)
  143. f.ServeJson(map[string]interface{}{
  144. "rep": b,
  145. })
  146. }
  147. func (f *Front) UserSave() {
  148. _id := f.GetString("_id")
  149. role := f.GetString("role")
  150. name := f.GetString("name")
  151. email := f.GetString("email")
  152. pwd := f.GetString("pwd")
  153. set := bson.M{
  154. "$set": bson.M{
  155. "s_role": role,
  156. "s_name": name,
  157. "s_email": email,
  158. "s_pwd": encrypt.SE.EncodeString(pwd),
  159. "i_comeintime": time.Now().Unix(),
  160. },
  161. }
  162. query := bson.M{
  163. "_id": mongodb.StringTOBsonId(_id),
  164. }
  165. if _id == "" {
  166. query = bson.M{
  167. "_id": primitive.NewObjectID(),
  168. }
  169. }
  170. b := util.Mgo.Update("user", query, set, true, false)
  171. //b := util.Mgo.UpdateById("user", _id, set)
  172. f.ServeJson(map[string]interface{}{
  173. "rep": b,
  174. })
  175. }
  176. func (f *Front) PersonalMenu() {
  177. user := f.GetSession("user").(map[string]interface{})
  178. list := UserMenu[common.ObjToString(user["email"])]
  179. f.ServeJson(map[string]interface{}{
  180. "data": list,
  181. })
  182. }
  183. func GetUserMenu(role string) []map[string]interface{} {
  184. var list []map[string]interface{}
  185. maps := map[string]interface{}{
  186. "delete": false,
  187. }
  188. if role != "0" {
  189. maps["role."+role] = true
  190. }
  191. data, _ := util.Mgo.Find("menu_first", maps, nil, nil, false, -1, -1)
  192. for _, d := range *data {
  193. _id := d["_id"]
  194. maps = map[string]interface{}{
  195. "delete": false,
  196. "s_pid": mongodb.BsonIdToSId(_id),
  197. }
  198. if role != "0" {
  199. maps["role."+role] = true
  200. }
  201. secdatas, _ := util.Mgo.Find("menu_second", maps, nil, nil, false, -1, -1)
  202. secmenumap := map[string]interface{}{}
  203. for index, secdata := range *secdatas {
  204. secmenumap[strconv.Itoa(index+1)] = secdata
  205. }
  206. if len(secmenumap) != 0 {
  207. d["secondmenu"] = secmenumap
  208. }
  209. list = append(list, d)
  210. }
  211. return list
  212. }