optimizeLogic.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. package logic
  2. import (
  3. "git.rtzhtech.cn/iss/public-lib/dao"
  4. "git.rtzhtech.cn/iss/public-lib/dto"
  5. "git.rtzhtech.cn/iss/public-lib/model"
  6. "git.rtzhtech.cn/iss/public-lib/svc"
  7. "github.com/gogf/gf/v2/util/gconv"
  8. "gorm.io/gen/field"
  9. )
  10. type OptimizeLogic struct {
  11. SvcCtx *svc.ServiceContext
  12. }
  13. // NewOptimizeLogic
  14. // @Description: 优化配置
  15. // @return *OptimizeLogic
  16. func NewOptimizeLogic() *OptimizeLogic {
  17. return &OptimizeLogic{
  18. SvcCtx: svc.SvcCtx,
  19. }
  20. }
  21. // AddOptimize
  22. // @Description: 添加
  23. // @receiver l
  24. // @param in
  25. // @return error
  26. func (l *OptimizeLogic) AddOptimize(in *model.DevDataOptimize) error {
  27. in.ID = 0
  28. err := l.SvcCtx.DevDataOptimize.Create(in)
  29. return err
  30. }
  31. // DelOptimize
  32. // @Description: 删除
  33. // @receiver l
  34. // @param mpId 测点id
  35. // @return error
  36. func (l *OptimizeLogic) DelOptimize(mpId int64) error {
  37. do := l.SvcCtx.DevDataOptimize
  38. _, err := do.Where(do.Mpid.Eq(mpId)).Delete()
  39. return err
  40. }
  41. // ModifyOptimize
  42. // @Description: 修改
  43. // @receiver l
  44. // @param in
  45. // @param fields 更新字段,当field为null时,更新in的全部字段
  46. // @return error
  47. func (l *OptimizeLogic) ModifyOptimize(in *model.DevDataOptimize, fields ...string) error {
  48. do := l.SvcCtx.DevDataOptimize
  49. var err error
  50. _do := do.Omit(do.ID).Where(do.Mpid.Eq(in.Mpid))
  51. if fields == nil {
  52. m := gconv.Map(in)
  53. _, err = _do.Updates(m)
  54. return err
  55. }
  56. var fieldList []field.Expr
  57. for _, v := range fields {
  58. _f, ok := do.GetFieldByName(v)
  59. if ok {
  60. fieldList = append(fieldList, _f)
  61. }
  62. }
  63. _, err = _do.Select(fieldList...).Updates(in)
  64. return err
  65. }
  66. func (l *OptimizeLogic) getOptimizeCond(req *dto.GetOptimizeReq) *dao.Condition {
  67. _dao := l.SvcCtx.DevDataOptimize
  68. cond := NewCondition(&req.LimitPage)
  69. if req.MpId > 0 {
  70. cond.Where[_dao.Mpid.String()] = req.MpId
  71. }
  72. return cond
  73. }
  74. // GetOptimizeInfo
  75. // @Description: 分页查询
  76. // @receiver l
  77. // @param where 查询条件
  78. // @param page
  79. // @param limit
  80. // @return []*model.DevDevinfo
  81. // @return error
  82. func (l *OptimizeLogic) GetOptimize(req *dto.GetOptimizeReq) (*dto.GetOptimizeResp, error) {
  83. _dao := l.SvcCtx.DevDataOptimize
  84. cond := l.getOptimizeCond(req)
  85. resp := &dto.GetOptimizeResp{}
  86. err := _dao.Base.Find(cond, &resp.List)
  87. if err != nil {
  88. return nil, err
  89. }
  90. err = _dao.Base.Count(cond, &resp.Total)
  91. return resp, err
  92. }
  93. // GetOptimizeCount
  94. // @Description:查询满足条件的总数
  95. // @receiver l
  96. // @param where 查询条件
  97. // @return int64
  98. // @return error
  99. func (l *OptimizeLogic) GetOptimizeCount(req *dto.GetOptimizeReq) (int64, error) {
  100. cond := l.getOptimizeCond(req)
  101. var count int64
  102. err := l.SvcCtx.DevDataOptimize.Base.Count(cond, &count)
  103. if err != nil {
  104. return 0, err
  105. }
  106. return count, err
  107. }