日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

TP5 实现链接分享/帮助,限制每个用户每天一次帮忙

發布時間:2025/7/14 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TP5 实现链接分享/帮助,限制每个用户每天一次帮忙 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、實現思想

1.1、分享人角度
  • 用戶需要將對應生成的鏈接發送給其他用戶
  • 鏈接中必須包含所需要的 當前用戶ID相關ID(例如:視頻ID/商品ID)
  • 用戶需要登錄才能分享,如果沒有登錄則不傳 用戶ID相關ID
  • 分享成功后需要獲得對應的報酬或分享成功的展示
1.2、幫助人角度
  • 用戶需要點擊分享人的鏈接并且需要登錄,否則不算分享成功。
  • 幫助人點擊一次算一次,多次點擊也只算一次

前端在分享前需要調用接口,告訴后端 某某用戶 分享的 相關ID(例如:視頻ID/商品ID)
前端在用戶點擊的鏈接需要去判斷是否帶有分享參數,如果有則需要調取 幫助分享的接口
后端需要將 幫助分享的接口 改成需要登錄狀態的,這樣才可以讓用戶去登錄后調取該接口。

2、實現代碼

2.1、分享前調用接口
/*** @ApiTitle (分享前調用接口)* @ApiMethod (GET)* @ApiHeaders (name=Authorization, type=string, required=true, description="用戶Token")* @ApiParams (name="id", type="integer", description="呆滯料id")* @ApiReturn ()*/ public function shareBusiness() {$id = input('id', 0);if (!$id) $this->error('參數錯誤!');//存入redis$redis = RedisService::connect();//先刪除后更新$key = RedisService::SU_MATERIAL_BUSINESS_SHARE . $this->auth->uid;$redis->zrem($key, $id);$redis->zadd($key, [$id => time()]);$this->success('成功!'); }

1、其中 RedisService 是我自己建立的服務類,主要存redis健和相關操作
2、$this->auth->uid 這個是當前用戶的ID,我這里用的是有序集合,其實是有無序集合也是可以的,只是考慮到之后可能要看用戶分享的記錄,這里的score存的是時間。
3、其中值里面的value存的是 相關ID(例如:視頻ID/商品ID),以便對應操作

2.2、分享后調用接口
/*** @ApiTitle (點擊分享鏈接)* @ApiMethod (GET)* @ApiHeaders (name=Authorization, type=string, required=true, description="用戶Token")* @ApiParams (name="id", type="integer", description="相關id")* @ApiParams (name="share_user_id", type="integer", description="分享人ID")* @ApiReturn ()*/ public function clickShareLink() {$id = input('id', 0); //相關ID$shareUserId = input('share_user_id', 0); //分享人ID$userId = $this->auth->uid; //當前用戶IDif (!$id || !$shareUserId) $this->error('參數錯誤!');$key = RedisService::SU_MATERIAL_BUSINESS_SHARE . $shareUserId;$key2 = RedisService::SU_MATERIAL_BUSINESS_SHARE_SUCCESS . $shareUserId . ':' . $id;$redis = RedisService::connect();//判斷用戶是否分享過if ($redis->zscore($key, $id)) {//判斷該用戶是否點擊過if (!$redis->zscore($key2, $userId)) {//記錄保存至當天$redis->zadd($key2, [$userId => time()]);$expire = strtotime(date('Y-m-d 23:59:59', time())) - time();$redis->expire($key2, $expire);//執行相關的獎勵操作// ....$this->success('分享成功!');}}$this->success('分享失敗!'); }

1、RedisService::SU_MATERIAL_BUSINESS_SHARE 這個鍵值主要存分享人ID和相關ID,用于判斷該分享鏈接是否有用
2、RedisService::SU_MATERIAL_BUSINESS_SHARE_SUCCESS 這個健主要存分享人ID、幫助人ID和相關ID,用于限制幫助人只能幫助一次。
3、 這里需要設置幫助成功鍵的有效期,主要是用于讓幫助人第二天還能幫助一次,如果限制永久只能幫助一次的話,這段$expire = strtotime(date('Y-m-d 23:59:59', time())) - time(); 和 $redis->expire($key2, $expire); 都注釋掉。

  • 這樣就達到了分享相關,另外還有一種是根據二維碼和邀請碼的幫助,等下一次我再發布一篇,歡迎有什么問題都可以發布評論。

總結

以上是生活随笔為你收集整理的TP5 实现链接分享/帮助,限制每个用户每天一次帮忙的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。