123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226 |
- package front
- import (
- "app.yhyue.com/moapp/jybase/common"
- "app.yhyue.com/moapp/jybase/encrypt"
- "app.yhyue.com/moapp/jybase/go-xweb/xweb"
- "app.yhyue.com/moapp/jybase/mongodb"
- "cmplatform/util"
- "go.mongodb.org/mongo-driver/bson"
- "go.mongodb.org/mongo-driver/bson/primitive"
- "strconv"
- "time"
- )
- var UserMenu map[string][]map[string]interface{} //存储菜单
- func init() {
- UserMenu = make(map[string][]map[string]interface{})
- }
- type Front struct {
- *xweb.Action
- login xweb.Mapper `xweb:"/"` //登录页面
- index xweb.Mapper `xweb:"/front/index"` //index页面
- logout xweb.Mapper `xweb:"/front/logout"` //注销
- updatePwd xweb.Mapper `xweb:"/front/updatepwd"` //更新密码
- //user
- user xweb.Mapper `xweb:"/front/user"` //查所有用户
- userDel xweb.Mapper `xweb:"/front/user/del"` //删除用户
- userSave xweb.Mapper `xweb:"/front/user/save"` //保存用户
- //menu
- menu xweb.Mapper `xweb:"/front/menu"` //查一级菜单
- menuSave xweb.Mapper `xweb:"/front/menu/save"` //保存一级菜单
- menuDel xweb.Mapper `xweb:"/front/menu/del"` //删除一级菜单
- menuSecond xweb.Mapper `xweb:"/front/menuSecond"` //查二级菜单
- menuSecondSave xweb.Mapper `xweb:"/front/menuSecond/save"` //保存二级菜单
- menuSecondDel xweb.Mapper `xweb:"/front/menuSecond/del"` //删除二级菜单
- personalMenu xweb.Mapper `xweb:"/front/personalMenu"`
- //role
- roleManager xweb.Mapper `xweb:"/front/role"` //角色权限管理
- roleNew xweb.Mapper `xweb:"/front/role/save"` //新增角色
- roleEdit xweb.Mapper `xweb:"/front/role/edit/(.*)"` //角色权限查看
- roleFirst xweb.Mapper `xweb:"/front/role/first"` //一级权限的查看
- roleSecond xweb.Mapper `xweb:"/front/role/second"` //二级权限的查看
- roleSave xweb.Mapper `xweb:"/front/role/edit/save"` //权限编辑保存
- roleDel xweb.Mapper `xweb:"/front/role/edit/del"` //权限编辑删除
- roleSecondEdit xweb.Mapper `xweb:"/front/role/second/edit"` //二级权限编辑
- }
- func (f *Front) Login() {
- defer common.Catch()
- if f.Method() == "POST" {
- email := f.GetString("email")
- password := f.GetString("pwd")
- passwordEn := encrypt.SE.EncodeString(password)
- query := bson.M{
- "s_email": email,
- "s_pwd": passwordEn,
- }
- user, _ := util.Mgo.FindOne("user", query)
- checked := false
- s_id := ""
- if user != nil && len(*user) > 0 {
- checked = true
- f.SetSession("user", map[string]interface{}{
- "name": (*user)["s_name"],
- "role": (*user)["s_role"],
- "pwd": password,
- "email": email,
- "id": mongodb.BsonIdToSId((*user)["_id"]),
- })
- UserMenu[email] = GetUserMenu(common.ObjToString((*user)["s_role"]))
- if common.ObjToString((*user)["s_role"]) == "3" {
- users, ok := util.Mgo.FindOne("cuser", map[string]interface{}{"s_name": (*user)["s_name"], "b_delete": false})
- if users != nil && ok {
- s_id = mongodb.BsonIdToSId((*users)["_id"])
- }
- }
- }
- f.ServeJson(map[string]interface{}{
- "checked": checked,
- "role": (*user)["s_role"],
- "id": s_id,
- })
- } else {
- f.Render("login.html")
- }
- }
- func (f *Front) Index() {
- defer common.Catch()
- f.Render("index.html")
- }
- func (f *Front) Logout() {
- f.DelSession("user")
- f.Redirect("/")
- }
- func (f *Front) UpdatePwd() {
- defer common.Catch()
- id := f.GetString("id")
- password := f.GetString("pwd")
- set := bson.M{
- "$set": bson.M{
- "s_pwd": encrypt.SE.EncodeString(password),
- },
- }
- if util.Mgo.UpdateById("user", id, set) {
- sessionuser := f.GetSession("user").(map[string]interface{})
- sessionuser["pwd"] = password
- f.SetSession("user", sessionuser)
- }
- }
- func (f *Front) User() {
- defer common.Catch()
- role, _ := util.Mgo.Find("role", nil, nil, nil, false, -1, -1)
- roleMap := make(map[string]string)
- for _, v := range *role {
- level := common.ObjToString(v["level"])
- if level != "" {
- roleMap[level] = common.ObjToString(v["name"])
- }
- }
- if f.Method() == "POST" {
- query := bson.M{
- "s_role": bson.M{
- "$ne": "0",
- },
- }
- data, _ := util.Mgo.Find("user", query, `{"_id":1}`, nil, false, -1, -1)
- for _, d := range *data {
- d["s_pwd"] = encrypt.SE.DecodeString(common.ObjToString(d["s_pwd"]))
- d["role_name"] = roleMap[common.ObjToString(d["s_role"])]
- }
- f.ServeJson(map[string]interface{}{
- "data": data,
- })
- } else {
- f.T["role"] = roleMap
- f.Render("com/user.html", &f.T)
- }
- }
- func (f *Front) UserDel() {
- defer common.Catch()
- _id := f.GetString("_id")
- query := bson.M{
- "_id": mongodb.StringTOBsonId(_id),
- }
- b := util.Mgo.Del("user", query)
- f.ServeJson(map[string]interface{}{
- "rep": b,
- })
- }
- func (f *Front) UserSave() {
- _id := f.GetString("_id")
- role := f.GetString("role")
- name := f.GetString("name")
- email := f.GetString("email")
- pwd := f.GetString("pwd")
- set := bson.M{
- "$set": bson.M{
- "s_role": role,
- "s_name": name,
- "s_email": email,
- "s_pwd": encrypt.SE.EncodeString(pwd),
- "i_comeintime": time.Now().Unix(),
- },
- }
- query := bson.M{
- "_id": mongodb.StringTOBsonId(_id),
- }
- if _id == "" {
- query = bson.M{
- "_id": primitive.NewObjectID(),
- }
- }
- b := util.Mgo.Update("user", query, set, true, false)
- //b := util.Mgo.UpdateById("user", _id, set)
- f.ServeJson(map[string]interface{}{
- "rep": b,
- })
- }
- func (f *Front) PersonalMenu() {
- user := f.GetSession("user").(map[string]interface{})
- list := UserMenu[common.ObjToString(user["email"])]
- f.ServeJson(map[string]interface{}{
- "data": list,
- })
- }
- func GetUserMenu(role string) []map[string]interface{} {
- var list []map[string]interface{}
- maps := map[string]interface{}{
- "delete": false,
- }
- if role != "0" {
- maps["role."+role] = true
- }
- data, _ := util.Mgo.Find("menu_first", maps, nil, nil, false, -1, -1)
- for _, d := range *data {
- _id := d["_id"]
- maps = map[string]interface{}{
- "delete": false,
- "s_pid": mongodb.BsonIdToSId(_id),
- }
- if role != "0" {
- maps["role."+role] = true
- }
- secdatas, _ := util.Mgo.Find("menu_second", maps, nil, nil, false, -1, -1)
- secmenumap := map[string]interface{}{}
- for index, secdata := range *secdatas {
- secmenumap[strconv.Itoa(index+1)] = secdata
- }
- if len(secmenumap) != 0 {
- d["secondmenu"] = secmenumap
- }
- list = append(list, d)
- }
- return list
- }
|