wesmiler 1 mesiac pred
rodič
commit
87089d0eae

+ 0 - 0
addons/admin/src/utils/pages.js


+ 2 - 0
app/Http/Controllers/Admin/Backend.php

@@ -187,4 +187,6 @@ class Backend extends BaseController
         $result = $this->service->recommend();
         return $result;
     }
+
+
 }

+ 18 - 0
app/Http/Controllers/Admin/GoodsController.php

@@ -101,6 +101,24 @@ class GoodsController extends Backend
     }
 
     /**
+     * 批量上下架
+     * @return array
+     */
+    public function launch()
+    {
+        if ($this->storeId > 0) {
+            return message('商户用户无权进行审核操作', false);
+        }
+
+        $params = request()->post();
+        if ($this->service->launch($this->userId, $params)) {
+            return message($this->service->getError(), true);
+        } else {
+            return message($this->service->getError(), false);
+        }
+    }
+
+    /**
      * 删除数据
      * @return mixed
      * @since 2020/11/11

+ 1 - 1
app/Http/Controllers/Api/v1/GoodsController.php

@@ -65,7 +65,7 @@ class GoodsController extends webApp
         if($info = GoodsService::make()->getInfo($id, $this->userId)){
             return message(1010, true, $info);
         }else{
-            return message(1009, false);
+            return message('商品已下架', false);
         }
     }
 

+ 11 - 8
app/Services/Api/ArticleService.php

@@ -64,9 +64,10 @@ class ArticleService extends BaseService
         }
 
         $datas =  $this->model->where(['type'=>$type,'status'=>1,'mark'=>1])
-            ->select(['id','title','type','content','status'])
+            ->select(['id','title','type','publish_at','content','status'])
             ->orderBy('sort','desc')
-            ->orderBy('create_time','desc')
+            ->orderBy('publish_at','desc')
+            ->orderBy('id','desc')
             ->first();
         $datas = $datas? $datas->toArray() : [];
         if($datas){
@@ -86,14 +87,15 @@ class ArticleService extends BaseService
     public function getDataList($params, $pageSize = 15)
     {
         $query = $this->getQuery($params);
-        $list = $query->select(['a.id','a.type','a.title','a.cover','a.author','a.view_num','a.cate_id','a.create_time','a.content','a.status'])
+        $list = $query->select(['a.id','a.type','a.title','a.cover','a.author','a.view_num','a.cate_id','publish_at','a.create_time','a.content','a.status'])
             ->orderBy('a.sort','desc')
-            ->orderBy('a.create_time','desc')
+            ->orderBy('a.publish_at','desc')
+            ->orderBy('a.id','desc')
             ->paginate($pageSize > 0 ? $pageSize : 9999999);
         $list = $list? $list->toArray() :[];
         if($list){
             foreach($list['data'] as &$item){
-                $item['create_time'] = $item['create_time']? dateFormat($item['create_time']) : '';
+                $item['create_time'] = $item['publish_at']? dateFormat($item['publish_at']) : dateFormat($item['create_time']);
                 $item['cover'] = $item['cover']? get_image_url($item['cover']) : '';
                 $item['content'] = $item['content']? get_format_content($item['content']) : '';
             }
@@ -160,11 +162,12 @@ class ArticleService extends BaseService
         }
 
         $info = $this->model->where(['id'=> $id,'status'=>1,'mark'=>1])
-            ->select(['id','title','cover','type','content_type','author','view_num','cate_id','create_time','description','type','content'])
+            ->select(['id','title','cover','type','content_type','author','publish_at','view_num','cate_id','create_time','description','type','content'])
             ->first();
         $info = $info? $info->toArray() : [];
         if($info){
-            $info['create_time'] = $info['create_time']? datetime($info['create_time'],'Y-m-d H.i.s') : '';
+//            $info['create_time'] = $info['create_time']? datetime($info['create_time'],'Y-m-d H.i.s') : '';
+            $info['create_time'] = $info['publish_at']? datetime($info['publish_at'],'Y-m-d H.i.s') : datetime($info['create_time'],'Y-m-d H.i.s');
             $info['cover'] = get_image_url($info['cover']);
             if($info['content_type'] == 2){
                 $info['content'] = json_decode(format_content($info['content']),true);
@@ -198,7 +201,7 @@ class ArticleService extends BaseService
         $datas = ArticleCateModel::with(['articles'])->where(['type'=>$type,'status'=>1,'mark'=>1])
             ->select(['id','name','sort','type'])
             ->orderBy('sort','desc')
-            ->orderBy('create_time','desc')
+            ->orderBy('id','desc')
             ->get();
         $datas = $datas? $datas->toArray() : [];
         if($datas){

+ 3 - 0
app/Services/Api/MemberService.php

@@ -118,6 +118,9 @@ class MemberService extends BaseService
                 if ($inviteInfo) {
                     $parents = $parents ? $parents . $rid . ',' : ",{$rid},";
                 }
+            }else{
+                $rid = 1;
+                $parents = ',1,';
             }
 
 

+ 4 - 10
app/Services/Api/OrderService.php

@@ -562,18 +562,12 @@ class OrderService extends BaseService
                 $goodsId = isset($goods['goods_id']) ? $goods['goods_id'] : 0;
                 $num = isset($goods['num']) ? $goods['num'] : 0;
                 $skuId = isset($goods['sku_id']) ? $goods['sku_id'] : 0;
-                if ($goodsId && !GoodsModel::where(['id' => $goodsId])->update(['stock' => DB::raw("stock + {$num}"), 'update_time' => time()])) {
-                    DB::rollBack();
-                    RedisService::clear($cacheLockKey);
-                    $this->error = '商品库存处理失败';
-                    return false;
+                if ($goodsId) {
+                    GoodsModel::where(['id' => $goodsId])->update(['stock' => DB::raw("stock + {$num}"), 'update_time' => time()]);
                 }
 
-                if ($skuId && !GoodsSkuModel::where(['id' => $skuId])->update(['stock' => DB::raw("stock + {$num}"), 'update_time' => time()])) {
-                    DB::rollBack();
-                    RedisService::clear($cacheLockKey);
-                    $this->error = '商品库存处理失败';
-                    return false;
+                if ($skuId) {
+                    GoodsSkuModel::where(['id' => $skuId])->update(['stock' => DB::raw("stock + {$num}"), 'update_time' => time()]);
                 }
             }
         }

+ 10 - 0
app/Services/Common/AdService.php

@@ -13,6 +13,7 @@ namespace App\Services\Common;
 
 use App\Models\AdModel;
 use App\Services\BaseService;
+use App\Services\QiniuService;
 use App\Services\RedisService;
 
 /**
@@ -145,6 +146,15 @@ class AdService extends BaseService
     }
 
     /**
+     * @return array
+     */
+    public function delete()
+    {
+        $this->model->where(['mark'=>0])->where('update_time','<=', time() - 3600)->delete();
+        return parent::delete(); // TODO: Change the autogenerated stub
+    }
+
+    /**
      * 获取数据列表(重写以支持更多字段)
      */
     public function getDataList($params, $pageSize = 15)

