Browse Source

又完成一部接口的参数验证和json返回数据

tangs 6 years ago
parent
commit
046233baba

+ 30 - 5
app/Http/Controllers/ActionBarController.php

@@ -4,14 +4,27 @@ namespace App\Http\Controllers;
 
 use App\Models;
 use Illuminate\Http\Request;
-use Illuminate\Support\Facades\Log;
+use Illuminate\Support\Facades\Validator;
+
 
 class ActionBarController extends Controller
 {
     public function AddActionBar(Request $request)
     {
+        $validator = Validator::make($request->all(), [
+            "parent" => "required|integer|min:0",
+            "name" => "required|between:1,64",
+            "description" => "max:255",
+            "icon" => "max:255",
+            "link_type" => "between:1,32",
+            "link" => "max255",
+        ]);
+        if ($validator->fails()) {
+            return $this->fail(REQUEST_PARAM_ERROR, $this->error[REQUEST_PARAM_ERROR], $validator->errors());
+        }
+
         $params = [];
-        $params["parent"] = $request->input("parent");
+        $params["parent"] = (int)$request->input("parent");
         $params["name"] = $request->input("name");
         $params["description"] = $request->input("description");
         $params["icon"] = $request->input("icon");
@@ -20,14 +33,26 @@ class ActionBarController extends Controller
 
         $bar = new Models\ActionBar();
         $result = $bar->AddActionBar($params);
-        if ($result != "success") {
-            Log::debug($result);
+        if ($result["code"] == 0) {
+            return $this->success($result["data"]);
         }
-        return $result;
+        return $this->fail($result["code"], $this->error[$result["code"]]);
     }
 
     public function ModifyActionBar(Request $request)
     {
+        $validator = Validator::make($request->all(), [
+            "parent" => "",
+            "name" => "required|between:1,64",
+            "description" => "max:255",
+            "icon" => "max:255",
+            "link_type" => "",
+            "link" => "",
+        ]);
+        if ($validator->fails()) {
+            return $this->fail(REQUEST_PARAM_ERROR, $this->error[REQUEST_PARAM_ERROR], $validator->errors());
+        }
+
         $params = [];
         $params["id"] = $request->input("id");
         $params["parent"] = $request->input("parent");

+ 1 - 1
app/Http/Controllers/Controller.php

@@ -22,7 +22,7 @@ class Controller extends BaseController
      * HTTP请求成功时的数据返回
      *
      * @param array $data
-     * @param null $message
+     * @param string $message
      * @return \Illuminate\Http\JsonResponse
      */
     public function success($data = array(), $message = "success")

+ 64 - 11
app/Http/Controllers/GroupController.php

@@ -4,44 +4,97 @@ namespace App\Http\Controllers;
 
 use App\Models;
 use Illuminate\Http\Request;
-use Mockery\Exception;
-use Illuminate\Support\Facades\Log;
+use Illuminate\Support\Facades\Validator;
 
 class GroupController extends Controller
 {
     public function CreateGroup(Request $request)
     {
+        $validator = Validator::make($request->all(), [
+            "name" => "required|between:1,64",
+            "description" => "max:255",
+            "icon" => "max:255",
+        ]);
+        if ($validator->fails()) {
+            return $this->fail(REQUEST_PARAM_ERROR, $this->error[REQUEST_PARAM_ERROR], $validator->errors());
+        }
+
         $params = [];
         $params["name"] = $request->input("name");
         $params["description"] = $request->input("description");
         $params["icon"] = $request->input("icon");
 
         $group = new Models\Group();
-        $group->CreateGroup($params);
-        // todo 这里应该返回group的json数据
-        return "success";
+        $result = $group->CreateGroup($params);
+        if ($result["code"] == 0) {
+            return $this->success($result["data"]);
+        }
+        return $this->response($result["code"], $this->error[$result["code"]]);
     }
 
     public function ModifyGroup(Request $request)
     {
+        $validator = Validator::make($request->all(), [
+            "id" => "required|integer|min:1",
+            "name" => "between:1,64",
+            "description" => "max:255",
+            "icon" => "max:255",
+        ]);
+        if ($validator->fails()) {
+            return $this->fail(REQUEST_PARAM_ERROR, $this->error[REQUEST_PARAM_ERROR], $validator->errors());
+        }
+
         $params = [];
-        $params["gid"] = $request->input("gid");
+        $params["id"] = $request->input("id");
         $params["name"] = $request->input("name");
         $params["description"] = $request->input("description");
         $params["icon"] = $request->input("icon");
 
         $group = new Models\Group();
-        $group->ModifyGroup($params);
-        return "success";
+        $code = $group->ModifyGroup($params);
+        return $this->response($code, $this->error[$code]);
     }
 
     public function DeleteGroup(Request $request)
     {
+        $validator = Validator::make($request->all(), [
+            "id" => "required|integer|min:1",
+        ]);
+        if ($validator->fails()) {
+            return $this->fail(REQUEST_PARAM_ERROR, $this->error[REQUEST_PARAM_ERROR], $validator->errors());
+        }
+
+        $params = [];
+        $params["id"] = $request->input("id");
+
+        $group = new Models\Group();
+        $code = $group->DeleteGroup($params);
+        return $this->response($code, $this->error[$code]);
+    }
+
+    /**
+     * 此方法待定
+     *
+     * @param Request $request
+     * @return \Illuminate\Http\JsonResponse
+     */
+    public function ListGroup(Request $request)
+    {
+        $validator = Validator::make($request->all(), [
+            "page" => "integer|min:1",
+            "pageCount" => "integer|min:1",
+        ]);
+        if ($validator->fails()) {
+            return $this->fail(REQUEST_PARAM_ERROR, $this->error[REQUEST_PARAM_ERROR], $validator->errors());
+        }
+
         $params = [];
-        $params["gid"] = $request->input("gid");
+        $params["page"] = $request->input("page");
+        $params["pageCount"] = $request->input("pageCount");
+        $params["keyword"] = $request->input("keyword");
 
         $group = new Models\Group();
-        $group->DeleteGroup($params);
-        return "success";
+        $result = $group->ListGroup($params);
+        return $this->success($result);
     }
 }

+ 29 - 8
app/Http/Controllers/GroupUserController.php

@@ -4,26 +4,47 @@ namespace App\Http\Controllers;
 
 use App\Models;
 use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Validator;
 
 class GroupUserController extends Controller
 {
     public function GroupAddUser(Request $request)
     {
-        $gid = $request->input("gid");
-        $uid = $request->input("uid");
+        $validator = Validator::make($request->all(), [
+            "gid" => "required|integer|min:1",
+            "uid" => "required|integer|min:1",
+        ]);
+        if ($validator->fails()) {
+            return $this->fail(REQUEST_PARAM_ERROR, $this->error[REQUEST_PARAM_ERROR], $validator->errors());
+        }
+        $currentUid = 0;
+        // 判断当前用户是否可以为群组添加用户
+
+        $gid = (int)$request->input("gid");
+        $uid = (int)$request->input("uid");
 
         $groupUser = new Models\GroupUser();
-        $groupUser->GroupAddUser($gid,$uid);
-        return "success";
+        $result = $groupUser->GroupAddUser($gid, $uid);
+        if ($result["code"] == 0) {
+            return $this->success($result["data"]);
+        }
+        return $this->fail($result["code"], $this->error[$result["code"]]);
     }
 
     public function GroupRemoveUser(Request $request)
     {
-        $gid = $request->input("gid");
-        $uid = $request->input("uid");
+        $validator = Validator::make($request->all(), [
+            "id" => "required|integer|min:1",
+        ]);
+        if ($validator->fails()) {
+            return $this->fail(REQUEST_PARAM_ERROR, $this->error[REQUEST_PARAM_ERROR], $validator->errors());
+        }
+        $currentUid = 0;
+        // 判断当前用户是否可以为群组刪除用户
+        $id = (int)$request->input("id");
 
         $groupUser = new Models\GroupUser();
-        $groupUser->GroupRemoveUser($gid,$uid);
-        return "success";
+        $code = $groupUser->GroupRemoveUser($id);
+        return $this->response($code, $this->error[$code]);
     }
 }

+ 14 - 21
app/Models/ActionBar.php

@@ -13,6 +13,7 @@ class ActionBar extends Model
 {
     protected $table = "action_bars";
     public $timestamps = false;
+    protected $fillable = ["name"];
 
     /**
      * @param array $params
@@ -22,37 +23,29 @@ class ActionBar extends Model
      * link 根据link_type需要的数据,当前为url,也可以是页面上的某个id
      * name ActionBar的名字
      * description ActionBar的的描述
-     * @return string
+     *
+     * @param array $params
+     * @return array
      */
     public function AddActionBar(array $params)
     {
-        $this->parent = $params["parent"]; // default 0
-        $this->icon = $params["icon"];
-        $link_type = $params["link_type"];
-        $this->link = $params["link"];
-        $this->name = $params["name"];
-        $this->description = $params["description"];
-        $this->status = "normal";
+        if ($params["name"] == "") {
+            return ["code" => EMPTY_ACTION_BAR_NAME];
+        }
 
         if ($this->parent < 0) {
-            return "invalid parent: " . $this->parent;
-        }
-        if ($this->level < 0) {
-            return "invalid level: " . $this->level;
+            return ["code" => INVALID_ACTION_PARENT];
         }
-        $this->link_type = trim($link_type);
         if ($this->link_type == "") {
             $this->link_type = LINK_TYPE_URL;
         }
 
-        $result = $this->save();
-        if ($result) {
-            Log::debug("AddActionBar success with params: " . json_encode($params));
-            return "success";
-        } else {
-            Log::error("AddActionBar failed with params: " . json_encode($params));
-            return "AddActionBar but fail";
-        }
+        $name = $params["name"];
+        $result = $this->firstOrCreate(["name" => $name], $params);
+        unset($result["is_del"]);
+        unset($result["created_user_id"]);
+        unset($result["updated_user_id"]);
+        return ["code" => SUCCESS, "data" => $result];
     }
 
 

+ 30 - 18
app/Models/Group.php

@@ -9,14 +9,15 @@ use PhpParser\Node\Expr\AssignOp\Mod;
 
 class Group extends Model
 {
-    protected $table = groups;
+    protected $table = "groups";
     public $timestamps = false;
 
+
     /**
      * 创建一个用户组,组名必填
      *
      * @param array $params
-     * @return string
+     * @return array|int
      */
     public function CreateGroup(array $params)
     {
@@ -26,19 +27,27 @@ class Group extends Model
         $this->status = "normal";
 
         if ($this->name == "") {
-            return "empty group name";
+            return ["code" => EMPTY_GROUP_NAME];
+        }
+
+        // check and isn't allowed same name of group
+        $group = $this->where("name", $this->name)->where("is_del", false)->first();
+        if ($group) {
+            return ["code" => REPEAT_GROUP_NAME];
         }
 
         $this->save();
-        return "success";
+        $params["id"] = $this->getQueueableId();
+
+        return ["code" => SUCCESS, "data" => $params];
     }
 
     public function ModifyGroup(array $params)
     {
         $update = [];
-        $gid = $params["gid"];
+        $gid = $params["id"];
         if ($gid == "") {
-            return "empty group id";
+            return EMPTY_GROUP_ID;
         }
         if ($params["name"] != "") {
             $update["name"] = $params["name"];
@@ -50,26 +59,29 @@ class Group extends Model
             $update["icon"] = $params["icon"];
         }
         if (count($update) == 0) {
-            return "nothing to update";
+            return NOTHING_UPDATE;
         }
 
-        $this->where("id", $gid)
-            ->where("status", "normal")
-            ->where("is_del", false)
-            ->update($update);
-        return "success";
+        $group = $this->where("id", $gid)->where("is_del", false)->first();
+        if (!$group) {
+            return INVALID_GROUP_ID;
+        }
+
+        $this->where("id", $gid)->where("is_del", false)->update($update);
+        return SUCCESS;
     }
 
     public function DeleteGroup(array $params)
     {
-        $gid = $params["gid"];
+        $gid = $params["id"];
         if ($gid == "") {
-            return "empty group id";
+            return EMPTY_GROUP_ID;
         }
-        $this->where("id", $gid)
-            ->where("is_del", false)
-            ->update(["is_del" => true]);
-        return "success";
+        $row = $this->where("id", $gid)->where("is_del", false)->update(["is_del" => true]);
+        if ($row == 0) {
+            return INVALID_GROUP_ID;
+        }
+        return SUCCESS;
     }
 
 

+ 17 - 25
app/Models/GroupUser.php

@@ -8,9 +8,10 @@ use Illuminate\Support\Facades\Log;
 
 class GroupUser extends Model
 {
-    protected $table = "group_user";
+    protected $table = "group_users";
     public $timestamps = false;
 
+    protected $fillable = ["group_id", "user_id"];
 
     /**
      * todo
@@ -22,10 +23,7 @@ class GroupUser extends Model
      */
     public function ListGroupIds($uid)
     {
-        $groups = $this->select("group_id")
-            ->where("user_id", $uid)
-            ->where("is_del", false)
-            ->all();
+        $groups = $this->select("group_id")->where("user_id", $uid)->where("is_del", false)->all();
         $group_ids = [];
         foreach ($groups as $group) {
             array_push($group_ids, $group->group_id);
@@ -36,35 +34,29 @@ class GroupUser extends Model
     public function GroupAddUser($gid, $uid)
     {
         if ($gid == "") {
-            return "empty group id";
+            return ["code" => EMPTY_GROUP_ID];
         }
         if ($uid == "") {
-            return "empty user id";
+            return ["code" => EMPTY_USER_ID];
         }
 
-        $this->group_id = $gid;
-        $this->user_id = $uid;
-        $this->status = "status";
-
-        $this->save();
+        $result = $this->firstOrCreate(["group_id" => $gid, "user_id" => $uid, "is_del" => false]);
+        unset($result["is_del"]);
+        unset($result["created_user_id"]);
+        unset($result["updated_user_id"]);
+        return ["code" => SUCCESS, "data" => $result];
     }
 
-    public function GroupRemoveUser($gid, $uid)
+    public function GroupRemoveUser($id)
     {
-        if ($gid == "") {
-            return "empty group id";
+        if ($id < 1) {
+            return INVALID_GROUP_USER_ID;
         }
-        if ($uid == "") {
-            return "empty user id";
+        $row = $this->where("id", $id)->where("is_del", false)->update(["is_del" => true]);
+        if ($row == 0) {
+            return INVALID_GROUP_USER_ID;
         }
-//        $this->group_id = $gid;
-//        $this->user_id = $uid;
-
-        $this->where("group_id", $gid)
-            ->where("user_id", $uid)
-            ->where("is_del", false)
-            ->update(["is_del" => true]);
-        return "success";
+        return SUCCESS;
     }
 
 

+ 9 - 6
app/Models/UserActionBar.php

@@ -36,7 +36,7 @@ class UserActionBar extends Model
         unset($result["is_del"]);
         unset($result["created_user_id"]);
         unset($result["updated_user_id"]);
-        return ["code" => 0, "data" => $result];
+        return ["code" => SUCCESS, "data" => $result];
     }
 
     private function checkActionBar($barId)
@@ -55,12 +55,15 @@ class UserActionBar extends Model
             return INVALID_U_A_ID;
         }
         // check the data if exist in system.
-        $item = $this->where("id", $id)->where("is_del", false)->first();
-        if (!$item) {
-            return INVALID_U_A_ID;
-        }
+//        $item = $this->where("id", $id)->where("is_del", false)->first();
+//        if (!$item) {
+//            return INVALID_U_A_ID;
+//        }
 
-        $this->where("id", $id)->where("is_del", false)->update(["is_del" => true]);
+        $row = $this->where("id", $id)->where("is_del", false)->update(["is_del" => true]);
+        if ($row == 0) {
+            return INVALID_GROUP_ID;
+        }
         return SUCCESS;
     }
 

+ 21 - 0
config/errorcode.php

@@ -24,6 +24,16 @@ const EMPTY_BAR_ID = 410;
 
 const INVALID_U_A_ID = 510;
 
+const EMPTY_GROUP_NAME = 610;
+const EMPTY_GROUP_ID = 611;
+const REPEAT_GROUP_NAME = 612;
+const INVALID_GROUP_ID = 613;
+
+const EMPTY_GROUP_USER_ID = 710;
+const INVALID_GROUP_USER_ID = 711;
+
+const EMPTY_ACTION_BAR_NAME = 810;
+const INVALID_ACTION_PARENT = 813;
 return [
     "0" => "success",
     "1" => "nothing to update",
@@ -46,4 +56,15 @@ return [
     "410" => "empty action bar id",
 
     "510" => "invalid user-action-bar id",
+
+    "610" => "empty group name",
+    "611" => "empty group id",
+    "612" => "repeat group name",
+    "613" => "invalid group id",
+
+    "710" => "empty group-user id",
+    "711" => "invalid group-user id",
+
+    "810" => "empty action-bar name",
+    "813" => "invalid action-bar parent",
 ];

+ 9 - 0
routes/web.php

@@ -33,6 +33,15 @@ Route::get("listRole", "RoleController@ListRole");
 Route::get("addUserActionBar", "UserActionBarController@AddUserActionBar");
 Route::get("removeUserActionBar", "UserActionBarController@RemoveUserActionBar");
 
+// group
+Route::get("createGroup", "GroupController@CreateGroup");
+Route::get("modifyGroup", "GroupController@ModifyGroup");
+Route::get("deleteGroup", "GroupController@DeleteGroup");
+
+// group user
+Route::get("groupAddUser", "GroupUserController@GroupAddUser");
+Route::get("groupRemoveUser", "GroupUserController@GroupRemoveUser");
+
 Route::get("grantPrivilege", "PermissionController@GrantPrivilege");
 
 // action bar