@@ -916,6 +916,19 @@ func SelfSupportForSchoolImportTeacher(c *gin.Context) { | |||||
e.OutErr(c, e.ERR_NO_DATA, "未查询到对应记录") | e.OutErr(c, e.ERR_NO_DATA, "未查询到对应记录") | ||||
return | return | ||||
} | } | ||||
selfSupportForSchoolInfoDb := db.SelfSupportForSchoolInfoDb{} | |||||
selfSupportForSchoolInfoDb.Set(enterpriseId) | |||||
selfSupportForSchoolInfo, err1 := selfSupportForSchoolInfoDb.GetSelfSupportForSchoolInfo() | |||||
if err1 != nil { | |||||
e.OutErr(c, e.ERR_DB_ORM, err.Error()) | |||||
return | |||||
} | |||||
if selfSupportForSchoolInfo == nil { | |||||
e.OutErr(c, e.ERR, "当前学校暂未完成《一脸通行入驻》") | |||||
return | |||||
} | |||||
files, _ := c.FormFile("file") | files, _ := c.FormFile("file") | ||||
dst := "./static/upload/" + files.Filename | dst := "./static/upload/" + files.Filename | ||||
err = c.SaveUploadedFile(files, dst) | err = c.SaveUploadedFile(files, dst) | ||||
@@ -927,13 +940,19 @@ func SelfSupportForSchoolImportTeacher(c *gin.Context) { | |||||
xlsx, err := excelize.OpenFile(dst) | xlsx, err := excelize.OpenFile(dst) | ||||
rows := xlsx.GetRows("Sheet" + "1") | rows := xlsx.GetRows("Sheet" + "1") | ||||
for key, row := range rows { | for key, row := range rows { | ||||
if key > 0 && (row[0] != "" && row[1] != "") { | |||||
if key > 0 && ((row[0] != "" || row[1] != "") && row[2] != "") { | |||||
idNo := row[0] | idNo := row[0] | ||||
name := row[1] | |||||
certType := enum.UserIdentityCertTypeForIdCard | |||||
if idNo == "" { | |||||
idNo = row[1] | |||||
certType = enum.UserIdentityCertTypeForStudentId | |||||
} | |||||
name := row[2] | |||||
//1、查找当前身份是否已存在 | //1、查找当前身份是否已存在 | ||||
userIdentityDb := db.UserIdentityDb{} | userIdentityDb := db.UserIdentityDb{} | ||||
userIdentityDb.Set(0) | userIdentityDb.Set(0) | ||||
isHasUserIdentity, err := userIdentityDb.UserIdentityExist(enterpriseId, idNo, enum.UserIdentityCertTypeForIdCard) | |||||
isHasUserIdentity, err := userIdentityDb.UserIdentityExist(enterpriseId, idNo, certType) | |||||
if err != nil { | if err != nil { | ||||
e.OutErr(c, e.ERR_DB_ORM, err.Error()) | e.OutErr(c, e.ERR_DB_ORM, err.Error()) | ||||
return | return | ||||
@@ -948,7 +967,7 @@ func SelfSupportForSchoolImportTeacher(c *gin.Context) { | |||||
Uid: 0, | Uid: 0, | ||||
Name: name, | Name: name, | ||||
IdNo: idNo, | IdNo: idNo, | ||||
CertType: enum.UserIdentityCertTypeForIdCard, | |||||
CertType: certType, | |||||
Kind: enum.UserIdentityKindForCommon, | Kind: enum.UserIdentityKindForCommon, | ||||
Identity: enum.UserIdentityForSelfSupportForTeacher, | Identity: enum.UserIdentityForSelfSupportForTeacher, | ||||
EnterpriseId: enterpriseId, | EnterpriseId: enterpriseId, | ||||
@@ -976,17 +995,6 @@ func SelfSupportForSchoolImportTeacher(c *gin.Context) { | |||||
return | return | ||||
} | } | ||||
if info == nil { | if info == nil { | ||||
selfSupportForSchoolInfoDb := db.SelfSupportForSchoolInfoDb{} | |||||
selfSupportForSchoolInfoDb.Set(enterpriseId) | |||||
selfSupportForSchoolInfo, err1 := selfSupportForSchoolInfoDb.GetSelfSupportForSchoolInfo() | |||||
if err1 != nil { | |||||
e.OutErr(c, e.ERR_DB_ORM, err.Error()) | |||||
return | |||||
} | |||||
if selfSupportForSchoolInfo == nil { | |||||
e.OutErr(c, e.ERR, "当前学校暂未完成《一脸通行入驻》") | |||||
return | |||||
} | |||||
info = &model.SelfSupportForUserFaceInfo{ | info = &model.SelfSupportForUserFaceInfo{ | ||||
EnterpriseId: enterpriseId, | EnterpriseId: enterpriseId, | ||||
UserIdentityId: insertAffected, | UserIdentityId: insertAffected, | ||||
@@ -1052,7 +1060,7 @@ func ImportV2(c *gin.Context) { | |||||
} | } | ||||
func SelfSupportForSchoolDownloadTemplateExcel(c *gin.Context) { | func SelfSupportForSchoolDownloadTemplateExcel(c *gin.Context) { | ||||
e.OutSuc(c, "/template/自营学校(教师信息导入模板).xls", nil) | |||||
e.OutSuc(c, "/template/自营学校(教师信息导入模板).xlsx", nil) | |||||
return | return | ||||
} | } | ||||
@@ -1464,7 +1472,7 @@ func SelfSupportForSchoolArrearsOrdListExport(c *gin.Context) { | |||||
for _, v := range resp { | for _, v := range resp { | ||||
totalAmount += utils.StrToFloat64(v.TotalPrice) | totalAmount += utils.StrToFloat64(v.TotalPrice) | ||||
mealZh := svc3.JudgeSelfSupportForMealTime(v.FaceTime) | mealZh := svc3.JudgeSelfSupportForMealTime(v.FaceTime) | ||||
xlsx.SetSheetRow("Sheet1", "A"+strconv.Itoa(j), &[]interface{}{v.OutTradeNo, v.Phone, v.Name, v.EnterpriseName, v.Class, v.Grade, utils.StrToFloat64(v.TotalPrice), | |||||
xlsx.SetSheetRow("Sheet1", "A"+strconv.Itoa(j), &[]interface{}{v.OutTradeNo, v.Phone, v.Name, v.EnterpriseName, v.Grade, v.Class, utils.StrToFloat64(v.TotalPrice), | |||||
v.ShopName, v.DeviceSn, v.FaceTime, v.DebtBusinessMsg, mealZh}) | v.ShopName, v.DeviceSn, v.FaceTime, v.DebtBusinessMsg, mealZh}) | ||||
j++ | j++ | ||||
} | } | ||||
@@ -1,8 +1,10 @@ | |||||
package hdl | package hdl | ||||
import ( | import ( | ||||
enum2 "applet/app/admin/enum" | |||||
"applet/app/admin/lib/validate" | "applet/app/admin/lib/validate" | ||||
"applet/app/admin/md" | "applet/app/admin/md" | ||||
svc3 "applet/app/admin/svc" | |||||
"applet/app/db" | "applet/app/db" | ||||
model2 "applet/app/db/model" | model2 "applet/app/db/model" | ||||
"applet/app/e" | "applet/app/e" | ||||
@@ -27,6 +29,25 @@ func DeviceList(c *gin.Context) { | |||||
} | } | ||||
sess := db.Db.Desc("device.id") | sess := db.Db.Desc("device.id") | ||||
admin := svc3.GetUser(c) | |||||
if admin.IsSuperAdministrator != enum2.IsSuperAdministratorTure { | |||||
adminWithEnterpriseDb := db.AdminWithEnterpriseDb{} | |||||
adminWithEnterpriseDb.Set() | |||||
adminWithEnterprise, err1 := adminWithEnterpriseDb.FindAdminWithEnterprise(admin.AdmId) | |||||
if err1 != nil { | |||||
e.OutErr(c, e.ERR_DB_ORM, err1.Error()) | |||||
return | |||||
} | |||||
var enterPriseIds []int | |||||
for _, v1 := range *adminWithEnterprise { | |||||
enterPriseIds = append(enterPriseIds, v1.EnterpriseId) | |||||
} | |||||
if len(enterPriseIds) == 0 { | |||||
return | |||||
} | |||||
sess.In("device.enterprise_id", enterPriseIds) | |||||
} | |||||
if req.Name != "" { | if req.Name != "" { | ||||
sess.And("device.name like ?", "%"+req.Name+"%") | sess.And("device.name like ?", "%"+req.Name+"%") | ||||
} | } | ||||
@@ -371,7 +371,9 @@ func CentralKitchenForSchoolStudentList(req md.CentralKitchenForSchoolStudentLis | |||||
classWithUserIdentityIdsTwo = append(classWithUserIdentityIdsTwo, v.UserIdentityId) | classWithUserIdentityIdsTwo = append(classWithUserIdentityIdsTwo, v.UserIdentityId) | ||||
} | } | ||||
} | } | ||||
sess := db.Db.Where("user_identity.enterprise_id =?", req.EnterpriseId).And("identity =?", enum2.UserIdentityForCentralKitchenForStudent) | |||||
sess := db.Db.Where("user_identity.enterprise_id =?", req.EnterpriseId). | |||||
And("identity =?", enum2.UserIdentityForCentralKitchenForStudent). | |||||
And("state =?", enum2.UserIdentityStateForNormal) | |||||
if req.Name != "" { | if req.Name != "" { | ||||
sess.And("user_identity.name like ?", "%"+req.Name+"%") | sess.And("user_identity.name like ?", "%"+req.Name+"%") | ||||
} | } | ||||
@@ -272,7 +272,9 @@ func SelfSupportForSchoolStudentList(req md.SelfSupportForSchoolStudentListReq) | |||||
classWithUserIdentityIdsTwo = append(classWithUserIdentityIdsTwo, v.UserIdentityId) | classWithUserIdentityIdsTwo = append(classWithUserIdentityIdsTwo, v.UserIdentityId) | ||||
} | } | ||||
} | } | ||||
sess := db.Db.Where("user_identity.enterprise_id =?", req.EnterpriseId).And("identity =?", enum2.UserIdentityForSelfSupportForStudent) | |||||
sess := db.Db.Where("user_identity.enterprise_id =?", req.EnterpriseId). | |||||
And("identity =?", enum2.UserIdentityForSelfSupportForStudent). | |||||
And("state =?", enum2.UserIdentityStateForNormal) | |||||
if req.Name != "" { | if req.Name != "" { | ||||
sess.And("user_identity.name like ?", "%"+req.Name+"%") | sess.And("user_identity.name like ?", "%"+req.Name+"%") | ||||
} | } | ||||
@@ -539,7 +539,7 @@ func SelfSupportForSchoolDataStatisticsExport(req md.SelfSupportForSchoolDataSta | |||||
//查询出所有的设备 | //查询出所有的设备 | ||||
var deviceList []*model.Device | var deviceList []*model.Device | ||||
if req.EnterpriseId != 0 { | |||||
if req.EnterpriseId == 0 { | |||||
err := db.Db.Where("enterprise_id != 0").Find(&deviceList) | err := db.Db.Where("enterprise_id != 0").Find(&deviceList) | ||||
if err != nil { | if err != nil { | ||||
logx.Error(err) | logx.Error(err) | ||||
@@ -576,7 +576,7 @@ func SelfSupportForSchoolDataStatisticsExport(req md.SelfSupportForSchoolDataSta | |||||
for _, v := range deviceList { | for _, v := range deviceList { | ||||
deviceListMapping[v.DeviceSn] = *v | deviceListMapping[v.DeviceSn] = *v | ||||
var m []*db.SelfSupportForSchoolOrdWithUserIdentityV2 | var m []*db.SelfSupportForSchoolOrdWithUserIdentityV2 | ||||
sess := db.Db.Where("device_sn = ?", v.DeviceSn).Desc("self_support_for_school_ord.id") | |||||
sess := db.Db.Where("device_sn = ?", v.DeviceSn).And("enterprise_id =?", req.EnterpriseId).Desc("self_support_for_school_ord.id") | |||||
if req.EnterpriseId != 0 { | if req.EnterpriseId != 0 { | ||||
sess.And("self_support_for_school_ord.enterprise_id =?", req.EnterpriseId) | sess.And("self_support_for_school_ord.enterprise_id =?", req.EnterpriseId) | ||||
} | } | ||||
@@ -6,6 +6,7 @@ import ( | |||||
"applet/app/customer/md" | "applet/app/customer/md" | ||||
"applet/app/customer/svc" | "applet/app/customer/svc" | ||||
"applet/app/db" | "applet/app/db" | ||||
"applet/app/db/model" | |||||
"applet/app/e" | "applet/app/e" | ||||
"applet/app/enum" | "applet/app/enum" | ||||
svc3 "applet/app/svc" | svc3 "applet/app/svc" | ||||
@@ -104,6 +105,31 @@ func WxPay(c *gin.Context) { | |||||
} | } | ||||
func Demo(c *gin.Context) { | func Demo(c *gin.Context) { | ||||
sysCfgDb := db.SysCfgDb{} | |||||
sysCfgDb.Set() | |||||
sysCfg := sysCfgDb.SysCfgFindWithDb(enum.OpenAppletAppid, enum.OpenAppletAppPrivateKey, enum.OpenAppletPublicKey) | |||||
err, info := svc.CurlEducateSceneTokenQueryV2(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: "A", | |||||
CertNo: "440881201010205523", | |||||
StudentName: "龙佩滢", | |||||
OutUserId: "1001", | |||||
SchoolStdCode: "12440403MB2D752515", | |||||
}, &model.UserIdentity{}, "", "") | |||||
if err != nil { | |||||
e.OutErr(c, e.ERR, err.Error()) | |||||
return | |||||
} | |||||
e.OutSuc(c, info, nil) | |||||
return | |||||
ordNo := c.DefaultQuery("ord_no", "") | ordNo := c.DefaultQuery("ord_no", "") | ||||
svc2.JudgePackageOrdOrdState(ordNo) | svc2.JudgePackageOrdOrdState(ordNo) | ||||
e.OutSuc(c, nil, nil) | e.OutSuc(c, nil, nil) | ||||
@@ -194,8 +194,8 @@ func CurlEducateSceneTokenQuery(args md.CurlEducateSceneTokenReq, userIdentity * | |||||
Msg string `json:"msg"` | Msg string `json:"msg"` | ||||
Data interface{} `json:"data"` | Data interface{} `json:"data"` | ||||
} | } | ||||
utils.FilePutContents("CurlEducateSceneTokenCreate", utils.SerializeStr(result)) | |||||
err1 = json.Unmarshal(bytes, &result) | err1 = json.Unmarshal(bytes, &result) | ||||
utils.FilePutContents("CurlEducateSceneTokenCreate", utils.SerializeStr(result)) | |||||
if err1 != nil { | if err1 != nil { | ||||
return | return | ||||
} | } | ||||
@@ -232,8 +232,158 @@ func CurlEducateSceneTokenQuery(args md.CurlEducateSceneTokenReq, userIdentity * | |||||
Msg string `json:"msg"` | Msg string `json:"msg"` | ||||
Data interface{} `json:"data"` | Data interface{} `json:"data"` | ||||
} | } | ||||
err = json.Unmarshal(bytes, &result1) | |||||
utils.FilePutContents("CurlEducateSceneTokenQuery", utils.SerializeStr(result1)) | utils.FilePutContents("CurlEducateSceneTokenQuery", utils.SerializeStr(result1)) | ||||
if err != nil { | |||||
return | |||||
} | |||||
if result1.Code != 0 { | |||||
if result1.Msg != "" { | |||||
err = errors.New(result1.Msg) | |||||
return | |||||
} | |||||
err = errors.New("请求智慧餐厅支付 异常/失败") | |||||
return | |||||
} | |||||
// 更新/新增 `self_support_for_user_facel_info` | |||||
selfSupportForUserFaceInfoDb := db.SelfSupportForUserFaceInfoDb{} | |||||
selfSupportForUserFaceInfoDb.Set(userIdentity.Id) | |||||
info, err := selfSupportForUserFaceInfoDb.GetSelfSupportForUserFaceInfo() | |||||
if err != nil { | |||||
return | |||||
} | |||||
now := time.Now().Format("2006-01-02 15:04:05") | |||||
var res map[string]string | |||||
utils.Unserialize([]byte(utils.SerializeStr(result1.Data)), &res) | |||||
if info == nil { | |||||
var concentrateSchoolFacePassStatus = 1 | |||||
if res["school_face_pass_status"] == "OPEN" { | |||||
concentrateSchoolFacePassStatus = 3 | |||||
} | |||||
info = &model.SelfSupportForUserFaceInfo{ | |||||
EnterpriseId: userIdentity.EnterpriseId, | |||||
UserIdentityId: userIdentity.Id, | |||||
CollectFaceType: 1, | |||||
SchoolCode: res["school_code"], | |||||
SchoolStdCode: res["school_std_code"], | |||||
ParentUserId: res["parent_user_id"], | |||||
ParentLogonId: res["parent_logon_id"], | |||||
UserId: res["user_id"], | |||||
SchoolFacePassStatus: res["school_face_pass_status"], | |||||
SchoolFacePaymentStatus: res["school_face_payment_status"], | |||||
ConcentrateSchoolFacePassStatus: concentrateSchoolFacePassStatus, | |||||
CreateAt: now, | |||||
UpdateAt: now, | |||||
} | |||||
_, err2 := selfSupportForUserFaceInfoDb.SelfSupportForUserFaceInfoInsert(info) | |||||
if err2 != nil { | |||||
return err2, nil | |||||
} | |||||
} else { | |||||
var concentrateSchoolFacePassStatus = info.ConcentrateSchoolFacePassStatus | |||||
if res["school_face_pass_status"] == "OPEN" { | |||||
concentrateSchoolFacePassStatus = 3 | |||||
} | |||||
info.ParentUserId = res["parent_user_id"] | |||||
info.ParentLogonId = res["parent_logon_id"] | |||||
info.UserId = res["user_id"] | |||||
info.SchoolFacePassStatus = res["school_face_pass_status"] | |||||
info.SchoolFacePaymentStatus = res["school_face_payment_status"] | |||||
info.ConcentrateSchoolFacePassStatus = concentrateSchoolFacePassStatus | |||||
info.UpdateAt = now | |||||
_, err2 := selfSupportForUserFaceInfoDb.SelfSupportForUserFaceInfoUpdate(info, "parent_user_id", "parent_logon_id", "user_id", "school_face_pass_status", "school_face_payment_status", "concentrate_school_face_pass_status", "update_at") | |||||
if err2 != nil { | |||||
return err2, nil | |||||
} | |||||
} | |||||
//TODO:: school_face_pass_status && school_face_payment_status 都为 open 状态,则 签约信息同步“alipay.planet.ecocampus.api.roster.signUpInfo” 至 行业云 | |||||
CurlAlipayPlanetEcocampusApiRosterSignUpInfo(md.CurlAlipayPlanetEcocampusApiRosterSignUpInfoReq{ | |||||
FaceUid: info.UserId, | |||||
ParentUid: info.ParentUserId, | |||||
ParentLogonId: info.ParentLogonId, | |||||
RosterName: args.StudentName, | |||||
OutRosterCode: args.OutUserId, | |||||
SchoolCode: info.SchoolCode, | |||||
SchoolName: schoolName, | |||||
ScanFacePayStatus: "ON", | |||||
FaceOpenStatus: "ON", | |||||
}) | |||||
return nil, result1.Data | |||||
} | |||||
func CurlEducateSceneTokenQueryV2(args md.CurlEducateSceneTokenReq, userIdentity *model.UserIdentity, userToken, schoolName string) (err error, resp interface{}) { | |||||
utils.FilePutContents("CurlEducateSceneTokenQuery", utils.SerializeStr(map[string]interface{}{ | |||||
"args": args, | |||||
})) | |||||
if userToken == "" { | |||||
//1、TODO::生成用户信息token(使用 alipay.commerce.educate.scene.token.create 接口生成用户信息token) | |||||
url := cfg.SmartCanteenPay + "/alipay/faceCollection/educateSceneTokenCreate" | |||||
bytes, err1 := 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", | |||||
}), nil) | |||||
if err1 != nil { | |||||
return | |||||
} | |||||
var result struct { | |||||
Code int `json:"code"` | |||||
Msg string `json:"msg"` | |||||
Data interface{} `json:"data"` | |||||
} | |||||
err1 = json.Unmarshal(bytes, &result) | |||||
utils.FilePutContents("CurlEducateSceneTokenCreate", utils.SerializeStr(result)) | |||||
if err1 != nil { | |||||
return | |||||
} | |||||
if result.Code != 0 { | |||||
if result.Msg != "" { | |||||
err1 = errors.New(result.Msg) | |||||
return | |||||
} | |||||
err1 = errors.New("请求智慧餐厅支付 异常/失败") | |||||
return | |||||
} | |||||
resultMap, ok := result.Data.(map[string]interface{}) | |||||
if !ok { | |||||
err1 = errors.New("获取 user_token 失败") | |||||
return | |||||
} | |||||
if resultMap["code"].(string) != "10000" { | |||||
return nil, resultMap | |||||
} | |||||
userToken = resultMap["token"].(string) | |||||
} | |||||
//2、TODO::查询用户一脸通行开通状态:根据获取到的用户信息token,使用 alipay.commerce.educate.scene.token.query 接口查询用户人脸采集状态 | |||||
url := cfg.SmartCanteenPay + "/alipay/faceCollection/educateSceneTokenQuery" | |||||
bytes, err := utils.CurlPost(url, utils.Serialize(map[string]string{ | |||||
"user_token": userToken, | |||||
}), nil) | |||||
if err != nil { | |||||
return | |||||
} | |||||
var result1 struct { | |||||
Code int `json:"code"` | |||||
Msg string `json:"msg"` | |||||
Data interface{} `json:"data"` | |||||
} | |||||
err = json.Unmarshal(bytes, &result1) | err = json.Unmarshal(bytes, &result1) | ||||
utils.FilePutContents("CurlEducateSceneTokenQuery", utils.SerializeStr(result1)) | |||||
if err != nil { | if err != nil { | ||||
return | return | ||||
} | } | ||||
@@ -245,6 +395,9 @@ func CurlEducateSceneTokenQuery(args md.CurlEducateSceneTokenReq, userIdentity * | |||||
err = errors.New("请求智慧餐厅支付 异常/失败") | err = errors.New("请求智慧餐厅支付 异常/失败") | ||||
return | return | ||||
} | } | ||||
return nil, result1.Data | |||||
// 更新/新增 `self_support_for_user_facel_info` | // 更新/新增 `self_support_for_user_facel_info` | ||||
selfSupportForUserFaceInfoDb := db.SelfSupportForUserFaceInfoDb{} | selfSupportForUserFaceInfoDb := db.SelfSupportForUserFaceInfoDb{} | ||||
selfSupportForUserFaceInfoDb.Set(userIdentity.Id) | selfSupportForUserFaceInfoDb.Set(userIdentity.Id) | ||||
@@ -433,11 +586,11 @@ func CurlEducateSceneTokenCreateForApplet(args md.CurlEducateSceneTokenReq) (err | |||||
Msg string `json:"msg"` | Msg string `json:"msg"` | ||||
Data interface{} `json:"data"` | Data interface{} `json:"data"` | ||||
} | } | ||||
utils.FilePutContents("CurlEducateSceneTokenCreateForApplet", utils.SerializeStr(result)) | |||||
err = json.Unmarshal(bytes, &result) | err = json.Unmarshal(bytes, &result) | ||||
if err != nil { | if err != nil { | ||||
return | return | ||||
} | } | ||||
utils.FilePutContents("CurlEducateSceneTokenCreateForApplet", utils.SerializeStr(result)) | |||||
if result.Code != 0 { | if result.Code != 0 { | ||||
if result.Msg != "" { | if result.Msg != "" { | ||||
err = errors.New(result.Msg) | err = errors.New(result.Msg) | ||||