文件
mashangyoujiu/Application/PayApi/Controller/GroupController.class.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;
}
}