|
|
package DataexDAO
|
|
|
|
|
|
import (
|
|
|
"dsDataex/GenXorm/models"
|
|
|
"dsDataex/MyService/MySwagger"
|
|
|
"dsDataex/Utils/CacheUtil"
|
|
|
"dsDataex/Utils/DbUtil"
|
|
|
"dsDataex/Utils/ErrorConst"
|
|
|
"dsDataex/Utils/LogUtil"
|
|
|
"encoding/json"
|
|
|
"fmt"
|
|
|
uuid "github.com/satori/go.uuid"
|
|
|
"html"
|
|
|
"strings"
|
|
|
"time"
|
|
|
)
|
|
|
|
|
|
//数据库
|
|
|
var db = DbUtil.Engine
|
|
|
|
|
|
/**
|
|
|
* @Author zhangjun
|
|
|
* @Description 获取数据源信息
|
|
|
* @Date 2020-06-16 09:35
|
|
|
* @Param systemID string 接入系统id
|
|
|
* @return 【】map 数据map数组
|
|
|
* @return error 错误
|
|
|
**/
|
|
|
func GetbySystemID(systemID string) (bool, string, []map[string]interface{}, error){
|
|
|
|
|
|
sql := "SELECT id from t_dataex_datasource where delete_flag = -1 and enable_flag = 1 and system_id = '" + html.EscapeString(systemID) + "'"
|
|
|
|
|
|
//通过SQL获取带缓存的数据
|
|
|
list, count, _ := CacheUtil.Page(sql, 100,0)
|
|
|
|
|
|
if count >0 {
|
|
|
return true, "数据获取成功", list,nil
|
|
|
}else {
|
|
|
return false, "数据获取失败,systemID对应的数据源类型不存在", nil,nil
|
|
|
}
|
|
|
}
|
|
|
|
|
|
func GetParentIDBaseGO(areaCode string) string{
|
|
|
|
|
|
sql := "SELECT id from t_dataex_orgtree where org_type = 1 and area_id = '" + areaCode + "'"
|
|
|
|
|
|
//通过SQL获取带缓存的数据
|
|
|
list, count, _ := CacheUtil.Page(sql, 100,0)
|
|
|
|
|
|
if count >0 {
|
|
|
return list[0]["id"].(string)
|
|
|
}else {
|
|
|
return ""
|
|
|
}
|
|
|
}
|
|
|
|
|
|
func GetParentID2BaseGO(areaCodes []string) map[string] string{
|
|
|
|
|
|
var areaCode = strings.Join(areaCodes, "','")
|
|
|
|
|
|
sql := "SELECT id from t_dataex_orgtree where org_type = 1 and area_id in ('" + areaCode + "')"
|
|
|
|
|
|
//通过SQL获取带缓存的数据
|
|
|
list, count, _ := CacheUtil.Page(sql, 100,0)
|
|
|
|
|
|
var result=make( map[string]string)
|
|
|
|
|
|
if count >0 {
|
|
|
for no:=0;no< len(list);no++{
|
|
|
|
|
|
result[list[no]["area_id"].(string)]=list[no]["id"].(string)
|
|
|
}
|
|
|
|
|
|
return result
|
|
|
}else {
|
|
|
return nil
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* @Author zhangjun
|
|
|
* @Description 校验接入系统是否为数据源提供者
|
|
|
* @Date 2020-06-16 09:35
|
|
|
* @Param systemID string 接入系统ID
|
|
|
* @Param datasource string 数据类型code
|
|
|
* @return bool 成功/失败
|
|
|
* @return string 结果
|
|
|
* @return map 数据map
|
|
|
* @return error 错误
|
|
|
**/
|
|
|
func CheckDatasourceSet(systemID string,datasource string) (bool, string, map[string]interface{}, error){
|
|
|
|
|
|
sql := "SELECT id from t_dataex_datasource where delete_flag = -1 and enable_flag = 1 and datasource_code = '" + html.EscapeString(datasource) + "' and system_id = '" + html.EscapeString(systemID) + "'"
|
|
|
|
|
|
//通过SQL获取带缓存的数据
|
|
|
list, count, _ := CacheUtil.Page(sql, 100,0)
|
|
|
|
|
|
if count==1 {
|
|
|
return true, "数据源校验成功", list[0],nil
|
|
|
}else {
|
|
|
return false, "数据源校验失败,接入系统无权操作此数据源", nil,nil
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* @Author zhangjun
|
|
|
* @Description 校验接入系统是否为数据源消费者
|
|
|
* @Date 2020-06-23 08:10
|
|
|
* @Param
|
|
|
* @return
|
|
|
**/
|
|
|
func CheckDatasourceGet(systemID string,datasource string) (bool, string, map[string]interface{}, error){
|
|
|
|
|
|
sql:="SELECT id from t_dataex_dataaccess where delete_flag = -1 and enable_flag = 1 and datasource_code = '" + html.EscapeString(datasource) + "' and consume_systemid = '" + html.EscapeString(systemID) + "'"
|
|
|
|
|
|
list, count, _ := CacheUtil.Page(sql, 100,0)
|
|
|
|
|
|
if count==1 {
|
|
|
return true, "数据源校验成功", list[0],nil
|
|
|
}else {
|
|
|
return false, "数据源校验失败,接入系统无权操作此数据源", nil,nil
|
|
|
}
|
|
|
}
|
|
|
|
|
|
func GetDatasourceOrgIDS(consumeType int,orgID string) []string {
|
|
|
var result []string
|
|
|
|
|
|
switch consumeType{
|
|
|
case 1:
|
|
|
result=append(result,orgID)
|
|
|
|
|
|
break
|
|
|
case 2:
|
|
|
result=CacheUtil.OrgtreeGetScope(orgID)
|
|
|
|
|
|
break
|
|
|
case -1:
|
|
|
result=append(result,orgID)
|
|
|
|
|
|
break
|
|
|
default:
|
|
|
break
|
|
|
}
|
|
|
|
|
|
return result
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* @Author zhangjun
|
|
|
* @Description 获取机构权限信息
|
|
|
* @Date 2020-06-16 09:39
|
|
|
* @Param provideType int 配置机构校验类型(1:本机构、2:本机构和下属机构、-1:不校验)
|
|
|
* @Param provideOrgid string 配置机构id
|
|
|
* @Param orgID string 数据所属机构id
|
|
|
* @return bool 成功/失败
|
|
|
* @return string 结果
|
|
|
* @return map 数据map
|
|
|
* @return error 错误
|
|
|
**/
|
|
|
func CheckProvideOrgID(provideType int, provideOrgid string,orgID string) (bool, string, map[string]interface{}, error){
|
|
|
|
|
|
//change by zhangjun 2020-07-15
|
|
|
ids:=[]string{orgID}
|
|
|
//ids:=[]string{strings.ToLower(orgID)}
|
|
|
|
|
|
result := CacheUtil.GetListByIds( ids ,CacheUtil.GetBean("t_dataex_orgtree"))
|
|
|
|
|
|
switch provideType{
|
|
|
case 1:
|
|
|
if provideOrgid==orgID{
|
|
|
|
|
|
if len(result)==1{
|
|
|
|
|
|
return true,"获取机构数据成功",result[0],nil
|
|
|
}else {
|
|
|
|
|
|
return false,"获取机构数据失败,无此机构",nil,nil
|
|
|
}
|
|
|
}else {
|
|
|
return false,"数据权限校验不通过,无权操作此机构下属数据",nil,nil
|
|
|
}
|
|
|
break
|
|
|
case 2:
|
|
|
|
|
|
if provideOrgid=="-1"{
|
|
|
|
|
|
if len(result)==1{
|
|
|
|
|
|
return true,"获取机构数据成功",result[0],nil
|
|
|
}else {
|
|
|
|
|
|
return false,"获取机构数据失败,无此机构",nil,nil
|
|
|
}
|
|
|
} else {
|
|
|
|
|
|
if CacheUtil.OrgtreeCheckScope(provideOrgid,orgID) == true{
|
|
|
if len(result)==1{
|
|
|
|
|
|
return true,"获取机构数据成功",result[0],nil
|
|
|
}else {
|
|
|
|
|
|
return false,"获取机构数据失败,无此机构",nil,nil
|
|
|
}
|
|
|
}else {
|
|
|
return false,"数据权限校验不通过,无权操作此机构下属数据",nil,nil
|
|
|
}
|
|
|
}
|
|
|
break
|
|
|
case -1:
|
|
|
if len(result)==1{
|
|
|
|
|
|
return true,"获取机构数据成功",result[0],nil
|
|
|
}else {
|
|
|
|
|
|
return false,"获取机构数据失败,无此机构",nil,nil
|
|
|
}
|
|
|
break
|
|
|
default:
|
|
|
return false,"provideType数据配置错误",nil,nil
|
|
|
break
|
|
|
}
|
|
|
|
|
|
return false,"获取机构数据失败,无此机构",nil,nil
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* @Author zhangjun
|
|
|
* @Description
|
|
|
* @Date 2020-06-23 08:28
|
|
|
* @Param
|
|
|
* @return
|
|
|
**/
|
|
|
func CheckConsumeOrgID(consumeType int, consumeOrgid string,orgID string) (bool, string, error) {
|
|
|
|
|
|
switch consumeType {
|
|
|
case 1:
|
|
|
if consumeOrgid == orgID {
|
|
|
return true, "数据权限校验通过", nil
|
|
|
}else {
|
|
|
return false, "数据权限校验不通过,无权访问此机构下属数据", nil
|
|
|
}
|
|
|
break
|
|
|
case 2:
|
|
|
if consumeOrgid=="-1"{
|
|
|
|
|
|
return true, "数据权限校验通过", nil
|
|
|
} else {
|
|
|
|
|
|
if CacheUtil.OrgtreeCheckScope(consumeOrgid,orgID) == true{
|
|
|
return true, "数据权限校验通过", nil
|
|
|
}else {
|
|
|
return false, "数据权限校验不通过,无权访问此机构下属数据", nil
|
|
|
}
|
|
|
}
|
|
|
break
|
|
|
case -1:
|
|
|
return true, "数据权限校验通过", nil
|
|
|
break
|
|
|
default:
|
|
|
return false,"consumeType数据配置错误",nil
|
|
|
break
|
|
|
}
|
|
|
return false, "数据权限校验不通过,无权访问此机构下属数据", nil
|
|
|
}
|
|
|
|
|
|
func SaveDataError(fails []MySwagger.FailResult,datas []MySwagger.Data ,SystemId string,DatasourceId string) (bool, string, error) {
|
|
|
|
|
|
error := new(models.TDataexError)
|
|
|
|
|
|
error.Id=strings.ToLower(uuid.NewV4().String())
|
|
|
|
|
|
for no:=0;no< len(datas);no++{
|
|
|
if datas[no].DataID == fails[0].FailID{
|
|
|
|
|
|
error.SystemId= SystemId
|
|
|
error.DatasourceId=DatasourceId
|
|
|
error.OrgId=datas[no].OrgID
|
|
|
error.DataId=datas[no].DataID
|
|
|
|
|
|
bytes, _ := json.Marshal(datas[no].Data)
|
|
|
error.DataContent=string(bytes)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
error.ErrorInfo=fails[0].FailReason
|
|
|
|
|
|
var createTime =time.Now()
|
|
|
error.CreateTime= createTime
|
|
|
error.DeleteFlag=-1
|
|
|
error.EnableFlag=1
|
|
|
|
|
|
_, err := db.Insert(error)
|
|
|
|
|
|
fmt.Println("[DataexDAO] ES Error :", fails[0].FailReason)
|
|
|
|
|
|
if err != nil {
|
|
|
fmt.Println("[DataexDAO] MySQL Error :", err)
|
|
|
|
|
|
LogUtil.Error(ErrorConst.SqlUpdateError, "SaveDataError,数据库操作发生严重错误:"+err.Error())
|
|
|
}
|
|
|
|
|
|
if len(fails)>1{
|
|
|
var sqls []string
|
|
|
var sql string
|
|
|
|
|
|
//for no:=1;no< len(fails);no++{
|
|
|
//
|
|
|
// sql="insert into t_dataex_error (id,system_id,datasource_id,create_time,delete_flag,enable_flag) values ('"+strings.ToLower(uuid.NewV4().String())+"','"+SystemId+"','"+DatasourceId+"','"+createTime.Format("2006-01-02 15:04:05")+"',-1,1)"
|
|
|
//
|
|
|
// sqls=append(sqls,sql)
|
|
|
//}
|
|
|
|
|
|
for no:=0;no< len(datas);no++{
|
|
|
for no2:=1;no2< len(fails);no2++{
|
|
|
if datas[no].DataID == fails[no2].FailID{
|
|
|
|
|
|
sql="insert into t_dataex_error (id,system_id,datasource_id,org_id,data_id,error_info,create_time,delete_flag,enable_flag) values ('"+strings.ToLower(uuid.NewV4().String())+"','"+SystemId+"','"+DatasourceId+"','"+datas[no].OrgID+"','"+datas[no].DataID+"','"+fails[no2].FailReason+"','"+createTime.Format("2006-01-02 15:04:05")+"',-1,1)"
|
|
|
|
|
|
sqls=append(sqls,sql)
|
|
|
|
|
|
continue
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
DbUtil.Engine.Sqls(sqls).Execute()
|
|
|
}
|
|
|
|
|
|
return true, "数据添加成功", nil
|
|
|
}
|
|
|
|
|
|
func SaveDataError2(fails []MySwagger.FailResult,datas []MySwagger.Data ,SystemId string,DatasourceId string) (bool, string, error) {
|
|
|
|
|
|
var sqls []string
|
|
|
var sql string
|
|
|
var createTime =time.Now()
|
|
|
|
|
|
for no:=0;no< len(datas);no++{
|
|
|
for no2:=0;no2< len(fails);no2++{
|
|
|
if datas[no].DataID == fails[no2].FailID{
|
|
|
|
|
|
bytes, _ := json.Marshal(datas[no].Data)
|
|
|
|
|
|
sql="insert into t_dataex_error (id,system_id,datasource_id,org_id,data_id,data_content,create_time,delete_flag,enable_flag) values ('"+strings.ToLower(uuid.NewV4().String())+"','"+SystemId+"','"+DatasourceId+"','"+datas[no].OrgID+"','"+datas[no].DataID+"','"+string(bytes)+"','"+createTime.Format("2006-01-02 15:04:05")+"',-1,1)"
|
|
|
|
|
|
sqls=append(sqls,sql)
|
|
|
|
|
|
fmt.Println("[DataexDAO] ES Error :", fails[0].FailReason)
|
|
|
|
|
|
continue
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
_,_,err:=DbUtil.Engine.Sqls(sqls).Execute()
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
|
fmt.Println("[DataexDAO] MySQL Error :", err)
|
|
|
|
|
|
LogUtil.Error(ErrorConst.SqlUpdateError, "SaveDataError,数据库操作发生严重错误:"+err.Error())
|
|
|
}
|
|
|
|
|
|
return true, "数据添加成功", nil
|
|
|
} |