package service import ( "bytes" "encoding/json" "fmt" "gdyb/models" "io/ioutil" "math/rand" "net/http" "time" _ "unsafe" ) func SzybMZ002(doctor string, doctor_code string, fixmedins_code string, dept_code string, account string) string { // 生成输入报文 inputMessage := SetSZInputMessage(doctor, doctor_code, fixmedins_code) inputData := make(map[string]interface{}) inputMessage["transType"] = "MZ002" // 交易编码 inputData["akc190"] = inputMessage["serialNumber"] inputData["aaz500"] = account inputData["bzz269"] = "000000" inputData["aka130"] = "11" inputData["akf001"] = dept_code inputData["bkc368"] = "2" inputData["akc264"] = 0.00 inputData["bke384"] = inputMessage["serialNumber"] inputMessage["transBody"] = inputData bytesData, err := json.Marshal(inputMessage) fmt.Println(string(bytesData)) if err != nil { fmt.Println(err.Error()) return err.Error() } reader := bytes.NewReader(bytesData) url := "http://192.168.1.99:10000" request, err := http.NewRequest("POST", url, reader) if err != nil { fmt.Println(err.Error()) return err.Error() } request.Header.Set("Content-Type", "application/json;charset=UTF-8") client := http.Client{} resp, err := client.Do(request) if err != nil { fmt.Println(err.Error()) return err.Error() } respBytes, err := ioutil.ReadAll(resp.Body) if err != nil { fmt.Println(err.Error()) return err.Error() } fmt.Println(string(respBytes)) str := string(respBytes) return str } func SzybFY001(doctor string, doctor_code string, fixmedins_code string, dept_code string, datas []*models.CustomDetail) string { // 生成输入报文 inputMessage := SetSZInputMessage(doctor, doctor_code, fixmedins_code) inputData := make(map[string]interface{}) inputMessage["transType"] = "FY002" // 交易编码 inputData["akc190"] = inputMessage["serialNumber"] inputData["bke384"] = inputMessage["serialNumber"] inputData["listsize"] = len(datas) feedetail := make([]map[string]interface{}, 0) for _, item := range datas { feedetailInfo := make(map[string]interface{}) feedetailInfo["aae072"] = item.PrescriptionNumber feedetailInfo["bkc369"] = item.OrderType feedetailInfo["bkf500"] = item.ChargeSerialNumber feedetailInfo["ake001"] = item.Code feedetailInfo["ake002"] = item.CodeName feedetailInfo["aka064"] = 0 feedetailInfo["ake005"] = item.Code feedetailInfo["ake006"] = item.CodeName feedetailInfo["akc225"] = item.Price feedetailInfo["akc226"] = item.Count feedetailInfo["aka067"] = "元" feedetailInfo["akc271"] = item.ChargeOrderDate feedetailInfo["bkc320"] = item.DoctorCode feedetail = append(feedetail, feedetailInfo) } inputData["inputlist"] = feedetail inputMessage["transBody"] = inputData bytesData, err := json.Marshal(inputMessage) fmt.Println(string(bytesData)) if err != nil { fmt.Println(err.Error()) return err.Error() } reader := bytes.NewReader(bytesData) url := "http://192.168.1.99:10000" request, err := http.NewRequest("POST", url, reader) if err != nil { fmt.Println(err.Error()) return err.Error() } request.Header.Set("Content-Type", "application/json;charset=UTF-8") client := http.Client{} resp, err := client.Do(request) if err != nil { fmt.Println(err.Error()) return err.Error() } respBytes, err := ioutil.ReadAll(resp.Body) if err != nil { fmt.Println(err.Error()) return err.Error() } fmt.Println(string(respBytes)) str := string(respBytes) return str } func SzybFY002(doctor string, doctor_code string, fixmedins_code string, datas []*models.CustomDetail) string { // 生成输入报文 inputMessage := SetSZInputMessage(doctor, doctor_code, fixmedins_code) inputData := make(map[string]interface{}) inputMessage["transType"] = "FY002" // 交易编码 inputData["akc190"] = inputMessage["serialNumber"] inputData["bke384"] = inputMessage["serialNumber"] inputData["listsize"] = len(datas) feedetail := make([]map[string]interface{}, 0) for _, item := range datas { feedetailInfo := make(map[string]interface{}) feedetailInfo["aae072"] = item.PrescriptionNumber feedetailInfo["bkf500"] = item.ChargeSerialNumber feedetail = append(feedetail, feedetailInfo) } inputData["inputlist"] = feedetail inputMessage["transBody"] = inputData bytesData, err := json.Marshal(inputMessage) fmt.Println(string(bytesData)) if err != nil { fmt.Println(err.Error()) return err.Error() } reader := bytes.NewReader(bytesData) url := "http://192.168.1.99:10000" request, err := http.NewRequest("POST", url, reader) if err != nil { fmt.Println(err.Error()) return err.Error() } request.Header.Set("Content-Type", "application/json;charset=UTF-8") client := http.Client{} resp, err := client.Do(request) if err != nil { fmt.Println(err.Error()) return err.Error() } respBytes, err := ioutil.ReadAll(resp.Body) if err != nil { fmt.Println(err.Error()) return err.Error() } fmt.Println(string(respBytes)) str := string(respBytes) return str } func SzybFY004(doctor string, doctor_code string, fixmedins_code string, dept_code string, total float64, number string) string { // 生成输入报文 inputMessage := SetSZInputMessage(doctor, doctor_code, fixmedins_code) inputData := make(map[string]interface{}) inputMessage["transType"] = "FY001" // 交易编码 inputData["akc190"] = inputMessage["serialNumber"] inputData["aka130"] = "11" inputData["bkc320"] = doctor_code inputData["ckc350"] = doctor inputData["aka030"] = "12" inputData["akc264"] = total inputData["ckc601"] = "0" inputData["bke384"] = number inputMessage["transBody"] = inputData bytesData, err := json.Marshal(inputMessage) fmt.Println(string(bytesData)) if err != nil { fmt.Println(err.Error()) return err.Error() } reader := bytes.NewReader(bytesData) url := "http://192.168.1.99:10000" request, err := http.NewRequest("POST", url, reader) if err != nil { fmt.Println(err.Error()) return err.Error() } request.Header.Set("Content-Type", "application/json;charset=UTF-8") client := http.Client{} resp, err := client.Do(request) if err != nil { fmt.Println(err.Error()) return err.Error() } respBytes, err := ioutil.ReadAll(resp.Body) if err != nil { fmt.Println(err.Error()) return err.Error() } fmt.Println(string(respBytes)) str := string(respBytes) return str } func SzybFY005(doctor string, doctor_code string, fixmedins_code string, dept_code string, total float64, number string) string { // 生成输入报文 inputMessage := SetSZInputMessage(doctor, doctor_code, fixmedins_code) inputData := make(map[string]interface{}) inputMessage["transType"] = "FY005" // 交易编码 inputData["aaz500"] = "%GAAFSAKSXSUKKWDKHDAD?;07734724145330238292?" inputData["bzz269"] = "000000" inputData["akc190"] = inputMessage["serialNumber"] inputData["aka130"] = "11" inputData["bkc320"] = doctor_code inputData["ckc350"] = doctor inputData["aka030"] = "12" inputData["akc264"] = total inputData["ckc601"] = "0" inputData["bke384"] = number inputMessage["transBody"] = inputData bytesData, err := json.Marshal(inputMessage) fmt.Println(string(bytesData)) if err != nil { fmt.Println(err.Error()) return err.Error() } reader := bytes.NewReader(bytesData) url := "http://192.168.1.99:10000" request, err := http.NewRequest("POST", url, reader) if err != nil { fmt.Println(err.Error()) return err.Error() } request.Header.Set("Content-Type", "application/json;charset=UTF-8") client := http.Client{} resp, err := client.Do(request) if err != nil { fmt.Println(err.Error()) return err.Error() } respBytes, err := ioutil.ReadAll(resp.Body) if err != nil { fmt.Println(err.Error()) return err.Error() } fmt.Println(string(respBytes)) str := string(respBytes) return str } func SzybJY002(doctor string, doctor_code string, fixmedins_code string, dept_code string, number string) string { // 生成输入报文 inputMessage := SetSZInputMessage(doctor, doctor_code, fixmedins_code) inputData := make(map[string]interface{}) inputMessage["transType"] = "JY002" // 交易编码 inputData["akc190"] = inputMessage["serialNumber"] inputData["bke384"] = number inputMessage["transBody"] = inputData bytesData, err := json.Marshal(inputMessage) fmt.Println(string(bytesData)) if err != nil { fmt.Println(err.Error()) return err.Error() } reader := bytes.NewReader(bytesData) url := "http://192.168.1.99:10000" request, err := http.NewRequest("POST", url, reader) if err != nil { fmt.Println(err.Error()) return err.Error() } request.Header.Set("Content-Type", "application/json;charset=UTF-8") client := http.Client{} resp, err := client.Do(request) if err != nil { fmt.Println(err.Error()) return err.Error() } respBytes, err := ioutil.ReadAll(resp.Body) if err != nil { fmt.Println(err.Error()) return err.Error() } fmt.Println(string(respBytes)) str := string(respBytes) return str } // 生成基础报文 func SetSZInputMessage(doctor string, doctor_code string, fixmedins_code string) map[string]interface{} { month := time.Unix(1557042972, 0).Format("1") year := time.Now().Format("2006") month = time.Now().Format("01") day := time.Now().Format("02") // 生成输入报文 inputMessage := make(map[string]interface{}) inputMessage["cardArea"] = "440300" // 发卡地行政区划代码 inputMessage["extendDeviceId"] = "" inputMessage["extendSerialNumber"] = "" inputMessage["extendUserId"] = "" inputMessage["hospitalCode"] = fixmedins_code // 协议机构编码 inputMessage["operatorCode"] = doctor_code // 操作员编码 inputMessage["operatorName"] = doctor // 操作员名字 inputMessage["operatorPass"] = "" // 定点协议机构操作人员编码 inputMessage["serialNumber"] = fixmedins_code + year + month + day + fmt.Sprintf("%07v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000000)) // 定点协议机构编码(5位)+日期(8位)+流水号(7位) inputMessage["transChannel"] = "10" // 交易渠道 inputMessage["transReturnCode"] = "" // 交易返回码 inputMessage["transReturnMessage"] = "" // 交易返回信息 inputMessage["transTime"] = msToTime(time.Now().UnixNano()) // 经办人姓名 inputMessage["transVersion"] = "V0.3" // 定点医药机构编号 inputMessage["verifyCode"] = "000000|ABC243DDESF" //定点医药机构名称 return inputMessage } func msToTime(ms int64) string { tm := time.Unix(0, ms*int64(time.Millisecond)) return tm.Format("2006-02-01 15:04:05.000") }