فهرست منبع

wip:临时提交

wangkaiyue 1 سال پیش
والد
کامیت
55e565b052

+ 5 - 6
internal/controller/callback.go

@@ -11,15 +11,14 @@ import (
 
 // CallBack 回调
 func CallBack(r *ghttp.Request) {
+	var (
+		callType = r.Get("calltype").String()
+		ctx      = r.Context()
+	)
 	err := func() error {
-		var (
-			callType = r.Get("calltype").String()
-			ctx      = r.Context()
-		)
 		if g.Cfg().MustGet(r.Context(), "reqDebug", false).Bool() {
 			g.Log().Infof(r.Context(), "%s\n接口回调 信息调试\ncallType: %s\ncallBack form: %+v", strings.Repeat("=", 50), callType, printFilter(r.Request.Form))
 		}
-
 		switch callType {
 		case "userQuit": //用户退出登录
 			service.JyInvoiceManager.Login = false
@@ -58,7 +57,7 @@ func CallBack(r *ghttp.Request) {
 		return nil
 	}()
 	if err != nil {
-		g.Log().Errorf(r.Context(), "回调异常:%v", err)
+		g.Log().Errorf(ctx, "回调异常 callType: %s Error: %v", callType, err)
 		return
 	}
 	r.Response.WriteJson(g.MapStrStr{"code": "200"})

+ 1 - 1
internal/service/invoiceCallback.go

@@ -21,7 +21,7 @@ func InvoicingCallBackLogic(r *ghttp.Request) error {
 		if err := util.SendQrImage2ChatBot(r.Get("img").String()); err != nil {
 			return gerror.Wrap(err, "发送活体检测消息出错")
 		}
-		g.Log().Info(r.Context(), "需要活体认证,已发送二维码消息")
+		g.Log().Info(r.Context(), "蓝票需要活体认证,已发送二维码消息")
 	case 1: //开票成功
 		var (
 			pdfBase64 = r.Get("pdf").String()

+ 47 - 9
internal/service/invoiceCallback_red.go

@@ -1,11 +1,15 @@
 package service
 
 import (
+	"ElectronicInvoice/internal/consts"
 	"ElectronicInvoice/util"
 	"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/frame/g"
 	"github.com/gogf/gf/v2/net/ghttp"
+	"time"
 )
 
 // 红票信息
@@ -24,22 +28,53 @@ func InvoicingMakeRedCallBackLogic(r *ghttp.Request) error {
 	switch tType {
 	case 0: //红冲成功
 		var (
+			ctx = r.Context()
+			err error
+			res gdb.Record
+
 			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 {
-			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 2: //授信额度等信息
 		g.Log().Info(r.Context(), "授信额度等信息")
@@ -48,7 +83,10 @@ func InvoicingMakeRedCallBackLogic(r *ghttp.Request) error {
 	case 4:
 		g.Log().Info(r.Context(), "活体成功")
 	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:
 		g.Log().Info(r.Context(), "活体码未知错误")
 	case 10:

+ 1 - 1
internal/service/invoiceManager.go

@@ -124,7 +124,7 @@ func (im *InvoiceManager) RunJob(ctx context.Context) {
 	}
 	g.Log().Infof(ctx, "RunJob-开自助蓝票任务完成 共%d个 完成%d个", total, okNum)
 
-	// TODO 开红票
+	// TODO 红冲
 	total, okNum, end, err = im.makeRedInvoice(ctx)
 	if err != nil {
 		g.Log().Errorf(ctx, "RunJob-开红票任务异常 %v", err)