hepa-calc-admin-api/api/dao/OrderSingle.go

237 lines
6.2 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package dao
import (
"gorm.io/gorm"
"gorm.io/gorm/clause"
"hepa-calc-admin-api/api/model"
"hepa-calc-admin-api/api/requests"
"hepa-calc-admin-api/global"
)
type OrderSingleDao struct {
}
// GetOrderSingleById 获取数据-id
func (r *OrderSingleDao) GetOrderSingleById(OrderId int64) (m *model.OrderSingle, err error) {
err = global.Db.First(&m, OrderId).Error
if err != nil {
return nil, err
}
return m, nil
}
// GetOrderSinglePreloadById 获取数据-加载全部关联-id
func (r *OrderSingleDao) GetOrderSinglePreloadById(OrderId int64) (m *model.OrderSingle, err error) {
err = global.Db.Preload(clause.Associations).First(&m, OrderId).Error
if err != nil {
return nil, err
}
return m, nil
}
// DeleteOrderSingle 删除
func (r *OrderSingleDao) DeleteOrderSingle(tx *gorm.DB, maps interface{}) error {
err := tx.Where(maps).Delete(&model.OrderSingle{}).Error
if err != nil {
return err
}
return nil
}
// DeleteOrderSingleById 删除-id
func (r *OrderSingleDao) DeleteOrderSingleById(tx *gorm.DB, orderId int64) error {
if err := tx.Delete(&model.OrderSingle{}, orderId).Error; err != nil {
return err
}
return nil
}
// EditOrderSingle 修改
func (r *OrderSingleDao) EditOrderSingle(tx *gorm.DB, maps interface{}, data interface{}) error {
err := tx.Model(&model.OrderSingle{}).Where(maps).Updates(data).Error
if err != nil {
return err
}
return nil
}
// EditOrderSingleById 修改-id
func (r *OrderSingleDao) EditOrderSingleById(tx *gorm.DB, orderId int64, data interface{}) error {
err := tx.Model(&model.OrderSingle{}).Where("order_id = ?", orderId).Updates(data).Error
if err != nil {
return err
}
return nil
}
// GetOrderSingleList 获取列表
func (r *OrderSingleDao) GetOrderSingleList(maps interface{}) (m []*model.OrderSingle, err error) {
err = global.Db.Where(maps).Find(&m).Error
if err != nil {
return nil, err
}
return m, nil
}
// GetOrderSingleCount 获取数量
func (r *OrderSingleDao) GetOrderSingleCount(maps interface{}) (total int64, err error) {
err = global.Db.Model(&model.OrderSingle{}).Where(maps).Count(&total).Error
if err != nil {
return 0, err
}
return total, nil
}
// GetOrderSingleListRand 获取列表-随机
func (r *OrderSingleDao) GetOrderSingleListRand(maps interface{}, limit int) (m []*model.OrderSingle, err error) {
err = global.Db.Where(maps).Order("rand()").Limit(limit).Find(&m).Error
if err != nil {
return nil, err
}
return m, nil
}
// AddOrderSingle 新增
func (r *OrderSingleDao) AddOrderSingle(tx *gorm.DB, model *model.OrderSingle) (*model.OrderSingle, error) {
if err := tx.Create(model).Error; err != nil {
return nil, err
}
return model, nil
}
// GetOrderSingle 获取
func (r *OrderSingleDao) GetOrderSingle(maps interface{}) (m *model.OrderSingle, err error) {
err = global.Db.Where(maps).First(&m).Error
if err != nil {
return nil, err
}
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
}
// 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
}
// GetOrderSingleSum 获取数量
func (r *OrderSingleDao) GetOrderSingleSum(maps interface{}, field string) (total float64, err error) {
var result struct {
Sum float64
}
err = global.Db.Model(&model.OrderSingle{}).Where(maps).Select("SUM(" + field + ") as sum").Scan(&result).Error
if err != nil {
return 0, err
}
return result.Sum, nil
}
// GetOrderSingleListByTime 获取列表-开始时间/过期时间
func (r *OrderSingleDao) GetOrderSingleListByTime(maps interface{}, startTime, endTime, field string) (m []*model.OrderSingle, err error) {
err = global.Db.Where(maps).Where(field+" BETWEEN ? AND ?", startTime, endTime).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.Preload("Question")
query = query.Preload("User")
// 问题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)
}
// 问题标题
if req.QuestionTitle != "" {
subQuery := global.Db.Model(&model.Question{}).
Select("question_id").
Where("question_title LIKE ?", "%"+req.QuestionTitle+"%")
query = query.Where(gorm.Expr("question_id IN (?)", subQuery))
}
// 用户名称
if req.UserName != "" {
subQuery := global.Db.Model(&model.User{}).
Select("user_id").
Where("user_name LIKE ?", "%"+req.UserName+"%")
query = query.Where(gorm.Expr("user_id IN (?)", subQuery))
}
// 排序
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
}