123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- package debugger
- import (
- "Wine-Server/utils"
- "Wine-Server/utils/tables"
- "github.com/gin-gonic/gin"
- "github.com/gorilla/websocket"
- )
- func broadcastHandler(ctx *gin.Context) {
- ctx.JSON(utils.HttpOk, utils.Success(nil))
- }
- func keepAlive(conn *websocket.Conn) {
- _ = conn.WriteJSON(utils.WsEvent("pon", nil))
- }
- func listDevices(conn *websocket.Conn) {
- result := utils.JsonType{}
- for seq, device := range utils.SellerDevices {
- table := tables.DeviceTable{Id: seq}
- _ = table.Get()
- result[seq] = utils.JsonType{
- "seq": seq, "online": device.Online, "location": table.Addr,
- "vpp1": table.Wines[0].Vpp, "vpp2": table.Wines[1].Vpp,
- "vpp3": table.Wines[2].Vpp, "vpp4": table.Wines[3].Vpp,
- }
- }
- _ = conn.WriteJSON(utils.WsEvent("devices", result))
- }
- func setDebug(conn *websocket.Conn, data any) {
- var param debugParam
- err := utils.AnyTrans(data, ¶m)
- if err != nil {
- _ = conn.WriteJSON(utils.WsError("params error"))
- return
- }
- if device, exist := utils.SellerDevices[param.Seq]; exist {
- if device.Online {
- _ = device.Conn.WriteJSON(utils.WsEvent("setDebug", param.Debug))
- return
- }
- _ = conn.WriteJSON(utils.WsError("device offline"))
- return
- }
- _ = conn.WriteJSON(utils.WsError("no such device"))
- }
- func openGate(conn *websocket.Conn, who string, data any) {
- var param openParam
- err := utils.AnyTrans(data, ¶m)
- if err != nil {
- _ = conn.WriteJSON(utils.WsError("params error"))
- return
- }
- if device, exist := utils.SellerDevices[param.Seq]; exist {
- if device.Online {
- var prefix string
- if param.Kind == "Changing" {
- prefix = "Change"
- } else if param.Kind == "Fixing" {
- prefix = "Fix"
- } else {
- utils.Logger.Printf("unrecognized open type: %s\n", param.Kind)
- _ = conn.WriteJSON(utils.WsEvent("authCode", utils.Fail("error open type")))
- return
- }
- key := utils.Format("%s_%s_%s", prefix, param.Seq, who)
- code, err := utils.Redis.Get(utils.WxPayCli, key).Result()
- if err != nil {
- code = utils.RandomString(6, utils.NumberPatten)
- utils.Redis.Set(utils.WxPayCli, key, code, utils.Duration(30))
- } else {
- utils.Redis.Expire(utils.WxPayCli, key, utils.Duration(30))
- }
- _ = device.Conn.WriteJSON(utils.WsEvent("openGate", utils.JsonType{
- "type": param.Kind, "user_type": "debugger", "user_id": who,
- }))
- _ = conn.WriteJSON(utils.WsEvent("authCode", utils.Success(code)))
- return
- }
- _ = conn.WriteJSON(utils.WsError("device offline"))
- return
- }
- _ = conn.WriteJSON(utils.WsError("no such device"))
- }
- func setLocation(conn *websocket.Conn, data any) {
- var param locationParam
- err := utils.AnyTrans(data, ¶m)
- if err != nil {
- _ = conn.WriteJSON(utils.WsError("params error"))
- return
- }
- table := tables.DeviceTable{Id: param.Seq}
- _ = table.Get()
- err = table.Update(utils.JsonType{"addr": param.Loc})
- if err != nil {
- utils.Logger.Printf("update location failed, device[%s], addr[%s], error: %s\n", param.Seq, param.Loc, err)
- _ = conn.WriteJSON(utils.WsError("update location failed"))
- }
- _ = conn.WriteJSON(utils.WsEvent("locationUpdated", nil))
- }
- func setVpp(conn *websocket.Conn, data any) {
- var param vppParam
- err := utils.AnyTrans(data, ¶m)
- if err != nil {
- _ = conn.WriteJSON(utils.WsError("params error"))
- return
- }
- table := tables.DeviceTable{Id: param.Seq}
- _ = table.Get()
- err = table.Update(utils.JsonType{utils.Format("vpp%d", param.Index+1): param.Value})
- if err != nil {
- utils.Logger.Printf(
- "update location failed, device[%s], vpp%d[%s], error: %s\n",
- param.Seq, param.Index, param.Value, err,
- )
- _ = conn.WriteJSON(utils.WsError("update vpp failed"))
- }
- if device, exist := utils.SellerDevices[param.Seq]; exist {
- if device.Online {
- _ = device.Conn.WriteJSON(utils.WsEvent("vppUpdate", utils.JsonType{
- "index": param.Index,
- "value": param.Value,
- }))
- return
- }
- _ = conn.WriteJSON(utils.WsError("device offline"))
- return
- }
- _ = conn.WriteJSON(utils.WsError("no such device"))
- }
|