123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331 |
- 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.GasCylinder, 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
- err := e.Orm.Where("inner_code = ?", d.GetInnerCode()).First(&data).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.GetFailedErr
- }
- return nil
- }
- func (e *GasCylinder) GetByUid(d *dto.GasCylinderGetByUidReq, data *model.GasCylinder, p *actions.DataPermission) error {
- // 1、通过高频ID查询气瓶内编码
- err := e.Orm.Where("uid = ?", d.ChipUid).First(&data).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.GetFailedErr
- }
- //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 = ?", 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 {
- 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,
- 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
- }
- // Insert 创建GasCylinder对象
- func (e *GasCylinder) Insert(c *dto.GasCylinderInsertReq) error {
- var err error
- var data model.GasCylinder
- tx := e.Orm.Begin()
- defer func() {
- if err != nil {
- tx.Rollback()
- } else {
- tx.Commit()
- }
- }()
- err = e.Orm.Where("inner_code = ? AND dept_id = ?", c.InnerCode, c.DeptId).First(&data).Error
- if err != nil {
- if errors.Is(err, gorm.ErrRecordNotFound) {
- // 添加气瓶
- c.Generate(&data)
- err = tx.Create(&data).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- c.Id = data.Id
- return nil
- }
- e.Log.Errorf("db error: %s", err)
- return global.GetFailedErr
- }
- c.Generate(&data)
- err = tx.Save(&data).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.UpdateFailedErr
- }
- c.Id = data.Id
- return nil
- }
- // Update 修改GasCylinder对象
- func (e *GasCylinder) Update(c *dto.GasCylinderUpdateReq, p *actions.DataPermission) error {
- var err error
- tx := e.Orm.Begin()
- defer func() {
- if err != nil {
- tx.Rollback()
- } else {
- tx.Commit()
- }
- }()
- var gasCylinderModel = model.GasCylinder{}
- // 查询气瓶是否存在
- err = e.Orm.Scopes(actions.Permission(gasCylinderModel.TableName(), p)).
- First(&gasCylinderModel, c.GetId()).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- if errors.Is(err, gorm.ErrRecordNotFound) {
- return global.UpdateNotFoundOrNoPermissionErr
- }
- return global.UpdateFailedErr
- }
- c.Generate(&gasCylinderModel)
- err = tx.Save(&gasCylinderModel).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.UpdateFailedErr
- }
- c.Id = gasCylinderModel.Id
- return nil
- }
- // Remove 删除GasCylinder
- func (e *GasCylinder) Remove(c *dto.GasCylinderDeleteReq, p *actions.DataPermission) error {
- var err error
- tx := e.Orm.Begin()
- defer func() {
- if err != nil {
- tx.Rollback()
- } else {
- tx.Commit()
- }
- }()
- var gasCylinderModel model.GasCylinder
- // 查询气瓶是否存在
- err = e.Orm.Scopes(actions.Permission(gasCylinderModel.TableName(), p)).
- First(&gasCylinderModel, c.GetId()).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- if errors.Is(err, gorm.ErrRecordNotFound) {
- return global.DeleteNotFoundOrNoPermissionErr
- }
- return global.DeleteFailedErr
- }
- db := tx.Delete(&gasCylinderModel)
- if err = db.Error; err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.DeleteFailedErr
- }
- if db.RowsAffected == 0 {
- return global.DeleteNotFoundOrNoPermissionErr
- }
- return nil
- }
|