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
fedbd32b
Commit
fedbd32b
authored
Sep 29, 2020
by
liudong1993
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
课程下单
parent
0dfbe62a
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
1061 additions
and
9 deletions
+1061
-9
RB_Goods_Order.cs
Mall.Model/Entity/Product/RB_Goods_Order.cs
+5
-1
RB_Goods_OrderDetail.cs
Mall.Model/Entity/Product/RB_Goods_OrderDetail.cs
+4
-0
OrderModule_Part.cs
Mall.Module.Product/OrderModule_Part.cs
+985
-7
AppletOrderController.cs
Mall.WebApi/Controllers/Product/AppletOrderController.cs
+67
-1
No files found.
Mall.Model/Entity/Product/RB_Goods_Order.cs
View file @
fedbd32b
...
@@ -309,12 +309,16 @@ namespace Mall.Model.Entity.Product
...
@@ -309,12 +309,16 @@ namespace Mall.Model.Entity.Product
/// </summary>
/// </summary>
public
int
?
SmallShopsId
{
get
;
set
;
}
public
int
?
SmallShopsId
{
get
;
set
;
}
/// <summary>
/// <summary>
/// 订单分类 0正常订单 1司导订单
/// 订单分类 0正常订单 1司导订单
2教育订单
/// </summary>
/// </summary>
public
int
OrderClassify
{
get
;
set
;
}
public
int
OrderClassify
{
get
;
set
;
}
/// <summary>
/// <summary>
/// 目的地(司导订单)
/// 目的地(司导订单)
/// </summary>
/// </summary>
public
string
DestinationAddress
{
get
;
set
;
}
public
string
DestinationAddress
{
get
;
set
;
}
/// <summary>
/// 课程卡抵扣金额
/// </summary>
public
decimal
?
EducationMoney
{
get
;
set
;
}
}
}
}
}
Mall.Model/Entity/Product/RB_Goods_OrderDetail.cs
View file @
fedbd32b
...
@@ -345,5 +345,9 @@ namespace Mall.Model.Entity.Product
...
@@ -345,5 +345,9 @@ namespace Mall.Model.Entity.Product
/// 评论返积分
/// 评论返积分
/// </summary>
/// </summary>
public
int
CommentGiveIntegral
{
get
;
set
;
}
public
int
CommentGiveIntegral
{
get
;
set
;
}
/// <summary>
/// 使用课程卡id
/// </summary>
public
int
?
EducationCouponId
{
get
;
set
;
}
}
}
}
}
Mall.Module.Product/OrderModule_Part.cs
View file @
fedbd32b
...
@@ -12,12 +12,14 @@ using Mall.Common.Plugin;
...
@@ -12,12 +12,14 @@ using Mall.Common.Plugin;
using
Mall.Model.Entity.Finance
;
using
Mall.Model.Entity.Finance
;
using
Mall.Model.Entity.Product
;
using
Mall.Model.Entity.Product
;
using
Mall.Model.Extend.BaseSetUp
;
using
Mall.Model.Extend.BaseSetUp
;
using
Mall.Model.Extend.Education
;
using
Mall.Model.Extend.Finance
;
using
Mall.Model.Extend.Finance
;
using
Mall.Model.Extend.Product
;
using
Mall.Model.Extend.Product
;
using
Mall.Model.Extend.User
;
using
Mall.Model.Extend.User
;
using
Mall.Module.User
;
using
Mall.Module.User
;
using
Mall.Repository
;
using
Mall.Repository
;
using
Mall.Repository.BaseSetUp
;
using
Mall.Repository.BaseSetUp
;
using
Mall.Repository.Education
;
using
Mall.Repository.Finance
;
using
Mall.Repository.Finance
;
using
Mall.Repository.GuideCar
;
using
Mall.Repository.GuideCar
;
using
Mall.Repository.MarketingCenter
;
using
Mall.Repository.MarketingCenter
;
...
@@ -38,6 +40,25 @@ namespace Mall.Module.Product
...
@@ -38,6 +40,25 @@ namespace Mall.Module.Product
/// </summary>
/// </summary>
public
partial
class
OrderModule
public
partial
class
OrderModule
{
{
/// <summary>
/// 用户课程卡
/// </summary>
private
RB_Education_MemberCouponRepository
education_MemberCouponRepository
=
new
RB_Education_MemberCouponRepository
();
/// <summary>
/// 课程卡实体
/// </summary>
private
RB_Education_CouponRepository
education_CouponRepository
=
new
RB_Education_CouponRepository
();
/// <summary>
/// 课程卡适配
/// </summary>
private
RB_Education_CouponProductRepository
education_CouponProductRepository
=
new
RB_Education_CouponProductRepository
();
/// <summary>
/// 课程卡使用
/// </summary>
private
RB_Education_MemberUseCouponRepository
education_MemberUseCouponRepository
=
new
RB_Education_MemberUseCouponRepository
();
/// <summary>
/// <summary>
/// 获取小程序结算页面详情
/// 获取小程序结算页面详情
/// </summary>
/// </summary>
...
@@ -68,6 +89,8 @@ namespace Mall.Module.Product
...
@@ -68,6 +89,8 @@ namespace Mall.Module.Product
decimal
Total_integral_price
=
0
;
//总积分金额
decimal
Total_integral_price
=
0
;
//总积分金额
int
Total_use_integral
=
0
;
//总积分
int
Total_use_integral
=
0
;
//总积分
decimal
CouponsMoney
=
0
;
//优惠总金额
decimal
CouponsMoney
=
0
;
//优惠总金额
decimal
EducationMoney
=
0
;
//课程卡抵扣金额
int
EducationNum
=
0
;
//课程卡抵扣数量
bool
IsPointsDeduction
=
false
;
//是否有商品可使用积分抵扣
bool
IsPointsDeduction
=
false
;
//是否有商品可使用积分抵扣
List
<
object
>
goods_list
=
new
List
<
object
>();
List
<
object
>
goods_list
=
new
List
<
object
>();
...
@@ -119,8 +142,46 @@ namespace Mall.Module.Product
...
@@ -119,8 +142,46 @@ namespace Mall.Module.Product
}
}
}
}
#
endregion
#
endregion
#
region
课程卡初始化
List
<
RB_Education_MemberCoupon_Extend
>
eList
=
new
List
<
RB_Education_MemberCoupon_Extend
>();
List
<
RB_Education_Coupon_Extend
>
deList
=
new
List
<
RB_Education_Coupon_Extend
>();
List
<
RB_Education_CouponProduct_Extend
>
edcpList
=
new
List
<
RB_Education_CouponProduct_Extend
>();
if
(
demodel
.
Use_Education_Id
>
0
)
{
if
(
demodel
.
User_Coupon_Id
>
0
)
{
return
ApiResult
.
Failed
(
"课程卡与优惠券不能同时使用"
);
}
if
(
demodel
.
Use_Integral
>
0
)
{
return
ApiResult
.
Failed
(
"课程卡与积分抵扣不能同时使用"
);
}
eList
=
education_MemberCouponRepository
.
GetList
(
new
RB_Education_MemberCoupon_Extend
()
{
Ids
=
(
demodel
.
Use_Education_Id
??
0
).
ToString
(),
UserId
=
umodel
.
Id
,
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
});
if
(
eList
.
Any
())
{
var
educationModel
=
eList
.
FirstOrDefault
();
if
(
educationModel
.
HeXiao
<=
educationModel
.
UseHeXiao
)
{
return
ApiResult
.
Failed
(
"课程卡剩余次数不足"
);
}
string
cIds
=
string
.
Join
(
","
,
eList
.
Select
(
x
=>
x
.
CouponId
).
Distinct
());
deList
=
education_CouponRepository
.
GetDiscountCouponList
(
new
RB_Education_Coupon_Extend
()
{
CouponIds
=
cIds
,
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
},
true
);
edcpList
=
education_CouponProductRepository
.
GetListByDiscountCouponIds
(
new
Model
.
Entity
.
Education
.
RB_Education_Coupon
()
{
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
},
cIds
,
true
);
if
(
deList
.
Any
())
{
foreach
(
var
item
in
eList
)
{
if
(
item
.
CouponId
>
0
)
{
if
(!
deList
.
Where
(
x
=>
x
.
ID
==
item
.
CouponId
).
Any
())
{
return
ApiResult
.
Failed
(
"课程卡不存在,请核实后再试"
);
}
}
}
}
}
}
#
endregion
List
<
RB_Goods_CouponModel
>
GoodsCouponList
=
new
List
<
RB_Goods_CouponModel
>();
//商品优惠卷 价格(每个商品优惠的价格)
List
<
RB_Goods_CouponModel
>
GoodsCouponList
=
new
List
<
RB_Goods_CouponModel
>();
//商品优惠卷 价格(每个商品优惠的价格)
List
<
int
>
YFCategoryList
=
new
List
<
int
>();
//全局适配 分类
#
region
微店价格
#
region
微店价格
RB_SmallShops_Info_Extend
smallModel
=
new
RB_SmallShops_Info_Extend
();
RB_SmallShops_Info_Extend
smallModel
=
new
RB_SmallShops_Info_Extend
();
...
@@ -139,6 +200,10 @@ namespace Mall.Module.Product
...
@@ -139,6 +200,10 @@ namespace Mall.Module.Product
{
{
continue
;
continue
;
}
}
if
(
gmodel
.
GoodsClassify
!=
2
)
{
return
ApiResult
.
Failed
(
"有非教育类商品"
);
}
var
categoryList
=
clist
.
Where
(
x
=>
x
.
GoodsId
==
item
.
GoodsId
).
ToList
();
var
categoryList
=
clist
.
Where
(
x
=>
x
.
GoodsId
==
item
.
GoodsId
).
ToList
();
#
region
图片
#
region
图片
...
@@ -324,7 +389,6 @@ namespace Mall.Module.Product
...
@@ -324,7 +389,6 @@ namespace Mall.Module.Product
#
endregion
#
endregion
#
region
优惠券
#
region
优惠券
//decimal CouponsMoney = 0;
if
(
demodel
.
User_Coupon_Id
>
0
)
if
(
demodel
.
User_Coupon_Id
>
0
)
{
{
var
ccmodel
=
cList
.
Where
(
x
=>
x
.
Id
==
demodel
.
User_Coupon_Id
).
FirstOrDefault
();
var
ccmodel
=
cList
.
Where
(
x
=>
x
.
Id
==
demodel
.
User_Coupon_Id
).
FirstOrDefault
();
...
@@ -380,6 +444,69 @@ namespace Mall.Module.Product
...
@@ -380,6 +444,69 @@ namespace Mall.Module.Product
}
}
#
endregion
#
endregion
#
region
课程卡
if
(
demodel
.
Use_Education_Id
>
0
)
{
var
ccmodel
=
eList
.
Where
(
x
=>
x
.
Id
==
demodel
.
Use_Education_Id
).
FirstOrDefault
();
string
couponItem
=
(
ccmodel
?.
CouponId
??
0
).
ToString
();
if
(!
string
.
IsNullOrEmpty
(
couponItem
))
{
var
dcModel
=
deList
.
Where
(
x
=>
x
.
ID
==
Convert
.
ToInt32
(
couponItem
)).
FirstOrDefault
();
if
(
dcModel
==
null
)
{
return
ApiResult
.
Failed
(
"优惠卷不存在,亲核实后再试"
);
}
if
(
dcModel
.
UseType
==
Common
.
Enum
.
MarketingCenter
.
UseTypeEnum
.
Category
)
//指定分类
{
var
categoryList1
=
dcpList
.
Where
(
x
=>
x
.
DiscountCouponId
==
Convert
.
ToInt32
(
couponItem
)
&&
x
.
DiscountCouponType
==
Common
.
Enum
.
MarketingCenter
.
UseTypeEnum
.
Category
).
Select
(
x
=>
x
.
ProductId
).
ToList
();
//获取特殊优惠卷
if
(
categoryList
.
Select
(
x
=>
x
.
Id
).
Where
(
x
=>
categoryList1
.
Contains
(
x
)).
Any
())
{
if
(
dcModel
.
MaxDiscountsPrice
==
0
||
dcModel
.
MaxDiscountsPrice
>=
(
item
.
Final_Price
??
0
))
{
GoodsCouponList
.
Add
(
new
RB_Goods_CouponModel
()
{
GoodsId
=
item
.
GoodsId
??
0
,
Key
=
item
.
SpecificationSort
,
TotalMoney
=
item
.
Final_Price
??
0
,
CouponMoney
=
0
});
}
}
}
else
if
(
dcModel
.
UseType
==
Common
.
Enum
.
MarketingCenter
.
UseTypeEnum
.
Product
)
//指定商品
{
var
goodsList
=
dcpList
.
Where
(
x
=>
x
.
DiscountCouponId
==
Convert
.
ToInt32
(
couponItem
)
&&
x
.
DiscountCouponType
==
Common
.
Enum
.
MarketingCenter
.
UseTypeEnum
.
Product
).
Select
(
x
=>
x
.
ProductId
).
ToList
();
//获取特殊优惠卷
if
(
goodsList
.
Contains
(
item
.
GoodsId
??
0
))
{
if
(
dcModel
.
MaxDiscountsPrice
==
0
||
dcModel
.
MaxDiscountsPrice
>=
(
item
.
Final_Price
??
0
))
{
GoodsCouponList
.
Add
(
new
RB_Goods_CouponModel
()
{
GoodsId
=
item
.
GoodsId
??
0
,
Key
=
item
.
SpecificationSort
,
TotalMoney
=
item
.
Final_Price
??
0
,
CouponMoney
=
0
});
}
}
}
else
{
if
(
dcModel
.
MaxDiscountsPrice
==
0
||
dcModel
.
MaxDiscountsPrice
>=
(
item
.
Final_Price
??
0
))
{
GoodsCouponList
.
Add
(
new
RB_Goods_CouponModel
()
{
GoodsId
=
item
.
GoodsId
??
0
,
Key
=
item
.
SpecificationSort
,
TotalMoney
=
item
.
Final_Price
??
0
,
CouponMoney
=
0
});
}
}
}
}
#
endregion
Total_integral_price
+=
(
item
.
IntegralMoney
??
0
);
Total_integral_price
+=
(
item
.
IntegralMoney
??
0
);
Total_use_integral
+=
(
item
.
IntegralNumber
??
0
);
Total_use_integral
+=
(
item
.
IntegralNumber
??
0
);
TotalGoodsMoney
+=
item
.
Final_Price
??
0
;
TotalGoodsMoney
+=
item
.
Final_Price
??
0
;
...
@@ -439,6 +566,10 @@ namespace Mall.Module.Product
...
@@ -439,6 +566,10 @@ namespace Mall.Module.Product
}
}
}
}
}
}
if
(
demodel
.
Use_Education_Id
>
0
&&
GoodsCouponList
.
Any
())
{
var
ccmodel
=
eList
.
Where
(
x
=>
x
.
Id
==
demodel
.
Use_Education_Id
).
FirstOrDefault
();
GoodsCouponList
=
GoodsCouponList
.
OrderBy
(
x
=>
x
.
TotalMoney
).
Take
(
ccmodel
.
HeXiao
-
ccmodel
.
UseHeXiao
).
ToList
();
}
//赋值
//赋值
foreach
(
var
item
in
demodel
.
DetailList
)
foreach
(
var
item
in
demodel
.
DetailList
)
{
{
...
@@ -449,11 +580,24 @@ namespace Mall.Module.Product
...
@@ -449,11 +580,24 @@ namespace Mall.Module.Product
}
}
decimal
couponMoney
=
0
;
//优惠金额
decimal
couponMoney
=
0
;
//优惠金额
var
couponModel
=
GoodsCouponList
.
Where
(
x
=>
x
.
GoodsId
==
item
.
GoodsId
).
FirstOrDefault
();
if
(
demodel
.
User_Coupon_Id
>
0
)
if
(
couponModel
!=
null
)
{
{
couponMoney
=
couponModel
.
CouponMoney
;
var
couponModel
=
GoodsCouponList
.
Where
(
x
=>
x
.
GoodsId
==
item
.
GoodsId
).
FirstOrDefault
();
TotalGoodsMoney
-=
couponMoney
;
//总价格需减去优惠券金额
if
(
couponModel
!=
null
)
{
couponMoney
=
couponModel
.
CouponMoney
;
TotalGoodsMoney
-=
couponMoney
;
//总价格需减去优惠券金额
}
}
bool
IsUseEducation
=
false
;
if
(
demodel
.
Use_Education_Id
>
0
)
{
var
couponModel
=
GoodsCouponList
.
Where
(
x
=>
x
.
GoodsId
==
item
.
GoodsId
).
FirstOrDefault
();
if
(
couponModel
!=
null
)
{
EducationNum
+=
1
;
EducationMoney
+=
couponModel
.
TotalMoney
;
TotalGoodsMoney
-=
couponModel
.
TotalMoney
;
//总价格需减去课程卡金额
IsUseEducation
=
true
;
}
}
}
goods_list
.
Add
(
new
goods_list
.
Add
(
new
...
@@ -481,6 +625,7 @@ namespace Mall.Module.Product
...
@@ -481,6 +625,7 @@ namespace Mall.Module.Product
integral_price
=
demodel
.
Use_Integral
==
1
?
item
.
IntegralMoney
:
0
,
//积分抵扣金额
integral_price
=
demodel
.
Use_Integral
==
1
?
item
.
IntegralMoney
:
0
,
//积分抵扣金额
use_integral
=
demodel
.
Use_Integral
==
1
?
item
.
IntegralNumber
:
0
,
use_integral
=
demodel
.
Use_Integral
==
1
?
item
.
IntegralNumber
:
0
,
couponMoney
,
couponMoney
,
is_use_education
=
IsUseEducation
,
name
=
gmodel
.
Name
,
name
=
gmodel
.
Name
,
cover_pic
=
gmodel
.
CoverImage
,
cover_pic
=
gmodel
.
CoverImage
,
detail
=
gmodel
.
GoodsDetails
,
detail
=
gmodel
.
GoodsDetails
,
...
@@ -492,7 +637,8 @@ namespace Mall.Module.Product
...
@@ -492,7 +637,8 @@ namespace Mall.Module.Product
share_commission_third
=
x
.
ThreeCommission
,
share_commission_third
=
x
.
ThreeCommission
,
level
=
x
.
DistributorGrade
level
=
x
.
DistributorGrade
}),
}),
attr_setting_type
=
gmodel
.
SeparateDistributionType
attr_setting_type
=
gmodel
.
SeparateDistributionType
,
course_score
=
gmodel
.
CourseScore
},
},
discounts
=
item
.
Discounts
,
discounts
=
item
.
Discounts
,
member_discount
=
((
item
.
Unit_Price
??
0
)
*
(
item
.
Number
??
0
))
-
(
item
.
MemberPrice
*
(
item
.
Number
??
0
)),
member_discount
=
((
item
.
Unit_Price
??
0
)
*
(
item
.
Number
??
0
))
-
(
item
.
MemberPrice
*
(
item
.
Number
??
0
)),
...
@@ -549,6 +695,13 @@ namespace Mall.Module.Product
...
@@ -549,6 +695,13 @@ namespace Mall.Module.Product
user_coupon_id
=
demodel
.
User_Coupon_Id
??
0
user_coupon_id
=
demodel
.
User_Coupon_Id
??
0
},
},
integral
=
IntegralObj
,
integral
=
IntegralObj
,
education
=
new
{
enabled
=
true
,
use
=
demodel
.
Use_Education_Id
>
0
?
true
:
false
,
use_education_id
=
demodel
.
Use_Education_Id
??
0
,
education_money
=
EducationMoney
,
education_num
=
EducationNum
//抵扣几套课程
},
total_price
=
TotalGoodsMoney
,
total_price
=
TotalGoodsMoney
,
});
});
...
@@ -579,5 +732,830 @@ namespace Mall.Module.Product
...
@@ -579,5 +732,830 @@ namespace Mall.Module.Product
#
endregion
#
endregion
return
ApiResult
.
Success
(
""
,
Robj
);
return
ApiResult
.
Success
(
""
,
Robj
);
}
}
/// <summary>
/// 网课下单
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public
ApiResult
SetAppletCourseOrderInfo
(
RB_Goods_Order_Extend
demodel
)
{
var
umodel
=
member_UserRepository
.
GetEntity
(
demodel
.
UserId
);
if
(
umodel
==
null
)
{
return
ApiResult
.
Failed
(
"用户不存在"
);
}
if
(
demodel
.
SmallShopsId
==
0
)
{
demodel
.
SmallShopsId
=
umodel
.
SmallShopId
;
}
if
(
umodel
.
Blacklist
==
1
)
{
return
ApiResult
.
Failed
(
"您在黑名单状态无法下单,请联系管理员核实"
);
}
decimal
TotalMoney
=
0
;
string
GoodsIds
=
""
;
int
TotalIntegralNumber
=
0
;
//总使用积分
decimal
TotalIntegralMoney
=
0
;
//总使用积分抵扣金额
List
<
RB_Goods_CouponModel
>
GoodsCouponList
=
new
List
<
RB_Goods_CouponModel
>();
//商品优惠卷 价格(每个商品优惠的价格)
decimal
CouponsMoney
=
0
;
//优惠卷验证
decimal
EducationMoney
=
0
;
//课程卡抵扣金额
int
EducationNum
=
0
;
//课程卡抵扣数量
#
region
优惠卷初始化
List
<
RB_Member_DiscountCoupon_Extend
>
cList
=
new
List
<
RB_Member_DiscountCoupon_Extend
>();
List
<
Model
.
Extend
.
MarketingCenter
.
RB_DiscountCoupon_Extend
>
dcList
=
new
List
<
Model
.
Extend
.
MarketingCenter
.
RB_DiscountCoupon_Extend
>();
List
<
Model
.
Extend
.
MarketingCenter
.
RB_DiscountCoupon_Product_Extend
>
dcpList
=
new
List
<
Model
.
Extend
.
MarketingCenter
.
RB_DiscountCoupon_Product_Extend
>();
demodel
.
CouponsIds
=
""
;
bool
IsCommissionCoupons
=
true
;
// 是否通用优惠券 2020-08-13 ld
if
(
demodel
.
User_Coupon_Id
>
0
)
{
demodel
.
CouponsIds
=
demodel
.
User_Coupon_Id
.
ToString
();
if
(!
string
.
IsNullOrEmpty
(
demodel
.
CouponsIds
))
{
cList
=
member_CouponRepository
.
GetList
(
new
RB_Member_DiscountCoupon_Extend
()
{
UseState
=
0
,
Ids
=
demodel
.
CouponsIds
,
UserId
=
umodel
.
Id
,
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
});
if
(
cList
.
Any
())
{
string
cIds
=
string
.
Join
(
","
,
cList
.
Select
(
x
=>
x
.
CouponId
).
Distinct
());
dcList
=
discountCouponRepository
.
GetDiscountCouponList
(
new
Model
.
Extend
.
MarketingCenter
.
RB_DiscountCoupon_Extend
()
{
CouponIds
=
cIds
,
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
},
true
);
dcpList
=
discountCoupon_ProductRepository
.
GetListByDiscountCouponIds
(
new
Model
.
Entity
.
MarketingCenter
.
RB_DiscountCoupon
()
{
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
},
cIds
,
true
);
if
(
dcList
.
Any
())
{
foreach
(
var
item
in
cList
)
{
if
(
item
.
CouponId
>
0
)
{
if
(!
dcList
.
Where
(
x
=>
x
.
ID
==
item
.
CouponId
).
Any
())
{
return
ApiResult
.
Failed
(
"优惠券不存在,请核实后再试"
);
}
}
}
if
(
dcList
.
Where
(
x
=>
x
.
SmallShopId
>
0
).
Any
())
{
IsCommissionCoupons
=
false
;
}
}
}
}
}
#
endregion
#
region
课程卡初始化
List
<
RB_Education_MemberCoupon_Extend
>
eList
=
new
List
<
RB_Education_MemberCoupon_Extend
>();
List
<
RB_Education_Coupon_Extend
>
deList
=
new
List
<
RB_Education_Coupon_Extend
>();
List
<
RB_Education_CouponProduct_Extend
>
edcpList
=
new
List
<
RB_Education_CouponProduct_Extend
>();
if
(
demodel
.
Use_Education_Id
>
0
)
{
if
(
demodel
.
User_Coupon_Id
>
0
)
{
return
ApiResult
.
Failed
(
"课程卡与优惠券不能同时使用"
);
}
if
(
demodel
.
Use_Integral
>
0
)
{
return
ApiResult
.
Failed
(
"课程卡与积分抵扣不能同时使用"
);
}
eList
=
education_MemberCouponRepository
.
GetList
(
new
RB_Education_MemberCoupon_Extend
()
{
Ids
=
(
demodel
.
Use_Education_Id
??
0
).
ToString
(),
UserId
=
umodel
.
Id
,
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
});
if
(
eList
.
Any
())
{
var
educationModel
=
eList
.
FirstOrDefault
();
if
(
educationModel
.
HeXiao
<=
educationModel
.
UseHeXiao
)
{
return
ApiResult
.
Failed
(
"课程卡剩余次数不足"
);
}
string
cIds
=
string
.
Join
(
","
,
eList
.
Select
(
x
=>
x
.
CouponId
).
Distinct
());
deList
=
education_CouponRepository
.
GetDiscountCouponList
(
new
RB_Education_Coupon_Extend
()
{
CouponIds
=
cIds
,
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
},
true
);
edcpList
=
education_CouponProductRepository
.
GetListByDiscountCouponIds
(
new
Model
.
Entity
.
Education
.
RB_Education_Coupon
()
{
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
},
cIds
,
true
);
if
(
deList
.
Any
())
{
foreach
(
var
item
in
eList
)
{
if
(
item
.
CouponId
>
0
)
{
if
(!
deList
.
Where
(
x
=>
x
.
ID
==
item
.
CouponId
).
Any
())
{
return
ApiResult
.
Failed
(
"课程卡不存在,请核实后再试"
);
}
}
}
}
}
}
#
endregion
if
(
demodel
.
DetailList
.
Any
())
{
//积分
Model
.
Entity
.
MarketingCenter
.
RB_Integral_Settings
integralModel
=
new
Model
.
Entity
.
MarketingCenter
.
RB_Integral_Settings
();
if
(
demodel
.
Use_Integral
==
1
&&
umodel
.
Integral
>
0
)
{
integralModel
=
integral_SettingsRepository
.
GetIntegralSettingsList
(
new
Model
.
Entity
.
MarketingCenter
.
RB_Integral_Settings
()
{
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
}).
FirstOrDefault
();
}
GoodsIds
=
string
.
Join
(
","
,
demodel
.
DetailList
.
Select
(
x
=>
x
.
GoodsId
));
var
gList
=
goodsRepository
.
GetList
(
new
RB_Goods_Extend
()
{
GoodsIds
=
GoodsIds
,
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
});
var
clist
=
goods_CategoryRepository
.
GetList
(
new
RB_Goods_Category_Extend
()
{
GoodsIds
=
GoodsIds
,
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
});
var
mpriceList
=
goods_MemberPriceRepository
.
GetList
(
new
RB_Goods_MemberPrice_Extend
()
{
GoodsIds
=
GoodsIds
,
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
});
#
region
微店价格
RB_SmallShops_Info_Extend
smallModel
=
new
RB_SmallShops_Info_Extend
();
List
<
RB_SmallShops_Price_Extend
>
smallPList
=
new
List
<
RB_SmallShops_Price_Extend
>();
if
(
demodel
.
SmallShopsId
>
0
)
{
smallModel
=
smallShops_InfoRepository
.
GetEntity
<
RB_SmallShops_Info_Extend
>(
demodel
.
SmallShopsId
);
smallPList
=
smallShops_PriceRepository
.
GetList
(
new
RB_SmallShops_Price_Extend
()
{
SmallShopsId
=
demodel
.
SmallShopsId
,
GoodsIds
=
GoodsIds
});
}
#
endregion
foreach
(
var
item
in
demodel
.
DetailList
)
{
var
gmodel
=
gList
.
Where
(
x
=>
x
.
Id
==
item
.
GoodsId
).
FirstOrDefault
();
if
(
gmodel
==
null
||
gmodel
.
GoodsStatus
!=
1
)
{
return
ApiResult
.
Failed
(
"有商品不存在或者商品已失效"
);
}
if
(
gmodel
.
GoodsClassify
!=
2
)
{
return
ApiResult
.
Failed
(
"有非网课类商品"
);
}
var
categoryList
=
clist
.
Where
(
x
=>
x
.
GoodsId
==
item
.
GoodsId
).
ToList
();
item
.
CommissionPrice
=
gmodel
.
Commission
;
// 粉象 返佣金额
item
.
CostMoney
=
(
gmodel
.
CostPrice
??
0
);
item
.
PresentFXGrade
=
gmodel
.
PresentFXGrade
??
0
;
//赠送粉象分销等级
item
.
PresentFXMonth
=
gmodel
.
PresentFXMonth
??
0
;
item
.
CategoryIdList
=
categoryList
.
Select
(
x
=>
x
.
CategoryId
??
0
).
ToList
();
#
region
规格
item
.
SmallShopsCostPrice
=
gmodel
.
SellingPrice
??
0
;
if
(
demodel
.
SmallShopsId
>
0
)
{
if
((
smallModel
.
UpPrice
??
0
)
>
0
||
smallPList
.
Where
(
x
=>
x
.
GoodsId
==
item
.
GoodsId
&&
x
.
UpPrice
>
0
).
Any
())
{
var
sspModel
=
smallPList
.
Where
(
x
=>
x
.
GoodsId
==
item
.
GoodsId
&&
x
.
SpecificationKey
==
""
).
FirstOrDefault
();
if
(
sspModel
!=
null
)
{
//单商品设置的
if
(
sspModel
.
PriceType
==
1
)
{
gmodel
.
SellingPrice
+=
Math
.
Ceiling
((
gmodel
.
SellingPrice
??
0
)
*
(
sspModel
.
UpPrice
??
0
)
/
100
);
}
else
if
(
sspModel
.
PriceType
==
2
)
{
gmodel
.
SellingPrice
+=
(
sspModel
.
UpPrice
??
0
);
}
}
else
{
if
((
smallModel
.
UpPrice
??
0
)
>
0
)
{
if
(
smallModel
.
PriceType
==
1
)
{
gmodel
.
SellingPrice
+=
Math
.
Ceiling
((
gmodel
.
SellingPrice
??
0
)
*
(
smallModel
.
UpPrice
??
0
)
/
100
);
}
else
if
(
smallModel
.
PriceType
==
2
)
{
gmodel
.
SellingPrice
+=
(
smallModel
.
UpPrice
??
0
);
}
}
}
}
}
#
endregion
#
region
会员价格
gmodel
.
MemberPrice
=
gmodel
.
SellingPrice
??
0
;
if
(
umodel
.
MemberGrade
>
0
)
{
if
(
gmodel
.
EnjoyMember
==
1
&&
gmodel
.
SeparateSetMember
==
1
)
{
gmodel
.
MemberPrice
=
mpriceList
.
Where
(
x
=>
x
.
GoodsId
==
item
.
GoodsId
&&
x
.
MemberGrade
==
umodel
.
MemberGrade
&&
x
.
SpecificationSort
==
item
.
SpecificationSort
).
FirstOrDefault
()?.
MemberPrice
??
0
;
item
.
IsMemberPrice
=
1
;
item
.
SmallShopsCostPrice
=
gmodel
.
MemberPrice
;
if
(
demodel
.
SmallShopsId
>
0
)
{
if
((
smallModel
.
UpPrice
??
0
)
>
0
||
smallPList
.
Where
(
x
=>
x
.
GoodsId
==
item
.
GoodsId
&&
x
.
UpPrice
>
0
).
Any
())
{
var
sspModel
=
smallPList
.
Where
(
x
=>
x
.
GoodsId
==
item
.
GoodsId
&&
x
.
SpecificationKey
==
item
.
SpecificationSort
).
FirstOrDefault
();
if
(
sspModel
!=
null
)
{
//单商品设置的
if
(
sspModel
.
PriceType
==
1
)
{
gmodel
.
MemberPrice
+=
Math
.
Ceiling
((
gmodel
.
MemberPrice
)
*
(
sspModel
.
UpPrice
??
0
)
/
100
);
}
else
if
(
sspModel
.
PriceType
==
2
)
{
gmodel
.
MemberPrice
+=
(
sspModel
.
UpPrice
??
0
);
}
}
else
{
if
((
smallModel
.
UpPrice
??
0
)
>
0
)
{
if
(
smallModel
.
PriceType
==
1
)
{
gmodel
.
MemberPrice
+=
Math
.
Ceiling
((
gmodel
.
MemberPrice
)
*
(
smallModel
.
UpPrice
??
0
)
/
100
);
}
else
if
(
smallModel
.
PriceType
==
2
)
{
gmodel
.
MemberPrice
+=
(
smallModel
.
UpPrice
??
0
);
}
}
}
}
}
}
else
{
//求会员等级折扣
var
gradeModel
=
member_GradeRepository
.
GetList
(
new
RB_Member_Grade_Extend
()
{
Grade
=
umodel
.
MemberGrade
,
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
}).
FirstOrDefault
();
gmodel
.
MemberPrice
=
Math
.
Round
((
gmodel
.
SellingPrice
??
0
)
*
(
gradeModel
?.
Discount
??
10
)
/
10
,
2
,
MidpointRounding
.
AwayFromZero
);
item
.
SmallShopsCostPrice
=
Math
.
Round
((
item
.
SmallShopsCostPrice
??
0
)
*
(
gradeModel
?.
Discount
??
10
)
/
10
,
2
,
MidpointRounding
.
AwayFromZero
);
item
.
DiscountRate
=
gradeModel
?.
Discount
??
10
;
}
}
if
(
umodel
.
MemberGrade
>
0
)
{
item
.
Final_Price
=
gmodel
.
MemberPrice
*
(
item
.
Number
??
0
);
}
else
{
item
.
Final_Price
=
(
gmodel
.
SellingPrice
??
0
)
*
(
item
.
Number
??
0
);
}
#
endregion
#
region
直播返佣
item
.
LiveCommission
=
0
;
item
.
LiveFinanceIds
=
""
;
if
(
gmodel
.
IsLiveGoods
==
1
)
{
item
.
LiveCommission
=
(
item
.
CommissionPrice
/
4
)
*
(
item
.
Number
??
0
);
}
#
endregion
item
.
SmallShopsCostPrice
=
(
item
.
SmallShopsCostPrice
??
0
)
*
(
item
.
Number
??
0
);
item
.
Unit_Price
=
gmodel
.
SellingPrice
??
0
;
item
.
Original_Price
=
(
item
.
Unit_Price
)
*
(
item
.
Number
);
#
region
积分
if
(
umodel
.
Integral
>
0
&&
gmodel
.
PointsDeduction
>
0
&&
integralModel
.
IntegralNum
>
0
)
{
decimal
SingleMaxMoney
=
0
,
MultMaxMoney
=
0
;
if
(
gmodel
.
PointsDeductionType
==
1
)
{
SingleMaxMoney
=
Math
.
Round
(
gmodel
.
MemberPrice
*
(
gmodel
.
PointsDeduction
??
0
)
/
100
,
2
,
MidpointRounding
.
AwayFromZero
);
MultMaxMoney
=
Math
.
Round
(
gmodel
.
MemberPrice
*
(
item
.
Number
??
0
)
*
(
gmodel
.
PointsDeduction
??
0
)
/
100
,
2
,
MidpointRounding
.
AwayFromZero
);
}
if
(
gmodel
.
IsMultipleDeduction
==
1
)
{
//可以多件商品可累计抵扣
if
(
gmodel
.
PointsDeductionType
==
1
)
{
int
MaxInterral
=
Convert
.
ToInt32
(
MultMaxMoney
*
integralModel
.
IntegralNum
);
//最多可抵扣积分
if
(
umodel
.
Integral
>
MaxInterral
)
{
item
.
IntegralNumber
=
MaxInterral
;
item
.
IntegralMoney
=
Math
.
Round
(
Convert
.
ToDecimal
(
MaxInterral
)
/
integralModel
.
IntegralNum
,
2
,
MidpointRounding
.
AwayFromZero
);
umodel
.
Integral
-=
MaxInterral
;
}
else
{
item
.
IntegralNumber
=
umodel
.
Integral
;
item
.
IntegralMoney
=
Math
.
Round
(
Convert
.
ToDecimal
(
umodel
.
Integral
??
0
)
/
integralModel
.
IntegralNum
,
2
,
MidpointRounding
.
AwayFromZero
);
umodel
.
Integral
=
0
;
}
}
else
{
int
MaxInterral
=
Convert
.
ToInt32
((
gmodel
.
PointsDeduction
??
0
)
*
integralModel
.
IntegralNum
*
(
item
.
Number
??
0
));
//最多可抵扣积分
if
(
umodel
.
Integral
>
MaxInterral
)
{
item
.
IntegralNumber
=
MaxInterral
;
item
.
IntegralMoney
=
Math
.
Round
(
Convert
.
ToDecimal
(
MaxInterral
)
/
integralModel
.
IntegralNum
,
2
,
MidpointRounding
.
AwayFromZero
);
umodel
.
Integral
-=
MaxInterral
;
}
else
{
item
.
IntegralNumber
=
umodel
.
Integral
;
item
.
IntegralMoney
=
Math
.
Round
(
Convert
.
ToDecimal
(
umodel
.
Integral
??
0
)
/
integralModel
.
IntegralNum
,
2
,
MidpointRounding
.
AwayFromZero
);
umodel
.
Integral
=
0
;
}
}
}
else
{
//单件商品
if
(
gmodel
.
PointsDeductionType
==
1
)
{
int
MaxInterral
=
Convert
.
ToInt32
(
SingleMaxMoney
*
integralModel
.
IntegralNum
);
//最多可抵扣积分
if
(
umodel
.
Integral
>
MaxInterral
)
{
item
.
IntegralNumber
=
MaxInterral
;
item
.
IntegralMoney
=
Math
.
Round
(
Convert
.
ToDecimal
(
MaxInterral
)
/
integralModel
.
IntegralNum
,
2
,
MidpointRounding
.
AwayFromZero
);
umodel
.
Integral
-=
MaxInterral
;
}
else
{
item
.
IntegralNumber
=
umodel
.
Integral
;
item
.
IntegralMoney
=
Math
.
Round
(
Convert
.
ToDecimal
(
umodel
.
Integral
??
0
)
/
integralModel
.
IntegralNum
,
2
,
MidpointRounding
.
AwayFromZero
);
umodel
.
Integral
=
0
;
}
}
else
{
int
MaxInterral
=
Convert
.
ToInt32
((
gmodel
.
PointsDeduction
??
0
)
*
integralModel
.
IntegralNum
);
//最多可抵扣积分
if
(
umodel
.
Integral
>
MaxInterral
)
{
item
.
IntegralNumber
=
MaxInterral
;
item
.
IntegralMoney
=
Math
.
Round
(
Convert
.
ToDecimal
(
MaxInterral
)
/
integralModel
.
IntegralNum
,
2
,
MidpointRounding
.
AwayFromZero
);
umodel
.
Integral
-=
MaxInterral
;
}
else
{
item
.
IntegralNumber
=
umodel
.
Integral
;
item
.
IntegralMoney
=
Math
.
Round
(
Convert
.
ToDecimal
(
umodel
.
Integral
??
0
)
/
integralModel
.
IntegralNum
,
2
,
MidpointRounding
.
AwayFromZero
);
umodel
.
Integral
=
0
;
}
}
}
}
if
(
demodel
.
Use_Integral
==
1
)
{
TotalIntegralNumber
+=
(
item
.
IntegralNumber
??
0
);
TotalIntegralMoney
+=
(
item
.
IntegralMoney
??
0
);
item
.
Final_Price
-=
(
item
.
IntegralMoney
??
0
);
item
.
SmallShopsCostPrice
-=
(
item
.
IntegralMoney
??
0
);
}
#
endregion
#
region
优惠券
if
(
demodel
.
User_Coupon_Id
>
0
)
{
var
ccmodel
=
cList
.
Where
(
x
=>
x
.
Id
==
demodel
.
User_Coupon_Id
).
FirstOrDefault
();
string
couponItem
=
(
ccmodel
?.
CouponId
??
0
).
ToString
();
if
(!
string
.
IsNullOrEmpty
(
couponItem
))
{
var
dcModel
=
dcList
.
Where
(
x
=>
x
.
ID
==
Convert
.
ToInt32
(
couponItem
)).
FirstOrDefault
();
if
(
dcModel
==
null
)
{
return
ApiResult
.
Failed
(
"优惠卷不存在,亲核实后再试"
);
}
dcModel
.
DiscountsPrice
=
dcModel
.
DiscountsPrice
==
0
?
10
:
dcModel
.
DiscountsPrice
;
if
(
dcModel
.
UseType
==
Common
.
Enum
.
MarketingCenter
.
UseTypeEnum
.
Category
)
//指定分类
{
var
categoryList1
=
dcpList
.
Where
(
x
=>
x
.
DiscountCouponId
==
Convert
.
ToInt32
(
couponItem
)
&&
x
.
DiscountCouponType
==
Common
.
Enum
.
MarketingCenter
.
UseTypeEnum
.
Category
).
Select
(
x
=>
x
.
ProductId
).
ToList
();
//获取特殊优惠卷
if
(
categoryList
.
Select
(
x
=>
x
.
Id
).
Where
(
x
=>
categoryList1
.
Contains
(
x
)).
Any
())
{
GoodsCouponList
.
Add
(
new
RB_Goods_CouponModel
()
{
GoodsId
=
item
.
GoodsId
??
0
,
Key
=
item
.
SpecificationSort
,
TotalMoney
=
item
.
Final_Price
??
0
,
CouponMoney
=
0
});
}
}
else
if
(
dcModel
.
UseType
==
Common
.
Enum
.
MarketingCenter
.
UseTypeEnum
.
Product
)
//指定商品
{
var
goodsList
=
dcpList
.
Where
(
x
=>
x
.
DiscountCouponId
==
Convert
.
ToInt32
(
couponItem
)
&&
x
.
DiscountCouponType
==
Common
.
Enum
.
MarketingCenter
.
UseTypeEnum
.
Product
).
Select
(
x
=>
x
.
ProductId
).
ToList
();
//获取特殊优惠卷
if
(
goodsList
.
Contains
(
item
.
GoodsId
??
0
))
{
GoodsCouponList
.
Add
(
new
RB_Goods_CouponModel
()
{
GoodsId
=
item
.
GoodsId
??
0
,
Key
=
item
.
SpecificationSort
,
TotalMoney
=
item
.
Final_Price
??
0
,
CouponMoney
=
0
});
}
}
else
{
GoodsCouponList
.
Add
(
new
RB_Goods_CouponModel
()
{
GoodsId
=
item
.
GoodsId
??
0
,
Key
=
item
.
SpecificationSort
,
TotalMoney
=
item
.
Final_Price
??
0
,
CouponMoney
=
0
});
}
}
}
#
endregion
#
region
课程卡
if
(
demodel
.
Use_Education_Id
>
0
)
{
var
ccmodel
=
eList
.
Where
(
x
=>
x
.
Id
==
demodel
.
Use_Education_Id
).
FirstOrDefault
();
string
couponItem
=
(
ccmodel
?.
CouponId
??
0
).
ToString
();
if
(!
string
.
IsNullOrEmpty
(
couponItem
))
{
var
dcModel
=
deList
.
Where
(
x
=>
x
.
ID
==
Convert
.
ToInt32
(
couponItem
)).
FirstOrDefault
();
if
(
dcModel
==
null
)
{
return
ApiResult
.
Failed
(
"优惠卷不存在,亲核实后再试"
);
}
if
(
dcModel
.
UseType
==
Common
.
Enum
.
MarketingCenter
.
UseTypeEnum
.
Category
)
//指定分类
{
var
categoryList1
=
dcpList
.
Where
(
x
=>
x
.
DiscountCouponId
==
Convert
.
ToInt32
(
couponItem
)
&&
x
.
DiscountCouponType
==
Common
.
Enum
.
MarketingCenter
.
UseTypeEnum
.
Category
).
Select
(
x
=>
x
.
ProductId
).
ToList
();
//获取特殊优惠卷
if
(
categoryList
.
Select
(
x
=>
x
.
Id
).
Where
(
x
=>
categoryList1
.
Contains
(
x
)).
Any
())
{
if
(
dcModel
.
MaxDiscountsPrice
==
0
||
dcModel
.
MaxDiscountsPrice
>=
(
item
.
Final_Price
??
0
))
{
GoodsCouponList
.
Add
(
new
RB_Goods_CouponModel
()
{
GoodsId
=
item
.
GoodsId
??
0
,
Key
=
item
.
SpecificationSort
,
TotalMoney
=
item
.
Final_Price
??
0
,
CouponMoney
=
0
});
}
}
}
else
if
(
dcModel
.
UseType
==
Common
.
Enum
.
MarketingCenter
.
UseTypeEnum
.
Product
)
//指定商品
{
var
goodsList
=
dcpList
.
Where
(
x
=>
x
.
DiscountCouponId
==
Convert
.
ToInt32
(
couponItem
)
&&
x
.
DiscountCouponType
==
Common
.
Enum
.
MarketingCenter
.
UseTypeEnum
.
Product
).
Select
(
x
=>
x
.
ProductId
).
ToList
();
//获取特殊优惠卷
if
(
goodsList
.
Contains
(
item
.
GoodsId
??
0
))
{
if
(
dcModel
.
MaxDiscountsPrice
==
0
||
dcModel
.
MaxDiscountsPrice
>=
(
item
.
Final_Price
??
0
))
{
GoodsCouponList
.
Add
(
new
RB_Goods_CouponModel
()
{
GoodsId
=
item
.
GoodsId
??
0
,
Key
=
item
.
SpecificationSort
,
TotalMoney
=
item
.
Final_Price
??
0
,
CouponMoney
=
0
});
}
}
}
else
{
if
(
dcModel
.
MaxDiscountsPrice
==
0
||
dcModel
.
MaxDiscountsPrice
>=
(
item
.
Final_Price
??
0
))
{
GoodsCouponList
.
Add
(
new
RB_Goods_CouponModel
()
{
GoodsId
=
item
.
GoodsId
??
0
,
Key
=
item
.
SpecificationSort
,
TotalMoney
=
item
.
Final_Price
??
0
,
CouponMoney
=
0
});
}
}
}
}
#
endregion
TotalMoney
+=
(
item
.
Final_Price
??
0
);
item
.
OrderType
=
gmodel
.
GoodsType
;
item
.
GoodsName
=
gmodel
.
Name
;
item
.
CoverImage
=
""
;
if
(!
string
.
IsNullOrEmpty
(
gmodel
.
CarouselImage
)
&&
gmodel
.
CarouselImage
!=
"[]"
)
{
List
<
string
>
CarouselIdList
=
JsonConvert
.
DeserializeObject
<
List
<
string
>>(
gmodel
.
CarouselImage
);
//封面图
item
.
CoverImage
=
CarouselIdList
[
0
];
}
item
.
SeparateDistribution
=
gmodel
.
SeparateDistribution
;
item
.
SeparateDistributionType
=
gmodel
.
SeparateDistributionType
;
item
.
SeparateDistributionMoneyType
=
gmodel
.
SeparateDistributionMoneyType
;
item
.
IntegralPresent
=
gmodel
.
IntegralPresent
;
item
.
IntegralPresentType
=
gmodel
.
IntegralPresentType
;
}
if
(
demodel
.
User_Coupon_Id
>
0
&&
GoodsCouponList
.
Any
())
{
decimal
FinalMoney
=
GoodsCouponList
.
Sum
(
x
=>
x
.
TotalMoney
);
var
ccmodel
=
cList
.
Where
(
x
=>
x
.
Id
==
demodel
.
User_Coupon_Id
).
FirstOrDefault
();
var
dcModel
=
dcList
.
Where
(
x
=>
x
.
ID
==
(
ccmodel
?.
CouponId
??
0
)).
FirstOrDefault
();
if
(
dcModel
==
null
)
{
return
ApiResult
.
Failed
(
"优惠卷不存在,亲核实后再试"
);
}
if
(
dcModel
.
MinConsumePrice
>
0
)
{
if
(
FinalMoney
<
dcModel
.
MinConsumePrice
)
{
FinalMoney
=
0
;
}
}
if
(
dcModel
.
CouponType
==
Common
.
Enum
.
MarketingCenter
.
CouponTypeEnum
.
FullReduction
&&
FinalMoney
>
0
)
{
CouponsMoney
=
dcModel
.
DiscountsPrice
;
}
else
if
(
dcModel
.
CouponType
==
Common
.
Enum
.
MarketingCenter
.
CouponTypeEnum
.
Discount
&&
FinalMoney
>
0
)
{
decimal
disMoney
=
Math
.
Round
(
FinalMoney
*
(
10
-
dcModel
.
DiscountsPrice
)
/
10
,
2
,
MidpointRounding
.
AwayFromZero
);
if
(
dcModel
.
MaxDiscountsPrice
>
0
&&
dcModel
.
MaxDiscountsPrice
<
disMoney
)
{
disMoney
=
dcModel
.
MaxDiscountsPrice
;
}
CouponsMoney
=
disMoney
;
}
//每个商品优惠券分摊金额
if
(
CouponsMoney
>
0
)
{
foreach
(
var
item
in
GoodsCouponList
)
{
item
.
CouponMoney
=
Math
.
Round
((
item
.
TotalMoney
/
FinalMoney
)
*
CouponsMoney
,
2
,
MidpointRounding
.
AwayFromZero
);
}
if
(
CouponsMoney
!=
GoodsCouponList
.
Sum
(
x
=>
x
.
CouponMoney
))
{
//四舍五入存在差值
decimal
diffMoney
=
CouponsMoney
-
GoodsCouponList
.
Sum
(
x
=>
x
.
CouponMoney
);
var
gcModel
=
GoodsCouponList
.
OrderBy
(
x
=>
x
.
CouponMoney
).
Take
(
1
).
FirstOrDefault
();
gcModel
.
CouponMoney
+=
diffMoney
;
}
}
}
if
(
demodel
.
Use_Education_Id
>
0
&&
GoodsCouponList
.
Any
())
{
var
ccmodel
=
eList
.
Where
(
x
=>
x
.
Id
==
demodel
.
Use_Education_Id
).
FirstOrDefault
();
GoodsCouponList
=
GoodsCouponList
.
OrderBy
(
x
=>
x
.
TotalMoney
).
Take
(
ccmodel
.
HeXiao
-
ccmodel
.
UseHeXiao
).
ToList
();
}
foreach
(
var
item
in
demodel
.
DetailList
)
{
var
gmodel
=
gList
.
Where
(
x
=>
x
.
Id
==
item
.
GoodsId
).
FirstOrDefault
();
if
(
gmodel
==
null
||
gmodel
.
GoodsStatus
!=
1
)
{
continue
;
}
item
.
SupplierId
=
gmodel
.
SupplierId
;
item
.
CouponMoney
=
0
;
if
(
demodel
.
User_Coupon_Id
>
0
)
{
var
couponModel
=
GoodsCouponList
.
Where
(
x
=>
x
.
GoodsId
==
item
.
GoodsId
).
FirstOrDefault
();
if
(
couponModel
!=
null
)
{
item
.
CouponMoney
=
couponModel
.
CouponMoney
;
TotalMoney
-=
(
item
.
CouponMoney
??
0
);
//总价格需减去优惠券金额
item
.
Final_Price
-=
(
item
.
CouponMoney
??
0
);
if
(
IsCommissionCoupons
)
{
//通用优惠券
item
.
SmallShopsCostPrice
-=
(
item
.
CouponMoney
??
0
);
}
}
}
if
(
demodel
.
Use_Education_Id
>
0
)
{
var
couponModel
=
GoodsCouponList
.
Where
(
x
=>
x
.
GoodsId
==
item
.
GoodsId
).
FirstOrDefault
();
if
(
couponModel
!=
null
)
{
EducationMoney
+=
couponModel
.
TotalMoney
;
EducationNum
+=
1
;
item
.
EducationCouponId
=
demodel
.
Use_Education_Id
;
}
}
item
.
FreightMoney
=
0
;
item
.
CommentGiveIntegral
=
0
;
if
(
gmodel
.
IntegralComment
>
0
)
{
if
(
gmodel
.
IntegralCommentType
==
1
)
{
item
.
CommentGiveIntegral
=
Convert
.
ToInt32
(
Math
.
Floor
((
gmodel
.
IntegralComment
??
0
)
*
(
item
.
Final_Price
??
0
)
/
100
));
}
else
{
item
.
CommentGiveIntegral
=
Convert
.
ToInt32
((
gmodel
.
IntegralComment
??
0
)
*
(
item
.
Number
??
0
));
}
}
}
}
if
(
demodel
.
EducationMoney
!=
EducationMoney
)
{
return
ApiResult
.
Failed
(
"课程卡抵扣金额不正确"
);
}
if
(
CouponsMoney
!=
demodel
.
CouponMoney
)
{
return
ApiResult
.
Failed
(
"优惠金额计算有误"
);
}
//验证总额
if
(
demodel
.
Income
!=
(
TotalMoney
-
EducationMoney
))
{
return
ApiResult
.
Failed
(
"订单合计金额不正确"
);
}
demodel
.
PreferPrice
=
TotalMoney
+
CouponsMoney
;
#
region
手续费计算
decimal
ServiceCharge
=
Convert
.
ToDecimal
(
Config
.
SettlementRate
)
/
100
;
if
(
ServiceCharge
>
0
)
{
decimal
TotalFee
=
Math
.
Round
((
demodel
.
Income
??
0
)
*
ServiceCharge
,
2
,
MidpointRounding
.
AwayFromZero
);
if
(
demodel
.
DetailList
.
Any
())
{
int
dcount
=
demodel
.
DetailList
.
Count
();
decimal
avgFee
=
Math
.
Round
(
TotalFee
/
dcount
,
2
,
MidpointRounding
.
AwayFromZero
);
foreach
(
var
item
in
demodel
.
DetailList
)
{
item
.
ServiceCharge
=
avgFee
;
}
if
(
avgFee
*
dcount
!=
TotalFee
)
{
//多余的 直接算在第一个商品里
var
detailmodel
=
demodel
.
DetailList
.
FirstOrDefault
();
detailmodel
.
ServiceCharge
+=
(
TotalFee
-
avgFee
*
dcount
);
}
}
}
#
endregion
var
trans
=
goods_OrderRepository
.
DbTransaction
;
try
{
Random
R
=
new
Random
();
int
Rstr
=
R
.
Next
(
111
,
999
);
demodel
.
OrderNo
=
DateTime
.
Now
.
ToString
(
"yyyyMMddHHmmssfff"
)
+
Rstr
;
demodel
.
PaymentWay
=
OrderPaymentTypeEnum
.
OnlinePayment
;
//先默认在线支付
demodel
.
Remark
??=
""
;
demodel
.
ApplyForCancelStatus
??=
0
;
int
OrderId
=
goods_OrderRepository
.
Insert
(
demodel
,
trans
);
if
(
OrderId
>
0
)
{
#
region
公司比例
demodel
.
CompanyProfitRate
=
0
;
demodel
.
CompanyId
=
0
;
var
pUserId
=
member_UserRepository
.
GetMemberFristParentren
(
demodel
.
UserId
??
0
);
if
(
pUserId
>
0
)
{
var
pumodel
=
member_UserRepository
.
GetEntity
(
pUserId
);
demodel
.
CompanyProfitRate
=
(
pumodel
?.
CompanyProfitRate
??
0
);
demodel
.
CompanyId
=
pUserId
;
}
#
endregion
//插入订单明细+ 商品库存更新
InsertOrderDetail
(
demodel
,
trans
,
OrderId
,
new
List
<
FreeShippingGoodsDetail
>());
//用户订单数增加
Dictionary
<
string
,
object
>
keyValues
=
new
Dictionary
<
string
,
object
>()
{
{
nameof
(
RB_Member_User_Extend
.
OrderNum
),(
umodel
.
OrderNum
??
0
)+
1
}
};
//优惠券使用
if
(
cList
.
Any
())
{
foreach
(
var
item
in
cList
)
{
Dictionary
<
string
,
object
>
keyValues1
=
new
Dictionary
<
string
,
object
>()
{
{
nameof
(
RB_Member_DiscountCoupon_Extend
.
UseDate
),
DateTime
.
Now
},
{
nameof
(
RB_Member_DiscountCoupon_Extend
.
UseState
),
1
}
};
List
<
WhereHelper
>
wheres1
=
new
List
<
WhereHelper
>()
{
new
WhereHelper
(){
FiledName
=
nameof
(
RB_Member_DiscountCoupon_Extend
.
Id
),
FiledValue
=
item
.
Id
,
OperatorEnum
=
OperatorEnum
.
Equal
}
};
member_CouponRepository
.
Update
(
keyValues1
,
wheres1
,
trans
);
umodel
.
CouponsNum
=
(
umodel
.
CouponsNum
??
0
)
-
1
;
}
if
(
umodel
.
CouponsNum
<
0
)
{
umodel
.
CouponsNum
=
0
;
}
keyValues
.
Add
(
nameof
(
RB_Member_User_Extend
.
CouponsNum
),
umodel
.
CouponsNum
);
}
//积分
if
(
demodel
.
Use_Integral
==
1
&&
TotalIntegralNumber
>
0
)
{
keyValues
.
Add
(
nameof
(
RB_Member_User_Extend
.
Integral
),
(
umodel
.
Integral
??
0
));
member_IntegralRepository
.
Insert
(
new
Model
.
Entity
.
User
.
RB_Member_Integral
()
{
Id
=
0
,
CreateDate
=
DateTime
.
Now
,
Description
=
"订单使用积分抵扣"
+
TotalIntegralMoney
+
"元,订单号:"
+
demodel
.
OrderNo
,
Image
=
0
,
Integral
=
TotalIntegralNumber
,
MallBaseId
=
demodel
.
MallBaseId
,
PlatformType
=
demodel
.
OrderSource
,
Remarks
=
""
,
TenantId
=
demodel
.
TenantId
,
Type
=
Common
.
Enum
.
MarketingCenter
.
RecordTypeEnum
.
Expend
,
UserId
=
demodel
.
UserId
,
OrderId
=
OrderId
},
trans
);
}
List
<
WhereHelper
>
wheres
=
new
List
<
WhereHelper
>()
{
new
WhereHelper
(){
FiledName
=
nameof
(
RB_Member_User_Extend
.
Id
),
FiledValue
=
umodel
.
Id
,
OperatorEnum
=
OperatorEnum
.
Equal
}
};
member_UserRepository
.
Update
(
keyValues
,
wheres
,
trans
);
#
region
课程卡使用
if
(
demodel
.
Use_Education_Id
>
0
&&
EducationNum
>
0
)
{
education_MemberUseCouponRepository
.
Insert
(
new
Model
.
Entity
.
Education
.
RB_Education_MemberUseCoupon
()
{
Id
=
0
,
MallBaseId
=
demodel
.
MallBaseId
,
MemberCouponId
=
demodel
.
Use_Education_Id
,
OrderId
=
OrderId
,
Remarks
=
""
,
Status
=
0
,
TenantId
=
demodel
.
TenantId
,
UseDate
=
DateTime
.
Now
,
UserId
=
demodel
.
UserId
,
UseHeXiao
=
EducationNum
});
}
#
endregion
//来自购物车的话 需清除购物车数据
if
(
demodel
.
IsFormShoppingCart
==
1
)
{
foreach
(
var
cartItem
in
demodel
.
ShoppingCartIdList
)
{
Dictionary
<
string
,
object
>
keyValues2
=
new
Dictionary
<
string
,
object
>()
{
{
nameof
(
RB_Goods_ShoppingCart
.
Status
),
1
},
{
nameof
(
RB_Goods_ShoppingCart
.
UpdateDate
),
DateTime
.
Now
}
};
List
<
WhereHelper
>
wheres2
=
new
List
<
WhereHelper
>()
{
new
WhereHelper
(){
FiledName
=
nameof
(
RB_Goods_ShoppingCart
.
Id
),
FiledValue
=
cartItem
,
OperatorEnum
=
OperatorEnum
.
IN
},
new
WhereHelper
(){
FiledName
=
nameof
(
RB_Goods_ShoppingCart
.
UserId
),
FiledValue
=
demodel
.
UserId
,
OperatorEnum
=
OperatorEnum
.
IN
},
new
WhereHelper
(){
FiledName
=
nameof
(
RB_Goods_ShoppingCart
.
TenantId
),
FiledValue
=
demodel
.
TenantId
,
OperatorEnum
=
OperatorEnum
.
Equal
},
new
WhereHelper
(){
FiledName
=
nameof
(
RB_Goods_ShoppingCart
.
MallBaseId
),
FiledValue
=
demodel
.
MallBaseId
,
OperatorEnum
=
OperatorEnum
.
Equal
}
};
goods_ShoppingCartRepository
.
Update
(
keyValues2
,
wheres2
);
}
}
//下线
if
(
umodel
.
DownlineCondition
==
Common
.
Enum
.
User
.
DistrbutorReferralsEnum
.
SCXD
&&
umodel
.
IsBeDownline
==
2
)
{
//首次下单成为下线
Dictionary
<
string
,
object
>
keyValues1
=
new
Dictionary
<
string
,
object
>()
{
{
nameof
(
RB_Member_User_Extend
.
SuperiorId
),
umodel
.
WaitSuperiorId
},
{
nameof
(
RB_Member_User_Extend
.
IsBeDownline
),
1
},
{
nameof
(
RB_Member_User_Extend
.
BeDownlineDate
),
DateTime
.
Now
},
};
List
<
WhereHelper
>
wheres1
=
new
List
<
WhereHelper
>()
{
new
WhereHelper
(){
FiledName
=
nameof
(
RB_Member_User_Extend
.
Id
),
FiledValue
=
umodel
.
Id
,
OperatorEnum
=
OperatorEnum
.
Equal
}
};
member_UserRepository
.
Update
(
keyValues1
,
wheres1
,
trans
);
}
//任务执行返佣 失败查看日志,手动返佣(空闲可增加手动返佣接口)
if
(
demodel
.
User_Coupon_Id
>
0
&&
demodel
.
CouponMoney
>
0
)
{
demodel
.
CouponDestription
=
"使用"
+
(
IsCommissionCoupons
?
"通用"
:
"店铺"
)
+
"优惠券抵扣"
;
}
Task
.
Run
(()
=>
InsertOrderCommission
(
demodel
,
umodel
,
GoodsIds
,
OrderId
));
//记录日志
goods_LogRepository
.
Insert
(
new
RB_Goods_Log
()
{
Id
=
0
,
Type
=
1
,
SourceId
=
OrderId
,
Content
=
"新增课程订单"
,
CreateDate
=
DateTime
.
Now
,
MallBaseId
=
demodel
.
MallBaseId
,
TenantId
=
demodel
.
TenantId
});
}
goods_OrderRepository
.
DBSession
.
Commit
();
return
ApiResult
.
Success
(
""
,
new
{
OrderId
});
}
catch
(
Exception
ex
)
{
LogHelper
.
Write
(
ex
,
"SetAppletGoodsOrderInfo"
);
goods_OrderRepository
.
DBSession
.
Rollback
(
"SetAppletGoodsOrderInfo"
);
return
ApiResult
.
Failed
();
}
}
}
}
}
}
Mall.WebApi/Controllers/Product/AppletOrderController.cs
View file @
fedbd32b
...
@@ -456,7 +456,7 @@ namespace Mall.WebApi.Controllers.MallBase
...
@@ -456,7 +456,7 @@ namespace Mall.WebApi.Controllers.MallBase
}
}
/// <summary>
/// <summary>
/// 下单
///
商城
下单
/// </summary>
/// </summary>
/// <returns></returns>
/// <returns></returns>
[
HttpPost
]
[
HttpPost
]
...
@@ -545,6 +545,72 @@ namespace Mall.WebApi.Controllers.MallBase
...
@@ -545,6 +545,72 @@ namespace Mall.WebApi.Controllers.MallBase
return
orderModule
.
SetAppletGoodsOrderInfo
(
demodel
);
return
orderModule
.
SetAppletGoodsOrderInfo
(
demodel
);
}
}
/// <summary>
/// 教育下单
/// </summary>
/// <returns></returns>
[
HttpPost
]
public
ApiResult
SetAppletCourseOrderInfo
()
{
var
req
=
RequestParm
;
var
userInfo
=
AppletUserInfo
;
RB_Goods_Order_Extend
demodel
=
JsonConvert
.
DeserializeObject
<
RB_Goods_Order_Extend
>(
req
.
msg
.
ToString
());
if
(
demodel
.
IsFormShoppingCart
==
1
)
{
if
(
demodel
.
ShoppingCartIdList
==
null
||
!
demodel
.
ShoppingCartIdList
.
Any
())
{
return
ApiResult
.
ParamIsNull
(
"请传递购物车id"
);
}
}
if
(
demodel
.
DetailList
==
null
||
!
demodel
.
DetailList
.
Any
())
{
return
ApiResult
.
ParamIsNull
(
"请传递商品信息"
);
}
foreach
(
var
item
in
demodel
.
DetailList
)
{
if
((
item
.
GoodsId
??
0
)
<=
0
)
{
return
ApiResult
.
ParamIsNull
(
"请传递商品id"
);
}
if
((
item
.
Number
??
0
)
<=
0
)
{
return
ApiResult
.
ParamIsNull
(
"请传递商品数量"
);
}
}
if
((
demodel
.
Income
??
0
)
<=
0
)
{
return
ApiResult
.
ParamIsNull
(
"订单金额不正确"
);
}
demodel
.
BuyerMessage
??=
""
;
//买家留言
demodel
.
OrderSource
??=
UserSourceEnum
.
WeiXin
;
#
region
赋默认值
demodel
.
TenantId
=
userInfo
.
TenantId
;
demodel
.
MallBaseId
=
userInfo
.
MallBaseId
;
demodel
.
Country
??=
2
;
demodel
.
OrderStatus
=
Common
.
Enum
.
Goods
.
OrderStatusEnum
.
NonPayment
;
demodel
.
CreateDate
=
DateTime
.
Now
;
demodel
.
Fee
??=
0
;
demodel
.
FreightMoney
??=
0
;
demodel
.
HistoryOrderStatus
??=
0
;
demodel
.
IsApplyForCancel
??=
2
;
demodel
.
IsOrderCommission
??=
2
;
demodel
.
MerchantsNo
??=
""
;
demodel
.
Recycled
??=
2
;
demodel
.
Refund
??=
0
;
demodel
.
Status
=
0
;
demodel
.
AnchorName
??=
""
;
demodel
.
UpdateDate
=
DateTime
.
Now
;
demodel
.
UserId
=
userInfo
.
UserId
;
demodel
.
SmallShopsId
=
req
.
SmallShopsId
;
demodel
.
OrderClassify
=
2
;
#
endregion
return
orderModule
.
SetAppletCourseOrderInfo
(
demodel
);
}
/// <summary>
/// <summary>
/// 司导下单
/// 司导下单
/// </summary>
/// </summary>
...
...
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