| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- package logic
- import (
- "git.rtzhtech.cn/iss/public-lib/dao"
- "git.rtzhtech.cn/iss/public-lib/dto"
- "git.rtzhtech.cn/iss/public-lib/model"
- "git.rtzhtech.cn/iss/public-lib/svc"
- "github.com/gogf/gf/v2/util/gconv"
- "gorm.io/gen/field"
- )
- type AlarmStrategyLogic struct {
- SvcCtx *svc.ServiceContext
- }
- // NewAlarmStrategyLogic
- // @Description: 告警策略
- // @return *AlarmStrategyLogic
- func NewAlarmStrategyLogic() *AlarmStrategyLogic {
- return &AlarmStrategyLogic{
- SvcCtx: svc.SvcCtx,
- }
- }
- // AddAlarmStrategy
- // @Description: 添加
- // @receiver l
- // @param in
- // @return error
- func (l *AlarmStrategyLogic) AddAlarmStrategy(in *dto.AddAlarmStrategyRes) error {
- in.ID = 0
- err := l.SvcCtx.AlarmStrategy.Create(&in.AlarmStrategy)
- if err != nil {
- return err
- }
- return l.addRelation(in)
- }
- func (l *AlarmStrategyLogic) addRelation(in *dto.AddAlarmStrategyRes) error {
- for i := 0; i < len(in.Relation); i++ {
- in.Relation[i].ID = 0
- in.Relation[i].Strategyid = in.Strategyid
- }
- err := l.SvcCtx.AlarmRelation.CreateInBatches(in.Relation, len(in.Relation))
- return err
- }
- // DelAlarmStrategy
- // @Description: 删除
- // @receiver l
- // @param id 策略id
- // @return error
- func (l *AlarmStrategyLogic) DelAlarmStrategy(strategyId int64) error {
- do := l.SvcCtx.AlarmStrategy
- _, err := do.Where(do.Strategyid.Eq(strategyId)).Delete()
- if err != nil {
- return err
- }
- return l.delRelation(strategyId)
- }
- func (l *AlarmStrategyLogic) delRelation(strategyId int64) error {
- _, err := l.SvcCtx.AlarmRelation.Where(l.SvcCtx.AlarmRelation.Strategyid.Eq(strategyId)).Delete()
- return err
- }
- // ModifyAlarmStrategy
- // @Description: 修改
- // @receiver l
- // @param in
- // @param fields 更新字段,当field为null时,更新in的全部字段
- // @return error
- func (l *AlarmStrategyLogic) ModifyAlarmStrategy(in *dto.AddAlarmStrategyRes, fields ...string) error {
- do := l.SvcCtx.AlarmStrategy
- var err error
- _do := do.Omit(do.ID).Where(do.Strategyid.Eq(in.Strategyid))
- if fields == nil {
- m := gconv.Map(in.AlarmStrategy)
- _, err = _do.Updates(m)
- } else {
- var fieldList []field.Expr
- for _, v := range fields {
- _f, ok := do.GetFieldByName(v)
- if ok {
- fieldList = append(fieldList, _f)
- }
- }
- _, err = _do.Select(fieldList...).Updates(in.AlarmStrategy)
- }
- if err != nil {
- return err
- }
- err = l.delRelation(in.Strategyid)
- if err != nil {
- return err
- }
- err = l.addRelation(in)
- return err
- }
- func (l *AlarmStrategyLogic) getAlarmStrategyCond(req *dto.GetAlarmStrategyReq) *dao.Condition {
- _dao := l.SvcCtx.AlarmStrategy
- cond := NewCondition(&req.LimitPage)
- if req.AppId > 0 {
- cond.Where[_dao.Appid.String()] = req.AppId
- }
- if req.StrategyName != "" {
- cond.Where[_dao.Strategyname.String()+" like ?"] = "%" + req.StrategyName + "%"
- }
- if req.AlarmLevel > 0 {
- cond.Where[_dao.Alarmlevel.String()] = req.AlarmLevel
- }
- return cond
- }
- // GetAlarmStrategy
- // @Description: 分页查询
- // @receiver l
- // @param where 查询条件
- // @param page
- // @param limit
- // @return []*model.AlarmStrategy
- // @return error
- func (l *AlarmStrategyLogic) GetAlarmStrategy(req *dto.GetAlarmStrategyReq) (*dto.GetAlarmStrategyResp, error) {
- strategy := l.SvcCtx.AlarmStrategy
- relation := l.SvcCtx.AlarmRelation
- var out dto.GetAlarmStrategyResp
- var alarmStrategyList []*model.AlarmStrategy
- cond := l.getAlarmStrategyCond(req)
- err := strategy.Base.Find(cond, &alarmStrategyList)
- if err != nil {
- return nil, err
- }
- err = strategy.Base.Count(cond, &out.Total)
- if err != nil {
- return nil, err
- }
- for _, v := range alarmStrategyList {
- o := &dto.AlarmStrategyDto{}
- o.AlarmStrategy = *v
- o.Relation, err = relation.Where(relation.Strategyid.Eq(v.Strategyid)).Find()
- if err != nil {
- return nil, err
- }
- out.List = append(out.List, o)
- }
- return &out, err
- }
- // GetAlarmStrategyCount
- // @Description:查询满足条件的总数
- // @receiver l
- // @param where 查询条件
- // @return int64
- // @return error
- func (l *AlarmStrategyLogic) GetAlarmStrategyCount(req *dto.GetAlarmStrategyReq) (int64, error) {
- cond := l.getAlarmStrategyCond(req)
- var count int64
- err := l.SvcCtx.AlarmStrategy.Base.Count(cond, &count)
- if err != nil {
- return 0, err
- }
- return count, err
- }
|