|
|
package repository
|
|
|
|
|
|
import (
|
|
|
"fmt"
|
|
|
|
|
|
"github.com/go-pg/pg/v10"
|
|
|
"github.com/linmadan/egglib-go/persistent/pg/sqlbuilder"
|
|
|
pgTransaction "github.com/linmadan/egglib-go/transaction/pg"
|
|
|
"github.com/linmadan/egglib-go/utils/snowflake"
|
|
|
"gitlab.fjmaimaimai.com/allied-creation/allied-creation-basic/pkg/domain"
|
|
|
"gitlab.fjmaimaimai.com/allied-creation/allied-creation-basic/pkg/infrastructure/pg/models"
|
|
|
"gitlab.fjmaimaimai.com/allied-creation/allied-creation-basic/pkg/infrastructure/pg/transform"
|
|
|
)
|
|
|
|
|
|
type NoticePersonalRepository struct {
|
|
|
transactionContext *pgTransaction.TransactionContext
|
|
|
}
|
|
|
|
|
|
func (repository *NoticePersonalRepository) nextIdentify() (int64, error) {
|
|
|
IdWorker, err := snowflake.NewIdWorker(1)
|
|
|
if err != nil {
|
|
|
return 0, err
|
|
|
}
|
|
|
id, err := IdWorker.NextId()
|
|
|
return id, err
|
|
|
}
|
|
|
func (repository *NoticePersonalRepository) Save(noticePersonal *domain.NoticePersonal) (*domain.NoticePersonal, error) {
|
|
|
sqlBuildFields := []string{
|
|
|
"created_at",
|
|
|
"deleted_at",
|
|
|
"updated_at",
|
|
|
"extend",
|
|
|
"company_id",
|
|
|
"content",
|
|
|
"is_read",
|
|
|
"module",
|
|
|
"module_action",
|
|
|
"notice_personal_id",
|
|
|
"org_id",
|
|
|
"sys_code",
|
|
|
"user_id",
|
|
|
"user_base_id",
|
|
|
}
|
|
|
insertFieldsSnippet := sqlbuilder.SqlFieldsSnippet(sqlBuildFields)
|
|
|
insertPlaceHoldersSnippet := sqlbuilder.SqlPlaceHoldersSnippet(sqlBuildFields)
|
|
|
returningFieldsSnippet := sqlbuilder.SqlFieldsSnippet(sqlBuildFields)
|
|
|
updateFields := sqlbuilder.RemoveSqlFields(sqlBuildFields, "noticePersonal_id")
|
|
|
updateFieldsSnippet := sqlbuilder.SqlUpdateFieldsSnippet(updateFields)
|
|
|
tx := repository.transactionContext.PgTx
|
|
|
if noticePersonal.Identify() == nil {
|
|
|
noticePersonalId, err := repository.nextIdentify()
|
|
|
if err != nil {
|
|
|
return noticePersonal, err
|
|
|
} else {
|
|
|
noticePersonal.NoticePersonalId = noticePersonalId
|
|
|
}
|
|
|
if _, err := tx.QueryOne(
|
|
|
pg.Scan(
|
|
|
¬icePersonal.CreatedAt,
|
|
|
¬icePersonal.DeletedAt,
|
|
|
¬icePersonal.UpdatedAt,
|
|
|
¬icePersonal.Extend,
|
|
|
¬icePersonal.CompanyId,
|
|
|
¬icePersonal.Content,
|
|
|
¬icePersonal.IsRead,
|
|
|
¬icePersonal.Module,
|
|
|
¬icePersonal.ModuleAction,
|
|
|
¬icePersonal.NoticePersonalId,
|
|
|
¬icePersonal.OrgId,
|
|
|
¬icePersonal.SysCode,
|
|
|
¬icePersonal.UserId,
|
|
|
¬icePersonal.UserBaseId,
|
|
|
),
|
|
|
fmt.Sprintf("INSERT INTO notice_personals (%s) VALUES (%s) RETURNING %s", insertFieldsSnippet, insertPlaceHoldersSnippet, returningFieldsSnippet),
|
|
|
noticePersonal.CreatedAt,
|
|
|
noticePersonal.DeletedAt,
|
|
|
noticePersonal.UpdatedAt,
|
|
|
noticePersonal.Extend,
|
|
|
noticePersonal.CompanyId,
|
|
|
noticePersonal.Content,
|
|
|
noticePersonal.IsRead,
|
|
|
noticePersonal.Module,
|
|
|
noticePersonal.ModuleAction,
|
|
|
noticePersonal.NoticePersonalId,
|
|
|
noticePersonal.OrgId,
|
|
|
noticePersonal.SysCode,
|
|
|
noticePersonal.UserId,
|
|
|
noticePersonal.UserBaseId,
|
|
|
); err != nil {
|
|
|
return noticePersonal, err
|
|
|
}
|
|
|
} else {
|
|
|
if _, err := tx.QueryOne(
|
|
|
pg.Scan(
|
|
|
¬icePersonal.CreatedAt,
|
|
|
¬icePersonal.DeletedAt,
|
|
|
¬icePersonal.UpdatedAt,
|
|
|
¬icePersonal.Extend,
|
|
|
¬icePersonal.CompanyId,
|
|
|
¬icePersonal.Content,
|
|
|
¬icePersonal.IsRead,
|
|
|
¬icePersonal.Module,
|
|
|
¬icePersonal.ModuleAction,
|
|
|
¬icePersonal.NoticePersonalId,
|
|
|
¬icePersonal.OrgId,
|
|
|
¬icePersonal.SysCode,
|
|
|
¬icePersonal.UserId,
|
|
|
¬icePersonal.UserBaseId,
|
|
|
),
|
|
|
fmt.Sprintf("UPDATE notice_personals SET %s WHERE notice_personal_id=? RETURNING %s", updateFieldsSnippet, returningFieldsSnippet),
|
|
|
noticePersonal.CreatedAt,
|
|
|
noticePersonal.DeletedAt,
|
|
|
noticePersonal.UpdatedAt,
|
|
|
noticePersonal.Extend,
|
|
|
noticePersonal.CompanyId,
|
|
|
noticePersonal.Content,
|
|
|
noticePersonal.IsRead,
|
|
|
noticePersonal.Module,
|
|
|
noticePersonal.ModuleAction,
|
|
|
noticePersonal.NoticePersonalId,
|
|
|
noticePersonal.OrgId,
|
|
|
noticePersonal.SysCode,
|
|
|
noticePersonal.UserId,
|
|
|
noticePersonal.Identify(),
|
|
|
); err != nil {
|
|
|
return noticePersonal, err
|
|
|
}
|
|
|
}
|
|
|
return noticePersonal, nil
|
|
|
}
|
|
|
func (repository *NoticePersonalRepository) Remove(noticePersonal *domain.NoticePersonal) (*domain.NoticePersonal, error) {
|
|
|
tx := repository.transactionContext.PgTx
|
|
|
noticePersonalModel := new(models.NoticePersonal)
|
|
|
noticePersonalModel.NoticePersonalId = noticePersonal.Identify().(int64)
|
|
|
if _, err := tx.Model(noticePersonalModel).WherePK().Delete(); err != nil {
|
|
|
return noticePersonal, err
|
|
|
}
|
|
|
return noticePersonal, nil
|
|
|
}
|
|
|
func (repository *NoticePersonalRepository) FindOne(queryOptions map[string]interface{}) (*domain.NoticePersonal, error) {
|
|
|
tx := repository.transactionContext.PgTx
|
|
|
noticePersonalModel := new(models.NoticePersonal)
|
|
|
query := sqlbuilder.BuildQuery(tx.Model(noticePersonalModel), queryOptions)
|
|
|
query.SetWhereByQueryOption("notice_personal.notice_personal_id = ?", "noticePersonalId")
|
|
|
if err := query.First(); err != nil {
|
|
|
if err.Error() == "pg: no rows in result set" {
|
|
|
return nil, fmt.Errorf("没有此资源")
|
|
|
} else {
|
|
|
return nil, err
|
|
|
}
|
|
|
}
|
|
|
if noticePersonalModel.NoticePersonalId == 0 {
|
|
|
return nil, nil
|
|
|
} else {
|
|
|
return transform.TransformToNoticePersonalDomainModelFromPgModels(noticePersonalModel)
|
|
|
}
|
|
|
}
|
|
|
func (repository *NoticePersonalRepository) Find(queryOptions map[string]interface{}) (int64, []*domain.NoticePersonal, error) {
|
|
|
tx := repository.transactionContext.PgTx
|
|
|
var noticePersonalModels []*models.NoticePersonal
|
|
|
noticePersonals := make([]*domain.NoticePersonal, 0)
|
|
|
query := sqlbuilder.BuildQuery(tx.Model(¬icePersonalModels), queryOptions)
|
|
|
query.SetOffsetAndLimit(20)
|
|
|
query.SetOrderDirect("notice_personal_id", "DESC")
|
|
|
if count, err := query.SelectAndCount(); err != nil {
|
|
|
return 0, noticePersonals, err
|
|
|
} else {
|
|
|
for _, noticePersonalModel := range noticePersonalModels {
|
|
|
if noticePersonal, err := transform.TransformToNoticePersonalDomainModelFromPgModels(noticePersonalModel); err != nil {
|
|
|
return 0, noticePersonals, err
|
|
|
} else {
|
|
|
noticePersonals = append(noticePersonals, noticePersonal)
|
|
|
}
|
|
|
}
|
|
|
return int64(count), noticePersonals, nil
|
|
|
}
|
|
|
}
|
|
|
func NewNoticePersonalRepository(transactionContext *pgTransaction.TransactionContext) (*NoticePersonalRepository, error) {
|
|
|
if transactionContext == nil {
|
|
|
return nil, fmt.Errorf("transactionContext参数不能为nil")
|
|
|
} else {
|
|
|
return &NoticePersonalRepository{
|
|
|
transactionContext: transactionContext,
|
|
|
}, nil
|
|
|
}
|
|
|
} |
...
|
...
|
|