jsyb_controller.go 18KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562
  1. package js
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "gdyb/controllers"
  6. "gdyb/enums"
  7. "gdyb/models"
  8. "gdyb/service"
  9. "gdyb/utils"
  10. "github.com/astaxie/beego"
  11. "github.com/axgle/mahonia"
  12. "io/ioutil"
  13. "syscall"
  14. "unsafe"
  15. )
  16. type JSybController struct {
  17. controllers.BaseAuthAPIController
  18. }
  19. func JSybRegistRouters() {
  20. beego.Router("/jsyb/1101", &JSybController{}, "get:PostOne")
  21. beego.Router("/jsyb/2201", &JSybController{}, "get:PostTwo")
  22. beego.Router("/jsyb/2202", &JSybController{}, "get:PostThree")
  23. beego.Router("/jsyb/2203", &JSybController{}, "post:PostFour")
  24. beego.Router("/jsyb/2204", &JSybController{}, "post:PostFive")
  25. beego.Router("/jsyb/2205", &JSybController{}, "get:PostSix")
  26. beego.Router("/jsyb/2206", &JSybController{}, "get:PostSeven")
  27. beego.Router("/jsyb/2207", &JSybController{}, "get:PostEight")
  28. beego.Router("/jsyb/2208", &JSybController{}, "get:PostNine")
  29. beego.Router("/jsyb/5203", &JSybController{}, "get:PostTen")
  30. beego.Router("/jsyb/readcard", &JSybController{}, "get:ReadCard")
  31. }
  32. func (c *JSybController) PostOne() {
  33. certNo := c.GetString("cert_no")
  34. org_name := c.GetString("org_name")
  35. doctor := c.GetString("doctor")
  36. fixmedins_code := c.GetString("fixmedins_code")
  37. insuplc_admdvs := c.GetString("insuplc_admdvs")
  38. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  39. secret_key := c.GetString("secret_key")
  40. id_card_type, _ := c.GetInt64("id_card_type")
  41. card_sn := c.GetString("card_sn")
  42. certificates := c.GetString("certificates")
  43. url := c.GetString("url")
  44. ak := c.GetString("ak")
  45. result, inputLog := service.Jsyb1101(certNo, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, secret_key, id_card_type, card_sn, certificates, url, ak)
  46. fmt.Println(result)
  47. fmt.Println(inputLog)
  48. var dat map[string]interface{}
  49. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  50. } else {
  51. }
  52. var dat2 map[string]interface{}
  53. if err := json.Unmarshal([]byte(inputLog), &dat2); err == nil {
  54. } else {
  55. }
  56. c.ServeSuccessJSON(map[string]interface{}{
  57. "pre": dat,
  58. "log": dat2,
  59. })
  60. }
  61. func (c *JSybController) PostTwo() {
  62. psnNo := c.GetString("psn_no")
  63. insutype := c.GetString("insutype")
  64. certNo := c.GetString("cert_no")
  65. org_name := c.GetString("org_name")
  66. doctor := c.GetString("doctor")
  67. ipt_otp_no := c.GetString("ipt_otp_no")
  68. dept := c.GetString("dept")
  69. fixmedins_code := c.GetString("fixmedins_code")
  70. dept_code := c.GetString("dept_code")
  71. doctor_id := c.GetString("doctor_id")
  72. insuplc_admdvs := c.GetString("insuplc_admdvs")
  73. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  74. secret_key := c.GetString("secret_key")
  75. id_card_type, _ := c.GetInt64("id_card_type")
  76. url := c.GetString("url")
  77. ak := c.GetString("ak")
  78. doctor_name := c.GetString("doctor_name")
  79. result, request_log := service.Jsyb2201(psnNo, insutype, certNo, org_name, doctor, ipt_otp_no, dept, fixmedins_code, dept_code, doctor_id, insuplc_admdvs, mdtrtarea_admvs, secret_key, id_card_type, doctor_name, url, ak)
  80. fmt.Println(result)
  81. fmt.Println(request_log)
  82. var dat map[string]interface{}
  83. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  84. } else {
  85. }
  86. var dat2 map[string]interface{}
  87. if err := json.Unmarshal([]byte(request_log), &dat2); err == nil {
  88. } else {
  89. }
  90. c.ServeSuccessJSON(map[string]interface{}{
  91. "pre": dat,
  92. "request_log": dat2,
  93. })
  94. }
  95. func (c *JSybController) PostThree() {
  96. psnNo := c.GetString("psn_no")
  97. mdtrtId := c.GetString("mdtrt_id")
  98. iptOtpNo := c.GetString("ipt_otp_no")
  99. org_name := c.GetString("org_name")
  100. doctor := c.GetString("doctor")
  101. insuplc_admdvs := c.GetString("insuplc_admdvs")
  102. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  103. secret_key := c.GetString("secret_key")
  104. fixmedins_code := c.GetString("fixmedins_code")
  105. url := c.GetString("url")
  106. ak := c.GetString("ak")
  107. result, request_log := service.Jsyb2202(psnNo, mdtrtId, iptOtpNo, org_name, doctor, insuplc_admdvs, mdtrtarea_admvs, secret_key, fixmedins_code, url, ak)
  108. var dat map[string]interface{}
  109. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  110. } else {
  111. }
  112. var dat2 map[string]interface{}
  113. if err := json.Unmarshal([]byte(request_log), &dat2); err == nil {
  114. } else {
  115. }
  116. c.ServeSuccessJSON(map[string]interface{}{
  117. "pre": dat,
  118. "request_log": dat2,
  119. })
  120. }
  121. func (c *JSybController) PostFour() {
  122. body, _ := ioutil.ReadAll(c.Ctx.Request.Body)
  123. var respJSON map[string]interface{}
  124. if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil {
  125. utils.ErrorLog("接口返回数据解析JSON失败: %v", err)
  126. return
  127. }
  128. userJSONBytes, _ := json.Marshal(respJSON["config"])
  129. var config []*models.HisXtDiagnoseConfig
  130. if err := json.Unmarshal(userJSONBytes, &config); err != nil {
  131. utils.ErrorLog("解析失败:%v", err)
  132. return
  133. }
  134. fmt.Println(respJSON["psn_no"].(string))
  135. fmt.Println(respJSON["mdtrt_id"].(string))
  136. psnNo := respJSON["psn_no"].(string)
  137. mdtrtId := respJSON["mdtrt_id"].(string)
  138. doctor := respJSON["doctor"].(string)
  139. department := respJSON["department"].(string)
  140. org_name := respJSON["org_name"].(string)
  141. med_type := respJSON["med_type"].(string)
  142. doctor_id := respJSON["doctor_id"].(string)
  143. fixmedins_code := respJSON["fixmedins_code"].(string)
  144. sick_code := respJSON["sick_code"].(string)
  145. sick_name := respJSON["sick_name"].(string)
  146. dept := respJSON["dept"].(string)
  147. insuplc_admdvs := respJSON["insuplc_admdvs"].(string)
  148. mdtrtarea_admvs := respJSON["mdtrtarea_admvs"].(string)
  149. secret_key := respJSON["secret_key"].(string)
  150. url := respJSON["url"].(string)
  151. ak := respJSON["ak"].(string)
  152. begin_time := respJSON["begin_time"].(string)
  153. result, request_log := service.Jsyb2203(psnNo, mdtrtId, doctor, department, org_name, med_type, doctor_id, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, secret_key, sick_code, sick_name, dept, config, url, ak, begin_time)
  154. var dat2 map[string]interface{}
  155. if err := json.Unmarshal([]byte(request_log), &dat2); err == nil {
  156. } else {
  157. }
  158. var dat map[string]interface{}
  159. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  160. } else {
  161. }
  162. c.ServeSuccessJSON(map[string]interface{}{
  163. "pre": dat,
  164. "request_log": dat2,
  165. })
  166. }
  167. type All struct {
  168. HisPrescription HisPrescription
  169. mdtrt_id string
  170. psn_no string
  171. }
  172. type HisPrescription struct {
  173. ID int64 `gorm:"column:id" json:"id" form:"id"`
  174. UserOrgId int64 `gorm:"column:user_org_id" json:"user_org_id" form:"user_org_id"`
  175. RecordDate int64 `gorm:"column:record_date" json:"record_date" form:"record_date"`
  176. PatientId int64 `gorm:"column:patient_id" json:"patient_id" form:"patient_id"`
  177. HisPatientId int64 `gorm:"column:his_patient_id" json:"his_patient_id" form:"his_patient_id"`
  178. Status int64 `gorm:"column:status" json:"status" form:"status"`
  179. Ctime int64 `gorm:"column:ctime" json:"ctime" form:"ctime"`
  180. Mtime int64 `gorm:"column:mtime" json:"mtime" form:"mtime"`
  181. Number string `gorm:"column:number" json:"number" form:"number"`
  182. Type int64 `gorm:"column:type" json:"type" form:"type"`
  183. Doctor int64 `gorm:"column:doctor" json:"doctor" form:"doctor"`
  184. Creator int64 `gorm:"column:creator" json:"creator" form:"creator"`
  185. Modifier int64 `gorm:"column:modifier" json:"modifier" form:"modifier"`
  186. HisDoctorAdviceInfo []*models.HisDoctorAdviceInfo `gorm:"ForeignKey:PatientId,RecordDate,PrescriptionId;AssociationForeignKey:PatientId,RecordDate,ID" json:"advices"`
  187. HisPrescriptionProject []*models.HisPrescriptionProject `gorm:"ForeignKey:PatientId,RecordDate,PrescriptionId;AssociationForeignKey:PatientId,RecordDate,ID" json:"project"`
  188. }
  189. func (c *JSybController) PostFive() {
  190. body, _ := ioutil.ReadAll(c.Ctx.Request.Body)
  191. var respJSON map[string]interface{}
  192. if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil {
  193. utils.ErrorLog("接口返回数据解析JSON失败: %v", err)
  194. return
  195. }
  196. userJSONBytes, _ := json.Marshal(respJSON["pre"])
  197. var hp []*models.HisPrescription
  198. if err := json.Unmarshal(userJSONBytes, &hp); err != nil {
  199. utils.ErrorLog("解析失败:%v", err)
  200. return
  201. }
  202. result, request_log := service.Jsyb2204(respJSON["psn_no"].(string), respJSON["mdtrt_id"].(string), hp, respJSON["chrg_bchno"].(string), respJSON["org_name"].(string),
  203. respJSON["doctor"].(string), respJSON["dept"].(string), respJSON["fixmedins_code"].(string), respJSON["dept_code"].(string), respJSON["doctor_id"].(string), respJSON["insuplc_admdvs"].(string), respJSON["mdtrtarea_admvs"].(string), respJSON["diag_code"].(string), respJSON["secret_key"].(string), respJSON["balance_accounts_type"].(string), respJSON["url"].(string), respJSON["ak"].(string), respJSON["new_doctor_name"].(string))
  204. var dat map[string]interface{}
  205. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  206. fmt.Println(dat)
  207. } else {
  208. fmt.Println(err)
  209. }
  210. var dat2 map[string]interface{}
  211. if err := json.Unmarshal([]byte(request_log), &dat2); err == nil {
  212. fmt.Println(dat2)
  213. } else {
  214. fmt.Println(err)
  215. }
  216. c.ServeSuccessJSON(map[string]interface{}{
  217. "pre": dat,
  218. "request_log": dat2,
  219. })
  220. }
  221. func (c *JSybController) PostSix() {
  222. psnNo := c.GetString("psn_no")
  223. mdtrtId := c.GetString("mdtrt_id")
  224. chrgBchno := c.GetString("chrg_bchno")
  225. org_name := c.GetString("org_name")
  226. doctor := c.GetString("doctor")
  227. insuplc_admdvs := c.GetString("insuplc_admdvs")
  228. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  229. secret_key := c.GetString("secret_key")
  230. fixmedins_code := c.GetString("fixmedins_code")
  231. url := c.GetString("url")
  232. ak := c.GetString("ak")
  233. result, request_log := service.Jsyb2205(psnNo, mdtrtId, chrgBchno, org_name, doctor, insuplc_admdvs, mdtrtarea_admvs, secret_key, fixmedins_code, url, ak)
  234. fmt.Println(request_log)
  235. var dat map[string]interface{}
  236. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  237. fmt.Println(dat)
  238. } else {
  239. fmt.Println(err)
  240. }
  241. var dat2 map[string]interface{}
  242. if err := json.Unmarshal([]byte(request_log), &dat2); err == nil {
  243. fmt.Println(dat2)
  244. } else {
  245. fmt.Println(err)
  246. }
  247. c.ServeSuccessJSON(map[string]interface{}{
  248. "pre": dat,
  249. "request_log": dat2,
  250. })
  251. }
  252. func (c *JSybController) PostSeven() {
  253. psnNo := c.GetString("psn_no")
  254. mdtrtId := c.GetString("mdtrt_id")
  255. chrgBchno := c.GetString("chrg_bchno")
  256. certNo := c.GetString("cert_no")
  257. insutype := c.GetString("insutype")
  258. total := c.GetString("total")
  259. org_name := c.GetString("org_name")
  260. doctor := c.GetString("doctor")
  261. fixmedins_code := c.GetString("fixmedins_code")
  262. insuplc_admdvs := c.GetString("insuplc_admdvs")
  263. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  264. secret_key := c.GetString("secret_key")
  265. med_type := c.GetString("med_type")
  266. id_card_type, _ := c.GetInt64("id_card_type")
  267. certificates, _ := c.GetInt64("certificates")
  268. url := c.GetString("url")
  269. ak := c.GetString("ak")
  270. result, request_log := service.Jsyb2206(psnNo, mdtrtId, chrgBchno, certNo, insutype, total, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, secret_key, med_type, id_card_type, 0, 0, 0, 0, certificates, url, ak)
  271. fmt.Println(request_log)
  272. var dat map[string]interface{}
  273. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  274. fmt.Println(dat)
  275. } else {
  276. fmt.Println(err)
  277. }
  278. var dat2 map[string]interface{}
  279. if err := json.Unmarshal([]byte(request_log), &dat2); err == nil {
  280. fmt.Println(dat2)
  281. } else {
  282. fmt.Println(err)
  283. }
  284. c.ServeSuccessJSON(map[string]interface{}{
  285. "pre": dat,
  286. "request_log": dat2,
  287. })
  288. }
  289. func (c *JSybController) PostEight() {
  290. psnNo := c.GetString("psn_no")
  291. mdtrtId := c.GetString("mdtrt_id")
  292. chrgBchno := c.GetString("chrg_bchno")
  293. certNo := c.GetString("cert_no")
  294. insutype := c.GetString("insutype")
  295. total := c.GetString("total")
  296. org_name := c.GetString("org_name")
  297. doctor := c.GetString("doctor")
  298. fixmedins_code := c.GetString("fixmedins_code")
  299. insuplc_admdvs := c.GetString("insuplc_admdvs")
  300. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  301. secret_key := c.GetString("secret_key")
  302. med_type := c.GetString("med_type")
  303. id_card_type, _ := c.GetInt64("id_card_type")
  304. certificates, _ := c.GetInt64("certificates")
  305. fulamt_ownpay_amt, _ := c.GetFloat("fulamt_ownpay_amt")
  306. overlmt_selfpay, _ := c.GetFloat("overlmt_selfpay")
  307. preselfpay_amt, _ := c.GetFloat("preselfpay_amt")
  308. inscp_scp_amt, _ := c.GetFloat("inscp_scp_amt")
  309. acct_used_flag := c.GetString("acct_used_flag")
  310. url := c.GetString("url")
  311. ak := c.GetString("ak")
  312. result, request_log := service.Jsyb2207(psnNo, mdtrtId, chrgBchno, certNo, insutype, total, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, secret_key, med_type, id_card_type, fulamt_ownpay_amt, overlmt_selfpay, preselfpay_amt, inscp_scp_amt, certificates, acct_used_flag, url, ak)
  313. var dat map[string]interface{}
  314. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  315. fmt.Println(dat)
  316. } else {
  317. fmt.Println(err)
  318. }
  319. var dat2 map[string]interface{}
  320. if err := json.Unmarshal([]byte(request_log), &dat2); err == nil {
  321. fmt.Println(dat2)
  322. } else {
  323. fmt.Println(err)
  324. }
  325. c.ServeSuccessJSON(map[string]interface{}{
  326. "pre": dat,
  327. "request_log": dat2,
  328. })
  329. }
  330. func (c *JSybController) PostNine() {
  331. psnNo := c.GetString("psn_no")
  332. mdtrtId := c.GetString("mdtrt_id")
  333. setlId := c.GetString("setl_id")
  334. org_name := c.GetString("org_name")
  335. doctor := c.GetString("doctor")
  336. secret_key := c.GetString("secret_key")
  337. fixmedins_code := c.GetString("fixmedins_code")
  338. insuplc_admdvs := c.GetString("insuplc_admdvs")
  339. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  340. url := c.GetString("url")
  341. ak := c.GetString("ak")
  342. result, request_log := service.Jsyb2208(psnNo, mdtrtId, setlId, org_name, doctor, secret_key, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, url, ak)
  343. fmt.Println(request_log)
  344. var dat map[string]interface{}
  345. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  346. fmt.Println(dat)
  347. } else {
  348. fmt.Println(err)
  349. }
  350. var dat2 map[string]interface{}
  351. if err := json.Unmarshal([]byte(request_log), &dat2); err == nil {
  352. fmt.Println(dat2)
  353. } else {
  354. fmt.Println(err)
  355. }
  356. c.ServeSuccessJSON(map[string]interface{}{
  357. "pre": dat,
  358. "request_log": dat2,
  359. })
  360. }
  361. func (c *JSybController) PostTen() {
  362. psnNo := c.GetString("psn_no")
  363. mdtrtId := c.GetString("mdtrt_id")
  364. setlId := c.GetString("setl_id")
  365. org_name := c.GetString("org_name")
  366. doctor := c.GetString("doctor")
  367. secret_key := c.GetString("secret_key")
  368. fixmedins_code := c.GetString("fixmedins_code")
  369. insuplc_admdvs := c.GetString("insuplc_admdvs")
  370. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  371. url := c.GetString("url")
  372. ak := c.GetString("ak")
  373. baseParams := models.BaseParams{
  374. SecretKey: secret_key,
  375. FixmedinsCode: fixmedins_code,
  376. InsuplcAdmdvs: insuplc_admdvs,
  377. MdtrtareaAdmvs: mdtrtarea_admvs,
  378. OrgName: org_name,
  379. Doctor: doctor,
  380. RequestUrl: url,
  381. AccessKey: ak,
  382. }
  383. businessParams := models.BusinessParams{
  384. PsnNo: psnNo,
  385. MdtrtId: mdtrtId,
  386. SetlId: setlId,
  387. }
  388. result, request_log := service.Jsyb5203(baseParams, businessParams)
  389. var dat map[string]interface{}
  390. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  391. fmt.Println(dat)
  392. } else {
  393. fmt.Println(err)
  394. }
  395. var dat2 map[string]interface{}
  396. if err := json.Unmarshal([]byte(request_log), &dat2); err == nil {
  397. fmt.Println(dat2)
  398. } else {
  399. fmt.Println(err)
  400. }
  401. c.ServeSuccessJSON(map[string]interface{}{
  402. "pre": dat,
  403. "request_log": dat2,
  404. })
  405. }
  406. var initFlag int64 = 0
  407. func (c *JSybController) ReadCard() {
  408. fixmedins_code := c.GetString("fixmedins_code")
  409. secret_key := c.GetString("secret_key")
  410. ak := c.GetString("ak")
  411. if initFlag == 0 {
  412. c.TestGetBasBaseInit(fixmedins_code, secret_key, ak)
  413. }
  414. basStr := c.GetBasBaseInfo()
  415. fmt.Println(basStr)
  416. }
  417. func (c *JSybController) TestGetBasBaseInit(code string, secret_key string, ak string) {
  418. DllDef := syscall.MustLoadDLL("HeaSecReadInfo.dll")
  419. Iinit := DllDef.MustFindProc("Init")
  420. //miConfig, _ := service.FindMedicalInsuranceInfo(c.GetAdminUserInfo().CurrentOrgId)
  421. str := make([]byte, 1024)
  422. inputData := make(map[string]interface{})
  423. inputData["IP"] = "10.72.3.87"
  424. inputData["PORT"] = "8086"
  425. inputData["TIMEOUT"] = "180"
  426. inputData["LOG_PATH"] = "C:\\log\\"
  427. inputData["EC_URL"] = "http://10.72.42.210:10081/localcfc/api/hsecfc/localQrCodeQuery"
  428. inputData["CARD_PASSTYPE"] = "1"
  429. inputData["API_NAME"] = "hssServives"
  430. inputData["API_VERSION"] = "1.0.0"
  431. inputData["ACCESS_KEY"] = ak
  432. inputData["SECRETKEY"] = secret_key
  433. inputData["ORG_ID"] = code
  434. inputData["EXT"] = ""
  435. bytesData, _ := json.Marshal(inputData)
  436. ret, _, err := Iinit.Call((uintptr)(unsafe.Pointer(&bytesData[0])), (uintptr)(unsafe.Pointer(&str[0])))
  437. if ret != 0 {
  438. fmt.Println("SSCard的报错原因:", err)
  439. fmt.Println("SSCard的运算结果为:", ret)
  440. fmt.Println("SSCard的返回结果为:", string(str))
  441. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeReadCardException)
  442. return
  443. }
  444. result := int(ret)
  445. fmt.Println("SSCard的运算结果为1:", result)
  446. initFlag = 1
  447. return
  448. }
  449. func (c *JSybController) GetBasBaseInfo() string {
  450. DllDef := syscall.MustLoadDLL("HeaSecReadInfo.dll")
  451. readCard := DllDef.MustFindProc("ReadCardBas")
  452. if readCard == nil {
  453. fmt.Println("readcard is nil")
  454. readCard = DllDef.MustFindProc("ReadCardBas")
  455. }
  456. str := make([]byte, 2048)
  457. str1 := make([]byte, 8192)
  458. ret2, _, _ := readCard.Call((uintptr)(unsafe.Pointer(&str[0])), uintptr(1024), (uintptr)(unsafe.Pointer(&str1[0])), uintptr(1024))
  459. fmt.Println(string(str1))
  460. fmt.Println(string(str))
  461. fmt.Println(":", ConvertToString(string(str1), "gbk", "utf-8"))
  462. fmt.Println(":", ConvertToString(string(str), "gbk", "utf-8"))
  463. if ret2 != 0 {
  464. return ""
  465. }
  466. return string(str)
  467. }
  468. func IntPtr(n int) uintptr {
  469. return uintptr(n)
  470. }
  471. func StrPtr(s string) uintptr {
  472. return uintptr(unsafe.Pointer(syscall.StringBytePtr(s)))
  473. }
  474. type Charset string
  475. const (
  476. UTF8 = Charset("UTF-8")
  477. GB18030 = Charset("GB18030")
  478. )
  479. func ConvertToString(src string, srcCode string, tagCode string) string {
  480. srcCoder := mahonia.NewDecoder(srcCode)
  481. srcResult := srcCoder.ConvertString(src)
  482. tagCoder := mahonia.NewDecoder(tagCode)
  483. _, cdata, _ := tagCoder.Translate([]byte(srcResult), true)
  484. result := string(cdata)
  485. return result
  486. }