Prechádzať zdrojové kódy

wip:发票展示修改

wangkaiyue 1 rok pred
rodič
commit
8b0d3d147c

+ 12 - 10
internal/service/invoiceCallback_blue.go

@@ -31,27 +31,28 @@ func InvoicingCallBackLogic(r *ghttp.Request) error {
 			kptime      = r.Get("kptime").String()
 			data        = r.Get("data").Map()
 			invoiceTime time.Time
-			path        string
 
-			err error
+			sourceUrl string //税务局发票链接
+			fileUrl   string //剑鱼文件地址
+			err       error
 		)
 		if pdfBase64 == "" || callBackId == "" || num == "" || kptime == "" || len(data) == 0 {
 			return gerror.New("缺少回调参数")
 		}
 		// 需求变更,数据库存储税务局发票地址
-		if path = gconv.String(data["jfUrl"]); path == "" {
+		if sourceUrl = gconv.String(data["jfUrl"]); sourceUrl == "" {
 			return gerror.New("获取pdf交付地址异常")
 		}
 		invoiceTime, err = time.ParseInLocation(consts.DateFormat_Full, kptime, time.Local)
 		if err != nil {
 			return gerror.Wrap(err, "时间格式化异常")
 		}
-		//path, err = util.SavePdfFile(r.Context(), num, pdfBase64)
-		//if err != nil {
-		//	return gerror.Wrap(err, "保存pdf文件失败")
-		//}
-		//g.Log().Infof(r.Context(), "pdf保存成功 sign:%s filePath:%s ", callBackId, path)
-		return updateOrderInvoiceStatus(r.Context(), callBackId, num, invoiceTime, path)
+		fileUrl, err = util.SavePdfFile(r.Context(), num, pdfBase64)
+		if err != nil {
+			return gerror.Wrap(err, "保存pdf文件失败")
+		}
+		g.Log().Infof(r.Context(), "pdf保存成功 sign:%s filePath:%s ", callBackId, fileUrl)
+		return updateOrderInvoiceStatus(r.Context(), callBackId, num, invoiceTime, sourceUrl, fileUrl)
 	case 3:
 		g.Log().Info(r.Context(), "活体验证已过期,未完成活体验证")
 	case 4:
@@ -71,7 +72,7 @@ func InvoicingCallBackLogic(r *ghttp.Request) error {
 // invoiceNum 发票号码
 // createData 开票时间
 // pdfPath 下载地址
-func updateOrderInvoiceStatus(ctx context.Context, callBackId, invoiceNum string, invoiceTime time.Time, pdfPath string) error {
+func updateOrderInvoiceStatus(ctx context.Context, callBackId, invoiceNum string, invoiceTime time.Time, sourceUrl, pdfPath string) error {
 	var (
 		queryItem  = "order_code"
 		queryValue = ""
@@ -105,6 +106,7 @@ func updateOrderInvoiceStatus(ctx context.Context, callBackId, invoiceNum string
 		_, err = tx.Update("invoice", g.Map{
 			"invoice_number": invoiceNum,
 			"url":            pdfPath,
+			"source_url":     sourceUrl,
 			"billing_time":   invoiceTime.Unix(),
 			"invoice_status": 1,
 		}, fmt.Sprintf(" %s = ? AND invoice_status in(0,2) ", queryItem), queryValue)

+ 12 - 8
internal/service/invoiceCallback_red.go

@@ -19,6 +19,7 @@ type RedMsg struct {
 	InvoiceCode      string `json:"invoice_code"`
 	InvoiceNumber    string `json:"invoice_number"`
 	Url              string `json:"url"`
+	SourceUrl        string `json:"source_url"`
 	InvoiceSerialNum string `json:"invoice_serialnum"`
 	InvoiceStatus    string `json:"invoice_status"`
 	BillingTime      int64  `json:"billing_time"`
@@ -37,8 +38,10 @@ func InvoicingMakeRedCallBackLogic(r *ghttp.Request) error {
 				kptime      = r.Get("kptime").String()
 				data        = r.Get("data").Map()
 				invoiceTime time.Time
-				path        string
-				redByte     []byte
+				sourceUrl   string //税务局发票链接
+				fileUrl     string //剑鱼文件地址
+
+				redByte []byte
 
 				err error
 			)
@@ -50,17 +53,18 @@ func InvoicingMakeRedCallBackLogic(r *ghttp.Request) error {
 				return gerror.New("缺少回调参数")
 			}
 			// 需求变更,数据库存储税务局发票地址
-			if path = gconv.String(data["jfUrl"]); path == "" {
+			if sourceUrl = gconv.String(data["jfUrl"]); sourceUrl == "" {
 				return gerror.New("获取pdf交付地址异常")
 			}
-			//path, err = util.SavePdfFile(r.Context(), fmt.Sprintf("RED_%s", num), pdfBase64)
-			//if err != nil {
-			//	return gerror.Wrap(err, "InvoicingMakeRedCallBackLogic 保存红冲pdf文件失败")
-			//}
+			fileUrl, 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,
+				Url:              fileUrl,
+				SourceUrl:        sourceUrl,
 				InvoiceSerialNum: fmt.Sprintf("RED_%s", num),
 				InvoiceStatus:    "1",
 				BillingTime:      invoiceTime.Unix(),

+ 4 - 4
internal/service/sendMail.go

@@ -24,7 +24,7 @@ type (
 		TaxpayerIdentnum string `json:"taxpayer_identnum"`
 		CompanyName      string `json:"company_name"`
 		Phone            string `json:"phone"`
-		Url              string `json:"url"`
+		SourceUrl        string `json:"source_url"`
 		OrderCode        string `json:"order_code"`
 		InvoiceVariety   string `json:"invoice_variety"`
 		InvoiceContent   string `json:"invoice_content"`
@@ -179,7 +179,7 @@ func SendInvoiceSuccessMail(ctx context.Context, callBackId string) error {
 		return err
 	}
 
-	res, err := g.DB().GetOne(ctx, fmt.Sprintf("SELECT invoice_type,mail,taxpayer_identnum,company_name,phone,url,order_code,invoice_variety,invoice_content,invoice_order_code FROM invoice WHERE %s = ? AND invoice_status=1 order by id desc limit 1", queryItem), queryValue)
+	res, err := g.DB().GetOne(ctx, fmt.Sprintf("SELECT invoice_type,mail,taxpayer_identnum,company_name,phone,source_url,order_code,invoice_variety,invoice_content,invoice_order_code FROM invoice WHERE %s = ? AND invoice_status=1 order by id desc limit 1", queryItem), queryValue)
 	if err != nil {
 		return gerror.Wrapf(err, "未查询到订单发票信息 %s:%s", queryItem, queryValue)
 	}
@@ -212,9 +212,9 @@ func (ir *invoiceRecord) GetMailHtmlContext() string {
 	}
 	switch ir.InvoiceType {
 	case "单位":
-		return fmt.Sprintf(emailHtml_header+emailHtml_gs, showOrderCode, tType, fmt.Sprintf("<a href=\"%s\" download class=\"download\">查看发票</a>", ir.Url), invoiceContext, tType, ir.CompanyName, ir.TaxpayerIdentnum, ir.Phone, ir.Mail)
+		return fmt.Sprintf(emailHtml_header+emailHtml_gs, showOrderCode, tType, fmt.Sprintf("<a href=\"%s\" download class=\"download\">查看发票</a>", ir.SourceUrl), invoiceContext, tType, ir.CompanyName, ir.TaxpayerIdentnum, ir.Phone, ir.Mail)
 	case "个人":
-		return fmt.Sprintf(emailHtml_header+emailHtml_gr, showOrderCode, tType, fmt.Sprintf("<a href=\"%s\" download class=\"download\">查看发票</a>", ir.Url), invoiceContext, tType, ir.Phone, ir.Mail)
+		return fmt.Sprintf(emailHtml_header+emailHtml_gr, showOrderCode, tType, fmt.Sprintf("<a href=\"%s\" download class=\"download\">查看发票</a>", ir.SourceUrl), invoiceContext, tType, ir.Phone, ir.Mail)
 	}
 	return ""
 }

+ 1 - 1
util/pdf.go

@@ -16,7 +16,7 @@ func SavePdfFile(ctx context.Context, num, pdfBase64 string) (filePath string, e
 		pathPrefix   = g.Cfg().MustGet(ctx, "pdfFilePathPrefix", "/invoice").String()
 		webDoMain    = g.Cfg().MustGet(ctx, "pdfFilePathDomain", "https://www.jianyu360.com").String()
 		now          = time.Now()
-		requestPath  = fmt.Sprintf("/%s/%s/%s.pdf", pathPrefix, now.Format("2006-01-02"), num)
+		requestPath  = fmt.Sprintf("/%s/%s/%s_%d.pdf", pathPrefix, now.Format("2006-01-02"), num, now.Unix())
 		fileFullPath = fmt.Sprintf("%s%s", rootDir, requestPath)
 	)