package suixing import ( "encoding/json" "fmt" "github.com/gin-gonic/gin" "github.com/tidwall/gjson" "insure/global" "insure/model" "insure/service" "insure/third_party/signer" "insure/third_party/suixing" "io" ) func Create(c *gin.Context) { data := map[string]interface{}{} result := map[string]interface{}{ "code": 200, "msg": "成功", "data": data, } body, _ := io.ReadAll(c.Request.Body) if body != nil { fmt.Printf("body:%s\n", body) } var param suixing.CreateParam err := json.Unmarshal(body, ¶m) if err != nil { result["code"] = 201 result["msg"] = "参数异常:" + err.Error() c.JSON(200, result) return } fmt.Println(param) dataStr := gjson.Get(string(body), "data") if !suixing.SuixingApi.Verify(param.CommonParam, dataStr.String()) { result["code"] = 301 result["msg"] = "验签失败" c.JSON(200, result) return } order, err := service.OrderService.CreateOrder(param) if err != nil { result["code"] = 202 result["msg"] = err.Error() c.JSON(200, result) return } data["order_sn"] = order.OrderNo data["url"] = global.Config.Server.Domain + "/tender?token=" + order.Token result["data"] = data c.JSON(200, result) return } func Surrend(c *gin.Context) { data := map[string]interface{}{} result := map[string]interface{}{ "code": 200, "msg": "成功", "data": data, } isTest := c.DefaultQuery("isTest", "0") body, _ := io.ReadAll(c.Request.Body) if body != nil { fmt.Printf("surrend body:%s\n", body) } if isTest == "1" { body = []byte("{\"requestid\":\"c11cfbe1944a40ad847b396ff5261291\",\"appid\":\"zijin\",\"timestamp\":\"1721113249\",\"version\":\"1.0.0\",\"sign\":\"744dfc008c1955f94188450ac24c71aaf3f74bf2\",\"data\":{\"policyNo\":\"21122235000024000020\",\"bankName\":\"中国建设银行\",\"accountName\":\"湖南弘湘建设工程管理有限公司\",\"bankCardNum\":\"6217001820001592123\",\"backPremium\":\"5000.00\",\"contactName\":\"李一一\",\"contactPhone\":\"18120815541\",\"fileList\":[],\"reason\":\"\"}}") } var param suixing.RevokeParam err := json.Unmarshal(body, ¶m) if err != nil { result["code"] = 201 result["msg"] = "参数异常:" + err.Error() c.JSON(200, result) return } fmt.Println(param) dataStr := gjson.Get(string(body), "data") if !suixing.SuixingApi.Verify(param.CommonParam, dataStr.String()) { result["code"] = 301 result["msg"] = "验签失败" c.JSON(200, result) return } /*orderResult, err := service.OrderService.GetOrderResultByPolicyNo(param.Data.PolicyNo) if err != nil { result["code"] = 501 result["msg"] = err.Error() c.JSON(200, result) return }*/ revoke, err := service.OrderService.SaveRevoke(param) if err != nil { result["code"] = 501 result["msg"] = err.Error() c.JSON(200, result) return } ret, err := service.OrderService.ZkingRevoke(revoke) fmt.Println("revoke ret:", ret) if err != nil { result["code"] = 501 result["msg"] = err.Error() c.JSON(200, result) return } //service.OrderService.UpdateOrderAfterRevoke(orderResult.OrderNo) c.JSON(200, result) return } func Claim(c *gin.Context) { data := map[string]interface{}{} result := map[string]interface{}{ "code": 200, "msg": "成功", "data": data, } body, _ := io.ReadAll(c.Request.Body) if body != nil { fmt.Printf("body:%s\n", body) } var param suixing.ClaimParam err := json.Unmarshal(body, ¶m) if err != nil { result["code"] = 201 result["msg"] = "参数异常:" + err.Error() c.JSON(200, result) return } fmt.Println(param) dataStr := gjson.Get(string(body), "data") if !suixing.SuixingApi.Verify(param.CommonParam, dataStr.String()) { result["code"] = 301 result["msg"] = "验签失败" c.JSON(200, result) return } /*orderResult, err := service.OrderService.GetOrderResultByPolicyNo(param.Data.PolicyNo) if err != nil { result["code"] = 501 result["msg"] = err.Error() c.JSON(200, result) return }*/ claim, err := service.OrderService.SaveClaim(param) if err != nil { result["code"] = 501 result["msg"] = err.Error() c.JSON(200, result) return } ret, err := service.OrderService.ZkingClaim(claim) fmt.Println("claim ret:", ret) if err != nil { result["code"] = 501 result["msg"] = err.Error() c.JSON(200, result) return } //service.OrderService.UpdateOrderAfterClaim(orderResult.OrderNo) c.JSON(200, result) return } func UploadSignedFile(c *gin.Context) { result := map[string]interface{}{ "status": "1", "msg": "成功", } param := signer.UploadParam{} err := c.ShouldBind(¶m) if err != nil { result["status"] = "0" result["msg"] = "参数异常" c.JSON(200, result) return } fmt.Println(param) params := map[string]interface{}{} err = json.Unmarshal([]byte(param.Params), ¶ms) if err != nil { result["status"] = "0" result["msg"] = "params解析异常" c.JSON(200, result) return } token := params["token"].(string) order, err := service.OrderService.GetOrderByToken(token) if err != nil { result["status"] = "0" result["msg"] = err.Error() c.JSON(200, result) return } signFileUrl, err := service.OrderService.UploadPdf("pdf", c) if err != nil { result["status"] = "0" result["msg"] = err.Error() c.JSON(200, result) return } global.DB.Model(&model.Applicant{}).Where("order_no", order.OrderNo).UpdateColumn("signed_url", signFileUrl) global.DB.Model(&model.Order{}).Where("order_no", order.OrderNo).UpdateColumn("status", "signed") service.OrderService.AddSignLog(order.OrderNo, param) res, err := service.OrderService.PostToZking(order.OrderNo) if err != nil { result["status"] = "0" result["msg"] = "文件保存失败:" + err.Error() c.JSON(200, result) return } if res.Code != "200" { result["status"] = "0" result["msg"] = res.Code c.JSON(200, result) return } payUrl := res.Data["url"].(string) orderSn := res.Data["order_sn"].(string) service.OrderService.UpdateOrderAfterPostToInsure(order.OrderNo, payUrl, orderSn) c.JSON(200, result) return }