Skip to content

Commit

Permalink
修复详情页内容逻辑
Browse files Browse the repository at this point in the history
  • Loading branch information
muction authored Oct 3, 2022
1 parent ecd8a52 commit 18683f0
Showing 1 changed file with 73 additions and 74 deletions.
147 changes: 73 additions & 74 deletions Src/Service/AppContentService.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Query\Builder;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Routing\Route;
use Illuminate\Routing\Router;
use Stars\Peace\Entity\MenuBindEntity;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;

class AppContentService
Expand All @@ -15,19 +17,23 @@ class AppContentService
* @param array $inner
* @return array
*/
public function menuDatas($menuId, $inner=[]){
public function menuDatas( $menuId , $inner=[] ){

$menuData = [];
$bindInfos = $this->menuBindApps($menuId);
$bindInfos =$this->menuBindApps( $menuId );

if( $bindInfos ){

$paginateConfig = configApp( 'stars.paginate');
$innerBindId = isset($inner['bindId']) ? $inner['bindId'] : 0;
$innerInfoId = isset($inner['infoId']) ? $inner['infoId'] : 0;
$innerBindId = isset( $inner['bindId']) ? $inner['bindId'] : 0;
$innerInfoId = isset( $inner['infoId']) ? $inner['infoId'] : 0;

foreach ($bindInfos as $bind){
$paginate = isset($paginateConfig[$bind['alias_name']]) ? $paginateConfig[$bind['alias_name']] : $paginateConfig['default'] ;
$menuData[$bind['alias_name']] =$this->findMenuData($bind, $innerBindId, $innerInfoId, $paginate) ;
$menuData[$bind['alias_name']] =$this->findMenuData( $bind , $innerBindId , $innerInfoId , $paginate) ;
}
}

return $menuData ;
}

Expand All @@ -37,12 +43,13 @@ public function menuDatas($menuId, $inner=[]){
* @param string $bindAlias
* @return array|Model|Builder|object|null
*/
public function findBindPaginateData($bindId, $bindAlias=''){
$bindInfo =$this->bindInfo($bindId, $bindAlias);
public function findBindPaginateData( $bindId, $bindAlias='' ){

$bindInfo =$this->bindInfo($bindId , $bindAlias);
if($bindInfo && $bindAlias== $bindInfo['alias_name']){
$paginateConfig = configApp( 'stars.paginate');
$paginate = isset($paginateConfig[$bindInfo['alias_name']]) ? $paginateConfig[$bindInfo['alias_name']] : $paginateConfig['default'] ;
return $this->findMenuData($bindInfo , 0 , 0, $paginate) ;
return $this->findMenuData( $bindInfo , 0 , 0, $paginate ) ;
}
return [];
}
Expand All @@ -55,32 +62,44 @@ public function findBindPaginateData($bindId, $bindAlias=''){
* @param int $paginate
* @return Model|Builder|object|null
*/
public function findMenuData($bind ,$innerBindId=0 , $innerInfoId=0 ,$paginate=15){
public function findMenuData( $bind ,$innerBindId=0 ,$innerInfoId=0 , $paginate=15 ){

$data = null ;
$type = strstr( $bind['alias_name'] , '.' , true );
$className = "App\Entity\\" . str_replace('Sheet','', $bind['sheet_name']);
$dataClass = class_exists($className) ? $className : self::class;

switch ($type){
//单一,取最后一条
case 'single' :
$data = $dataClass::last($bind['id']);
break;
//列表,取所有数据
case 'list' :
$data = $dataClass::items($bind['id'], $paginate);
break;
//分页,按分页获取
case 'paginate' :
$paginate = $dataClass::paginate($bind['id'], $bind['alias_name'], $paginate);
$className = "App\Entity\\" . str_replace('Sheet','', $bind['sheet_name'] );
if( class_exists($className) ){
if( $type == 'single' )
{
$data = $className::last( $bind['id'], $bind['alias_name']);

}elseif ( $innerBindId && $innerInfoId)
{
$data = $className::info( $innerBindId, $innerInfoId );

}elseif ($type == 'list')
{
$data = $className::items( $bind['id'], $bind['alias_name'] , $paginate );
}elseif ( $type == 'paginate')
{
$paginate = $className::paginate( $bind['id'], $bind['alias_name'] , $paginate);

$data['links'] = $paginate->links( configApp('stars.paginate.template') ) ;
$data['data'] = $paginate ;
break;
default:
if($innerBindId && $innerInfoId){
$data = $className::info( $innerBindId, $innerInfoId );
}
}

}else{

if( $type=='single')
{
$data = self::last( $bind['table_name'] , $bind['id'] ) ;

} elseif ( $innerBindId && $innerInfoId )
{

}elseif ($type == 'list')
{
$data = self::items( $bind['table_name'] , $bind['id'] , $paginate);
}
}

if(!is_array($data)){
Expand All @@ -96,27 +115,29 @@ public function findMenuData($bind ,$innerBindId=0 , $innerInfoId=0 ,$paginate=1
* @return array
*/
public function menuBindApps( $menuId ){

$return= DB::table('menu_binds')
->where('menu_id', $menuId)
->get();

$return = $return ? array_map( function( $v ){
return stdClass2Array($v);
} , $return->toArray() ) : [];

return $return ;
}


/**
* 获取多个信息
* @param $bindId
* @param int $limit
* @param string $select
* @param string $orderRaw
* @param $tableName
* @param $bind_id
* @return Model|Builder|object|null
*/
public static function items( $bindId , $limit =10 , $select='*' , $orderRaw='`id` DESC'){
return DB::table( self::bindSheetTableName( $bindId) )
->where('bind_id', $bindId )
public static function items( $tableName, $bind_id , $limit =10 , $select='*' , $orderRaw='`id` DESC'){

return DB::table( $tableName )
->where('bind_id', $bind_id )
->selectRaw( $select )
->orderByRaw($orderRaw)
->limit( $limit )
Expand All @@ -125,50 +146,35 @@ public static function items( $bindId , $limit =10 , $select='*' , $orderRaw='`i

/**
* 详细信息
* @param $bindId
* @param $tableName
* @param $bind_id
* @param $infoId
* @return \Illuminate\Support\Collection
*/
public static function info( $bindId , $infoId ){
return DB::table(self::bindSheetTableName($bindId))
->where('bind_id', $bindId )
public static function info( $tableName, $bind_id , $infoId ){

return DB::table( $tableName )
->where('bind_id', $bind_id )
->find( $infoId );
}

/**
* 获取一个信息
* @param $bindId
* @param $tableName
* @param $bind_id
* @param string $select
* @param string $orderRaw
* @return Model|Builder|object|null
*/
public static function last( $bindId , $select='*' , $orderRaw='`id` DESC'){
return DB::table(self::bindSheetTableName($bindId))
->where('bind_id', $bindId )
public static function last( $tableName, $bind_id , $select='*' , $orderRaw='`id` DESC'){

return DB::table( $tableName )
->where('bind_id', $bind_id )
->selectRaw( $select )
->orderByRaw($orderRaw)
->first();
}

/**
* 分页
* @param $bindId
* @param $aliasName
* @param $paginate
* @return LengthAwarePaginator
*/
public static function paginate( $bindId, $aliasName , $paginate){
$page = \request('p',1)-1;
$tableName= self::bindSheetTableName( $bindId) ;
$total = DB::table($tableName)->count();
$items = DB::table($tableName)
->skip($page* $paginate )
->take($paginate)
->orderByDesc('id')
->get();
return new LengthAwarePaginator($items , $paginate, $total , $page );
}

/**
* 获取绑定信息
* @param $bindId
Expand All @@ -179,15 +185,6 @@ public function bindInfo( $bindId , $bindAlias ='' ){
return MenuBindEntity::where( 'id', $bindId )->where('alias_name', $bindAlias )->first();
}

/**
* 查询绑定时表名称
* @param int $bindId
* @return mixed
*/
public static function bindSheetTableName( int $bindId ){
return MenuBindEntity::where('id',$bindId)->value('table_name');
}

/**
* 格式化当前激活导航的信息
* @param $routerName
Expand All @@ -205,6 +202,8 @@ public function formatActiveMenuInfo( $routerName , $inner , $activeNavId ){
$activeMenuInfo['template_name'] = $activeMenuInfo['template_name'] && $activeMenuInfo['template_name'] ?
str_replace( [ '/', 'zh.' ,'en.' ,'.blade.php'] , ['.', '' ], $activeMenuInfo['template_name'] )
: '' ;
return array_merge ( $activeMenuInfo , parseInnerParams( $inner ) );
$activeMenuInfo = array_merge ( $activeMenuInfo , parseInnerParams( $inner ) );

return $activeMenuInfo;
}
}

0 comments on commit 18683f0

Please sign in to comment.