作者 陈志颖

合并分支 'dev' 到 'test'

Dev



查看合并请求 !19
@@ -800,11 +800,13 @@ func (dividendsEstimateService *DividendsEstimateService) ConfirmDividendsIncent @@ -800,11 +800,13 @@ func (dividendsEstimateService *DividendsEstimateService) ConfirmDividendsIncent
800 // 分离分红订单和退货单 800 // 分离分红订单和退货单
801 dividendsOrderNumbers := make([]string, 0) 801 dividendsOrderNumbers := make([]string, 0)
802 dividendsReturnedOrderNumbers := make([]string, 0) 802 dividendsReturnedOrderNumbers := make([]string, 0)
803 - for k, _ := range estimateSuccessfullyDividendsOrders {  
804 - if k[:2] == "RE" { // 分红退货单  
805 - dividendsReturnedOrderNumbers = append(dividendsReturnedOrderNumbers, k)  
806 - } else if k[:2] == "SL" { // 分红订单  
807 - dividendsOrderNumbers = append(dividendsOrderNumbers, k) 803 + if len(estimateSuccessfullyDividendsOrders) > 0 {
  804 + for k, _ := range estimateSuccessfullyDividendsOrders {
  805 + if k[:2] == "RE" { // 分红退货单
  806 + dividendsReturnedOrderNumbers = append(dividendsReturnedOrderNumbers, k)
  807 + } else if k[:2] == "SL" { // 分红订单
  808 + dividendsOrderNumbers = append(dividendsOrderNumbers, k)
  809 + }
808 } 810 }
809 } 811 }
810 812
@@ -819,33 +821,35 @@ func (dividendsEstimateService *DividendsEstimateService) ConfirmDividendsIncent @@ -819,33 +821,35 @@ func (dividendsEstimateService *DividendsEstimateService) ConfirmDividendsIncent
819 } 821 }
820 822
821 // 查找分红订单 823 // 查找分红订单
822 - if countDividendsOrdersFound, dividendsOrdersFound, err := dividendsOrderRepository.Find(map[string]interface{}{  
823 - "dividendsOrderNumbers": dividendsOrderNumbers,  
824 - "companyId": confirmDividendsIncentivesEstimateCommand.CompanyId,  
825 - "orgId": confirmDividendsIncentivesEstimateCommand.OrgId,  
826 - }); err != nil {  
827 - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())  
828 - } else {  
829 - if countDividendsOrdersFound > 0 {  
830 - for i, dividendsOrderFound := range dividendsOrdersFound {  
831 - var dividendsGoodCount int  
832 - for _, orderGood := range dividendsOrderFound.Goods {  
833 - if orderGood.OrderGoodDividendsStatus == 2 {  
834 - dividendsGoodCount = dividendsGoodCount + 1 824 + if len(dividendsOrderNumbers) > 0 {
  825 + if countDividendsOrdersFound, dividendsOrdersFound, err := dividendsOrderRepository.Find(map[string]interface{}{
  826 + "dividendsOrderNumbers": dividendsOrderNumbers,
  827 + "companyId": confirmDividendsIncentivesEstimateCommand.CompanyId,
  828 + "orgId": confirmDividendsIncentivesEstimateCommand.OrgId,
  829 + }); err != nil {
  830 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  831 + } else {
  832 + if countDividendsOrdersFound > 0 {
  833 + for i, dividendsOrderFound := range dividendsOrdersFound {
  834 + var dividendsGoodCount int
  835 + for _, orderGood := range dividendsOrderFound.Goods {
  836 + if orderGood.OrderGoodDividendsStatus == 2 {
  837 + dividendsGoodCount = dividendsGoodCount + 1
  838 + }
  839 + }
  840 + if dividendsGoodCount == len(dividendsOrderFound.Goods) { // 2已分红
  841 + dividendsOrdersFound[i].DividendStatus = 2
  842 + } else if dividendsGoodCount > 0 && dividendsGoodCount < len(dividendsOrderFound.Goods) { // 3部分分红
  843 + dividendsOrdersFound[i].DividendStatus = 3
  844 + } else if dividendsGoodCount == 0 { // 1未分红
  845 + dividendsOrdersFound[i].DividendStatus = 1
835 } 846 }
836 } 847 }
837 - if dividendsGoodCount == len(dividendsOrderFound.Goods) { // 2已分红  
838 - dividendsOrdersFound[i].DividendStatus = 2  
839 - } else if dividendsGoodCount > 0 && dividendsGoodCount < len(dividendsOrderFound.Goods) { // 3部分分红  
840 - dividendsOrdersFound[i].DividendStatus = 3  
841 - } else if dividendsGoodCount == 0 { // 1未分红  
842 - dividendsOrdersFound[i].DividendStatus = 1 848 + // 保存订单状态
  849 + if _, err6 := dividendsOrderRepository.UpdateMany(dividendsOrdersFound); err6 != nil {
  850 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
843 } 851 }
844 } 852 }
845 - // 保存订单状态  
846 - if _, err6 := dividendsOrderRepository.UpdateMany(dividendsOrdersFound); err6 != nil {  
847 - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())  
848 - }  
849 } 853 }
850 } 854 }
851 855
@@ -860,33 +864,35 @@ func (dividendsEstimateService *DividendsEstimateService) ConfirmDividendsIncent @@ -860,33 +864,35 @@ func (dividendsEstimateService *DividendsEstimateService) ConfirmDividendsIncent
860 } 864 }
861 865
862 // 查找分红退货单 866 // 查找分红退货单
863 - if countDividendsReturnedOrdersFound, dividendsReturnedOrdersFound, err := dividendsReturnedOrderRepository.Find(map[string]interface{}{  
864 - "dividendsReturnedOrderNumbers": dividendsReturnedOrderNumbers,  
865 - "companyId": confirmDividendsIncentivesEstimateCommand.CompanyId,  
866 - "orgId": confirmDividendsIncentivesEstimateCommand.OrgId,  
867 - }); err != nil {  
868 - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())  
869 - } else {  
870 - if countDividendsReturnedOrdersFound > 0 {  
871 - for i, dividendsReturnedOrderFound := range dividendsReturnedOrdersFound {  
872 - var dividendsGoodCount int  
873 - for _, orderGood := range dividendsReturnedOrderFound.Goods {  
874 - if orderGood.OrderGoodDividendsStatus == 2 {  
875 - dividendsGoodCount = dividendsGoodCount + 1 867 + if len(dividendsReturnedOrderNumbers) > 0 {
  868 + if countDividendsReturnedOrdersFound, dividendsReturnedOrdersFound, err := dividendsReturnedOrderRepository.Find(map[string]interface{}{
  869 + "dividendsReturnedOrderNumbers": dividendsReturnedOrderNumbers,
  870 + "companyId": confirmDividendsIncentivesEstimateCommand.CompanyId,
  871 + "orgId": confirmDividendsIncentivesEstimateCommand.OrgId,
  872 + }); err != nil {
  873 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  874 + } else {
  875 + if countDividendsReturnedOrdersFound > 0 {
  876 + for i, dividendsReturnedOrderFound := range dividendsReturnedOrdersFound {
  877 + var dividendsGoodCount int
  878 + for _, orderGood := range dividendsReturnedOrderFound.Goods {
  879 + if orderGood.OrderGoodDividendsStatus == 2 {
  880 + dividendsGoodCount = dividendsGoodCount + 1
  881 + }
  882 + }
  883 + if dividendsGoodCount == len(dividendsReturnedOrderFound.Goods) { // 2已分红
  884 + dividendsReturnedOrdersFound[i].DividendStatus = 2
  885 + } else if dividendsGoodCount > 0 && dividendsGoodCount < len(dividendsReturnedOrderFound.Goods) { // 3部分分红
  886 + dividendsReturnedOrdersFound[i].DividendStatus = 3
  887 + } else if dividendsGoodCount == 0 { // 1未分红
  888 + dividendsReturnedOrdersFound[i].DividendStatus = 1
876 } 889 }
877 } 890 }
878 - if dividendsGoodCount == len(dividendsReturnedOrderFound.Goods) { // 2已分红  
879 - dividendsReturnedOrdersFound[i].DividendStatus = 2  
880 - } else if dividendsGoodCount > 0 && dividendsGoodCount < len(dividendsReturnedOrderFound.Goods) { // 3部分分红  
881 - dividendsReturnedOrdersFound[i].DividendStatus = 3  
882 - } else if dividendsGoodCount == 0 { // 1未分红  
883 - dividendsReturnedOrdersFound[i].DividendStatus = 1 891 + // 保存退货单状态
  892 + if _, err6 := dividendsReturnedOrderRepository.UpdateMany(dividendsReturnedOrdersFound); err6 != nil {
  893 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
884 } 894 }
885 } 895 }
886 - // 保存退货单状态  
887 - if _, err6 := dividendsReturnedOrderRepository.UpdateMany(dividendsReturnedOrdersFound); err6 != nil {  
888 - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())  
889 - }  
890 } 896 }
891 } 897 }
892 898
@@ -1068,7 +1074,7 @@ func (dividendsEstimateService *DividendsEstimateService) ConfirmMoneyIncentives @@ -1068,7 +1074,7 @@ func (dividendsEstimateService *DividendsEstimateService) ConfirmMoneyIncentives
1068 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 1074 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
1069 } 1075 }
1070 if confirmMoneyIncentivesEstimateCommand.Action == 1 { // 只预算,不入库 1076 if confirmMoneyIncentivesEstimateCommand.Action == 1 { // 只预算,不入库
1071 - return dividendsEstimatesSaved, nil 1077 + return dividendsEstimates, nil
1072 } else if confirmMoneyIncentivesEstimateCommand.Action == 2 { // 确定预算 1078 } else if confirmMoneyIncentivesEstimateCommand.Action == 2 { // 确定预算
1073 if err := transactionContext.CommitTransaction(); err != nil { 1079 if err := transactionContext.CommitTransaction(); err != nil {
1074 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 1080 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
@@ -8,6 +8,7 @@ import ( @@ -8,6 +8,7 @@ import (
8 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain" 8 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain"
9 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain/service" 9 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/domain/service"
10 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/dao" 10 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/dao"
  11 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-cooperation/pkg/infrastructure/utils"
11 "time" 12 "time"
12 ) 13 )
13 14
@@ -49,67 +50,35 @@ func (domainService *ConfirmMoneyIncentivesEstimateService) Confirm(contract *do @@ -49,67 +50,35 @@ func (domainService *ConfirmMoneyIncentivesEstimateService) Confirm(contract *do
49 50
50 // 金额激励预算 51 // 金额激励预算
51 for _, undertaker := range contract.Undertakers { 52 for _, undertaker := range contract.Undertakers {
52 - // 判断承接人在当前阶段是否已经分红  
53 - undertakerEstimated, err := dividendsEstimateDao.UserEstimated(map[string]interface{}{  
54 - "undertakerUid": undertaker.UserId,  
55 - "companyId": contract.Company.CompanyId,  
56 - "orgId": contract.Org.OrgId,  
57 - })  
58 - if err != nil {  
59 - return nil, err  
60 - }  
61 - if undertakerEstimated {  
62 - return nil, fmt.Errorf("用户 " + undertaker.UserName + " 已分红")  
63 - } else {  
64 - undertakerDividendsAmount, _ := decimal.NewFromFloat(moneyIncentivesRuleMatched.MoneyIncentivesAmount).Mul(decimal.NewFromFloat(1).Sub(decimal.NewFromFloat(moneyIncentivesRuleMatched.SalesmanPercentage).Add(decimal.NewFromFloat(moneyIncentivesRuleMatched.ReferrerPercentage))).Div(decimal.NewFromFloat(100))).Float64()  
65 - dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{  
66 - DividendsUser: &domain.User{  
67 - UserId: undertaker.UserId,  
68 - UserBaseId: undertaker.UserBaseId,  
69 - Org: undertaker.Org,  
70 - Orgs: undertaker.Orgs,  
71 - Department: undertaker.Department,  
72 - Roles: undertaker.Roles,  
73 - UserInfo: undertaker.UserInfo,  
74 - UserType: undertaker.UserType,  
75 - UserName: undertaker.UserName,  
76 - UserPhone: undertaker.UserPhone,  
77 - Status: undertaker.Status,  
78 - Company: undertaker.Company,  
79 - },  
80 - DividendsParticipateType: domain.MONEY_INCENTIVES,  
81 - DividendsStage: stage,  
82 - DividendsAmount: undertakerDividendsAmount,  
83 - })  
84 - }  
85 -  
86 - // 判断业务员在当前阶段是否已经分红  
87 - if undertaker.Salesman != nil {  
88 - salesmanEstimated, err := dividendsEstimateDao.UserEstimated(map[string]interface{}{  
89 - "undertakerUid": undertaker.Salesman.UserId, 53 + if utils.IsContain64(undertakerUIDs, undertaker.UndertakerId) {
  54 + // 判断承接人在当前阶段是否已经分红
  55 + undertakerEstimated, err := dividendsEstimateDao.UserEstimated(map[string]interface{}{
  56 + "undertakerUid": undertaker.UserId,
90 "companyId": contract.Company.CompanyId, 57 "companyId": contract.Company.CompanyId,
91 "orgId": contract.Org.OrgId, 58 "orgId": contract.Org.OrgId,
92 }) 59 })
93 if err != nil { 60 if err != nil {
94 return nil, err 61 return nil, err
95 } 62 }
96 - if salesmanEstimated {  
97 - return nil, fmt.Errorf("业务员 " + undertaker.Salesman.UserName + " 已分红") 63 + if undertakerEstimated {
  64 + return nil, fmt.Errorf("用户 " + undertaker.UserName + " 已分红")
98 } else { 65 } else {
99 - undertakerDividendsAmount, _ := decimal.NewFromFloat(moneyIncentivesRuleMatched.MoneyIncentivesAmount).Mul(decimal.NewFromFloat(moneyIncentivesRuleMatched.SalesmanPercentage).Div(decimal.NewFromFloat(100))).Float64() 66 + undertakerDividendsAmount, _ := decimal.NewFromFloat(moneyIncentivesRuleMatched.MoneyIncentivesAmount).
  67 + Mul(decimal.NewFromFloat(1).Sub(decimal.NewFromFloat(moneyIncentivesRuleMatched.SalesmanPercentage).Add(decimal.NewFromFloat(moneyIncentivesRuleMatched.ReferrerPercentage)).Div(decimal.NewFromFloat(100)))).Float64()
100 dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{ 68 dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{
101 DividendsUser: &domain.User{ 69 DividendsUser: &domain.User{
102 - UserId: undertaker.Salesman.UserId,  
103 - UserBaseId: undertaker.Salesman.UserBaseId,  
104 - Org: undertaker.Salesman.Org,  
105 - Orgs: undertaker.Salesman.Orgs,  
106 - Department: undertaker.Salesman.Department,  
107 - Roles: undertaker.Salesman.Roles,  
108 - UserInfo: undertaker.Salesman.UserInfo,  
109 - UserType: undertaker.Salesman.UserType,  
110 - UserName: undertaker.Salesman.UserName,  
111 - UserPhone: undertaker.Salesman.UserPhone,  
112 - Company: undertaker.Salesman.Company, 70 + UserId: undertaker.UserId,
  71 + UserBaseId: undertaker.UserBaseId,
  72 + Org: undertaker.Org,
  73 + Orgs: undertaker.Orgs,
  74 + Department: undertaker.Department,
  75 + Roles: undertaker.Roles,
  76 + UserInfo: undertaker.UserInfo,
  77 + UserType: undertaker.UserType,
  78 + UserName: undertaker.UserName,
  79 + UserPhone: undertaker.UserPhone,
  80 + Status: undertaker.Status,
  81 + Company: undertaker.Company,
113 }, 82 },
114 DividendsParticipateType: domain.MONEY_INCENTIVES, 83 DividendsParticipateType: domain.MONEY_INCENTIVES,
115 DividendsStage: stage, 84 DividendsStage: stage,
@@ -117,40 +86,75 @@ func (domainService *ConfirmMoneyIncentivesEstimateService) Confirm(contract *do @@ -117,40 +86,75 @@ func (domainService *ConfirmMoneyIncentivesEstimateService) Confirm(contract *do
117 }) 86 })
118 } 87 }
119 88
120 - } 89 + // 判断业务员在当前阶段是否已经分红
  90 + if undertaker.Salesman != nil {
  91 + salesmanEstimated, err := dividendsEstimateDao.UserEstimated(map[string]interface{}{
  92 + "undertakerUid": undertaker.Salesman.UserId,
  93 + "companyId": contract.Company.CompanyId,
  94 + "orgId": contract.Org.OrgId,
  95 + })
  96 + if err != nil {
  97 + return nil, err
  98 + }
  99 + if salesmanEstimated {
  100 + return nil, fmt.Errorf("业务员 " + undertaker.Salesman.UserName + " 已分红")
  101 + } else {
  102 + undertakerDividendsAmount, _ := decimal.NewFromFloat(moneyIncentivesRuleMatched.MoneyIncentivesAmount).Mul(decimal.NewFromFloat(moneyIncentivesRuleMatched.SalesmanPercentage).Div(decimal.NewFromFloat(100))).Float64()
  103 + dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{
  104 + DividendsUser: &domain.User{
  105 + UserId: undertaker.Salesman.UserId,
  106 + UserBaseId: undertaker.Salesman.UserBaseId,
  107 + Org: undertaker.Salesman.Org,
  108 + Orgs: undertaker.Salesman.Orgs,
  109 + Department: undertaker.Salesman.Department,
  110 + Roles: undertaker.Salesman.Roles,
  111 + UserInfo: undertaker.Salesman.UserInfo,
  112 + UserType: undertaker.Salesman.UserType,
  113 + UserName: undertaker.Salesman.UserName,
  114 + UserPhone: undertaker.Salesman.UserPhone,
  115 + Company: undertaker.Salesman.Company,
  116 + },
  117 + DividendsParticipateType: domain.MONEY_INCENTIVES,
  118 + DividendsStage: stage,
  119 + DividendsAmount: undertakerDividendsAmount,
  120 + })
  121 + }
121 122
122 - // 判断关联业务员在当前阶段是否已经分红  
123 - if undertaker.Referrer != nil {  
124 - referrerEstimated, err := dividendsEstimateDao.UserEstimated(map[string]interface{}{  
125 - "undertakerUid": undertaker.Referrer.UserId,  
126 - "companyId": contract.Company.CompanyId,  
127 - "orgId": contract.Org.OrgId,  
128 - })  
129 - if err != nil {  
130 - return nil, err  
131 } 123 }
132 - if referrerEstimated {  
133 - return nil, fmt.Errorf("推荐人 " + undertaker.Salesman.UserName + " 已分红")  
134 - } else {  
135 - undertakerDividendsAmount, _ := decimal.NewFromFloat(moneyIncentivesRuleMatched.MoneyIncentivesAmount).Mul(decimal.NewFromFloat(moneyIncentivesRuleMatched.ReferrerPercentage).Div(decimal.NewFromFloat(100))).Float64()  
136 - dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{  
137 - DividendsUser: &domain.User{  
138 - UserId: undertaker.Referrer.UserId,  
139 - UserBaseId: undertaker.Referrer.UserBaseId,  
140 - Org: undertaker.Referrer.Org,  
141 - Orgs: undertaker.Referrer.Orgs,  
142 - Department: undertaker.Referrer.Department,  
143 - Roles: undertaker.Referrer.Roles,  
144 - UserInfo: undertaker.Referrer.UserInfo,  
145 - UserType: undertaker.Referrer.UserType,  
146 - UserName: undertaker.Referrer.UserName,  
147 - UserPhone: undertaker.Referrer.UserPhone,  
148 - Company: undertaker.Referrer.Company,  
149 - },  
150 - DividendsParticipateType: domain.MONEY_INCENTIVES,  
151 - DividendsStage: stage,  
152 - DividendsAmount: undertakerDividendsAmount, 124 +
  125 + // 判断关联业务员在当前阶段是否已经分红
  126 + if undertaker.Referrer != nil {
  127 + referrerEstimated, err := dividendsEstimateDao.UserEstimated(map[string]interface{}{
  128 + "undertakerUid": undertaker.Referrer.UserId,
  129 + "companyId": contract.Company.CompanyId,
  130 + "orgId": contract.Org.OrgId,
153 }) 131 })
  132 + if err != nil {
  133 + return nil, err
  134 + }
  135 + if referrerEstimated {
  136 + return nil, fmt.Errorf("推荐人 " + undertaker.Salesman.UserName + " 已分红")
  137 + } else {
  138 + undertakerDividendsAmount, _ := decimal.NewFromFloat(moneyIncentivesRuleMatched.MoneyIncentivesAmount).Mul(decimal.NewFromFloat(moneyIncentivesRuleMatched.ReferrerPercentage).Div(decimal.NewFromFloat(100))).Float64()
  139 + dividendsEstimateDetails = append(dividendsEstimateDetails, &service.DividendsEstimateDetail{
  140 + DividendsUser: &domain.User{
  141 + UserId: undertaker.Referrer.UserId,
  142 + UserBaseId: undertaker.Referrer.UserBaseId,
  143 + Org: undertaker.Referrer.Org,
  144 + Orgs: undertaker.Referrer.Orgs,
  145 + Department: undertaker.Referrer.Department,
  146 + Roles: undertaker.Referrer.Roles,
  147 + UserInfo: undertaker.Referrer.UserInfo,
  148 + UserType: undertaker.Referrer.UserType,
  149 + UserName: undertaker.Referrer.UserName,
  150 + UserPhone: undertaker.Referrer.UserPhone,
  151 + Company: undertaker.Referrer.Company,
  152 + },
  153 + DividendsParticipateType: domain.MONEY_INCENTIVES,
  154 + DividendsStage: stage,
  155 + DividendsAmount: undertakerDividendsAmount,
  156 + })
  157 + }
154 } 158 }
155 } 159 }
156 } 160 }
@@ -135,3 +135,13 @@ func IsContain(items []int32, item int32) bool { @@ -135,3 +135,13 @@ func IsContain(items []int32, item int32) bool {
135 } 135 }
136 return false 136 return false
137 } 137 }
  138 +
  139 +// IsContain64 判断int64数组是否包含
  140 +func IsContain64(items []int64, item int64) bool {
  141 + for _, eachItem := range items {
  142 + if eachItem == item {
  143 + return true
  144 + }
  145 + }
  146 + return false
  147 +}