diff --git a/admin-web/helpers/validator.js b/admin-web/helpers/validator.js new file mode 100644 index 000000000..02bc4b81c --- /dev/null +++ b/admin-web/helpers/validator.js @@ -0,0 +1,10 @@ + +// 校验必须是英文或者数字 +export function checkTypeWithEnglishAndNumbers (rule, value, callback, text) { + let char = /^[a-zA-Z0-9]+$/ + if (char.test(value)) { + callback() + } else { + callback(text) + } +} \ No newline at end of file diff --git a/admin-web/mock/admin.js b/admin-web/mock/admin.js index aa30f8d3d..be9c114b2 100644 --- a/admin-web/mock/admin.js +++ b/admin-web/mock/admin.js @@ -49,10 +49,10 @@ function getDictionaryTree(req, res) { } export default { - 'GET /admin-api/admins/admin/menu_resource_tree': getAdminMenu, + 'GET /admin-api/admins/admin/menu_resource_tree': getAdminMenuAll, 'GET /admin-api/admins/admin/url_resource_list': getAdminUrls, 'GET /admin-api/admins/resource/tree': getResourceTree, 'GET /admin-api/admins/role/page': getQueryRole, - 'GET /admin-api/admins/admin/page': getQueryRole, + // 'GET /admin-api/admins/admin/page': getQueryRole, 'GET /admin-api/admins/data_dict/tree': getDictionaryTree, }; diff --git a/admin-web/src/components/Dictionary/DictionaryText.js b/admin-web/src/components/Dictionary/DictionaryText.js index 9ee99f2df..7faf7e329 100644 --- a/admin-web/src/components/Dictionary/DictionaryText.js +++ b/admin-web/src/components/Dictionary/DictionaryText.js @@ -5,6 +5,7 @@ export default class DictionaryText extends PureComponent { componentDidMount() {} render() { + debugger; const { dicKey, dicValue } = this.props; return ( diff --git a/admin-web/src/models/admin/adminList.js b/admin-web/src/models/admin/adminList.js index 89d6d316b..bd1455f36 100644 --- a/admin-web/src/models/admin/adminList.js +++ b/admin-web/src/models/admin/adminList.js @@ -82,6 +82,7 @@ export default { payload: { list: admins, count, + pageNo: payload.pageNo + 1 }, }); }, diff --git a/admin-web/src/pages/Admin/AdminList.js b/admin-web/src/pages/Admin/AdminList.js index b11fbff44..3be15d9fe 100644 --- a/admin-web/src/pages/Admin/AdminList.js +++ b/admin-web/src/pages/Admin/AdminList.js @@ -3,10 +3,12 @@ import React, { PureComponent, Fragment } from 'react'; import { connect } from 'dva'; import { Card, Form, Input, Button, Modal, message, Table, Divider, Tree, Spin } from 'antd'; +import { checkTypeWithEnglishAndNumbers } from '../../../helpers/validator' import PageHeaderWrapper from '@/components/PageHeaderWrapper'; import styles from './AdminList.less'; import moment from "moment"; +import Pagination from "antd/es/pagination"; const FormItem = Form.Item; const { TreeNode } = Tree; @@ -44,18 +46,24 @@ const CreateForm = Form.create()(props => { > {form.getFieldDecorator('username', { - rules: [{ required: true, message: '请输入用户名!', min: 2 }], + rules: [{ required: true, message: '请输入用户名!'}, + {max: 16, min:6, message: '长度为6-16位'}, + { validator: (rule, value, callback) => checkTypeWithEnglishAndNumbers(rule, value, callback, '数字以及字母')} + ], initialValue: initValues.username, })()} {form.getFieldDecorator('nickname', { - rules: [{ required: true, message: '请输入昵称!', min: 2 }], + rules: [{ required: true, message: '请输入昵称!'}, + {max: 10, message: '姓名最大长度为10'}], initialValue: initValues.nickname, })()} {form.getFieldDecorator('password', { + rules: [{ required: modalType === 'add', message: '请填写密码'}, // 添加时,必须输入密码 + {max: 16, min: 6, message: '长度为6-18位'}], initialValue: initValues.password, })()} @@ -304,9 +312,21 @@ class ResourceList extends PureComponent { }); }; + onPageChange = (page = {}) => { + const { dispatch } = this.props; + // debugger; + dispatch({ + type: 'adminList/query', + payload: { + pageNo: page - 1, + pageSize: 10, + } + }); + } + render() { - const { list, data } = this.props; - const { roleList, roleCheckedKeys, roleAssignLoading } = data; + const { list, data } = this.props; + const { count, pageNo, pageSize, roleList, roleCheckedKeys, roleAssignLoading } = data; const { modalVisible, modalType, @@ -335,7 +355,7 @@ class ResourceList extends PureComponent { title: '状态', dataIndex: 'status', render(val) { - return {status[val]}; + return {status[val]}; // TODO 芋艿,此处要改 }, }, { @@ -386,6 +406,12 @@ class ResourceList extends PureComponent { columns={columns} dataSource={list} rowKey="id" + pagination={{ + current: pageNo, + pageSize: pageSize, + total: count, + onChange: this.onPageChange + }} /> diff --git a/admin/admin-application/src/main/java/cn/iocoder/mall/admin/application/controller/admins/AdminController.java b/admin/admin-application/src/main/java/cn/iocoder/mall/admin/application/controller/admins/AdminController.java index 041671d41..00e92bbfc 100644 --- a/admin/admin-application/src/main/java/cn/iocoder/mall/admin/application/controller/admins/AdminController.java +++ b/admin/admin-application/src/main/java/cn/iocoder/mall/admin/application/controller/admins/AdminController.java @@ -42,6 +42,8 @@ public class AdminController { // =========== 当前管理员相关的资源 API =========== + // TODO 功能:当前管理员 + @SuppressWarnings("Duplicates") @GetMapping("/menu_resource_tree") @ApiOperation(value = "获得当前登陆的管理员拥有的菜单权限", notes = "以树结构返回") @@ -120,7 +122,7 @@ public class AdminController { public CommonResult update(@RequestParam("id") Integer id, @RequestParam("username") String username, @RequestParam("nickname") String nickname, - @RequestParam("password") String password) { + @RequestParam(value = "password", required = false) String password) { AdminUpdateDTO adminUpdateDTO = new AdminUpdateDTO().setId(id).setUsername(username).setNickname(nickname).setPassword(password); return adminService.updateAdmin(AdminSecurityContextHolder.getContext().getAdminId(), adminUpdateDTO); } diff --git a/admin/admin-application/src/main/java/cn/iocoder/mall/admin/application/controller/admins/PassportController.java b/admin/admin-application/src/main/java/cn/iocoder/mall/admin/application/controller/admins/PassportController.java index d555f23eb..2c52286f9 100644 --- a/admin/admin-application/src/main/java/cn/iocoder/mall/admin/application/controller/admins/PassportController.java +++ b/admin/admin-application/src/main/java/cn/iocoder/mall/admin/application/controller/admins/PassportController.java @@ -3,17 +3,17 @@ package cn.iocoder.mall.admin.application.controller.admins; import cn.iocoder.common.framework.vo.CommonResult; import cn.iocoder.mall.admin.api.OAuth2Service; import cn.iocoder.mall.admin.api.bo.OAuth2AccessTokenBO; -import cn.iocoder.mall.admin.application.convert.AdminConvert; import cn.iocoder.mall.admin.application.convert.PassportConvert; -import cn.iocoder.mall.admin.application.vo.AdminInfoVO; import cn.iocoder.mall.admin.application.vo.PassportLoginVO; -import cn.iocoder.mall.admin.sdk.context.AdminSecurityContextHolder; import com.alibaba.dubbo.config.annotation.Reference; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("admins/passport") @@ -35,10 +35,8 @@ public class PassportController { return PassportConvert.INSTANCE.convert(result); } - // TODO 艿艿:后续继续完善 - @GetMapping("/info") - public CommonResult info() { - return CommonResult.success(AdminConvert.INSTANCE.convert(AdminSecurityContextHolder.getContext())); - } + // TODO 功能 logout + + // TODO 功能 refresh_token } \ No newline at end of file diff --git a/admin/admin-service-impl/src/main/java/cn/iocoder/mall/admin/service/OAuth2ServiceImpl.java b/admin/admin-service-impl/src/main/java/cn/iocoder/mall/admin/service/OAuth2ServiceImpl.java index ca88f7da4..3215002dc 100644 --- a/admin/admin-service-impl/src/main/java/cn/iocoder/mall/admin/service/OAuth2ServiceImpl.java +++ b/admin/admin-service-impl/src/main/java/cn/iocoder/mall/admin/service/OAuth2ServiceImpl.java @@ -77,7 +77,6 @@ public class OAuth2ServiceImpl implements OAuth2Service { } // 获得管理员拥有的角色 List adminRoleDOs = adminService.getAdminRoles(accessTokenDO.getAdminId()); - // TODO 芋艿,有个 bug ,要排除掉已经失效的角色 return CommonResult.success(OAuth2Convert.INSTANCE.convertToAuthentication(accessTokenDO, adminRoleDOs)); }