93 lines
2.1 KiB
Go
93 lines
2.1 KiB
Go
|
/**
|
||
|
* @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
|
||
|
}
|