scene_service.go 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. package service
  2. import (
  3. "fmt"
  4. "rtzh_elec_temperature/conf"
  5. "rtzh_elec_temperature/enum"
  6. "rtzh_elec_temperature/global"
  7. "rtzh_elec_temperature/logger"
  8. "rtzh_elec_temperature/models/bo"
  9. "strings"
  10. "github.com/astaxie/beego/orm"
  11. )
  12. type SceneService struct {
  13. BaseService
  14. }
  15. //场景结构
  16. type SceneInfo struct {
  17. Id int `json:"id"`
  18. Scenename string `json:"scenename"` //场景名称
  19. Scenetype string `json:"scenetype"` //场景类别
  20. Modleid int64 `json:"modleid"` //模型列表
  21. }
  22. //获取场景表的名称,可修改为从配置文件中读取并返回
  23. func (c *SceneService) Gettablename() string {
  24. return "scene_info"
  25. }
  26. //新增场景纪录
  27. func (c *SceneService) InsertScene(scenename string, modelid int) error {
  28. db := orm.NewOrm()
  29. var sql = "insert into scene_model(scenename,modelid)values(?,?)"
  30. var paramsValue = []interface{}{scenename, modelid}
  31. var err error
  32. _, err = db.Raw(sql, paramsValue).Exec()
  33. if err != nil {
  34. logger.Logger.Error(err)
  35. new(bo.SystemLog).Fail(enum.AuditType_scene,
  36. enum.LogType_Insert,
  37. enum.OptEventType_Bus,
  38. enum.OptEventLevel_Hight,
  39. fmt.Sprintf("新增业务场景失败!操作数据:%+v", paramsValue),
  40. map[string]interface{}{"name": c.UserInfo.Usrname, "ip": c.UserInfo.Ip},
  41. )
  42. return err
  43. }
  44. global.GoCahce.Delete("scene_model_stat")
  45. new(bo.SystemLog).Success(enum.AuditType_scene,
  46. enum.LogType_Insert,
  47. enum.OptEventType_Bus,
  48. enum.OptEventLevel_Hight,
  49. fmt.Sprintf("新增业务场景成功!,操作数据:%+v", paramsValue),
  50. map[string]interface{}{"name": c.UserInfo.Usrname, "ip": c.UserInfo.Ip},
  51. )
  52. return err
  53. }
  54. //更新场景记录
  55. func (c *SceneService) UpdateScene(obj SceneInfo) (int64, error) {
  56. db := orm.NewOrm()
  57. n, err := db.Update(&obj)
  58. if err != nil {
  59. logger.Logger.Error(err)
  60. new(bo.SystemLog).Fail(enum.AuditType_scene,
  61. enum.LogType_Update,
  62. enum.OptEventType_Bus,
  63. enum.OptEventLevel_Hight,
  64. fmt.Sprintf("编辑业务场景失败!操作数据:%+v", obj),
  65. map[string]interface{}{"name": c.UserInfo.Usrname, "ip": c.UserInfo.Ip},
  66. )
  67. return 0, err
  68. }
  69. global.GoCahce.Delete("scene_model_stat")
  70. new(bo.SystemLog).Success(enum.AuditType_scene,
  71. enum.LogType_Update,
  72. enum.OptEventType_Bus,
  73. enum.OptEventLevel_Hight,
  74. fmt.Sprintf("编辑业务场景成功!操作数据:%+v", obj),
  75. map[string]interface{}{"name": c.UserInfo.Usrname, "ip": c.UserInfo.Ip},
  76. )
  77. return n, err
  78. }
  79. //查询场景模型关系纪录
  80. func (c *SceneService) QueryScene(params map[string]string) ([]orm.Params, error) {
  81. db := orm.NewOrm()
  82. var list []orm.Params
  83. var sql = []string{"select id,scenename,modelid from scene_model where 1=1 "}
  84. if len(params) > 0 {
  85. if params["id"] != "" {
  86. sql = append(sql, fmt.Sprintf(" and id =%s", params["id"]))
  87. } else if params["scenename"] != "" {
  88. sql = append(sql, fmt.Sprintf(" and scenename ='%s'", params["scenename"]))
  89. } else if params["modelid"] != "" {
  90. sql = append(sql, fmt.Sprintf(" and modelid =%s", params["modelid"]))
  91. }
  92. }
  93. _, err := db.Raw(strings.Join(sql, "")).Values(&list)
  94. if err != nil {
  95. logger.Logger.Error(err)
  96. return nil, err
  97. }
  98. if len(list) == 0 {
  99. //未配置应用场景对应的模型时,加载应用默认配置模型
  100. dafault_modelids := conf.GlobalConfig["dafault_modelids"]
  101. if dafault_modelids != "" {
  102. lst := strings.Split(dafault_modelids, ",")
  103. for _, mid := range lst {
  104. list = append(list, orm.Params{"id": "", "scenename": "app", "modelid": mid})
  105. }
  106. }
  107. }
  108. return list, err
  109. }
  110. //删除场景记录
  111. func (c *SceneService) DeleteScene(scenename string) error {
  112. db := orm.NewOrm()
  113. var sql = "delete from scene_model where scenename=?"
  114. _, err := db.Raw(sql, scenename).Exec()
  115. logobj := new(LogService)
  116. if err != nil {
  117. logger.Logger.Error(err)
  118. logobj.UserInfo = c.UserInfo
  119. logobj.SaveLog(fmt.Sprintf("删除场景%s数据失败:%s", scenename, err.Error()))
  120. new(bo.SystemLog).Fail(enum.AuditType_scene,
  121. enum.LogType_Delete,
  122. enum.OptEventType_Bus,
  123. enum.OptEventLevel_Hight,
  124. fmt.Sprintf("删除业务场景%s数据失败:%s", scenename, err.Error()),
  125. map[string]interface{}{"name": c.UserInfo.Usrname, "ip": c.UserInfo.Ip},
  126. )
  127. } else {
  128. global.GoCahce.Delete("scene_model_stat")
  129. logobj.SaveLog(fmt.Sprintf("删除场景%s数据成功", scenename))
  130. new(bo.SystemLog).Success(enum.AuditType_scene,
  131. enum.LogType_Delete,
  132. enum.OptEventType_Bus,
  133. enum.OptEventLevel_Hight,
  134. fmt.Sprintf("删除业务场景%s数据失败:%s", scenename, err.Error()),
  135. map[string]interface{}{"name": c.UserInfo.Usrname, "ip": c.UserInfo.Ip},
  136. )
  137. }
  138. return err
  139. }
  140. //获取所有场景
  141. func (c *SceneService) GetSceneList() ([]orm.Params, error) {
  142. cacheList, _ := global.GoCahce.Get("scene_model_stat")
  143. if cacheList != nil {
  144. return cacheList.([]orm.Params), nil
  145. }
  146. db := orm.NewOrm()
  147. var scenes []orm.Params
  148. var sql = "SELECT s.scenename,count(1) `number` FROM scene_model s GROUP BY scenename"
  149. _, err := db.Raw(sql).Values(&scenes)
  150. if err != nil {
  151. logger.Logger.Error(err)
  152. }
  153. global.GoCahce.Set("scene_model_stat", scenes, -1)
  154. return scenes, err
  155. }