From 1ec0374d08be45c6c6854705211dbd6c067dfab7 Mon Sep 17 00:00:00 2001
From: kaiyu <404897439@qq.com>
Date: Thu, 18 Mar 2021 17:23:20 +0800
Subject: [PATCH] Merge branch 'dev' of http://blit.7drlb.com:8888/r/moral into dev

---
 screen-api/src/main/java/com/moral/api/mapper/SysConfigMapper.java                |   16 
 screen-api/src/main/java/com/moral/api/pojo/UserBo.java                           |   25 +
 screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java          |  253 ++++++++----
 screen-common/src/main/java/com/moral/util/TokenUtils.java                        |   19 
 screen-manage/src/main/java/com/moral/api/service/impl/SysConfigServiceImpl.java  |   20 +
 pom.xml                                                                           |    2 
 screen-manage/src/main/java/com/moral/api/entity/SysConfig.java                   |   67 +++
 screen-api/src/main/java/com/moral/api/entity/SysConfig.java                      |   67 +++
 screen-api/src/main/java/com/moral/api/service/UserService.java                   |   10 
 screen-api/src/main/java/com/moral/api/service/SysConfigService.java              |   16 
 screen-api/src/main/java/com/moral/api/entity/User.java                           |    7 
 screen-api/src/main/resources/mapper/UserMapper.xml                               |   34 
 screen-manage/src/main/java/com/moral/api/service/impl/ManageMenuServiceImpl.java |    9 
 screen-api/src/main/java/com/moral/api/controller/LoginController.java            |   40 -
 screen-api/src/main/resources/mapper/SysConfigMapper.xml                          |   16 
 screen-manage/src/main/java/com/moral/api/service/ManageRoleService.java          |    4 
 screen-manage/src/main/resources/mapper/SysConfigMapper.xml                       |   16 
 screen-api/src/main/java/com/moral/api/controller/UserController.java             |   47 +-
 screen-manage/src/main/java/com/moral/api/controller/ManageRoleController.java    |  118 +++++
 screen-manage/src/main/java/com/moral/api/mapper/SysConfigMapper.java             |   16 
 /dev/null                                                                         |  170 --------
 screen-manage/src/main/java/com/moral/api/controller/ManageMenuController.java    |   91 ++++
 screen-api/src/main/java/com/moral/api/service/impl/SysConfigServiceImpl.java     |   20 +
 screen-manage/src/main/resources/mapper/ManageRoleMapper.xml                      |   28 
 screen-api/src/main/java/com/moral/api/mapper/UserMapper.java                     |    5 
 myBatisPlusGenerator/src/main/java/com/moral/CodeGenerator.java                   |    9 
 screen-common/src/main/java/com/moral/util/RegexUtils.java                        |    4 
 screen-manage/src/main/java/com/moral/api/service/SysConfigService.java           |   16 
 28 files changed, 765 insertions(+), 380 deletions(-)

diff --git a/myBatisPlusGenerator/src/main/java/com/moral/CodeGenerator.java b/myBatisPlusGenerator/src/main/java/com/moral/CodeGenerator.java
index 305c72e..a9d82b9 100644
--- a/myBatisPlusGenerator/src/main/java/com/moral/CodeGenerator.java
+++ b/myBatisPlusGenerator/src/main/java/com/moral/CodeGenerator.java
@@ -43,7 +43,7 @@
         // ������������
         GlobalConfig gc = new GlobalConfig();
         //String projectPath = System.getProperty("user.dir");
-        String projectPath="E:\\workspace\\moral\\screen-api";
+        String projectPath="D:\\tools\\moral\\screen-api\\";
         gc.setOutputDir(projectPath + "/src/main/java");
         gc.setAuthor("moral");
         gc.setOpen(false);
@@ -67,10 +67,10 @@
 
         // ���������������
         DataSourceConfig dsc = new DataSourceConfig();
-        dsc.setUrl("jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC");
+        dsc.setUrl("jdbc:mysql://39.97.177.149:3306/moral?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC");
         dsc.setDriverName("com.mysql.cj.jdbc.Driver");
         dsc.setUsername("root");
-        dsc.setPassword("123456");
+        dsc.setPassword("chenkaiyu111");
         mpg.setDataSource(dsc);
 
         // ���������
@@ -123,7 +123,8 @@
         strategy.setColumnNaming(NamingStrategy.underline_to_camel);
         strategy.setEntityLombokModel(true);
         strategy.setRestControllerStyle(true);
-        //strategy.setInclude(scanner("���������������������������������").split(","));
+        //���������������������������������
+        strategy.setInclude(scanner("���������������������������������").split(","));
         strategy.setControllerMappingHyphenStyle(true);
        // strategy.setTablePrefix(pc.getModuleName() + "_");
         mpg.setStrategy(strategy);
diff --git a/pom.xml b/pom.xml
index be47e13..fd7b9a2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -108,7 +108,7 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>com.google.code.kaptcha</groupId>
+            <groupId>com.github.penggle</groupId>
             <artifactId>kaptcha</artifactId>
             <version>2.3.2</version>
         </dependency>
diff --git a/screen-api/src/main/java/com/moral/api/controller/LoginController.java b/screen-api/src/main/java/com/moral/api/controller/LoginController.java
index a6cef12..6b1a304 100644
--- a/screen-api/src/main/java/com/moral/api/controller/LoginController.java
+++ b/screen-api/src/main/java/com/moral/api/controller/LoginController.java
@@ -1,6 +1,5 @@
 package com.moral.api.controller;
 
-import com.moral.constant.Constants;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -12,19 +11,15 @@
 import javax.servlet.http.HttpServletRequest;
 
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
 import com.moral.api.entity.Group;
-import com.moral.api.entity.User;
 import com.moral.api.service.GroupService;
 import com.moral.api.service.UserService;
 import com.moral.constant.ResponseCodeEnum;
 import com.moral.constant.ResultMessage;
-import com.moral.util.AESUtils;
-import com.moral.util.MD5Utils;
 import com.moral.util.TokenUtils;
 import com.moral.util.WebUtils;
 
@@ -39,9 +34,6 @@
     @Autowired
     private GroupService groupService;
 
-    @Value("${AES.KEY}")
-    private String AESKey;
-
     @ApiOperation(value = "������", notes = "������")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "account", value = "������", required = false, paramType = "query", dataType = "String"),
@@ -53,33 +45,11 @@
         if (!(parameters.containsKey("account") && parameters.containsKey("password"))) {
             return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
         }
-        //������������
-        String password = parameters.get("password").toString();
-        //������������
-        password = AESUtils.decrypt(password, AESKey);
-
-        User user = userService.selectUserInfo(parameters);
-        //������������
-        if (user == null) {
-            return ResultMessage.fail(ResponseCodeEnum.ACCOUNT_NOT_EXIST.getCode(), ResponseCodeEnum.ACCOUNT_NOT_EXIST.getMsg());
+        Map<String, Object> result = userService.login(parameters);
+        if (!result.containsKey("data")) {
+            return ResultMessage.fail(Integer.parseInt(result.get("code").toString()), result.get("msg").toString());
         }
-        //������������
-        if (!MD5Utils.saltMD5Verify(password, user.getPassword())) {
-            return ResultMessage.fail(ResponseCodeEnum.PASSWORD_INVALID.getCode(), ResponseCodeEnum.PASSWORD_INVALID.getMsg());
-        }
-        //������������������
-        if (Constants.DELETE.equals(user.getIsDelete())) {
-            return ResultMessage.fail(ResponseCodeEnum.ACCOUNT_IS_DELETE.getCode(), ResponseCodeEnum.ACCOUNT_IS_DELETE.getMsg());
-        }
-        //������������������
-        if (user.getExpireTime() != null && user.getExpireTime().getTime() < System.currentTimeMillis()) {
-            return ResultMessage.fail(ResponseCodeEnum.ACCOUNT_IS_EXPIRE.getCode(), ResponseCodeEnum.ACCOUNT_IS_EXPIRE.getMsg());
-        }
-        Map<String, Object> result = userService.login(user);
-        if (!result.containsKey("token")) {
-            return ResultMessage.fail(ResponseCodeEnum.TOKEN_CREATE_ERROR.getCode(), ResponseCodeEnum.TOKEN_CREATE_ERROR.getMsg());
-        }
-        return ResultMessage.ok();
+        return ResultMessage.ok(result.get("data"));
     }
 
     @ApiOperation(value = "������", notes = "������")
