diff --git a/app/Admin/Actions/Grid/v3/StoreUserPassword.php b/app/Admin/Actions/Grid/v3/StoreUserPassword.php new file mode 100644 index 0000000..fda32de --- /dev/null +++ b/app/Admin/Actions/Grid/v3/StoreUserPassword.php @@ -0,0 +1,36 @@ +getKey(); + + $modal = Modal::make() + ->xl() + ->title($this->title) + ->body(StoreUserPasswordForm::make()->setKey($id)) + ->button($this->title); + + return $modal; + } + + public function parameters() + { + + return [ + + ]; + } +} diff --git a/app/Admin/Controllers/v3/StoreUserController.php b/app/Admin/Controllers/v3/StoreUserController.php index 4c23090..25e7b4e 100644 --- a/app/Admin/Controllers/v3/StoreUserController.php +++ b/app/Admin/Controllers/v3/StoreUserController.php @@ -9,9 +9,12 @@ use Dcat\Admin\Show; use Dcat\Admin\Controllers\AdminController; use App\Models\v3\Store as StoreModel; use App\Models\v3\StoreUser as StoreUserModel; +use App\Admin\Controllers\v3\StoreController; +use App\Admin\Actions\Grid\v3\StoreUserPassword; class StoreUserController extends AdminController { + /** * Make a grid builder. * @@ -25,32 +28,34 @@ class StoreUserController extends AdminController // 账号类型 $categoryList = StoreUserModel::$_USER_CATEGORY; // 注册类型 - $typeList = StoreUserModel::$_USER_CATEGORY; + $typeList = StoreUserModel::$_REGISTER_TYPE; $grid->column('id')->sortable(); $grid->column('store_id')->display(function($storeId) use($storeList){ return isset($storeList[$storeId])?$storeList[$storeId]:''; }); $grid->column('username'); - $grid->column('user_category')->display(function($userCategory) use($categoryList){ - return isset($categoryList[$userCategory])?$categoryList[$userCategory]:''; - }); + $grid->column('user_category')->using($categoryList)->label(config('label.account_label')); + $grid->column('register_type')->display(function($registerType) use($typeList){ return isset($typeList[$registerType])?$typeList[$registerType]:''; }); $grid->column('status'); $grid->column('join_ip'); - $grid->column('last_visit_time'); + $grid->column('last_ip'); - + $grid->column('last_visit_time_text'); $grid->model()->orderBy('id', 'desc'); // 每页10条 $grid->paginate(10); - $grid->filter(function (Grid\Filter $filter) use($categoryList){ + $grid->actions([new StoreUserPassword()]); + + $grid->filter(function (Grid\Filter $filter) use($categoryList,$storeList){ unset($categoryList[0]); $filter->equal('id'); $filter->equal('user_category')->select($categoryList); + $filter->equal('store_id')->select($storeList); }); }); } @@ -93,16 +98,46 @@ class StoreUserController extends AdminController $categoryList = StoreUserModel::$_USER_CATEGORY; unset($categoryList[0]); - $form->display('id'); - $form->select('store_id')->options($storeList); - $form->text('username'); + $form->hidden('id'); + $form->hidden('salt')->default(''); + $form->hidden('join_ip')->default(''); + $form->select('store_id')->options($storeList)->required(); + $form->select('user_category')->options($categoryList)->required(); + if($form->isCreating()){ + $form->text('username')->minLength(6,'必须大于等于6位字符')->required(); + }else if($form->isEditing()){ + $form->text('username')->disable(); + } - $form->password('password_'); - $form->password('password_confirm')->same('password'); - - $form->select('user_category')->options($categoryList); + $form->password('password')->minLength(6,'必须大于等于6位数')->required(); + $form->password('password_confirm','再次输入密码')->same('password'); $form->hidden('register_type')->default(5); + $form->hidden('status')->default(2); + $form->text('remark')->default(''); + $form->saving(function(Form $form){ + $ip = isset($_SERVER["REMOTE_ADDR"])?$_SERVER["REMOTE_ADDR"]:''; + + $userName = $form->input('username'); + $password = $form->input('password'); + + if($form->isCreating() && !empty($password)){ + $storeCon = new StoreController(); + $form->salt = $storeCon->random(8); + $form->password = $storeCon->stringHash($password,$form->salt); + } + + if($form->isCreating() && !empty($userName) && !empty(StoreUserModel::where('username', $userName)->first())){ + return $form->error('账号已存在'); + } + $form->join_ip = $ip; + $form->deleteInput('password_confirm'); + }); + $form->disableResetButton(); + $form->disableViewCheck(); + $form->disableEditingCheck(); + $form->disableCreatingCheck(); + $form->disableDeleteButton(); }); } } diff --git a/app/Admin/Forms/v3/StoreUserPasswordForm.php b/app/Admin/Forms/v3/StoreUserPasswordForm.php new file mode 100644 index 0000000..41fd5db --- /dev/null +++ b/app/Admin/Forms/v3/StoreUserPasswordForm.php @@ -0,0 +1,73 @@ + 0 && !empty($password)){ + $model = StoreUserModel::select('id','password','salt')->find($id); + $storeCon = new StoreController(); + $salt = $storeCon->random(8); + $passwordOld = $storeCon->stringHash($password,$model->salt); + + if($model && $model->password != $passwordOld){ + $model->salt = $salt; + $model->password = $storeCon->stringHash($password,$salt);; + if($model->save()){ + return $this->success('修改成功!'); + }else{ + return $this->error('修改失败!'); + } + }else{ + return $this->error('密码相同,无需修改!'); + } + } + + return $this->error('请求参数为空!'); + } + + /** + * Build a form here. + */ + public function form() + { + $id = $this->getKey(); + $storeUser = StoreUserModel::select('username')->find($id); + $userName = empty($storeUser->username)?'':$storeUser->username; + $this->hidden('id')->value($id); + $this->display('username','账号')->value($userName); + $this->password('password')->minLength(6,'必须大于等于6位数')->required(); + $this->password('password_confirm','再次输入密码')->same('password'); + } + + /** + * The data of the form. + * + * @return array + */ + public function default() + { + return []; + } + +} diff --git a/app/Admin/routes.php b/app/Admin/routes.php index 951e240..49d3052 100644 --- a/app/Admin/routes.php +++ b/app/Admin/routes.php @@ -54,7 +54,7 @@ Route::group([ // 店铺 $router->resource('/store', 'v3\StoreController'); - $router->resource('/store_Users', 'v3\StoreUserController'); + $router->resource('/store_user', 'v3\StoreUserController'); // 商品 $router->resource('/goods', 'v3\GoodsController'); $router->resource('/goods_activity', 'v3\GoodsActivityController'); diff --git a/app/Models/v3/StoreUser.php b/app/Models/v3/StoreUser.php index 2d2f9df..c9899bc 100644 --- a/app/Models/v3/StoreUser.php +++ b/app/Models/v3/StoreUser.php @@ -16,9 +16,10 @@ class StoreUser extends Model protected $appends = [ 'user_category_text', 'register_type_text', - 'status_text' + 'status_text', + 'last_visit_time_text', ]; - public static $_USER_CATEGORY = ['管理员','店长', 2=>'店员']; + public static $_USER_CATEGORY = ['管理员', '店长', '店员', '默认']; public static $_REGISTER_TYPE = ['网站注册','QQ','微信','app','商户注册默认账号','后台添加商户账号']; public static $_STATUS = ['禁用','审核中', '正常']; @@ -37,4 +38,9 @@ class StoreUser extends Model $value = $value ? $value : $this->status; return isset(self::$_STATUS[$value]) ? self::$_STATUS[$value] : ''; } + public function getLastVisitTimeTextAttribute($value) + { + $value = $value ? $value : $this->last_visit_time; + return $value ? date('Y-m-d H:i',$value) : ''; + } } diff --git a/config/label.php b/config/label.php index 6b9290c..2a67a48 100644 --- a/config/label.php +++ b/config/label.php @@ -8,5 +8,11 @@ return [ 2 => 'warning', 3 => 'danger', -1=> 'danger' + ], + 'account_label'=>[ + 'default' => '#d3ffd3', + 0 => '#f00', + 1 => '#ff6600', + 2 => '#1c9f78' ] ]; diff --git a/resources/lang/zh-CN/store-user.php b/resources/lang/zh-CN/store-user.php index 255664d..b2f596c 100644 --- a/resources/lang/zh-CN/store-user.php +++ b/resources/lang/zh-CN/store-user.php @@ -2,18 +2,21 @@ return [ 'labels' => [ 'StoreUser' => '店铺账号', - 'StoreUser' => '店铺账号', - 'store_User' => '店铺账号', + 'storeUser' => '店铺账号', + 'store_user' => '店铺账号', ], 'fields' => [ - 'store_id' => '商家id', + 'store_id' => '商家', 'username' => '账号', + 'password' => '密码', 'user_category' => '账号类型', - 'register_type' => '用户来源类型', + 'register_type' => '注册类型', 'status' => '状态', 'join_ip' => '注册IP', 'last_visit_time' => '最后访问时间', + 'last_visit_time_text' => '最后访问时间', 'last_ip' => '最后访问IP', + 'remark' => '备注' ], 'options' => [ ],