package common import ( "context" "strconv" "lone-services/pkg/modelbase" "lone-services/pkg/utils" analysis "lone-services/rpc/analysis/pb" "lone-services/services/analysis/internal/dao" "lone-services/services/analysis/internal/model" ) func RequireLogin(ctx context.Context) (utils.UserInfo, *analysis.Response) { user := utils.GetUserFromCtx(ctx) if !user.Valid { return user, FailResponse(utils.ErrorNoLogin) } return user, nil } func NotYoursResponse() *analysis.Response { return OutResponse(utils.ErrorNotFund, "该数据不属于您") } func GetAuthUser(login utils.UserInfo, requestUserId int64) (int64, error) { if login.Type == dao.TypeUser { return login.BizId, nil } if login.Type == dao.TypeStore { return AuthUser(login.BizId, requestUserId) } return utils.NumberZero, nil } func GetAuthUserID(login utils.UserInfo, recordUserId int64) (int64, error) { if login.Type == dao.TypeUser { if login.BizId != recordUserId { return utils.NumberZero, nil } return login.BizId, nil } if login.Type == dao.TypeStore { return AuthUser(login.BizId, recordUserId) } return utils.NumberZero, nil } func AuthUser(storeId, userId int64) (int64, error) { return authUser(storeId, userId, true) } func AuthUserNoExpiry(storeId, userId int64) (int64, error) { return authUser(storeId, userId, false) } func authUser(storeId, userId int64, checkExpiry bool) (int64, error) { if storeId < utils.NumberOne || userId < utils.NumberOne { return utils.NumberZero, nil } params := modelbase.Params{ Eq: map[string]string{ "user_id": strconv.FormatInt(userId, utils.NumberTen), "store_id": strconv.FormatInt(storeId, utils.NumberTen), "status": strconv.Itoa(utils.StatusOk), }, } if checkExpiry { params.Other = map[string]string{ "validity_time >= ?": utils.Now().String(), } } var auth dao.UserStoreAuth err := model.UserStoreAuthModel{}.Init().GetOne(params, &auth) if err != nil { return utils.NumberZero, err } if auth.Id < utils.NumberOne { return utils.NumberZero, nil } return userId, nil }