nm_controller.go 22KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674
  1. package nm
  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. "os"
  14. "regexp"
  15. "strconv"
  16. "strings"
  17. "syscall"
  18. "time"
  19. "unsafe"
  20. )
  21. type NmController struct {
  22. controllers.BaseAuthAPIController
  23. }
  24. func NmybRegistRouters() {
  25. beego.Router("/nmyb/1101", &NmController{}, "get:Post1101")
  26. beego.Router("/nmyb/2401", &NmController{}, "post:Post2401")
  27. beego.Router("/nmyb/2402", &NmController{}, "post:Post2402")
  28. beego.Router("/nmyb/2404", &NmController{}, "get:Post2404")
  29. beego.Router("/nmyb/2405", &NmController{}, "post:Post2405")
  30. beego.Router("/nmyb/2301", &NmController{}, "post:Post2301")
  31. beego.Router("/nmyb/2302", &NmController{}, "get:Post2302")
  32. beego.Router("/nmyb/2303", &NmController{}, "get:Post2303")
  33. beego.Router("/nmyb/2304", &NmController{}, "get:Post2304")
  34. beego.Router("/nmyb/2305", &NmController{}, "get:Post2305")
  35. beego.Router("/nmyb/readcard", &NmController{}, "get:ReadCard")
  36. }
  37. func (c *NmController) Post1101() {
  38. certNo := c.GetString("cert_no")
  39. org_name := c.GetString("org_name")
  40. doctor := c.GetString("doctor")
  41. fixmedins_code := c.GetString("fixmedins_code")
  42. insuplc_admdvs := c.GetString("insuplc_admdvs")
  43. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  44. secret_key := c.GetString("secret_key")
  45. id_card_type, _ := c.GetInt64("id_card_type")
  46. card_sn := c.GetString("card_sn")
  47. certificates := c.GetString("certificates")
  48. name := c.GetString("name")
  49. certificate, _ := strconv.ParseInt(certificates, 10, 64)
  50. result, request_log, result_log := service.ZHGdyb1101(certNo, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, secret_key, id_card_type, card_sn, certificate, name)
  51. saveJsLog(result_log, request_log, "1101", "查询个人信息", org_name)
  52. var dat map[string]interface{}
  53. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  54. } else {
  55. }
  56. var dat2 map[string]interface{}
  57. if err := json.Unmarshal([]byte(request_log), &dat2); err == nil {
  58. } else {
  59. }
  60. c.ServeSuccessJSON(map[string]interface{}{
  61. "pre": dat,
  62. "log": dat2,
  63. })
  64. }
  65. func (c *NmController) Post2401() {
  66. body, _ := ioutil.ReadAll(c.Ctx.Request.Body)
  67. var respJSON map[string]interface{}
  68. if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil {
  69. utils.ErrorLog("接口返回数据解析JSON失败: %v", err)
  70. return
  71. }
  72. userJSONBytes, _ := json.Marshal(respJSON["struct_2401"])
  73. var struct2401 service.Struct2401
  74. if err := json.Unmarshal(userJSONBytes, &struct2401); err != nil {
  75. utils.ErrorLog("解析失败:%v", err)
  76. return
  77. }
  78. org_name := respJSON["org_name"].(string)
  79. fixmedins_code := respJSON["fixmedins_code"].(string)
  80. doctor := respJSON["doctor"].(string)
  81. insuplc_admdvs := respJSON["insuplc_admdvs"].(string)
  82. mdtrtarea_admvs := respJSON["mdtrtarea_admvs"].(string)
  83. secret_key := respJSON["secret_key"].(string)
  84. result, request_log := service.ZHGdyb2401(struct2401, secret_key, org_name, fixmedins_code, doctor, insuplc_admdvs, mdtrtarea_admvs)
  85. saveJsLog(result, request_log, "2401", "入院登记", org_name)
  86. var dat2 map[string]interface{}
  87. if err := json.Unmarshal([]byte(request_log), &dat2); err == nil {
  88. } else {
  89. }
  90. var dat map[string]interface{}
  91. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  92. } else {
  93. }
  94. c.ServeSuccessJSON(map[string]interface{}{
  95. "pre": dat,
  96. "request_log": dat2,
  97. })
  98. }
  99. func (c *NmController) Post2404() {
  100. mdtrt_id := c.GetString("mdtrt_id")
  101. psn_no := c.GetString("psn_no")
  102. doctor := c.GetString("doctor")
  103. fixmedins_code := c.GetString("fixmedins_code")
  104. insuplc_admdvs := c.GetString("insuplc_admdvs")
  105. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  106. secret_key := c.GetString("secret_key")
  107. org_name := c.GetString("org_name")
  108. result, requestLog := service.ZHGdyb2404(mdtrt_id, psn_no, secret_key, org_name, fixmedins_code, doctor, insuplc_admdvs, mdtrtarea_admvs)
  109. saveJsLog(result, requestLog, "2404", "入院登记撤销", org_name)
  110. var dat map[string]interface{}
  111. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  112. } else {
  113. }
  114. var dat2 map[string]interface{}
  115. if err := json.Unmarshal([]byte(requestLog), &dat2); err == nil {
  116. } else {
  117. }
  118. c.ServeSuccessJSON(map[string]interface{}{
  119. "pre": dat,
  120. "log": dat2,
  121. })
  122. }
  123. func (c *NmController) Post2405() {
  124. mdtrt_id := c.GetString("mdtrt_id")
  125. psn_no := c.GetString("psn_no")
  126. doctor := c.GetString("doctor")
  127. fixmedins_code := c.GetString("fixmedins_code")
  128. insuplc_admdvs := c.GetString("insuplc_admdvs")
  129. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  130. secret_key := c.GetString("secret_key")
  131. org_name := c.GetString("org_name")
  132. result, requestLog := service.ZHGdyb2405(mdtrt_id, psn_no, secret_key, org_name, fixmedins_code, doctor, insuplc_admdvs, mdtrtarea_admvs)
  133. saveJsLog(result, requestLog, "2405", "出院登记撤销", org_name)
  134. var dat map[string]interface{}
  135. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  136. } else {
  137. }
  138. var dat2 map[string]interface{}
  139. if err := json.Unmarshal([]byte(requestLog), &dat2); err == nil {
  140. } else {
  141. }
  142. c.ServeSuccessJSON(map[string]interface{}{
  143. "pre": dat,
  144. "log": dat2,
  145. })
  146. }
  147. func (c *NmController) Post2402() {
  148. body, _ := ioutil.ReadAll(c.Ctx.Request.Body)
  149. var respJSON map[string]interface{}
  150. if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil {
  151. utils.ErrorLog("接口返回数据解析JSON失败: %v", err)
  152. return
  153. }
  154. userJSONBytes, _ := json.Marshal(respJSON["struct_2402"])
  155. var struct2402 service.Struct2402
  156. if err := json.Unmarshal(userJSONBytes, &struct2402); err != nil {
  157. utils.ErrorLog("解析失败:%v", err)
  158. return
  159. }
  160. org_name := respJSON["org_name"].(string)
  161. fixmedins_code := respJSON["fixmedins_code"].(string)
  162. doctor := respJSON["doctor"].(string)
  163. insuplc_admdvs := respJSON["insuplc_admdvs"].(string)
  164. mdtrtarea_admvs := respJSON["mdtrtarea_admvs"].(string)
  165. secret_key := respJSON["secret_key"].(string)
  166. result, request_log := service.ZHGdyb2402(struct2402, secret_key, org_name, fixmedins_code, doctor, insuplc_admdvs, mdtrtarea_admvs)
  167. saveJsLog(result, request_log, "2402", "出院", org_name)
  168. var dat2 map[string]interface{}
  169. if err := json.Unmarshal([]byte(request_log), &dat2); err == nil {
  170. } else {
  171. }
  172. var dat map[string]interface{}
  173. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  174. } else {
  175. }
  176. c.ServeSuccessJSON(map[string]interface{}{
  177. "pre": dat,
  178. "request_log": dat2,
  179. })
  180. }
  181. func (c *NmController) Post2301() {
  182. body, _ := ioutil.ReadAll(c.Ctx.Request.Body)
  183. var respJSON map[string]interface{}
  184. if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil {
  185. utils.ErrorLog("接口返回数据解析JSON失败: %v", err)
  186. return
  187. }
  188. userJSONBytes, _ := json.Marshal(respJSON["customs"])
  189. var customs []*models.NewCustom
  190. if err := json.Unmarshal(userJSONBytes, &customs); err != nil {
  191. utils.ErrorLog("解析失败:%v", err)
  192. return
  193. }
  194. number := respJSON["number"].(string)
  195. chrg_bchno := respJSON["chrg_bchno"].(string)
  196. dept := respJSON["dept"].(string)
  197. dept_code := respJSON["dept_code"].(string)
  198. doctor_code := respJSON["doctor_code"].(float64)
  199. fmt.Println("@@@@@@")
  200. fmt.Println(doctor_code)
  201. doctor_name := respJSON["doctor_name"].(string)
  202. opertor := respJSON["opertor"].(string)
  203. org_name := respJSON["org_name"].(string)
  204. fixmedins_code := respJSON["fixmedins_code"].(string)
  205. insuplc_admdvs := respJSON["insuplc_admdvs"].(string)
  206. mdtrtarea_admvs := respJSON["mdtrtarea_admvs"].(string)
  207. secret_key := respJSON["secret_key"].(string)
  208. //med_type := respJSON["med_type"].(float64)
  209. med_type := strconv.FormatInt(int64(respJSON["med_type"].(float64)), 10)
  210. psn_no := respJSON["psn_no"].(string)
  211. result, requestLog := service.ZHGdyb2301A(psn_no, number, customs, chrg_bchno, org_name, doctor_name, dept, fixmedins_code, dept_code, int64(doctor_code), insuplc_admdvs, mdtrtarea_admvs, secret_key, med_type, opertor)
  212. saveJsLog(result, requestLog, "2301", "上传明细", org_name)
  213. var dat2 map[string]interface{}
  214. if err := json.Unmarshal([]byte(requestLog), &dat2); err == nil {
  215. } else {
  216. }
  217. var dat map[string]interface{}
  218. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  219. } else {
  220. }
  221. c.ServeSuccessJSON(map[string]interface{}{
  222. "pre": dat,
  223. "request_log": dat2,
  224. })
  225. }
  226. func (c *NmController) Post2302() {
  227. mdtrt_id := c.GetString("mdtrt_id")
  228. psn_no := c.GetString("psn_no")
  229. number := c.GetString("number")
  230. doctor := c.GetString("doctor")
  231. fixmedins_code := c.GetString("fixmedins_code")
  232. insuplc_admdvs := c.GetString("insuplc_admdvs")
  233. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  234. secret_key := c.GetString("secret_key")
  235. org_name := c.GetString("org_name")
  236. refund_type, _ := c.GetInt64("refund_type")
  237. result, requestLog := service.Gdyb2302(psn_no, mdtrt_id, org_name, doctor, insuplc_admdvs, mdtrtarea_admvs, secret_key, fixmedins_code, number, refund_type)
  238. saveJsLog(result, requestLog, "2302", "退明细", org_name)
  239. var dat2 map[string]interface{}
  240. if err := json.Unmarshal([]byte(requestLog), &dat2); err == nil {
  241. } else {
  242. }
  243. var dat map[string]interface{}
  244. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  245. } else {
  246. }
  247. c.ServeSuccessJSON(map[string]interface{}{
  248. "pre": dat,
  249. "request_log": dat2,
  250. })
  251. }
  252. func (c *NmController) Post2303() {
  253. mdtrt_id := c.GetString("mdtrt_id")
  254. psn_no := c.GetString("psn_no")
  255. chrg_bchno := c.GetString("chrg_bchno")
  256. cert_no := c.GetString("cert_no")
  257. insutype_type := c.GetString("insutype_type")
  258. allTotal := c.GetString("total")
  259. id_card_type, _ := c.GetInt64("id_card_type")
  260. doctor := c.GetString("doctor")
  261. certificates, _ := c.GetInt64("certificates")
  262. fixmedins_code := c.GetString("fixmedins_code")
  263. insuplc_admdvs := c.GetString("insuplc_admdvs")
  264. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  265. secret_key := c.GetString("secret_key")
  266. org_name := c.GetString("org_name")
  267. result, src_resquest := service.ZHGdyb2303(psn_no, mdtrt_id, chrg_bchno, cert_no, insutype_type, allTotal, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, secret_key, "0", id_card_type, 0, 0, 0, 0, certificates)
  268. saveJsLog(result, src_resquest, "2303", "预结算", org_name)
  269. var dat2 map[string]interface{}
  270. if err := json.Unmarshal([]byte(src_resquest), &dat2); err == nil {
  271. } else {
  272. }
  273. var dat map[string]interface{}
  274. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  275. } else {
  276. }
  277. c.ServeSuccessJSON(map[string]interface{}{
  278. "pre": dat,
  279. "request_log": dat2,
  280. })
  281. }
  282. func (c *NmController) Post2304() {
  283. mdtrt_id := c.GetString("mdtrt_id")
  284. psn_no := c.GetString("psn_no")
  285. chrg_bchno := c.GetString("chrg_bchno")
  286. cert_no := c.GetString("cert_no")
  287. insutype_type := c.GetString("insutype_type")
  288. allTotal := c.GetString("total")
  289. id_card_type, _ := c.GetInt64("id_card_type")
  290. doctor := c.GetString("doctor")
  291. certificates, _ := c.GetInt64("certificates")
  292. fixmedins_code := c.GetString("fixmedins_code")
  293. insuplc_admdvs := c.GetString("insuplc_admdvs")
  294. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  295. secret_key := c.GetString("secret_key")
  296. org_name := c.GetString("org_name")
  297. result, src_resquest := service.ZHGdyb2304(psn_no, mdtrt_id, chrg_bchno, cert_no, insutype_type, allTotal, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, secret_key, "0", id_card_type, 0, 0, 0, 0, certificates)
  298. saveJsLog(result, src_resquest, "2304", "住院结算", org_name)
  299. var dat2 map[string]interface{}
  300. if err := json.Unmarshal([]byte(src_resquest), &dat2); err == nil {
  301. } else {
  302. }
  303. var dat map[string]interface{}
  304. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  305. } else {
  306. }
  307. c.ServeSuccessJSON(map[string]interface{}{
  308. "pre": dat,
  309. "request_log": dat2,
  310. })
  311. }
  312. func (c *NmController) Post2305() {
  313. mdtrt_id := c.GetString("mdtrt_id")
  314. psn_no := c.GetString("psn_no")
  315. doctor := c.GetString("doctor")
  316. setl_id := c.GetString("setl_id")
  317. fixmedins_code := c.GetString("fixmedins_code")
  318. insuplc_admdvs := c.GetString("insuplc_admdvs")
  319. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  320. secret_key := c.GetString("secret_key")
  321. org_name := c.GetString("org_name")
  322. result, requestLog := service.Gdyb2305(psn_no, mdtrt_id, setl_id, org_name, doctor, secret_key, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs)
  323. saveJsLog(result, requestLog, "2305", "退费", org_name)
  324. var dat2 map[string]interface{}
  325. if err := json.Unmarshal([]byte(requestLog), &dat2); err == nil {
  326. } else {
  327. }
  328. var dat map[string]interface{}
  329. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  330. } else {
  331. }
  332. c.ServeSuccessJSON(map[string]interface{}{
  333. "pre": dat,
  334. "request_log": dat2,
  335. })
  336. }
  337. func (c *NmController) Get2503() {
  338. }
  339. type ELeData struct {
  340. Data struct {
  341. SiNo string `json:"si_no"`
  342. SiCardNo string `json:"si_card_no"`
  343. SiCardIssueArea string `json:"si_card_issue_area"`
  344. Name string `json:"name"`
  345. Gender string `json:"gender"`
  346. IdType string `json:"id_type"`
  347. IdNo string `json:"id_no"`
  348. EcCardToken string `json:"ecCardToken"`
  349. } `json:"data"`
  350. Code int `json:"code"`
  351. Message string `json:"message"`
  352. }
  353. func (c *NmController) ReadCard() {
  354. fixmedins_code := c.GetString("fixmedins_code")
  355. secret_key := c.GetString("secret_key")
  356. ak := c.GetString("ak")
  357. org_name := c.GetString("org_name")
  358. doctor := c.GetString("doctor")
  359. insuplc_admdvs := c.GetString("insuplc_admdvs")
  360. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  361. url := c.GetString("url")
  362. cainfo := c.GetString("cainfo")
  363. id_card_type := c.GetString("id_card_type")
  364. operator_id := c.GetString("operator_id")
  365. operator := c.GetString("operator")
  366. //result, request := service.Jsyb9001(org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, secret_key, 1, url, cainfo, ak)
  367. //fmt.Println(request)
  368. //fmt.Println(result)
  369. c.TestGetBasBaseInit(fixmedins_code, secret_key, ak)
  370. fmt.Println(id_card_type)
  371. switch id_card_type {
  372. case "1":
  373. pCardInfo, pBusiCardInfo := c.GetBasBaseInfo()
  374. pBusiCardInfo = Remove0000(pBusiCardInfo)
  375. pCardInfo = Remove0000(pCardInfo)
  376. fmt.Println(":", ConvertToString(pCardInfo, "gbk", "utf-8"))
  377. fmt.Println(pBusiCardInfo)
  378. fmt.Println(pCardInfo)
  379. bas := strings.Split(pCardInfo, "|")
  380. basNumber := bas[2]
  381. id_card_no := bas[1]
  382. card_sn := bas[3]
  383. id_card_type_int, _ := strconv.ParseInt(id_card_type, 10, 64)
  384. if len(pCardInfo) > 0 && len(pBusiCardInfo) > 0 {
  385. result, _ := service.Jsyb1101A(basNumber, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, secret_key, id_card_type_int, card_sn, "1", url, ak, pBusiCardInfo, id_card_no, cainfo)
  386. var dat map[string]interface{}
  387. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  388. fmt.Println(dat)
  389. } else {
  390. fmt.Println(err)
  391. }
  392. c.ServeSuccessJSON(map[string]interface{}{
  393. "status": "0",
  394. "card_info": pCardInfo,
  395. "busi_card_info": pBusiCardInfo,
  396. "result": dat,
  397. "type": "1",
  398. })
  399. } else {
  400. c.ServeSuccessJSON(map[string]interface{}{
  401. "status": "-1",
  402. })
  403. }
  404. break
  405. case "3": //电子凭证
  406. _, pBusiCardInfo := c.GetELeInfo(fixmedins_code, operator_id, operator)
  407. //fmt.Println(pCardInfo)
  408. fmt.Println(pBusiCardInfo)
  409. pBusiCardInfo = Remove0000(pBusiCardInfo)
  410. //pCardInfo = Remove0000(pCardInfo)
  411. var ele ELeData
  412. err := json.Unmarshal([]byte(pBusiCardInfo), &ele)
  413. if err != nil {
  414. utils.ErrorLog("解析失败:%v", err)
  415. }
  416. token := ele.Data.EcCardToken
  417. if len(token) > 0 {
  418. result, _ := service.Jsyb1101B(org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, secret_key, url, ak, token, cainfo, ele.Data.IdNo)
  419. var dat map[string]interface{}
  420. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  421. fmt.Println(dat)
  422. } else {
  423. fmt.Println(err)
  424. }
  425. c.ServeSuccessJSON(map[string]interface{}{
  426. "status": "0",
  427. //"card_info": pCardInfo,
  428. "busi_card_info": pBusiCardInfo,
  429. "token": token,
  430. "result": dat,
  431. "type": "2",
  432. })
  433. } else {
  434. c.ServeSuccessJSON(map[string]interface{}{
  435. "status": "-1",
  436. })
  437. }
  438. break
  439. }
  440. }
  441. func (c *NmController) TestGetBasBaseInit(code string, secret_key string, ak string) {
  442. DllDef := syscall.MustLoadDLL("HeaSecReadInfo.dll")
  443. Iinit := DllDef.MustFindProc("Init")
  444. //miConfig, _ := service.FindMedicalInsuranceInfo(c.GetAdminUserInfo().CurrentOrgId)
  445. str := make([]byte, 2048)
  446. inputData := make(map[string]interface{})
  447. inputData["IP"] = "10.72.3.87"
  448. inputData["PORT"] = "8086"
  449. inputData["TIMEOUT"] = "180"
  450. inputData["LOG_PATH"] = "C:\\log\\"
  451. //
  452. inputData["EC_URL"] = "http://10.72.3.127:10086/localcfc/api/hsecfc/localQrCodeQuery"
  453. inputData["CARD_PASSTYPE"] = "1"
  454. inputData["API_NAME"] = "hssServives"
  455. inputData["API_VERSION"] = "1.0.0"
  456. inputData["ACCESS_KEY"] = ak
  457. inputData["SECRETKEY"] = secret_key
  458. inputData["ORG_ID"] = code
  459. inputData["EXT"] = ""
  460. bytesData, _ := json.Marshal(inputData)
  461. fmt.Println(inputData)
  462. fmt.Println(bytesData)
  463. ret, _, err := Iinit.Call((uintptr)(unsafe.Pointer(&bytesData[0])), (uintptr)(unsafe.Pointer(&str[0])))
  464. if ret != 0 {
  465. fmt.Println("SSCard的报错原因:", err)
  466. fmt.Println("SSCard的运算结果为:", ret)
  467. fmt.Println("SSCard的返回结果为:", string(str))
  468. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeReadCardException)
  469. return
  470. }
  471. fmt.Println("SSCard的返回结果为:", string(str))
  472. result := int(ret)
  473. fmt.Println("SSCard的运算结果为1:", result)
  474. //initFlag = 1
  475. return
  476. }
  477. func (c *NmController) GetBasBaseInfo() (string, string) {
  478. DllDef := syscall.MustLoadDLL("HeaSecReadInfo.dll")
  479. readCard := DllDef.MustFindProc("ReadCardBas")
  480. fmt.Println(readCard)
  481. fmt.Println("!!!!!")
  482. pCardInfo := make([]byte, 2048)
  483. pBusiCardInfo := make([]byte, 8192)
  484. ret2, _, _ := readCard.Call((uintptr)(unsafe.Pointer(&pCardInfo[0])), (uintptr)(unsafe.Pointer(&pBusiCardInfo[0])))
  485. fmt.Println(ret2)
  486. fmt.Println(DeleteExtraSpace(string(pCardInfo)))
  487. fmt.Println(DeleteExtraSpace(string(pBusiCardInfo)))
  488. fmt.Println(":", ConvertToString(DeleteExtraSpace(string(pCardInfo)), "gbk", "utf-8"))
  489. fmt.Println(":", ConvertToString(DeleteExtraSpace(string(pBusiCardInfo)), "gbk", "utf-8"))
  490. if ret2 != 0 {
  491. return "", ""
  492. }
  493. return DeleteExtraSpace(string(pCardInfo)), DeleteExtraSpace(string(pBusiCardInfo))
  494. }
  495. func (c *NmController) GetELeInfo(code string, operator_id string, operator_name string) (string, string) {
  496. DllDef := syscall.MustLoadDLL("HeaSecReadInfo.dll")
  497. readCard := DllDef.MustFindProc("EcCardQuery")
  498. fmt.Println(readCard)
  499. fmt.Println("!!!!!")
  500. //pCardInfo := make([]byte, 8192)
  501. pBusiCardInfo := make([]byte, 8192)
  502. //data := make(map[string]interface{})
  503. //pData := make(map[string]interface{})
  504. //inputData := make(map[string]interface{})
  505. //inputData["orgId"] = code
  506. //inputData["businessType"] = "01101"
  507. //inputData["operatorId"] = operator_id
  508. //inputData["operatorName"] = operator_name
  509. //inputData["officeId"] = "001"
  510. //inputData["officeName"] = "血透室"
  511. //data["data"] = inputData
  512. //data["transType"] = "ec.query"
  513. //data["orgId"] = code
  514. //bytesData, _ := json.Marshal(data)
  515. //pCardInfo = bytesData
  516. ret2, _, _ := readCard.Call((uintptr)(unsafe.Pointer(&pBusiCardInfo[0])))
  517. fmt.Println(ret2)
  518. //fmt.Println(DeleteExtraSpace(string(bytesData)))
  519. fmt.Println(DeleteExtraSpace(string(pBusiCardInfo)))
  520. //fmt.Println(":", ConvertToString(DeleteExtraSpace(string(bytesData)), "gbk", "utf-8"))
  521. fmt.Println(":", ConvertToString(DeleteExtraSpace(string(pBusiCardInfo)), "gbk", "utf-8"))
  522. if ret2 != 0 {
  523. return "", ""
  524. }
  525. return DeleteExtraSpace(""), DeleteExtraSpace(string(pBusiCardInfo))
  526. }
  527. func IntPtr(n int) uintptr {
  528. return uintptr(n)
  529. }
  530. func StrPtr(s string) uintptr {
  531. return uintptr(unsafe.Pointer(syscall.StringBytePtr(s)))
  532. }
  533. type Charset string
  534. const (
  535. UTF8 = Charset("UTF-8")
  536. GB18030 = Charset("GB18030")
  537. )
  538. func ConvertToString(src string, srcCode string, tagCode string) string {
  539. srcCoder := mahonia.NewDecoder(srcCode)
  540. srcResult := srcCoder.ConvertString(src)
  541. tagCoder := mahonia.NewDecoder(tagCode)
  542. _, cdata, _ := tagCoder.Translate([]byte(srcResult), true)
  543. result := string(cdata)
  544. return result
  545. }
  546. func DeleteExtraSpace(s string) string {
  547. //删除字符串中的多余空格,有多个空格时,仅保留一个空格
  548. s1 := strings.Replace(s, " ", " ", -1) //替换tab为空格
  549. regstr := "\\s{2,}" //两个及两个以上空格的正则表达式
  550. reg, _ := regexp.Compile(regstr) //编译正则表达式
  551. s2 := make([]byte, len(s1)) //定义字符数组切片
  552. copy(s2, s1) //将字符串复制到切片
  553. spc_index := reg.FindStringIndex(string(s2)) //在字符串中搜索
  554. for len(spc_index) > 0 { //找到适配项
  555. s2 = append(s2[:spc_index[0]+1], s2[spc_index[1]:]...) //删除多余空格
  556. spc_index = reg.FindStringIndex(string(s2)) //继续在字符串中搜索
  557. }
  558. return string(s2)
  559. }
  560. func Remove0000(s string) string {
  561. str := make([]rune, 0, len(s))
  562. for _, v := range []rune(s) {
  563. if v == 0 {
  564. continue
  565. }
  566. str = append(str, v)
  567. }
  568. return string(str)
  569. }
  570. func saveJsLog(result string, request string, infno string, desc string, org_name string) {
  571. //org_id, _ := beego.AppConfig.Int64("org_id")
  572. //miConfig, _ := service.FindMedicalInsuranceInfo(org_id)
  573. dir := org_name + "日志"
  574. utils.Mkdir(dir)
  575. month := time.Unix(1557042972, 0).Format("1")
  576. year := time.Now().Format("2006")
  577. month = time.Now().Format("01")
  578. day := time.Now().Format("02")
  579. hour := time.Now().Format("15")
  580. min := time.Now().Format("04")
  581. sec := time.Now().Format("05")
  582. result_time := year + "-" + month + "-" + day + " " + hour + ":" + min + ":" + sec
  583. file := org_name + "_" + year + month + day + "_log"
  584. file_name := file + ".txt"
  585. file_path := org_name + "日志" + "/" + file_name
  586. exist, _ := utils.PathExists(file_path)
  587. if exist { //存在
  588. fmt.Println("存在")
  589. f, err := os.OpenFile(file_path, os.O_WRONLY, 0644)
  590. if err != nil {
  591. fmt.Println("read fail")
  592. }
  593. content := "\r\n" + "\r\n" + "\r\n" + result_time + " " + "【 " + desc + infno + "入参" + " 】:" + "\r\n" + request + "\r\n" + result_time + " " + "【 " + desc + infno + "出参" + " 】:" + "\r\n" + result
  594. n, _ := f.Seek(0, 2)
  595. _, err = f.WriteAt([]byte(content), n)
  596. } else { //不存在
  597. fmt.Println("文件不存在,创建文件")
  598. f, err := os.Create(org_name + "日志" + "/" + file_name)
  599. defer f.Close()
  600. if err != nil {
  601. } else {
  602. _, err = f.Write([]byte("记录日志"))
  603. }
  604. }
  605. }