2023-08-10 14:59:52 +08:00
< ? php
// +----------------------------------------------------------------------
// | likeshop开源商城系统
// +----------------------------------------------------------------------
// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
// | 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系列产品在gitee、github等公开渠道开源版本可免费商用, 未经许可不能去除前后端官方版权标识
// | likeshop系列产品收费版本务必购买商业授权, 购买去版权授权后, 方可去除前后端官方版权标识
// | 禁止对系统程序代码以任何目的,任何形式的再发布
// | likeshop团队版权所有并拥有最终解释权
// +----------------------------------------------------------------------
// | author: likeshop.cn.team
// +----------------------------------------------------------------------
namespace app\admin\controller\goods ;
use app\common\basics\AdminBase ;
use app\common\enum\GoodsEnum ;
use app\common\model\goods\GoodsBrand ;
use app\common\model\goods\GoodsUnit ;
use app\common\model\Freight ;
use app\common\model\goods\Supplier ;
use app\common\model\goods\Goods as GoodsModel ;
use app\common\server\JsonServer ;
use app\admin\logic\goods\CategoryLogic as MallCategoryLogic ;
use app\admin\logic\goods\GoodsLogic ;
use app\admin\logic\goods\ColumnLogic ;
use app\shop\logic\goods\CategoryLogic as ShopCategoryLogic ;
use think\exception\ValidateException ;
use app\admin\validate\goods\GoodsValidate ;
2023-10-09 11:13:50 +08:00
use think\facade\Db ;
2023-08-10 14:59:52 +08:00
/**
* 商品管理
* Class Goods
*/
class Goods extends AdminBase
{
/**
* Notes : 列表
*/
public function lists ()
{
if ( $this -> request -> isAjax ()) {
$get = $this -> request -> get ();
return JsonServer :: success ( '' , GoodsLogic :: lists ( $get ));
}
$cate_list = MallCategoryLogic :: categoryTreeeTree ();
$statistics = GoodsLogic :: statistics ();
$column_list = ColumnLogic :: getList ();
return view ( '' , [
'statistics' => $statistics ,
'cate_list' => $cate_list ,
'column_list' => $column_list ,
'goods_type' => GoodsEnum :: getTypeDesc ()
]);
}
/**
* 查看
*/
public function view ()
{
$goods_id = $this -> request -> get ( 'goods_id' );
$shop_id = GoodsModel :: where ( 'id' , $goods_id ) -> value ( 'shop_id' );
return view ( 'goods/goods/add' , [
'category_lists' => json_encode ( MallCategoryLogic :: getAllTree (), JSON_UNESCAPED_UNICODE ),
'shop_category_lists' => json_encode ( ShopCategoryLogic :: listAll ( $shop_id ), JSON_UNESCAPED_UNICODE ),
'brand_lists' => json_encode ( GoodsBrand :: getNameColumn (), JSON_UNESCAPED_UNICODE ),
'supplier_lists' => json_encode ( Supplier :: getNameColumn (), JSON_UNESCAPED_UNICODE ),
'unit_lists' => json_encode ( GoodsUnit :: getNameColumn (), JSON_UNESCAPED_UNICODE ),
'freight_lists' => json_encode ( Freight :: getNameColumn ( $shop_id ), JSON_UNESCAPED_UNICODE ),
'info' => json_encode ( GoodsLogic :: info ( $goods_id ), JSON_UNESCAPED_UNICODE )
]);
}
/**
* 违规重审
*/
public function reAudit ()
{
if ( $this -> request -> isAjax ()) {
try {
$params = $this -> request -> post ();
validate ( GoodsValidate :: class ) -> scene ( 're_audit' ) -> check ( $params );
} catch ( ValidateException $e ) {
return JsonServer :: error ( $e -> getMessage ());
}
$result = GoodsLogic :: reAudit ( $params );
if ( $result ) {
return JsonServer :: success ( '保存成功' );
}
return JsonServer :: error ( '保存失败' );
}
$goods_id = $this -> request -> get ( 'goods_id' , '' , 'intval' );
return view ( 're_audit' , [
'goods_id' => $goods_id
]);
}
/**
* 商品设置
*/
public function setInfo ()
{
if ( $this -> request -> isAjax ()) {
try {
$params = $this -> request -> post ();
validate ( GoodsValidate :: class ) -> scene ( 'set_info' ) -> check ( $params );
} catch ( ValidateException $e ) {
return JsonServer :: error ( $e -> getMessage ());
}
$result = GoodsLogic :: setInfo ( $params );
if ( $result ) {
return JsonServer :: success ( '设置成功' );
}
return JsonServer :: error ( '设置失败' );
}
$goods_id = $this -> request -> get ( 'goods_id' , '' , 'intval' );
$goods_detail = GoodsModel :: find ( $goods_id );
$goods_detail [ 'column_ids' ] = $goods_detail [ 'column_ids' ] ? explode ( ',' , $goods_detail [ 'column_ids' ]) : [];
$goods_detail [ 'column_ids' ] = json_encode ( $goods_detail [ 'column_ids' ]);
$column_list = ColumnLogic :: getList ();
return view ( 'set_info' , [
'goods_id' => $goods_id ,
'column_list' => json_encode ( $column_list ),
'goods_detail' => $goods_detail
]);
}
/**
* 审核
*/
public function audit ()
{
if ( $this -> request -> isAjax ()) {
try {
$params = $this -> request -> post ();
validate ( GoodsValidate :: class ) -> scene ( 'audit' ) -> check ( $params );
} catch ( ValidateException $e ) {
return JsonServer :: error ( $e -> getMessage ());
}
$result = GoodsLogic :: audit ( $params );
if ( $result ) {
return JsonServer :: success ( '操作完成' );
}
return JsonServer :: error ( '操作失败' );
}
$goods_id = $this -> request -> get ( 'goods_id' , '' , 'intval' );
return view ( 'audit' , [
'goods_id' => $goods_id
]);
}
public function totalCount ()
{
if ( $this -> request -> isAjax ()) {
return JsonServer :: success ( '获取成功' , GoodsLogic :: statistics ());
}
}
2023-10-09 11:13:50 +08:00
public function export ()
{
// ini_set("max_execution_time", 0);
set_time_limit ( 0 );
ini_set ( 'memory_limit' , '1024M' );
if ( $this -> request -> isAjax ()) {
try {
$shopName = input ( 'post.shop_name' , '' );
$goodsName = input ( 'post.goods_name' , '' );
$goodsType = input ( 'post.goods_type' , '' );
$platformCateId = input ( 'post.platform_cate_id' , 0 );
// $goodsColumnId = input('post.goods_column_id', 0);
$writer = new \XLSXWriter ();
// $fields = Db::query('SHOW COLUMNS FROM ls_goods');
// $fields = array_column($fields, 'Field');
$fieldsArr = [];
// foreach ($fields as $field) {
// $fieldsArr[$field] = 'string';
// }
$fieldsArr = [
'ID' , '商品名称' , '商品规格'
];
$writer -> writeSheetHeader ( 'Sheet1' , $fieldsArr );
$where = [];
if ( ! empty ( $shopName ) || $shopName == '0' ) {
$where [] = [ 's.name' , 'like' , '%' . $shopName . '%' ];
}
if ( ! empty ( $goodsName ) || $goodsName == '0' ) {
$where [] = [ 'g.name' , 'like' , '%' . $goodsName . '%' ];
}
if ( ! empty ( $platformCateId )) {
$where [] = [ 'g.first_cate_id|g.second_cate_id|g.third_cate_id' , '=' , $platformCateId ];
}
if ( ! empty ( $goodsType ) || $goodsType == '0' ) {
$where [] = [ 'g.type' , '=' , $goodsType ];
}
$total = GoodsModel :: alias ( 'g' )
-> leftJoin ( 'shop s' , 'g.shop_id = s.id' )
-> leftJoin ( 'goods_item gi' , 'gi.goods_id = g.id' )
-> where ( $where ) -> count ();
if ( $total > 10000 ) {
return JsonServer :: error ( '导出条数不能超过1W条' );
}
if ( $total == 0 ) {
return JsonServer :: error ( '没有符合条件的数据' );
}
$fieldRaw = " g.id as id, g.name as name, GROUP_CONCAT(CONCAT('规格名称:',gi.spec_value_str,' 规格ID:',gi.spec_value_ids,' 价格:',gi.price, ' 库存:',gi.stock) ORDER BY gi.spec_value_str SEPARATOR ';') AS sku_list " ;
$query = GoodsModel :: alias ( 'g' )
-> leftJoin ( 'shop s' , 'g.shop_id = s.id' )
-> leftJoin ( 'goods_item gi' , 'gi.goods_id = g.id' );
$cursor = $query
-> where ( $where )
-> limit ( 100 )
-> fieldRaw ( $fieldRaw )
-> group ( 'g.id' )
// ->select();
// ->field('g.*,s.name as shop_name')
-> cursor ();
foreach ( $cursor as $k => $item ) {
$row = [];
// foreach ($fields as $field) {
// $row[] = $item[$field] ?? '';
// }
$row [] = $item [ 'id' ];
$row [] = $item [ 'name' ];
$row [] = $item [ 'sku_list' ];
var_dump ( $row );
// $writer->writeSheetRow('Sheet1', $row);
}
$writer -> writeToFile ( 'goods.xlsx' );
} catch ( \Exception $e ) {
return JsonServer :: error ( $e -> getMessage ());
}
}
return JsonServer :: success ( '导出完成 本次使用内存#' . floor (( memory_get_peak_usage ()) / 1024 / 1024 ) . " MB " , input ( 'post.' ));
}
2023-08-10 14:59:52 +08:00
}