张保健 3 jaren geleden
bovenliggende
commit
11db73275f
1 gewijzigde bestanden met toevoegingen van 63 en 1 verwijderingen
  1. 63 1
      controllers/sg/his_api_controller.go

+ 63 - 1
controllers/sg/his_api_controller.go Bestand weergeven

@@ -67,12 +67,74 @@ func HisManagerApiRegistRouters() {
67 67
 	beego.Router("/api/psn/ncds/putonrecord", &HisApiController{}, "get:PsnPutNCDSOnRecord")
68 68
 	beego.Router("/api/psn/ncds/unputonrecord", &HisApiController{}, "get:PsnPutUnNCDSOnRecord")
69 69
 
70
-	beego.Router("/api/test", &HisApiController{}, "get:TestTest")
70
+	beego.Router("/api/test", &HisApiController{}, "get:TestGetBasBaseInfo")
71 71
 
72 72
 	beego.Router("/api/reversal", &HisApiController{}, "get:ReversalData")
73 73
 
74 74
 }
75 75
 
76
+func (c *HisApiController) TestGetBasBaseInfo() {
77
+	DllDef := syscall.MustLoadDLL("SSCard.dll")
78
+	defer syscall.FreeLibrary(DllDef)
79
+	Iinit:= DllDef.MustFindProc("Init")
80
+	readCard := DllDef.MustFindProc("ReadCardBas")
81
+	ret, _, err := Iinit.Call(StrPtr("http://igb.hsa.gdgov.cn/gdyb_inf/poc/api/card/initDll"), StrPtr("440200"))
82
+	if ret != 0 {
83
+		fmt.Println("SSCard的报错原因:", err)
84
+		fmt.Println("SSCard的运算结果为:", ret)
85
+		c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeReadCardException)
86
+		return
87
+	}
88
+
89
+	result := int(ret)
90
+	fmt.Println("SSCard的运算结果为1:", result)
91
+
92
+	if readCard == nil {
93
+		fmt.Println("readcard is nil")
94
+		readCard = DllDef.MustFindProc("ReadCardBas")
95
+	}
96
+	if readCard == nil {
97
+		fmt.Println("readcard reload  is nil")
98
+		return
99
+	}
100
+
101
+
102
+	str := make([]byte, 1024)
103
+	str1 := make([]byte, 1024)
104
+	cdat:=len(str)
105
+	cdat1:=len(str1)
106
+	p:= *((*int32)(unsafe.Pointer(&str[0])))
107
+	p1:= *((*int32)(unsafe.Pointer(&str1[0])))
108
+	ret2, _, err2 := readCard.Call(uintptr(p), uintptr(cdat), uintptr(p1), uintptr(cdat1))
109
+	fmt.Println(" Add(4,5)的结果为:", ret2)
110
+	str11 := prttostr(uintptr(p))
111
+	str22 := prttostr(uintptr(p1))
112
+
113
+	fmt.Println(" str:", str11)
114
+	fmt.Println(" str1:", str22)
115
+	// runtime.GC()
116
+	if err2 != nil {
117
+		fmt.Println("SSCard的运算结果为:", ret2)
118
+		c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeReadCardException)
119
+		return
120
+	}
121
+
122
+}
123
+
124
+func prttostr(vcode uintptr) string {
125
+	var vbyte []byte
126
+	for i:=0;i<10;i++{
127
+	   sbyte:=*((*byte)(unsafe.Pointer(vcode)))
128
+	   if sbyte==0{
129
+		  break
130
+	   }
131
+	   vbyte=append(vbyte,sbyte)
132
+	   vcode += 1
133
+	}
134
+	return string(vbyte)
135
+ }
136
+
137
+
76 138
 //func (c *HisApiController) TestPay() {
77 139
 //	DllDef2 := syscall.MustLoadDLL("SSSE32.dll")
78 140
 //	readCards := DllDef2.MustFindProc("BankTrans")