@@ -89,7 +59,7 @@
         if (!parameters.containsKey("uid")) {
             return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
         }
-        String userId = request.getParameter("uid");
+        String userId = parameters.get("uid").toString();
         String token = request.getHeader("token");
         TokenUtils.destoryToken(userId, token);
         return ResultMessage.ok();
diff --git a/screen-api/src/main/java/com/moral/api/controller/UserController.java b/screen-api/src/main/java/com/moral/api/controller/UserController.java
index 12b071a..34e7464 100644
--- a/screen-api/src/main/java/com/moral/api/controller/UserController.java
+++ b/screen-api/src/main/java/com/moral/api/controller/UserController.java
@@ -15,6 +15,7 @@
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.moral.api.entity.User;
 import com.moral.api.service.UserService;
 import com.moral.constant.ResponseCodeEnum;
@@ -32,8 +33,8 @@
 
     @ApiOperation(value = "������������", notes = "������������")
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "account", value = "������,������6-10", required = false, paramType = "query", dataType = "String"),
-            @ApiImplicitParam(name = "password", value = "������,������6-20", required = false, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "account", value = "������,������6-10", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "password", value = "������,������6-20", required = true, paramType = "query", dataType = "String"),
             @ApiImplicitParam(name = "userName", value = "������������", required = false, paramType = "query", dataType = "String"),
             @ApiImplicitParam(name = "email", value = "������,������123456@qq.com", required = false, paramType = "query", dataType = "String"),
             @ApiImplicitParam(name = "mobile", value = "���������,1������11���������", required = false, paramType = "query", dataType = "String"),
@@ -42,16 +43,14 @@
     })
     @RequestMapping(value = "addUser", method = RequestMethod.POST)
     public ResultMessage addUser(User user, HttpServletRequest request) {
-        Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
-        if (!(parameters.containsKey("account") && parameters.containsKey("password"))) {
-            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
+        if (user.getAccount().isEmpty() || user.getPassword().isEmpty()) {
+            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
+                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
         }
         String token = request.getHeader("token");
-        Map<String, Object> map = userService.addUser(user, token);
-
-
-        if (map.containsKey("msg")) {
-            return ResultMessage.fail(map.get("msg").toString());
+        Map<String, Object> result = userService.addUser(user, token);
+        if (!result.isEmpty()) {
+            return ResultMessage.fail((int) result.get("code"), result.get("msg").toString());
         }
         return ResultMessage.ok();
     }
@@ -62,22 +61,24 @@
             @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
     })
     @RequestMapping(value = "deleteUser", method = RequestMethod.POST)
