Compare commits

...

10 Commits

17 changed files with 247 additions and 125 deletions

View File

@ -238,20 +238,21 @@ func (r *Coupon) AddSystemCoupon(c *gin.Context) {
// 新增优惠卷表 // 新增优惠卷表
coupon := &model.Coupon{ coupon := &model.Coupon{
CouponName: req.CouponName, CouponName: req.CouponName,
CouponType: req.CouponType, CouponType: req.CouponType,
CouponStatus: 1, CouponStatus: 1,
ApplicationScope: req.ApplicationScope, ApplicationScope: req.ApplicationScope,
IsMutex: req.IsMutex, DistributionObject: req.DistributionObject,
CouponCount: req.CouponCount, IsMutex: req.IsMutex,
CouponTakeCount: 0, CouponCount: req.CouponCount,
CouponUsedCount: 0, CouponTakeCount: 0,
CouponPrice: req.CouponPrice, CouponUsedCount: 0,
ValidType: req.ValidType, CouponPrice: req.CouponPrice,
ValidStartTime: nil, ValidType: req.ValidType,
ValidEndTime: nil, ValidStartTime: nil,
CouponDesc: req.CouponDesc, ValidEndTime: nil,
SystemMemberIds: strings.Join(systemMemberIds, ","), CouponDesc: req.CouponDesc,
SystemMemberIds: strings.Join(systemMemberIds, ","),
} }
// 符合满减标准金额 // 符合满减标准金额

View File

@ -13,6 +13,7 @@ import (
"hepa-calc-admin-api/extend/aliyun" "hepa-calc-admin-api/extend/aliyun"
"hepa-calc-admin-api/global" "hepa-calc-admin-api/global"
"hepa-calc-admin-api/utils" "hepa-calc-admin-api/utils"
"math"
"sort" "sort"
"time" "time"
) )
@ -200,7 +201,7 @@ func (b *Public) GetIndex(c *gin.Context) {
MemberBuyCount: memberBuyCount, MemberBuyCount: memberBuyCount,
MemberAmountTotal: memberAmountTotal, MemberAmountTotal: memberAmountTotal,
SingleAmountTotal: singleAmountTotal, SingleAmountTotal: singleAmountTotal,
AmountTotal: memberAmountTotal + singleAmountTotal, AmountTotal: math.Round((memberAmountTotal+singleAmountTotal)*100) / 100,
} }
responses.OkWithData(g, c) responses.OkWithData(g, c)

View File

@ -10,7 +10,9 @@ import (
"hepa-calc-admin-api/api/service" "hepa-calc-admin-api/api/service"
"hepa-calc-admin-api/global" "hepa-calc-admin-api/global"
"hepa-calc-admin-api/utils" "hepa-calc-admin-api/utils"
"math"
"strconv" "strconv"
"time"
) )
type Question struct{} type Question struct{}
@ -549,3 +551,54 @@ func (b *Question) PutQuestionHideStatus(c *gin.Context) {
tx.Commit() tx.Commit()
responses.Ok(c) 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 + math.Round(question.Price*100)
// 处理折扣价格
if question.DiscountPrice != nil {
if question.DiscountEndTime != nil {
discountEndTime := time.Time(*question.DiscountEndTime)
diffTime := time.Now().Sub(discountEndTime)
if diffTime > 0 {
continue
}
}
d := math.Round(*question.DiscountPrice * 100)
if discountPrice == nil {
discountPrice = &d
} else {
d = d + *discountPrice
discountPrice = &d
}
}
}
var g dto.QuestionPriceDto
g.Price = price / 100
if discountPrice != nil {
u := *discountPrice / 100
g.DiscountPrice = &u
}
responses.OkWithData(g, c)
}

View File

