Commit ced4dab9 authored by liuyuzhen's avatar liuyuzhen

Merge branch 'master_dev' of git.shenbd.com:qm-develop/shenbd into lyz

parents 4de8dcad eb94440a
...@@ -27,9 +27,8 @@ class AddressController extends \Our\Controller_AbstractApi { ...@@ -27,9 +27,8 @@ class AddressController extends \Our\Controller_AbstractApi {
*/ */
public function saveAddressAction(){ public function saveAddressAction(){
$result = $this->addressService->saveAddress($this->req[\Our\NameConst::data],$this->memberId); $result = $this->addressService->saveAddress($this->req[\Our\NameConst::data],$this->memberId);
$this->success($result,\Our\DescribeConst::saveAddressSuccess,\Our\DescribeConst::saveAddressSuccess);
if($result){ if($result){
$this->success(new stdClass(),\Our\DescribeConst::saveAddressSuccess,\Our\DescribeConst::saveAddressSuccess); $this->success(array('addressId'=>$result),\Our\DescribeConst::saveAddressSuccess,\Our\DescribeConst::saveAddressSuccess);
} }
\Error\ErrorModel::throwException(\Error\CodeConfigModel::saveAddressFailed); \Error\ErrorModel::throwException(\Error\CodeConfigModel::saveAddressFailed);
} }
......
...@@ -8,7 +8,19 @@ class IndexController extends \Our\Controller_Abstract { ...@@ -8,7 +8,19 @@ class IndexController extends \Our\Controller_Abstract {
public function init(){ public function init(){
} }
public function is_https() {
if ( !empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off') {
return true;
} elseif ( isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https' ) {
return true;
} elseif ( !empty($_SERVER['HTTP_FRONT_END_HTTPS']) && strtolower($_SERVER['HTTP_FRONT_END_HTTPS']) !== 'off') {
return true;
}elseif($_SERVER['SERVER_PORT'] == 89){
return true;
}
return false;
}
public function getHtmlAction(){ public function getHtmlAction(){
$this->req=$this->getRequest()->getQuery(); $this->req=$this->getRequest()->getQuery();
$postData=$this->req; $postData=$this->req;
...@@ -40,6 +52,8 @@ class IndexController extends \Our\Controller_Abstract { ...@@ -40,6 +52,8 @@ class IndexController extends \Our\Controller_Abstract {
} }
public function indexAction() { public function indexAction() {
var_dump($_SERVER);exit;
// echo $_SERVER['USER']);exit;
$elasticConfig=\Our\Common::getConfig('elastic.master'); $elasticConfig=\Our\Common::getConfig('elastic.master');
$configArray=array( $configArray=array(
$elasticConfig->host.':'.$elasticConfig->port, $elasticConfig->host.':'.$elasticConfig->port,
......
...@@ -802,6 +802,7 @@ class OrderConfirmUtil { ...@@ -802,6 +802,7 @@ class OrderConfirmUtil {
$reciverInfo['mob_phone'] = $addressInfo['mob_phone']; $reciverInfo['mob_phone'] = $addressInfo['mob_phone'];
$reciverInfo['tel_phone'] = $addressInfo['tel_phone']; $reciverInfo['tel_phone'] = $addressInfo['tel_phone'];
$reciverInfo['address'] = $addressInfo['area_info'].' '.$addressInfo['address']; $reciverInfo['address'] = $addressInfo['area_info'].' '.$addressInfo['address'];
$reciverInfo['name'] = $addressInfo['name'];
$reciverInfo['area'] = $addressInfo['area_info']; $reciverInfo['area'] = $addressInfo['area_info'];
$reciverInfo['street'] = $addressInfo['address']; $reciverInfo['street'] = $addressInfo['address'];
$reciverInfo['lng'] = $addressInfo['lng']; $reciverInfo['lng'] = $addressInfo['lng'];
......
...@@ -364,4 +364,6 @@ class ApiConst ...@@ -364,4 +364,6 @@ class ApiConst
//订单列表索引 因子 //订单列表索引 因子
const orderIndexRank=1000; const orderIndexRank=1000;
const defaultGoodsScore= 5;
} }
\ No newline at end of file
...@@ -35,6 +35,12 @@ class ArrayConst ...@@ -35,6 +35,12 @@ class ArrayConst
ApiConst::qqPayType, ApiConst::qqPayType,
ApiConst::wxLitePayType ApiConst::wxLitePayType
); );
const orderPayTypeOnlines=array(
ApiConst::wxpay,
ApiConst::alipay,
ApiConst::tenpay,
ApiConst::wxProgram
);
//退货方式 //退货方式
const refundTypes=array( const refundTypes=array(
ApiConst::refundTypeMoney=>array('id'=>ApiConst::refundTypeMoney,'name'=>"退款",'desc'=>'未收到货(包含未签收),或卖家协商同意前提下'), ApiConst::refundTypeMoney=>array('id'=>ApiConst::refundTypeMoney,'name'=>"退款",'desc'=>'未收到货(包含未签收),或卖家协商同意前提下'),
......
...@@ -57,7 +57,28 @@ class Common ...@@ -57,7 +57,28 @@ class Common
return isset($httpStatusCodes[$num]) ? $httpStatusCodes[$num] : ''; return isset($httpStatusCodes[$num]) ? $httpStatusCodes[$num] : '';
} }
public static function isSerialized( $data ) {
$data = trim( $data );
if ( 'N;' == $data )
return true;
if ( !preg_match( '/^([adObis]):/', $data, $badions ) )
return false;
switch ( $badions[1] ) {
case 'a' :
case 'O' :
case 's' :
if ( preg_match( "/^{$badions[1]}:[0-9]+:.*[;}]\$/s", $data ) )
return true;
break;
case 'b' :
case 'i' :
case 'd' :
if ( preg_match( "/^{$badions[1]}:[0-9.E-]+;\$/", $data ) )
return true;
break;
}
return false;
}
/** /**
* 获取客户端IP * 获取客户端IP
* *
...@@ -101,6 +122,7 @@ class Common ...@@ -101,6 +122,7 @@ class Common
return $url; return $url;
} }
public static function is_https() { public static function is_https() {
if ( !empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off') { if ( !empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off') {
return true; return true;
...@@ -108,10 +130,12 @@ class Common ...@@ -108,10 +130,12 @@ class Common
return true; return true;
} elseif ( !empty($_SERVER['HTTP_FRONT_END_HTTPS']) && strtolower($_SERVER['HTTP_FRONT_END_HTTPS']) !== 'off') { } elseif ( !empty($_SERVER['HTTP_FRONT_END_HTTPS']) && strtolower($_SERVER['HTTP_FRONT_END_HTTPS']) !== 'off') {
return true; return true;
}elseif($_SERVER['SERVER_PORT'] == 89){
return true;
} }
return false; return false;
} }
/** /**
* 获取静态资源文件 * 获取静态资源文件
* *
......
...@@ -210,7 +210,8 @@ class Push ...@@ -210,7 +210,8 @@ class Push
if ($push['open']) { if ($push['open']) {
if(!empty($this->data)){ if(!empty($this->data)){
$message['data'] = $this->data; $message['data'] = $this->data;
$message['uid'] = $this->uid; $message['uid'] = !empty($this->uid)?$this->uid:ApiConst::zero;
// $message['data']=array_slice($message['data'],2,14);
$message = json_encode($message); $message = json_encode($message);
$message = $message . "\r\n"; $message = $message . "\r\n";
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
......
...@@ -67,6 +67,11 @@ class Pay { ...@@ -67,6 +67,11 @@ class Pay {
\Error\ErrorModel::throwException(\Error\CodeConfigModel::emptyOrderAmountForPay); \Error\ErrorModel::throwException(\Error\CodeConfigModel::emptyOrderAmountForPay);
} }
$orderInfo['orderAmount'] = $this->orderAmount; $orderInfo['orderAmount'] = $this->orderAmount;
if($this->channel == \Our\NameConst::wxLiteChannel){
$orderConfirmUtil = \Order\OrderConfirmUtil::getInstance();
$newPaySn = $orderConfirmUtil->makeNewPaySnForOrderWithOldPaySn($this->paySn,$this->memberId);
$this->paySn = $newPaySn;
}
$orderInfo['paySn'] = $this->paySn; $orderInfo['paySn'] = $this->paySn;
$orderInfo['orderSns'] = array_column($orderList,'order_sn'); $orderInfo['orderSns'] = array_column($orderList,'order_sn');
return $orderInfo; return $orderInfo;
......
...@@ -38,7 +38,7 @@ class WxLitePay extends \Payment\TencentPay{ ...@@ -38,7 +38,7 @@ class WxLitePay extends \Payment\TencentPay{
$wxApiObj["nonceStr"] = \Our\CommonExtension::createNoncestr(); $wxApiObj["nonceStr"] = \Our\CommonExtension::createNoncestr();
$wxApiObj['package'] = 'prepay_id='.$this->prepay_id; $wxApiObj['package'] = 'prepay_id='.$this->prepay_id;
$wxApiObj['signType'] = 'MD5'; $wxApiObj['signType'] = 'MD5';
$wxApiObj["paySign "] = $this->getSign($wxApiObj); $wxApiObj["paySign"] = $this->getSign($wxApiObj);
return $wxApiObj; return $wxApiObj;
} }
......
...@@ -8,32 +8,35 @@ namespace Payment; ...@@ -8,32 +8,35 @@ namespace Payment;
* Description: * Description:
*/ */
class WxPay extends \Payment\TencentPay{ class WxPay extends \Payment\TencentPay
{
public function __construct() private $refundUrl="https://api.mch.weixin.qq.com/secapi/pay/refund";
{ public function __construct()
$this->appid = \Our\PayConst::wxPayAppId; {
$this->notify_url = \Our\NameConst::httpPrefix.$_SERVER['SERVER_NAME'].\Our\PayConst::wxAppNotifyUrl; $this->appid = \Our\PayConst::wxPayAppId;
$this->mch_id = \Our\PayConst::wxPayMchId; $this->notify_url = \Our\NameConst::httpPrefix . $_SERVER['SERVER_NAME'] . \Our\PayConst::wxAppNotifyUrl;
$this->key = \Our\PayConst::wxPayKey; $this->mch_id = \Our\PayConst::wxPayMchId;
$this->sslcert_path = \Our\PayConst::wxSslcertPath; $this->key = \Our\PayConst::wxPayKey;
$this->sslkey_path = \Our\PayConst::wxSslkeyPath; $this->sslcert_path = \Our\PayConst::wxSslcertPath;
$this->pay_url = \Our\PayConst::wxPayUrl; $this->sslkey_path = \Our\PayConst::wxSslkeyPath;
$this->tradeType = \Our\PayConst::wxAppTradeType; $this->pay_url = \Our\PayConst::wxPayUrl;
} $this->tradeType = \Our\PayConst::wxAppTradeType;
}
public function doPay($orderInfo){ public function doPay($orderInfo)
{
$this->setRequestParams($orderInfo); $this->setRequestParams($orderInfo);
$wxAppParameters = $this->getParameters(); $wxAppParameters = $this->getParameters();
$returnData = array( $returnData = array(
'credential'=>array(\Our\NameConst::wxAppChannel=>$wxAppParameters), 'credential' => array(\Our\NameConst::wxAppChannel => $wxAppParameters),
'app_id'=>$this->appid 'app_id' => $this->appid
); );
return $returnData; return $returnData;
} }
/** /**
* 作用:设置APP支付的参数 * 作用:设置APP支付的参数
*/ */
public function getParameters() public function getParameters()
{ {
...@@ -48,6 +51,45 @@ class WxPay extends \Payment\TencentPay{ ...@@ -48,6 +51,45 @@ class WxPay extends \Payment\TencentPay{
return $wxApiObj; return $wxApiObj;
} }
/**
* 作用:产生随机字符串,不长于32位
*/
private function createNoncestr($length = 32)
{
$chars = "abcdefghijklmnopqrstuvwxyz0123456789";
$str = "";
for ($i = 0; $i < $length; $i++) {
$str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
}
return $str;
}
public function refund($param)
{
$total_fee = intval($param['totalFee']);
$refund_fee = intval($param['refundFee']);
if (APP_ENV == 'develop' || APP_ENV == 'test' || APP_ENV == 'pre') {
$this->parameters['total_fee'] = 1;
$this->parameters['refund_fee'] = 1;
} else {
$this->parameters['total_fee'] = $total_fee;
$this->parameters['refund_fee'] = $refund_fee;
}
$this->parameters['out_refund_no'] = $param['refund_order_no'];
$this->parameters['out_trade_no'] = $param['out_trade_no'];
$this->parameters['op_user_id'] = $this->mch_id;
$this->parameters['nonce_str'] = $this->createNoncestr(32);
$this->parameters['appid'] = \Our\PayConst::wxPayAppId;
$this->parameters['mch_id'] = \Our\PayConst::wxPayMchId;
$xml = $this->createXml();
$response = $this->postXmlSSLCurl($xml, $this->refundUrl, 6);
$values = $this->xmlToArray($response);
if ($values['return_code'] != 'SUCCESS') {
return $values;
}
$this->checkSign($values);
return $values;
}
/** /**
* 类实例 * 类实例
......
...@@ -38,9 +38,9 @@ class CartServiceModel extends \Business\AbstractModel{ ...@@ -38,9 +38,9 @@ class CartServiceModel extends \Business\AbstractModel{
$memberCartKey = \Our\NameConst::memberCartStorePrefix.$memberId; $memberCartKey = \Our\NameConst::memberCartStorePrefix.$memberId;
$cartRedis = \Redis\Db7\CartRedisModel::getInstance(); $cartRedis = \Redis\Db7\CartRedisModel::getInstance();
$cartRedis->tableDel($memberCartKey); $cartRedis->tableDel($memberCartKey);
$cartRedis = \Redis\Db7\CartRedisModel::getInstance();
foreach($cartArray['storeIds'] as $storeId){ foreach($cartArray['storeIds'] as $storeId){
$memberStoreCartsKey = \Our\NameConst::memberStoreCartsPrefix.$memberId.\Our\NameConst::underline.$storeId; $memberStoreCartsKey = \Our\NameConst::memberStoreCartsPrefix.$memberId.\Our\NameConst::underline.$storeId;
$cartRedis = \Redis\Db7\CartRedisModel::getInstance();
$cartRedis->tableDel($memberStoreCartsKey); $cartRedis->tableDel($memberStoreCartsKey);
} }
return $result; return $result;
...@@ -55,16 +55,21 @@ class CartServiceModel extends \Business\AbstractModel{ ...@@ -55,16 +55,21 @@ class CartServiceModel extends \Business\AbstractModel{
* @param $pBundlind * @param $pBundlind
*/ */
public function editCart($data,$cart,$memberId,$pBundlind=null){ public function editCart($data,$cart,$memberId,$pBundlind=null){
$this->validEditCart($data,$cart,$memberId,$pBundlind); $validReturnData = $this->validEditCart($data,$cart,$memberId,$pBundlind);
$cartDao = \DAO\Cart\CartModel::getInstance(\Our\DbNameConst::masterDBConnectName); $cartDao = \DAO\Cart\CartModel::getInstance(\Our\DbNameConst::masterDBConnectName);
$cartArray = $this->getFormattedCartDataForEdit($data,$cart,$memberId,$pBundlind); $cartArray = $this->getFormattedCartDataForEdit($data,$cart,$memberId,$pBundlind,$validReturnData);
$result = $cartDao->update($cartArray['cart'],array('cart_id'=>$cart['cart_id'])); $result = $cartDao->update($cartArray['newCarts'][0],array('cart_id'=>$data['cartId']));
if(!$result){ if(!$result){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::editCartFailed); \Error\ErrorModel::throwException(\Error\CodeConfigModel::editCartFailed);
} }
$memberStoreCartsKey = \Our\NameConst::memberStoreCartsPrefix.$memberId.\Our\NameConst::underline.$cartArray['cart']['store_id'];
$cartRedis = \Redis\Db7\CartRedisModel::getInstance(); $cartRedis = \Redis\Db7\CartRedisModel::getInstance();
$cartRedis->tableDel($memberStoreCartsKey); foreach($cartArray['storeIds'] as $storeId){
$memberStoreCartsKey = \Our\NameConst::memberStoreCartsPrefix.$memberId.\Our\NameConst::underline.$storeId;
$cartRedis->tableDel($memberStoreCartsKey);
}
/*$memberStoreCartsKey = \Our\NameConst::memberStoreCartsPrefix.$memberId.\Our\NameConst::underline.$cartArray['cart']['store_id'];
$cartRedis = \Redis\Db7\CartRedisModel::getInstance();
$cartRedis->tableDel($memberStoreCartsKey);*/
return $result; return $result;
} }
...@@ -148,13 +153,13 @@ class CartServiceModel extends \Business\AbstractModel{ ...@@ -148,13 +153,13 @@ class CartServiceModel extends \Business\AbstractModel{
* @return array * @return array
* @throws \Our\Exception * @throws \Our\Exception
*/ */
public function getFormattedCartDataForEdit($data,$cart,$memberId,$pBundling = null){ public function getFormattedCartDataForEdit($data,$cart,$memberId,$pBundling = null,$validReturnData){
if($cart['type'] == \Our\ApiConst::addGoodsToCart){ if($cart['type'] == \Our\ApiConst::addGoodsToCart){
$newCart = $this->getCommonGoodsCartData($data['goodsId'],$data['goodsNum'],$memberId); $newCart = $this->getCommonGoodsCartData($data['goodsId'],$data['goodsNum'],$memberId,$validReturnData);
}else if($cart['type'] == \Our\ApiConst::addBundingToCart){ }else if($cart['type'] == \Our\ApiConst::addBundingToCart){
$newCart = $this->getPBundlingGoodsCartData($data['goodsNum'],$memberId,$pBundling); $newCart = $this->getPBundlingGoodsCartData($data['goodsNum'],$memberId,$pBundling);
} }
return array('cart'=>$newCart); return $newCart;
} }
...@@ -358,6 +363,7 @@ class CartServiceModel extends \Business\AbstractModel{ ...@@ -358,6 +363,7 @@ class CartServiceModel extends \Business\AbstractModel{
if(!$goodsValidStatus){ if(!$goodsValidStatus){
\Error\ErrorModel::throwException($goodsDao->errorCode); \Error\ErrorModel::throwException($goodsDao->errorCode);
} }
return $goodsValidStatus;
}else if($cart['type'] == \Our\ApiConst::addBundingToCart){ }else if($cart['type'] == \Our\ApiConst::addBundingToCart){
if(!$pBundling){ if(!$pBundling){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::emptyCartBundling); \Error\ErrorModel::throwException(\Error\CodeConfigModel::emptyCartBundling);
...@@ -367,6 +373,7 @@ class CartServiceModel extends \Business\AbstractModel{ ...@@ -367,6 +373,7 @@ class CartServiceModel extends \Business\AbstractModel{
} }
$this->checkBundlingGoods($pBundling,$data['goodsNum'],true); $this->checkBundlingGoods($pBundling,$data['goodsNum'],true);
} }
return true;
} }
/** /**
......
...@@ -309,9 +309,9 @@ class CouponServiceModel extends \Business\AbstractModel{ ...@@ -309,9 +309,9 @@ class CouponServiceModel extends \Business\AbstractModel{
$couponTitles[] = $coupon['subTitle']; $couponTitles[] = $coupon['subTitle'];
} }
} }
return array('couponTitle'=>$couponTitles,'coupons'=>$couponList); return array('couponsTitle'=>$couponTitles,'coupons'=>$couponList);
}else{ }else{
return array('couponTitle'=>array(),'coupons'=>array()); return array('couponsTitle'=>array(),'coupons'=>array());
} }
} }
......
...@@ -1002,6 +1002,19 @@ class GoodsCommonServiceModel extends \Business\AbstractModel ...@@ -1002,6 +1002,19 @@ class GoodsCommonServiceModel extends \Business\AbstractModel
} }
return $goodsCommon['goods_price']; return $goodsCommon['goods_price'];
} }
/**
* 更新店铺销量
*/
public function updateStoreTopSaleGoods(){
$storeTopSaleGoodsDao = \DAO\Goods\StoreTopSaleGoodsModel::getInstance();
$storeGoodsList = $storeTopSaleGoodsDao->getSourceGoodsList();
$result = $storeTopSaleGoodsDao->insertAllOrUpdate($storeGoodsList);
return $result;
}
private static $_instance = null; private static $_instance = null;
/** /**
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
namespace Business\Order; namespace Business\Order;
use DAO\Order\OrderCommonModel;
use Error\CodeConfigModel; use Error\CodeConfigModel;
use Error\ErrorModel; use Error\ErrorModel;
use Order\OrderConfirmUtil; use Order\OrderConfirmUtil;
...@@ -23,14 +24,14 @@ use Our\Push; ...@@ -23,14 +24,14 @@ use Our\Push;
*/ */
class OrderServiceModel extends \Business\AbstractModel class OrderServiceModel extends \Business\AbstractModel
{ {
private $orderField = "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"; private $orderField = "order_id as orderId,order_sn as orderSn,store_name as storeName,evaluation_state as evaluationState,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";
private $orderGoodsField = "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,refund_state_name as refundStateName,refund_id as refundId"; private $orderGoodsField = "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,refund_state_name as refundStateName,refund_id as refundId";
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 $storeField = "offline_payway as offlinePayway"; private $storeField = "offline_payway as offlinePayway";
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 $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 $order; private $order;
...@@ -395,21 +396,24 @@ class OrderServiceModel extends \Business\AbstractModel ...@@ -395,21 +396,24 @@ class OrderServiceModel extends \Business\AbstractModel
file_put_contents($savePath, TIMESTAMP); file_put_contents($savePath, TIMESTAMP);
} }
public function changeOrderStateCancelUnconditional($orderInfo, $role, $user = '', $msg = '', $if_update_account = true, $if_quque = true) public function changeOrderStateCancelUnconditional($orderInfo)
{ {
echo 234234;exit;
$orderDao = \DAO\Order\OrderModel::getInstance(DbNameConst::masterDBConnectName); $orderDao = \DAO\Order\OrderModel::getInstance(DbNameConst::masterDBConnectName);
$refundReturnDao = \DAO\Order\RefundReturnModel::getInstance(DbNameConst::masterDBConnectName); $refundReturnDao = \DAO\Order\RefundReturnModel::getInstance(DbNameConst::masterDBConnectName);
//$orderGoodsDao=\DAO\Order\OrderGoodsModel::getInstance(); //$orderGoodsDao=\DAO\Order\OrderGoodsModel::getInstance();
// $orderGoods=$orderGoodsDao->getOrderGoodsByOrderIds($orderInfo['orderId']); // $orderGoods=$orderGoodsDao->getOrderGoodsByOrderIds($orderInfo['orderId']);
try { try {
$orderId = $orderInfo['orderId']; $orderId = $orderInfo['orderId'];
//更新订单信息 //更新订单信息
$updateData = array('order_state' => ORDER_STATE_CANCEL,'refund_amount'=>$orderInfo['orderAmount']); // $updateData = array('order_state' => ORDER_STATE_CANCEL,'refund_amount'=>$orderInfo['orderAmount']);
$update = $orderDao->update($updateData, array('order_id' => $orderId)); // $update = $orderDao->update($updateData, array('order_id' => $orderId));
$update=true;
if (!$update) { if (!$update) {
echo '订单:' . json_encode($orderInfo) . '关闭失败!!' . "\r\n"; echo '订单:' . json_encode($orderInfo) . '关闭失败!!' . "\r\n";
}else{ }else{
echo 2134234;exit;
$refundSn = $refundReturnDao->getRefundsn($orderInfo['storeId']); $refundSn = $refundReturnDao->getRefundsn($orderInfo['storeId']);
//生成退款记录 //生成退款记录
$update['order_id'] = $orderInfo['orderId']; $update['order_id'] = $orderInfo['orderId'];
...@@ -430,7 +434,9 @@ class OrderServiceModel extends \Business\AbstractModel ...@@ -430,7 +434,9 @@ class OrderServiceModel extends \Business\AbstractModel
$update['reason_info'] = '用户付款' . $waitDiff . '分钟内,店铺未接单,自动取消订单'; $update['reason_info'] = '用户付款' . $waitDiff . '分钟内,店铺未接单,自动取消订单';
$update['buyer_message'] = '用户付款' . $waitDiff. '分钟内,店铺未接单,自动取消订单'; $update['buyer_message'] = '用户付款' . $waitDiff. '分钟内,店铺未接单,自动取消订单';
$update['is_suc_refund'] = 1; $update['is_suc_refund'] = 1;
echo json_encode($update);exit;
$res = $refundReturnDao->add($update); $res = $refundReturnDao->add($update);
if (!$res) { if (!$res) {
echo '退款记录:' . json_encode($orderInfo) . '写入失败!!' . "\r\n"; echo '退款记录:' . json_encode($orderInfo) . '写入失败!!' . "\r\n";
}else{ }else{
...@@ -439,28 +445,24 @@ class OrderServiceModel extends \Business\AbstractModel ...@@ -439,28 +445,24 @@ class OrderServiceModel extends \Business\AbstractModel
$param['totalFee'] = $orderInfo['orderAmount']; $param['totalFee'] = $orderInfo['orderAmount'];
$param['refundFee'] = $orderInfo['orderAmount'];//全额退款 $param['refundFee'] = $orderInfo['orderAmount'];//全额退款
$param['storeId']=$orderInfo['storeId']; $param['storeId']=$orderInfo['storeId'];
if (intval($orderInfo['paymentType']) == ApiConst::wxAppPayType) { if (intval($orderInfo['paymentType']) == ApiConst::wxAppPayType) {
require_once(BASE_ROOT_PATH . '/qmmobile/api/payment/wxpay/wxpay.php'); //加载 退款模块 $wxpay = \Payment\WxPay::getInstance();
$wxpay = new wxpay();
$refund_return = $wxpay->refund($param); $refund_return = $wxpay->refund($param);
Log::record(json_encode($refund_return)); echo json_encode($refund_return);
if (!($refund_return['return_code'] == 'SUCCESS' && $refund_return['result_code'] == 'SUCCESS')) { if (!($refund_return['return_code'] == 'SUCCESS' && $refund_return['result_code'] == 'SUCCESS')) {
throw new Exception('微信退款操作执行失败!'); throw new Exception('微信退款操作执行失败!');
} }
} else if (intval($orderInfo['paymentType']) == ApiConst::aliPayType) { } else if (intval($orderInfo['paymentType']) == ApiConst::aliPayType) {
$aliPay=\Payment\Alipay::getInstance(); $aliPay=\Payment\Alipay::getInstance();
$return = $aliPay->refund($param); $return = $aliPay->refund($param);
echo json_encode($return);
$resultCode = $return->code; $resultCode = $return->code;
if(!empty($resultCode)&&$resultCode == 10000){ if(!empty($resultCode)&&$resultCode == 10000){
return true; return true;
} else { } else {
return false; 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)) { if (!($resultCode && $resultCode == 10000)) {
throw new Exception('支付宝退款操作执行失败!'); throw new Exception('支付宝退款操作执行失败!');
} }
...@@ -484,25 +486,41 @@ class OrderServiceModel extends \Business\AbstractModel ...@@ -484,25 +486,41 @@ class OrderServiceModel extends \Business\AbstractModel
{ {
$orderDao = \DAO\Order\OrderModel::getInstance(DbNameConst::masterDBConnectName); $orderDao = \DAO\Order\OrderModel::getInstance(DbNameConst::masterDBConnectName);
$orderGoodsDao = \DAO\Order\OrderGoodsModel::getInstance(DbNameConst::masterDBConnectName); $orderGoodsDao = \DAO\Order\OrderGoodsModel::getInstance(DbNameConst::masterDBConnectName);
$orderGoodsCommon = \DAO\Order\OrderCommonModel::getInstance(DbNameConst::masterDBConnectName); $orderConfirmUtilDao=OrderConfirmUtil::getInstance(DbNameConst::masterDBConnectName);
$beginTime = file_get_contents($this->baseDir . \Our\PathConst::orderCloseWaitRecieveOrder, TIMESTAMP); $beginTime = file_get_contents($this->baseDir . \Our\PathConst::orderCloseWaitRecieveOrder, TIMESTAMP);
$beginTime = $beginTime ? $beginTime : ApiConst::zero; $beginTime = $beginTime ? $beginTime : ApiConst::zero;
$endTime = TIMESTAMP - ApiConst::orderStateWaitConfirmBeyond; $endTime = TIMESTAMP - ApiConst::orderStateWaitConfirmBeyond;
$orders = $orderDao->getMustCecelRecieveOrders(ApiConst::orderStateWaitConfirm, $beginTime, $endTime, $this->orderMessageField); $orders = $orderDao->getMustCecelRecieveOrders($beginTime, $endTime, $orderDao->getOrderDetailField());
if (!empty($orders)) { if (!empty($orders)) {
$orderIds = array_column($orders, 'orderId'); $orderIds = array_column($orders, 'orderId');
$orderGoods = $orderGoodsDao->getOrderGoodsByOrderIds($orderIds, $this->getGoodsDetailField()); $orderGoods = $orderGoodsDao->getOrderGoodsByOrderIds($orderIds, $this->getGoodsDetailField());
$orderGoodsCommon->updateGoodsStorage($orderGoods); foreach ($orders as $order) {
//$res = $orderDao->updateNotRecieveOrders(ApiConst::orderStateWaitConfirm, ApiConst::orderStateClose, 'add_time', ApiConst::orderStateWaitConfirmBeyond, $this->orderMessageField); $orderDao->deleteOrderCache($order['buyerId'], $order['orderId'], $order['storeId']);
foreach ($orders as $order) { if ($order['paymentTime'] > ApiConst::zero && in_array($orders['paymentType'], ArrayConst::orderPayTypeOnlines)) {
$orderDao->deleteOrderCache($order['buyerId'], $order['orderId'], $order['storeId']); $this->changeOrderStateCancelUnconditional($order);
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 = Push::getInstance();
$push->pushOrderCloseMessage($orders); $push->pushOrderCloseMessage($orders);
$storeCartsList=array();
$storeCarts=array();
$storeCarts['storeCarts']=array();
foreach($orderGoods as $orderGood){
$orderGood['type']=!empty($orderGood['goodsGroup'])? \Our\ApiConst::addBundingToCart:\Our\ApiConst::addGoodsToCart;
$orderGood['goodsNum']=-$orderGood['goodsNum'];
$orderGood['goodsList']=\Our\Common::isSerialized($orderGood['goodsGroup'])?unserialize($orderGood['goodsGroup']):array();
array_push($storeCarts['storeCarts'],$orderGood);
}
if(!empty($storeCarts['storeCarts'])){
array_push($storeCartsList,$storeCarts);
}
// $orderDao->updateNotRecieveOrders(ApiConst::orderStateWaitConfirm, ApiConst::orderStateClose, 'add_time', ApiConst::orderStateWaitConfirmBeyond, $this->orderMessageField);
try{
$orderConfirmUtilDao->updateGoodsStorage($storeCartsList);
}catch(\Exception $ex){
throw new \Exception('商品库存更新失败:'.$ex->getMessage(),$ex->getCode());
}
} }
} }
...@@ -791,12 +809,15 @@ class OrderServiceModel extends \Business\AbstractModel ...@@ -791,12 +809,15 @@ class OrderServiceModel extends \Business\AbstractModel
$orderIds[] = $order['order_id']; $orderIds[] = $order['order_id'];
} }
$return['orderState'] = $orderState; $return['orderState'] = $orderState;
/*$return['paySn'] = $data['paySn']; if(isset($data['wxLitePayFlag'])&&$data['wxLitePayFlag']==\Our\ApiConst::one){
if(!$orderState){ $return['paySn'] = $data['paySn'];
$orderConfirmUtil = \Order\OrderConfirmUtil::getInstance(); if(!$orderState){
$paySn = $orderConfirmUtil->makeNewPaySnForOrderWithOldPaySn($data['paySn'],$memberId); $orderConfirmUtil = \Order\OrderConfirmUtil::getInstance();
$return['paySn'] = $paySn; $paySn = $orderConfirmUtil->makeNewPaySnForOrderWithOldPaySn($data['paySn'],$memberId);
}*/ $return['paySn'] = $paySn;
}
}
$return['orderNos'] = $orderNos; $return['orderNos'] = $orderNos;
$return['totalOrderAmount'] = $totalOrderAmount; $return['totalOrderAmount'] = $totalOrderAmount;
$return['orderTips'] = $orderTips; $return['orderTips'] = $orderTips;
......
...@@ -37,11 +37,12 @@ class AddressServiceModel extends \Business\AbstractModel { ...@@ -37,11 +37,12 @@ class AddressServiceModel extends \Business\AbstractModel {
\Our\RedisHelper::delCachedFunction(\Redis\Db8\AddressRedisModel::getInstance(),array(&$addressDao, 'findByWhereWithColumns'),array(),array($addressId)); \Our\RedisHelper::delCachedFunction(\Redis\Db8\AddressRedisModel::getInstance(),array(&$addressDao, 'findByWhereWithColumns'),array(),array($addressId));
}else{ }else{
$result = $addressDao->insert($address); $result = $addressDao->insert($address);
$addressId = $result;
} }
if($result){ if($result){
\Our\RedisHelper::delCachedFunction(\Redis\Db8\AddressRedisModel::getInstance(),array(&$addressDao, 'selectByWhere'),array(),array($memberId)); \Our\RedisHelper::delCachedFunction(\Redis\Db8\AddressRedisModel::getInstance(),array(&$addressDao, 'selectByWhere'),array(),array($memberId));
} }
return $result; return $addressId;
} }
/** /**
......
...@@ -111,7 +111,7 @@ class GoodsModel extends \DAO\AbstractModel { ...@@ -111,7 +111,7 @@ class GoodsModel extends \DAO\AbstractModel {
$this->errorCode = \Error\CodeConfigModel::noStorageForCart; $this->errorCode = \Error\CodeConfigModel::noStorageForCart;
return false; return false;
} }
return true; return $goods;
} }
/** /**
......
...@@ -63,6 +63,57 @@ class StoreTopSaleGoodsModel extends \DAO\AbstractModel{ ...@@ -63,6 +63,57 @@ class StoreTopSaleGoodsModel extends \DAO\AbstractModel{
} }
return false; return false;
} }
/**
* @return mixed
*/
public function getSourceGoodsList(){
$sql = 'SELECT a.store_id,a.goods_commonid,IFNULL(a.evaluation_score/a.evaluation_number,'.\Our\ApiConst::defaultGoodsScore.') as goods_score,a.group_id as rank,a.goods_name,a.goods_image
FROM
(
SELECT t1.*,t2.evaluation_score,t2.evaluation_number,(SELECT COUNT(*)+1 FROM han_goods_common WHERE store_id=t1.store_id AND sale_num>t1.sale_num) AS group_id
FROM han_goods_common t1
LEFT JOIN han_goods_score_statistics t2
on t1.goods_commonid = t2.goods_commonid
) a
WHERE a.group_id<=3 AND a.sale_num>0 and a.goods_state=1 and a.goods_verify=1 ORDER BY a.store_id ,a.group_id';
$list = $this->db->query($sql)->fetchAll();
return $list;
}
public function insertAllOrUpdate($datas){
$this->setDb(\Our\DbNameConst::masterDBConnectName);
$error = 0;
$baseSql = "insert into {$this->_tableName}(store_id,goods_commonid,goods_score,rank,goods_name,goods_image) values";
$insertAllSql = $baseSql;
for ($i = 0; $i < count($datas); $i++) {
$addSql = \Our\Common::format("({0},{1},{2},{3},{4},{5}),", $datas[$i]['store_id'],$datas[$i]['goods_commonid'], $datas[$i]['goods_score'], $datas[$i]['rank'],$datas[$i]['goods_name'],$datas[$i]['goods_image']);
$insertAllSql .= $addSql;
if ($i % 1000 == 0 && $i != 0) {
$insertAllSql = rtrim($insertAllSql, ',');
$insertAllSql .= 'ON DUPLICATE KEY UPDATE goods_commonid = VALUES(goods_commonid),goods_score=VALUES(goods_score),goods_name=VALUES(goods_name),goods_image=VALUES(goods_image)';
$one = $this->db->insert()->query($insertAllSql);
if ($one === false) {
$error++;
}
$insertAllSql = $baseSql;
}
}
if ($insertAllSql != $baseSql) {
$insertAllSql = rtrim($insertAllSql, ',');
$insertAllSql .= 'ON DUPLICATE KEY UPDATE goods_commonid = VALUES(goods_commonid),goods_score=VALUES(goods_score),goods_name=VALUES(goods_name),goods_image=VALUES(goods_image)';
$one = $this->db->insert($this->_tableName)->query($insertAllSql);
if ($one === false) {
$error++;
}
}
if ($error > 0) {
return false;
}
return true;
}
/** /**
* 类实例 * 类实例
* *
......
...@@ -45,7 +45,7 @@ class OrderModel extends \DAO\AbstractModel ...@@ -45,7 +45,7 @@ class OrderModel extends \DAO\AbstractModel
public function getOrderDetailField() public function getOrderDetailField()
{ {
return 'order_id as orderId,coupon_id as couponId,refund_amount as refundAmount,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,payment_time as paymentTime,finnshed_time as finnshedTime,need_shipping_fee as needShippingFee,payment_code as paymentCode,buyer_id as buyerId,buyer_name as buyerName,refund_condition as refundCondition'; return 'order_id as orderId,coupon_id as couponId,refund_amount as refundAmount,order_sn as orderSn,pay_sn as paySn,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,payment_time as paymentTime,finnshed_time as finnshedTime,need_shipping_fee as needShippingFee,payment_code as paymentCode,buyer_id as buyerId,buyer_name as buyerName,refund_condition as refundCondition';
} }
public function getOrderShippingField() public function getOrderShippingField()
......
<?php <?php
function is_https() {
if ( !empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off') {
return true;
} elseif ( isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https' ) {
return true;
} elseif ( !empty($_SERVER['HTTP_FRONT_END_HTTPS']) && strtolower($_SERVER['HTTP_FRONT_END_HTTPS']) !== 'off') {
return true;
}elseif($_SERVER['SERVER_PORT'] == 89){
return true;
}
return false;
}
$res=is_https();
if($res){
echo 1;
}else{
echo 2;
}
exit;
function getSortArr($sortArray){ function getSortArr($sortArray){
ksort($sortArray); ksort($sortArray);
$str=''; $str='';
......
...@@ -162,7 +162,8 @@ abstract class BaseCli ...@@ -162,7 +162,8 @@ abstract class BaseCli
protected function _getBaseFileName($path) protected function _getBaseFileName($path)
{ {
return dirname(__FILE__).DS.$path.DS.'locks'; $locksPath=\Our\Common::getConfig('out.locks');
return $locksPath.DS.$path.DS.'locks';
} }
......
<?php
/**
* Created by PhpStorm.
* User: liuyu
* Date: 2018/9/1
* Time: 20:06
*/
define("APPLICATION_PATH", realpath(dirname(__FILE__) . '/../../../')); //指向public的上一级
require APPLICATION_PATH . '/scripts/crontab/baseCli.php';
require APPLICATION_PATH . '/scripts/crontab/common.php';
error_reporting(E_ALL ^ E_NOTICE);
class cliStoreTopSaleGoods extends basecli
{
const CLI_ADMIN_ID = 255;
private $bDoUnLock = FALSE; // 是否允许释放 LOCK 文件
private $_debug = 0;
private $lockFileName;
private $fromState;
private function mkdirs($dir, $mode = 0777)
{
if (is_dir($dir) || @mkdir($dir, $mode)){
return TRUE;
}
if (!$this->mkdirs(dirname($dir), $mode)){
return FALSE;
}
return @mkdir($dir, $mode);
}
/**
* 析构
*/
public function __destruct()
{
parent::__destruct();
if ($this->bDoUnLock)
{
@unlink($this->lockFileName);
}
}
protected function updateStoreTopSaleGoods(){
\Business\Goods\GoodsCommonServiceModel::getInstance()->updateStoreTopSaleGoods();
}
protected function _runCli()
{
$this->_debug = isset($this->aArgv[1]) ? intval($this->aArgv[1]) : 0;
if ($this->_debug)
{
echo "*** Debug mode ***\n";
}
// Step: 02 检查是否已有相同CLI在运行中
$lockDir=$this->_getBaseFileName('StoreTopSaleGoods');
if(!$this->mkdirs($lockDir)){
echo '****create dir fail ****';
exit;
}
$this->lockFileName = $lockDir .'.locks';
if( file_exists( $this->lockFileName ) )
{
$stat = stat($this->lockFileName);
if( (TIMESTAMP - $stat['mtime']) > 24*60*60*2 )
{
echo "文件被锁超过2天,被强制删除";
@unlink($this->lockFileName);
}
else
{
$this->halt( '[' . date('Y-m-d H:i:s') .'] The CLI is running'."\n");
}
}
$this->bDoUnLock = true;
file_put_contents($this->lockFileName ,"running" ); // CLI 独占锁
$this->updateStoreTopSaleGoods();
echo '首页热销商品更新成功'."\r\n";
}
}
$oCli = new cliStoreTopSaleGoods(TRUE);
EXIT;
?>
\ No newline at end of file
...@@ -56,12 +56,12 @@ class cliOrderClose extends basecli ...@@ -56,12 +56,12 @@ class cliOrderClose extends basecli
echo "*** Debug mode ***\n"; echo "*** Debug mode ***\n";
} }
// Step: 02 检查是否已有相同CLI在运行中 // Step: 02 检查是否已有相同CLI在运行中
$lockDir=$this->_getBaseFileName('orderClose'); $lockDir=$this->_getBaseFileName('order');
if(!$this->mkdirs($lockDir)){ if(!$this->mkdirs($lockDir)){
echo '****create dir fail ****'; echo '****create dir fail ****';
exit; exit;
} }
$this->lockFileName = $lockDir .'.locks'; $this->lockFileName = $lockDir .DS.'close.locks';
if( file_exists( $this->lockFileName ) ) if( file_exists( $this->lockFileName ) )
{ {
$stat = stat($this->lockFileName); $stat = stat($this->lockFileName);
...@@ -76,7 +76,9 @@ class cliOrderClose extends basecli ...@@ -76,7 +76,9 @@ class cliOrderClose extends basecli
} }
} }
$this->bDoUnLock = true; $this->bDoUnLock = true;
file_put_contents($this->lockFileName ,"running" ); // CLI 独占锁 if(APP_ENV =='pre' || APP_ENV=='product'){
file_put_contents($this->lockFileName ,"running" ); // CLI 独占锁
}
$this->autoCloseOrder(); $this->autoCloseOrder();
echo '定单关闭消息发送成功'."\r\n"; echo '定单关闭消息发送成功'."\r\n";
......
...@@ -187,8 +187,13 @@ $tcp_server->on('connect', function($serv, $fd) use($conf){ ...@@ -187,8 +187,13 @@ $tcp_server->on('connect', function($serv, $fd) use($conf){
* 4. 按照用户类型(channel)推送 * 4. 按照用户类型(channel)推送
*/ */
$tcp_server->on('receive', function($serv, $fd, $from_id, $data) use($conf) { $tcp_server->on('receive', function($serv, $fd, $from_id, $data) use($conf) {
// echo $data;
$data = json_decode($data, true); $data = json_decode($data, true);
if(empty($data['data']) && !isset($data['data'])) return; if(empty($data['data']) && !isset($data['data'])){
$serv->send($fd, responseJson(1,"fail", ['method' => 'receive', 'error_code' => 1, 'status' => 0]));
$serv->close($fd);
return;
}
$s = json_encode($data['data']); $s = json_encode($data['data']);
echo $s; echo $s;
// 推送 存入redis、最后入库(MySQL) // 推送 存入redis、最后入库(MySQL)
......
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