-    public ResultMessage deleteUser(String userId, HttpServletRequest request) {
+    public ResultMessage deleteUser(String userId) {
         if (userId == null) {
-            return ResultMessage.fail("������������������");
+            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
         }
-        String token = request.getHeader("token");
-        Map<String, Object> map = userService.deleteUser(Integer.parseInt(userId), token);
-        if (map.containsKey("msg")) {
-            return ResultMessage.fail(map.get("msg").toString());
+        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("id", userId);
+        User user = userService.getOne(queryWrapper);
+        if (user == null) {
+            return ResultMessage.fail(ResponseCodeEnum.ACCOUNT_NOT_EXIST.getCode(), ResponseCodeEnum.ACCOUNT_NOT_EXIST.getMsg());
         }
+        userService.deleteUser(user);
         return ResultMessage.ok();
     }
 
     @ApiOperation(value = "������������������", notes = "������������������")
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "account", value = "������,������6-10", required = false, paramType = "query", dataType = "String"),
-            @ApiImplicitParam(name = "password", value = "������,������6-20", required = false, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "account", value = "������,������6-10", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "password", value = "������,������6-20", required = true, paramType = "query", dataType = "String"),
             @ApiImplicitParam(name = "userName", value = "������������", required = false, paramType = "query", dataType = "String"),
             @ApiImplicitParam(name = "email", value = "������,������123456@qq.com", required = false, paramType = "query", dataType = "String"),
             @ApiImplicitParam(name = "mobile", value = "���������,1������11���������", required = false, paramType = "query", dataType = "String"),
@@ -86,10 +87,14 @@
     })
     @RequestMapping(value = "updateUser", method = RequestMethod.POST)
     public ResultMessage updateUser(User user, HttpServletRequest request) {
+        if (user.getAccount().isEmpty() || user.getPassword().isEmpty()) {
+            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
+                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
+        }
         String token = request.getHeader("token");
-        Map<String, Object> map = userService.updateUser(user, token);
-        if (map.containsKey("msg")) {
-            return ResultMessage.fail(map.get("msg").toString());
+        Map<String, Object> result = userService.addUser(user, token);
+        if (!result.isEmpty()) {
+            return ResultMessage.fail((int) result.get("code"), result.get("msg").toString());
         }
         return ResultMessage.ok();
     }
diff --git a/screen-api/src/main/java/com/moral/api/entity/SysConfig.java b/screen-api/src/main/java/com/moral/api/entity/SysConfig.java
new file mode 100644
index 0000000..dd0a1f3
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/entity/SysConfig.java
@@ -0,0 +1,67 @@
+package com.moral.api.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * ���������������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-03-18
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class SysConfig extends Model<SysConfig> {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ������
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * ������
+     */
+    private String type;
+
+    /**
+     * ���������
+     */
+    private String code;
+
+    /**
+     * ������
+     */
+    private String desc;
+
+    /**
+     * ������������
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * ������������
+     */
+    private LocalDateTime updateTime;
+
+    /**
+     * ������������
+     */
+    private String isDelete;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}
diff --git a/screen-api/src/main/java/com/moral/api/entity/User.java b/screen-api/src/main/java/com/moral/api/entity/User.java
index 4d31a77..38f7b34 100644
--- a/screen-api/src/main/java/com/moral/api/entity/User.java
+++ b/screen-api/src/main/java/com/moral/api/entity/User.java
@@ -96,13 +96,6 @@
      */
     private String isDelete;
 
-    @Transient
-    private Organization organization;
-
-    @Transient
-    private List<Group> groups;
-
-
     @Override
     protected Serializable pkVal() {
         return this.id;
diff --git a/screen-api/src/main/java/com/moral/api/mapper/SysConfigMapper.java b/screen-api/src/main/java/com/moral/api/mapper/SysConfigMapper.java
new file mode 100644
index 0000000..3ebbbca
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/mapper/SysConfigMapper.java
@@ -0,0 +1,16 @@
+package com.moral.api.mapper;
+
+import com.moral.api.entity.SysConfig;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * ��������������� Mapper ������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-03-18
+ */
+public interface SysConfigMapper extends BaseMapper<SysConfig> {
+
+}
diff --git a/screen-api/src/main/java/com/moral/api/mapper/UserMapper.java b/screen-api/src/main/java/com/moral/api/mapper/UserMapper.java
index 87be9a9..4c42c13 100644
--- a/screen-api/src/main/java/com/moral/api/mapper/UserMapper.java
+++ b/screen-api/src/main/java/com/moral/api/mapper/UserMapper.java
@@ -5,6 +5,7 @@
 
 import com.moral.api.entity.User;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.moral.api.pojo.UserBo;
 
 /**
  * <p>
@@ -18,5 +19,7 @@
 
     List<Map<String, Object>> selectUsers(Map<String, Object> parameters);
 
-    User selectUserInfo(Map<String, Object> parameters);
+    UserBo selectUserInfo(Map<String, Object> parameters);
+
+    User selectUser(Map<String, Object> parameters);
 }
diff --git a/screen-api/src/main/java/com/moral/api/pojo/UserBo.java b/screen-api/src/main/java/com/moral/api/pojo/UserBo.java
new file mode 100644
index 0000000..5afb5e9
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/pojo/UserBo.java
@@ -0,0 +1,25 @@
+package com.moral.api.pojo;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.List;
+
+import javax.persistence.Transient;
+
+import com.moral.api.entity.Group;
+import com.moral.api.entity.Organization;
+import com.moral.api.entity.User;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class UserBo extends User {
+
+    @Transient
+    private Organization organization;
+
+    @Transient
+    private List<Group> groups;
+
+}
diff --git a/screen-api/src/main/java/com/moral/api/service/SysConfigService.java b/screen-api/src/main/java/com/moral/api/service/SysConfigService.java
new file mode 100644
index 0000000..10b39f1
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/service/SysConfigService.java
@@ -0,0 +1,16 @@
+package com.moral.api.service;
+
+import com.moral.api.entity.SysConfig;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * ��������������� ���������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-03-18
+ */
+public interface SysConfigService extends IService<SysConfig> {
+
+}
diff --git a/screen-api/src/main/java/com/moral/api/service/UserService.java b/screen-api/src/main/java/com/moral/api/service/UserService.java
index 8821b4c..3616005 100644
--- a/screen-api/src/main/java/com/moral/api/service/UserService.java
+++ b/screen-api/src/main/java/com/moral/api/service/UserService.java
@@ -1,11 +1,12 @@
 package com.moral.api.service;
 
 
-import java.util.List;
 import java.util.Map;
+
 
 import com.moral.api.entity.User;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.moral.api.pojo.UserBo;
 
 /**
  * <p>
@@ -17,17 +18,16 @@
  */
 public interface UserService extends IService<User> {
 
-    Map<String, Object> login(User user);
+    Map<String, Object> login(Map<String, Object> parameters);
 
     Map<String, Object> addUser(User user, String token);
 
-    Map<String, Object> deleteUser(int userId, String token);
+    void deleteUser(User user);
 
     Map<String, Object> updateUser(User user, String token);
 
     Map<String, Object> getUsers(Map<String, Object> parameters);
 
-    User selectUserInfo(Map<String, Object> parameters);
-
+    UserBo selectUserInfo(Map<String, Object> parameters);
 
 }
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/SysConfigServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/SysConfigServiceImpl.java
new file mode 100644
index 0000000..36a83b2
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/service/impl/SysConfigServiceImpl.java
@@ -0,0 +1,20 @@
+package com.moral.api.service.impl;
+
+import com.moral.api.entity.SysConfig;
+import com.moral.api.mapper.SysConfigMapper;
+import com.moral.api.service.SysConfigService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * ��������������� ���������������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-03-18
+ */
+@Service
+public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfig> implements SysConfigService {
+
+}
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java
index e30cd14..fb42e30 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/UserServiceImpl.java
@@ -10,18 +10,21 @@
 import java.util.stream.Collectors;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.moral.api.entity.Group;
 import com.moral.api.entity.Menu;
 import com.moral.api.entity.Organization;
 import com.moral.api.entity.User;
 
-import com.moral.api.mapper.GroupMapper;
+import com.moral.api.entity.UserGroup;
 import com.moral.api.mapper.MenuMapper;
-import com.moral.api.mapper.OrganizationMapper;
+import com.moral.api.mapper.UserGroupMapper;
 import com.moral.api.mapper.UserMapper;
+import com.moral.api.pojo.UserBo;
 import com.moral.api.service.UserService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.moral.constant.Constants;
+import com.moral.constant.ResponseCodeEnum;
 import com.moral.util.AESUtils;
 import com.moral.util.MD5Utils;
 import com.moral.util.RegexUtils;
@@ -30,6 +33,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * <p>
@@ -48,43 +52,81 @@
     @Autowired
     private MenuMapper menuMapper;
 
+    @Autowired
+    private UserGroupMapper userGroupMapper;
+
+    @Value("${AES.KEY}")
+    private String AESKey;
+
     @Override
-    public User selectUserInfo(Map<String, Object> parameters) {
+    public UserBo selectUserInfo(Map<String, Object> parameters) {
         return userMapper.selectUserInfo(parameters);
     }
 
     @Override
-    public Map<String, Object> login(User user) {
-        Map<String, Object> resultMap = new LinkedHashMap<>();
+    public Map<String, Object> login(Map<String, Object> parameters) {
+        UserBo userBo = selectUserInfo(parameters);
+        Map<String, Object> result = new HashMap<>();
+        //������������
+        if (userBo == null) {
+            result.put("code", ResponseCodeEnum.ACCOUNT_NOT_EXIST.getCode());
+            result.put("msg", ResponseCodeEnum.ACCOUNT_NOT_EXIST.getMsg());
+            return result;
+        }
+        //������������
+        String password = parameters.get("password").toString();
+        //������������
+        //password = AESUtils.decrypt(password, AESKey);
+        if (!MD5Utils.saltMD5Verify(password, userBo.getPassword())) {
+            result.put("code", ResponseCodeEnum.PASSWORD_INVALID.getCode());
+            result.put("msg", ResponseCodeEnum.PASSWORD_INVALID.getMsg());
+            return result;
+        }
+        //������������������
+        if (Constants.DELETE.equals(userBo.getIsDelete())) {
+            result.put("code", ResponseCodeEnum.ACCOUNT_IS_DELETE.getCode());
+            result.put("msg", ResponseCodeEnum.ACCOUNT_IS_DELETE.getMsg());
+            return result;
+        }
+        //������������������
+        if (userBo.getExpireTime() != null && userBo.getExpireTime().getTime() < System.currentTimeMillis()) {
+            result.put("code", ResponseCodeEnum.ACCOUNT_IS_EXPIRE.getCode());
+            result.put("msg", ResponseCodeEnum.ACCOUNT_IS_EXPIRE.getMsg());
+            return result;
+        }
         //������������������
         Map<String, Object> userInfo = new LinkedHashMap<>();
         List<Map<String, Object>> groups = new ArrayList<>();
-        for (Group group : user.getGroups()) {
+        for (Group group : userBo.getGroups()) {
             HashMap<String, Object> groupMap = new HashMap<>();
             groupMap.put("groupId", group.getId());
             groupMap.put("groupName", group.getGroupName());
             groups.add(groupMap);
         }
-        Organization organization = user.getOrganization();
-        userInfo.put("userId", user.getId());
-        userInfo.put("account", user.getAccount());
-        userInfo.put("userName", user.getUserName());
-        userInfo.put("expireTime", user.getExpireTime());
-        userInfo.put("isAdmin", user.getIsAdmin());
-        userInfo.put("organizationId", user.getOrganizationId());
+        Organization organization = userBo.getOrganization();
+        userInfo.put("userId", userBo.getId());
+        userInfo.put("account", userBo.getAccount());
+        userInfo.put("userName", userBo.getUserName());
+        userInfo.put("expireTime", userBo.getExpireTime());
+        userInfo.put("isAdmin", userBo.getIsAdmin());
+        userInfo.put("organizationId", userBo.getOrganizationId());
         userInfo.put("organizationName", organization.getName());
         userInfo.put("locationLevel", organization.getLocationLevel());
         userInfo.put("groups", groups);
-        userInfo.putAll(getMenus(user.getId()));
+        userInfo.putAll(getMenus(userBo.getId()));
         try {
             //������token������������redis
-            String token = TokenUtils.getToken(user.getId().toString(), userInfo);
-            resultMap.put("token", token);
+            String token = TokenUtils.getToken(userBo.getId().toString(), userInfo);
+            Map<String, Object> data = new HashMap<>();
+            data.put("token", token);
+            data.put("user", userInfo);
+            result.put("data", data);
         } catch (Exception e) {
-            log.error("token���������������"+e.getMessage());
+            log.error("token���������������" + e.getMessage());
+            result.put("code", ResponseCodeEnum.TOKEN_CREATE_ERROR.getCode());
+            result.put("msg", ResponseCodeEnum.TOKEN_CREATE_ERROR.getMsg());
         }
-        resultMap.putAll(userInfo);
-        return resultMap;
+        return result;
     }
 
     //������userId������������������������
@@ -117,7 +159,6 @@
         List<List<Map<String, Object>>> resultList = new ArrayList();
         Menu newMenu = new Menu();
         newMenu.setParentId(menu.getId());
-
         //������������������������������
         List<Menu> nextLevelMenus = menus.stream()
                 .filter(o -> o.getParentId().equals(menu.getId()))
@@ -141,77 +182,133 @@
     }
 
     @Override
+    @Transactional
     public Map<String, Object> addUser(User user, String token) {
-        Map<String, Object> resultMap = new HashMap<>();
+        Map<String, Object> result = new HashMap<>();
         Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
 
         QueryWrapper<User> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("account", user.getAccount());
-        if (userMapper.selectOne(queryWrapper) != null) {
-            resultMap.put("msg", "������������������");
-            return resultMap;
+        queryWrapper.eq("account", user.getAccount()).eq("is_delete", Constants.NOT_DELETE);
+        //������������������������
+        if (user.selectOne(queryWrapper) != null) {
+            result.put("code", ResponseCodeEnum.ACCOUNT_EXIST.getCode());
+            result.put("msg", ResponseCodeEnum.ACCOUNT_EXIST.getMsg());
+            return result;
         }
-        //������������������������������������
-        List<String> msgs = checkUserInfo(user);
-        if (!msgs.isEmpty()) {
-            resultMap.put("msg", msgs);
-            return resultMap;
+        //������������������
+        if (!RegexUtils.checkAccount(user.getAccount())) {
+            result.put("code", ResponseCodeEnum.ACCOUNT_INVALID.getCode());
+            result.put("msg", ResponseCodeEnum.ACCOUNT_INVALID.getMsg());
+            return result;
+        }
+        //������������������
+        if (user.getEmail() != null && !RegexUtils.checkEmail(user.getEmail())) {
+            result.put("code", ResponseCodeEnum.EMAIL_INVALID.getCode());
+            result.put("msg", ResponseCodeEnum.EMAIL_INVALID.getMsg());
+            return result;
+        }
+        //������������������
+        String password = user.getPassword();
+        //������������
+        //password = AESUtils.decrypt(password, AESKey);
+        if (!RegexUtils.checkPassword(password)) {
+            result.put("code", ResponseCodeEnum.PASSWORD_INVALID.getCode());
+            result.put("msg", ResponseCodeEnum.PASSWORD_INVALID.getMsg());
+            return result;
+        }
+        //���������������������
+        if (user.getMobile() != null && !RegexUtils.checkMobile(user.getMobile())) {
+            result.put("code", ResponseCodeEnum.MOBILE_INVALID.getCode());
+            result.put("msg", ResponseCodeEnum.MOBILE_INVALID.getMsg());
+            return result;
         }
         //������������
-        String password = MD5Utils.saltMD5(user.getPassword());
-        user.setPassword(password);
-        user.setIsAdmin(false);
+        user.setPassword(MD5Utils.saltMD5(password));
         user.setOrganizationId(Integer.parseInt(currentUserInfo.get("organizationId").toString()));
+        user.setIsAdmin(false);
         //���������������������������
         Date userExpireTime = user.getExpireTime();
         //���������������������������
-        Date expireTime = (Date) currentUserInfo.get("expireTime");
-        if (userExpireTime == null || userExpireTime.getTime() > expireTime.getTime()) {
-            user.setExpireTime(expireTime);
+        Date currentUserExpireTime = (Date) currentUserInfo.get("expireTime");
+        if (userExpireTime == null || userExpireTime.getTime() > currentUserExpireTime.getTime()) {
+            user.setExpireTime(currentUserExpireTime);
         }
         userMapper.insert(user);
-        return resultMap;
+        return result;
     }
 
     @Override
-    public Map<String, Object> deleteUser(int userId, String token) {
-        Map<String, Object> resultMap = new HashMap<>();
-        Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
-        if (!(boolean) currentUserInfo.get("isAdmin")) {
-            resultMap.put("msg", "������������");
-        } else {
-            User user = new User();
-            user.setId(userId);
-            user.setIsDelete(Constants.DELETE);
-            userMapper.updateById(user);
-        }
-        return resultMap;
+    @Transactional
+    public void deleteUser(User user) {
+        //������������������
+        user.setIsDelete(Constants.DELETE);
+        //������������������������������
+        UpdateWrapper<UserGroup> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.set("is_delete", Constants.DELETE).eq("user_id", user.getId());
+        userGroupMapper.update(null, updateWrapper);
     }
 
     @Override
+    @Transactional
     public Map<String, Object> updateUser(User user, String token) {
-        Map<String, Object> resultMap = new HashMap<>();
+        Map<String, Object> result = new HashMap<>();
         Map<String, Object> currentUserInfo = (Map<String, Object>) TokenUtils.getUserInfoByToken(token);
-        if (!(boolean) currentUserInfo.get("isAdmin")) {
-            resultMap.put("msg", "������������");
-            return resultMap;
-        }
+
         QueryWrapper<User> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("account", user.getAccount());
+        queryWrapper.eq("id", user.getId()).eq("is_delete", Constants.NOT_DELETE);
+        if (userMapper.selectOne(queryWrapper) == null) {
+            result.put("code", ResponseCodeEnum.ACCOUNT_IS_DELETE.getCode());
+            result.put("msg", ResponseCodeEnum.ACCOUNT_IS_DELETE.getMsg());
+            return result;
+        }
+        queryWrapper.clear();
+        queryWrapper.eq("account", user.getAccount()).eq("is_delete", Constants.NOT_DELETE);
+        //������������������������
         if (userMapper.selectOne(queryWrapper) != null) {
-            resultMap.put("msg", "���������������");
-            return resultMap;
+            result.put("code", ResponseCodeEnum.ACCOUNT_EXIST.getCode());
+            result.put("msg", ResponseCodeEnum.ACCOUNT_EXIST.getMsg());
+            return result;
         }
-        //������������������������������������
-        List<String> msgs = checkUserInfo(user);
-        if (!msgs.isEmpty()) {
-            resultMap.put("msg", msgs);
-            return resultMap;
+        //������������������
+        if (!RegexUtils.checkAccount(user.getAccount())) {
+            result.put("code", ResponseCodeEnum.ACCOUNT_INVALID.getCode());
+            result.put("msg", ResponseCodeEnum.ACCOUNT_INVALID.getMsg());
+            return result;
         }
-        //������Md5������
-        user.setPassword(MD5Utils.saltMD5(user.getPassword()));
+        //������������������
+        if (user.getEmail() != null && !RegexUtils.checkEmail(user.getEmail())) {
+            result.put("code", ResponseCodeEnum.EMAIL_INVALID.getCode());
+            result.put("msg", ResponseCodeEnum.EMAIL_INVALID.getMsg());
+            return result;
+        }
+        //������������������
+        String password = user.getPassword();
+        //������������
+        //password = AESUtils.decrypt(password, AESKey);
+        if (!RegexUtils.checkPassword(password)) {
+            result.put("code", ResponseCodeEnum.PASSWORD_INVALID.getCode());
+            result.put("msg", ResponseCodeEnum.PASSWORD_INVALID.getMsg());
+            return result;
+        }
+        //���������������������
+        if (user.getMobile() != null && !RegexUtils.checkMobile(user.getMobile())) {
+            result.put("code", ResponseCodeEnum.MOBILE_INVALID.getCode());
+            result.put("msg", ResponseCodeEnum.MOBILE_INVALID.getMsg());
+            return result;
+        }
+        //������������
+        user.setPassword(MD5Utils.saltMD5(password));
+        user.setOrganizationId(Integer.parseInt(currentUserInfo.get("organizationId").toString()));
+        user.setIsAdmin(false);
+        //���������������������������
+        Date userExpireTime = user.getExpireTime();
+        //���������������������������
+        Date currentUserExpireTime = (Date) currentUserInfo.get("expireTime");
+        if (userExpireTime == null || userExpireTime.getTime() > currentUserExpireTime.getTime()) {
+            user.setExpireTime(currentUserExpireTime);
+        }
         userMapper.updateById(user);
-        return resultMap;
+        return result;
     }
 
     @Override
@@ -229,31 +326,5 @@
         resultMap.put("users", users);
         return resultMap;
     }
-
-    private List<String> checkUserInfo(User user) {
-        List<String> msgs = new ArrayList<>();
-        //������������
-        if (!RegexUtils.checkAccount(user.getAccount())) {
-            msgs.add("���������������������");
-        }
-        //������������
-        if (!RegexUtils.checkPassword(user.getPassword())) {
-            msgs.add("���������������������");
-        }
-        //������������
-        if (user.getEmail() != null) {
-            if (!RegexUtils.checkEmail(user.getEmail())) {
-                msgs.add("���������������������");
-            }
-        }
-        //���������������
-        if (user.getMobile() != null) {
-            if (!RegexUtils.checkMobile(user.getMobile())) {
-                msgs.add("������������������������");
-            }
-        }
-        return msgs;
-    }
-
 
 }
diff --git a/screen-api/src/main/resources/mapper/SysConfigMapper.xml b/screen-api/src/main/resources/mapper/SysConfigMapper.xml
new file mode 100644
index 0000000..55c6a9b
--- /dev/null
+++ b/screen-api/src/main/resources/mapper/SysConfigMapper.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.moral.api.mapper.SysConfigMapper">
+
+        <!-- ������������������������ -->
+        <resultMap id="BaseResultMap" type="com.moral.api.entity.SysConfig">
+                    <id column="id" property="id" />
+                    <result column="type" property="type" />
+                    <result column="code" property="code" />
+                    <result column="desc" property="desc" />
+                    <result column="create_time" property="createTime" />
+                    <result column="update_time" property="updateTime" />
+                    <result column="is_delete" property="isDelete" />
+        </resultMap>
+
+</mapper>
\ No newline at end of file
diff --git a/screen-api/src/main/resources/mapper/UserMapper.xml b/screen-api/src/main/resources/mapper/UserMapper.xml
index b062eb3..c0a28ef 100644
--- a/screen-api/src/main/resources/mapper/UserMapper.xml
+++ b/screen-api/src/main/resources/mapper/UserMapper.xml
@@ -17,6 +17,9 @@
         <result column="update_time" property="updateTime"/>
         <result column="expire_time" property="expireTime"/>
         <result column="is_delete" property="isDelete"/>
+    </resultMap>
+
+    <resultMap id="userInfoMap" type="com.moral.api.pojo.UserBo" extends="BaseResultMap">
         <!--������������-->
         <association property="organization" javaType="com.moral.api.entity.Organization">
             <result column="id" property="id" jdbcType="INTEGER"/>
@@ -24,30 +27,25 @@
             <result column="location_level" property="locationLevel"/>
         </association>
         <!--���������-->
-        <collection property="groups" ofType="com.moral.api.entity.Group" javaType = "java.util.ArrayList">
+        <collection property="groups" ofType="com.moral.api.entity.Group" javaType="java.util.ArrayList">
             <id column="groupId" property="id" jdbcType="INTEGER"/>
             <result column="group_name" property="groupName" jdbcType="VARCHAR"/>
         </collection>
-
     </resultMap>
 
-
-    <select id="selectUserInfo" resultMap="BaseResultMap">
-        SELECT u.id,u.account,u.password,u.user_name,u.organization_id,u.expire_time,u.is_delete,
-        o.name,u.is_admin,o.location_level,
-        g.id groupId,g.group_name
-        FROM `user` u,
-        `organization` o,
-        `user_group` ug,
-        `group` g
-        WHERE u.account = #{account}
-        AND u.organization_id=o.id
-        AND  u.id = ug.user_id
-        AND ug.group_id = g.id
-        AND g.is_delete = 0
-        AND ug.is_delete = 0
+    <!--������������������������������������������-->
+    <select id="selectUserInfo" resultMap="userInfoMap">
+		SELECT u.id, u.account, u.password, u.user_name, u.organization_id, u.expire_time, u.is_delete,u.is_Admin,
+		o.name, o.location_level,
+		a.id groupId , a.group_name
+		FROM `user` u
+		LEFT JOIN
+            (SELECT ug.user_id,g.id,g.group_name FROM `user_group` ug ,`group` g WHERE ug.group_id=g.id   AND g.is_delete = 0
+            AND ug.is_delete = 0) a
+        ON a.user_id=u.id
+		LEFT JOIN `organization` o ON o.id=u.organization_id
+		WHERE u.account = #{account}
     </select>
-
 
     <select id="selectUsers" resultType="java.util.Map">
         SELECT id,account,user_name userName,email,mobile,wechat FROM `user` WHERE
diff --git a/screen-common/src/main/java/com/moral/util/RegexUtils.java b/screen-common/src/main/java/com/moral/util/RegexUtils.java
index 5023a3d..1112901 100644
--- a/screen-common/src/main/java/com/moral/util/RegexUtils.java
+++ b/screen-common/src/main/java/com/moral/util/RegexUtils.java
@@ -12,7 +12,7 @@
      * @return ���������������true���������������������false
      */
     public static boolean checkAccount(String account) {
-        String regex = "[a-zA-Z]\\w{3,19}";
+        String regex = "[a-zA-Z]\\w{2,19}";
         return account.matches(regex);
     }
 
@@ -27,7 +27,7 @@
      * @return ���������������true���������������������false
      */
     public static boolean checkPassword(String password) {
-        String regex = "[0-9a-zA-Z_]\\w{3,19}";
+        String regex = "[0-9a-zA-Z_]\\w{2,19}";
         return password.matches(regex);
     }
 
diff --git a/screen-common/src/main/java/com/moral/util/TokenUtils.java b/screen-common/src/main/java/com/moral/util/TokenUtils.java
index cafd03b..64e58d0 100644
--- a/screen-common/src/main/java/com/moral/util/TokenUtils.java
+++ b/screen-common/src/main/java/com/moral/util/TokenUtils.java
@@ -1,18 +1,16 @@
 package com.moral.util;
 
-import com.moral.constant.Constants;
 import com.moral.constant.ResponseCodeEnum;
 import com.moral.exception.TokenException;
-import com.sun.org.apache.bcel.internal.classfile.ConstantString;
+
 import lombok.extern.slf4j.Slf4j;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Component;
 
 
-import java.util.HashMap;
-import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -25,7 +23,6 @@
 @Component
 @Slf4j
 public class TokenUtils {
-
     private static RedisTemplate redisTemplate;
 
     @Autowired
@@ -122,12 +119,12 @@
     }
 
     /**
-    * @Description: token������
-            * @Param: [token]
-            * @return: void
-            * @Author: ���������
-            * @Date: 2021/3/11
-            */
+     * @Description: token������
+     * @Param: [token]
+     * @return: void
+     * @Author: ���������
+     * @Date: 2021/3/11
+     */
     public static void extendTokenTime(String token)  {
         redisTemplate.expire(token, validity_time, TimeUnit.SECONDS);
     }
diff --git a/screen-manage/src/main/java/com/moral/api/controller/ManageMenuController.java b/screen-manage/src/main/java/com/moral/api/controller/ManageMenuController.java
new file mode 100644
index 0000000..45ac4b5
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/controller/ManageMenuController.java
@@ -0,0 +1,91 @@
+package com.moral.api.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.moral.api.entity.ManageMenu;
+import com.moral.api.entity.ManageRole;
+import com.moral.api.service.ManageMenuService;
+import com.moral.api.service.ManageRoleService;
+import com.moral.constant.ResultMessage;
+import com.moral.util.WebUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import static org.springframework.web.util.WebUtils.getParametersStartingWith;
+
+@Slf4j
+@Api(tags = {"������"})
+@RestController
+@RequestMapping("/manage")
+public class ManageMenuController {
+
+    @Autowired
+    private ManageMenuService manageMenuService;
+
+
+    @ApiOperation(value = "������������", notes = "������������")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "name", value = "������", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "url", value = "url������", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "icon", value = "������������", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "parent_id", value = "���������", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "order", value = "������������������", required = true, paramType = "query", dataType = "String")
+    })
+    @RequestMapping(value = "insertOneManageMenu", method = RequestMethod.POST)
+    public ResultMessage insertOneManageMenu(HttpServletRequest request) {
+        Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
+        ManageMenu manageMenu = JSON.parseObject(JSON.toJSONString(parameters), ManageMenu.class);
+        Map<String,Object> resultMap = manageMenuService.insertManageMenu(manageMenu);
+        String msg = resultMap.get("msg").toString();
+        boolean flag = Boolean.parseBoolean(resultMap.get("flag").toString());
+        if (flag){
+            return ResultMessage.ok(msg);
+        }
+        return ResultMessage.fail(msg);
+    }
+
+    @ApiOperation(value = "������������", notes = "������������")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "������", required = true, paramType = "query", dataType = "int"),
+            @ApiImplicitParam(name = "name", value = "������", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "url", value = "url������", required = true, paramType = "query", dataType = "String")
+    })
+    @RequestMapping(value = "updateManageMenuById", method = RequestMethod.POST)
+    public ResultMessage updateManageMenuById(HttpServletRequest request) {
+        Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
+        Map<String,Object> resultMap = manageMenuService.updateManageMenu(parameters);
+        String msg = resultMap.get("msg").toString();
+        boolean flag = Boolean.parseBoolean(resultMap.get("flag").toString());
+        if (flag){
+            return ResultMessage.ok(msg);
+        }
+        return ResultMessage.fail(msg);
+    }
+
+    @ApiOperation(value = "������������", notes = "������������")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "������", required = true, paramType = "query", dataType = "int")
+    })
+    @RequestMapping(value = "deleteManageMenu", method = RequestMethod.POST)
+    public ResultMessage deleteManageMenu(HttpServletRequest request) {
+        Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
+        Map<String,Object> resultMap = manageMenuService.deleteManageMenu(parameters);
+        String msg = resultMap.get("msg").toString();
+        boolean flag = Boolean.parseBoolean(resultMap.get("flag").toString());
+        if (flag){
+            return ResultMessage.ok(msg);
+        }
+        return ResultMessage.fail(msg);
+    }
+}
diff --git a/screen-manage/src/main/java/com/moral/api/controller/ManageRoleController.java b/screen-manage/src/main/java/com/moral/api/controller/ManageRoleController.java
new file mode 100644
index 0000000..c34831d
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/controller/ManageRoleController.java
@@ -0,0 +1,118 @@
+package com.moral.api.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.moral.api.entity.ManageMenu;
+import com.moral.api.entity.ManageRole;
+import com.moral.api.service.ManageMenuService;
+import com.moral.api.service.ManageRoleService;
+import com.moral.constant.ResultMessage;
+import com.moral.util.WebUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import static org.springframework.web.util.WebUtils.getParametersStartingWith;
+
+@Slf4j
+@Api(tags = {"������"})
+@RestController
+@RequestMapping("/manage")
+public class ManageRoleController {
+
+    @Autowired
+    private ManageRoleService manageRoleService;
+
+    @ApiOperation(value = "������������������", notes = "������������������")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "current", value = "������", required = true, paramType = "query", dataType = "int"),
+            @ApiImplicitParam(name = "size", value = "������������", required = true, paramType = "query", dataType = "int")
+    })
+    @RequestMapping(value = "getAllManageRole", method = RequestMethod.GET)
+    public ResultMessage getAllManageRole(HttpServletRequest request) {
+        Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
+        List<ManageRole> re = manageRoleService.getAllWithPagingQuery(parameters);
+        return ResultMessage.ok(re);
+    }
+
+    @ApiOperation(value = "������������", notes = "������������")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "name", value = "������", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "desc", value = "������", required = true, paramType = "query", dataType = "String")
+    })
+    @RequestMapping(value = "insertOneManageRole", method = RequestMethod.POST)
+    public ResultMessage insertOneManageRole(HttpServletRequest request) {
+        Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
+        ManageRole manageRole = JSON.parseObject(JSON.toJSONString(parameters), ManageRole.class);
+        List list = new ArrayList();
+        list.add(1);
+        list.add(2);
+        list.add(3);
+        list.add(4);
+        Map<String,Object> resultMap = manageRoleService.insertOne(manageRole,list);
+        String msg = resultMap.get("msg").toString();
+        boolean flag = Boolean.parseBoolean(resultMap.get("flag").toString());
+        if (flag){
+            return ResultMessage.ok(msg);
+        }
+        return ResultMessage.fail(msg);
+    }
+
+    @ApiOperation(value = "������������", notes = "������������")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "name", value = "������", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "desc", value = "������", required = true, paramType = "query", dataType = "String")
+    })
+    @RequestMapping(value = "updateManageRole", method = RequestMethod.POST)
+    public ResultMessage updateManageRole(HttpServletRequest request) {
+        Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
+        Map<String,Object> resultMap = manageRoleService.updateManageRole(parameters);
+        String msg = resultMap.get("msg").toString();
+        boolean flag = Boolean.parseBoolean(resultMap.get("flag").toString());
+        if (flag){
+            return ResultMessage.ok(msg);
+        }
+        return ResultMessage.fail(msg);
+    }
+
+    @ApiOperation(value = "������������", notes = "������������")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "������", required = true, paramType = "query", dataType = "int")
+    })
+    @RequestMapping(value = "deleteManageRole", method = RequestMethod.POST)
+    public ResultMessage deleteManageRole(HttpServletRequest request) {
+        Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
+        Map<String,Object> resultMap = manageRoleService.deleteManageRole(parameters);
+        String msg = resultMap.get("msg").toString();
+        boolean flag = Boolean.parseBoolean(resultMap.get("flag").toString());
+        if (flag){
+            return ResultMessage.ok(msg);
+        }
+        return ResultMessage.fail(msg);
+    }
+
+    @ApiOperation(value = "������������������", notes = "������������������")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "name", value = "������", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "current", value = "������", required = true, paramType = "query", dataType = "int"),
+            @ApiImplicitParam(name = "size", value = "������������", required = true, paramType = "query", dataType = "int")
+    })
+    @RequestMapping(value = "getManageRoleByNameFuzzy", method = RequestMethod.GET)
+    public ResultMessage getManageRoleByNameFuzzy(HttpServletRequest request) {
+        Map<String, Object> parameters = getParametersStartingWith(request, null);
+        //ManageRole manageRole = JSON.parseObject(JSON.toJSONString(parameters), ManageRole.class);
+        List<ManageRole> re = manageRoleService.getManageRoleByNameFuzzy(parameters);
+        return ResultMessage.ok(re);
+    }
+}
diff --git a/screen-manage/src/main/java/com/moral/api/controller/WebController.java b/screen-manage/src/main/java/com/moral/api/controller/WebController.java
deleted file mode 100644
index cf48806..0000000
--- a/screen-manage/src/main/java/com/moral/api/controller/WebController.java
+++ /dev/null
@@ -1,170 +0,0 @@
-package com.moral.api.controller;
-
-import com.alibaba.fastjson.JSON;
-import com.moral.api.entity.ManageMenu;
-import com.moral.api.entity.ManageRole;
-import com.moral.api.service.ManageMenuService;
-import com.moral.api.service.ManageRoleService;
-import com.moral.constant.ResultMessage;
-import com.moral.util.WebUtils;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.servlet.http.HttpServletRequest;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import static org.springframework.web.util.WebUtils.getParametersStartingWith;
-
-@Slf4j
-@Api(tags = {"������"})
-@RestController
-@RequestMapping("/manage")
-public class WebController {
-
-    @Autowired
-    private ManageRoleService manageRoleService;
-
-    @Autowired
-    private ManageMenuService manageMenuService;
-
-    @ApiOperation(value = "������������������", notes = "������������������")
-    @ApiImplicitParams({})
-    @RequestMapping(value = "getAllManageRole", method = RequestMethod.GET)
-    public ResultMessage getAllManageRole() {
-        List<ManageRole> re = manageRoleService.getAll();
-        return ResultMessage.ok(re);
-    }
-
-    @ApiOperation(value = "������������", notes = "������������")
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "name", value = "������", required = true, paramType = "query", dataType = "String"),
-            @ApiImplicitParam(name = "desc", value = "������", required = true, paramType = "query", dataType = "String")
-    })
-    @RequestMapping(value = "insertOneManageRole", method = RequestMethod.POST)
-    public ResultMessage insertOneManageRole(HttpServletRequest request) {
-        Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
-        ManageRole manageRole = JSON.parseObject(JSON.toJSONString(parameters), ManageRole.class);
-        List list = new ArrayList();
-        list.add(1);
-        list.add(2);
-        list.add(3);
-        list.add(4);
-        Map<String,Object> resultMap = manageRoleService.insertOne(manageRole,list);
-        String msg = resultMap.get("msg").toString();
-        boolean flag = Boolean.parseBoolean(resultMap.get("flag").toString());
-        if (flag){
-            return ResultMessage.ok(msg);
-        }
-        return ResultMessage.fail(msg);
-    }
-
-    @ApiOperation(value = "������������", notes = "������������")
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "name", value = "������", required = true, paramType = "query", dataType = "String"),
-            @ApiImplicitParam(name = "desc", value = "������", required = true, paramType = "query", dataType = "String")
-    })
-    @RequestMapping(value = "updateManageRole", method = RequestMethod.POST)
-    public ResultMessage updateManageRole(HttpServletRequest request) {
-        Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
-        Map<String,Object> resultMap = manageRoleService.updateManageRole(parameters);
-        String msg = resultMap.get("msg").toString();
-        boolean flag = Boolean.parseBoolean(resultMap.get("flag").toString());
-        if (flag){
-            return ResultMessage.ok(msg);
-        }
-        return ResultMessage.fail(msg);
-    }
-
-    @ApiOperation(value = "������������", notes = "������������")
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "id", value = "������", required = true, paramType = "query", dataType = "int")
-    })
-    @RequestMapping(value = "deleteManageRole", method = RequestMethod.POST)
-    public ResultMessage deleteManageRole(HttpServletRequest request) {
-        Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
-        Map<String,Object> resultMap = manageRoleService.deleteManageRole(parameters);
-        String msg = resultMap.get("msg").toString();
-        boolean flag = Boolean.parseBoolean(resultMap.get("flag").toString());
-        if (flag){
-            return ResultMessage.ok(msg);
-        }
-        return ResultMessage.fail(msg);
-    }
-
-    @ApiOperation(value = "������������������", notes = "������������������")
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "name", value = "������", required = true, paramType = "query", dataType = "String")
-    })
-    @RequestMapping(value = "getManageRoleByNameFuzzy", method = RequestMethod.GET)
-    public ResultMessage getManageRoleByNameFuzzy(HttpServletRequest request) {
-        Map<String, Object> parameters = getParametersStartingWith(request, null);
-        ManageRole manageRole = JSON.parseObject(JSON.toJSONString(parameters), ManageRole.class);
-        List<ManageRole> re = manageRoleService.getManageRoleByNameFuzzy(manageRole);
-        return ResultMessage.ok(re);
-    }
-
-    @ApiOperation(value = "������������", notes = "������������")
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "name", value = "������", required = true, paramType = "query", dataType = "String"),
-            @ApiImplicitParam(name = "url", value = "url������", required = true, paramType = "query", dataType = "String"),
-            @ApiImplicitParam(name = "icon", value = "������������", required = true, paramType = "query", dataType = "String"),
-            @ApiImplicitParam(name = "parent_id", value = "���������", required = true, paramType = "query", dataType = "String"),
-            @ApiImplicitParam(name = "order", value = "������������������", required = true, paramType = "query", dataType = "String")
-    })
-    @RequestMapping(value = "insertOneManageMenu", method = RequestMethod.POST)
-    public ResultMessage insertOneManageMenu(HttpServletRequest request) {
-        Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
-        ManageMenu manageMenu = JSON.parseObject(JSON.toJSONString(parameters), ManageMenu.class);
-        Map<String,Object> resultMap = manageMenuService.insertManageMenu(manageMenu);
-        String msg = resultMap.get("msg").toString();
-        boolean flag = Boolean.parseBoolean(resultMap.get("flag").toString());
-        if (flag){
-            return ResultMessage.ok(msg);
-        }
-        return ResultMessage.fail(msg);
-    }
-
-    @ApiOperation(value = "������������", notes = "������������")
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "id", value = "������", required = true, paramType = "query", dataType = "int"),
-            @ApiImplicitParam(name = "name", value = "������", required = true, paramType = "query", dataType = "String"),
-            @ApiImplicitParam(name = "url", value = "url������", required = true, paramType = "query", dataType = "String")
-    })
-    @RequestMapping(value = "updateManageMenuById", method = RequestMethod.POST)
-    public ResultMessage updateManageMenuById(HttpServletRequest request) {
-        Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
-        Map<String,Object> resultMap = manageMenuService.updateManageMenu(parameters);
-        String msg = resultMap.get("msg").toString();
-        boolean flag = Boolean.parseBoolean(resultMap.get("flag").toString());
-        if (flag){
-            return ResultMessage.ok(msg);
-        }
-        return ResultMessage.fail(msg);
-    }
-
-    @ApiOperation(value = "������������", notes = "������������")
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "id", value = "������", required = true, paramType = "query", dataType = "int")
-    })
-    @RequestMapping(value = "deleteManageMenu", method = RequestMethod.POST)
-    public ResultMessage deleteManageMenu(HttpServletRequest request) {
-        Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
-        Map<String,Object> resultMap = manageMenuService.deleteManageMenu(parameters);
-        String msg = resultMap.get("msg").toString();
-        boolean flag = Boolean.parseBoolean(resultMap.get("flag").toString());
-        if (flag){
-            return ResultMessage.ok(msg);
-        }
-        return ResultMessage.fail(msg);
-    }
-}
diff --git a/screen-manage/src/main/java/com/moral/api/entity/SysConfig.java b/screen-manage/src/main/java/com/moral/api/entity/SysConfig.java
new file mode 100644
index 0000000..dd0a1f3
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/entity/SysConfig.java
@@ -0,0 +1,67 @@
+package com.moral.api.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * ���������������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-03-18
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class SysConfig extends Model<SysConfig> {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ������
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * ������
+     */
+    private String type;
+
+    /**
+     * ���������
+     */
+    private String code;
+
+    /**
+     * ������
+     */
+    private String desc;
+
+    /**
+     * ������������
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * ������������
+     */
+    private LocalDateTime updateTime;
+
+    /**
+     * ������������
+     */
+    private String isDelete;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}
diff --git a/screen-manage/src/main/java/com/moral/api/mapper/SysConfigMapper.java b/screen-manage/src/main/java/com/moral/api/mapper/SysConfigMapper.java
new file mode 100644
index 0000000..3ebbbca
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/mapper/SysConfigMapper.java
@@ -0,0 +1,16 @@
+package com.moral.api.mapper;
+
+import com.moral.api.entity.SysConfig;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * ��������������� Mapper ������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-03-18
+ */
+public interface SysConfigMapper extends BaseMapper<SysConfig> {
+
+}
diff --git a/screen-manage/src/main/java/com/moral/api/service/ManageRoleService.java b/screen-manage/src/main/java/com/moral/api/service/ManageRoleService.java
index 91084c0..8b237d7 100644
--- a/screen-manage/src/main/java/com/moral/api/service/ManageRoleService.java
+++ b/screen-manage/src/main/java/com/moral/api/service/ManageRoleService.java
@@ -19,7 +19,7 @@
 public interface ManageRoleService extends IService<ManageRole> {
 
     @Transactional
-    List<ManageRole> getAll();
+    List<ManageRole> getAllWithPagingQuery(Map map);
 
     @Transactional
     Map<String,Object> insertOne(ManageRole manageRole,List list);
@@ -28,7 +28,7 @@
     Map<String,Object> updateManageRole(Map map);
 
     @Transactional
-    List<ManageRole> getManageRoleByNameFuzzy(ManageRole manageRole);
+    List<ManageRole> getManageRoleByNameFuzzy(Map map);
 
     @Transactional
     Map<String,Object> deleteManageRole(Map map);
diff --git a/screen-manage/src/main/java/com/moral/api/service/SysConfigService.java b/screen-manage/src/main/java/com/moral/api/service/SysConfigService.java
new file mode 100644
index 0000000..10b39f1
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/service/SysConfigService.java
@@ -0,0 +1,16 @@
+package com.moral.api.service;
+
+import com.moral.api.entity.SysConfig;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * ��������������� ���������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-03-18
+ */
+public interface SysConfigService extends IService<SysConfig> {
+
+}
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/ManageMenuServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/ManageMenuServiceImpl.java
index 40149bf..23ab730 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/ManageMenuServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/ManageMenuServiceImpl.java
@@ -5,7 +5,9 @@
 import com.moral.api.mapper.ManageRoleMenuMapper;
 import com.moral.api.service.ManageMenuService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.util.HashMap;
@@ -22,13 +24,14 @@
 @Service
 public class ManageMenuServiceImpl extends ServiceImpl<ManageMenuMapper, ManageMenu> implements ManageMenuService {
 
-    @Resource
+    @Autowired(required = false)
     private ManageMenuMapper manageMenuMapper;
 
-    @Resource
+    @Autowired(required = false)
     private ManageRoleMenuMapper manageRoleMenuMapper;
 
     @Override
+    @Transactional
     public Map<String,Object> insertManageMenu(ManageMenu manageMenu) {
         Map<String,Object> resultMap = new HashMap<>();
         if (manageMenu.getName()==null){
@@ -48,6 +51,7 @@
     }
 
     @Override
+    @Transactional
     public Map<String,Object> updateManageMenu(Map map) {
         Map<String,Object> resultMap = new HashMap<>();
         if (!map.containsKey("id")){
@@ -67,6 +71,7 @@
     }
 
     @Override
+    @Transactional
     public Map<String, Object> deleteManageMenu(Map map) {
         Map<String,Object> resultMap = new HashMap<>();
         if (!map.containsKey("id")){
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/SysConfigServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/SysConfigServiceImpl.java
new file mode 100644
index 0000000..36a83b2
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/SysConfigServiceImpl.java
@@ -0,0 +1,20 @@
+package com.moral.api.service.impl;
+
+import com.moral.api.entity.SysConfig;
+import com.moral.api.mapper.SysConfigMapper;
+import com.moral.api.service.SysConfigService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * ��������������� ���������������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-03-18
+ */
+@Service
+public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfig> implements SysConfigService {
+
+}
diff --git a/screen-manage/src/main/resources/mapper/ManageRoleMapper.xml b/screen-manage/src/main/resources/mapper/ManageRoleMapper.xml
index 8e3e2a3..b7521d2 100644
--- a/screen-manage/src/main/resources/mapper/ManageRoleMapper.xml
+++ b/screen-manage/src/main/resources/mapper/ManageRoleMapper.xml
@@ -30,26 +30,34 @@
     </select>
 
     <select id="getAll" resultMap="BaseResultMap">
-        select * from manage_role
-        where is_delete = 0
+        select
+        <include refid="Base_Column_List"></include>
+        from manage_role mr
+        where mr.is_delete = 0
     </select>
 
     <select id="getManageRoleByName" resultMap="BaseResultMap">
-        select * from manage_role
+        select
+        <include refid="Base_Column_List"></include>
+        from manage_role mr
         where name = #{name}
-        and is_delete = 0
+        and mr.is_delete = 0
     </select>
 
     <select id="getManageRoleById" resultMap="BaseResultMap">
-        select * from manage_role
-        where id = #{id}
-        and is_delete = 0
+        select
+        <include refid="Base_Column_List"></include>
+        from manage_role mr
+        where mr.id = #{id}
+        and mr.is_delete = 0
     </select>
 
     <select id="getManageRoleByNameFuzzy" resultMap="BaseResultMap">
-        select * from manage_role
-        where name like concat('%',#{name},'%')
-        and is_delete = 0
+        select
+        <include refid="Base_Column_List"></include>
+        from manage_role mr
+        where mr.name like concat('%',#{name},'%')
+        and mr.is_delete = 0
     </select>
 
     <insert id="insertOne" parameterType="com.moral.api.entity.ManageRole">
diff --git a/screen-manage/src/main/resources/mapper/SysConfigMapper.xml b/screen-manage/src/main/resources/mapper/SysConfigMapper.xml
new file mode 100644
index 0000000..55c6a9b
--- /dev/null
+++ b/screen-manage/src/main/resources/mapper/SysConfigMapper.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.moral.api.mapper.SysConfigMapper">
+
+        <!-- ������������������������ -->
+        <resultMap id="BaseResultMap" type="com.moral.api.entity.SysConfig">
+                    <id column="id" property="id" />
+                    <result column="type" property="type" />
+                    <result column="code" property="code" />
+                    <result column="desc" property="desc" />
+                    <result column="create_time" property="createTime" />
+                    <result column="update_time" property="updateTime" />
+                    <result column="is_delete" property="isDelete" />
+        </resultMap>
+
+</mapper>
\ No newline at end of file

--
Gitblit v1.8.0