182 行
6.9 KiB
PHP
可执行文件
182 行
6.9 KiB
PHP
可执行文件
<?php
|
|
|
|
namespace PayApi\Controller;
|
|
|
|
use Think\Controller;
|
|
|
|
//[1.3.43]
|
|
|
|
/**
|
|
* Class GroupController
|
|
* @package PayApi\Controller
|
|
*/
|
|
class GroupController extends Controller
|
|
{
|
|
/**
|
|
* 修改订单状态(拼团时间到期)
|
|
* @param int $store_id 门店id
|
|
* @param int $merchant_id 商户id
|
|
* @return bool true|false
|
|
*/
|
|
public function updateOrderState($store_id, $merchant_id)
|
|
{
|
|
$RBOModel = D('RetailBillOrder');
|
|
$map = array(
|
|
'b.' . $RBOModel::STORE_ID => $store_id,
|
|
'b.' . $RBOModel::MERCHANT_ID => $merchant_id,
|
|
'b.' . $RBOModel::PAY_STATE => 1,
|
|
'b.' . $RBOModel::REFUND_STATUS => 0,
|
|
'b.' . $RBOModel::TYPE => 1,
|
|
'o.order_genre' => 2,
|
|
'g.state' => 1,
|
|
'g.end_time' => array('lt', time())
|
|
);
|
|
$select = $RBOModel->getSelectGroup($map);
|
|
if (!$select) {
|
|
return true;
|
|
}
|
|
// 处理数据
|
|
$RBGModel = D('RetailBillGroup');
|
|
foreach ($select as &$val) {
|
|
$RBGModel->updateOrder(array($RBGModel::BILL_ID => $val[$RBOModel::ID]), array($RBGModel::STATE => 3));
|
|
A('PayApi/ActivityOrder')->doRefund_v1($val[$RBOModel::ORDER_NO]);
|
|
}
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* 查询,修改拼团状态
|
|
* $param int $group_id 活动id
|
|
* @param int $parent_id
|
|
* @param int $bill_id
|
|
* @param int $store_id
|
|
* @return array $res
|
|
*/
|
|
public function updateGroupState($group_id, $parent_id, $store_id, $order_no)
|
|
{
|
|
// 查询活动(拼团人数)
|
|
$RGModel = D('RetailGroup');
|
|
$map = array(
|
|
$RGModel::ID => $group_id
|
|
);
|
|
$groupDetail = $RGModel->getFind($map, array($RGModel::NUMBER, $RGModel::ACT_NUM));
|
|
$number = $groupDetail[$RGModel::NUMBER];
|
|
$actNum = $groupDetail[$RGModel::ACT_NUM];
|
|
// $number = $RGModel->getFindField($map, $RGModel::NUMBER);
|
|
if (!$number) {
|
|
$res = array('status' => 0, 'msg' => '拼团出现异常,请联系商家');
|
|
return $res;
|
|
}
|
|
// 查询订单
|
|
$RGOViewModel = D('RetailGroupOrderView');
|
|
$map = array(
|
|
'RetailBillOrder.pay_state' => 1,
|
|
'RetailBillGroup.parent_id' => $parent_id,
|
|
);
|
|
$fields = array(
|
|
'id',
|
|
'uid',
|
|
'merchant_id',
|
|
'form_id',
|
|
'order_no',
|
|
'pick_code',
|
|
'all_money',
|
|
'add_time',
|
|
'user_select_time',
|
|
'user_phone',
|
|
'user_name',
|
|
'remark',
|
|
'pickup_type',
|
|
);
|
|
$order_list = $RGOViewModel->getSelect($map, $fields);
|
|
if (!$order_list) {
|
|
$res = array('status' => 0, 'msg' => '拼团查询出现异常,请联系商家');
|
|
return $res;
|
|
}
|
|
$ids = array_column($order_list, 'id');
|
|
// 处理数据
|
|
$RBGModel = D('RetailBillGroup');
|
|
if (intval(count($ids)) >= intval($number)) { // 拼团成功
|
|
$map = array(
|
|
$RBGModel::BILL_ID => array('in', $ids),
|
|
$RBGModel::STATE => 1
|
|
);
|
|
$save = array(
|
|
$RBGModel::STATE => 2
|
|
);
|
|
$save_result = $RBGModel->updateOrder($map, $save);
|
|
if ($save_result) {
|
|
// 打印
|
|
$StoreModel = D('RetailStore');
|
|
$fields = array(
|
|
$StoreModel::STORE_NAME,
|
|
$StoreModel::ADDRESS,
|
|
$StoreModel::PHONE
|
|
);
|
|
$store = $StoreModel->getFind(array($StoreModel::ID => $store_id), $fields);
|
|
$SmallProgramUserModel = D('RetailSmallProgramUser');
|
|
$SellModel = D('RetailSell');
|
|
$goods_name = $SellModel->getFindField(array($SellModel::BILL_ID => $ids[0]), $SellModel::GOODS_NAME);
|
|
foreach ($order_list as $val) {
|
|
if($val['pickup_type'] == 1){
|
|
$tempSend = array(
|
|
'merchant_id' => $val['merchant_id'],
|
|
'openid' => $SmallProgramUserModel->getFindField(array($SmallProgramUserModel::ID => $val['uid']), $SmallProgramUserModel::OPENID),
|
|
'form_id' => $val['form_id'],
|
|
'type' => 1,//'1自提通知 2发货通知',
|
|
'sendData' => array(
|
|
'store_name' => $store[$StoreModel::STORE_NAME],
|
|
'order_no' => $val['order_no'],
|
|
'pick_code' => $val['pick_code'],
|
|
'price' => $val['all_money'],
|
|
'add_time' => date('Y-m-d H:i:s', $val['add_time']),
|
|
'goods_name' => $goods_name,
|
|
'pick_time' => date('Y-m-d H:i:s', $val['user_select_time']),
|
|
'user_phone' => $val['user_phone'],
|
|
'username' => $val['user_name'],
|
|
'user_remark' => $val['remark'],
|
|
'store_address' => $store[$StoreModel::ADDRESS],
|
|
'store_phone' => $store[$StoreModel::PHONE],
|
|
'order_type' => '拼团订单',
|
|
),
|
|
);
|
|
// file_put_contents('./xcxMark.txt', json_encode($tempSend) . "\r\n", FILE_APPEND);
|
|
A('Api/XcxMark')->sendMark($tempSend);//小程序模板通知
|
|
}
|
|
|
|
A('PayApi/Printer')->linePrinting_v1($store_id, $val['id']);
|
|
}
|
|
// 收银机推送
|
|
sendSockets($store_id, '您有新的线上拼团订单信息', 0);
|
|
//新版推送
|
|
$content = array(
|
|
'login_string' => '',
|
|
'username' => '',
|
|
'type' => 6,
|
|
'message' => "您有新的线上拼团订单信息",
|
|
);
|
|
sendSockets($store_id, $content, -1);
|
|
$res = array(
|
|
'status' => 1,
|
|
'msg' => '拼团成功'
|
|
);
|
|
} else {
|
|
$res = array(
|
|
'status' => 0,
|
|
'msg' => '拼团出现异常,请联系商家'
|
|
);
|
|
}
|
|
} else {
|
|
$res = array(
|
|
'status' => 2,
|
|
'msg' => '拼团中'
|
|
);
|
|
}
|
|
|
|
if ($actNum < 0) {
|
|
A('PayApi/ActivityOrder')->doRefund_v1($order_no);
|
|
}
|
|
return $res;
|
|
}
|
|
}
|