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
e40c3243
Commit
e40c3243
authored
Jul 21, 2020
by
吴春
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://gitlab.oytour.com/Kui2/mall.oytour.com
parents
98a0e5cc
bb972274
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
574 additions
and
39 deletions
+574
-39
RB_Goods.cs
Mall.Model/Entity/Product/RB_Goods.cs
+9
-0
RB_Goods_OrderDetail.cs
Mall.Model/Entity/Product/RB_Goods_OrderDetail.cs
+9
-0
OrderModule.cs
Mall.Module.Product/OrderModule.cs
+205
-5
ProductModule.cs
Mall.Module.Product/ProductModule.cs
+19
-2
UserCommonModule.cs
Mall.Module.User/UserCommonModule.cs
+1
-1
UserModule.cs
Mall.Module.User/UserModule.cs
+117
-29
ProductController.cs
Mall.WebApi/Controllers/Product/ProductController.cs
+6
-1
AppletLoginController.cs
Mall.WebApi/Controllers/User/AppletLoginController.cs
+13
-0
UserVipController.cs
Mall.WebApi/Controllers/User/UserVipController.cs
+1
-1
Mall.WindowsService.csproj
Mall.WindowsService/Mall.WindowsService.csproj
+1
-0
FinanceModule.cs
Mall.WindowsService/Module/FinanceModule.cs
+193
-0
No files found.
Mall.Model/Entity/Product/RB_Goods.cs
View file @
e40c3243
...
...
@@ -417,5 +417,14 @@ namespace Mall.Model.Entity.Product
/// 返佣总金额
/// </summary>
public
decimal
Commission
{
get
;
set
;
}
/// <summary>
/// 赠送粉象等级
/// </summary>
public
int
?
PresentFXGrade
{
get
;
set
;
}
/// <summary>
/// 赠送的月份 几个月
/// </summary>
public
int
?
PresentFXMonth
{
get
;
set
;
}
}
}
Mall.Model/Entity/Product/RB_Goods_OrderDetail.cs
View file @
e40c3243
...
...
@@ -214,5 +214,14 @@ namespace Mall.Model.Entity.Product
/// 积分赠送
/// </summary>
public
int
?
IntegralGoodsPresent
{
get
;
set
;
}
/// <summary>
/// 赠送粉象等级
/// </summary>
public
int
?
PresentFXGrade
{
get
;
set
;
}
/// <summary>
/// 赠送粉象等级期限(月)
/// </summary>
public
int
?
PresentFXMonth
{
get
;
set
;
}
}
}
Mall.Module.Product/OrderModule.cs
View file @
e40c3243
...
...
@@ -206,6 +206,10 @@ namespace Mall.Module.Product
/// 粉象返佣
/// </summary>
private
readonly
RB_Distributor_FXGradeRepository
distributor_FXGradeRepository
=
new
RB_Distributor_FXGradeRepository
();
/// <summary>
/// vip购买记录
/// </summary>
private
readonly
RB_Vip_BuyRepository
vip_BuyRepository
=
new
RB_Vip_BuyRepository
();
#
region
购物车
...
...
@@ -2295,6 +2299,9 @@ namespace Mall.Module.Product
item
.
CommissionPrice
=
gmodel
.
Commission
;
// 粉象 返佣金额
item
.
CostMoney
=
gmodel
.
CostPrice
??
0
;
//(gmodel.IsCustomSpecification==2)?(gmodel.CostPrice ?? 0):(speciPList.Where(x => x.GoodsId == item.GoodsId && x.SpecificationSort == item.SpecificationSort).FirstOrDefault().CostMoney);
item
.
PresentFXGrade
=
gmodel
.
PresentFXGrade
??
0
;
//赠送粉象分销等级
item
.
PresentFXMonth
=
gmodel
.
PresentFXMonth
??
0
;
item
.
ProductCode
=
gmodel
.
GoodsNumbers
;
item
.
CategoryIdList
=
categoryList
.
Select
(
x
=>
x
.
CategoryId
??
0
).
ToList
();
int
GoodsWeight
=
gmodel
.
GoodsWeight
??
0
;
//商品重量
...
...
@@ -2828,11 +2835,12 @@ namespace Mall.Module.Product
}
};
member_UserRepository
.
Update
(
keyValues1
,
wheres1
,
trans
);
}
}
//任务执行返佣 失败查看日志,手动返佣(空闲可增加手动返佣接口)
Task
.
Run
(()
=>
InsertOrderCommission
(
demodel
,
umodel
,
GoodsIds
,
OrderId
));
//记录日志
Task
.
Run
(()
=>
goods_LogRepository
.
Insert
(
new
RB_Goods_Log
()
goods_LogRepository
.
Insert
(
new
RB_Goods_Log
()
{
Id
=
0
,
Type
=
1
,
...
...
@@ -2841,7 +2849,7 @@ namespace Mall.Module.Product
CreateDate
=
DateTime
.
Now
,
MallBaseId
=
demodel
.
MallBaseId
,
TenantId
=
demodel
.
TenantId
})
)
;
});
}
goods_OrderRepository
.
DBSession
.
Commit
();
return
ApiResult
.
Success
(
""
,
new
{
OrderId
});
...
...
@@ -2854,6 +2862,178 @@ namespace Mall.Module.Product
}
}
/// <summary>
/// 赠送粉象等级
/// </summary>
/// <param name="demodel"></param>
/// <param name="umodel"></param>
/// <param name="OrderId"></param>
private
void
InsertPresentFXGrade
(
RB_Goods_Order_Extend
demodel
,
int
UserId
,
int
OrderId
)
{
var
basicModel
=
distributor_BasicsRepository
.
GetList
(
new
RB_Distributor_Basics_Extend
()
{
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
}).
FirstOrDefault
();
if
((
basicModel
?.
IsEnableFXGrade
??
2
)
==
1
)
{
var
disModel
=
distributor_InfoRepository
.
GetList
(
new
RB_Distributor_Info_Extend
()
{
UserId
=
UserId
,
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
}).
FirstOrDefault
();
if
(
disModel
==
null
)
{
LogHelper
.
Write
(
"该用户分销商等级不存在,UserId:"
+
UserId
);
}
if
(
demodel
.
DetailList
.
Where
(
x
=>
x
.
PresentFXGrade
>
0
).
Any
()
&&
disModel
!=
null
)
{
var
FXList
=
distributor_FXGradeRepository
.
GetList
(
new
RB_Distributor_FXGrade_Extend
()
{
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
});
var
VIPModel
=
FXList
.
Where
(
x
=>
x
.
IsGuest
==
3
).
FirstOrDefault
();
List
<
int
>
GradeList
=
new
List
<
int
>();
//等级列表
int
VIPMonths
=
0
;
//vip赠送月份
foreach
(
var
item
in
demodel
.
DetailList
)
{
if
(
item
.
PresentFXGrade
>
0
)
{
//有赠送粉象等级
GradeList
.
Add
(
item
.
PresentFXGrade
??
0
);
if
(
item
.
PresentFXGrade
==
(
VIPModel
?.
Id
??
0
))
{
VIPMonths
+=
(
item
.
PresentFXMonth
??
0
)
*
(
item
.
Number
??
0
);
}
}
}
//判断等级 取最高级别
int
MaxGradeId
=
0
;
int
MaxGrade
=
0
;
if
(
GradeList
.
Distinct
().
Count
()
>
1
)
{
//说明有两种级别 取最高的
foreach
(
var
item
in
GradeList
.
Distinct
())
{
var
fxmodel
=
FXList
.
Where
(
x
=>
x
.
Id
==
item
).
FirstOrDefault
();
MaxGrade
=
(
fxmodel
.
Grade
??
0
)
>
MaxGrade
?
(
fxmodel
.
Grade
??
0
)
:
MaxGrade
;
}
MaxGradeId
=
FXList
.
Where
(
x
=>
x
.
Grade
==
MaxGrade
).
FirstOrDefault
()?.
Id
??
0
;
}
else
{
MaxGradeId
=
GradeList
.
FirstOrDefault
();
var
fxmodel
=
FXList
.
Where
(
x
=>
x
.
Id
==
MaxGradeId
).
FirstOrDefault
();
MaxGrade
=
(
fxmodel
.
Grade
??
0
)
>
MaxGrade
?
(
fxmodel
.
Grade
??
0
)
:
MaxGrade
;
}
var
oldGrade
=
FXList
.
Where
(
x
=>
x
.
Id
==
disModel
.
FXGradeId
).
FirstOrDefault
()?.
Grade
??
0
;
try
{
bool
UpdateGrade
=
false
;
if
(
MaxGradeId
>
0
&&
MaxGrade
>=
oldGrade
&&
MaxGradeId
==
(
VIPModel
?.
Id
??
0
))
{
UpdateGrade
=
true
;
string
MaxGradeName
=
FXList
.
Where
(
x
=>
x
.
Id
==
MaxGradeId
).
FirstOrDefault
()?.
GradeName
??
""
;
//vip
var
VipExpiryDate
=
DateTime
.
Now
.
AddMonths
(
VIPMonths
);
if
(
VIPMonths
>=
1
)
{
VipExpiryDate
=
Convert
.
ToDateTime
(
VipExpiryDate
.
AddDays
(-
1
).
ToString
(
"yyyy-MM-dd 23:59:59"
));
}
if
(
MaxGrade
==
oldGrade
&&
disModel
.
VipExpiryDate
.
HasValue
)
{
if
(
disModel
.
VipExpiryDate
>
DateTime
.
Now
)
{
VipExpiryDate
=
disModel
.
VipExpiryDate
.
Value
.
AddMonths
(
VIPMonths
);
}
}
Dictionary
<
string
,
object
>
keyValues1
=
new
Dictionary
<
string
,
object
>
{
{
nameof
(
RB_Distributor_Info_Extend
.
FXGradeId
),
MaxGradeId
},
{
nameof
(
RB_Distributor_Info_Extend
.
VipExpiryDate
),
VipExpiryDate
}
};
List
<
WhereHelper
>
wheres1
=
new
List
<
WhereHelper
>()
{
new
WhereHelper
(){
FiledName
=
nameof
(
RB_Distributor_Info_Extend
.
Id
),
FiledValue
=
disModel
.
Id
,
OperatorEnum
=
OperatorEnum
.
Equal
}
};
bool
gflag
=
distributor_InfoRepository
.
Update
(
keyValues1
,
wheres1
);
if
(
gflag
)
{
//新增vip赠送记录表
Random
R1
=
new
Random
();
int
Rstr1
=
R1
.
Next
(
111
,
999
);
string
OrderNo1
=
DateTime
.
Now
.
ToString
(
"yyyyMMddHHmmssfff"
)
+
Rstr1
;
vip_BuyRepository
.
Insert
(
new
Model
.
Entity
.
User
.
RB_Vip_Buy
()
{
CreateDate
=
DateTime
.
Now
,
ExpiryDate
=
VipExpiryDate
,
GradeId
=
MaxGradeId
,
GradeName
=
MaxGradeName
,
Id
=
0
,
MallBaseId
=
demodel
.
MallBaseId
,
MerchantsNo
=
""
,
Money
=
0
,
OrderNo
=
OrderNo1
,
PayState
=
1
,
PayTime
=
null
,
PayWay
=
1
,
Remark
=
"下单赠送,订单号:"
+
demodel
.
OrderNo
+
"("
+
OrderId
+
")"
,
Status
=
0
,
TenantId
=
demodel
.
TenantId
,
UserId
=
UserId
});
}
}
else
if
(
MaxGradeId
>
0
&&
MaxGrade
>
oldGrade
)
{
UpdateGrade
=
true
;
string
MaxGradeName
=
FXList
.
Where
(
x
=>
x
.
Id
==
MaxGradeId
).
FirstOrDefault
()?.
GradeName
??
""
;
//比vip高级
Dictionary
<
string
,
object
>
keyValues1
=
new
Dictionary
<
string
,
object
>
{
{
nameof
(
RB_Distributor_Info_Extend
.
FXGradeId
),
MaxGradeId
}
};
List
<
WhereHelper
>
wheres1
=
new
List
<
WhereHelper
>()
{
new
WhereHelper
(){
FiledName
=
nameof
(
RB_Distributor_Info_Extend
.
Id
),
FiledValue
=
disModel
.
Id
,
OperatorEnum
=
OperatorEnum
.
Equal
}
};
bool
gflag
=
distributor_InfoRepository
.
Update
(
keyValues1
,
wheres1
);
if
(
gflag
)
{
//新增vip赠送记录表
Random
R1
=
new
Random
();
int
Rstr1
=
R1
.
Next
(
111
,
999
);
string
OrderNo1
=
DateTime
.
Now
.
ToString
(
"yyyyMMddHHmmssfff"
)
+
Rstr1
;
vip_BuyRepository
.
Insert
(
new
Model
.
Entity
.
User
.
RB_Vip_Buy
()
{
CreateDate
=
DateTime
.
Now
,
ExpiryDate
=
null
,
GradeId
=
MaxGradeId
,
GradeName
=
MaxGradeName
,
Id
=
0
,
MallBaseId
=
demodel
.
MallBaseId
,
MerchantsNo
=
""
,
Money
=
0
,
OrderNo
=
OrderNo1
,
PayState
=
1
,
PayTime
=
null
,
PayWay
=
1
,
Remark
=
"下单赠送,订单号:"
+
demodel
.
OrderNo
+
"("
+
OrderId
+
")"
,
Status
=
0
,
TenantId
=
demodel
.
TenantId
,
UserId
=
UserId
});
}
}
if
(
UpdateGrade
)
{
new
UserCommonModule
().
FXAutoUpgradeUserDistributorGrade
(
UserId
,
demodel
.
TenantId
,
demodel
.
MallBaseId
);
}
}
catch
(
Exception
ex
)
{
LogHelper
.
Write
(
ex
,
"InsertPresentFXGrade赠送粉象分销等级失败,OrderId:"
+
OrderId
);
}
}
}
}
/// <summary>
/// 其他付款
/// </summary>
...
...
@@ -3050,7 +3230,7 @@ namespace Mall.Module.Product
try
{
var
basicModel
=
distributor_BasicsRepository
.
GetList
(
new
RB_Distributor_Basics_Extend
()
{
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
}).
FirstOrDefault
();
if
(
basicModel
.
IsEnableFXGrade
==
1
)
if
(
(
basicModel
?.
IsEnableFXGrade
??
2
)
==
1
)
{
//粉象返佣
var
FXList
=
distributor_FXGradeRepository
.
GetList
(
new
RB_Distributor_FXGrade_Extend
()
{
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
});
...
...
@@ -3890,7 +4070,12 @@ namespace Mall.Module.Product
IntegralNumber
=
item
.
IntegralNumber
,
CouponMoney
=
item
.
CouponMoney
,
IntegralGoodsPresent
=
IntegralPresent
,
SupplierId
=
item
.
SupplierId
SupplierId
=
item
.
SupplierId
,
CostFinanceId
=
0
,
FreightCostMoney
=
0
,
FreightFinanceId
=
0
,
PresentFXGrade
=
item
.
PresentFXGrade
,
PresentFXMonth
=
item
.
PresentFXMonth
},
trans
);
item
.
Id
=
detailId
;
...
...
@@ -6896,6 +7081,21 @@ namespace Mall.Module.Product
});
}
}
#
region
粉象等级赠送
2020
-
07
-
21
if
(
dlist
.
Any
())
{
var
demodel
=
new
RB_Goods_Order_Extend
{
TenantId
=
tenantId
,
MallBaseId
=
mallBaseId
,
DetailList
=
dlist
,
OrderNo
=
orderModel
.
OrderNo
};
InsertPresentFXGrade
(
demodel
,
orderModel
.
UserId
??
0
,
orderModel
.
OrderId
);
}
#
endregion
}
else
if
(
type
==
3
)
{
...
...
Mall.Module.Product/ProductModule.cs
View file @
e40c3243
...
...
@@ -1260,13 +1260,13 @@ namespace Mall.Module.Product
#
region
最高返佣
model
.
MaxShare
=
0
;
var
BasicsModel
=
distributor_BasicsRepository
.
GetList
(
new
RB_Distributor_Basics_Extend
()
{
TenantId
=
TenantId
,
MallBaseId
=
MallBaseId
}).
FirstOrDefault
();
if
(
UserId
>
0
)
{
//获取分销商信息
var
disModel
=
distributor_InfoRepository
.
GetList
(
new
RB_Distributor_Info_Extend
()
{
TenantId
=
TenantId
,
MallBaseId
=
MallBaseId
,
UserId
=
UserId
,
AuditStatus
=
Common
.
Enum
.
User
.
DistributorAuditStatusEnum
.
Audited
}).
FirstOrDefault
();
if
(
disModel
!=
null
)
{
var
BasicsModel
=
distributor_BasicsRepository
.
GetList
(
new
RB_Distributor_Basics_Extend
()
{
TenantId
=
TenantId
,
MallBaseId
=
MallBaseId
}).
FirstOrDefault
();
if
((
BasicsModel
?.
IsEnableFXGrade
??
2
)
==
1
)
{
var
FXList
=
distributor_FXGradeRepository
.
GetList
(
new
RB_Distributor_FXGrade_Extend
()
{
TenantId
=
TenantId
,
MallBaseId
=
MallBaseId
});
...
...
@@ -1634,6 +1634,22 @@ namespace Mall.Module.Product
}
#
endregion
#
region
赠送
vip
会员
string
PresentFXGradeMsg
=
""
;
if
((
BasicsModel
?.
IsEnableFXGrade
??
2
)
==
1
)
{
if
(
model
.
PresentFXGrade
>
0
)
{
var
fxmodel
=
distributor_FXGradeRepository
.
GetEntity
(
model
.
PresentFXGrade
);
if
(
fxmodel
!=
null
)
{
PresentFXGradeMsg
=
"购买收货后赠送"
+
fxmodel
+
"会员"
;
if
(
model
.
PresentFXMonth
>
0
)
{
PresentFXGradeMsg
+=
(
model
.
PresentFXMonth
??
0
)
+
"个月"
;
}
}
}
}
#
endregion
#
region
会员价格
decimal
price_member_max
=
0
,
price_member_min
=
0
,
price_min
=
0
,
price_max
=
0
;
if
(
model
.
EnjoyMember
==
1
&&
model
.
SeparateSetMember
==
1
&&
model
.
MemberPriceList
.
Any
())
...
...
@@ -1840,7 +1856,8 @@ namespace Mall.Module.Product
integral
=
new
{
title
=
Integral
>
0
?
"购买可得"
+
Integral
+
"积分"
:
""
}
},
PresentFXGradeMsg
},
//plugin_extra = new List<object>(),
express
=
model
.
Express
,
//快递费用 读取默认收货地址 如果没有为0 如果有 根据商品运费匹配 找出快递费用
...
...
Mall.Module.User/UserCommonModule.cs
View file @
e40c3243
...
...
@@ -847,7 +847,7 @@ namespace Mall.Module.User
}
catch
(
Exception
ex
)
{
LogHelper
.
Write
(
ex
,
"FXAutoUpgradeUserDistributorGrade
"
);
LogHelper
.
Write
(
ex
,
"FXAutoUpgradeUserDistributorGrade
自动升级失败,BuyUserId:"
+
BuyUserId
);
return
false
;
}
}
...
...
Mall.Module.User/UserModule.cs
View file @
e40c3243
...
...
@@ -1535,6 +1535,34 @@ namespace Mall.Module.User
return
flag
;
}
/// <summary>
/// 新增分销商
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public
bool
SetDistributorInfoForFX
(
int
FXGradeId
,
int
UserId
,
int
TenantId
,
int
MallBaseId
)
{
var
demodel
=
new
RB_Distributor_Info_Extend
();
demodel
.
UserId
=
UserId
;
demodel
.
TotalCommission
??=
0
;
demodel
.
CommissionWithdrawal
??=
0
;
demodel
.
Name
??=
""
;
demodel
.
Mobile
??=
""
;
demodel
.
GradeId
??=
0
;
demodel
.
HPGradeId
??=
0
;
demodel
.
FXGradeId
=
FXGradeId
;
demodel
.
AuditStatus
=
Common
.
Enum
.
User
.
DistributorAuditStatusEnum
.
Audited
;
demodel
.
AuditDate
=
DateTime
.
Now
;
demodel
.
Remark
=
"粉象模式 自动生成普通会员分销商信息"
;
demodel
.
Status
=
0
;
demodel
.
TenantId
=
TenantId
;
demodel
.
MallBaseId
=
MallBaseId
;
demodel
.
CreateDate
=
DateTime
.
Now
;
demodel
.
UpdateDate
=
DateTime
.
Now
;
bool
flag
=
distributor_InfoRepository
.
Insert
(
demodel
)
>
0
;
return
flag
;
}
/// <summary>
/// 验证分销商
/// </summary>
...
...
@@ -2187,9 +2215,31 @@ namespace Mall.Module.User
}
}
}
if
(!
string
.
IsNullOrEmpty
(
remodel
.
ReOrderNos
)
&&
!
string
.
IsNullOrEmpty
(
remodel
.
ReVipIds
))
{
List
<
int
>
VipIdList
=
JsonConvert
.
DeserializeObject
<
List
<
int
>>(
remodel
.
ReVipIds
);
if
(
VipIdList
.
Any
())
{
var
oclist
=
vipBuy_CommissionRepository
.
GetList
(
new
RB_VipBuy_Commission_Extend
()
{
UserId
=
remodel
.
UserId
,
VipIds
=
string
.
Join
(
","
,
VipIdList
)
});
foreach
(
var
qitem
in
oclist
)
{
Dictionary
<
string
,
object
>
keyValues2
=
new
Dictionary
<
string
,
object
>()
{
{
nameof
(
RB_VipBuy_Commission_Extend
.
IsRemit
),
0
}
};
List
<
WhereHelper
>
wheres2
=
new
List
<
WhereHelper
>()
{
new
WhereHelper
(){
FiledName
=
nameof
(
RB_VipBuy_Commission_Extend
.
Id
),
FiledValue
=
qitem
.
Id
,
OperatorEnum
=
OperatorEnum
.
Equal
}
};
vipBuy_CommissionRepository
.
Update
(
keyValues2
,
wheres2
);
}
}
}
}
catch
(
Exception
)
catch
(
Exception
ex
)
{
LogHelper
.
Write
(
ex
,
"SetDistributorRemitAudit回滚返佣字段失败"
);
}
#
endregion
}
...
...
@@ -3000,6 +3050,9 @@ namespace Mall.Module.User
threeNum
=
member_UserRepository
.
GetDistributorReferralsNumTwo
(
umodel
.
Id
,
3
,
userInfo
.
TenantId
,
userInfo
.
MallBaseId
);
}
//Vip购买返佣金额
decimal
VipBuyCommission
=
vipBuy_CommissionRepository
.
getVipBuyCommissionMoney
(
userInfo
.
UserId
);
var
CustomModel
=
distributor_CustomRepository
.
GetList
(
new
RB_Distributor_Custom_Extend
()
{
TenantId
=
userInfo
.
TenantId
,
MallBaseId
=
userInfo
.
MallBaseId
}).
FirstOrDefault
();
if
(
CustomModel
==
null
)
{
...
...
@@ -3043,7 +3096,8 @@ namespace Mall.Module.User
OrderCommission
,
RemitMoney
=
remitMoney
,
ReferralsNum
=
(
basicsModel
?.
IsEnableFXGrade
??
0
)
==
1
?
fxNum
:
(
oneNum
+
twoNum
+
threeNum
),
IsEnableFXGrade
=
(
basicsModel
?.
IsEnableFXGrade
??
0
)
IsEnableFXGrade
=
(
basicsModel
?.
IsEnableFXGrade
??
0
),
VipBuyCommission
}
};
}
...
...
@@ -3322,15 +3376,40 @@ namespace Mall.Module.User
{
//所有未提现的 返佣
var
clist
=
goods_OrderCommissionRepository
.
GetUserCommissionRemit
(
demodel
.
UserId
??
0
);
if
(
clist
.
Any
())
var
viplist
=
vipBuy_CommissionRepository
.
GetList
(
new
RB_VipBuy_Commission_Extend
()
{
UserId
=
demodel
.
UserId
,
Type
=
1
,
IsRemit
=
2
});
if
(
clist
.
Any
()
||
viplist
.
Any
())
{
//获取订单列表
string
OrderIds
=
string
.
Join
(
","
,
clist
.
Select
(
x
=>
x
.
OrderId
).
Distinct
());
var
olist
=
goods_OrderRepository
.
GetOrderList
(
new
RB_Goods_Order_Extend
()
{
OrderIds
=
OrderIds
});
olist
=
olist
.
OrderByDescending
(
x
=>
x
.
CreateDate
).
ToList
();
List
<
int
>
OrderIdList
=
new
List
<
int
>();
List
<
int
>
VipIdList
=
new
List
<
int
>();
string
OrderNos
=
""
;
decimal
TMoney
=
(
demodel
.
AppliedMoney
??
0
);
//首先查询 vip购买返佣,有的话 优先提vip返佣的
if
(
viplist
.
Any
())
{
foreach
(
var
item
in
viplist
)
{
if
(
TMoney
>
0
)
{
TMoney
-=
(
item
.
Commission
??
0
);
Dictionary
<
string
,
object
>
keyValues2
=
new
Dictionary
<
string
,
object
>()
{
{
nameof
(
RB_VipBuy_Commission_Extend
.
IsRemit
),
1
}
};
List
<
WhereHelper
>
wheres2
=
new
List
<
WhereHelper
>()
{
new
WhereHelper
(){
FiledName
=
nameof
(
RB_VipBuy_Commission_Extend
.
Id
),
FiledValue
=
item
.
Id
,
OperatorEnum
=
OperatorEnum
.
Equal
}
};
vipBuy_CommissionRepository
.
Update
(
keyValues2
,
wheres2
,
trans
);
OrderNos
+=
"\"VIP "
+
item
.
OrderNo
+
"\":"
+
(
item
.
Commission
??
0
)
+
"元,"
;
VipIdList
.
Add
(
item
.
Id
);
}
}
}
//开始递减金额 订单不足的 给与提示
foreach
(
var
item
in
olist
)
{
...
...
@@ -3366,20 +3445,24 @@ namespace Mall.Module.User
{
OrderNos
+=
" 余额"
+
TMoney
+
"尚未找到相关订单"
;
}
else
if
(
TMoney
<
0
)
{
OrderNos
+=
" 多出"
+
(
0
-
TMoney
)
+
"存在未匹配到正确的订单"
;
}
if
(!
string
.
IsNullOrEmpty
(
OrderNos
))
{
Dictionary
<
string
,
object
>
keyValues1
=
new
Dictionary
<
string
,
object
>()
{
{
nameof
(
RB_Distributor_Remit_Extend
.
ReOrderNos
),
OrderNos
},
{
nameof
(
RB_Distributor_Remit_Extend
.
ReOrderIds
),
JsonConvert
.
SerializeObject
(
OrderIdList
)},
};
{
nameof
(
RB_Distributor_Remit_Extend
.
ReOrderNos
),
OrderNos
},
{
nameof
(
RB_Distributor_Remit_Extend
.
ReOrderIds
),
JsonConvert
.
SerializeObject
(
OrderIdList
)},
{
nameof
(
RB_Distributor_Remit_Extend
.
ReVipIds
),
JsonConvert
.
SerializeObject
(
VipIdList
)},
};
List
<
WhereHelper
>
wheres1
=
new
List
<
WhereHelper
>()
{
new
WhereHelper
(){
FiledName
=
nameof
(
RB_Distributor_Remit_Extend
.
Id
),
FiledValue
=
RemitId
,
OperatorEnum
=
OperatorEnum
.
Equal
}
};
new
WhereHelper
(){
FiledName
=
nameof
(
RB_Distributor_Remit_Extend
.
Id
),
FiledValue
=
RemitId
,
OperatorEnum
=
OperatorEnum
.
Equal
}
};
distributor_RemitRepository
.
Update
(
keyValues1
,
wheres1
,
trans
);
}
}
...
...
@@ -3595,13 +3678,17 @@ namespace Mall.Module.User
else
{
var
FXList
=
distributor_FXGradeRepository
.
GetList
(
new
RB_Distributor_FXGrade_Extend
()
{
TenantId
=
userInfo
.
TenantId
,
MallBaseId
=
userInfo
.
MallBaseId
});
FXList
=
FXList
.
Where
(
x
=>
x
.
Grade
>=
gmodel
.
Grade
).
ToLis
t
();
var
upfxmodel
=
FXList
.
Where
(
x
=>
x
.
Id
==
upgmodel
.
UpgradeId
).
FirstOrDefaul
t
();
int
MeetNum
=
0
;
//已发展等级
if
(
FXList
.
Any
())
if
(
upfxmodel
!=
null
)
{
string
FXGradeIds
=
string
.
Join
(
","
,
FXList
.
Select
(
x
=>
x
.
Id
));
MeetNum
=
member_UserRepository
.
GetUserReferralsForFX
(
new
RB_Member_User_Extend
()
{
TenantId
=
userInfo
.
TenantId
,
MallBaseId
=
userInfo
.
MallBaseId
,
SuperiorId
=
userInfo
.
UserId
,
FXGradeIds
=
FXGradeIds
});
FXList
=
FXList
.
Where
(
x
=>
x
.
Grade
>=
upfxmodel
.
Grade
).
ToList
();
//已发展等级
if
(
FXList
.
Any
())
{
string
FXGradeIds
=
string
.
Join
(
","
,
FXList
.
Select
(
x
=>
x
.
Id
));
MeetNum
=
member_UserRepository
.
GetUserReferralsForFX
(
new
RB_Member_User_Extend
()
{
TenantId
=
userInfo
.
TenantId
,
MallBaseId
=
userInfo
.
MallBaseId
,
SuperiorId
=
userInfo
.
UserId
,
FXGradeIds
=
FXGradeIds
});
}
}
return
new
{
...
...
@@ -3647,9 +3734,14 @@ namespace Mall.Module.User
{
return
"该等级未启用自动升级"
;
}
var
FXList
=
distributor_FXGradeRepository
.
GetList
(
new
RB_Distributor_FXGrade_Extend
()
{
TenantId
=
userInfo
.
TenantId
,
MallBaseId
=
userInfo
.
MallBaseId
});
FXList
=
FXList
.
Where
(
x
=>
x
.
Grade
>=
gmodel
.
Grade
).
ToList
();
var
upfxmodel
=
FXList
.
Where
(
x
=>
x
.
Id
==
gmodel
.
UpgradeId
).
FirstOrDefault
();
if
(
upfxmodel
==
null
)
{
return
"未满足升级条件"
;
}
FXList
=
FXList
.
Where
(
x
=>
x
.
Grade
>=
upfxmodel
.
Grade
).
ToList
();
int
MeetNum
=
0
;
//已发展等级
if
(
FXList
.
Any
())
...
...
@@ -4478,21 +4570,17 @@ namespace Mall.Module.User
Msg
=
"该用户不是分销商"
};
}
if
((
model
.
HPGradeId
??
0
)
<=
0
)
{
return
new
{
Status
=
2
,
Msg
=
"该用户不是和平分销商等级"
};
}
var
gmodel
=
distributor_HPGradeInfoRepository
.
GetEntity
(
model
.
HPGradeId
);
var
fxmodel
=
distributor_FXGradeRepository
.
GetEntity
(
model
.
FXGradeId
);
return
new
{
Status
=
1
,
UserName
=
umodel
?.
Name
??
""
,
HPGrade
=
gmodel
.
Grade
,
HPGradeName
=
gmodel
.
GradeName
HPGrade
=
gmodel
?.
Grade
??
0
,
HPGradeName
=
gmodel
?.
GradeName
??
"默认等级"
,
FXGrade
=
fxmodel
?.
Grade
??
0
,
FXGradeName
=
fxmodel
?.
GradeName
??
"默认等级"
};
}
...
...
Mall.WebApi/Controllers/Product/ProductController.cs
View file @
e40c3243
...
...
@@ -1531,7 +1531,9 @@ namespace Mall.WebApi.Controllers.MallBase
})
}),
model
.
CarouselImageList
,
model
.
ServiceList
model
.
ServiceList
,
model
.
PresentFXGrade
,
model
.
PresentFXMonth
});
}
...
...
@@ -1981,6 +1983,9 @@ namespace Mall.WebApi.Controllers.MallBase
demodel
.
ProxyRises
??=
0
;
demodel
.
ProxyMoney
??=
0
;
demodel
.
IsProcurement
=
2
;
//新增时
demodel
.
PresentFXGrade
??=
0
;
//赠送粉象等级
demodel
.
PresentFXMonth
??=
0
;
if
(
demodel
.
IsProxy
==
1
&&
demodel
.
CostPrice
>
0
)
{
decimal
ProxyMoney
=
0
;
...
...
Mall.WebApi/Controllers/User/AppletLoginController.cs
View file @
e40c3243
...
...
@@ -108,6 +108,19 @@ namespace Mall.WebApi.Controllers.User
int
UserId
=
userModule
.
AddMemberUserInfo
(
demodel
);
bool
flag
=
UserId
>
0
;
if
(
flag
)
{
#
region
粉象返佣
自动注册分销商
普通会员等级
if
((
basicsModel
?.
IsEnableFXGrade
??
2
)
==
1
)
{
try
{
var
FXPModel
=
userModule
.
GetFXDistributorGradeList
(
new
RB_Distributor_FXGrade_Extend
()
{
IsGuest
=
1
,
MallBaseId
=
requestParm
.
MallBaseId
,
TenantId
=
requestParm
.
TenantId
}).
FirstOrDefault
();
userModule
.
SetDistributorInfoForFX
(
FXPModel
?.
Id
??
0
,
UserId
,
requestParm
.
TenantId
,
requestParm
.
MallBaseId
);
}
catch
(
Exception
ex
)
{
LogHelper
.
Write
(
ex
,
"粉象模式 自动生成分销商失败,UserId:"
+
UserId
);
}
}
#
endregion
//返回基本信息
TokenUserInfo
userInfo
=
new
TokenUserInfo
{
uid
=
UserId
.
ToString
(),
requestFrom
=
ApiRequestFromEnum
.
MiniProgram
};
#
region
JWT
...
...
Mall.WebApi/Controllers/User/UserVipController.cs
View file @
e40c3243
...
...
@@ -250,7 +250,7 @@ namespace Mall.WebApi.Controllers.User
},
ColumnHight
=
30
};
for
(
var
i
=
0
;
i
<
6
;
i
++)
for
(
var
i
=
0
;
i
<
5
;
i
++)
{
datarow
.
ExcelRows
.
Add
(
new
ExcelColumn
(
value
:
""
)
{
});
}
...
...
Mall.WindowsService/Mall.WindowsService.csproj
View file @
e40c3243
...
...
@@ -27,6 +27,7 @@
<ProjectReference Include="..\Mall.Common\Mall.Common.csproj" />
<ProjectReference Include="..\Mall.DataAccess\Mall.DataAccess.csproj" />
<ProjectReference Include="..\Mall.Model\Mall.Model.csproj" />
<ProjectReference Include="..\Mall.Module.User\Mall.Module.User.csproj" />
<ProjectReference Include="..\Mall.Repository\Mall.Repository.csproj" />
</ItemGroup>
...
...
Mall.WindowsService/Module/FinanceModule.cs
View file @
e40c3243
...
...
@@ -10,6 +10,7 @@ using Mall.Model.Entity.User;
using
Mall.Model.Extend.Finance
;
using
Mall.Model.Extend.Product
;
using
Mall.Model.Extend.User
;
using
Mall.Module.User
;
using
Mall.Repository
;
using
Mall.Repository.BaseSetUp
;
using
Mall.Repository.Finance
;
...
...
@@ -96,6 +97,12 @@ namespace Mall.WindowsService.Module
/// 售后订单流程
/// </summary>
private
static
RB_Goods_OrderAfterSaleLogRepository
goods_OrderAfterSaleLogRepository
=
new
RB_Goods_OrderAfterSaleLogRepository
();
/// <summary>
/// 分销基础配置
/// </summary>
private
static
RB_Distributor_BasicsRepository
distributor_BasicsRepository
=
new
RB_Distributor_BasicsRepository
();
private
static
RB_Distributor_FXGradeRepository
distributor_FXGradeRepository
=
new
RB_Distributor_FXGradeRepository
();
private
static
RB_Vip_BuyRepository
vip_BuyRepository
=
new
RB_Vip_BuyRepository
();
/// <summary>
...
...
@@ -832,6 +839,20 @@ and DATE_FORMAT(b.PaymentTime,'%y-%m-%d')<DATE_FORMAT('{endDate}','%y-%m-%d') A
});
}
}
#
region
粉象等级赠送
2020
-
07
-
21
if
(
dlist
.
Any
())
{
var
demodel
=
new
RB_Goods_Order_Extend
{
TenantId
=
tenantId
,
MallBaseId
=
mallBaseId
,
DetailList
=
dlist
,
OrderNo
=
orderModel
.
OrderNo
};
InsertPresentFXGrade
(
demodel
,
orderModel
.
UserId
??
0
,
orderModel
.
OrderId
);
}
#
endregion
}
else
if
(
type
==
3
)
{
...
...
@@ -842,6 +863,178 @@ and DATE_FORMAT(b.PaymentTime,'%y-%m-%d')<DATE_FORMAT('{endDate}','%y-%m-%d') A
return
flag
;
}
/// <summary>
/// 赠送粉象等级
/// </summary>
/// <param name="demodel"></param>
/// <param name="umodel"></param>
/// <param name="OrderId"></param>
private
static
void
InsertPresentFXGrade
(
RB_Goods_Order_Extend
demodel
,
int
UserId
,
int
OrderId
)
{
var
basicModel
=
distributor_BasicsRepository
.
GetList
(
new
RB_Distributor_Basics_Extend
()
{
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
}).
FirstOrDefault
();
if
((
basicModel
?.
IsEnableFXGrade
??
2
)
==
1
)
{
var
disModel
=
distributor_InfoRepository
.
GetList
(
new
RB_Distributor_Info_Extend
()
{
UserId
=
UserId
,
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
}).
FirstOrDefault
();
if
(
disModel
==
null
)
{
Helper
.
LogHelper
.
Write
(
"该用户分销商等级不存在,UserId:"
+
UserId
);
}
if
(
demodel
.
DetailList
.
Where
(
x
=>
x
.
PresentFXGrade
>
0
).
Any
()
&&
disModel
!=
null
)
{
var
FXList
=
distributor_FXGradeRepository
.
GetList
(
new
RB_Distributor_FXGrade_Extend
()
{
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
});
var
VIPModel
=
FXList
.
Where
(
x
=>
x
.
IsGuest
==
3
).
FirstOrDefault
();
List
<
int
>
GradeList
=
new
List
<
int
>();
//等级列表
int
VIPMonths
=
0
;
//vip赠送月份
foreach
(
var
item
in
demodel
.
DetailList
)
{
if
(
item
.
PresentFXGrade
>
0
)
{
//有赠送粉象等级
GradeList
.
Add
(
item
.
PresentFXGrade
??
0
);
if
(
item
.
PresentFXGrade
==
(
VIPModel
?.
Id
??
0
))
{
VIPMonths
+=
(
item
.
PresentFXMonth
??
0
)
*
(
item
.
Number
??
0
);
}
}
}
//判断等级 取最高级别
int
MaxGradeId
=
0
;
int
MaxGrade
=
0
;
if
(
GradeList
.
Distinct
().
Count
()
>
1
)
{
//说明有两种级别 取最高的
foreach
(
var
item
in
GradeList
.
Distinct
())
{
var
fxmodel
=
FXList
.
Where
(
x
=>
x
.
Id
==
item
).
FirstOrDefault
();
MaxGrade
=
(
fxmodel
.
Grade
??
0
)
>
MaxGrade
?
(
fxmodel
.
Grade
??
0
)
:
MaxGrade
;
}
MaxGradeId
=
FXList
.
Where
(
x
=>
x
.
Grade
==
MaxGrade
).
FirstOrDefault
()?.
Id
??
0
;
}
else
{
MaxGradeId
=
GradeList
.
FirstOrDefault
();
var
fxmodel
=
FXList
.
Where
(
x
=>
x
.
Id
==
MaxGradeId
).
FirstOrDefault
();
MaxGrade
=
(
fxmodel
.
Grade
??
0
)
>
MaxGrade
?
(
fxmodel
.
Grade
??
0
)
:
MaxGrade
;
}
var
oldGrade
=
FXList
.
Where
(
x
=>
x
.
Id
==
disModel
.
FXGradeId
).
FirstOrDefault
()?.
Grade
??
0
;
try
{
bool
UpdateGrade
=
false
;
if
(
MaxGradeId
>
0
&&
MaxGrade
>=
oldGrade
&&
MaxGradeId
==
(
VIPModel
?.
Id
??
0
))
{
UpdateGrade
=
true
;
string
MaxGradeName
=
FXList
.
Where
(
x
=>
x
.
Id
==
MaxGradeId
).
FirstOrDefault
()?.
GradeName
??
""
;
//vip
var
VipExpiryDate
=
DateTime
.
Now
.
AddMonths
(
VIPMonths
);
if
(
VIPMonths
>=
1
)
{
VipExpiryDate
=
Convert
.
ToDateTime
(
VipExpiryDate
.
AddDays
(-
1
).
ToString
(
"yyyy-MM-dd 23:59:59"
));
}
if
(
MaxGrade
==
oldGrade
&&
disModel
.
VipExpiryDate
.
HasValue
)
{
if
(
disModel
.
VipExpiryDate
>
DateTime
.
Now
)
{
VipExpiryDate
=
disModel
.
VipExpiryDate
.
Value
.
AddMonths
(
VIPMonths
);
}
}
Dictionary
<
string
,
object
>
keyValues1
=
new
Dictionary
<
string
,
object
>
{
{
nameof
(
RB_Distributor_Info_Extend
.
FXGradeId
),
MaxGradeId
},
{
nameof
(
RB_Distributor_Info_Extend
.
VipExpiryDate
),
VipExpiryDate
}
};
List
<
WhereHelper
>
wheres1
=
new
List
<
WhereHelper
>()
{
new
WhereHelper
(){
FiledName
=
nameof
(
RB_Distributor_Info_Extend
.
Id
),
FiledValue
=
disModel
.
Id
,
OperatorEnum
=
OperatorEnum
.
Equal
}
};
bool
gflag
=
distributor_InfoRepository
.
Update
(
keyValues1
,
wheres1
);
if
(
gflag
)
{
//新增vip赠送记录表
Random
R1
=
new
Random
();
int
Rstr1
=
R1
.
Next
(
111
,
999
);
string
OrderNo1
=
DateTime
.
Now
.
ToString
(
"yyyyMMddHHmmssfff"
)
+
Rstr1
;
vip_BuyRepository
.
Insert
(
new
Mall
.
Model
.
Entity
.
User
.
RB_Vip_Buy
()
{
CreateDate
=
DateTime
.
Now
,
ExpiryDate
=
VipExpiryDate
,
GradeId
=
MaxGradeId
,
GradeName
=
MaxGradeName
,
Id
=
0
,
MallBaseId
=
demodel
.
MallBaseId
,
MerchantsNo
=
""
,
Money
=
0
,
OrderNo
=
OrderNo1
,
PayState
=
1
,
PayTime
=
null
,
PayWay
=
1
,
Remark
=
"下单赠送,订单号:"
+
demodel
.
OrderNo
+
"("
+
OrderId
+
")"
,
Status
=
0
,
TenantId
=
demodel
.
TenantId
,
UserId
=
UserId
});
}
}
else
if
(
MaxGradeId
>
0
&&
MaxGrade
>
oldGrade
)
{
UpdateGrade
=
true
;
string
MaxGradeName
=
FXList
.
Where
(
x
=>
x
.
Id
==
MaxGradeId
).
FirstOrDefault
()?.
GradeName
??
""
;
//比vip高级
Dictionary
<
string
,
object
>
keyValues1
=
new
Dictionary
<
string
,
object
>
{
{
nameof
(
RB_Distributor_Info_Extend
.
FXGradeId
),
MaxGradeId
}
};
List
<
WhereHelper
>
wheres1
=
new
List
<
WhereHelper
>()
{
new
WhereHelper
(){
FiledName
=
nameof
(
RB_Distributor_Info_Extend
.
Id
),
FiledValue
=
disModel
.
Id
,
OperatorEnum
=
OperatorEnum
.
Equal
}
};
bool
gflag
=
distributor_InfoRepository
.
Update
(
keyValues1
,
wheres1
);
if
(
gflag
)
{
//新增vip赠送记录表
Random
R1
=
new
Random
();
int
Rstr1
=
R1
.
Next
(
111
,
999
);
string
OrderNo1
=
DateTime
.
Now
.
ToString
(
"yyyyMMddHHmmssfff"
)
+
Rstr1
;
vip_BuyRepository
.
Insert
(
new
Mall
.
Model
.
Entity
.
User
.
RB_Vip_Buy
()
{
CreateDate
=
DateTime
.
Now
,
ExpiryDate
=
null
,
GradeId
=
MaxGradeId
,
GradeName
=
MaxGradeName
,
Id
=
0
,
MallBaseId
=
demodel
.
MallBaseId
,
MerchantsNo
=
""
,
Money
=
0
,
OrderNo
=
OrderNo1
,
PayState
=
1
,
PayTime
=
null
,
PayWay
=
1
,
Remark
=
"下单赠送,订单号:"
+
demodel
.
OrderNo
+
"("
+
OrderId
+
")"
,
Status
=
0
,
TenantId
=
demodel
.
TenantId
,
UserId
=
UserId
});
}
}
if
(
UpdateGrade
)
{
new
UserCommonModule
().
FXAutoUpgradeUserDistributorGrade
(
UserId
,
demodel
.
TenantId
,
demodel
.
MallBaseId
);
}
}
catch
(
Exception
ex
)
{
Helper
.
LogHelper
.
Write
(
"InsertPresentFXGrade赠送粉象分销等级失败,OrderId:"
+
OrderId
+
" Msg:"
+
ex
.
Message
);
}
}
}
}
#
endregion
#
region
售后时间到了发放佣金
...
...
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