正在显示
7 个修改的文件
包含
150 行增加
和
20 行删除
pkg/application/factory/domain_service.go
0 → 100644
| 1 | +package factory | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/domain/service" | ||
| 5 | + "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/infrastructure/domainService" | ||
| 6 | + "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/infrastructure/pg/transaction" | ||
| 7 | +) | ||
| 8 | + | ||
| 9 | +func CreateBusinessBonusService(options map[string]interface{}) (service.BusinessBonusService, error) { | ||
| 10 | + var transactionContext *transaction.TransactionContext | ||
| 11 | + if value, ok := options["transactionContext"]; ok { | ||
| 12 | + transactionContext = value.(*transaction.TransactionContext) | ||
| 13 | + } | ||
| 14 | + return domainService.NewBusinessBonusService(transactionContext), nil | ||
| 15 | +} |
| @@ -8,6 +8,7 @@ import ( | @@ -8,6 +8,7 @@ import ( | ||
| 8 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/partnerInfo/command" | 8 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/partnerInfo/command" |
| 9 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/partnerInfo/query" | 9 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/application/partnerInfo/query" |
| 10 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/domain" | 10 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/domain" |
| 11 | + "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/domain/service" | ||
| 11 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/infrastructure/dao" | 12 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/infrastructure/dao" |
| 12 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/lib" | 13 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/lib" |
| 13 | ) | 14 | ) |
| @@ -91,6 +92,17 @@ func (PartnerInfoService *PartnerInfoService) CreatePartnerInfo(cmd *command.Cre | @@ -91,6 +92,17 @@ func (PartnerInfoService *PartnerInfoService) CreatePartnerInfo(cmd *command.Cre | ||
| 91 | if err = partnerInfoRepository.Save(&newPartnerInfo); err != nil { | 92 | if err = partnerInfoRepository.Save(&newPartnerInfo); err != nil { |
| 92 | return nil, lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | 93 | return nil, lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) |
| 93 | } | 94 | } |
| 95 | + var businessBonusSrv service.BusinessBonusService | ||
| 96 | + if businessBonusSrv, err = factory.CreateBusinessBonusService(map[string]interface{}{ | ||
| 97 | + "transactionContext": transactionContext, | ||
| 98 | + }); err != nil { | ||
| 99 | + return nil, lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 100 | + } | ||
| 101 | + err = businessBonusSrv.EnableOrDisable(newPartnerInfo.Partner.Id) | ||
| 102 | + if err != nil { | ||
| 103 | + e := fmt.Sprintf("更新业务分红(partner_id=%d)数据失败:%s", newPartnerInfo.Partner.Id, err) | ||
| 104 | + return nil, lib.ThrowError(lib.INTERNAL_SERVER_ERROR, e) | ||
| 105 | + } | ||
| 94 | err = transactionContext.CommitTransaction() | 106 | err = transactionContext.CommitTransaction() |
| 95 | return newPartnerInfo, nil | 107 | return newPartnerInfo, nil |
| 96 | } | 108 | } |
| @@ -202,6 +214,17 @@ func (PartnerInfoService *PartnerInfoService) UpdatePartnerInfo(cmd *command.Upd | @@ -202,6 +214,17 @@ func (PartnerInfoService *PartnerInfoService) UpdatePartnerInfo(cmd *command.Upd | ||
| 202 | if err = partnerInfoRepository.Save(partnerInfo); err != nil { | 214 | if err = partnerInfoRepository.Save(partnerInfo); err != nil { |
| 203 | return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | 215 | return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) |
| 204 | } | 216 | } |
| 217 | + var businessBonusSrv service.BusinessBonusService | ||
| 218 | + if businessBonusSrv, err = factory.CreateBusinessBonusService(map[string]interface{}{ | ||
| 219 | + "transactionContext": transactionContext, | ||
| 220 | + }); err != nil { | ||
| 221 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 222 | + } | ||
| 223 | + err = businessBonusSrv.EnableOrDisable(partnerInfo.Partner.Id) | ||
| 224 | + if err != nil { | ||
| 225 | + e := fmt.Sprintf("更新业务分红(partner_id=%d)数据失败:%s", partnerInfo.Partner.Id, err) | ||
| 226 | + return lib.ThrowError(lib.INTERNAL_SERVER_ERROR, e) | ||
| 227 | + } | ||
| 205 | transactionContext.CommitTransaction() | 228 | transactionContext.CommitTransaction() |
| 206 | return | 229 | return |
| 207 | } | 230 | } |
| @@ -6,6 +6,7 @@ import ( | @@ -6,6 +6,7 @@ import ( | ||
| 6 | "time" | 6 | "time" |
| 7 | 7 | ||
| 8 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/domain" | 8 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/domain" |
| 9 | + "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/infrastructure/pg/models" | ||
| 9 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/infrastructure/pg/transaction" | 10 | "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/infrastructure/pg/transaction" |
| 10 | ) | 11 | ) |
| 11 | 12 | ||
| @@ -93,3 +94,11 @@ func (dao BusinessBonusDao) CountBusinessBonus(partnerId int64, partnerNameMatch | @@ -93,3 +94,11 @@ func (dao BusinessBonusDao) CountBusinessBonus(partnerId int64, partnerNameMatch | ||
| 93 | _, err = tx.Query(&result, sql, allParam...) | 94 | _, err = tx.Query(&result, sql, allParam...) |
| 94 | return result, err | 95 | return result, err |
| 95 | } | 96 | } |
| 97 | + | ||
| 98 | +func (dao BusinessBonusDao) ExistBusinessBonus(userId int64) (bool, error) { | ||
| 99 | + tx := dao.transactionContext.PgTx | ||
| 100 | + ok, err := tx.Model(&models.BusinessBonus{}). | ||
| 101 | + Where("user_id=?", userId). | ||
| 102 | + Exists() | ||
| 103 | + return ok, err | ||
| 104 | +} |
| 1 | +package domainService | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/domain" | ||
| 5 | + "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/infrastructure/dao" | ||
| 6 | + "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/infrastructure/pg/transaction" | ||
| 7 | + "gitlab.fjmaimaimai.com/mmm-go/partnermg/pkg/infrastructure/repository" | ||
| 8 | +) | ||
| 9 | + | ||
| 10 | +type BusinessBonusService struct { | ||
| 11 | + transactionContext *transaction.TransactionContext | ||
| 12 | +} | ||
| 13 | + | ||
| 14 | +func NewBusinessBonusService(tcx *transaction.TransactionContext) *BusinessBonusService { | ||
| 15 | + return &BusinessBonusService{ | ||
| 16 | + transactionContext: tcx, | ||
| 17 | + } | ||
| 18 | +} | ||
| 19 | +func (srv BusinessBonusService) EnableOrDisable(parntnerId int64) error { | ||
| 20 | + var ( | ||
| 21 | + bonusDao, _ = dao.NewBusinessBonusDao(srv.transactionContext) | ||
| 22 | + bonusReponsitory, _ = repository.NewBusinessBonusRepository(srv.transactionContext) | ||
| 23 | + partnerReponsitory, _ = repository.NewPartnerInfoRepository(srv.transactionContext) | ||
| 24 | + | ||
| 25 | + err error | ||
| 26 | + partnerHasInBonus bool | ||
| 27 | + partnerData *domain.PartnerInfo | ||
| 28 | + partnerHasBusinessCategory bool | ||
| 29 | + ) | ||
| 30 | + partnerHasInBonus, err = bonusDao.ExistBusinessBonus(parntnerId) | ||
| 31 | + if err != nil { | ||
| 32 | + return err | ||
| 33 | + } | ||
| 34 | + partnerData, err = partnerReponsitory.FindOne(domain.PartnerFindOneQuery{UserId: parntnerId}) | ||
| 35 | + if err != nil { | ||
| 36 | + return err | ||
| 37 | + } | ||
| 38 | + for _, v := range partnerData.PartnerCategoryInfos { | ||
| 39 | + if v.Id == 2 { | ||
| 40 | + partnerHasBusinessCategory = true | ||
| 41 | + break | ||
| 42 | + } | ||
| 43 | + } | ||
| 44 | + if partnerHasInBonus && partnerHasBusinessCategory { | ||
| 45 | + //已存在业务分红数据况 && 是业务合伙人类型 | ||
| 46 | + var bonusData *domain.BusinessBonus | ||
| 47 | + bonusData, err = bonusReponsitory.FindOne(domain.BusinessBonusFindOneQuery{ | ||
| 48 | + PartnerId: parntnerId, | ||
| 49 | + }) | ||
| 50 | + if bonusData.IsDisable == domain.BUSINESS_BONUS_ENABLE { | ||
| 51 | + return nil | ||
| 52 | + } | ||
| 53 | + bonusData.IsDisable = domain.BUSINESS_BONUS_ENABLE | ||
| 54 | + err = bonusReponsitory.Edit(bonusData) | ||
| 55 | + return err | ||
| 56 | + } | ||
| 57 | + if partnerHasInBonus && !partnerHasBusinessCategory { | ||
| 58 | + //已存在业务分红数据况 && 不是业务合伙人类型 | ||
| 59 | + var bonusData *domain.BusinessBonus | ||
| 60 | + bonusData, err = bonusReponsitory.FindOne(domain.BusinessBonusFindOneQuery{ | ||
| 61 | + PartnerId: parntnerId, | ||
| 62 | + }) | ||
| 63 | + if bonusData.IsDisable == domain.BUSINESS_BONUS_DISABLE { | ||
| 64 | + return nil | ||
| 65 | + } | ||
| 66 | + bonusData.IsDisable = domain.BUSINESS_BONUS_DISABLE | ||
| 67 | + err = bonusReponsitory.Edit(bonusData) | ||
| 68 | + return err | ||
| 69 | + } | ||
| 70 | + | ||
| 71 | + if !partnerHasInBonus && partnerHasBusinessCategory { | ||
| 72 | + //不存在业务分红数据况 && 是业务合伙人类型 | ||
| 73 | + newBonus := &domain.BusinessBonus{ | ||
| 74 | + PartnerInfoId: partnerData.Partner.Id, | ||
| 75 | + IsDisable: domain.BUSINESS_BONUS_ENABLE, | ||
| 76 | + CompanyId: partnerData.CompanyId, | ||
| 77 | + Bonus: 0, | ||
| 78 | + } | ||
| 79 | + err = bonusReponsitory.Add(newBonus) | ||
| 80 | + return err | ||
| 81 | + } | ||
| 82 | + | ||
| 83 | + return nil | ||
| 84 | +} |
| @@ -11,23 +11,23 @@ import ( | @@ -11,23 +11,23 @@ import ( | ||
| 11 | type BusinessBonus struct { | 11 | type BusinessBonus struct { |
| 12 | tableName struct{} `pg:"business_bonus"` | 12 | tableName struct{} `pg:"business_bonus"` |
| 13 | // 唯一标识 | 13 | // 唯一标识 |
| 14 | - Id int64 | 14 | + Id int64 `pg:",pk"` |
| 15 | // 公司编号 | 15 | // 公司编号 |
| 16 | CompanyId int64 | 16 | CompanyId int64 |
| 17 | // 合伙人信息Id | 17 | // 合伙人信息Id |
| 18 | PartnerInfoId int64 | 18 | PartnerInfoId int64 |
| 19 | // 应收分红 | 19 | // 应收分红 |
| 20 | - Bonus float64 | 20 | + Bonus float64 `pg:",use_zero"` |
| 21 | // 未收分红 | 21 | // 未收分红 |
| 22 | BonusNot float64 | 22 | BonusNot float64 |
| 23 | // 分红支出 | 23 | // 分红支出 |
| 24 | BonusExpense float64 | 24 | BonusExpense float64 |
| 25 | //已收分红 | 25 | //已收分红 |
| 26 | BonusHas float64 | 26 | BonusHas float64 |
| 27 | - // 是否关闭【0;否】【1:是】 | ||
| 28 | - IsDisable int8 | 27 | + //是否有效【0;无效】【1:有效】 |
| 28 | + IsDisable int8 `pg:",use_zero"` | ||
| 29 | // 分红状态 1:待支付分红 2:已支付分红 | 29 | // 分红状态 1:待支付分红 2:已支付分红 |
| 30 | - BonusStatus int8 | 30 | + BonusStatus int8 `pg:",use_zero"` |
| 31 | // 创建时间 | 31 | // 创建时间 |
| 32 | CreateAt time.Time | 32 | CreateAt time.Time |
| 33 | // 更新时间 | 33 | // 更新时间 |
| @@ -47,6 +47,5 @@ var _ pg.BeforeInsertHook = (*BusinessBonus)(nil) | @@ -47,6 +47,5 @@ var _ pg.BeforeInsertHook = (*BusinessBonus)(nil) | ||
| 47 | 47 | ||
| 48 | func (bonus *BusinessBonus) BeforeInsert(ctx context.Context) (context.Context, error) { | 48 | func (bonus *BusinessBonus) BeforeInsert(ctx context.Context) (context.Context, error) { |
| 49 | bonus.CreateAt = time.Now() | 49 | bonus.CreateAt = time.Now() |
| 50 | - bonus.UpdateAt = time.Now() | ||
| 51 | return ctx, nil | 50 | return ctx, nil |
| 52 | } | 51 | } |
| @@ -56,19 +56,7 @@ func (repository *PartnerInfoRepository) Save(dm *domain.PartnerInfo) error { | @@ -56,19 +56,7 @@ func (repository *PartnerInfoRepository) Save(dm *domain.PartnerInfo) error { | ||
| 56 | err error | 56 | err error |
| 57 | tx = repository.transactionContext.PgTx | 57 | tx = repository.transactionContext.PgTx |
| 58 | ) | 58 | ) |
| 59 | - m := &models.PartnerInfo{ | ||
| 60 | - Id: dm.Partner.Id, | ||
| 61 | - PartnerName: dm.Partner.PartnerName, | ||
| 62 | - Account: dm.Partner.Account, | ||
| 63 | - Password: dm.Password, | ||
| 64 | - Status: dm.Status, | ||
| 65 | - PartnerCategory: dm.PartnerCategory, | ||
| 66 | - Salesman: dm.Salesman, | ||
| 67 | - RegionInfo: dm.RegionInfo, | ||
| 68 | - CooperateTime: dm.CooperateTime, | ||
| 69 | - CompanyId: dm.CompanyId, | ||
| 70 | - // PartnerCategoryInfos: dm.PartnerCategoryInfos, | ||
| 71 | - } | 59 | + |
| 72 | categorys := []struct{ Id int64 }{} | 60 | categorys := []struct{ Id int64 }{} |
| 73 | for _, v := range dm.PartnerCategoryInfos { | 61 | for _, v := range dm.PartnerCategoryInfos { |
| 74 | temp := struct{ Id int64 }{ | 62 | temp := struct{ Id int64 }{ |
| @@ -76,7 +64,19 @@ func (repository *PartnerInfoRepository) Save(dm *domain.PartnerInfo) error { | @@ -76,7 +64,19 @@ func (repository *PartnerInfoRepository) Save(dm *domain.PartnerInfo) error { | ||
| 76 | } | 64 | } |
| 77 | categorys = append(categorys, temp) | 65 | categorys = append(categorys, temp) |
| 78 | } | 66 | } |
| 79 | - m.PartnerCategoryInfos = categorys | 67 | + m := &models.PartnerInfo{ |
| 68 | + Id: dm.Partner.Id, | ||
| 69 | + PartnerName: dm.Partner.PartnerName, | ||
| 70 | + Account: dm.Partner.Account, | ||
| 71 | + Password: dm.Password, | ||
| 72 | + Status: dm.Status, | ||
| 73 | + PartnerCategory: dm.PartnerCategory, | ||
| 74 | + Salesman: dm.Salesman, | ||
| 75 | + RegionInfo: dm.RegionInfo, | ||
| 76 | + CooperateTime: dm.CooperateTime, | ||
| 77 | + CompanyId: dm.CompanyId, | ||
| 78 | + PartnerCategoryInfos: categorys, | ||
| 79 | + } | ||
| 80 | if m.Id == 0 { | 80 | if m.Id == 0 { |
| 81 | err = tx.Insert(m) | 81 | err = tx.Insert(m) |
| 82 | dm.Partner.Id = m.Id | 82 | dm.Partner.Id = m.Id |
-
请 注册 或 登录 后发表评论