From 578e49d67183d8d12a6af7e8244a9d152cb366d4 Mon Sep 17 00:00:00 2001
From: ZhuDongming <773644075@qq.com>
Date: Wed, 09 Oct 2019 14:02:21 +0800
Subject: [PATCH] 大屏后台管理代码update

---
 src/main/resources/mapper/RoleMenuMapper.xml                                 |   80 ++
 src/main/java/com/moral/mapper/MenuMapper.java                               |   23 
 src/main/java/com/moral/service/MenuService.java                             |   24 
 src/main/resources/mapper/AccountMapper.xml                                  |   10 
 src/main/java/com/moral/mapper/RoleMenuMapper.java                           |   18 
 src/main/java/com/moral/service/impl/DeviceServiceImpl.java                  | 1060 +++++++++++++-------------
 src/main/java/com/moral/mapper/AccountMapper.java                            |    8 
 src/main/java/com/moral/security/endpoint/RefreshTokenEndpoint.java          |    2 
 src/main/java/com/moral/entity/Menu.java                                     |   38 
 src/main/java/com/moral/mapper/AccountRoleMapper.java                        |   18 
 src/main/java/com/moral/service/impl/AccountRoleServiceImpl.java             |   76 +
 src/main/java/com/moral/controller/AccountRoleController.java                |   69 +
 src/main/java/com/moral/controller/RoleMenuController.java                   |   70 +
 src/main/java/com/moral/mapper/RoleMapper.java                               |   17 
 src/main/java/com/moral/util/TkMybatisUtils.java                             |   25 
 src/main/java/com/moral/service/RoleMenuService.java                         |   15 
 src/main/java/com/moral/controller/MenuController.java                       |   64 +
 src/main/java/com/moral/service/AccountService.java                          |    2 
 src/main/java/com/moral/controller/RoleController.java                       |   49 +
 src/main/java/com/moral/service/impl/AccountServiceImpl.java                 |    6 
 src/main/java/com/moral/service/impl/RoleServiceImpl.java                    |   86 ++
 src/main/resources/mapper/RoleMapper.xml                                     |  115 ++
 src/main/java/com/moral/service/impl/RoleMenuServiceImpl.java                |   76 +
 src/main/java/com/moral/service/AccountRoleService.java                      |   15 
 src/main/java/com/moral/entity/AccountRole.java                              |   21 
 src/main/java/com/moral/entity/Account.java                                  |    2 
 src/main/java/com/moral/service/RoleService.java                             |   19 
 src/main/java/com/moral/security/auth/login/LoginAuthenticationProvider.java |    2 
 src/main/java/com/moral/entity/RoleMenu.java                                 |   21 
 src/main/java/com/moral/entity/Role.java                                     |   24 
 src/main/resources/mapper/MenuMapper.xml                                     |  108 ++
 src/main/java/com/moral/service/impl/MenuServiceImpl.java                    |  139 +++
 src/main/resources/mapper/AccountRoleMapper.xml                              |   80 ++
 33 files changed, 1,853 insertions(+), 529 deletions(-)

diff --git a/src/main/java/com/moral/controller/AccountRoleController.java b/src/main/java/com/moral/controller/AccountRoleController.java
new file mode 100644
index 0000000..c4423a6
--- /dev/null
+++ b/src/main/java/com/moral/controller/AccountRoleController.java
@@ -0,0 +1,69 @@
+package com.moral.controller;
+
+import javax.annotation.Resource;
+
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.moral.common.bean.PageBean;
+import com.moral.common.bean.ResultBean;
+import com.moral.entity.AccountRole;
+import com.moral.service.AccountRoleService;
+import com.moral.service.AccountService;
+import com.moral.service.RoleService;
+
+@RestController
+@RequestMapping("account-role")
+@CrossOrigin(origins = "*", maxAge = 3600)
+public class AccountRoleController {
+    @Resource
+    AccountService accountService;
+
+    @Resource
+    RoleService roleService;
+
+    @Resource
+    AccountRoleService accountRoleService;
+
+    @GetMapping("account-list")
+    public ResultBean getAccountList(String accountName) {
+        ResultBean resultBean = new ResultBean(ResultBean.SUCCESS);
+        resultBean.setData(accountService.getAccountList(accountName));
+        return resultBean;
+    }
+
+    @GetMapping("role-list")
+    public ResultBean getRoleList(String roleName) {
+        ResultBean resultBean = new ResultBean(ResultBean.SUCCESS);
+        resultBean.setData(roleService.getRoleList(roleName));
+        return resultBean;
+    }
+
+    @PostMapping("add-or-modify")
+    public ResultBean saveOrUpdate(@RequestBody AccountRole accountRole) {
+        accountRoleService.addOrModify(accountRole);
+        ResultBean resultBean = new ResultBean(ResultBean.SUCCESS);
+        return resultBean;
+    }
+
+    @GetMapping("count-by-example")
+    public ResultBean<Integer> countByExample(PageBean pageBean) {
+        return new ResultBean<Integer>(accountRoleService.countByExample(pageBean));
+    }
+
+    @GetMapping("accountRole-list")
+    public PageBean getAccountRoleList(PageBean pageBean) {
+        return accountRoleService.getAccountRoleList(pageBean);
+    }
+
+    @PostMapping("delete-by-ids")
+    public ResultBean deleteByIds(@RequestBody Integer [] ids){
+        accountRoleService.deleteByIds(ids);
+        ResultBean resultBean = new ResultBean(ResultBean.SUCCESS);
+        return resultBean;
+    }
+}
diff --git a/src/main/java/com/moral/controller/MenuController.java b/src/main/java/com/moral/controller/MenuController.java
new file mode 100644
index 0000000..99233e2
--- /dev/null
+++ b/src/main/java/com/moral/controller/MenuController.java
@@ -0,0 +1,64 @@
+package com.moral.controller;
+
+import javax.annotation.Resource;
+
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.moral.common.bean.PageBean;
+import com.moral.common.bean.ResultBean;
+import com.moral.entity.Menu;
+import com.moral.service.MenuService;
+
+@RestController
+@RequestMapping("menu")
+@CrossOrigin(origins = "*", maxAge = 3600)
+public class MenuController {
+    @Resource
+    MenuService menuService;
+
+    @GetMapping("count-by-example")
+    public ResultBean<Integer> countByExample(PageBean pageBean) {
+        return new ResultBean<Integer>(menuService.countByExample(pageBean));
+    }
+
+    @PostMapping("add-or-modify")
+    public ResultBean saveOrUpdate(@RequestBody Menu menu) {
+        menuService.addOrModify(menu);
+        ResultBean resultBean = new ResultBean(ResultBean.SUCCESS);
+        return resultBean;
+    }
+
+    @GetMapping("page-list")
+    public PageBean pageList(PageBean pageBean) {
+        return menuService.queryByPageBean(pageBean);
+    }
+
+    @GetMapping("page-allList")
+    public PageBean pageAllList(PageBean pageBean) {
+        return menuService.queryByAllPageBean(pageBean);
+    }
+
+    @GetMapping("menu-list")
+    public PageBean getMenuList(PageBean pageBean) {
+        return menuService.getMenuList(pageBean);
+    }
+
+    @GetMapping("menuParent-list")
+    public ResultBean getMenuParentList(String menuName) {
+        ResultBean resultBean = new ResultBean(ResultBean.SUCCESS);
+        resultBean.setData(menuService.getMenuParentList(menuName));
+        return resultBean;
+    }
+
+    @PostMapping("delete-by-ids")
+    public ResultBean deleteByIds(@RequestBody Integer [] ids){
+        menuService.deleteByIds(ids);
+        ResultBean resultBean = new ResultBean(ResultBean.SUCCESS);
+        return resultBean;
+    }
+}
diff --git a/src/main/java/com/moral/controller/RoleController.java b/src/main/java/com/moral/controller/RoleController.java
new file mode 100644
index 0000000..58083d4
--- /dev/null
+++ b/src/main/java/com/moral/controller/RoleController.java
@@ -0,0 +1,49 @@
+package com.moral.controller;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.moral.common.bean.PageBean;
+import com.moral.common.bean.ResultBean;
+import com.moral.entity.Role;
+import com.moral.service.RoleService;
+
+@RestController
+@RequestMapping("role")
+@CrossOrigin(origins = "*", maxAge = 3600)
+public class RoleController {
+
+    @Autowired
+    RoleService roleService;
+
+    @GetMapping("count-by-example")
+    public ResultBean<Integer> countByExample(PageBean pageBean){
+        return  new ResultBean<Integer>(roleService.countByExample(pageBean));
+    }
+
+    @GetMapping("page-list")
+    public PageBean pageList(PageBean pageBean) {
+        return roleService.queryByPageBean(pageBean);
+    }
+
+    @PostMapping("add-or-modify")
+    public ResultBean addOrModify(@RequestBody Role role) {
+        roleService.addOrModify(role);
+        ResultBean resultBean = new ResultBean(ResultBean.SUCCESS);
+        return resultBean;
+    }
+
+    @PostMapping("delete-by-ids")
+    public ResultBean deleteByIds(@RequestBody List<Integer> ids){
+        roleService.deleteByIds(ids);
+        ResultBean resultBean = new ResultBean(ResultBean.SUCCESS);
+        return resultBean;
+    }
+}
diff --git a/src/main/java/com/moral/controller/RoleMenuController.java b/src/main/java/com/moral/controller/RoleMenuController.java
new file mode 100644
index 0000000..217b47f
--- /dev/null
+++ b/src/main/java/com/moral/controller/RoleMenuController.java
@@ -0,0 +1,70 @@
+package com.moral.controller;
+
+import javax.annotation.Resource;
+
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.moral.common.bean.PageBean;
+import com.moral.common.bean.ResultBean;
+import com.moral.entity.RoleMenu;
+import com.moral.service.MenuService;
+import com.moral.service.RoleMenuService;
+import com.moral.service.RoleService;
+
+@RestController
+@RequestMapping("role-menu")
+@CrossOrigin(origins = "*", maxAge = 3600)
+public class RoleMenuController {
+
+    @Resource
+    RoleService roleService;
+
+    @Resource
+    MenuService menuService;
+
+    @Resource
+    RoleMenuService roleMenuService;
+
+    @GetMapping("role-list")
+    public ResultBean getRoleList(String roleName) {
+        ResultBean resultBean = new ResultBean(ResultBean.SUCCESS);
+        resultBean.setData(roleService.getRoleList(roleName));
+        return resultBean;
+    }
+
+    @GetMapping("menu-list")
+    public ResultBean getMenuList(String menuName) {
+        ResultBean resultBean = new ResultBean(ResultBean.SUCCESS);
+        resultBean.setData(menuService.getMenuListByName(menuName));
+        return resultBean;
+    }
+
+    @PostMapping("add-or-modify")
+    public ResultBean saveOrUpdate(@RequestBody RoleMenu roleMenu) {
+        roleMenuService.addOrModify(roleMenu);
+        ResultBean resultBean = new ResultBean(ResultBean.SUCCESS);
+        return resultBean;
+    }
+
+    @GetMapping("count-by-example")
+    public ResultBean<Integer> countByExample(PageBean pageBean) {
+        return new ResultBean<Integer>(roleMenuService.countByExample(pageBean));
+    }
+
+    @GetMapping("roleMenu-list")
+    public PageBean getRoleMenuList(PageBean pageBean) {
+        return roleMenuService.getRoleMenuList(pageBean);
+    }
+
+    @PostMapping("delete-by-ids")
+    public ResultBean deleteByIds(@RequestBody Integer [] ids){
+        roleMenuService.deleteByIds(ids);
+        ResultBean resultBean = new ResultBean(ResultBean.SUCCESS);
+        return resultBean;
+    }
+}
diff --git a/src/main/java/com/moral/entity/Account.java b/src/main/java/com/moral/entity/Account.java
index 86f78d2..18e66a6 100644
--- a/src/main/java/com/moral/entity/Account.java
+++ b/src/main/java/com/moral/entity/Account.java
@@ -80,7 +80,7 @@
 	// TODO ������������
 	public List<Role> getRoles(){
 		Role role = new Role();
-		role.setName("temp");
+		role.setRoleName("temp");
 		return Arrays.asList(role);
 	}
 	@Transient
