package front import ( "github.com/dchest/captcha" "github.com/gorilla/sessions" "go.mongodb.org/mongo-driver/bson" mgo "mongodb" qu "qfw/util" "strconv" "strings" "time" . "util" ) var store = sessions.NewCookieStore([]byte("jianyu_secret20210422")) func (f *Front) Login() { defer qu.Catch() if f.Method() == "POST" { username := f.GetString("username") password := f.GetString("pwd") imgCode := f.GetString("imgCode") passwordEn := qu.SE.EncodeString(password) qu.Debug(username, passwordEn, imgCode) session, err := store.Get(f.Request, "dataTagLoginImgCode") if err != nil { qu.Debug("图片验证码session获取失败-%s \n", username) f.ServeJson(map[string]interface{}{ "code": 0, "status": false, "message": "获取失败", }) return } code := qu.ObjToString(session.Values["dataTagLoginImgCode"]) if code == "" { qu.Debug("图片验证码过期-%s \n", username) f.ServeJson(map[string]interface{}{ "checked": false, "message": "图片验证码过期", }) return } //if !captcha.VerifyString(code, imgCode) { // qu.Debug("图片验证码错误-%s \n", username) // f.ServeJson(map[string]interface{}{ // "checked": false, // "message": "图片验证码错误", // }) // return //} query := map[string]interface{}{ "s_login": username, "s_password": passwordEn, } user, _ := Mgo.FindOne("s_user", query) checked := false if user != nil && len(*user) > 0 { checked = true f.SetSession("user", map[string]interface{}{ //"s_groupid": (*user)["s_groupid"], "s_name": (*user)["s_name"], "i_role": (*user)["i_role"], "s_pwd": password, "s_login": username, "id": mgo.BsonIdToSId((*user)["_id"]), }) UserMenu[username] = GetUserMenu(qu.IntAll((*user)["i_role"])) } f.ServeJson(map[string]interface{}{ "checked": checked, "message": "账号或密码错误", }) } else { _ = f.Render("login.html") } } // 获取图片验证码 func (f *Front) Code() { id := captcha.NewLen(4) //r := &http.Request{} f.Request.Header.Add("Cache-Control", "no-cache, no-store, must-revalidate") f.Request.Header.Add("Pragma", "no-cache") f.Request.Header.Add("Expires", "0") f.Request.Header.Add("Content-Type", "image/png") w := f.ResponseWriter session, err := store.Get(f.Request, "dataTagLoginImgCode") if err != nil { qu.Debug("session1获取失败") return } session.Values["dataTagLoginImgCode"] = id session.Options.MaxAge = 60 if err := session.Save(f.Request, w); err != nil { qu.Debug("session1保存错误,验证码 ", id) } err2 := captcha.WriteImage(w, id, 90, 30) if err2 != nil { qu.Debug("生成图片验证码错误,验证码 ", id) } return } func (f *Front) Logout() { f.DelSession("user") f.Redirect("/") } func (f *Front) UserGroup() { defer qu.Catch() if f.Method() == "POST" { start, _ := f.GetInteger("start") limit, _ := f.GetInteger("length") draw, _ := f.GetInteger("draw") searchStr := f.GetString("search[value]") search := strings.TrimSpace(searchStr) query := map[string]interface{}{ "b_delete": false, } if search != "" { query["$or"] = []interface{}{ bson.M{"s_name": bson.M{"$regex": search}}, } } data, _ := Mgo.Find("s_group", query, `{"i_createtime":-1}`, nil, false, start, limit) count := Mgo.Count("s_group", query) f.ServeJson(map[string]interface{}{ "draw": draw, "data": data, "recordsFiltered": count, "recordsTotal": count, }) } else { _ = f.Render("user/user_group.html") } } func (f *Front) UserGroupNew() { defer qu.Catch() if f.Method() == "POST" { data := GetPostForm(f.Request) group := *qu.ObjToMap(data["group"]) user := *qu.ObjToMap(data["user"]) currenttime := time.Now().Unix() group["i_createtime"] = currenttime group["i_updatetime"] = currenttime group["b_delete"] = false gid := Mgo.Save("s_group", group) // 保存用户组 if gid != "" { // 1、用户组管理员账号 m1 := make(map[string]interface{}) m1["s_groupid"] = gid m1["s_name"] = "" m1["s_login"] = group["s_name"] m1["s_password"] = qu.SE.EncodeString(qu.ObjToString(group["s_password"])) m1["i_power"] = "1" m1["s_phone"] = "" m1["i_createtime"] = currenttime m1["i_updatetime"] = currenttime m1["i_state"] = true m1["b_delete"] = false Mgo.Save("s_user", m1) // 2、质检员账号 for i := 0; i < qu.IntAll(user["u1_size"]); i++ { m := make(map[string]interface{}) m["s_groupid"] = gid m["s_name"] = "" m["s_login"] = qu.ObjToString(group["s_name"]) + "_zj_" + strconv.Itoa(i) m["s_password"] = qu.SE.EncodeString(qu.ObjToString(user["u1_pwd"])) m["i_power"] = "2" m["s_phone"] = "" m["i_createtime"] = currenttime m["i_updatetime"] = currenttime m["i_state"] = true m["b_delete"] = false Mgo.Save("s_user", m) } // 3、普通用户账号 for i := 0; i < qu.IntAll(user["u2_size"]); i++ { m := make(map[string]interface{}) m["s_groupid"] = gid m["s_name"] = "" m["s_login"] = qu.ObjToString(group["s_name"]) + "_" + strconv.Itoa(i) m["s_password"] = qu.SE.EncodeString(qu.ObjToString(user["u2_pwd"])) m["i_power"] = "3" m["s_phone"] = "" m["i_createtime"] = currenttime m["i_updatetime"] = currenttime m["i_state"] = true m["b_delete"] = false Mgo.Save("s_user", m) } f.ServeJson(map[string]interface{}{ "rep": true, }) } else { f.ServeJson(map[string]interface{}{ "rep": false, }) } } else { f.T["pwd"] = Password _ = f.Render("user/user_group_create.html", &f.T) } } func (f *Front) UserGroupState() { defer qu.Catch() if f.Method() == "POST" { data := GetPostForm(f.Request) b := Mgo.UpdateById("s_group", qu.ObjToString(data["id"]), map[string]interface{}{"$set": map[string]interface{}{"i_state": data["state"]}}) f.ServeJson(map[string]interface{}{ "rep": b, }) } } func (f *Front) UserGroupStateBulk() { defer qu.Catch() if f.Method() == "POST" { data := GetPostForm(f.Request) qu.Debug(data) ids := strings.Split(qu.ObjToString(data["ids"]), ",") for _, k := range ids { b := Mgo.UpdateById("s_group", k, map[string]interface{}{"$set": map[string]interface{}{"i_state": data["state"]}}) if !b { f.ServeJson(map[string]interface{}{ "rep": b, }) } } f.ServeJson(map[string]interface{}{ "rep": true, }) } } func (f *Front) UserGroupDel() { defer qu.Catch() if f.Method() == "POST" { data := GetPostForm(f.Request) qu.Debug(data) b := Mgo.UpdateById("s_group", qu.ObjToString(data["id"]), map[string]interface{}{"$set": map[string]interface{}{"b_delete": true}}) f.ServeJson(map[string]interface{}{ "rep": b, }) } } func (f *Front) UserManage() { defer qu.Catch() if f.Method() == "POST" { data := GetPostForm(f.Request) gid := qu.ObjToString(data["gid"]) draw, _ := f.GetInteger("draw") query := map[string]interface{}{"s_groupid": gid, "b_delete": false} info, b := Mgo.Find("s_user", query, nil, nil, false, -1, -1) count := Mgo.Count("s_user", query) if b && len(*info) > 0 { f.ServeJson(map[string]interface{}{ "rep": true, "data": *info, "draw": draw, "recordsFiltered": count, "recordsTotal": count, }) } else { f.ServeJson(map[string]interface{}{ "rep": false, }) } } else { f.T["gid"] = f.GetString("id") _ = f.Render("user/user_list.html", &f.T) } } func (f *Front) UserState() { defer qu.Catch() if f.Method() == "POST" { data := GetPostForm(f.Request) b := Mgo.UpdateById("s_user", qu.ObjToString(data["id"]), map[string]interface{}{"$set": map[string]interface{}{"i_state": data["state"]}}) f.ServeJson(map[string]interface{}{ "rep": b, }) } } func (f *Front) UserDel() { defer qu.Catch() if f.Method() == "POST" { data := GetPostForm(f.Request) b := Mgo.UpdateById("s_user", qu.ObjToString(data["id"]), map[string]interface{}{"$set": map[string]interface{}{"b_delete": true}}) f.ServeJson(map[string]interface{}{ "rep": b, }) } } func (f *Front) UserModify() { defer qu.Catch() if f.Method() == "POST" { data := GetPostForm(f.Request) b := Mgo.UpdateById("s_user", qu.ObjToString(data["id"]), map[string]interface{}{"$set": map[string]interface{}{"s_name": data["s_name"], "s_phone": data["s_phone"]}}) f.ServeJson(map[string]interface{}{ "rep": b, }) } } func (f *Front) GroupList() { qu.Catch() query := map[string]interface{}{"b_delete": false, "i_state": false} field := map[string]interface{}{"s_name": 1} info, b := Mgo.Find("s_group", query, nil, field, false, -1, -1) if b && len(*info) > 0 { f.ServeJson(map[string]interface{}{ "rep": b, "data": *info, }) } } // UerTaskList 用户任务分发列表 func (f *Front) UerTaskList() { defer qu.Catch() //groupId := f.GetString("s_groupid") //用户组id taskId := f.GetString("id") //用户组任务id if f.Method() == "POST" { } else { //f.T["s_groupid"] = groupId f.T["grouptaskid"] = taskId //用户组任务id //统计数据量 _ = f.Render("/user/task.html", &f.T) } }