Просмотр исходного кода

wesmiler 报恩寺项目提交

wesmiler 4 лет назад
Родитель
Сommit
d01469fa5b

+ 17 - 0
app/Http/Controllers/Api/v1/IndexController.php

@@ -3,6 +3,7 @@
 namespace App\Http\Controllers\Api\v1;
 
 use App\Http\Controllers\Api\BaseController;
+use App\Services\AdService;
 use App\Services\CityService;
 use App\Services\ConfigService;
 use App\Services\GongdengOrderService;
@@ -31,9 +32,25 @@ class IndexController extends BaseController
         $this->gdService = new GongdengOrderService();
         $this->rechargeService = new RechargeService();
         $this->cityService = new CityService();
+        $this->adServices = new AdService();
     }
 
     /**
+     * 获取首页广告轮播数据
+     * @return array
+     */
+    public function banners(){
+        $banners = $this->adServices->geListBySort(1);
+        $advert1 = $this->adServices->geListBySort(2);
+        $advert2 = $this->adServices->geDataBySort(3);
+        $data = [
+            'banners'=> $banners? $banners : [],
+            'advert1'=> $advert1? $advert1 : [],
+            'advert2'=> $advert2? $advert2 : [],
+        ];
+        return message(1005, true, $data);
+    }
+    /**
      * 获取jssdk参数
      * @return array
      */

+ 5 - 3
app/Http/Validator/WithdrawValidator.php

@@ -7,8 +7,9 @@ class WithdrawValidator extends BaseValidator
         'id' => 'required',
         'money' => 'required|min:0|max:1000000',
         'realname' => 'required|string|min:2|max:20',
-        'account' => 'required|string|min:2|max:50',
+        'account' => 'nullable|string|min:2|max:50',
         'pay_type' => 'required|min:1|max:10',
+        'qrcode' => 'nullable|string|min:2|max:250',
     ];
 
     // 当前模型所有错误提示信息
@@ -23,17 +24,18 @@ class WithdrawValidator extends BaseValidator
 
     // 当前模型所有验证字段
     public static $fields = [
-        'id' => '活动ID',
+        'id' => 'ID',
         'realname' => '收款姓名',
         'account' => '收款账号',
         'pay_type' => '支付方式',
+        'qrcode' => '收款码',
         'money' => '金额',
     ];
 
     // 当前模型所有验证场景
     public static $scenes = [
         'info'=> ['id'],
-        'pay'=> ['id','realname','account','pay_type','money'],
+        'pay'=> ['realname','account','pay_type','money','qrcode'],
     ];
 
     /**

+ 67 - 0
app/Services/AdService.php

@@ -60,4 +60,71 @@ class AdService extends BaseService
         return parent::edit($data); // TODO: Change the autogenerated stub
     }
 
+    /**
+     * 获取广告轮播列表数据
+     * @param $sortId 广告位ID
+     * @return array|mixed
+     */
+    public function geListBySort($sortId, $num=6){
+        $showNum = ConfigService::make()->getConfigByCode("index_ad_{$sortId}_num");
+        $num = $showNum? $showNum : $num;
+        $cacheKey = "caches:adverts:list_sort_{$sortId}_{$num}";
+        $dataList = RedisService::get($cacheKey);
+        if($dataList){
+            return $dataList;
+        }
+
+        $dataList = $this->model::where(['ad_sort_id'=> $sortId,'mark'=> 1,'status'=> 1])
+            ->where(function($query){
+                $query->where('start_time',0)->orWhere('end_time', 0)->orWhere(function($query){
+                    $query->where('start_time','>=', time())->where('end_time','<=', time());
+                });
+            })
+            ->select(['id','title','cover','type','description','url','view_num','width','height','status','sort'])
+            ->orderBy('sort','asc')
+            ->orderBy('create_time','desc')
+            ->limit($num)
+            ->get()
+            ->each(function($item, $k){
+                $item['cover'] = $item['cover']? get_image_url($item['cover']) : '';
+            });
+        $dataList = $dataList? $dataList->toArray() :[];
+        if($dataList){
+            RedisService::set($cacheKey, $dataList, rand(10, 30));
+        }
+
+        return $dataList;
+    }
+
+    /**
+     * 获取广告位对应单广告数据
+     * @param $sortId 广告位ID
+     * @return array|mixed
+     */
+    public function geDataBySort($sortId){
+        $cacheKey = "caches:adverts:data_sort_{$sortId}";
+        $data = RedisService::get($cacheKey);
+        if($data){
+            return $data;
+        }
+
+        $data = $this->model::where(['ad_sort_id'=> $sortId,'mark'=> 1,'status'=> 1])
+            ->where(function($query){
+                $query->where('start_time',0)->orWhere('end_time', 0)->orWhere(function($query){
+                    $query->where('start_time','>=', time())->where('end_time','<=', time());
+                });
+            })
+            ->select(['id','title','cover','type','description','url','view_num','width','height','status','sort'])
+            ->orderBy('sort','asc')
+            ->orderBy('create_time','desc')
+            ->first();
+        $data = $data? $data->toArray() : [];
+        if($data){
+            $data['cover'] = $data['cover']? get_image_url($data['cover']) : '';
+            RedisService::set($cacheKey, $data, rand(10, 30));
+        }
+
+        return $data;
+    }
+
 }