diff --git a/src/main/java/com/moral/entity/AccountRole.java b/src/main/java/com/moral/entity/AccountRole.java
new file mode 100644
index 0000000..a442a21
--- /dev/null
+++ b/src/main/java/com/moral/entity/AccountRole.java
@@ -0,0 +1,21 @@
+package com.moral.entity;
+
+import javax.persistence.Transient;
+
+import lombok.Data;
+
+@Data
+public class AccountRole {
+
+    private Integer id;
+
+    private Integer accountId;
+
+    private Integer roleId;
+
+    @Transient
+    private Account account;
+
+    @Transient
+    private Role role;
+}
diff --git a/src/main/java/com/moral/entity/Menu.java b/src/main/java/com/moral/entity/Menu.java
new file mode 100644
index 0000000..4d5ab07
--- /dev/null
+++ b/src/main/java/com/moral/entity/Menu.java
@@ -0,0 +1,38 @@
+package com.moral.entity;
+
+import java.util.Date;
+
+import javax.persistence.Id;
+
+import lombok.Data;
+
+@Data
+public class Menu {
+    @Id
+    private Integer id;
+
+    private String menuCode;
+
+    private String menuName;
+
+    private String menuIcon;
+
+    private String menuUrl;
+
+    private Integer menuOrder;
+
+    private Integer menuParentId;
+
+    private String menuRemark;
+
+    private String isDelete;
+
+    private Date createTime;
+
+    private String createUser;
+
+    private Date updateTime;
+
+    private String updateUser;
+
+}
diff --git a/src/main/java/com/moral/entity/Role.java b/src/main/java/com/moral/entity/Role.java
index 4ec205b..7ba2ef6 100644
--- a/src/main/java/com/moral/entity/Role.java
+++ b/src/main/java/com/moral/entity/Role.java
@@ -1,8 +1,30 @@
 package com.moral.entity;
 
+import java.util.Date;
+
+import javax.persistence.Id;
+
 import lombok.Data;
 
 @Data
 public class Role {
-   private String name;
+    @Id
+    private Integer id;
+
+    private String roleCode;
+
+    private String roleName;
+
+    private String isDelete;
+
+    private String roleRemark;
+
+    private Date createTime;
+
+    private String createUser;
+
+    private Date updateTime;
+
+    private String updateUser;
+
 }
diff --git a/src/main/java/com/moral/entity/RoleMenu.java b/src/main/java/com/moral/entity/RoleMenu.java
new file mode 100644
index 0000000..c489608
--- /dev/null
+++ b/src/main/java/com/moral/entity/RoleMenu.java
@@ -0,0 +1,21 @@
+package com.moral.entity;
+
+import javax.persistence.Transient;
+
+import lombok.Data;
+
+@Data
+public class RoleMenu {
+
+    private Integer id;
+
+    private Integer roleId;
+
+    private Integer menuId;
+
+    @Transient
+    private Role role;
+
+    @Transient
+    private Menu menu;
+}
diff --git a/src/main/java/com/moral/mapper/AccountMapper.java b/src/main/java/com/moral/mapper/AccountMapper.java
index 4bb4c92..9a85a32 100644
--- a/src/main/java/com/moral/mapper/AccountMapper.java
+++ b/src/main/java/com/moral/mapper/AccountMapper.java
@@ -3,11 +3,19 @@
 import java.util.List;
 import java.util.Map;
 
+import org.apache.ibatis.annotations.Param;
+
 import com.moral.common.mapper.BaseMapper;
 import com.moral.entity.Account;
 
 public interface AccountMapper extends BaseMapper<Account> {
+
 	List<Map<String, Object>> getRoleNameByAccountId(Integer accountId);
+
 	Account getByAccountName(String name);
+
 	Map<String, Object> getOrganizationIdByAccountId(Integer accountId);
+
+    List<Account> getAccountList(@Param("accountName") String accountName);
+
 }
\ No newline at end of file
diff --git a/src/main/java/com/moral/mapper/AccountRoleMapper.java b/src/main/java/com/moral/mapper/AccountRoleMapper.java
new file mode 100644
index 0000000..550945b
--- /dev/null
+++ b/src/main/java/com/moral/mapper/AccountRoleMapper.java
@@ -0,0 +1,18 @@
+package com.moral.mapper;
+
+import java.util.List;
+
+import com.moral.common.mapper.BaseMapper;
+import com.moral.entity.AccountRole;
+
+import tk.mybatis.mapper.entity.Example;
+
+
+public interface AccountRoleMapper extends BaseMapper<AccountRole> {
+
+    List<AccountRole> getAccountRoleList(Example example);
+
+    int updateByPrimaryKey(AccountRole accountRole);
+
+    int deleteByPrimaryKeyOwn(Integer id);
+}
diff --git a/src/main/java/com/moral/mapper/MenuMapper.java b/src/main/java/com/moral/mapper/MenuMapper.java
new file mode 100644
index 0000000..ab2ddfa
--- /dev/null
+++ b/src/main/java/com/moral/mapper/MenuMapper.java
@@ -0,0 +1,23 @@
+package com.moral.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+
+import com.moral.common.mapper.BaseMapper;
+import com.moral.entity.Menu;
+
+import tk.mybatis.mapper.entity.Example;
+
+
+public interface MenuMapper extends BaseMapper<Menu> {
+
+    List<Menu> selectWithMenuNameByExample(Example example);
+
+    List<Menu> getMenuList(Example example);
+
+    List<Menu> getParentMenuList(@Param("menuName") String menuName);
+
+    List<Menu> getMenuListByName(@Param("menuName") String menuName);
+
+}
diff --git a/src/main/java/com/moral/mapper/RoleMapper.java b/src/main/java/com/moral/mapper/RoleMapper.java
new file mode 100644
index 0000000..cc4b732
--- /dev/null
+++ b/src/main/java/com/moral/mapper/RoleMapper.java
@@ -0,0 +1,17 @@
+package com.moral.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+
+import com.moral.common.mapper.BaseMapper;
+import com.moral.entity.Role;
+
+public interface RoleMapper extends BaseMapper<Role> {
+
+    int insertSelective(Role role);
+
+    int updateByPrimaryKeySelective(Role role);
+
+    List<Role> getRoleList(@Param("roleName") String roleName);
+}
diff --git a/src/main/java/com/moral/mapper/RoleMenuMapper.java b/src/main/java/com/moral/mapper/RoleMenuMapper.java
new file mode 100644
index 0000000..1d6834f
--- /dev/null
+++ b/src/main/java/com/moral/mapper/RoleMenuMapper.java
@@ -0,0 +1,18 @@
+package com.moral.mapper;
+
+import java.util.List;
+
+import com.moral.common.mapper.BaseMapper;
+import com.moral.entity.RoleMenu;
+
+import tk.mybatis.mapper.entity.Example;
+
+public interface RoleMenuMapper extends BaseMapper<RoleMenu> {
+
+    List<RoleMenu> getRoleMenuList(Example example);
+
+    int deleteByPrimaryKeyOwn(Integer id);
+
+    int updateByPrimaryKey(RoleMenu roleMenu);
+
+}
diff --git a/src/main/java/com/moral/security/auth/login/LoginAuthenticationProvider.java b/src/main/java/com/moral/security/auth/login/LoginAuthenticationProvider.java
index 12ba56f..4047ded 100644
--- a/src/main/java/com/moral/security/auth/login/LoginAuthenticationProvider.java
+++ b/src/main/java/com/moral/security/auth/login/LoginAuthenticationProvider.java
@@ -70,7 +70,7 @@
             throw new InsufficientAuthenticationException("User has no roles assigned");
         }
         List<GrantedAuthority> authorities = account.getRoles().stream()
-                .map(authority -> new SimpleGrantedAuthority(authority.getName()))
+                .map(authority -> new SimpleGrantedAuthority(authority.getRoleName()))
                 .collect(Collectors.toList());
 
         UserContext userContext = UserContext.create(account.getAccountName(),mode,account.getOrganizationId(),authorities);
diff --git a/src/main/java/com/moral/security/endpoint/RefreshTokenEndpoint.java b/src/main/java/com/moral/security/endpoint/RefreshTokenEndpoint.java
index 2ad722d..1cf15d2 100644
--- a/src/main/java/com/moral/security/endpoint/RefreshTokenEndpoint.java
+++ b/src/main/java/com/moral/security/endpoint/RefreshTokenEndpoint.java
@@ -72,7 +72,7 @@
 
         if (account.getRoles() == null) throw new InsufficientAuthenticationException("User has no roles assigned");
         List<GrantedAuthority> authorities = account.getRoles().stream()
-                .map(authority -> new SimpleGrantedAuthority(authority.getName()))
+                .map(authority -> new SimpleGrantedAuthority(authority.getRoleName()))
                 .collect(Collectors.toList());
 
         UserContext userContext = UserContext.create(account.getAccountName(),mode,account.getOrganizationId(),authorities);
diff --git a/src/main/java/com/moral/service/AccountRoleService.java b/src/main/java/com/moral/service/AccountRoleService.java
new file mode 100644
index 0000000..9fd8272
--- /dev/null
+++ b/src/main/java/com/moral/service/AccountRoleService.java
@@ -0,0 +1,15 @@
+package com.moral.service;
+
+import com.moral.common.bean.PageBean;
+import com.moral.entity.AccountRole;
+
+public interface AccountRoleService {
+
+    void addOrModify(AccountRole accountRole);
+
+    int countByExample(PageBean pageBean);
+
+    PageBean getAccountRoleList(PageBean pageBean);
+
+    void deleteByIds(Integer... ids);
+}
diff --git a/src/main/java/com/moral/service/AccountService.java b/src/main/java/com/moral/service/AccountService.java
index e93747f..dcc1fe2 100644
--- a/src/main/java/com/moral/service/AccountService.java
+++ b/src/main/java/com/moral/service/AccountService.java
@@ -30,4 +30,6 @@
 	Account companyLogin(Map<String, Object> parameters);
 	
 	Map<String, Object> getOrganizationIdByAccountId(String id);
+
+    List<Account> getAccountList(String accountName);
 }
