| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425 |
- <?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\asset\AssetLeaseInfo;
- use app\common\model\Order;
- use app\common\model\OrderGoods;
- use app\common\model\GoodsCategory as GoodsCategoryModel;
- use app\common\model\Goods;
- use app\common\model\Distribution;
- use app\common\model\AfterSale;
- 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(isset($ngv['now_total_num'])){
- }else{
- $ngv['now_total_num'] = 0;
- }
- 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") . '....';
- }
- $data['newGoodsData'] = $newGoodsData;
- /** 商品统计 end **/
- /** 分类销量排名 start**/
- $ogcwhere = [];
- // $ogcwhere[] = ['gc.level', '=', '1'];
- $OrderGoodsCategoryInfos = OrderGoods::alias('og')
- ->leftJoin('order o', 'o.id = og.order_id')
- ->leftJoin('goods g', 'g.id = og.goods_id')
- ->leftJoin('goods_category_index gci', 'gci.goods_id=g.id')
- ->leftJoin('goods_category gc', 'gc.id = gci.category_id')
- ->field('gc.id,gc.`name` ,gc.pid,sum( og.goods_num) total_num')
- ->where($where)->where($ogcwhere)
- ->group('gc.name')
- ->select()->toArray();
- $OrderGoodsCategoryInfo = [];
- foreach($OrderGoodsCategoryInfos as &$ogcv){
- $pid = $ogcv['pid'];
- $id = $ogcv['id'];
- $new_data=[];
- $name = $ogcv['name'];
- $total_num = $ogcv['total_num'];
- while($pid){
- if($pid == 0){
- break;
- }else{
- $categoryInfo = GoodsCategoryModel::find($pid);
- $pid = $categoryInfo['pid'];
- $id = $categoryInfo['id'];
- $name = $categoryInfo['name'];
- }
- }
- if(isset($OrderGoodsCategoryInfo[$id])){
- $new_total_num = $OrderGoodsCategoryInfo[$id]['total_num']+$total_num;
- $OrderGoodsCategoryInfo[$id]['total_num'] = $new_total_num;
- }else{
- $new_data['total_num'] = $total_num;
- $new_data['name'] = $name;
- $OrderGoodsCategoryInfo[$id] = $new_data;
- }
- }
- $goods_category_data = array_column($OrderGoodsCategoryInfo, 'total_num');
- $data['order_goods_category'] = $OrderGoodsCategoryInfo;
- $count = count($goods_category_data);
- while ($count) {
- if ($count < 3) {
- array_push($goods_category_data, 0);
- } else {
- break;
- }
- $count = count($goods_category_data);
- }
- $data['goods_category_data'] = json_encode($goods_category_data);
- $ogcK = 0;
- $chars_category = [];
- foreach ($OrderGoodsCategoryInfo as $ogcv) {
- $ogcK++;
- $random_data = [30, 20, 50, 40, 100, 200, 300];
- shuffle($random_data);
- $randomValue = $random_data[2];
- $max = substr($ogcv['total_num'] + $randomValue, 0, -1) . '0';
- $ogcv['max'] = $max;
- unset($ogcv['total_num']);
- $chars_category[] = $ogcv;
- }
- while ($ogcK) {
- $categorys['name'] = '填充';
- $categorys['max'] = '0';
- if ($ogcK < 3) {
- $chars_category[] = $categorys;
- } else {
- break;
- }
- $ogcK++;
- }
- $data['chars_category'] = json_encode($chars_category);
- /** 分类销量排名 end**/
- /** middle start **/
- //商品数量
- $goodswhere = [];
- $goodswhere[] = ['status', '=', 1];
- $goodswhere[] = ['delete_time', '=', NULL];
- $goods_count = Goods::where($goodswhere)->count();
- $middle['goods_number'] = $goods_count;
- //合作商
- $diswhere = [];
- $diswhere[] = ['is_distribution', '=', 1];
- $diswhere[] = ['delete_time', '=', NULL];
- $distribution_count = Distribution::where($diswhere)->count();
- $middle['distribution_number'] = $distribution_count;
- //订单数
- $order_where = [];
- $order_where[] = ['pay_status', '=', 1];
- $order_count = Order::where($order_where)->count();
- $middle['order_number'] = $order_count;
- //派送订单
- $orderwhere = [];
- $orderwhere[] = ['order_status', '=', 2];
- $order_delivery_count = Order::where($orderwhere)->count();
- $middle['delivery_number'] = $order_delivery_count;
- //农资供应
- $middle['agricultural_supply_number'] = 0;
- $nowYear = date('Y');
- $nowMonth = date('n');
- $monthData = [];
- $monthArr = [];
- for ($i = 1; $i <= $nowMonth; $i++) {
- array_push($monthArr, $i);
- $monthFat = $i . '月';
- array_push($monthData, $monthFat);
- }
- $middle['YearData'] = $nowYear;
- $middle['MonthFormatData'] = json_encode($monthData);
- $month_data = [];
- foreach ($monthArr as $mv) {
- $date = getMonthFirstAndLastDay($nowYear, $mv);
- $startTime = strtotime($date['firstDay']);
- $endTime = strtotime($date['lastDay'] . ' 23:59:59');
- $create_time_date = [$startTime, $endTime];
- $salewhere = [];
- $salewhere[] = ['create_time', 'between', $create_time_date];
- $month_order_number = Order::alias('o')->where($where)->where($salewhere)->count();
- array_push($month_data, $month_order_number);
- }
- $middle['MonthOrderData'] = json_encode($month_data);
- $nowTime = time();
- $todayStartDate = date('Y-m-d');
- $todaywhere = [];
- $todaywhere[] = ['create_time', 'between', [strtotime($todayStartDate), $nowTime]];
- $todayOrderInfo = Order::alias('o')->where($where)->where($todaywhere)->field('count(id) number,sum(total_amount) total_money')->find();
- $middle['today_order_number'] = $todayOrderInfo['number'];
- $middle['today_total_amount'] = $todayOrderInfo['total_money'] ?? 0;
- $thisMonth = date('n');
- $this_month_date = getMonthFirstAndLastDay($nowYear, $thisMonth);
- $startTime = strtotime($this_month_date['firstDay']);
- $endTime = strtotime($this_month_date['lastDay'] . ' 23:59:59');
- $create_time_date = [$startTime, $endTime];
- $thisMonthWhere = [];
- $thisMonthWhere[] = ['create_time', 'between', $create_time_date];
- $thisMonthOrderInfo = Order::alias('o')->where($where)->where($thisMonthWhere)->field('count(id) number,sum(total_amount) total_money')->find();
- $middle['this_month_order_number'] = $thisMonthOrderInfo['number'];
- $middle['this_month_total_amount'] = $thisMonthOrderInfo['total_money'] ?? 0;
- $data['middle'] = $middle;
- /** middle end **/
- /**下单退款 start**/
- $order_refund['MonthData'] = json_encode($monthArr);
- $order_month_info = [];
- $refund_month_info = [];
- foreach ($monthArr as $mv) {
- $date = getMonthFirstAndLastDay($nowYear, $mv);
- $startTime = strtotime($date['firstDay']);
- $endTime = strtotime($date['lastDay'] . ' 23:59:59');
- $create_time_date = [$startTime, $endTime];
- $salewhere = [];
- $salewhere[] = ['create_time', 'between', $create_time_date];
- $month_order_number = Order::alias('o')->where($where)->where($salewhere)->count();
- array_push($order_month_info, $month_order_number);
- $salewhere[]=['status','in',[1,2]];
- $month_refund_number = AfterSale::where($salewhere)->count();
- array_push($refund_month_info,$month_refund_number);
- }
- $order_refund['order_month_info'] = json_encode($order_month_info);
- $order_refund['refund_month_info'] = json_encode($refund_month_info);
- $data['order_refund_info'] = $order_refund;
- /**下单退款 end **/
- /**资产数据 start**/
- $leave_unused_num = 0;
- $unused_rate = 0;
- $unlease = 0;
- $leaseing = 0;
- $leaseend = 0;
- $demain = 'https://admin.gxsmlt.com/';
- // $demain = 'http://zhgx.asset.deom.com/';
- $asset_url = $demain.'/adminapi/asset.asset/getAssetData';
- $asset_info = httpRequest($asset_url);
- $asset_info = json_decode($asset_info,true);
- if($asset_info['code']==1){
- $a_data = $asset_info['data'];
- $leave_unused_num = $a_data['leave_unused_num'];
- $unused_rate = $a_data['unused_rate'];
- foreach($a_data['asset_list'] as $asv){
- switch ($asv['lease_status']){
- case 1:
- $unlease = $asv['total_number'];
- break;
- case 2:
- $leaseing = $asv['total_number'];
- break;
- case 3:
- $leaseend = $asv['total_number'];
- break;
- }
- }
- }
- $total_asset_num = $unlease + $leaseing + $leaseend;
- $asset_infos['leave_unused_num']=$leave_unused_num;
- $asset_infos['unused_rate']=round($unused_rate,0);
- $asset_infos['unlease']=$unlease;
- $asset_infos['leaseing']=$leaseing;
- $asset_infos['leaseend']=$leaseend;
- $asset_infos['total_asset_num']=$total_asset_num;
- $data['asset_info'] = $asset_infos;
- $data['asset_lease_info'] = json_encode($a_data['pay_info']);
- /**资产数据 end**/
- /* 社会化服务 start*/
- $user_service_demain = 'https://info.gxsmlt.com/';
- // $user_service_demain = 'http://www.zhgx.info.com/';
- $user_service_url = $user_service_demain.'/adminapi/agricultural_machinery.UserService/getUserServiceData';
- $user_service_info = httpRequest($user_service_url);
- // dump($user_service_info);die;
- $service_info = json_decode($user_service_info,true);
- $service_data['cate_name'] = json_encode($service_info['data']['cate_name']);
- $service_data['cate_value'] = json_encode($service_info['data']['cate_value']);
- $service_data['user_service_value'] = json_encode($service_info['data']['user_service_value']);
- $service_data['SupplyDemandInfo'] = json_encode($service_info['data']['SupplyDemandInfo']);
- $service_data['supply_cate_name'] = json_encode($service_info['data']['supply_cate_name']);
- $service_data['supply_cate_value'] = json_encode($service_info['data']['supply_cate_value']);
- $supply_first_cate_list = $service_info['data']['supply_first_cate_name'];
- $list = $service_info['data']['SupplyDemandInfo'];
- $con = ['co01','co03','co02','co05','co04'];
- foreach($list as &$lv){
- $randomKey = array_rand($con);
- $lv['co'] = $con[$randomKey];
- }
- $service_data['SupplyDemandList'] = $list ;
- $cons = ['co01','co03','co02','co05','co04'];
- foreach($supply_first_cate_list as &$sfcl){
- $randomKeys = array_rand($cons);
- $sfcl['co'] = $cons[$randomKeys];
- }
- $service_data['supply_first_cate_list'] = $supply_first_cate_list ;
- $data['service_info'] = $service_data;
- /* 社会化服务 end*/
- return view('/count/index', $data);
- }
- }
|