diff --git a/app/customer/hdl/self_support_for_school/hdl_faceCollection.go b/app/customer/hdl/self_support_for_school/hdl_faceCollection.go index b1cc519..7eeb048 100644 --- a/app/customer/hdl/self_support_for_school/hdl_faceCollection.go +++ b/app/customer/hdl/self_support_for_school/hdl_faceCollection.go @@ -127,6 +127,67 @@ func EducateSceneTokenCreateForApplet(c *gin.Context) { return } +func EducateSceneTokenCreateForSchoolFacePassQuery(c *gin.Context) { + user := svc.GetUser(c) + userIdentityId := c.DefaultQuery("user_identity_id", "") + userIdentityDb := db.UserIdentityDb{} + userIdentityDb.Set(0) + identity, err := userIdentityDb.GetUserIdentity(utils.StrToInt(userIdentityId)) + if err != nil { + e.OutErr(c, e.ERR_DB_ORM, err.Error()) + return + } + + selfSupportForSchoolInfoDb := db.SelfSupportForSchoolInfoDb{} + selfSupportForSchoolInfoDb.Set(identity.EnterpriseId) + selfSupportForSchoolInfo, err := selfSupportForSchoolInfoDb.GetSelfSupportForSchoolInfo() + if err != nil { + e.OutErr(c, e.ERR_DB_ORM, err.Error()) + return + } + if selfSupportForSchoolInfo == nil { + e.OutErr(c, e.ERR_NO_DATA, "当前学校暂未完成《一脸通行入驻》") + return + } + + //请求支付宝 alipay.commerce.educate.scene.token.query(查询刷脸用户开通详细信息) + sysCfgDb := db.SysCfgDb{} + sysCfgDb.Set() + sysCfg := sysCfgDb.SysCfgFindWithDb(enum.OpenAppletAppid, enum.OpenAppletAppPrivateKey, enum.OpenAppletPublicKey) + var certType string + switch identity.CertType { + case enum.UserIdentityCertTypeForIdCard: + certType = "1" + case enum.UserIdentityCertTypeForStudentId: + certType = "X" + case enum.UserIdentityCertTypeForPassport: + certType = "A" + } + err, info := svc.CurlEducateSceneTokenCreateForSchoolFacePassQuery(md.CurlEducateSceneTokenReq{ + Config: struct { + AliAppId string `json:"ali_app_id" label:"支付宝开放平台-小程序-appid"` + AliPrivateKey string `json:"ali_private_key" label:"支付宝开放平台-小程序-应用私钥"` + AliPublicKey string `json:"ali_public_key" label:"支付宝开放平台-小程序-支付宝公钥"` + }{ + AliAppId: sysCfg[enum.OpenAppletAppid], + AliPrivateKey: sysCfg[enum.OpenAppletAppPrivateKey], + AliPublicKey: sysCfg[enum.OpenAppletPublicKey], + }, + CertType: certType, + CertNo: identity.IdNo, + StudentName: identity.Name, + OutUserId: utils.IntToStr(identity.Id), + SchoolStdCode: selfSupportForSchoolInfo.SchoolStdCode, + OperatorUserId: user.UserId, + }) + if err != nil { + e.OutErr(c, e.ERR, err.Error()) + return + } + e.OutSuc(c, info, nil) + return +} + func EducateFacepayApply(c *gin.Context) { faceOpenId := c.DefaultQuery("face_open_id", "") userIdentityId := c.DefaultQuery("user_identity_id", "") diff --git a/app/customer/svc/svc_curl_smart_pay.go b/app/customer/svc/svc_curl_smart_pay.go index cf7fef0..9f843e6 100644 --- a/app/customer/svc/svc_curl_smart_pay.go +++ b/app/customer/svc/svc_curl_smart_pay.go @@ -663,6 +663,52 @@ func CurlEducateSceneTokenCreateForApplet(args md.CurlEducateSceneTokenReq) (err return nil, result.Data } +func CurlEducateSceneTokenCreateForSchoolFacePassQuery(args md.CurlEducateSceneTokenReq) (err error, resp interface{}) { + utils.FilePutContents("CurlEducateSceneTokenCreateForSchoolFacePassQuery", utils.SerializeStr(map[string]interface{}{ + "args": args, + })) + + //1、TODO::生成用户信息token(使用 alipay.commerce.educate.scene.token.create 接口生成用户信息token) + url := cfg.SmartCanteenPay + "/alipay/faceCollection/educateSceneTokenCreate" + bytes, err := utils.CurlPost(url, utils.Serialize(map[string]interface{}{ + "config": map[string]string{ + "ali_app_id": args.Config.AliAppId, + "ali_private_key": args.Config.AliPrivateKey, + "ali_public_key": args.Config.AliPublicKey, + }, + "cert_no": args.CertNo, + "school_std_code": args.SchoolStdCode, + "student_name": args.StudentName, + "out_user_id": args.OutUserId, + "cert_type": args.CertType, + "sub_code": "SCHOOL_FACE_PASS_QUERY", + "operator_user_id": args.OperatorUserId, //采集人员的支付宝会员标识。(当sub_code为SCHOOL_PAYMENT_REMOTE_OPEN_ACCOUNT时,当前参数必选) + }), nil) + if err != nil { + return + } + var result struct { + Code int `json:"code"` + Msg string `json:"msg"` + Data interface{} `json:"data"` + } + utils.FilePutContents("CurlEducateSceneTokenCreateForSchoolFacePassQuery", utils.SerializeStr(result)) + err = json.Unmarshal(bytes, &result) + if err != nil { + return + } + if result.Code != 0 { + if result.Msg != "" { + err = errors.New(result.Msg) + return + } + err = errors.New("请求智慧餐厅支付 异常/失败") + return + } + + return nil, result.Data +} + func CurlEducateSceneTokenCreateForConcentratedCollectApplet(args md.CurlEducateSceneTokenReq) (err error, resp interface{}) { utils.FilePutContents("CurlEducateSceneTokenCreateForConcentratedCollectApplet", utils.SerializeStr(map[string]interface{}{ "args": args, diff --git a/app/router/customer_router.go b/app/router/customer_router.go index a387476..8f848e3 100644 --- a/app/router/customer_router.go +++ b/app/router/customer_router.go @@ -116,6 +116,7 @@ func rSelfSupportForSchool(r *gin.RouterGroup) { //自营学校 r.GET("/educateSceneTokenQuery", selfSupportForSchoolhdl.EducateSceneTokenQuery) // 自营学校-查询刷脸用户开通详细信息 r.GET("/educateSceneTokenCreateForApplet", selfSupportForSchoolhdl.EducateSceneTokenCreateForApplet) // 自营学校-教育场景token生成处理器(作用于 跳转到一脸通行小程序采集人脸) r.GET("/educateSceneTokenCreateForConcentratedCollectApplet", selfSupportForSchoolhdl.EducateSceneTokenCreateForConcentratedCollectApplet) // 自营学校-教育场景token生成处理器(作用于 跳转到集采小程序) + r.GET("/educateSceneTokenCreateForSchoolFacePassQuery", selfSupportForSchoolhdl.EducateSceneTokenCreateForSchoolFacePassQuery) // 自营学校-教育场景token生成处理器(作用于 查看刷脸照片) r.GET("/educateFacepayApply", selfSupportForSchoolhdl.EducateFacepayApply) // 自营学校-创建刷脸支付开通标识 r.GET("/concentrateFacePassStudentList", selfSupportForSchoolhdl.ConcentrateFacePassStudentList) // 自营学校-集采学生列表 r.GET("/concentrateFacePassStudentConfirm", selfSupportForSchoolhdl.ConcentrateFacePassStudentConfirm) // 自营学校-集采学生确认