diff --git a/src/main/java/com/moral/service/MenuService.java b/src/main/java/com/moral/service/MenuService.java
new file mode 100644
index 0000000..bb01354
--- /dev/null
+++ b/src/main/java/com/moral/service/MenuService.java
@@ -0,0 +1,24 @@
+package com.moral.service;
+
+import java.util.List;
+
+import com.moral.common.bean.PageBean;
+import com.moral.entity.Menu;
+
+public interface MenuService {
+    void addOrModify(Menu menu);
+
+    PageBean queryByPageBean(PageBean pageBean);
+
+    PageBean queryByAllPageBean(PageBean pageBean);
+
+    int countByExample(PageBean pageBean);
+
+    PageBean getMenuList(PageBean pageBean);
+
+    List<Menu> getMenuParentList(String menuName);
+
+    void deleteByIds(Integer[] ids);
+
+    List<Menu> getMenuListByName(String menuName);
+}
diff --git a/src/main/java/com/moral/service/RoleMenuService.java b/src/main/java/com/moral/service/RoleMenuService.java
new file mode 100644
index 0000000..8bde76a
--- /dev/null
+++ b/src/main/java/com/moral/service/RoleMenuService.java
@@ -0,0 +1,15 @@
+package com.moral.service;
+
+import com.moral.common.bean.PageBean;
+import com.moral.entity.RoleMenu;
+
+public interface RoleMenuService {
+
+    void addOrModify(RoleMenu roleMenu);
+
+    int countByExample(PageBean pageBean);
+
+    PageBean getRoleMenuList(PageBean pageBean);
+
+    void deleteByIds(Integer... ids);
+}
diff --git a/src/main/java/com/moral/service/RoleService.java b/src/main/java/com/moral/service/RoleService.java
new file mode 100644
index 0000000..6cfc19a
--- /dev/null
+++ b/src/main/java/com/moral/service/RoleService.java
@@ -0,0 +1,19 @@
+package com.moral.service;
+
+import java.util.List;
+
+import com.moral.common.bean.PageBean;
+import com.moral.entity.Role;
+
+public interface RoleService {
+
+    PageBean<Role> queryByPageBean(PageBean pageBean);
+
+    void addOrModify(Role role);
+
+    int deleteByIds(List<Integer> ids);
+
+    int countByExample(PageBean pageBean);
+
+    List<Role> getRoleList(String roleName);
+}
diff --git a/src/main/java/com/moral/service/impl/AccountRoleServiceImpl.java b/src/main/java/com/moral/service/impl/AccountRoleServiceImpl.java
new file mode 100644
index 0000000..d7a9874
--- /dev/null
+++ b/src/main/java/com/moral/service/impl/AccountRoleServiceImpl.java
@@ -0,0 +1,76 @@
+package com.moral.service.impl;
+
+import java.util.Arrays;
+import java.util.List;
+
+import javax.annotation.Resource;
+
+import org.springframework.stereotype.Service;
+
+import com.github.pagehelper.PageHelper;
+import com.moral.common.bean.PageBean;
+import com.moral.common.util.ExampleUtil;
+import com.moral.entity.AccountRole;
+import com.moral.mapper.AccountRoleMapper;
+import com.moral.service.AccountRoleService;
+
+import tk.mybatis.mapper.entity.Example;
+
+@Service
+public class AccountRoleServiceImpl implements AccountRoleService {
+
+    private static Class ENTITY_CLASS = AccountRole.class;
+
+    @Resource
+    private AccountRoleMapper accountRoleMapper;
+
+    @Override
+    public void addOrModify(AccountRole accountRole) {
+        try {
+            if (accountRole.getId() != null) {
+                accountRoleMapper.updateByPrimaryKey(accountRole);
+            } else {
+                AccountRole accountRoleQuery = new AccountRole();
+                accountRoleQuery.setAccountId(accountRole.getAccountId());
+                accountRoleQuery.setRoleId(accountRole.getRoleId());
+                AccountRole accountRoleResult = accountRoleMapper.selectOne(accountRoleQuery);
+                if (accountRoleResult == null) {
+                    accountRoleMapper.insertSelective(accountRole);
+                }
+            }
+        } catch (Exception ex) {
+            throw ex;
+        }
+    }
+
+    @Override
+    public int countByExample(PageBean pageBean) {
+        Example example = ExampleUtil.generateExample(ENTITY_CLASS, pageBean);
+        return accountRoleMapper.selectCountByExample(example);
+    }
+
+    @Override
+    public PageBean getAccountRoleList(PageBean pageBean) {
+        Example example = ExampleUtil.generateExample(ENTITY_CLASS, pageBean);
+        if (pageBean.getPageSize() > 0) {
+            PageHelper.startPage(pageBean.getPageIndex(), pageBean.getPageSize());
+        }
+        List<AccountRole> accountRoleList = accountRoleMapper.getAccountRoleList(example);
+        return new PageBean(accountRoleList);
+    }
+
+    @Override
+    public void deleteByIds(Integer... ids) {
+        if (ids != null && ids.length > 0) {
+            if (ids.length == 1) {
+                accountRoleMapper.deleteByPrimaryKeyOwn(ids[0]);
+            } else {
+                Example example = new Example(ENTITY_CLASS);
+                example.or().andIn("id", Arrays.asList(ids));
+                accountRoleMapper.deleteByExample(example);
+            }
+
+        }
+    }
+
+}
diff --git a/src/main/java/com/moral/service/impl/AccountServiceImpl.java b/src/main/java/com/moral/service/impl/AccountServiceImpl.java
index a3c53db..261adc9 100644
--- a/src/main/java/com/moral/service/impl/AccountServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/AccountServiceImpl.java
@@ -206,4 +206,10 @@
 		Map<String, Object> map = accountMapper.getOrganizationIdByAccountId(accountId);
 		return map;
 	}
+
+    @Override
+    public List<Account> getAccountList(String accountName) {
+        List<Account> accountList = accountMapper.getAccountList(accountName);
+        return accountList;
+    }
 }
diff --git a/src/main/java/com/moral/service/impl/DeviceServiceImpl.java b/src/main/java/com/moral/service/impl/DeviceServiceImpl.java
index c273e14..773ce10 100644
--- a/src/main/java/com/moral/service/impl/DeviceServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/DeviceServiceImpl.java
@@ -20,6 +20,8 @@
 import com.moral.mapper.OrganizationMapper;
 import com.moral.service.AccountService;
 import com.moral.service.DeviceService;
+import com.moral.util.TkMybatisUtils;
+
 import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang3.BooleanUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -27,10 +29,12 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.ObjectUtils;
+
 import tk.mybatis.mapper.entity.Example;
 
 import javax.annotation.Resource;
 import javax.validation.constraints.NotNull;
