Commit 1f546e18 authored by wwccw0591's avatar wwccw0591

pc

parent d882cfc3
<?php
namespace Alipay\aop\request;
/**
* ALIPAY API: alipay.trade.refund request
*
......@@ -6,10 +7,10 @@
* @since 1.0, 2018-03-22 17:12:24
*/
class AlipayTradeRefundRequest
{
/**
* 统一收单交易退款接口
**/
{
/**
* 统一收单交易退款接口
**/
private $bizContent;
private $apiParas = array();
......@@ -21,16 +22,16 @@ class AlipayTradeRefundRequest
private $returnUrl;
private $needEncrypt=false;
public function setBizContent($bizContent)
{
$this->bizContent = $bizContent;
$this->apiParas["biz_content"] = $bizContent;
{
$this->bizContent = $bizContent;
$this->apiParas["biz_content"] = $bizContent;
}
public function getBizContent()
{
return $this->bizContent;
{
return $this->bizContent;
}
public function getApiMethodName()
......
......@@ -26,7 +26,8 @@ class ApiConst
const oneMinute = 60;
//八小时秒数
const EightHoursSecond = 28800;
const hundred = 100; //1分钟秒数
const hundred = 100;
//1分钟秒数
const oneMinSecond = 60;
//成功状态码
const returnSuccess = 1;
......
......@@ -29,6 +29,9 @@ class PayConst {
const alipayAppId = '2017102509512276';
const merchantPrivateKey = 'MIIEpQIBAAKCAQEAuuiMPUDWb2KDrMOL+Nxd2V8t5KVCKH2RwnHWzcWsdUbpbIGRDrdG6CztQr0sbD6QXcquQWxeX8niTMg+AgL2tOADqRmhGs4SnWsHFM5U117tMp8l0UFVJdi77ipKmqZ3wrauCdmF8R6g1MbAm52mi72fykIV2j1elDeHu8VBASKczRRvfI22mekq86jIxO+/6qwj+nGCoDkQ001zsUHuGNXmGprt2Tr08JaenDJWTRH+mfOQtIAvrC6iUTHQL1pvg/oPIEAxlImF2XUN8ENaoci7tMKTrQBjvnpXUy8o6SNL1kkp6rd4nhuuSIy6+aNtsHrfA68aZzXB3QFQon//ZwIDAQABAoIBAQCGS6rgJCMvWxiDXOnIwQXJtuKxw7AaicbecI9HwL2ecnor1ZjVewi+r/E2H9i4Wee/DG9SYLwalWM9ii9LoLeE1OSsbtbb/K9RXmJzJ6G8Md+6nLE+fnPgwq6dfNOn9O5eAIZiW2IrEre6yqf/6DGPfItAd2VeLvQzCQdE+oEvf2QGlhYujfPMHFffbLYzP8Cnyt0vft7RnGB/dgcRjVXRL/NwAsKnwgmWydIxY/R61pvIQFKqdtOzvmAgh2z8WFON2kuu8+S1QY7m9/zv1h3d0XEgqGUDkmzIfX9jokzkavVYRTOPCkmj2AuXjqGG3VnVSIVQLW7LJtl9ivqrQ+Y5AoGBAPN7yAqBnUUHgXzi/cBvAh96V1Ag6SSdauvN8xCEFHS32RhkV9qhT8xzc0gLeDTgGRpLSVA5i5BhGOw/0YZJKp5zveXntX+7vqov+59pEfHF5MqZ5MWfysNFlTf7hK3BnFyX+d1mT+2BpOdsfvB52qphHxBJRmj0HF6Uum4hAgC9AoGBAMSEPk3kr9WN8kBXWbh9Yv8CacC3eP22HH1X6Lv0//wdAVLGumcmYzMu8qd9/JInJSnV62SDwSz0crbffNgIWoP9LkuEuzvXT+6jVOjmSGQweFIla9oWlcfRFw1R1vWzTPjC8QDk3CRdpOBFopwUWpwkU6IZ+S9bKKDZRYeqcTzzAoGBAMyB3WWltHj0cvh4l/X3x2q1EX1GB00vw0zIMS5gIeZfPUNVlM0XzLTHC78pkw+mYq9JKQzvKKBeTdaxS8Vk0x0/zfK7CiF9igncP5aHZAEU3LSnShYLvv0BBvJ8mdZv1muXYtFpTB0LVXzkDkLhtp6A8Nx3D2K8FtACUAyMQOhpAoGAL+k173Oz0tL6nuks/KfFPPrvoYaZvvFpXL3UBg8jYeoIao/83i0jvlTR4Df9HfzhOKPo8eaVcEpgtWkjXOAcgVV2tf60T1CdMkcr6mRKffK7QvvQoakj90Vo41xylhCS0YtlipxBd7RFAFC55men9617nmfKstr8usp+Aydw2DUCgYEAju/kuN8//IVoZZOatkb4/DmAyLfGJ1ZJwowY0uksFrTOOfGxYSCDxfK2PHDrfgtaRCT6mb3nQIBljELvwAN6N/fFFMK+PuaMLvkevII6QbGgqNkXewCQyHZDxsqAxtEEJazz6a+Nqra8LS0nXmr2iFRKgw6JIY4wDXMW3g39Ihk=';
const alipaySignType = 'RSA2';
const alipayCharset="UTF-8";
const format='json';
const alipayApiVersion='1.0';
const alipayGatewayUrl = 'https://openapi.alipay.com/gateway.do';
const alipayPublicKey = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlnxDEAQLq9g9KBL8N+Kwr83b4xAl2GNa8E9lKjrgObsnIHwxCei4eASWvGFyFtau418aQvdFD9scR0mxw8NOB2QSmvJpeh2Ov5Cihh3dmR6jIDIEP7iCTHZQHv2tvM3DuxuUZSBK4oKD7kughmhVbu/fy4PGYLKcoHNuFVqajRxCS5/GXfce9dOGIk5+UFMzOi1m377qqpRK2SLMHO2tse0MTNznyKUgGHUGUlhvQwCnxF8FZx/RUUJPHcuaWxTnY8C9aQL2iaWKrwE3JPiE18m8g0NfBu/4E0VpLzPZCsoH2naHt1ORtMy0gnFH4FusdFapGatuMIb0LKJxhzsBTQIDAQAB';
......
<?php
namespace Payment;
use Our\ApiConst;
/**
* User: liuyuzhen
* Date: 2018/7/3
......@@ -47,6 +49,54 @@ class Alipay {
return $returnData;
}
private function getRandomString($len, $chars=null)
{
if (is_null($chars)) {
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
}
mt_srand(10000000*(double)microtime());
for ($i = 0, $str = '', $lc = strlen($chars)-1; $i < $len; $i++) {
$str .= $chars[mt_rand(0, $lc)];
}
return $str;
}
public function refund($order){
$refundAmount = round($order['refundAmount']/\Our\ApiConst::hundred,\Our\ApiConst::two);
if(APP_ENV == 'develop'||APP_ENV == 'test'||APP_ENV == 'pre'){
$refundAmount = 0.01;
}
$aop = new \Alipay\aop\AopClient();
$aop->gatewayUrl =\Our\PayConst::alipayGatewayUrl;
$aop->appId =\Our\PayConst::alipayAppId;
$aop->rsaPrivateKey =\Our\PayConst::merchantPrivateKey;
$aop->alipayrsaPublicKey=\Our\PayConst::alipayPublicKey;
$aop->apiVersion =\Our\PayConst::alipayApiVersion;
$aop->signType = \Our\PayConst::alipaySignType;
$aop->postCharset=\Our\PayConst::alipayCharset;
$aop->format=\Our\PayConst::format;
$outRequestNo=$this->getRandomString(ApiConst::nine);
// require_once BASE_ROOT_PATH.'/core/payment/alipay/aop/request/AlipayTradeRefundRequest.php';
// //require_once 'aop/request/AlipayTradeRefundRequest.php';
$request = new \Alipay\aop\request\AlipayTradeAppPayRequest();
$request->setBizContent("{" .
"\"out_trade_no\":\"{$order['outTradeNo']}\"," .
"\"refund_amount\":{$refundAmount}," .
"\"refund_reason\":\"正常退款\"," .
"\"out_request_no\":\"{$outRequestNo}\"," .
"\"store_id\":\"{$order['storeId']}\"" .
"}");
$result = $aop->execute($request);
$responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
$result=$result->$responseNode;
return $result;
// $resultCode = $result->$responseNode->code;
// if(!empty($resultCode)&&$resultCode == 10000){
// return true;
// } else {
// return false;
// }
}
/**
* 类实例
......
......@@ -30,7 +30,7 @@ class OrderServiceModel extends \Business\AbstractModel
private $storeField = "offline_payway as offlinePayway";
private $orderMessageField = "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,buyer_id as buyerId,buyer_name as buyerName,accept_time as acceptTime";
private $orderMessageField = "order_id as orderId,order_sn as orderSn,order_pay as orderPay,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,buyer_id as buyerId,buyer_name as buyerName,accept_time as acceptTime";
private $order;
......@@ -54,53 +54,56 @@ class OrderServiceModel extends \Business\AbstractModel
{
return $this->orderGoodsField . ',goods_commonid as goodsCommonid,goods_group as goodsGroup';
}
public function getOrderIndexWhere($memberId,$keyword,$pageIndex,$pageSize){
public function getOrderIndexWhere($memberId, $keyword, $pageIndex, $pageSize)
{
// $query1= array('match' => array('buyerId' => $memberId));
// $res1['must']=$query1;
// // $query2[]= array('match' => array('orderSn' => $keyword"));
// $query2[]= array('match' => array('storeName' => $keyword));
// $query2[]= array('match' => array('goodsName' => $keyword));
// $res1['should']=$query2;
// $allQuery['bool']=$res1;
$query1= array('match' => array('buyerId' => $memberId));
// $allQuery['bool']=$res1;
$query1 = array('match' => array('buyerId' => $memberId));
$res1['must'][0]=$query1;
$res1['must'][0] = $query1;
// $query2[]= array('match' => array('orderSn' => $keyword"));
$query2[]= array('match' => array('storeName' => $keyword));
$query2[]= array('match' => array('goodsName' => $keyword));
$res1['must'][1]['bool']['should']=$query2;
$allQuery['bool']=$res1;
// echo json_encode($allQuery);exit;
// echo json_encode($allQuery);exit;
$query2[] = array('match' => array('storeName' => $keyword));
$query2[] = array('match' => array('goodsName' => $keyword));
$res1['must'][1]['bool']['should'] = $query2;
$allQuery['bool'] = $res1;
// echo json_encode($allQuery);exit;
// echo json_encode($allQuery);exit;
//array_push($allQuery['bool'],$res2);
// echo json_encode($allQuery);exit;
// echo json_encode($allQuery);exit;
$elasticTool=\Elastics\ElasticsToolModel::getInstance(NameConst::ordersIndex);
$res=$elasticTool->searchMatch($allQuery,$pageIndex,$pageSize);
$orderIdsField=array_column($res['list'],'orderId');
$orderIds=implode(',',$orderIdsField);
if($orderIds){
$where=Common::format(" han_order.buyer_id={0} and delete_state={1} and (order_id in({2}) or han_order.order_sn like '%{3}%')",$memberId,ApiConst::undeleteOrder,$orderIds,$keyword);
}else{
$where=Common::format(" han_order.buyer_id={0} and delete_state={1} and han_order.order_sn like '%{2}%'",$memberId,ApiConst::undeleteOrder,$keyword);
$elasticTool = \Elastics\ElasticsToolModel::getInstance(NameConst::ordersIndex);
$res = $elasticTool->searchMatch($allQuery, $pageIndex, $pageSize);
$orderIdsField = array_column($res['list'], 'orderId');
$orderIds = implode(',', $orderIdsField);
if ($orderIds) {
$where = Common::format(" han_order.buyer_id={0} and delete_state={1} and (order_id in({2}) or han_order.order_sn like '%{3}%')", $memberId, ApiConst::undeleteOrder, $orderIds, $keyword);
} else {
$where = Common::format(" han_order.buyer_id={0} and delete_state={1} and han_order.order_sn like '%{2}%'", $memberId, ApiConst::undeleteOrder, $keyword);
}
return $where;
}
/**
* 订单,获得订单列表
*
* @date 2018-5-15
* @author ccw
*/
public function getList($memberId,$keyWord=false, $pageIndex = ApiConst::pageIndex, $pageSize = ApiConst::pageSize, $orderState = false)
public function getList($memberId, $keyWord = false, $pageIndex = ApiConst::pageIndex, $pageSize = ApiConst::pageSize, $orderState = false)
{
$orderDao = \DAO\Order\OrderModel::getInstance(DbNameConst::salveDBConnectName);
$orderGoodsDao = \DAO\Order\OrderGoodsModel::getInstance(DbNameConst::salveDBConnectName);
$goodsDao = \DAO\GoodsModel::getInstance(DbNameConst::salveDBConnectName);
$refundReturnDao = \DAO\Order\RefundReturnModel::getInstance(DbNameConst::salveDBConnectName);
if($keyWord!==false){
$where=$this->getOrderIndexWhere($memberId,$keyWord,$pageIndex,$pageSize);
}else{
if ($keyWord !== false) {
$where = $this->getOrderIndexWhere($memberId, $keyWord, $pageIndex, $pageSize);
} else {
$where['delete_state'] = ApiConst::undeleteOrder;
$where['buyer_id'] = $memberId;
//$where['lock_state'] = ApiConst::zero;
......@@ -161,7 +164,7 @@ class OrderServiceModel extends \Business\AbstractModel
public function delete($memberId, $orderId)
{
$orderDao = \DAO\Order\OrderModel::getInstance(DbNameConst::masterDBConnectName);
$memberDao=\DAO\MemberModel::getInstance(DbNameConst::masterDBConnectName);
$memberDao = \DAO\MemberModel::getInstance(DbNameConst::masterDBConnectName);
$order = $orderDao->findByMemberIdAndOrderId($memberId, $orderId, $this->getDeleteField());
if (empty($order)) {
ErrorModel::throwException(CodeConfigModel::orderNotExist);
......@@ -179,7 +182,6 @@ class OrderServiceModel extends \Business\AbstractModel
}
private function getDeliveryManFields()
{
return array(
......@@ -206,16 +208,16 @@ class OrderServiceModel extends \Business\AbstractModel
$goodsDao = \DAO\GoodsModel::getInstance(DbNameConst::salveDBConnectName);
//订单
$order = \Our\RedisHelper::cachedFunction(\Redis\Db5\OrderRedisModel::getInstance(), array(&$orderDao, 'findByOrderId'), array($orderId), \Our\ApiConst::oneDaySecond);
$fields =$orderDao->getFields();
$fields = $orderDao->getFields();
$this->order = $orderDao->getConvertOrder($order, $fields);
//收货人地址
//收货人信息
$this->orderCommon = \Our\RedisHelper::cachedFunction(\Redis\Db5\OrderRedisModel::getInstance(), array(&$orderCommonDao, 'findByOrderId'), array($orderId, $orderCommonDao->orderCommonField), \Our\ApiConst::oneDaySecond);
//$this->orderCommon = $orderCommonDao->findByOrderId($orderId, $this->orderCommonField);
$reciverInfo=$this->orderCommon['reciverInfo'];
$reciverInfo=unserialize($reciverInfo);
$reciverInfo['true_name']=$this->orderCommon['reciverName'];
$this->address=$orderCommonDao->getReciverInfo($reciverInfo);
$reciverInfo = $this->orderCommon['reciverInfo'];
$reciverInfo = unserialize($reciverInfo);
$reciverInfo['true_name'] = $this->orderCommon['reciverName'];
$this->address = $orderCommonDao->getReciverInfo($reciverInfo);
// if ($this->orderCommon['daddressId'] > ApiConst::zero) {
// $this->address = \Our\RedisHelper::cachedFunction(\Redis\Db5\OrderRedisModel::getInstance(), array(&$addressDao, 'getAddressByAddressId'), array($this->orderCommon['daddressId'], $this->addressField), \Our\ApiConst::oneDaySecond);;
// $this->address['lat'] = $this->address['lat'] ? $this->address['lat'] : ApiConst::zero;
......@@ -226,7 +228,7 @@ class OrderServiceModel extends \Business\AbstractModel
// }
//定单商品表
$this->orderGoodsList = \Our\RedisHelper::cachedFunction(\Redis\Db5\OrderRedisModel::getInstance(), array(&$orderGoodsDao, 'getOrderGoodsByOrderIds'), array($orderId, $this->getGoodsDetailField()), \Our\ApiConst::oneDaySecond,array($orderId));
$this->orderGoodsList = \Our\RedisHelper::cachedFunction(\Redis\Db5\OrderRedisModel::getInstance(), array(&$orderGoodsDao, 'getOrderGoodsByOrderIds'), array($orderId, $this->getGoodsDetailField()), \Our\ApiConst::oneDaySecond, array($orderId));
//商店相关信息
$this->store = \Our\RedisHelper::cachedFunction(\Redis\Db5\OrderRedisModel::getInstance(), array(&$storeDao, 'getInfoById'), array($this->order['storeId'], $this->storeField), \Our\ApiConst::oneDaySecond);
$returnData = $this->order;
......@@ -251,8 +253,8 @@ class OrderServiceModel extends \Business\AbstractModel
$returnData['totalGoodsNum'] = $orderGoodsDao->getGoodsCount($this->orderGoodsList);
$returnData['offlinePayway'] = $this->store['offlinePayway'] ? $this->store['offlinePayway'] : '';
$returnData['reciverInfo'] = $this->address;
$refundStateName=$orderDao->getRefundText($this->order);
$returnData['orderGoods'] = $goodsDao->convert($this->orderGoodsList,$refundStateName);
$refundStateName = $orderDao->getRefundText($this->order);
$returnData['orderGoods'] = $goodsDao->convert($this->orderGoodsList, $refundStateName);
return $returnData;
}
......@@ -266,16 +268,16 @@ class OrderServiceModel extends \Business\AbstractModel
public function cancel($orderId, $memberId = false)
{
$orderDao = \DAO\Order\OrderModel::getInstance(DbNameConst::masterDBConnectName);
$memberDao=\DAO\MemberModel::getInstance(DbNameConst::masterDBConnectName);
$memberDao = \DAO\MemberModel::getInstance(DbNameConst::masterDBConnectName);
$order = $orderDao->findByOrderId($orderId);
//判断订单目前状态是否允许取消
$isAllowCancel = $orderDao->isAllowCancel($order);
if ($isAllowCancel) {
$res=$orderDao->updateStatusByOrderId($orderId, ApiConst::orderStateCancel);
if($res){
$res = $orderDao->updateStatusByOrderId($orderId, ApiConst::orderStateCancel);
if ($res) {
if ($memberId) {
$orderDao->deleteOrderCache($memberId, $orderId,$order['store_id']);
// $memberDao->fromOrderStateToOrderState($memberId,$order['order_state'],ApiConst::orderStateCancel);
$orderDao->deleteOrderCache($memberId, $orderId, $order['store_id']);
// $memberDao->fromOrderStateToOrderState($memberId,$order['order_state'],ApiConst::orderStateCancel);
}
}
return $res;
......@@ -289,15 +291,15 @@ class OrderServiceModel extends \Business\AbstractModel
public function confirmRecieve($orderId, $memberId)
{
$orderDao = \DAO\Order\OrderModel::getInstance(DbNameConst::masterDBConnectName);
// $orderDao->deleteOrderCache($memberId, $orderId);
// $orderDao->deleteOrderCache($memberId, $orderId);
$order = $orderDao->findByOrderId($orderId);
//判断订单目前状态是否允许取消
$isAllowConfirm = $orderDao->isAllowConfirm($order);
if ($isAllowConfirm) {
$res = $orderDao->updateStatusByOrderId($orderId, ApiConst::orderStateComplete, TRUE);
if ($res) {
$orderDao->deleteOrderCache($memberId, $orderId,$order['store_id']);
\Our\RedisHelper::memberTotalFromStateToState($memberId,$order['order_state'],ApiConst::orderStateComplete);
$orderDao->deleteOrderCache($memberId, $orderId, $order['store_id']);
\Our\RedisHelper::memberTotalFromStateToState($memberId, $order['order_state'], ApiConst::orderStateComplete);
return true;
} else {
ErrorModel::throwException(CodeConfigModel::receiveError);
......@@ -350,146 +352,154 @@ class OrderServiceModel extends \Business\AbstractModel
}
}
//推送接单消息到店铺
public function pushRecieveWaitOrder(){
$baseConfDir=\Our\Common::getConfig('out.config');
$savePath=$baseConfDir . \Our\PathConst::orderWaitRecieveTaskAddTime;
public function pushRecieveWaitOrder()
{
$baseConfDir = \Our\Common::getConfig('out.config');
$savePath = $baseConfDir . \Our\PathConst::orderWaitRecieveTaskAddTime;
$addTime = file_get_contents($savePath);
$addTime=$addTime?$addTime:ApiConst::zero;
$addTime = $addTime ? $addTime : ApiConst::zero;
$orderDao = \DAO\Order\OrderModel::getInstance(DbNameConst::masterDBConnectName);
$pageBegin=PageConst::taskPageBegin;
$pageBegin = PageConst::taskPageBegin;
$push = Push::getInstance();
do {
$orders = $orderDao->getRecieveOrders(ApiConst::orderStateWaitConfirm,$addTime,$pageBegin,PageConst::taskPageSize);
do {
$orders = $orderDao->getRecieveOrders(ApiConst::orderStateWaitConfirm, $addTime, $pageBegin, PageConst::taskPageSize);
foreach ($orders['list'] as $order) {
$push->recieveWait($order['storeId'],$order['orderId'],$order['orderSn']);
$push->recieveWait($order['storeId'], $order['orderId'], $order['orderSn']);
}
$pageBegin++;
}while(!empty($orders['list']));
} while (!empty($orders['list']));
$push->sendTcpMessage();
file_put_contents($savePath,TIMESTAMP);
file_put_contents($savePath, TIMESTAMP);
}
//推送确认收货消息到用户
public function pushConfirmOrder(){
$baseConfDir=\Our\Common::getConfig('out.config');
$savePath=$baseConfDir . \Our\PathConst::orderConfirmTaskAddTime;
public function pushConfirmOrder()
{
$baseConfDir = \Our\Common::getConfig('out.config');
$savePath = $baseConfDir . \Our\PathConst::orderConfirmTaskAddTime;
$addTime = file_get_contents($savePath);
$addTime=$addTime?$addTime:ApiConst::zero;
$addTime = $addTime ? $addTime : ApiConst::zero;
$orderDao = \DAO\Order\OrderModel::getInstance(DbNameConst::masterDBConnectName);
$pageBegin=PageConst::taskPageBegin;
$pageBegin = PageConst::taskPageBegin;
$push = Push::getInstance();
do {
$orders = $orderDao->getRecieveOrders(ApiConst::orderStateWaitRecieve,$addTime,$pageBegin,PageConst::taskPageSize,'send_time');
$orders = $orderDao->getRecieveOrders(ApiConst::orderStateWaitRecieve, $addTime, $pageBegin, PageConst::taskPageSize, 'send_time');
foreach ($orders['list'] as $order) {
$push->reacheRemind($order['buyerId'],$order['orderId'],$order['orderSn']);
$push->reacheRemind($order['buyerId'], $order['orderId'], $order['orderSn']);
}
$pageBegin++;
}while(!empty($orders['list']));
} while (!empty($orders['list']));
$push->sendTcpMessage();
file_put_contents($savePath,TIMESTAMP);
file_put_contents($savePath, TIMESTAMP);
}
// public function changeOrderStateCancelUnconditional($orderInfo, $role, $user = '', $msg = '', $if_update_account = true, $if_quque = true) {
// $orderDao = \DAO\Order\OrderModel::getInstance(DbNameConst::masterDBConnectName);
// try {
// $orderId = $orderInfo['orderId'];
// //更新订单信息
// $updateData = array('order_state' => ORDER_STATE_CANCEL);
// $update = $orderDao->update($updateData,array('order_id'=>$orderId));
// if (!$update) {
// echo '订单:'.json_encode($orderInfo).'关闭失败!!'."\r\n";
// }
// //添加订单日志
// $data = array();
// $data['order_id'] = $order_id;
// $data['log_role'] = $role;
// $data['log_msg'] = '取消了订单';
// $data['log_user'] = $user;
// if ($msg) {
// $data['log_msg'] .= ' ( '.$msg.' )';
// }
// $data['log_orderstate'] = ORDER_STATE_CANCEL;
// $model_order->addOrderLog($data);
// if(!in_array($order_info['payment_type'],array(0,2))){//微信支付
// $refund_order_sn= Model('refund_return')->getRefundsn($order_info['store_id']);
// //生成退款记录
// $update['order_id']=$order_info['order_id'];
// $update['order_sn']=$order_info['order_sn'];
// $update['refund_sn']=$refund_order_sn;
// $update['store_id']=$order_info['store_id'];
// $update['store_name']=$order_info['store_name'];
// $update['buyer_id']=$order_info['buyer_id'];
// $update['buyer_name']=$order_info['buyer_name'];
// $update['goods_id']=0;
// $update['goods_name']='订单商品全部退款';
// $update['refund_amount']=$order_info['order_amount'];
// $update['seller_state']=2;
// $update['refund_state']=3;
// $update['goods_state']=5;
// $update['add_time']=time();
// $update['reason_info']='用户付款'.$during.'分钟内,店铺未接单,自动取消订单';
// $update['buyer_message']='用户付款'.$during.'分钟内,店铺未接单,自动取消订单';
// $update['is_suc_refund']=1;
// $res=BaseModel('refund_return')->add($update);
// if(!$res){
// throw new Exception('退款记录写入失败');
// }
// $param['refund_order_no']=$refund_order_sn;
//
// $param['out_trade_no']=$order_info['pay_sn'];
// $param['total_fee']=$order_info['order_amount'];
// $param['refund_fee']=$order_info['order_amount'];//全额退款
// if(intval($order_info['payment_type'])==1){
// require_once(BASE_ROOT_PATH.'/qmmobile/api/payment/wxpay/wxpay.php'); //加载 退款模块
// $wxpay = new wxpay();
// $refund_return = $wxpay->refund($param);
// Log::record(json_encode($refund_return));
// if(!($refund_return['return_code']=='SUCCESS'&&$refund_return['result_code']=='SUCCESS')){
// throw new Exception('微信退款操作执行失败!');
// }
// }else if(intval($order_info['payment_type'])==3){
// $param['store_id']= $order_info['store_id'];
// include(BASE_ROOT_PATH.'/core/payment/alipay/alipay.php');
// $payment_api = new alipay();
// $return = $payment_api->refund($param);
// $resultCode = $return->code;
// if(!($resultCode&&$resultCode==10000)){
// throw new Exception('支付宝退款操作执行失败!');
// }
// }
// }
// $model_order->commit();
// import('function.redisHelper');
// excuteYafMethod('\DAO\Order\OrderModel','deleteOrderCache',array($order_info['buyer_id'],$order_id,$order_info['store_id']));
// Log::record($order_id.':操作成功');
// return callback(true,'操作成功');
//
// } catch (Exception $e) {
// Log::record($order_info['order_id'].':'.$e->getMessage());
// $model_order->rollback();
// return callback(false,'操作失败');
// }
// }
public function changeOrderStateCancelUnconditional($orderInfo, $role, $user = '', $msg = '', $if_update_account = true, $if_quque = true)
{
$orderDao = \DAO\Order\OrderModel::getInstance(DbNameConst::masterDBConnectName);
$refundReturnDao = \DAO\Order\RefundReturnModel::getInstance(DbNameConst::masterDBConnectName);
//$orderGoodsDao=\DAO\Order\OrderGoodsModel::getInstance();
// $orderGoods=$orderGoodsDao->getOrderGoodsByOrderIds($orderInfo['orderId']);
try {
$orderId = $orderInfo['orderId'];
//更新订单信息
$updateData = array('order_state' => ORDER_STATE_CANCEL,'refund_amount'=>$orderInfo['orderAmount']);
$update = $orderDao->update($updateData, array('order_id' => $orderId));
if (!$update) {
echo '订单:' . json_encode($orderInfo) . '关闭失败!!' . "\r\n";
}else{
$refundSn = $refundReturnDao->getRefundsn($orderInfo['storeId']);
//生成退款记录
$update['order_id'] = $orderInfo['orderId'];
$update['order_sn'] = $orderInfo['orderSn'];
$update['refund_sn'] = $refundSn;
$update['store_id'] = $orderInfo['storeId'];
$update['store_name'] = $orderInfo['storeName'];
$update['buyer_id'] = $orderInfo['buyerId'];
$update['buyer_name'] = $orderInfo['buyerName'];
$update['goods_id'] = ApiConst::zero;
$update['goods_name'] = '订单商品全部退款';
$update['refund_amount'] = $orderInfo['orderAmount'];
$update['seller_state'] = 2;
$update['refund_state'] = 3;
$update['goods_state'] = 5;
$update['add_time'] = time();
$waitDiff=(ApiConst::orderStateWaitConfirmBeyond/ApiConst::oneMinSecond);
$update['reason_info'] = '用户付款' . $waitDiff . '分钟内,店铺未接单,自动取消订单';
$update['buyer_message'] = '用户付款' . $waitDiff. '分钟内,店铺未接单,自动取消订单';
$update['is_suc_refund'] = 1;
$res = $refundReturnDao->add($update);
if (!$res) {
echo '退款记录:' . json_encode($orderInfo) . '写入失败!!' . "\r\n";
}else{
$param['refundOrderNo'] = $refundSn;
$param['outTradeNo'] = $orderInfo['paySn'];
$param['totalFee'] = $orderInfo['orderAmount'];
$param['refundFee'] = $orderInfo['orderAmount'];//全额退款
$param['storeId']=$orderInfo['storeId'];
if (intval($orderInfo['paymentType']) == ApiConst::wxAppPayType) {
require_once(BASE_ROOT_PATH . '/qmmobile/api/payment/wxpay/wxpay.php'); //加载 退款模块
$wxpay = new wxpay();
$refund_return = $wxpay->refund($param);
Log::record(json_encode($refund_return));
if (!($refund_return['return_code'] == 'SUCCESS' && $refund_return['result_code'] == 'SUCCESS')) {
throw new Exception('微信退款操作执行失败!');
}
} else if (intval($orderInfo['paymentType']) == ApiConst::aliPayType) {
$aliPay=\Payment\Alipay::getInstance();
$return = $aliPay->refund($param);
$resultCode = $return->code;
if(!empty($resultCode)&&$resultCode == 10000){
return true;
} else {
return false;
}
$param['store_id'] = $orderInfo['storeId'];
include(BASE_ROOT_PATH . '/core/payment/alipay/alipay.php');
$payment_api = new alipay();
$return = $payment_api->refund($param);
$resultCode = $return->code;
if (!($resultCode && $resultCode == 10000)) {
throw new Exception('支付宝退款操作执行失败!');
}
}
$orderDao->deleteOrderCache($orderInfo['buyerId']);
echo $orderId." 退款操作操作成功";
}
}
} catch (Exception $e) {
throw new \Exception($e->getMessage(),$e->getCode());
}
}
public $baseDir;
//订单任务脚本关闭订单
public function changeOrderStatus()
{
$orderDao = \DAO\Order\OrderModel::getInstance(DbNameConst::masterDBConnectName);
$orderGoodsDao=\DAO\Order\OrderGoodsModel::getInstance(DbNameConst::masterDBConnectName);
$orderGoodsCommon=\DAO\Order\OrderCommonModel::getInstance(DbNameConst::masterDBConnectName);
$beginTime=file_get_contents($this->baseDir . \Our\PathConst::orderCloseWaitRecieveOrder, TIMESTAMP);
$beginTime=$beginTime?$beginTime:ApiConst::zero;
$endTime=TIMESTAMP-ApiConst::orderStateWaitConfirmBeyond;
$orderGoodsDao = \DAO\Order\OrderGoodsModel::getInstance(DbNameConst::masterDBConnectName);
$orderGoodsCommon = \DAO\Order\OrderCommonModel::getInstance(DbNameConst::masterDBConnectName);
$beginTime = file_get_contents($this->baseDir . \Our\PathConst::orderCloseWaitRecieveOrder, TIMESTAMP);
$beginTime = $beginTime ? $beginTime : ApiConst::zero;
$endTime = TIMESTAMP - ApiConst::orderStateWaitConfirmBeyond;
$orders = $orderDao->getMustCecelRecieveOrders(ApiConst::orderStateWaitConfirm, $beginTime, $endTime, $this->orderMessageField);
if (!empty($orders)) {
$orderIds=array_column($orders,'orderId');
$orderGoods=$orderGoodsDao->getOrderGoodsByOrderIds($orderIds,$this->getGoodsDetailField());
$orderIds = array_column($orders, 'orderId');
$orderGoods = $orderGoodsDao->getOrderGoodsByOrderIds($orderIds, $this->getGoodsDetailField());
$orderGoodsCommon->updateGoodsStorage($orderGoods);
//$res = $orderDao->updateNotRecieveOrders(ApiConst::orderStateWaitConfirm, ApiConst::orderStateClose, 'add_time', ApiConst::orderStateWaitConfirmBeyond, $this->orderMessageField);
//$res = $orderDao->updateNotRecieveOrders(ApiConst::orderStateWaitConfirm, ApiConst::orderStateClose, 'add_time', ApiConst::orderStateWaitConfirmBeyond, $this->orderMessageField);
foreach ($orders as $order) {
$orderDao->deleteOrderCache($order['buyerId'], $order['orderId'],$order['storeId']);
if($orders['paymentTime']>ApiConst::zero && in_array($orders['paymentType'],ArrayConst::payTypeOnlines)){
$orderDao->deleteOrderCache($order['buyerId'], $order['orderId'], $order['storeId']);
if ($orders['paymentTime'] > ApiConst::zero && in_array($orders['paymentType'], ArrayConst::payTypeOnlines)) {
$this->changeOrderStateCancelUnconditional($order);
}
$orderDao->deleteOrderCache($order['buyerId'],$order['orderId'],$order['storeId']);
}
$push = Push::getInstance();
$push->pushOrderCloseMessage($orders);
......@@ -515,16 +525,16 @@ class OrderServiceModel extends \Business\AbstractModel
if ($order['shippingType'] == ApiConst::bySeller) {
if (isset($qmDeliverymanLogsOrderIds[$order['orderId']])) {
array_push($sellerOrderIds, $order['orderId']);
$orderDao->deleteOrderCache($order['buyerId'], $order['orderId'],$order['storeId']);
$orderDao->deleteOrderCache($order['buyerId'], $order['orderId'], $order['storeId']);
}
} else {
$limitTime = TIMESTAMP - ApiConst::orderWaitRecieveThreeDays;
if ($order['acceptTime'] < $limitTime) {
array_push($expressOrderIds, $order['orderId']);
$orderDao->deleteOrderCache($order['buyerId'], $order['orderId'],$order['storeId']);
$orderDao->deleteOrderCache($order['buyerId'], $order['orderId'], $order['storeId']);
}
}
\Our\RedisHelper::memberTotalFromStateToState($order['buyerId'],$order['orderState'],ApiConst::orderStateComplete);
\Our\RedisHelper::memberTotalFromStateToState($order['buyerId'], $order['orderState'], ApiConst::orderStateComplete);
}
$updateOrderIds = array_merge($sellerOrderIds, $expressOrderIds);
echo '更新的订单id为:';
......@@ -607,7 +617,7 @@ class OrderServiceModel extends \Business\AbstractModel
//获得订单列表
$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($memberId));
$goodsDao=\DAO\GoodsModel::getInstance();
$goodsDao = \DAO\GoodsModel::getInstance();
$orderIds = array_column($orders['list'], 'orderId');
$orderCommons = $orderCommonDao->getAllByOrderIdsCache($orderIds, $diliverymanId, $orderCommonDao->orderCommonField);
......@@ -618,7 +628,7 @@ class OrderServiceModel extends \Business\AbstractModel
$orderMerge = Common::intergrateOneToOne($orderMerge, $orderCommons, 'orderId', 'orderId');
$orderMerge = $orderDao->convertOrderList($orderMerge);
$convertResult = array();
$orderGoods=$goodsDao->convert($orderGoods);
$orderGoods = $goodsDao->convert($orderGoods);
foreach ($qmDeliveryLogList['list'] as &$value) {
$delivery = $orderMerge[$value['orderId']];
$delivery['id'] = $value['id'];
......@@ -626,12 +636,12 @@ class OrderServiceModel extends \Business\AbstractModel
$delivery['mobPhone'] = $delivery['reciverInfo']['mob_phone'];
$delivery['getTime'] = $value['getTime'];
$delivery['finishTime'] = $value['finishTime'];
$delivery['mobPhone']= $delivery['mobPhone']? $delivery['mobPhone']:'';
$delivery['finishTime']= $delivery['finishTime']? $delivery['finishTime']:ApiConst::zero;
$delivery['mobPhone'] = $delivery['mobPhone'] ? $delivery['mobPhone'] : '';
$delivery['finishTime'] = $delivery['finishTime'] ? $delivery['finishTime'] : ApiConst::zero;
$delivery['orderGoods'] = $orderGoods;
$delivery['street'] = $delivery['reciverInfo']['address'] . $delivery['reciverInfo']['street'];
$delivery['lng'] = $delivery['reciverInfo']['lng']?$delivery['reciverInfo']['lng']:0.0;
$delivery['lat'] = $delivery['reciverInfo']['lat']?$delivery['reciverInfo']['lat']:0.0;
$delivery['lng'] = $delivery['reciverInfo']['lng'] ? $delivery['reciverInfo']['lng'] : 0.0;
$delivery['lat'] = $delivery['reciverInfo']['lat'] ? $delivery['reciverInfo']['lat'] : 0.0;
$delivery['subAddress'] = isset($delivery['reciverInfo']['sub_address']) ? $delivery['reciverInfo']['sub_address'] : '';
unset($delivery['goodsAmount']);
unset($delivery['orderState']);
......@@ -666,14 +676,14 @@ class OrderServiceModel extends \Business\AbstractModel
$qmDeliverymanLog = \DAO\Order\QmDeliverymanLogModel::getInstance(DbNameConst::salveDBConnectName);
$storeDao = \DAO\StoreModel::getInstance(DbNameConst::salveDBConnectName);
$delivery = $qmDeliverymanLog->findByIdCache($deliveryId);
if(empty($delivery)){
if (empty($delivery)) {
ErrorModel::throwException(CodeConfigModel::notExsitDeliver);
}
$orderId = $delivery['orderId'];
//订单
$order = \Our\RedisHelper::cachedFunction(\Redis\Db5\OrderRedisModel::getInstance(), array(&$orderDao, 'findByOrderId'), array($orderId), \Our\ApiConst::oneDaySecond);
if(empty($order)){
if (empty($order)) {
ErrorModel::throwException(CodeConfigModel::notExsitOrder);
}
$fields = $orderDao->getFields();
......@@ -684,15 +694,15 @@ class OrderServiceModel extends \Business\AbstractModel
$reciverInfo = unserialize($this->orderCommon['reciverInfo']);
//定单商品表
$this->orderGoodsList = \Our\RedisHelper::cachedFunction(\Redis\Db5\OrderRedisModel::getInstance(), array(&$orderGoodsDao, 'getOrderGoodsByOrderIds'), array($orderId, $this->getGoodsDetailField()), \Our\ApiConst::oneDaySecond);
if(empty($this->orderGoodsList)){
if (empty($this->orderGoodsList)) {
ErrorModel::throwException(CodeConfigModel::notExistOrderGoods);
}
//商店相关信息
$this->store = \Our\RedisHelper::cachedFunction(\Redis\Db5\OrderRedisModel::getInstance(), array(&$storeDao, 'getInfoById'), array($this->order['storeId'], $this->storeField), \Our\ApiConst::oneDaySecond);
$orderGoods=$goodsDao->convert($this->orderGoodsList);
$orderGoods = $goodsDao->convert($this->orderGoodsList);
if(empty($orderGoods)){
$orderGoods=array();
if (empty($orderGoods)) {
$orderGoods = array();
}
$returnData = array(
'orderId' => $this->order['orderId'],
......@@ -707,11 +717,11 @@ class OrderServiceModel extends \Business\AbstractModel
'reciverName' => $this->orderCommon['reciverName'],
'mobPhone' => $reciverInfo['mob_phone'],
'street' => $reciverInfo['street'],
'lng'=>isset($reciverInfo['lng'])?$reciverInfo['lng']:ApiConst::zero,
'lat'=>isset($reciverInfo['lat'])?$reciverInfo['lat']:ApiConst::zero,
'lng' => isset($reciverInfo['lng']) ? $reciverInfo['lng'] : ApiConst::zero,
'lat' => isset($reciverInfo['lat']) ? $reciverInfo['lat'] : ApiConst::zero,
'subAddress' => isset($reciverInfo['sub_address']) ? $reciverInfo['sub_address'] : '',
'orderGoods' => $orderGoods,
'shippingFee'=>$this->order['shippingFee'],
'shippingFee' => $this->order['shippingFee'],
);
return $returnData;
......@@ -727,12 +737,12 @@ class OrderServiceModel extends \Business\AbstractModel
if ($qmDeliveryManLog['deliveryState'] == ApiConst::deliveryStateWait && $qmDeliveryManLog['id'] == $id) {
$updateResult = $qmDeliverymanLogDao->updateStatusById($id);
$orderDao = \DAO\Order\OrderModel::getInstance();
$order=$orderDao->findByOrderId($qmDeliveryManLog['orderId'],$orderDao->getOrderDetailField());
if($updateResult){
$push=Push::getInstance();
$push->reacheRemind($order['buyerId'],$order['orderId'],$order['orderSn']);
$order = $orderDao->findByOrderId($qmDeliveryManLog['orderId'], $orderDao->getOrderDetailField());
if ($updateResult) {
$push = Push::getInstance();
$push->reacheRemind($order['buyerId'], $order['orderId'], $order['orderSn']);
}
$orderDao->deleteOrderCache($memberid, $qmDeliveryManLog['orderId'],$order['storeId']);
$orderDao->deleteOrderCache($memberid, $qmDeliveryManLog['orderId'], $order['storeId']);
$qmDeliverymanLogDao->deleteOrderCache($deliverymanId, $id);
return $updateResult;
} else {
......@@ -873,7 +883,7 @@ class OrderServiceModel extends \Business\AbstractModel
{
$this->checkOrderForPay($memberId, $orderId);
$orderConfirmUtil = \Order\OrderConfirmUtil::getInstance();
$paySn = $orderConfirmUtil->makeNewPaySnForOrderWithOrderId($orderId,$memberId);
$paySn = $orderConfirmUtil->makeNewPaySnForOrderWithOrderId($orderId, $memberId);
return $paySn;
}
......
......@@ -85,8 +85,8 @@ class OrderModel extends \DAO\AbstractModel
{
$begin = strtotime(date("Y-m-d"), time());
$end = TIMESTAMP;
$notInState="{ApiConst::orderStateCancel},{ApiConst::orderStateClose}";
$where = Common::format(" store_id={0} and order_state not in {1}", $storeId,$notInState);
$notInState=ApiConst::orderStateCancel.','.ApiConst::orderStateClose;
$where = Common::format(" store_id={0} and order_state not in ({1})", $storeId,$notInState);
$orderTotal = $this->getOrderCounts($where, $this->countField);
$where .= Common::format(" and add_time between {0} and {1}", $begin, $end);
$todayTotal = $this->getOrderCounts($where, $this->countField);
......
......@@ -359,7 +359,6 @@ class RefundReturnModel extends \DAO\AbstractModel {
}
/**
* 类实例
*
......
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