Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
mall.oytour.com
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
黄奎
mall.oytour.com
Commits
48ab28ce
Commit
48ab28ce
authored
Jul 15, 2020
by
liudong1993
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
粉象返佣
parent
b14bd414
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
466 additions
and
415 deletions
+466
-415
RB_Distributor_FXGrade.cs
Mall.Model/Entity/User/RB_Distributor_FXGrade.cs
+4
-0
RB_Distributor_Info.cs
Mall.Model/Entity/User/RB_Distributor_Info.cs
+4
-0
OrderModule.cs
Mall.Module.Product/OrderModule.cs
+411
-375
ProductModule.cs
Mall.Module.Product/ProductModule.cs
+43
-40
UserModule.cs
Mall.Module.User/UserModule.cs
+1
-0
UserController.cs
Mall.WebApi/Controllers/User/UserController.cs
+3
-0
No files found.
Mall.Model/Entity/User/RB_Distributor_FXGrade.cs
View file @
48ab28ce
...
...
@@ -150,5 +150,9 @@ namespace Mall.Model.Entity.User
get
;
set
;
}
/// <summary>
/// 小数类型 1取整(向上进一) 2保留两位小数
/// </summary>
public
int
?
DecimalType
{
get
;
set
;
}
}
}
Mall.Model/Entity/User/RB_Distributor_Info.cs
View file @
48ab28ce
...
...
@@ -71,6 +71,10 @@ namespace Mall.Model.Entity.User
/// </summary>
public
int
?
HPGradeId
{
get
;
set
;
}
/// <summary>
/// 粉象返佣等级
/// </summary>
public
int
?
FXGradeId
{
get
;
set
;
}
/// <summary>
/// 审核状态 1审核中 2通过 3拒绝
/// </summary>
public
DistributorAuditStatusEnum
?
AuditStatus
...
...
Mall.Module.Product/OrderModule.cs
View file @
48ab28ce
...
...
@@ -202,6 +202,10 @@ namespace Mall.Module.Product
/// 财务单据规则
/// </summary>
private
static
RB_Finance_ConfigurineRepository
financeConfigurineRepository
=
new
RB_Finance_ConfigurineRepository
();
/// <summary>
/// 粉象返佣
/// </summary>
private
readonly
RB_Distributor_FXGradeRepository
distributor_FXGradeRepository
=
new
RB_Distributor_FXGradeRepository
();
#
region
购物车
...
...
@@ -3042,8 +3046,39 @@ namespace Mall.Module.Product
try
{
var
basicModel
=
distributor_BasicsRepository
.
GetList
(
new
RB_Distributor_Basics_Extend
()
{
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
}).
FirstOrDefault
();
//判断是否开启和平返佣
List
<
WhereHelper
>
wheres
=
new
List
<
WhereHelper
>()
{
if
(
basicModel
.
IsEnableFXGrade
==
1
)
{
//粉象返佣
var
FXList
=
distributor_FXGradeRepository
.
GetList
(
new
RB_Distributor_FXGrade_Extend
()
{
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
});
if
(
FXList
.
Any
()
&&
FXList
.
Where
(
x
=>
x
.
IsGuest
==
1
).
Any
())
{
var
FXPModel
=
FXList
.
Where
(
x
=>
x
.
IsGuest
==
1
).
FirstOrDefault
();
//验证用户必须是分销商 最低普通会员 不是以普通会员处理
var
disModel
=
distributor_InfoRepository
.
GetList
(
new
RB_Distributor_Info_Extend
()
{
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
,
UserId
=
umodel
.
Id
,
AuditStatus
=
Common
.
Enum
.
User
.
DistributorAuditStatusEnum
.
Audited
}).
FirstOrDefault
();
var
FXModel
=
FXPModel
;
if
(
disModel
!=
null
)
{
if
(
disModel
.
FXGradeId
>
0
)
{
FXModel
=
FXList
.
Where
(
x
=>
x
.
Id
==
disModel
.
FXGradeId
).
FirstOrDefault
();
}
}
else
{
LogHelper
.
Write
(
"粉象返佣 用户分销商信息不存在:UserId:"
+
umodel
.
Id
);
}
if
(
FXModel
!=
null
)
{
//查询出当前用户的所有上级
//查询出用户的所有分销信息
//开始慢慢找 注 同级返佣数量 返佣建子表可以无限级返佣了
}
}
}
else
{
//判断是否开启和平返佣
List
<
WhereHelper
>
wheres
=
new
List
<
WhereHelper
>()
{
new
WhereHelper
(){
FiledName
=
nameof
(
RB_Distributor_HPCommission_Extend
.
Status
),
FiledValue
=
0
,
...
...
@@ -3065,334 +3100,266 @@ namespace Mall.Module.Product
OperatorEnum
=
OperatorEnum
.
Equal
}
};
if
(
distributor_HPCommissionRepository
.
Exists
(
wheres
))
{
int
OneUserId
=
umodel
.
SuperiorId
??
0
;
//获取分销商信息
var
disModel
=
new
RB_Distributor_Info_Extend
();
if
((
basicModel
?.
InPurchasing
??
2
)
==
1
)
{
disModel
=
distributor_InfoRepository
.
GetList
(
new
RB_Distributor_Info_Extend
()
{
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
,
UserId
=
umodel
.
Id
,
AuditStatus
=
Common
.
Enum
.
User
.
DistributorAuditStatusEnum
.
Audited
}).
FirstOrDefault
();
if
(
disModel
!=
null
&&
(
disModel
.
HPGradeId
??
0
)
>
0
)
{
OneUserId
=
umodel
.
Id
;
//设置了分销内购 并且自己是分销商 并且设置了和平等级 , 那么就是自购返佣
}
}
if
(
OneUserId
!=
umodel
.
Id
)
if
(
distributor_HPCommissionRepository
.
Exists
(
wheres
))
{
//求其上级
disModel
=
distributor_InfoRepository
.
GetList
(
new
RB_Distributor_Info_Extend
()
{
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
,
UserId
=
OneUserId
,
AuditStatus
=
Common
.
Enum
.
User
.
DistributorAuditStatusEnum
.
Audited
}).
FirstOrDefault
();
if
(
disModel
!=
null
&&
(
disModel
.
HPGradeId
??
0
)
>
0
)
int
OneUserId
=
umodel
.
SuperiorId
??
0
;
//获取分销商信息
var
disModel
=
new
RB_Distributor_Info_Extend
();
if
((
basicModel
?.
InPurchasing
??
2
)
==
1
)
{
OneUserId
=
umodel
.
SuperiorId
??
0
;
//其上级可返佣
disModel
=
distributor_InfoRepository
.
GetList
(
new
RB_Distributor_Info_Extend
()
{
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
,
UserId
=
umodel
.
Id
,
AuditStatus
=
Common
.
Enum
.
User
.
DistributorAuditStatusEnum
.
Audited
}).
FirstOrDefault
();
if
(
disModel
!=
null
&&
(
disModel
.
HPGradeId
??
0
)
>
0
)
{
OneUserId
=
umodel
.
Id
;
//设置了分销内购 并且自己是分销商 并且设置了和平等级 , 那么就是自购返佣
}
}
else
if
(
OneUserId
!=
umodel
.
Id
)
{
OneUserId
=
0
;
//求其上级
disModel
=
distributor_InfoRepository
.
GetList
(
new
RB_Distributor_Info_Extend
()
{
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
,
UserId
=
OneUserId
,
AuditStatus
=
Common
.
Enum
.
User
.
DistributorAuditStatusEnum
.
Audited
}).
FirstOrDefault
();
if
(
disModel
!=
null
&&
(
disModel
.
HPGradeId
??
0
)
>
0
)
{
OneUserId
=
umodel
.
SuperiorId
??
0
;
//其上级可返佣
}
else
{
OneUserId
=
0
;
}
}
}
if
(
OneUserId
>
0
)
{
foreach
(
var
item
in
demodel
.
DetailList
)
if
(
OneUserId
>
0
)
{
if
(
item
.
CostMoney
>
0
)
foreach
(
var
item
in
demodel
.
DetailList
)
{
//成本价格大于0的才进行返佣
string
categoryids
=
string
.
Join
(
","
,
item
.
CategoryIdList
);
var
hpcList
=
distributor_HPCommissionRepository
.
GetList
(
new
RB_Distributor_HPCommission_Extend
()
{
Enabled
=
1
,
CategoryIdsT
=
categoryids
,
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
});
if
(
hpcList
.
Any
())
if
(
item
.
CostMoney
>
0
)
{
RB_Distributor_HPCommission_Extend
hpcModel
;
if
(
hpcList
.
Where
(
x
=>
x
.
IsCommon
!=
1
).
Any
())
//成本价格大于0的才进行返佣
string
categoryids
=
string
.
Join
(
","
,
item
.
CategoryIdList
);
var
hpcList
=
distributor_HPCommissionRepository
.
GetList
(
new
RB_Distributor_HPCommission_Extend
()
{
Enabled
=
1
,
CategoryIdsT
=
categoryids
,
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
});
if
(
hpcList
.
Any
())
{
//有使用非通用返佣
hpcModel
=
hpcList
.
Where
(
x
=>
x
.
IsCommon
!=
1
).
FirstOrDefault
();
}
else
{
//查询通用返佣
hpcModel
=
hpcList
.
Where
(
x
=>
x
.
IsCommon
==
1
).
FirstOrDefault
();
}
//查询所有返佣比例
var
gList
=
distributor_HPGradeRatioRepository
.
GetList
(
new
RB_Distributor_HPGradeRatio_Extend
()
{
CommissionId
=
hpcModel
.
Id
,
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
});
var
ratioModel
=
gList
.
Where
(
x
=>
x
.
GradeId
==
disModel
.
HPGradeId
).
FirstOrDefault
();
decimal
OneCommission
=
0
;
if
(
ratioModel
!=
null
)
{
decimal
MPrice
=
(
item
.
CostMoney
??
0
)
/
(
1
-
((
ratioModel
.
CommissionRatio
??
0
)
/
100
));
OneCommission
=
(
item
.
Final_Price
??
0
)
-
MPrice
>
0
?
(
item
.
Final_Price
??
0
)
-
MPrice
:
0
;
}
if
(
hpcModel
.
DecimalType
==
1
)
{
OneCommission
=
Math
.
Ceiling
(
OneCommission
);
}
else
if
(
hpcModel
.
DecimalType
==
2
)
{
OneCommission
=
Math
.
Ceiling
(
OneCommission
*
100
)
/
100
;
}
//插入返佣
goods_OrderCommissionRepository
.
Insert
(
new
RB_Goods_OrderCommission
()
{
Id
=
0
,
Commission
=
OneCommission
,
CommissionState
=
1
,
CreateDate
=
DateTime
.
Now
,
Grade
=
disModel
.
HPGradeId
,
IsGoodsDistribution
=
2
,
MallBaseId
=
demodel
.
MallBaseId
,
OrderDetailId
=
item
.
Id
,
OrderId
=
OrderId
,
Remark
=
"和平返佣"
,
TenantId
=
demodel
.
TenantId
,
UpdateDate
=
DateTime
.
Now
,
UserId
=
OneUserId
,
Type
=
2
,
IsRemit
=
0
},
trans
);
//向上找出所有可以分销的
int
ParentId
=
0
;
if
(
OneUserId
==
umodel
.
Id
)
{
ParentId
=
umodel
.
SuperiorId
??
0
;
}
else
{
ParentId
=
member_UserRepository
.
GetEntity
(
umodel
.
SuperiorId
??
0
)?.
SuperiorId
??
0
;
}
decimal
ParentCommission
=
OneCommission
;
while
(
ParentId
>
0
)
{
var
disModel1
=
distributor_InfoRepository
.
GetList
(
new
RB_Distributor_Info_Extend
()
{
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
,
UserId
=
ParentId
,
AuditStatus
=
Common
.
Enum
.
User
.
DistributorAuditStatusEnum
.
Audited
}).
FirstOrDefault
();
if
(
disModel1
!=
null
&&
(
disModel1
.
HPGradeId
??
0
)
>
0
)
RB_Distributor_HPCommission_Extend
hpcModel
;
if
(
hpcList
.
Where
(
x
=>
x
.
IsCommon
!=
1
).
Any
())
{
//其上级可进行返佣
var
ratioModel1
=
gList
.
Where
(
x
=>
x
.
GradeId
==
disModel1
.
HPGradeId
).
FirstOrDefault
();
decimal
OneCommission1
=
0
;
if
(
ratioModel1
!=
null
)
{
decimal
MPrice1
=
(
item
.
CostMoney
??
0
)
/
(
1
-
((
ratioModel1
.
CommissionRatio
??
0
)
/
100
));
OneCommission1
=
(
item
.
Final_Price
??
0
)
-
MPrice1
>
0
?
(
item
.
Final_Price
??
0
)
-
MPrice1
:
0
;
}
if
(
hpcModel
.
DecimalType
==
1
)
{
OneCommission1
=
Math
.
Ceiling
(
OneCommission1
);
}
else
if
(
hpcModel
.
DecimalType
==
2
)
{
OneCommission1
=
Math
.
Ceiling
(
OneCommission1
*
100
)
/
100
;
}
//减去下级已提佣金
OneCommission1
-=
ParentCommission
;
ParentCommission
+=
OneCommission1
;
//累计下级已提佣金
//插入返佣
goods_OrderCommissionRepository
.
Insert
(
new
RB_Goods_OrderCommission
()
{
Id
=
0
,
Commission
=
OneCommission1
,
CommissionState
=
1
,
CreateDate
=
DateTime
.
Now
,
Grade
=
disModel1
.
HPGradeId
,
IsGoodsDistribution
=
2
,
MallBaseId
=
demodel
.
MallBaseId
,
OrderDetailId
=
item
.
Id
,
OrderId
=
OrderId
,
Remark
=
"和平返佣"
,
TenantId
=
demodel
.
TenantId
,
UpdateDate
=
DateTime
.
Now
,
UserId
=
ParentId
,
Type
=
2
,
IsRemit
=
0
},
trans
);
//有使用非通用返佣
hpcModel
=
hpcList
.
Where
(
x
=>
x
.
IsCommon
!=
1
).
FirstOrDefault
();
}
ParentId
=
member_UserRepository
.
GetEntity
(
ParentId
)?.
SuperiorId
??
0
;
}
else
{
//查询通用返佣
hpcModel
=
hpcList
.
Where
(
x
=>
x
.
IsCommon
==
1
).
FirstOrDefault
();
}
//查询所有返佣比例
var
gList
=
distributor_HPGradeRatioRepository
.
GetList
(
new
RB_Distributor_HPGradeRatio_Extend
()
{
CommissionId
=
hpcModel
.
Id
,
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
});
}
}
}
}
}
else
{
var
dcList
=
goods_DistributionCommissionRepository
.
GetList
(
new
RB_Goods_DistributionCommission_Extend
()
{
GoodsIds
=
GoodsIds
,
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
});
if
(
basicModel
!=
null
&&
basicModel
.
DistributorTier
>
0
)
{
#
region
分销商
id
+
分销商等级
int
OneUserId
=
0
,
TwoUserId
=
0
,
ThreeUserId
=
0
;
int
OneDistributorGrade
=
0
,
TwoDistributorGrade
=
0
,
ThreeDistributorGrade
=
0
;
//获取多级 分销商id
if
(
basicModel
!=
null
&&
basicModel
.
DistributorTier
>
0
)
{
for
(
int
i
=
1
;
i
<
basicModel
.
DistributorTier
+
1
;
i
++)
{
switch
(
i
)
{
case
1
:
if
(
umodel
.
IsDistributor
!=
1
||
basicModel
.
InPurchasing
!=
1
)
var
ratioModel
=
gList
.
Where
(
x
=>
x
.
GradeId
==
disModel
.
HPGradeId
).
FirstOrDefault
();
decimal
OneCommission
=
0
;
if
(
ratioModel
!=
null
)
{
OneUserId
=
umodel
.
SuperiorId
??
0
;
decimal
MPrice
=
(
item
.
CostMoney
??
0
)
/
(
1
-
((
ratioModel
.
CommissionRatio
??
0
)
/
100
));
OneCommission
=
(
item
.
Final_Price
??
0
)
-
MPrice
>
0
?
(
item
.
Final_Price
??
0
)
-
MPrice
:
0
;
}
if
(
hpcModel
.
DecimalType
==
1
)
{
OneCommission
=
Math
.
Ceiling
(
OneCommission
);
}
else
if
(
hpcModel
.
DecimalType
==
2
)
{
OneCommission
=
Math
.
Ceiling
(
OneCommission
*
100
)
/
100
;
}
//插入返佣
goods_OrderCommissionRepository
.
Insert
(
new
RB_Goods_OrderCommission
()
{
Id
=
0
,
Commission
=
OneCommission
,
CommissionState
=
1
,
CreateDate
=
DateTime
.
Now
,
Grade
=
disModel
.
HPGradeId
,
IsGoodsDistribution
=
2
,
MallBaseId
=
demodel
.
MallBaseId
,
OrderDetailId
=
item
.
Id
,
OrderId
=
OrderId
,
Remark
=
"和平返佣"
,
TenantId
=
demodel
.
TenantId
,
UpdateDate
=
DateTime
.
Now
,
UserId
=
OneUserId
,
Type
=
2
,
IsRemit
=
0
},
trans
);
//向上找出所有可以分销的
int
ParentId
=
0
;
if
(
OneUserId
==
umodel
.
Id
)
{
ParentId
=
umodel
.
SuperiorId
??
0
;
}
else
{
OneUserId
=
umodel
.
Id
;
ParentId
=
member_UserRepository
.
GetEntity
(
umodel
.
SuperiorId
??
0
)?.
SuperiorId
??
0
;
}
break
;
case
2
:
if
(
OneUserId
>
0
)
decimal
ParentCommission
=
OneCommission
;
while
(
ParentId
>
0
)
{
if
(
umodel
.
IsDistributor
!=
1
||
basicModel
.
InPurchasing
!=
1
)
var
disModel1
=
distributor_InfoRepository
.
GetList
(
new
RB_Distributor_Info_Extend
()
{
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
,
UserId
=
ParentId
,
AuditStatus
=
Common
.
Enum
.
User
.
DistributorAuditStatusEnum
.
Audited
}).
FirstOrDefault
();
if
(
disModel1
!=
null
&&
(
disModel1
.
HPGradeId
??
0
)
>
0
)
{
TwoUserId
=
member_UserRepository
.
GetEntity
(
OneUserId
).
SuperiorId
??
0
;
}
else
{
TwoUserId
=
umodel
.
SuperiorId
??
0
;
//其上级可进行返佣
var
ratioModel1
=
gList
.
Where
(
x
=>
x
.
GradeId
==
disModel1
.
HPGradeId
).
FirstOrDefault
();
decimal
OneCommission1
=
0
;
if
(
ratioModel1
!=
null
)
{
decimal
MPrice1
=
(
item
.
CostMoney
??
0
)
/
(
1
-
((
ratioModel1
.
CommissionRatio
??
0
)
/
100
));
OneCommission1
=
(
item
.
Final_Price
??
0
)
-
MPrice1
>
0
?
(
item
.
Final_Price
??
0
)
-
MPrice1
:
0
;
}
if
(
hpcModel
.
DecimalType
==
1
)
{
OneCommission1
=
Math
.
Ceiling
(
OneCommission1
);
}
else
if
(
hpcModel
.
DecimalType
==
2
)
{
OneCommission1
=
Math
.
Ceiling
(
OneCommission1
*
100
)
/
100
;
}
//减去下级已提佣金
OneCommission1
-=
ParentCommission
;
ParentCommission
+=
OneCommission1
;
//累计下级已提佣金
//插入返佣
goods_OrderCommissionRepository
.
Insert
(
new
RB_Goods_OrderCommission
()
{
Id
=
0
,
Commission
=
OneCommission1
,
CommissionState
=
1
,
CreateDate
=
DateTime
.
Now
,
Grade
=
disModel1
.
HPGradeId
,
IsGoodsDistribution
=
2
,
MallBaseId
=
demodel
.
MallBaseId
,
OrderDetailId
=
item
.
Id
,
OrderId
=
OrderId
,
Remark
=
"和平返佣"
,
TenantId
=
demodel
.
TenantId
,
UpdateDate
=
DateTime
.
Now
,
UserId
=
ParentId
,
Type
=
2
,
IsRemit
=
0
},
trans
);
}
ParentId
=
member_UserRepository
.
GetEntity
(
ParentId
)?.
SuperiorId
??
0
;
}
break
;
case
3
:
if
(
TwoUserId
>
0
)
{
ThreeUserId
=
member_UserRepository
.
GetEntity
(
TwoUserId
).
SuperiorId
??
0
;
}
break
;
}
}
}
}
if
(
OneUserId
>
0
)
}
else
{
var
dcList
=
goods_DistributionCommissionRepository
.
GetList
(
new
RB_Goods_DistributionCommission_Extend
()
{
GoodsIds
=
GoodsIds
,
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
});
if
(
basicModel
!=
null
&&
basicModel
.
DistributorTier
>
0
)
{
#
region
临时处理
if
(
TwoUserId
>
0
&&
TwoUserId
<
20
)
{
TwoUserId
=
0
;
}
if
(
ThreeUserId
>
0
&&
ThreeUserId
<
20
)
{
ThreeUserId
=
0
;
}
#
endregion
if
(
OneUserId
>
0
)
{
OneDistributorGrade
=
distributor_InfoRepository
.
GetList
(
new
RB_Distributor_Info_Extend
()
{
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
,
UserId
=
OneUserId
})?.
FirstOrDefault
()?.
GradeId
??
0
;
}
if
(
TwoUserId
>
0
)
{
TwoDistributorGrade
=
distributor_InfoRepository
.
GetList
(
new
RB_Distributor_Info_Extend
()
{
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
,
UserId
=
TwoUserId
})?.
FirstOrDefault
()?.
GradeId
??
0
;
}
if
(
ThreeUserId
>
0
)
{
ThreeDistributorGrade
=
distributor_InfoRepository
.
GetList
(
new
RB_Distributor_Info_Extend
()
{
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
,
UserId
=
ThreeUserId
})?.
FirstOrDefault
()?.
GradeId
??
0
;
}
#
endregion
#
region
分销商等级列表
List
<
int
>
gradeIdlist
=
new
List
<
int
>();
if
(
OneDistributorGrade
>
0
)
{
gradeIdlist
.
Add
(
OneDistributorGrade
);
}
if
(
TwoDistributorGrade
>
0
)
{
gradeIdlist
.
Add
(
TwoDistributorGrade
);
}
if
(
ThreeDistributorGrade
>
0
)
#
region
分销商
id
+
分销商等级
int
OneUserId
=
0
,
TwoUserId
=
0
,
ThreeUserId
=
0
;
int
OneDistributorGrade
=
0
,
TwoDistributorGrade
=
0
,
ThreeDistributorGrade
=
0
;
//获取多级 分销商id
if
(
basicModel
!=
null
&&
basicModel
.
DistributorTier
>
0
)
{
gradeIdlist
.
Add
(
ThreeDistributorGrade
);
}
List
<
RB_Distributor_Grade_Extend
>
dgradeList
=
new
List
<
RB_Distributor_Grade_Extend
>();
if
(
gradeIdlist
.
Any
())
{
dgradeList
=
distributor_GradeRepository
.
GetList
(
new
RB_Distributor_Grade_Extend
()
{
GradeIds
=
string
.
Join
(
","
,
gradeIdlist
),
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
});
}
#
endregion
foreach
(
var
item
in
demodel
.
DetailList
)
{
//返佣
List
<
RB_Goods_OrderCommission
>
gocList
=
new
List
<
RB_Goods_OrderCommission
>();
for
(
int
i
=
1
;
i
<
basicModel
.
DistributorTier
+
1
;
i
++)
{
switch
(
i
)
{
case
1
:
decimal
DcommionMoney
=
0
;
if
(
item
.
SeparateDistribution
==
1
)
if
(
umodel
.
IsDistributor
!=
1
||
basicModel
.
InPurchasing
!=
1
)
{
if
(
item
.
SeparateDistributionType
==
1
)
{
DcommionMoney
=
dcList
.
Where
(
x
=>
x
.
GoodsId
==
item
.
GoodsId
&&
x
.
DistributorGrade
==
OneDistributorGrade
).
FirstOrDefault
()?.
OneCommission
??
0
;
}
else
{
DcommionMoney
=
dcList
.
Where
(
x
=>
x
.
GoodsId
==
item
.
GoodsId
&&
x
.
SpecificationSort
==
item
.
SpecificationSort
&&
x
.
DistributorGrade
==
OneDistributorGrade
).
FirstOrDefault
()?.
OneCommission
??
0
;
}
if
(
item
.
SeparateDistributionMoneyType
==
1
)
{
DcommionMoney
=
Math
.
Round
((
item
.
Final_Price
??
0
)
*
DcommionMoney
/
100
,
2
,
MidpointRounding
.
AwayFromZero
);
}
OneUserId
=
umodel
.
SuperiorId
??
0
;
}
else
{
//获取分销商等级
if
(
OneDistributorGrade
>
0
)
OneUserId
=
umodel
.
Id
;
}
break
;
case
2
:
if
(
OneUserId
>
0
)
{
if
(
umodel
.
IsDistributor
!=
1
||
basicModel
.
InPurchasing
!=
1
)
{
var
dgradeModel
=
dgradeList
.
Where
(
x
=>
x
.
Id
==
OneDistributorGrade
).
FirstOrDefault
();
DcommionMoney
=
dgradeModel
?.
OneCommission
??
0
;
if
(
dgradeModel
.
DistributionCommissionType
==
1
)
{
DcommionMoney
=
Math
.
Round
((
item
.
Final_Price
??
0
)
*
DcommionMoney
/
100
,
2
,
MidpointRounding
.
AwayFromZero
);
}
TwoUserId
=
member_UserRepository
.
GetEntity
(
OneUserId
).
SuperiorId
??
0
;
}
else
{
//默认分销商等级 读取基本配置的返佣
DcommionMoney
=
basicModel
.
OneCommission
??
0
;
if
(
basicModel
.
DistributorCommissionType
==
1
)
{
DcommionMoney
=
Math
.
Round
((
item
.
Final_Price
??
0
)
*
DcommionMoney
/
100
,
2
,
MidpointRounding
.
AwayFromZero
);
}
TwoUserId
=
umodel
.
SuperiorId
??
0
;
}
}
if
(
TwoUserId
==
0
&&
basicModel
.
IsCommissionResidue
==
1
)
{
//表示其为一级分销商 把后面的佣金都提完
TwoUserId
=
OneUserId
;
TwoDistributorGrade
=
OneDistributorGrade
;
}
RB_Goods_OrderCommission
gocModel
=
new
RB_Goods_OrderCommission
()
{
Id
=
0
,
Commission
=
DcommionMoney
,
CommissionState
=
1
,
CreateDate
=
DateTime
.
Now
,
Grade
=
umodel
.
IsDistributor
==
1
?
0
:
1
,
IsGoodsDistribution
=
item
.
SeparateDistribution
,
MallBaseId
=
demodel
.
MallBaseId
,
OrderDetailId
=
item
.
Id
,
OrderId
=
OrderId
,
Remark
=
""
,
TenantId
=
demodel
.
TenantId
,
UpdateDate
=
DateTime
.
Now
,
UserId
=
OneUserId
,
Type
=
1
,
IsRemit
=
0
};
gocList
.
Add
(
gocModel
);
break
;
case
2
:
case
3
:
if
(
TwoUserId
>
0
)
{
DcommionMoney
=
0
;
ThreeUserId
=
member_UserRepository
.
GetEntity
(
TwoUserId
).
SuperiorId
??
0
;
}
break
;
}
}
}
if
(
OneUserId
>
0
)
{
#
region
临时处理
if
(
TwoUserId
>
0
&&
TwoUserId
<
20
)
{
TwoUserId
=
0
;
}
if
(
ThreeUserId
>
0
&&
ThreeUserId
<
20
)
{
ThreeUserId
=
0
;
}
#
endregion
if
(
OneUserId
>
0
)
{
OneDistributorGrade
=
distributor_InfoRepository
.
GetList
(
new
RB_Distributor_Info_Extend
()
{
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
,
UserId
=
OneUserId
})?.
FirstOrDefault
()?.
GradeId
??
0
;
}
if
(
TwoUserId
>
0
)
{
TwoDistributorGrade
=
distributor_InfoRepository
.
GetList
(
new
RB_Distributor_Info_Extend
()
{
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
,
UserId
=
TwoUserId
})?.
FirstOrDefault
()?.
GradeId
??
0
;
}
if
(
ThreeUserId
>
0
)
{
ThreeDistributorGrade
=
distributor_InfoRepository
.
GetList
(
new
RB_Distributor_Info_Extend
()
{
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
,
UserId
=
ThreeUserId
})?.
FirstOrDefault
()?.
GradeId
??
0
;
}
#
endregion
#
region
分销商等级列表
List
<
int
>
gradeIdlist
=
new
List
<
int
>();
if
(
OneDistributorGrade
>
0
)
{
gradeIdlist
.
Add
(
OneDistributorGrade
);
}
if
(
TwoDistributorGrade
>
0
)
{
gradeIdlist
.
Add
(
TwoDistributorGrade
);
}
if
(
ThreeDistributorGrade
>
0
)
{
gradeIdlist
.
Add
(
ThreeDistributorGrade
);
}
List
<
RB_Distributor_Grade_Extend
>
dgradeList
=
new
List
<
RB_Distributor_Grade_Extend
>();
if
(
gradeIdlist
.
Any
())
{
dgradeList
=
distributor_GradeRepository
.
GetList
(
new
RB_Distributor_Grade_Extend
()
{
GradeIds
=
string
.
Join
(
","
,
gradeIdlist
),
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
});
}
#
endregion
foreach
(
var
item
in
demodel
.
DetailList
)
{
//返佣
List
<
RB_Goods_OrderCommission
>
gocList
=
new
List
<
RB_Goods_OrderCommission
>();
for
(
int
i
=
1
;
i
<
basicModel
.
DistributorTier
+
1
;
i
++)
{
switch
(
i
)
{
case
1
:
decimal
DcommionMoney
=
0
;
if
(
item
.
SeparateDistribution
==
1
)
{
if
(
item
.
SeparateDistributionType
==
1
)
{
DcommionMoney
=
dcList
.
Where
(
x
=>
x
.
GoodsId
==
item
.
GoodsId
&&
x
.
DistributorGrade
==
TwoDistributorGrade
).
FirstOrDefault
()?.
Two
Commission
??
0
;
DcommionMoney
=
dcList
.
Where
(
x
=>
x
.
GoodsId
==
item
.
GoodsId
&&
x
.
DistributorGrade
==
OneDistributorGrade
).
FirstOrDefault
()?.
One
Commission
??
0
;
}
else
{
DcommionMoney
=
dcList
.
Where
(
x
=>
x
.
GoodsId
==
item
.
GoodsId
&&
x
.
SpecificationSort
==
item
.
SpecificationSort
&&
x
.
DistributorGrade
==
TwoDistributorGrade
).
FirstOrDefault
()?.
Two
Commission
??
0
;
DcommionMoney
=
dcList
.
Where
(
x
=>
x
.
GoodsId
==
item
.
GoodsId
&&
x
.
SpecificationSort
==
item
.
SpecificationSort
&&
x
.
DistributorGrade
==
OneDistributorGrade
).
FirstOrDefault
()?.
One
Commission
??
0
;
}
if
(
item
.
SeparateDistributionMoneyType
==
1
)
{
...
...
@@ -3402,10 +3369,10 @@ namespace Mall.Module.Product
else
{
//获取分销商等级
if
(
Two
DistributorGrade
>
0
)
if
(
One
DistributorGrade
>
0
)
{
var
dgradeModel
=
dgradeList
.
Where
(
x
=>
x
.
Id
==
Two
DistributorGrade
).
FirstOrDefault
();
DcommionMoney
=
dgradeModel
?.
Two
Commission
??
0
;
var
dgradeModel
=
dgradeList
.
Where
(
x
=>
x
.
Id
==
One
DistributorGrade
).
FirstOrDefault
();
DcommionMoney
=
dgradeModel
?.
One
Commission
??
0
;
if
(
dgradeModel
.
DistributionCommissionType
==
1
)
{
DcommionMoney
=
Math
.
Round
((
item
.
Final_Price
??
0
)
*
DcommionMoney
/
100
,
2
,
MidpointRounding
.
AwayFromZero
);
...
...
@@ -3414,7 +3381,7 @@ namespace Mall.Module.Product
else
{
//默认分销商等级 读取基本配置的返佣
DcommionMoney
=
basicModel
.
Two
Commission
??
0
;
DcommionMoney
=
basicModel
.
One
Commission
??
0
;
if
(
basicModel
.
DistributorCommissionType
==
1
)
{
DcommionMoney
=
Math
.
Round
((
item
.
Final_Price
??
0
)
*
DcommionMoney
/
100
,
2
,
MidpointRounding
.
AwayFromZero
);
...
...
@@ -3422,19 +3389,19 @@ namespace Mall.Module.Product
}
}
if
(
T
hree
UserId
==
0
&&
basicModel
.
IsCommissionResidue
==
1
)
if
(
T
wo
UserId
==
0
&&
basicModel
.
IsCommissionResidue
==
1
)
{
//表示其为
二
级分销商 把后面的佣金都提完
T
hreeUserId
=
Two
UserId
;
T
hreeDistributorGrade
=
Two
DistributorGrade
;
//表示其为
一
级分销商 把后面的佣金都提完
T
woUserId
=
One
UserId
;
T
woDistributorGrade
=
One
DistributorGrade
;
}
gocModel
=
new
RB_Goods_OrderCommission
()
RB_Goods_OrderCommission
gocModel
=
new
RB_Goods_OrderCommission
()
{
Id
=
0
,
Commission
=
DcommionMoney
,
CommissionState
=
1
,
CreateDate
=
DateTime
.
Now
,
Grade
=
umodel
.
IsDistributor
==
1
?
TwoUserId
==
OneUserId
?
0
:
1
:
2
,
Grade
=
umodel
.
IsDistributor
==
1
?
0
:
1
,
IsGoodsDistribution
=
item
.
SeparateDistribution
,
MallBaseId
=
demodel
.
MallBaseId
,
OrderDetailId
=
item
.
Id
,
...
...
@@ -3442,126 +3409,195 @@ namespace Mall.Module.Product
Remark
=
""
,
TenantId
=
demodel
.
TenantId
,
UpdateDate
=
DateTime
.
Now
,
UserId
=
Two
UserId
,
UserId
=
One
UserId
,
Type
=
1
,
IsRemit
=
0
};
gocList
.
Add
(
gocModel
);
}
break
;
case
3
:
if
(
ThreeUserId
>
0
)
{
DcommionMoney
=
0
;
if
(
item
.
SeparateDistribution
==
1
)
break
;
case
2
:
if
(
TwoUserId
>
0
)
{
if
(
item
.
SeparateDistributionType
==
1
)
DcommionMoney
=
0
;
if
(
item
.
SeparateDistribution
==
1
)
{
DcommionMoney
=
dcList
.
Where
(
x
=>
x
.
GoodsId
==
item
.
GoodsId
&&
x
.
DistributorGrade
==
ThreeDistributorGrade
).
FirstOrDefault
()?.
ThreeCommission
??
0
;
if
(
item
.
SeparateDistributionType
==
1
)
{
DcommionMoney
=
dcList
.
Where
(
x
=>
x
.
GoodsId
==
item
.
GoodsId
&&
x
.
DistributorGrade
==
TwoDistributorGrade
).
FirstOrDefault
()?.
TwoCommission
??
0
;
}
else
{
DcommionMoney
=
dcList
.
Where
(
x
=>
x
.
GoodsId
==
item
.
GoodsId
&&
x
.
SpecificationSort
==
item
.
SpecificationSort
&&
x
.
DistributorGrade
==
TwoDistributorGrade
).
FirstOrDefault
()?.
TwoCommission
??
0
;
}
if
(
item
.
SeparateDistributionMoneyType
==
1
)
{
DcommionMoney
=
Math
.
Round
((
item
.
Final_Price
??
0
)
*
DcommionMoney
/
100
,
2
,
MidpointRounding
.
AwayFromZero
);
}
}
else
{
DcommionMoney
=
dcList
.
Where
(
x
=>
x
.
GoodsId
==
item
.
GoodsId
&&
x
.
SpecificationSort
==
item
.
SpecificationSort
&&
x
.
DistributorGrade
==
ThreeDistributorGrade
).
FirstOrDefault
()?.
ThreeCommission
??
0
;
//获取分销商等级
if
(
TwoDistributorGrade
>
0
)
{
var
dgradeModel
=
dgradeList
.
Where
(
x
=>
x
.
Id
==
TwoDistributorGrade
).
FirstOrDefault
();
DcommionMoney
=
dgradeModel
?.
TwoCommission
??
0
;
if
(
dgradeModel
.
DistributionCommissionType
==
1
)
{
DcommionMoney
=
Math
.
Round
((
item
.
Final_Price
??
0
)
*
DcommionMoney
/
100
,
2
,
MidpointRounding
.
AwayFromZero
);
}
}
else
{
//默认分销商等级 读取基本配置的返佣
DcommionMoney
=
basicModel
.
TwoCommission
??
0
;
if
(
basicModel
.
DistributorCommissionType
==
1
)
{
DcommionMoney
=
Math
.
Round
((
item
.
Final_Price
??
0
)
*
DcommionMoney
/
100
,
2
,
MidpointRounding
.
AwayFromZero
);
}
}
}
if
(
item
.
SeparateDistributionMoneyTyp
e
==
1
)
if
(
ThreeUserId
==
0
&&
basicModel
.
IsCommissionResidu
e
==
1
)
{
DcommionMoney
=
Math
.
Round
((
item
.
Final_Price
??
0
)
*
DcommionMoney
/
100
,
2
,
MidpointRounding
.
AwayFromZero
);
//表示其为二级分销商 把后面的佣金都提完
ThreeUserId
=
TwoUserId
;
ThreeDistributorGrade
=
TwoDistributorGrade
;
}
gocModel
=
new
RB_Goods_OrderCommission
()
{
Id
=
0
,
Commission
=
DcommionMoney
,
CommissionState
=
1
,
CreateDate
=
DateTime
.
Now
,
Grade
=
umodel
.
IsDistributor
==
1
?
TwoUserId
==
OneUserId
?
0
:
1
:
2
,
IsGoodsDistribution
=
item
.
SeparateDistribution
,
MallBaseId
=
demodel
.
MallBaseId
,
OrderDetailId
=
item
.
Id
,
OrderId
=
OrderId
,
Remark
=
""
,
TenantId
=
demodel
.
TenantId
,
UpdateDate
=
DateTime
.
Now
,
UserId
=
TwoUserId
,
Type
=
1
,
IsRemit
=
0
};
gocList
.
Add
(
gocModel
);
}
else
break
;
case
3
:
if
(
ThreeUserId
>
0
)
{
//获取分销商等级
if
(
ThreeDistributorGrade
>
0
)
DcommionMoney
=
0
;
if
(
item
.
SeparateDistribution
==
1
)
{
var
dgradeModel
=
dgradeList
.
Where
(
x
=>
x
.
Id
==
ThreeDistributorGrade
).
FirstOrDefault
();
DcommionMoney
=
dgradeModel
?.
ThreeCommission
??
0
;
if
(
dgradeModel
.
DistributionCommissionType
==
1
)
if
(
item
.
SeparateDistributionType
==
1
)
{
DcommionMoney
=
dcList
.
Where
(
x
=>
x
.
GoodsId
==
item
.
GoodsId
&&
x
.
DistributorGrade
==
ThreeDistributorGrade
).
FirstOrDefault
()?.
ThreeCommission
??
0
;
}
else
{
DcommionMoney
=
dcList
.
Where
(
x
=>
x
.
GoodsId
==
item
.
GoodsId
&&
x
.
SpecificationSort
==
item
.
SpecificationSort
&&
x
.
DistributorGrade
==
ThreeDistributorGrade
).
FirstOrDefault
()?.
ThreeCommission
??
0
;
}
if
(
item
.
SeparateDistributionMoneyType
==
1
)
{
DcommionMoney
=
Math
.
Round
((
item
.
Final_Price
??
0
)
*
DcommionMoney
/
100
,
2
,
MidpointRounding
.
AwayFromZero
);
}
}
else
{
//默认分销商等级 读取基本配置的返佣
DcommionMoney
=
basicModel
.
ThreeCommission
??
0
;
if
(
basicModel
.
DistributorCommissionType
==
1
)
//获取分销商等级
if
(
ThreeDistributorGrade
>
0
)
{
DcommionMoney
=
Math
.
Round
((
item
.
Final_Price
??
0
)
*
DcommionMoney
/
100
,
2
,
MidpointRounding
.
AwayFromZero
);
var
dgradeModel
=
dgradeList
.
Where
(
x
=>
x
.
Id
==
ThreeDistributorGrade
).
FirstOrDefault
();
DcommionMoney
=
dgradeModel
?.
ThreeCommission
??
0
;
if
(
dgradeModel
.
DistributionCommissionType
==
1
)
{
DcommionMoney
=
Math
.
Round
((
item
.
Final_Price
??
0
)
*
DcommionMoney
/
100
,
2
,
MidpointRounding
.
AwayFromZero
);
}
}
else
{
//默认分销商等级 读取基本配置的返佣
DcommionMoney
=
basicModel
.
ThreeCommission
??
0
;
if
(
basicModel
.
DistributorCommissionType
==
1
)
{
DcommionMoney
=
Math
.
Round
((
item
.
Final_Price
??
0
)
*
DcommionMoney
/
100
,
2
,
MidpointRounding
.
AwayFromZero
);
}
}
}
}
#
region
获取返佣等级
int
Grade
=
0
;
if
(
OneUserId
==
TwoUserId
&&
TwoUserId
==
ThreeUserId
)
{
Grade
=
0
;
}
else
if
(
OneUserId
!=
TwoUserId
&&
TwoUserId
==
ThreeUserId
)
{
Grade
=
1
;
}
else
{
Grade
=
2
;
}
if
(
umodel
.
IsDistributor
!=
1
)
{
Grade
++;
}
#
endregion
gocModel
=
new
RB_Goods_OrderCommission
()
{
Id
=
0
,
Commission
=
DcommionMoney
,
CommissionState
=
1
,
CreateDate
=
DateTime
.
Now
,
Grade
=
Grade
,
IsGoodsDistribution
=
item
.
SeparateDistribution
,
MallBaseId
=
demodel
.
MallBaseId
,
OrderDetailId
=
item
.
Id
,
OrderId
=
OrderId
,
Remark
=
""
,
TenantId
=
demodel
.
TenantId
,
UpdateDate
=
DateTime
.
Now
,
UserId
=
ThreeUserId
,
Type
=
1
,
IsRemit
=
0
};
gocList
.
Add
(
gocModel
);
}
#
region
获取返佣等级
int
Grade
=
0
;
if
(
OneUserId
==
TwoUserId
&&
TwoUserId
==
ThreeUserId
)
{
Grade
=
0
;
}
else
if
(
OneUserId
!=
TwoUserId
&&
TwoUserId
==
ThreeUserId
)
{
Grade
=
1
;
}
else
{
Grade
=
2
;
}
if
(
umodel
.
IsDistributor
!=
1
)
{
Grade
++;
}
#
endregion
gocModel
=
new
RB_Goods_OrderCommission
()
{
Id
=
0
,
Commission
=
DcommionMoney
,
CommissionState
=
1
,
CreateDate
=
DateTime
.
Now
,
Grade
=
Grade
,
IsGoodsDistribution
=
item
.
SeparateDistribution
,
MallBaseId
=
demodel
.
MallBaseId
,
OrderDetailId
=
item
.
Id
,
OrderId
=
OrderId
,
Remark
=
""
,
TenantId
=
demodel
.
TenantId
,
UpdateDate
=
DateTime
.
Now
,
UserId
=
ThreeUserId
,
Type
=
1
,
IsRemit
=
0
};
gocList
.
Add
(
gocModel
);
}
break
;
break
;
}
}
}
List
<
RB_Goods_OrderCommission
>
gocfulList
=
gocList
;
//gocList 合并用户金额
if
(
basicModel
.
IsCommissionResidue
==
1
)
{
if
(
gocList
.
Count
()
!=
gocList
.
Select
(
x
=>
x
.
UserId
).
Distinct
().
Count
())
List
<
RB_Goods_OrderCommission
>
gocfulList
=
gocList
;
//gocList 合并用户金额
if
(
basicModel
.
IsCommissionResidue
==
1
)
{
gocfulList
=
new
List
<
RB_Goods_OrderCommission
>();
//说明有用户可以合并
var
userIdList
=
gocList
.
Select
(
x
=>
x
.
UserId
).
Distinct
().
ToList
();
foreach
(
var
qitem
in
userIdList
)
if
(
gocList
.
Count
()
!=
gocList
.
Select
(
x
=>
x
.
UserId
).
Distinct
().
Count
())
{
var
gocModel
=
gocList
.
Where
(
x
=>
x
.
UserId
==
qitem
).
FirstOrDefault
();
if
(
gocList
.
Where
(
x
=>
x
.
UserId
==
qitem
).
Count
()
>
1
)
gocfulList
=
new
List
<
RB_Goods_OrderCommission
>();
//说明有用户可以合并
var
userIdList
=
gocList
.
Select
(
x
=>
x
.
UserId
).
Distinct
().
ToList
();
foreach
(
var
qitem
in
userIdList
)
{
decimal
tcommission
=
gocList
.
Where
(
x
=>
x
.
UserId
==
qitem
).
Sum
(
x
=>
x
.
Commission
??
0
);
gocModel
.
Commission
=
tcommission
;
gocModel
.
Remark
=
"多级全额返佣"
;
var
gocModel
=
gocList
.
Where
(
x
=>
x
.
UserId
==
qitem
).
FirstOrDefault
();
if
(
gocList
.
Where
(
x
=>
x
.
UserId
==
qitem
).
Count
()
>
1
)
{
decimal
tcommission
=
gocList
.
Where
(
x
=>
x
.
UserId
==
qitem
).
Sum
(
x
=>
x
.
Commission
??
0
);
gocModel
.
Commission
=
tcommission
;
gocModel
.
Remark
=
"多级全额返佣"
;
}
gocfulList
.
Add
(
gocModel
);
}
gocfulList
.
Add
(
gocModel
);
}
}
}
if
(
gocfulList
.
Any
())
{
foreach
(
var
qitem
in
gocfulList
)
if
(
gocfulList
.
Any
())
{
qitem
.
Commission
=
(
qitem
.
Commission
??
0
)
*
(
item
.
Number
??
0
);
goods_OrderCommissionRepository
.
Insert
(
qitem
,
trans
);
foreach
(
var
qitem
in
gocfulList
)
{
qitem
.
Commission
=
(
qitem
.
Commission
??
0
)
*
(
item
.
Number
??
0
);
goods_OrderCommissionRepository
.
Insert
(
qitem
,
trans
);
}
}
}
}
...
...
Mall.Module.Product/ProductModule.cs
View file @
48ab28ce
...
...
@@ -152,6 +152,11 @@ namespace Mall.Module.Product
/// 商品代理
/// </summary>
private
readonly
RB_Goods_ProxyRepository
goods_ProxyRepository
=
new
RB_Goods_ProxyRepository
();
/// <summary>
/// 粉象返佣
/// </summary>
private
readonly
RB_Distributor_FXGradeRepository
distributor_FXGradeRepository
=
new
RB_Distributor_FXGradeRepository
();
...
...
@@ -1264,52 +1269,50 @@ namespace Mall.Module.Product
var
BasicsModel
=
distributor_BasicsRepository
.
GetList
(
new
RB_Distributor_Basics_Extend
()
{
TenantId
=
TenantId
,
MallBaseId
=
MallBaseId
}).
FirstOrDefault
();
if
((
BasicsModel
?.
IsEnableFXGrade
??
2
)
==
1
)
{
if
(
model
.
IsCustomSpecification
==
1
)
{
var
dcList
=
model
.
SpecificationPriceList
.
Where
(
x
=>
x
.
DistributorGrade
==
disModel
.
GradeId
).
ToList
();
model
.
MaxShare
=
dcList
.
Max
(
x
=>
x
.
OneCommission
??
0
);
if
(
model
.
SeparateDistributionMoneyType
==
1
)
{
model
.
MaxShare
=
Math
.
Round
(
model
.
MaxShare
*
MaxSellMoney
/
100
,
2
,
MidpointRounding
.
AwayFromZero
);
}
}
else
var
FXList
=
distributor_FXGradeRepository
.
GetList
(
new
RB_Distributor_FXGrade_Extend
()
{
TenantId
=
TenantId
,
MallBaseId
=
MallBaseId
});
if
(
FXList
.
Any
()
&&
FXList
.
Where
(
x
=>
x
.
IsGuest
==
1
).
Any
())
{
if
(
disModel
.
GradeId
==
0
)
var
FXModel
=
FXList
.
Where
(
x
=>
x
.
Id
==
disModel
.
FXGradeId
).
FirstOrDefault
();
var
PModel
=
FXList
.
Where
(
x
=>
x
.
IsGuest
==
1
).
FirstOrDefault
();
if
(
FXModel
!=
null
&&
PModel
!=
null
)
{
//拿分销基础配置
//if ((BasicsModel?.IsCommissionResidue ?? 2) == 1)
//{
// model.MaxShare = (BasicsModel?.OneCommission ?? 0) + (BasicsModel?.TwoCommission ?? 0) + (BasicsModel?.ThreeCommission ?? 0);
//}
//else
//{
model
.
MaxShare
=
BasicsModel
?.
OneCommission
??
0
;
//}
if
((
BasicsModel
?.
DistributorCommissionType
??
2
)
==
1
)
decimal
CRate
=
0
;
if
(
FXModel
.
Id
==
PModel
.
Id
)
{
model
.
MaxShare
=
Math
.
Round
(
model
.
MaxShare
*
MaxSellMoney
/
100
,
2
,
MidpointRounding
.
AwayFromZero
)
;
CRate
=
FXModel
.
SiblingRatio
??
0
;
}
}
else
if
(
disModel
.
GradeId
>
0
)
{
//获取分销商等级
var
disgradeModel
=
distributor_GradeRepository
.
GetEntity
(
disModel
.
GradeId
);
if
(
disgradeModel
!=
null
)
else
{
//if ((BasicsModel?.IsCommissionResidue ?? 2) == 1)
//{
// model.MaxShare = (disgradeModel?.OneCommission ?? 0) + (disgradeModel?.TwoCommission ?? 0) + (disgradeModel?.ThreeCommission ?? 0);
//}
//else
//{
model
.
MaxShare
=
disgradeModel
?.
OneCommission
??
0
;
//}
if
((
disgradeModel
?.
DistributionCommissionType
??
2
)
==
1
)
CRate
=
(
FXModel
.
CommissionRatio
??
0
)
-
(
PModel
.
CommissionRatio
??
0
);
}
if
(
model
.
IsCustomSpecification
==
1
)
{
var
dcModel
=
model
.
SpecificationPriceList
.
OrderByDescending
(
x
=>
x
.
Commission
).
FirstOrDefault
();
if
(
dcModel
.
Commission
>
0
)
{
model
.
MaxShare
=
Math
.
Round
(
model
.
MaxShare
*
MaxSellMoney
/
100
,
2
,
MidpointRounding
.
AwayFromZero
);
if
(
FXModel
.
DecimalType
==
1
)
{
model
.
MaxShare
=
Math
.
Ceiling
(
dcModel
.
Commission
*
CRate
/
100
);
}
else
{
model
.
MaxShare
=
Math
.
Ceiling
(
dcModel
.
Commission
*
CRate
)
/
100
;
}
}
}
else
{
if
(
model
.
Commission
>
0
)
{
if
(
FXModel
.
DecimalType
==
1
)
{
model
.
MaxShare
=
Math
.
Ceiling
(
model
.
Commission
*
CRate
/
100
);
}
else
{
model
.
MaxShare
=
Math
.
Ceiling
(
model
.
Commission
*
CRate
)
/
100
;
}
}
}
}
...
...
Mall.Module.User/UserModule.cs
View file @
48ab28ce
...
...
@@ -4426,6 +4426,7 @@ namespace Mall.Module.User
{
nameof
(
RB_Distributor_FXGrade
.
UpgradeNum
),
demodel
.
UpgradeNum
},
{
nameof
(
RB_Distributor_FXGrade
.
UpgradeId
),
demodel
.
UpgradeId
},
{
nameof
(
RB_Distributor_FXGrade
.
UpdateDate
),
demodel
.
UpdateDate
},
{
nameof
(
RB_Distributor_FXGrade
.
DecimalType
),
demodel
.
DecimalType
},
};
List
<
WhereHelper
>
wheres
=
new
List
<
WhereHelper
>()
{
new
WhereHelper
(){
...
...
Mall.WebApi/Controllers/User/UserController.cs
View file @
48ab28ce
...
...
@@ -2658,6 +2658,7 @@ namespace Mall.WebApi.Controllers.User
x
.
BuyMoney
,
x
.
IsUpgrade
,
x
.
UpgradeNum
,
x
.
DecimalType
,
x
.
UpgradeId
,
UpdateDate
=
x
.
UpdateDate
.
HasValue
?
x
.
UpdateDate
.
Value
.
ToString
(
"yyyy-MM-dd"
)
:
""
});
...
...
@@ -2720,6 +2721,7 @@ namespace Mall.WebApi.Controllers.User
demodel
.
IsUpgrade
??=
0
;
demodel
.
UpgradeNum
??=
0
;
demodel
.
UpgradeId
??=
0
;
demodel
.
DecimalType
??=
1
;
demodel
.
CreateDate
=
DateTime
.
Now
;
demodel
.
UpdateDate
=
DateTime
.
Now
;
bool
flag
=
userModule
.
SetFXDistributorGradeInfo
(
demodel
);
...
...
@@ -2747,6 +2749,7 @@ namespace Mall.WebApi.Controllers.User
{
return
ApiResult
.
ParamIsNull
();
}
//验证 有用户在使用该等级 不能删除
bool
flag
=
userModule
.
DelFXDistributorGradeInfo
(
GradeId
,
req
.
TenantId
,
req
.
MallBaseId
);
if
(
flag
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment