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
55f5d35d
Commit
55f5d35d
authored
Sep 29, 2020
by
liudong1993
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
教育结算
parent
e1d45777
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
622 additions
and
2 deletions
+622
-2
RB_Goods_Order_Extend.cs
Mall.Model/Extend/Product/RB_Goods_Order_Extend.cs
+4
-0
OrderModule.cs
Mall.Module.Product/OrderModule.cs
+1
-1
OrderModule_Part.cs
Mall.Module.Product/OrderModule_Part.cs
+583
-0
EducationController.cs
Mall.WebApi/Controllers/Education/EducationController.cs
+1
-1
AppletOrderController.cs
Mall.WebApi/Controllers/Product/AppletOrderController.cs
+33
-0
No files found.
Mall.Model/Extend/Product/RB_Goods_Order_Extend.cs
View file @
55f5d35d
...
...
@@ -166,6 +166,10 @@ namespace Mall.Model.Extend.Product
/// </summary>
public
int
?
User_Coupon_Id
{
get
;
set
;
}
/// <summary>
/// 使用课程卡id
/// </summary>
public
int
?
Use_Education_Id
{
get
;
set
;
}
/// <summary>
/// 优惠券描述
/// </summary>
public
string
CouponDestription
{
get
;
set
;
}
...
...
Mall.Module.Product/OrderModule.cs
View file @
55f5d35d
...
...
@@ -37,7 +37,7 @@ namespace Mall.Module.Product
/// <summary>
/// 商品处理层
/// </summary>
public
class
OrderModule
public
partial
class
OrderModule
{
/// <summary>
/// 素材管理
...
...
Mall.Module.Product/OrderModule_Part.cs
0 → 100644
View file @
55f5d35d
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Text
;
using
System.Threading.Tasks
;
using
Mall.Common
;
using
Mall.Common.API
;
using
Mall.Common.Enum
;
using
Mall.Common.Enum.Goods
;
using
Mall.Common.Enum.User
;
using
Mall.Common.Plugin
;
using
Mall.Model.Entity.Finance
;
using
Mall.Model.Entity.Product
;
using
Mall.Model.Extend.BaseSetUp
;
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
;
using
Mall.Repository.GuideCar
;
using
Mall.Repository.MarketingCenter
;
using
Mall.Repository.Product
;
using
Mall.Repository.User
;
using
Mall.ThirdCore.Message
;
using
Microsoft.Extensions.Configuration
;
using
Microsoft.Extensions.Configuration.Json
;
using
Newtonsoft.Json
;
using
Newtonsoft.Json.Linq
;
using
NPOI.SS.Formula.Functions
;
using
VT.FW.DB
;
namespace
Mall.Module.Product
{
/// <summary>
/// 订单处理层 v2
/// </summary>
public
partial
class
OrderModule
{
/// <summary>
/// 获取小程序结算页面详情
/// </summary>
/// <param name="demodel"></param>
/// <returns></returns>
public
ApiResult
GetAppletCourseSettlementInfo
(
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
;
}
//积分
Model
.
Entity
.
MarketingCenter
.
RB_Integral_Settings
integralModel
=
new
Model
.
Entity
.
MarketingCenter
.
RB_Integral_Settings
();
if
(
umodel
.
Integral
>
0
)
{
integralModel
=
integral_SettingsRepository
.
GetIntegralSettingsList
(
new
Model
.
Entity
.
MarketingCenter
.
RB_Integral_Settings
()
{
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
}).
FirstOrDefault
();
}
List
<
object
>
DList
=
new
List
<
object
>();
decimal
TotalGoodsMoney
=
0
,
TotalGoodsOriginalMoney
=
0
,
TotalGoodsSellMoney
=
0
;
// 总商品价格 总原价 总售价
decimal
member_discount
=
0
;
//总会员优惠
decimal
Total_integral_price
=
0
;
//总积分金额
int
Total_use_integral
=
0
;
//总积分
decimal
CouponsMoney
=
0
;
//优惠总金额
bool
IsPointsDeduction
=
false
;
//是否有商品可使用积分抵扣
List
<
object
>
goods_list
=
new
List
<
object
>();
if
(
demodel
.
DetailList
.
Any
())
{
string
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
});
//返佣
var
DistributionCommissionList
=
new
List
<
RB_Goods_DistributionCommission_Extend
>();
if
(
demodel
.
DetailList
.
Where
(
x
=>
x
.
SeparateDistribution
==
1
).
Any
())
{
string
goodsIds
=
string
.
Join
(
","
,
demodel
.
DetailList
.
Where
(
x
=>
x
.
SeparateDistribution
==
1
).
Select
(
x
=>
x
.
GoodsId
));
DistributionCommissionList
=
goods_DistributionCommissionRepository
.
GetList
(
new
RB_Goods_DistributionCommission_Extend
()
{
GoodsIds
=
goodsIds
,
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
});
}
#
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
>();
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
(
"优惠券不存在,请核实后再试"
);
}
}
}
}
}
}
}
#
endregion
List
<
RB_Goods_CouponModel
>
GoodsCouponList
=
new
List
<
RB_Goods_CouponModel
>();
//商品优惠卷 价格(每个商品优惠的价格)
List
<
int
>
YFCategoryList
=
new
List
<
int
>();
//全局适配 分类
#
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
)
{
continue
;
}
var
categoryList
=
clist
.
Where
(
x
=>
x
.
GoodsId
==
item
.
GoodsId
).
ToList
();
#
region
图片
gmodel
.
CoverImage
=
""
;
//轮播
gmodel
.
CarouselImageList
=
new
List
<
RB_ImageCommonModel
>();
if
(!
string
.
IsNullOrEmpty
(
gmodel
.
CarouselImage
)
&&
gmodel
.
CarouselImage
!=
"[]"
)
{
List
<
string
>
CarouselIdList
=
JsonConvert
.
DeserializeObject
<
List
<
string
>>(
gmodel
.
CarouselImage
);
//轮播图
foreach
(
var
qitem
in
CarouselIdList
)
{
gmodel
.
CarouselImageList
.
Add
(
new
RB_ImageCommonModel
()
{
Id
=
0
,
Name
=
""
,
Path
=
qitem
});
}
//封面图
gmodel
.
CoverImage
=
CarouselIdList
[
0
];
}
#
endregion
#
region
会员价格
gmodel
.
MemberPrice
=
gmodel
.
SellingPrice
??
0
;
List
<
object
>
discounts
=
new
List
<
object
>();
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
;
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
);
}
discounts
.
Add
(
new
{
name
=
"会员优惠价格"
,
value
=
(
gmodel
.
MemberPrice
*
(
item
.
Number
??
0
))
-
((
gmodel
.
SellingPrice
??
0
)
*
(
item
.
Number
??
0
))
});
member_discount
+=
(
gmodel
.
MemberPrice
*
(
item
.
Number
??
0
))
-
((
gmodel
.
SellingPrice
??
0
)
*
(
item
.
Number
??
0
));
}
#
endregion
item
.
Final_Price
=
gmodel
.
MemberPrice
*
(
item
.
Number
??
0
);
#
region
积分
if
(
umodel
.
Integral
>
0
&&
gmodel
.
PointsDeduction
>
0
&&
integralModel
.
IntegralNum
>
0
)
{
IsPointsDeduction
=
true
;
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
;
}
}
}
}
decimal
integral_price
=
0
;
int
use_integral
=
0
;
if
(
demodel
.
Use_Integral
==
1
)
{
integral_price
=
item
.
IntegralMoney
??
0
;
use_integral
=
item
.
IntegralNumber
??
0
;
item
.
Final_Price
-=
integral_price
;
}
#
endregion
#
region
优惠券
//decimal CouponsMoney = 0;
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
Total_integral_price
+=
(
item
.
IntegralMoney
??
0
);
Total_use_integral
+=
(
item
.
IntegralNumber
??
0
);
TotalGoodsMoney
+=
item
.
Final_Price
??
0
;
TotalGoodsOriginalMoney
+=
(
gmodel
.
OriginalPrice
??
0
)
*
(
item
.
Number
??
0
);
TotalGoodsSellMoney
+=
gmodel
.
MemberPrice
*
(
item
.
Number
??
0
);
item
.
Unit_Price
=
gmodel
.
SellingPrice
??
0
;
item
.
Original_Price
=
gmodel
.
OriginalPrice
??
0
;
item
.
MemberPrice
=
gmodel
.
MemberPrice
;
item
.
IntegralMoney
=
integral_price
;
item
.
IntegralNumber
=
use_integral
;
item
.
Discounts
=
discounts
;
item
.
CategoryIdList
=
categoryList
.
Select
(
x
=>
x
.
CategoryId
??
0
).
ToList
();
}
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
;
}
}
}
//赋值
foreach
(
var
item
in
demodel
.
DetailList
)
{
var
gmodel
=
gList
.
Where
(
x
=>
x
.
Id
==
item
.
GoodsId
).
FirstOrDefault
();
if
(
gmodel
==
null
||
gmodel
.
GoodsStatus
!=
1
)
{
continue
;
}
decimal
couponMoney
=
0
;
//优惠金额
var
couponModel
=
GoodsCouponList
.
Where
(
x
=>
x
.
GoodsId
==
item
.
GoodsId
).
FirstOrDefault
();
if
(
couponModel
!=
null
)
{
couponMoney
=
couponModel
.
CouponMoney
;
TotalGoodsMoney
-=
couponMoney
;
//总价格需减去优惠券金额
}
goods_list
.
Add
(
new
{
id
=
gmodel
.
Id
,
name
=
gmodel
.
Name
,
categoryIdList
=
item
.
CategoryIdList
,
num
=
item
.
Number
,
forehead_integral
=
gmodel
.
PointsDeduction
,
forehead_integral_type
=
gmodel
.
PointsDeductionType
,
accumulative
=
gmodel
.
IsMultipleDeduction
,
//累计多件抵扣
unit_price
=
item
.
Unit_Price
,
total_original_price
=
(
item
.
Original_Price
??
0
)
*
(
item
.
Number
??
0
),
total_price
=
(
item
.
Unit_Price
??
0
)
*
(
item
.
Number
??
0
),
//优惠券(有平摊情况) 积分抵扣 (默认从第一个商品抵扣)
goods_attr
=
new
{
id
=
0
,
goods_id
=
gmodel
.
Id
,
price
=
item
.
Unit_Price
??
0
,
original_price
=
item
.
Original_Price
??
0
,
pic_url
=
gmodel
.
CoverImage
,
individual_share
=
umodel
?.
IsDistributor
??
2
,
// 是否分销商
share_type
=
gmodel
.
SeparateDistributionMoneyType
,
//分销佣金类型,
member_price
=
item
.
MemberPrice
,
integral_price
=
demodel
.
Use_Integral
==
1
?
item
.
IntegralMoney
:
0
,
//积分抵扣金额
use_integral
=
demodel
.
Use_Integral
==
1
?
item
.
IntegralNumber
:
0
,
couponMoney
,
name
=
gmodel
.
Name
,
cover_pic
=
gmodel
.
CoverImage
,
detail
=
gmodel
.
GoodsDetails
,
number
=
item
.
Number
,
goods_share_level
=
DistributionCommissionList
.
Where
(
x
=>
x
.
GoodsId
==
gmodel
.
Id
).
Select
(
x
=>
new
{
share_commission_first
=
x
.
OneCommission
,
share_commission_second
=
x
.
TwoCommission
,
share_commission_third
=
x
.
ThreeCommission
,
level
=
x
.
DistributorGrade
}),
attr_setting_type
=
gmodel
.
SeparateDistributionType
},
discounts
=
item
.
Discounts
,
member_discount
=
((
item
.
Unit_Price
??
0
)
*
(
item
.
Number
??
0
))
-
(
item
.
MemberPrice
*
(
item
.
Number
??
0
)),
cover_pic
=
gmodel
.
CoverImage
,
is_level_alone
=
gmodel
.
SeparateSetMember
,
//是否单独设置会员价
is_level
=
gmodel
.
EnjoyMember
,
//是否销售会员价格
marketingLogo
=
gmodel
.
MarketingLogo
});
}
}
#
region
其他封装
List
<
object
>
mch_list
=
new
List
<
object
>();
var
minModel
=
miniProgramRepository
.
GetEntity
(
demodel
.
MallBaseId
);
//积分
var
IntegralObj
=
new
{
can_use
=
IsPointsDeduction
,
use
=
demodel
.
Use_Integral
==
1
?
true
:
false
,
use_num
=
Total_use_integral
,
deduction_price
=
Total_integral_price
};
#
region
提示无上级不返佣
bool
PromptNoSuperiorFY
=
false
;
var
disbaseModel
=
distributor_BasicsRepository
.
GetList
(
new
RB_Distributor_Basics_Extend
()
{
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
}).
FirstOrDefault
();
if
((
disbaseModel
?.
IsEnableFXGrade
??
2
)
==
1
&&
(
disbaseModel
?.
IsEnableNoSuperiorFY
??
1
)
==
2
)
{
if
((
umodel
.
SuperiorId
??
0
)
==
0
)
{
PromptNoSuperiorFY
=
true
;
}
}
#
endregion
mch_list
.
Add
(
new
{
mch
=
new
{
id
=
minModel
?.
MallBaseId
??
0
,
name
=
minModel
?.
MallName
??
""
},
goods_list
,
remark
=
""
,
total_goods_price
=
TotalGoodsSellMoney
,
total_goods_original_price
=
TotalGoodsOriginalMoney
,
member_discount
,
coupon
=
new
{
enabled
=
true
,
use
=
demodel
.
User_Coupon_Id
>
0
?
true
:
false
,
coupon_discount
=
CouponsMoney
,
user_coupon_id
=
demodel
.
User_Coupon_Id
??
0
},
integral
=
IntegralObj
,
total_price
=
TotalGoodsMoney
,
});
List
<
string
>
template_message_list
=
new
List
<
string
>();
if
(
minModel
!=
null
)
{
if
(!
string
.
IsNullOrWhiteSpace
(
minModel
.
OrderSuccessTpl
))
{
template_message_list
.
Add
(
minModel
.
OrderSuccessTpl
);
}
if
(!
string
.
IsNullOrWhiteSpace
(
minModel
.
OrderCancelTpl
))
{
template_message_list
.
Add
(
minModel
.
OrderCancelTpl
);
}
if
(!
string
.
IsNullOrWhiteSpace
(
minModel
.
OrderDeliverGoodsTpl
))
{
template_message_list
.
Add
(
minModel
.
OrderDeliverGoodsTpl
);
}
}
var
Robj
=
new
{
mch_list
,
promptNoSuperiorFY
=
PromptNoSuperiorFY
,
total_price
=
TotalGoodsMoney
,
price_enable
=
true
,
template_message_list
};
#
endregion
return
ApiResult
.
Success
(
""
,
Robj
);
}
}
}
Mall.WebApi/Controllers/Education/EducationController.cs
View file @
55f5d35d
...
...
@@ -399,7 +399,7 @@ namespace Mall.WebApi.Controllers.Education
{
return
ApiResult
.
ParamIsNull
(
"请传递视频封面图"
);
}
if
((
item
.
VideoTime
??
0
)
<
=
0
)
if
((
item
.
VideoTime
??
0
)
<
0
)
{
return
ApiResult
.
ParamIsNull
(
"请传递视频时长"
);
}
...
...
Mall.WebApi/Controllers/Product/AppletOrderController.cs
View file @
55f5d35d
...
...
@@ -387,6 +387,39 @@ namespace Mall.WebApi.Controllers.MallBase
return
orderModule
.
GetAppletGoodsSettlementInfoForZY
(
demodel
);
}
/// <summary>
/// 结算页面详情(教育)
/// </summary>
/// <returns></returns>
[
HttpPost
]
public
ApiResult
GetAppletCourseSettlementInfo
()
{
var
req
=
RequestParm
;
var
userInfo
=
AppletUserInfo
;
RB_Goods_Order_Extend
demodel
=
JsonConvert
.
DeserializeObject
<
RB_Goods_Order_Extend
>(
req
.
msg
.
ToString
());
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
(
"请传递商品数量"
);
}
}
demodel
.
TenantId
=
userInfo
.
TenantId
;
demodel
.
MallBaseId
=
userInfo
.
MallBaseId
;
demodel
.
UserId
=
userInfo
.
UserId
;
demodel
.
SmallShopsId
=
req
.
SmallShopsId
;
return
orderModule
.
GetAppletCourseSettlementInfo
(
demodel
);
}
/// <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