|
|
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-cooperation/pkg/domain"
|
|
|
"gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/pg/models"
|
|
|
"gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/pg/transform"
|
|
|
)
|
|
|
|
|
|
type DividendsEstimateRepository struct {
|
|
|
transactionContext *pgTransaction.TransactionContext
|
|
|
}
|
|
|
|
|
|
func (repository *DividendsEstimateRepository) nextIdentify() (int64, error) {
|
|
|
IdWorker, err := snowflake.NewIdWorker(1)
|
|
|
if err != nil {
|
|
|
return 0, err
|
|
|
}
|
|
|
id, err := IdWorker.NextId()
|
|
|
return id, err
|
|
|
}
|
|
|
func (repository *DividendsEstimateRepository) Save(dividendsEstimate *domain.DividendsEstimate) (*domain.DividendsEstimate, error) {
|
|
|
sqlBuildFields := []string{
|
|
|
"dividends_estimate_id",
|
|
|
"dividends_account_status",
|
|
|
"dividends_amount",
|
|
|
"dividends_estimate_order_number",
|
|
|
"dividends_estimate_time",
|
|
|
"dividends_participate_type",
|
|
|
"dividends_type",
|
|
|
"order_or_returned_order_num",
|
|
|
"cooperation_project_number",
|
|
|
"dividends_user",
|
|
|
"org",
|
|
|
"company",
|
|
|
"operator",
|
|
|
"operate_time",
|
|
|
"created_at",
|
|
|
"deleted_at",
|
|
|
"updated_at",
|
|
|
}
|
|
|
insertFieldsSnippet := sqlbuilder.SqlFieldsSnippet(sqlBuildFields)
|
|
|
insertPlaceHoldersSnippet := sqlbuilder.SqlPlaceHoldersSnippet(sqlBuildFields)
|
|
|
returningFieldsSnippet := sqlbuilder.SqlFieldsSnippet(sqlBuildFields)
|
|
|
updateFields := sqlbuilder.RemoveSqlFields(sqlBuildFields, "dividendsEstimate_id")
|
|
|
updateFieldsSnippet := sqlbuilder.SqlUpdateFieldsSnippet(updateFields)
|
|
|
tx := repository.transactionContext.PgTx
|
|
|
if dividendsEstimate.Identify() == nil {
|
|
|
dividendsEstimateId, err := repository.nextIdentify()
|
|
|
if err != nil {
|
|
|
return dividendsEstimate, err
|
|
|
} else {
|
|
|
dividendsEstimate.DividendsEstimateId = dividendsEstimateId
|
|
|
}
|
|
|
if _, err := tx.QueryOne(
|
|
|
pg.Scan(
|
|
|
÷ndsEstimate.DividendsEstimateId,
|
|
|
÷ndsEstimate.DividendsAccountStatus,
|
|
|
÷ndsEstimate.DividendsAmount,
|
|
|
÷ndsEstimate.DividendsEstimateOrderNumber,
|
|
|
÷ndsEstimate.DividendsEstimateTime,
|
|
|
÷ndsEstimate.DividendsParticipateType,
|
|
|
÷ndsEstimate.DividendsType,
|
|
|
÷ndsEstimate.OrderOrReturnedOrderNum,
|
|
|
÷ndsEstimate.CooperationProjectNumber,
|
|
|
÷ndsEstimate.DividendsUser,
|
|
|
÷ndsEstimate.Org,
|
|
|
÷ndsEstimate.Company,
|
|
|
÷ndsEstimate.Operator,
|
|
|
÷ndsEstimate.OperateTime,
|
|
|
÷ndsEstimate.CreatedAt,
|
|
|
÷ndsEstimate.DeletedAt,
|
|
|
÷ndsEstimate.UpdatedAt,
|
|
|
),
|
|
|
fmt.Sprintf("INSERT INTO dividends_estimates (%s) VALUES (%s) RETURNING %s", insertFieldsSnippet, insertPlaceHoldersSnippet, returningFieldsSnippet),
|
|
|
dividendsEstimate.DividendsEstimateId,
|
|
|
dividendsEstimate.DividendsAccountStatus,
|
|
|
dividendsEstimate.DividendsAmount,
|
|
|
dividendsEstimate.DividendsEstimateOrderNumber,
|
|
|
dividendsEstimate.DividendsEstimateTime,
|
|
|
dividendsEstimate.DividendsParticipateType,
|
|
|
dividendsEstimate.DividendsType,
|
|
|
dividendsEstimate.OrderOrReturnedOrderNum,
|
|
|
dividendsEstimate.CooperationProjectNumber,
|
|
|
dividendsEstimate.DividendsUser,
|
|
|
dividendsEstimate.Org,
|
|
|
dividendsEstimate.Company,
|
|
|
dividendsEstimate.Operator,
|
|
|
dividendsEstimate.OperateTime,
|
|
|
dividendsEstimate.CreatedAt,
|
|
|
dividendsEstimate.DeletedAt,
|
|
|
dividendsEstimate.UpdatedAt,
|
|
|
); err != nil {
|
|
|
return dividendsEstimate, err
|
|
|
}
|
|
|
} else {
|
|
|
if _, err := tx.QueryOne(
|
|
|
pg.Scan(
|
|
|
÷ndsEstimate.DividendsEstimateId,
|
|
|
÷ndsEstimate.DividendsAccountStatus,
|
|
|
÷ndsEstimate.DividendsAmount,
|
|
|
÷ndsEstimate.DividendsEstimateOrderNumber,
|
|
|
÷ndsEstimate.DividendsEstimateTime,
|
|
|
÷ndsEstimate.DividendsParticipateType,
|
|
|
÷ndsEstimate.DividendsType,
|
|
|
÷ndsEstimate.OrderOrReturnedOrderNum,
|
|
|
÷ndsEstimate.CooperationProjectNumber,
|
|
|
÷ndsEstimate.DividendsUser,
|
|
|
÷ndsEstimate.Org,
|
|
|
÷ndsEstimate.Company,
|
|
|
÷ndsEstimate.Operator,
|
|
|
÷ndsEstimate.OperateTime,
|
|
|
÷ndsEstimate.CreatedAt,
|
|
|
÷ndsEstimate.DeletedAt,
|
|
|
÷ndsEstimate.UpdatedAt,
|
|
|
),
|
|
|
fmt.Sprintf("UPDATE dividends_estimates SET %s WHERE dividends_estimate_id=? RETURNING %s", updateFieldsSnippet, returningFieldsSnippet),
|
|
|
dividendsEstimate.DividendsEstimateId,
|
|
|
dividendsEstimate.DividendsAccountStatus,
|
|
|
dividendsEstimate.DividendsAmount,
|
|
|
dividendsEstimate.DividendsEstimateOrderNumber,
|
|
|
dividendsEstimate.DividendsEstimateTime,
|
|
|
dividendsEstimate.DividendsParticipateType,
|
|
|
dividendsEstimate.DividendsType,
|
|
|
dividendsEstimate.OrderOrReturnedOrderNum,
|
|
|
dividendsEstimate.CooperationProjectNumber,
|
|
|
dividendsEstimate.DividendsUser,
|
|
|
dividendsEstimate.Org,
|
|
|
dividendsEstimate.Company,
|
|
|
dividendsEstimate.Operator,
|
|
|
dividendsEstimate.OperateTime,
|
|
|
dividendsEstimate.CreatedAt,
|
|
|
dividendsEstimate.DeletedAt,
|
|
|
dividendsEstimate.UpdatedAt,
|
|
|
dividendsEstimate.Identify(),
|
|
|
); err != nil {
|
|
|
return dividendsEstimate, err
|
|
|
}
|
|
|
}
|
|
|
return dividendsEstimate, nil
|
|
|
}
|
|
|
func (repository *DividendsEstimateRepository) Remove(dividendsEstimate *domain.DividendsEstimate) (*domain.DividendsEstimate, error) {
|
|
|
tx := repository.transactionContext.PgTx
|
|
|
dividendsEstimateModel := new(models.DividendsEstimate)
|
|
|
dividendsEstimateModel.DividendsEstimateId = dividendsEstimate.Identify().(int64)
|
|
|
if _, err := tx.Model(dividendsEstimateModel).WherePK().Delete(); err != nil {
|
|
|
return dividendsEstimate, err
|
|
|
}
|
|
|
return dividendsEstimate, nil
|
|
|
}
|
|
|
func (repository *DividendsEstimateRepository) FindOne(queryOptions map[string]interface{}) (*domain.DividendsEstimate, error) {
|
|
|
tx := repository.transactionContext.PgTx
|
|
|
dividendsEstimateModel := new(models.DividendsEstimate)
|
|
|
query := sqlbuilder.BuildQuery(tx.Model(dividendsEstimateModel), queryOptions)
|
|
|
query.SetWhereByQueryOption("dividends_estimate.dividends_estimate_id = ?", "dividendsEstimateId")
|
|
|
if err := query.First(); err != nil {
|
|
|
if err.Error() == "pg: no rows in result set" {
|
|
|
return nil, fmt.Errorf("没有此资源")
|
|
|
} else {
|
|
|
return nil, err
|
|
|
}
|
|
|
}
|
|
|
if dividendsEstimateModel.DividendsEstimateId == 0 {
|
|
|
return nil, nil
|
|
|
} else {
|
|
|
return transform.TransformToDividendsEstimateDomainModelFromPgModels(dividendsEstimateModel)
|
|
|
}
|
|
|
}
|
|
|
func (repository *DividendsEstimateRepository) Find(queryOptions map[string]interface{}) (int64, []*domain.DividendsEstimate, error) {
|
|
|
tx := repository.transactionContext.PgTx
|
|
|
var dividendsEstimateModels []*models.DividendsEstimate
|
|
|
dividendsEstimates := make([]*domain.DividendsEstimate, 0)
|
|
|
query := sqlbuilder.BuildQuery(tx.Model(÷ndsEstimateModels), queryOptions)
|
|
|
query.SetOffsetAndLimit(20)
|
|
|
query.SetOrderDirect("dividends_estimate_id", "DESC")
|
|
|
if count, err := query.SelectAndCount(); err != nil {
|
|
|
return 0, dividendsEstimates, err
|
|
|
} else {
|
|
|
for _, dividendsEstimateModel := range dividendsEstimateModels {
|
|
|
if dividendsEstimate, err := transform.TransformToDividendsEstimateDomainModelFromPgModels(dividendsEstimateModel); err != nil {
|
|
|
return 0, dividendsEstimates, err
|
|
|
} else {
|
|
|
dividendsEstimates = append(dividendsEstimates, dividendsEstimate)
|
|
|
}
|
|
|
}
|
|
|
return int64(count), dividendsEstimates, nil
|
|
|
}
|
|
|
}
|
|
|
func NewDividendsEstimateRepository(transactionContext *pgTransaction.TransactionContext) (*DividendsEstimateRepository, error) {
|
|
|
if transactionContext == nil {
|
|
|
return nil, fmt.Errorf("transactionContext参数不能为nil")
|
|
|
} else {
|
|
|
return &DividendsEstimateRepository{
|
|
|
transactionContext: transactionContext,
|
|
|
}, nil
|
|
|
}
|
|
|
} |
...
|
...
|
|