From 2735328641899f71feecd4f41ac2bc1cf8969ae3 Mon Sep 17 00:00:00 2001 From: huanghai <10402852@qq.com> Date: Fri, 17 Jul 2020 14:37:09 +0800 Subject: [PATCH 1/9] 'commit' --- dsBaseRpc/DataExchange/DataExchange.go | 13 +++++---- dsBaseRpc/Sql/t_base_teacher.sql | 38 ++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 5 deletions(-) create mode 100644 dsBaseRpc/Sql/t_base_teacher.sql diff --git a/dsBaseRpc/DataExchange/DataExchange.go b/dsBaseRpc/DataExchange/DataExchange.go index 3e7a66a7..32db9a23 100644 --- a/dsBaseRpc/DataExchange/DataExchange.go +++ b/dsBaseRpc/DataExchange/DataExchange.go @@ -36,6 +36,7 @@ type tableStruct struct { var sqlDict = []tableStruct{ {TableName: "t_base_organization", PrimaryKey: "org_id", DataSource: "org_school"}, {TableName: "t_base_class", PrimaryKey: "class_id", DataSource: "org_class"}, + {TableName: "t_base_teacher", PrimaryKey: "teacher_id", DataSource: "user_teacher"}, } // 数据上报的结构体 @@ -67,11 +68,12 @@ func init() { os.MkdirAll(progressFilePath, os.ModePerm) } } + /** 功能:组织机构上报 作者:黄海 时间:2020-07-17 - */ +*/ func InitOrg() { //(1)是不是进行过首次上报,如果没有话,需要执行一次组织机构上报 logName := progressFilePath + "t_base_organization.log" @@ -118,12 +120,12 @@ func InitOrg() { fmt.Println(CommonUtil.GetCurrentTime() + " 同步:成功完成组织机构初始化上报,本次完成" + CommonUtil.ConvertIntToString(count) + "条!") } //记录日志 - maxSql:=sql+" order by t1.last_updated_time,t1.id_int desc limit 1" + maxSql := sql + " order by t1.last_updated_time desc,t1.id_int desc limit 1" var l logStruct l.IdInt = 0 l.StartUpdateTs = defaultStartTs //取得最后一行的最大值 - list,_=db.SQL(maxSql).Query().List() + list, _ = db.SQL(maxSql).Query().List() if len(list) > 0 { l.StartUpdateTs = list[len(list)-1]["last_updated_time"].(string) l.IdInt = list[len(list)-1]["id_int"].(int64) @@ -146,6 +148,7 @@ func DataExchange() { for { //(1)组织机构上报 InitOrg() + //(2)本轮上报的数量,如果是0,休息5秒后再继续上传 postCount := UploadData() if postCount == 0 { @@ -245,7 +248,7 @@ func PostToServer(t tableStruct, list []map[string]interface{}) bool { msg := string(jsonBytes) //提交到汇集中心 p := httpDo("POST", ConfigUtil.DataExchangeUrl, msg) - if !p.Success{ + if !p.Success { fmt.Println(CommonUtil.GetCurrentTime() + " 同步:上报到数据汇集中心失败,将休息5秒后重试!错误原因:" + p.Message) time.Sleep(5 * 1e9) } @@ -270,7 +273,7 @@ func getRecord(tableName string, lastUpdatedTime string, idInt int64) (string, i var rsGt = make([]map[string]interface{}, 0) lastUpdatedTime, idInt, rsEq = getRecordEq(eqSql, lastUpdatedTime, idInt, limit) - if len(rsEq) < limit { + if rsEq == nil || len(rsEq) < limit { //尝试一次gt操作(组合一下) lastUpdatedTime, idInt, rsGt = getRecordGt(gtSql, lastUpdatedTime, idInt, limit-len(rsEq)) if len(rsGt) > 0 { diff --git a/dsBaseRpc/Sql/t_base_teacher.sql b/dsBaseRpc/Sql/t_base_teacher.sql new file mode 100644 index 00000000..74ff35bd --- /dev/null +++ b/dsBaseRpc/Sql/t_base_teacher.sql @@ -0,0 +1,38 @@ +select cast(t1.`person_id` as char(36) charset utf8) AS `teacher_id`, +t1.`identity_id` AS `identity_id`, +t1.`id_int` AS `id_int`, +t1.`xm` AS `xm`, +t1.`xmpy` AS `xmpy`, +t1.`cym` AS `cym`, +t1.`xbm` AS `xbm`, +t1.`csrq` AS `csrq`, +t1.`mzm` AS `mzm`, +t1.`zzmmm` AS `zzmmm`, +t1.`sfzjlxm` AS `sfzjlxm`, +t1.`sfzjh` AS `sfzjh`, +t1.`xlm` AS `xlm`, +t1.`xwm` AS `xwm`, +t1.`zcm` AS `zcm`, +t1.`bzlbm` AS `bzlbm`, +t1.`stage_id` AS `stage_id`, +t1.`subject_id` AS `subject_id`, +t1.`gwzym` AS `gwzym`, +t1.`lxdh` AS `lxdh`, +t1.`dzxx` AS `dzxx`, +t1.`b_use` AS `b_use`, +t1.`state_id` AS `state_id`, +cast(t1.`bureau_id` as char(36) charset utf8) AS `bureau_id`, +cast(t1.`org_id` as char(36) charset utf8) AS `org_id`, +cast(t1.`main_school_id` as char(36) charset utf8) AS `main_school_id`, +t1.`province_code` AS `province_code`, +t1.`city_code` AS `city_code`, +t1.`district_code` AS `district_code`, +t1.`sort_id` AS `sort_id`, +DATE_FORMAT(t1.`last_updated_time`,'%Y/%m/%d %H:%i:%s') AS `last_updated_time`, +DATE_FORMAT(t1.`cjny`,'%Y/%m/%d %H:%i:%s') AS `cjny`, +case t1.`b_use` when -1 then 1 else 0 end AS `del_flag`, +`t_base_organization`.`main_school_type` AS `main_school_type`, +`t_base_organization`.`xxbbm` AS `xxbbm`, +`t_base_organization`.`xxbxlxm` AS `xxbxlxm`, +`t_base_organization`.`szdcxlxm` AS `szdcxlxm` +from (`t_base_teacher` as t1 join `t_base_organization` on (t1.`org_id` = `t_base_organization`.`org_id`)) \ No newline at end of file From 95f8117e93379ffc1b44c7433d8305ad9d8e7253 Mon Sep 17 00:00:00 2001 From: huanghai <10402852@qq.com> Date: Fri, 17 Jul 2020 14:40:51 +0800 Subject: [PATCH 2/9] 'commit' --- dsBaseRpc/DataExchange/DataExchange.go | 1 + dsBaseRpc/Sql/t_base_student.sql | 39 ++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 dsBaseRpc/Sql/t_base_student.sql diff --git a/dsBaseRpc/DataExchange/DataExchange.go b/dsBaseRpc/DataExchange/DataExchange.go index 32db9a23..20640c09 100644 --- a/dsBaseRpc/DataExchange/DataExchange.go +++ b/dsBaseRpc/DataExchange/DataExchange.go @@ -37,6 +37,7 @@ var sqlDict = []tableStruct{ {TableName: "t_base_organization", PrimaryKey: "org_id", DataSource: "org_school"}, {TableName: "t_base_class", PrimaryKey: "class_id", DataSource: "org_class"}, {TableName: "t_base_teacher", PrimaryKey: "teacher_id", DataSource: "user_teacher"}, + {TableName: "t_base_student", PrimaryKey: "student_id", DataSource: "user_student"}, } // 数据上报的结构体 diff --git a/dsBaseRpc/Sql/t_base_student.sql b/dsBaseRpc/Sql/t_base_student.sql new file mode 100644 index 00000000..e476fc39 --- /dev/null +++ b/dsBaseRpc/Sql/t_base_student.sql @@ -0,0 +1,39 @@ +SELECT + cast( t1.`person_id` AS CHAR ( 36 ) charset utf8 ) AS `student_id`, + t1.`id_int` AS `id_int`, + t1.`xm` AS `xm`, + t1.`xmpy` AS `xmpy`, + t1.`cym` AS `cym`, + t1.`xbm` AS `xbm`, + DATE_FORMAT(t1.`csrq`,'%Y/%m/%d %H:%i:%s') AS `csrq`, + t1.`mzm` AS `mzm`, + t1.`zzmmm` AS `zzmmm`, + t1.`sfzjlxm` AS `sfzjlxm`, + t1.`sfzjh` AS `sfzjh`, + t1.`dszybz` AS `dszybz`, + t1.`sqznbz` AS `sqznbz`, + t1.`jcwgrysqznbz` AS `jcwgrysqznbz`, + t1.`gebz` AS `gebz`, + t1.`lsetbz` AS `lsetbz`, + t1.`cjbz` AS `cjbz`, + cast( t1.`class_id` AS CHAR ( 36 ) charset utf8 ) AS `class_id`, + cast( t1.`bureau_id` AS CHAR ( 36 ) charset utf8 ) AS `bureau_id`, + t1.`b_use` AS `b_use`, + t1.`state_id` AS `state_id`, + t1.`province_code` AS `province_code`, + t1.`city_code` AS `city_code`, + t1.`district_code` AS `district_code`, + cast( t1.`main_school_id` AS CHAR ( 36 ) charset utf8 ) AS `main_school_id`, + DATE_FORMAT(t1.`last_updated_time`,'%Y/%m/%d %H:%i:%s') AS `last_updated_time`, + `t_base_organization`.`main_school_type` AS `main_school_type`, + `t_base_organization`.`xxbbm` AS `xxbbm`, + `t_base_organization`.`xxbxlxm` AS `xxbxlxm`, + `t_base_organization`.`szdcxlxm` AS `szdcxlxm`, + `t_base_class`.`stage_id` AS `stage_id`, + cast( `t_base_class`.`rxnf` AS CHAR ( 4 ) charset utf8 ) AS `rxnf` , + case t1.`b_use` when -1 then 1 else 0 end AS `del_flag` +FROM + (( + `t_base_student` as t1 + JOIN `t_base_organization` ON ( t1.`bureau_id` = `t_base_organization`.`org_id` )) + JOIN `t_base_class` ON ( t1.`class_id` = `t_base_class`.`class_id` )) \ No newline at end of file From 27c50fef1abe6b804706e251d96d9e11dc7dc86b Mon Sep 17 00:00:00 2001 From: huanghai <10402852@qq.com> Date: Fri, 17 Jul 2020 14:58:29 +0800 Subject: [PATCH 3/9] 'commit' --- dsBaseRpc/DataExchange/DataExchange.go | 142 ++++++++++++++----------- dsBaseRpc/Sql/t_sys_dict.sql | 13 +++ 2 files changed, 92 insertions(+), 63 deletions(-) create mode 100644 dsBaseRpc/Sql/t_sys_dict.sql diff --git a/dsBaseRpc/DataExchange/DataExchange.go b/dsBaseRpc/DataExchange/DataExchange.go index 20640c09..42fc8383 100644 --- a/dsBaseRpc/DataExchange/DataExchange.go +++ b/dsBaseRpc/DataExchange/DataExchange.go @@ -32,14 +32,20 @@ type tableStruct struct { DataSource string `json:"data_source"` } -//有同步哪些表,之所以不遍历文件的名称进行上报,是因为需要控制上传的顺序,如果只是文件名,就丢失了顺序 -var sqlDict = []tableStruct{ +//有同步哪些表(增量),之所以不遍历文件的名称进行上报,是因为需要控制上传的顺序,如果只是文件名,就丢失了顺序 +var IncrSqlDict = []tableStruct{ {TableName: "t_base_organization", PrimaryKey: "org_id", DataSource: "org_school"}, {TableName: "t_base_class", PrimaryKey: "class_id", DataSource: "org_class"}, {TableName: "t_base_teacher", PrimaryKey: "teacher_id", DataSource: "user_teacher"}, {TableName: "t_base_student", PrimaryKey: "student_id", DataSource: "user_student"}, } +// 全量数据上报 +var FullSqlDict = []tableStruct{ + {TableName: "t_base_organization", PrimaryKey: "org_id", DataSource: "org_school"}, + {TableName: "t_sys_dict", PrimaryKey: "dict_id", DataSource: "sys_dic"}, +} + // 数据上报的结构体 type postStruct struct { AuthToken string `json:"auth_token"` @@ -71,71 +77,75 @@ func init() { } /** -功能:组织机构上报 +功能:全量数据上报 作者:黄海 时间:2020-07-17 */ -func InitOrg() { - //(1)是不是进行过首次上报,如果没有话,需要执行一次组织机构上报 - logName := progressFilePath + "t_base_organization.log" - //判断文件是不是存在 - if !FileUtil.PathExists(logName) { - //上报组织机构,读取t_base_organization的SQL脚本 - //SQL内容 - sql := FileUtil.ReadFileContent("./Sql/t_base_organization.sql") - //组织机构是需要按org_type,area_code排序 - orgSql := sql + " order by t1.org_type,t1.area_code" - list, _ := db.SQL(orgSql).Query().List() +func InitFull() { + for i := range FullSqlDict { + //(1)是不是进行过首次上报,如果没有话,需要执行一次组织机构上报 + logName := progressFilePath + FullSqlDict[i].TableName + ".log" + //判断文件是不是存在 + if !FileUtil.PathExists(logName) { + //SQL内容 + sql := FileUtil.ReadFileContent("./Sql/"+FullSqlDict[i].TableName+".sql") - var t tableStruct - for i := range sqlDict { - if sqlDict[i].TableName == "t_base_organization" { - t = sqlDict[i] - break + var list []map[string]interface{} + //如果是组织机构表,那么需要变更一下查询的排序条件 + if FullSqlDict[i].TableName=="t_base_organization"{ + //组织机构是需要按org_type,area_code排序 + sql = sql + " order by t1.org_type,t1.area_code" } - } - var count = 0 - var isFinish = false - for { - if isFinish { - break + list, _ = db.SQL(sql).Query().List() + + var count = 0 + var isFinish = false + for { + if isFinish { + break + } + //利用切片分批次上报 + if len(list) > limit { + success := PostToServer(FullSqlDict[i], list[0:limit]) //0-99不包含100 + if !success { + continue + } + count = count + limit + list = list[limit:] + } else if len(list) > 0 { + success := PostToServer(FullSqlDict[i], list) + if !success { + continue + } + count = count + len(list) + isFinish = true + } else { + isFinish = true + } + fmt.Println(CommonUtil.GetCurrentTime() + " 同步:成功完成"+FullSqlDict[i].TableName+"初始化上报,本次完成" + CommonUtil.ConvertIntToString(count) + "条!") } - //利用切片分批次上报 - if len(list) > limit { - success := PostToServer(t, list[0:limit]) //0-99不包含100 - if !success { - continue + //对于组织机构进行特殊处理 + if FullSqlDict[i].TableName=="t_base_organization"{ + //记录日志 + maxSql := sql + " order by t1.last_updated_time desc,t1.id_int desc limit 1" + var l logStruct + l.IdInt = 0 + l.StartUpdateTs = defaultStartTs + //取得最后一行的最大值 + list, _ = db.SQL(maxSql).Query().List() + if len(list) > 0 { + l.StartUpdateTs = list[len(list)-1]["last_updated_time"].(string) + l.IdInt = list[len(list)-1]["id_int"].(int64) } - count = count + limit - list = list[limit:] - } else if len(list) > 0 { - success := PostToServer(t, list) - if !success { - continue + jsonBytes, err := json.Marshal(l) + if err != nil { + fmt.Println(err.Error()) } - count = count + len(list) - isFinish = true - } else { - isFinish = true + FileUtil.WriteContent(logName, string(jsonBytes)) + }else{ + FileUtil.WriteContent(logName, "is finished!") } - fmt.Println(CommonUtil.GetCurrentTime() + " 同步:成功完成组织机构初始化上报,本次完成" + CommonUtil.ConvertIntToString(count) + "条!") - } - //记录日志 - maxSql := sql + " order by t1.last_updated_time desc,t1.id_int desc limit 1" - var l logStruct - l.IdInt = 0 - l.StartUpdateTs = defaultStartTs - //取得最后一行的最大值 - list, _ = db.SQL(maxSql).Query().List() - if len(list) > 0 { - l.StartUpdateTs = list[len(list)-1]["last_updated_time"].(string) - l.IdInt = list[len(list)-1]["id_int"].(int64) - } - jsonBytes, err := json.Marshal(l) - if err != nil { - fmt.Println(err.Error()) } - FileUtil.WriteContent(logName, string(jsonBytes)) } } @@ -148,7 +158,7 @@ func DataExchange() { //死循环上报中 for { //(1)组织机构上报 - InitOrg() + InitFull() //(2)本轮上报的数量,如果是0,休息5秒后再继续上传 postCount := UploadData() @@ -167,7 +177,7 @@ func DataExchange() { func UploadData() int { var postCount = 0 //遍历所有的配置节,进行循环 - for i := range sqlDict { + for i := range IncrSqlDict { count := 0 //默认的开始时间 startUpdateTs := defaultStartTs @@ -176,7 +186,7 @@ func UploadData() int { //查询结果集 var list []map[string]interface{} //表名 - tableName := sqlDict[i].TableName + tableName := IncrSqlDict[i].TableName //日志文件位置 logName := progressFilePath + tableName + ".log" //判断文件是不是存在 @@ -198,7 +208,7 @@ func UploadData() int { break } //上报到Http Api--->Body--->Post - success := PostToServer(sqlDict[i], list) + success := PostToServer(IncrSqlDict[i], list) if !success { continue } @@ -233,12 +243,18 @@ func PostToServer(t tableStruct, list []map[string]interface{}) bool { ps.DataSource = t.DataSource ps.AuthToken = ConfigUtil.DataExchangeAuthToken ps.SystemId = ConfigUtil.DataExchangeSystemId - var dsMap = make([]dataStruct, 0) for k := range list { var ds dataStruct ds.Data, _ = CommonUtil.MapToJson(list[k]) - ds.DataId = list[k][t.PrimaryKey].(string) + switch list[k][t.PrimaryKey].(type){ + case int64: + ds.DataId = CommonUtil.ConvertInt64ToString(list[k][t.PrimaryKey].(int64)) + break + default: + ds.DataId = list[k][t.PrimaryKey].(string) + break + } ds.DelFlag = list[k]["del_flag"].(int64) ds.OrgId = list[k]["bureau_id"].(string) dsMap = append(dsMap, ds) diff --git a/dsBaseRpc/Sql/t_sys_dict.sql b/dsBaseRpc/Sql/t_sys_dict.sql new file mode 100644 index 00000000..627f92f4 --- /dev/null +++ b/dsBaseRpc/Sql/t_sys_dict.sql @@ -0,0 +1,13 @@ +SELECT + t1.`dict_id` AS `dict_id`, + t1.`dict_kind` AS `dict_kind`, + t1.`dict_code` AS `dict_code`, + t1.`dict_value` AS `dict_value`, + t1.`dict_remark` AS `dict_remark`, + t1.`dict_parent` AS `dict_parent`, + t1.`sort_id` AS `sort_id`, + cast( t1.`b_use` AS signed ) AS `b_use`, + '-1' as bureau_id, + case t1.`b_use` when -1 then 1 else 0 end AS `del_flag` +FROM + `t_sys_dict` as t1 \ No newline at end of file From 3f751e41d4dcd89308df7f020f5f6921103df3ef Mon Sep 17 00:00:00 2001 From: huanghai <10402852@qq.com> Date: Fri, 17 Jul 2020 15:02:28 +0800 Subject: [PATCH 4/9] 'commit' --- dsBaseRpc/DataExchange/DataExchange.go | 1 + dsBaseRpc/Sql/t_gov_area.sql | 2 ++ 2 files changed, 3 insertions(+) create mode 100644 dsBaseRpc/Sql/t_gov_area.sql diff --git a/dsBaseRpc/DataExchange/DataExchange.go b/dsBaseRpc/DataExchange/DataExchange.go index 42fc8383..7d4f3f52 100644 --- a/dsBaseRpc/DataExchange/DataExchange.go +++ b/dsBaseRpc/DataExchange/DataExchange.go @@ -44,6 +44,7 @@ var IncrSqlDict = []tableStruct{ var FullSqlDict = []tableStruct{ {TableName: "t_base_organization", PrimaryKey: "org_id", DataSource: "org_school"}, {TableName: "t_sys_dict", PrimaryKey: "dict_id", DataSource: "sys_dic"}, + {TableName: "t_gov_area", PrimaryKey: "area_code", DataSource: "org_area"}, } // 数据上报的结构体 diff --git a/dsBaseRpc/Sql/t_gov_area.sql b/dsBaseRpc/Sql/t_gov_area.sql new file mode 100644 index 00000000..2564b168 --- /dev/null +++ b/dsBaseRpc/Sql/t_gov_area.sql @@ -0,0 +1,2 @@ +select t1.area_code,t1.area_name,t1.master_code,t1.area_level_id,t1.area_type_id,'-1' as bureau_id, + 0 as del_flag from t_gov_area as t1 \ No newline at end of file From 3cd22d01f250317ef53c588f5b1626f6baa220b6 Mon Sep 17 00:00:00 2001 From: huanghai <10402852@qq.com> Date: Fri, 17 Jul 2020 15:09:31 +0800 Subject: [PATCH 5/9] 'commit' --- dsBaseRpc/DataExchange/DataExchange.go | 25 +++++++++++++------------ dsBaseRpc/Sql/t_sys_loginperson_log.sql | 10 ++++++++++ 2 files changed, 23 insertions(+), 12 deletions(-) create mode 100644 dsBaseRpc/Sql/t_sys_loginperson_log.sql diff --git a/dsBaseRpc/DataExchange/DataExchange.go b/dsBaseRpc/DataExchange/DataExchange.go index 7d4f3f52..3dc9d0ff 100644 --- a/dsBaseRpc/DataExchange/DataExchange.go +++ b/dsBaseRpc/DataExchange/DataExchange.go @@ -38,6 +38,7 @@ var IncrSqlDict = []tableStruct{ {TableName: "t_base_class", PrimaryKey: "class_id", DataSource: "org_class"}, {TableName: "t_base_teacher", PrimaryKey: "teacher_id", DataSource: "user_teacher"}, {TableName: "t_base_student", PrimaryKey: "student_id", DataSource: "user_student"}, + {TableName: "t_sys_loginperson_log", PrimaryKey: "id", DataSource: "log_login"}, } // 全量数据上报 @@ -89,11 +90,11 @@ func InitFull() { //判断文件是不是存在 if !FileUtil.PathExists(logName) { //SQL内容 - sql := FileUtil.ReadFileContent("./Sql/"+FullSqlDict[i].TableName+".sql") + sql := FileUtil.ReadFileContent("./Sql/" + FullSqlDict[i].TableName + ".sql") var list []map[string]interface{} //如果是组织机构表,那么需要变更一下查询的排序条件 - if FullSqlDict[i].TableName=="t_base_organization"{ + if FullSqlDict[i].TableName == "t_base_organization" { //组织机构是需要按org_type,area_code排序 sql = sql + " order by t1.org_type,t1.area_code" } @@ -123,10 +124,10 @@ func InitFull() { } else { isFinish = true } - fmt.Println(CommonUtil.GetCurrentTime() + " 同步:成功完成"+FullSqlDict[i].TableName+"初始化上报,本次完成" + CommonUtil.ConvertIntToString(count) + "条!") + fmt.Println(CommonUtil.GetCurrentTime() + " 同步:成功完成" + FullSqlDict[i].TableName + "初始化上报,本次完成" + CommonUtil.ConvertIntToString(count) + "条!") } //对于组织机构进行特殊处理 - if FullSqlDict[i].TableName=="t_base_organization"{ + if FullSqlDict[i].TableName == "t_base_organization" { //记录日志 maxSql := sql + " order by t1.last_updated_time desc,t1.id_int desc limit 1" var l logStruct @@ -143,7 +144,7 @@ func InitFull() { fmt.Println(err.Error()) } FileUtil.WriteContent(logName, string(jsonBytes)) - }else{ + } else { FileUtil.WriteContent(logName, "is finished!") } } @@ -248,13 +249,13 @@ func PostToServer(t tableStruct, list []map[string]interface{}) bool { for k := range list { var ds dataStruct ds.Data, _ = CommonUtil.MapToJson(list[k]) - switch list[k][t.PrimaryKey].(type){ - case int64: - ds.DataId = CommonUtil.ConvertInt64ToString(list[k][t.PrimaryKey].(int64)) - break - default: - ds.DataId = list[k][t.PrimaryKey].(string) - break + switch list[k][t.PrimaryKey].(type) { + case int64: + ds.DataId = CommonUtil.ConvertInt64ToString(list[k][t.PrimaryKey].(int64)) + break + default: + ds.DataId = list[k][t.PrimaryKey].(string) + break } ds.DelFlag = list[k]["del_flag"].(int64) ds.OrgId = list[k]["bureau_id"].(string) diff --git a/dsBaseRpc/Sql/t_sys_loginperson_log.sql b/dsBaseRpc/Sql/t_sys_loginperson_log.sql new file mode 100644 index 00000000..989d025f --- /dev/null +++ b/dsBaseRpc/Sql/t_sys_loginperson_log.sql @@ -0,0 +1,10 @@ +select t1.id,identity_id,t1.person_id,t1.login_name,t1.ip_address, +DATE_FORMAT(t1.`login_time`,'%Y/%m/%d %H:%i:%s') AS `login_time`, +t1.province_code, +t1.city_code,t1.district_code,t1.bureau_id, +DATE_FORMAT(t1.`last_updated_time`,'%Y/%m/%d %H:%i:%s') AS `last_updated_time`, +t1.login_state, +0 as del_flag +from t_sys_loginperson_log as t1 + + From 3132a4d4c5e6382aae61218b50e2113bdf6952c3 Mon Sep 17 00:00:00 2001 From: huanghai <10402852@qq.com> Date: Fri, 17 Jul 2020 15:25:49 +0800 Subject: [PATCH 6/9] 'commit' --- .../BaseOrganizationDao.go | 14 ++++++ .../BaseOrganizationService.go | 48 ++++++++++++++----- 2 files changed, 51 insertions(+), 11 deletions(-) diff --git a/dsBaseRpc/RpcService/BaseOrganization/BaseOrganizationDao/BaseOrganizationDao.go b/dsBaseRpc/RpcService/BaseOrganization/BaseOrganizationDao/BaseOrganizationDao.go index 33679ace..648f1a2f 100644 --- a/dsBaseRpc/RpcService/BaseOrganization/BaseOrganizationDao/BaseOrganizationDao.go +++ b/dsBaseRpc/RpcService/BaseOrganization/BaseOrganizationDao/BaseOrganizationDao.go @@ -493,3 +493,17 @@ func DisableBureauManager(ids []string) error { return nil } + +/** +功能:判断一个组织机构是不是部门 +作者:黄海 +时间:2020-07-17 + */ +func IsBuMen(orgId string) bool{ + //判断是单位还是部门 + list := SqlKit.QueryByIds([]string{orgId}, "t_base_organization") + if list[0]["org_type"].(int64)==3{ + return true + } + return false +} \ No newline at end of file diff --git a/dsBaseRpc/RpcService/BaseOrganization/BaseOrganizationService/BaseOrganizationService.go b/dsBaseRpc/RpcService/BaseOrganization/BaseOrganizationService/BaseOrganizationService.go index 905f08f8..b381a2e2 100644 --- a/dsBaseRpc/RpcService/BaseOrganization/BaseOrganizationService/BaseOrganizationService.go +++ b/dsBaseRpc/RpcService/BaseOrganization/BaseOrganizationService/BaseOrganizationService.go @@ -45,9 +45,11 @@ func (s *Rpc) GetBaseOrganization(ctx context.Context, in *BaseOrganizationProto func (s *Rpc) AddBaseOrganization(ctx context.Context, in *BaseOrganizationProto.ModelArg) (*BaseOrganizationProto.Reply, error) { //rpc响应 var reply BaseOrganizationProto.Reply + //是不是部门 + isBuMen := false - //2:学校,7:教辅单位,8:大学区,不在2,7,8中,应该就是指部门 - if in.OrgType == 2 || in.OrgType == 7 || in.OrgType == 8 { + //1:教育局,2:学校,7:教辅单位,8:大学区,不在1,2,7,8中,应该就是指部门 + if in.OrgType == 1 || in.OrgType == 2 || in.OrgType == 7 || in.OrgType == 8 { //1、检查非空 if len(in.OrgCode) == 0 { reply.Success = false @@ -67,6 +69,8 @@ func (s *Rpc) AddBaseOrganization(ctx context.Context, in *BaseOrganizationProto reply.Message = "区域代码不存在,不能创建!" return &reply, nil } + } else { + isBuMen = true } //3、指定的org_code是否存在 @@ -95,7 +99,11 @@ func (s *Rpc) AddBaseOrganization(ctx context.Context, in *BaseOrganizationProto } if exist { reply.Success = false - reply.Message = "单位/部门名称已存在,不能创建!" + if isBuMen { + reply.Message = "部门名称已存在,不能创建!" + } else { + reply.Message = "单位名称已存在,不能创建!" + } return &reply, err } //5、调用dao @@ -230,7 +238,7 @@ func (s *Rpc) DeleteBaseOrganization(ctx context.Context, in *BaseOrganizationPr //rpc响应 var reply BaseOrganizationProto.Reply - //遍历每一个单位/部门进行检查 + //遍历每一个单位+部门进行检查 for i := range in.Ids { //判断部门下是不是有可用的人员 var inTeacher BaseTeacherProto.QueryArg @@ -247,7 +255,12 @@ func (s *Rpc) DeleteBaseOrganization(ctx context.Context, in *BaseOrganizationPr } if count > 0 { reply.Success = false - reply.Message = "单位/部门下存在教工数据,无法删除!" + //判断是单位还是部门 + if BaseOrganizationDao.IsBuMen(inTeacher.OrgId){ + reply.Message = "部门下存在教工数据,无法删除!" + }else{ + reply.Message = "单位下存在教工数据,无法删除!" + } return &reply, err } //判断部门下是不是有可用的子部门 @@ -260,7 +273,12 @@ func (s *Rpc) DeleteBaseOrganization(ctx context.Context, in *BaseOrganizationPr } if count > 0 { reply.Success = false - reply.Message = "单位/部门下存在子部门,无法删除!" + //判断是单位还是部门 + if BaseOrganizationDao.IsBuMen(inTeacher.OrgId){ + reply.Message = "部门下存在子部门,无法删除!" + }else{ + reply.Message = "单位下存在子部门,无法删除!" + } return &reply, err } //判断是不是有可用的班级 @@ -277,7 +295,12 @@ func (s *Rpc) DeleteBaseOrganization(ctx context.Context, in *BaseOrganizationPr } if count > 0 { reply.Success = false - reply.Message = "单位/部门下存在班级数据,无法删除!" + //判断是单位还是部门 + if BaseOrganizationDao.IsBuMen(inTeacher.OrgId){ + reply.Message = "部门下存在班级,无法删除!" + }else{ + reply.Message = "单位下存在班级,无法删除!" + } return &reply, err } } @@ -333,13 +356,13 @@ func (s *Rpc) UpdateBaseOrganization(ctx context.Context, in *BaseOrganizationPr var reply BaseOrganizationProto.Reply //1、指定的org_code是否存在 list := SqlKit.QueryByIds([]string{in.OrgId}, "t_base_organization") - if list==nil || len(list)==0{ + if list == nil || len(list) == 0 { reply.Success = false reply.Message = "输入的OrgId无法找到对应的单位ID!" return &reply, nil } //根据OrgId换取回bureau_id 黄海修改于2020-07-16 - bureauId:=list[0]["bureau_id"].(string) + bureauId := list[0]["bureau_id"].(string) exist, err := BaseOrganizationDao.IsExistOrgCode(in.OrgCode, bureauId, in.OrgType, in.OrgId) if err != nil { reply.Success = false @@ -348,7 +371,6 @@ func (s *Rpc) UpdateBaseOrganization(ctx context.Context, in *BaseOrganizationPr return &reply, err } - if exist { reply.Success = false reply.Message = "编码已存在,无法修改!" @@ -364,7 +386,11 @@ func (s *Rpc) UpdateBaseOrganization(ctx context.Context, in *BaseOrganizationPr } if exist { reply.Success = false - reply.Message = "单位/部门名称已存在,无法修改!" + if BaseOrganizationDao.IsBuMen(in.OrgId){ + reply.Message = "部门名称已存在,无法修改!" + }else{ + reply.Message = "单位名称已存在,无法修改!" + } return &reply, err } //3、修改 From bba860c77d7797d404b5360119537329a1213b1b Mon Sep 17 00:00:00 2001 From: huanghai <10402852@qq.com> Date: Fri, 17 Jul 2020 15:45:19 +0800 Subject: [PATCH 7/9] 'commit' --- dsBaseRpc/docs/docs.go | 76 ------------------------------------- dsBaseRpc/docs/swagger.json | 8 ---- dsBaseRpc/docs/swagger.yaml | 5 --- 3 files changed, 89 deletions(-) delete mode 100644 dsBaseRpc/docs/docs.go delete mode 100644 dsBaseRpc/docs/swagger.json delete mode 100644 dsBaseRpc/docs/swagger.yaml diff --git a/dsBaseRpc/docs/docs.go b/dsBaseRpc/docs/docs.go deleted file mode 100644 index 0b62bdd7..00000000 --- a/dsBaseRpc/docs/docs.go +++ /dev/null @@ -1,76 +0,0 @@ -// GENERATED BY THE COMMAND ABOVE; DO NOT EDIT -// This file was generated by swaggo/swag at -// 2020-05-20 21:35:10.8716006 +0800 CST m=+0.063828701 - -package docs - -import ( - "bytes" - "encoding/json" - "strings" - - "github.com/alecthomas/template" - "github.com/swaggo/swag" -) - -var doc = `{ - "schemes": {{ marshal .Schemes }}, - "swagger": "2.0", - "info": { - "description": "{{.Description}}", - "title": "{{.Title}}", - "contact": {}, - "license": {}, - "version": "{{.Version}}" - }, - "host": "{{.Host}}", - "basePath": "{{.BasePath}}", - "paths": {} -}` - -type swaggerInfo struct { - Version string - Host string - BasePath string - Schemes []string - Title string - Description string -} - -// SwaggerInfo holds exported Swagger Info so clients can modify it -var SwaggerInfo = swaggerInfo{ - Version: "", - Host: "", - BasePath: "", - Schemes: []string{}, - Title: "", - Description: "", -} - -type s struct{} - -func (s *s) ReadDoc() string { - sInfo := SwaggerInfo - sInfo.Description = strings.Replace(sInfo.Description, "\n", "\\n", -1) - - t, err := template.New("swagger_info").Funcs(template.FuncMap{ - "marshal": func(v interface{}) string { - a, _ := json.Marshal(v) - return string(a) - }, - }).Parse(doc) - if err != nil { - return doc - } - - var tpl bytes.Buffer - if err := t.Execute(&tpl, sInfo); err != nil { - return doc - } - - return tpl.String() -} - -func init() { - swag.Register(swag.Name, &s{}) -} diff --git a/dsBaseRpc/docs/swagger.json b/dsBaseRpc/docs/swagger.json deleted file mode 100644 index 975ed588..00000000 --- a/dsBaseRpc/docs/swagger.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "contact": {}, - "license": {} - }, - "paths": {} -} \ No newline at end of file diff --git a/dsBaseRpc/docs/swagger.yaml b/dsBaseRpc/docs/swagger.yaml deleted file mode 100644 index ca1ffc1a..00000000 --- a/dsBaseRpc/docs/swagger.yaml +++ /dev/null @@ -1,5 +0,0 @@ -info: - contact: {} - license: {} -paths: {} -swagger: "2.0" From 5335c5e4539e9b170c0204934459f4a74f44f274 Mon Sep 17 00:00:00 2001 From: huanghai <10402852@qq.com> Date: Fri, 17 Jul 2020 15:56:33 +0800 Subject: [PATCH 8/9] 'commit' --- .../BaseTeacherDao/BaseTeacherDao.go | 31 ++++++++++++++++--- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/dsBaseRpc/RpcService/BaseTeacher/BaseTeacherDao/BaseTeacherDao.go b/dsBaseRpc/RpcService/BaseTeacher/BaseTeacherDao/BaseTeacherDao.go index a944f45a..d5b34cc3 100644 --- a/dsBaseRpc/RpcService/BaseTeacher/BaseTeacherDao/BaseTeacherDao.go +++ b/dsBaseRpc/RpcService/BaseTeacher/BaseTeacherDao/BaseTeacherDao.go @@ -163,10 +163,33 @@ func FillLoginInfo(list *[]map[string]interface{}) error { //对原始数据进行扩展 for i := range list2 { record := list2[i] - record["login_name"] = _map[record["person_id"].(string)]["login_name"].(string) - record["pwd"] = _map[record["person_id"].(string)]["pwd"].(string) - record["original_pwd"] = _map[record["person_id"].(string)]["original_pwd"].(string) - record["login_b_use"] = _map[record["person_id"].(string)]["b_use"].(int64) + + _, ok := _map[record["person_id"].(string)]["login_name"] + if ok { + record["login_name"] = _map[record["person_id"].(string)]["login_name"].(string) + } else { + record["login_name"] = "未找到" + } + + _, ok = _map[record["person_id"].(string)]["pwd"] + if ok { + record["pwd"] = _map[record["person_id"].(string)]["pwd"].(string) + } else { + record["pwd"] = "未找到" + } + _, ok = _map[record["person_id"].(string)]["original_pwd"] + if ok { + record["original_pwd"] = _map[record["person_id"].(string)]["original_pwd"].(string) + } else { + record["original_pwd"] = "未找到" + } + + _, ok = _map[record["person_id"].(string)]["b_use"] + if ok { + record["login_b_use"] = _map[record["person_id"].(string)]["b_use"].(int64) + } else { + record["login_b_use"] = 0 + } } return nil } From beaccc0ef37085a3a1835acd72ee5f04b9571775 Mon Sep 17 00:00:00 2001 From: huanghai <10402852@qq.com> Date: Fri, 17 Jul 2020 16:24:48 +0800 Subject: [PATCH 9/9] 'commit' --- .../BaseOrganizationService/BaseOrganizationService.go | 6 +++--- .../RpcService/BaseTeacher/BaseTeacherDao/BaseTeacherDao.go | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/dsBaseRpc/RpcService/BaseOrganization/BaseOrganizationService/BaseOrganizationService.go b/dsBaseRpc/RpcService/BaseOrganization/BaseOrganizationService/BaseOrganizationService.go index b381a2e2..8bd39671 100644 --- a/dsBaseRpc/RpcService/BaseOrganization/BaseOrganizationService/BaseOrganizationService.go +++ b/dsBaseRpc/RpcService/BaseOrganization/BaseOrganizationService/BaseOrganizationService.go @@ -53,7 +53,7 @@ func (s *Rpc) AddBaseOrganization(ctx context.Context, in *BaseOrganizationProto //1、检查非空 if len(in.OrgCode) == 0 { reply.Success = false - reply.Message = "编码代码为空,不能创建!" + reply.Message = "代码为空,不能创建!" return &reply, nil } //2、检查AreaCode是否存在,不存在需要提示 @@ -85,7 +85,7 @@ func (s *Rpc) AddBaseOrganization(ctx context.Context, in *BaseOrganizationProto } if exist { reply.Success = false - reply.Message = "编码已存在,无法创建!" + reply.Message = "代码已存在,无法创建!" return &reply, err } @@ -373,7 +373,7 @@ func (s *Rpc) UpdateBaseOrganization(ctx context.Context, in *BaseOrganizationPr if exist { reply.Success = false - reply.Message = "编码已存在,无法修改!" + reply.Message = "代码已存在,无法修改!" return &reply, err } //2、检查机构名称是否存在,否则在导入人员时,不知道向哪个单位下进行导入 diff --git a/dsBaseRpc/RpcService/BaseTeacher/BaseTeacherDao/BaseTeacherDao.go b/dsBaseRpc/RpcService/BaseTeacher/BaseTeacherDao/BaseTeacherDao.go index d5b34cc3..b14df740 100644 --- a/dsBaseRpc/RpcService/BaseTeacher/BaseTeacherDao/BaseTeacherDao.go +++ b/dsBaseRpc/RpcService/BaseTeacher/BaseTeacherDao/BaseTeacherDao.go @@ -103,7 +103,7 @@ func PageBaseTeacher(in *BaseTeacherProto.QueryArg) ([]map[string]interface{}, i //所在单位ID list := SqlKit.QueryByIds([]string{in.OrgId}, "t_base_organization") if list == nil { - return nil, 0, errors.New("没有找到此单位编码!") + return nil, 0, errors.New("没有找到此单位代码!") } bureauId := list[0]["bureau_id"].(string) if in.OrgId == bureauId {