user.go 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340
  1. package front
  2. import (
  3. "github.com/dchest/captcha"
  4. "github.com/gorilla/sessions"
  5. "go.mongodb.org/mongo-driver/bson"
  6. mgo "mongodb"
  7. qu "qfw/util"
  8. "strconv"
  9. "strings"
  10. "time"
  11. . "util"
  12. )
  13. var store = sessions.NewCookieStore([]byte("jianyu_secret20210422"))
  14. func (f *Front) Login() {
  15. defer qu.Catch()
  16. if f.Method() == "POST" {
  17. username := f.GetString("username")
  18. password := f.GetString("pwd")
  19. imgCode := f.GetString("imgCode")
  20. passwordEn := qu.SE.EncodeString(password)
  21. qu.Debug(username, passwordEn, imgCode)
  22. session, err := store.Get(f.Request, "dataTagLoginImgCode")
  23. if err != nil {
  24. qu.Debug("图片验证码session获取失败-%s \n", username)
  25. f.ServeJson(map[string]interface{}{
  26. "code": 0,
  27. "status": false,
  28. "message": "获取失败",
  29. })
  30. return
  31. }
  32. code := qu.ObjToString(session.Values["dataTagLoginImgCode"])
  33. if code == "" {
  34. qu.Debug("图片验证码过期-%s \n", username)
  35. f.ServeJson(map[string]interface{}{
  36. "checked": false,
  37. "message": "图片验证码过期",
  38. })
  39. return
  40. }
  41. //if !captcha.VerifyString(code, imgCode) {
  42. // qu.Debug("图片验证码错误-%s \n", username)
  43. // f.ServeJson(map[string]interface{}{
  44. // "checked": false,
  45. // "message": "图片验证码错误",
  46. // })
  47. // return
  48. //}
  49. query := map[string]interface{}{
  50. "s_login": username,
  51. "s_password": passwordEn,
  52. }
  53. user, _ := Mgo.FindOne("s_user", query)
  54. checked := false
  55. if user != nil && len(*user) > 0 {
  56. checked = true
  57. f.SetSession("user", map[string]interface{}{
  58. //"s_groupid": (*user)["s_groupid"],
  59. "s_name": (*user)["s_name"],
  60. "i_role": (*user)["i_role"],
  61. "s_pwd": password,
  62. "s_login": username,
  63. "id": mgo.BsonIdToSId((*user)["_id"]),
  64. })
  65. UserMenu[username] = GetUserMenu(qu.IntAll((*user)["i_role"]))
  66. }
  67. f.ServeJson(map[string]interface{}{
  68. "checked": checked,
  69. "message": "账号或密码错误",
  70. })
  71. } else {
  72. _ = f.Render("login.html")
  73. }
  74. }
  75. // 获取图片验证码
  76. func (f *Front) Code() {
  77. id := captcha.NewLen(4)
  78. //r := &http.Request{}
  79. f.Request.Header.Add("Cache-Control", "no-cache, no-store, must-revalidate")
  80. f.Request.Header.Add("Pragma", "no-cache")
  81. f.Request.Header.Add("Expires", "0")
  82. f.Request.Header.Add("Content-Type", "image/png")
  83. w := f.ResponseWriter
  84. session, err := store.Get(f.Request, "dataTagLoginImgCode")
  85. if err != nil {
  86. qu.Debug("session1获取失败")
  87. return
  88. }
  89. session.Values["dataTagLoginImgCode"] = id
  90. session.Options.MaxAge = 60
  91. if err := session.Save(f.Request, w); err != nil {
  92. qu.Debug("session1保存错误,验证码 ", id)
  93. }
  94. err2 := captcha.WriteImage(w, id, 90, 30)
  95. if err2 != nil {
  96. qu.Debug("生成图片验证码错误,验证码 ", id)
  97. }
  98. return
  99. }
  100. func (f *Front) Logout() {
  101. f.DelSession("user")
  102. f.Redirect("/")
  103. }
  104. func (f *Front) UserGroup() {
  105. defer qu.Catch()
  106. if f.Method() == "POST" {
  107. start, _ := f.GetInteger("start")
  108. limit, _ := f.GetInteger("length")
  109. draw, _ := f.GetInteger("draw")
  110. searchStr := f.GetString("search[value]")
  111. search := strings.TrimSpace(searchStr)
  112. query := map[string]interface{}{
  113. "b_delete": false,
  114. }
  115. if search != "" {
  116. query["$or"] = []interface{}{
  117. bson.M{"s_name": bson.M{"$regex": search}},
  118. }
  119. }
  120. data, _ := Mgo.Find("s_group", query, `{"i_createtime":-1}`, nil, false, start, limit)
  121. count := Mgo.Count("s_group", query)
  122. f.ServeJson(map[string]interface{}{
  123. "draw": draw,
  124. "data": data,
  125. "recordsFiltered": count,
  126. "recordsTotal": count,
  127. })
  128. } else {
  129. _ = f.Render("user/user_group.html")
  130. }
  131. }
  132. func (f *Front) UserGroupNew() {
  133. defer qu.Catch()
  134. if f.Method() == "POST" {
  135. data := GetPostForm(f.Request)
  136. group := *qu.ObjToMap(data["group"])
  137. user := *qu.ObjToMap(data["user"])
  138. currenttime := time.Now().Unix()
  139. group["i_createtime"] = currenttime
  140. group["i_updatetime"] = currenttime
  141. group["b_delete"] = false
  142. gid := Mgo.Save("s_group", group) // 保存用户组
  143. if gid != "" {
  144. // 1、用户组管理员账号
  145. m1 := make(map[string]interface{})
  146. m1["s_groupid"] = gid
  147. m1["s_name"] = ""
  148. m1["s_login"] = group["s_name"]
  149. m1["s_password"] = qu.SE.EncodeString(qu.ObjToString(group["s_password"]))
  150. m1["i_power"] = "1"
  151. m1["s_phone"] = ""
  152. m1["i_createtime"] = currenttime
  153. m1["i_updatetime"] = currenttime
  154. m1["i_state"] = true
  155. m1["b_delete"] = false
  156. Mgo.Save("s_user", m1)
  157. // 2、质检员账号
  158. for i := 0; i < qu.IntAll(user["u1_size"]); i++ {
  159. m := make(map[string]interface{})
  160. m["s_groupid"] = gid
  161. m["s_name"] = ""
  162. m["s_login"] = qu.ObjToString(group["s_name"]) + "_zj_" + strconv.Itoa(i)
  163. m["s_password"] = qu.SE.EncodeString(qu.ObjToString(user["u1_pwd"]))
  164. m["i_power"] = "2"
  165. m["s_phone"] = ""
  166. m["i_createtime"] = currenttime
  167. m["i_updatetime"] = currenttime
  168. m["i_state"] = true
  169. m["b_delete"] = false
  170. Mgo.Save("s_user", m)
  171. }
  172. // 3、普通用户账号
  173. for i := 0; i < qu.IntAll(user["u2_size"]); i++ {
  174. m := make(map[string]interface{})
  175. m["s_groupid"] = gid
  176. m["s_name"] = ""
  177. m["s_login"] = qu.ObjToString(group["s_name"]) + "_" + strconv.Itoa(i)
  178. m["s_password"] = qu.SE.EncodeString(qu.ObjToString(user["u2_pwd"]))
  179. m["i_power"] = "3"
  180. m["s_phone"] = ""
  181. m["i_createtime"] = currenttime
  182. m["i_updatetime"] = currenttime
  183. m["i_state"] = true
  184. m["b_delete"] = false
  185. Mgo.Save("s_user", m)
  186. }
  187. f.ServeJson(map[string]interface{}{
  188. "rep": true,
  189. })
  190. } else {
  191. f.ServeJson(map[string]interface{}{
  192. "rep": false,
  193. })
  194. }
  195. } else {
  196. f.T["pwd"] = Password
  197. _ = f.Render("user/user_group_create.html", &f.T)
  198. }
  199. }
  200. func (f *Front) UserGroupState() {
  201. defer qu.Catch()
  202. if f.Method() == "POST" {
  203. data := GetPostForm(f.Request)
  204. b := Mgo.UpdateById("s_group", qu.ObjToString(data["id"]), map[string]interface{}{"$set": map[string]interface{}{"i_state": data["state"]}})
  205. f.ServeJson(map[string]interface{}{
  206. "rep": b,
  207. })
  208. }
  209. }
  210. func (f *Front) UserGroupStateBulk() {
  211. defer qu.Catch()
  212. if f.Method() == "POST" {
  213. data := GetPostForm(f.Request)
  214. qu.Debug(data)
  215. ids := strings.Split(qu.ObjToString(data["ids"]), ",")
  216. for _, k := range ids {
  217. b := Mgo.UpdateById("s_group", k, map[string]interface{}{"$set": map[string]interface{}{"i_state": data["state"]}})
  218. if !b {
  219. f.ServeJson(map[string]interface{}{
  220. "rep": b,
  221. })
  222. }
  223. }
  224. f.ServeJson(map[string]interface{}{
  225. "rep": true,
  226. })
  227. }
  228. }
  229. func (f *Front) UserGroupDel() {
  230. defer qu.Catch()
  231. if f.Method() == "POST" {
  232. data := GetPostForm(f.Request)
  233. qu.Debug(data)
  234. b := Mgo.UpdateById("s_group", qu.ObjToString(data["id"]), map[string]interface{}{"$set": map[string]interface{}{"b_delete": true}})
  235. f.ServeJson(map[string]interface{}{
  236. "rep": b,
  237. })
  238. }
  239. }
  240. func (f *Front) UserManage() {
  241. defer qu.Catch()
  242. if f.Method() == "POST" {
  243. data := GetPostForm(f.Request)
  244. gid := qu.ObjToString(data["gid"])
  245. draw, _ := f.GetInteger("draw")
  246. query := map[string]interface{}{"s_groupid": gid, "b_delete": false}
  247. info, b := Mgo.Find("s_user", query, nil, nil, false, -1, -1)
  248. count := Mgo.Count("s_user", query)
  249. if b && len(*info) > 0 {
  250. f.ServeJson(map[string]interface{}{
  251. "rep": true,
  252. "data": *info,
  253. "draw": draw,
  254. "recordsFiltered": count,
  255. "recordsTotal": count,
  256. })
  257. } else {
  258. f.ServeJson(map[string]interface{}{
  259. "rep": false,
  260. })
  261. }
  262. } else {
  263. f.T["gid"] = f.GetString("id")
  264. _ = f.Render("user/user_list.html", &f.T)
  265. }
  266. }
  267. func (f *Front) UserState() {
  268. defer qu.Catch()
  269. if f.Method() == "POST" {
  270. data := GetPostForm(f.Request)
  271. b := Mgo.UpdateById("s_user", qu.ObjToString(data["id"]), map[string]interface{}{"$set": map[string]interface{}{"i_state": data["state"]}})
  272. f.ServeJson(map[string]interface{}{
  273. "rep": b,
  274. })
  275. }
  276. }
  277. func (f *Front) UserDel() {
  278. defer qu.Catch()
  279. if f.Method() == "POST" {
  280. data := GetPostForm(f.Request)
  281. b := Mgo.UpdateById("s_user", qu.ObjToString(data["id"]), map[string]interface{}{"$set": map[string]interface{}{"b_delete": true}})
  282. f.ServeJson(map[string]interface{}{
  283. "rep": b,
  284. })
  285. }
  286. }
  287. func (f *Front) UserModify() {
  288. defer qu.Catch()
  289. if f.Method() == "POST" {
  290. data := GetPostForm(f.Request)
  291. 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"]}})
  292. f.ServeJson(map[string]interface{}{
  293. "rep": b,
  294. })
  295. }
  296. }
  297. func (f *Front) GroupList() {
  298. qu.Catch()
  299. query := map[string]interface{}{"b_delete": false, "i_state": false}
  300. field := map[string]interface{}{"s_name": 1}
  301. info, b := Mgo.Find("s_group", query, nil, field, false, -1, -1)
  302. if b && len(*info) > 0 {
  303. f.ServeJson(map[string]interface{}{
  304. "rep": b,
  305. "data": *info,
  306. })
  307. }
  308. }
  309. // UerTaskList 用户任务分发列表
  310. func (f *Front) UerTaskList() {
  311. defer qu.Catch()
  312. //groupId := f.GetString("s_groupid") //用户组id
  313. taskId := f.GetString("id") //用户组任务id
  314. if f.Method() == "POST" {
  315. } else {
  316. //f.T["s_groupid"] = groupId
  317. f.T["grouptaskid"] = taskId //用户组任务id
  318. //统计数据量
  319. _ = f.Render("/user/task.html", &f.T)
  320. }
  321. }