| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- <?php
- // +----------------------------------------------------------------------
- // | likeshop100%开源免费商用商城系统
- // +----------------------------------------------------------------------
- // | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
- // | 开源版本可自由商用,可去除界面版权logo
- // | 商业版本务必购买商业授权,以免引起法律纠纷
- // | 禁止对系统程序代码以任何目的,任何形式的再发布
- // | gitee下载:https://gitee.com/likeshop_gitee
- // | github下载:https://github.com/likeshop-github
- // | 访问官网:https://www.likeshop.cn
- // | 访问社区:https://home.likeshop.cn
- // | 访问手册:http://doc.likeshop.cn
- // | 微信公众号:likeshop技术社区
- // | likeshop团队 版权所有 拥有最终解释权
- // +----------------------------------------------------------------------
- // | author: likeshopTeam
- // +----------------------------------------------------------------------
- namespace app\count\controller;
- use app\common\model\Order;
- use app\common\model\OrderGoods;
- use think\facade\Config;
- /**
- * 配置控制器
- * Class ConfigController
- * @package app\adminapi\controller
- */
- class IndexController extends BaseAdminController
- {
- public array $notNeedLogin = ['index'];
- public function index()
- {
- /** 商品统计 start **/
- // 获取上个月的第一天
- $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") . '....' ;
- }
- /** 商品统计 end **/
-
- return view('/count/index', ['newGoodsData' => $newGoodsData]);
- }
- }
|