123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- package bo
- import (
- "scd_check_tools/logger"
- "scd_check_tools/models/enum"
- "errors"
- "fmt"
- "strconv"
- "strings"
- "github.com/astaxie/beego/orm"
- )
- type ClientNode struct {
- DeviceBaseModel
- field map[string]interface{}
- }
- var Nodes = make(map[string]string)
- //判断节点,如果存在不处理,不存在则入库
- func (c *ClientNode) CheckNodes(node string) {
- if len(Nodes) == 0 {
- db := orm.NewOrm()
- var tableData []orm.Params
- var sqlCommandText = "select device_sn from global_client_node;"
- _, err := db.Raw(sqlCommandText).Values(&tableData)
- if err == nil {
- for _, record := range tableData {
- sn := record["device_sn"].(string)
- Nodes[sn] = sn
- }
- }
- }
- if _, ok2 := Nodes[node]; !ok2 { //如果不存在节点并添加节点
- err := c.SaveNode(0, 1, "", node)
- if err == nil {
- Nodes[node] = node
- }
- }
- }
- func (c *ClientNode) SaveNode(id, sync int, orgId, deviceSN string) error {
- db := orm.NewOrm()
- exists, err := check_exist_node(id, deviceSN)
- if err != nil {
- return err
- } else {
- if exists {
- return errors.New("已存在客户端节点:" + deviceSN)
- }
- }
- dblog := new(SystemLog)
- dblog.SetUserInfo(map[string]interface{}{"name": "", "ip": "127.0.0.1"})
- dblog.Audittype = enum.AuditType_Client
- dblog.Logtype = enum.LogType_Update
- dblog.Eventtype = enum.OptEventType_System
- dblog.Eventlevel = enum.OptEventLevel_Low
- var sqlCommandText string
- var sqlParameter []interface{}
- if id == 0 {
- dblog.Logtype = enum.LogType_Insert
- sqlCommandText = "insert into global_client_node(orgid,device_sn,is_sync)values(?,?,?);"
- sqlParameter = append(sqlParameter, orgId, deviceSN, sync)
- } else {
- sqlCommandText = "update global_client_node set orgid=?,device_sn=? where id=?;"
- sqlParameter = append(sqlParameter, orgId, deviceSN, id)
- }
- _, err = db.Raw(sqlCommandText, sqlParameter).Exec()
- if err != nil {
- dblog.Description = fmt.Sprintf("保存客户节点|%s失败,错误原因:%s", deviceSN, err.Error())
- dblog.Fail2()
- logger.Logger.Error(err)
- } else {
- dblog.Description = fmt.Sprintf("保存客户节点%s成功", deviceSN)
- dblog.Success2()
- }
- return err
- }
- func check_exist_node(id int, deviceSN string) (bool, error) {
- o := orm.NewOrm()
- var sqlCommandText string
- var sqlParameter []interface{}
- var exists bool
- if id == 0 {
- sqlCommandText = "select * from global_client_node where device_sn=?;"
- sqlParameter = append(sqlParameter, deviceSN)
- } else {
- sqlCommandText = "select * from global_client_node where device_sn=? and id!=?;"
- sqlParameter = append(sqlParameter, deviceSN, id)
- }
- var tableData []orm.Params
- _, err := o.Raw(sqlCommandText, sqlParameter).Values(&tableData)
- if err == nil {
- if len(tableData) > 0 {
- exists = true
- } else {
- exists = false
- }
- } else {
- exists = true
- }
- return exists, err
- }
- func (c *ClientNode) SearchNode(orgId, device_sn string, pageIndex, pageSize int) ([]orm.Params, int, error) {
- o := orm.NewOrm()
- var sqlCommandText, totalSql string
- var sqlCondition []string
- var sqlParameter []interface{}
- sqlCommandText = "select id,device_sn,orgid,(select name from t_data_organization b where a.orgid=b.id) orgname,case when status=1 then '在用' else '停用' end status,is_sync,`date` " +
- "from global_client_node a "
- if device_sn != "" {
- sqlCondition = append(sqlCondition, "a.device_sn like concat('%',?,'%')")
- sqlParameter = append(sqlParameter, device_sn)
- }
- if orgId != "" && orgId != "0" {
- sqlCondition = append(sqlCondition, "a.orgid=?")
- sqlParameter = append(sqlParameter, orgId)
- }
- if len(sqlCondition) > 0 {
- conditionStr := " where " + strings.Join(sqlCondition, " and ")
- sqlCommandText += conditionStr
- totalSql = "select count(1) number from global_client_node a " + conditionStr
- } else {
- totalSql = "select count(1) number from global_client_node a "
- }
- var limit = " limit " + strconv.Itoa((pageIndex-1)*pageSize) + "," + strconv.Itoa(pageSize)
- sqlCommandText += " order by a.id desc " + limit
- dblog := new(SystemLog)
- dblog.SetUserInfo(c.GetUserInfo())
- dblog.Audittype = enum.AuditType_Client
- dblog.Logtype = enum.LogType_Query
- dblog.Eventtype = enum.OptEventType_Bus
- dblog.Eventlevel = enum.OptEventLevel_Low
- var tableData []orm.Params
- var number int
- _, err := o.Raw(sqlCommandText, sqlParameter).Values(&tableData)
- dblog.Description = fmt.Sprintf("SQL:%s,参数:%+v", sqlCommandText, sqlParameter)
- if err == nil {
- dblog.Success2()
- var totalData []orm.Params
- _, err = o.Raw(totalSql, sqlParameter).Values(&totalData)
- if err == nil {
- number, _ = strconv.Atoi(totalData[0]["number"].(string))
- }
- } else {
- dblog.Fail2()
- logger.Logger.Error(err, dblog.Description)
- }
- return tableData, number, err
- }
|