This commit is contained in:
2024-07-18 14:19:02 +08:00
parent 72138aeedb
commit ec88138888
70 changed files with 3124 additions and 53 deletions
+9
View File
@@ -72,6 +72,15 @@ func (r *BaseClassDao) GetBaseClassList(maps interface{}) (m []*model.BaseClass,
return m, nil
}
// GetBaseClassOrderList 获取列表-排序
func (r *BaseClassDao) GetBaseClassOrderList(maps interface{}) (m []*model.BaseClass, err error) {
err = global.Db.Where(maps).Order("sort desc").Find(&m).Error
if err != nil {
return nil, err
}
return m, nil
}
// GetBaseClassCount 获取数量
func (r *BaseClassDao) GetBaseClassCount(maps interface{}) (total int64, err error) {
err = global.Db.Model(&model.BaseClass{}).Where(maps).Count(&total).Error
+67
View File
@@ -4,6 +4,7 @@ import (
"gorm.io/gorm"
"gorm.io/gorm/clause"
"hepa-calc-api/api/model"
"hepa-calc-api/api/requests"
"hepa-calc-api/global"
)
@@ -106,3 +107,69 @@ func (r *OrderMemberDao) GetOrderMember(maps interface{}) (m *model.OrderMember,
}
return m, nil
}
// GetOrderMemberPageSearch 获取列表-分页
func (r *OrderMemberDao) GetOrderMemberPageSearch(req requests.GetOrderMemberPage, page, pageSize int) (m []*model.OrderMember, total int64, err error) {
var totalRecords int64
// 构建查询条件
query := global.Db.Model(&model.OrderMember{})
query = query.Where("user_id = ?", req.UserId)
query = query.Where("is_delete = ?", 0)
query = query.Preload("SystemMember")
// 会员id
if req.SystemMemberId != "" {
query = query.Where("system_member_id = ?", req.SystemMemberId)
}
// 订单状态(1:待支付 2:已完成 3:已取消)
if req.OrderStatus != nil {
query = query.Where("order_status = ?", req.OrderStatus)
}
// 支付渠道
if req.PayChannel != nil {
query = query.Where("pay_channel = ?", req.PayChannel)
}
// 支付状态
if req.PayStatus != nil {
query = query.Where("pay_status = ?", req.PayStatus)
}
// 订单退款状态
if req.RefundStatus != nil {
query = query.Where("refund_status = ?", req.RefundStatus)
}
// 系统订单编号
if req.OrderNo != "" {
query = query.Where("order_no = ?", req.OrderNo)
}
// 第三方支付流水号
if req.EscrowTradeNo != "" {
query = query.Where("escrow_trade_no = ?", req.EscrowTradeNo)
}
// 取消状态
if req.CancelStatus != nil {
query = query.Where("cancel_status = ?", req.CancelStatus)
}
// 排序
query = query.Order("created_at desc")
// 查询总数量
if err := query.Count(&totalRecords).Error; err != nil {
return nil, 0, err
}
err = query.Scopes(model.Paginate(page, pageSize)).Find(&m).Error
if err != nil {
return nil, 0, err
}
return m, totalRecords, nil
}
+89
View File
@@ -4,6 +4,7 @@ import (
"gorm.io/gorm"
"gorm.io/gorm/clause"
"hepa-calc-api/api/model"
"hepa-calc-api/api/requests"
"hepa-calc-api/global"
)
@@ -106,3 +107,91 @@ func (r *OrderSingleDao) GetOrderSingle(maps interface{}) (m *model.OrderSingle,
}
return m, nil
}
// GetOrderSingleOrderList 获取列表-排序
func (r *OrderSingleDao) GetOrderSingleOrderList(maps interface{}, orderField string, limit int) (m []*model.OrderSingle, err error) {
err = global.Db.Where(maps).Preload(clause.Associations).Order(orderField).Limit(limit).Find(&m).Error
if err != nil {
return nil, err
}
return m, nil
}
// GetOrderSinglePageSearch 获取列表-分页
func (r *OrderSingleDao) GetOrderSinglePageSearch(req requests.GetOrderSinglePage, page, pageSize int) (m []*model.OrderSingle, total int64, err error) {
var totalRecords int64
// 构建查询条件
query := global.Db.Model(&model.OrderSingle{})
query = query.Where("user_id = ?", req.UserId)
query = query.Where("is_delete = ?", 0)
query = query.Preload("Question")
// 问题id
if req.QuestionId != "" {
query = query.Where("question_id = ?", req.QuestionId)
}
// 订单状态(1:待支付 2:已完成 3:已取消)
if req.OrderStatus != nil {
query = query.Where("order_status = ?", req.OrderStatus)
}
// 支付渠道
if req.PayChannel != nil {
query = query.Where("pay_channel = ?", req.PayChannel)
}
// 支付状态
if req.PayStatus != nil {
query = query.Where("pay_status = ?", req.PayStatus)
}
// 订单退款状态
if req.RefundStatus != nil {
query = query.Where("refund_status = ?", req.RefundStatus)
}
// 系统订单编号
if req.OrderNo != "" {
query = query.Where("order_no = ?", req.OrderNo)
}
// 第三方支付流水号
if req.EscrowTradeNo != "" {
query = query.Where("escrow_trade_no = ?", req.EscrowTradeNo)
}
// 取消状态
if req.CancelStatus != nil {
query = query.Where("cancel_status = ?", req.CancelStatus)
}
// 排序
query = query.Order("created_at desc")
// 查询总数量
if err := query.Count(&totalRecords).Error; err != nil {
return nil, 0, err
}
err = query.Scopes(model.Paginate(page, pageSize)).Find(&m).Error
if err != nil {
return nil, 0, err
}
return m, totalRecords, nil
}
// GetUserFirstTimeBuyOrderSingle 获取用户首次购买的订单
func (r *OrderSingleDao) GetUserFirstTimeBuyOrderSingle(userId, questionId int64) (m *model.OrderSingle, err error) {
err = global.Db.
Where("user_id = ?", userId).
Where("question_id = ?", questionId).
Where("order_status != ?", 3).
First(&m).Error
if err != nil {
return nil, err
}
return m, nil
}
+145
View File
@@ -1,9 +1,11 @@
package dao
import (
"errors"
"gorm.io/gorm"
"gorm.io/gorm/clause"
"hepa-calc-api/api/model"
"hepa-calc-api/api/requests"
"hepa-calc-api/global"
)
@@ -106,3 +108,146 @@ func (r *QuestionDao) GetQuestion(maps interface{}) (m *model.Question, err erro
}
return m, nil
}
// GetQuestionOrderLimitList 获取列表-排序、限制数量
func (r *QuestionDao) GetQuestionOrderLimitList(maps interface{}, orderField string, limit int) (m []*model.Question, err error) {
err = global.Db.Where(maps).Order(orderField).Limit(limit).Find(&m).Error
if err != nil {
return nil, err
}
return m, nil
}
// GetQuestionPageSearch 获取题目列表-分页
func (r *QuestionDao) GetQuestionPageSearch(req requests.GetQuestionPage, page, pageSize int) (m []*model.Question, total int64, err error) {
var totalRecords int64
// 构建查询条件
query := global.Db.Model(&model.Question{})
// 是否隐藏
query = query.Where("is_hide = ?", 0)
// 主键id
if req.QuestionId != "" {
query = query.Where("question_id = ?", req.QuestionId)
}
// 标题
if req.QuestionTitle != "" {
query = query.Where("question_title LIKE ?", "%"+req.QuestionTitle+"%")
}
// 副标题
if req.QuestionSubtitle != "" {
query = query.Where("question_subtitle LIKE ?", "%"+req.QuestionSubtitle+"%")
}
// 唯一标识
if req.QuestionIden != "" {
query = query.Where("question_iden = ?", req.QuestionIden)
}
// 问题状态
if req.QuestionStatus != nil {
query = query.Where("question_status = ?", req.QuestionStatus)
}
// 是否推荐
if req.IsRecommend != nil {
query = query.Where("is_recommend = ?", req.IsRecommend)
}
// 问题介绍
if req.QuestionBrief != "" {
query = query.Where("question_brief LIKE ?", "%"+req.QuestionBrief+"%")
}
// 问题解释/科普
if req.QuestionExplain != "" {
query = query.Where("question_explain LIKE ?", "%"+req.QuestionExplain+"%")
}
// 分类标识
if req.ClassId != "" {
baseClassQuery := global.Db.Model(&model.BaseClass{}).
Select("class_id").
Where("class_id = ?", req.ClassId)
questionClassQuery := global.Db.Model(&model.QuestionClass{}).
Select("question_id").
Where("class_id IN (?)", baseClassQuery)
query = query.Where("question_id IN (?)", questionClassQuery)
}
// 排序
if req.Order != nil {
// 点击次数(点击进入详情页的人次)
if req.Order.ClickCount != "" {
if req.Order.ClickCount != "desc" && req.Order.ClickCount != "asc" {
return nil, 0, errors.New("排序字段错误")
}
query = query.Order("click_count " + req.Order.ClickCount)
}
// 提交次数(提交个人信息进行了算算的人次)
if req.Order.SubmitCount != "" {
if req.Order.SubmitCount != "desc" && req.Order.SubmitCount != "asc" {
return nil, 0, errors.New("排序字段错误")
}
query = query.Order("submit_count " + req.Order.SubmitCount)
}
// 支付次数(查看报告的人次)
if req.Order.PayCount != "" {
if req.Order.PayCount != "desc" && req.Order.PayCount != "asc" {
return nil, 0, errors.New("排序字段错误")
}
query = query.Order("pay_count " + req.Order.PayCount)
}
// 价格(原价)
if req.Order.Price != "" {
if req.Order.Price != "desc" && req.Order.Price != "asc" {
return nil, 0, errors.New("排序字段错误")
}
query = query.Order("price " + req.Order.Price)
}
// 优惠价格
if req.Order.DiscountPrice != "" {
if req.Order.DiscountPrice != "desc" && req.Order.DiscountPrice != "asc" {
return nil, 0, errors.New("排序字段错误")
}
query = query.Order("discount_price " + req.Order.DiscountPrice)
}
if req.Order.UpdatedAt != "" {
if req.Order.UpdatedAt != "desc" && req.Order.UpdatedAt != "asc" {
return nil, 0, errors.New("排序字段错误")
}
query = query.Order("updated_at " + req.Order.UpdatedAt)
}
}
// 排序
query = query.Order("created_at desc")
// 查询总数量
if err := query.Count(&totalRecords).Error; err != nil {
return nil, 0, err
}
err = query.Scopes(model.Paginate(page, pageSize)).Find(&m).Error
if err != nil {
return nil, 0, err
}
return m, totalRecords, nil
}
+26
View File
@@ -4,6 +4,7 @@ import (
"gorm.io/gorm"
"gorm.io/gorm/clause"
"hepa-calc-api/api/model"
"hepa-calc-api/api/requests"
"hepa-calc-api/global"
)
@@ -106,3 +107,28 @@ func (r *UserCollectionDao) GetUserCollection(maps interface{}) (m *model.UserCo
}
return m, nil
}
// GetUserCollectionPageSearch 获取列表-分页
func (r *UserCollectionDao) GetUserCollectionPageSearch(req requests.GetUserCollectionPage, page, pageSize int) (m []*model.UserCollection, total int64, err error) {
var totalRecords int64
// 构建查询条件
query := global.Db.Model(&model.UserCollection{})
query = query.Where("user_id = ?", req.UserId)
query = query.Preload("Question")
// 排序
query = query.Order("created_at desc")
// 查询总数量
if err := query.Count(&totalRecords).Error; err != nil {
return nil, 0, err
}
err = query.Scopes(model.Paginate(page, pageSize)).Find(&m).Error
if err != nil {
return nil, 0, err
}
return m, totalRecords, nil
}
+85
View File
@@ -4,7 +4,10 @@ import (
"gorm.io/gorm"
"gorm.io/gorm/clause"
"hepa-calc-api/api/model"
"hepa-calc-api/api/requests"
"hepa-calc-api/global"
"strings"
"time"
)
type UserCouponDao struct {
@@ -106,3 +109,85 @@ func (r *UserCouponDao) GetUserCoupon(maps interface{}) (m *model.UserCoupon, er
}
return m, nil
}
// GetUserCouponPageSearch 获取列表-分页
func (r *UserCouponDao) GetUserCouponPageSearch(req requests.GetUserCouponPage, page, pageSize int) (m []*model.UserCoupon, total int64, err error) {
var totalRecords int64
// 构建查询条件
query := global.Db.Model(&model.UserCoupon{})
query = query.Where("user_id = ?", req.UserId)
// 优惠卷
query = query.Preload("Coupon", func(db *gorm.DB) *gorm.DB {
return db.Select("coupon_id", "coupon_name", "coupon_type", "coupon_status", "application_scope", "coupon_price", "valid_start_time", "valid_end_time", "coupon_desc")
})
// 优惠券id
if req.CouponId != "" {
query = query.Where("coupon_id = ?", req.CouponId)
}
// 状态(0:未使用 1:已使用 3:已过期)
if req.UserCouponStatus != nil {
query = query.Where("user_coupon_status = ?", req.UserCouponStatus)
}
// 是否已弹窗
if req.IsWindows != nil {
query = query.Where("is_windows = ?", req.IsWindows)
}
// 使用时间
if req.CouponUseDate != "" {
couponUseDate := strings.Split(req.CouponUseDate, "&")
if len(couponUseDate) == 2 {
startTime, _ := time.Parse("2006-01-02", couponUseDate[0])
endTime, _ := time.Parse("2006-01-02", couponUseDate[1])
endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second)
query = query.Where("coupon_use_date BETWEEN ? AND ?", startTime, endTime)
}
}
// 有效开始时间
if req.ValidStartTime != "" {
validStartTime := strings.Split(req.ValidStartTime, "&")
if len(validStartTime) == 2 {
startTime, _ := time.Parse("2006-01-02", validStartTime[0])
endTime, _ := time.Parse("2006-01-02", validStartTime[1])
endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second)
query = query.Where("valid_start_time BETWEEN ? AND ?", startTime, endTime)
}
}
// 有效结束时间
if req.ValidEndTime != "" {
validEndTime := strings.Split(req.ValidEndTime, "&")
if len(validEndTime) == 2 {
startTime, _ := time.Parse("2006-01-02", validEndTime[0])
endTime, _ := time.Parse("2006-01-02", validEndTime[1])
endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second)
query = query.Where("valid_end_time BETWEEN ? AND ?", startTime, endTime)
}
}
// 排序
query = query.Order("created_at desc")
// 查询总数量
if err := query.Count(&totalRecords).Error; err != nil {
return nil, 0, err
}
err = query.Scopes(model.Paginate(page, pageSize)).Find(&m).Error
if err != nil {
return nil, 0, err
}
return m, totalRecords, nil
}