+
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
@@ -41,137 +45,142 @@
 
 @Service
 public class DeviceServiceImpl implements DeviceService {
-	private static Logger log = Logger.getLogger(DeviceServiceImpl.class);
-	//-----------------------redis key������-������---------------------------------
-	private static String AlARM = "alarm";//������������������key������
-	private static String ADJUST="adjust";//���������������key������
-	private static String DEVICE = "device";//������������������key������
-	private static String STATE = "state";//������������������key������
-	private static String DATA = "data";//������������������key������
-	//-----------------------redis key������-������---------------------------------
-	private String keysConnect(String... keys) {
-		StringBuilder key = new StringBuilder(keys[0]);
-		for(int i=1;i<keys.length;i++) {
-			key.append("_");
-			key.append(keys[i]);
-		}
-		return key.toString().toLowerCase();
-	}
-	@Resource
-	private DeviceMapper deviceMapper;
+    private static Logger log = Logger.getLogger(DeviceServiceImpl.class);
+    //-----------------------redis key������-������---------------------------------
+    private static String AlARM = "alarm";//������������������key������
+    private static String ADJUST = "adjust";//���������������key������
+    private static String DEVICE = "device";//������������������key������
+    private static String STATE = "state";//������������������key������
+    private static String DATA = "data";//������������������key������
+
+    //-----------------------redis key������-������---------------------------------
+    private String keysConnect(String... keys) {
+        StringBuilder key = new StringBuilder(keys[0]);
+        for (int i = 1; i < keys.length; i++) {
+            key.append("_");
+            key.append(keys[i]);
+        }
+        return key.toString().toLowerCase();
+    }
+
+    @Resource
+    private DeviceMapper deviceMapper;
     @Resource
     private MonitorPointMapper monitorPointMapper;
-	@Resource
-	private AccountService accountService;
+    @Resource
+    private AccountService accountService;
     private Class ENTITY_CLASS = Device.class;
     @Resource
-	OrganizationMapper orgMapper;
+    OrganizationMapper orgMapper;
     @Resource
-	DeviceVersionMapper deviceVersionMapper;
-	@Resource
-	RedisUtils redisUtils;
-	@Resource
-	OrganizationMapper organizationMapper;
-	@Resource
-	DictionaryDataMapper dictionaryDataMapper;
-	@Override
-	public Map<String, Object> getDeviceStatesByAccount(Map<String, Object> parameters) {
-		ValidateUtil.notNull(parameters.get("accountId"), "param.is.null");
-		Map<String, Object> result = new HashMap<String, Object>();
-		accountService.setOrgIdsByAccount(parameters);
-		List<Map<String, Object>> list = deviceMapper.getDeviceStatesByAccount(parameters);
-		Long all = 0L, normal = 0L, abnormal = 0L, stop = 0L;
-		for (Map<String, Object> map : list) {
-			Long count = (Long) map.get("count");
-			all += count;
-			switch (Integer.valueOf((String) map.get("state"))) {
-			case 0:
-				normal = count;
-				break;
-			case 4:
-				stop = count;
-				break;
-			default:
-				abnormal += count;
-			}
-		}
-		result.put("all", all);
-		result.put("normal", normal);
-		result.put("abnormal", abnormal);
-		result.put("stop", stop);
-		return result;
-	}
-	
-	@Override
-	@Transactional
-	public void saveOrUpdateDevice(Device device) {
-		ValidateUtil.notNull(device, "param.is.null");
-		ValidateUtil.notEmpty(device.getMac(), "param.is.null");
-		Device queryDevice = new Device();
-		queryDevice.setMac(device.getMac());
-		queryDevice = deviceMapper.selectOne(queryDevice);
-		Date operateDate = new Date();
-		device.setInstallTime(operateDate);
-		if (ObjectUtils.isEmpty(queryDevice)) {
-			device.setCreateTime(operateDate);
-			device.setState("4");
-			device.setIsDelete(Constants.IS_DELETE_FALSE);
-			deviceMapper.insertSelective(device);
-		}else {
-			device.setId(queryDevice.getId());
-			deviceMapper.updateByPrimaryKeySelective(device);
-		}
-		//������redis������������
-		refreshDeviceInRedis(device.getMac());
-	}
+    DeviceVersionMapper deviceVersionMapper;
+    @Resource
+    RedisUtils redisUtils;
+    @Resource
+    OrganizationMapper organizationMapper;
+    @Resource
+    DictionaryDataMapper dictionaryDataMapper;
 
-	@Override
-	public List<Device> getInstallDevicesByOperateUser(Integer uid, Integer pageIndex, Integer pageSize) {
-		ValidateUtil.notNull(uid, "param.is.null");
-		Device device = new Device();
-		device.setOperateUserId(uid);
-		PageHelper.startPage(pageIndex, pageSize,false);
-		List<Device> devices = deviceMapper.select(device);
-		return devices;
-	}
-
-	/**
-	 *
-	 * @param mac
-	 * @param fromCache
-	 * @return ������������������
-	 */
     @Override
-    public  Device getDeviceByMac (String mac ,boolean fromCache){
-	    if(fromCache){
+    public Map<String, Object> getDeviceStatesByAccount(Map<String, Object> parameters) {
+        ValidateUtil.notNull(parameters.get("accountId"), "param.is.null");
+        Map<String, Object> result = new HashMap<String, Object>();
+        accountService.setOrgIdsByAccount(parameters);
+        List<Map<String, Object>> list = deviceMapper.getDeviceStatesByAccount(parameters);
+        Long all = 0L, normal = 0L, abnormal = 0L, stop = 0L;
+        for (Map<String, Object> map : list) {
+            Long count = (Long) map.get("count");
+            all += count;
+            switch (Integer.valueOf((String) map.get("state"))) {
+                case 0:
+                    normal = count;
+                    break;
+                case 4:
+                    stop = count;
+                    break;
+                default:
+                    abnormal += count;
+            }
+        }
+        result.put("all", all);
+        result.put("normal", normal);
+        result.put("abnormal", abnormal);
+        result.put("stop", stop);
+        return result;
+    }
+
+    @Override
+    @Transactional
+    public void saveOrUpdateDevice(Device device) {
+        ValidateUtil.notNull(device, "param.is.null");
+        ValidateUtil.notEmpty(device.getMac(), "param.is.null");
+        Device queryDevice = new Device();
+        queryDevice.setMac(device.getMac());
+        queryDevice = deviceMapper.selectOne(queryDevice);
+        Date operateDate = new Date();
+        device.setInstallTime(operateDate);
+        if (ObjectUtils.isEmpty(queryDevice)) {
+            device.setCreateTime(operateDate);
+            device.setState("4");
+            device.setIsDelete(Constants.IS_DELETE_FALSE);
+            deviceMapper.insertSelective(device);
+        } else {
+            device.setId(queryDevice.getId());
+            deviceMapper.updateByPrimaryKeySelective(device);
+        }
+        //������redis������������
+        refreshDeviceInRedis(device.getMac());
+    }
+
+    @Override
+    public List<Device> getInstallDevicesByOperateUser(Integer uid, Integer pageIndex, Integer pageSize) {
+        ValidateUtil.notNull(uid, "param.is.null");
+        Device device = new Device();
+        device.setOperateUserId(uid);
+        PageHelper.startPage(pageIndex, pageSize, false);
+        List<Device> devices = deviceMapper.select(device);
+        return devices;
+    }
+
+    /**
+     * @param mac
+     * @param fromCache
+     * @return ������������������
+     */
+    @Override
+    public Device getDeviceByMac(String mac, boolean fromCache) {
+        if (fromCache) {
             Device device = getDeviceFromRedis(mac);
-            if(device==null) {
+            if (device == null) {
                 device = deviceMapper.selectWithOrgIdsByMac(mac);
             }
-            return  device;
-        }else {
-            return  deviceMapper.selectWithOrgIdsByMac(mac);
+            return device;
+        } else {
+            return deviceMapper.selectWithOrgIdsByMac(mac);
         }
 
     }
 
     /**
      * ���������������������
+     *
      * @param mac
      * @return
      */
-	@Override
-	public Device getDeviceByMac(String mac) {
+    @Override
+    public Device getDeviceByMac(String mac) {
 
-		return getDeviceByMac(mac,true);
-	}
-	/*
-	 * ���������������������redis������key
-	 */
-	private String getDeviceKey(String mac) {
-		return keysConnect(DEVICE,mac);
-	}
-//	/*
+        return getDeviceByMac(mac, true);
+    }
+
+    /*
+     * ���������������������redis������key
+     */
+    private String getDeviceKey(String mac) {
+        return keysConnect(DEVICE, mac);
+    }
+
+    //	/*
 //	 * ������������������redis��������� ������
 //	 */
 //	private void setDeviceToRedis(String mac,Device device){
@@ -187,438 +196,439 @@
 //		simpleDevice.setDeviceVersion(device.getDeviceVersion());
 //		redisUtils.set(key,simpleDevice);
 //	}
-	private Device getDeviceFromRedis(String mac) {
-		String key = getDeviceKey(mac);
-		return redisUtils.get(key,Device.class);
-	}
+    private Device getDeviceFromRedis(String mac) {
+        String key = getDeviceKey(mac);
+        return redisUtils.get(key, Device.class);
+    }
 
-	/**
-	 *
-	 * @param params
-	 * map��� ������ ������id���4������������
-	 * @return ������������������������
-	 */
-	@Override
-	public List<Device> query(Map<String, Object> params) {
-		Object orgIdObj = params.get("orgId");
-		List<Device> deviceList = null;
-		if(orgIdObj != null) {
-			Integer orgId = Integer.parseInt(orgIdObj.toString());
-			List<Integer> orgIds = orgMapper.selectLowerOrgIds(orgId);
-			params.put("orgIds", orgIds);
-			deviceList = deviceMapper.selectByMap(params);
-			loadDeviceState(deviceList);
-		}
-		return deviceList;
-	}
-	/**
-	 *  ������������id��������������� ������������������
-	 * @param orgId
-	 * @param deviceName
-	 * @param pageSize
-	 * @param pageNo
-	 * @return ���������������������
-	 */
-	@Override
-	public PageResult query(Integer orgId, String deviceName, Integer pageSize, Integer pageNo) {
-		List<Integer> orgIds = orgMapper.selectLowerOrgIds(orgId);
-		if(!ObjectUtils.isEmpty(pageSize)&&!ObjectUtils.isEmpty(pageNo)){
-			PageHelper.startPage(pageNo,pageSize);
-		}
-		String state = null;
-		switch (deviceName){
-			case "������":
-				state = "0";
-				deviceName = null;break;
-				case "������":
-				state = "1";
-				deviceName = null;break;
-			case "������":
-				state = "2";
-				deviceName = null;break;
-			case "������":
-				state = "3";
-				deviceName = null;break;
-			case "������":
-				state = "4";
-				deviceName = null;break;
-		}
-		List<Device> list = deviceMapper.selectByOrgIdAndDevName(orgId,orgIds,state,deviceName);
-		//���redis������������
-		loadDeviceState(list);
-		if(list instanceof Page){
-			return new PageResult(((Page) list).getTotal(),list);
-		}
-		return new PageResult(null,list);
-	}
+    /**
+     * @param params map��� ������ ������id���4������������
+     * @return ������������������������
+     */
+    @Override
+    public List<Device> query(Map<String, Object> params) {
+        Object orgIdObj = params.get("orgId");
+        List<Device> deviceList = null;
+        if (orgIdObj != null) {
+            Integer orgId = Integer.parseInt(orgIdObj.toString());
+            List<Integer> orgIds = orgMapper.selectLowerOrgIds(orgId);
+            params.put("orgIds", orgIds);
+            deviceList = deviceMapper.selectByMap(params);
+            loadDeviceState(deviceList);
+        }
+        return deviceList;
+    }
 
-	/**
-	 * ������������id������������id ������������������
-	 * @param orgId
-	 * @param mpId
-	 * @param pageSize
-	 * @param pageNo
-	 * @return ���������������������
-	 */
-	@Override
-	public PageResult query(Integer orgId, Integer mpId, Integer pageSize, Integer pageNo) {
-		List<Integer> orgIds = orgMapper.selectLowerOrgIds(orgId);
-		if(!ObjectUtils.isEmpty(pageSize)&&!ObjectUtils.isEmpty(pageNo)){
-			PageHelper.startPage(pageNo,pageSize);
-		}
-		List<Device> list = deviceMapper.selectByOrgIdAndMpId(orgId,orgIds,mpId);
-		//���redis������������
-		loadDeviceState(list);
-		if(list instanceof Page){
-			return new PageResult(((Page) list).getTotal(),list);
-		}
-		return new PageResult(null,list);
-	}
-	private void loadDeviceState(List<Device> list){
-		//���redis������������
-		list.stream().map( device -> {
-			String mac = device.getMac();
-			if(!StringUtils.isBlank(mac)){
-				String state = getSateFromRedis(device.getMonitorPointId(),mac.toLowerCase());
-				device.setState(state);
-			}else{
-				device.setState(Constants.DEVICE_STATE_OFFLINE);
-			}
-			return device;
-		}).count();
-	}
-	private String getSateFromRedis(Integer mpId,String mac){
+    /**
+     * ������������id��������������� ������������������
+     *
+     * @param orgId
+     * @param deviceName
+     * @param pageSize
+     * @param pageNo
+     * @return ���������������������
+     */
+    @Override
+    public PageResult query(Integer orgId, String deviceName, Integer pageSize, Integer pageNo) {
+        List<Integer> orgIds = orgMapper.selectLowerOrgIds(orgId);
+        if (!ObjectUtils.isEmpty(pageSize) && !ObjectUtils.isEmpty(pageNo)) {
+            PageHelper.startPage(pageNo, pageSize);
+        }
+        String state = null;
+        switch (deviceName) {
+            case "������":
+                state = "0";
+                deviceName = null;
+                break;
+            case "������":
+                state = "1";
+                deviceName = null;
+                break;
+            case "������":
+                state = "2";
+                deviceName = null;
+                break;
+            case "������":
+                state = "3";
+                deviceName = null;
+                break;
+            case "������":
+                state = "4";
+                deviceName = null;
+                break;
+        }
+        List<Device> list = deviceMapper.selectByOrgIdAndDevName(orgId, orgIds, state, deviceName);
+        //���redis������������
+        loadDeviceState(list);
+        if (list instanceof Page) {
+            return new PageResult(((Page) list).getTotal(), list);
+        }
+        return new PageResult(null, list);
+    }
 
-		Map<String,String> stateMap  = getStateMapFromRedis(mpId,mac);
-		String state = null;
-		if(stateMap != null){
-			state  = stateMap.get("state");
-		}
-		state = state == null ?Constants.DEVICE_STATE_OFFLINE:state;
-		return  state;
-	}
-	public Map<String,String> getStateMapFromRedis(Integer mpId,String mac){
-		StringBuilder key = new StringBuilder();
-		//������key
-		key.append("state_").append(mpId).append("_").append(mac);
-		return   redisUtils.get(key.toString(),new TypeReference<Map<String,String>>(){});
-	}
-	private Device getDeviceWithOrgIdsByMac(String mac) {
-		String key = "device_"+mac;
-		Device device = redisUtils.get(key,Device.class);
-		if(device==null) {
-			device = deviceMapper.selectWithOrgIdsByMac(mac);
-			if(device!=null){
-				redisUtils.set(key,device);
-			}
-		}
-		return device;
-	}
+    /**
+     * ������������id������������id ������������������
+     *
+     * @param orgId
+     * @param mpId
+     * @param pageSize
+     * @param pageNo
+     * @return ���������������������
+     */
+    @Override
+    public PageResult query(Integer orgId, Integer mpId, Integer pageSize, Integer pageNo) {
+        List<Integer> orgIds = orgMapper.selectLowerOrgIds(orgId);
+        if (!ObjectUtils.isEmpty(pageSize) && !ObjectUtils.isEmpty(pageNo)) {
+            PageHelper.startPage(pageNo, pageSize);
+        }
+        List<Device> list = deviceMapper.selectByOrgIdAndMpId(orgId, orgIds, mpId);
+        //���redis������������
+        loadDeviceState(list);
+        if (list instanceof Page) {
+            return new PageResult(((Page) list).getTotal(), list);
+        }
+        return new PageResult(null, list);
+    }
 
-	/**
-	 * ������������������������������
-	 * ������ redis ���������������,���������������������������������������������task������
-	 * @param mac
-	 */
-	private void refreshDeviceInRedis(String mac){
-	     if(!StringUtils.isBlank(mac)){
-	     	 String key = getDeviceKey(mac);
-	     	 redisUtils.remove(key);
-         }else
-		 {
-		 	log.warn("param mac is null in method [refreshDeviceInRedis]");
-		 }
-	}
-	@Override
-	public int countByExample(PageBean pageBean){
-		Example example = ExampleUtil.generateExample(ENTITY_CLASS,pageBean);
-		addDeletesToExample(example);
+    private void loadDeviceState(List<Device> list) {
+        //���redis������������
+        list.stream().map(device -> {
+            String mac = device.getMac();
+            if (!StringUtils.isBlank(mac)) {
+                String state = getSateFromRedis(device.getMonitorPointId(), mac.toLowerCase());
+                device.setState(state);
+            } else {
+                device.setState(Constants.DEVICE_STATE_OFFLINE);
+            }
+            return device;
+        }).count();
+    }
+
+    private String getSateFromRedis(Integer mpId, String mac) {
+
+        Map<String, String> stateMap = getStateMapFromRedis(mpId, mac);
+        String state = null;
+        if (stateMap != null) {
+            state = stateMap.get("state");
+        }
+        state = state == null ? Constants.DEVICE_STATE_OFFLINE : state;
+        return state;
+    }
+
+    public Map<String, String> getStateMapFromRedis(Integer mpId, String mac) {
+        StringBuilder key = new StringBuilder();
+        //������key
+        key.append("state_").append(mpId).append("_").append(mac);
+        return redisUtils.get(key.toString(), new TypeReference<Map<String, String>>() {
+        });
+    }
+
+    private Device getDeviceWithOrgIdsByMac(String mac) {
+        String key = "device_" + mac;
+        Device device = redisUtils.get(key, Device.class);
+        if (device == null) {
+            device = deviceMapper.selectWithOrgIdsByMac(mac);
+            if (device != null) {
+                redisUtils.set(key, device);
+            }
+        }
+        return device;
+    }
+
+    /**
+     * ������������������������������
+     * ������ redis ���������������,���������������������������������������������task������
+     *
+     * @param mac
+     */
+    private void refreshDeviceInRedis(String mac) {
+        if (!StringUtils.isBlank(mac)) {
+            String key = getDeviceKey(mac);
+            redisUtils.remove(key);
+        } else {
+            log.warn("param mac is null in method [refreshDeviceInRedis]");
+        }
+    }
+
+    @Override
+    public int countByExample(PageBean pageBean) {
+        Example example = ExampleUtil.generateExample(ENTITY_CLASS, pageBean);
+        TkMybatisUtils.addDeletesToExample(example);
         return deviceMapper.selectCountByExample(example);
-	}
+    }
 
-	/**
-	 * ������������������������
-	 * @param example
-	 */
-	private void addDeletesToExample(Example example){
-		List<Example.Criteria> criteriaList = example.getOredCriteria();
-		if(criteriaList!=null&&criteriaList.size()>0){
-			for(Example.Criteria cri : criteriaList){
-				cri.andNotEqualTo("isDelete", Constants.IS_DELETE_TRUE);
-			}
-		}else {
-			example.or().andNotEqualTo("isDelete",Constants.IS_DELETE_TRUE);
-		}
-	}
-	@Override
-	public PageBean 	queryByPageBean(PageBean pageBean) {
-		Example example = ExampleUtil.generateExample(ENTITY_CLASS,pageBean);
+    @Override
+    public PageBean queryByPageBean(PageBean pageBean) {
+        Example example = ExampleUtil.generateExample(ENTITY_CLASS, pageBean);
 //		addDeletesToExample(example);
-		if(pageBean.getPageSize()>0){
-			PageHelper.startPage(pageBean.getPageIndex(),pageBean.getPageSize());
-		}
-		List<Device> deviceList = deviceMapper.selectWithRelationData(example);
-		return new PageBean(deviceList);
-	}
+        if (pageBean.getPageSize() > 0) {
+            PageHelper.startPage(pageBean.getPageIndex(), pageBean.getPageSize());
+        }
+        List<Device> deviceList = deviceMapper.selectWithRelationData(example);
+        return new PageBean(deviceList);
+    }
 
-	@Override
-	public void deleteByIds(Integer[] ids) {
-		Device device = new Device();
-		device.setIsDelete(Constants.IS_DELETE_TRUE);
-		if(ids!=null&&ids.length>0){
-			Example example = new Example(ENTITY_CLASS);
-			example.or().andIn("id", Arrays.asList(ids));
-			if(ids.length==1){
-				device.setId(ids[0]);
-				deviceMapper.updateByPrimaryKeySelective(device);
-			}else{
-				deviceMapper.updateByExampleSelective(device,example);
-			}
-			List<Device> deviceList = deviceMapper.selectByExample(example);
-			List<String> adjustAndDeviceKeys = deviceList.stream().collect(
-					ArrayList<String>::new,
-					(list,dev) -> {
-						if(!StringUtils.isBlank(dev.getMac())){
-							list.add("device_"+dev.getMac());
-							list.add("adjust_"+dev.getMac());
-						}
-					},
-					(oList,nList)-> {
-						oList.addAll(nList);
-					}
-			);
-			redisUtils.remove(adjustAndDeviceKeys.toArray(new String [adjustAndDeviceKeys.size()]));
-		}
-	}
+    @Override
+    public void deleteByIds(Integer[] ids) {
+        Device device = new Device();
+        device.setIsDelete(Constants.IS_DELETE_TRUE);
+        if (ids != null && ids.length > 0) {
+            Example example = new Example(ENTITY_CLASS);
+            example.or().andIn("id", Arrays.asList(ids));
+            if (ids.length == 1) {
+                device.setId(ids[0]);
+                deviceMapper.updateByPrimaryKeySelective(device);
+            } else {
+                deviceMapper.updateByExampleSelective(device, example);
+            }
+            List<Device> deviceList = deviceMapper.selectByExample(example);
+            List<String> adjustAndDeviceKeys = deviceList.stream().collect(
+                    ArrayList<String>::new,
+                    (list, dev) -> {
+                        if (!StringUtils.isBlank(dev.getMac())) {
+                            list.add("device_" + dev.getMac());
+                            list.add("adjust_" + dev.getMac());
+                        }
+                    },
+                    (oList, nList) -> {
+                        oList.addAll(nList);
+                    }
+            );
+            redisUtils.remove(adjustAndDeviceKeys.toArray(new String[adjustAndDeviceKeys.size()]));
+        }
+    }
 
-	@Override
-	@Transactional
-	public void addOrModify(Device device){
-		try{
-			//mac ���������
-			if(!StringUtils.isBlank(device.getMac())){
-				device.setMac(device.getMac().toLowerCase());
-			}
-			if(device.getId()!=null){
-				deviceMapper.updateByPrimaryKeySelective(device);
-			}else{
-				Device deviceQuery = new Device();
-				deviceQuery.setMac(device.getMac());
-				Device deviceResult = deviceMapper.selectOne(deviceQuery);
-				if(deviceResult !=null){
-					device.setId(deviceResult.getId());
-					deviceMapper.updateByPrimaryKeySelective(device);
-				}else {
-					device.setState(Constants.DEVICE_STATE_OFFLINE);
-					device.setIsDelete(Constants.IS_DELETE_FALSE);
-					deviceMapper.insertSelective(device);
-				}
-			}
-			//������redis���������������
-			refreshDeviceInRedis(device.getMac());
-		}
-		catch (Exception ex){
-			throw  ex;
-		}
-	}
-	@Override
-	public List<Map> countByTimes(Date start,Date end,String format){
-		if(start==null||end==null||StringUtils.isBlank(format)){
-			log.error("some  params is null");
-			throw new BusinessException("some  params is null");
-		}
-		return  deviceMapper.countByTimes(start, end, format);
-	}
-	
-	@Override
-	public List<Device> getDevicesByMonitorPointId(Integer monitorPointId) {
-		Device device = new Device();
-		device.setMonitorPointId(monitorPointId);
-		device.setIsDelete(Constants.IS_DELETE_FALSE);
-		List<Device> devices = deviceMapper.select(device);
-		for (Device device2 : devices) {
-			DeviceProperty deviceProperty = devicePropertyMapper.selectByPrimaryKey(device2.getId());
-			device2.setDeviceProperty(deviceProperty);
-		}
-		return devices;
-	}
+    @Override
+    @Transactional
+    public void addOrModify(Device device) {
+        try {
+            //mac ���������
+            if (!StringUtils.isBlank(device.getMac())) {
+                device.setMac(device.getMac().toLowerCase());
+            }
+            if (device.getId() != null) {
+                deviceMapper.updateByPrimaryKeySelective(device);
+            } else {
+                Device deviceQuery = new Device();
+                deviceQuery.setMac(device.getMac());
+                Device deviceResult = deviceMapper.selectOne(deviceQuery);
+                if (deviceResult != null) {
+                    device.setId(deviceResult.getId());
+                    deviceMapper.updateByPrimaryKeySelective(device);
+                } else {
+                    device.setState(Constants.DEVICE_STATE_OFFLINE);
+                    device.setIsDelete(Constants.IS_DELETE_FALSE);
+                    deviceMapper.insertSelective(device);
+                }
+            }
+            //������redis���������������
+            refreshDeviceInRedis(device.getMac());
+        } catch (Exception ex) {
+            throw ex;
+        }
+    }
 
-	/**
-	 *  ������map{mac������state���}
-	 * @param macList
-	 * @return
-	 */
-	@Override
-	public List<Map<String,String>> queryDevicesState(List<String> macList,Boolean withData) {
-		List<Map<String,String>> list = macList.stream().map(mac->{
-			Map<String,String> resultMap = new HashMap<>();
-			if(!StringUtils.isBlank(mac)){
-				mac = mac.toLowerCase();
-				Device device = getDeviceWithOrgIdsByMac(mac);
-				Map<String,String> stateMap = getStateMapFromRedis(device.getMonitorPointId(),mac);
-				if(!MapUtils.isEmpty(stateMap)){
-					resultMap.putAll(stateMap);
-				}else{
-					resultMap.put("state",Constants.DEVICE_STATE_OFFLINE);
-					resultMap.put("mac",mac);
-				}
-				//������data
-				if(BooleanUtils.isTrue(withData)){
-					String dataKey = "data_"+mac;
-					Map<String,String> dataMap = redisUtils.get(dataKey,new TypeReference<Map<String,String>>(){});
-					if(!MapUtils.isEmpty(dataMap)){
-						resultMap.putAll(dataMap);
-					}
-				}
-			}
-			return  resultMap;
-		}).collect(Collectors.toList());
-		return list;
-	}
+    @Override
+    public List<Map> countByTimes(Date start, Date end, String format) {
+        if (start == null || end == null || StringUtils.isBlank(format)) {
+            log.error("some  params is null");
+            throw new BusinessException("some  params is null");
+        }
+        return deviceMapper.countByTimes(start, end, format);
+    }
 
-	@Override
-	public Device queryById(Integer id) {
-		return deviceMapper.selectByPrimaryKey(id);
-	}
+    @Override
+    public List<Device> getDevicesByMonitorPointId(Integer monitorPointId) {
+        Device device = new Device();
+        device.setMonitorPointId(monitorPointId);
+        device.setIsDelete(Constants.IS_DELETE_FALSE);
+        List<Device> devices = deviceMapper.select(device);
+        for (Device device2 : devices) {
+            DeviceProperty deviceProperty = devicePropertyMapper.selectByPrimaryKey(device2.getId());
+            device2.setDeviceProperty(deviceProperty);
+        }
+        return devices;
+    }
 
-	@Override
-	public List<Device> getDevicesByProfessionId(Map<String, Object> parameters) {
-		
-		return deviceMapper.getDevicesByProfession(parameters);
-	}
+    /**
+     * ������map{mac������state���}
+     *
+     * @param macList
+     * @return
+     */
+    @Override
+    public List<Map<String, String>> queryDevicesState(List<String> macList, Boolean withData) {
+        List<Map<String, String>> list = macList.stream().map(mac -> {
+            Map<String, String> resultMap = new HashMap<>();
+            if (!StringUtils.isBlank(mac)) {
+                mac = mac.toLowerCase();
+                Device device = getDeviceWithOrgIdsByMac(mac);
+                Map<String, String> stateMap = getStateMapFromRedis(device.getMonitorPointId(), mac);
+                if (!MapUtils.isEmpty(stateMap)) {
+                    resultMap.putAll(stateMap);
+                } else {
+                    resultMap.put("state", Constants.DEVICE_STATE_OFFLINE);
+                    resultMap.put("mac", mac);
+                }
+                //������data
+                if (BooleanUtils.isTrue(withData)) {
+                    String dataKey = "data_" + mac;
+                    Map<String, String> dataMap = redisUtils.get(dataKey, new TypeReference<Map<String, String>>() {
+                    });
+                    if (!MapUtils.isEmpty(dataMap)) {
+                        resultMap.putAll(dataMap);
+                    }
+                }
+            }
+            return resultMap;
+        }).collect(Collectors.toList());
+        return list;
+    }
 
-	@Override
-	public List<Device> getDevicesByOrganizationId(Map<String, Object> parameters) {
-		ValidateUtil.notNull(parameters.get("organizationId"), "param.is.null");
-		return deviceMapper.getDevicesByOrganizationId(parameters);
-	}
-	@Override
-    public Map<String,Long> queryDeviceStateSummary(@NotNull Integer orgId){
-	    Map<String,Object> params = new HashMap<>();
-	    if(!dictionaryDataMapper.isSupperOrgId(orgId)){
-			List<Integer> orgIds = organizationMapper.selectLowerOrgIds(orgId);
-			params.put("orgIds",orgIds);
-		}
-		List<Map<String, Object>> list = deviceMapper.getDeviceStatesByAccount(params);
-		Long all = 0L, normal = 0L, abnormal = 0L, stop = 0L;
-		for (Map<String, Object> map : list) {
-			Long count = (Long) map.get("count");
-			all += count;
-			switch (Integer.valueOf((String) map.get("state"))) {
-				case 0:
-					normal = count;
-					break;
-				case 4:
-					stop = count;
-					break;
-				default:
-					abnormal += count;
-			}
-		}
-		Map<String,Long> result = new HashMap<>();
-		result.put("all", all);
-		result.put("normal", normal);
-		result.put("abnormal", abnormal);
-		result.put("stop", stop);
-		return result;
-	}
+    @Override
+    public Device queryById(Integer id) {
+        return deviceMapper.selectByPrimaryKey(id);
+    }
 
-	@Resource
-	private DevicePropertyMapper devicePropertyMapper;
-	
-	@Override
-	@Transactional
-	public void saveOrUpdate(Device device, DeviceProperty deviceProperty) {
-		device.setMac(device.getMac().toLowerCase());
-		if (ObjectUtils.isEmpty(device.getId())) {
-			device.setState(Constants.DEVICE_STATE_OFFLINE);
-			device.setIsDelete(Constants.IS_DELETE_FALSE);
-			deviceMapper.insertSelective(device);
-			deviceProperty.setId(device.getId());
-		} else {
-			deviceMapper.updateByPrimaryKeySelective(device);
-			devicePropertyMapper.deleteByPrimaryKey(deviceProperty);
-		}
-		devicePropertyMapper.insertSelective(deviceProperty);
-		refreshDeviceInRedis(device.getMac());
+    @Override
+    public List<Device> getDevicesByProfessionId(Map<String, Object> parameters) {
 
-	}
-	
-	@Override
-	public PageBean getDeviceList(PageBean pageBean) {
-		Example example = ExampleUtil.generateExample(ENTITY_CLASS,pageBean);
-		if(pageBean.getPageSize()>0){
-			PageHelper.startPage(pageBean.getPageIndex(),pageBean.getPageSize());
-		}
-		List<Device> deviceList = deviceMapper.getDeviceList(example);
-		return new PageBean(deviceList);
-	}
+        return deviceMapper.getDevicesByProfession(parameters);
+    }
 
-	@Override
-	public void offLinToMaintenance(Map<String, Object> parameters) {
-		ValidateUtil.notNull(parameters.get("id"), "param.is.null");
-		ValidateUtil.notNull(parameters.get("old_state"), "param.is.null");
-		ValidateUtil.notNull(parameters.get("new_state"), "param.is.null");
-		int count = 0;
-		if (Constants.DEVICE_STATE_OFFLINE.equals(parameters.get("old_state")) && Constants.DEVICE_STATE_MAINTENANCE.equals(parameters.get("new_state"))) {
-			Device device = new Device();
-			Example example = new Example(ENTITY_CLASS);
-			example.and().andEqualTo("id", new Integer(parameters.get("id").toString())).andEqualTo("state", Constants.DEVICE_STATE_OFFLINE);
-			device.setState(Constants.DEVICE_STATE_MAINTENANCE);
-			count = deviceMapper.updateByExampleSelective(device, example);
-		} 
-		if (count == 0) {
-			throw new BusinessException("������������������");
-		}
-	}
+    @Override
+    public List<Device> getDevicesByOrganizationId(Map<String, Object> parameters) {
+        ValidateUtil.notNull(parameters.get("organizationId"), "param.is.null");
+        return deviceMapper.getDevicesByOrganizationId(parameters);
+    }
 
-	@Override
-	public void saveOrUpdate4Mobile(Device device, DeviceProperty deviceProperty) {
-		device.setMac(device.getMac().toLowerCase());
-		Device selectDevice = new Device();
-		selectDevice.setMac(device.getMac());
-		selectDevice = deviceMapper.selectOne(selectDevice);
-		if (ObjectUtils.isEmpty(selectDevice)) {
-			device.setState(Constants.DEVICE_STATE_OFFLINE);
-			device.setIsDelete(Constants.IS_DELETE_FALSE);
-			deviceMapper.insertSelective(device);
-			deviceProperty.setId(device.getId());
-			devicePropertyMapper.insertSelective(deviceProperty);
-		} else {
-			device.setId(selectDevice.getId());
-			deviceMapper.updateByPrimaryKeySelective(device);
-			deviceProperty.setId(selectDevice.getId());
-			devicePropertyMapper.selectByPrimaryKey(selectDevice.getId());
-			if (ObjectUtils.isEmpty(devicePropertyMapper.selectByPrimaryKey(deviceProperty.getId()))) {
-				devicePropertyMapper.insertSelective(deviceProperty);
-			} else {
-				devicePropertyMapper.updateByPrimaryKeySelective(deviceProperty);
-			}
-			
-		}
-		refreshDeviceInRedis(device.getMac());
+    @Override
+    public Map<String, Long> queryDeviceStateSummary(@NotNull Integer orgId) {
+        Map<String, Object> params = new HashMap<>();
+        if (!dictionaryDataMapper.isSupperOrgId(orgId)) {
+            List<Integer> orgIds = organizationMapper.selectLowerOrgIds(orgId);
+            params.put("orgIds", orgIds);
+        }
+        List<Map<String, Object>> list = deviceMapper.getDeviceStatesByAccount(params);
+        Long all = 0L, normal = 0L, abnormal = 0L, stop = 0L;
+        for (Map<String, Object> map : list) {
+            Long count = (Long) map.get("count");
+            all += count;
+            switch (Integer.valueOf((String) map.get("state"))) {
+                case 0:
+                    normal = count;
+                    break;
+                case 4:
+                    stop = count;
+                    break;
+                default:
+                    abnormal += count;
+            }
+        }
+        Map<String, Long> result = new HashMap<>();
+        result.put("all", all);
+        result.put("normal", normal);
+        result.put("abnormal", abnormal);
+        result.put("stop", stop);
+        return result;
+    }
 
-		
-	}
+    @Resource
+    private DevicePropertyMapper devicePropertyMapper;
 
-	@Override
-	public String getLimitDataByDevice(Map<String, Object> parameters) {
-		// TODO Auto-generated method stub
-		return deviceMapper.getLimitDataByDevice(parameters);
-	}
+    @Override
+    @Transactional
+    public void saveOrUpdate(Device device, DeviceProperty deviceProperty) {
+        device.setMac(device.getMac().toLowerCase());
+        if (ObjectUtils.isEmpty(device.getId())) {
+            device.setState(Constants.DEVICE_STATE_OFFLINE);
+            device.setIsDelete(Constants.IS_DELETE_FALSE);
+            deviceMapper.insertSelective(device);
+            deviceProperty.setId(device.getId());
+        } else {
+            deviceMapper.updateByPrimaryKeySelective(device);
+            devicePropertyMapper.deleteByPrimaryKey(deviceProperty);
+        }
+        devicePropertyMapper.insertSelective(deviceProperty);
+        refreshDeviceInRedis(device.getMac());
 
-	//������������������������������mac���������������������������������������������
-	@Override
-	public Device getDeviceByLongitudeAsc(String mac) {
-		Example example = new Example(Device.class);
-		example.setOrderByClause("longitude ASC");
-		List<Device> deviceList=deviceMapper.selectByExample(example);
-		for(int i=0;i<deviceList.size();i++){
-			if(mac.equals(deviceList.get(i).getMac())){
-				Device deviceSecond=deviceList.get(i+1);
-				return deviceSecond;
-			}
-		}
-		return null;
-	}
+    }
+
+    @Override
+    public PageBean getDeviceList(PageBean pageBean) {
+        Example example = ExampleUtil.generateExample(ENTITY_CLASS, pageBean);
+        if (pageBean.getPageSize() > 0) {
+            PageHelper.startPage(pageBean.getPageIndex(), pageBean.getPageSize());
+        }
+        List<Device> deviceList = deviceMapper.getDeviceList(example);
+        return new PageBean(deviceList);
+    }
+
+    @Override
+    public void offLinToMaintenance(Map<String, Object> parameters) {
+        ValidateUtil.notNull(parameters.get("id"), "param.is.null");
+        ValidateUtil.notNull(parameters.get("old_state"), "param.is.null");
+        ValidateUtil.notNull(parameters.get("new_state"), "param.is.null");
+        int count = 0;
+        if (Constants.DEVICE_STATE_OFFLINE.equals(parameters.get("old_state")) && Constants.DEVICE_STATE_MAINTENANCE.equals(parameters.get("new_state"))) {
+            Device device = new Device();
+            Example example = new Example(ENTITY_CLASS);
+            example.and().andEqualTo("id", new Integer(parameters.get("id").toString())).andEqualTo("state", Constants.DEVICE_STATE_OFFLINE);
+            device.setState(Constants.DEVICE_STATE_MAINTENANCE);
+            count = deviceMapper.updateByExampleSelective(device, example);
+        }
+        if (count == 0) {
+            throw new BusinessException("������������������");
+        }
+    }
+
+    @Override
+    public void saveOrUpdate4Mobile(Device device, DeviceProperty deviceProperty) {
+        device.setMac(device.getMac().toLowerCase());
+        Device selectDevice = new Device();
+        selectDevice.setMac(device.getMac());
+        selectDevice = deviceMapper.selectOne(selectDevice);
+        if (ObjectUtils.isEmpty(selectDevice)) {
+            device.setState(Constants.DEVICE_STATE_OFFLINE);
+            device.setIsDelete(Constants.IS_DELETE_FALSE);
+            deviceMapper.insertSelective(device);
+            deviceProperty.setId(device.getId());
+            devicePropertyMapper.insertSelective(deviceProperty);
+        } else {
+            device.setId(selectDevice.getId());
+            deviceMapper.updateByPrimaryKeySelective(device);
+            deviceProperty.setId(selectDevice.getId());
+            devicePropertyMapper.selectByPrimaryKey(selectDevice.getId());
+            if (ObjectUtils.isEmpty(devicePropertyMapper.selectByPrimaryKey(deviceProperty.getId()))) {
+                devicePropertyMapper.insertSelective(deviceProperty);
+            } else {
+                devicePropertyMapper.updateByPrimaryKeySelective(deviceProperty);
+            }
+
+        }
+        refreshDeviceInRedis(device.getMac());
+
+
+    }
+
+    @Override
+    public String getLimitDataByDevice(Map<String, Object> parameters) {
+        // TODO Auto-generated method stub
+        return deviceMapper.getLimitDataByDevice(parameters);
+    }
+
+    //������������������������������mac���������������������������������������������
+    @Override
+    public Device getDeviceByLongitudeAsc(String mac) {
+        Example example = new Example(Device.class);
+        example.setOrderByClause("longitude ASC");
+        List<Device> deviceList = deviceMapper.selectByExample(example);
+        for (int i = 0; i < deviceList.size(); i++) {
+            if (mac.equals(deviceList.get(i).getMac())) {
+                Device deviceSecond = deviceList.get(i + 1);
+                return deviceSecond;
+            }
+        }
+        return null;
+    }
 }
diff --git a/src/main/java/com/moral/service/impl/MenuServiceImpl.java b/src/main/java/com/moral/service/impl/MenuServiceImpl.java
new file mode 100644
index 0000000..507de82
--- /dev/null
+++ b/src/main/java/com/moral/service/impl/MenuServiceImpl.java
@@ -0,0 +1,139 @@
+package com.moral.service.impl;
+
+import java.util.Arrays;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.annotation.Resource;
+
+import org.springframework.stereotype.Service;
+
+import com.github.pagehelper.PageHelper;
+import com.moral.common.bean.Constants;
+import com.moral.common.bean.PageBean;
+import com.moral.common.util.ExampleUtil;
+import com.moral.entity.Menu;
+import com.moral.mapper.MenuMapper;
+import com.moral.service.MenuService;
+import com.moral.util.TkMybatisUtils;
+
+import tk.mybatis.mapper.entity.Example;
+
+@Service
+public class MenuServiceImpl implements MenuService {
+
+    private static Class ENTITY_CLASS = Menu.class;
+
+    @Resource
+    private MenuMapper menuMapper;
+
+    @Override
+    public void addOrModify(Menu menu) {
+        try {
+            menu.setUpdateTime(new Date());
+            menu.setUpdateUser(menu.getUpdateUser());
+            if (menu.getId() != null) {
+                menuMapper.updateByPrimaryKeySelective(menu);
+            } else {
+                Menu menuQuery = new Menu();
+                menuQuery.setMenuCode(menu.getMenuCode());
+                menuQuery.setIsDelete(Constants.IS_DELETE_FALSE);
+                Menu menuResult = menuMapper.selectOne(menuQuery);
+                if (menuResult != null) {
+                    menu.setId(menuResult.getId());
+                    menuMapper.updateByPrimaryKeySelective(menu);
+                } else {
+                    menu.setIsDelete(Constants.IS_DELETE_FALSE);
+                    menu.setCreateTime(new Date());
+                    menu.setCreateUser(menu.getCreateUser());
+                    menuMapper.insertSelective(menu);
+                }
+            }
+        } catch (Exception ex) {
+            throw ex;
+        }
+    }
+
+    @Override
+    public PageBean queryByPageBean(PageBean pageBean) {
+        Example example = ExampleUtil.generateExample(ENTITY_CLASS, pageBean);
+        List<Example.Criteria> criteriaList = example.getOredCriteria();
+        if (criteriaList != null && criteriaList.size() > 0) {
+            for (Example.Criteria cri : criteriaList) {
+                cri.andNotEqualTo("isDelete", Constants.IS_DELETE_TRUE);
+            }
+        } else {
+            example.or().andNotEqualTo("isDelete", Constants.IS_DELETE_TRUE);
+        }
+        if (example.getOrderByClause() == null || example.getOrderByClause().isEmpty()) {
+            example.setOrderByClause("menu_name asc");
+        }
+        List<Menu> menuList = menuMapper.selectWithMenuNameByExample(example);
+        Iterator<Menu> iterator = menuList.iterator();
+        while (iterator.hasNext()) {
+            Menu menu = iterator.next();
+            if (menu.getMenuParentId() == null) {
+                iterator.remove();
+            }
+        }
+        return new PageBean(menuList);
+    }
+
+    @Override
+    public PageBean queryByAllPageBean(PageBean pageBean) {
+        Example example = ExampleUtil.generateExample(ENTITY_CLASS, pageBean);
+        List<Example.Criteria> criteriaList = example.getOredCriteria();
+        if (criteriaList != null && criteriaList.size() > 0) {
+            for (Example.Criteria cri : criteriaList) {
+                cri.andNotEqualTo("isDelete", Constants.IS_DELETE_TRUE);
+            }
+        } else {
+            example.or().andNotEqualTo("isDelete", Constants.IS_DELETE_TRUE);
+        }
+        if (example.getOrderByClause() == null || example.getOrderByClause().isEmpty()) {
+            example.setOrderByClause("menu_name asc");
+        }
+        List<Menu> menuList = menuMapper.selectWithMenuNameByExample(example);
+        Iterator<Menu> iterator = menuList.iterator();
+        return new PageBean(menuList);
+    }
+
+    @Override
+    public int countByExample(PageBean pageBean) {
+        Example example = ExampleUtil.generateExample(ENTITY_CLASS, pageBean);
+        TkMybatisUtils.addDeletesToExample(example);
+        return menuMapper.selectCountByExample(example);
+    }
+
+    @Override
+    public PageBean getMenuList(PageBean pageBean) {
+        Example example = ExampleUtil.generateExample(ENTITY_CLASS, pageBean);
+        if (pageBean.getPageSize() > 0) {
+            PageHelper.startPage(pageBean.getPageIndex(), pageBean.getPageSize());
+        }
+        List<Menu> menuList = menuMapper.getMenuList(example);
+        return new PageBean(menuList);
+    }
+
+    @Override
+    public List<Menu> getMenuParentList(String menuName) {
+        List<Menu> menuParentList = menuMapper.getParentMenuList(menuName);
+        return menuParentList;
+    }
+
+    @Override
+    public void deleteByIds(Integer[] ids) {
+        Menu menu = new Menu();
+        menu.setIsDelete(Constants.IS_DELETE_TRUE);
+        Example example = new Example(ENTITY_CLASS);
+        example.or().andIn("id", Arrays.asList(ids));
+        menuMapper.updateByExampleSelective(menu, example);
+    }
+
+    @Override
+    public List<Menu> getMenuListByName(String menuName) {
+        List<Menu> menuList = menuMapper.getMenuListByName(menuName);
+        return menuList;
+    }
+}
diff --git a/src/main/java/com/moral/service/impl/RoleMenuServiceImpl.java b/src/main/java/com/moral/service/impl/RoleMenuServiceImpl.java
new file mode 100644
index 0000000..5d68eb4
--- /dev/null
+++ b/src/main/java/com/moral/service/impl/RoleMenuServiceImpl.java
@@ -0,0 +1,76 @@
+package com.moral.service.impl;
+
+import java.util.Arrays;
+import java.util.List;
+
+import javax.annotation.Resource;
+
+import org.springframework.stereotype.Service;
+
+import com.github.pagehelper.PageHelper;
+import com.moral.common.bean.PageBean;
+import com.moral.common.util.ExampleUtil;
+import com.moral.entity.RoleMenu;
+import com.moral.mapper.RoleMenuMapper;
+import com.moral.service.RoleMenuService;
+
+import tk.mybatis.mapper.entity.Example;
+
+@Service
+public class RoleMenuServiceImpl implements RoleMenuService {
+
+    private static Class ENTITY_CLASS = RoleMenu.class;
+
+    @Resource
+    private RoleMenuMapper roleMenuMapper;
+
+    @Override
+    public void addOrModify(RoleMenu roleMenu) {
+        try {
+            if (roleMenu.getId() != null) {
+                roleMenuMapper.updateByPrimaryKey(roleMenu);
+            } else {
+                RoleMenu roleMenuQuery = new RoleMenu();
+                roleMenuQuery.setRoleId(roleMenu.getRoleId());
+                roleMenuQuery.setMenuId(roleMenu.getMenuId());
+                RoleMenu roleMenuResult = roleMenuMapper.selectOne(roleMenuQuery);
+                if (roleMenuResult == null) {
+                    roleMenuMapper.insertSelective(roleMenu);
+                }
+            }
+        } catch (Exception ex) {
+            throw ex;
+        }
+    }
+
+    @Override
+    public int countByExample(PageBean pageBean) {
+        Example example = ExampleUtil.generateExample(ENTITY_CLASS, pageBean);
+        return roleMenuMapper.selectCountByExample(example);
+    }
+
+    @Override
+    public PageBean getRoleMenuList(PageBean pageBean) {
+        Example example = ExampleUtil.generateExample(ENTITY_CLASS, pageBean);
+        if (pageBean.getPageSize() > 0) {
+            PageHelper.startPage(pageBean.getPageIndex(), pageBean.getPageSize());
+        }
+        List<RoleMenu> roleMenuList = roleMenuMapper.getRoleMenuList(example);
+        return new PageBean(roleMenuList);
+    }
+
+    @Override
+    public void deleteByIds(Integer... ids) {
+        if (ids != null && ids.length > 0) {
+            if (ids.length == 1) {
+                roleMenuMapper.deleteByPrimaryKeyOwn(ids[0]);
+            } else {
+                Example example = new Example(ENTITY_CLASS);
+                example.or().andIn("id", Arrays.asList(ids));
+                roleMenuMapper.deleteByExample(example);
+            }
+
+        }
+    }
+
+}
diff --git a/src/main/java/com/moral/service/impl/RoleServiceImpl.java b/src/main/java/com/moral/service/impl/RoleServiceImpl.java
new file mode 100644
index 0000000..e1879f3
--- /dev/null
+++ b/src/main/java/com/moral/service/impl/RoleServiceImpl.java
@@ -0,0 +1,86 @@
+package com.moral.service.impl;
+
+import java.util.Date;
+import java.util.List;
+
+import javax.annotation.Resource;
+
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.moral.common.bean.Constants;
+import com.moral.common.bean.PageBean;
+import com.moral.common.util.ExampleUtil;
+import com.moral.common.util.MyBatisBaseMapUtil;
+import com.moral.entity.Role;
+import com.moral.mapper.RoleMapper;
+import com.moral.service.RoleService;
+import com.moral.util.TkMybatisUtils;
+
+import tk.mybatis.mapper.entity.Example;
+
+@Service
+public class RoleServiceImpl implements RoleService {
+
+    private static Class ENTITY_CLASS = Role.class;
+
+    @Resource
+    RoleMapper roleMapper;
+
+    @Override
+    public PageBean<Role> queryByPageBean(PageBean pageBean) {
+        return MyBatisBaseMapUtil.queryPage(roleMapper, pageBean, ENTITY_CLASS);
+    }
+
+    @Override
+    @Transactional
+    public void addOrModify(Role role) {
+        try {
+            role.setUpdateTime(new Date());
+            role.setUpdateUser(role.getUpdateUser());
+            if (role.getId() != null) {
+                roleMapper.updateByPrimaryKeySelective(role);
+            } else {
+                Role roleQuery = new Role();
+                roleQuery.setRoleCode(role.getRoleCode());
+                roleQuery.setIsDelete(Constants.IS_DELETE_FALSE);
+                Role roleResult = roleMapper.selectOne(roleQuery);
+                if (roleResult != null) {
+                    role.setId(roleResult.getId());
+                    roleMapper.updateByPrimaryKeySelective(role);
+                } else {
+                    role.setIsDelete(Constants.IS_DELETE_FALSE);
+                    role.setCreateTime(new Date());
+                    role.setCreateUser(role.getCreateUser());
+                    roleMapper.insertSelective(role);
+                }
+            }
+        } catch (Exception ex) {
+            throw ex;
+        }
+    }
+
+    @Override
+    @Transactional
+    public int deleteByIds(List<Integer> ids) {
+        Role role = new Role();
+        role.setIsDelete(Constants.IS_DELETE_TRUE);
+        Example example = new Example(ENTITY_CLASS);
+        example.or().andIn("id", ids);
+        return roleMapper.updateByExampleSelective(role, example);
+    }
+
+    @Override
+    public int countByExample(PageBean pageBean) {
+        Example example = ExampleUtil.generateExample(ENTITY_CLASS, pageBean);
+        TkMybatisUtils.addDeletesToExample(example);
+        return roleMapper.selectCountByExample(example);
+    }
+
+    @Override
+    public List<Role> getRoleList(String roleName) {
+        List<Role> roleList = roleMapper.getRoleList(roleName);
+        return roleList;
+    }
+
+}
diff --git a/src/main/java/com/moral/util/TkMybatisUtils.java b/src/main/java/com/moral/util/TkMybatisUtils.java
new file mode 100644
index 0000000..ad2b3f5
--- /dev/null
+++ b/src/main/java/com/moral/util/TkMybatisUtils.java
@@ -0,0 +1,25 @@
+package com.moral.util;
+
+import java.util.List;
+
+import com.moral.common.bean.Constants;
+
+import tk.mybatis.mapper.entity.Example;
+
+public class TkMybatisUtils {
+
+    /**
+     * ������������������������
+     * @param example
+     */
+    public static void addDeletesToExample(Example example){
+        List<Example.Criteria> criteriaList = example.getOredCriteria();
+        if(criteriaList!=null&&criteriaList.size()>0){
+            for(Example.Criteria cri : criteriaList){
+                cri.andNotEqualTo("isDelete", Constants.IS_DELETE_TRUE);
+            }
+        }else {
+            example.or().andNotEqualTo("isDelete",Constants.IS_DELETE_TRUE);
+        }
+    }
+}
diff --git a/src/main/resources/mapper/AccountMapper.xml b/src/main/resources/mapper/AccountMapper.xml
index 8a19033..c7c2903 100644
--- a/src/main/resources/mapper/AccountMapper.xml
+++ b/src/main/resources/mapper/AccountMapper.xml
@@ -45,4 +45,14 @@
 		FROM account
 		WHERE id=#{id}
 	</select>
+
+    <select id="getAccountList" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"/>
+        from account
+        where is_delete=0 and expire_time > now()
+        <if test="accountName != 'null'">
+            and account_name like concat('%',#{accountName},'%')
+        </if>
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/AccountRoleMapper.xml b/src/main/resources/mapper/AccountRoleMapper.xml
new file mode 100644
index 0000000..d7a7c32
--- /dev/null
+++ b/src/main/resources/mapper/AccountRoleMapper.xml
@@ -0,0 +1,80 @@
+<?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.mapper.AccountRoleMapper">
+
+    <resultMap id="ResultMap" type="com.moral.entity.AccountRole" >
+        <id column="id" property="id" jdbcType="INTEGER" />
+        <result column="account_id" property="accountId" jdbcType="INTEGER" />
+        <result column="role_id" property="roleId" jdbcType="INTEGER" />
+    </resultMap>
+
+    <resultMap id="BaseResultMap" type="com.moral.entity.AccountRole" extends="ResultMap">
+        <association property="account" javaType="com.moral.entity.Account">
+            <result column="account_id" jdbcType="INTEGER" property="id" />
+            <result column="account_name" jdbcType="VARCHAR" property="accountName" />
+        </association>
+        <association property="role" javaType="com.moral.entity.Role">
+            <result column="role_id" property="id" jdbcType="INTEGER" />
+            <result column="role_name" property="roleName" jdbcType="VARCHAR" />
+        </association>
+    </resultMap>
+
+    <sql id="Example_Where_Clause" >
+        <where >
+            <foreach collection="oredCriteria" item="criteria" separator="or" >
+                <if test="criteria.valid" >
+                    <trim prefix="(" suffix=")" prefixOverrides="and" >
+                        <foreach collection="criteria.criteria" item="criterion" >
+                            <choose >
+                                <when test="criterion.noValue" >
+                                    and ${criterion.condition}
+                                </when>
+                                <when test="criterion.singleValue" >
+                                    and ${criterion.condition} #{criterion.value}
+                                </when>
+                                <when test="criterion.betweenValue" >
+                                    and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                                </when>
+                                <when test="criterion.listValue" >
+                                    and ${criterion.condition}
+                                    <foreach collection="criterion.value" item="listItem" open="(" close=")" separator="," >
+                                        #{listItem}
+                                    </foreach>
+                                </when>
+                            </choose>
+                        </foreach>
+                    </trim>
+                </if>
+            </foreach>
+        </where>
+    </sql>
+
+    <select id="getAccountRoleList" resultMap="BaseResultMap">
+        select
+        ar.*,
+        a.account_name,
+        r.role_name
+        from account_role ar
+        left join account a on ar.account_id = a.id
+        left join role r on ar.role_id = r.id
+        <if test="_parameter != null">
+            <include refid="Example_Where_Clause"/>
+        </if>
+        <if test="orderByClause != null">
+            order by ${orderByClause}
+        </if>
+    </select>
+
+    <update id="updateByPrimaryKey" parameterType="com.moral.entity.AccountRole" >
+        update account_role
+        set account_id = #{accountId,jdbcType=INTEGER},
+        role_id = #{roleId,jdbcType=INTEGER}
+        where id = #{id,jdbcType=INTEGER}
+    </update>
+
+    <delete id="deleteByPrimaryKeyOwn" parameterType="java.lang.Integer" >
+        delete from account_role
+        where id = #{id,jdbcType=INTEGER}
+    </delete>
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/MenuMapper.xml b/src/main/resources/mapper/MenuMapper.xml
new file mode 100644
index 0000000..4674c35
--- /dev/null
+++ b/src/main/resources/mapper/MenuMapper.xml
@@ -0,0 +1,108 @@
+<?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.mapper.MenuMapper">
+    <resultMap id="BaseResultMap" type="com.moral.entity.Menu">
+        <id column="id" property="id" jdbcType="INTEGER"/>
+        <result column="menu_code" property="menuCode" jdbcType="VARCHAR"/>
+        <result column="menu_name" property="menuName" jdbcType="VARCHAR"/>
+        <result column="menu_icon" property="menuIcon" jdbcType="VARCHAR"/>
+        <result column="menu_url" property="menuUrl" jdbcType="VARCHAR"/>
+        <result column="menu_order" property="menuOrder" jdbcType="INTEGER"/>
+        <result column="menu_parent_id" property="menuParentId" jdbcType="INTEGER"/>
+        <result column="menu_remark" property="menuRemark" jdbcType="VARCHAR"/>
+        <result column="is_delete" property="isDelete" jdbcType="CHAR"/>
+        <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
+        <result column="create_user" property="createUser" jdbcType="VARCHAR"/>
+        <result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
+        <result column="update_user" property="updateUser" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Example_Where_Clause">
+        <where>
+            <foreach collection="oredCriteria" item="criteria" separator="or">
+                <if test="criteria.valid">
+                    <trim prefix="(" suffix=")" prefixOverrides="and">
+                        <foreach collection="criteria.criteria" item="criterion">
+                            <choose>
+                                <when test="criterion.noValue">
+                                    and ${criterion.condition}
+                                </when>
+                                <when test="criterion.singleValue">
+                                    and ${criterion.condition} #{criterion.value}
+                                </when>
+                                <when test="criterion.betweenValue">
+                                    and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                                </when>
+                                <when test="criterion.listValue">
+                                    and ${criterion.condition}
+                                    <foreach collection="criterion.value" item="listItem" open="(" close=")"
+                                             separator=",">
+                                        #{listItem}
+                                    </foreach>
+                                </when>
+                            </choose>
+                        </foreach>
+                    </trim>
+                </if>
+            </foreach>
+        </where>
+    </sql>
+
+    <select id="selectWithMenuNameByExample" parameterType="tk.mybatis.mapper.entity.Example" resultMap="BaseResultMap">
+        select
+        <if test="distinct">
+            distinct
+        </if>
+        <include refid="Base_Column_List"/>
+        from menu
+        <if test="_parameter != null">
+            <include refid="Example_Where_Clause"/>
+        </if>
+        <if test="orderByClause != null">
+            order by ${orderByClause}
+        </if>
+    </select>
+
+    <select id="getMenuList" resultMap="BaseResultMap" parameterType="tk.mybatis.mapper.entity.Example">
+        select
+        <if test="distinct">
+            distinct
+        </if>
+        <include refid="Base_Column_List"/>
+        from menu
+        <if test="_parameter != null">
+            <include refid="Example_Where_Clause"/>
+        </if>
+        <if test="orderByClause != null">
+            order by ${orderByClause}
+        </if>
+    </select>
+
+    <sql id="Base_Column_List">
+        id, menu_code, menu_name, menu_icon, menu_url, menu_order, menu_parent_id, menu_remark,
+        is_delete, create_time, create_user, update_time, update_user
+    </sql>
+
+    <select id="getParentMenuList" resultMap="BaseResultMap">
+        select
+        distinct
+        <include refid="Base_Column_List"/>
+        from menu
+        where id IN
+        (select distinct(menu_parent_Id) from menu
+        where menu_parent_Id is not null)
+        <if test="menuName != 'null'">
+            and menu_name like concat('%',#{menuName},'%')
+        </if>
+    </select>
+
+    <select id="getMenuListByName" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"/>
+        from menu
+        where is_delete=0
+        <if test="menuName != 'null'">
+            and menu_name like concat('%',#{menuName},'%')
+        </if>
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/RoleMapper.xml b/src/main/resources/mapper/RoleMapper.xml
new file mode 100644
index 0000000..a45d1c3
--- /dev/null
+++ b/src/main/resources/mapper/RoleMapper.xml
@@ -0,0 +1,115 @@
+<?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.mapper.RoleMapper">
+
+    <resultMap id="BaseResultMap" type="com.moral.entity.Role">
+        <id column="id" property="id" jdbcType="INTEGER"/>
+        <result column="role_code" property="roleCode" jdbcType="VARCHAR"/>
+        <result column="role_name" property="roleName" jdbcType="VARCHAR"/>
+        <result column="is_delete" property="isDelete" jdbcType="CHAR"/>
+        <result column="role_remark" property="roleRemark" jdbcType="VARCHAR"/>
+        <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
+        <result column="create_user" property="createUser" jdbcType="VARCHAR"/>
+        <result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
+        <result column="update_user" property="updateUser" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id, role_code, role_name, is_delete, role_remark, create_time, create_user, update_time,
+        update_user
+    </sql>
+
+    <insert id="insertSelective" parameterType="com.moral.entity.Role">
+        insert into role
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">
+                id,
+            </if>
+            <if test="roleCode != null">
+                role_code,
+            </if>
+            <if test="roleName != null">
+                role_name,
+            </if>
+            <if test="isDelete != null">
+                is_delete,
+            </if>
+            <if test="roleRemark != null">
+                role_remark,
+            </if>
+            <if test="createTime != null">
+                create_time,
+            </if>
+            <if test="createUser != null">
+                create_user,
+            </if>
+            <if test="updateTime != null">
+                update_time,
+            </if>
+            <if test="updateUser != null">
+                update_user,
+            </if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">
+                #{id,jdbcType=INTEGER},
+            </if>
+            <if test="roleCode != null">
+                #{roleCode,jdbcType=VARCHAR},
+            </if>
+            <if test="roleName != null">
+                #{roleName,jdbcType=VARCHAR},
+            </if>
+            <if test="isDelete != null">
+                #{isDelete,jdbcType=CHAR},
+            </if>
+            <if test="roleRemark != null">
+                #{roleRemark,jdbcType=VARCHAR},
+            </if>
+            <if test="createTime != null">
+                #{createTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="createUser != null">
+                #{createUser,jdbcType=VARCHAR},
+            </if>
+            <if test="updateTime != null">
+                #{updateTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="updateUser != null">
+                #{updateUser,jdbcType=VARCHAR},
+            </if>
+        </trim>
+    </insert>
+    <update id="updateByPrimaryKeySelective" parameterType="com.moral.entity.Role">
+        update role
+        <set>
+            <if test="roleName != null">
+                role_name=#{roleName,jdbcType=VARCHAR},
+            </if>
+            <if test="roleCode != null">
+                role_code=#{roleCode,jdbcType=VARCHAR},
+            </if>
+            <if test="roleRemark != null">
+                role_remark=#{roleRemark,jdbcType=VARCHAR},
+            </if>
+            <if test="updateTime != null">
+                update_time=#{updateTime,jdbcType=TIMESTAMP},
+            </if>
+            <if test="updateUser != null">
+                update_user=#{updateUser,jdbcType=VARCHAR},
+            </if>
+        </set>
+        where id = #{id,jdbcType=INTEGER}
+    </update>
+
+    <select id="getRoleList" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"/>
+        from role
+        where is_delete=0
+        <if test="roleName != 'null'">
+            and role_name like concat('%',#{roleName},'%')
+        </if>
+    </select>
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/RoleMenuMapper.xml b/src/main/resources/mapper/RoleMenuMapper.xml
new file mode 100644
index 0000000..e75534b
--- /dev/null
+++ b/src/main/resources/mapper/RoleMenuMapper.xml
@@ -0,0 +1,80 @@
+<?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.mapper.RoleMenuMapper">
+
+    <resultMap id="ResultMap" type="com.moral.entity.RoleMenu" >
+        <id column="id" property="id" jdbcType="INTEGER" />
+        <result column="role_id" property="roleId" jdbcType="INTEGER" />
+        <result column="menu_id" property="menuId" jdbcType="INTEGER" />
+    </resultMap>
+
+    <resultMap id="BaseResultMap" type="com.moral.entity.RoleMenu" extends="ResultMap">
+        <association property="role" javaType="com.moral.entity.Role">
+            <result column="role_id" property="id" jdbcType="INTEGER" />
+            <result column="role_name" property="roleName" jdbcType="VARCHAR" />
+        </association>
+        <association property="menu" javaType="com.moral.entity.Menu">
+            <result column="menu_id" property="id" jdbcType="INTEGER"/>
+            <result column="menu_name" property="menuName" jdbcType="VARCHAR"/>
+        </association>
+    </resultMap>
+
+    <sql id="Example_Where_Clause" >
+        <where >
+            <foreach collection="oredCriteria" item="criteria" separator="or" >
+                <if test="criteria.valid" >
+                    <trim prefix="(" suffix=")" prefixOverrides="and" >
+                        <foreach collection="criteria.criteria" item="criterion" >
+                            <choose >
+                                <when test="criterion.noValue" >
+                                    and ${criterion.condition}
+                                </when>
+                                <when test="criterion.singleValue" >
+                                    and ${criterion.condition} #{criterion.value}
+                                </when>
+                                <when test="criterion.betweenValue" >
+                                    and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                                </when>
+                                <when test="criterion.listValue" >
+                                    and ${criterion.condition}
+                                    <foreach collection="criterion.value" item="listItem" open="(" close=")" separator="," >
+                                        #{listItem}
+                                    </foreach>
+                                </when>
+                            </choose>
+                        </foreach>
+                    </trim>
+                </if>
+            </foreach>
+        </where>
+    </sql>
+
+    <select id="getRoleMenuList" resultMap="BaseResultMap">
+        select
+        rm.*,
+        r.role_name,
+        m.menu_name
+        from role_menu rm
+        left join role r on rm.role_id = r.id
+        left join menu m on rm.menu_id = m.id
+        <if test="_parameter != null">
+            <include refid="Example_Where_Clause"/>
+        </if>
+        <if test="orderByClause != null">
+            order by ${orderByClause}
+        </if>
+    </select>
+
+    <update id="updateByPrimaryKey" parameterType="com.moral.entity.RoleMenu" >
+        update role_menu
+        set role_id = #{roleId,jdbcType=INTEGER},
+        menu_id = #{menuId,jdbcType=INTEGER}
+        where id = #{id,jdbcType=INTEGER}
+    </update>
+
+    <delete id="deleteByPrimaryKeyOwn" parameterType="java.lang.Integer" >
+        delete from role_menu
+        where id = #{id,jdbcType=INTEGER}
+    </delete>
+
+</mapper>
\ No newline at end of file

--
Gitblit v1.8.0