Преглед на файлове

Merge branch 'master' into stabble

onlinetest преди 6 години
родител
ревизия
ab42e96733

+ 10 - 0
app/Http/Controllers/Wap/Pay/OrdersController.php

@@ -1509,6 +1509,16 @@ class OrdersController extends Controller
         if (isset($res->nickname) && !empty($res->nickname)) {
             return $res->nickname;
         }
+        try{
+            $official = DB::table('official_accounts')
+                ->where('distribution_channel_id', $distribution_channel_id)
+                ->where('is_auth',1)
+                ->orderBy('id','desc')
+                ->select('nickname')->first();
+            if ($official && isset($official->nickname)) {
+                return $official->nickname;
+            }
+        }catch (\Exception $e){}
         return '';
     }
 

+ 63 - 1
app/Http/Controllers/Wap/Web/WelcomeController.php

@@ -375,8 +375,24 @@ class WelcomeController extends BaseController
                 }
             }
         }
-        $activity_setting = ActivityService::getActivitySetting();
 
+        //自定义新用户活动
+        $show_custom_new_user_activity_channel = env('SHOW_CUSTOM_NEW_USER_ACTIVITY_CHANNEL', '');
+        if($show_custom_new_user_activity_channel && in_array($this->distribution_channel_id, explode(',', $show_custom_new_user_activity_channel ))){
+            $custom_activity_page = ActivityService::getActiveCustomActivityByType($this->distribution_channel_id,'CUSTOM_NEW_USER');
+            if($custom_activity_page){
+                $charge_count = Order::where('uid',$this->uid)->where('status','PAID')->count();
+                if($charge_count ==0 ){
+                    $url = $h5_scheme . '://' . _domain() . $custom_activity_page->activity_page;
+                    $is_show_activity = 1;
+                    $activity_title = '优惠活动';
+                    $bottom_show_type = 1;
+                    $activity_img = 'https://cdn-novel.iycdm.com/h5/2018-08-24-banner.png';
+                }
+            }
+        }
+
+        $activity_setting = ActivityService::getActivitySetting();
         if ($activity_setting) {
             $activity_id = isset($activity_setting['activity_id']) ? $activity_setting['activity_id'] : 0;
             $activity_info = Activity::find($activity_id);
@@ -990,6 +1006,52 @@ class WelcomeController extends BaseController
         return view('pay.order.longactivitysixtyeight', ['url' => '###', 'img'=>$img, 'code' => -1, 'start_time' => date('Y-m-d', time() - 86400 * 2), 'end_time' => date('Y-m-d', time() - 86400)]);
     }
 
+    public function channelNewUserActivity(Request $request)
+    {
+        $encode_distribution_channel_id = encodeDistributionChannelId($this->distribution_channel_id);
+        $token = $request->get('token');
+        $activity_info = ActivityService::getByToken($token);
+
+        $from = $request->get('fromtype', 'main');
+        $uv_key_format = 'activity:%s:distribution_channel_id:%s:date:%s:uv';
+        $pv_key_format = 'activity:%s:distribution_channel_id:%s:pv';
+
+        if ($activity_info && $activity_info->product_id){
+            $activity_id = $activity_info->id;
+            $uv_key = sprintf($uv_key_format, $activity_id, $this->distribution_channel_id, date('Y-m-d'));
+            $pv_key = sprintf($pv_key_format, $activity_id, $this->distribution_channel_id);
+            Redis::sadd($uv_key, $this->uid);
+            Redis::hincrby($pv_key, date('Y-m-d'), 1);
+            //活动未开始
+            if (time() < strtotime($activity_info->start_time)) {
+                return view('pay.order.newUserActivity', ['url' => '###', 'code' => -3, 'start_time' => substr($activity_info->start_time,0,10), 'end_time' => substr($activity_info->end_time,0,10)]);
+            }
+
+            //活动结束
+            if (time() > strtotime($activity_info->end_time)) {
+                return view('pay.order.newUserActivity', ['url' => '###', 'code' => -2, 'start_time' => substr($activity_info->start_time,0,10), 'end_time' => substr($activity_info->end_time,0,10)]);
+            }
+
+            $charge_count = Order::where('uid',$this->uid)->where('status','PAID')->count();
+            if($charge_count >0){
+                //不是新用户
+                return view('pay.order.newUserActivity', ['url' => '###', 'code' => -1, 'start_time' => substr($activity_info->start_time,0,10), 'end_time' => substr($activity_info->end_time,0,10)]);
+            }
+
+            $param = [
+                'uid' => $this->uid,
+                'distribution_channel_id' => $this->distribution_channel_id,
+                'product_id' => $activity_info->product_id,
+                'activity_id' => $activity_info->id,
+                'fromtype' => $from,
+                'pay_redirect_url' => env('H5_SCHEME', 'https') . '://site' . $encode_distribution_channel_id . '.' . env('CUSTOM_HOST') . '.com/person'
+            ];
+            $url = env('CREATE_PAY_URL') . '?' . http_build_query($param);
+            return view('pay.order.newUserActivity', ['url' => $url, 'code' => 0, 'start_time' => substr($activity_info->start_time,0,10), 'end_time' => substr($activity_info->end_time,0,10)]);
+        }
+        return view('pay.order.newUserActivity', ['url' => '###', 'code' => -2, 'start_time' => date('Y-m-d',time()-86400*2), 'end_time' => date('Y-m-d',time()-86400)]);
+    }
+
     /**
      * 清明活动
      */

+ 1 - 0
app/Http/Routes/Wap/WapRoutes.php

@@ -194,6 +194,7 @@ Route::group(['domain'=>env('WAP_DOMAIN'),'namespace'=>'App\Http\Controllers\Wap
         Route::get('sale/channelsalenine','Web\WelcomeController@channelActivityNine');
         Route::get('sale/channelsalesixty','Web\WelcomeController@channelActivitySixtyEight');
         Route::get('sale/channelsaleforty','Web\WelcomeController@channelActivityFortyEight');
+        Route::get('sale/channelnewuser','Web\WelcomeController@channelNewUserActivity');
         Route::get('sale/qingMingActivity','Web\WelcomeController@qingMingActivity');
         Route::get('sale/readDayActivity','Web\WelcomeController@readDayActivity');
         Route::get('sale/laborDayActivity','Web\WelcomeController@readDayActivity');

+ 1 - 1
app/Modules/Activity/Models/Activity.php

@@ -7,7 +7,7 @@ use Illuminate\Database\Eloquent\Model;
 class Activity extends Model
 {
     protected $table = 'activity';
-    protected $fillable = ['id', 'name', 'start_time', 'end_time', 'activity_page', 'product_id', 'token', 'default_template_id', 'customer_msg', 'distribution_channel_id', 'setting'];
+    protected $fillable = ['id', 'name', 'start_time', 'end_time', 'activity_page', 'product_id', 'token', 'default_template_id', 'customer_msg', 'distribution_channel_id', 'setting','type'];
 
     //查询活动信息
     static function search($params = [], $is_all = false)

+ 9 - 0
app/Modules/Activity/Services/ActivityService.php

@@ -91,6 +91,15 @@ class ActivityService
             ->first();
     }
 
+    static function getActiveCustomActivityByType($chanel_id,$type='DEFAULT'){
+        return Activity::where('distribution_channel_id', $chanel_id)
+            ->where('start_time', '<=', date('Y-m-d H:i:s'))
+            ->where('end_time', '>', date('Y-m-d H:i:s'))
+            ->where('type', $type)
+            ->select('activity_page')
+            ->first();
+    }
+
     /**
      * 活动统计
      * @param $activity_id