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

236 lines
6.1 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 OrderMemberDao struct {
}
// GetOrderMemberById 获取数据-id
func (r *OrderMemberDao) GetOrderMemberById(OrderId int64) (m *model.OrderMember, err error) {
err = global.Db.First(&m, OrderId).Error
if err != nil {
return nil, err
}
return m, nil
}
// GetOrderMemberPreloadById 获取数据-加载全部关联-id
func (r *OrderMemberDao) GetOrderMemberPreloadById(OrderId int64) (m *model.OrderMember, err error) {
err = global.Db.Preload(clause.Associations).First(&m, OrderId).Error
if err != nil {
return nil, err
}
return m, nil
}
// DeleteOrderMember 删除
func (r *OrderMemberDao) DeleteOrderMember(tx *gorm.DB, maps interface{}) error {
err := tx.Where(maps).Delete(&model.OrderMember{}).Error
if err != nil {
return err
}
return nil
}
// DeleteOrderMemberById 删除-id
func (r *OrderMemberDao) DeleteOrderMemberById(tx *gorm.DB, OrderMemberId int64) error {
if err := tx.Delete(&model.OrderMember{}, OrderMemberId).Error; err != nil {
return err
}
return nil
}
// EditOrderMember 修改
func (r *OrderMemberDao) EditOrderMember(tx *gorm.DB, maps interface{}, data interface{}) error {
err := tx.Model(&model.OrderMember{}).Where(maps).Updates(data).Error
if err != nil {
return err
}
return nil
}
// EditOrderMemberById 修改-id
func (r *OrderMemberDao) EditOrderMemberById(tx *gorm.DB, OrderId int64, data interface{}) error {
err := tx.Model(&model.OrderMember{}).Where("order_id = ?", OrderId).Updates(data).Error
if err != nil {
return err
}
return nil
}
// GetOrderMemberList 获取列表
func (r *OrderMemberDao) GetOrderMemberList(maps interface{}) (m []*model.OrderMember, err error) {
err = global.Db.Where(maps).Find(&m).Error
if err != nil {
return nil, err
}
return m, nil
}
// GetOrderMemberCount 获取数量
func (r *OrderMemberDao) GetOrderMemberCount(maps interface{}) (total int64, err error) {
err = global.Db.Model(&model.OrderMember{}).Where(maps).Count(&total).Error
if err != nil {
return 0, err
}
return total, nil
}
// GetOrderMemberListRand 获取列表-随机
func (r *OrderMemberDao) GetOrderMemberListRand(maps interface{}, limit int) (m []*model.OrderMember, err error) {
err = global.Db.Where(maps).Order("rand()").Limit(limit).Find(&m).Error
if err != nil {
return nil, err
}
return m, nil
}
// AddOrderMember 新增
func (r *OrderMemberDao) AddOrderMember(tx *gorm.DB, model *model.OrderMember) (*model.OrderMember, error) {
if err := tx.Create(model).Error; err != nil {
return nil, err
}
return model, nil
}
// GetOrderMember 获取
func (r *OrderMemberDao) GetOrderMember(maps interface{}) (m *model.OrderMember, err error) {
err = global.Db.Where(maps).First(&m).Error
if err != nil {
return nil, err
}
return m, nil
}
// GetUserFirstTimeBuyOrderMember 获取用户首次购买的订单
func (r *OrderMemberDao) GetUserFirstTimeBuyOrderMember(userId int64) (m *model.OrderMember, err error) {
err = global.Db.
Where("user_id = ?", userId).
Where("order_status != ?", 2).
First(&m).Error
if err != nil {
return nil, err
}
return m, nil
}
// GetOrderMemberSum 获取数量
func (r *OrderMemberDao) GetOrderMemberSum(maps interface{}, field string) (total float64, err error) {
var result struct {
Sum float64
}
err = global.Db.Model(&model.OrderMember{}).Where(maps).Select("SUM(" + field + ") as sum").Scan(&result).Error
if err != nil {
return 0, err
}
return result.Sum, nil
}
// GetOrderMemberListByTime 获取列表-开始时间/过期时间
func (r *OrderMemberDao) GetOrderMemberListByTime(maps interface{}, startTime, endTime, field string) (m []*model.OrderMember, 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
}
// 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.Preload("SystemMember")
query = query.Preload("User")
// 会员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)
}
// 用户名称
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))
}
// 用户手机号
if req.UserMobile != "" {
subQuery := global.Db.Model(&model.User{}).
Select("user_id").
Where("mobile LIKE ?", "%"+req.UserMobile+"%")
query = query.Where(gorm.Expr("user_id IN (?)", subQuery))
}
// 会员天数
if req.MemberDays != nil {
subQuery := global.Db.Model(&model.SystemMember{}).
Select("system_member_id").
Where("member_days = ?", req.MemberDays)
query = query.Where(gorm.Expr("system_member_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
}