wesmiler 4 일 전
부모
커밋
c4433646dc
3개의 변경된 파일71개의 추가작업 그리고 0개의 파일을 삭제
  1. 19 0
      app/Http/Controllers/Api/v1/MemberController.php
  2. 51 0
      app/Services/Api/MemberService.php
  3. 1 0
      routes/api.php

+ 19 - 0
app/Http/Controllers/Api/v1/MemberController.php

@@ -94,6 +94,25 @@ class MemberController extends webApp
         }
     }
 
+    /**
+     * 设置背景
+     * @return array
+     */
+    public function setBg()
+    {
+        try {
+            $params = request()->all();
+            if (!$result = MemberService::make()->setBg($this->userId, $params)) {
+                return showJson(MemberService::make()->getError(), false);
+            } else {
+                return showJson(MemberService::make()->getError(), true, $result);
+            }
+        } catch (\Exception $exception){
+            $error = ['data'=>$exception->getTrace(),'err'=>$exception->getMessage()];
+            return showJson(1046, false, $error);
+        }
+    }
+
 
     /**
      * 获取手机号

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

@@ -594,6 +594,57 @@ class MemberService extends BaseService
     }
 
     /**
+     * 设置主页背景
+     * @param $userId
+     * @param $params
+     * @return bool
+     */
+    public function setBg($userId, $params)
+    {
+        $cacheLockKey = "caches:members:setbg_{$userId}";
+        if (RedisService::get($cacheLockKey)) {
+            $this->error = 1034;
+            return false;
+        }
+
+        // 用户验证
+        RedisService::set($cacheLockKey, ['user_id' => $userId, 'params' => $params], rand(2, 3));
+        $info = $this->model->where(['id' => $userId, 'mark' => 1])
+            ->select(['id', 'nickname','home_bg','avatar', 'status'])
+            ->first();
+        if (!$info || $info['status'] != 1) {
+            $this->error = 2016;
+            RedisService::clear($cacheLockKey);
+            return false;
+        }
+
+        // 修改数据
+        $data = ['update_time' => time()];
+
+        // 背景
+        $homeBg = isset($params['home_bg']) ? $params['home_bg'] : '';
+        if (isset($params['home_bg']) && $homeBg) {
+            $data['home_bg'] = get_image_path($homeBg);
+        }
+
+        if (!$this->model->where(['id' => $userId])->update($data)) {
+            $this->error = '设置失败';
+            RedisService::clear($cacheLockKey);
+            return false;
+        }
+
+        $oldBg = isset($info['home_bg']) ? $info['home_bg'] : '';
+        if ($homeBg && $oldBg && ($homeBg != $oldBg) && file_exists(ATTACHMENT_PATH . $oldBg)) {
+            @unlink(ATTACHMENT_PATH . $oldBg);
+        }
+
+        $this->error = '设置成功';
+        RedisService::clear($cacheLockKey);
+        RedisService::clear("caches:members:info_{$userId}");
+        return true;
+    }
+
+    /**
      * 获取团队列表
      * @param $userId
      * @param $params

+ 1 - 0
routes/api.php

@@ -63,6 +63,7 @@ Route::prefix('v1')->middleware('web.login')->group(function() {
 
     // 用户信息
     Route::get('/user/info', [\App\Http\Controllers\Api\v1\MemberController::class, 'info']);
+    Route::post('/user/setBg', [\App\Http\Controllers\Api\v1\MemberController::class, 'setBg']);
     Route::post('/user/modify', [\App\Http\Controllers\Api\v1\MemberController::class, 'modify']);
     Route::post('/user/teamList', [\App\Http\Controllers\Api\v1\MemberController::class, 'teamList']);
     Route::post('/user/logOff', [\App\Http\Controllers\Api\v1\MemberController::class, 'logOff']);