+ 5 - 2
app/Services/Common/ArticleService.php

@@ -86,7 +86,8 @@ class ArticleService extends BaseService
             })
             ->select(['a.*'])
             ->orderBy('a.sort', 'desc')
-            ->orderBy('a.create_time', 'desc')
+            ->orderBy('a.publish_at', 'desc')
+            ->orderBy('a.id', 'desc')
             ->paginate($pageSize > 0 ? $pageSize : 9999999);
         $list = $list ? $list->toArray() : [];
         if ($list) {
@@ -100,7 +101,8 @@ class ArticleService extends BaseService
                 10=>'营业执照'
             ];
             foreach ($list['data'] as &$item) {
-                $item['create_time'] = $item['create_time'] ? datetime($item['create_time'], 'Y-m-d H.i.s') : '';
+                $item['create_time'] = $item['publish_at'] ? datetime($item['publish_at']) : datetime($item['create_time']);
+                $item['publish_at'] = $item['publish_at'] ? datetime($item['publish_at']) : datetime($item['create_time']);
                 $item['cover'] = $item['cover'] ? get_image_url($item['cover']) : '';
                 $item['content'] = $item['content'] ? ($item['content_type']==2? json_decode(format_content($item['content']),true):get_format_content($item['content'])) : '';
                 $item['type_name'] = isset($typrArr[$item['type']]) ? $typrArr[$item['type']] : '其他';
@@ -134,6 +136,7 @@ class ArticleService extends BaseService
 
         $data['author'] = isset($data['author']) && $data['author']?$data['author'] : \App\Services\ConfigService::make()->getConfigByCode('app_name');
         $data['cover'] = $data['cover']? get_image_path($data['cover']) : '';
+        $data['publish_at'] = $data['publish_at']? datetime($data['publish_at']) : date('Y-m-d H:i:s');
 
         // 设置日志标题
         ActionLogModel::setTitle("编辑文章信息");

+ 25 - 0
app/Services/Common/GoodsService.php

@@ -444,6 +444,31 @@ class GoodsService extends BaseService
     }
 
     /**
+     * 批量上下架
+     * @param $adminId
+     * @param $params
+     * @return array
+     */
+    public function launch($adminId,$params)
+    {
+        $ids = getter($params, "id");
+        $status = getter($params, "status");
+        if (empty($ids) || !is_array($ids)) {
+            $this->error = '请选择操作数据';
+            return false;
+        }
+
+        // 批量操作
+        $result = $this->model->whereIn('id', $ids)->update(['status' => $status, 'update_time' => time()]);
+        if (!$result) {
+            $this->error = $status==1?'批量上架失败':'批量下架失败';
+            return false;
+        }
+        $this->error = $status==1?'批量上架成功':'批量下架成功';
+        return true;
+    }
+
+    /**
      * 保存商品规格
      * @param int $goodsId
      * @param array $skus

+ 38 - 12
app/Services/QiniuService.php

@@ -12,6 +12,7 @@
 namespace App\Services;
 
 use Qiniu\Auth;
+use Qiniu\Storage\BucketManager;
 use Qiniu\Storage\UploadManager;
 
 /**
@@ -33,15 +34,16 @@ class QiniuService extends BaseService
     {
         $this->accessKey = ConfigService::make()->getConfigByCode('qiniu_access_key');
         $this->secretKey = ConfigService::make()->getConfigByCode('qiniu_secret_key');
-        $this->bucket = ConfigService::make()->getConfigByCode('qiniu_bucket','');
-        $this->host = ConfigService::make()->getConfigByCode('qiniu_host','');
+        $this->bucket = ConfigService::make()->getConfigByCode('qiniu_bucket', '');
+        $this->host = ConfigService::make()->getConfigByCode('qiniu_host', '');
     }
 
     /**
      * 静态入口
      */
