初始上传
This commit is contained in:
37
app/model/stat/GoodsCartStat.php
Executable file
37
app/model/stat/GoodsCartStat.php
Executable file
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
namespace app\model\stat;
|
||||
|
||||
use app\model\BaseModel;
|
||||
use app\model\system\Stat;
|
||||
|
||||
/**
|
||||
* 购物车统计
|
||||
* @author Administrator
|
||||
*
|
||||
*/
|
||||
class GoodsCartStat extends BaseModel
|
||||
{
|
||||
/**
|
||||
* 用于订单(同与订单支付后调用)
|
||||
* @param $params
|
||||
* @return array
|
||||
*/
|
||||
public function addGoodsCartStat($params)
|
||||
{
|
||||
|
||||
$stat_model = new Stat();
|
||||
|
||||
$result = $stat_model->addShopStat($params);
|
||||
return $result;
|
||||
}
|
||||
|
||||
}
|
||||
194
app/model/stat/GoodsStat.php
Executable file
194
app/model/stat/GoodsStat.php
Executable file
@@ -0,0 +1,194 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
namespace app\model\stat;
|
||||
|
||||
use app\model\BaseModel;
|
||||
use app\model\system\Stat;
|
||||
use Carbon\Carbon;
|
||||
|
||||
/**
|
||||
* 统计
|
||||
* @author Administrator
|
||||
*
|
||||
*/
|
||||
class GoodsStat extends BaseModel
|
||||
{
|
||||
/**
|
||||
* 用于订单(同与订单支付后调用)
|
||||
* @param $params
|
||||
* @return array
|
||||
*/
|
||||
public function addGoodsStat($params)
|
||||
{
|
||||
$stat_model = new Stat();
|
||||
|
||||
$result = $stat_model->addShopStat($params);
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品增加收藏量
|
||||
* @param $params
|
||||
* @return array
|
||||
*/
|
||||
public function addGoodsCollectStat($params)
|
||||
{
|
||||
$stat_model = new Stat();
|
||||
|
||||
$result = $stat_model->addShopStat($params);
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 增加访问数
|
||||
* @param $params
|
||||
* @return array
|
||||
*/
|
||||
public function addGoodsVisit($params)
|
||||
{
|
||||
$member_id = $params[ 'member_id' ] ?? 0;
|
||||
$goods_id = $params[ 'goods_id' ] ?? 0;
|
||||
|
||||
$data = array (
|
||||
'site_id' => $params[ 'site_id' ],
|
||||
'goods_visit_count' => 1
|
||||
);
|
||||
$stat_model = new Stat();
|
||||
$time_region = getDayStartAndEndTime();
|
||||
$today_start_time = $time_region[ 'start_time' ];
|
||||
$today_end_time = $time_region[ 'end_time' ];
|
||||
if ($goods_id > 0) {
|
||||
$goods_browse_condition = array (
|
||||
[ 'goods_id', '=', $goods_id ],
|
||||
[ 'browse_time', 'between', [ $today_start_time, $today_end_time ] ],
|
||||
);
|
||||
$info = model('goods_browse')->getInfo($goods_browse_condition);
|
||||
if (empty($info)) {
|
||||
$data[ 'goods_visited_type_count' ] = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if ($member_id > 0) {
|
||||
$member_browse_condition = array (
|
||||
[ 'member_id', '=', $member_id ],
|
||||
[ 'browse_time', 'between', [ $today_start_time, $today_end_time ] ],
|
||||
);
|
||||
$info = model('goods_browse')->getInfo($member_browse_condition);
|
||||
if (empty($info)) {
|
||||
$data[ 'goods_visit_member_count' ] = 1;
|
||||
}
|
||||
}
|
||||
$result = $stat_model->addShopStat($data);
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 商品上架商品统计
|
||||
* @param $params
|
||||
* @return array|void
|
||||
*/
|
||||
public function addGoodsOnStat($params)
|
||||
{
|
||||
$site_id = $params[ 'site_id' ];
|
||||
//查询当前的已上架商品
|
||||
$goods_on_condition = array (
|
||||
[ 'goods_state', '=', 1 ],
|
||||
[ 'is_delete', '=', 0 ],
|
||||
[ 'site_id', '=', $site_id ]
|
||||
);
|
||||
$count = model('goods')->getCount($goods_on_condition);
|
||||
$carbon = Carbon::now();
|
||||
$condition = [
|
||||
[ 'site_id', '=', $site_id ],
|
||||
[ 'year', '=', $carbon->year ],
|
||||
[ 'month', '=', $carbon->month ],
|
||||
[ 'day', '=', $carbon->day ],
|
||||
[ 'goods_on_type_count', '>', 0 ]
|
||||
];
|
||||
|
||||
$info = model('stat_shop')->getInfo($condition, 'goods_on_type_count') ?? [];
|
||||
$o_count = $info[ 'goods_on_type_count' ] ?? 0;
|
||||
$data = [
|
||||
'site_id' => $site_id,
|
||||
];
|
||||
$diff_count = $count - $o_count;
|
||||
if ($diff_count != 0) {
|
||||
$data[ 'goods_on_type_count' ] = $diff_count;
|
||||
$stat_model = new Stat();
|
||||
$result = $stat_model->addShopStat($data);
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 销售额统计
|
||||
* @param $params
|
||||
* @return array
|
||||
*/
|
||||
public function getGoodsOrderMoneyStat($params)
|
||||
{
|
||||
$start_time = $params[ 'start_time' ];
|
||||
$end_time = $params[ 'end_time' ];
|
||||
|
||||
$condition = array (
|
||||
[ 'o.create_time', 'between', [ $start_time, $end_time ] ],
|
||||
[ 'o.pay_status', '=', 1 ]
|
||||
);
|
||||
$site_id = $params[ 'site_id' ] ?? 0;
|
||||
if ($site_id > 0) {
|
||||
$condition[] = [ 'o.site_id', '=', $site_id ];
|
||||
}
|
||||
$alias = 'og';
|
||||
$join = [
|
||||
[
|
||||
'order o',
|
||||
'o.order_id = og.order_id',
|
||||
'inner'
|
||||
],
|
||||
];
|
||||
$list = model('order_goods')->getList($condition, 'sum(og.goods_money) as total_money, og.sku_name, og.goods_id, og.sku_id, og.sku_image', 'total_money desc', $alias, $join, 'og.goods_id', $params[ 'limit' ]);
|
||||
return $this->success($list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 销售量统计
|
||||
* @param $params
|
||||
* @return array
|
||||
*/
|
||||
public function getGoodsOrderNumStat($params)
|
||||
{
|
||||
$start_time = $params[ 'start_time' ];
|
||||
$end_time = $params[ 'end_time' ];
|
||||
|
||||
$condition = array (
|
||||
[ 'o.create_time', 'between', [ $start_time, $end_time ] ],
|
||||
[ 'o.pay_status', '=', 1 ]
|
||||
);
|
||||
$site_id = $params[ 'site_id' ] ?? 0;
|
||||
if ($site_id > 0) {
|
||||
$condition[] = [ 'o.site_id', '=', $site_id ];
|
||||
}
|
||||
$alias = 'og';
|
||||
$join = [
|
||||
[
|
||||
'order o',
|
||||
'o.order_id = og.order_id',
|
||||
'inner'
|
||||
],
|
||||
];
|
||||
|
||||
$list = model('order_goods')->getList($condition, 'sum(og.num) as total_num, og.sku_name, og.goods_id, og.sku_id, og.sku_image', 'total_num desc', $alias, $join, 'og.goods_id', $params[ 'limit' ]);
|
||||
return $this->success($list);
|
||||
}
|
||||
}
|
||||
53
app/model/stat/MemberLevelStat.php
Executable file
53
app/model/stat/MemberLevelStat.php
Executable file
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
namespace app\model\stat;
|
||||
|
||||
use app\model\BaseModel;
|
||||
use app\model\system\Stat;
|
||||
|
||||
/**
|
||||
* 统计
|
||||
* @author Administrator
|
||||
*
|
||||
*/
|
||||
class MemberLevelStat extends BaseModel
|
||||
{
|
||||
/**
|
||||
* 用于订单(同与订单支付后调用)
|
||||
* @param $params
|
||||
* @return array
|
||||
*/
|
||||
public function addMemberLevelOrderStat($params)
|
||||
{
|
||||
$order_id = $params[ 'order_id' ];
|
||||
$site_id = $params[ 'site_id' ] ?? 0;
|
||||
$order_condition = array (
|
||||
[ 'order_id', '=', $order_id ],
|
||||
[ 'site_id', '=', $site_id ]
|
||||
);
|
||||
$order_info = model('member_level_order')->getInfo($order_condition);
|
||||
if (empty($order_info))
|
||||
return $this->error();
|
||||
|
||||
$order_money = $order_info[ 'order_money' ];
|
||||
$stat_data = array (
|
||||
'site_id' => $site_id,
|
||||
'member_level_count' => 1,
|
||||
'member_level_total_money' => $order_money
|
||||
);
|
||||
|
||||
$stat_model = new Stat();
|
||||
|
||||
$result = $stat_model->addShopStat($stat_data);
|
||||
return $result;
|
||||
}
|
||||
|
||||
}
|
||||
42
app/model/stat/MemberStat.php
Executable file
42
app/model/stat/MemberStat.php
Executable file
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
namespace app\model\stat;
|
||||
|
||||
use app\model\BaseModel;
|
||||
use app\model\system\Stat;
|
||||
|
||||
/**
|
||||
* 统计
|
||||
* @author Administrator
|
||||
*
|
||||
*/
|
||||
class MemberStat extends BaseModel
|
||||
{
|
||||
/**
|
||||
* 用于新增会员(便于之后扩展统计各个场景添加的会员)
|
||||
* @param $params
|
||||
* @return array
|
||||
*/
|
||||
public function addMemberStat($params)
|
||||
{
|
||||
$member_id = $params[ 'member_id' ] ?? 0;
|
||||
$site_id = $params[ 'site_id' ] ?? 0;
|
||||
|
||||
$stat_data = array (
|
||||
'site_id' => $site_id,
|
||||
'member_count' => 1
|
||||
);
|
||||
$stat_model = new Stat();
|
||||
$result = $stat_model->addShopStat($stat_data);
|
||||
return $result;
|
||||
}
|
||||
|
||||
}
|
||||
56
app/model/stat/MemberWithdrawStat.php
Executable file
56
app/model/stat/MemberWithdrawStat.php
Executable file
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
namespace app\model\stat;
|
||||
|
||||
use app\model\BaseModel;
|
||||
use app\model\system\Stat;
|
||||
use think\facade\Log;
|
||||
|
||||
/**
|
||||
* 会员提现统计
|
||||
* @author Administrator
|
||||
*
|
||||
*/
|
||||
class MemberWithdrawStat extends BaseModel
|
||||
{
|
||||
/**
|
||||
* 用于会员提现
|
||||
* @param $params
|
||||
* @return array
|
||||
*/
|
||||
public function addMemberWithdrawStat($params)
|
||||
{
|
||||
$id = $params[ 'id' ];
|
||||
$site_id = $params[ 'site_id' ] ?? 0;
|
||||
$condition = array (
|
||||
[ 'id', '=', $id ],
|
||||
[ 'site_id', '=', $site_id ]
|
||||
);
|
||||
$info = model('member_withdraw')->getInfo($condition);
|
||||
if (empty($info))
|
||||
return $this->error();
|
||||
|
||||
$member_withdraw_total_money = $info[ 'apply_money' ];
|
||||
$stat_data = array (
|
||||
'site_id' => $site_id,
|
||||
'member_withdraw_count' => 1,
|
||||
'member_withdraw_total_money' => $member_withdraw_total_money
|
||||
);
|
||||
|
||||
$stat_model = new Stat();
|
||||
|
||||
Log::write('addMemberWithdrawStat' . json_encode($stat_data));
|
||||
|
||||
$result = $stat_model->addShopStat($stat_data);
|
||||
return $result;
|
||||
}
|
||||
|
||||
}
|
||||
221
app/model/stat/OrderStat.php
Executable file
221
app/model/stat/OrderStat.php
Executable file
@@ -0,0 +1,221 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
namespace app\model\stat;
|
||||
|
||||
use app\model\BaseModel;
|
||||
use app\model\system\Stat;
|
||||
use app\model\store\Stat as StoreStat;
|
||||
|
||||
/**
|
||||
* 统计
|
||||
* @author Administrator
|
||||
*
|
||||
*/
|
||||
class OrderStat extends BaseModel
|
||||
{
|
||||
/**
|
||||
* 用于订单(同与订单创建后调用)
|
||||
* @param $params
|
||||
* @return array
|
||||
*/
|
||||
public function addOrderCreateStat($params)
|
||||
{
|
||||
$order_id = $params[ 'order_id' ];
|
||||
$site_id = $params[ 'site_id' ] ?? 0;
|
||||
$order_condition = array (
|
||||
[ 'order_id', '=', $order_id ],
|
||||
);
|
||||
if ($site_id > 0) {
|
||||
$order_condition[] = [ 'site_id', '=', $site_id ];
|
||||
}
|
||||
$order_info = $params['order_data'] ?? [];
|
||||
if(empty($order_info)){
|
||||
$order_info = model('order')->getInfo($order_condition);
|
||||
if (empty($order_info))
|
||||
return $this->error();
|
||||
}
|
||||
|
||||
$order_create_money = $order_info[ 'order_money' ];
|
||||
$goods_num = numberFormat($order_info[ 'goods_num' ]);
|
||||
//如果是第一笔订单才能累加下单会员数
|
||||
$time_region = getDayStartAndEndTime();
|
||||
$today_start_time = $time_region[ 'start_time' ];
|
||||
$today_end_time = $time_region[ 'end_time' ];
|
||||
|
||||
$stat_data = array (
|
||||
'site_id' => $site_id,
|
||||
'order_create_count' => 1,//下单数
|
||||
'order_create_money' => $order_create_money,// 销售额 order_money
|
||||
'goods_order_count' => $goods_num,
|
||||
);
|
||||
//订单商品种数
|
||||
$order_goods_ids = model('order_goods')->getColumn($order_condition, 'goods_id');
|
||||
$order_goods_ids = array_unique($order_goods_ids);
|
||||
$other_order_condition = array (
|
||||
[ 'order_id', '<>', $order_id ],
|
||||
[ 'goods_id', 'in', $order_goods_ids ],
|
||||
[ 'create_time', 'between', [ $today_start_time, $today_end_time ] ],
|
||||
);
|
||||
$other_order_goods_ids = model('order_goods')->getColumn($other_order_condition, 'goods_id');
|
||||
$other_order_goods_ids = array_unique($other_order_goods_ids);
|
||||
$goods_order_type_count = count($order_goods_ids) - count($other_order_goods_ids);
|
||||
if ($goods_order_type_count > 0) {
|
||||
$stat_data[ 'goods_order_type_count' ] = $goods_order_type_count;
|
||||
}
|
||||
$stat_model = new Stat();
|
||||
$result = $stat_model->addShopStat($stat_data);
|
||||
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 用于订单(同与订单支付后调用)
|
||||
* @param $params
|
||||
* @return array
|
||||
*/
|
||||
public function addOrderPayStat($params)
|
||||
{
|
||||
$order_id = $params[ 'order_id' ];
|
||||
$site_id = $params[ 'site_id' ] ?? 0;
|
||||
$order_condition = array (
|
||||
[ 'order_id', '=', $order_id ],
|
||||
);
|
||||
if ($site_id > 0) {
|
||||
$order_condition[] = [ 'site_id', '=', $site_id ];
|
||||
}
|
||||
$order_info = model('order')->getInfo($order_condition);
|
||||
if (empty($order_info))
|
||||
return $this->error();
|
||||
|
||||
$order_money = $order_info[ 'order_money' ];
|
||||
$pay_money = $order_info[ 'pay_money' ];
|
||||
$member_id = $order_info[ 'member_id' ];
|
||||
$delivery_money = $order_info[ 'delivery_money' ];
|
||||
$goods_num = numberFormat($order_info[ 'goods_num' ]);
|
||||
//如果是第一笔订单才能累加下单会员数
|
||||
$time_region = getDayStartAndEndTime();
|
||||
$today_start_time = $time_region[ 'start_time' ];
|
||||
$today_end_time = $time_region[ 'end_time' ];
|
||||
|
||||
$today_order_condition = array (
|
||||
[ 'member_id', '=', $member_id ],
|
||||
[ 'pay_time', 'between', [ $today_start_time, $today_end_time ] ],
|
||||
[ 'order_id', '<>', $order_id ]
|
||||
);
|
||||
|
||||
$balance_deduction = 0.00;
|
||||
$pay_info = model('pay')->getInfo([['out_trade_no', '=', $order_info['out_trade_no']]], 'balance, balance_money');
|
||||
if(!empty($pay_info)) $balance_deduction = $pay_info['balance'] + $pay_info['balance_money'];
|
||||
|
||||
|
||||
$stat_data = array (
|
||||
'site_id' => $site_id,
|
||||
'order_pay_count' => 1,
|
||||
'order_total' => $order_money,
|
||||
'shipping_total' => $delivery_money,
|
||||
'goods_pay_count' => $goods_num,
|
||||
'order_pay_money' => $pay_money,
|
||||
'balance_deduction' => $balance_deduction
|
||||
);
|
||||
$count = model('order')->getCount($today_order_condition);
|
||||
if ($count == 0) {
|
||||
$stat_data[ 'order_member_count' ] = 1;
|
||||
}
|
||||
//销售量 order_num
|
||||
|
||||
//销售额 order_money
|
||||
$stat_model = new Stat();
|
||||
$result = $stat_model->addShopStat($stat_data);
|
||||
|
||||
//门店销售额
|
||||
$store_id = $order_info[ 'store_id' ] ?? 0;
|
||||
if ($store_id > 0) {
|
||||
$store_stat_model = new \app\model\store\Stat();
|
||||
$store_stat_model->addStoreStat(
|
||||
[
|
||||
'site_id' => $site_id,
|
||||
'store_id' => $store_id,
|
||||
'online_pay_money' => $pay_money,
|
||||
'balance_deduction' => $balance_deduction
|
||||
]
|
||||
);
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 退款维权统计
|
||||
* @param $params
|
||||
* @return array
|
||||
*/
|
||||
public function addOrderRefundStat($params)
|
||||
{
|
||||
$order_goods_id = $params[ 'order_goods_id' ];
|
||||
$site_id = $params[ 'site_id' ] ?? 0;
|
||||
$order_goods_condition = array (
|
||||
[ 'order_goods_id', '=', $order_goods_id ],
|
||||
);
|
||||
if ($site_id > 0) {
|
||||
$order_goods_condition[] = [ 'site_id', '=', $site_id ];
|
||||
}
|
||||
$order_goods_info = model('order_goods')->getInfo($order_goods_condition);
|
||||
if (empty($order_goods_info))
|
||||
return $this->error();
|
||||
|
||||
|
||||
$order_condition = array (
|
||||
[ 'order_id', '=', $order_goods_info[ 'order_id' ] ],
|
||||
);
|
||||
if ($site_id > 0) {
|
||||
$order_condition[] = [ 'site_id', '=', $site_id ];
|
||||
}
|
||||
$order_info = model('order')->getInfo($order_condition);
|
||||
if (empty($order_info))
|
||||
return $this->error();
|
||||
|
||||
$stat_data = array (
|
||||
'site_id' => $site_id,
|
||||
'order_refund_count' => 1
|
||||
);
|
||||
//todo 统计的时候用的是真实退款还是总退款(包含抵扣项)
|
||||
$refund_money = $params[ 'refund_pay_money' ];
|
||||
$stat_data[ 'refund_total' ] = $refund_money;
|
||||
$stat_model = new Stat();
|
||||
$result = $stat_model->addShopStat($stat_data);
|
||||
// 门店退款统计
|
||||
if ($order_goods_info[ 'store_id' ]) {
|
||||
$order_scene = model('order')->getValue([ [ 'order_id', '=', $order_goods_info[ 'order_id' ] ] ], 'order_scene');
|
||||
if ($order_scene == 'cashier') {
|
||||
( new StoreStat() )->addStoreStat([
|
||||
'site_id' => $site_id,
|
||||
'store_id' => $order_goods_info[ 'store_id' ],
|
||||
'refund_count' => 1,
|
||||
'refund_money' => $refund_money
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
//门店退款额
|
||||
$store_id = $order_info[ 'store_id' ] ?? 0;
|
||||
if ($store_id > 0 && $order_info['order_scene'] == 'online') {
|
||||
$store_stat_model = new \app\model\store\Stat();
|
||||
$store_stat_model->addStoreStat(
|
||||
[
|
||||
'site_id' => $site_id,
|
||||
'store_id' => $store_id,
|
||||
'online_refund_money' => $refund_money
|
||||
]
|
||||
);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
70
app/model/stat/RechargeStat.php
Executable file
70
app/model/stat/RechargeStat.php
Executable file
@@ -0,0 +1,70 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
namespace app\model\stat;
|
||||
|
||||
use app\model\BaseModel;
|
||||
use app\model\system\Stat;
|
||||
|
||||
/**
|
||||
* 储值统计
|
||||
* @author Administrator
|
||||
*
|
||||
*/
|
||||
class RechargeStat extends BaseModel
|
||||
{
|
||||
/**
|
||||
* 用于充值订单(同与订单支付后调用)
|
||||
* @param $params
|
||||
* @return array
|
||||
*/
|
||||
public function addRechargeStat($params)
|
||||
{
|
||||
$order_id = $params[ 'order_id' ];
|
||||
$site_id = $params[ 'site_id' ] ?? 0;
|
||||
$order_condition = array (
|
||||
[ 'order_id', '=', $order_id ],
|
||||
[ 'site_id', '=', $site_id ]
|
||||
);
|
||||
$order_info = model('member_recharge_order')->getInfo($order_condition);
|
||||
if (empty($order_info))
|
||||
return $this->error();
|
||||
|
||||
$order_money = $order_info[ 'price' ];
|
||||
$member_id = $order_info[ 'member_id' ];
|
||||
|
||||
//如果是第一笔订单才能累加下单会员数
|
||||
$today_start_time = 0;//当日开始时间
|
||||
$today_end_time = 0;//当日结束时间
|
||||
$today_order_condition = array (
|
||||
[ 'member_id', '=', $member_id ],
|
||||
[ 'pay_time', 'between', [ $today_start_time, $today_end_time ] ],
|
||||
[ 'order_id', '<>', $order_id ]
|
||||
);
|
||||
$stat_data = array (
|
||||
'site_id' => $site_id,
|
||||
'member_recharge_count' => 1,
|
||||
'member_recharge_total_money' => $order_money,
|
||||
|
||||
);
|
||||
$count = model('member_recharge_order')->getCount($today_order_condition);
|
||||
if ($count == 0) {
|
||||
$stat_data[ 'member_recharge_member_count' ] = 1;
|
||||
}
|
||||
//销售量 order_num
|
||||
|
||||
//销售额 order_money
|
||||
$stat_model = new Stat();
|
||||
|
||||
$result = $stat_model->addShopStat($stat_data);
|
||||
return $result;
|
||||
}
|
||||
|
||||
}
|
||||
168
app/model/stat/StatShop.php
Executable file
168
app/model/stat/StatShop.php
Executable file
@@ -0,0 +1,168 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
namespace app\model\stat;
|
||||
|
||||
use app\model\BaseModel;
|
||||
use Carbon\Carbon;
|
||||
|
||||
use extend\Stat;
|
||||
use think\facade\Db;
|
||||
use think\facade\Log;
|
||||
|
||||
/**
|
||||
* 统计
|
||||
* @author Administrator
|
||||
*
|
||||
*/
|
||||
class StatShop extends BaseModel
|
||||
{
|
||||
/**
|
||||
* 添加店铺统计(按照天统计)
|
||||
* @param array $data
|
||||
*/
|
||||
public function addShopStat($data)
|
||||
{
|
||||
$carbon = Carbon::now();
|
||||
$dir = __UPLOAD__.'/stat/stat_shop/';
|
||||
if (!is_dir($dir) && !mkdir($dir, 0777, true) && !is_dir($dir)) {
|
||||
return $this->error(sprintf('Directory "%s" was not created', $dir));
|
||||
}
|
||||
$filename = $dir.$carbon->year.'_'.$carbon->month.'_'.$carbon->day.'_'.$carbon->second.'_'.unique_random().'.json';
|
||||
$stat_extend = new Stat($filename, 'stat_shop');
|
||||
$stat_extend->handleData($data);//写入文件
|
||||
|
||||
//增加当天时统计
|
||||
$this->addShopHourStat($data, $carbon);
|
||||
return $this->success();
|
||||
}
|
||||
|
||||
public function cronShopStat()
|
||||
{
|
||||
$path = __UPLOAD__.'/stat/stat_shop';
|
||||
if(!is_dir($path)) return;
|
||||
|
||||
$result = $this->scanFile($path);
|
||||
if(empty($result)) return;
|
||||
|
||||
try {
|
||||
$json_array = [];
|
||||
foreach ($result as $key => $val){
|
||||
$stat_extend = new Stat($path.'/'.$val, 'stat_shop');
|
||||
$json_array[] = $stat_extend->load();
|
||||
unlink($path.'/'.$val);
|
||||
}
|
||||
|
||||
|
||||
$data_array = [];
|
||||
foreach ($json_array as $json_k => $json_v){
|
||||
$k = $json_v['year'].'_'.$json_v['month'].'_'.$json_v['day'];
|
||||
if (isset($data_array[$k])){
|
||||
foreach ($data_array[$k] as $data_k => $data_v){
|
||||
if($data_k != 'site_id' && $data_k != 'year' && $data_k != 'month' && $data_k != 'day' && $data_k != 'day_time'){
|
||||
if ($json_v[$data_k] > 0) {
|
||||
$data_array[$k][$data_k] += $json_v[$data_k];
|
||||
} else if ($json_v[$data_k] < 0) {
|
||||
$data_array[$k][$data_k] -= abs($json_v[$data_k]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}else{
|
||||
$data_array[$k] = $json_v;
|
||||
}
|
||||
}
|
||||
Log::write(time().'stat_shop_'.json_encode($data_array));
|
||||
$system_stat = new \app\model\system\Stat();
|
||||
foreach ($data_array as $json_k => $json_v){
|
||||
$system_stat->addStatShopModel($json_v);
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 增加当日的时统计记录
|
||||
* @param $data
|
||||
* @param $carbon
|
||||
* @return array
|
||||
*/
|
||||
public function addShopHourStat($data, $carbon)
|
||||
{
|
||||
$dir = __UPLOAD__.'/stat/stat_shop_hour/';
|
||||
if (!is_dir($dir) && !mkdir($dir, 0777, true) && !is_dir($dir)) {
|
||||
return $this->error(sprintf('Directory "%s" was not created', $dir));
|
||||
}
|
||||
$filename = $dir.$carbon->year.'_'.$carbon->month.'_'.$carbon->day.'_'.$carbon->hour.'_'.$carbon->second.'_'.unique_random().'.json';
|
||||
$stat_extend = new Stat($filename, 'stat_shop_hour');
|
||||
$stat_extend->handleData($data);//写入文件
|
||||
return $this->success();
|
||||
}
|
||||
|
||||
public function cronShopStatHour()
|
||||
{
|
||||
$path = __UPLOAD__.'/stat/stat_shop_hour';
|
||||
if(!is_dir($path)) return;
|
||||
|
||||
$result = $this->scanFile($path);
|
||||
if(empty($result)) return;
|
||||
|
||||
try {
|
||||
$json_array = [];
|
||||
foreach ($result as $key => $val){
|
||||
$stat_extend = new Stat($path.'/'.$val, 'stat_shop_hour');
|
||||
$json_array[] = $stat_extend->load();
|
||||
unlink($path.'/'.$val);
|
||||
}
|
||||
|
||||
$data_array = [];
|
||||
foreach ($json_array as $json_k => $json_v){
|
||||
$k = $json_v['year'].'_'.$json_v['month'].'_'.$json_v['day'];
|
||||
if (isset($data_array[$k])){
|
||||
foreach ($data_array[$k] as $data_k => $data_v){
|
||||
if($data_k != 'site_id' && $data_k != 'year' && $data_k != 'month' && $data_k != 'day' && $data_k != 'day_time'){
|
||||
if ($json_v[$data_k] > 0) {
|
||||
$data_array[$k][$data_k] += $json_v[$data_k];
|
||||
} else if ($json_v[$data_k] < 0) {
|
||||
$data_array[$k][$data_k] -= abs($json_v[$data_k]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}else{
|
||||
$data_array[$k] = $json_v;
|
||||
}
|
||||
}
|
||||
Log::write(time().'stat_shop_hour_'.json_encode($data_array));
|
||||
$system_stat = new \app\model\system\Stat();
|
||||
foreach ($json_array as $json_k => $json_v){
|
||||
$system_stat->addStatShopHourModel($json_v);
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function scanFile($path) {
|
||||
$result = [];
|
||||
$files = scandir($path);
|
||||
foreach ($files as $file) {
|
||||
if ($file != '.' && $file != '..') {
|
||||
if (is_dir($path . '/' . $file)) {
|
||||
$this->scanFile($path . '/' . $file);
|
||||
} else {
|
||||
$result[] = basename($file);
|
||||
}
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
181
app/model/stat/StatStore.php
Executable file
181
app/model/stat/StatStore.php
Executable file
@@ -0,0 +1,181 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
namespace app\model\stat;
|
||||
|
||||
use app\model\BaseModel;
|
||||
use Carbon\Carbon;
|
||||
|
||||
use extend\Stat;
|
||||
use think\facade\Db;
|
||||
use think\facade\Log;
|
||||
|
||||
|
||||
/**
|
||||
* 统计
|
||||
* @author Administrator
|
||||
*
|
||||
*/
|
||||
class StatStore extends BaseModel
|
||||
{
|
||||
/**
|
||||
* 添加门店统计(按照天统计)
|
||||
* @param array $data
|
||||
*/
|
||||
public function addStoreStat($data)
|
||||
{
|
||||
$dir = __UPLOAD__.'/stat/stat_store/';
|
||||
if (!is_dir($dir) && !mkdir($dir, 0777, true) && !is_dir($dir)) {
|
||||
return $this->error(sprintf('Directory "%s" was not created', $dir));
|
||||
}
|
||||
$carbon = Carbon::now();
|
||||
$filename = $dir.$carbon->year.'_'.$carbon->month.'_'.$carbon->day.'_'.$carbon->second.'_'.unique_random().'.json';
|
||||
$stat_extend = new Stat($filename, 'stat_store');
|
||||
$stat_extend->handleData($data);//写入文件
|
||||
|
||||
//增加当天时统计
|
||||
$this->addStoreHourStat($data, $carbon);
|
||||
|
||||
//增加店铺统计
|
||||
$stat_shop = [];
|
||||
foreach ($data as $k => $value) {
|
||||
if($k != 'site_id' && $k != 'store_id') $stat_shop[ 'cashier_' . $k ] = $value;
|
||||
}
|
||||
$stat_shop_model = new StatShop();
|
||||
$stat_shop_model->addShopStat($stat_shop);
|
||||
|
||||
return $this->success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 门店统计计划任务(按天)
|
||||
*/
|
||||
public function cronStatStore()
|
||||
{
|
||||
$path = __UPLOAD__.'/stat/stat_store';
|
||||
if(!is_dir($path)) return;
|
||||
|
||||
$result = $this->scanFile($path);
|
||||
if(empty($result)) return;
|
||||
|
||||
try {
|
||||
$json_array = [];
|
||||
foreach ($result as $key => $val){
|
||||
$stat_extend = new Stat($path.'/'.$val, 'stat_store');
|
||||
$json_array[] = $stat_extend->load();
|
||||
unlink($path.'/'.$val);
|
||||
}
|
||||
|
||||
$data_array = [];
|
||||
foreach ($json_array as $json_k => $json_v){
|
||||
$k = $json_v['year'].'_'.$json_v['month'].'_'.$json_v['day'];
|
||||
if (isset($data_array[$k])){
|
||||
foreach ($data_array[$k] as $data_k => $data_v){
|
||||
if($data_k != 'site_id' && $data_k != 'year' && $data_k != 'month' && $data_k != 'day' && $data_k != 'day_time'){
|
||||
if ($json_v[$data_k] > 0) {
|
||||
$data_array[$k][$data_k] += $json_v[$data_k];
|
||||
} else if ($json_v[$data_k] < 0) {
|
||||
$data_array[$k][$data_k] -= abs($json_v[$data_k]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}else{
|
||||
$data_array[$k] = $json_v;
|
||||
}
|
||||
}
|
||||
Log::write(time().'stat_store'.json_encode($data_array));
|
||||
$store_stat = new \app\model\store\Stat();
|
||||
foreach ($json_array as $json_k => $json_v){
|
||||
$store_stat->addStatStoreModel($json_v);
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 增加当日的时统计记录
|
||||
* @param $data
|
||||
* @param $carbon
|
||||
* @return array
|
||||
*/
|
||||
public function addStoreHourStat($data, $carbon)
|
||||
{
|
||||
$dir = __UPLOAD__.'/stat/stat_store_hour/';
|
||||
if (!is_dir($dir) && !mkdir($dir, 0777, true) && !is_dir($dir)) {
|
||||
return $this->error(sprintf('Directory "%s" was not created', $dir));
|
||||
}
|
||||
$filename = $dir.$carbon->year.'_'.$carbon->month.'_'.$carbon->day.'_'.$carbon->hour.'_'.$carbon->second.'_'.unique_random().'.json';
|
||||
$stat_extend = new Stat($filename, 'stat_store_hour');
|
||||
$stat_extend->handleData($data);//写入文件
|
||||
return $this->success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 门店统计计划任务(按时)
|
||||
*/
|
||||
public function cronStatStoreHour()
|
||||
{
|
||||
$path = __UPLOAD__.'/stat/stat_store_hour';
|
||||
if(!is_dir($path)) return;
|
||||
|
||||
$result = $this->scanFile($path);
|
||||
if(empty($result)) return;
|
||||
|
||||
try {
|
||||
$json_array = [];
|
||||
foreach ($result as $key => $val){
|
||||
$stat_extend = new Stat($path.'/'.$val, 'stat_store_hour');
|
||||
$json_array[] = $stat_extend->load();
|
||||
unlink($path.'/'.$val);
|
||||
}
|
||||
|
||||
$data_array = [];
|
||||
foreach ($json_array as $json_k => $json_v){
|
||||
$k = $json_v['year'].'_'.$json_v['month'].'_'.$json_v['day'];
|
||||
if (isset($data_array[$k])){
|
||||
foreach ($data_array[$k] as $data_k => $data_v){
|
||||
if($data_k != 'site_id' && $data_k != 'year' && $data_k != 'month' && $data_k != 'day' && $data_k != 'day_time'){
|
||||
if ($json_v[$data_k] > 0) {
|
||||
$data_array[$k][$data_k] += $json_v[$data_k];
|
||||
} else if ($json_v[$data_k] < 0) {
|
||||
$data_array[$k][$data_k] -= abs($json_v[$data_k]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}else{
|
||||
$data_array[$k] = $json_v;
|
||||
}
|
||||
}
|
||||
Log::write(time().'stat_store_hour'.json_encode($data_array));
|
||||
$store_stat = new \app\model\store\Stat();
|
||||
foreach ($json_array as $json_k => $json_v){
|
||||
$store_stat->addStatStoreHourModel($json_v);
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public function scanFile($path) {
|
||||
$result = [];
|
||||
$files = scandir($path);
|
||||
foreach ($files as $file) {
|
||||
if ($file != '.' && $file != '..') {
|
||||
if (is_dir($path . '/' . $file)) {
|
||||
$this->scanFile($path . '/' . $file);
|
||||
} else {
|
||||
$result[] = basename($file);
|
||||
}
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
58
app/model/stat/VisitStat.php
Executable file
58
app/model/stat/VisitStat.php
Executable file
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
namespace app\model\stat;
|
||||
|
||||
use app\model\BaseModel;
|
||||
use app\model\system\Stat;
|
||||
|
||||
/**
|
||||
* 统计
|
||||
* @author Administrator
|
||||
*
|
||||
*/
|
||||
class VisitStat extends BaseModel
|
||||
{
|
||||
/**
|
||||
* 用于多场景访问量
|
||||
* @param $params
|
||||
* @return array
|
||||
*/
|
||||
public function addVisitStat($params)
|
||||
{
|
||||
$app_module = $params[ 'app_module' ] ?? 'wechat';
|
||||
// switch($app_module){
|
||||
// case 'h5':
|
||||
// $visit_name = 'h5_visit_count';
|
||||
// break;
|
||||
// case 'weapp':
|
||||
// $visit_name = 'weapp_visit_count';
|
||||
// break;
|
||||
// case 'wechat':
|
||||
// $visit_name = 'wechat_visit_count';
|
||||
// break;
|
||||
// case 'pc':
|
||||
// $visit_name = 'pc_visit_count';
|
||||
// break;
|
||||
// }
|
||||
$visit_name = $app_module . '_visit_count';
|
||||
$site_id = $params[ 'site_id' ] ?? 0;
|
||||
|
||||
$stat_data = array (
|
||||
'site_id' => $site_id,
|
||||
'visit_count' => 1,
|
||||
$visit_name => 1
|
||||
);
|
||||
$stat_model = new Stat();
|
||||
$result = $stat_model->addShopStat($stat_data);
|
||||
return $result;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user