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
e222bdb4
Commit
e222bdb4
authored
Nov 04, 2020
by
黄奎
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
页面修改
parent
3b90d7be
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
376 additions
and
629 deletions
+376
-629
OrderModule.cs
Mall.Module.Product/OrderModule.cs
+376
-629
No files found.
Mall.Module.Product/OrderModule.cs
View file @
e222bdb4
...
...
@@ -4761,20 +4761,15 @@ namespace Mall.Module.Product
message
=
"您在黑名单状态无法下单,请联系管理员核实"
;
return
false
;
}
List
<
int
>
disList
=
new
List
<
int
>();
disList
.
Add
(
demodel
.
Province
??
0
);
disList
.
Add
(
demodel
.
City
??
0
);
disList
.
Add
(
demodel
.
District
??
0
);
var
goodModel
=
goodsRepository
.
GetEntity
(
demodel
.
GoodsId
);
decimal
TotalExpress
=
0
;
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
>();
...
...
@@ -4814,142 +4809,66 @@ namespace Mall.Module.Product
}
}
#
endregion
List
<
FreeShippingGoodsDetail
>
SatisfiedGoodsList
=
new
List
<
FreeShippingGoodsDetail
>();
//可包邮的商品
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
();
}
int
DefFreightId
=
0
;
//默认运费id
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
,
GoodsClassify
=
3
});
var
clist
=
goods_CategoryRepository
.
GetList
(
new
RB_Goods_Category_Extend
()
{
GoodsIds
=
GoodsIds
,
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
});
var
speciPList
=
goods_SpecificationPriceRepository
.
GetList
(
new
RB_Goods_SpecificationPrice_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
});
List
<
Model
.
Extend
.
BaseSetUp
.
RB_Logistics_Rules_Extend
>
rulesList
=
new
List
<
Model
.
Extend
.
BaseSetUp
.
RB_Logistics_Rules_Extend
>();
List
<
Model
.
Extend
.
BaseSetUp
.
RB_Logistics_RulesPrice_Extend
>
priceList
=
new
List
<
Model
.
Extend
.
BaseSetUp
.
RB_Logistics_RulesPrice_Extend
>();
List
<
Model
.
Extend
.
BaseSetUp
.
RB_Logistics_RulesRegion_Extend
>
regionList
=
new
List
<
Model
.
Extend
.
BaseSetUp
.
RB_Logistics_RulesRegion_Extend
>();
if
(
gList
.
Any
()
&&
demodel
.
DeliveryMethod
==
OrderDeliveryMethodEnum
.
ExpressDistribution
)
{
List
<
int
>
FreightIdList
=
new
List
<
int
>();
if
(
gList
.
Where
(
x
=>
x
.
FreightId
>
0
).
Any
())
{
FreightIdList
.
AddRange
(
gList
.
Where
(
x
=>
x
.
FreightId
>
0
).
Select
(
x
=>
x
.
FreightId
??
0
).
ToList
());
}
if
(
gList
.
Where
(
x
=>
x
.
FreightId
==
0
).
Any
())
{
//查询默认
DefFreightId
=
logistics_RulesRepository
.
GetLogisticsRulesList
(
new
Model
.
Extend
.
BaseSetUp
.
RB_Logistics_Rules_Extend
()
{
IsDefault
=
1
,
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
}).
FirstOrDefault
()?.
ID
??
0
;
FreightIdList
.
Add
(
DefFreightId
);
}
if
(
FreightIdList
.
Any
())
{
rulesList
=
logistics_RulesRepository
.
GetLogisticsRulesList
(
new
Model
.
Extend
.
BaseSetUp
.
RB_Logistics_Rules_Extend
()
{
RulesIds
=
string
.
Join
(
","
,
FreightIdList
),
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
});
priceList
=
logistics_RulesPriceRepository
.
GetListRepository
(
new
Model
.
Extend
.
BaseSetUp
.
RB_Logistics_RulesPrice_Extend
()
{
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
,
RulesIds
=
string
.
Join
(
","
,
FreightIdList
)
});
if
(
priceList
.
Any
())
{
string
priceIds
=
string
.
Join
(
","
,
priceList
.
Select
(
x
=>
x
.
ID
));
regionList
=
logistics_RulesRegionRepository
.
GetListRepository
(
new
Model
.
Extend
.
BaseSetUp
.
RB_Logistics_RulesRegion_Extend
()
{
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
,
PriceIds
=
priceIds
});
}
}
}
var
OrderGoodsNumList
=
new
List
<
RB_Goods_Order_Extend
>();
bool
IsLimitOk
=
false
;
if
(
gList
.
Where
(
x
=>
x
.
LimitBuyGoodsNum
>
0
).
Any
())
#
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
)
{
IsLimitOk
=
true
;
string
LimitGoodsIds
=
string
.
Join
(
","
,
gList
.
Where
(
x
=>
x
.
LimitBuyGoodsNum
>
0
).
Select
(
x
=>
x
.
Id
));
//查询用户该商品已下单数量
OrderGoodsNumList
=
goods_OrderRepository
.
GetUserOrderGoodsNum
(
demodel
.
UserId
??
0
,
LimitGoodsIds
,
demodel
.
TenantId
,
demodel
.
MallBaseId
);
}
var
OrderNumList
=
new
List
<
RB_Goods_Order_Extend
>();
if
(
gList
.
Where
(
x
=>
x
.
LimitBuyOrderNum
>
0
).
Any
())
if
(
demodel
.
User_Coupon_Id
>
0
)
{
IsLimitOk
=
true
;
string
LimitGoodsIds
=
string
.
Join
(
","
,
gList
.
Where
(
x
=>
x
.
LimitBuyOrderNum
>
0
).
Select
(
x
=>
x
.
Id
));
//查询用户该商品已下单数量
OrderNumList
=
goods_OrderRepository
.
GetUserOrderNum
(
demodel
.
UserId
??
0
,
LimitGoodsIds
,
demodel
.
TenantId
,
demodel
.
MallBaseId
);
message
=
"套餐卡与优惠券不能同时使用"
;
return
false
;
}
//验证限购
if
(
OrderGoodsNumList
.
Any
()
||
OrderNumList
.
Any
())
{
List
<
int
>
GoodsIdList
=
demodel
.
DetailList
.
Select
(
x
=>
x
.
GoodsId
??
0
).
Distinct
().
ToList
();
foreach
(
var
item
in
GoodsIdList
)
{
int
GoodsNum
=
demodel
.
DetailList
.
Where
(
x
=>
x
.
GoodsId
==
item
).
Sum
(
x
=>
x
.
Number
??
0
);
var
gmodel
=
gList
.
Where
(
x
=>
x
.
Id
==
item
).
FirstOrDefault
();
if
(
gmodel
==
null
||
gmodel
.
GoodsStatus
!=
1
)
if
(
demodel
.
Use_Integral
>
0
)
{
message
=
"有商品不存在或者商品已失效
"
;
message
=
"套餐卡与积分抵扣不能同时使用
"
;
return
false
;
}
#
region
验证商品限购,订单限购
if
(
gmodel
.
LimitBuyGoodsNum
>
0
)
{
var
ogModel
=
OrderGoodsNumList
.
Where
(
x
=>
x
.
GoodsId
==
gmodel
.
Id
).
FirstOrDefault
();
if
(
ogModel
!=
null
)
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
())
{
if
(
ogModel
.
GoodsTotalNum
+
GoodsNum
>
(
gmodel
.
LimitBuyGoodsNum
??
0
))
var
educationModel
=
eList
.
FirstOrDefault
();
if
(
educationModel
.
HeXiao
<=
educationModel
.
UseHeXiao
)
{
message
=
"该商品限购"
+
(
gmodel
.
LimitBuyGoodsNum
??
0
)
+
"件,您已购买"
+
ogModel
.
GoodsTotalNum
+
"件
"
;
message
=
"套餐卡剩余次数不足
"
;
return
false
;
}
}
}
if
(
gmodel
.
LimitBuyOrderNum
>
0
)
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
())
{
var
ogModel
=
OrderNumList
.
Where
(
x
=>
x
.
GoodsId
==
gmodel
.
Id
).
FirstOrDefault
();
if
(
ogModel
!=
null
)
foreach
(
var
item
in
eList
)
{
if
(
ogModel
.
OrderNum
+
1
>
(
gmodel
.
LimitBuyOrderNum
??
0
)
)
if
(
item
.
CouponId
>
0
)
{
message
=
"该商品订单限购"
+
(
gmodel
.
LimitBuyOrderNum
??
0
)
+
"单,您已购买"
+
ogModel
.
OrderNum
+
"单"
;
if
(!
deList
.
Where
(
x
=>
x
.
ID
==
item
.
CouponId
).
Any
())
{
message
=
"课程卡不存在,请核实后再试"
;
return
false
;
}
}
}
#
endregion
}
}
else
if
(
IsLimitOk
)
{
List
<
int
>
GoodsIdList
=
demodel
.
DetailList
.
Select
(
x
=>
x
.
GoodsId
??
0
).
Distinct
().
ToList
();
foreach
(
var
item
in
GoodsIdList
)
{
int
GoodsNum
=
demodel
.
DetailList
.
Where
(
x
=>
x
.
GoodsId
==
item
).
Sum
(
x
=>
x
.
Number
??
0
);
var
gmodel
=
gList
.
Where
(
x
=>
x
.
Id
==
item
).
FirstOrDefault
();
if
(
gmodel
==
null
||
gmodel
.
GoodsStatus
!=
1
)
{
message
=
"有商品不存在或者商品已失效"
;
return
false
;
}
#
region
验证商品限购,订单限购
if
(
gmodel
.
LimitBuyGoodsNum
>
0
)
#
endregion
if
(
demodel
.
DetailList
.
Any
())
{
if
(
GoodsNum
>
(
gmodel
.
LimitBuyGoodsNum
??
0
))
//积分
Model
.
Entity
.
MarketingCenter
.
RB_Integral_Settings
integralModel
=
new
Model
.
Entity
.
MarketingCenter
.
RB_Integral_Settings
();
if
(
demodel
.
Use_Integral
==
1
&&
umodel
.
Integral
>
0
)
{
message
=
"该商品限购"
+
(
gmodel
.
LimitBuyGoodsNum
??
0
)
+
"件"
;
return
false
;
}
}
#
endregion
}
integralModel
=
integral_SettingsRepository
.
GetIntegralSettingsList
(
new
Model
.
Entity
.
MarketingCenter
.
RB_Integral_Settings
()
{
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
}).
FirstOrDefault
();
}
List
<
int
>
YFCategoryList
=
new
List
<
int
>();
//全局适配 分类
var
mallbaseModel
=
mallBaseRepository
.
GetListRepository
(
new
Model
.
Extend
.
BaseSetUp
.
RB_MallBase_Extend
()
{
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
}).
FirstOrDefault
();
GoodsIds
=
string
.
Join
(
","
,
demodel
.
DetailList
.
Select
(
x
=>
x
.
GoodsId
));
var
gList
=
goodsRepository
.
GetListForCommission
(
new
RB_Goods_Extend
()
{
GoodsIds
=
GoodsIds
,
TenantId
=
demodel
.
TenantId
,
MallBaseId
=
demodel
.
MallBaseId
},
3
);
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
();
...
...
@@ -4969,121 +4888,24 @@ namespace Mall.Module.Product
message
=
"有商品不存在或者商品已失效"
;
return
false
;
}
if
(
gmodel
.
PresentFXGrade
>
0
)
{
//是赠送VIP商品
if
(
demodel
.
DetailList
.
Count
()
>
1
)
{
//多商品
message
=
"VIP商品不能与其他商品同时下单,请先购买VIP商品"
;
return
false
;
}
var
disModel
=
distributor_InfoRepository
.
GetListForSingle
(
new
RB_Distributor_Info_Extend
()
{
UserId
=
umodel
.
Id
}).
FirstOrDefault
();
if
(
disModel
!=
null
)
{
var
fxgradeList
=
distributor_FXGradeRepository
.
GetList
(
new
RB_Distributor_FXGrade_Extend
()
{
TenantId
=
umodel
.
TenantId
,
MallBaseId
=
umodel
.
MallBaseId
});
fxgradeList
=
fxgradeList
.
Where
(
x
=>
x
.
IsGuest
==
1
||
x
.
IsGuest
==
3
).
ToList
();
if
(!
fxgradeList
.
Select
(
x
=>
x
.
Id
).
Contains
(
disModel
.
FXGradeId
??
0
))
if
(
gmodel
.
GoodsClassify
!=
3
)
{
message
=
"您当前等级无法购买VIP
商品"
;
message
=
"有非线下服务类
商品"
;
return
false
;
}
}
}
var
categoryList
=
clist
.
Where
(
x
=>
x
.
GoodsId
==
item
.
GoodsId
).
ToList
();
if
((
mallbaseModel
?.
IsFreeShipping
??
0
)
==
1
&&
(
gmodel
.
FullMoneyPinkage
??
0
)
==
0
&&
(
gmodel
.
FullNumPinkage
??
0
)
==
0
)
{
YFCategoryList
.
AddRange
(
categoryList
.
Select
(
x
=>
x
.
CategoryId
??
0
).
ToList
());
}
item
.
InventoryNum
=
gmodel
.
InventoryNum
??
0
;
item
.
CommissionPrice
=
gmodel
.
Commission
;
// 粉象 返佣金额
item
.
CostMoney
=
(
gmodel
.
IsCustomSpecification
==
2
)
?
(
gmodel
.
CostPrice
??
0
)
:
(
speciPList
.
Where
(
x
=>
x
.
GoodsId
==
item
.
GoodsId
&&
x
.
SpecificationSort
==
item
.
SpecificationSort
).
FirstOrDefault
()?.
CostMoney
??
0
);
//gmodel.CostPrice ?? 0;
item
.
CostMoney
=
(
gmodel
.
CostPrice
??
0
);
item
.
Specification
=
"[]"
;
item
.
SpecificationSort
=
"0"
;
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
;
//商品重量
#
region
规格
//验证规格是否已失效
if
(
gmodel
.
IsCustomSpecification
==
1
)
{
if
(
string
.
IsNullOrEmpty
(
item
.
SpecificationSort
))
{
message
=
"有商品已失效,请重新下单"
;
return
false
;
}
if
(!
speciPList
.
Where
(
x
=>
x
.
GoodsId
==
item
.
GoodsId
&&
x
.
SpecificationSort
==
item
.
SpecificationSort
).
Any
())
{
message
=
"有商品已失效,请重新下单"
;
return
false
;
}
}
else
{
if
(!
string
.
IsNullOrEmpty
(
item
.
SpecificationSort
))
{
message
=
"有商品已失效,请重新下单"
;
return
false
;
}
}
if
(!
string
.
IsNullOrEmpty
(
item
.
SpecificationSort
))
{
var
speciPModel
=
speciPList
.
Where
(
x
=>
x
.
GoodsId
==
item
.
GoodsId
&&
x
.
SpecificationSort
==
item
.
SpecificationSort
).
FirstOrDefault
();
gmodel
.
SellingPrice
=
speciPModel
?.
SellingPrice
??
0
;
gmodel
.
InventoryNum
=
speciPModel
?.
InventoryNum
??
0
;
GoodsWeight
=
speciPModel
?.
GoodsWeight
??
0
;
item
.
InventoryNum
=
speciPModel
?.
InventoryNum
??
0
;
item
.
SpeciPriceId
=
speciPModel
?.
Id
??
0
;
item
.
ProductCode
=
speciPModel
?.
GoodsNumbers
??
""
;
if
(
item
.
Number
>
speciPModel
.
InventoryNum
)
{
message
=
"商品库存不足:"
+
gmodel
.
Name
;
return
false
;
}
item
.
CommissionPrice
=
speciPModel
?.
Commission
??
0
;
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
==
item
.
SpecificationSort
).
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
);
}
}
}
}
}
}
else
{
item
.
SmallShopsCostPrice
=
gmodel
.
SellingPrice
??
0
;
if
(
demodel
.
SmallShopsId
>
0
)
{
...
...
@@ -5118,8 +4940,8 @@ namespace Mall.Module.Product
}
}
}
}
#
endregion
#
region
会员价格
gmodel
.
MemberPrice
=
gmodel
.
SellingPrice
??
0
;
if
(
umodel
.
MemberGrade
>
0
)
...
...
@@ -5193,8 +5015,6 @@ namespace Mall.Module.Product
#
endregion
item
.
SmallShopsCostPrice
=
(
item
.
SmallShopsCostPrice
??
0
)
*
(
item
.
Number
??
0
);
item
.
NorGoodsMoney
=
item
.
Final_Price
??
0
;
//用于计算 运费的 202-08-05 ld
item
.
GoodsWeight
=
GoodsWeight
;
item
.
Unit_Price
=
gmodel
.
SellingPrice
??
0
;
item
.
Original_Price
=
(
item
.
Unit_Price
)
*
(
item
.
Number
);
...
...
@@ -5351,39 +5171,103 @@ namespace Mall.Module.Product
}
#
endregion
TotalMoney
+=
(
item
.
Final_Price
??
0
);
item
.
OrderType
=
OrderTypeEnum
.
OfflineService
;
item
.
GoodServiceTime
=
goodModel
?.
ServiceTime
??
0
;
item
.
GoodsName
=
gmodel
.
Name
;
item
.
CoverImage
=
""
;
if
(!
string
.
IsNullOrEmpty
(
gmodel
.
CarouselImage
)
&&
gmodel
.
CarouselImage
!=
"[]"
)
#
region
课程卡
if
(
demodel
.
Use_Education_Id
>
0
)
{
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
())
var
ccmodel
=
eList
.
Where
(
x
=>
x
.
Id
==
demodel
.
Use_Education_Id
).
FirstOrDefault
();
string
couponItem
=
(
ccmodel
?.
CouponId
??
0
).
ToString
();
if
(!
string
.
IsNullOrEmpty
(
couponItem
))
{
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
();
var
dcModel
=
deList
.
Where
(
x
=>
x
.
ID
==
Convert
.
ToInt32
(
couponItem
)).
FirstOrDefault
();
if
(
dcModel
==
null
)
{
message
=
"优惠卷不存在,亲核实后再试"
;
return
false
;
}
if
(
dcModel
.
MinConsumePrice
>
0
)
if
(
dcModel
.
UseType
==
Common
.
Enum
.
MarketingCenter
.
UseTypeEnum
.
Category
)
//指定分类
{
if
(
FinalMoney
<
dcModel
.
MinConsumePrice
)
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
())
{
FinalMoney
=
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
.
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
)
{
message
=
"优惠卷不存在,亲核实后再试"
;
return
false
;
}
if
(
dcModel
.
MinConsumePrice
>
0
)
{
if
(
FinalMoney
<
dcModel
.
MinConsumePrice
)
{
FinalMoney
=
0
;
}
}
if
(
dcModel
.
CouponType
==
Common
.
Enum
.
MarketingCenter
.
CouponTypeEnum
.
FullReduction
&&
FinalMoney
>
0
)
...
...
@@ -5415,16 +5299,12 @@ namespace Mall.Module.Product
}
}
}
#
region
处理全局包邮
List
<
RB_FreeShipping_Extend
>
freeShippingList
=
new
List
<
RB_FreeShipping_Extend
>();
if
(
YFCategoryList
.
Any
())
if
(
demodel
.
Use_Education_Id
>
0
&&
GoodsCouponList
.
Any
())
{
YFCategoryList
=
YFCategoryList
.
Distinct
().
ToList
();
string
categoryIds
=
string
.
Join
(
","
,
YFCategoryList
);
freeShippingList
=
freeShippingRepository
.
GetFreeShippingListByCategoryIds
(
new
RB_FreeShipping_Extend
{
MallBaseId
=
demodel
.
MallBaseId
,
TenantId
=
demodel
.
TenantId
,
CategoryIds
=
categoryIds
});
var
ccmodel
=
eList
.
Where
(
x
=>
x
.
Id
==
demodel
.
Use_Education_Id
).
FirstOrDefault
();
GoodsCouponList
=
GoodsCouponList
.
OrderBy
(
x
=>
x
.
TotalMoney
).
Take
(
ccmodel
.
HeXiao
-
ccmodel
.
UseHeXiao
).
ToList
();
}
#
endregion
List
<
int
>
ExpressGoodsId
=
new
List
<
int
>();
//同商品 多规格
foreach
(
var
item
in
demodel
.
DetailList
)
{
var
gmodel
=
gList
.
Where
(
x
=>
x
.
Id
==
item
.
GoodsId
).
FirstOrDefault
();
...
...
@@ -5434,6 +5314,9 @@ namespace Mall.Module.Product
}
item
.
SupplierId
=
gmodel
.
SupplierId
;
item
.
CouponMoney
=
0
;
item
.
GoodServiceTime
=
gmodel
.
ServiceTime
;
if
(
demodel
.
User_Coupon_Id
>
0
)
{
var
couponModel
=
GoodsCouponList
.
Where
(
x
=>
x
.
GoodsId
==
item
.
GoodsId
).
FirstOrDefault
();
if
(
couponModel
!=
null
)
{
...
...
@@ -5446,232 +5329,21 @@ namespace Mall.Module.Product
item
.
SmallShopsCostPrice
-=
(
item
.
CouponMoney
??
0
);
}
}
#
region
运费
decimal
Express
=
0
;
decimal
TExpress
=
0
;
bool
ExpressIsReckon
=
false
;
if
(
demodel
.
DeliveryMethod
==
OrderDeliveryMethodEnum
.
ExpressDistribution
)
{
//计算总和
int
exNum
=
demodel
.
DetailList
.
Where
(
x
=>
x
.
GoodsId
==
item
.
GoodsId
).
Sum
(
x
=>
x
.
Number
??
0
);
decimal
exMoney
=
demodel
.
DetailList
.
Where
(
x
=>
x
.
GoodsId
==
item
.
GoodsId
).
Sum
(
x
=>
x
.
NorGoodsMoney
);
if
(!((
gmodel
.
FullNumPinkage
>
0
&&
exNum
>=
gmodel
.
FullNumPinkage
)
||
(
gmodel
.
FullMoneyPinkage
>
0
&&
exMoney
>=
gmodel
.
FullMoneyPinkage
)))
{
bool
FreeShipping_Use
=
false
;
if
((
gmodel
.
FullMoneyPinkage
??
0
)
==
0
&&
(
gmodel
.
FullNumPinkage
??
0
)
==
0
&&
YFCategoryList
.
Any
())
{
//查找全局包邮规则
if
(
freeShippingList
!=
null
&&
freeShippingList
.
Any
())
{
var
fullNumPinkageModel
=
freeShippingList
.
Where
(
x
=>
item
.
CategoryIdList
.
Contains
(
x
.
CategoryId
)
&&
x
.
IsFreeShipping
==
1
&&
x
.
IsEnable
==
1
&&
x
.
FullNumPinkage
>
0
&&
x
.
CategoryId
>
0
).
OrderBy
(
x
=>
x
.
FullNumPinkage
).
ThenByDescending
(
x
=>
x
.
ID
).
FirstOrDefault
();
if
(
fullNumPinkageModel
==
null
||
fullNumPinkageModel
.
ID
<=
0
)
{
fullNumPinkageModel
=
freeShippingList
.
Where
(
x
=>
item
.
CategoryIdList
.
Contains
(
x
.
CategoryId
)
&&
x
.
IsFreeShipping
==
1
&&
x
.
IsEnable
==
1
&&
x
.
FullMoneyPinkage
>
0
&&
x
.
CategoryId
>
0
).
OrderBy
(
x
=>
x
.
FullMoneyPinkage
).
ThenByDescending
(
x
=>
x
.
ID
).
FirstOrDefault
();
}
if
(
fullNumPinkageModel
==
null
||
fullNumPinkageModel
.
ID
<=
0
)
{
fullNumPinkageModel
=
freeShippingList
.
Where
(
x
=>
item
.
CategoryIdList
.
Contains
(
x
.
CategoryId
)
&&
x
.
IsFreeShipping
==
1
&&
x
.
IsEnable
==
1
&&
x
.
FullNumPinkage
>
0
&&
x
.
CategoryId
==
0
).
OrderBy
(
x
=>
x
.
FullNumPinkage
).
ThenByDescending
(
x
=>
x
.
ID
).
FirstOrDefault
();
}
if
(
fullNumPinkageModel
==
null
||
fullNumPinkageModel
.
ID
<=
0
)
{
fullNumPinkageModel
=
freeShippingList
.
Where
(
x
=>
item
.
CategoryIdList
.
Contains
(
x
.
CategoryId
)
&&
x
.
IsFreeShipping
==
1
&&
x
.
IsEnable
==
1
&&
x
.
FullMoneyPinkage
>
0
&&
x
.
CategoryId
==
0
).
OrderBy
(
x
=>
x
.
FullMoneyPinkage
).
ThenByDescending
(
x
=>
x
.
ID
).
FirstOrDefault
();
}
if
(
fullNumPinkageModel
!=
null
)
{
//看所有商品是否满足该规则
var
sglist
=
SatisfiedGoodsList
.
Where
(
x
=>
x
.
FreeShipping
==
fullNumPinkageModel
.
ID
).
ToList
();
var
nosglist
=
SatisfiedGoodsList
.
Where
(
x
=>
x
.
FreeShipping
!=
fullNumPinkageModel
.
ID
).
ToList
();
if
(
sglist
.
Any
())
{
//看着商品是否包含在这里面
if
(
sglist
.
Where
(
x
=>
x
.
GoodsId
==
item
.
GoodsId
&&
x
.
SpecificationKey
==
item
.
SpecificationSort
).
Any
())
{
FreeShipping_Use
=
true
;
item
.
FreeShippingRemarks
=
sglist
.
Where
(
x
=>
x
.
GoodsId
==
item
.
GoodsId
&&
x
.
SpecificationKey
==
item
.
SpecificationSort
).
FirstOrDefault
().
Name
;
}
}
else
{
//根据 查询出所有的订单商品
var
SatisfiedGoodsList2
=
new
List
<
FreeShippingGoodsDetail
>();
foreach
(
var
qitem
in
demodel
.
DetailList
)
{
var
qgmodel
=
gList
.
Where
(
x
=>
x
.
Id
==
qitem
.
GoodsId
).
FirstOrDefault
();
if
(
qgmodel
!=
null
&&
qgmodel
.
GoodsStatus
==
1
&&
(
qgmodel
.
FullMoneyPinkage
??
0
)
==
0
&&
(
qgmodel
.
FullNumPinkage
??
0
)
==
0
)
{
if
(!
nosglist
.
Where
(
x
=>
x
.
GoodsId
==
qitem
.
GoodsId
&&
x
.
SpecificationKey
==
qitem
.
SpecificationSort
).
Any
())
{
var
fpkModel
=
freeShippingList
.
Where
(
x
=>
qitem
.
CategoryIdList
.
Contains
(
x
.
CategoryId
)
&&
x
.
IsFreeShipping
==
1
&&
x
.
IsEnable
==
1
&&
x
.
FullNumPinkage
>
0
&&
x
.
CategoryId
>
0
).
OrderBy
(
x
=>
x
.
FullNumPinkage
).
ThenByDescending
(
x
=>
x
.
ID
).
FirstOrDefault
();
if
(
fpkModel
==
null
||
fpkModel
.
ID
<=
0
)
{
fpkModel
=
freeShippingList
.
Where
(
x
=>
qitem
.
CategoryIdList
.
Contains
(
x
.
CategoryId
)
&&
x
.
IsFreeShipping
==
1
&&
x
.
IsEnable
==
1
&&
x
.
FullMoneyPinkage
>
0
&&
x
.
CategoryId
>
0
).
OrderBy
(
x
=>
x
.
FullMoneyPinkage
).
ThenByDescending
(
x
=>
x
.
ID
).
FirstOrDefault
();
}
if
(
fpkModel
==
null
||
fpkModel
.
ID
<=
0
)
{
fpkModel
=
freeShippingList
.
Where
(
x
=>
qitem
.
CategoryIdList
.
Contains
(
x
.
CategoryId
)
&&
x
.
IsFreeShipping
==
1
&&
x
.
IsEnable
==
1
&&
x
.
FullNumPinkage
>
0
&&
x
.
CategoryId
==
0
).
OrderBy
(
x
=>
x
.
FullNumPinkage
).
ThenByDescending
(
x
=>
x
.
ID
).
FirstOrDefault
();
}
if
(
fpkModel
==
null
||
fpkModel
.
ID
<=
0
)
{
fpkModel
=
freeShippingList
.
Where
(
x
=>
qitem
.
CategoryIdList
.
Contains
(
x
.
CategoryId
)
&&
x
.
IsFreeShipping
==
1
&&
x
.
IsEnable
==
1
&&
x
.
FullMoneyPinkage
>
0
&&
x
.
CategoryId
==
0
).
OrderBy
(
x
=>
x
.
FullMoneyPinkage
).
ThenByDescending
(
x
=>
x
.
ID
).
FirstOrDefault
();
}
if
(
fpkModel
!=
null
&&
fpkModel
.
ID
==
fullNumPinkageModel
.
ID
)
{
//是同一包邮规则里的
string
Name
=
fullNumPinkageModel
.
Name
;
if
(
fullNumPinkageModel
.
FullNumPinkage
>
0
)
{
Name
+=
":满"
+
fullNumPinkageModel
.
FullNumPinkage
+
"件包邮"
;
}
else
if
(
fullNumPinkageModel
.
FullMoneyPinkage
>
0
)
{
Name
+=
":满"
+
fullNumPinkageModel
.
FullMoneyPinkage
+
"元包邮"
;
}
SatisfiedGoodsList2
.
Add
(
new
FreeShippingGoodsDetail
()
{
FreeShipping
=
fullNumPinkageModel
.
ID
,
Name
=
Name
,
GoodsId
=
qitem
.
GoodsId
??
0
,
SpecificationKey
=
qitem
.
SpecificationSort
,
Number
=
qitem
.
Number
??
0
,
Money
=
qitem
.
NorGoodsMoney
,
CategoryId
=
fullNumPinkageModel
.
CategoryId
});
}
}
}
}
if
(
SatisfiedGoodsList2
.
Any
())
item
.
EducationCouponId
=
0
;
if
(
demodel
.
Use_Education_Id
>
0
)
{
//看是否满足包邮
if
(
fullNumPinkageModel
.
FullNumPinkage
>
0
)
{
if
(
SatisfiedGoodsList2
.
Sum
(
x
=>
x
.
Number
)
>=
fullNumPinkageModel
.
FullNumPinkage
)
{
FreeShipping_Use
=
true
;
SatisfiedGoodsList
.
AddRange
(
SatisfiedGoodsList2
);
}
}
else
if
(
fullNumPinkageModel
.
FullMoneyPinkage
>
0
)
{
if
(
SatisfiedGoodsList2
.
Sum
(
x
=>
x
.
Money
)
>=
fullNumPinkageModel
.
FullMoneyPinkage
)
var
couponModel
=
GoodsCouponList
.
Where
(
x
=>
x
.
GoodsId
==
item
.
GoodsId
).
FirstOrDefault
();
if
(
couponModel
!=
null
)
{
FreeShipping_Use
=
true
;
SatisfiedGoodsList
.
AddRange
(
SatisfiedGoodsList2
)
;
}
EducationMoney
+=
couponModel
.
TotalMoney
;
EducationNum
+=
1
;
item
.
EducationCouponId
=
demodel
.
Use_Education_Id
;
}
}
//看着商品是否包含在这里面
if
(
SatisfiedGoodsList
.
Where
(
x
=>
x
.
GoodsId
==
item
.
GoodsId
&&
x
.
SpecificationKey
==
item
.
SpecificationSort
).
Any
())
{
item
.
FreeShippingRemarks
=
SatisfiedGoodsList
.
Where
(
x
=>
x
.
GoodsId
==
item
.
GoodsId
&&
x
.
SpecificationKey
==
item
.
SpecificationSort
).
FirstOrDefault
().
Name
;
}
}
}
}
}
if
(
FreeShipping_Use
==
false
)
{
int
FreightId2
=
gmodel
.
FreightId
??
0
;
if
(
gmodel
.
FreightId
==
0
)
{
FreightId2
=
DefFreightId
;
}
if
(
FreightId2
>
0
)
{
var
rulesModel
=
rulesList
.
Where
(
x
=>
x
.
ID
==
FreightId2
).
FirstOrDefault
();
List
<
Model
.
Extend
.
BaseSetUp
.
RB_Logistics_RulesPrice_Extend
>
priceList2
=
priceList
.
Where
(
x
=>
x
.
RulesId
==
FreightId2
).
ToList
();
if
(
priceList2
.
Any
())
{
var
priceIds
=
priceList2
.
Select
(
x
=>
x
.
ID
).
ToList
();
var
regionList2
=
regionList
.
Where
(
x
=>
priceIds
.
Contains
(
x
.
RulesPriceId
)).
ToList
();
item
.
FreightMoney
=
0
;
var
regionModel
=
regionList2
.
Where
(
x
=>
disList
.
Contains
(
x
.
RegionId
)).
FirstOrDefault
();
if
(
regionModel
!=
null
)
{
var
pmodel
=
priceList2
.
Where
(
x
=>
x
.
ID
==
regionModel
.
RulesPriceId
).
FirstOrDefault
();
if
(
pmodel
!=
null
&&
rulesModel
!=
null
)
{
if
(
rulesModel
.
ChargeMode
==
Common
.
Enum
.
MallBase
.
ChargeModeEnum
.
Num
)
{
//按件计费
if
(
exNum
<=
pmodel
.
First
)
{
Express
=
pmodel
.
FirstPrice
;
}
else
{
if
(
pmodel
.
Second
>
0
)
{
if
((
exNum
-
pmodel
.
First
)
%
pmodel
.
Second
==
0
)
{
Express
=
pmodel
.
FirstPrice
+
((
exNum
-
pmodel
.
First
)
/
pmodel
.
Second
)
*
pmodel
.
SecondPrice
;
}
else
{
Express
=
pmodel
.
FirstPrice
+
((
exNum
-
pmodel
.
First
)
/
pmodel
.
Second
+
1
)
*
pmodel
.
SecondPrice
;
}
}
else
{
Express
=
pmodel
.
FirstPrice
;
}
}
}
else
{
//重量计费
int
TotalW
=
exNum
*
(
item
.
GoodsWeight
??
0
);
if
(
TotalW
<=
pmodel
.
First
)
{
Express
=
pmodel
.
FirstPrice
;
}
else
{
if
(
pmodel
.
Second
>
0
)
{
if
((
TotalW
-
pmodel
.
First
)
%
pmodel
.
Second
==
0
)
{
Express
=
pmodel
.
FirstPrice
+
((
TotalW
-
pmodel
.
First
)
/
pmodel
.
Second
)
*
pmodel
.
SecondPrice
;
}
else
{
Express
=
pmodel
.
FirstPrice
+
((
TotalW
-
pmodel
.
First
)
/
pmodel
.
Second
+
1
)
*
pmodel
.
SecondPrice
;
}
}
else
{
Express
=
pmodel
.
FirstPrice
;
}
}
}
}
}
}
}
TExpress
=
Express
;
if
(
exNum
!=
item
.
Number
)
{
Express
=
Math
.
Round
(
Express
*
(
item
.
Number
??
0
)
/
exNum
,
2
,
MidpointRounding
.
AwayFromZero
);
if
(!
ExpressGoodsId
.
Contains
(
item
.
GoodsId
??
0
))
{
ExpressGoodsId
.
Add
(
item
.
GoodsId
??
0
);
}
else
{
ExpressIsReckon
=
true
;
}
}
}
}
}
if
(!
ExpressIsReckon
)
{
TotalExpress
+=
TExpress
;
}
#
endregion
item
.
FreightMoney
=
Express
;
item
.
CommentGiveIntegral
=
0
;
if
(
gmodel
.
IntegralComment
>
0
)
{
...
...
@@ -5686,9 +5358,9 @@ namespace Mall.Module.Product
}
}
}
if
(
demodel
.
FreightMoney
!=
TotalExpress
)
if
(
(
demodel
?.
EducationMoney
??
0
)
!=
EducationMoney
)
{
message
=
"
运费
不正确"
;
message
=
"
套餐卡抵扣金额
不正确"
;
return
false
;
}
if
(
CouponsMoney
!=
demodel
.
CouponMoney
)
...
...
@@ -5696,8 +5368,9 @@ namespace Mall.Module.Product
message
=
"优惠金额计算有误"
;
return
false
;
}
//验证总额
if
(
demodel
.
Income
!=
(
TotalMoney
+
TotalExpress
))
if
(
demodel
.
Income
!=
(
TotalMoney
-
EducationMoney
))
{
message
=
"订单合计金额不正确"
;
return
false
;
...
...
@@ -5705,28 +5378,27 @@ namespace Mall.Module.Product
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);
//
}
//
}
//
}
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
try
{
Random
R
=
new
Random
();
...
...
@@ -5735,6 +5407,14 @@ namespace Mall.Module.Product
demodel
.
PaymentWay
=
OrderPaymentTypeEnum
.
OnlinePayment
;
//先默认在线支付
demodel
.
Remark
??=
""
;
demodel
.
ApplyForCancelStatus
??=
0
;
if
(
demodel
.
Income
==
0
)
{
demodel
.
OrderStatus
=
OrderStatusEnum
.
Completed
;
demodel
.
PaymentTime
=
DateTime
.
Now
;
demodel
.
DeliveryTime
=
DateTime
.
Now
;
demodel
.
ReceivingTime
=
DateTime
.
Now
;
demodel
.
FinishTime
=
DateTime
.
Now
;
}
int
OrderId
=
goods_OrderRepository
.
Insert
(
demodel
);
if
(
OrderId
>
0
)
{
...
...
@@ -5751,7 +5431,7 @@ namespace Mall.Module.Product
}
#
endregion
//插入订单明细+ 商品库存更新
InsertOrderDetail
(
demodel
,
null
,
OrderId
,
SatisfiedGoodsList
);
InsertOrderDetail
(
demodel
,
null
,
OrderId
,
new
List
<
FreeShippingGoodsDetail
>()
);
//用户订单数增加
Dictionary
<
string
,
object
>
keyValues
=
new
Dictionary
<
string
,
object
>()
...
...
@@ -5769,7 +5449,16 @@ namespace Mall.Module.Product
{
nameof
(
RB_Member_DiscountCoupon_Extend
.
UseDate
),
DateTime
.
Now
},
{
nameof
(
RB_Member_DiscountCoupon_Extend
.
UseState
),
1
}
};
member_CouponRepository
.
Update
(
keyValues1
,
new
WhereHelper
(
nameof
(
RB_Member_DiscountCoupon_Extend
.
Id
),
item
.
Id
));
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
);
umodel
.
CouponsNum
=
(
umodel
.
CouponsNum
??
0
)
-
1
;
}
if
(
umodel
.
CouponsNum
<
0
)
...
...
@@ -5778,6 +5467,7 @@ namespace Mall.Module.Product
}
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
));
...
...
@@ -5797,7 +5487,55 @@ namespace Mall.Module.Product
OrderId
=
OrderId
});
}
member_UserRepository
.
Update
(
keyValues
,
new
WhereHelper
(
nameof
(
RB_Member_User_Extend
.
Id
),
umodel
.
Id
));
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
);
#
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
});
var
educationModel
=
eList
.
FirstOrDefault
();
if
(
educationModel
!=
null
)
{
//更新用户课程卡 已使用数量
Dictionary
<
string
,
object
>
keyValues1
=
new
Dictionary
<
string
,
object
>()
{
{
nameof
(
RB_Education_MemberCoupon_Extend
.
UseHeXiao
),
educationModel
.
UseHeXiao
+
EducationNum
}
};
List
<
WhereHelper
>
wheres1
=
new
List
<
WhereHelper
>()
{
new
WhereHelper
()
{
FiledName
=
nameof
(
RB_Education_MemberCoupon_Extend
.
Id
),
FiledValue
=
educationModel
.
Id
,
OperatorEnum
=
OperatorEnum
.
Equal
}
};
education_MemberCouponRepository
.
Update
(
keyValues1
,
wheres1
);
}
}
#
endregion
//来自购物车的话 需清除购物车数据
if
(
demodel
.
IsFormShoppingCart
==
1
)
...
...
@@ -5849,7 +5587,16 @@ namespace Mall.Module.Product
{
nameof
(
RB_Member_User_Extend
.
IsBeDownline
),
1
},
{
nameof
(
RB_Member_User_Extend
.
BeDownlineDate
),
DateTime
.
Now
},
};
member_UserRepository
.
Update
(
keyValues1
,
new
WhereHelper
(
nameof
(
RB_Member_User_Extend
.
Id
),
umodel
.
Id
));
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
);
}
//任务执行返佣 失败查看日志,手动返佣(空闲可增加手动返佣接口)
...
...
@@ -5864,7 +5611,7 @@ namespace Mall.Module.Product
Id
=
0
,
Type
=
1
,
SourceId
=
OrderId
,
Content
=
"新增
线下服务
订单"
,
Content
=
"新增
课程
订单"
,
CreateDate
=
DateTime
.
Now
,
MallBaseId
=
demodel
.
MallBaseId
,
TenantId
=
demodel
.
TenantId
...
...
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