package service import ( "encoding/json" "errors" "fmt" "gas-cylinder-api/app/admin/model" "gas-cylinder-api/app/admin/service/dto" "gas-cylinder-api/common/actions" cDto "gas-cylinder-api/common/dto" "gas-cylinder-api/common/global" model2 "gas-cylinder-api/common/model" "github.com/go-resty/resty/v2" "gogs.baozhida.cn/zoie/OAuth-core/service" "gorm.io/gorm" "math/rand" "time" ) type GasCylinder struct { service.Service } // GetPage 获取GasCylinder列表 func (e *GasCylinder) GetPage(c *dto.GasCylinderGetPageReq, list *[]model.GasCylinder, count *int64, p *actions.DataPermission) error { var err error var data model.GasCylinder err = e.Orm.Model(&data). Scopes( cDto.MakeCondition(c.GetNeedSearch()), cDto.Paginate(c.GetPageSize(), c.GetPageIndex()), actions.Permission(data.TableName(), p), ). Find(list).Limit(-1).Offset(-1). Count(count).Error if err != nil { e.Log.Errorf("db error: %s", err) return global.GetFailedErr } return nil } // Get 获取GasCylinder对象 func (e *GasCylinder) Get(d *dto.GasCylinderGetReq, data *model.ProvGasCylinder, p *actions.DataPermission) error { // TODO 通过省平台获取气瓶详情 client := resty.New() resp, err := client.R().Get("https://mock.apifox.com/m2/4037076-0-default/151344663") if err != nil { e.Log.Errorf("db error: %s", err) return global.GetFailedErr } err = json.Unmarshal(resp.Body(), data) if err != nil { e.Log.Errorf("json Unmarshal err: %s", err) return global.GetFailedErr } obj := model.GasCylinder{ ProVariety: data.ProVariety, ProName: data.ProName, ProNo: data.ProNo, FillMedia: data.FillMedia, MakeUnit: data.MakeUnit, MakeTime: data.MakeTime, WorkPressure: data.WorkPressure, //InnerCode: data.InnerCode, Volume: data.Volume, CheckTime: data.CheckTime, NextCheckTime: data.NextCheckTime, ProUuid: data.ProUuid, //Uid: data.Uid, ProductId: data.ProductId, DeadlineTime: data.DeadlineTime, CheckInTime: data.CheckInTime, DeptBy: model2.DeptBy{ DeptId: p.DeptId, }, } //e.Orm.Create(&obj) err = e.Orm.Where("inner_code = ?", d.GetInnerCode()).Updates(&obj).Error if err != nil { e.Log.Errorf("db error: %s", err) if errors.Is(err, gorm.ErrRecordNotFound) { return global.GetNotFoundOrNoPermissionErr } return global.GetFailedErr } data.InnerCode = d.InnerCode return nil } func (e *GasCylinder) GetByUid(d *dto.GasCylinderGetByUidReq, data *model.ProvGasCylinder, p *actions.DataPermission) error { // TODO 通过省平台获取气瓶详情 client := resty.New() // 1、通过高频ID查询气瓶内编码 var gasCylinder model.GasCylinder err := e.Orm.Where("uid = ?", d.ChipUid).First(&gasCylinder).Error if err != nil { e.Log.Errorf("db error: %s", err) return global.CreateFailedErr } resp, err := client.R().Get("https://mock.apifox.com/m2/4037076-0-default/151344663") if err != nil { e.Log.Errorf("db error: %s", err) return global.GetFailedErr } err = json.Unmarshal(resp.Body(), data) if err != nil { e.Log.Errorf("json Unmarshal err: %s", err) return global.GetFailedErr } obj := model.GasCylinder{ ProVariety: data.ProVariety, ProName: data.ProName, ProNo: data.ProNo, FillMedia: data.FillMedia, MakeUnit: data.MakeUnit, MakeTime: data.MakeTime, WorkPressure: data.WorkPressure, //InnerCode: data.InnerCode, Volume: data.Volume, CheckTime: data.CheckTime, NextCheckTime: data.NextCheckTime, ProUuid: data.ProUuid, //Uid: data.Uid, ProductId: data.ProductId, DeadlineTime: data.DeadlineTime, CheckInTime: data.CheckInTime, DeptBy: model2.DeptBy{ DeptId: p.DeptId, }, } //e.Orm.Create(&obj) err = e.Orm.Where("inner_code = ?", gasCylinder.InnerCode).Updates(&obj).Error if err != nil { e.Log.Errorf("db error: %s", err) if errors.Is(err, gorm.ErrRecordNotFound) { return global.GetNotFoundOrNoPermissionErr } return global.GetFailedErr } data.InnerCode = gasCylinder.InnerCode data.Uid = gasCylinder.Uid return nil } func (e *GasCylinder) Mock(d *dto.GasCylinderMockReq) error { // TODO 通过省平台获取气瓶详情 for i := 0; i < 20; i++ { rand.New(rand.NewSource(time.Now().UnixNano())) // 生成随机数后八位 randomSuffix := rand.Intn(9999999999999999) randomSuffix2 := rand.Intn(999999999999) // 组合成16位随机数 InnerCode := fmt.Sprintf("%16d", randomSuffix) uid := fmt.Sprintf("%12d", randomSuffix2) client := resty.New() resp, err := client.R().Get("https://mock.apifox.com/m2/4037076-0-default/151344663") if err != nil { e.Log.Errorf("db error: %s", err) return global.GetFailedErr } var data model.GasCylinder err = json.Unmarshal(resp.Body(), &data) if err != nil { e.Log.Errorf("json Unmarshal err: %s", err) return global.GetFailedErr } obj := model.GasCylinder{ ProVariety: data.ProVariety, ProName: data.ProName, ProNo: data.ProNo, FillMedia: data.FillMedia, MakeUnit: data.MakeUnit, MakeTime: data.MakeTime, WorkPressure: data.WorkPressure, InnerCode: InnerCode, Volume: data.Volume, CheckTime: data.CheckTime, NextCheckTime: data.NextCheckTime, ProUuid: data.ProUuid, Uid: uid, ProductId: data.ProductId, DeadlineTime: data.DeadlineTime, CheckInTime: data.CheckInTime, DeptBy: model2.DeptBy{ DeptId: d.DeptId, }, } err = e.Orm.Create(&obj).Error if err != nil { e.Log.Errorf("db error: %s", err) return global.GetFailedErr } } return nil }