package main import ( "flag" "fmt" "github.com/ichunt2019/logger" "go-queue-server/dal/db" "go-queue-server/util" "go-queue-server/util/ding" "io/ioutil" "net/http" "time" "go-queue-server/dal/user/InvoiceCompany" "github.com/tidwall/gjson" ) func initDb(dns string) (err error) { err = db.InitCrmDB(dns) if err != nil { return } return } var ConfigDir string var LogDir string // 解析命令行参数 func initArgs() { // worker -config ./worker.json // worker -h flag.StringVar(&ConfigDir, "configDir", "", "配置文件") flag.StringVar(&LogDir, "logDir", "", "日志目录") flag.Parse() } // 从风控系统拉取公司信息 func main() { initArgs() //初始化配置文件 util.Init(ConfigDir) logConfig := make(map[string]string) logConfig["log_path"] = LogDir+"user/company" logConfig["log_chan_size"] = "1000" logger.InitLogger("file",logConfig) logger.Init() //初始化db initDb(util.Configs.Liexincrm_databases.Dns) updateData() fmt.Println("任务执行成功") } // 修改DB func updateData() (err error) { // 获取未评分的公司 row, err := db.CrmDB.Queryx("select * from lie_invoice_company where total_credit_score = 0") if err != nil { logger.Info("获取未评分公司失败,DB错误原因: ", err.Error()) return } for row.Next() { var company InvoiceCompany.Company row.StructScan(&company) // 拉取风控公司信息 url := util.Configs.Fengkong_domain.GoUrl + "/kaopu-server/http/member/company_info/" + company.ComName resp, err := http.Get(url) if err != nil { logger.Info("请求风控接口失败,错误原因: ", err.Error()) return err } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) // erp_com_sn := gjson.Get(string(body), "com_credit.erp_company_code").String() // ERP编码 com_addr := gjson.Get(string(body), "com_basic_info.com_address").String() // 公司地址 establishment_time := gjson.Get(string(body), "com_basic_info.establishment_time").Int() // 成立时间 registered_capital := gjson.Get(string(body), "com_basic_info.registered_capital").Float() // 注册资本 com_organization := gjson.Get(string(body), "com_basic_info.com_organization").String() // 组织结构代码 legal_representative := gjson.Get(string(body), "com_basic_info.legal_representative").String() // 法定代表人 five_legal_change := gjson.Get(string(body), "com_basic_info.five_legal_change").Int() // 5年内法人变更次数 two_years_no_lawsuit := gjson.Get(string(body), "com_basic_info.two_years_no_lawsuit").String() // 近两年内有无诉讼 total_credit_score := gjson.Get(string(body), "com_credit.total_credit_score").Float() // 信用评分 ichunt_hunting_core := gjson.Get(string(body), "com_credit.ichunt_hunting_core").Int() // 评分分级 blacklist_hit := gjson.Get(string(body), "com_credit.blacklist_hit").String() // 黑名单命中 risk_type := gjson.Get(string(body), "com_credit.risk_type").Int() // 风险分类 curr_time := time.Now().Unix() // 更新发票公司表 _, err = db.CrmDB.Exec("update lie_invoice_company set com_addr = ?, establishment_time = ?, registered_capital = ?, com_organization = ?," + "legal_representative = ?, five_legal_change = ?, two_years_no_lawsuit = ?, total_credit_score = ?, ichunt_hunting_core = ?, blacklist_hit = ?, " + "risk_type = ?, update_time = ? where com_name = ?", com_addr, establishment_time, registered_capital, com_organization, legal_representative, five_legal_change, two_years_no_lawsuit, total_credit_score, ichunt_hunting_core, blacklist_hit, risk_type, curr_time, company.ComName) var mobile []string = make([]string, 0) var isAtAll bool = false if err != nil { ding.Send(util.Configs.Ding_msg.FkCompany, "任务告警", "更新发票公司失败,错误原因: "+err.Error()+",公司名称:"+company.ComName, mobile, isAtAll) logger.Info("更新发票公司失败,错误原因: "+err.Error()+",公司名称:"+company.ComName) return err } // 已评分的推送钉钉通知 if total_credit_score > 0 { ding.Send(util.Configs.Ding_msg.FkCompany, "任务告警", "获取风控公司信息成功,公司名称:"+company.ComName, mobile, isAtAll) } } row.Close() return }