123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 |
- package manager
- import (
- "Wine-Server/utils"
- "Wine-Server/utils/tables"
- "errors"
- "github.com/gorilla/websocket"
- )
- func keepAlive(conn *websocket.Conn) {
- _ = conn.WriteJSON(utils.WsEvent("pon", nil))
- }
- func getSecrets(conn *websocket.Conn) {
- _ = conn.WriteJSON(utils.WsEvent("secrets", utils.JsonType{
- "public": utils.ClientPub, "private": utils.ClientPri,
- }))
- }
- func userLogin(conn *websocket.Conn, data any) (string, error) {
- var param loginParam
- err := utils.AnyTrans(data, ¶m)
- if err != nil {
- _ = conn.WriteJSON(utils.WsError("param error"))
- return "", err
- }
- password, err := utils.Decrypt(param.Password)
- manager := tables.ManagerTable{Account: param.Account}
- err = manager.GetByAcc()
- if err != nil {
- _ = conn.WriteJSON(utils.WsEvent("loginResult", utils.JsonType{"status": false, "msg": "用户不存在"}))
- utils.Logger.Println(err)
- return "", err
- }
- if utils.IsPasswordMatch(manager.Password, password) {
- var token string
- utils.ManagerLock.Lock()
- if _, exist := utils.ManagerWss[manager.Id]; exist {
- utils.ManagerLock.Unlock()
- _ = conn.WriteJSON(utils.WsEvent("loginResult", utils.JsonType{"status": false, "msg": "账户已在别处登录"}))
- return "", errors.New("login other where")
- }
- for {
- token = utils.Format("ManagerToken_%s", utils.RandomString(19, utils.AlphaNumPatten))
- exist, _ := utils.Redis.Exists(utils.WxPayCli, token).Result()
- if exist != 1 {
- _ = utils.Redis.Set(utils.WxPayCli, token, manager.Id, utils.Duration(7*24*60*60)).Err()
- break
- }
- }
- utils.ManagerLock.Unlock()
- _ = conn.WriteJSON(utils.WsEvent("loginResult", utils.Success(utils.JsonType{"token": token, "super": manager.Super})))
- return manager.Id, nil
- } else {
- utils.Logger.Println(utils.HashPassword(password))
- _ = conn.WriteJSON(utils.WsEvent("loginResult", utils.Fail("密码错误")))
- return "", errors.New("password error")
- }
- }
- func getUserInfo(conn *websocket.Conn, manager *tables.ManagerTable) {
- _ = conn.WriteJSON(utils.WsEvent("userInfo", utils.JsonType{
- "id": manager.Id, "super": manager.Super, "name": manager.Name,
- "order": manager.Order, "income": manager.Income,
- }))
- }
- func userLogout(conn *websocket.Conn, data any) {
- utils.Redis.Del(utils.WxPayCli, data.(string))
- _ = conn.WriteJSON(utils.WsEvent("logoutResult", nil))
- }
- func superQueryManager(conn *websocket.Conn, manager *tables.ManagerTable, data any) {
- if !manager.Super {
- _ = conn.WriteJSON(utils.WsError("auth failed."))
- return
- }
- name, _ := data.(string)
- res, err := tables.QueryManager(name)
- if err != nil {
- utils.Logger.Println(err)
- _ = conn.WriteJSON(utils.WsError("query manager failed"))
- return
- }
- _ = conn.WriteJSON(utils.WsEvent("superQueryManagerRes", res))
- }
- func superQueryDevice(conn *websocket.Conn, manager *tables.ManagerTable, data any) {
- if !manager.Super {
- _ = conn.WriteJSON(utils.WsError("auth failed."))
- return
- }
- var param superQueryDeviceParam
- err := utils.AnyTrans(data, ¶m)
- if err != nil {
- _ = conn.WriteJSON(utils.WsError("param error"))
- return
- }
- total, devices, err := tables.QueryDevices(param.Manager, param.Cond, param.Limit, param.Page)
- if err != nil {
- utils.Logger.Println(err)
- _ = conn.WriteJSON(utils.WsError("query devices failed"))
- return
- }
- _ = conn.WriteJSON(utils.WsEvent("superQueryDeviceRes", utils.JsonType{"total": total, "devices": devices}))
- }
- func superUpdateDevice(conn *websocket.Conn, manager *tables.ManagerTable, data any) {
- if !manager.Super {
- _ = conn.WriteJSON(utils.WsError("auth failed."))
- return
- }
- var param superUpdateDeviceParam
- err := utils.AnyTrans(data, ¶m)
- if err != nil {
- _ = conn.WriteJSON(utils.WsError("param error"))
- return
- }
- device := tables.DeviceTable{Id: param.Did}
- err = device.Update(utils.JsonType{"manager": param.Mid, "addr": param.Addr, "mark": param.Mark})
- if err != nil {
- utils.Logger.Println(err)
- _ = conn.WriteJSON(utils.WsEvent("superUpdateDeviceRes", utils.Fail("更新失败")))
- return
- }
- _ = conn.WriteJSON(utils.WsEvent("superUpdateDeviceRes", utils.Success(nil)))
- }
- func superBatchAssign(conn *websocket.Conn, manager *tables.ManagerTable, data any) {
- if !manager.Super {
- _ = conn.WriteJSON(utils.WsError("auth failed."))
- return
- }
- var param superBatchAssignParam
- err := utils.AnyTrans(data, ¶m)
- if err != nil {
- _ = conn.WriteJSON(utils.WsError("param error"))
- return
- }
- err = tables.BatchAssignDeviceManager(param.Devices, param.Manager)
- if err != nil {
- utils.Logger.Println(err)
- _ = conn.WriteJSON(utils.WsEvent("superBatchAssignRes", utils.Fail("分配失败")))
- return
- }
- _ = conn.WriteJSON(utils.WsEvent("superBatchAssignRes", utils.Success(nil)))
- }
- func superQueryWine(conn *websocket.Conn, manager *tables.ManagerTable, data any) {
- if !manager.Super {
- _ = conn.WriteJSON(utils.WsError("auth failed."))
- return
- }
- var param superQueryWineParam
- err := utils.AnyTrans(data, ¶m)
- if err != nil {
- _ = conn.WriteJSON(utils.WsError("param error"))
- return
- }
- total, wines, err := tables.QueryWines(param.Cond, param.Limit, param.Page)
- if err != nil {
- utils.Logger.Println(err)
- _ = conn.WriteJSON(utils.WsError("query wines failed"))
- return
- }
- _ = conn.WriteJSON(utils.WsEvent("superQueryWineRes", utils.JsonType{"total": total, "wines": wines}))
- }
- func superDeleteWine(conn *websocket.Conn, manager *tables.ManagerTable, data any) {
- if !manager.Super {
- _ = conn.WriteJSON(utils.WsError("auth failed."))
- return
- }
- var ids []uint16
- err := utils.AnyTrans(data, &ids)
- if err != nil {
- _ = conn.WriteJSON(utils.WsError("param error"))
- return
- }
- err = tables.BatchDeleteWine(ids)
- if err != nil {
- utils.Logger.Println(err)
- _ = conn.WriteJSON(utils.WsEvent("superDeleteWineRes", utils.Fail("删除失败")))
- return
- }
- _ = conn.WriteJSON(utils.WsEvent("superDeleteWineRes", utils.Success(nil)))
- }
|