fonchain-fiee/pkg/service/account/ocr_card_id.go

93 lines
2.1 KiB
Go
Raw Normal View History

2025-02-19 06:24:15 +00:00
/**
* @Author: sun
* @Company: 苏州天和汇工业
* @Description:
* @File: ocr_card_id
* @Version: 1.0.0
* @Date: 2024/10/17 13:25
*/
package account
import (
"bytes"
"dubbo.apache.org/dubbo-go/v3/common/logger"
"encoding/base64"
"github.com/fonchain_enterprise/fonchain-main/pkg/e"
"github.com/fonchain_enterprise/fonchain-main/pkg/model"
"github.com/fonchain_enterprise/fonchain-main/pkg/serializer"
"github.com/fonchain_enterprise/fonchain-main/pkg/service"
"github.com/fonchain_enterprise/utils/baidu"
"github.com/gin-gonic/gin"
"go.uber.org/zap"
"io"
"mime/multipart"
)
func OcrCardId(c *gin.Context) {
file, err := c.FormFile("file")
if err != nil {
logger.Errorf("Recevice File err: %v", err)
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: err.Error(),
Status: e.Failed,
})
return
}
f, err := file.Open()
if err != nil {
logger.Errorf("Open File err: %v", err)
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: err.Error(),
Status: e.Failed,
})
return
}
defer func(f multipart.File) {
err := f.Close()
if err != nil {
logger.Errorf("Close File err: %v", err)
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: err.Error(),
Status: e.Failed,
})
}
}(f)
// 读取文件内容到缓冲区
buf := new(bytes.Buffer)
if _, err := io.Copy(buf, f); err != nil {
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: e.ERROR_CARDID_OCR,
Status: e.Failed,
})
return
}
btBase64 := base64.StdEncoding.EncodeToString(buf.Bytes())
result, _err := baidu.OcrGetIdCard(btBase64, "front")
if _err != nil {
zap.L().Error("Ocr IDCard err:", zap.Error(_err))
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: nil,
Msg: e.ERROR_CARDID_OCR,
Status: e.Failed,
})
return
}
resp := &model.OcrCardIdResp{}
resp.Name = result.Name
resp.CardNo = result.IdCard
resp.Address = result.Path
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
Data: resp,
Msg: "",
Status: e.SUCCESS,
})
return
}