You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

234 lines
5.6 KiB
Go

package h5
import (
"encoding/json"
"fmt"
"github.com/gin-gonic/gin"
"insure/dto/request"
"insure/e"
"insure/global"
"insure/model"
"insure/service"
"insure/third_party/signer"
"insure/utils"
"insure/utils/result"
)
func Index(c *gin.Context) (result.Data, error) {
return result.Data{"hello": "elf"}, nil
}
func Error(c *gin.Context) (result.Data, error) {
return nil, e.NewError("测试", "1122")
}
func GetOrder(c *gin.Context) (result.Data, error) {
token := c.DefaultQuery("token", "")
if token == "" {
return nil, e.NewError("缺少参数")
}
order, err := service.OrderService.GetOrderByToken(token)
if err != nil {
return nil, err
}
return result.Data{"order": order}, nil
}
func GetSignUrl(c *gin.Context) (result.Data, error) {
token := c.DefaultQuery("token", "")
if token == "" {
return nil, e.NewError("缺少参数")
}
order, err := service.OrderService.GetOrderByToken(token)
if err != nil {
return nil, err
}
params := map[string]interface{}{
"token": token,
}
paramsStr, err := json.Marshal(params)
if err != nil {
return nil, err
}
if order.Applicant.SignUrl == "" {
return nil, e.NewError("签章文件未生成")
}
param := signer.SignParam{}
param.Url = order.Applicant.SignUrl
param.UploadUrl = global.Config.Server.Domain + "/api/suixing/upload-signed-file"
param.IsView = "0"
param.IsAutoClose = "1"
param.IsEdit = "1"
param.IsUploadPdf = "1"
param.Params = string(paramsStr)
signUrl, err := signer.SignerApi.GetSignUrl(param)
if err != nil {
return nil, err
}
return result.Data{"signUrl": signUrl}, nil
}
func GetOrderResult(c *gin.Context) (result.Data, error) {
token := c.DefaultQuery("token", "")
if token == "" {
return nil, e.NewError("缺少参数")
}
orderResult, err := service.OrderService.GetOrderResultByToken(token)
if err != nil {
return nil, err
}
return result.Data{"orderResult": orderResult}, nil
}
func GetOrderPayUrl(c *gin.Context) (result.Data, error) {
token := c.DefaultQuery("token", "")
if token == "" {
return nil, e.NewError("缺少参数")
}
order, err := service.OrderService.GetOrderByToken(token)
if err != nil {
return nil, err
}
return result.Data{"payUrl": order.PayUrl, "status": order.Status}, nil
}
func GetOrderStatus(c *gin.Context) (result.Data, error) {
token := c.DefaultQuery("token", "")
if token == "" {
return nil, e.NewError("缺少参数")
}
order, err := service.OrderService.GetOrderByToken(token)
if err != nil {
return nil, err
}
return result.Data{"status": order.Status}, nil
}
func PostToZking(c *gin.Context) (result.Data, error) {
orderNo := c.DefaultQuery("order_no", "")
if orderNo == "" {
return nil, e.NewError("缺少参数")
}
res, err := service.OrderService.PostToZking(orderNo)
if err != nil {
return nil, err
}
payUrl := res.Data["url"].(string)
orderSn := res.Data["order_sn"].(string)
service.OrderService.UpdateOrderAfterPostToInsure(orderNo, payUrl, orderSn)
return result.Data{"result": res}, nil
}
func UpdateApplicant(c *gin.Context) (result.Data, error) {
req := request.UpdateApplicantRequest{}
err := c.ShouldBind(&req)
if err != nil {
return nil, e.NewError("参数错误")
}
_, err = service.OrderService.UpdateApplicant(req)
if err != nil {
return nil, e.NewError("保存错误")
}
return result.Data{}, nil
}
func UpdateInvoice(c *gin.Context) (result.Data, error) {
req := request.UpdateInvoiceRequest{}
err := c.ShouldBind(&req)
if err != nil {
return nil, e.NewError("参数错误")
}
_, err = service.OrderService.UpdateInvoice(req)
if err != nil {
return nil, e.NewError("保存错误")
}
return result.Data{}, nil
}
func UploadSignFile(c *gin.Context) (result.Data, error) {
token := c.DefaultPostForm("token", "")
if token == "" {
return nil, e.NewError("缺少参数")
}
order, err := service.OrderService.GetOrderByToken(token)
if err != nil {
return nil, err
}
signUrl, err := service.OrderService.UploadPdf("pdf", c)
if err != nil {
return nil, err
}
global.DB.Model(&model.Applicant{}).Where("order_no", order.OrderNo).UpdateColumn("sign_url", signUrl)
global.DB.Model(&model.Order{}).Where("order_no", order.OrderNo).UpdateColumns(model.Order{Status: "generated"})
return result.Data{}, nil
}
func GenerateSignFile(c *gin.Context) (result.Data, error) {
token := c.DefaultPostForm("token", "")
if token == "" {
return nil, e.NewError("缺少参数")
}
order, err := service.OrderService.GetOrderByToken(token)
if err != nil {
return nil, err
}
signUrl, err := service.PdfService.Generate(order)
fmt.Println(signUrl)
fmt.Println(err)
if err != nil {
return nil, err
}
global.DB.Model(&model.Applicant{}).Where("order_no", order.OrderNo).UpdateColumn("sign_url", signUrl)
global.DB.Model(&model.Order{}).Where("order_no", order.OrderNo).UpdateColumns(model.Order{Status: "generated"})
return result.Data{}, nil
}
func GetPayInfo(c *gin.Context) (result.Data, error) {
token := c.DefaultQuery("token", "")
if token == "" {
return nil, e.NewError("缺少参数")
}
payInfo, err := service.OrderService.GetPayInfo(token)
if err != nil {
return nil, err
}
return result.Data{"PayInfo": payInfo}, nil
}
func GetOrderNo(c *gin.Context) (result.Data, error) {
orderNo := utils.GenerateNo("order")
return result.Data{"orderNo": orderNo}, nil
}
func SaveStudentInsureInfo(c *gin.Context) (result.Data, error) {
req := request.StudentInsureInfoRequest{}
err := c.ShouldBind(&req)
if err != nil {
return nil, e.NewError("参数错误")
}
_, err = service.StudentInsureService.Save(req)
if err != nil {
return nil, e.NewError("保存错误")
}
return result.Data{}, nil
}