Browse Source

feat: 优化虚拟点赞等

xiansin 2 years ago
parent
commit
c70121a483

+ 1 - 1
mini/components/Recharge/index.vue

xqd
@@ -22,7 +22,7 @@
                   <view v-if="list.origin_price" class="origin-price cross-center">原价{{ list.origin_price }}金币</view>
                 </view>
               </view>
-              <view class="buy-num">{{ buyNum }}人购买</view>
+              <view class="buy-num">{{ $util.tranNumber(buyNum) }}人购买</view>
             </view>
           </view>
           <view class="static-text main-between cross-center">

+ 4 - 4
mini/pages/episode/components/EpisodeButtons.vue

xqd xqd xqd
@@ -3,7 +3,7 @@
     <!--播放数据-->
     <view class="view-num main-left cross-center">
       <u-icon name="eye-fill" :color="isCollect?$colors.primaryColor:$colors.defaultColor" size="26rpx" />
-      <text>{{ episode.user_watch_record_count }}</text>
+      <text>{{ $util.tranNumber(episode.user_watch_record_count) }}</text>
     </view>
     <!--按钮-->
     <view class="status-bar dir-top-wrap main-center">
@@ -14,7 +14,7 @@
         @click="handleFavorite"
       >
         <u-icon name="heart-fill" size="58rpx" :color="isFav?$colors.primaryColor:$colors.defaultColor" />
-        <text>{{ episode.user_favorite_count }}</text>
+        <text>{{ $util.tranNumber(episode.user_favorite_count) }}</text>
       </view>
       <!--收藏-->
       <view
@@ -23,13 +23,13 @@
         @click="handleCollect"
       >
         <u-icon name="star-fill" size="58rpx" :color="isCollect?$colors.primaryColor:$colors.defaultColor" />
-        <text>{{ episode.user_collect_count }}</text>
+        <text>{{ $util.tranNumber(episode.user_collect_count) }}</text>
       </view>
       <!--分享-->
       <view class="item share dir-top-wrap main-center cross-center">
         <button open-type="share" />
         <u-icon name="share-fill" size="58rpx" :color="$colors.defaultColor" />
-        <text>{{ episode.sahre_count }}</text>
+        <text>{{ $util.tranNumber(episode.share_count) }}</text>
       </view>
     </view>
     <!--toast-->

+ 20 - 1
mini/utils/index.js

xqd
@@ -45,8 +45,27 @@ const shareMessage = user => {
   }
 }
 
+const tranNumber = (num, point = 2) => {
+  let numStr = parseFloat(num).toString()
+  // 万以内直接返回
+  if (numStr.length < 5) {
+    return numStr;
+  }
+  //大于6位数是百万
+  else if (numStr.length > 6) {
+    let decimal = numStr.substring(numStr.length - 5, numStr.length - 5 + point);
+    return parseFloat(parseInt(num / 100000) + '.' + decimal) + 'M';
+  }
+  //大于5位数是万 (以1W分割 1W以下全部显示)
+  else if (numStr.length > 4) {
+    let decimal = numStr.substring(numStr.length - 4, numStr.length - 4 + point)
+    return parseFloat(parseInt(num / 1000) + '.' + decimal) + 'K';
+  }
+}
+
 export default {
   copyText,
   checkOS,
-  shareMessage
+  shareMessage,
+  tranNumber
 }

+ 10 - 0
server/app/Http/Controllers/V1/EpisodeController.php

xqd xqd
@@ -3,6 +3,7 @@ namespace App\Http\Controllers\V1;
 use App\Models\Banner;
 use App\Models\Episode;
 use App\Models\EpisodesCategory;
+use App\Models\EpisodesList;
 use App\Models\NavBar;
 use App\Models\Tabbar;
 use App\Models\User;
@@ -290,12 +291,21 @@ class EpisodeController extends Controller
             ->where('is_opend', 1)
             ->where('id', $id)
             ->first();
+        $episodes->user_watch_record_count += $episodes->play_num;
+        $episodes->user_favorite_count += $episodes->favorite_num;
+        $episodes->user_collect_count += $episodes->collect_num;
+        $episodes->share_count += $episodes->virtual_share;
+
         return $this->success($episodes);
     }
 
     public function listBuyNum($listId)
     {
         $count = UserEpisodesRecord::where('list_id',$listId)->count();
+        $info = EpisodesList::find($listId);
+        $res = Episode::find($info->episodes_id);
+        $count += $res->buy_num;
+
         return $this->success($count);
     }
 

+ 10 - 1
server/app/Http/Controllers/V1/SettingController.php

xqd xqd
@@ -6,6 +6,7 @@ use App\Models\NavBar;
 use App\Models\RechargeCombo;
 use App\Models\Setting;
 use App\Models\Tabbar;
+use App\Models\VipCombo;
 
 class SettingController extends Controller
 {
@@ -60,8 +61,16 @@ class SettingController extends Controller
 
     public function rechargeCombo()
     {
-        $lists = RechargeCombo::where('status', 1)->get();
+        $lists = RechargeCombo::where('status', 1)->get()->toArray();
 
+        $vipCombo = VipCombo::select(['id','name','price','valid_day','desc'])
+            ->where('status', 1)
+            ->orderByDesc('valid_day')
+            ->first()->toArray();
+
+        $vipCombo['vip_combo'] = 1;
+        $offset = collect($lists)->count() > 6 ? 5 : collect($lists)->count();
+        array_splice($lists,$offset,1, [$vipCombo]);
         return $this->success($lists);
     }
 

+ 10 - 0
server/app/Models/Episode.php

xqd
@@ -60,6 +60,16 @@ use Illuminate\Database\Eloquent\Model;
  * @method static \Illuminate\Database\Eloquent\Builder|Episode whereShareCount($value)
  * @property-read \App\Models\UserWatchRecord|null $userWatchRecord
  * @method static \Illuminate\Database\Eloquent\Builder|Episode filterPlatform()
+ * @property int|null $favorite_num 虚拟点赞
+ * @property int|null $collect_num 虚拟收藏
+ * @property int|null $buy_num 虚拟购买
+ * @property int|null $play_num 虚拟播放
+ * @method static \Illuminate\Database\Eloquent\Builder|Episode whereBuyNum($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Episode whereCollectNum($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Episode whereFavoriteNum($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Episode wherePlayNum($value)
+ * @property int|null $virtual_share 虚拟分享
+ * @method static \Illuminate\Database\Eloquent\Builder|Episode whereVirtualShare($value)
  */
 class Episode extends Model
 {

+ 1 - 0
server/routes/api.php

xqd
@@ -107,6 +107,7 @@ $api->version('v1', ['namespace' => 'App\Http\Controllers\V1'], function ($api)
                 $api->group(['prefix' => 'vip'], function ($api){
                     /* @var Dingo\Api\Routing\Router $api*/
                     $api->get('setting', 'VipController@setting');
+                    $api->get('last', 'VipController@last');
                     $api->post('create/order', 'VipController@createOrder');
                 });