| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- package service
- import (
- "fmt"
- "rtzh_elec_temperature/conf"
- "rtzh_elec_temperature/enum"
- "rtzh_elec_temperature/global"
- "rtzh_elec_temperature/logger"
- "rtzh_elec_temperature/models/bo"
- "strings"
- "github.com/astaxie/beego/orm"
- )
- type SceneService struct {
- BaseService
- }
- //场景结构
- type SceneInfo struct {
- Id int `json:"id"`
- Scenename string `json:"scenename"` //场景名称
- Scenetype string `json:"scenetype"` //场景类别
- Modleid int64 `json:"modleid"` //模型列表
- }
- //获取场景表的名称,可修改为从配置文件中读取并返回
- func (c *SceneService) Gettablename() string {
- return "scene_info"
- }
- //新增场景纪录
- func (c *SceneService) InsertScene(scenename string, modelid int) error {
- db := orm.NewOrm()
- var sql = "insert into scene_model(scenename,modelid)values(?,?)"
- var paramsValue = []interface{}{scenename, modelid}
- var err error
- _, err = db.Raw(sql, paramsValue).Exec()
- if err != nil {
- logger.Logger.Error(err)
- new(bo.SystemLog).Fail(enum.AuditType_scene,
- enum.LogType_Insert,
- enum.OptEventType_Bus,
- enum.OptEventLevel_Hight,
- fmt.Sprintf("新增业务场景失败!操作数据:%+v", paramsValue),
- map[string]interface{}{"name": c.UserInfo.Usrname, "ip": c.UserInfo.Ip},
- )
- return err
- }
- global.GoCahce.Delete("scene_model_stat")
- new(bo.SystemLog).Success(enum.AuditType_scene,
- enum.LogType_Insert,
- enum.OptEventType_Bus,
- enum.OptEventLevel_Hight,
- fmt.Sprintf("新增业务场景成功!,操作数据:%+v", paramsValue),
- map[string]interface{}{"name": c.UserInfo.Usrname, "ip": c.UserInfo.Ip},
- )
- return err
- }
- //更新场景记录
- func (c *SceneService) UpdateScene(obj SceneInfo) (int64, error) {
- db := orm.NewOrm()
- n, err := db.Update(&obj)
- if err != nil {
- logger.Logger.Error(err)
- new(bo.SystemLog).Fail(enum.AuditType_scene,
- enum.LogType_Update,
- enum.OptEventType_Bus,
- enum.OptEventLevel_Hight,
- fmt.Sprintf("编辑业务场景失败!操作数据:%+v", obj),
- map[string]interface{}{"name": c.UserInfo.Usrname, "ip": c.UserInfo.Ip},
- )
- return 0, err
- }
- global.GoCahce.Delete("scene_model_stat")
- new(bo.SystemLog).Success(enum.AuditType_scene,
- enum.LogType_Update,
- enum.OptEventType_Bus,
- enum.OptEventLevel_Hight,
- fmt.Sprintf("编辑业务场景成功!操作数据:%+v", obj),
- map[string]interface{}{"name": c.UserInfo.Usrname, "ip": c.UserInfo.Ip},
- )
- return n, err
- }
- //查询场景模型关系纪录
- func (c *SceneService) QueryScene(params map[string]string) ([]orm.Params, error) {
- db := orm.NewOrm()
- var list []orm.Params
- var sql = []string{"select id,scenename,modelid from scene_model where 1=1 "}
- if len(params) > 0 {
- if params["id"] != "" {
- sql = append(sql, fmt.Sprintf(" and id =%s", params["id"]))
- } else if params["scenename"] != "" {
- sql = append(sql, fmt.Sprintf(" and scenename ='%s'", params["scenename"]))
- } else if params["modelid"] != "" {
- sql = append(sql, fmt.Sprintf(" and modelid =%s", params["modelid"]))
- }
- }
- _, err := db.Raw(strings.Join(sql, "")).Values(&list)
- if err != nil {
- logger.Logger.Error(err)
- return nil, err
- }
- if len(list) == 0 {
- //未配置应用场景对应的模型时,加载应用默认配置模型
- dafault_modelids := conf.GlobalConfig["dafault_modelids"]
- if dafault_modelids != "" {
- lst := strings.Split(dafault_modelids, ",")
- for _, mid := range lst {
- list = append(list, orm.Params{"id": "", "scenename": "app", "modelid": mid})
- }
- }
- }
- return list, err
- }
- //删除场景记录
- func (c *SceneService) DeleteScene(scenename string) error {
- db := orm.NewOrm()
- var sql = "delete from scene_model where scenename=?"
- _, err := db.Raw(sql, scenename).Exec()
- logobj := new(LogService)
- if err != nil {
- logger.Logger.Error(err)
- logobj.UserInfo = c.UserInfo
- logobj.SaveLog(fmt.Sprintf("删除场景%s数据失败:%s", scenename, err.Error()))
- new(bo.SystemLog).Fail(enum.AuditType_scene,
- enum.LogType_Delete,
- enum.OptEventType_Bus,
- enum.OptEventLevel_Hight,
- fmt.Sprintf("删除业务场景%s数据失败:%s", scenename, err.Error()),
- map[string]interface{}{"name": c.UserInfo.Usrname, "ip": c.UserInfo.Ip},
- )
- } else {
- global.GoCahce.Delete("scene_model_stat")
- logobj.SaveLog(fmt.Sprintf("删除场景%s数据成功", scenename))
- new(bo.SystemLog).Success(enum.AuditType_scene,
- enum.LogType_Delete,
- enum.OptEventType_Bus,
- enum.OptEventLevel_Hight,
- fmt.Sprintf("删除业务场景%s数据失败:%s", scenename, err.Error()),
- map[string]interface{}{"name": c.UserInfo.Usrname, "ip": c.UserInfo.Ip},
- )
- }
- return err
- }
- //获取所有场景
- func (c *SceneService) GetSceneList() ([]orm.Params, error) {
- cacheList, _ := global.GoCahce.Get("scene_model_stat")
- if cacheList != nil {
- return cacheList.([]orm.Params), nil
- }
- db := orm.NewOrm()
- var scenes []orm.Params
- var sql = "SELECT s.scenename,count(1) `number` FROM scene_model s GROUP BY scenename"
- _, err := db.Raw(sql).Values(&scenes)
- if err != nil {
- logger.Logger.Error(err)
- }
- global.GoCahce.Set("scene_model_stat", scenes, -1)
- return scenes, err
- }
|