feat: implement gas and delivery admin systems
This commit is contained in:
79
backend/api/internal/logic/gas/scope.go
Normal file
79
backend/api/internal/logic/gas/scope.go
Normal file
@@ -0,0 +1,79 @@
|
||||
package gas
|
||||
|
||||
import (
|
||||
"git.apinb.com/bsm-sdk/core/errcode"
|
||||
"git.apinb.com/bsm-sdk/core/infra"
|
||||
"git.apinb.com/heqiapp/platforms/backend/api/internal/impl"
|
||||
"git.apinb.com/heqiapp/platforms/backend/api/internal/logic/common"
|
||||
"git.apinb.com/heqiapp/platforms/backend/api/internal/models"
|
||||
"github.com/gin-gonic/gin"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
func currentGas(ctx *gin.Context) (models.GasBasic, bool) {
|
||||
_, station, ok := CurrentGasAccount(ctx)
|
||||
return station, ok
|
||||
}
|
||||
|
||||
func respondList(ctx *gin.Context, list any, total int64) {
|
||||
response, err := common.PublicResourceResponse(list)
|
||||
if err != nil {
|
||||
infra.Response.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
infra.Response.Success(ctx, gin.H{"total": total, "list": response})
|
||||
}
|
||||
|
||||
func respondScopedRecord(ctx *gin.Context, query *gorm.DB, model any) {
|
||||
if err := query.First(model).Error; err != nil {
|
||||
common.RespondRecordError(ctx, err)
|
||||
return
|
||||
}
|
||||
response, err := common.PublicResourceResponse(model)
|
||||
if err != nil {
|
||||
infra.Response.Error(ctx, err)
|
||||
return
|
||||
}
|
||||
infra.Response.Success(ctx, response)
|
||||
}
|
||||
|
||||
func requireDelivery(ctx *gin.Context, identity string, gasID uint64) (models.DeliveryBasic, bool) {
|
||||
var delivery models.DeliveryBasic
|
||||
if err := common.ActiveRecords(impl.DBService).
|
||||
Where("identity = ? AND gas_basic_id = ?", identity, gasID).First(&delivery).Error; err != nil {
|
||||
infra.Response.Error(ctx, errcode.ErrInvalidArgument)
|
||||
return models.DeliveryBasic{}, false
|
||||
}
|
||||
return delivery, true
|
||||
}
|
||||
|
||||
func requireStaff(ctx *gin.Context, identity string, gasID uint64) (models.StaffAccount, bool) {
|
||||
var staff models.StaffAccount
|
||||
if err := common.ActiveRecords(impl.DBService).
|
||||
Where("identity = ? AND gas_basic_id = ?", identity, gasID).First(&staff).Error; err != nil {
|
||||
infra.Response.Error(ctx, errcode.ErrInvalidArgument)
|
||||
return models.StaffAccount{}, false
|
||||
}
|
||||
return staff, true
|
||||
}
|
||||
|
||||
func requireUser(ctx *gin.Context, identity string, gasID uint64) (models.UserAccount, models.UserServiceRelation, bool) {
|
||||
var user models.UserAccount
|
||||
var relation models.UserServiceRelation
|
||||
err := common.ActiveRecords(impl.DBService.Model(&models.UserAccount{})).
|
||||
Select("user_account.*").
|
||||
Joins("JOIN user_service_relation ON user_service_relation.user_account_id = user_account.id AND user_service_relation.status <> ?",
|
||||
common.StatusArchived).
|
||||
Where("user_account.identity = ? AND user_service_relation.gas_basic_id = ?", identity, gasID).
|
||||
First(&user).Error
|
||||
if err != nil {
|
||||
infra.Response.Error(ctx, errcode.ErrInvalidArgument)
|
||||
return models.UserAccount{}, models.UserServiceRelation{}, false
|
||||
}
|
||||
if err := common.ActiveRecords(impl.DBService).
|
||||
Where("user_account_id = ? AND gas_basic_id = ?", user.ID, gasID).First(&relation).Error; err != nil {
|
||||
infra.Response.Error(ctx, errcode.ErrInvalidArgument)
|
||||
return models.UserAccount{}, models.UserServiceRelation{}, false
|
||||
}
|
||||
return user, relation, true
|
||||
}
|
||||
Reference in New Issue
Block a user