Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
M
my-yaf-project
Project
Project
Details
Activity
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
chenchuanwen
my-yaf-project
Commits
4b092fcc
Commit
4b092fcc
authored
Nov 09, 2018
by
liuyuzhen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
订单确认相关
parent
555e2fa7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
291 additions
and
58 deletions
+291
-58
OrderConfirmUtil.php
application/library/Order/OrderConfirmUtil.php
+171
-9
CartService.php
application/models/Business/Cart/CartService.php
+3
-3
AddressService.php
application/models/Business/User/AddressService.php
+0
-1
DeliveryFormula.php
application/models/DAO/DeliveryFormula.php
+104
-43
FavoritesStore.php
application/models/DAO/FavoritesStore.php
+1
-1
Goods.php
application/models/DAO/Goods.php
+1
-0
CodeConfig.php
application/models/Error/CodeConfig.php
+11
-1
No files found.
application/library/Order/OrderConfirmUtil.php
View file @
4b092fcc
...
...
@@ -47,15 +47,18 @@ class OrderConfirmUtil {
private
$couponCacheFlag
=
false
;
public
function
addOrder
(
$data
,
$memberId
,
$currentAddress
){
$storeCartData
=
$this
->
checkPostData
(
$data
,
$memberId
,
$currentAddress
);
public
function
addOrder
(
$data
,
$memberId
,
$currentAddress
,
$newFlag
=
false
){
$storeCartData
=
$this
->
checkPostData
(
$data
,
$memberId
,
$currentAddress
,
$newFlag
);
//return $storeCartData;
$storeCartData
=
$this
->
checkDeliveryTypeAndPayway
(
$storeCartData
);
if
(
$newFlag
){
$storeCartData
=
$this
->
checkDeliveryTypeAndPaywayNew
(
$storeCartData
);
}
else
{
$storeCartData
=
$this
->
checkDeliveryTypeAndPayway
(
$storeCartData
);
}
return
$this
->
saveOrderInfo
(
$storeCartData
);
}
/**
* 验证传入数据的完成性
* @param $data
...
...
@@ -65,7 +68,7 @@ class OrderConfirmUtil {
* @throws \Error\OurExceptionModelfav
* @throws \Exception
*/
public
function
checkPostData
(
$data
,
$memberId
,
$currentAddress
){
public
function
checkPostData
(
$data
,
$memberId
,
$currentAddress
,
$newFlag
=
false
){
$dbName
=
\Our\DbNameConst
::
masterDBConnectName
;
$this
->
memberId
=
$memberId
;
$this
->
member
=
\DAO\MemberModel
::
getInstance
()
->
getInfo
(
$this
->
memberId
);
...
...
@@ -79,7 +82,11 @@ class OrderConfirmUtil {
\Error\ErrorModel
::
throwException
(
\Error\CodeConfigModel
::
emptyParamForOrder
);
}
if
(
isset
(
$this
->
postData
[
'storeId'
])
&&
$this
->
postData
[
'storeId'
]){
//组合销售或者单品的立即购买
$this
->
checkOneStoreData
(
$this
->
postData
);
if
(
$newFlag
){
$this
->
checkOneStoreDataNew
(
$this
->
postData
);
}
else
{
$this
->
checkOneStoreData
(
$this
->
postData
);
}
if
((
isset
(
$this
->
postData
[
'blId'
])
&&
$this
->
postData
[
'blId'
]
>
\Our\ApiConst
::
zero
)
&&
(
isset
(
$this
->
postData
[
'goodsId'
])
&&
$this
->
postData
[
'goodsId'
]
>
\Our\ApiConst
::
zero
)){
\Error\ErrorModel
::
throwException
(
\Error\CodeConfigModel
::
wrongBlIdAndGoodsIdForOrder
);
}
else
if
(
!
(
isset
(
$this
->
postData
[
'goodsId'
])
&&
$this
->
postData
[
'goodsId'
]
>
\Our\ApiConst
::
zero
)
&&!
(
isset
(
$this
->
postData
[
'blId'
])
&&
$this
->
postData
[
'blId'
]
>
\Our\ApiConst
::
zero
)){
...
...
@@ -97,7 +104,11 @@ class OrderConfirmUtil {
}
else
{
$this
->
cartCacheDeleteFlag
=
true
;
foreach
(
$this
->
postData
as
$temp
){
$this
->
checkOneStoreData
(
$temp
);
if
(
$newFlag
){
$this
->
checkOneStoreDataNew
(
$temp
);
}
else
{
$this
->
checkOneStoreData
(
$temp
);
}
if
(
!
$temp
[
'cartIds'
]){
\Error\ErrorModel
::
throwException
(
\Error\CodeConfigModel
::
emptyCartIdsForOrder
);
}
...
...
@@ -176,6 +187,52 @@ class OrderConfirmUtil {
}
}
/**
* 配送方式只包含商家配送和自提的参数检验
* @param $temp
* @throws \Error\OurExceptionModel
* @throws \Exception
*/
public
function
checkOneStoreDataNew
(
$temp
){
if
(
!
$temp
[
'storeId'
]){
\Error\ErrorModel
::
throwException
(
\Error\CodeConfigModel
::
emptyStoreIdForOrder
);
}
if
(
!
(
isset
(
$temp
[
'payway'
]))
&&
in_array
(
$temp
[
'payway'
],
array
(
\Our\ApiConst
::
payOnline
,
\Our\ApiConst
::
payOffline
,
\Our\ApiConst
::
payAog
))){
//验证支付方式
\Error\ErrorModel
::
throwException
(
\Error\CodeConfigModel
::
wrongPaywayForOrder
);
}
if
(
!
(
isset
(
$temp
[
'deliveryType'
]))
&&
in_array
(
$temp
[
'deliveryType'
],
array
(
\Our\ApiConst
::
deliveryBuyer
,
\Our\ApiConst
::
deliveryStore
))){
\Error\ErrorModel
::
throwException
(
\Error\CodeConfigModel
::
wrongDeliveryTypeForOrder
);
}
if
(
!
(
$temp
[
'deliveryTime'
])){
\Error\ErrorModel
::
throwException
(
\Error\CodeConfigModel
::
emptyDeliveryTime
);
}
$minute
=
intval
(
date
(
'i'
,
$temp
[
'deliveryTime'
]));
if
(
!
(
$minute
==
0
||
$minute
==
30
)){
\Error\ErrorModel
::
throwException
(
\Error\CodeConfigModel
::
wrongDeliveryTime
);
}
if
(
$temp
[
'deliveryType'
]
==
\Our\ApiConst
::
deliveryBuyer
){
if
(
!
isset
(
$temp
[
'buyerMobile'
])){
\Error\ErrorModel
::
throwException
(
\Error\CodeConfigModel
::
emptyBuyerMobile
);
}
if
(
!
\Our\Common
::
checkMobilePhone
(
$temp
[
'buyerMobile'
])){
\Error\ErrorModel
::
throwException
(
\Error\CodeConfigModel
::
wrongBuyerMobile
);
}
}
if
(
!
isset
(
$temp
[
'deliveryFee'
])){
\Error\ErrorModel
::
throwException
(
\Error\CodeConfigModel
::
emptyDeliveryFeeForOrder
);
}
if
(
isset
(
$temp
[
'couponId'
])
&&
$temp
[
'couponId'
]
>
\Our\ApiConst
::
zero
){
//商品如果有使用优惠券
if
(
intval
(
$temp
[
'couponId'
])
<=
\Our\ApiConst
::
zero
){
\Error\ErrorModel
::
throwException
(
\Error\CodeConfigModel
::
wrongCouponIdForOrder
);
}
else
{
$this
->
couponIds
[]
=
$temp
[
'couponId'
];
$this
->
storeCouponIds
[
$temp
[
'storeId'
]]
=
$temp
[
'couponId'
];
}
}
}
/**
* 检查配送方式
* @param $storeCartData
...
...
@@ -232,8 +289,87 @@ class OrderConfirmUtil {
\Error\ErrorModel
::
throwException
(
\Error\CodeConfigModel
::
noExpressDeliveryForOrder1
);
}
$deliveryFee
=
$temp
[
'shippingFee'
];
$delivery
[
'buyerMobile'
]
=
$requestData
[
'buyerMobile'
];
}
if
(
$deliveryFee
!=
$requestData
[
'deliveryFee'
]){
\Error\ErrorModel
::
throwException
(
\Error\CodeConfigModel
::
wrongStoreDeliveryFeeForOrder
);
}
$delivery
[
'deliveryFee'
]
=
$deliveryFee
;
$delivery
[
'deliveryType'
]
=
$requestData
[
'deliveryType'
];
$delivery
[
'deliveryTime'
]
=
isset
(
$deliveryTime
)
?
$deliveryTime
:
\Our\ApiConst
::
zero
;
$storeCartData
[
'cartList'
][
$storeId
][
'delivery'
]
=
$delivery
;
if
((
$requestData
[
'payway'
]
==
\Our\ApiConst
::
payOnline
&&
$temp
[
'onelinePay'
]
==
\Our\ApiConst
::
one
)
||
(
$requestData
[
'payway'
]
==
\Our\ApiConst
::
payOffline
&&
$temp
[
'offlinePay'
]
==
\Our\ApiConst
::
one
)
||
((
$requestData
[
'payway'
]
==
\Our\ApiConst
::
payAog
&&
$temp
[
'aogPay'
]
==
\Our\ApiConst
::
one
))){
$storeCartData
[
'cartList'
][
$storeId
][
'payway'
]
=
$requestData
[
'payway'
];
}
else
{
\Error\ErrorModel
::
throwException
(
\Error\CodeConfigModel
::
wrongPaywayForStoreForOrder
);
}
$reliefAmount
=
isset
(
$tempStore
[
'reliefAmount'
])
?
$tempStore
[
'reliefAmount'
]
:
\Our\ApiConst
::
zero
;
$orderAmount
=
$tempStore
[
'storeTotalPrice'
]
-
$reliefAmount
+
$deliveryFee
;
if
(
$orderAmount
<=
\Our\ApiConst
::
zero
){
$orderAmount
=
\Our\ApiConst
::
zero
;
}
if
(
$orderAmount
!=
$requestData
[
'totalFee'
]){
\Error\ErrorModel
::
throwException
(
\Error\CodeConfigModel
::
wrongTotalFeeForOrder
);
}
$storeCartData
[
'cartList'
][
$storeId
][
'orderAmount'
]
=
$orderAmount
;
}
return
$storeCartData
;
}
/**
* 检查配送方式
* @param $storeCartData
* @return mixed
*/
public
function
checkDeliveryTypeAndPaywayNew
(
$storeCartData
){
$cartService
=
\Business\Cart\CartServiceModel
::
getInstance
();
$storeCartData
=
$cartService
->
getDeliveryTypeForCartNew
(
$this
->
address
,
$storeCartData
,
\Our\DbNameConst
::
masterDBConnectName
,
true
);
$currentTime
=
time
();
$todayTime
=
strtotime
(
date
(
'Y-m-d'
,
time
()));
$tomorrowTime
=
$todayTime
+
\Our\ApiConst
::
oneDaySecond
;
foreach
(
$storeCartData
[
'cartList'
]
as
$storeId
=>
$tempStore
){
$temp
=
$tempStore
[
'deliverySetting'
];
if
(
isset
(
$this
->
postData
[
'storeId'
])
&&
$this
->
postData
[
'storeId'
]){
$requestData
=
$this
->
postData
;
}
else
{
$requestData
=
$this
->
postFormatData
[
$storeId
];
}
if
(
$requestData
[
'deliveryType'
]
==
\Our\ApiConst
::
deliveryStore
){
//商家配送
if
(
$temp
[
'sellerDistribution'
]
!=
\Our\ApiConst
::
one
){
\Error\ErrorModel
::
throwException
(
\Error\CodeConfigModel
::
noStoreDeliveryTypeForOrder
);
}
if
(
$requestData
[
'deliveryTime'
]
>=
$todayTime
&&
$requestData
[
'deliveryTime'
]
<
$todayTime
*
3
){
$tempList
=
array_column
(
$temp
[
'deliverTimeList'
],
'list'
,
'time'
);
$currentDay
=
strtotime
(
date
(
'Y-m-d'
,
$requestData
[
'deliveryTime'
]));
$currentList
=
$tempList
[
$currentDay
];
$feeArray
=
array_column
(
$currentList
,
'price'
,
'time'
);
$deliveryFee
=
$feeArray
[
$requestData
[
'deliveryTime'
]];
}
else
{
\Error\ErrorModel
::
throwException
(
\Error\CodeConfigModel
::
wrongDeliveryTimeRangeForOrder
);
}
}
else
if
(
$requestData
[
'deliveryType'
]
==
\Our\ApiConst
::
deliveryBuyer
){
if
(
$temp
[
'buyerDistribution'
]
!=
\Our\ApiConst
::
one
){
\Error\ErrorModel
::
throwException
(
\Error\CodeConfigModel
::
noBuyerDeliveryTypeForOrder
);
}
if
(
$requestData
[
'deliveryFee'
]
!=
\Our\ApiConst
::
zero
){
\Error\ErrorModel
::
throwException
(
\Error\CodeConfigModel
::
noDeliveryFeeForBuyerType
);
}
if
(
$requestData
[
'deliveryTime'
]
>=
$todayTime
&&
$requestData
[
'deliveryTime'
]
<
$todayTime
*
3
){
$tempList
=
array
(
$temp
[
'selfDeliveryTimeList'
],
'list'
,
'time'
);
$currentDay
=
strtotime
(
date
(
'Y-m-d'
,
$requestData
[
'deliveryTime'
]));
$currentList
=
$tempList
[
$currentDay
];
$feeArray
=
array_column
(
$currentList
,
'price'
,
'time'
);
$deliveryFee
=
$feeArray
[
$requestData
[
'deliveryTime'
]];
}
else
{
\Error\ErrorModel
::
throwException
(
\Error\CodeConfigModel
::
wrongBuyerTimeRangeForOrder
);
}
//$deliveryFee = \Our\ApiConst::zero;
}
var_dump
(
$deliveryFee
);
if
(
$deliveryFee
!=
$requestData
[
'deliveryFee'
]){
\Error\ErrorModel
::
throwException
(
\Error\CodeConfigModel
::
wrongStoreDeliveryFeeForOrder
);
}
...
...
@@ -354,6 +490,7 @@ class OrderConfirmUtil {
$needPayFlag
=
\Our\ApiConst
::
zero
;
$giftCoupons
=
array
();
$this
->
pushMessageOrders
=
array
();
$storeDao
=
\DAO\StoreModel
::
getInstance
(
\Our\DbNameConst
::
masterDBConnectName
);
foreach
(
$storeCartData
[
'cartList'
]
as
$storeId
=>
$storeCarts
){
$order
=
array
();
$order
[
'order_sn'
]
=
$this
->
makeOrderSn
(
$orderPayResult
);
...
...
@@ -432,12 +569,19 @@ class OrderConfirmUtil {
$orderModel
->
db
->
doRollback
();
\Error\ErrorModel
::
throwException
(
\Error\CodeConfigModel
::
updateAddressFailedForOrder
);
}
$store
=
$storeDao
->
get
(
$storeId
,
false
);
$orderCommon
=
array
();
$orderCommon
[
'order_id'
]
=
$orderId
;
$orderCommon
[
'store_id'
]
=
$storeId
;
$orderCommon
[
'order_message'
]
=
isset
(
$this
->
storeMemos
[
$storeId
])
?
$this
->
storeMemos
[
$storeId
]
:
\Our\NameConst
::
emptyString
;
$orderCommon
[
'reciver_info'
]
=
$reciverInfo
;
$orderCommon
[
'reciver_name'
]
=
$reciverName
;
if
(
$storeCarts
[
'delivery'
][
'deliveryType'
]
==
\Our\ApiConst
::
deliveryBuyer
){
list
(
$buyerStoreInfo
,
$buyerName
)
=
$this
->
getStoreInfoAndBuyerInfo
(
$store
,
array
(
'buyerMobile'
=>
$storeCarts
[
'delivery'
][
'buyerMobile'
],
'member_name'
=>
$this
->
member
[
'memberName'
]));
$orderCommon
[
'reciver_info'
]
=
$buyerStoreInfo
;
$orderCommon
[
'reciver_name'
]
=
$buyerName
;
}
else
{
$orderCommon
[
'reciver_info'
]
=
$reciverInfo
;
$orderCommon
[
'reciver_name'
]
=
$reciverName
;
}
$orderCommon
[
'reciver_city_id'
]
=
$this
->
address
[
'city_id'
];
$orderCommonList
[]
=
$orderCommon
;
//$orderCommonDao->insert($orderCommon);
...
...
@@ -854,6 +998,24 @@ class OrderConfirmUtil {
}
public
function
getStoreInfoAndBuyerInfo
(
$store
,
$data
){
$reciverInfo
[
'phone'
]
=
$data
[
'buyerMobile'
];
$reciverInfo
[
'mob_phone'
]
=
$data
[
'buyerMobile'
];
$reciverInfo
[
'tel_phone'
]
=
$data
[
'buyerMobile'
];
$reciverInfo
[
'address'
]
=
$store
[
'store_address'
];
$reciverInfo
[
'name'
]
=
$data
[
'member_name'
];
$reciverInfo
[
'area'
]
=
$store
[
'area_info'
];
$reciverInfo
[
'street'
]
=
$store
[
'store_address'
];
$reciverInfo
[
'lng'
]
=
$store
[
'store_longitude'
];
$reciverInfo
[
'lat'
]
=
$store
[
'store_latitude'
];
$reciverInfo
[
'citycode'
]
=
$store
[
'store_citycode'
];
$reciverInfo
[
'address_id'
]
=
\Our\NameConst
::
emptyString
;
$reciverInfo
[
'subaddress'
]
=
$store
[
'store_subaddress'
];
$reciverInfo
=
serialize
(
$reciverInfo
);
$reciverName
=
$data
[
'member_name'
];
return
array
(
$reciverInfo
,
$reciverName
);
}
public
function
getReciverAddr
(
$addressInfo
=
array
())
{
/*if (intval($addressInfo['dlyp_id'])) {
$reciverInfo['phone'] = trim($addressInfo['dlyp_mobile'].($addressInfo['dlyp_telephony'] ? ','.$addressInfo['dlyp_telephony'] : null),',');
...
...
application/models/Business/Cart/CartService.php
View file @
4b092fcc
...
...
@@ -663,7 +663,7 @@ class CartServiceModel extends \Business\AbstractModel{
* @param $address
* @param $storeCartData
*/
public
function
getDeliveryTypeForCartNew
(
$address
,
$storeCartData
,
$dbName
=
\Our\DbNameConst
::
salveDBConnectName
){
public
function
getDeliveryTypeForCartNew
(
$address
,
$storeCartData
,
$dbName
=
\Our\DbNameConst
::
salveDBConnectName
,
$checkFlag
=
false
){
$storeIds
=
$storeCartData
[
'storeIds'
];
$storeDao
=
\DAO\StoreModel
::
getInstance
();
$deliveryFormulaDao
=
\DAO\DeliveryFormulaModel
::
getInstance
(
$dbName
);
...
...
@@ -715,7 +715,7 @@ class CartServiceModel extends \Business\AbstractModel{
$storeDistance
=
\Our\CommonExtension
::
getDistance
(
$address
[
'lat'
],
$address
[
'lng'
],
$store
[
'store_latitude'
],
$store
[
'store_longitude'
],
\Our\ApiConst
::
one
);
if
(
$result
){
$deliverySetting
[
'inServiceAreaFlag'
]
=
\Our\ApiConst
::
one
;
$deliverTimeList
=
$deliveryFormulaDao
->
getDeliveryFormulaForCartNew
(
$store
,
$store
Distance
,
$deliveryFree
Flag
);
$deliverTimeList
=
$deliveryFormulaDao
->
getDeliveryFormulaForCartNew
(
$store
,
$store
Carts
,
$storeDistance
,
$deliveryFreeFlag
,
$check
Flag
);
if
(
$deliverTimeList
){
$deliverySetting
[
'deliverTimeList'
]
=
$deliverTimeList
[
'timeList'
];
$storeCartData
[
'cartList'
][
$storeId
][
'storeDistance'
]
=
$storeDistance
;
...
...
@@ -1244,7 +1244,7 @@ class CartServiceModel extends \Business\AbstractModel{
function
addOrder
(
$data
,
$memberId
,
$currentAddress
){
$orderUtil
=
\Order\OrderConfirmUtil
::
getInstance
();
$return
=
$orderUtil
->
addOrder
(
$data
,
$memberId
,
$currentAddress
);
$return
=
$orderUtil
->
addOrder
(
$data
,
$memberId
,
$currentAddress
,
true
);
//删除订单列表缓存
$orderDao
=
\DAO\Order\OrderModel
::
getInstance
();
$orderDao
->
deleteOrderCache
(
$memberId
);
...
...
application/models/Business/User/AddressService.php
View file @
4b092fcc
...
...
@@ -309,7 +309,6 @@ class AddressServiceModel extends \Business\AbstractModel {
}
}
return
array
(
'returnAddressId'
=>
$choosedAddressId
,
'choosedAddressFlag'
=>
$choosedAddressFlag
,
'addresses'
=>
$returnAddresses
);
}
public
function
getMyCurrentAddressByMemberId
(
$memberId
){
...
...
application/models/DAO/DeliveryFormula.php
View file @
4b092fcc
...
...
@@ -71,6 +71,9 @@ class DeliveryFormulaModel extends \DAO\AbstractModel {
if
(
$store
[
'store_start_time'
]
&&
$store
[
'store_close_time'
])
{
$todayStartTime
=
strtotime
(
$time
.
' '
.
$store
[
'store_start_time'
]);
$todayEndTime
=
strtotime
(
$time
.
' '
.
$store
[
'store_close_time'
]);
if
(
$todayEndTime
<=
$todayStartTime
){
$todayEndTime
+=
\Our\ApiConst
::
oneDaySecond
;
}
}
else
{
$todayStartTime
=
$time
+
\Our\ApiConst
::
deliveryStartTime
;
$todayEndTime
=
$time
+
\Our\ApiConst
::
deliveryEndTime
;
...
...
@@ -122,8 +125,8 @@ class DeliveryFormulaModel extends \DAO\AbstractModel {
* @return array
* @throws \Our\Exception
*/
public
function
getDeliveryFormulaForCartNew
(
$store
,
$storeCarts
,
$distance
,
$deliveryFreeFlag
=
false
){
$delivery_template_ids
=
array_unique
(
array_column
(
$storeCarts
,
'delivery_template_id'
));
public
function
getDeliveryFormulaForCartNew
(
$store
,
$storeCarts
,
$distance
,
$deliveryFreeFlag
=
false
,
$checkFlag
=
false
){
$delivery_template_ids
=
array_unique
(
array_column
(
$storeCarts
[
'storeCarts'
]
,
'delivery_template_id'
));
$deliveryFormula
=
\Our\RedisHelper
::
cachedFunction
(
\Redis\Db6\DeliveryFormulaRedisModel
::
getInstance
(),
array
(
&
$this
,
'getOne'
),
array
(
'*'
,
array
(
'store_id'
=>
$store
[
'store_id'
])),
\Our\ApiConst
::
sevenDaySecond
,
array
(
$store
[
'store_id'
]));
if
(
!
$deliveryFormula
){
return
false
;
...
...
@@ -146,23 +149,39 @@ class DeliveryFormulaModel extends \DAO\AbstractModel {
}
}
$formula
=
array
();
$halfList
=
array
();
$oneList
=
array
();
$twoList
=
array
();
$dayList
=
array
();
$otherList
=
array
();
foreach
(
$distanceFormulaList
as
$tempFormuala
){
$halfList
[]
=
$tempFormuala
[
'half'
]
?
$tempFormuala
[
'half'
]
:
$tempFormuala
[
'other'
];
$oneList
[]
=
$tempFormuala
[
'one'
]
?
$tempFormuala
[
'one'
]
:
$tempFormuala
[
'other'
];
$twoList
[]
=
$tempFormuala
[
'one'
]
?
$tempFormuala
[
'two'
]
:
$tempFormuala
[
'other'
];
$dayList
[]
=
$tempFormuala
[
'day'
]
?
$tempFormuala
[
'day'
]
:
$tempFormuala
[
'other'
];
$otherList
[]
=
$tempFormuala
[
'other'
];
}
$formula
[
'half'
]
=
max
(
$distanceFormulaList
);
$formula
[
'one'
]
=
max
(
$oneList
);
$formula
[
'two'
]
=
max
(
$twoList
);
$formula
[
'day'
]
=
max
(
$dayList
);
$formula
[
'other'
]
=
max
(
$otherList
);
$formula
[
'half'
]
=
max
(
array_column
(
$distanceFormulaList
,
'half'
));
$formula
[
'one'
]
=
max
(
array_column
(
$distanceFormulaList
,
'one'
));
$formula
[
'two'
]
=
max
(
array_column
(
$distanceFormulaList
,
'two'
));
$formula
[
'day'
]
=
max
(
array_column
(
$distanceFormulaList
,
'day'
));
$formula
[
'other'
]
=
max
(
array_column
(
$distanceFormulaList
,
'other'
));
foreach
(
$distanceFormulaList
as
&
$tempFormuala
){
if
(
$formula
[
'half'
]){
if
(
!
$tempFormuala
[
'half'
]){
$tempFormuala
[
'half'
]
=
$tempFormuala
[
'one'
]
?
$tempFormuala
[
'one'
]
:
(
$tempFormuala
[
'two'
]
?
$tempFormuala
[
'two'
]
:
(
$tempFormuala
[
'day'
]
?
$tempFormuala
[
'day'
]
:
$tempFormuala
[
'other'
]));
}
}
if
(
$formula
[
'one'
]){
if
(
!
$tempFormuala
[
'one'
]){
$tempFormuala
[
'one'
]
=
$tempFormuala
[
'two'
]
?
$tempFormuala
[
'two'
]
:
(
$tempFormuala
[
'day'
]
?
$tempFormuala
[
'day'
]
:
$tempFormuala
[
'other'
]);
}
}
if
(
$formula
[
'two'
]){
if
(
!
$tempFormuala
[
'two'
]){
$tempFormuala
[
'two'
]
=
$tempFormuala
[
'day'
]
?
$tempFormuala
[
'day'
]
:
$tempFormuala
[
'other'
];
}
}
if
(
$formula
[
'day'
]){
if
(
!
$tempFormuala
[
'day'
]){
$tempFormuala
[
'day'
]
=
$tempFormuala
[
'other'
];
}
}
}
$formula
[
'half'
]
=
max
(
array_column
(
$distanceFormulaList
,
'half'
));
$formula
[
'one'
]
=
max
(
array_column
(
$distanceFormulaList
,
'one'
));
$formula
[
'two'
]
=
max
(
array_column
(
$distanceFormulaList
,
'two'
));
$formula
[
'day'
]
=
max
(
array_column
(
$distanceFormulaList
,
'day'
));
$currentTime
=
TIMESTAMP
;
$time
=
date
(
'Y-m-d'
,
$currentTime
);
...
...
@@ -170,52 +189,92 @@ class DeliveryFormulaModel extends \DAO\AbstractModel {
if
(
$store
[
'store_dis_sta_time'
]
&&
$store
[
'store_dis_end_time'
]){
$todayStartTime
=
strtotime
(
$time
.
' '
.
$store
[
'store_dis_sta_time'
]);
$todayEndTime
=
strtotime
(
$time
.
' '
.
$store
[
'store_dis_end_time'
]);
if
(
$todayEndTime
<=
$todayStartTime
){
$todayEndTime
+=
\Our\ApiConst
::
oneDaySecond
;
}
}
else
{
$todayStartTime
=
$time
+
\Our\ApiConst
::
deliveryStartTime
;
$todayEndTime
=
$time
+
\Our\ApiConst
::
deliveryEndTime
;
}
if
(
$todayStartTime
>
$currentTime
){
$currentTime
=
$todayStartTime
;
$todayInterval
=
0
;
if
(
$formula
[
'half'
]){
$currentMinute
=
date
(
'i'
,
$currentTime
);
$tenMinute
=
10
;
$forthMinute
=
40
;
if
(
$checkFlag
){
$tenMinute
=
15
;
$forthMinute
=
45
;
}
if
(
$currentMinute
>
$tenMinute
&&
$currentMinute
<
30
){
$currentTime
=
mktime
(
date
(
'H'
,
$currentTime
),
30
,
0
,
date
(
'm'
,
$currentTime
),
date
(
'd'
,
$currentTime
),
date
(
'Y'
,
$currentTime
));
}
else
if
(
$currentMinute
>
$forthMinute
){
$currentTime
=
mktime
(
date
(
'H'
,
$currentTime
),
60
,
0
,
date
(
'm'
,
$currentTime
),
date
(
'd'
,
$currentTime
),
date
(
'Y'
,
$currentTime
));
}
}
else
if
(
$formula
[
'one'
]){
$todayInterval
=
\Our\ApiConst
::
halfHour
;
}
else
if
(
$formula
[
'two'
]){
$todayInterval
=
\Our\ApiConst
::
oneHour
;
}
else
if
(
$formula
[
'day'
]){
$todayInterval
=
\Our\ApiConst
::
oneHour
*
2
;
}
else
{
$todayInterval
=
\Our\ApiConst
::
oneDaySecond
;
}
$defaultFee
=
$formula
[
'half'
];
$currentTime
=
$currentTime
+
$todayInterval
;
$defaultFee
=
$formula
[
'half'
]
?
$formula
[
'half'
]
:
(
$formula
[
'one'
]
?
$formula
[
'one'
]
:
(
$formula
[
'two'
]
?
$formula
[
'two'
]
:
(
$formula
[
'day'
]
?
$formula
[
'day'
]
:
$formula
[
'other'
])));
$defaultFee
=
$defaultFee
*
\Our\ApiConst
::
hundred
;
$return
=
array
();
$formulaList
=
$this
->
getTodayFormulaList
(
$currentTime
,
$todayEndTime
,
$formula
,
$deliveryFreeFlag
);
$tommorowDefault
=
\Our\ApiConst
::
zero
;
if
(
!
$formulaList
){
$tommorowDefault
=
\Our\ApiConst
::
one
;
if
(
$currentTime
<
$todayEndTime
){
if
(
$todayStartTime
>
$currentTime
){
$currentTime
=
$todayStartTime
;
}
$formulaList
=
$this
->
getTodayFormulaList
(
$currentTime
,
$todayEndTime
,
$todayInterval
,
$formula
,
$deliveryFreeFlag
);
if
(
!
$formulaList
){
$tommorowDefault
=
\Our\ApiConst
::
one
;
}
else
{
$return
=
array_merge
(
$return
,
$formulaList
);
}
}
else
{
$defaultFee
=
$formula
[
'other'
];
$return
[]
=
array
(
'time'
=>
$todayUnixTime
,
'list'
=>
$formulaList
);
$tommorowDefault
=
\Our\ApiConst
::
one
;
}
$tommorowStartTime
=
$todayStartTime
+
\Our\ApiConst
::
oneDaySecond
;
$tommorowEndTime
=
$todayEndTime
+
\Our\ApiConst
::
oneDaySecond
;
$tommorowUnixTime
=
$todayUnixTime
+
\Our\ApiConst
::
oneDaySecond
;
$tromorrowList
=
$this
->
getOtherDayFormulaList
(
$tommorowStartTime
,
$tommorowEndTime
,
$formula
[
'other'
],
$deliveryFreeFlag
,
$tommorowDefault
);
if
(
$t
ommorowUnixTime
){
$return
[]
=
array
(
'time'
=>
$tommorowUnixTime
,
'list'
=>
$tromorrowList
);
if
(
$t
romorrowList
){
$return
=
array_merge
(
$return
,
$tromorrowList
);
}
$nextStartTime
=
$todayStartTime
+
\Our\ApiConst
::
oneDaySecond
*
2
;
$nextEndTime
=
$todayEndTime
+
\Our\ApiConst
::
oneDaySecond
*
2
;
$nextUnixTime
=
$todayUnixTime
+
\Our\ApiConst
::
oneDaySecond
*
2
;
if
(
$nextEndTime
>
$todayUnixTime
+
\Our\ApiConst
::
oneDaySecond
*
3
){
$nextEndTime
=
$todayUnixTime
+
\Our\ApiConst
::
oneDaySecond
*
3
;
}
$isDefault
=
\Our\ApiConst
::
zero
;
if
(
!
(
$
formulaList
&&
$tromorrowList
)){
if
(
!
(
$
return
)){
$isDefault
=
\Our\ApiConst
::
one
;
}
$nextList
=
$this
->
getOtherDayFormulaList
(
$nextStartTime
,
$nextEndTime
,
$formula
[
'other'
],
$deliveryFreeFlag
,
$isDefault
);
if
(
$
tommorowUnixTime
){
$return
[]
=
array
(
'time'
=>
$nextUnixTime
,
'list'
=>
$nextList
);
if
(
$
nextList
){
$return
=
array_merge
(
$return
,
$nextList
);
}
if
(
$return
){
return
array
(
'timeList'
=>
$return
,
'default'
=>
$defaultFee
);
$returnList
=
array
();
foreach
(
$return
as
$key
=>
$value
){
$dayList
=
array
();
$dayList
[
'time'
]
=
strtotime
(
date
(
'Y-m-d'
,
$value
[
0
][
'time'
]));
$dayList
[
'list'
]
=
$value
;
$returnList
[]
=
$dayList
;
}
return
array
(
'timeList'
=>
$returnList
,
'default'
=>
$defaultFee
);
}
return
$return
;
}
public
function
getTodayFormulaList
(
$beginTime
,
$endTime
,
$formulaPrice
,
$deliveryFreeFlag
){
public
function
getTodayFormulaList
(
$beginTime
,
$endTime
,
$
todayInterval
,
$
formulaPrice
,
$deliveryFreeFlag
){
$formulaList
=
array
();
$time
=
TIMESTAMP
;
$initMinute
=
intval
(
date
(
'i'
,
$beginTime
));
if
(
$initMinute
==
0
||
$initMinute
==
30
){
$startTime
=
$beginTime
;
...
...
@@ -227,12 +286,12 @@ class DeliveryFormulaModel extends \DAO\AbstractModel {
}
}
if
(
$startTime
+
\Our\ApiConst
::
halfHour
<
$endTime
){
$interval
=
\Our\ApiConst
::
zero
;
$interval
=
$todayInterval
;
for
(
$i
=
$startTime
;
$i
<
$endTime
;
$i
=
$i
+
(
\Our\ApiConst
::
halfHour
)){
$interval
+=
\Our\ApiConst
::
halfHour
;
$temp
=
array
();
$temp
[
'time'
]
=
$i
;
$temp
[
'interval'
]
=
\Our\ApiConst
::
halfHour
;
$temp
[
'interval'
]
=
$i
-
$time
;
$temp
[
'isDefault'
]
=
\Our\ApiConst
::
zero
;
if
(
$interval
==
\Our\ApiConst
::
halfHour
*
1
){
//半小时内的价格
$temp
[
'price'
]
=
$formulaPrice
[
'half'
];
...
...
@@ -247,8 +306,9 @@ class DeliveryFormulaModel extends \DAO\AbstractModel {
if
(
$deliveryFreeFlag
){
$temp
[
'price'
]
=
\Our\ApiConst
::
zero
;
}
$temp
[
'price'
]
=
$temp
[
'price'
]
?
$temp
[
'price'
]
:
\Our\ApiConst
::
zero
;
$formulaList
[]
=
$temp
;
$index
=
strtotime
(
date
(
'Y-m-d'
,
$i
));
$temp
[
'price'
]
=
$temp
[
'price'
]
?
(
$temp
[
'price'
]
*
\Our\ApiConst
::
hundred
)
:
\Our\ApiConst
::
zero
;
$formulaList
[
$index
][]
=
$temp
;
}
}
return
$formulaList
;
...
...
@@ -271,13 +331,14 @@ class DeliveryFormulaModel extends \DAO\AbstractModel {
$temp
=
array
();
$temp
[
'time'
]
=
$i
;
$temp
[
'interval'
]
=
\Our\ApiConst
::
halfHour
;
$temp
[
'price'
]
=
$price
?
$price
:
\Our\ApiConst
::
zero
;
$temp
[
'price'
]
=
$price
?
(
$price
*
\Our\ApiConst
::
hundred
)
:
\Our\ApiConst
::
zero
;
if
(
$deliveryFreeFlag
){
$temp
[
'price'
]
=
\Our\ApiConst
::
zero
;
}
$temp
[
'isDefault'
]
=
$isDefault
;
$isDefault
=
\Our\ApiConst
::
zero
;
$formulaList
[]
=
$temp
;
$index
=
strtotime
(
date
(
'Y-m-d'
,
$i
));
$formulaList
[
$index
][]
=
$temp
;
}
}
return
$formulaList
;
...
...
application/models/DAO/FavoritesStore.php
View file @
4b092fcc
...
...
@@ -48,7 +48,7 @@ class FavoritesStoreModel extends \DAO\AbstractModel {
return
$this
->
db
->
fetchAll
();
}
public
function
getOne
(
$field
,
$where
,
$order
=
array
(
'fav_time'
=>
'desc'
)){
public
function
getOne
(
$field
,
$where
,
$order
=
array
(
'fav_time'
=>
'desc'
,
'favid'
=>
'desc'
)){
$this
->
setDb
(
$this
->
dbName
);
if
(
$order
){
foreach
(
$order
as
$key
=>
$value
){
...
...
application/models/DAO/Goods.php
View file @
4b092fcc
...
...
@@ -310,6 +310,7 @@ class GoodsModel extends \DAO\AbstractModel {
if
(
isset
(
$returnData
[
$temp
[
'goods_commonid'
]][
'is_transport'
])){
continue
;
}
$returnData
[
$temp
[
'goods_commonid'
]][
'delivery_template_id'
]
=
$temp
[
'delivery_template_id'
];
$returnData
[
$temp
[
'goods_commonid'
]][
'is_transport'
]
=
$temp
[
'is_transport'
];
$returnData
[
$temp
[
'goods_commonid'
]][
'transport_id'
]
=
$temp
[
'transport_id'
];
$returnData
[
$temp
[
'goods_commonid'
]][
'goods_freight'
]
=
$temp
[
'goods_freight'
];
...
...
application/models/Error/CodeConfig.php
View file @
4b092fcc
...
...
@@ -284,6 +284,11 @@ class CodeConfigModel
const
notExsitOrder
=
300112
;
const
alreadyExsitRefundGoods
=
300113
;
const
notAllowDelete
=
300114
;
const
emptyDeliveryTime
=
300115
;
const
wrongDeliveryTime
=
300116
;
const
wrongBuyerTimeRangeForOrder
=
300117
;
const
emptyBuyerMobile
=
300118
;
const
wrongBuyerMobile
=
300119
;
const
noExpressDeliveryForOrder1
=
30115
;
const
goodsNoStoreForCartOrOrder1
=
30116
;
...
...
@@ -707,6 +712,11 @@ class CodeConfigModel
self
::
notExsitOrder
=>
'订单不存在'
,
self
::
alreadyExsitRefundGoods
=>
'退款订单已经存在'
,
self
::
notAllowDelete
=>
'当前订单状态不允许删除'
,
self
::
emptyDeliveryTime
=>
'配送时间或者自提时间不能为空'
,
self
::
wrongDeliveryTime
=>
'配送时间格式错误'
,
self
::
wrongBuyerTimeRangeForOrder
=>
'自提时间点错误'
,
self
::
emptyBuyerMobile
=>
'自提人手机号码不能为空'
,
self
::
wrongBuyerMobile
=>
'自提人手机号码格式错误'
,
self
::
platFormAreadyIn
=>
'您已经申请过平台介入'
,
self
::
deleteError
=>
'放入回收站失败,订单状态有误'
,
self
::
restoreError
=>
'永久删除、从回收站还原失败,订单状态有误'
,
...
...
@@ -764,7 +774,7 @@ class CodeConfigModel
self
::
emptyOrderForPay
=>
'支付的订单不存在'
,
self
::
emptyOrderIdForPay
=>
'订单ID不能为空'
,
self
::
noRightForOrder
=>
'您没有该订单权限'
,
self
::
wrongPayForOrder
=>
'
该订单无需线上支付
'
,
self
::
wrongPayForOrder
=>
'
订单状态发生改变,请刷新后重试
'
,
self
::
newPaySnInsertFailed
=>
'新订单支付参数生成失败'
,
self
::
updateOrderForPayFailed
=>
'唤起支付时更新订单失败'
,
self
::
noOrderListForPaySn
=>
'当前paySn没有找到对应订单列表'
,
...
...
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