Commit fdaef8ed authored by wwccw0591's avatar wwccw0591

pc

parents 674a9084 03b8eaa8
...@@ -234,9 +234,9 @@ class OrderConfirmUtil { ...@@ -234,9 +234,9 @@ class OrderConfirmUtil {
$deliveryFee = $temp['shippingFee']; $deliveryFee = $temp['shippingFee'];
} }
if($deliveryFee!=$requestData['deliveryFee']){ // if($deliveryFee!=$requestData['deliveryFee']){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::wrongStoreDeliveryFeeForOrder); // \Error\ErrorModel::throwException(\Error\CodeConfigModel::wrongStoreDeliveryFeeForOrder);
} // }
$delivery['deliveryFee'] = $deliveryFee; $delivery['deliveryFee'] = $deliveryFee;
$delivery['deliveryType'] = $requestData['deliveryType']; $delivery['deliveryType'] = $requestData['deliveryType'];
$delivery['deliveryTime'] = isset($deliveryTime)?$deliveryTime:\Our\ApiConst::zero; $delivery['deliveryTime'] = isset($deliveryTime)?$deliveryTime:\Our\ApiConst::zero;
...@@ -253,9 +253,9 @@ class OrderConfirmUtil { ...@@ -253,9 +253,9 @@ class OrderConfirmUtil {
if($orderAmount<=\Our\ApiConst::zero){ if($orderAmount<=\Our\ApiConst::zero){
$orderAmount = \Our\ApiConst::zero; $orderAmount = \Our\ApiConst::zero;
} }
if($orderAmount!=$requestData['totalFee']){ // if($orderAmount!=$requestData['totalFee']){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::wrongTotalFeeForOrder); // \Error\ErrorModel::throwException(\Error\CodeConfigModel::wrongTotalFeeForOrder);
} // }
$storeCartData['cartList'][$storeId]['orderAmount'] = $orderAmount; $storeCartData['cartList'][$storeId]['orderAmount'] = $orderAmount;
} }
return $storeCartData; return $storeCartData;
......
...@@ -417,6 +417,8 @@ class ApiConst ...@@ -417,6 +417,8 @@ class ApiConst
const messageRefundProccessing=104; const messageRefundProccessing=104;
//售后待收货 //售后待收货
const messageRefundWaitReceive=105; const messageRefundWaitReceive=105;
//用户被其它用户登录请退出
const messageOtherLogin=106;
//消息按钮类型 //消息按钮类型
const messageButtonTypeConfirmButton = 1;//确认收货 const messageButtonTypeConfirmButton = 1;//确认收货
const messageButtonTypeReciverButton = 2;//确认接单 const messageButtonTypeReciverButton = 2;//确认接单
......
...@@ -173,6 +173,8 @@ class NameConst { ...@@ -173,6 +173,8 @@ class NameConst {
const add='add'; const add='add';
const reduce='reduce'; const reduce='reduce';
const logOut='logOut';
} }
?> ?>
\ No newline at end of file
...@@ -62,6 +62,10 @@ class Push ...@@ -62,6 +62,10 @@ class Push
$this->toUserType = $data['toType']; $this->toUserType = $data['toType'];
$this->data[] = $data; $this->data[] = $data;
} }
public function addOneToClient($data)
{
$this->data[] = $data;
}
public function addList($dataList) public function addList($dataList)
{ {
......
...@@ -15,6 +15,16 @@ class SettingServiceModel extends \Business\AbstractModel{ ...@@ -15,6 +15,16 @@ class SettingServiceModel extends \Business\AbstractModel{
return array('version'=>$version['ios_version']); return array('version'=>$version['ios_version']);
} }
/**
* 获取应用版本
* @return array 版本信息
*/
public function getAppVersion(){
$settingDAO = \DAO\SettingModel::getInstance();
$version = $settingDAO->getListCache(array('app_version'));
return array('version'=>$version['app_version']);
}
public function getServicePhone(){ public function getServicePhone(){
$settingDAO = \DAO\SettingModel::getInstance(); $settingDAO = \DAO\SettingModel::getInstance();
$phone = $settingDAO->getListCache(array('qm_service_phone'))['qm_service_phone']; $phone = $settingDAO->getListCache(array('qm_service_phone'))['qm_service_phone'];
......
...@@ -123,15 +123,15 @@ class OrderServiceModel extends \Business\AbstractModel ...@@ -123,15 +123,15 @@ class OrderServiceModel extends \Business\AbstractModel
if($orderState==ApiConst::orderStateComplete){ if($orderState==ApiConst::orderStateComplete){
$where['evaluation_state']=ApiConst::waitEvaluation; $where['evaluation_state']=ApiConst::waitEvaluation;
} }
if($orderState==ApiConst::orderStateWaitRecieve){ // if($orderState==ApiConst::orderStateWaitRecieve){
$where['shipping_type']=array('eq',ApiConst::bySeller); // $where['shipping_type']=array('eq',ApiConst::bySeller);
$where['order_state'] =array('in',array(ApiConst::orderStateWaitSend,ApiConst::orderStateWaitRecieve)); // $where['order_state'] =array('in',array(ApiConst::orderStateWaitSend,ApiConst::orderStateWaitRecieve));
} // }
if($orderState==ApiConst::orderStateWaitSend){ // if($orderState==ApiConst::orderStateWaitSend){
$where['shipping_type']=array('eq',ApiConst::bySelf); // $where['shipping_type']=array('eq',ApiConst::bySelf);
$where['order_state']=array('eq',ApiConst::orderStateWaitRecieve); // $where['order_state']=array('eq',ApiConst::orderStateWaitRecieve);
} // }
// $where['order_state'] = array('in', explode(',', $orderState)); $where['order_state'] = array('in', explode(',', $orderState));
} }
} }
...@@ -327,6 +327,7 @@ class OrderServiceModel extends \Business\AbstractModel ...@@ -327,6 +327,7 @@ class OrderServiceModel extends \Business\AbstractModel
$orderGoodsDao->update($where,$orderGoodsUpdateData); $orderGoodsDao->update($where,$orderGoodsUpdateData);
} }
} }
\Our\RedisHelper::rpush('client_push',array('storeId'=>$order['storeId'],'type'=>ApiConst::messageWaitReceive,'op'=>NameConst::reduce,'num'=>ApiConst::one,'params'=>array('id'=>$order['orderId'])));
if ($memberId) { if ($memberId) {
$orderDao->deleteOrderCache($memberId, $orderId, $order['storeId'],true); $orderDao->deleteOrderCache($memberId, $orderId, $order['storeId'],true);
// $memberDao->fromOrderStateToOrderState($memberId,$order['order_state'],ApiConst::orderStateCancel); // $memberDao->fromOrderStateToOrderState($memberId,$order['order_state'],ApiConst::orderStateCancel);
...@@ -430,6 +431,7 @@ class OrderServiceModel extends \Business\AbstractModel ...@@ -430,6 +431,7 @@ class OrderServiceModel extends \Business\AbstractModel
public function pushRecieveOrder($order){ public function pushRecieveOrder($order){
$push = Push::getInstance(); $push = Push::getInstance();
$push->recieveWait($order['storeId'], $order['orderId'], $order['orderSn']); $push->recieveWait($order['storeId'], $order['orderId'], $order['orderSn']);
\Our\RedisHelper::rpush('client_push',array('storeId'=>$order['storeId'],'type'=>ApiConst::messageWaitReceive,'op'=>NameConst::add,'num'=>ApiConst::one,'params'=>array('id'=>$order['orderId'])));
$push->sendTcpMessage(); $push->sendTcpMessage();
$messageService=\Business\Message\MessageServiceModel::getInstance(\Our\DbNameConst::masterDBConnectName); $messageService=\Business\Message\MessageServiceModel::getInstance(\Our\DbNameConst::masterDBConnectName);
$messageService->addMessageCenterToDb(); $messageService->addMessageCenterToDb();
...@@ -448,7 +450,7 @@ class OrderServiceModel extends \Business\AbstractModel ...@@ -448,7 +450,7 @@ class OrderServiceModel extends \Business\AbstractModel
$orders = $orderDao->getRecieveOrders(ApiConst::orderStateWaitConfirm, $addTime, $pageBegin, PageConst::taskPageSize); $orders = $orderDao->getRecieveOrders(ApiConst::orderStateWaitConfirm, $addTime, $pageBegin, PageConst::taskPageSize);
foreach ($orders['list'] as $order) { foreach ($orders['list'] as $order) {
$push->recieveWait($order['storeId'], $order['orderId'], $order['orderSn']); $push->recieveWait($order['storeId'], $order['orderId'], $order['orderSn']);
\Our\RedisHelper::rpush('client_push',array('storeId'=>$order['storeId'],'type'=>ApiConst::messageWaitReceive,'op'=>NameConst::add,'num'=>ApiConst::one,'params'=>array('id'=>$order['orderId'])));
} }
$pageBegin++; $pageBegin++;
} while (!empty($orders['list'])); } while (!empty($orders['list']));
...@@ -783,7 +785,7 @@ class OrderServiceModel extends \Business\AbstractModel ...@@ -783,7 +785,7 @@ class OrderServiceModel extends \Business\AbstractModel
//获得订单列表 //获得订单列表
// $orders=$orderDao->getList($where, $this->orderField, $pageIndex, $pageSize, $order = array('add_time' => 'desc')); // $orders=$orderDao->getList($where, $this->orderField, $pageIndex, $pageSize, $order = array('add_time' => 'desc'));
$orders = \Our\RedisHelper::cachedFunction(\Redis\Db5\OrderRedisModel::getInstance(), array(&$orderDao, 'getList'), array($where, $this->orderField, $pageIndex, $pageSize, $order = array('add_time' => 'desc')), \Our\ApiConst::oneDaySecond, array($diliverymanId)); $orders = \Our\RedisHelper::cachedFunction(\Redis\Db5\OrderRedisModel::getInstance(), array(&$orderDao, 'getList'), array($where, $this->orderField, ApiConst::zero, $pageSize, $order = array('add_time' => 'desc')), \Our\ApiConst::oneDaySecond, array($diliverymanId));
$goodsDao = \DAO\GoodsModel::getInstance(); $goodsDao = \DAO\GoodsModel::getInstance();
$orderIds = array_column($orders['list'], 'orderId'); $orderIds = array_column($orders['list'], 'orderId');
$orderCommons = $orderCommonDao->getAllByOrderIdsCache($orderIds, $diliverymanId, $orderCommonDao->orderCommonField); $orderCommons = $orderCommonDao->getAllByOrderIdsCache($orderIds, $diliverymanId, $orderCommonDao->orderCommonField);
...@@ -807,6 +809,7 @@ class OrderServiceModel extends \Business\AbstractModel ...@@ -807,6 +809,7 @@ class OrderServiceModel extends \Business\AbstractModel
$delivery['lng'] = $delivery['reciverInfo']['lng'] ? $delivery['reciverInfo']['lng'] : 0.0; $delivery['lng'] = $delivery['reciverInfo']['lng'] ? $delivery['reciverInfo']['lng'] : 0.0;
$delivery['lat'] = $delivery['reciverInfo']['lat'] ? $delivery['reciverInfo']['lat'] : 0.0; $delivery['lat'] = $delivery['reciverInfo']['lat'] ? $delivery['reciverInfo']['lat'] : 0.0;
$delivery['subAddress'] = isset($delivery['reciverInfo']['sub_address']) ? $delivery['reciverInfo']['sub_address'] : ''; $delivery['subAddress'] = isset($delivery['reciverInfo']['sub_address']) ? $delivery['reciverInfo']['sub_address'] : '';
$delivery['distributionFee']=$value['distributionFee'];
unset($delivery['goodsAmount']); unset($delivery['goodsAmount']);
// unset($delivery['orderState']); // unset($delivery['orderState']);
unset($delivery['refundState']); unset($delivery['refundState']);
...@@ -891,6 +894,8 @@ class OrderServiceModel extends \Business\AbstractModel ...@@ -891,6 +894,8 @@ class OrderServiceModel extends \Business\AbstractModel
'subAddress' => isset($reciverInfo['sub_address'])?$reciverInfo['sub_address']:'', 'subAddress' => isset($reciverInfo['sub_address'])?$reciverInfo['sub_address']:'',
'orderGoods' => $orderGoods, 'orderGoods' => $orderGoods,
'shippingFee' => $this->order['shippingFee'], 'shippingFee' => $this->order['shippingFee'],
'distributionFee'=>$delivery['distributionFee'],
'isReceivePayment'=>$this->order['isReceivePayment']
); );
return $returnData; return $returnData;
......
...@@ -25,6 +25,7 @@ class RefundServiceModel extends \Business\AbstractModel ...@@ -25,6 +25,7 @@ class RefundServiceModel extends \Business\AbstractModel
{ {
private $orderField = "buyer_id as buyerId,buyer_name as buyerName,order_id as orderId,order_sn as orderSn,store_name as storeName,add_time as AddTime,store_id as storeId,goods_amount as goodsAmount,shipping_fee as shippingFee,order_amount as orderAmount,shipping_type as shippingType,payment_type as paymentType,order_state as orderState,shipping_fee as shippingFee,refund_state as refundState,order_type as orderType,is_receive_payment as isReceivePayment,need_shipping_fee as needShippingFee,payment_code as paymentCode,delay_time as delayTime,gmt_update as gmtUpdate"; private $orderField = "buyer_id as buyerId,buyer_name as buyerName,order_id as orderId,order_sn as orderSn,store_name as storeName,add_time as AddTime,store_id as storeId,goods_amount as goodsAmount,shipping_fee as shippingFee,order_amount as orderAmount,shipping_type as shippingType,payment_type as paymentType,order_state as orderState,shipping_fee as shippingFee,refund_state as refundState,order_type as orderType,is_receive_payment as isReceivePayment,need_shipping_fee as needShippingFee,payment_code as paymentCode,delay_time as delayTime,gmt_update as gmtUpdate";
private $orderGoodsField = "commis_rate as commisRate,goods_type as goodsType,order_id as orderId,rec_id as recId,goods_id as goodsId,goods_name as goodsName,goods_price as goodsPrice,goods_num as goodsNum,goods_image as goodsImage,goods_pay_price as goodsPayPrice,sale_act_id as saleActId,sale_id as saleId,comment_state as commentState,is_refund as isRefund,goods_spec as goodsSpec,goods_group as goodsGroup,refund_id as refundId"; private $orderGoodsField = "commis_rate as commisRate,goods_type as goodsType,order_id as orderId,rec_id as recId,goods_id as goodsId,goods_name as goodsName,goods_price as goodsPrice,goods_num as goodsNum,goods_image as goodsImage,goods_pay_price as goodsPayPrice,sale_act_id as saleActId,sale_id as saleId,comment_state as commentState,is_refund as isRefund,goods_spec as goodsSpec,goods_group as goodsGroup,refund_id as refundId";
private $refundOrderGoodsField = "rec_id as recId,goods_id as goodsId,goods_name as goodsName,goods_num as goodsNum,goods_image as goodsImage,goods_price as goodsPrice,goods_pay_price as goodsPayPrice,goods_spec as goodsSpec,goods_group as goodsGroup";
private $addressField = " mob_phone as MobPhone,tel_phone as TelPhone,address as address,area_info as areaInfo,lng,lat,address_id as addressId,subaddress as subAddress"; private $addressField = " mob_phone as MobPhone,tel_phone as TelPhone,address as address,area_info as areaInfo,lng,lat,address_id as addressId,subaddress as subAddress";
private $daddressField = "address_id as addressId,store_id as storeId,seller_name as sellerName,area_id as areaId,city_id as cityId,area_info as areaInfo,address,telphone,company,is_store_address as isStoreAddress,is_default as isDefault"; private $daddressField = "address_id as addressId,store_id as storeId,seller_name as sellerName,area_id as areaId,city_id as cityId,area_info as areaInfo,address,telphone,company,is_store_address as isStoreAddress,is_default as isDefault";
...@@ -35,7 +36,7 @@ class RefundServiceModel extends \Business\AbstractModel ...@@ -35,7 +36,7 @@ class RefundServiceModel extends \Business\AbstractModel
//获得退款详情字段 //获得退款详情字段
private $refundReturnField = 'refund_id as refundId,order_id as orderId,order_sn as orderSn,refund_sn as refundSn,store_id as storeId,store_name as storeName,seller_state as sellerState,goods_id as goodsId,order_goods_id as orderGoodsId,goods_name as goodsName,goods_num as goodsNum,refund_amount as refundAmount,goods_image as goodsImage,refund_type as refundType,refund_state as refundState,return_type as returnType,add_time as addTime,seller_time as sellerTime,admin_time as adminTime,reason_info as reasonInfo,pic_info as picInfo,buyer_message as buyerMessage,seller_message as sellerMessage,admin_message adminMessage,express_id as expressId,invoice_no as invoiceNo,ship_time as shipTime,delay_time as delayTime,receive_time as receiveTime,shipping_over as shippingOver,shipping_sign as shippingSign,shipping_html as shippingHtml,is_suc_refund as isSucRefund,refund_shipping_type as refundShippingType,address_id as addressId,diliveryman_id as diliverymanId,is_platform_in as isPlatformIn,platform_in_reason as platformInReason,platform_state as platformState,seller_state as sellerState,return_type as returnType,refund_shipping_type as refundShippingType,buyer_refund_amount as buyerRefundAmount,reason_id as reasonId,receive_message as receiveMessage,goods_state as goodsState'; private $refundReturnField = 'refund_id as refundId,order_id as orderId,order_sn as orderSn,refund_sn as refundSn,store_id as storeId,store_name as storeName,seller_state as sellerState,goods_id as goodsId,order_goods_id as orderGoodsId,goods_name as goodsName,goods_num as goodsNum,refund_amount as refundAmount,goods_image as goodsImage,refund_type as refundType,refund_state as refundState,return_type as returnType,add_time as addTime,seller_time as sellerTime,admin_time as adminTime,reason_info as reasonInfo,pic_info as picInfo,buyer_message as buyerMessage,seller_message as sellerMessage,admin_message adminMessage,express_id as expressId,invoice_no as invoiceNo,ship_time as shipTime,delay_time as delayTime,receive_time as receiveTime,shipping_over as shippingOver,shipping_sign as shippingSign,shipping_html as shippingHtml,is_suc_refund as isSucRefund,refund_shipping_type as refundShippingType,address_id as addressId,diliveryman_id as diliverymanId,is_platform_in as isPlatformIn,platform_in_reason as platformInReason,platform_state as platformState,seller_state as sellerState,return_type as returnType,refund_shipping_type as refundShippingType,buyer_refund_amount as buyerRefundAmount,reason_id as reasonId,receive_message as receiveMessage,goods_state as goodsState';
private $storeRefundReturnField = 'refund_id as refundId,order_id as orderId,order_sn as orderSn,refund_sn as refundSn,store_id as storeId,store_name as storeName,seller_state as sellerState,goods_id as goodsId,order_goods_id as recId,goods_name as goodsName,goods_num as goodsNum,refund_amount as refundAmount,buyer_refund_amount as buyerRefundAmount,goods_image as goodsImage,refund_type as refundType,refund_state as refundState,return_type as returnType,add_time as addTime,seller_time as sellerTime,admin_time as adminTime,reason_id as reasonId,reason_info as reasonInfo,pic_info as picInfo,buyer_message as buyerMessage,seller_message as sellerMessage,admin_message adminMessage,express_id as expressId,invoice_no as invoiceNo,ship_time as shipTime,delay_time as delayTime,receive_time as receiveTime,receive_message as receiveMessage,shipping_over as shippingOver,shipping_sign as shippingSign,shipping_html as shippingHtml,is_suc_refund as isSucRefund,refund_shipping_type as refundShippingType,address_id as addressId,diliveryman_id as diliverymanId,is_platform_in as isPlatformIn,platform_in_reason as platformInReason,platform_state as platformState,return_type as returnType,refund_shipping_type as refundShippingType,goods_state as goodsState'; private $storeRefundReturnField = 'refund_id as refundId,order_id as orderId,order_sn as orderSn,refund_sn as refundSn,store_id as storeId,store_name as storeName,seller_state as sellerState,goods_id as goodsId,order_goods_id as orderGoodsId,goods_name as goodsName,goods_num as goodsNum,refund_amount as refundAmount,buyer_refund_amount as buyerRefundAmount,goods_image as goodsImage,refund_type as refundType,refund_state as refundState,return_type as returnType,add_time as addTime,seller_time as sellerTime,admin_time as adminTime,reason_id as reasonId,reason_info as reasonInfo,pic_info as picInfo,buyer_message as buyerMessage,seller_message as sellerMessage,admin_message adminMessage,express_id as expressId,invoice_no as invoiceNo,ship_time as shipTime,delay_time as delayTime,receive_time as receiveTime,receive_message as receiveMessage,shipping_over as shippingOver,shipping_sign as shippingSign,shipping_html as shippingHtml,is_suc_refund as isSucRefund,refund_shipping_type as refundShippingType,address_id as addressId,diliveryman_id as diliverymanId,is_platform_in as isPlatformIn,platform_in_reason as platformInReason,platform_state as platformState,return_type as returnType,refund_shipping_type as refundShippingType,goods_state as goodsState';
private $order; private $order;
...@@ -59,6 +60,320 @@ class RefundServiceModel extends \Business\AbstractModel ...@@ -59,6 +60,320 @@ class RefundServiceModel extends \Business\AbstractModel
{ {
return $this->orderGoodsField . ',goods_commonid as goodsCommonid,goods_commonid as goodsCommonId,goods_spec as goodsSpec '; return $this->orderGoodsField . ',goods_commonid as goodsCommonid,goods_commonid as goodsCommonId,goods_spec as goodsSpec ';
} }
/**
* 订单处理天数
*
*/
private function getMaxDay($day_type = 'all') {
$max_data = array(
'order_refund' => 15,//收货完成后可以申请退款退货
'refund_confirm' => 7,//卖家不处理退款退货申请时按同意处理
'return_confirm' => 7,//卖家不处理收货时按弃货处理
'return_delay' => 5//退货的商品发货多少天以后才可以选择没收到
);
if ($day_type == 'all') return $max_data;//返回所有
if (intval($max_data[$day_type]) < 1) $max_data[$day_type] = 1;//最小的值设置为1
return $max_data[$day_type];
}
/**
* 修改收货时间
* @param $storeId
* @param $refundId
* @param $receiveTime
*/
public function setReceiveTime($storeId, $refundId, $receiveTime) {
$dtime = strtotime($receiveTime);
if($receiveTime<TIMESTAMP){
ErrorModel::throwException(CodeConfigModel::commonError);
}
$refundReturnDao = \DAO\Order\RefundReturnModel::getInstance(DbNameConst::masterDBConnectName);
$whereRefund = array();
$whereRefund['store_id']= $storeId;
$whereRefund['refund_id']= $refundId;
$refund = $refundReturnDao->find($whereRefund);
if(!$refund) { //未知的退款信息
ErrorModel::throwException(CodeConfigModel::notExistRefund);
}
$state = $refundReturnDao->update(array('refund_id'=> $refundId), array('receive_time'=> $receiveTime));
if(!$state){
return false;
}
return true;
}
/**
* 退货收货处理
* @param $storeId
* @param $returnId
* @param int $goodsState
*/
public function receive($storeId, $returnId, $goodsState= 4)
{
$refundReturnDao = \DAO\Order\RefundReturnModel::getInstance(DbNameConst::masterDBConnectName);
$orderDao = \DAO\Order\OrderModel::getInstance(DbNameConst::masterDBConnectName);
$whereRefund = array();
$whereRefund['store_id']= $storeId;
$whereRefund['refund_id']= $returnId;
$refund = $refundReturnDao->find($whereRefund);
$return_delay = $this->getMaxDay('return_delay');//发货默认5天后才能选择没收到
$delay_time = TIMESTAMP - $refund['delay_time'] - 60*60*24*$return_delay;
if (($refund['seller_state'] != '2' && $refund['platform_state'] != '1') || $refund['goods_state'] != '2') {//检查状态,防止页面刷新不及时造成数据错误
return false;
}
$refund_array = array();
if ($goodsState == '3' && $delay_time > 0) {
$refund_array['goods_state'] = 3;
} else {
$refund_array['receive_time'] = TIMESTAMP;
$refund_array['receive_message'] = '确认收货完成';
$refund_array['refund_state'] = '3';//状态:1为处理中,2为待管理员处理,3为已完成
$refund_array['goods_state'] = 4;
}
$refundReturnDao->db->doTransaction();
$state = $refundReturnDao->editRefundReturn($whereRefund, $refund_array);
if($state){ //退款记录成功
// $this->recordSellerLog('退货确认收货,退货编号:'.$return['refund_sn']);
if($refund_array['goods_state'] == 4) { //同意
// add by ky start
//检测该店铺是否开启直接退款功能
$storeDAO = \DAO\StoreModel::getInstance();
$is_direct_refund = $storeDAO->getInfoById($storeId, 'is_direct_refund', true);
if($is_direct_refund==1) { //支持直接退款
//获取订单
$order_id = $refund['order_id'];
$order_info = $orderDao->find(array('order_id' => $order_id));
$orderGoodsDao = \DAO\Order\OrderGoodsModel::getInstance(DbNameConst::masterDBConnectName);
//退款 检测该订单是否为线上支付
if ($refund['refund_amount'] > 0) {
$payment_type = $order_info['payment_type'];
if (!in_array($payment_type, array(0, 2))) {
$state = $refundReturnDao->storeRefund(array_merge($order_info, array('refund_order_no' => $refund['order_sn'], 'refund_amount' => $refund['refund_amount'])));
if (!$state) {
//throw new Exception('更新订单信息失败');
$refundReturnDao->db->doRollback();
return false;
}
}
}
$refundUpdate = array('is_suc_refund' => 1, 'gmt_update' => TIMESTAMP, 'refund_state' => 3);
$res = $refundReturnDao->update(array('refund_id' => $refund['refund_id']), $refundUpdate);
if (!$res) {
$refundReturnDao->db->doRollback();
// showDialog('退款成功,退款表写入失败,请联系工作人员!',$reload,'error');
return false;
}
$result = $orderGoodsDao->update(array('rec_id' => $refund['order_goods_id']), array('refund_state_name'=>'退款成功', 'gmt_update' => TIMESTAMP));
if (!$result) {
$refundReturnDao->db->doRollback();
// showDialog('refund_state_name',$reload,'error');
return false;
}
}
}
$refundReturnDao->deleteRefundCache($refund['buyer_id'], $refund['refund_id']);
$orderDao->deleteOrderCache($refund['buyer_id'],$refund['order_id'],$refund['store_id']);
$refundReturnDao->db->doCommit();
return true;
}
$refundReturnDao->db->doRollback();
return false;
}
/**
* 退货退款处理
* @param $storeId 店铺id
* @param $refundId 退款id
* @param $refundAmount 退款金额
* @param string $text 退款消息
*/
public function refund($storeId, $refundId, $refundAmount = 0, $text = '', $seller_state = 2)
{
$refundReturnDao = \DAO\Order\RefundReturnModel::getInstance(DbNameConst::masterDBConnectName);
$orderDao = \DAO\Order\OrderModel::getInstance(DbNameConst::masterDBConnectName);
$whereRefund = array();
$whereRefund['store_id']= $storeId;
$whereRefund['refund_id']= $refundId;
$refund = $refundReturnDao->find($whereRefund);
if(!$refund) {
ErrorModel::throwException(CodeConfigModel::notExistRefund);
}
if($refund['seller_state']!=1) {
ErrorModel::throwException(CodeConfigModel::alreadyExsitRefundGoods);
}
//获取订单
$order_id = $refund['order_id'];
$order_info = $orderDao->find( array('order_id'=>$order_id));
$orderGoodsDao = \DAO\Order\OrderGoodsModel::getInstance(DbNameConst::masterDBConnectName);
$refund_array = array();
$refund_array['seller_time'] = time();
$refund_array['seller_state'] = $seller_state;//卖家处理状态:1为待审核,2为同意,3为不同意
$refund_array['seller_message'] = $text;
$refund_array['refund_amount'] = $refundAmount;
$refundReturnDao->db->doTransaction();
if($seller_state!=2){ //拒绝退款
$result= $orderGoodsDao->update(array('rec_id'=>$refund['order_goods_id']), array('is_refund'=>0, 'refund_state_name'=>'卖家拒绝退货', 'gmt_update'=>TIMESTAMP));
if(!$result){
$refundReturnDao->db->doRollback();
return false;
}
if($order_info['refund_state']== 2) {
$result = $orderDao->updateByOrderId(array('refund_state'=>1), $refund['order_id']);
if(!$result){
$refundReturnDao->db->doRollback();
return false;
}
}
$refund_array['refund_state'] = '3'; //状态:1为处理中,2为待管理员处理,3为已完成
$state = $refundReturnDao->editRefundReturn($whereRefund, $refund_array);
if(!$state){
$refundReturnDao->db->doRollback();
return false;
}
//$this->recordSellerLog('退款处理,退款编号:'.$refund['refund_sn']); //待确认
$refundReturnDao->deleteRefundCache($refund['buyer_id'], $refund['refund_id']);
$orderDao->deleteOrderCache($refund['buyer_id'],$refund['order_id'],$refund['store_id']);
$refundReturnDao->db->doCommit();
return true;
}
if($refundAmount > $refund['buyer_refund_amount']){
//showDialog('退款金额不可大于本订单支付金额','','error');
$refundReturnDao->db->doRollback();
return false;
}
//以下为同意退款流程
if($order_info['order_state']==40){ //交易完成订单,退积分
$res = $this->edit_points($refund, $order_info);
if(!$res){
$refundReturnDao->db->doRollback();
ErrorModel::throwException(CodeConfigModel::refundAddPointsLogError);
}
}
$refund_array['refund_state'] = '3'; //状态:1为处理中,2为待管理员处理,3为已完成
$state = $refundReturnDao->editRefundReturn($whereRefund, $refund_array);
if($state){ //退款记录成功
//$this->recordSellerLog('退款处理,退款编号:'.$refund['refund_sn']); //待确认
// add by ky start
//检测该店铺是否开启直接退款功能
$storeDAO = \DAO\StoreModel::getInstance();
//店铺积分
$is_direct_refund = $storeDAO->getInfoById($storeId, 'is_direct_refund', true);
$orderGoodsDao->update(array('rec_id'=>$refund['order_goods_id']), array('refund_state_name'=>'卖家同意退款'));
if($is_direct_refund==1){ //支持直接退款
//退款 检测该订单是否为线上支付
$updateData = array('is_suc_refund'=>1,'gmt_update'=>TIMESTAMP);
if($refund['refund_amount']>0){
$payment_type = $order_info['payment_type'];
if(!in_array($payment_type,array(0,2))){
$state = $refundReturnDao->storeRefund(array_merge($order_info, array('refund_order_no'=>$refund['order_sn'], 'refund_amount'=> $refund['refund_amount'])));
if (!$state) {
//throw new Exception('更新订单信息失败');
$refundReturnDao->db->doRollback();
return false;
}
if($payment_type==1) { //微信支付
$updateData = array('is_suc_refund'=>1,'gmt_update'=>TIMESTAMP,'seller_state'=>$refund_array['seller_state'],'refund_state'=>$refund_array['refund_state']);
} else {
$updateData = array('is_suc_refund'=>1,'gmt_update'=>TIMESTAMP);
}
}
}
$res=$refundReturnDao->update(array('refund_id'=>$refund['refund_id']), $updateData);
if(!$res){
$refundReturnDao->db->doRollback();
// showDialog('退款成功,退款表写入失败,请联系工作人员!',$reload,'error');
return false;
}
$result= $orderGoodsDao->update(array('rec_id'=>$refund['order_goods_id']), array('is_refund'=>1,'gmt_update'=>TIMESTAMP));
if(!$result){
$refundReturnDao->db->doRollback();
// showDialog('refund_state_name',$reload,'error');
return false;
}
}
$refundReturnDao->deleteRefundCache($refund['buyer_id'], $refund['refund_id']);
$orderDao->deleteOrderCache($refund['buyer_id'],$refund['order_id'],$refund['store_id']);
$refundReturnDao->db->doCommit();
return true;
}
$refundReturnDao->db->doRollback();
return false;
}
/**
* 退货退款已完成订单积分扣除
*
* @param $refund
* @param $order_info
* @return bool
*/
private function edit_points($refund,$order_info){
$settingDAO = \DAO\SettingModel::getInstance();
$points_ratio = floatval($settingDAO->getListCache(array('points_ratio'))['points_ratio']);
$order_id = $order_info['order_id'];
$store_id = $refund['store_id'];
$member_id = $refund['buyer_id'];
$amount_money = $refund['refund_amount'];
$pt_points = $points_ratio * $amount_money;
//平台积分
$pt_points_log_data=array(
'pl_memberid' => $member_id,
'pl_membername'=> $refund['buyer_name'],
'pl_points' => -$pt_points,
'pl_addtime' => time(),
'pl_desc' => '退货退款扣除平台积分',
'pl_stage' => '退货退款扣除',
'pl_type' => 2,
'pl_source_type'=> 2,
'pl_order_id' => $order_id
);
//更新积分记录
$plDAO = \DAO\Member\PointsLogModel::getInstance(\Our\DbNameConst::masterDBConnectName);
$ptRes = $plDAO->addlog($pt_points_log_data);
if(!$ptRes){
return false;
}
$qmmpDAO = \DAO\Member\QmMemberPointsModel::getInstance(\Our\DbNameConst::masterDBConnectName);
//
$ptMemberRes = $qmmpDAO->update('disabled_points=disabled_points-'.$pt_points, array('member_id'=>$member_id, 'points_type'=>2));
if(!$ptMemberRes){
return false;
}
$storeDAO = \DAO\StoreModel::getInstance();
//店铺积分
$ratio = $storeDAO->getInfoById($store_id, 'store_points_ratio', true);
$store_points = $amount_money*$ratio;
$store_points_log_data = array(
'pl_memberid' => $member_id,
'pl_membername'=> $refund['buyer_name'],
'pl_points' => -$store_points,
'pl_addtime' => time(),
'pl_desc' => '退货退款扣除店铺积分',
'pl_stage' => '退货退款扣除',
'pl_type' => 1,
'pl_store_id' => $store_id,
'pl_source_type'=> 2,
'pl_order_id' => $order_id
);
$storeRes = $plDAO->addlog($store_points_log_data);
if(!$storeRes){
return false;
}
$storeMemberRes = $qmmpDAO->update('disabled_points=disabled_points-'.$store_points, array('member_id'=>$member_id, 'store_id'=>$store_id));
if(!$storeMemberRes){
return false;
}
return true;
}
/** /**
* 店铺退款列表 * 店铺退款列表
...@@ -92,19 +407,19 @@ class RefundServiceModel extends \Business\AbstractModel ...@@ -92,19 +407,19 @@ class RefundServiceModel extends \Business\AbstractModel
$orderGoodsId = array_column($refundReturns['list'], 'orderGoodsId'); $orderGoodsId = array_column($refundReturns['list'], 'orderGoodsId');
//获得售后商品列表getOrderGoodsByRecIds //获得售后商品列表getOrderGoodsByRecIds
if (!empty($orderGoodsId)) { if (!empty($orderGoodsId)) {
$orderGoods = \Our\RedisHelper::cachedFunction(\Redis\Db5\OrderRedisModel::getInstance(), array(&$orderGoodsDao, 'getOrderGoodsByRecIds'), array($orderGoodsId, $this->orderGoodsField), \Our\ApiConst::oneDaySecond, array($memberId)); $orderGoods = \Our\RedisHelper::cachedFunction(\Redis\Db5\OrderRedisModel::getInstance(), array(&$orderGoodsDao, 'getOrderGoodsByRecIds'), array($orderGoodsId, $this->refundOrderGoodsField), \Our\ApiConst::oneDaySecond, array($memberId));
$refundMerge = Common::intergrateOneToOne($refundReturns['list'], $orderGoods, 'orderGoodsId', 'recId'); $refundMerge = Common::intergrateOneToOne($refundReturns['list'], $orderGoods, 'orderGoodsId', 'recId');
foreach ($refundMerge as &$value) { foreach ($refundMerge as &$value) {
$value['stateName'] = $refundReturnDao->getRefundTextStatus($value); $value['stateName'] = $refundReturnDao->getRefundTextStatus($value);
$value['blId'] = isset($value['blId']) ? (!is_null($value['blId']) ? $value['blId'] : ApiConst::zero) : ApiConst::zero; /*$value['blId'] = isset($value['blId']) ? (!is_null($value['blId']) ? $value['blId'] : ApiConst::zero) : ApiConst::zero;
$value['canPlatformIn'] = $refundReturnDao->isPlatformIn($value) ? ApiConst::one : ApiConst::zero; $value['canPlatformIn'] = $refundReturnDao->isPlatformIn($value) ? ApiConst::one : ApiConst::zero;
$value['canSendShippingType'] = $refundReturnDao->checkIsAddReturnShipping($value) ? ApiConst::one : ApiConst::zero; $value['canSendShippingType'] = $refundReturnDao->checkIsAddReturnShipping($value) ? ApiConst::one : ApiConst::zero;*/
$value['goodsImage'] = ImageUtil::getGoodsImgUrl($value['goodsImage'], ApiConst::goodsSmallSize); $value['goodsImage'] = ImageUtil::getGoodsImgUrl($value['goodsImage'], ApiConst::goodsSmallSize);
$value['goodsAttr']=$goodsDao->getFormatGoodsAttr($value['goodsSpec']); $value['goodsAttr']=$goodsDao->getFormatGoodsAttr($value['goodsSpec']);
$goodGroup=unserialize($value['goodsGroup']); $goodGroup=unserialize($value['goodsGroup']);
$value['goodsGroup']=!empty($goodGroup)?$goodGroup:[]; $value['goodsGroup']=!empty($goodGroup)?$goodGroup:[];
unset($value['goodsSpec']); unset($value['goodsSpec']);
unset($value['picInfo']); // unset($value['picInfo']);
} }
$returnData['refundReturns'] = $refundMerge; $returnData['refundReturns'] = $refundMerge;
$returnData['totalCount'] = $refundReturns['totalCount']; $returnData['totalCount'] = $refundReturns['totalCount'];
...@@ -480,8 +795,6 @@ class RefundServiceModel extends \Business\AbstractModel ...@@ -480,8 +795,6 @@ class RefundServiceModel extends \Business\AbstractModel
if ($orderInfo['orderState'] == ApiConst::orderStateWaitRecieve) { if ($orderInfo['orderState'] == ApiConst::orderStateWaitRecieve) {
$orderDao->editOrderLock($orderInfo['orderId']); $orderDao->editOrderLock($orderInfo['orderId']);
} }
return $state; return $state;
} else { } else {
ErrorModel::throwException(CodeConfigModel::refundRefuseByStore); ErrorModel::throwException(CodeConfigModel::refundRefuseByStore);
......
...@@ -254,6 +254,7 @@ class ShopkeeperServiceModel extends \Business\AbstractModel ...@@ -254,6 +254,7 @@ class ShopkeeperServiceModel extends \Business\AbstractModel
}else{ }else{
$type=ApiConst::messageWaitSend; $type=ApiConst::messageWaitSend;
} }
\Our\RedisHelper::rpush('client_push',array('storeId'=>$order['storeId'],'type'=>ApiConst::messageWaitReceive,'op'=>NameConst::reduce,'num'=>ApiConst::one,'params'=>array('id'=>$order['orderId'])));
\Our\RedisHelper::rpush('client_push',array('storeId'=>$order['storeId'],'type'=>$type,'op'=>NameConst::add,'num'=>ApiConst::one,'params'=>array('id'=>$order['orderId']))); \Our\RedisHelper::rpush('client_push',array('storeId'=>$order['storeId'],'type'=>$type,'op'=>NameConst::add,'num'=>ApiConst::one,'params'=>array('id'=>$order['orderId'])));
$orderDao->deleteOrderCache($order['buyer_id'], $orderId, $order['store_id'], true); $orderDao->deleteOrderCache($order['buyer_id'], $orderId, $order['store_id'], true);
// \Our\RedisHelper::memberTotalFromStateToState($order['buyer_id'], $order['order_state'], ApiConst::orderStateWaitSend); // \Our\RedisHelper::memberTotalFromStateToState($order['buyer_id'], $order['order_state'], ApiConst::orderStateWaitSend);
...@@ -280,7 +281,6 @@ class ShopkeeperServiceModel extends \Business\AbstractModel ...@@ -280,7 +281,6 @@ class ShopkeeperServiceModel extends \Business\AbstractModel
$orderDao = \DAO\Order\OrderModel::getInstance(); $orderDao = \DAO\Order\OrderModel::getInstance();
$goodsDao = \DAO\GoodsModel::getInstance(); $goodsDao = \DAO\GoodsModel::getInstance();
$orderCommonDao = \DAO\Order\OrderCommonModel::getInstance(); $orderCommonDao = \DAO\Order\OrderCommonModel::getInstance();
$returnData = \Our\RedisHelper::cachedFunction(\Redis\Db5\OrderRedisModel::getInstance(), array(&$orderDao, 'getList'), array($where, $orderDao->getOrderDetailField(), $pageIndex, $pageSize, $order, \Our\ApiConst::oneDaySecond, array($storeId))); $returnData = \Our\RedisHelper::cachedFunction(\Redis\Db5\OrderRedisModel::getInstance(), array(&$orderDao, 'getList'), array($where, $orderDao->getOrderDetailField(), $pageIndex, $pageSize, $order, \Our\ApiConst::oneDaySecond, array($storeId)));
//$returnData = $orderDao->getOrders($where, $this->orderListField, $pageIndex, $pageSize); //$returnData = $orderDao->getOrders($where, $this->orderListField, $pageIndex, $pageSize);
$orders = $returnData['list']; $orders = $returnData['list'];
......
...@@ -11,49 +11,34 @@ class FeedBackServiceModel extends \Business\AbstractModel ...@@ -11,49 +11,34 @@ class FeedBackServiceModel extends \Business\AbstractModel
} }
public function saveFeedback($param,$memberId){ /**
* 店铺意见反馈
* @param $param
* @param $storeId
* @param $memberId
* @return bool
* @throws \Exception
*/
public function saveFeedback($param, $storeId, $memberId) {
$storeDAO = \DAO\StoreModel::getInstance();
$feedbackDescribe = trim($param['feedbackDescribe']); $feedbackDescribe = trim($param['feedbackDescribe']);
$feedbackTelepone = trim($param['feedbackTelepone']); $feedbackTelephone = $storeDAO->getInfoById($storeId, 'store_phone', true);
$feedbackTelephone = trim($param['feedbackTelephone']);
$telephone = $feedbackTelepone ? $feedbackTelepone : $feedbackTelephone;
$type = (int)$param['type'];
if(!$feedbackDescribe){ if(!$feedbackDescribe){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::emptyFeedbackDescribe); \Error\ErrorModel::throwException(\Error\CodeConfigModel::emptyFeedbackDescribe);
} }
if(!$telephone){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::emptyFeedbackDescribe);
}
$return = \Our\Common::checkMobilePhone($telephone);
if($return === false){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::feedbackTelError);
}
$imgArr = array();
for ($i = 0 ; $i < 2 ; $i++){
$number = str_replace(array(0,1,2),array('A','B','C'),$i);
$image = $param['image'.$number];
if($image && $type == 0){
$time = date('YmdHis_');
$file_name = $time.\Our\Validate::getNumberString();
$result = \Our\ImageUtil::uploadBase64Image($image,\Our\ImageConst::feedback,$file_name);
if($result){
$result = \Our\Common::getStaticFile($file_name,\Our\ImageConst::feedback);
$imgArr[] = pathinfo($result)['basename'];
}
}else{
$imgArr[] = pathinfo($image)['basename'];
}
}
$insert = array(); $insert = array();
$insert['feedback_image'] = serialize($imgArr); $insert['feedback_type'] = 1; //店铺意见反馈
$insert['feedback_describe'] = $feedbackDescribe; $insert['feedback_describe'] = $feedbackDescribe;
$insert['feedback_time'] = time(); $insert['feedback_time'] = TIMESTAMP;
$insert['feedback_telephone'] = $telephone; $insert['feedback_telephone'] = $feedbackTelephone;
$insert['member_id'] = $memberId; $insert['member_id'] = $memberId;
$return = \DAO\FeedBackModel::getInstance()->insert($insert); $return = \DAO\FeedBackModel::getInstance()->insert($insert);
if(!$return){ if(!$return){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::saveFeedbackError); \Error\ErrorModel::throwException(\Error\CodeConfigModel::saveFeedbackError);
} }
return true;
} }
private static $_instance = null; private static $_instance = null;
......
...@@ -255,7 +255,7 @@ class MemberModel extends \DAO\AbstractModel ...@@ -255,7 +255,7 @@ class MemberModel extends \DAO\AbstractModel
$return[$key] = ApiConst::zero; $return[$key] = ApiConst::zero;
} }
} }
$memberDb0Redis->tableHMSet($memberId, $member); $memberDb0Redis->tableHMSet($memberId, $member,ApiConst::tenDaySecond);
} }
return $return; return $return;
} }
......
<?php
namespace DAO\Member;
use Our\ApiConst;
use Our\ArrayConst;
use Our\Common;
use Our\DbNameConst;
use Our\DescribeConst;
use Our\NameConst;
use Our\OrderConst;
/**
* 积分相关
* @date 2018-5-14
* @author csw
*/
class PointsLogModel extends \DAO\AbstractModel
{
/**
* 表名
*
* @var string
*/
protected $_tableName = 'han_points_log';
/**
* 主键
*
* @var string
*/
protected $_primaryKey = 'pl_id';
public function init()
{
//$this->setDb();
}
/**
* 新增记录
* @param $data
* @return mixed
*/
public function addLog($data){
$this->setDb($this->dbName);
$logId = $this->db->insert($this->_tableName)->rows($data)->execute();
return $logId;
}
/**
* 类实例
*
* @var \DAO\UserModel
*/
private static $_instance = null;
/**
* 单例模式获取类实例
*
*/
public static function getInstance($dbName=DbNameConst::salveDBConnectName)
{
if (!(self::$_instance instanceof self)) {
self::$_instance = new self($dbName);
}
return self::$_instance;
}
}
<?php
namespace DAO\Member;
use Our\ApiConst;
use Our\ArrayConst;
use Our\Common;
use Our\DbNameConst;
use Our\DescribeConst;
use Our\NameConst;
use Our\OrderConst;
/**
* 会员积分相关
* @date 2018-5-14
* @author csw
*/
class QmMemberPointsModel extends \DAO\AbstractModel
{
/**
* 表名
*
* @var string
*/
protected $_tableName = 'han_qm_member_points';
/**
* 主键
*
* @var string
*/
protected $_primaryKey = 'id';
public function init()
{
//$this->setDb();
}
/**
* 新增记录
* @param $data
* @return mixed
*/
public function addLog($data){
$this->setDb($this->dbName);
$logId = $this->db->insert($this->_tableName)->rows($data)->execute();
return $logId;
}
/**
* 更新会员积分
* @param $param
* @param $where
* @return mixed
*/
public function update($param, $where){
$this->setDb(\Our\DbNameConst::masterDBConnectName);
return $this->db->update($this->_tableName)->rows($param)->where($where)->execute();
}
/**
* 类实例
*
* @var \DAO\UserModel
*/
private static $_instance = null;
/**
* 单例模式获取类实例
*
*/
public static function getInstance($dbName=DbNameConst::salveDBConnectName)
{
if (!(self::$_instance instanceof self)) {
self::$_instance = new self($dbName);
}
return self::$_instance;
}
}
...@@ -268,6 +268,9 @@ class OrderModel extends \DAO\AbstractModel ...@@ -268,6 +268,9 @@ class OrderModel extends \DAO\AbstractModel
$where['order_id'] = $orderIds; $where['order_id'] = $orderIds;
} }
$where = $this->db->getSqlWhereByArray($where); $where = $this->db->getSqlWhereByArray($where);
if($status==ApiConst::orderStateComplete){
$data['is_receive_payment']=ApiConst::receivePayment;
}
$data['order_state'] = $status; $data['order_state'] = $status;
$data['finnshed_time']=TIMESTAMP; $data['finnshed_time']=TIMESTAMP;
if ($isConfirm) { if ($isConfirm) {
......
...@@ -16,8 +16,8 @@ use Our\ImageConst; ...@@ -16,8 +16,8 @@ use Our\ImageConst;
class QmDeliverymanLogModel extends \DAO\AbstractModel class QmDeliverymanLogModel extends \DAO\AbstractModel
{ {
public $fieldList = 'id,finish_time finishTime,get_time as getTime,order_id as orderId'; public $fieldList = 'id,finish_time finishTime,get_time as getTime,order_id as orderId,distribution_fee as distributionFee';
public $fieldDetail = 'id,finish_time finishTime,get_time as getTime,order_id as orderId,delivery_state as deliveryState,order_type as orderType'; public $fieldDetail = 'id,finish_time finishTime,get_time as getTime,order_id as orderId,delivery_state as deliveryState,order_type as orderType,distribution_fee as distributionFee';
/** /**
* 表名 * 表名
......
...@@ -311,6 +311,55 @@ class RefundReturnModel extends \DAO\AbstractModel { ...@@ -311,6 +311,55 @@ class RefundReturnModel extends \DAO\AbstractModel {
return $picsRes; return $picsRes;
} }
/**
* 店铺退款
* @param $orderInfo 订单信息
*/
public function storeRefund($orderInfo){
$param['refundOrderNo'] = !empty($orderInfo['refund_order_no']) ? $orderInfo['refund_order_no'] : $this->getRefundsn($orderInfo['store_id']);
//这个有可能多次退款的时候要变
$param['outTradeNo'] = $orderInfo['pay_sn'];
$param['totalFee'] = $orderInfo['order_amount'];
$param['refundFee'] = $orderInfo['refund_amount'];//退款金额
$param['storeId'] = $orderInfo['store_id'];
$param['buyerId'] = $orderInfo['buyer_id'];
if (intval($orderInfo['payment_type']) == ApiConst::wxAppPayType) {
$wxpay = \Payment\WxPay::getInstance();
$refund_return = $wxpay->refund($param);
$this->errorMessage= "微信返回:".json_encode($refund_return);
if (!($refund_return['return_code'] == 'SUCCESS' && $refund_return['result_code'] == 'SUCCESS')) {
$this->errorMessage=date('Y-m-d').'微信退款操作执行失败!'.$orderInfo['order_id']."\r\n";
return false;
}
} else if (intval($orderInfo['payment_type']) == ApiConst::alipay) {
$aliPay = \Payment\Alipay::getInstance();
$return = $aliPay->refund($param);
$this->errorMessage = "支付宝返回:" . json_encode($return);
$resultCode = $return->code;
if (!empty($resultCode) && $resultCode == ApiConst::alipayRefundSuccess) {
return true;
} else {
$this->errorMessage = date('Y-m-d') . '支付宝退款操作执行失败:' . $orderInfo['order_id'] . "\r\n";
return false;
}
}else if(intval($orderInfo['payment_type']) == ApiConst::wxProgram){
$wxpay = \Payment\WxPay::getInstance();
$refund_return = $wxpay->refund($param);
$this->errorMessage= "微信小程序返回:".json_encode($refund_return);
if (!($refund_return['return_code'] == 'SUCCESS' && $refund_return['result_code'] == 'SUCCESS')) {
$this->errorMessage=date('Y-m-d').'微信退款操作执行失败!'.$orderInfo['order_id']."\r\n";
return false;
}
}
return true;
}
/**
* 退款
* @param $orderInfo
* @return bool
*/
public function refundMoney($orderInfo){ public function refundMoney($orderInfo){
$param['refundOrderNo'] = !empty($orderInfo['refundOrderNo'])?$orderInfo['refundOrderNo']:$this->getRefundsn($orderInfo['storeId']); $param['refundOrderNo'] = !empty($orderInfo['refundOrderNo'])?$orderInfo['refundOrderNo']:$this->getRefundsn($orderInfo['storeId']);
...@@ -350,6 +399,26 @@ class RefundReturnModel extends \DAO\AbstractModel { ...@@ -350,6 +399,26 @@ class RefundReturnModel extends \DAO\AbstractModel {
} }
return true; return true;
} }
/**
* 修改记录
*
* @param $condition
* @param $data
* @return bool
*/
public function editRefundReturn($condition, $data) {
if (empty($condition)) {
return false;
}
$this->setDb($this->dbName);
if (is_array($data)) {
$result = $this->db->update($this->_tableName)->rows($data)->where($where)->execute();
return $result;
} else {
return false;
}
}
/** /**
* 增加退款退货 * 增加退款退货
* *
......
...@@ -297,6 +297,7 @@ class CodeConfigModel ...@@ -297,6 +297,7 @@ class CodeConfigModel
const wrongEvaluation = 30120; const wrongEvaluation = 30120;
const selfGoodsForStoreOrder = 30121; const selfGoodsForStoreOrder = 30121;
const refundAddPointsLogError = 30122;
//店铺相关错误码 //店铺相关错误码
//商品分类 //商品分类
...@@ -519,6 +520,7 @@ class CodeConfigModel ...@@ -519,6 +520,7 @@ class CodeConfigModel
self::refundRefuseByStore => '商家不同意退款,如有疑问请联系客服', self::refundRefuseByStore => '商家不同意退款,如有疑问请联系客服',
self::returnErrorAfterPay => '货到付款订单在没确认收货前不能退款退货', self::returnErrorAfterPay => '货到付款订单在没确认收货前不能退款退货',
self::returnBeyondTimeError => '收货超时订单不能退款', self::returnBeyondTimeError => '收货超时订单不能退款',
self::refundAddPointsLogError => '退货退款积分更新写入失败',
//店铺相关错误 //店铺相关错误
self::illegalFavStore => '不能关注自己的店铺', self::illegalFavStore => '不能关注自己的店铺',
......
...@@ -7,10 +7,7 @@ class FeedbackController extends \Our\Controller_AbstractApi { ...@@ -7,10 +7,7 @@ class FeedbackController extends \Our\Controller_AbstractApi {
} }
public function saveFeedbackAction(){ public function saveFeedbackAction(){
$msg = \Business\User\FeedBackServiceModel::getInstance()->saveFeedback($this->req[\Our\NameConst::data],$this->memberId); $msg = \Business\User\FeedBackServiceModel::getInstance()->saveFeedback($this->req[\Our\NameConst::data], $this->storeId,$this->memberId);
unset($this->req[\Our\NameConst::data]['imageA']);
unset($this->req[\Our\NameConst::data]['imageB']);
unset($this->req[\Our\NameConst::data]['imageC']);
$this->success(''); $this->success('');
} }
} }
\ No newline at end of file
<?php <?php
use Error\ErrorModel; use Error\ErrorModel;
...@@ -178,18 +176,6 @@ class ShopkeeperController extends \Our\Controller_AbstractClient { ...@@ -178,18 +176,6 @@ class ShopkeeperController extends \Our\Controller_AbstractClient {
} }
} }
/**
* 获得售后列表
*/
public function getRefunds(){
$type = intval($this->req['data']['type']);
$refundService=\Business\Order\RefundServiceModel::getInstance();
$pageIndex=$this->getPageIndex();
$pageSize=$this->getPageSize();
$res=$refundService->getStoreRefundList($this->storeId, $type, $pageIndex, $pageSize);
$this->success($res);
}
/** /**
* 获得订单数量 * 获得订单数量
*/ */
...@@ -249,11 +235,83 @@ class ShopkeeperController extends \Our\Controller_AbstractClient { ...@@ -249,11 +235,83 @@ class ShopkeeperController extends \Our\Controller_AbstractClient {
} }
/** /**
* 添加库存 * 获得售后列表
* @author king */
public function getRefundsAction(){
$type = intval($this->req['data']['type']);
$refundService=\Business\Order\RefundServiceModel::getInstance();
$pageIndex=$this->getPageIndex();
$pageSize=$this->getPageSize();
$res=$refundService->getStoreRefundList($this->storeId, $type, $pageIndex, $pageSize);
$this->success($res);
}
/**
* 同意退款
*/
public function agreeAction(){
$refundId= intval($this->req['data']['refundId']);
if(!$refundId) {
ErrorModel::throwException(CodeConfigModel::notExistRefund);
}
$refundService=\Business\Order\RefundServiceModel::getInstance();
$refundAmount = floatval($this->req['data']['refundAmount']);
$text = trim($this->req['data']['text']);
$res = $refundService->refund($this->storeId, $refundId,$refundAmount, $text);
$this->success($res);
}
/**
* 拒绝退款
*/
public function refuseAction(){
$refundId= intval($this->req['data']['refundId']);
if(!$refundId) {
ErrorModel::throwException(CodeConfigModel::notExistRefund);
}
$refundService=\Business\Order\RefundServiceModel::getInstance();
$text = trim($this->req['data']['text']);
$res = $refundService->refund($this->storeId, $refundId,0, $text, 3);
$this->success($res);
}
/**
* 确认收货
* @throws Exception
*/ */
public function confirmReceiveAction(){ public function confirmReceiveAction(){
$refundId= intval($this->req['data']['refundId']);
if(!$refundId) {
ErrorModel::throwException(CodeConfigModel::notExistRefund);
}
$refundService=\Business\Order\RefundServiceModel::getInstance();
$goodsState= intval($this->req['data']['goodsState']);
$res = $refundService->receive($this->storeId, $refundId, $goodsState);
$this->success($res);
}
/**
* 获取应用版本
*/
public function getVersionAction(){
$version = \Business\Common\SettingServiceModel::getInstance()->getAppVersion();
$this->success($version);
}
/**
* 设置收货时间
* @throws Exception
*/
public function setReceiveTimeAction(){
$refundId= intval($this->req['data']['refundId']);
if(!$refundId) {
ErrorModel::throwException(CodeConfigModel::notExistRefund);
}
$refundService=\Business\Order\RefundServiceModel::getInstance();
$receiveTime = trim($this->req['data']['receiveTime']);
$res = $refundService->setReceiveTime($this->storeId, $refundId, $receiveTime);
$this->success($res);
} }
} }
......
...@@ -68,6 +68,10 @@ class UserController extends \Our\Controller_AbstractIndex { ...@@ -68,6 +68,10 @@ class UserController extends \Our\Controller_AbstractIndex {
$member[NameConst::sessionKey]=$this->key; $member[NameConst::sessionKey]=$this->key;
$member['store_id']=$seller['storeId']; $member['store_id']=$seller['storeId'];
$member['seller_id']=$seller['sellerId']; $member['seller_id']=$seller['sellerId'];
//通知退出
$push=\Our\Push::getInstance();
$push->addOneToClient(array('storeId'=>$member['store_id'],'type'=>\Our\ApiConst::messageOtherLogin,'op'=>NameConst::logOut,'params'=>array('c'=>'member','m'=>'logOut')));
$push->sendTcpMessage();
$this->memberService->saveMember($member,'seller'); $this->memberService->saveMember($member,'seller');
$this->success(array('key'=>$this->key,'memberName'=>$member['member_name'],'memberMobile'=>$member['member_mobile'],'memberAvatar'=>$member['memberAvatarUrl'],'memberId'=>(int)$member['member_id'],'storeId'=>(int)$seller['storeId'])); $this->success(array('key'=>$this->key,'memberName'=>$member['member_name'],'memberMobile'=>$member['member_mobile'],'memberAvatar'=>$member['memberAvatarUrl'],'memberId'=>(int)$member['member_id'],'storeId'=>(int)$seller['storeId']));
}else{ }else{
......
...@@ -9,3 +9,8 @@ Send POST https://api.jpush.cn/v3/push, body:{"platform":"all","audience":{"alia ...@@ -9,3 +9,8 @@ Send POST https://api.jpush.cn/v3/push, body:{"platform":"all","audience":{"alia
Send POST https://api.jpush.cn/v3/push, body:{"platform":"all","audience":{"alias":["267"]},"notification":{"alert":"\u8eab\u8fb9\u5e97","android":{"title":"\u8eab\u8fb9\u5e97","extras":{"0":"title","toId":267},"alert":"abc"},"ios":{"alert":"abc","sound":"sound.caf","category":"shenbd","extras":{"0":"title","toId":267},"badge":"+1"}},"message":{"msg_content":"abc","title":"\u8eab\u8fb9\u5e97","extras":{"0":"title","toId":267}},"options":{"sendno":1915741346,"apns_production":false}}, times:1 Send POST https://api.jpush.cn/v3/push, body:{"platform":"all","audience":{"alias":["267"]},"notification":{"alert":"\u8eab\u8fb9\u5e97","android":{"title":"\u8eab\u8fb9\u5e97","extras":{"0":"title","toId":267},"alert":"abc"},"ios":{"alert":"abc","sound":"sound.caf","category":"shenbd","extras":{"0":"title","toId":267},"badge":"+1"}},"message":{"msg_content":"abc","title":"\u8eab\u8fb9\u5e97","extras":{"0":"title","toId":267}},"options":{"sendno":1915741346,"apns_production":false}}, times:1
Send POST https://api.jpush.cn/v3/push, body:{"platform":"all","audience":{"alias":["267"]},"notification":{"alert":"\u8eab\u8fb9\u5e97","android":{"title":"\u8eab\u8fb9\u5e97","extras":{"0":"title","toId":267},"alert":"abc"},"ios":{"alert":"abc","sound":"sound.caf","category":"shenbd","extras":{"0":"title","toId":267},"badge":"+1"}},"message":{"msg_content":"abc","title":"\u8eab\u8fb9\u5e97","extras":{"0":"title","toId":267}},"options":{"sendno":1523062145,"apns_production":false}}, times:1 Send POST https://api.jpush.cn/v3/push, body:{"platform":"all","audience":{"alias":["267"]},"notification":{"alert":"\u8eab\u8fb9\u5e97","android":{"title":"\u8eab\u8fb9\u5e97","extras":{"0":"title","toId":267},"alert":"abc"},"ios":{"alert":"abc","sound":"sound.caf","category":"shenbd","extras":{"0":"title","toId":267},"badge":"+1"}},"message":{"msg_content":"abc","title":"\u8eab\u8fb9\u5e97","extras":{"0":"title","toId":267}},"options":{"sendno":1523062145,"apns_production":false}}, times:1
Send POST https://api.jpush.cn/v3/push, body:{"platform":"all","audience":{"alias":["267"]},"notification":{"alert":"\u8eab\u8fb9\u5e97","android":{"title":"\u8eab\u8fb9\u5e97","extras":{"0":"title","toId":267},"alert":"abc"},"ios":{"alert":"abc","sound":"sound.caf","category":"shenbd","extras":{"0":"title","toId":267},"badge":"+1"}},"message":{"msg_content":"abc","title":"\u8eab\u8fb9\u5e97","extras":{"0":"title","toId":267}},"options":{"sendno":1084857911,"apns_production":false}}, times:1 Send POST https://api.jpush.cn/v3/push, body:{"platform":"all","audience":{"alias":["267"]},"notification":{"alert":"\u8eab\u8fb9\u5e97","android":{"title":"\u8eab\u8fb9\u5e97","extras":{"0":"title","toId":267},"alert":"abc"},"ios":{"alert":"abc","sound":"sound.caf","category":"shenbd","extras":{"0":"title","toId":267},"badge":"+1"}},"message":{"msg_content":"abc","title":"\u8eab\u8fb9\u5e97","extras":{"0":"title","toId":267}},"options":{"sendno":1084857911,"apns_production":false}}, times:1
Send POST https://api.jpush.cn/v3/push, body:{"platform":"all","audience":{"alias":["249"]},"notification":{"alert":"\u8eab\u8fb9\u5e97\u8ba2\u5355\u6d88\u606f","android":{"title":"\u8eab\u8fb9\u5e97\u8ba2\u5355\u6d88\u606f","extras":{"fromId":-2,"fromUserId":-2,"fromUserName":"\u8ba2\u5355\u6d88\u606f","fromAvatar":"http:\/\/qmoss-01.oss-cn-hangzhou.aliyuncs.com\/system\/order.jpg","fromType":-2,"toId":249,"toUserId":11,"toUserName":"kkk\u6d4b\u8bd5\u5e97","toType":4,"message":{"type":15,"title":"\u60a8\u6709\u65b0\u7684\u8ba2\u5355","content":"\u8ba2\u5355\u53f7:1000000000251001\n\u5546\u54c1\u540d\u79f0:0-3\u5c81\u5e7c\u513f\u751f\u6d3b\u60c5\u666f\u6e38\u620f\u7ed8\u672c\u548c\u6211\u4e00\u8d77\u73a9\uff08\u5957\u88c5\u51686\u518c\uff09 [0-3\u5c81]\u00d71\n\u652f\u4ed8\u65b9\u5f0f:\u7ebf\u4e0b\u4ed8\u6b3e\n\u4ed8\u6b3e\u72b6\u6001:\u672a\u4ed8\u6b3e\n\u6536\u8d27\u5730\u5740:\u798f\u5efa\u7701\u798f\u5dde\u5e02\u4ed3\u5c71\u533a\u798f\u8fdc\u6587\u521b\u56ed\n\u6536\u8d27\u4eba:\u9648\n\u6536\u8d27\u4eba\u7535\u8bdd:18305954587\n","thumb":"","url":"","href":"orderId=1934","price":0,"createTime":1541082058,"buttons":[{"type":2,"name":"\u786e\u8ba4\u63a5\u5355","status":1,"showType":3,"buttonId":1,"params":{"orderId":1934}}]},"id":"1541082058021934"},"alert":"\u8ba2\u5355\u53f7:1000000000251001\n\u5546\u54c1\u540d\u79f0:0-3\u5c81\u5e7c\u513f\u751f\u6d3b\u60c5\u666f\u6e38\u620f\u7ed8\u672c\u548c\u6211\u4e00\u8d77\u73a9\uff08\u5957\u88c5\u51686\u518c\uff09 [0-3\u5c81]\u00d71\n\u652f\u4ed8\u65b9\u5f0f:\u7ebf\u4e0b\u4ed8\u6b3e\n\u4ed8\u6b3e\u72b6\u6001:\u672a\u4ed8\u6b3e\n\u6536\u8d27\u5730\u5740:\u798f\u5efa\u7701\u798f\u5dde\u5e02\u4ed3\u5c71\u533a\u798f\u8fdc\u6587\u521b\u56ed\n\u6536\u8d27\u4eba:\u9648\n\u6536\u8d27\u4eba\u7535\u8bdd:18305954587\n"},"ios":{"alert":"\u8ba2\u5355\u53f7:1000000000251001\n\u5546\u54c1\u540d\u79f0:0-3\u5c81\u5e7c\u513f\u751f\u6d3b\u60c5\u666f\u6e38\u620f\u7ed8\u672c\u548c\u6211\u4e00\u8d77\u73a9\uff08\u5957\u88c5\u51686\u518c\uff09 [0-3\u5c81]\u00d71\n\u652f\u4ed8\u65b9\u5f0f:\u7ebf\u4e0b\u4ed8\u6b3e\n\u4ed8\u6b3e\u72b6\u6001:\u672a\u4ed8\u6b3e\n\u6536\u8d27\u5730\u5740:\u798f\u5efa\u7701\u798f\u5dde\u5e02\u4ed3\u5c71\u533a\u798f\u8fdc\u6587\u521b\u56ed\n\u6536\u8d27\u4eba:\u9648\n\u6536\u8d27\u4eba\u7535\u8bdd:18305954587\n","sound":"sound.caf","category":"shenbd","extras":{"fromId":-2,"fromUserId":-2,"fromUserName":"\u8ba2\u5355\u6d88\u606f","fromAvatar":"http:\/\/qmoss-01.oss-cn-hangzhou.aliyuncs.com\/system\/order.jpg","fromType":-2,"toId":249,"toUserId":11,"toUserName":"kkk\u6d4b\u8bd5\u5e97","toType":4,"message":{"type":15,"title":"\u60a8\u6709\u65b0\u7684\u8ba2\u5355","content":"\u8ba2\u5355\u53f7:1000000000251001\n\u5546\u54c1\u540d\u79f0:0-3\u5c81\u5e7c\u513f\u751f\u6d3b\u60c5\u666f\u6e38\u620f\u7ed8\u672c\u548c\u6211\u4e00\u8d77\u73a9\uff08\u5957\u88c5\u51686\u518c\uff09 [0-3\u5c81]\u00d71\n\u652f\u4ed8\u65b9\u5f0f:\u7ebf\u4e0b\u4ed8\u6b3e\n\u4ed8\u6b3e\u72b6\u6001:\u672a\u4ed8\u6b3e\n\u6536\u8d27\u5730\u5740:\u798f\u5efa\u7701\u798f\u5dde\u5e02\u4ed3\u5c71\u533a\u798f\u8fdc\u6587\u521b\u56ed\n\u6536\u8d27\u4eba:\u9648\n\u6536\u8d27\u4eba\u7535\u8bdd:18305954587\n","thumb":"","url":"","href":"orderId=1934","price":0,"createTime":1541082058,"buttons":[{"type":2,"name":"\u786e\u8ba4\u63a5\u5355","status":1,"showType":3,"buttonId":1,"params":{"orderId":1934}}]},"id":"1541082058021934"},"badge":"+1"}},"message":{"msg_content":"\u8ba2\u5355\u53f7:1000000000251001\n\u5546\u54c1\u540d\u79f0:0-3\u5c81\u5e7c\u513f\u751f\u6d3b\u60c5\u666f\u6e38\u620f\u7ed8\u672c\u548c\u6211\u4e00\u8d77\u73a9\uff08\u5957\u88c5\u51686\u518c\uff09 [0-3\u5c81]\u00d71\n\u652f\u4ed8\u65b9\u5f0f:\u7ebf\u4e0b\u4ed8\u6b3e\n\u4ed8\u6b3e\u72b6\u6001:\u672a\u4ed8\u6b3e\n\u6536\u8d27\u5730\u5740:\u798f\u5efa\u7701\u798f\u5dde\u5e02\u4ed3\u5c71\u533a\u798f\u8fdc\u6587\u521b\u56ed\n\u6536\u8d27\u4eba:\u9648\n\u6536\u8d27\u4eba\u7535\u8bdd:18305954587\n","title":"\u8eab\u8fb9\u5e97\u8ba2\u5355\u6d88\u606f","extras":{"fromId":-2,"fromUserId":-2,"fromUserName":"\u8ba2\u5355\u6d88\u606f","fromAvatar":"http:\/\/qmoss-01.oss-cn-hangzhou.aliyuncs.com\/system\/order.jpg","fromType":-2,"toId":249,"toUserId":11,"toUserName":"kkk\u6d4b\u8bd5\u5e97","toType":4,"message":{"type":15,"title":"\u60a8\u6709\u65b0\u7684\u8ba2\u5355","content":"\u8ba2\u5355\u53f7:1000000000251001\n\u5546\u54c1\u540d\u79f0:0-3\u5c81\u5e7c\u513f\u751f\u6d3b\u60c5\u666f\u6e38\u620f\u7ed8\u672c\u548c\u6211\u4e00\u8d77\u73a9\uff08\u5957\u88c5\u51686\u518c\uff09 [0-3\u5c81]\u00d71\n\u652f\u4ed8\u65b9\u5f0f:\u7ebf\u4e0b\u4ed8\u6b3e\n\u4ed8\u6b3e\u72b6\u6001:\u672a\u4ed8\u6b3e\n\u6536\u8d27\u5730\u5740:\u798f\u5efa\u7701\u798f\u5dde\u5e02\u4ed3\u5c71\u533a\u798f\u8fdc\u6587\u521b\u56ed\n\u6536\u8d27\u4eba:\u9648\n\u6536\u8d27\u4eba\u7535\u8bdd:18305954587\n","thumb":"","url":"","href":"orderId=1934","price":0,"createTime":1541082058,"buttons":[{"type":2,"name":"\u786e\u8ba4\u63a5\u5355","status":1,"showType":3,"buttonId":1,"params":{"orderId":1934}}]},"id":"1541082058021934"}},"options":{"sendno":49353205,"apns_production":false}}, times:1
Send POST https://api.jpush.cn/v3/push, body:{"platform":"all","audience":{"alias":["249"]},"notification":{"alert":"\u8eab\u8fb9\u5e97\u8ba2\u5355\u6d88\u606f","android":{"title":"\u8eab\u8fb9\u5e97\u8ba2\u5355\u6d88\u606f","extras":{"fromId":-2,"fromUserId":-2,"fromUserName":"\u8ba2\u5355\u6d88\u606f","fromAvatar":"http:\/\/qmoss-01.oss-cn-hangzhou.aliyuncs.com\/system\/order.jpg","fromType":-2,"toId":249,"toUserId":11,"toUserName":"kkk\u6d4b\u8bd5\u5e97","toType":4,"message":{"type":15,"title":"\u60a8\u6709\u65b0\u7684\u8ba2\u5355","content":"\u8ba2\u5355\u53f7:1000000000251101\n\u5546\u54c1\u540d\u79f0:0-3\u5c81\u5e7c\u513f\u751f\u6d3b\u60c5\u666f\u6e38\u620f\u7ed8\u672c\u548c\u6211\u4e00\u8d77\u73a9\uff08\u5957\u88c5\u51686\u518c\uff09 [0-3\u5c81]\u00d71\n\u652f\u4ed8\u65b9\u5f0f:\u7ebf\u4e0b\u4ed8\u6b3e\n\u4ed8\u6b3e\u72b6\u6001:\u672a\u4ed8\u6b3e\n\u6536\u8d27\u5730\u5740:\u798f\u5efa\u7701\u798f\u5dde\u5e02\u4ed3\u5c71\u533a\u798f\u8fdc\u6587\u521b\u56ed\n\u6536\u8d27\u4eba:\u9648\n\u6536\u8d27\u4eba\u7535\u8bdd:18305954587\n","thumb":"","url":"","href":"orderId=1935","price":0,"createTime":1541082167,"buttons":[{"type":2,"name":"\u786e\u8ba4\u63a5\u5355","status":1,"showType":3,"buttonId":1,"params":{"orderId":1935}}]},"id":"1541082167021935"},"alert":"\u8ba2\u5355\u53f7:1000000000251101\n\u5546\u54c1\u540d\u79f0:0-3\u5c81\u5e7c\u513f\u751f\u6d3b\u60c5\u666f\u6e38\u620f\u7ed8\u672c\u548c\u6211\u4e00\u8d77\u73a9\uff08\u5957\u88c5\u51686\u518c\uff09 [0-3\u5c81]\u00d71\n\u652f\u4ed8\u65b9\u5f0f:\u7ebf\u4e0b\u4ed8\u6b3e\n\u4ed8\u6b3e\u72b6\u6001:\u672a\u4ed8\u6b3e\n\u6536\u8d27\u5730\u5740:\u798f\u5efa\u7701\u798f\u5dde\u5e02\u4ed3\u5c71\u533a\u798f\u8fdc\u6587\u521b\u56ed\n\u6536\u8d27\u4eba:\u9648\n\u6536\u8d27\u4eba\u7535\u8bdd:18305954587\n"},"ios":{"alert":"\u8ba2\u5355\u53f7:1000000000251101\n\u5546\u54c1\u540d\u79f0:0-3\u5c81\u5e7c\u513f\u751f\u6d3b\u60c5\u666f\u6e38\u620f\u7ed8\u672c\u548c\u6211\u4e00\u8d77\u73a9\uff08\u5957\u88c5\u51686\u518c\uff09 [0-3\u5c81]\u00d71\n\u652f\u4ed8\u65b9\u5f0f:\u7ebf\u4e0b\u4ed8\u6b3e\n\u4ed8\u6b3e\u72b6\u6001:\u672a\u4ed8\u6b3e\n\u6536\u8d27\u5730\u5740:\u798f\u5efa\u7701\u798f\u5dde\u5e02\u4ed3\u5c71\u533a\u798f\u8fdc\u6587\u521b\u56ed\n\u6536\u8d27\u4eba:\u9648\n\u6536\u8d27\u4eba\u7535\u8bdd:18305954587\n","sound":"sound.caf","category":"shenbd","extras":{"fromId":-2,"fromUserId":-2,"fromUserName":"\u8ba2\u5355\u6d88\u606f","fromAvatar":"http:\/\/qmoss-01.oss-cn-hangzhou.aliyuncs.com\/system\/order.jpg","fromType":-2,"toId":249,"toUserId":11,"toUserName":"kkk\u6d4b\u8bd5\u5e97","toType":4,"message":{"type":15,"title":"\u60a8\u6709\u65b0\u7684\u8ba2\u5355","content":"\u8ba2\u5355\u53f7:1000000000251101\n\u5546\u54c1\u540d\u79f0:0-3\u5c81\u5e7c\u513f\u751f\u6d3b\u60c5\u666f\u6e38\u620f\u7ed8\u672c\u548c\u6211\u4e00\u8d77\u73a9\uff08\u5957\u88c5\u51686\u518c\uff09 [0-3\u5c81]\u00d71\n\u652f\u4ed8\u65b9\u5f0f:\u7ebf\u4e0b\u4ed8\u6b3e\n\u4ed8\u6b3e\u72b6\u6001:\u672a\u4ed8\u6b3e\n\u6536\u8d27\u5730\u5740:\u798f\u5efa\u7701\u798f\u5dde\u5e02\u4ed3\u5c71\u533a\u798f\u8fdc\u6587\u521b\u56ed\n\u6536\u8d27\u4eba:\u9648\n\u6536\u8d27\u4eba\u7535\u8bdd:18305954587\n","thumb":"","url":"","href":"orderId=1935","price":0,"createTime":1541082167,"buttons":[{"type":2,"name":"\u786e\u8ba4\u63a5\u5355","status":1,"showType":3,"buttonId":1,"params":{"orderId":1935}}]},"id":"1541082167021935"},"badge":"+1"}},"message":{"msg_content":"\u8ba2\u5355\u53f7:1000000000251101\n\u5546\u54c1\u540d\u79f0:0-3\u5c81\u5e7c\u513f\u751f\u6d3b\u60c5\u666f\u6e38\u620f\u7ed8\u672c\u548c\u6211\u4e00\u8d77\u73a9\uff08\u5957\u88c5\u51686\u518c\uff09 [0-3\u5c81]\u00d71\n\u652f\u4ed8\u65b9\u5f0f:\u7ebf\u4e0b\u4ed8\u6b3e\n\u4ed8\u6b3e\u72b6\u6001:\u672a\u4ed8\u6b3e\n\u6536\u8d27\u5730\u5740:\u798f\u5efa\u7701\u798f\u5dde\u5e02\u4ed3\u5c71\u533a\u798f\u8fdc\u6587\u521b\u56ed\n\u6536\u8d27\u4eba:\u9648\n\u6536\u8d27\u4eba\u7535\u8bdd:18305954587\n","title":"\u8eab\u8fb9\u5e97\u8ba2\u5355\u6d88\u606f","extras":{"fromId":-2,"fromUserId":-2,"fromUserName":"\u8ba2\u5355\u6d88\u606f","fromAvatar":"http:\/\/qmoss-01.oss-cn-hangzhou.aliyuncs.com\/system\/order.jpg","fromType":-2,"toId":249,"toUserId":11,"toUserName":"kkk\u6d4b\u8bd5\u5e97","toType":4,"message":{"type":15,"title":"\u60a8\u6709\u65b0\u7684\u8ba2\u5355","content":"\u8ba2\u5355\u53f7:1000000000251101\n\u5546\u54c1\u540d\u79f0:0-3\u5c81\u5e7c\u513f\u751f\u6d3b\u60c5\u666f\u6e38\u620f\u7ed8\u672c\u548c\u6211\u4e00\u8d77\u73a9\uff08\u5957\u88c5\u51686\u518c\uff09 [0-3\u5c81]\u00d71\n\u652f\u4ed8\u65b9\u5f0f:\u7ebf\u4e0b\u4ed8\u6b3e\n\u4ed8\u6b3e\u72b6\u6001:\u672a\u4ed8\u6b3e\n\u6536\u8d27\u5730\u5740:\u798f\u5efa\u7701\u798f\u5dde\u5e02\u4ed3\u5c71\u533a\u798f\u8fdc\u6587\u521b\u56ed\n\u6536\u8d27\u4eba:\u9648\n\u6536\u8d27\u4eba\u7535\u8bdd:18305954587\n","thumb":"","url":"","href":"orderId=1935","price":0,"createTime":1541082167,"buttons":[{"type":2,"name":"\u786e\u8ba4\u63a5\u5355","status":1,"showType":3,"buttonId":1,"params":{"orderId":1935}}]},"id":"1541082167021935"}},"options":{"sendno":989551243,"apns_production":false}}, times:1
Send POST https://api.jpush.cn/v3/push, body:{"platform":"all","audience":{"alias":["249"]},"notification":{"alert":"\u8eab\u8fb9\u5e97\u8ba2\u5355\u6d88\u606f","android":{"title":"\u8eab\u8fb9\u5e97\u8ba2\u5355\u6d88\u606f","extras":{"fromId":-2,"fromUserId":-2,"fromUserName":"\u8ba2\u5355\u6d88\u606f","fromAvatar":"http:\/\/qmoss-01.oss-cn-hangzhou.aliyuncs.com\/system\/order.jpg","fromType":-2,"toId":249,"toUserId":11,"toUserName":"kkk\u6d4b\u8bd5\u5e97","toType":4,"message":{"type":15,"title":"\u60a8\u6709\u65b0\u7684\u8ba2\u5355","content":"\u8ba2\u5355\u53f7:1000000000251201\n\u5546\u54c1\u540d\u79f0:0-3\u5c81\u5e7c\u513f\u751f\u6d3b\u60c5\u666f\u6e38\u620f\u7ed8\u672c\u548c\u6211\u4e00\u8d77\u73a9\uff08\u5957\u88c5\u51686\u518c\uff09 [0-3\u5c81]\u00d71\n\u652f\u4ed8\u65b9\u5f0f:\u7ebf\u4e0b\u4ed8\u6b3e\n\u4ed8\u6b3e\u72b6\u6001:\u672a\u4ed8\u6b3e\n\u6536\u8d27\u5730\u5740:\u798f\u5efa\u7701\u798f\u5dde\u5e02\u4ed3\u5c71\u533a\u798f\u8fdc\u6587\u521b\u56ed\n\u6536\u8d27\u4eba:\u9648\n\u6536\u8d27\u4eba\u7535\u8bdd:18305954587\n","thumb":"","url":"","href":"orderId=1936","price":0,"createTime":1541088560,"buttons":[{"type":2,"name":"\u786e\u8ba4\u63a5\u5355","status":1,"showType":3,"buttonId":1,"params":{"orderId":1936}}]},"id":"1541088561021936"},"alert":"\u8ba2\u5355\u53f7:1000000000251201\n\u5546\u54c1\u540d\u79f0:0-3\u5c81\u5e7c\u513f\u751f\u6d3b\u60c5\u666f\u6e38\u620f\u7ed8\u672c\u548c\u6211\u4e00\u8d77\u73a9\uff08\u5957\u88c5\u51686\u518c\uff09 [0-3\u5c81]\u00d71\n\u652f\u4ed8\u65b9\u5f0f:\u7ebf\u4e0b\u4ed8\u6b3e\n\u4ed8\u6b3e\u72b6\u6001:\u672a\u4ed8\u6b3e\n\u6536\u8d27\u5730\u5740:\u798f\u5efa\u7701\u798f\u5dde\u5e02\u4ed3\u5c71\u533a\u798f\u8fdc\u6587\u521b\u56ed\n\u6536\u8d27\u4eba:\u9648\n\u6536\u8d27\u4eba\u7535\u8bdd:18305954587\n"},"ios":{"alert":"\u8ba2\u5355\u53f7:1000000000251201\n\u5546\u54c1\u540d\u79f0:0-3\u5c81\u5e7c\u513f\u751f\u6d3b\u60c5\u666f\u6e38\u620f\u7ed8\u672c\u548c\u6211\u4e00\u8d77\u73a9\uff08\u5957\u88c5\u51686\u518c\uff09 [0-3\u5c81]\u00d71\n\u652f\u4ed8\u65b9\u5f0f:\u7ebf\u4e0b\u4ed8\u6b3e\n\u4ed8\u6b3e\u72b6\u6001:\u672a\u4ed8\u6b3e\n\u6536\u8d27\u5730\u5740:\u798f\u5efa\u7701\u798f\u5dde\u5e02\u4ed3\u5c71\u533a\u798f\u8fdc\u6587\u521b\u56ed\n\u6536\u8d27\u4eba:\u9648\n\u6536\u8d27\u4eba\u7535\u8bdd:18305954587\n","sound":"sound.caf","category":"shenbd","extras":{"fromId":-2,"fromUserId":-2,"fromUserName":"\u8ba2\u5355\u6d88\u606f","fromAvatar":"http:\/\/qmoss-01.oss-cn-hangzhou.aliyuncs.com\/system\/order.jpg","fromType":-2,"toId":249,"toUserId":11,"toUserName":"kkk\u6d4b\u8bd5\u5e97","toType":4,"message":{"type":15,"title":"\u60a8\u6709\u65b0\u7684\u8ba2\u5355","content":"\u8ba2\u5355\u53f7:1000000000251201\n\u5546\u54c1\u540d\u79f0:0-3\u5c81\u5e7c\u513f\u751f\u6d3b\u60c5\u666f\u6e38\u620f\u7ed8\u672c\u548c\u6211\u4e00\u8d77\u73a9\uff08\u5957\u88c5\u51686\u518c\uff09 [0-3\u5c81]\u00d71\n\u652f\u4ed8\u65b9\u5f0f:\u7ebf\u4e0b\u4ed8\u6b3e\n\u4ed8\u6b3e\u72b6\u6001:\u672a\u4ed8\u6b3e\n\u6536\u8d27\u5730\u5740:\u798f\u5efa\u7701\u798f\u5dde\u5e02\u4ed3\u5c71\u533a\u798f\u8fdc\u6587\u521b\u56ed\n\u6536\u8d27\u4eba:\u9648\n\u6536\u8d27\u4eba\u7535\u8bdd:18305954587\n","thumb":"","url":"","href":"orderId=1936","price":0,"createTime":1541088560,"buttons":[{"type":2,"name":"\u786e\u8ba4\u63a5\u5355","status":1,"showType":3,"buttonId":1,"params":{"orderId":1936}}]},"id":"1541088561021936"},"badge":"+1"}},"message":{"msg_content":"\u8ba2\u5355\u53f7:1000000000251201\n\u5546\u54c1\u540d\u79f0:0-3\u5c81\u5e7c\u513f\u751f\u6d3b\u60c5\u666f\u6e38\u620f\u7ed8\u672c\u548c\u6211\u4e00\u8d77\u73a9\uff08\u5957\u88c5\u51686\u518c\uff09 [0-3\u5c81]\u00d71\n\u652f\u4ed8\u65b9\u5f0f:\u7ebf\u4e0b\u4ed8\u6b3e\n\u4ed8\u6b3e\u72b6\u6001:\u672a\u4ed8\u6b3e\n\u6536\u8d27\u5730\u5740:\u798f\u5efa\u7701\u798f\u5dde\u5e02\u4ed3\u5c71\u533a\u798f\u8fdc\u6587\u521b\u56ed\n\u6536\u8d27\u4eba:\u9648\n\u6536\u8d27\u4eba\u7535\u8bdd:18305954587\n","title":"\u8eab\u8fb9\u5e97\u8ba2\u5355\u6d88\u606f","extras":{"fromId":-2,"fromUserId":-2,"fromUserName":"\u8ba2\u5355\u6d88\u606f","fromAvatar":"http:\/\/qmoss-01.oss-cn-hangzhou.aliyuncs.com\/system\/order.jpg","fromType":-2,"toId":249,"toUserId":11,"toUserName":"kkk\u6d4b\u8bd5\u5e97","toType":4,"message":{"type":15,"title":"\u60a8\u6709\u65b0\u7684\u8ba2\u5355","content":"\u8ba2\u5355\u53f7:1000000000251201\n\u5546\u54c1\u540d\u79f0:0-3\u5c81\u5e7c\u513f\u751f\u6d3b\u60c5\u666f\u6e38\u620f\u7ed8\u672c\u548c\u6211\u4e00\u8d77\u73a9\uff08\u5957\u88c5\u51686\u518c\uff09 [0-3\u5c81]\u00d71\n\u652f\u4ed8\u65b9\u5f0f:\u7ebf\u4e0b\u4ed8\u6b3e\n\u4ed8\u6b3e\u72b6\u6001:\u672a\u4ed8\u6b3e\n\u6536\u8d27\u5730\u5740:\u798f\u5efa\u7701\u798f\u5dde\u5e02\u4ed3\u5c71\u533a\u798f\u8fdc\u6587\u521b\u56ed\n\u6536\u8d27\u4eba:\u9648\n\u6536\u8d27\u4eba\u7535\u8bdd:18305954587\n","thumb":"","url":"","href":"orderId=1936","price":0,"createTime":1541088560,"buttons":[{"type":2,"name":"\u786e\u8ba4\u63a5\u5355","status":1,"showType":3,"buttonId":1,"params":{"orderId":1936}}]},"id":"1541088561021936"}},"options":{"sendno":582653438,"apns_production":false}}, times:1
Send POST https://api.jpush.cn/v3/push, body:{"platform":"all","audience":{"alias":["249"]},"notification":{"alert":"\u8eab\u8fb9\u5e97\u8ba2\u5355\u6d88\u606f","android":{"title":"\u8eab\u8fb9\u5e97\u8ba2\u5355\u6d88\u606f","extras":{"fromId":-2,"fromUserId":-2,"fromUserName":"\u8ba2\u5355\u6d88\u606f","fromAvatar":"http:\/\/qmoss-01.oss-cn-hangzhou.aliyuncs.com\/system\/order.jpg","fromType":-2,"toId":249,"toUserId":11,"toUserName":"kkk\u6d4b\u8bd5\u5e97","toType":4,"message":{"type":15,"title":"\u60a8\u6709\u65b0\u7684\u8ba2\u5355","content":"\u8ba2\u5355\u53f7:1000000000251301\n\u5546\u54c1\u540d\u79f0:0-3\u5c81\u5e7c\u513f\u751f\u6d3b\u60c5\u666f\u6e38\u620f\u7ed8\u672c\u548c\u6211\u4e00\u8d77\u73a9\uff08\u5957\u88c5\u51686\u518c\uff09 [0-3\u5c81]\u00d71\n\u652f\u4ed8\u65b9\u5f0f:\u7ebf\u4e0b\u4ed8\u6b3e\n\u4ed8\u6b3e\u72b6\u6001:\u672a\u4ed8\u6b3e\n\u6536\u8d27\u5730\u5740:\u798f\u5efa\u7701\u798f\u5dde\u5e02\u4ed3\u5c71\u533a\u798f\u8fdc\u6587\u521b\u56ed\n\u6536\u8d27\u4eba:\u9648\n\u6536\u8d27\u4eba\u7535\u8bdd:18305954587\n","thumb":"","url":"","href":"orderId=1937","price":0,"createTime":1541088914,"buttons":[{"type":2,"name":"\u786e\u8ba4\u63a5\u5355","status":1,"showType":3,"buttonId":1,"params":{"orderId":1937}}]},"id":"1541088914021937"},"alert":"\u8ba2\u5355\u53f7:1000000000251301\n\u5546\u54c1\u540d\u79f0:0-3\u5c81\u5e7c\u513f\u751f\u6d3b\u60c5\u666f\u6e38\u620f\u7ed8\u672c\u548c\u6211\u4e00\u8d77\u73a9\uff08\u5957\u88c5\u51686\u518c\uff09 [0-3\u5c81]\u00d71\n\u652f\u4ed8\u65b9\u5f0f:\u7ebf\u4e0b\u4ed8\u6b3e\n\u4ed8\u6b3e\u72b6\u6001:\u672a\u4ed8\u6b3e\n\u6536\u8d27\u5730\u5740:\u798f\u5efa\u7701\u798f\u5dde\u5e02\u4ed3\u5c71\u533a\u798f\u8fdc\u6587\u521b\u56ed\n\u6536\u8d27\u4eba:\u9648\n\u6536\u8d27\u4eba\u7535\u8bdd:18305954587\n"},"ios":{"alert":"\u8ba2\u5355\u53f7:1000000000251301\n\u5546\u54c1\u540d\u79f0:0-3\u5c81\u5e7c\u513f\u751f\u6d3b\u60c5\u666f\u6e38\u620f\u7ed8\u672c\u548c\u6211\u4e00\u8d77\u73a9\uff08\u5957\u88c5\u51686\u518c\uff09 [0-3\u5c81]\u00d71\n\u652f\u4ed8\u65b9\u5f0f:\u7ebf\u4e0b\u4ed8\u6b3e\n\u4ed8\u6b3e\u72b6\u6001:\u672a\u4ed8\u6b3e\n\u6536\u8d27\u5730\u5740:\u798f\u5efa\u7701\u798f\u5dde\u5e02\u4ed3\u5c71\u533a\u798f\u8fdc\u6587\u521b\u56ed\n\u6536\u8d27\u4eba:\u9648\n\u6536\u8d27\u4eba\u7535\u8bdd:18305954587\n","sound":"sound.caf","category":"shenbd","extras":{"fromId":-2,"fromUserId":-2,"fromUserName":"\u8ba2\u5355\u6d88\u606f","fromAvatar":"http:\/\/qmoss-01.oss-cn-hangzhou.aliyuncs.com\/system\/order.jpg","fromType":-2,"toId":249,"toUserId":11,"toUserName":"kkk\u6d4b\u8bd5\u5e97","toType":4,"message":{"type":15,"title":"\u60a8\u6709\u65b0\u7684\u8ba2\u5355","content":"\u8ba2\u5355\u53f7:1000000000251301\n\u5546\u54c1\u540d\u79f0:0-3\u5c81\u5e7c\u513f\u751f\u6d3b\u60c5\u666f\u6e38\u620f\u7ed8\u672c\u548c\u6211\u4e00\u8d77\u73a9\uff08\u5957\u88c5\u51686\u518c\uff09 [0-3\u5c81]\u00d71\n\u652f\u4ed8\u65b9\u5f0f:\u7ebf\u4e0b\u4ed8\u6b3e\n\u4ed8\u6b3e\u72b6\u6001:\u672a\u4ed8\u6b3e\n\u6536\u8d27\u5730\u5740:\u798f\u5efa\u7701\u798f\u5dde\u5e02\u4ed3\u5c71\u533a\u798f\u8fdc\u6587\u521b\u56ed\n\u6536\u8d27\u4eba:\u9648\n\u6536\u8d27\u4eba\u7535\u8bdd:18305954587\n","thumb":"","url":"","href":"orderId=1937","price":0,"createTime":1541088914,"buttons":[{"type":2,"name":"\u786e\u8ba4\u63a5\u5355","status":1,"showType":3,"buttonId":1,"params":{"orderId":1937}}]},"id":"1541088914021937"},"badge":"+1"}},"message":{"msg_content":"\u8ba2\u5355\u53f7:1000000000251301\n\u5546\u54c1\u540d\u79f0:0-3\u5c81\u5e7c\u513f\u751f\u6d3b\u60c5\u666f\u6e38\u620f\u7ed8\u672c\u548c\u6211\u4e00\u8d77\u73a9\uff08\u5957\u88c5\u51686\u518c\uff09 [0-3\u5c81]\u00d71\n\u652f\u4ed8\u65b9\u5f0f:\u7ebf\u4e0b\u4ed8\u6b3e\n\u4ed8\u6b3e\u72b6\u6001:\u672a\u4ed8\u6b3e\n\u6536\u8d27\u5730\u5740:\u798f\u5efa\u7701\u798f\u5dde\u5e02\u4ed3\u5c71\u533a\u798f\u8fdc\u6587\u521b\u56ed\n\u6536\u8d27\u4eba:\u9648\n\u6536\u8d27\u4eba\u7535\u8bdd:18305954587\n","title":"\u8eab\u8fb9\u5e97\u8ba2\u5355\u6d88\u606f","extras":{"fromId":-2,"fromUserId":-2,"fromUserName":"\u8ba2\u5355\u6d88\u606f","fromAvatar":"http:\/\/qmoss-01.oss-cn-hangzhou.aliyuncs.com\/system\/order.jpg","fromType":-2,"toId":249,"toUserId":11,"toUserName":"kkk\u6d4b\u8bd5\u5e97","toType":4,"message":{"type":15,"title":"\u60a8\u6709\u65b0\u7684\u8ba2\u5355","content":"\u8ba2\u5355\u53f7:1000000000251301\n\u5546\u54c1\u540d\u79f0:0-3\u5c81\u5e7c\u513f\u751f\u6d3b\u60c5\u666f\u6e38\u620f\u7ed8\u672c\u548c\u6211\u4e00\u8d77\u73a9\uff08\u5957\u88c5\u51686\u518c\uff09 [0-3\u5c81]\u00d71\n\u652f\u4ed8\u65b9\u5f0f:\u7ebf\u4e0b\u4ed8\u6b3e\n\u4ed8\u6b3e\u72b6\u6001:\u672a\u4ed8\u6b3e\n\u6536\u8d27\u5730\u5740:\u798f\u5efa\u7701\u798f\u5dde\u5e02\u4ed3\u5c71\u533a\u798f\u8fdc\u6587\u521b\u56ed\n\u6536\u8d27\u4eba:\u9648\n\u6536\u8d27\u4eba\u7535\u8bdd:18305954587\n","thumb":"","url":"","href":"orderId=1937","price":0,"createTime":1541088914,"buttons":[{"type":2,"name":"\u786e\u8ba4\u63a5\u5355","status":1,"showType":3,"buttonId":1,"params":{"orderId":1937}}]},"id":"1541088914021937"}},"options":{"sendno":30781478,"apns_production":false}}, times:1
Send POST https://api.jpush.cn/v3/push, body:{"platform":"all","audience":{"alias":["249"]},"notification":{"alert":"\u8eab\u8fb9\u5e97\u8ba2\u5355\u6d88\u606f","android":{"title":"\u8eab\u8fb9\u5e97\u8ba2\u5355\u6d88\u606f","extras":{"fromId":-2,"fromUserId":-2,"fromUserName":"\u8ba2\u5355\u6d88\u606f","fromAvatar":"http:\/\/qmoss-01.oss-cn-hangzhou.aliyuncs.com\/system\/order.jpg","fromType":-2,"toId":249,"toUserId":11,"toUserName":"kkk\u6d4b\u8bd5\u5e97","toType":4,"message":{"type":15,"title":"\u60a8\u6709\u65b0\u7684\u8ba2\u5355","content":"\u8ba2\u5355\u53f7:1000000000251401\n\u5546\u54c1\u540d\u79f0:0-3\u5c81\u5e7c\u513f\u751f\u6d3b\u60c5\u666f\u6e38\u620f\u7ed8\u672c\u548c\u6211\u4e00\u8d77\u73a9\uff08\u5957\u88c5\u51686\u518c\uff09 [0-3\u5c81]\u00d71\n\u652f\u4ed8\u65b9\u5f0f:\u7ebf\u4e0b\u4ed8\u6b3e\n\u4ed8\u6b3e\u72b6\u6001:\u672a\u4ed8\u6b3e\n\u6536\u8d27\u5730\u5740:\u798f\u5efa\u7701\u798f\u5dde\u5e02\u4ed3\u5c71\u533a\u798f\u8fdc\u6587\u521b\u56ed\n\u6536\u8d27\u4eba:\u9648\n\u6536\u8d27\u4eba\u7535\u8bdd:18305954587\n","thumb":"","url":"","href":"orderId=1938","price":0,"createTime":1541088973,"buttons":[{"type":2,"name":"\u786e\u8ba4\u63a5\u5355","status":1,"showType":3,"buttonId":1,"params":{"orderId":1938}}]},"id":"1541088974021938"},"alert":"\u8ba2\u5355\u53f7:1000000000251401\n\u5546\u54c1\u540d\u79f0:0-3\u5c81\u5e7c\u513f\u751f\u6d3b\u60c5\u666f\u6e38\u620f\u7ed8\u672c\u548c\u6211\u4e00\u8d77\u73a9\uff08\u5957\u88c5\u51686\u518c\uff09 [0-3\u5c81]\u00d71\n\u652f\u4ed8\u65b9\u5f0f:\u7ebf\u4e0b\u4ed8\u6b3e\n\u4ed8\u6b3e\u72b6\u6001:\u672a\u4ed8\u6b3e\n\u6536\u8d27\u5730\u5740:\u798f\u5efa\u7701\u798f\u5dde\u5e02\u4ed3\u5c71\u533a\u798f\u8fdc\u6587\u521b\u56ed\n\u6536\u8d27\u4eba:\u9648\n\u6536\u8d27\u4eba\u7535\u8bdd:18305954587\n"},"ios":{"alert":"\u8ba2\u5355\u53f7:1000000000251401\n\u5546\u54c1\u540d\u79f0:0-3\u5c81\u5e7c\u513f\u751f\u6d3b\u60c5\u666f\u6e38\u620f\u7ed8\u672c\u548c\u6211\u4e00\u8d77\u73a9\uff08\u5957\u88c5\u51686\u518c\uff09 [0-3\u5c81]\u00d71\n\u652f\u4ed8\u65b9\u5f0f:\u7ebf\u4e0b\u4ed8\u6b3e\n\u4ed8\u6b3e\u72b6\u6001:\u672a\u4ed8\u6b3e\n\u6536\u8d27\u5730\u5740:\u798f\u5efa\u7701\u798f\u5dde\u5e02\u4ed3\u5c71\u533a\u798f\u8fdc\u6587\u521b\u56ed\n\u6536\u8d27\u4eba:\u9648\n\u6536\u8d27\u4eba\u7535\u8bdd:18305954587\n","sound":"sound.caf","category":"shenbd","extras":{"fromId":-2,"fromUserId":-2,"fromUserName":"\u8ba2\u5355\u6d88\u606f","fromAvatar":"http:\/\/qmoss-01.oss-cn-hangzhou.aliyuncs.com\/system\/order.jpg","fromType":-2,"toId":249,"toUserId":11,"toUserName":"kkk\u6d4b\u8bd5\u5e97","toType":4,"message":{"type":15,"title":"\u60a8\u6709\u65b0\u7684\u8ba2\u5355","content":"\u8ba2\u5355\u53f7:1000000000251401\n\u5546\u54c1\u540d\u79f0:0-3\u5c81\u5e7c\u513f\u751f\u6d3b\u60c5\u666f\u6e38\u620f\u7ed8\u672c\u548c\u6211\u4e00\u8d77\u73a9\uff08\u5957\u88c5\u51686\u518c\uff09 [0-3\u5c81]\u00d71\n\u652f\u4ed8\u65b9\u5f0f:\u7ebf\u4e0b\u4ed8\u6b3e\n\u4ed8\u6b3e\u72b6\u6001:\u672a\u4ed8\u6b3e\n\u6536\u8d27\u5730\u5740:\u798f\u5efa\u7701\u798f\u5dde\u5e02\u4ed3\u5c71\u533a\u798f\u8fdc\u6587\u521b\u56ed\n\u6536\u8d27\u4eba:\u9648\n\u6536\u8d27\u4eba\u7535\u8bdd:18305954587\n","thumb":"","url":"","href":"orderId=1938","price":0,"createTime":1541088973,"buttons":[{"type":2,"name":"\u786e\u8ba4\u63a5\u5355","status":1,"showType":3,"buttonId":1,"params":{"orderId":1938}}]},"id":"1541088974021938"},"badge":"+1"}},"message":{"msg_content":"\u8ba2\u5355\u53f7:1000000000251401\n\u5546\u54c1\u540d\u79f0:0-3\u5c81\u5e7c\u513f\u751f\u6d3b\u60c5\u666f\u6e38\u620f\u7ed8\u672c\u548c\u6211\u4e00\u8d77\u73a9\uff08\u5957\u88c5\u51686\u518c\uff09 [0-3\u5c81]\u00d71\n\u652f\u4ed8\u65b9\u5f0f:\u7ebf\u4e0b\u4ed8\u6b3e\n\u4ed8\u6b3e\u72b6\u6001:\u672a\u4ed8\u6b3e\n\u6536\u8d27\u5730\u5740:\u798f\u5efa\u7701\u798f\u5dde\u5e02\u4ed3\u5c71\u533a\u798f\u8fdc\u6587\u521b\u56ed\n\u6536\u8d27\u4eba:\u9648\n\u6536\u8d27\u4eba\u7535\u8bdd:18305954587\n","title":"\u8eab\u8fb9\u5e97\u8ba2\u5355\u6d88\u606f","extras":{"fromId":-2,"fromUserId":-2,"fromUserName":"\u8ba2\u5355\u6d88\u606f","fromAvatar":"http:\/\/qmoss-01.oss-cn-hangzhou.aliyuncs.com\/system\/order.jpg","fromType":-2,"toId":249,"toUserId":11,"toUserName":"kkk\u6d4b\u8bd5\u5e97","toType":4,"message":{"type":15,"title":"\u60a8\u6709\u65b0\u7684\u8ba2\u5355","content":"\u8ba2\u5355\u53f7:1000000000251401\n\u5546\u54c1\u540d\u79f0:0-3\u5c81\u5e7c\u513f\u751f\u6d3b\u60c5\u666f\u6e38\u620f\u7ed8\u672c\u548c\u6211\u4e00\u8d77\u73a9\uff08\u5957\u88c5\u51686\u518c\uff09 [0-3\u5c81]\u00d71\n\u652f\u4ed8\u65b9\u5f0f:\u7ebf\u4e0b\u4ed8\u6b3e\n\u4ed8\u6b3e\u72b6\u6001:\u672a\u4ed8\u6b3e\n\u6536\u8d27\u5730\u5740:\u798f\u5efa\u7701\u798f\u5dde\u5e02\u4ed3\u5c71\u533a\u798f\u8fdc\u6587\u521b\u56ed\n\u6536\u8d27\u4eba:\u9648\n\u6536\u8d27\u4eba\u7535\u8bdd:18305954587\n","thumb":"","url":"","href":"orderId=1938","price":0,"createTime":1541088973,"buttons":[{"type":2,"name":"\u786e\u8ba4\u63a5\u5355","status":1,"showType":3,"buttonId":1,"params":{"orderId":1938}}]},"id":"1541088974021938"}},"options":{"sendno":655045011,"apns_production":false}}, times:1
...@@ -72,6 +72,21 @@ class cliOrderClose extends basecli ...@@ -72,6 +72,21 @@ class cliOrderClose extends basecli
} }
$redis->close(); $redis->close();
} }
protected function autoPushClient(){
$conf = \Yaf\Registry::get('config')->get('redis.database.params');
$redis = new \Redis();
$redis->pconnect($conf['host'], $conf['port']);
if (!empty($conf['password'])) {
$redis->auth($conf['password']);
}
$push=\Our\Push::getInstance();
while($pushData=$redis->lPop('client_push')){
$addData = unserialize($pushData);
$push->addOneToClient($addData);
}
$push->sendTcpMessage();
$redis->close();
}
protected function _runCli() protected function _runCli()
{ {
...@@ -105,8 +120,11 @@ class cliOrderClose extends basecli ...@@ -105,8 +120,11 @@ class cliOrderClose extends basecli
file_put_contents($this->lockFileName ,"running" ); // CLI 独占锁 file_put_contents($this->lockFileName ,"running" ); // CLI 独占锁
} }
$this->autoPushMessage(); $this->autoPushMessage();
echo date('Y-m-d H:i:s',TIMESTAMP).'消息推送成功'."\r\n"; echo date('Y-m-d H:i:s',TIMESTAMP).'消息推送成功'."\r\n";
$this->autoPushClient();
echo date('Y-m-d H:i:s',TIMESTAMP).'客户端消息推送成功'."\r\n";
} }
} }
......
...@@ -163,7 +163,7 @@ $serv->on('Message', function($server, $frame) use($conf){ ...@@ -163,7 +163,7 @@ $serv->on('Message', function($server, $frame) use($conf){
echo 'set:'.KEY_PRE.$memberId,'fd:'.$frame->fd."\r\n"; echo 'set:'.KEY_PRE.$memberId,'fd:'.$frame->fd."\r\n";
$redis->hSet(KEY_PRE.$memberId,'fd', $frame->fd); $redis->hSet(KEY_PRE.$memberId,'fd', $frame->fd);
if($storeId){ if($storeId){
$redis->hSet(KEY_PRE_STORE.$memberId,'fd', $frame->fd); $redis->hSet(KEY_PRE_STORE.$storeId,'fd', $frame->fd);
} }
$server->push($frame->fd,responseJson($async_login_data['status'],$async_login_data['method'],$async_login_data['message'], $async_login_data['data'])); $server->push($frame->fd,responseJson($async_login_data['status'],$async_login_data['method'],$async_login_data['message'], $async_login_data['data']));
$redis->close(); $redis->close();
...@@ -240,6 +240,13 @@ $tcp_server->on('receive', function($serv, $fd, $from_id, $data) use($conf) { ...@@ -240,6 +240,13 @@ $tcp_server->on('receive', function($serv, $fd, $from_id, $data) use($conf) {
$serv->close($fd); $serv->close($fd);
if(!isset($data['uid']) || empty($data['uid'])){ if(!isset($data['uid']) || empty($data['uid'])){
foreach($data['data'] as $value){ foreach($data['data'] as $value){
if(isset($value['type'])&&$value['type']>100){
echo json_encode($value);
$sendStoreFd=$redis->hGet(KEY_PRE_STORE.$value['storeId'],'fd');
if(!empty($sendStoreFd)){
$serv->push($sendStoreFd, responseJson(1,"fromMsg","success", $value));
}
}else{
$async_data = $redis->rPush("message_center", serialize($value)); $async_data = $redis->rPush("message_center", serialize($value));
if($async_data){ if($async_data){
$value['message']=unserialize($value['message']); $value['message']=unserialize($value['message']);
...@@ -250,7 +257,7 @@ $tcp_server->on('receive', function($serv, $fd, $from_id, $data) use($conf) { ...@@ -250,7 +257,7 @@ $tcp_server->on('receive', function($serv, $fd, $from_id, $data) use($conf) {
$redis->hSet(KEY_PRE.$value['fromId'],'sendTime', time()); $redis->hSet(KEY_PRE.$value['fromId'],'sendTime', time());
} }
} }
}
} }
}else{ }else{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment