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
8060a1f1
Commit
8060a1f1
authored
Dec 29, 2018
by
testshenbd
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'linqing' of git.shenbd.com:qm-develop/shenbd into linqing
parents
7e976b85
534a2266
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
192 additions
and
9 deletions
+192
-9
GoodsClassService.php
application/models/Business/Goods/GoodsClassService.php
+2
-5
OrderService.php
application/models/Business/Order/OrderService.php
+78
-0
MemberService.php
application/models/Business/User/MemberService.php
+6
-2
Member.php
application/models/DAO/Member.php
+15
-2
closeSecond.php
scripts/crontab/order/closeSecond.php
+91
-0
No files found.
application/models/Business/Goods/GoodsClassService.php
View file @
8060a1f1
...
...
@@ -82,7 +82,6 @@ class GoodsClassServiceModel extends \Business\AbstractModel{
if
(
$serviceStoreIds
&&
$signStoreIds
){
$serviceStoreIds
=
array_diff
(
$serviceStoreIds
,
$signStoreIds
);
}
$serviceParentClassIds
=
$this
->
getServiceStoreClasses
(
$serviceStoreIds
);
if
(
$serviceParentClassIds
){
$classIds
=
array_merge
(
$serviceParentClassIds
,
$classIds
);
...
...
@@ -202,9 +201,9 @@ class GoodsClassServiceModel extends \Business\AbstractModel{
$newStoreIds
=
array
();
foreach
(
$signStoreClasses
as
$signClass
){
$inAreaFlag
=
\Our\CommonExtension
::
locationInArea
(
$lat
,
$lng
,
$signClass
[
'sign_scope'
]);
$store
=
$storeList
[
$signClass
[
'store_id'
]];
//判断签约分类是否可以为当前用户提供服务,并且记录这些店铺对应的store_id
if
(
$inAreaFlag
){
$store
=
$storeList
[
$signClass
[
'store_id'
]];
if
(
$inAreaFlag
&&
$store
){
$class_distance
=
\Our\CommonExtension
::
getDistance
(
$lat
,
$lng
,
$store
[
'store_latitude'
],
$store
[
'store_latitude'
],
1
);
$class
=
$signClass
;
$class
[
'class_distance'
]
=
$class_distance
;
...
...
@@ -215,14 +214,12 @@ class GoodsClassServiceModel extends \Business\AbstractModel{
}
}
foreach
(
$returnClass
as
$key
=>
$class
){
$classDistance
[
$key
]
=
$class
[
'class_distance'
];
}
array_multisort
(
$classDistance
,
SORT_DESC
,
$returnClass
);
$signParentClassIds
=
array_unique
(
array_column
(
$returnClass
,
'gc_parent_id'
));
//$signStoreIds = array_unique(array_column($returnClass,'store_id'));
$signStoreIds
=
$newStoreIds
;
//将当前位置对应签约店铺存入缓存
...
...
application/models/Business/Order/OrderService.php
View file @
8060a1f1
...
...
@@ -851,6 +851,84 @@ class OrderServiceModel extends \Business\AbstractModel
}
file_put_contents
(
$this
->
baseDir
.
\Our\PathConst
::
orderCancelTime
,
$endTime
);
}
public
function
changeOrderStatusSecond
()
{
$orderDao
=
\DAO\Order\OrderModel
::
getInstance
(
DbNameConst
::
masterDBConnectName
);
$endTime
=
file_get_contents
(
$this
->
baseDir
.
\Our\PathConst
::
orderCloseWaitRecieveOrder
);
$endTime
=
$endTime
?
$endTime
:
ApiConst
::
zero
;
$beginTime
=
$endTime
-
ApiConst
::
halfDaySecond
;
$storeDao
=
\DAO\StoreModel
::
getInstance
();
// $beginTime=0;
$orders
=
$orderDao
->
getMustCecelRecieveOrders
(
$beginTime
,
$endTime
,
$orderDao
->
getOrderDetailField
());
$newOrders
=
array
();
$orderIds
=
array
();
if
(
!
empty
(
$orders
))
{
foreach
(
$orders
as
$order
)
{
$orderDao
->
setDb
(
DbNameConst
::
masterDBConnectName
);
$orderDao
->
db
->
doTransaction
();
//更新订单信息
$updateData
=
array
(
'order_state'
=>
ApiConst
::
orderStateClose
,
'refund_amount'
=>
$order
[
'orderAmount'
],
'gmt_update'
=>
TIMESTAMP
,
'is_effective'
=>
ApiConst
::
closeOrder
);
$update
=
$orderDao
->
update
(
array
(
'order_id'
=>
$order
[
'orderId'
]),
$updateData
);
if
(
$update
){
if
(
$order
[
'paymentTime'
]
>
ApiConst
::
zero
&&
in_array
(
$order
[
'paymentType'
],
ArrayConst
::
orderPayTypeOnlines
))
{
$isRefunMoney
=
$this
->
changeOrderStateCancelUnconditional
(
$order
);
if
(
!
$isRefunMoney
){
$orderDao
->
db
->
doRollback
();
continue
;
}
array_push
(
$orderIds
,
$order
[
'orderId'
]);
$this
->
updateOrderGoodsStoregeByOrderIds
(
$orderIds
);
array_push
(
$newOrders
,
$order
);
$orderIds
=
array
();
$orderDao
->
db
->
doCommit
();
}
$orderDao
->
deleteOrderCache
(
$order
[
'buyerId'
],(
string
)
$order
[
'orderId'
],
$order
[
'storeId'
],
true
);
$storeDao
->
deleteStoreCache
(
$order
[
'storeId'
],
$order
[
'orderId'
]);
$push
=
\Our\Push
::
getInstance
();
$pushData
=
array
(
'storeId'
=>
$order
[
'storeId'
],
'type'
=>
ApiConst
::
messageWaitReceive
,
'waitReceiveCount'
=>
ApiConst
::
reduceOne
,
'waitDeliveryCount'
=>
0
,
'waitGetCount'
=>
0
,
'orderCount'
=>
ApiConst
::
reduceOne
,
'waitRefundProccessCount'
=>
ApiConst
::
zero
,
'waitRefundReceiveCount'
=>
ApiConst
::
zero
,
'refundCount'
=>
ApiConst
::
zero
,
'alertCount'
=>
ApiConst
::
zero
,
'params'
=>
array
(
'c'
=>
'shopkeeper'
,
'm'
=>
'orderDetail'
,
'orderId'
=>
$order
[
'orderId'
]));
$push
->
addOneToClient
(
$pushData
);
}
// $orderDao->deleteOrderCache($order['buyerId'],(string)$order['orderId'],$order['storeId'],true);
// $storeDao->deleteStoreCache($order['storeId'],$order['orderId']);
// $push=\Our\Push::getInstance();
// $pushData=array('storeId'=>$order['storeId'],
// 'type'=>ApiConst::messageWaitReceive,
// 'waitReceiveCount'=>ApiConst::reduceOne,
// 'waitDeliveryCount'=>0,
// 'waitGetCount'=>0,
// 'orderCount'=>ApiConst::reduceOne,
// 'waitRefundProccessCount'=>ApiConst::zero,
// 'waitRefundReceiveCount'=>ApiConst::zero,
// 'refundCount'=>ApiConst::zero,
// 'alertCount'=>ApiConst::zero,
// 'params'=>array('c'=>'shopkeeper',
// 'm'=>'orderDetail',
// 'orderId'=>$order['orderId']));
// $push->addOneToClient($pushData);
}
// $orderIds = array_column($orders, 'orderId');
// $this->updateOrderGoodsStoregeByOrderIds($orderIds);
//发送消息
$push
=
Push
::
getInstance
();
$push
->
pushOrderCloseMessage
(
$newOrders
);
}
file_put_contents
(
$this
->
baseDir
.
\Our\PathConst
::
orderCloseWaitRecieveOrder
,
$endTime
);
}
public
function
changeOrderStatus
()
{
$orderDao
=
\DAO\Order\OrderModel
::
getInstance
(
DbNameConst
::
masterDBConnectName
);
...
...
application/models/Business/User/MemberService.php
View file @
8060a1f1
...
...
@@ -328,7 +328,7 @@ class MemberServiceModel extends \Business\AbstractModel
return
$result
;
}
private
function
saveWxInfoMemberInfo
(
$where
,
$openid
=
null
){
private
function
saveWxInfoMemberInfo
(
$where
,
$openid
=
null
,
$wxappopenid
=
null
){
$memberDao
=
\DAO\MemberModel
::
getInstance
(
\Our\DbNameConst
::
masterDBConnectName
);
//构造需要保存的会员信息
...
...
@@ -336,6 +336,9 @@ class MemberServiceModel extends \Business\AbstractModel
if
(
$openid
){
$member
[
'member_mobile'
]
=
$openid
;
}
if
(
$wxappopenid
)
{
$member
[
'member_wxappopenid'
]
=
$wxappopenid
;
}
$result
=
$memberDao
->
addInfo
(
$member
);
return
$result
;
}
...
...
@@ -917,7 +920,8 @@ class MemberServiceModel extends \Business\AbstractModel
}
$db
->
doTransaction
();
$openid
=
$this
->
getUnionId
(
$where
[
'encryptedData'
],
$where
[
'iv'
],
$where
[
'session_key'
]);
$memberId
=
$this
->
saveWxInfoMemberInfo
(
$where
,
$openid
);
$wxappOpenid
=
$authInfo
[
'session_key'
];
$memberId
=
$this
->
saveWxInfoMemberInfo
(
$where
,
$openid
,
$wxappOpenid
);
if
(
!
$memberId
){
$db
->
doRollback
();
...
...
application/models/DAO/Member.php
View file @
8060a1f1
...
...
@@ -21,7 +21,7 @@ class MemberModel extends \DAO\AbstractModel
protected
$_tableName
=
'han_member'
;
//有效用户返回数据
private
$availMemberColumn
=
array
(
'member_id'
,
'member_name'
,
'member_truename'
,
'member_avatar'
,
'member_sex'
,
'member_birthday'
,
'member_mobile'
,
'member_mobile_bind'
,
'member_qq'
,
'member_qqopenid'
,
'member_qqinfo'
,
'member_wxinfo'
,
'member_wxopenid'
,
'member_sinaopenid'
,
'member_sinainfo'
,
'member_points'
,
'member_state'
,
'member_quicklink'
,
'member_exppoints'
,
'store_id'
,
'iswx'
,
'agree_flag'
,
'seller_id'
,
'diliveryman_id'
,
'member_tag_ids'
,
'member_group_ids'
,
'is_teacher'
,
'member_email'
,
'member_email_bind'
,
'is_wxsen
d'
);
private
$availMemberColumn
=
array
(
'member_id'
,
'member_name'
,
'member_truename'
,
'member_avatar'
,
'member_sex'
,
'member_birthday'
,
'member_mobile'
,
'member_mobile_bind'
,
'member_qq'
,
'member_qqopenid'
,
'member_qqinfo'
,
'member_wxinfo'
,
'member_wxopenid'
,
'member_sinaopenid'
,
'member_sinainfo'
,
'member_points'
,
'member_state'
,
'member_quicklink'
,
'member_exppoints'
,
'store_id'
,
'iswx'
,
'agree_flag'
,
'seller_id'
,
'diliveryman_id'
,
'member_tag_ids'
,
'member_group_ids'
,
'is_teacher'
,
'member_email'
,
'member_email_bind'
,
'is_wxsend'
,
'member_wxappopeni
d'
);
//有效用户返回数据
...
...
@@ -556,7 +556,16 @@ class MemberModel extends \DAO\AbstractModel
return
$member
;
}
public
function
getMemberForLogin
(
$memberIds
){
/**
* 获取登录用户
* @param $memberIds
* @param string $wxappopenid
* @return array
* User: King <358887571@qq.com>
* Date: 2018/12/29 0029
* Time: 下午 3:20
*/
public
function
getMemberForLogin
(
$memberIds
,
$wxappopenid
=
''
){
$member
=
array
();
$memberCon
[
'member_id'
]
=
array
(
'in'
,
$memberIds
);
$memberCon
[
'member_state'
]
=
\Our\ApiConst
::
one
;
...
...
@@ -574,6 +583,10 @@ class MemberModel extends \DAO\AbstractModel
if
(
empty
(
$member
)){
$member
=
$memberList
[
0
];
}
if
(
$wxappopenid
&&
$member
[
'member_wxappopenid'
]
==
''
)
{
$this
->
updateInfo
(
array
(
'member_wxappopenid'
=>
$wxappopenid
),
array
(
'member_id'
=>
$member
[
'member_id'
]));
}
$member
[
'member_wxappopenid'
]
=
$wxappopenid
;
$memberAvatarUrl
=
$this
->
getMemberAvatarUrl
(
$member
[
'member_id'
],
$member
[
'member_avatar'
]);
$member
[
'memberAvatarUrl'
]
=
$memberAvatarUrl
;
}
...
...
scripts/crontab/order/closeSecond.php
0 → 100644
View file @
8060a1f1
<?php
/**
* 关闭订单
* 执行时间:每分钟执行一次
*
* @author chenjiebin <sjlinyu@qq.com>
*/
define
(
"APPLICATION_PATH"
,
realpath
(
dirname
(
__FILE__
)
.
'/../../../'
));
//指向public的上一级
require
APPLICATION_PATH
.
'/scripts/crontab/baseCli.php'
;
require
APPLICATION_PATH
.
'/scripts/crontab/common.php'
;
error_reporting
(
E_ALL
^
E_NOTICE
);
class
cliOrderClose
extends
basecli
{
const
CLI_ADMIN_ID
=
255
;
private
$bDoUnLock
=
FALSE
;
// 是否允许释放 LOCK 文件
private
$_debug
=
0
;
private
$lockFileName
;
private
$fromState
;
private
function
mkdirs
(
$dir
,
$mode
=
0777
)
{
if
(
is_dir
(
$dir
)
||
@
mkdir
(
$dir
,
$mode
)){
return
TRUE
;
}
if
(
!
$this
->
mkdirs
(
dirname
(
$dir
),
$mode
)){
return
FALSE
;
}
return
@
mkdir
(
$dir
,
$mode
);
}
/**
* 析构
*/
public
function
__destruct
()
{
parent
::
__destruct
();
if
(
$this
->
bDoUnLock
)
{
@
unlink
(
$this
->
lockFileName
);
}
}
protected
function
autoCloseOrder
(){
$orderService
=
\Business\Order\OrderServiceModel
::
getInstance
(
\Our\DbNameConst
::
masterDBConnectName
);
$orderService
->
baseDir
=
\Our\Common
::
getConfig
(
'out.config'
);
$orderService
->
changeOrderStatusSecond
();
$messageService
=
\Business\Message\MessageServiceModel
::
getInstance
(
\Our\DbNameConst
::
masterDBConnectName
);
$messageService
->
addMessageCenterToDb
();
}
protected
function
_runCli
()
{
$this
->
_debug
=
isset
(
$this
->
aArgv
[
1
])
?
intval
(
$this
->
aArgv
[
1
])
:
0
;
if
(
$this
->
_debug
)
{
echo
"*** Debug mode ***
\n
"
;
}
// Step: 02 检查是否已有相同CLI在运行中
$lockDir
=
$this
->
_getBaseFileName
(
'order'
);
if
(
!
$this
->
mkdirs
(
$lockDir
)){
echo
'****create dir fail ****'
;
exit
;
}
$this
->
lockFileName
=
$lockDir
.
DS
.
'close.locks'
;
if
(
file_exists
(
$this
->
lockFileName
)
)
{
$stat
=
stat
(
$this
->
lockFileName
);
if
(
(
TIMESTAMP
-
$stat
[
'mtime'
])
>
1800
)
{
echo
"文件被锁超过1800秒,被强制删除"
;
@
unlink
(
$this
->
lockFileName
);
}
else
{
$this
->
halt
(
'['
.
date
(
'Y-m-d H:i:s'
)
.
'] The CLI is running'
.
"
\n
"
);
}
}
$this
->
bDoUnLock
=
true
;
if
(
APP_ENV
==
'pre'
||
APP_ENV
==
'product'
){
file_put_contents
(
$this
->
lockFileName
,
"running"
);
// CLI 独占锁
}
$this
->
autoCloseOrder
();
echo
date
(
'Y-m-d H:i:s'
,
TIMESTAMP
)
.
'定单关闭消息成功'
.
"
\r\n
"
;
}
}
$oCli
=
new
cliOrderClose
(
TRUE
);
EXIT
;
?>
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