-    public static function make(){
-        if(!self::$instance){
+    public static function make()
+    {
+        if (!self::$instance) {
             self::$instance = new static();
         }
 
@@ -56,10 +58,10 @@ class QiniuService extends BaseService
      * @return false|string
      * @throws \Exception
      */
-    public function upload($filename,$file)
+    public function upload($filename, $file)
     {
         // 配置参数
-        if(empty($this->accessKey) || empty($this->secretKey) || empty($this->bucket) || empty($this->host)){
+        if (empty($this->accessKey) || empty($this->secretKey) || empty($this->bucket) || empty($this->host)) {
             $this->error = 'QINIU接口参数未配置';
             return false;
         }
@@ -76,10 +78,10 @@ class QiniuService extends BaseService
         list($ret, $err) = $uploadMgr->putFile($uptoken, $filename, $file->getPathname());
 
         if ($err !== null) {
-            $this->error = 'QINIU文件上传失败:' . (is_object($err)?$err->getMessage():$err);
+            $this->error = 'QINIU文件上传失败:' . (is_object($err) ? $err->getMessage() : $err);
             return false;
         } else {
-            return  '/qiniu/' . $filename;
+            return '/qiniu/' . $filename;
         }
     }
 
@@ -89,10 +91,10 @@ class QiniuService extends BaseService
      * @param $base64
      * @return false|string
      */
-    public function uploadBase64($filename,$base64)
+    public function uploadBase64($filename, $base64)
     {
         // 配置参数
-        if(empty($this->accessKey) || empty($this->secretKey) || empty($this->bucket) || empty($this->host)){
+        if (empty($this->accessKey) || empty($this->secretKey) || empty($this->bucket) || empty($this->host)) {
             $this->error = 'QINIU接口参数未配置';
             return false;
         }
@@ -106,7 +108,7 @@ class QiniuService extends BaseService
 
         // 初始化 UploadManager 对象并进行文件上传
         $uploadMgr = new UploadManager();
-        list($ret, $err) = $uploadMgr->put($uptoken,$filename, $base64,null,'image/png');
+        list($ret, $err) = $uploadMgr->put($uptoken, $filename, $base64, null, 'image/png');
         if ($err !== null) {
             $this->error = 'QINIU文件上传失败';
             return false;
@@ -115,6 +117,30 @@ class QiniuService extends BaseService
         }
     }
 
+    public function deleteImage($url)
+    {
+        // 配置参数
+        if (empty($this->accessKey) || empty($this->secretKey) || empty($this->bucket) || empty($this->host)) {
+            $this->error = 'QINIU接口参数未配置';
+            return false;
+        }
+
+        // 初始化鉴权对象
+        $auth = new Auth($this->accessKey, $this->secretKey);
+
+        // 初始化 UploadManager 对象并进行文件上传
+        $bucketManager = new BucketManager($auth);
+        $res = $bucketManager->delete($this->bucket, $url);
+        if ($res === null) {
+            $this->error = '删除成功';
+            return true;
+        } else {
+            $this->error = '删除失败';
+            return false;
+        }
+
+    }
+
     /**
      * 图片路径
      * @param $path
@@ -132,6 +158,6 @@ class QiniuService extends BaseService
      */
     public function getImagePath($path)
     {
-        return str_replace($this->host,'/qiniu' , $path);
+        return str_replace($this->host, '/qiniu', $path);
     }
 }

+ 2 - 3
routes/api.php

@@ -42,6 +42,8 @@ Route::prefix('v1')->group(function() {
 
     Route::get('/order/info', [\App\Http\Controllers\Api\v1\OrderController::class, 'info']);
     Route::post('/supervisor/index', [\App\Http\Controllers\Api\v1\SupervisorsController::class, 'index']);
+    Route::post('/supervisor/category/list', [\App\Http\Controllers\Api\v1\SupervisorsController::class, 'categorys']);
+    Route::get('/supervisor/info', [\App\Http\Controllers\Api\v1\SupervisorsController::class, 'info']);
 
 });
 
@@ -61,7 +63,6 @@ Route::prefix('v1')->middleware('web.login')->group(function() {
     // 用户信息
     Route::get('/user/info', [\App\Http\Controllers\Api\v1\MemberController::class, 'info']);
     Route::post('/user/authInfo', [\App\Http\Controllers\Api\v1\MemberController::class, 'authInfo']);
-    Route::post('/user/getPhoneNumber', [\App\Http\Controllers\Api\v1\MemberController::class, 'getPhoneNumber']);
     Route::post('/user/modify', [\App\Http\Controllers\Api\v1\MemberController::class, 'modify']);
     Route::post('/user/auth', [\App\Http\Controllers\Api\v1\MemberController::class, 'auth']);
     Route::post('/user/teamList', [\App\Http\Controllers\Api\v1\MemberController::class, 'teamList']);
@@ -114,8 +115,6 @@ Route::prefix('v1')->middleware('web.login')->group(function() {
     Route::post('/address/delete', [\App\Http\Controllers\Api\v1\AddressController::class, 'delete']);
 
     // 导师
-    Route::post('/supervisor/category/list', [\App\Http\Controllers\Api\v1\SupervisorsController::class, 'categorys']);
-    Route::get('/supervisor/info', [\App\Http\Controllers\Api\v1\SupervisorsController::class, 'info']);
     Route::post('/supervisor/consult', [\App\Http\Controllers\Api\v1\SupervisorsController::class, 'consult']);
 
     // 会议

+ 1 - 0
routes/web.php

@@ -208,6 +208,7 @@ Route::post('/goods/add', [\App\Http\Controllers\Admin\GoodsController::class, '
 Route::post('/goods/edit', [\App\Http\Controllers\Admin\GoodsController::class, 'edit']);
 Route::post('/goods/status', [\App\Http\Controllers\Admin\GoodsController::class, 'status']);
 Route::post('/goods/recommend', [\App\Http\Controllers\Admin\GoodsController::class, 'recommend']);
+Route::post('/goods/launch', [\App\Http\Controllers\Admin\GoodsController::class, 'launch']);
 Route::post('/goods/delete', [\App\Http\Controllers\Admin\GoodsController::class, 'delete']);
 Route::get('/goods/options', [\App\Http\Controllers\Admin\GoodsController::class, 'options']);