sign_api_controller.go 33KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131
  1. package controllers
  2. import (
  3. "XT_New/models"
  4. "XT_New/service"
  5. "encoding/base64"
  6. "encoding/json"
  7. "fmt"
  8. "github.com/astaxie/beego"
  9. "github.com/jung-kurt/gofpdf"
  10. "github.com/mozillazg/go-pinyin"
  11. "io/ioutil"
  12. "time"
  13. )
  14. type SignApiController struct {
  15. BaseAuthAPIController
  16. }
  17. func SignApiRegistRouters() {
  18. //获取短信验证码
  19. beego.Router("/api/sign/getsign", &SignApiController{}, "Get:GetSign")
  20. //创建个人用户并实名
  21. beego.Router("/api/sign/createrusername", &SignApiController{}, "Get:CreateUserName")
  22. //创建企业用户并实名
  23. beego.Router("/api/sign/createenterpriserealname", &SignApiController{}, "Get:CreateEnterPriseRealName")
  24. //添加企业成员
  25. beego.Router("/api/sign/createuserid", &SignApiController{}, "Get:CreateUserId")
  26. //创建个人印章
  27. beego.Router("/api/sign/createpersionseal", &SignApiController{}, "Get:CreatePersionSeal")
  28. //上传文件创建创建合同
  29. beego.Router("/api/sign/createuploadpact", &SignApiController{}, "Get:CreateUploadPact")
  30. //添加合同签署人
  31. beego.Router("/api/sign/addcontractsignatory", &SignApiController{}, "Get:AddContractSignatory")
  32. //获取短信验证
  33. beego.Router("/api/sign/getverificationcode", &SignApiController{}, "Get:GetVerificationCode")
  34. //后台签署(返回签署文件)
  35. beego.Router("/api/sign/createbackstagesign", &SignApiController{}, "Get:CreateBackStageSign")
  36. //署意愿认证-短信验证
  37. beego.Router("/api/sign/totestelment", &SignApiController{}, "Get:CreateEnterprise")
  38. //测试PDF
  39. beego.Router("/api/sign/totestthrityment", &SignApiController{}, "Get:GetTestThrityMent")
  40. //CA企业认证
  41. beego.Router("/api/sign/saveenerprise", &SignApiController{}, "Post:SaveEnerprise")
  42. //
  43. beego.Router("/api/sign/getenerprisebyid", &SignApiController{}, "Get:GetEnerPriseById")
  44. beego.Router("/api/sign/getmobilecode", &SignApiController{}, "Get:GetMobileCode")
  45. beego.Router("/api/sign/getpersionenterprise", &SignApiController{}, "Post:GetPersionEnterPrise")
  46. beego.Router("/api/sign/getpersenterprisebyid", &SignApiController{}, "Get:GetPerseEnterPriseById")
  47. beego.Router("/api/device/sign/creterpersionseal", &SignApiController{}, "Get:CreateNewPersionSeal")
  48. beego.Router("/api/device/sign/createnewenterprise", &SignApiController{}, "Get:CreateNewEnterPrise")
  49. beego.Router("/api/device/contractid", &SignApiController{}, "Get:GetContractId")
  50. beego.Router("/api/device/endenterprise", &SignApiController{}, "Get:EndEnterPrise")
  51. beego.Router("/api/device/getenterprisedetail", &SignApiController{}, "Get:GetEnterPriseDetail")
  52. beego.Router("/api/device/uploadprintorder", &SignApiController{}, "Post:UploadPrintOrder")
  53. //sdk 版本
  54. beego.Router("/api/device/createqianshuusername", &SignApiController{}, "Post:CreateQianshuUserName")
  55. //发送消息
  56. beego.Router("/api/device/createskdsendinformation", &SignApiController{}, "Post:CreateSdkSendInformation")
  57. //删除
  58. beego.Router("/api/device/tosavepdfinformation", &SignApiController{}, "Get:SavePdfInformation")
  59. beego.Router("/api/device/tocheckinformation", &SignApiController{}, "Get:ToCheckInformation")
  60. }
  61. // 短信服务接口
  62. func (this *SignApiController) GetSign() {
  63. phone := this.GetString("phone")
  64. fmt.Println("phone", phone)
  65. var tempphone string
  66. tempphone = "13318464642"
  67. sign := service.GetSignNameByPhone(tempphone)
  68. this.ServeSuccessJSON(map[string]interface{}{
  69. "sign": sign,
  70. })
  71. return
  72. }
  73. type Result2121 struct {
  74. Phone string `json:"phone"`
  75. DisPlayName string `json:"dis_play_name"`
  76. Authentication string `json:"authentication"`
  77. TwAuthReq struct {
  78. OneLineAuth string `json:"oneLineAuth"`
  79. ApiAuthReq struct {
  80. RealName float64 `json:"real_name"`
  81. IdCardType string `json:"id_card_type"`
  82. IdCardNum string `json:"id_card_num"`
  83. BankCard string `json:"bank_card"`
  84. CodeNumber string `json:"code_number"`
  85. VerifyCode string `json:"verify_code"`
  86. } `json:"apiAuthReq"`
  87. } `json:"twAuthReq"`
  88. }
  89. type MapData struct {
  90. dat struct {
  91. Code float64 `json:"code"`
  92. data struct {
  93. userId string `json:"userId"`
  94. }
  95. }
  96. }
  97. // 创建个人用户并实名
  98. func (this *SignApiController) CreateUserName() {
  99. phone := this.GetString("phone")
  100. disPlayName := this.GetString("disPlayName")
  101. sign, userId := service.CreateUserName(phone, disPlayName)
  102. var dat map[string]interface{}
  103. if err := json.Unmarshal([]byte(sign), &dat); err == nil {
  104. fmt.Println(dat)
  105. } else {
  106. fmt.Println(err)
  107. }
  108. this.ServeSuccessJSON(map[string]interface{}{
  109. "sign": sign,
  110. "dat": dat,
  111. "userId": userId,
  112. })
  113. return
  114. }
  115. // 创建个人印章
  116. func (this *SignApiController) CreatePersionSeal() {
  117. user_id := this.GetString("user_id")
  118. person_seal_type, _ := this.GetInt64("person_seal_type")
  119. person_seal_name := this.GetString("person_seal_name")
  120. person_seal_base := this.GetString("person_seal_base")
  121. color, _ := this.GetInt64("color")
  122. alpha, _ := this.GetInt64("alpha")
  123. width, _ := this.GetInt64("width")
  124. height, _ := this.GetInt64("height")
  125. border, _ := this.GetInt64("border")
  126. font_type, _ := this.GetInt64("font_type")
  127. sign, personSealId := service.CreatePersionSeal(user_id, person_seal_type, person_seal_name, person_seal_base, color, alpha, width, height, border, font_type)
  128. var dat map[string]interface{}
  129. if err := json.Unmarshal([]byte(sign), &dat); err == nil {
  130. fmt.Println(dat)
  131. } else {
  132. fmt.Println(err)
  133. }
  134. this.ServeSuccessJSON(map[string]interface{}{
  135. "sign": sign,
  136. "dat": dat,
  137. "personSealId": personSealId,
  138. })
  139. return
  140. }
  141. func (this *SignApiController) CreateUploadPact() {
  142. contractcode := this.GetString("contractcode")
  143. contractname := this.GetString("contractname")
  144. signcount, _ := this.GetInt64("signcount")
  145. docname := this.GetString("docname")
  146. contractbase := this.GetString("contractbase")
  147. creator := this.GetString("creator")
  148. enterpriseid := this.GetString("enterpriseid")
  149. signvalidays, _ := this.GetInt64("signvalidays")
  150. sysncurl := this.GetString("sysncurl")
  151. asyncurl := this.GetString("asyncurl")
  152. sign := service.CreateUploadPact(contractcode, contractname, signcount, docname, contractbase, creator, enterpriseid, signvalidays, sysncurl, asyncurl)
  153. this.ServeSuccessJSON(map[string]interface{}{
  154. "sign": sign,
  155. })
  156. return
  157. }
  158. // 添加企业成员
  159. func (this *SignApiController) CreateUserId() {
  160. userId := this.GetString("userId")
  161. displayName := this.GetString("displayName")
  162. sign := service.CreateUserId(userId, displayName)
  163. this.ServeSuccessJSON(map[string]interface{}{
  164. "sign": sign,
  165. })
  166. return
  167. }
  168. func (this *SignApiController) CreateEnterPriseRealName() {
  169. enterprisename := this.GetString("enterprisename")
  170. sign := service.CreateEnterPriseRealName(enterprisename)
  171. this.ServeSuccessJSON(map[string]interface{}{
  172. "sign": sign,
  173. })
  174. return
  175. }
  176. // 添加合同签署人
  177. func (this *SignApiController) AddContractSignatory() {
  178. contractId := this.GetString("contractId")
  179. signers := this.GetString("signers")
  180. var newContract models.NewContract
  181. newContract.ContractId = "156001444267295949"
  182. sign := service.AddContractSignatory(contractId, signers, newContract)
  183. this.ServeSuccessJSON(map[string]interface{}{
  184. "sign": sign,
  185. })
  186. return
  187. }
  188. type Struct2401 struct {
  189. someTimestampStyle []someTimestampStyle
  190. }
  191. type someTimestampStyle struct {
  192. ControlsKey string
  193. Pattern string
  194. Color string
  195. }
  196. func (this *SignApiController) CreateBackStageSign() {
  197. contractId := this.GetString("contractId")
  198. signers := this.GetString("signers")
  199. sign := service.CreateBackStageSign(contractId, signers)
  200. this.ServeSuccessJSON(map[string]interface{}{
  201. "sign": sign,
  202. })
  203. return
  204. }
  205. func (this *SignApiController) GetVerificationCode() {
  206. sign := service.GetVerificationCode()
  207. this.ServeSuccessJSON(map[string]interface{}{
  208. "sign": sign,
  209. })
  210. return
  211. }
  212. func (this *SignApiController) CreateEnterprise() {
  213. sign := service.CreateEnterprise()
  214. this.ServeSuccessJSON(map[string]interface{}{
  215. "sign": sign,
  216. })
  217. return
  218. }
  219. func (this *SignApiController) GetTestThrityMent() {
  220. pdf := gofpdf.New("P", "mm", "A4", "")
  221. pdf.AddPage()
  222. pdf.SetFont("Arial", "B", 16)
  223. pdf.Cell(40, 10, "Hello, World!")
  224. pdf.OutputFileAndClose("output.pdf")
  225. this.ServeSuccessJSON(map[string]interface{}{
  226. "sign": "msg",
  227. })
  228. return
  229. }
  230. func loremList() []string {
  231. return []string{
  232. "我爱你中国" +
  233. "tempor incididunt ut labore et dolore magna aliqua.",
  234. "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut " +
  235. "aliquip ex ea commodo consequat.",
  236. "Duis aute irure dolor in reprehenderit in voluptate velit esse cillum " +
  237. "dolore eu fugiat nulla pariatur.",
  238. "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui " +
  239. "officia deserunt mollit anim id est laborum.",
  240. }
  241. }
  242. func (this *SignApiController) SaveEnerprise() {
  243. orgId := this.GetAdminUserInfo().CurrentOrgId
  244. creater := this.GetAdminUserInfo().AdminUser.Id
  245. dataBody := make(map[string]interface{}, 0)
  246. err := json.Unmarshal(this.Ctx.Input.RequestBody, &dataBody)
  247. fmt.Println("err", err)
  248. id := int64(dataBody["id"].(float64))
  249. org_type := int64(dataBody["org_type"].(float64))
  250. enterprise_name := dataBody["enterprise_name"].(string)
  251. code := dataBody["code"].(string)
  252. org_code := dataBody["org_code"].(string)
  253. legal_person_name := dataBody["legal_person_name"].(string)
  254. legal_id_card_num := dataBody["legal_id_card_num"].(string)
  255. legal_phone := dataBody["legal_phone"].(string)
  256. enterprise := models.XtDeviceEnterprise{
  257. ID: id,
  258. UserOrgId: orgId,
  259. OrgType: org_type,
  260. EnterpriseName: enterprise_name,
  261. Code: code,
  262. OrgCode: org_code,
  263. LegalPersonName: legal_person_name,
  264. LegalIdCardNum: legal_id_card_num,
  265. LegalPhone: legal_phone,
  266. Creater: creater,
  267. Ctime: time.Now().Unix(),
  268. Mtime: 0,
  269. Enterpriseid: "",
  270. Status: 1,
  271. }
  272. service.SaveEnerPrise(enterprise)
  273. //查找该机构有没有认证信息
  274. lastenterprise, _ := service.GetEnterPriseByUserOrgId(orgId)
  275. //调用企业认证接口
  276. if lastenterprise.ID > 0 {
  277. enterPrise, enterpriseid := service.CreateNewEnterPriseRealName(lastenterprise)
  278. fmt.Println("enterprise2ooo2oo2o2o2o", enterPrise)
  279. updateEnterprise := models.XtDeviceEnterprise{
  280. ID: enterprise.ID,
  281. UserOrgId: orgId,
  282. OrgType: org_type,
  283. EnterpriseName: enterprise_name,
  284. Code: code,
  285. OrgCode: org_code,
  286. LegalPersonName: legal_person_name,
  287. LegalIdCardNum: legal_id_card_num,
  288. LegalPhone: legal_phone,
  289. Creater: creater,
  290. Ctime: time.Now().Unix(),
  291. Mtime: 0,
  292. Enterpriseid: enterpriseid,
  293. Status: 1,
  294. }
  295. service.SaveEnerPrise(updateEnterprise)
  296. this.ServeSuccessJSON(map[string]interface{}{
  297. "enterPrise": enterPrise,
  298. })
  299. return
  300. }
  301. }
  302. func (this *SignApiController) GetEnerPriseById() {
  303. orgId := this.GetAdminUserInfo().CurrentOrgId
  304. enterPrise, _ := service.GetEnterPriseByUserOrgId(orgId)
  305. this.ServeSuccessJSON(map[string]interface{}{
  306. "enterPrise": enterPrise,
  307. })
  308. return
  309. }
  310. func (this *SignApiController) GetMobileCode() {
  311. phone := this.GetString("phone")
  312. sign, orderNumber := service.GetNewSignNameByPhone(phone)
  313. this.ServeSuccessJSON(map[string]interface{}{
  314. "sign": sign,
  315. "orderNumber": orderNumber,
  316. })
  317. return
  318. }
  319. func (this *SignApiController) GetPersionEnterPrise() {
  320. orgId := this.GetAdminUserInfo().CurrentOrgId
  321. creater := this.GetAdminUserInfo().AdminUser.Id
  322. dataBody := make(map[string]interface{}, 0)
  323. err := json.Unmarshal(this.Ctx.Input.RequestBody, &dataBody)
  324. fmt.Println("err", err)
  325. id := int64(dataBody["id"].(float64))
  326. admin_user_id := int64(dataBody["admin_user_id"].(float64))
  327. code := dataBody["code"].(string)
  328. display_name := dataBody["display_name"].(string)
  329. id_card_num := dataBody["id_card_num"].(string)
  330. phone := dataBody["phone"].(string)
  331. enterprise := models.XtDevicePersonEnterprise{
  332. ID: id,
  333. AdminUserId: admin_user_id,
  334. DisplayName: display_name,
  335. Phone: phone,
  336. IdCardNum: id_card_num,
  337. UserOrgId: orgId,
  338. Status: 1,
  339. Creater: creater,
  340. Ctime: time.Now().Unix(),
  341. Mtime: 0,
  342. UserId: "",
  343. }
  344. service.SavePersonEnterPrise(enterprise)
  345. lastEnterPrise, _ := service.GetLastPersonEnterPrise(admin_user_id, orgId)
  346. _, orderNumber := service.GetNewSignNameByPhone(phone)
  347. personEnterPrse, UserId := service.CreateNewUserName(lastEnterPrise.Phone, lastEnterPrise.DisplayName, code, orderNumber, lastEnterPrise.IdCardNum)
  348. firstenterprise := models.XtDevicePersonEnterprise{
  349. ID: id,
  350. AdminUserId: admin_user_id,
  351. DisplayName: display_name,
  352. Phone: phone,
  353. IdCardNum: id_card_num,
  354. UserOrgId: orgId,
  355. Status: 1,
  356. Creater: creater,
  357. Ctime: time.Now().Unix(),
  358. Mtime: 0,
  359. UserId: UserId,
  360. }
  361. service.SavePersonEnterPrise(firstenterprise)
  362. this.ServeSuccessJSON(map[string]interface{}{
  363. "personEnterPrse": personEnterPrse,
  364. })
  365. return
  366. }
  367. func (this *SignApiController) GetPerseEnterPriseById() {
  368. orgId := this.GetAdminUserInfo().CurrentOrgId
  369. admin_user_id, _ := this.GetInt64("admin_user_id")
  370. lastPerson, _ := service.GetLastPersonEnterPrise(admin_user_id, orgId)
  371. this.ServeSuccessJSON(map[string]interface{}{
  372. "lastPerson": lastPerson,
  373. })
  374. return
  375. }
  376. func (this *SignApiController) CreateNewPersionSeal() {
  377. orgId := this.GetAdminUserInfo().CurrentOrgId
  378. admin_user_id, _ := this.GetInt64("admin_user_id")
  379. creater := this.GetAdminUserInfo().AdminUser.Id
  380. userName := service.GetLastAdminUserName(admin_user_id, orgId)
  381. //查询医护是否完成认证
  382. lastPerson, _ := service.GetLastPersonEnterPrise(admin_user_id, orgId)
  383. if lastPerson.ID > 0 {
  384. this.ServeDynamicFailJsonSend("已完成认证,无需再次认证")
  385. return
  386. }
  387. if lastPerson.ID == 0 {
  388. //去认证
  389. personSeal, sealBase64 := service.CreateSKDPersionSeal(lastPerson.UserId, userName)
  390. fmt.Println("sealBase64", sealBase64)
  391. enterprise := models.XtDevicePersonEnterprise{
  392. AdminUserId: admin_user_id,
  393. DisplayName: "",
  394. Phone: "",
  395. IdCardNum: "",
  396. UserOrgId: orgId,
  397. Status: 1,
  398. Creater: creater,
  399. Ctime: time.Now().Unix(),
  400. Mtime: 0,
  401. UserId: "",
  402. Personsealid: "",
  403. Sealid: "",
  404. UserName: userName,
  405. Sealbase64: sealBase64,
  406. }
  407. service.CreateEnterpriseUserName(enterprise)
  408. this.ServeSuccessJSON(map[string]interface{}{
  409. "personSeal": personSeal,
  410. })
  411. return
  412. }
  413. }
  414. func (this *SignApiController) CreateNewEnterPrise() {
  415. //orgId := this.GetAdminUserInfo().CurrentOrgId
  416. //
  417. //admin_user_id, _ := this.GetInt64("admin_user_id")
  418. //
  419. //enterPrise, _ := service.GetEnterPriseByUserOrgId(orgId)
  420. //fmt.Println("地址日活", enterPrise.Enterpriseid)
  421. //lastPerson, _ := service.GetLastPersonEnterPrise(admin_user_id, orgId)
  422. //
  423. //newEnterPrise, sealId := service.CreateNewEnterPrise(enterPrise.Enterpriseid, lastPerson.UserId)
  424. //
  425. //fmt.Println("newEnterPrise",newEnterPrise)
  426. //service.UpdatePersonEnterPrise(lastPerson.ID, sealId)
  427. newEnterPrise, _ := service.CreateSDKEnterPrise()
  428. //var url string
  429. //url = "http://localhost:8890/sdk/seal/createEnterpriseSeal"
  430. //appId := beego.AppConfig.String("sign_appid")
  431. //
  432. //serviceKye := beego.AppConfig.String("serviceKye")
  433. //
  434. //serviceCode := beego.AppConfig.String("serviceCode")
  435. //
  436. //maprequest := make(map[string]interface{})
  437. //
  438. //maprequest["sealType"] = 1
  439. //maprequest["enterpriseName"] = "深圳伊森时光科技有限公司"
  440. //maprequest["horizontalText"] = "财务专用章"
  441. //
  442. //byterequest, _ := json.Marshal(maprequest)
  443. //reader := bytes.NewReader(byterequest)
  444. //
  445. //signatureStr, _ := service.GenerateHMACSHA1SignatureTwo(maprequest, serviceKye, serviceCode)
  446. //fmt.Println("signatureStr", signatureStr)
  447. //request, err := http.NewRequest("POST", url, reader)
  448. //
  449. //fmt.Println("request23222222222222222", request)
  450. //if err != nil {
  451. // fmt.Println(err.Error())
  452. //}
  453. //
  454. //request.Header.Set("appId", appId)
  455. //request.Header.Set("serviceCode", serviceCode)
  456. //request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  457. //request.Header.Set("Content-Signature", signatureStr)
  458. //client := http.Client{}
  459. //
  460. //resp, err := client.Do(request)
  461. //if err != nil {
  462. // fmt.Println(err.Error())
  463. //
  464. //}
  465. //respBytes, err := ioutil.ReadAll(resp.Body)
  466. //if err != nil {
  467. // fmt.Println(err.Error())
  468. //
  469. //}
  470. //str := string(respBytes)
  471. //fmt.Println("strwowowowowo", str)
  472. //
  473. //var respJSON map[string]interface{}
  474. //if err := json.Unmarshal([]byte(string(respBytes)), &respJSON); err != nil {
  475. // utils.ErrorLog("接口返回数据解析JSON失败: %v", err)
  476. //}
  477. this.ServeSuccessJSON(map[string]interface{}{
  478. "newEnterPrise": newEnterPrise,
  479. })
  480. return
  481. }
  482. func (this *SignApiController) GetContractId() {
  483. sign := service.GetContractId()
  484. this.ServeSuccessJSON(map[string]interface{}{
  485. "sign": sign,
  486. })
  487. return
  488. }
  489. func (this *SignApiController) EndEnterPrise() {
  490. sign := service.EndEnterPrise()
  491. this.ServeSuccessJSON(map[string]interface{}{
  492. "sign": sign,
  493. })
  494. return
  495. }
  496. func (this *SignApiController) GetEnterPriseDetail() {
  497. sign, url := service.GetEnterPriseDetail()
  498. this.ServeSuccessJSON(map[string]interface{}{
  499. "sign": sign,
  500. "url": url,
  501. })
  502. return
  503. }
  504. func (this *SignApiController) UploadPrintOrder() {
  505. fmt.Println("WOOWOWOWOWOWOWOWOWOWOWWOOWOWWO")
  506. list, _ := service.GetAllPatientNew(10579)
  507. for _, item := range list {
  508. hans := item.Name // 要转换的汉字字符串
  509. // 创建一个拼音转换器
  510. p := pinyin.NewArgs()
  511. // 将汉字转为拼音
  512. pinyinSlice := pinyin.Pinyin(hans, p)
  513. // 输出拼音
  514. fmt.Println("Pinyin:", pinyinSlice)
  515. // 获取首字母
  516. firstLetter := ""
  517. for _, py := range pinyinSlice {
  518. if len(py) > 0 {
  519. firstLetter += string(py[0][0])
  520. }
  521. }
  522. item.FirstLetter = firstLetter
  523. service.UpdatePatientNew(item.ID, item.FirstLetter)
  524. // 输出首字母
  525. //fmt.Println("First Letter:", firstLetter)
  526. }
  527. //pdf := gofpdf.New("P", "mm", "A4", "")
  528. //pdf.AddPage()
  529. //pdf.Text(5, 10, "血液净化治疗记录单")
  530. //
  531. //pdf.AddUTF8Font("simfang", "", "D:/go/src/pkg/mod/github.com/jung-kurt/gofpdf@v1.16.2/font/simfang.ttf")
  532. //pdf.SetFont("simfang", "", 20)
  533. //var title = "血液透析(滤过)记录表单"
  534. ////表格居中显示
  535. //pdf.Text(70, 10, title)
  536. //wd := pdf.GetStringWidth(title) + 100
  537. //fmt.Println("wd", wd)
  538. //pdf.SetY(100) //先要设置 Y,然后再设置 X。否则,会导致 X 失效
  539. //pdf.SetX((210 - wd) / 2) //水平居中的算法
  540. //var numuber = "张三"
  541. ////表格居中显示
  542. //pdf.SetFont("", "", 14) // 设置加粗字体和字号
  543. //pdf.Text(10, 20, "姓名:"+numuber)
  544. //pdf.SetFont("", "", 14) // 设置加粗字体和字号
  545. //pdf.Text(35, 20, "性别:"+"男")
  546. //pdf.SetFont("", "", 14) // 设置正常字体和字号
  547. //pdf.Text(60, 20, "年龄:"+"18")
  548. //pdf.SetFont("", "", 14) // 设置正常字体和字号
  549. //pdf.Text(90, 20, "门诊:"+"住院")
  550. //pdf.SetFont("", "", 14) // 设置正常字体和字号
  551. //pdf.Text(120, 20, "病区:"+"A区")
  552. //pdf.SetFont("", "", 14) // 设置正常字体和字号
  553. //pdf.Text(150, 20, "床号:"+"1号")
  554. //pdf.SetFont("", "", 14) // 设置正常字体和字号
  555. //pdf.Text(180, 20, "透析号:")
  556. //pdf.SetFont("", "", 14) // 设置正常字体和字号
  557. //pdf.Text(210, 20, "住院号/门诊号:")
  558. //pdf.SetFont("", "", 14) // 设置正常字体和字号
  559. ////表格居中显示
  560. //pdf.SetFont("", "", 14) // 设置加粗字体和字号
  561. //pdf.Text(10, 30, "入科方式:"+numuber)
  562. //pdf.SetFont("", "", 14) // 设置加粗字体和字号
  563. //pdf.Text(60, 30, "诊断:")
  564. //
  565. //pdf.AddUTF8Font("simfang", "", "D:/go/src/pkg/mod/github.com/jung-kurt/gofpdf@v1.16.2/font/simfang.ttf")
  566. //pdf.SetFont("simfang", "", 16) // 设置字体、字号
  567. //pdf.SetFillColor(200, 200, 200)
  568. ////// 设置起始位置
  569. //var x = 10.0
  570. //var y = 40.0
  571. //pdf.SetXY(x, y)
  572. //// 设置填充颜色
  573. //pdf.CellFormat(200, 15, "透析前情况", "1", 0, "CM", false, 0, "") // 使用CellFormat()方法创建表格单元格
  574. //param1: 单元格的宽,为0时表示一行,单位根据new()里面设置的来
  575. //param2: 单元格的高,不能为0,单位根据new()里面设置的来
  576. //param3: 单元格内容
  577. //param4: 边框样式,一个空字符串表示无边框,“1”表示全边框,一个或多个“L”,“T”,“R”和“B”分别表示边界左,上,右,下
  578. //param5: 表示调用后当前位置的位置。可能的值为0,接着当前行继续,1换行,2目前没有试过
  579. //param6: 字体的位置,水平对齐包括"L", “C"或"R”(左,中,右)。垂直对齐由包含控制"T", “M”, “B"或"A”(上,中,下,基线),可以组合,比如说LT,CM等等
  580. //param7: 是否填充单元格,需要调用SetFillColor()方法.默认false
  581. //param8: 内部超链接,没用过
  582. //param9: 超链接,没用过
  583. //pdf.AddUTF8Font("simfang", "", "D:/go/src/pkg/mod/github.com/jung-kurt/gofpdf@v1.16.2/font/simfang.ttf")
  584. //pdf.SetFont("simfang", "", 8) // 设置字体、字号
  585. //pdf.SetFillColor(200, 200, 200) // 设置填充颜色
  586. //
  587. //// 设置起始位置
  588. //var x = 10.0
  589. //var y = 40.0
  590. ////创建8行2列的表格
  591. //
  592. //for j := 0; j < 1; j++ {
  593. // // 填充每个单元格的内容
  594. // pdf.SetXY(x, y) // 设置当前位置
  595. // pdf.CellFormat(20, 15, "时间", "1", 0, "CM", false, 0, "") // 使用CellFormat()方法创建表格单元格
  596. // pdf.CellFormat(20, 15, "血压(mmHg)", "1", 0, "CM", false, 0, "")
  597. // pdf.CellFormat(20, 15, "脉搏(次/分)", "1", 0, "CM", false, 0, "")
  598. // pdf.CellFormat(20, 15, "呼吸(次/分)", "1", 0, "CM", false, 0, "")
  599. // pdf.CellFormat(20, 15, "血流量(ml/min)", "1", 0, "CM", false, 0, "")
  600. // pdf.CellFormat(20, 15, "静脉压(mmHg)", "1", 0, "CM", false, 0, "")
  601. // pdf.CellFormat(20, 15, "跨膜压(mmHg)", "1", 0, "CM", false, 0, "")
  602. // pdf.CellFormat(20, 15, "透析液温(℃)", "1", 0, "CM", false, 0, "")
  603. // pdf.CellFormat(20, 15, "钠浓度(mmol/L)", "1", 0, "CM", false, 0, "")
  604. // pdf.CellFormat(20, 15, "超滤量(ml) ", "1", 0, "CM", false, 0, "")
  605. // pdf.CellFormat(35, 15, "病情变化及处理", "1", 0, "CM", false, 0, "")
  606. //
  607. // y += 15 // 下一行起始位置的y坐标增加60(单元格高度)
  608. //}
  609. //for j := 0; j < 1; j++ {
  610. // // 填充每个单元格的内容
  611. // pdf.SetXY(x, y) // 设置当前位置
  612. // pdf.CellFormat(20, 15, "13:57", "1", 0, "CM", false, 0, "") // 使用CellFormat()方法创建表格单元格
  613. // pdf.CellFormat(20, 15, "120/90", "1", 0, "CM", false, 0, "")
  614. // pdf.CellFormat(20, 15, "64", "1", 0, "CM", false, 0, "")
  615. // pdf.CellFormat(20, 15, "100", "1", 0, "CM", false, 0, "")
  616. // pdf.CellFormat(20, 15, "100", "1", 0, "CM", false, 0, "")
  617. // pdf.CellFormat(20, 15, "100", "1", 0, "CM", false, 0, "")
  618. // pdf.CellFormat(20, 15, "90", "1", 0, "CM", false, 0, "")
  619. // pdf.CellFormat(20, 15, "36.5", "1", 0, "CM", false, 0, "")
  620. // pdf.CellFormat(20, 15, "26", "1", 0, "CM", false, 0, "")
  621. // pdf.CellFormat(20, 15, "100", "1", 0, "CM", false, 0, "")
  622. // pdf.CellFormat(35, 15, "及时九嶷山", "1", 0, "CM", false, 0, "")
  623. //
  624. // y += 15 // 下一行起始位置的y坐标增加60(单元格高度)
  625. //}
  626. //x += 200.0 // 下一列起始位置的x坐标增加190(单元格宽度)
  627. //y = 10.0 // 行起始位置的y坐标重置为10
  628. //
  629. //pdf.Ln(2)
  630. //if err := pdf.OutputFileAndClose("6.pdf"); err != nil {
  631. // panic(err.Error())
  632. //}
  633. // 此处可以继续绘制表格的其他部分,例如内容行等。
  634. // ...
  635. // 保存PDF文档到文件
  636. //err := pdf.OutputFileAndClose("treatment_sheet_with_header.pdf")
  637. //if err != nil {
  638. // panic(err)
  639. //}
  640. this.ServeSuccessJSON(map[string]interface{}{
  641. //"sign": information,
  642. //"pdfBase64": pdfBase64,
  643. //"name": name,
  644. })
  645. }
  646. func (this *SignApiController) CreateQianshuUserName() {
  647. admin_user_id, _ := this.GetInt64("admin_user_id")
  648. orgId := this.GetAdminUserInfo().CurrentOrgId
  649. userName := service.GetLastAdminUserName(admin_user_id, orgId)
  650. idCardNumber := service.GetLastAdminUserIdCardNumber(admin_user_id, orgId)
  651. adminRole, _ := service.GetMobile(admin_user_id)
  652. //查询该医护人员是否已经签署了
  653. lastPerson, _ := service.GetLastPersonEnterPrise(admin_user_id, orgId)
  654. if len(lastPerson.UserId) > 0 {
  655. this.ServeDynamicFailJsonSend("已完成签署,无需再次签署")
  656. return
  657. }
  658. if len(lastPerson.UserId) == 0 {
  659. //去签署
  660. sign, userId := service.CreateQianshuUserName(userName, adminRole.Mobile, idCardNumber)
  661. err := service.UpdatePersionEnterPrise(lastPerson.ID, userId)
  662. fmt.Println(err)
  663. this.ServeSuccessJSON(map[string]interface{}{
  664. "sign": sign,
  665. "userId": userId,
  666. })
  667. }
  668. }
  669. func (this *SignApiController) CreateSdkSendInformation() {
  670. information, orderId := service.CreateSdkSendInformation()
  671. this.ServeSuccessJSON(map[string]interface{}{
  672. "information": information,
  673. "orderId": orderId,
  674. })
  675. }
  676. func (this *SignApiController) SavePdfInformation() {
  677. var name string
  678. information, pdfBase64 := service.SavePdfInformation(name)
  679. informationOne := service.ToCheckInformation(pdfBase64)
  680. maprequest := make(map[string]interface{})
  681. Receiver := make(map[string]interface{})
  682. //业务单号
  683. maprequest["orderId"] = "13318464642"
  684. maprequest["signTitle"] = "举报合同"
  685. //file := "C:/Users/28169/Desktop/2.pdf"
  686. file := "/swspan/gopath/src/XT_New/static/6.pdf"
  687. fileBytes, _ := ioutil.ReadFile(file) // 读取file
  688. contractBase64 := base64.StdEncoding.EncodeToString(fileBytes) // 加密成base64字符串
  689. //文件获取方式
  690. maprequest["fileType"] = 1
  691. maprequest["pdfBase64"] = contractBase64
  692. //合同内容
  693. maprequest["fileContent"] = contractBase64
  694. //签署用户人ID
  695. maprequest["userId"] = "JMO9U8JH4TN8E3QOI0GUVUF2"
  696. //业务单号
  697. maprequest["receiver"] = Receiver
  698. //签署人账号
  699. Receiver["account"] = "13318464642"
  700. //签署个人类型 1.个人 2.企业
  701. Receiver["signerType"] = 1
  702. //签署人姓名
  703. Receiver["realName "] = "马文强"
  704. // 证件类型
  705. Receiver["cardType"] = 0
  706. //证件编码
  707. Receiver["cardNumber"] = "430526199408156511"
  708. stepStamper := make(map[string]interface{})
  709. keywordSignControls := make([]map[string]interface{}, 0)
  710. //预冲者样式
  711. inputArrOne := make(map[string]interface{})
  712. inputArrOne["sealName"] = "1"
  713. inputArrOne["keyword"] = "医生签名"
  714. inputArrOne["pages"] = "0"
  715. inputArrOne["offsetX"] = "100"
  716. inputArrOne["offsetY"] = "100"
  717. keywordSignControls = append(keywordSignControls, inputArrOne)
  718. //穿刺者样式
  719. //inputArr := make(map[string]interface{})
  720. //inputArr["sealName"] = "2"
  721. //inputArr["keyword"] = "治疗护士"
  722. //inputArr["pages"] = "1"
  723. //inputArr["offsetX"] = "100"
  724. //inputArr["offsetY"] = "0"
  725. //
  726. //keywordSignControls = append(keywordSignControls, inputArr)
  727. //
  728. ////上机者
  729. //inputArrSix := make(map[string]interface{})
  730. //inputArrSix["sealName"] = "3"
  731. //inputArrSix["keyword"] = "核对护士"
  732. //inputArrSix["pages"] = "1"
  733. //inputArrSix["offsetX"] = "100"
  734. //inputArrSix["offsetY"] = "0"
  735. //
  736. //keywordSignControls = append(keywordSignControls, inputArrSix)
  737. //
  738. //stepStamper["keywordSignControls"] = keywordSignControls
  739. //
  740. ////医生签名
  741. //inputArrSeven := make(map[string]interface{})
  742. //inputArrSeven["sealName"] = "4"
  743. //inputArrSeven["keyword"] = "医生签名"
  744. //inputArrSeven["pages"] = "1"
  745. //inputArrSeven["offsetX"] = "100"
  746. //inputArrSeven["offsetY"] = "0"
  747. //
  748. //keywordSignControls = append(keywordSignControls, inputArrSeven)
  749. //
  750. //stepStamper["keywordSignControls"] = keywordSignControls
  751. //crossSignControls := make([]map[string]interface{}, 0)
  752. //
  753. //inputArrTwo := make(map[string]interface{})
  754. //inputArrTwo["sealName"] = "1"
  755. //inputArrTwo["positionX"] = "0"
  756. //inputArrTwo["positionY"] = "0"
  757. //inputArrTwo["pages"] = "0"
  758. //crossSignControls = append(crossSignControls, inputArrTwo)
  759. //
  760. //stepStamper["crossSignControls"] = crossSignControls
  761. //
  762. xySignControls := make([]map[string]interface{}, 0)
  763. inputArrThree := make(map[string]interface{})
  764. inputArrThree["sealName"] = "1"
  765. inputArrThree["positionX"] = "100"
  766. inputArrThree["positionY"] = "0"
  767. inputArrThree["pages"] = "0"
  768. xySignControls = append(xySignControls, inputArrThree)
  769. stepStamper["xySignControls"] = xySignControls
  770. maprequest["stepStamper"] = stepStamper
  771. seals := make([]map[string]interface{}, 0)
  772. //预冲者
  773. sealImagesList := make(map[string]interface{})
  774. fileOne := "/swspan/gopath/src/XT_New/static/huangzihui.jpg"
  775. fileBytesOne, _ := ioutil.ReadFile(fileOne) // 读取file
  776. contractBase64One := base64.StdEncoding.EncodeToString(fileBytesOne) // 加密成base64字符串
  777. sealImagesList["sealBase64"] = contractBase64One
  778. //控制签名的大小
  779. sealImagesList["width"] = "50"
  780. sealImagesList["height"] = "50"
  781. sealImagesList["verticalAlign"] = "middle"
  782. sealTextsList := make(map[string]interface{})
  783. sealTextsList["text"] = "2023年8月8日"
  784. sealTextsList["fontSize"] = "100"
  785. sealTextsList["fontColor"] = "#333333"
  786. sealTextsList["isTextArea"] = true
  787. sealTextsList["textAlign"] = 0
  788. sealTextsList["width"] = 150
  789. sealTextsList["height"] = 20
  790. sealsObj := make(map[string]interface{})
  791. sealsObj["sealWidth"] = "150"
  792. sealsObj["sealHeight"] = "150"
  793. sealsObj["sealName"] = "1"
  794. sealsObj["sealImage"] = sealImagesList
  795. sealsObj["sealText"] = sealTextsList
  796. seals = append(seals, sealsObj)
  797. //穿刺者
  798. //sealImagesListOne := make(map[string]interface{})
  799. //
  800. //fileTwo := "/swspan/gopath/src/XT_New/static/huangjunji.jpg"
  801. //
  802. //fileBytesTwo, _ := ioutil.ReadFile(fileTwo) // 读取file
  803. //
  804. //contractBase64Two := base64.StdEncoding.EncodeToString(fileBytesTwo) // 加密成base64字符串
  805. //sealImagesListOne["sealBase64"] = contractBase64Two
  806. ////控制签名的大小
  807. //sealImagesListOne["width"] = "50"
  808. //sealImagesListOne["height"] = "50"
  809. //sealImagesListOne["verticalAlign"] = "middle"
  810. //
  811. //sealTextsListOne := make(map[string]interface{})
  812. //sealTextsListOne["text"] = "2023年8月8日"
  813. //sealTextsListOne["fontSize"] = "100"
  814. //sealTextsListOne["fontColor"] = "100"
  815. //sealTextsListOne["isTextArea"] = true
  816. //sealTextsListOne["textAlign"] = 0
  817. //sealTextsListOne["width"] = 150
  818. //sealTextsListOne["height"] = 20
  819. //
  820. //sealsObjOne := make(map[string]interface{})
  821. //
  822. //sealsObjOne["sealWidth"] = "150"
  823. //sealsObjOne["sealHeight"] = "150"
  824. //sealsObjOne["sealName"] = "2"
  825. //sealsObjOne["sealImage"] = sealImagesListOne
  826. //sealsObjOne["sealText"] = sealTextsListOne
  827. //seals = append(seals, sealsObjOne)
  828. //间隔签名
  829. //上机者
  830. //sealImagesListTwo := make(map[string]interface{})
  831. //fileThree := "/swspan/gopath/src/XT_New/static/jianfeixia.jpg"
  832. //fileBytesThree, _ := ioutil.ReadFile(fileThree) // 读取file
  833. //contractBase64Three := base64.StdEncoding.EncodeToString(fileBytesThree) // 加密成base64字符串
  834. //sealImagesListTwo["sealBase64"] = contractBase64Three
  835. ////控制签名的大小
  836. //sealImagesListTwo["width"] = "50"
  837. //sealImagesListTwo["height"] = "50"
  838. //sealImagesListTwo["verticalAlign"] = "middle"
  839. //
  840. //sealTextsListTwo := make(map[string]interface{})
  841. //sealTextsListTwo["text"] = "2023年8月8日"
  842. //sealTextsListTwo["fontSize"] = "100"
  843. //sealTextsListTwo["fontColor"] = "100"
  844. //sealTextsListTwo["isTextArea"] = true
  845. //sealTextsListTwo["textAlign"] = 0
  846. //sealTextsListTwo["width"] = 150
  847. //sealTextsListTwo["height"] = 20
  848. //
  849. //sealsObjTwo := make(map[string]interface{})
  850. //
  851. //sealsObjTwo["sealWidth"] = "150"
  852. //sealsObjTwo["sealHeight"] = "150"
  853. //sealsObjTwo["sealName"] = "3"
  854. //sealsObjTwo["sealImage"] = sealImagesListTwo
  855. //sealsObjTwo["sealText"] = sealTextsListTwo
  856. //seals = append(seals, sealsObjTwo)
  857. //医生签名
  858. //sealImagesListThree := make(map[string]interface{})
  859. //fileFour := "/swspan/gopath/src/XT_New/static/jianfeixia.jpg"
  860. //fileBytesFour, _ := ioutil.ReadFile(fileFour) // 读取file
  861. //contractBase64Tour := base64.StdEncoding.EncodeToString(fileBytesFour) // 加密成base64字符串
  862. //sealImagesListThree["sealBase64"] = contractBase64Tour
  863. ////控制签名的大小
  864. //sealImagesListThree["width"] = "50"
  865. //sealImagesListThree["height"] = "50"
  866. //sealImagesListThree["verticalAlign"] = "middle"
  867. //
  868. //sealTextsListThree := make(map[string]interface{})
  869. //sealTextsListThree["text"] = "2023年8月8日"
  870. //sealTextsListThree["fontSize"] = "100"
  871. //sealTextsListThree["fontColor"] = "100"
  872. //sealTextsListThree["isTextArea"] = true
  873. //sealTextsListThree["textAlign"] = 0
  874. //sealTextsListThree["width"] = 150
  875. //sealTextsListThree["height"] = 20
  876. //
  877. //sealsObjThree := make(map[string]interface{})
  878. //
  879. //sealsObjThree["sealWidth"] = "150"
  880. //sealsObjThree["sealHeight"] = "150"
  881. //sealsObjThree["sealName"] = "4"
  882. //sealsObjThree["sealImage"] = sealImagesListThree
  883. //sealsObjThree["sealText"] = sealTextsListThree
  884. //seals = append(seals, sealsObjThree)
  885. maprequest["seals"] = seals
  886. maprequest["isUserWishes"] = true
  887. maprequest["phone"] = "13318464642"
  888. maprequest["verificationCode"] = "18888888888"
  889. this.ServeSuccessJSON(map[string]interface{}{
  890. "information": information,
  891. "orderId": pdfBase64,
  892. "informationOne": informationOne,
  893. "maprequest": maprequest,
  894. })
  895. }
  896. func (this *SignApiController) ToCheckInformation() {
  897. var name string
  898. information, pdfBase64 := service.SavePdfInformation(name)
  899. informationOne := service.ToCheckInformation(pdfBase64)
  900. this.ServeSuccessJSON(map[string]interface{}{
  901. "information": information,
  902. "informationOne": informationOne,
  903. })
  904. }