+ 4 - 8
app/Services/WithdrawService.php

@@ -53,11 +53,6 @@ class WithdrawService extends BaseService
             ->where(function ($query) use ($params) {
                 $query->where('a.mark', 1);
 
-                $type = isset($params['type']) ? $params['type'] : 0;
-                if ($type > 0) {
-                    $query->where('a.type', $type);
-                }
-
                 $payType = isset($params['pay_type']) ? $params['pay_type'] : 0;
                 if ($payType > 0) {
                     $query->where('a.pay_type', $payType);
@@ -94,13 +89,14 @@ class WithdrawService extends BaseService
                     ->orWhere('a.order_sn','like',"%{$keyword}%");
                 }
             })
-            ->select(['a.id', 'a.user_id','a.order_sn','a.trade_no','a.pay_at', 'm.nickname','a.realname','a.account','a.qrcode','a.type','a.pay_type','a.money', 'a.balance', 'a.status', 'a.create_time', 'a.update_time','a.remark'])
+            ->select(['a.id', 'a.user_id','a.order_sn','a.trade_no','a.pay_at', 'm.nickname','a.realname','a.account','a.qrcode','a.pay_type','a.money', 'a.balance','a.reason', 'a.status', 'a.create_time', 'a.update_time','a.remark'])
             ->orderBy('a.create_time', 'desc')
             ->paginate($pageSize);
 
         $dataList = $dataList ? $dataList->toArray() : [];
         if ($dataList) {
             foreach ($dataList['data'] as &$item) {
+                $item['qrcode'] = $item['qrcode']? get_image_url($item['qrcode']) : '';
                 $item['create_time'] = $item['create_time'] ? datetime($item['create_time'],'Y-m-d H:i:s') : '';
             }
             unset($item);
@@ -142,7 +138,7 @@ class WithdrawService extends BaseService
 
         // 验证提现限制
         $limitMin = ConfigService::make()->getConfigByCode('withdraw_min');
-        if($money > $limitMin){
+        if($money < $limitMin){
             return message('最低提现金额为:'.$limitMin.'元', false);
         }
 
@@ -174,7 +170,7 @@ class WithdrawService extends BaseService
          ];
 
         \DB::beginTransaction();
-        if(!MemberModel::where(['id'=> $userId,'mark'=> 1])->descrement('salary', $money)){
+        if(!MemberModel::where(['id'=> $userId,'mark'=> 1])->decrement('salary', $money)){
             \DB::rollBack();
             return message('更新账户失败,请刷新后重试',false);
         }

BIN
public/uploads/img/20210809/6110fd691e45f.png


BIN
public/uploads/img/20210809/6110fe0c453c2.png


BIN
public/uploads/img/20210809/6110fec7755ac.jpg


BIN
public/uploads/img/20210809/611100d86aa76.jpg


BIN
public/uploads/img/qrcode/U_7631C1DAE7476C4DC65188B55DD0276D.png


+ 1 - 0
routes/api.php

@@ -32,6 +32,7 @@ Route::post('/auth/url', [\App\Http\Controllers\Api\AuthController::class, 'auth
 Route::post('/auth/weixin', [\App\Http\Controllers\Api\AuthController::class, 'check']);
 
 // 公共
+Route::post('/index/banners', [\App\Http\Controllers\Api\v1\IndexController::class, 'banners']);
 Route::post('/index/jssdk', [\App\Http\Controllers\Api\v1\IndexController::class, 'jssdk']);
 Route::post('/invite/params', [\App\Http\Controllers\Api\v1\IndexController::class, 'inviteParams']);
 Route::post('/vip/params', [\App\Http\Controllers\Api\v1\IndexController::class, 'vipParams']);