Commit 9357d0e9 authored by wwccw0591's avatar wwccw0591

pc

parent 37b9ca43
...@@ -18,7 +18,8 @@ class OrderController extends \Our\Controller_AbstractApi { ...@@ -18,7 +18,8 @@ class OrderController extends \Our\Controller_AbstractApi {
}else{ }else{
$orderState=false; $orderState=false;
} }
$orders=$orderService->getList($this->memberId,$pageIndex,$pageSize,$orderState); $keyword=$this->req[\Our\NameConst::data]['keyword']?$this->req[\Our\NameConst::data]['keyword']:FAlSE;
$orders=$orderService->getList($this->memberId,$keyword,$pageIndex,$pageSize,$orderState);
$this->success($orders); $this->success($orders);
} }
......
...@@ -360,6 +360,7 @@ class ApiConst ...@@ -360,6 +360,7 @@ class ApiConst
const messageButtonIdOne = 1; const messageButtonIdOne = 1;
const messageButtonIdTwo = 2; const messageButtonIdTwo = 2;
const commonProblemArticleClassId = 18;//常见问题对应文章分类ID const commonProblemArticleClassId = 18;//常见问题对应文章分类ID
//订单列表索引 因子
const orderIndexRank=1000;
} }
\ No newline at end of file
...@@ -12,6 +12,7 @@ class NameConst { ...@@ -12,6 +12,7 @@ class NameConst {
* 登录session_key * 登录session_key
* @var string * @var string
*/ */
const ordersIndex='orders';
const sessionKey = 'key'; const sessionKey = 'key';
const data='data'; const data='data';
const mobile='mobile'; const mobile='mobile';
......
...@@ -54,26 +54,61 @@ class OrderServiceModel extends \Business\AbstractModel ...@@ -54,26 +54,61 @@ class OrderServiceModel extends \Business\AbstractModel
{ {
return $this->orderGoodsField . ',goods_commonid as goodsCommonid,goods_group as goodsGroup'; return $this->orderGoodsField . ',goods_commonid as goodsCommonid,goods_group as goodsGroup';
} }
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));
$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;
//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);
}
return $where;
}
/** /**
* 订单,获得订单列表 * 订单,获得订单列表
* *
* @date 2018-5-15 * @date 2018-5-15
* @author ccw * @author ccw
*/ */
public function getList($memberId, $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); $orderDao = \DAO\Order\OrderModel::getInstance(DbNameConst::salveDBConnectName);
$orderGoodsDao = \DAO\Order\OrderGoodsModel::getInstance(DbNameConst::salveDBConnectName); $orderGoodsDao = \DAO\Order\OrderGoodsModel::getInstance(DbNameConst::salveDBConnectName);
$goodsDao = \DAO\GoodsModel::getInstance(DbNameConst::salveDBConnectName); $goodsDao = \DAO\GoodsModel::getInstance(DbNameConst::salveDBConnectName);
$refundReturnDao = \DAO\Order\RefundReturnModel::getInstance(DbNameConst::salveDBConnectName); $refundReturnDao = \DAO\Order\RefundReturnModel::getInstance(DbNameConst::salveDBConnectName);
if($keyWord!==false){
$where=$this->getOrderIndexWhere($memberId,$keyWord,$pageIndex,$pageSize);
}else{
$where['delete_state'] = ApiConst::undeleteOrder; $where['delete_state'] = ApiConst::undeleteOrder;
$where['buyer_id'] = $memberId; $where['buyer_id'] = $memberId;
//$where['lock_state'] = ApiConst::zero; //$where['lock_state'] = ApiConst::zero;
if ($orderState != false) { if ($orderState != false) {
$where['order_state'] = array('in', explode(',', $orderState)); $where['order_state'] = array('in', explode(',', $orderState));
} }
}
//获得订单列表 //获得订单列表
$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)); $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));
if (!empty($orders['list'])) { if (!empty($orders['list'])) {
......
...@@ -12,6 +12,7 @@ use Our\ApiConst; ...@@ -12,6 +12,7 @@ use Our\ApiConst;
use Our\Common; use Our\Common;
use Our\DbNameConst; use Our\DbNameConst;
use Our\ImageConst; use Our\ImageConst;
use Our\NameConst;
use Our\PageConst; use Our\PageConst;
use Our\PathConst; use Our\PathConst;
...@@ -38,7 +39,7 @@ class ShopkeeperServiceModel extends \Business\AbstractModel ...@@ -38,7 +39,7 @@ class ShopkeeperServiceModel extends \Business\AbstractModel
$this->storeDao = StoreModel::getInstance(); $this->storeDao = StoreModel::getInstance();
} }
private $orderListField = 'han_order.order_id as orderId,han_order.order_sn as orderSn,han_order.store_name as storeName,han_order.add_time as addTime,han_order.store_id as storeId,han_order.goods_amount as goodsAmount,han_order.shipping_fee as shippingFee,han_order.order_amount as orderAmount,han_order.shipping_type as shippingType,han_order.payment_type as paymentType,han_order.order_state as orderState,han_order.shipping_fee as shippingFee,han_order.refund_state as refundState,han_order.order_type as orderType,han_order.is_receive_payment as isReceivePayment,han_order_common.order_message as orderMessage'; private $orderListField = 'han_order.order_id as orderId,han_order.order_sn as orderSn,han_order.delete_state as deleteState,han_order.buyer_id as buyerId,han_order.store_name as storeName,han_order.add_time as addTime,han_order.store_id as storeId,han_order.goods_amount as goodsAmount,han_order.shipping_fee as shippingFee,han_order.order_amount as orderAmount,han_order.shipping_type as shippingType,han_order.payment_type as paymentType,han_order.order_state as orderState,han_order.shipping_fee as shippingFee,han_order.refund_state as refundState,han_order.order_type as orderType,han_order.is_receive_payment as isReceivePayment,han_order_common.order_message as orderMessage';
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"; 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";
private $storeField = "offline_payway as offlinePayway"; private $storeField = "offline_payway as offlinePayway";
...@@ -54,8 +55,8 @@ class ShopkeeperServiceModel extends \Business\AbstractModel ...@@ -54,8 +55,8 @@ class ShopkeeperServiceModel extends \Business\AbstractModel
//获取店铺数据统计 //获取店铺数据统计
$storeStats = $storeStatisticsDao->find($condition); $storeStats = $storeStatisticsDao->find($condition);
//获取店铺今日销售额和订单量 //获取店铺今日销售额和订单量
$today=date('Y-m-d',TIMESTAMP); $today = date('Y-m-d', TIMESTAMP);
$storeTodayStats = $storeStatisticsDayDao->getByStoreIdAndGmtCreate($storeId,$today); $storeTodayStats = $storeStatisticsDayDao->getByStoreIdAndGmtCreate($storeId, $today);
$data['storeId'] = $store['store_id']; $data['storeId'] = $store['store_id'];
$data['storeName'] = $store['store_name']; $data['storeName'] = $store['store_name'];
$data['storeLabel'] = $store['store_label']; $data['storeLabel'] = $store['store_label'];
...@@ -251,20 +252,12 @@ class ShopkeeperServiceModel extends \Business\AbstractModel ...@@ -251,20 +252,12 @@ class ShopkeeperServiceModel extends \Business\AbstractModel
return $data; return $data;
} }
public function getOrders($memberId, $pageIndex, $pageSize, $orderState, $keyword) public function getRetrunDatas($where, $pageIndex, $pageSize)
{ {
$storeId = $this->_getStoreByMemberId($memberId);
$where = 'han_order.store_id=' . $storeId;
if (!empty($orderState)) {
$where .= ' and han_order.order_state=' . $orderState;
}
if (!empty($keyword)) {
$where .= " and (han_order.order_sn like '%" . $keyword ."%')";
}
$orderGoodsDao = \DAO\Order\OrderGoodsModel::getInstance(); $orderGoodsDao = \DAO\Order\OrderGoodsModel::getInstance();
$orderDao = \DAO\Order\OrderModel::getInstance(); $orderDao = \DAO\Order\OrderModel::getInstance();
$goodsDao = \DAO\GoodsModel::getInstance(); $goodsDao = \DAO\GoodsModel::getInstance();
$returnData = $orderDao->getOrders($where, $this->orderListField, $pageIndex, $pageSize); $returnData = $orderDao->getOrders($where,$this->orderListField,$pageIndex,$pageSize);
$orders = $returnData['orders']; $orders = $returnData['orders'];
if (!empty($orders)) { if (!empty($orders)) {
$orderIds = array_column($orders, 'orderId'); $orderIds = array_column($orders, 'orderId');
...@@ -294,6 +287,50 @@ class ShopkeeperServiceModel extends \Business\AbstractModel ...@@ -294,6 +287,50 @@ class ShopkeeperServiceModel extends \Business\AbstractModel
} else { } else {
$returnData = new \stdClass(); $returnData = new \stdClass();
} }
return $returnData;
}
public function getOrders($memberId, $pageIndex, $pageSize, $orderState, $keyword)
{
$storeId = $this->_getStoreByMemberId($memberId);
// 'query' => array('bool'=>array('should' => $where)),
$allQuery=array();
$allQuery['bool']=array();
if(!empty($keyword)){
$query1[]= array('match' => array('storeId' => $storeId));
$query1[]= array('match' => array('goodsName' => $keyword));
// $where['storeId']=$storeId;
if(!empty($orderState)){
$query1[]= array('match' => array('orderState' => $orderState));
}
$res2=array('must'=>$query1);
$allQuery['bool']=$res2;
//array_push($allQuery['bool'],$res2);
// echo json_encode($allQuery);exit;
// echo json_encode($allQuery);exit;
$elasticTool=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.store_id={0} and (han_order.order_id in({1}) or han_order.order_sn like '%{2}%')",$storeId,$orderIds,$keyword);
}else{
$where=Common::format(" han_order.store_id={0} and han_order.order_sn like '%{1}%'",$storeId,$keyword);
}
}else{
$where = 'han_order.store_id=' . $storeId;
if (!empty($orderState)) {
$where .= ' and han_order.order_state=' . $orderState;
}
}
if(!empty($where)){
$returnData = $this->getRetrunDatas($where, $pageIndex, $pageSize);
}else{
$returnData=new \stdClass();
}
return $returnData; return $returnData;
} }
...@@ -393,9 +430,9 @@ class ShopkeeperServiceModel extends \Business\AbstractModel ...@@ -393,9 +430,9 @@ class ShopkeeperServiceModel extends \Business\AbstractModel
public function getOrderTotal() public function getOrderTotal()
{ {
$orderDao = \DAO\Order\OrderModel::getInstance(DbNameConst::salveDBConnectName); $orderDao = \DAO\Order\OrderModel::getInstance(DbNameConst::salveDBConnectName);
$res = file_get_contents($this->baseDir .PathConst::orderPaymentTimeConf); $res = file_get_contents($this->baseDir . PathConst::orderPaymentTimeConf);
$this->lastOrderId = !empty($res) ? $res : ApiConst::zero; $this->lastOrderId = !empty($res) ? $res : ApiConst::zero;
$where=Common::format(" add_time > {0} and add_time <={1}",$this->lastOrderId,TIMESTAMP); $where = Common::format(" add_time > {0} and add_time <={1}", $this->lastOrderId, TIMESTAMP);
$res = $orderDao->getAllByWhere($where, $orderDao->getOrderDetailField()); $res = $orderDao->getAllByWhere($where, $orderDao->getOrderDetailField());
$results = array(); $results = array();
if (!empty($res)) { if (!empty($res)) {
...@@ -418,7 +455,7 @@ class ShopkeeperServiceModel extends \Business\AbstractModel ...@@ -418,7 +455,7 @@ class ShopkeeperServiceModel extends \Business\AbstractModel
$favoritesStoreDao = \DAO\FavoritesStoreModel::getInstance(); $favoritesStoreDao = \DAO\FavoritesStoreModel::getInstance();
$res = file_get_contents($this->baseDir . PathConst::favoritesStoreFavTimeConf); $res = file_get_contents($this->baseDir . PathConst::favoritesStoreFavTimeConf);
$this->lastFavId = !empty($res) ? $res : ApiConst::zero; $this->lastFavId = !empty($res) ? $res : ApiConst::zero;
$where =Common::format("fav_time >={0} and fav_time <{1}",$this->lastFavId,TIMESTAMP); $where = Common::format("fav_time >={0} and fav_time <{1}", $this->lastFavId, TIMESTAMP);
$res = $favoritesStoreDao->getAllByWhere($where, $favoritesStoreDao->favoriteMemberCountField); $res = $favoritesStoreDao->getAllByWhere($where, $favoritesStoreDao->favoriteMemberCountField);
$results = array(); $results = array();
if (!empty($res)) { if (!empty($res)) {
...@@ -433,119 +470,100 @@ class ShopkeeperServiceModel extends \Business\AbstractModel ...@@ -433,119 +470,100 @@ class ShopkeeperServiceModel extends \Business\AbstractModel
} }
return $results; return $results;
} }
//任务脚本 //任务脚本
public function insertStoreMemberStatics() public function insertStoreMemberStatics()
{ {
$orderGoodDao=\DAO\Order\OrderGoodsModel::getInstance(DbNameConst::salveDBConnectName); $orderGoodDao = \DAO\Order\OrderGoodsModel::getInstance(DbNameConst::salveDBConnectName);
$storeMemberStatisticDao=\DAO\StoreMemberStatisticsModel::getInstance(DbNameConst::masterDBConnectName); $storeMemberStatisticDao = \DAO\StoreMemberStatisticsModel::getInstance(DbNameConst::masterDBConnectName);
$gmtCreate = file_get_contents($this->baseDir . PathConst::orderGoodsCreateTime); $gmtCreate = file_get_contents($this->baseDir . PathConst::orderGoodsCreateTime);
$gmtCreate = $gmtCreate?$gmtCreate:ApiConst::zero; $gmtCreate = $gmtCreate ? $gmtCreate : ApiConst::zero;
$beginTime=$gmtCreate; $beginTime = $gmtCreate;
$this->taskIndex=PageConst::taskPageBegin; $this->taskIndex = PageConst::taskPageBegin;
$this->taskSize=PageConst::taskPageSize; $this->taskSize = PageConst::taskPageSize;
do{ do {
$addDatas=array(); $addDatas = array();
$storeMemberStatisticData= $orderGoodDao->getMemberStoreStaticsByCreateTime($beginTime,$this->taskIndex,$this->taskSize); $storeMemberStatisticData = $orderGoodDao->getMemberStoreStaticsByCreateTime($beginTime, $this->taskIndex, $this->taskSize);
$storeMemberStatisticData=isset($storeMemberStatisticData['list'])?$storeMemberStatisticData['list']:false; $storeMemberStatisticData = isset($storeMemberStatisticData['list']) ? $storeMemberStatisticData['list'] : false;
if($storeMemberStatisticData){ if ($storeMemberStatisticData) {
$this->taskIndex++; $this->taskIndex++;
foreach($storeMemberStatisticData as $value){ foreach ($storeMemberStatisticData as $value) {
$addDatas[$value['buyerId'].'-'.$value['storeId']]['storeId']=$value['storeId']; $addDatas[$value['buyerId'] . '-' . $value['storeId']]['storeId'] = $value['storeId'];
$addDatas[$value['buyerId'].'-'.$value['storeId']]['memberId']=$value['buyerId']; $addDatas[$value['buyerId'] . '-' . $value['storeId']]['memberId'] = $value['buyerId'];
if(isset($addDatas[$value['buyerId'].'-'.$value['storeId']]['orderGoodsCount'])){ if (isset($addDatas[$value['buyerId'] . '-' . $value['storeId']]['orderGoodsCount'])) {
$addDatas[$value['buyerId'].'-'.$value['storeId']]['orderGoodsCount']+=$value['goodsNum']; $addDatas[$value['buyerId'] . '-' . $value['storeId']]['orderGoodsCount'] += $value['goodsNum'];
}else{ } else {
$addDatas[$value['buyerId'].'-'.$value['storeId']]['orderGoodsCount']=$value['goodsNum']; $addDatas[$value['buyerId'] . '-' . $value['storeId']]['orderGoodsCount'] = $value['goodsNum'];
} }
if(isset($addDatas[$value['buyerId'].'-'.$value['storeId']]['orderTotal'])){ if (isset($addDatas[$value['buyerId'] . '-' . $value['storeId']]['orderTotal'])) {
$addDatas[$value['buyerId'].'-'.$value['storeId']]['orderTotal']+=$value['goodsPrice']; $addDatas[$value['buyerId'] . '-' . $value['storeId']]['orderTotal'] += $value['goodsPrice'];
}else{ } else {
$addDatas[$value['buyerId'].'-'.$value['storeId']]['orderTotal']=$value['goodsPrice']; $addDatas[$value['buyerId'] . '-' . $value['storeId']]['orderTotal'] = $value['goodsPrice'];
} }
} }
} }
$addDatas=array_values($addDatas); $addDatas = array_values($addDatas);
$storeMemberStatisticDao->addAll($addDatas); $storeMemberStatisticDao->addAll($addDatas);
}while($storeMemberStatisticData); } while ($storeMemberStatisticData);
file_put_contents($this->baseDir . PathConst::orderGoodsCreateTime, TIMESTAMP); file_put_contents($this->baseDir . PathConst::orderGoodsCreateTime, TIMESTAMP);
} }
//创建索引 //创建索引
public function createOrdersIndex() public function createOrdersIndex()
{ {
$orderGoodDao=\DAO\Order\OrderGoodsModel::getInstance(DbNameConst::salveDBConnectName);
$orderDao=\DAO\Order\OrderModel::getInstance(DbNameConst::salveDBConnectName);
$gmtCreate = file_get_contents($this->baseDir . PathConst::orderLastCreateTime);
$gmtCreate = !empty($gmtCreate)?$gmtCreate:ApiConst::zero;
$beginTime=$gmtCreate;
$this->taskIndex=PageConst::taskPageBegin;
$this->taskSize=PageConst::taskPageSize;
$elasticsTool=ElasticsToolModel::getInstance('orders');
$res= $elasticsTool->indexExists();
echo json_encode($res);exit;
do{
$addDatas=array();
$where=Common::format(" add_time>={0} and add_time<{1} ",$beginTime,TIMESTAMP);
$orders=$orderDao->getList($where, 'order_id as orderId,delete_state as deleteState,order_sn as orderSn,store_id as storeId,buyer_id as buyerId', $this->taskIndex, $this->taskSize, array( 'add_time'=>'desc'));
if(!empty($orders['list'])){
$indexs=array();
$orderIds=array_column($orders['list'],'orderId');
$orderGoods=$orderGoodDao->getOrderGoodsByOrderIds($orderIds,'order_id as orderId,goods_name as goodsName');
$resultOrders=Common::intergrateOneToMany($orders['list'], $orderGoods, 'orderId', 'orderId', 'orderGoods');
foreach($resultOrders as $result){
$one['orderId']=$result['orderId'];
$one['orderSn']=$result['orderSn'];
$namesArr=array_column($result['orderGoods'],'goodsName');
$nameStr=implode(',',$namesArr);
$one['goodsName']=$nameStr;
$one['orderId']=$result['orderId'];
array_push($indexs,$one);
}
}
$storeMemberStatisticData= $orderGoodDao->getMemberStoreStaticsByCreateTime($beginTime,$this->taskIndex,$this->taskSize);
$storeMemberStatisticData=isset($storeMemberStatisticData['list'])?$storeMemberStatisticData['list']:false;
if($storeMemberStatisticData){
$this->taskIndex++;
foreach($storeMemberStatisticData as $value){
$addDatas[$value['buyerId'].'-'.$value['storeId']]['storeId']=$value['storeId'];
$addDatas[$value['buyerId'].'-'.$value['storeId']]['memberId']=$value['buyerId'];
if(isset($addDatas[$value['buyerId'].'-'.$value['storeId']]['orderGoodsCount'])){
$addDatas[$value['buyerId'].'-'.$value['storeId']]['orderGoodsCount']+=$value['goodsNum'];
}else{
$addDatas[$value['buyerId'].'-'.$value['storeId']]['orderGoodsCount']=$value['goodsNum'];
}
if(isset($addDatas[$value['buyerId'].'-'.$value['storeId']]['orderTotal'])){
$addDatas[$value['buyerId'].'-'.$value['storeId']]['orderTotal']+=$value['goodsPrice'];
}else{
$addDatas[$value['buyerId'].'-'.$value['storeId']]['orderTotal']=$value['goodsPrice'];
}
}
}
$addDatas=array_values($addDatas);
$storeMemberStatisticDao->addAll($addDatas);
}while($orders);
file_put_contents($this->baseDir . PathConst::orderLastCreateTime, TIMESTAMP);
$elasticsTool = ElasticsToolModel::getInstance('orders');
$elasticsTool->deleteIndex();
$indexsFiled = array(
'goodsName' => array(
'type' => 'string',
"analyzer" => "ik_max_word"
),
'storeName' => array(
'type' => 'string',
"analyzer" => "ik_max_word"
),
);
$elasticsTool->createIkField($indexsFiled);
} }
//grow orderIndex //grow orderIndex
//创建索引 //创建索引
public function growOrdersIndex() public function growOrdersIndex()
{ {
$orderGoodDao=\DAO\Order\OrderGoodsModel::getInstance(DbNameConst::salveDBConnectName); $orderGoodDao = \DAO\Order\OrderGoodsModel::getInstance(DbNameConst::salveDBConnectName);
$orderDao=\DAO\Order\OrderModel::getInstance(DbNameConst::salveDBConnectName); $orderDao = \DAO\Order\OrderModel::getInstance(DbNameConst::salveDBConnectName);
$gmtCreate = file_get_contents($this->baseDir . PathConst::orderLastCreateTime); $gmtCreate = file_get_contents($this->baseDir . PathConst::orderLastCreateTime);
$gmtCreate = !empty($gmtCreate)?$gmtCreate:ApiConst::zero; $gmtCreate = !empty($gmtCreate) ? $gmtCreate : ApiConst::zero;
$beginTime=$gmtCreate; $beginTime = $gmtCreate;
$this->taskIndex=PageConst::taskPageBegin; $this->taskIndex = PageConst::taskPageBegin;
$this->taskSize=PageConst::taskPageSize; $this->taskSize = PageConst::taskPageSize;
$elasticsTool=ElasticsToolModel::getInstance('orders'); $elasticsTool = ElasticsToolModel::getInstance(NameConst::ordersIndex);
$res= $elasticsTool->indexExists(); do {
echo json_encode($res);exit; $where = Common::format(" han_order.add_time>={0} and han_order.add_time<{1} ", $beginTime, TIMESTAMP);
do{ // $orders = $this->getRetrunDatas($where, $this->taskIndex, $this->taskSize);
$addDatas=array(); // if (!empty($orders['orders'])) {
$where=Common::format(" add_time>={0} and add_time<{1} ",$beginTime,TIMESTAMP); // $this->taskIndex++;
$orders=$orderDao->getList($where, 'order_id as orderId,delete_state as deleteState,order_sn as orderSn,store_id as storeId,buyer_id as buyerId', $this->taskIndex, $this->taskSize, array( 'add_time'=>'desc')); // $indexs = array();
// echo json_encode($orders['orders']);exit;
// foreach ($orders['orders'] as $result) {
// $one['orderId'] = $result['orderId'];
// $one['orderSn'] = $result['orderSn'];
// $namesArr = array_column($result['orderGoods'], 'goodsName');
// $nameStr = implode(',', $namesArr);
// $one['goodsName'] = $nameStr;
// $one['deleteState'] = $result['deleteState'];
// $one['orderState'] = $result['orderState'];
// $one['addTime'] = $result['addTime'];
// $one['type'] = 'orders' . ($result['buyerId'] + $result['storeId']) % ApiConst::orderIndexRank;
// $one['fields'] = json_encode($result);
// array_push($indexs, $one);
// }
// $elasticsTool->postBulkDoc($indexs, 'orderId');
// }
$orders=$orderDao->getList($where, "order_id as orderId,order_sn as orderSn,delete_state as deleteState,order_state as orderState,add_time as addTime,store_name as storeName,buyer_id as buyerId,store_id as storeId", $this->taskIndex, $this->taskSize, array( 'add_time'=>'desc'));
if(!empty($orders['list'])){ if(!empty($orders['list'])){
$this->taskIndex++;
$indexs=array(); $indexs=array();
$orderIds=array_column($orders['list'],'orderId'); $orderIds=array_column($orders['list'],'orderId');
$orderGoods=$orderGoodDao->getOrderGoodsByOrderIds($orderIds,'order_id as orderId,goods_name as goodsName'); $orderGoods=$orderGoodDao->getOrderGoodsByOrderIds($orderIds,'order_id as orderId,goods_name as goodsName');
...@@ -556,93 +574,83 @@ class ShopkeeperServiceModel extends \Business\AbstractModel ...@@ -556,93 +574,83 @@ class ShopkeeperServiceModel extends \Business\AbstractModel
$namesArr=array_column($result['orderGoods'],'goodsName'); $namesArr=array_column($result['orderGoods'],'goodsName');
$nameStr=implode(',',$namesArr); $nameStr=implode(',',$namesArr);
$one['goodsName']=$nameStr; $one['goodsName']=$nameStr;
$one['orderId']=$result['orderId']; $one['storeName']=$result['storeName'];
$one['deleteState']=$result['deleteState'];
$one['orderState']=$result['orderState'];
$one['storeId']=$result['storeId'];
$one['buyerId']=$result['buyerId'];
$one['addTime']=$result['addTime'];
//$one['type']=NameConst::ordersIndex.($result['storeId'])%ApiConst::orderIndexRank;
array_push($indexs,$one); array_push($indexs,$one);
} }
$elasticsTool->postBulkDoc($indexs,'orderId');
} }
$storeMemberStatisticData= $orderGoodDao->getMemberStoreStaticsByCreateTime($beginTime,$this->taskIndex,$this->taskSize); } while ($orders['list']);
$storeMemberStatisticData=isset($storeMemberStatisticData['list'])?$storeMemberStatisticData['list']:false;
if($storeMemberStatisticData){
$this->taskIndex++;
foreach($storeMemberStatisticData as $value){
$addDatas[$value['buyerId'].'-'.$value['storeId']]['storeId']=$value['storeId'];
$addDatas[$value['buyerId'].'-'.$value['storeId']]['memberId']=$value['buyerId'];
if(isset($addDatas[$value['buyerId'].'-'.$value['storeId']]['orderGoodsCount'])){
$addDatas[$value['buyerId'].'-'.$value['storeId']]['orderGoodsCount']+=$value['goodsNum'];
}else{
$addDatas[$value['buyerId'].'-'.$value['storeId']]['orderGoodsCount']=$value['goodsNum'];
}
if(isset($addDatas[$value['buyerId'].'-'.$value['storeId']]['orderTotal'])){
$addDatas[$value['buyerId'].'-'.$value['storeId']]['orderTotal']+=$value['goodsPrice'];
}else{
$addDatas[$value['buyerId'].'-'.$value['storeId']]['orderTotal']=$value['goodsPrice'];
}
}
}
$addDatas=array_values($addDatas);
$storeMemberStatisticDao->addAll($addDatas);
}while($orders);
file_put_contents($this->baseDir . PathConst::orderLastCreateTime, TIMESTAMP); file_put_contents($this->baseDir . PathConst::orderLastCreateTime, TIMESTAMP);
} }
public function reduceRefundModel($storeMemberDatas){
$convertStoreMember=array();
if($storeMemberDatas){
foreach($storeMemberDatas as $order){
if(isset($convertStoreMember[$order['storeId']])){
$convertStoreMember[$order['storeId']]['orderCount']= $convertStoreMember[$order['storeId']]['orderCount']-ApiConst::one;
$convertStoreMember[$order['storeId']]['orderTotal']= $convertStoreMember[$order['storeId']]['orderTotal']+$order['refundAmount'];
}else{ public function reduceRefundModel($storeMemberDatas)
$convertStoreMember[$order['storeId']]['orderCount']=ApiConst::one; {
$convertStoreMember[$order['storeId']]['orderTotal']=$order['refundAmount']; $convertStoreMember = array();
$convertStoreMember[$order['storeId']]['gmtCreate']=isset($order['gmtUpdate'])?date($order['gmtUpdate']):date('Y-m-d',TIMESTAMP); if ($storeMemberDatas) {
foreach ($storeMemberDatas as $order) {
if (isset($convertStoreMember[$order['storeId']])) {
$convertStoreMember[$order['storeId']]['orderCount'] = $convertStoreMember[$order['storeId']]['orderCount'] - ApiConst::one;
$convertStoreMember[$order['storeId']]['orderTotal'] = $convertStoreMember[$order['storeId']]['orderTotal'] + $order['refundAmount'];
} else {
$convertStoreMember[$order['storeId']]['orderCount'] = ApiConst::one;
$convertStoreMember[$order['storeId']]['orderTotal'] = $order['refundAmount'];
$convertStoreMember[$order['storeId']]['gmtCreate'] = isset($order['gmtUpdate']) ? date($order['gmtUpdate']) : date('Y-m-d', TIMESTAMP);
} }
} }
$convertStoreMember=array_values($convertStoreMember); $convertStoreMember = array_values($convertStoreMember);
$storeStatisticDayDao=\DAO\Store\StoreStatisticsDayModel::getInstance(DbNameConst::masterDBConnectName); $storeStatisticDayDao = \DAO\Store\StoreStatisticsDayModel::getInstance(DbNameConst::masterDBConnectName);
$storeStatisticDayDao->addAllReduce($convertStoreMember); $storeStatisticDayDao->addAllReduce($convertStoreMember);
} }
} }
//任务脚本 //任务脚本
public function reduceStoreMemberStatics() public function reduceStoreMemberStatics()
{ {
$refundReturnDao=\DAO\Order\RefundReturnModel::getInstance(DbNameConst::salveDBConnectName); $refundReturnDao = \DAO\Order\RefundReturnModel::getInstance(DbNameConst::salveDBConnectName);
$storeMemberStatisticDao=\DAO\StoreMemberStatisticsModel::getInstance(DbNameConst::masterDBConnectName); $storeMemberStatisticDao = \DAO\StoreMemberStatisticsModel::getInstance(DbNameConst::masterDBConnectName);
$gmtUpdate = file_get_contents($this->baseDir . PathConst::refundRetrunGmtUpdate); $gmtUpdate = file_get_contents($this->baseDir . PathConst::refundRetrunGmtUpdate);
$gmtUpdate = $gmtUpdate?$gmtUpdate:ApiConst::zero; $gmtUpdate = $gmtUpdate ? $gmtUpdate : ApiConst::zero;
$this->taskIndex=PageConst::taskPageBegin; $this->taskIndex = PageConst::taskPageBegin;
$this->taskSize=PageConst::taskPageSize; $this->taskSize = PageConst::taskPageSize;
do{ do {
$addDatas=array(); $addDatas = array();
$storeMemberStatisticData= $refundReturnDao->getMemberStoreStaticsByGmtUpdate($gmtUpdate,$this->taskIndex,$this->taskSize); $storeMemberStatisticData = $refundReturnDao->getMemberStoreStaticsByGmtUpdate($gmtUpdate, $this->taskIndex, $this->taskSize);
$storeMemberStatisticData=isset($storeMemberStatisticData['list'])?$storeMemberStatisticData['list']:false; $storeMemberStatisticData = isset($storeMemberStatisticData['list']) ? $storeMemberStatisticData['list'] : false;
if($storeMemberStatisticData){ if ($storeMemberStatisticData) {
$this->taskIndex++; $this->taskIndex++;
foreach($storeMemberStatisticData as $value){ foreach ($storeMemberStatisticData as $value) {
$addDatas[$value['buyerId'].'-'.$value['storeId']]['storeId']=$value['storeId']; $addDatas[$value['buyerId'] . '-' . $value['storeId']]['storeId'] = $value['storeId'];
$addDatas[$value['buyerId'].'-'.$value['storeId']]['memberId']=$value['buyerId']; $addDatas[$value['buyerId'] . '-' . $value['storeId']]['memberId'] = $value['buyerId'];
if(isset($addDatas[$value['buyerId'].'-'.$value['storeId']]['orderGoodsCount'])){ if (isset($addDatas[$value['buyerId'] . '-' . $value['storeId']]['orderGoodsCount'])) {
$addDatas[$value['buyerId'].'-'.$value['storeId']]['orderGoodsCount']+=$value['goodsNum']; $addDatas[$value['buyerId'] . '-' . $value['storeId']]['orderGoodsCount'] += $value['goodsNum'];
}else{ } else {
$addDatas[$value['buyerId'].'-'.$value['storeId']]['orderGoodsCount']=$value['goodsNum']; $addDatas[$value['buyerId'] . '-' . $value['storeId']]['orderGoodsCount'] = $value['goodsNum'];
} }
if(isset($addDatas[$value['buyerId'].'-'.$value['storeId']]['orderTotal'])){ if (isset($addDatas[$value['buyerId'] . '-' . $value['storeId']]['orderTotal'])) {
$addDatas[$value['buyerId'].'-'.$value['storeId']]['orderTotal']+=$value['refundAmount']; $addDatas[$value['buyerId'] . '-' . $value['storeId']]['orderTotal'] += $value['refundAmount'];
}else{ } else {
$addDatas[$value['buyerId'].'-'.$value['storeId']]['orderTotal']=$value['refundAmount']; $addDatas[$value['buyerId'] . '-' . $value['storeId']]['orderTotal'] = $value['refundAmount'];
} }
} }
} }
$addDatas=array_values($addDatas); $addDatas = array_values($addDatas);
$storeMemberStatisticDao->addAllReduce($addDatas); $storeMemberStatisticDao->addAllReduce($addDatas);
$this->reduceRefundModel($storeMemberStatisticData); $this->reduceRefundModel($storeMemberStatisticData);
}while($storeMemberStatisticData); } while ($storeMemberStatisticData);
file_put_contents($this->baseDir . PathConst::refundRetrunGmtUpdate, TIMESTAMP); file_put_contents($this->baseDir . PathConst::refundRetrunGmtUpdate, TIMESTAMP);
} }
//店铺订单统计任务脚本 //店铺订单统计任务脚本
public function storeStatictisTask() public function storeStatictisTask()
{ {
......
...@@ -157,7 +157,7 @@ class ElasticsToolModel ...@@ -157,7 +157,7 @@ class ElasticsToolModel
} }
//一般传where就可以了, //一般传where就可以了,
public function searchMatch($where, $pageIndex = ApiConst::pageIndex, $pageSize = ApiConst::pageSize, $sort = array('_score' => array('order' => 'desc'))) public function searchMatch($where, $pageIndex = ApiConst::pageIndex, $pageSize = ApiConst::pageSize, $sort = array('addTime' => array('order' => 'desc')))
{ {
$searchParams['index'] = $this->dbName; $searchParams['index'] = $this->dbName;
$searchParams['type'] = $this->tbName; $searchParams['type'] = $this->tbName;
...@@ -165,8 +165,9 @@ class ElasticsToolModel ...@@ -165,8 +165,9 @@ class ElasticsToolModel
$searchParams['from'] = $from; $searchParams['from'] = $from;
$searchParams['size'] = $pageSize; $searchParams['size'] = $pageSize;
$searchParams['sort'] = $sort; $searchParams['sort'] = $sort;
//must 是与 ,should是或
$searchParams['body'] = array( $searchParams['body'] = array(
'query' => array('match' => $where), 'query' => $where,
); );
$retDoc = $this->client->search($searchParams); $retDoc = $this->client->search($searchParams);
if (!isset($retDoc['hits'])) { if (!isset($retDoc['hits'])) {
...@@ -259,14 +260,15 @@ class ElasticsToolModel ...@@ -259,14 +260,15 @@ class ElasticsToolModel
} }
//插入多条 Document: //插入多条 Document:
public function postBulkDoc($rows) public function postBulkDoc($rows,$key='id')
{ {
foreach ($rows as $row) { foreach ($rows as $row) {
$params['body'][] = [ $params['body'][] = [
'index' => [ 'index' => [
'_index' => $this->dbName, '_index' => $this->dbName,
'_type' => $this->tbName, '_type' => $row['type']?$row['type']:$this->tbName,
'_id'=>$row[$key]
] ]
]; ];
$params['body'][] = $row; $params['body'][] = $row;
...@@ -274,8 +276,7 @@ class ElasticsToolModel ...@@ -274,8 +276,7 @@ class ElasticsToolModel
$res = $this->client->bulk($params); $res = $this->client->bulk($params);
return $res; return $res;
} }
public function createIkField($indexFields)
public function createIkField()
{ {
$params = [ $params = [
'index' => $this->dbName, //索引名称 'index' => $this->dbName, //索引名称
...@@ -294,12 +295,7 @@ class ElasticsToolModel ...@@ -294,12 +295,7 @@ class ElasticsToolModel
'dynamic' => [ // 存储原始文档 'dynamic' => [ // 存储原始文档
'enabled' => 'true' 'enabled' => 'true'
], ],
'properties' => [ //配置数据结构与类型 'properties' => $indexFields
'goodsName' => [ //字段1
"type" => "string",
"analyzer" => "ik_max_word"
],
]
], ],
], ],
] ]
...@@ -308,6 +304,39 @@ class ElasticsToolModel ...@@ -308,6 +304,39 @@ class ElasticsToolModel
return $res; return $res;
} }
// public function createIkField($indexFild)
// {
// $params = [
// 'index' => $this->dbName, //索引名称
// 'body' => [
// 'settings' => [ //配置
// 'analysis' => array(
// 'analyzer' => array(
// 'ik' => [
// 'tokenizer' => 'ik_max_word',
// ]
// )
// ),
// ],
// 'mappings' => [ //映射
// $this->tbName => [ //默认配置,每个类型缺省的配置使用默认配置
// 'dynamic' => [ // 存储原始文档
// 'enabled' => 'true'
// ],
// 'properties' => [ //配置数据结构与类型
// 'goodsName' => [ //字段1
// "type" => "string",
// "analyzer" => "ik_max_word"
// ],
// ]
// ],
// ],
// ]
// ];
// $res = $this->client->indices()->create($params);
// return $res;
// }
//添加属性 //添加属性
public function putMappings($column) public function putMappings($column)
{ {
......
...@@ -9,10 +9,9 @@ ...@@ -9,10 +9,9 @@
</head> </head>
<body> <body>
<form action="/order/getOrders" method="post"> <form action="/order/getOrders" method="post">
用户登录状态key:<input name="data[key]" value="ceb72deab920ac0edb7272b2ed9dfa1e"/><br /> 用户登录状态key:<input name="data[key]" value="ceb72deab920ac0edb7272b2ed9dfa1e"/><br />
订单状态id:<input name="data[orderState]" value=""/><br /> 订单状态id:<input name="data[orderState]" value=""/><br />
keyWord:<input name="data[keyword]" value=""/><br />
<p id="img_area"></p> <p id="img_area"></p>
<input type="submit" value="提交"> <input type="submit" value="提交">
</form> </form>
......
...@@ -51,12 +51,12 @@ class cliShopkeeperOrders extends basecli ...@@ -51,12 +51,12 @@ class cliShopkeeperOrders extends basecli
echo "*** Debug mode ***\n"; echo "*** Debug mode ***\n";
} }
// Step: 02 检查是否已有相同CLI在运行中 // Step: 02 检查是否已有相同CLI在运行中
$lockDir = $this->_getBaseFileName('shopkeeper'); $lockDir = $this->_getBaseFileName('create');
if (!$this->mkdirs($lockDir)) { if (!$this->mkdirs($lockDir)) {
echo '****create dir fail ****'; echo '****create dir fail ****';
exit; exit;
} }
$this->lockFileName = $lockDir . DS . 'orders.locks'; $this->lockFileName = $lockDir . DS . 'createIndex.locks';
if (file_exists($this->lockFileName)) { if (file_exists($this->lockFileName)) {
$stat = stat($this->lockFileName); $stat = stat($this->lockFileName);
if ((TIMESTAMP - $stat['mtime']) > 1800) { if ((TIMESTAMP - $stat['mtime']) > 1800) {
......
...@@ -71,7 +71,7 @@ class cliShopkeeperOrders extends basecli ...@@ -71,7 +71,7 @@ class cliShopkeeperOrders extends basecli
$shopkeeperService = \Business\Store\ShopkeeperServiceModel::getInstance(); $shopkeeperService = \Business\Store\ShopkeeperServiceModel::getInstance();
$shopkeeperService->baseDir= \Our\Common::getConfig('out.config'); $shopkeeperService->baseDir= \Our\Common::getConfig('out.config');
try { try {
$shopkeeperService->createOrdersIndex(); $shopkeeperService->growOrdersIndex();
} catch (\Exception $ex) { } catch (\Exception $ex) {
throw new \Exception($ex->getMessage(),$ex->getCode()); throw new \Exception($ex->getMessage(),$ex->getCode());
......
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