|
|
@@ -32,10 +32,116 @@ class IndexController extends BaseAdminController
|
|
|
{
|
|
|
public array $notNeedLogin = ['index'];
|
|
|
|
|
|
- public function index(){
|
|
|
- $order_list = Order::select();
|
|
|
+ public function index()
|
|
|
+ {
|
|
|
|
|
|
- return view('/count/index', ['id'=>2025]);
|
|
|
+ // 获取上个月的第一天
|
|
|
+ $firstDayOfLastMonth = strtotime(date('Y-m-01', strtotime('last month')));
|
|
|
+
|
|
|
+ // 获取上个月最后一天
|
|
|
+ $lastDayOfLastMonth = strtotime(date('Y-m-t', strtotime('last month')) . ' 23:59:59');
|
|
|
+
|
|
|
+ // 获取上个月的第一天
|
|
|
+ $firstDayOfNowMonth = strtotime(date('Y-m-01'));
|
|
|
+
|
|
|
+ // 获取上个月最后一天
|
|
|
+ $lastDayOfNowMonth = strtotime(date('Y-m-t') . ' 23:59:59');
|
|
|
+
|
|
|
+ $where = [];
|
|
|
+ $whereTime = [];
|
|
|
+
|
|
|
+ $whereLastTime[] = ['o.create_time', 'between', [$firstDayOfLastMonth, $lastDayOfLastMonth]];
|
|
|
+
|
|
|
+ $whereNowTime[] = ['o.create_time', 'between', [$firstDayOfNowMonth, $lastDayOfNowMonth]];
|
|
|
+
|
|
|
+ $where[]=['o.pay_status','=',1];
|
|
|
+
|
|
|
+ $lastOrderGoodsInfo = OrderGoods::alias('og')->leftJoin('order o','o.id = og.order_id')
|
|
|
+ ->field('og.goods_id,og.goods_name name,sum(og.goods_num) last_total_num')
|
|
|
+ ->where($where)->where($whereLastTime)
|
|
|
+ ->group('og.goods_id,og.goods_name')
|
|
|
+ ->order('last_total_num desc')
|
|
|
+ ->select()->toArray();
|
|
|
+
|
|
|
+ $nowOrderGoodsInfo = OrderGoods::alias('og')->leftJoin('order o','o.id = og.order_id')
|
|
|
+ ->field('og.goods_id,og.goods_name name,sum(og.goods_num) now_total_num')
|
|
|
+ ->where($where)->where($whereNowTime)
|
|
|
+ ->group('og.goods_id,og.goods_name')
|
|
|
+ ->order('now_total_num desc')
|
|
|
+ ->select()->toArray();
|
|
|
+
|
|
|
+ $newGoodsData = [];
|
|
|
+ if(count($lastOrderGoodsInfo)>5){
|
|
|
+ foreach($lastOrderGoodsInfo as $lk=>$lv){
|
|
|
+
|
|
|
+ if($lk>4)break;
|
|
|
+ foreach($nowOrderGoodsInfo as $nk=>$nv){
|
|
|
+ $lastOrderGoodsInfo[$lk]['now_total_num'] = 0;
|
|
|
+ if($lv['goods_id'] == $nv['goods_id'] ){
|
|
|
+ $lv['now_total_num'] = $nv['now_total_num'];
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $newGoodsData[] =$lv;
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ if(empty($lastOrderGoodsInfo)){
|
|
|
+ foreach($nowOrderGoodsInfo as $nk=>$nv){
|
|
|
+ if($nk>4)break;
|
|
|
+ $nv['last_total_num'] = 0;
|
|
|
+ $newGoodsData[] = $nv;
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ $count = 0;
|
|
|
+ $lastGoodsIdArr = [];
|
|
|
+ foreach($lastOrderGoodsInfo as $lk=>$lv){
|
|
|
+ $count++;
|
|
|
+ array_push($lastGoodsIdArr,$lv['goods_id']);
|
|
|
+ if($lk>4)break;
|
|
|
+ foreach($nowOrderGoodsInfo as $nk=>$nv){
|
|
|
+ $lv['now_total_num'] = 0;
|
|
|
+ if($lv['goods_id'] == $nv['goods_id'] ){
|
|
|
+ $lv['now_total_num'] = $nv['now_total_num'];
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $newGoodsData[] =$lv;
|
|
|
+ }
|
|
|
+
|
|
|
+ if($count<5){
|
|
|
+ foreach($nowOrderGoodsInfo as &$nv){
|
|
|
+ if($count>=5) break;
|
|
|
+ if(in_array($nv['goods_id'],$lastGoodsIdArr)) continue;
|
|
|
+ $nv['last_total_num'] = 0;
|
|
|
+ $nv['growth'] = '100%';
|
|
|
+ $nv['type'] = 1;
|
|
|
+ $count ++;
|
|
|
+ $newGoodsData[] = $nv;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ foreach ($newGoodsData as &$ngv){
|
|
|
+ if($ngv['last_total_num']==0){
|
|
|
+ $ngv['growth'] = '100%';
|
|
|
+ $ngv['type'] = 1;
|
|
|
+ }else{
|
|
|
+ if($ngv['last_total_num'] < $ngv['now_total_num']){
|
|
|
+ $ngv['growth'] = round(($ngv['now_total_num'] - $ngv['last_total_num'])/$ngv['last_total_num']*100 ,0). '%';
|
|
|
+ $ngv['type'] = 1;
|
|
|
+ }else if($ngv['last_total_num'] > $ngv['now_total_num']){
|
|
|
+ $ngv['growth'] = round(($ngv['last_total_num'] - $ngv['now_total_num'])/$ngv['last_total_num']*100 ,0). '%';
|
|
|
+ $ngv['type'] = 0;
|
|
|
+ }else{
|
|
|
+ $ngv['growth'] = 0;
|
|
|
+ $ngv['type'] = 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $ngv['name'] = mb_substr( $ngv['name'], 0, 6, "UTF-8") . '....' ;
|
|
|
+ }
|
|
|
+
|
|
|
+ return view('/count/index', ['newGoodsData' => $newGoodsData]);
|
|
|
}
|
|
|
|
|
|
}
|