diff --git a/api/controller/Question.go b/api/controller/Question.go index ac22c18..3d559de 100644 --- a/api/controller/Question.go +++ b/api/controller/Question.go @@ -11,6 +11,7 @@ import ( "hepa-calc-admin-api/global" "hepa-calc-admin-api/utils" "strconv" + "time" ) type Question struct{} @@ -549,3 +550,49 @@ func (b *Question) PutQuestionHideStatus(c *gin.Context) { tx.Commit() responses.Ok(c) } + +// GetQuestionPrice 获取问题价格 +func (b *Question) GetQuestionPrice(c *gin.Context) { + // 获取问题数据 + questionDao := dao.QuestionDao{} + maps := make(map[string]interface{}) + maps["question_status"] = 1 + questions, err := questionDao.GetQuestionList(maps) + if err != nil { + responses.FailWithMessage("分类异常", c) + return + } + + // 计算总价 + var price float64 + var discountPrice *float64 + + for _, question := range questions { + // 总价 + price = price + question.Price + + // 处理折扣价格 + if question.DiscountPrice != nil { + if question.DiscountEndTime != nil { + discountEndTime := time.Time(*question.DiscountEndTime) + diffTime := time.Now().Sub(discountEndTime) + if diffTime > 0 { + continue + } + } + } + + if discountPrice == nil { + discountPrice = question.DiscountPrice + } else { + d := *discountPrice + *question.DiscountPrice + discountPrice = &d + } + } + + var g dto.QuestionPriceDto + g.Price = price + g.DiscountPrice = discountPrice + + responses.OkWithData(g, c) +} diff --git a/api/dto/Question.go b/api/dto/Question.go index 38afe31..99aff64 100644 --- a/api/dto/Question.go +++ b/api/dto/Question.go @@ -27,6 +27,12 @@ type QuestionDto struct { BaseClass []*BaseClassDto `json:"base_class"` // 关联分类 } +// QuestionPriceDto 问题价格 +type QuestionPriceDto struct { + Price float64 `json:"price"` // 价格(原价) + DiscountPrice *float64 `json:"discount_price"` // 优惠价格 +} + // GetQuestionDto 详情-问题 func GetQuestionDto(m *model.Question) *QuestionDto { return &QuestionDto{ diff --git a/api/requests/AdminUser.go b/api/requests/AdminUser.go index 8da909c..0679e3c 100644 --- a/api/requests/AdminUser.go +++ b/api/requests/AdminUser.go @@ -25,14 +25,14 @@ type GetAdminUserPage struct { // AddAdminUser 新增 type AddAdminUser struct { - Access string `json:"access" form:"access" label:"账号"` - Password string `json:"password" form:"password" label:"密码"` - NickName string `json:"nick_name" form:"nick_name" label:"昵称"` - IsAdmin int `json:"is_admin" form:"is_admin" label:"是否管理员"` // 是否管理员(0:否 1:是) - Status *int `json:"status" form:"status" label:"状态"` // 状态(1:正常 2:审核中 3:审核失败) - IsDeleted *int `json:"is_deleted" form:"is_deleted" label:"是否被删除"` // 是否被删除(0:否 1:是) - IsDisabled *int `json:"is_disabled" form:"is_disabled" label:"是否被禁用"` // 是否被禁用(0:否 1:是) - Phone string `json:"phone" form:"phone" label:"手机号"` + Access string `json:"access" form:"access" label:"账号" validate:"required"` + Password string `json:"password" form:"password" label:"密码" validate:"required"` + NickName string `json:"nick_name" form:"nick_name" label:"昵称" validate:"required"` + IsAdmin int `json:"is_admin" form:"is_admin" label:"是否管理员" validate:"omitempty,oneof=0 1"` // 是否管理员(0:否 1:是) + Status *int `json:"status" form:"status" label:"状态" validate:"required,oneof=1 2 3"` // 状态(1:正常 2:审核中 3:审核失败) + IsDeleted *int `json:"is_deleted" form:"is_deleted" label:"是否被删除" validate:"omitempty,oneof=0 1"` // 是否被删除(0:否 1:是) + IsDisabled *int `json:"is_disabled" form:"is_disabled" label:"是否被禁用" validate:"omitempty,oneof=0 1"` // 是否被禁用(0:否 1:是) + Phone string `json:"phone" form:"phone" label:"手机号" validate:"required"` Avatar string `json:"avatar" form:"avatar" label:"头像"` Sex int `json:"sex" form:"sex" label:"性别"` Email string `json:"email" form:"email" label:"邮箱"` @@ -41,13 +41,13 @@ type AddAdminUser struct { // PutAdminUser 修改 type PutAdminUser struct { Access string `json:"access" form:"access" validate:"required" label:"账号"` - IsDeleted int `json:"is_deleted" form:"is_deleted" validate:"oneof=0 1" label:"删除状态"` // 是否被删除(0:否 1:是) - IsDisabled int `json:"is_disabled" form:"is_disabled" validate:"oneof=0 1" label:"禁用状态"` // 是否被禁用(0:否 1:是) + IsDeleted int `json:"is_deleted" form:"is_deleted" validate:"omitempty,oneof=0 1" label:"删除状态"` // 是否被删除(0:否 1:是) + IsDisabled int `json:"is_disabled" form:"is_disabled" validate:"omitempty,oneof=0 1" label:"禁用状态"` // 是否被禁用(0:否 1:是) NickName string `json:"nick_name" form:"nick_name" validate:"required" label:"昵称"` - IsAdmin int `json:"is_admin" form:"is_admin" label:"是否管理员"` // 是否管理员(0:否 1:是) + IsAdmin int `json:"is_admin" form:"is_admin" label:"是否管理员" validate:"omitempty,oneof=0 1"` // 是否管理员(0:否 1:是) Phone string `json:"phone" form:"phone" validate:"required" label:"手机号"` Avatar string `json:"avatar" form:"avatar" label:"头像"` - Sex int `json:"sex" form:"sex" validate:"required,oneof=1 2" label:"性别"` // (1:男 2:女) + Sex int `json:"sex" form:"sex" validate:"omitempty,oneof=1 2" label:"性别"` // (1:男 2:女) Email string `json:"email" form:"email" label:"邮箱"` } diff --git a/api/router/router.go b/api/router/router.go index d22a6e6..0b7adc6 100644 --- a/api/router/router.go +++ b/api/router/router.go @@ -284,6 +284,9 @@ func privateRouter(r *gin.Engine, api controller.Api) { // 操作问题隐藏状态 questionGroup.PUT("/hide/:question_id", api.Question.PutQuestionHideStatus) + + // 获取问题价格 + questionGroup.GET("/price", api.Question.GetQuestionPrice) } // 配置