|
@@ -1,11 +1,15 @@
|
|
package service
|
|
package service
|
|
|
|
|
|
import (
|
|
import (
|
|
|
|
+ "ElectronicInvoice/internal/consts"
|
|
"ElectronicInvoice/util"
|
|
"ElectronicInvoice/util"
|
|
"fmt"
|
|
"fmt"
|
|
|
|
+ "github.com/gogf/gf/v2/database/gdb"
|
|
|
|
+ "github.com/gogf/gf/v2/encoding/gjson"
|
|
"github.com/gogf/gf/v2/errors/gerror"
|
|
"github.com/gogf/gf/v2/errors/gerror"
|
|
"github.com/gogf/gf/v2/frame/g"
|
|
"github.com/gogf/gf/v2/frame/g"
|
|
"github.com/gogf/gf/v2/net/ghttp"
|
|
"github.com/gogf/gf/v2/net/ghttp"
|
|
|
|
+ "time"
|
|
)
|
|
)
|
|
|
|
|
|
// 红票信息
|
|
// 红票信息
|
|
@@ -24,22 +28,53 @@ func InvoicingMakeRedCallBackLogic(r *ghttp.Request) error {
|
|
switch tType {
|
|
switch tType {
|
|
case 0: //红冲成功
|
|
case 0: //红冲成功
|
|
var (
|
|
var (
|
|
|
|
+ ctx = r.Context()
|
|
|
|
+ err error
|
|
|
|
+ res gdb.Record
|
|
|
|
+
|
|
pdfBase64 = r.Get("pdf").String()
|
|
pdfBase64 = r.Get("pdf").String()
|
|
- num = r.Get("num") //蓝票号
|
|
|
|
|
|
+ num = r.Get("num").String() //蓝票号
|
|
|
|
+ offsetNum = r.Get("offsetNum").String() //红票号
|
|
|
|
+ kptime = r.Get("kptime").String()
|
|
|
|
+ )
|
|
|
|
+
|
|
|
|
+ if len(res) == 0 {
|
|
|
|
+ g.Log().Errorf(ctx, "InvoicingMakeRedCallBackLogic 未查询到蓝票订单,蓝票号 %d", num)
|
|
|
|
+ return nil
|
|
|
|
+ }
|
|
|
|
|
|
- err error
|
|
|
|
- path string
|
|
|
|
|
|
+ var (
|
|
|
|
+ invoiceTime time.Time
|
|
|
|
+ path string
|
|
|
|
+ redByte []byte
|
|
)
|
|
)
|
|
- //更新旧蓝票状态
|
|
|
|
|
|
|
|
- //保存红票信息
|
|
|
|
- path, err = util.SavePdfFile(r.Context(), fmt.Sprintf("RED_%s", num), pdfBase64)
|
|
|
|
|
|
+ invoiceTime, err = time.ParseInLocation(consts.DateFormat_Full, kptime, time.Local)
|
|
if err != nil {
|
|
if err != nil {
|
|
- return gerror.Wrap(err, "保存红冲pdf文件失败")
|
|
|
|
|
|
+ return gerror.Wrap(err, "时间格式化异常")
|
|
}
|
|
}
|
|
|
|
|
|
- g.Dump(path)
|
|
|
|
|
|
+ path, err = util.SavePdfFile(r.Context(), fmt.Sprintf("RED_%s", num), pdfBase64)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return gerror.Wrap(err, "InvoicingMakeRedCallBackLogic 保存红冲pdf文件失败")
|
|
|
|
+ }
|
|
|
|
+ //保存红票信息
|
|
|
|
+ redByte, _ = gjson.Marshal(RedMsg{
|
|
|
|
+ InvoiceNumber: offsetNum,
|
|
|
|
+ Url: path,
|
|
|
|
+ InvoiceSerialnum: fmt.Sprintf("RED_%s", num),
|
|
|
|
+ InvoiceStatus: "1",
|
|
|
|
+ BillingTime: invoiceTime.Unix(),
|
|
|
|
+ })
|
|
|
|
|
|
|
|
+ _, err = g.DB().Update(ctx, "invoice", g.Map{
|
|
|
|
+ "invoice_status": -2,
|
|
|
|
+ "red": string(redByte),
|
|
|
|
+ }, "invoice_changed = 0 AND invoice_number= ? ", num)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return gerror.Wrap(err, "InvoicingMakeRedCallBackLogic 更新发票状态异常")
|
|
|
|
+ }
|
|
|
|
+ return nil
|
|
case 1: //失败
|
|
case 1: //失败
|
|
case 2: //授信额度等信息
|
|
case 2: //授信额度等信息
|
|
g.Log().Info(r.Context(), "授信额度等信息")
|
|
g.Log().Info(r.Context(), "授信额度等信息")
|
|
@@ -48,7 +83,10 @@ func InvoicingMakeRedCallBackLogic(r *ghttp.Request) error {
|
|
case 4:
|
|
case 4:
|
|
g.Log().Info(r.Context(), "活体成功")
|
|
g.Log().Info(r.Context(), "活体成功")
|
|
case 5:
|
|
case 5:
|
|
- g.Log().Info(r.Context(), "返回活体检测二维码的内容")
|
|
|
|
|
|
+ if err := util.SendQrImage2ChatBot(r.Get("img").String()); err != nil {
|
|
|
|
+ return gerror.Wrap(err, "发送活体检测消息出错")
|
|
|
|
+ }
|
|
|
|
+ g.Log().Info(r.Context(), "红票需要活体认证,已发送二维码消息")
|
|
case 9:
|
|
case 9:
|
|
g.Log().Info(r.Context(), "活体码未知错误")
|
|
g.Log().Info(r.Context(), "活体码未知错误")
|
|
case 10:
|
|
case 10:
|