Explorar o código

feat: 生成QR

2637309949 %!s(int64=4) %!d(string=hai) anos
pai
achega
2f554cc86a

BIN=BIN
asserts/qrcode/123.png


+ 1 - 0
internal/logic/auth/hellologic.go

@@ -28,5 +28,6 @@ func (l *HelloLogic) Hello() error {
 	// if err != nil {
 	// 	logx.Error(err)
 	// }
+	l.svcCtx.Wechat.GenQrCode("1234", "pages/stuInput/stuInput")
 	return nil
 }

+ 3 - 2
internal/logic/user/jzqrcodelogic.go

@@ -28,13 +28,14 @@ func NewJzQrCodeLogic(ctx context.Context, svcCtx *svc.ServiceContext) JzQrCodeL
 }
 
 func (l *JzQrCodeLogic) JzQrCode() (*types.JzQrcodeResponse, error) {
-	uid, err := l.svcCtx.Wechat.GenQrId(qrcodeJzPrefix, map[string]interface{}{
+	uid, err := l.svcCtx.Wechat.GenUserQrId(qrcodeJzPrefix, l.UserId, map[string]interface{}{
 		"userId": l.UserId,
+		"type":   "JzQrCode",
 	})
 	if err != nil {
 		return nil, err
 	}
-	uri, err := l.svcCtx.Wechat.GenQrCode(uid, "index/user")
+	uri, err := l.svcCtx.Wechat.GenQrCode(uid, "pages/stuInput/stuInput")
 	return &types.JzQrcodeResponse{
 		FileId: uri,
 	}, err

+ 17 - 5
internal/svc/servicecontext.go

@@ -75,19 +75,31 @@ func (wc *Wechat) GetAccessToken() (string, error) {
 
 // GenQrId defined TODO
 func (wc *Wechat) GenQrId(prefix string, params interface{}) (string, error) {
-	uuid := utils.GetUUID()
+	timestamp := utils.GetTimestamp()
 	ube, err := json.Marshal(params)
 	if err != nil {
 		return "", err
 	}
-	err = wc.RdCli.SetWithExpire(fmt.Sprintf(prefix, uuid), string(ube), time.Duration(1)*time.Hour)
-	return uuid, err
+	err = wc.RdCli.SetWithExpire(fmt.Sprintf(prefix, timestamp), string(ube), time.Duration(1)*time.Hour)
+	return fmt.Sprintf("%v", timestamp), err
+}
+
+// GenUserQrId defined TODO
+func (wc *Wechat) GenUserQrId(prefix string, userId int64, params interface{}) (string, error) {
+	timestamp := utils.GetTimestamp()
+	ube, err := json.Marshal(params)
+	if err != nil {
+		return "", err
+	}
+	qrId := fmt.Sprintf("u%v-%v", userId, timestamp)
+	err = wc.RdCli.SetWithExpire(fmt.Sprintf(prefix, qrId), string(ube), time.Duration(1)*time.Hour)
+	return qrId, err
 }
 
 // GetQrParams defined TODO
-func (wc *Wechat) GetQrParams(prefix string, uuid string, params interface{}) error {
+func (wc *Wechat) GetQrParams(prefix string, id string, params interface{}) error {
 	ube := ""
-	err := wc.RdCli.GetCache(fmt.Sprintf(prefix, uuid), &ube)
+	err := wc.RdCli.GetCache(fmt.Sprintf(prefix, id), &ube)
 	if err != nil {
 		return err
 	}