Commit 7ea78340 authored by wwccw0591's avatar wwccw0591

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

parents 6a1a7eea 1652d2c6
...@@ -476,8 +476,7 @@ class ShopkeeperServiceModel extends \Business\AbstractModel ...@@ -476,8 +476,7 @@ 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);
...@@ -492,37 +491,86 @@ class ShopkeeperServiceModel extends \Business\AbstractModel ...@@ -492,37 +491,86 @@ class ShopkeeperServiceModel extends \Business\AbstractModel
$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;
$orderIds=array_column($storeMemberStatisticData,'orderId'); if($storeMemberStatisticData){
array_unique($orderIds);
if(!empty($orderIds)){
$orders=$orderDao->getByOrderId($orderIds,'order_amount as orderAmount,order_id as orderId','orderId');
}else{
$orders=[];
}
if ($storeMemberStatisticData) {
$this->taskIndex++; $this->taskIndex++;
foreach ($storeMemberStatisticData as $value) { $storeId=array_column($storeMemberStatisticData,'storeId');
$addDatas[$value['buyerId'] . '-' . $value['storeId']]['storeId'] = $value['storeId']; $memberId=array_column($storeMemberStatisticData,'buyerId');
$addDatas[$value['buyerId'] . '-' . $value['storeId']]['memberId'] = $value['buyerId']; $storeIds= array_unique($storeId);
if (isset($addDatas[$value['buyerId'] . '-' . $value['storeId']]['orderGoodsCount'])) { $memberIds=array_unique($memberId);
$addDatas[$value['buyerId'] . '-' . $value['storeId']]['orderGoodsCount'] += $value['goodsNum']; $goodsNumCount=$orderGoodDao->getMemberStoreOrderGoodsCount($storeIds,$memberIds);
} else { $ordersCount=$orderDao->getSumAmountCountByMemberAndStoreId($storeIds,$memberIds);
$addDatas[$value['buyerId'] . '-' . $value['storeId']]['orderGoodsCount'] = $value['goodsNum']; $arr = array();
if(!empty($goodsNumCount)&&!empty($ordersCount)){
foreach($goodsNumCount as $k=>$r){
$arr[] = array_merge($r,$ordersCount[$k]);
} }
if (isset($addDatas[$value['buyerId'] . '-' . $value['storeId']]['orderTotal'])) { $addDatas=$arr;
// $addDatas[$value['buyerId'] . '-' . $value['storeId']]['orderTotal'] += $value['goodsPrice']; }else{
$addDatas[$value['buyerId'] . '-' . $value['storeId']]['orderTotal'] +=$orders[$value['orderId']]['orderAmount']; if(!empty($goodsNumCount)){
} else { $addDatas=$goodsNumCount;
$addDatas[$value['buyerId'] . '-' . $value['storeId']]['orderTotal'] = $orders[$value['orderId']]['orderAmount']; }else{
$addDatas=$goodsNumCount;
} }
} }
if(!empty($goodsNumCount)){
$storeMemberStatisticDao->addAll($goodsNumCount,'orderGoodsCount');
}
if(!empty($ordersCount)){
$storeMemberStatisticDao->addAll($ordersCount,'orderTotal');
}
} }
$addDatas = array_values($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 insertStoreMemberStatics()
// {
// $orderGoodDao = \DAO\Order\OrderGoodsModel::getInstance(DbNameConst::salveDBConnectName);
// $orderDao=\DAO\Order\OrderModel::getInstance();
// $storeMemberStatisticDao = \DAO\StoreMemberStatisticsModel::getInstance(DbNameConst::masterDBConnectName);
// $gmtCreate = file_get_contents($this->baseDir . PathConst::orderGoodsCreateTime);
// $gmtCreate = $gmtCreate ? $gmtCreate : ApiConst::zero;
// $beginTime = $gmtCreate;
// $this->taskIndex = PageConst::taskPageBegin;
// $this->taskSize = PageConst::taskPageSize;
// do {
// $addDatas = array();
// $storeMemberStatisticData = $orderGoodDao->getMemberStoreStaticsByCreateTime($beginTime, $this->taskIndex, $this->taskSize);
// $storeMemberStatisticData = isset($storeMemberStatisticData['list']) ? $storeMemberStatisticData['list'] : false;
// $orderIds=array_column($storeMemberStatisticData,'orderId');
// array_unique($orderIds);
// if(!empty($orderIds)){
// $orders=$orderDao->getByOrderId($orderIds,'order_amount as orderAmount,order_id as orderId','orderId');
// }else{
// $orders=[];
// }
// 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'];
// $addDatas[$value['buyerId'] . '-' . $value['storeId']]['orderTotal'] +=$orders[$value['orderId']]['orderAmount'];
// } else {
// $addDatas[$value['buyerId'] . '-' . $value['storeId']]['orderTotal'] = $orders[$value['orderId']]['orderAmount'];
// }
// }
// }
// $addDatas = array_values($addDatas);
// $storeMemberStatisticDao->addAll($addDatas);
// } while ($storeMemberStatisticData);
// file_put_contents($this->baseDir . PathConst::orderGoodsCreateTime, TIMESTAMP);
//
// }
//创建索引 //创建索引
public function createOrdersIndex() public function createOrdersIndex()
......
...@@ -45,6 +45,7 @@ class StoreServiceModel extends \Business\AbstractModel{ ...@@ -45,6 +45,7 @@ class StoreServiceModel extends \Business\AbstractModel{
$sale = \DAO\SaleModel::getInstance()->getOne(array('sale_id'=>$param['sid']),'sale_act_id,member_id'); $sale = \DAO\SaleModel::getInstance()->getOne(array('sale_id'=>$param['sid']),'sale_act_id,member_id');
if($sale) { if($sale) {
\DAO\SaleMemberModel::getInstance()->insertOrUpdate(array('sale_id'=>$sale['member_id'],'sale_act_id'=>$sale['sale_act_id'],'member_id'=>$memberId,'store_id'=>$storeId)); \DAO\SaleMemberModel::getInstance()->insertOrUpdate(array('sale_id'=>$sale['member_id'],'sale_act_id'=>$sale['sale_act_id'],'member_id'=>$memberId,'store_id'=>$storeId));
\Redis\Db4\SaleActivityRedisModel::getInstance()->tableDel('storeId:'.$storeId);
} }
} }
}else{ }else{
...@@ -175,21 +176,23 @@ class StoreServiceModel extends \Business\AbstractModel{ ...@@ -175,21 +176,23 @@ class StoreServiceModel extends \Business\AbstractModel{
return array('storeName'=>$storeInfo['store_name'],'storeLabel'=>$storeLabel,'fansCount'=>\DAO\FavoritesStoreModel::getInstance()->getFavoritesStoreCountByStoreId($storeId),'clazz'=>$returnClass,'address'=>$address,'storePhone'=>$storeInfo['store_phone'],'openingHours'=>$openingHours,'storeService'=>$storeInfo['store_notice'],"qualificationImage"=>$detailImg); return array('storeName'=>$storeInfo['store_name'],'storeLabel'=>$storeLabel,'fansCount'=>\DAO\FavoritesStoreModel::getInstance()->getFavoritesStoreCountByStoreId($storeId),'clazz'=>$returnClass,'address'=>$address,'storePhone'=>$storeInfo['store_phone'],'openingHours'=>$openingHours,'storeService'=>$storeInfo['store_notice'],"qualificationImage"=>$detailImg);
} }
public function getRecommendGoodsCache($param,$memberId){ public function getRecommendGoodsCache($param,$memberId){
$recommendGoods = \Our\RedisHelper::cachedFunction(\Redis\Db6\StoreGoodsClassRedisModel::getInstance(),array(&$this, 'getRecommendGoods'),array($param,$memberId),\Our\ApiConst::oneHour,array(intval($param['storeId'])));
return $recommendGoods;
}
/**
* 获取店铺首页推荐商品
* @param $param
*/
public function getRecommendGoods($param,$memberId){
$storeId = intval($param['storeId']); $storeId = intval($param['storeId']);
if(!$storeId){ if(!$storeId){
\Error\ErrorModel::throwException(\Error\CodeConfigModel::emptyStoreId); \Error\ErrorModel::throwException(\Error\CodeConfigModel::emptyStoreId);
} }
\DAO\StoreModel::getInstance()->get($storeId,false); \DAO\StoreModel::getInstance()->get($storeId,false);
$activities = \DAO\SaleMemberModel::getInstance()->isJoinStore($storeId,$memberId); $activities = \DAO\SaleMemberModel::getInstance()->isJoinStore($storeId,$memberId);
if($activities) {
$activities = array_keys($activities);
}
$recommendGoods = \Our\RedisHelper::cachedFunction(\Redis\Db6\StoreGoodsClassRedisModel::getInstance(),array(&$this, 'getRecommendGoods'),array($storeId,$activities),\Our\ApiConst::oneDaySecond,array(intval($param['storeId'])));
return $recommendGoods;
}
/**
* 获取店铺首页推荐商品
* @param $param
*/
public function getRecommendGoods($storeId,$activities){
$storeClassDAO = \DAO\StoreGoodsClassModel::getInstance(); $storeClassDAO = \DAO\StoreGoodsClassModel::getInstance();
$tempStcs = $storeClassDAO->getList(array('store_id'=>$storeId),'stc_id,stc_name'); $tempStcs = $storeClassDAO->getList(array('store_id'=>$storeId),'stc_id,stc_name');
if($tempStcs) { if($tempStcs) {
...@@ -203,7 +206,6 @@ class StoreServiceModel extends \Business\AbstractModel{ ...@@ -203,7 +206,6 @@ class StoreServiceModel extends \Business\AbstractModel{
if($activities === false){ if($activities === false){
$tempGoods = $goodsCommonDAO->getGoodsList(array('goods_commonid in('.implode(',',$goodsIds).')'),'goods_name,goods_image,goods_price as goodsPrice,goods_marketprice,goods_commonid'); $tempGoods = $goodsCommonDAO->getGoodsList(array('goods_commonid in('.implode(',',$goodsIds).')'),'goods_name,goods_image,goods_price as goodsPrice,goods_marketprice,goods_commonid');
}else{ }else{
$activities = array_keys($activities);
$tempGoods = $goodsCommonDAO->getListWithSale(array('han_goods_common.goods_commonid in('.implode(',',$goodsIds).')'),'goods_name,goods_image,goods_price,goods_marketprice,han_goods_common.goods_commonid,IFNULL(discount_price,han_goods_common.goods_price) AS goodsPrice',$activities); $tempGoods = $goodsCommonDAO->getListWithSale(array('han_goods_common.goods_commonid in('.implode(',',$goodsIds).')'),'goods_name,goods_image,goods_price,goods_marketprice,han_goods_common.goods_commonid,IFNULL(discount_price,han_goods_common.goods_price) AS goodsPrice',$activities);
} }
......
...@@ -378,6 +378,16 @@ class OrderModel extends \DAO\AbstractModel ...@@ -378,6 +378,16 @@ class OrderModel extends \DAO\AbstractModel
} }
} }
public function getSumAmountCountByMemberAndStoreId($storeIds,$memberIds)
{
$this->setDb($this->dbName);
$where['store_id']=array('in',$storeIds);
$where['member_ids']=array('in',$memberIds);
$where['order_state']=array('notin','-1,0');
$res=$this->db->from($this->_tableName)->select(" buyer_id as buyerId,store_id as storeId,sum(order_amount) as orderTotal")->group('buyer_id')->group('store_id')->fetchAll();
return $res;
}
//待收货获取订单状态信息 //待收货获取订单状态信息
public function getOrderStatusExtent($order) public function getOrderStatusExtent($order)
{ {
......
...@@ -19,7 +19,7 @@ class OrderGoodsModel extends \DAO\AbstractModel { ...@@ -19,7 +19,7 @@ class OrderGoodsModel extends \DAO\AbstractModel {
protected $_tableName = 'han_order_goods'; protected $_tableName = 'han_order_goods';
public $sumField="rec_id,store_id as storeId,buyer_id as buyerId,goods_num as goodsNum,goods_price as goodsPrice,gmt_create as gmtCreate,order_id as orderId"; public $sumField="rec_id,store_id as storeId,buyer_id as buyerId,goods_num as goodsNum,goods_price as goodsPrice,gmt_create as gmtCreate,order_id as orderId";
public $groupField=array('buyer_id','store_id'); public $groupField=array('buyer_id','store_id');
public $sumGoodsNum=' store_id as storeId,buyer_id as buyerId,sum(goods_num) as orderGoodsCount';
public $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"; public $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";
/** /**
* 主键 * 主键
...@@ -230,6 +230,15 @@ class OrderGoodsModel extends \DAO\AbstractModel { ...@@ -230,6 +230,15 @@ class OrderGoodsModel extends \DAO\AbstractModel {
$res=$this->lists($where,array('gmt_create'=>'asc'),$this->sumField,$pageIndex,$pageSize); $res=$this->lists($where,array('gmt_create'=>'asc'),$this->sumField,$pageIndex,$pageSize);
return $res['list']?$res:false; return $res['list']?$res:false;
} }
public function getMemberStoreOrderGoodsCount($storeIds,$memberIds){
$this->setDb($this->dbName);
$where['store_id']=array('in',$storeIds);
$where['buyer_id']=array('in',$memberIds);
$where['is_refund']=array('neq',ApiConst::one);
$res=$this->db->from($this->_tableName)->select($this->sumGoodsNum)->group("buyer_id")->group("store_id")->fetchAll();
return $res;
}
/** /**
* 类实例 * 类实例
* *
......
...@@ -170,15 +170,23 @@ class StoreMemberStatisticsModel extends \DAO\AbstractModel { ...@@ -170,15 +170,23 @@ class StoreMemberStatisticsModel extends \DAO\AbstractModel {
} }
//插入数据大量 //插入数据大量
public function addAll($datas) public function addAll($datas,$field="orderGoodsCount")
{ {
$this->setDb(DbNameConst::masterDBConnectName); $this->setDb(DbNameConst::masterDBConnectName);
$error = 0; $error = 0;
$baseSql = "insert into {$this->_tableName}({$this->insertField}) values"; $baseSql = "insert into {$this->_tableName}({$this->insertField}) values";
$extentSql=" ON DUPLICATE KEY UPDATE order_goods_count=order_goods_count+values(order_goods_count),order_total=order_total+values(order_total)"; if($field=='orderGoodsCount'){
$extentSql=" ON DUPLICATE KEY UPDATE order_goods_count=values(order_goods_count)";
}
if($field=='orderTotal'){
$extentSql=" ON DUPLICATE KEY UPDATE order_total=values(order_total)";
}
$insertAllSql = $baseSql; $insertAllSql = $baseSql;
for ($i = 0; $i < count($datas); $i++) { for ($i = 0; $i < count($datas); $i++) {
$addSql = \Our\Common::format("({0},{1},{2},{3},{4}),", $datas[$i]['storeId'], $datas[$i]['memberId'],$datas[$i]['orderGoodsCount'], $datas[$i]['orderTotal'],TIMESTAMP); $datas[$i]['orderGoodsCount']=isset($datas[$i]['orderGoodsCount'])?$datas[$i]['orderGoodsCount']:ApiConst::zero;
$datas[$i]['orderTotal']=isset( $datas[$i]['orderTotal'])? $datas[$i]['orderTotal']:ApiConst::zero;
$addSql = \Our\Common::format("({0},{1},{2},{3},{4}),", $datas[$i]['storeId'], $datas[$i]['buyerId'],$datas[$i]['orderGoodsCount'], $datas[$i]['orderTotal'],TIMESTAMP);
$insertAllSql .= $addSql; $insertAllSql .= $addSql;
if ($i % 1000 == 0 && $i != 0) { if ($i % 1000 == 0 && $i != 0) {
$insertAllSql = rtrim($insertAllSql, ','); $insertAllSql = rtrim($insertAllSql, ',');
......
...@@ -19,6 +19,9 @@ class SaleActivityRedisModel extends \Redis\Db4\AbstractModel { ...@@ -19,6 +19,9 @@ class SaleActivityRedisModel extends \Redis\Db4\AbstractModel {
$res=$this->set($this->calcKey($id), $data,$experio); $res=$this->set($this->calcKey($id), $data,$experio);
return $res; return $res;
} }
public function tableDel($h){
return $this->del($this->calcKey($h));
}
public function getList(){ public function getList(){
} }
......
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