123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235 |
- package services
- import (
- "AT-Server/server"
- "context"
- "errors"
- "github.com/gogf/gf/text/gstr"
- "github.com/gogf/gf/util/gconv"
- )
- var errDataFormat = errors.New("错误的数据格式")
- type ATService struct {
- srv *server.Server
- }
- func NewATService(srv *server.Server) *ATService {
- return &ATService{srv: srv}
- }
- // GetGPSInfo 查询GPS信息
- func (a *ATService) GetGPSInfo(ctx context.Context, args *BaseArgs, reply *GPSInfoReply) error {
- client, err := a.srv.GetATClient(args.IMEI)
- if err != nil {
- return err
- }
- result, err := client.GetGPSInfo()
- if err != nil {
- return err
- }
- arr := gstr.Split(result, ",")
- if len(arr) > 1 {
- reply.Lat = gconv.Float64(arr[0])
- reply.Lng = gconv.Float64(arr[1])
- } else {
- return errDataFormat
- }
- return nil
- }
- // GetIMEI 查询串号
- func (a *ATService) GetIMEI(ctx context.Context, args *BaseArgs, reply *string) error {
- client, err := a.srv.GetATClient(args.IMEI)
- if err != nil {
- return err
- }
- result, err := client.GetIMEI()
- if err != nil {
- return err
- }
- reply = &result
- return nil
- }
- // GetICCID 查询ICCID
- func (a *ATService) GetICCID(ctx context.Context, args *BaseArgs, reply *string) error {
- client, err := a.srv.GetATClient(args.IMEI)
- if err != nil {
- return err
- }
- result, err := client.GetICCID()
- if err != nil {
- return err
- }
- reply = &result
- return nil
- }
- // SetDTUMode 配置工作模式
- func (a *ATService) SetDTUMode(ctx context.Context, args *SetDTUModeArgs, reply *EmptyResult) error {
- client, err := a.srv.GetATClient(args.IMEI)
- if err != nil {
- return err
- }
- err = client.SetDTUMode(args.Mode, args.Channel)
- if err != nil {
- return err
- }
- return nil
- }
- // GetDTUMode 查询工作模式
- func (a *ATService) GetDTUMode(ctx context.Context, args *BaseArgs, reply *DTUModeReply) error {
- client, err := a.srv.GetATClient(args.IMEI)
- if err != nil {
- return err
- }
- str, err := client.GetDTUMode()
- if err != nil {
- return err
- }
- arr := gstr.Split(str, ",")
- if len(arr) > 3 {
- reply.Channel1 = gconv.Int(arr[0])
- }
- return nil
- }
- // SetServerAddr 设置连接服务器地址
- func (a *ATService) SetServerAddr(ctx context.Context, args *ServerAddrArgs, reply *EmptyResult) error {
- client, err := a.srv.GetATClient(args.IMEI)
- if err != nil {
- return err
- }
- err = client.SetServerAddr(args.Channel, args.LinkType, args.Ip, args.Port)
- if err != nil {
- return err
- }
- return nil
- }
- // GetServerAddr 查询连接服务器地址
- func (a *ATService) GetServerAddr(ctx context.Context, args *BaseArgs, reply *ServerAddrReply) error {
- client, err := a.srv.GetATClient(args.IMEI)
- if err != nil {
- return err
- }
- result, err := client.GetServerAddr()
- if err != nil {
- return err
- }
- var addrs []*Addr
- for _, v := range result {
- arr := gstr.Split(v, ",")
- if len(arr) > 3 {
- addrs = append(addrs, &Addr{
- Channel: gconv.Int(arr[0]),
- LinkType: arr[1],
- Addr: arr[2],
- Port: gconv.Int(arr[3]),
- })
- }
- }
- reply.Addrs = addrs
- return nil
- }
- // SetUARTParam 设置串口参数
- func (a *ATService) SetUARTParam(ctx context.Context, args *UARTArgs, reply *EmptyResult) error {
- client, err := a.srv.GetATClient(args.IMEI)
- if err != nil {
- return err
- }
- err = client.SetUARTParam(args.Rate, args.DBit, args.CBit, args.SBit)
- if err != nil {
- return err
- }
- return nil
- }
- // GetUARTParam 查询串口配置
- func (a *ATService) GetUARTParam(ctx context.Context, args *BaseArgs, reply *UARTReply) error {
- client, err := a.srv.GetATClient(args.IMEI)
- if err != nil {
- return err
- }
- result, err := client.GetUARTParam()
- if err != nil {
- return err
- }
- arr := gstr.Split(result, ",")
- if len(arr) > 3 {
- reply.Rate = gconv.Int(arr[0])
- reply.DBit = gconv.Int(arr[1])
- reply.CBit = gconv.Int(arr[2])
- reply.SBit = gconv.Int(arr[3])
- }
- return nil
- }
- // SetDTUID 注册包设置
- func (a *ATService) SetDTUID(ctx context.Context, args *DTUIDArgs, reply *EmptyResult) error {
- client, err := a.srv.GetATClient(args.IMEI)
- if err != nil {
- return err
- }
- err = client.SetDTUID(args.Mode, args.IdType, args.Format, args.Content, args.Channel)
- if err != nil {
- return err
- }
- return nil
- }
- // GetDTUID 查询注册包设置
- func (a *ATService) GetDTUID(ctx context.Context, args *DTUIDArgs, reply *DTUIDReply) error {
- client, err := a.srv.GetATClient(args.IMEI)
- if err != nil {
- return err
- }
- result, err := client.GetDTUID()
- if err != nil {
- return err
- }
- var dtuIds []*DTUID
- for _, v := range result {
- arr := gstr.Split(v, ",")
- if len(arr) > 4 {
- dtuIds = append(dtuIds, &DTUID{
- Mode: gconv.Int(arr[0]),
- IdType: gconv.Int(arr[1]),
- Format: gconv.Int(arr[2]),
- Content: arr[3],
- Channel: gconv.Int(arr[4]),
- })
- }
- }
- reply.DTUIDs = dtuIds
- return nil
- }
- // GetKeepAlive 查询心跳包配置
- func (a *ATService) GetKeepAlive(ctx context.Context, args *BaseArgs, reply *KeepAliveReply) error {
- client, err := a.srv.GetATClient(args.IMEI)
- if err != nil {
- return err
- }
- result, err := client.GetKeepAlive()
- if err != nil {
- return err
- }
- var channels []*KeepAlive
- for _, v := range result {
- arr := gstr.Split(v, ",")
- if len(arr) > 3 {
- channels = append(channels, &KeepAlive{
- Duration: gconv.Int(arr[0]),
- Format: gconv.Int(arr[1]),
- Content: arr[2],
- Channel: gconv.Int(arr[3]),
- })
- }
- }
- reply.Channels = channels
- return nil
- }
|