diff --git a/base/util/util.go b/base/util/util.go index 36eb55e..af3fa8c 100644 --- a/base/util/util.go +++ b/base/util/util.go @@ -15,3 +15,11 @@ func RandomStr(length int) string { } return string(result) } + +func CutTail(str string, length int) string { + if len(str) <= length { + return str + } + + return str[0:length] +} diff --git a/base/util/util_test.go b/base/util/util_test.go new file mode 100644 index 0000000..fd4a1b5 --- /dev/null +++ b/base/util/util_test.go @@ -0,0 +1,11 @@ +package util + +import ( + "fmt" + "testing" +) + +func TestCutTail(t *testing.T) { + fmt.Println(CutTail("jiangyong", 4)) + fmt.Println(CutTail("jiangyong", 41)) +} diff --git a/common/weixin/qypay.go b/common/weixin/qypay.go index e093f51..23ca132 100644 --- a/common/weixin/qypay.go +++ b/common/weixin/qypay.go @@ -133,7 +133,7 @@ func (p *QyPay) PayRedMoney(req *RedMoneyReq) error { return err } if req.BillNo == "" { - req.BillNo = fmt.Sprintf("QY%s%s", time.Now().Format("20060102150405"), butil.RandomStr(6)) + req.BillNo = fmt.Sprintf("QY%s%s", time.Now().Format("20060102150405"), butil.CutTail(req.Userid, 12)) } param.Set("nonce_str", butil.RandomStr(32)) param.Set("mch_billno", req.BillNo) diff --git a/server/service/qyweixin_approve.go b/server/service/qyweixin_approve.go index 6f25188..3d2b9bc 100644 --- a/server/service/qyweixin_approve.go +++ b/server/service/qyweixin_approve.go @@ -1,6 +1,7 @@ package service import ( + butil "enterprise/base/util" "enterprise/base/wechat/message" "enterprise/common/config" "enterprise/common/dao" @@ -126,7 +127,7 @@ func (a *Approve) handleRefund(spNo string) { // 支付费用 var req weixin.RedMoneyReq - req.BillNo = fmt.Sprintf("BX%s", refund.SpNo) + req.BillNo = fmt.Sprintf("BX%s%s", refund.SpNo, butil.CutTail(refund.Username, 12)) req.Title = fmt.Sprintf("【%s】报销", refund.RefundType) req.Userid = refund.Username req.TotalAmount = int64(100 * refund.RefundAmount) diff --git a/worker/autopay.go b/worker/autopay.go index fcd901e..6f0d41a 100644 --- a/worker/autopay.go +++ b/worker/autopay.go @@ -113,7 +113,7 @@ func autoPayMoney(checkin *model.Checkin, checkinType string, payMoney int64) er req.TotalAmount = payMoney req.Title = checkinType - req.BillNo = fmt.Sprintf("DK%s%s", time.Now().Format("20060102150405"), butil.RandomStr(6)) + req.BillNo = fmt.Sprintf("DK%s%s", time.Now().Format("20060102150405"), butil.CutTail(checkin.Username, 12)) req.Userid = checkin.Username if err := weixin.NewQyPay().PayRedMoney(&req); err != nil { log.Errorf("pay red money error :%s", err.Error())