actInfoLogic.go 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  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 ActInfoLogic struct {
  11. SvcCtx *svc.ServiceContext
  12. }
  13. // NewActInfoLogic
  14. // @Description: 控制点动作
  15. // @return *ActInfoLogic
  16. func NewActInfoLogic() *ActInfoLogic {
  17. return &ActInfoLogic{
  18. SvcCtx: svc.SvcCtx,
  19. }
  20. }
  21. // AddActInfo
  22. // @Description: 添加
  23. // @receiver l
  24. // @param in
  25. // @return error
  26. func (l *ActInfoLogic) AddActInfo(in *model.DevCpaction) error {
  27. in.ID = 0
  28. err := l.SvcCtx.DevCpaction.Create(in)
  29. return err
  30. }
  31. // DelActInfo
  32. // @Description: 删除
  33. // @receiver l
  34. // @param actId 动作id
  35. // @return error
  36. func (l *ActInfoLogic) DelActInfo(actId int64) error {
  37. do := l.SvcCtx.DevCpaction
  38. _linkRelationAction := l.SvcCtx.LinkRelationAction
  39. //删除关联的联动信息
  40. _linkRelationAction.Where(_linkRelationAction.Actid.Eq(actId)).Delete()
  41. _, err := do.Where(do.Actid.Eq(actId)).Delete()
  42. return err
  43. }
  44. // ModifyActInfo
  45. // @Description: 修改
  46. // @receiver l
  47. // @param in
  48. // @param fields 更新字段,当field为null时,更新in的全部字段
  49. // @return error
  50. func (l *ActInfoLogic) ModifyActInfo(in *model.DevCpaction, fields ...string) error {
  51. do := l.SvcCtx.DevCpaction
  52. var err error
  53. _do := do.Omit(do.ID, do.Cpid).Where(do.Actid.Eq(in.Actid))
  54. if fields == nil {
  55. m := gconv.Map(in)
  56. _, err = _do.Updates(m)
  57. return err
  58. }
  59. var fieldList []field.Expr
  60. for _, v := range fields {
  61. _f, ok := do.GetFieldByName(v)
  62. if ok {
  63. fieldList = append(fieldList, _f)
  64. }
  65. }
  66. _, err = _do.Select(fieldList...).Updates(in)
  67. return err
  68. }
  69. func (l *ActInfoLogic) getActInfoCond(req *dto.GetActInfoReq) *dao.Condition {
  70. _dao := l.SvcCtx.DevCpaction
  71. cond := NewCondition(&req.LimitPage)
  72. if req.ActId > 0 {
  73. cond.Where[_dao.Actid.String()] = req.ActId
  74. }
  75. if req.CpId > 0 {
  76. cond.Where[_dao.Cpid.String()] = req.CpId
  77. }
  78. return cond
  79. }
  80. // GetActInfo
  81. // @Description: 分页查询
  82. // @receiver l
  83. // @param where 查询条件
  84. // @param page
  85. // @param limit
  86. // @return []*model.DevDevinfo
  87. // @return error
  88. func (l *ActInfoLogic) GetActInfo(req *dto.GetActInfoReq) (*dto.GetActInfoResp, error) {
  89. _dao := l.SvcCtx.DevCpaction
  90. cond := l.getActInfoCond(req)
  91. resp := &dto.GetActInfoResp{}
  92. err := _dao.Base.Find(cond, &resp.List)
  93. if err != nil {
  94. return nil, err
  95. }
  96. err = _dao.Base.Count(cond, &resp.Total)
  97. return resp, err
  98. }
  99. // GetActInfoCount
  100. // @Description:查询满足条件的总数
  101. // @receiver l
  102. // @param where 查询条件
  103. // @return int64
  104. // @return error
  105. func (l *ActInfoLogic) GetActInfoCount(req *dto.GetActInfoReq) (int64, error) {
  106. cond := l.getActInfoCond(req)
  107. var count int64
  108. err := l.SvcCtx.DevCpaction.Base.Count(cond, &count)
  109. if err != nil {
  110. return 0, err
  111. }
  112. return count, err
  113. }