@ -239,6 +239,11 @@ func (r *AdminUser) PutAdminUser(c *gin.Context) {
return return
} }
if loginUserId == userId && (req.Status == 1 || req.Status == 2 || req.Status == 3) {
responses.FailWithMessage("不可修改自己用户状态", c)
return
}
if loginUserId != userId && loginAdminUser.IsAdmin != 1 { if loginUserId != userId && loginAdminUser.IsAdmin != 1 {
responses.FailWithMessage("非管理员用户只可修改自己数据", c) responses.FailWithMessage("非管理员用户只可修改自己数据", c)
return return
@ -285,6 +290,7 @@ func (r *AdminUser) PutAdminUser(c *gin.Context) {
data := make(map[string]interface{}) data := make(map[string]interface{})
data["access"] = req.Access data["access"] = req.Access
data["status"] = req.Status
data["is_deleted"] = req.IsDeleted data["is_deleted"] = req.IsDeleted
data["is_disabled"] = req.IsDisabled data["is_disabled"] = req.IsDisabled
data["nick_name"] = req.NickName data["nick_name"] = req.NickName

View File

@ -140,6 +140,11 @@ func (r *AdminUserDao) GetAdminUserPageSearch(req requests.GetAdminUserPage, pag
query = query.Where("is_disabled = ?", req.IsDisabled) query = query.Where("is_disabled = ?", req.IsDisabled)
} }
// 是否管理员
if req.IsAdmin != nil {
query = query.Where("is_admin = ?", req.IsAdmin)
}
// 手机号 // 手机号
if req.Phone != "" { if req.Phone != "" {
query = query.Where("phone LIKE ?", "%"+req.Phone+"%") query = query.Where("phone LIKE ?", "%"+req.Phone+"%")

View File

@ -271,6 +271,14 @@ func (r *QuestionDao) GetQuestionPageSearch(req requests.GetQuestionPage, page,
query = query.Order("discount_price " + req.Order.DiscountPrice) query = query.Order("discount_price " + req.Order.DiscountPrice)
} }
if req.Order.CreatedAt != "" {
if req.Order.CreatedAt != "desc" && req.Order.CreatedAt != "asc" {
return nil, 0, errors.New("排序字段错误")
}
query = query.Order("created_at " + req.Order.CreatedAt)
}
if req.Order.UpdatedAt != "" { if req.Order.UpdatedAt != "" {
if req.Order.UpdatedAt != "desc" && req.Order.UpdatedAt != "asc" { if req.Order.UpdatedAt != "desc" && req.Order.UpdatedAt != "asc" {
return nil, 0, errors.New("排序字段错误") return nil, 0, errors.New("排序字段错误")

View File

@ -184,15 +184,25 @@ func (r *UserDao) GetUserPageSearch(req requests.GetUserPage, page, pageSize int
// 信息完善状态 // 信息完善状态
if req.IsInfoComplete != nil { if req.IsInfoComplete != nil {
subQuery := global.Db.Model(&model.UserInfo{}). if *req.IsInfoComplete == true {
Where("user_info.user_id = user.user_id"). subQuery := global.Db.Model(&model.UserInfo{}).
Where("user_info.height != '' "). Where("user_info.user_id = user.user_id").
Where("user_info.weight != '' "). Where("user_info.height != '' ").
Where("user_info.is_family_history is not NULL"). Where("user_info.weight != '' ").
Where("user_info.province_id is not NULL"). Where("user_info.is_family_history is not NULL").
Select("1") Where("user_info.province_id is not NULL").
Select("1")
query = query.Where("EXISTS (?)", subQuery) query = query.Where("EXISTS (?)", subQuery)
} else {
subQuery := global.Db.Model(&model.UserInfo{}).
Where("user_info.user_id = user.user_id").
Or("user_info.height = '' ").
Or("user_info.weight = '' ").
Or("user_info.is_family_history is NULL").
Or("user_info.province_id is NULL").
Select("1")
query = query.Where("EXISTS (?)", subQuery)
}
} }
// 排序 // 排序

View File

@ -7,25 +7,26 @@ import (
) )
type CouponDto struct { type CouponDto struct {
CouponId string `json:"coupon_id"` // 主键id CouponId string `json:"coupon_id"` // 主键id
CouponName string `json:"coupon_name"` // 优惠券名称 CouponName string `json:"coupon_name"` // 优惠券名称
CouponType int `json:"coupon_type"` // 优惠券类型1:无门槛 2:满减) CouponType int `json:"coupon_type"` // 优惠券类型1:无门槛 2:满减)
CouponStatus int `json:"coupon_status"` // 状态1:正常 2:强制失效 3:结束 4:删除) CouponStatus int `json:"coupon_status"` // 状态1:正常 2:强制失效 3:结束 4:删除)
ApplicationScope int `json:"application_scope"` // 适用范围1:全场通用) ApplicationScope int `json:"application_scope"` // 适用范围1:全场通用)
IsMutex int `json:"is_mutex"` // 是否互斥0:否 1:是) DistributionObject int `json:"distribution_object"` // 发放对象1:全部用户 2:新注册用户 3:会员 4:完善资料)
CouponCount int `json:"coupon_count"` // 发放数量 IsMutex int `json:"is_mutex"` // 是否互斥0:否 1:是)
CouponTakeCount int `json:"coupon_take_count"` // 已领取数量 CouponCount int `json:"coupon_count"` // 发放数量
CouponUsedCount int `json:"coupon_used_count"` // 已使用数量 CouponTakeCount int `json:"coupon_take_count"` // 已领取数量
CouponPrice float64 `json:"coupon_price"` // 优惠券金额 CouponUsedCount int `json:"coupon_used_count"` // 已使用数量
WithAmount float64 `json:"with_amount"` // 符合满减标准金额(优惠券类型为满减时使用) CouponPrice float64 `json:"coupon_price"` // 优惠券金额
ValidType int `json:"valid_type"` // 有效类型1:绝对时效xxx-xxx时间段有效 2:相对时效 n天内有效 WithAmount float64 `json:"with_amount"` // 符合满减标准金额(优惠券类型为满减时使用)
ValidDays int `json:"valid_days"` // 自领取之日起有效天数 ValidType int `json:"valid_type"` // 有效类型1:绝对时效xxx-xxx时间段有效 2:相对时效 n天内有效
ValidStartTime *model.LocalTime `json:"valid_start_time"` // 开始使用时间 ValidDays int `json:"valid_days"` // 自领取之日起有效天数
ValidEndTime *model.LocalTime `json:"valid_end_time"` // 结束使用时间 ValidStartTime *model.LocalTime `json:"valid_start_time"` // 开始使用时间
SystemMemberIds []*string `json:"system_member_ids"` // 会员id适用范围为会员时生效如果此项为null则表示所有会员通用 ValidEndTime *model.LocalTime `json:"valid_end_time"` // 结束使用时间
CouponDesc string `json:"coupon_desc"` // 优惠券描述 SystemMemberIds []*string `json:"system_member_ids"` // 会员id适用范围为会员时生效如果此项为null则表示所有会员通用
CreatedAt model.LocalTime `json:"created_at"` // 创建时间 CouponDesc string `json:"coupon_desc"` // 优惠券描述
UpdatedAt model.LocalTime `json:"updated_at"` // 更新时间 CreatedAt model.LocalTime `json:"created_at"` // 创建时间
UpdatedAt model.LocalTime `json:"updated_at"` // 更新时间
} }
// GetCouponListDto 列表 // GetCouponListDto 列表
@ -36,22 +37,23 @@ func GetCouponListDto(m []*model.Coupon) []*CouponDto {
if len(m) > 0 { if len(m) > 0 {
for i, v := range m { for i, v := range m {
response := &CouponDto{ response := &CouponDto{
CouponId: fmt.Sprintf("%d", v.CouponId), CouponId: fmt.Sprintf("%d", v.CouponId),
CouponName: v.CouponName, CouponName: v.CouponName,
CouponType: v.CouponType, CouponType: v.CouponType,
CouponStatus: v.CouponStatus, CouponStatus: v.CouponStatus,
ApplicationScope: v.ApplicationScope, ApplicationScope: v.ApplicationScope,
IsMutex: v.IsMutex, DistributionObject: v.DistributionObject,
CouponCount: v.CouponCount, IsMutex: v.IsMutex,
CouponTakeCount: v.CouponTakeCount, CouponCount: v.CouponCount,
CouponUsedCount: v.CouponUsedCount, CouponTakeCount: v.CouponTakeCount,
CouponPrice: v.CouponPrice, CouponUsedCount: v.CouponUsedCount,
ValidType: v.ValidType, CouponPrice: v.CouponPrice,
ValidStartTime: v.ValidStartTime, ValidType: v.ValidType,
ValidEndTime: v.ValidEndTime, ValidStartTime: v.ValidStartTime,
CouponDesc: v.CouponDesc, ValidEndTime: v.ValidEndTime,
CreatedAt: v.CreatedAt, CouponDesc: v.CouponDesc,
UpdatedAt: v.UpdatedAt, CreatedAt: v.CreatedAt,
UpdatedAt: v.UpdatedAt,
} }
if v.WithAmount != nil { if v.WithAmount != nil {
@ -78,22 +80,23 @@ func GetCouponListDto(m []*model.Coupon) []*CouponDto {
// GetCouponDto 优惠卷详情 // GetCouponDto 优惠卷详情
func GetCouponDto(m *model.Coupon) *CouponDto { func GetCouponDto(m *model.Coupon) *CouponDto {
response := &CouponDto{ response := &CouponDto{
CouponId: fmt.Sprintf("%d", m.CouponId), CouponId: fmt.Sprintf("%d", m.CouponId),
CouponName: m.CouponName, CouponName: m.CouponName,
CouponType: m.CouponType, CouponType: m.CouponType,
CouponStatus: m.CouponStatus, CouponStatus: m.CouponStatus,
ApplicationScope: m.ApplicationScope, ApplicationScope: m.ApplicationScope,
IsMutex: m.IsMutex, DistributionObject: m.DistributionObject,
CouponCount: m.CouponCount, IsMutex: m.IsMutex,
CouponTakeCount: m.CouponTakeCount, CouponCount: m.CouponCount,
CouponUsedCount: m.CouponUsedCount, CouponTakeCount: m.CouponTakeCount,
CouponPrice: m.CouponPrice, CouponUsedCount: m.CouponUsedCount,
ValidType: m.ValidType, CouponPrice: m.CouponPrice,
ValidStartTime: m.ValidStartTime, ValidType: m.ValidType,
ValidEndTime: m.ValidEndTime, ValidStartTime: m.ValidStartTime,
CouponDesc: m.CouponDesc, ValidEndTime: m.ValidEndTime,
CreatedAt: m.CreatedAt, CouponDesc: m.CouponDesc,
UpdatedAt: m.UpdatedAt, CreatedAt: m.CreatedAt,
UpdatedAt: m.UpdatedAt,
} }
if m.WithAmount != nil { if m.WithAmount != nil {

View File

@ -27,6 +27,12 @@ type QuestionDto struct {
BaseClass []*BaseClassDto `json:"base_class"` // 关联分类 BaseClass []*BaseClassDto `json:"base_class"` // 关联分类
} }
// QuestionPriceDto 问题价格
type QuestionPriceDto struct {
Price float64 `json:"price"` // 价格(原价)
DiscountPrice *float64 `json:"discount_price"` // 优惠价格
}
// GetQuestionDto 详情-问题 // GetQuestionDto 详情-问题
func GetQuestionDto(m *model.Question) *QuestionDto { func GetQuestionDto(m *model.Question) *QuestionDto {
return &QuestionDto{ return &QuestionDto{

View File

@ -4,6 +4,8 @@ import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"hepa-calc-admin-api/api/dao" "hepa-calc-admin-api/api/dao"
"hepa-calc-admin-api/api/responses" "hepa-calc-admin-api/api/responses"
"hepa-calc-admin-api/consts"
"net/http"
) )
// Auth Auth认证 // Auth Auth认证
@ -21,31 +23,51 @@ func Auth() gin.HandlerFunc {
adminUserDao := dao.AdminUserDao{} adminUserDao := dao.AdminUserDao{}
adminUser, err := adminUserDao.GetAdminUserById(adminUserId) adminUser, err := adminUserDao.GetAdminUserById(adminUserId)
if err != nil || adminUser == nil { if err != nil || adminUser == nil {
responses.FailWithMessage("用户数据错误", c) c.JSON(http.StatusUnauthorized, gin.H{
"message": "用户数据错误",
"code": consts.UserStatusError,
"data": "",
})
c.Abort() c.Abort()
return return
} }
if adminUser.Status == 2 { if adminUser.Status == 2 {
responses.FailWithMessage("用户审核中", c) c.JSON(http.StatusUnauthorized, gin.H{
"message": "用户审核中",
"code": consts.UserStatusError,
"data": "",
})
c.Abort() c.Abort()
return return
} }
if adminUser.Status == 3 { if adminUser.Status == 3 {
responses.FailWithMessage("用户状态异常", c) c.JSON(http.StatusUnauthorized, gin.H{
"message": "用户状态异常",
"code": consts.UserStatusError,
"data": "",
})
c.Abort() c.Abort()
return return
} }
if adminUser.IsDisabled == 1 { if adminUser.IsDisabled == 1 {
responses.FailWithMessage("用户已被禁用", c) c.JSON(http.StatusUnauthorized, gin.H{
"message": "用户已被禁用",
"code": consts.UserStatusError,
"data": "",
})
c.Abort() c.Abort()
return return
} }
if adminUser.IsDeleted == 1 { if adminUser.IsDeleted == 1 {
responses.FailWithMessage("用户状态异常", c) c.JSON(http.StatusUnauthorized, gin.H{
"message": "用户状态异常",
"code": consts.UserStatusError,
"data": "",
})
c.Abort() c.Abort()
return return
} }

View File

@ -7,23 +7,24 @@ import (
) )
type Coupon struct { type Coupon struct {
CouponId int64 `gorm:"column:coupon_id;type:bigint(19);primary_key;comment:主键id" json:"coupon_id"` CouponId int64 `gorm:"column:coupon_id;type:bigint(19);primary_key;comment:主键id" json:"coupon_id"`
CouponName string `gorm:"column:coupon_name;type:varchar(255);comment:优惠卷名称" json:"coupon_name"` CouponName string `gorm:"column:coupon_name;type:varchar(255);comment:优惠卷名称" json:"coupon_name"`
CouponType int `gorm:"column:coupon_type;type:varchar(255);comment:优惠卷类型1:无门槛 2:满减)" json:"coupon_type"` CouponType int `gorm:"column:coupon_type;type:varchar(255);comment:优惠卷类型1:无门槛 2:满减)" json:"coupon_type"`
CouponStatus int `gorm:"column:coupon_status;type:tinyint(1);default:1;comment:状态1:正常 2:强制失效 3:结束 4:删除)" json:"coupon_status"` CouponStatus int `gorm:"column:coupon_status;type:tinyint(1);default:1;comment:状态1:正常 2:强制失效 3:结束 4:删除)" json:"coupon_status"`
ApplicationScope int `gorm:"column:application_scope;type:tinyint(1);default:1;comment:适用范围1:全场通用 2:单项 3:会员)" json:"application_scope"` ApplicationScope int `gorm:"column:application_scope;type:tinyint(1);default:1;comment:适用范围1:全场通用 2:单项 3:会员)" json:"application_scope"`
IsMutex int `gorm:"column:is_mutex;type:tinyint(1);default:1;comment:是否互斥0:否 1:是)互斥情况下无法和其他优惠卷同时使用" json:"is_mutex"` DistributionObject int `gorm:"column:distribution_object;type:tinyint(1);default:1;comment:发放对象1:全部用户 2:新注册用户 3:会员 4:完善资料)" json:"distribution_object"`
CouponCount int `gorm:"column:coupon_count;type:int(10);default:1;comment:发放数量;NOT NULL" json:"coupon_count"` IsMutex int `gorm:"column:is_mutex;type:tinyint(1);default:1;comment:是否互斥0:否 1:是)互斥情况下无法和其他优惠卷同时使用" json:"is_mutex"`
CouponTakeCount int `gorm:"column:coupon_take_count;type:int(10);comment:已领取数量" json:"coupon_take_count"` CouponCount int `gorm:"column:coupon_count;type:int(10);default:1;comment:发放数量;NOT NULL" json:"coupon_count"`
CouponUsedCount int `gorm:"column:coupon_used_count;type:int(10);default:0;comment:已使用数量" json:"coupon_used_count"` CouponTakeCount int `gorm:"column:coupon_take_count;type:int(10);comment:已领取数量" json:"coupon_take_count"`
CouponPrice float64 `gorm:"column:coupon_price;type:decimal(10,2) unsigned;default:0.00;comment:优惠卷金额" json:"coupon_price"` CouponUsedCount int `gorm:"column:coupon_used_count;type:int(10);default:0;comment:已使用数量" json:"coupon_used_count"`
WithAmount *float64 `gorm:"column:with_amount;type:decimal(10,2);comment:符合满减标准金额(优惠卷类型为满减时使用)" json:"with_amount"` CouponPrice float64 `gorm:"column:coupon_price;type:decimal(10,2) unsigned;default:0.00;comment:优惠卷金额" json:"coupon_price"`
ValidType int `gorm:"column:valid_type;type:tinyint(1);comment:有效类型1:绝对时效xxx-xxx时间段有效 2:相对时效 n天内有效;NOT NULL" json:"valid_type"` WithAmount *float64 `gorm:"column:with_amount;type:decimal(10,2);comment:符合满减标准金额(优惠卷类型为满减时使用)" json:"with_amount"`
ValidDays *int `gorm:"column:valid_days;type:int(3);comment:自领取之日起有效天数" json:"valid_days"` ValidType int `gorm:"column:valid_type;type:tinyint(1);comment:有效类型1:绝对时效xxx-xxx时间段有效 2:相对时效 n天内有效;NOT NULL" json:"valid_type"`
ValidStartTime *LocalTime `gorm:"column:valid_start_time;type:datetime;comment:开始使用时间" json:"valid_start_time"` ValidDays *int `gorm:"column:valid_days;type:int(3);comment:自领取之日起有效天数" json:"valid_days"`
ValidEndTime *LocalTime `gorm:"column:valid_end_time;type:datetime;comment:结束使用时间" json:"valid_end_time"` ValidStartTime *LocalTime `gorm:"column:valid_start_time;type:datetime;comment:开始使用时间" json:"valid_start_time"`
SystemMemberIds string `gorm:"column:system_member_ids;type:bigint(19);comment:会员id适用范围为会员时生效如果此项为null则表示所有会员通用" json:"system_member_ids"` ValidEndTime *LocalTime `gorm:"column:valid_end_time;type:datetime;comment:结束使用时间" json:"valid_end_time"`
CouponDesc string `gorm:"column:coupon_desc;type:varchar(200);comment:优惠卷描述" json:"coupon_desc"` SystemMemberIds string `gorm:"column:system_member_ids;type:bigint(19);comment:会员id适用范围为会员时生效如果此项为null则表示所有会员通用" json:"system_member_ids"`
CouponDesc string `gorm:"column:coupon_desc;type:varchar(200);comment:优惠卷描述" json:"coupon_desc"`
Model Model
} }

View File

@ -14,7 +14,7 @@ type AdminUserRequest struct {
type GetAdminUserPage struct { type GetAdminUserPage struct {
Access string `json:"access" form:"access" label:"账号"` Access string `json:"access" form:"access" label:"账号"`
NickName string `json:"nick_name" form:"nick_name" label:"昵称"` NickName string `json:"nick_name" form:"nick_name" label:"昵称"`
IsAdmin int `json:"is_admin" form:"is_admin" label:"是否管理员"` // 是否管理员0:否 1:是) IsAdmin *int `json:"is_admin" form:"is_admin" label:"是否管理员"` // 是否管理员0:否 1:是)
Status *int `json:"status" form:"status" label:"状态"` // 状态1:正常 2:审核中 3:审核失败) Status *int `json:"status" form:"status" label:"状态"` // 状态1:正常 2:审核中 3:审核失败)
IsDeleted *int `json:"is_deleted" form:"is_deleted" label:"是否被删除"` // 是否被删除0:否 1:是) IsDeleted *int `json:"is_deleted" form:"is_deleted" label:"是否被删除"` // 是否被删除0:否 1:是)
IsDisabled *int `json:"is_disabled" form:"is_disabled" label:"是否被禁用"` // 是否被禁用0:否 1:是) IsDisabled *int `json:"is_disabled" form:"is_disabled" label:"是否被禁用"` // 是否被禁用0:否 1:是)
@ -25,14 +25,14 @@ type GetAdminUserPage struct {
// AddAdminUser 新增 // AddAdminUser 新增
type AddAdminUser struct { type AddAdminUser struct {
Access string `json:"access" form:"access" label:"账号"` Access string `json:"access" form:"access" label:"账号" validate:"required"`
Password string `json:"password" form:"password" label:"密码"` Password string `json:"password" form:"password" label:"密码" validate:"required"`
NickName string `json:"nick_name" form:"nick_name" label:"昵称"` NickName string `json:"nick_name" form:"nick_name" label:"昵称" validate:"required"`
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:是)
Status *int `json:"status" form:"status" label:"状态"` // 状态1:正常 2:审核中 3:审核失败) 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:"是否被删除"` // 是否被删除0:否 1:是) 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:"是否被禁用"` // 是否被禁用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:"手机号"` Phone string `json:"phone" form:"phone" label:"手机号" validate:"required"`
Avatar string `json:"avatar" form:"avatar" label:"头像"` Avatar string `json:"avatar" form:"avatar" label:"头像"`
Sex int `json:"sex" form:"sex" label:"性别"` Sex int `json:"sex" form:"sex" label:"性别"`
Email string `json:"email" form:"email" label:"邮箱"` Email string `json:"email" form:"email" label:"邮箱"`
@ -41,13 +41,14 @@ type AddAdminUser struct {
// PutAdminUser 修改 // PutAdminUser 修改
type PutAdminUser struct { type PutAdminUser struct {
Access string `json:"access" form:"access" validate:"required" label:"账号"` Access string `json:"access" form:"access" validate:"required" label:"账号"`
IsDeleted int `json:"is_deleted" form:"is_deleted" validate:"oneof=0 1" label:"删除状态"` // 是否被删除0:否 1:是) Status int `json:"status" form:"status" label:"状态" validate:"required,oneof=1 2 3"` // 状态1:正常 2:审核中 3:审核失败)
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:"昵称"` 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:"手机号"` Phone string `json:"phone" form:"phone" validate:"required" label:"手机号"`
Avatar string `json:"avatar" form:"avatar" 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:"邮箱"` Email string `json:"email" form:"email" label:"邮箱"`
} }

View File

@ -26,17 +26,18 @@ type PutCouponStatus struct {
// AddSystemCoupon 新增系统优惠卷 // AddSystemCoupon 新增系统优惠卷
type AddSystemCoupon struct { type AddSystemCoupon struct {
CouponName string `json:"coupon_name" form:"coupon_name" label:"优惠券名称" validate:"required"` CouponName string `json:"coupon_name" form:"coupon_name" label:"优惠券名称" validate:"required"`
CouponType int `json:"coupon_type" form:"coupon_type" label:"优惠券类型" validate:"required,oneof=1 2"` // 1:无门槛 2:满减) CouponType int `json:"coupon_type" form:"coupon_type" label:"优惠券类型" validate:"required,oneof=1 2"` // 1:无门槛 2:满减)
ApplicationScope int `json:"application_scope" form:"application_scope" label:"适用范围" validate:"required,oneof=1 2 3"` // 适用范围1:全场通用 2:单项 3:会员) ApplicationScope int `json:"application_scope" form:"application_scope" label:"适用范围" validate:"required,oneof=1 2 3"` // 适用范围1:全场通用 2:单项 3:会员)
IsMutex int `json:"is_mutex" form:"is_mutex" label:"是否互斥" validate:"required,oneof=0 1"` // 0:否 1:是) DistributionObject int `json:"distribution_object" form:"distribution_object" label:"发放对象" validate:"required,oneof=1 2 3 4"` // 发放对象1:全部用户 2:新注册用户 3:会员 4:完善资料)
CouponCount int `json:"coupon_count" form:"coupon_count" label:"发放数量" validate:"required,number,min=1"` IsMutex int `json:"is_mutex" form:"is_mutex" label:"是否互斥" validate:"required,oneof=0 1"` // 0:否 1:是)
CouponPrice float64 `json:"coupon_price" form:"coupon_price" label:"优惠券金额" validate:"required,numeric,gt=0"` CouponCount int `json:"coupon_count" form:"coupon_count" label:"发放数量" validate:"required,number,min=1"`
WithAmount *float64 `json:"with_amount" form:"with_amount" label:"满减条件金额" validate:"omitempty,gt=1"` CouponPrice float64 `json:"coupon_price" form:"coupon_price" label:"优惠券金额" validate:"required,numeric,gt=0"`
ValidType int `json:"valid_type" form:"valid_type" label:"有效类型" validate:"required,oneof=1 2"` // 1:绝对时效xxx-xxx时间段有效 2:相对时效 n天内有效 WithAmount *float64 `json:"with_amount" form:"with_amount" label:"满减条件金额" validate:"omitempty,gt=1"`
ValidDays *int `json:"valid_days" form:"valid_days" label:"有效天数" validate:"omitempty,numeric,min=1"` ValidType int `json:"valid_type" form:"valid_type" label:"有效类型" validate:"required,oneof=1 2"` // 1:绝对时效xxx-xxx时间段有效 2:相对时效 n天内有效
ValidStartTime *string `json:"valid_start_time" form:"valid_start_time" label:"开始使用时间"` // 假设转换为字符串格式 ValidDays *int `json:"valid_days" form:"valid_days" label:"有效天数" validate:"omitempty,numeric,min=1"`
ValidEndTime *string `json:"valid_end_time" form:"valid_end_time" label:"结束使用时间"` // 假设转换为字符串格式 ValidStartTime *string `json:"valid_start_time" form:"valid_start_time" label:"开始使用时间"` // 假设转换为字符串格式
SystemMemberIds []*string `json:"system_member_ids" form:"system_member_ids" label:"会员id"` // 会员id ValidEndTime *string `json:"valid_end_time" form:"valid_end_time" label:"结束使用时间"` // 假设转换为字符串格式
CouponDesc string `json:"coupon_desc" form:"coupon_desc" label:"优惠券描述"` SystemMemberIds []*string `json:"system_member_ids" form:"system_member_ids" label:"会员id"` // 会员id
CouponDesc string `json:"coupon_desc" form:"coupon_desc" label:"优惠券描述"`
} }

View File

@ -34,6 +34,7 @@ type GetQuestionPageOrder struct {
Price string `json:"price" form:"price" label:"排序"` // 价格(原价) Price string `json:"price" form:"price" label:"排序"` // 价格(原价)
DiscountPrice string `json:"discount_price" form:"discount_price" label:"排序"` // 优惠价格 DiscountPrice string `json:"discount_price" form:"discount_price" label:"排序"` // 优惠价格
UpdatedAt string `json:"updated_at" form:"updated_at" label:"排序"` UpdatedAt string `json:"updated_at" form:"updated_at" label:"排序"`
CreatedAt string `json:"created_at" form:"created_at" label:"排序"`
} }
// GetQuestionList 获取问题列表 // GetQuestionList 获取问题列表

View File

@ -18,7 +18,7 @@ type GetUserPage struct {
Sex *int `json:"sex" form:"sex" label:"性别"` Sex *int `json:"sex" form:"sex" label:"性别"`
IsMember *int `json:"is_member" form:"is_member" label:"是否会员"` IsMember *int `json:"is_member" form:"is_member" label:"是否会员"`
MemberExpireDate string `json:"member_expire_date" form:"member_expire_date" label:"会员到期时间"` // 假设转换为可选字符串 MemberExpireDate string `json:"member_expire_date" form:"member_expire_date" label:"会员到期时间"` // 假设转换为可选字符串
IsInfoComplete *int `json:"is_info_complete" form:"is_info_complete" label:"信息完善状态"` // 0:否 1:是 IsInfoComplete *bool `json:"is_info_complete" form:"is_info_complete" label:"信息完善状态"` // 0:否 1:是
Order *GetUserPageOrder `json:"order" form:"order" label:"排序"` Order *GetUserPageOrder `json:"order" form:"order" label:"排序"`
} }

View File

@ -284,6 +284,9 @@ func privateRouter(r *gin.Engine, api controller.Api) {
// 操作问题隐藏状态 // 操作问题隐藏状态
questionGroup.PUT("/hide/:question_id", api.Question.PutQuestionHideStatus) questionGroup.PUT("/hide/:question_id", api.Question.PutQuestionHideStatus)
// 获取问题价格
questionGroup.GET("/price", api.Question.GetQuestionPrice)
} }
// 配置 // 配置

View File

@ -25,7 +25,7 @@ redis:
port: 30002 port: 30002
password: gdxz2022&dj. password: gdxz2022&dj.
pool-size: 100 pool-size: 100
db: 3 db: 5
# [jwt] # [jwt]
jwt: jwt: