service.go 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. package services
  2. import (
  3. "AT-Server/server"
  4. "context"
  5. "errors"
  6. "github.com/gogf/gf/text/gstr"
  7. "github.com/gogf/gf/util/gconv"
  8. )
  9. var errDataFormat = errors.New("错误的数据格式")
  10. type ATService struct {
  11. srv *server.Server
  12. }
  13. func NewATService(srv *server.Server) *ATService {
  14. return &ATService{srv: srv}
  15. }
  16. // GetGPSInfo 查询GPS信息
  17. func (a *ATService) GetGPSInfo(ctx context.Context, args *BaseArgs, reply *GPSInfoReply) error {
  18. client, err := a.srv.GetATClient(args.IMEI)
  19. if err != nil {
  20. return err
  21. }
  22. result, err := client.GetGPSInfo()
  23. if err != nil {
  24. return err
  25. }
  26. arr := gstr.Split(result, ",")
  27. if len(arr) > 1 {
  28. reply.Lat = gconv.Float64(arr[0])
  29. reply.Lng = gconv.Float64(arr[1])
  30. } else {
  31. return errDataFormat
  32. }
  33. return nil
  34. }
  35. // GetIMEI 查询串号
  36. func (a *ATService) GetIMEI(ctx context.Context, args *BaseArgs, reply *string) error {
  37. client, err := a.srv.GetATClient(args.IMEI)
  38. if err != nil {
  39. return err
  40. }
  41. result, err := client.GetIMEI()
  42. if err != nil {
  43. return err
  44. }
  45. reply = &result
  46. return nil
  47. }
  48. // GetICCID 查询ICCID
  49. func (a *ATService) GetICCID(ctx context.Context, args *BaseArgs, reply *string) error {
  50. client, err := a.srv.GetATClient(args.IMEI)
  51. if err != nil {
  52. return err
  53. }
  54. result, err := client.GetICCID()
  55. if err != nil {
  56. return err
  57. }
  58. reply = &result
  59. return nil
  60. }
  61. // SetDTUMode 配置工作模式
  62. func (a *ATService) SetDTUMode(ctx context.Context, args *SetDTUModeArgs, reply *EmptyResult) error {
  63. client, err := a.srv.GetATClient(args.IMEI)
  64. if err != nil {
  65. return err
  66. }
  67. err = client.SetDTUMode(args.Mode, args.Channel)
  68. if err != nil {
  69. return err
  70. }
  71. return nil
  72. }
  73. // GetDTUMode 查询工作模式
  74. func (a *ATService) GetDTUMode(ctx context.Context, args *BaseArgs, reply *DTUModeReply) error {
  75. client, err := a.srv.GetATClient(args.IMEI)
  76. if err != nil {
  77. return err
  78. }
  79. str, err := client.GetDTUMode()
  80. if err != nil {
  81. return err
  82. }
  83. arr := gstr.Split(str, ",")
  84. if len(arr) > 3 {
  85. reply.Channel1 = gconv.Int(arr[0])
  86. }
  87. return nil
  88. }
  89. // SetServerAddr 设置连接服务器地址
  90. func (a *ATService) SetServerAddr(ctx context.Context, args *ServerAddrArgs, reply *EmptyResult) error {
  91. client, err := a.srv.GetATClient(args.IMEI)
  92. if err != nil {
  93. return err
  94. }
  95. err = client.SetServerAddr(args.Channel, args.LinkType, args.Ip, args.Port)
  96. if err != nil {
  97. return err
  98. }
  99. return nil
  100. }
  101. // GetServerAddr 查询连接服务器地址
  102. func (a *ATService) GetServerAddr(ctx context.Context, args *BaseArgs, reply *ServerAddrReply) error {
  103. client, err := a.srv.GetATClient(args.IMEI)
  104. if err != nil {
  105. return err
  106. }
  107. result, err := client.GetServerAddr()
  108. if err != nil {
  109. return err
  110. }
  111. var addrs []*Addr
  112. for _, v := range result {
  113. arr := gstr.Split(v, ",")
  114. if len(arr) > 3 {
  115. addrs = append(addrs, &Addr{
  116. Channel: gconv.Int(arr[0]),
  117. LinkType: arr[1],
  118. Addr: arr[2],
  119. Port: gconv.Int(arr[3]),
  120. })
  121. }
  122. }
  123. reply.Addrs = addrs
  124. return nil
  125. }
  126. // SetUARTParam 设置串口参数
  127. func (a *ATService) SetUARTParam(ctx context.Context, args *UARTArgs, reply *EmptyResult) error {
  128. client, err := a.srv.GetATClient(args.IMEI)
  129. if err != nil {
  130. return err
  131. }
  132. err = client.SetUARTParam(args.Rate, args.DBit, args.CBit, args.SBit)
  133. if err != nil {
  134. return err
  135. }
  136. return nil
  137. }
  138. // GetUARTParam 查询串口配置
  139. func (a *ATService) GetUARTParam(ctx context.Context, args *BaseArgs, reply *UARTReply) error {
  140. client, err := a.srv.GetATClient(args.IMEI)
  141. if err != nil {
  142. return err
  143. }
  144. result, err := client.GetUARTParam()
  145. if err != nil {
  146. return err
  147. }
  148. arr := gstr.Split(result, ",")
  149. if len(arr) > 3 {
  150. reply.Rate = gconv.Int(arr[0])
  151. reply.DBit = gconv.Int(arr[1])
  152. reply.CBit = gconv.Int(arr[2])
  153. reply.SBit = gconv.Int(arr[3])
  154. }
  155. return nil
  156. }
  157. // SetDTUID 注册包设置
  158. func (a *ATService) SetDTUID(ctx context.Context, args *DTUIDArgs, reply *EmptyResult) error {
  159. client, err := a.srv.GetATClient(args.IMEI)
  160. if err != nil {
  161. return err
  162. }
  163. err = client.SetDTUID(args.Mode, args.IdType, args.Format, args.Content, args.Channel)
  164. if err != nil {
  165. return err
  166. }
  167. return nil
  168. }
  169. // GetDTUID 查询注册包设置
  170. func (a *ATService) GetDTUID(ctx context.Context, args *DTUIDArgs, reply *DTUIDReply) error {
  171. client, err := a.srv.GetATClient(args.IMEI)
  172. if err != nil {
  173. return err
  174. }
  175. result, err := client.GetDTUID()
  176. if err != nil {
  177. return err
  178. }
  179. var dtuIds []*DTUID
  180. for _, v := range result {
  181. arr := gstr.Split(v, ",")
  182. if len(arr) > 4 {
  183. dtuIds = append(dtuIds, &DTUID{
  184. Mode: gconv.Int(arr[0]),
  185. IdType: gconv.Int(arr[1]),
  186. Format: gconv.Int(arr[2]),
  187. Content: arr[3],
  188. Channel: gconv.Int(arr[4]),
  189. })
  190. }
  191. }
  192. reply.DTUIDs = dtuIds
  193. return nil
  194. }
  195. // GetKeepAlive 查询心跳包配置
  196. func (a *ATService) GetKeepAlive(ctx context.Context, args *BaseArgs, reply *KeepAliveReply) error {
  197. client, err := a.srv.GetATClient(args.IMEI)
  198. if err != nil {
  199. return err
  200. }
  201. result, err := client.GetKeepAlive()
  202. if err != nil {
  203. return err
  204. }
  205. var channels []*KeepAlive
  206. for _, v := range result {
  207. arr := gstr.Split(v, ",")
  208. if len(arr) > 3 {
  209. channels = append(channels, &KeepAlive{
  210. Duration: gconv.Int(arr[0]),
  211. Format: gconv.Int(arr[1]),
  212. Content: arr[2],
  213. Channel: gconv.Int(arr[3]),
  214. })
  215. }
  216. }
  217. reply.Channels = channels
  218. return nil
  219. }