package dao

import (
	"github.com/druidcaesa/gotool"
	"ulink-admin/frame"
	"ulink-admin/modules/system/models/model"
	"ulink-admin/modules/system/models/req"
	"ulink-admin/pkg/base"
	"ulink-admin/pkg/page"
)

type SmsDao struct {
	base.BaseDao
}

// Page 查询短信管理分页数据
func (this SmsDao) Page(query *req.SmsQuery, list interface{}) int64 {
	session := this.GetSession().Table(model.Sms{}.TableName())

	if query.Id > 0 {
		session.And("id = ?", query.Id)
	}
	if !gotool.StrUtils.HasEmpty(query.Code) {
		session.And("code = ?", query.Code)
	}
	if !gotool.StrUtils.HasEmpty(query.Phone) {
		session.And("phone = ?", query.Phone)
	}
	if query.State > 0 {
		session.And("state = ?", query.State)
	}
	if !gotool.StrUtils.HasEmpty(query.Mode) {
		session.And("mode = ?", query.Mode)
	}
	if !gotool.StrUtils.HasEmpty(query.BeginTime) {
		session.And("date_format(u.create_time,'%y%m%d') >= date_format(?,'%y%m%d')", query.BeginTime)
	}
	if !gotool.StrUtils.HasEmpty(query.EndTime) {
		session.And("date_format(u.create_time,'%y%m%d') <= date_format(?,'%y%m%d')", query.EndTime)
	}
	/*	total, _ := page.GetTotal(session.Clone())*/
	session.Desc("id")
	total, err := session.Limit(query.PageSize, page.StartSize(query.PageNum, query.PageSize)).FindAndCount(list)
	if err != nil {
		frame.Throw(frame.SQL_CODE, "数据查询错误"+err.Error())
	}
	return total
}

// List 查询短信管理分页数据
func (this SmsDao) List(query *req.SmsQuery, list interface{}) {
	session := this.GetSession().Table(model.Sms{}.TableName())

	if query.Id > 0 {
		session.And("id = ?", query.Id)
	}
	if !gotool.StrUtils.HasEmpty(query.Code) {
		session.And("code = ?", query.Code)
	}
	if !gotool.StrUtils.HasEmpty(query.Phone) {
		session.And("phone = ?", query.Phone)
	}
	if query.State > 0 {
		session.And("state = ?", query.State)
	}
	if !gotool.StrUtils.HasEmpty(query.Mode) {
		session.And("mode = ?", query.Mode)
	}
	if !gotool.StrUtils.HasEmpty(query.BeginTime) {
		session.And("date_format(u.create_time,'%y%m%d') >= date_format(?,'%y%m%d')", query.BeginTime)
	}
	if !gotool.StrUtils.HasEmpty(query.EndTime) {
		session.And("date_format(u.create_time,'%y%m%d') <= date_format(?,'%y%m%d')", query.EndTime)
	}
	session.Desc("id")
	err := session.Find(list)
	if err != nil {
		frame.Throw(frame.SQL_CODE, "数据查询错误"+err.Error())
	}
}