1 Star 0 Fork 0

ichub / go-factroy2024

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
tableNameDao.go 10.15 KB
一键复制 编辑 原始数据 按行查看 历史
leijmdas 提交于 2024-02-01 12:27 . add
package dao
/*
@Title 文件名称: TableNameDao.go
@Description 描述: DAO层TableNameDao
@Author 作者: leijianming 时间(2021-10-23 12:25:18)
@Update 作者: leijianming 时间(2021-10-23 12:25:18)
*/
import (
"fmt"
"github.com/jinzhu/gorm"
"gitee.com/ichub/go-factroy2024/cms/base"
basemodel "gitee.com/ichub/go-factroy2024/cms/base/model"
"gitee.com/ichub/go-factroy2024/cms/dbcontent"
"gitee.com/ichub/go-factroy2024/cms/shop/dto"
"gitee.com/ichub/go-factroy2024/cms/shop/model"
"log"
"strings"
"time"
)
//const PAGE_SIZE_DEFAULT = 500
//const PAGE_SIZE_MAX = 1000
type TableNameDAO struct {
}
var InstTableNameDAO TableNameDAO
/*
@title 函数名称: Insert
@description : 新增记录
@auth 作者: leijianming 时间: 2021-10-23 12:25:18
@param 输入参数名: entity *model.TableName
@return 返回参数名: int64,error
*/
func (daoInst *TableNameDAO) Insert(entity *model.TableName) (int64, error) {
err := dbcontent.GetDB().Create(entity).Error
if err != nil {
log.Println(err.Error())
return -1, err
}
return *entity.Id, err
}
/*
@title 函数名称: DeleteById
@description : 根据主键Id 删除记录
@auth 作者: leijianming 时间: 2021-10-23 12:25:18
@param 输入参数名: Id int64
@return 返回参数名: error
*/
func (daoInst *TableNameDAO) DeleteById(Id int64) error {
var entity model.TableName
err := dbcontent.GetDB().Where("id=?", Id).Delete(&entity).Error
return err
}
/*
@title 函数名称: Save
@description : 保存记录
@auth 作者: leijianming 时间: 2021-10-23 12:25:18
@param 输入参数名: entity *model.TableName
@return 返回参数名: int64,error
*/
func (daoInst *TableNameDAO) Save(entity *model.TableName) (int64, error) {
err := dbcontent.GetDB().Save(entity).Error
if err != nil {
log.Println(err.Error())
return -1, err
}
return *entity.Id, err
}
/*
@title 函数名称: Update
@description : 修改记录
@auth 作者: leijianming 时间: 2021-10-23 12:25:18
@param 输入参数名: entity *model.TableName
@return 返回参数名: int64,error
*/
func (daoInst *TableNameDAO) Update(entity *model.TableName) (int64, error) {
err := dbcontent.GetDB().Model(&model.TableName{}).Where("id=?", entity.Id).Updates(&entity).Error
if err != nil {
log.Println(err.Error())
return -1, err
}
return *entity.Id, err
}
/*
@title 函数名称: UpdateNotNullProps
@description : 根据主键Id修改非nil字段
@auth 作者: leijianming 时间: 2021-10-23 12:25:18
@param 输入参数名: entity *model.TableName
@return 返回参数名: *model.TableName,error
*/
func (daoInst *TableNameDAO) UpdateNotNullProps(entity *model.TableName) (*model.TableName, error) {
err := dbcontent.GetDB().Model(&model.TableName{}).Where("id=?", entity.Id).Updates(&entity).Error
return entity, err
}
/*
@title 函数名称: FindById
@description : 根据主键Id 查询记录
@auth 作者: leijianming 时间: 2021-10-23 12:25:18
@param 输入参数名: Id int64
@return 返回参数名: entity *model.TableName, found bool, err error
*/
func (daoInst *TableNameDAO) FindById(Id int64) (entity *model.TableName, found bool, err error) {
entity = new(model.TableName)
db := dbcontent.GetDB().First(entity, Id)
found = !db.RecordNotFound()
err = db.Error
return entity, found, err
}
/*
@title 函数名称: FindByIds
@description : 根据主键Id 查询多条记录; FindByIds("1,36,39")
@auth 作者: leijianming 时间: 2021-10-23 12:25:18
@param 输入参数名: pks string
@return 返回参数名: *[]model.TableName,error
*/
func (daoInst *TableNameDAO) FindByIds(pks string) (*[]model.TableName, error) {
var entities []model.TableName
db := dbcontent.GetDB().Raw("select * from table_name where id in (" + pks + ")").Scan(&entities)
return &entities, db.Error
}
/*
@title 函数名称: FindByQueryParam
@description : 查询符合条件的记录!queryParam通用条件分页
@auth 作者: leijianming 时间: 2021-10-23 12:25:18
@param 输入参数名: param *dto.TableNameQueryParam
@return 返回参数名: *[]model.TableName,error
*/
func (daoInst *TableNameDAO) FindByQueryParam(param *dto.TableNameQueryParam) (*[]model.TableName, error) {
var entities []model.TableName
limit := param.PageSize
if limit <= base.PAGE_SIZE_ZERO {
limit = base.PAGE_SIZE_DEFAULT
} else if limit > base.PAGE_SIZE_MAX {
limit = base.PAGE_SIZE_MAX
}
param.PageSize = limit
if param.Current <= 0 {
param.Current = 1
}
start := (param.Current - 1) * limit
dbc := dbcontent.GetDB().Model(&model.TableName{}).Offset(start).Limit(param.PageSize)
dbc = daoInst.buildWhere(param, dbc)
if len(param.OrderBys) > 0 {
rs := strings.Split(param.OrderBys, ",")
for _, value := range rs {
orders := strings.Split(value, "|")
dbc = dbc.Order(strings.Join(orders, " "))
}
}
err := dbc.Find(&entities).Error
return &entities, err
}
/*
@title 函数名称: CountByQueryParam
@description : 计算符合条件的记录总数!queryParam通用条件
@auth 作者: leijianming 时间: 2021-10-23 12:25:18
@param 输入参数名: param *dto.TableNameQueryParam
@return 返回参数名: int32, error
*/
func (daoInst *TableNameDAO) CountByQueryParam(param *dto.TableNameQueryParam) (int32, error) {
var count int32
dbc := dbcontent.GetDB().Model(&model.TableName{}).Offset(0).Limit(1)
dbc = daoInst.buildWhere(param, dbc)
err := dbc.Count(&count).Error
return count, err
}
func (daoInst *TableNameDAO) formatTime(sec int64) string {
timeLayout := "2006-01-02 15:04:05"
datetime := time.Unix(sec, 0).Format(timeLayout)
return datetime
}
func (daoInst *TableNameDAO) formatDate(sec int64) string {
timeLayout := "2006-01-02"
datetime := time.Unix(sec, 0).Format(timeLayout)
return datetime
}
func (daoInst *TableNameDAO) localTimeFormat(ptime time.Time) string {
timeLayout := "2006-01-02 15:04:05"
return ptime.Format(timeLayout)
}
func (daoInst *TableNameDAO) localTimeUTCFormat(ptime time.Time) string {
timeLayout := "2006-01-02 15:04:05"
return ptime.UTC().Format(timeLayout)
}
func (daoInst *TableNameDAO) localDateFormat(localDateInt basemodel.LocalDateInt) string {
timeLayout := "2006-01-02"
datetime := localDateInt.Time.Format(timeLayout)
return datetime
}
func (daoInst *TableNameDAO) localDatetimeFormat(localTimeInt basemodel.LocalTimeInt) string {
timeLayout := "2006-01-02 15:04:05"
datetime := localTimeInt.Time.Format(timeLayout)
return datetime
}
/*
@title 函数名称: buildWhere
@description : 构造通用查询条件
@auth 作者: leijianming 时间: 2021-10-23 12:25:18
@param 输入参数名: param * dto.TableNameQueryParam, dbcontent *gorm.D
@return 返回参数名: *gorm.DB
*/
func (daoInst *TableNameDAO) buildWhere(param *dto.TableNameQueryParam, dbc *gorm.DB) *gorm.DB {
// 区间条件 时间,数字等
pp := param.Param
if pp.DateRanges != nil && len(pp.DateRanges) > 0 {
for key := range pp.DateRanges { //取map中的数组值
dbc = dbc.Where(fmt.Sprintf("%s BETWEEN ? and ?", key),
daoInst.formatTime(pp.DateRanges[key][0]), daoInst.formatTime(pp.DateRanges[key][1]))
}
}
if pp.IntRanges != nil && len(pp.IntRanges) > 0 {
for key := range pp.IntRanges { //取map中的数组值
dbc = dbc.Where(fmt.Sprintf("%s BETWEEN ? and ?", key), pp.IntRanges[key][0], pp.IntRanges[key][1])
}
}
if pp.StringRanges != nil && len(pp.StringRanges) > 0 {
for key := range pp.StringRanges { //取map中的数组值
dbc = dbc.Where(fmt.Sprintf("%s BETWEEN ? and ?", key), pp.StringRanges[key][0], pp.StringRanges[key][1])
}
}
// id in (1,2,3)
if pp.InRanges != nil && len(pp.InRanges) > 0 {
for key := range pp.InRanges { //取map中的数组值
dbc = dbc.Where(fmt.Sprintf("%s in (%s)", key, pp.InRanges[key]))
}
}
/*if pp.DatetimeRanges != nil && len(pp.DatetimeRanges) > 0 {
for key := range pp.DatetimeRanges { //取map中的数组值
dbc = dbc.Where(fmt.Sprintf("%s BETWEEN ? and ?", key),
pp.DatetimeRanges[key][0].Format("2006-01-02 15:04:05"),
pp.DatetimeRanges[key][1].Format("2006-01-02 15:04:05"))
}
}*/
// 等于条件 或者未来支持模糊查询!
if pp.Id != nil && *pp.Id != 0 {
dbc = dbc.Where("id=?", *pp.Id)
}
if pp.Rowid != nil && *pp.Rowid != 0 {
dbc = dbc.Where("rowid=?", *pp.Rowid)
}
if pp.Vc != nil && *pp.Vc != 0 {
dbc = dbc.Where("vc=?", *pp.Vc)
}
if pp.Name != nil && *pp.Name != "" {
if param.FuzzyQuery {
dbc = dbc.Where("name like ?", "%"+*pp.Name+"%")
} else {
dbc = dbc.Where("name=?", *pp.Name)
}
}
if pp.TimeHms != nil && *pp.TimeHms != 0 {
dbc = dbc.Where("time_hms=?", *pp.TimeHms)
}
if pp.Adatetime != nil {
dbc = dbc.Where("adatetime=?", *pp.Adatetime)
}
if pp.Atimestamp != nil {
dbc = dbc.Where("atimestamp=?", *pp.Atimestamp)
}
if pp.Adate != nil {
dbc = dbc.Where("adate=?", *pp.Adate)
}
if pp.BitField != nil {
dbc = dbc.Where("bit_field=?", *pp.BitField)
}
if pp.T != nil && *pp.T != 0 {
dbc = dbc.Where("t=?", *pp.T)
}
return dbc
}
/*
@title 函数名称: Demo
@description : 代码调用示例
@auth 作者: leijianming 时间: 2021-10-23 12:25:18
@param 输入参数名: 无
@return 返回参数名: 无
*/
func (daoInst *TableNameDAO) Demo() {
//var InstTableNameDAO = dao.InstTableNameDAO
entity, _, _ := InstTableNameDAO.FindById(3)
fmt.Println(*entity)
var qp dto.TableNameQueryParam
qp.Param = new(dto.TableNameParam)
qp.Ini()
entities, _ := InstTableNameDAO.FindByQueryParam(&qp)
/*for _, v := range *entities {
if v.Name != nil {
fmt.Println(v.String())
}
}*/
fmt.Println(len(*entities))
fmt.Println(qp.String())
var sentity model.TableName
sentity.Ini(false)
id, _ := InstTableNameDAO.Insert(&sentity)
fmt.Println(id)
ret, _, _ := InstTableNameDAO.FindById(*entity.Id)
fmt.Println(ret.String())
entity.Id = sentity.Id
InstTableNameDAO.Update(entity)
InstTableNameDAO.DeleteById(*entity.Id)
}
Go
1
https://gitee.com/ichub/go-factroy2024.git
git@gitee.com:ichub/go-factroy2024.git
ichub
go-factroy2024
go-factroy2024
v1.2.0

搜索帮助