Browse Source

供应商权限管理part1

Aslee 2 years ago
parent
commit
50774d0b54

+ 2 - 2
src/main/java/com/caimei/config/ApiInterceptor.java

@@ -41,8 +41,8 @@ public class ApiInterceptor implements HandlerInterceptor {
         String cacheToken = null != token ? String.valueOf(redisService.get(token)) : null;
         String cacheToken = null != token ? String.valueOf(redisService.get(token)) : null;
         if (null == cacheToken || !JwtUtil.isVerify(cacheToken)) {
         if (null == cacheToken || !JwtUtil.isVerify(cacheToken)) {
             // Token失效
             // Token失效
-            /*response.sendRedirect(zplmapi + "/unauthorized");
-            return false;*/
+            response.sendRedirect(zplmapi + "/unauthorized");
+            return false;
         }
         }
         return true;
         return true;
     }
     }

+ 34 - 0
src/main/java/com/caimei/config/ArgumentFilter.java

@@ -0,0 +1,34 @@
+package com.caimei.config;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.*;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+@Slf4j
+@Component
+public class ArgumentFilter implements Filter {
+
+    @Override
+    public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
+        HttpServletRequest httpRequest = (HttpServletRequest) request;
+        HttpServletResponse httpResponse = (HttpServletResponse) response;
+        String token = httpRequest.getHeader("token");
+        Integer userId = 123456;
+        log.info("filter获取用户Id={}", userId);
+        HttpServletRequestWrapper requestWrapper = new HttpServletRequestWrapper(httpRequest) {
+            @Override
+            public String getHeader(String name) {
+                if ("userId".equals(name)) {
+                    return userId + "";
+                }
+                return super.getHeader(name);
+            }
+        };
+        filterChain.doFilter(requestWrapper, httpResponse);
+    }
+}

+ 26 - 0
src/main/java/com/caimei/config/FilterConfig.java

@@ -0,0 +1,26 @@
+package com.caimei.config;
+
+import org.springframework.boot.web.servlet.FilterRegistrationBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import javax.annotation.Resource;
+import javax.servlet.Filter;
+
+@Configuration
+public class FilterConfig {
+
+    @Resource
+    private ArgumentFilter argumentFilter;
+
+    @Bean
+    public FilterRegistrationBean<Filter> registerAuthFilter() {
+        FilterRegistrationBean<Filter> registration = new FilterRegistrationBean<>();
+        registration.setFilter(argumentFilter);
+        registration.addUrlPatterns("/level2");
+        registration.setName("authFilter");
+        // 值越小,Filter越靠前
+        registration.setOrder(1);
+        return registration;
+    }
+}

+ 2 - 2
src/main/java/com/caimei/controller/admin/sys/SysMenuApi.java

@@ -32,11 +32,11 @@ public class SysMenuApi {
      * @param pageSize 每页大小
      * @param pageSize 每页大小
      */
      */
     @GetMapping("/list")
     @GetMapping("/list")
-    public ResponseJson<PageInfo<SysMenu>> menuList(Integer status, Integer menuType,
+    public ResponseJson<PageInfo<SysMenu>> menuList(Integer authUserId, Integer status, Integer menuType,
                                                     @RequestParam(value = "parentId", defaultValue = "0") Integer parentId,
                                                     @RequestParam(value = "parentId", defaultValue = "0") Integer parentId,
                                                     @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
                                                     @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
                                                     @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
                                                     @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
-        return sysMenuService.getMenuList(parentId, menuType, status, pageNum, pageSize);
+        return sysMenuService.getMenuList(authUserId, parentId, menuType, status, pageNum, pageSize);
     }
     }
 
 
     /**
     /**

+ 2 - 2
src/main/java/com/caimei/controller/admin/sys/SysRoleApi.java

@@ -28,9 +28,9 @@ public class SysRoleApi {
      * @param pageSize 每页大小
      * @param pageSize 每页大小
      */
      */
     @GetMapping("/list")
     @GetMapping("/list")
-    public ResponseJson<PageInfo<SysRole>> roleList(@RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+    public ResponseJson<PageInfo<SysRole>> roleList(Integer authUserId, @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
                                                     @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
                                                     @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
-        return sysRoleService.getRoleList(pageNum, pageSize);
+        return sysRoleService.getRoleList(authUserId, pageNum, pageSize);
     }
     }
 
 
     /**
     /**

+ 23 - 6
src/main/java/com/caimei/controller/admin/sys/SysUserApi.java

@@ -49,10 +49,10 @@ public class SysUserApi {
      * @param pageSize 每页大小
      * @param pageSize 每页大小
      */
      */
     @GetMapping("/list")
     @GetMapping("/list")
-    public ResponseJson<PageInfo<SysUser>> userList(String username, String linkMan,
+    public ResponseJson<PageInfo<SysUser>> userList(Integer authUserId, String username, String linkMan,
                                                     @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
                                                     @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
                                                     @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
                                                     @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
-        return sysUserService.getUserList(username, linkMan, pageNum, pageSize);
+        return sysUserService.getUserList(authUserId, username, linkMan, pageNum, pageSize);
     }
     }
 
 
     /**
     /**
@@ -78,11 +78,14 @@ public class SysUserApi {
     }
     }
 
 
     /**
     /**
-     * 添加管理员
+     * 添加管理员/供应商子用户
      */
      */
-    @PostMapping("/admin/create")
-    public ResponseJson<Void> addAdmin(@RequestBody SysUser sysUser) {
-        return sysUserService.addAdmin(sysUser);
+    @PostMapping("/create")
+    public ResponseJson<Void> createUser(@RequestBody SysUser sysUser) {
+        if (null == sysUser.getUserIdentity()) {
+            return ResponseJson.error("用户身份不能为空", null);
+        }
+        return sysUserService.createUser(sysUser);
     }
     }
 
 
     /**
     /**
@@ -95,6 +98,20 @@ public class SysUserApi {
         }
         }
         return sysUserService.deleteUser(id);
         return sysUserService.deleteUser(id);
     }
     }
+
+    /**
+     * 根据ID更新用户状态
+     */
+    @PostMapping("/status/update/{id}")
+    public ResponseJson<Void> updateUserStatus(@PathVariable("id") Integer id, @RequestBody SysUser sysUser) {
+        if (null == id || id <= 0) {
+            return ResponseJson.error("用户Id不能为空!", null);
+        }
+        if (null == sysUser || null == sysUser.getStatus()) {
+            return ResponseJson.error("用户状态不能为空!", null);
+        }
+        return sysUserService.updateUserStatus(id, sysUser.getStatus());
+    }
 /*
 /*
     *//**
     *//**
      * 用户修改资料
      * 用户修改资料

+ 23 - 4
src/main/java/com/caimei/mapper/cmMapper/SystemMapper.java

@@ -18,7 +18,7 @@ public interface SystemMapper {
     /**
     /**
      * 根据用户名称查找可登录用户
      * 根据用户名称查找可登录用户
      */
      */
-    SysUser findByUsername(String username);
+    SysUser findByUsername(@Param("username") String username, @Param("userIdentity") Integer userIdentity);
     /**
     /**
      * 根据用户Id查找可登录用户
      * 根据用户Id查找可登录用户
      */
      */
@@ -56,7 +56,7 @@ public interface SystemMapper {
     /**
     /**
      * 获取用户列表
      * 获取用户列表
      */
      */
-    List<SysUser> getUserList(String username, String linkMan);
+    List<SysUser> getUserList(Integer authUserId, String username, String linkMan);
     /**
     /**
      * 根据ID获取用户
      * 根据ID获取用户
      */
      */
@@ -76,8 +76,9 @@ public interface SystemMapper {
     List<SysRole> getRoleListByUserId(Integer userId);
     List<SysRole> getRoleListByUserId(Integer userId);
     /**
     /**
      * 获取角色列表
      * 获取角色列表
+     * @param authUserId
      */
      */
-    List<SysRole> getRoleList();
+    List<SysRole> getRoleList(Integer authUserId);
     /**
     /**
      * 根据ID获取角色
      * 根据ID获取角色
      */
      */
@@ -182,7 +183,7 @@ public interface SystemMapper {
      */
      */
     void insertPermission(SysPermission permission);
     void insertPermission(SysPermission permission);
 
 
-    void insertAdminUser(SysUser sysUser);
+    void insertUser(SysUser sysUser);
 
 
     /**
     /**
      * 根据菜单id查询会员菜单角色id
      * 根据菜单id查询会员菜单角色id
@@ -208,4 +209,22 @@ public interface SystemMapper {
     void deleteMenuRoleRelation(Integer menuId);
     void deleteMenuRoleRelation(Integer menuId);
 
 
     List<Integer> getMenuIdList(String parentId, int menuType);
     List<Integer> getMenuIdList(String parentId, int menuType);
+
+    void updateUserStatus(@Param("id") Integer id, @Param("status") Integer status);
+
+    List<SysRole> getShopRoleList(Integer authUserId);
+
+    void deleteVipRelation(Integer roleId);
+
+    /**
+     * 获取基础菜单列表
+     * @param roleId
+     * @return
+     */
+    List<SysMenu> getBaseMenuList(Integer roleId);
+
+    /**
+     * 获取供应商菜单对应的角色id
+     */
+    Integer getShopRoleIdByMenuId(Integer menuId);
 }
 }

+ 8 - 0
src/main/java/com/caimei/model/po/SysUser.java

@@ -18,6 +18,14 @@ public class SysUser {
      * 用户Id
      * 用户Id
      */
      */
     private Integer id;
     private Integer id;
+    /**
+     * 子用户对应的供应商用户id
+     */
+    private Integer parentId;
+    /**
+     * 用户身份:1管理员,2供应商,3供应商子用户
+     */
+    private Integer userIdentity;
     /**
     /**
      * 用户名
      * 用户名
      */
      */

+ 10 - 1
src/main/java/com/caimei/service/sys/SysMenuService.java

@@ -8,6 +8,7 @@ import com.caimei.model.po.SysPermission;
 import com.github.pagehelper.PageInfo;
 import com.github.pagehelper.PageInfo;
 
 
 import java.util.List;
 import java.util.List;
+import java.util.Set;
 
 
 /**
 /**
  * Description
  * Description
@@ -18,13 +19,14 @@ import java.util.List;
 public interface SysMenuService {
 public interface SysMenuService {
     /**
     /**
      * 获取菜单列表
      * 获取菜单列表
+     * @param authUserId
      * @param parentId 父级菜单Id
      * @param parentId 父级菜单Id
      * @param menuType 菜单类型:1管理员菜单,2供应商菜单
      * @param menuType 菜单类型:1管理员菜单,2供应商菜单
      * @param status   状态:0启用,1停用
      * @param status   状态:0启用,1停用
      * @param pageNum  页码
      * @param pageNum  页码
      * @param pageSize 每页大小
      * @param pageSize 每页大小
      */
      */
-    ResponseJson<PageInfo<SysMenu>> getMenuList(Integer parentId, Integer menuType, Integer status, int pageNum, int pageSize);
+    ResponseJson<PageInfo<SysMenu>> getMenuList(Integer authUserId, Integer parentId, Integer menuType, Integer status, int pageNum, int pageSize);
     /**
     /**
      * 获取所有启用的菜单列表(树状结构返回)
      * 获取所有启用的菜单列表(树状结构返回)
      */
      */
@@ -51,4 +53,11 @@ public interface SysMenuService {
     ResponseJson<Void> deleteMenu(Integer id);
     ResponseJson<Void> deleteMenu(Integer id);
 
 
     ResponseJson<Void> saveVipMenu(SysMenu menu, List<SysPermission> permissionList);
     ResponseJson<Void> saveVipMenu(SysMenu menu, List<SysPermission> permissionList);
+
+    /**
+     * 获取母菜单及子菜单所有基础菜单
+     */
+    ResponseJson<Void> getAllBaseMenuIds(SysMenu menu, Set<Integer> menuIdSet, Set<Integer> permissionIdSet);
+
+    ResponseJson<Void> getAllVipMenuIds(SysMenu menu, Set<Integer> menuIdSet, Set<Integer> permissionIdSet);
 }
 }

+ 7 - 1
src/main/java/com/caimei/service/sys/SysRoleService.java

@@ -14,10 +14,11 @@ import com.github.pagehelper.PageInfo;
 public interface SysRoleService {
 public interface SysRoleService {
     /**
     /**
      * 获取角色列表
      * 获取角色列表
+     * @param authUserId
      * @param pageNum  页码
      * @param pageNum  页码
      * @param pageSize 每页大小
      * @param pageSize 每页大小
      */
      */
-    ResponseJson<PageInfo<SysRole>> getRoleList(int pageNum, int pageSize);
+    ResponseJson<PageInfo<SysRole>> getRoleList(Integer authUserId, int pageNum, int pageSize);
     /**
     /**
      * 根据ID获取角色
      * 根据ID获取角色
      */
      */
@@ -38,4 +39,9 @@ public interface SysRoleService {
      * 角色授权菜单
      * 角色授权菜单
      */
      */
     ResponseJson<Void> setRoleMenu(Integer id, SysRole sysRole);
     ResponseJson<Void> setRoleMenu(Integer id, SysRole sysRole);
+
+    /**
+     * 保存角色与菜单id关联
+     */
+    void saveRoleMenuRelation(Integer roleId, String menuIds);
 }
 }

+ 8 - 2
src/main/java/com/caimei/service/sys/SysUserService.java

@@ -29,12 +29,13 @@ public interface SysUserService {
     /**
     /**
      * 获取用户列表
      * 获取用户列表
      *
      *
+     * @param authUserId
      * @param username 用户名
      * @param username 用户名
      * @param linkName 联系人名称
      * @param linkName 联系人名称
      * @param pageNum  页码
      * @param pageNum  页码
      * @param pageSize 每页大小
      * @param pageSize 每页大小
      */
      */
-    ResponseJson<PageInfo<SysUser>> getUserList(String username, String linkName, int pageNum, int pageSize);
+    ResponseJson<PageInfo<SysUser>> getUserList(Integer authUserId, String username, String linkName, int pageNum, int pageSize);
     /**
     /**
      * 根据ID获取用户
      * 根据ID获取用户
      */
      */
@@ -54,7 +55,7 @@ public interface SysUserService {
     /**
     /**
      * 添加管理员
      * 添加管理员
      */
      */
-    ResponseJson<Void> addAdmin(SysUser sysUser);
+    ResponseJson<Void> createUser(SysUser sysUser);
 
 
     /*    *//**
     /*    *//**
      * 用户修改资料
      * 用户修改资料
@@ -71,4 +72,9 @@ public interface SysUserService {
      * 保存用户角色关系
      * 保存用户角色关系
      */
      */
     ResponseJson<Void> saveRoleRelation(Integer userId, String roleIds);
     ResponseJson<Void> saveRoleRelation(Integer userId, String roleIds);
+
+    /**
+     * 更新用户状态
+     */
+    ResponseJson<Void> updateUserStatus(Integer id, Integer status);
 }
 }

+ 41 - 1
src/main/java/com/caimei/service/sys/impl/SysMenuServiceImpl.java

@@ -22,6 +22,7 @@ import org.springframework.util.StringUtils;
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
+import java.util.Set;
 
 
 import static com.alibaba.fastjson.JSON.parseArray;
 import static com.alibaba.fastjson.JSON.parseArray;
 
 
@@ -44,15 +45,17 @@ public class SysMenuServiceImpl implements SysMenuService {
     /**
     /**
      * 获取菜单列表
      * 获取菜单列表
      *
      *
+     * @param authUserId
      * @param parentId 父级菜单Id
      * @param parentId 父级菜单Id
      * @param status   状态:0启用,1停用
      * @param status   状态:0启用,1停用
      * @param pageNum  页码
      * @param pageNum  页码
      * @param pageSize 每页大小
      * @param pageSize 每页大小
      */
      */
     @Override
     @Override
-    public ResponseJson<PageInfo<SysMenu>> getMenuList(Integer parentId, Integer menuType, Integer status, int pageNum, int pageSize) {
+    public ResponseJson<PageInfo<SysMenu>> getMenuList(Integer authUserId, Integer parentId, Integer menuType, Integer status, int pageNum, int pageSize) {
         PageHelper.startPage(pageNum, pageSize);
         PageHelper.startPage(pageNum, pageSize);
         List<SysMenu> menus = systemMapper.getMenuList(parentId, menuType, status);
         List<SysMenu> menus = systemMapper.getMenuList(parentId, menuType, status);
+
         PageInfo<SysMenu> pageData = new PageInfo<>(menus);
         PageInfo<SysMenu> pageData = new PageInfo<>(menus);
         return ResponseJson.success(pageData);
         return ResponseJson.success(pageData);
     }
     }
@@ -264,8 +267,10 @@ public class SysMenuServiceImpl implements SysMenuService {
             vipMenuRole.setDelFlag(0);
             vipMenuRole.setDelFlag(0);
             ResponseJson<Void> result = null;
             ResponseJson<Void> result = null;
             if (null == dbVipRoleId) {
             if (null == dbVipRoleId) {
+                // 新增会员角色
                 result = sysRoleService.addRole(vipMenuRole);
                 result = sysRoleService.addRole(vipMenuRole);
             } else {
             } else {
+                // 更新会员角色
                 systemMapper.updateRole(vipMenuRole);
                 systemMapper.updateRole(vipMenuRole);
                 result = ResponseJson.success();
                 result = ResponseJson.success();
             }
             }
@@ -410,4 +415,39 @@ public class SysMenuServiceImpl implements SysMenuService {
 
 
 
 
 
 
+    /**
+     * 获取一颗菜单树下的所有菜单id和权限id
+     */
+    @Override
+    public ResponseJson<Void> getAllBaseMenuIds(SysMenu menu, Set<Integer> menuIdSet, Set<Integer> permissionIdSet) {
+        // 解除基础菜单与会员角色的关联
+        Integer menuId = menu.getId();
+        menuIdSet.add(menuId);
+        // 获取菜单下所有权限id
+        List<Integer> permissionIdList = systemMapper.getPermissionIds(menuId);
+        permissionIdSet.addAll(permissionIdList);
+        // 获取子菜单列表
+        List<SysMenu> childMenuList = systemMapper.getMenuList(menuId, 2, null);
+        // 递归获取树下所有基础子菜单id
+        childMenuList.forEach(childMenu -> getAllBaseMenuIds(childMenu, menuIdSet, permissionIdSet));
+        return ResponseJson.success();
+    }
+
+    /**
+     * 获取一颗菜单树下的所有菜单id和权限id
+     */
+    @Override
+    public ResponseJson<Void> getAllVipMenuIds(SysMenu menu, Set<Integer> menuIdSet, Set<Integer> permissionIdSet) {
+        Integer menuId = menu.getId();
+        menuIdSet.add(menuId);
+        // 获取菜单下所有权限id
+        List<Integer> permissionIdList = systemMapper.getPermissionIds(menuId);
+        permissionIdSet.addAll(permissionIdList);
+        // 获取子菜单列表
+        List<SysMenu> childMenuList = systemMapper.getMenuList(menuId, 2, null);
+        // 递归获取树下所有会员子菜单id
+        childMenuList.forEach(childMenu -> getAllVipMenuIds(childMenu, menuIdSet, permissionIdSet));
+        return ResponseJson.success();
+    }
+
 }
 }

+ 5 - 3
src/main/java/com/caimei/service/sys/impl/SysRoleServiceImpl.java

@@ -31,13 +31,14 @@ public class SysRoleServiceImpl implements SysRoleService {
     /**
     /**
      * 获取角色列表
      * 获取角色列表
      *
      *
+     * @param authUserId
      * @param pageNum  页码
      * @param pageNum  页码
      * @param pageSize 每页大小
      * @param pageSize 每页大小
      */
      */
     @Override
     @Override
-    public ResponseJson<PageInfo<SysRole>> getRoleList(int pageNum, int pageSize) {
+    public ResponseJson<PageInfo<SysRole>> getRoleList(Integer authUserId, int pageNum, int pageSize) {
         PageHelper.startPage(pageNum, pageSize);
         PageHelper.startPage(pageNum, pageSize);
-        List<SysRole> roles = systemMapper.getRoleList();
+        List<SysRole> roles = systemMapper.getRoleList(authUserId);
         PageInfo<SysRole> pageData = new PageInfo<>(roles);
         PageInfo<SysRole> pageData = new PageInfo<>(roles);
         return ResponseJson.success(pageData);
         return ResponseJson.success(pageData);
     }
     }
@@ -171,7 +172,8 @@ public class SysRoleServiceImpl implements SysRoleService {
     /**
     /**
      * 保存角色菜单关系
      * 保存角色菜单关系
      */
      */
-    private void saveRoleMenuRelation(Integer roleId, String menuIds) {
+    @Override
+    public void saveRoleMenuRelation(Integer roleId, String menuIds) {
         // 删除原有角色菜单关联
         // 删除原有角色菜单关联
         systemMapper.deleteRoleMenuRelation(roleId);
         systemMapper.deleteRoleMenuRelation(roleId);
         // 删除原有角色权限关联
         // 删除原有角色权限关联

+ 64 - 19
src/main/java/com/caimei/service/sys/impl/SysUserServiceImpl.java

@@ -8,6 +8,8 @@ import com.caimei.model.po.SysMenu;
 import com.caimei.model.po.SysRole;
 import com.caimei.model.po.SysRole;
 import com.caimei.model.po.SysUser;
 import com.caimei.model.po.SysUser;
 import com.caimei.model.vo.VipInfoVo;
 import com.caimei.model.vo.VipInfoVo;
+import com.caimei.service.sys.SysMenuService;
+import com.caimei.service.sys.SysRoleService;
 import com.caimei.service.sys.SysUserService;
 import com.caimei.service.sys.SysUserService;
 import com.caimei.utils.CommonUtil;
 import com.caimei.utils.CommonUtil;
 import com.caimei.utils.Md5Util;
 import com.caimei.utils.Md5Util;
@@ -20,7 +22,10 @@ import org.springframework.util.StringUtils;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
 import java.util.List;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicReference;
 
 
 /**
 /**
  * Description
  * Description
@@ -40,13 +45,19 @@ public class SysUserServiceImpl implements SysUserService {
     @Resource
     @Resource
     private RedisService redisService;
     private RedisService redisService;
 
 
+    @Resource
+    private SysMenuService sysMenuService;
+
+    @Resource
+    private SysRoleService sysRoleService;
+
     /**
     /**
      * 获取用户信息
      * 获取用户信息
      */
      */
     @Override
     @Override
     public ResponseJson<SysUser> getInfoByUsername(String username) {
     public ResponseJson<SysUser> getInfoByUsername(String username) {
         if (StringUtils.hasLength(username)) {
         if (StringUtils.hasLength(username)) {
-            SysUser sysUser = systemMapper.findByUsername(username);
+            SysUser sysUser = systemMapper.findByUsername(username, null);
             if (null != sysUser) {
             if (null != sysUser) {
                 List<Integer> roleIds = setUserRoleInfo(sysUser);
                 List<Integer> roleIds = setUserRoleInfo(sysUser);
                 List<SysMenu> menus = null;
                 List<SysMenu> menus = null;
@@ -75,16 +86,6 @@ public class SysUserServiceImpl implements SysUserService {
         }
         }
         SysUser sysUser = systemMapper.findByUserId(id);
         SysUser sysUser = systemMapper.findByUserId(id);
         if (null != sysUser) {
         if (null != sysUser) {
-            VipInfoVo vipInfo = vipMapper.getVipInfo(id);
-            if (null != vipInfo && vipInfo.getEndDayLeft() <= 0) {
-                if (vipInfo.getFreeDayLeft() <= 0) {
-                    // 会员到期且已过试用期
-                    // 删除用户角色关联
-                    systemMapper.deleteUserRoleRelation(id);
-                    // 赋予基础供应商角色
-                    saveRoleRelation(id, "1");
-                }
-            }
             List<Integer> roleIds = setUserRoleInfo(sysUser);
             List<Integer> roleIds = setUserRoleInfo(sysUser);
             List<SysMenu> menus = null;
             List<SysMenu> menus = null;
             if (!CollectionUtils.isEmpty(roleIds)) {
             if (!CollectionUtils.isEmpty(roleIds)) {
@@ -102,10 +103,47 @@ public class SysUserServiceImpl implements SysUserService {
     private List<Integer> setUserRoleInfo(SysUser sysUser) {
     private List<Integer> setUserRoleInfo(SysUser sysUser) {
         List<Integer> roleIds = new ArrayList<>();
         List<Integer> roleIds = new ArrayList<>();
         if (null != sysUser) {
         if (null != sysUser) {
+            // 角色名称
             List<String> roleNames = new ArrayList<>();
             List<String> roleNames = new ArrayList<>();
+            // 角色描述
             StringBuilder roleDesc = new StringBuilder();
             StringBuilder roleDesc = new StringBuilder();
+            // 用户id
+            Integer userId = sysUser.getId();
+            // parentId
+            Integer parentId = sysUser.getParentId();
+            if (2 == sysUser.getUserIdentity() || 3 == sysUser.getUserIdentity()) {
+                // 供应商用户id
+                Integer authUserId = 2 == sysUser.getUserIdentity() ? userId : parentId;
+                // 根据用户Id获取用户角色列表
+                List<SysRole> roleList = systemMapper.getRoleListByUserId(authUserId);
+                // 获取关联的会员角色数量
+                long vipRoleCount = roleList.stream().filter(role -> (1 == role.getId() || 2 == role.getId())).count();
+                // 查询供应商会员信息
+                VipInfoVo vipInfo = vipMapper.getVipInfo(authUserId);
+                if (null != vipInfo && vipInfo.getEndDayLeft() <= 0 && vipInfo.getFreeDayLeft() <= 0 && vipRoleCount > 0) {
+                    // 会员到期且已过试用期并且关联了会员角色,删除供应商用户角色关联
+                    systemMapper.deleteUserRoleRelation(authUserId);
+                    // 赋予基础供应商角色
+                    saveRoleRelation(authUserId, "1");
+                    List<SysRole> shopRoleList = systemMapper.getShopRoleList(authUserId);
+                    // 移除子用户角色中的会员菜单
+                    shopRoleList.forEach(shopRole -> {
+                        Integer shopRoleId = shopRole.getId();
+                        // 获取角色下基础菜单列表
+                        List<SysMenu> baseMenuList = systemMapper.getBaseMenuList(shopRoleId);
+                        Set<Integer> baseMenuIdSet = new HashSet<>();
+                        Set<Integer> basePermissionIdSet = new HashSet<>();
+                        // 获取基础菜单所有id
+                        baseMenuList.forEach(baseMenu -> sysMenuService.getAllBaseMenuIds(baseMenu, baseMenuIdSet, basePermissionIdSet));
+                        AtomicReference<String> menuIds = new AtomicReference<>("");
+                        baseMenuIdSet.forEach(baseMenuId -> menuIds.updateAndGet(v -> v + baseMenuId + ","));
+                        // 保存角色与基础菜单的关联
+                        sysRoleService.saveRoleMenuRelation(shopRoleId,menuIds.get());
+                    });
+                }
+            }
             // 根据用户Id获取用户角色列表
             // 根据用户Id获取用户角色列表
-            List<SysRole> roleList = systemMapper.getRoleListByUserId(sysUser.getId());
+            List<SysRole> roleList = systemMapper.getRoleListByUserId(userId);
             if (!CollectionUtils.isEmpty(roleList)) {
             if (!CollectionUtils.isEmpty(roleList)) {
                 for (SysRole role : roleList) {
                 for (SysRole role : roleList) {
                     if (null != role) {
                     if (null != role) {
@@ -135,14 +173,15 @@ public class SysUserServiceImpl implements SysUserService {
     /**
     /**
      * 获取用户列表
      * 获取用户列表
      *
      *
+     * @param authUserId
      * @param username 用户名
      * @param username 用户名
      * @param pageNum  页码
      * @param pageNum  页码
      * @param pageSize 每页大小
      * @param pageSize 每页大小
      */
      */
     @Override
     @Override
-    public ResponseJson<PageInfo<SysUser>> getUserList(String username, String linkMan, int pageNum, int pageSize) {
+    public ResponseJson<PageInfo<SysUser>> getUserList(Integer authUserId, String username, String linkMan, int pageNum, int pageSize) {
         PageHelper.startPage(pageNum, pageSize);
         PageHelper.startPage(pageNum, pageSize);
-        List<SysUser> userList = systemMapper.getUserList(username, linkMan);
+        List<SysUser> userList = systemMapper.getUserList(authUserId, username, linkMan);
         for (SysUser sysUser : userList) {
         for (SysUser sysUser : userList) {
             List<Integer> roleIdList = setUserRoleInfo(sysUser);
             List<Integer> roleIdList = setUserRoleInfo(sysUser);
             String roleIds = CommonUtil.idListToString(roleIdList, ",");
             String roleIds = CommonUtil.idListToString(roleIdList, ",");
@@ -229,21 +268,21 @@ public class SysUserServiceImpl implements SysUserService {
 
 
     @Transactional(rollbackFor=Exception.class)
     @Transactional(rollbackFor=Exception.class)
     @Override
     @Override
-    public ResponseJson<Void> addAdmin(SysUser sysUser) {
+    public ResponseJson<Void> createUser(SysUser sysUser) {
         if (StringUtils.hasLength(sysUser.getUsername()) && StringUtils.hasLength(sysUser.getPassword())) {
         if (StringUtils.hasLength(sysUser.getUsername()) && StringUtils.hasLength(sysUser.getPassword())) {
             // 查询是否存在当前用户名的用户
             // 查询是否存在当前用户名的用户
-            SysUser dbUser = systemMapper.findByUsername(sysUser.getUsername());
+            SysUser dbUser = systemMapper.findByUsername(sysUser.getUsername(), sysUser.getUserIdentity());
             if (null == dbUser) {
             if (null == dbUser) {
                 // 密码加密
                 // 密码加密
                 String encodePassword = Md5Util.md5(sysUser.getPassword());
                 String encodePassword = Md5Util.md5(sysUser.getPassword());
                 sysUser.setPassword(encodePassword);
                 sysUser.setPassword(encodePassword);
                 // 新增用户
                 // 新增用户
-                systemMapper.insertAdminUser(sysUser);
+                systemMapper.insertUser(sysUser);
                 // 角色Ids,用","隔开
                 // 角色Ids,用","隔开
                 String roleIds = sysUser.getRoleIds();
                 String roleIds = sysUser.getRoleIds();
                 // 保存用户角色关系
                 // 保存用户角色关系
                 saveRoleRelation(sysUser.getId(), roleIds);
                 saveRoleRelation(sysUser.getId(), roleIds);
-                return ResponseJson.success("添加管理员成功", null);
+                return ResponseJson.success("添加用户成功", null);
             } else {
             } else {
                 return ResponseJson.error("用户名已存在", null);
                 return ResponseJson.error("用户名已存在", null);
             }
             }
@@ -268,7 +307,13 @@ public class SysUserServiceImpl implements SysUserService {
         }
         }
         return ResponseJson.success();
         return ResponseJson.success();
     }
     }
-/*
+
+    @Override
+    public ResponseJson<Void> updateUserStatus(Integer id, Integer status) {
+        systemMapper.updateUserStatus(id, status);
+        return ResponseJson.success("更改状态成功", null);
+    }
+    /*
     *//**
     *//**
      * 用户修改资料
      * 用户修改资料
      *//*
      *//*

+ 17 - 41
src/main/java/com/caimei/service/vip/impl/VipServiceImpl.java

@@ -229,6 +229,7 @@ public class VipServiceImpl implements VipService {
         Set<Integer> baseMenuIdSet = new HashSet<>();
         Set<Integer> baseMenuIdSet = new HashSet<>();
         Set<Integer> basePermissionIdSet = new HashSet<>();
         Set<Integer> basePermissionIdSet = new HashSet<>();
         for (Map<String,Object> menu : baseMenuList) {
         for (Map<String,Object> menu : baseMenuList) {
+            // 基础菜单
             SysMenu baseMenu = new SysMenu();
             SysMenu baseMenu = new SysMenu();
             baseMenu.setBaseFlag(1);
             baseMenu.setBaseFlag(1);
             String menuId = menu.get("id").toString();
             String menuId = menu.get("id").toString();
@@ -237,7 +238,16 @@ public class VipServiceImpl implements VipService {
             baseMenu.setTitle(menu.get("title").toString());
             baseMenu.setTitle(menu.get("title").toString());
             // 更新菜单
             // 更新菜单
             systemMapper.updateShopMenu(baseMenu);
             systemMapper.updateShopMenu(baseMenu);
-            getAllBaseMenuIds(baseMenu, baseMenuIdSet, basePermissionIdSet);
+            Integer roleId = systemMapper.getShopRoleIdByMenuId(baseMenu.getId());
+            if (null != roleId) {
+                if (1 != roleId) {
+                    // 若已关联会员角色,删除会员角色
+                    systemMapper.deleteRole(roleId);
+                }
+                systemMapper.deleteRoleMenuRelation(roleId);
+                systemMapper.deleteRolePermissionRelation(roleId);
+            }
+            sysMenuService.getAllBaseMenuIds(baseMenu, baseMenuIdSet, basePermissionIdSet);
         }
         }
         baseMenuIdSet.forEach(menuId -> {
         baseMenuIdSet.forEach(menuId -> {
             // 保存角色菜单关系
             // 保存角色菜单关系
@@ -260,61 +270,27 @@ public class VipServiceImpl implements VipService {
             systemMapper.updateShopMenu(upMenu);
             systemMapper.updateShopMenu(upMenu);
             // 获取菜单下所有权限id
             // 获取菜单下所有权限id
             List<SysPermission> permissionList = systemMapper.getPermissionList(menuId);
             List<SysPermission> permissionList = systemMapper.getPermissionList(menuId);
+            // 获取数据库该菜单对应的会员角色id
             Integer dbRoleId = systemMapper.getVipRoleIdByMenuId(menuId);
             Integer dbRoleId = systemMapper.getVipRoleIdByMenuId(menuId);
             sysMenuService.saveVipMenu(upMenu, permissionList);
             sysMenuService.saveVipMenu(upMenu, permissionList);
             Integer roleId = systemMapper.getVipRoleIdByMenuId(menuId);
             Integer roleId = systemMapper.getVipRoleIdByMenuId(menuId);
             // 获取子菜单列表
             // 获取子菜单列表
             List<SysMenu> childMenuList = systemMapper.getMenuList(menuId, 2, null);
             List<SysMenu> childMenuList = systemMapper.getMenuList(menuId, 2, null);
             childMenuList.forEach(childMenu->{
             childMenuList.forEach(childMenu->{
-                getAllVipMenuIds(childMenu, vipMenuIdSet, vipPermissionIdSet);
+                sysMenuService.getAllVipMenuIds(childMenu, vipMenuIdSet, vipPermissionIdSet);
             });
             });
             if (null == dbRoleId) {
             if (null == dbRoleId) {
+                // 原先不是会员菜单,将树下所有菜单与会员角色关联
                 vipMenuIdSet.forEach(vipMenuId-> systemMapper.insertRoleMenuRelation(roleId, vipMenuId));
                 vipMenuIdSet.forEach(vipMenuId-> systemMapper.insertRoleMenuRelation(roleId, vipMenuId));
+                // 将新增会员角色与会员用户关联
+                List<VipListVo> vipList = vipMapper.getVipList(null, null, 1, null, null);
+                vipList.forEach(vip-> systemMapper.insertUserRoleRelation(vip.getAuthUserId(),roleId));
                 vipPermissionIdSet.forEach(vipPermissionId-> systemMapper.insertRolePermissionRelation(roleId, vipPermissionId));
                 vipPermissionIdSet.forEach(vipPermissionId-> systemMapper.insertRolePermissionRelation(roleId, vipPermissionId));
             }
             }
         });
         });
         return ResponseJson.success();
         return ResponseJson.success();
     }
     }
 
 
-    /**
-     * 获取一颗菜单树下的所有菜单id和权限id
-     */
-    private ResponseJson<Void> getAllBaseMenuIds(SysMenu menu, Set<Integer> menuIdSet, Set<Integer> permissionIdSet) {
-        // 删除基础菜单与会员角色的关联
-        Integer menuId = menu.getId();
-        menuIdSet.add(menuId);
-        Integer roleId = systemMapper.getVipRoleIdByMenuId(menuId);
-        if (null != roleId) {
-            systemMapper.deleteRole(roleId);
-            systemMapper.deleteRoleMenuRelation(roleId);
-            systemMapper.deleteRolePermissionRelation(roleId);
-        }
-        // 获取菜单下所有权限id
-        List<Integer> permissionIdList = systemMapper.getPermissionIds(menuId);
-        permissionIdSet.addAll(permissionIdList);
-        // 获取子菜单列表
-        List<SysMenu> childMenuList = systemMapper.getMenuList(menuId, 2, null);
-        // 遍历获取子菜单id和
-        childMenuList.forEach(childMenu -> getAllBaseMenuIds(childMenu, menuIdSet, permissionIdSet));
-        return ResponseJson.success();
-    }
-
-    /**
-     * 获取一颗菜单树下的所有菜单id和权限id
-     */
-    private ResponseJson<Void> getAllVipMenuIds(SysMenu menu, Set<Integer> menuIdSet, Set<Integer> permissionIdSet) {
-        Integer menuId = menu.getId();
-        menuIdSet.add(menuId);
-        // 获取菜单下所有权限id
-        List<Integer> permissionIdList = systemMapper.getPermissionIds(menuId);
-        permissionIdSet.addAll(permissionIdList);
-        // 获取子菜单列表
-        List<SysMenu> childMenuList = systemMapper.getMenuList(menuId, 2, null);
-        // 遍历获取子菜单id和
-        childMenuList.forEach(childMenu -> getAllBaseMenuIds(childMenu, menuIdSet, permissionIdSet));
-        return ResponseJson.success();
-    }
-
     @Override
     @Override
     public ResponseJson<List<SysMenu>> vipServicesForm(Integer authUserId) {
     public ResponseJson<List<SysMenu>> vipServicesForm(Integer authUserId) {
         List<SysMenu> vipServiceList = systemMapper.getVipMenuList();
         List<SysMenu> vipServiceList = systemMapper.getVipMenuList();

+ 0 - 1
src/main/java/com/caimei/utils/FileIOUtils.java

@@ -43,7 +43,6 @@ public class FileIOUtils {
             final File sourceDir = new File(srcDir);
             final File sourceDir = new File(srcDir);
             compressFolder(sourceDir, zos, sourceDir.getName(), KeepDirStructure);
             compressFolder(sourceDir, zos, sourceDir.getName(), KeepDirStructure);
             long end = System.currentTimeMillis();
             long end = System.currentTimeMillis();
-            System.out.println("耗时:" + (end - startTime) + "ms");
         } catch (Exception e) {
         } catch (Exception e) {
             e.printStackTrace();
             e.printStackTrace();
         }
         }

+ 59 - 14
src/main/resources/mapper/SystemMapper.xml

@@ -68,7 +68,13 @@
     </select>
     </select>
     <select id="getRoleList" resultType="com.caimei.model.po.SysRole">
     <select id="getRoleList" resultType="com.caimei.model.po.SysRole">
         SELECT  r.id, r.role_name AS roleName, r.role_desc AS roleDesc, r.create_time AS createTime, r.update_time AS updateTime, del_flag AS delFlag
         SELECT  r.id, r.role_name AS roleName, r.role_desc AS roleDesc, r.create_time AS createTime, r.update_time AS updateTime, del_flag AS delFlag
-        FROM auth_role r WHERE r.del_flag = 0 and role_type = 1
+        FROM auth_role r WHERE r.del_flag = 0
+        <if test="authUserId == null">
+            and role_type = 1
+        </if>
+        <if test="authUserId != null">
+            and role_type = 2 and authUserId = #{authUserId}
+        </if>
     </select>
     </select>
     <select id="getRole" resultType="com.caimei.model.po.SysRole">
     <select id="getRole" resultType="com.caimei.model.po.SysRole">
         SELECT  r.id, r.role_name AS roleName, r.role_desc AS roleDesc, r.create_time AS createTime, r.update_time AS updateTime, del_flag AS delFlag
         SELECT  r.id, r.role_name AS roleName, r.role_desc AS roleDesc, r.create_time AS createTime, r.update_time AS updateTime, del_flag AS delFlag
@@ -216,7 +222,7 @@
         SELECT id FROM auth_permission WHERE menu_id = #{menuId}
         SELECT id FROM auth_permission WHERE menu_id = #{menuId}
     </select>
     </select>
     <select id="findByUserId" resultType="com.caimei.model.po.SysUser">
     <select id="findByUserId" resultType="com.caimei.model.po.SysUser">
-        select authUserId as id from cm_brand_auth_user where authUserId = #{authUserId} and status = 1
+        select authUserId as id, userIdentity, parentId from cm_brand_auth_user where authUserId = #{authUserId} and status = 1
     </select>
     </select>
     <select id="getVipRoleIdByMenuId" resultType="java.lang.Integer">
     <select id="getVipRoleIdByMenuId" resultType="java.lang.Integer">
         select role_id
         select role_id
@@ -229,35 +235,44 @@
         limit 1
         limit 1
     </select>
     </select>
     <select id="getUserList" resultType="com.caimei.model.po.SysUser">
     <select id="getUserList" resultType="com.caimei.model.po.SysUser">
-        SELECT u.authUserId as id, u.name as username, u.linkMan, u.mobile, u.createTime, u.status,u.createBy
+        SELECT u.authUserId as id, u.userIdentity, u.parentId, u.name as username, u.linkMan, u.mobile, u.createTime, u.status,u.createBy
         FROM cm_brand_auth_user u
         FROM cm_brand_auth_user u
-        where userIdentity = 1
-        <if test="username != null and username != ''">
-            AND u.name like concat('%',#{username},'%')
-        </if>
-        <if test="linkMan != null and linkMan != ''">
-            AND u.linkMan like concat('%',#{fullName},'%')
-        </if>
+        <where>
+            <if test="authUserId != null">
+                and u.authUserId = #{authUserId}
+            </if>
+            <if test="authUserId == null">
+                and u.userIdentity = 1
+            </if>
+            <if test="username != null and username != ''">
+                AND u.name like concat('%',#{username},'%')
+            </if>
+            <if test="linkMan != null and linkMan != ''">
+                AND u.linkMan like concat('%',#{fullName},'%')
+            </if>
+        </where>
     </select>
     </select>
     <select id="getVipMenuList" resultType="com.caimei.model.po.SysMenu">
     <select id="getVipMenuList" resultType="com.caimei.model.po.SysMenu">
         select m.title, arm.role_id as roleId
         select m.title, arm.role_id as roleId
         from auth_menu m
         from auth_menu m
                  left join auth_role_menu arm on m.id = arm.menu_id
                  left join auth_role_menu arm on m.id = arm.menu_id
+                 left join auth_role r on arm.role_id = r.id
         where menu_type = 2
         where menu_type = 2
           and base_flag = 0
           and base_flag = 0
           and status = 0
           and status = 0
           and m.parent_id = 0
           and m.parent_id = 0
+          and r.authUserId is null
     </select>
     </select>
     <select id="getVipRoleIdList" resultType="java.lang.Integer">
     <select id="getVipRoleIdList" resultType="java.lang.Integer">
         select role_id from auth_role_user where user_id = #{authUserId}
         select role_id from auth_role_user where user_id = #{authUserId}
     </select>
     </select>
     <select id="getUser" resultType="com.caimei.model.po.SysUser">
     <select id="getUser" resultType="com.caimei.model.po.SysUser">
-        select authUserId as id, name as username, mobile, linkMan, password,status
+        select authUserId as id, userIdentity, parentId, name as username, mobile, linkMan, password,status
         from cm_brand_auth_user
         from cm_brand_auth_user
         where authUserId = #{id}
         where authUserId = #{id}
     </select>
     </select>
     <select id="findByUsername" resultType="com.caimei.model.po.SysUser">
     <select id="findByUsername" resultType="com.caimei.model.po.SysUser">
-        select authUserId as id from cm_brand_auth_user where name = #{username}
+        select authUserId as id from cm_brand_auth_user where name = #{username} and userIdentity = #{userIdentity}
     </select>
     </select>
     <select id="getMenuParentId" resultType="java.lang.Integer">
     <select id="getMenuParentId" resultType="java.lang.Integer">
         select parent_id from auth_menu where id = #{id}
         select parent_id from auth_menu where id = #{id}
@@ -274,6 +289,28 @@
         </if>
         </if>
         ORDER BY m.sort
         ORDER BY m.sort
     </select>
     </select>
+    <select id="getShopRoleList" resultType="com.caimei.model.po.SysRole">
+        select * from auth_role where authUserId = #{authUserId}
+    </select>
+    <select id="getBaseMenuList" resultType="com.caimei.model.po.SysMenu">
+        select m.id, m.title,m.base_flag as baseFlag, m.move_flag as moveFlag, m.status
+        from auth_menu m
+        left join auth_role_menu arm on m.id = arm.menu_id
+        where m.menu_type = 2
+          and m.base_flag = 1
+          and m.parent_id = 0
+          and arm.role_id = #{roleId}
+    </select>
+    <select id="getShopRoleIdByMenuId" resultType="java.lang.Integer">
+        select role_id
+        from auth_role_menu arm
+                 left join auth_role r on arm.role_id = r.id
+        where menu_id = #{menuId}
+          and role_id != 2
+          and role_type = 2
+          and r.id is not null
+        limit 1
+    </select>
     <update id="updatePermission">
     <update id="updatePermission">
         UPDATE auth_permission SET name=#{name}, title=#{title}, menu_id = #{menuId}
         UPDATE auth_permission SET name=#{name}, title=#{title}, menu_id = #{menuId}
         WHERE id = #{id}
         WHERE id = #{id}
@@ -288,6 +325,11 @@
     <update id="updateShopMenu">
     <update id="updateShopMenu">
         update auth_menu set base_flag = #{baseFlag},status = #{status} where id = #{id}
         update auth_menu set base_flag = #{baseFlag},status = #{status} where id = #{id}
     </update>
     </update>
+    <update id="updateUserStatus">
+        update cm_brand_auth_user
+        set status = #{status}
+        where authUserId = #{id}
+    </update>
     <delete id="deletePermission">
     <delete id="deletePermission">
         DELETE FROM auth_permission WHERE id = #{id}
         DELETE FROM auth_permission WHERE id = #{id}
     </delete>
     </delete>
@@ -313,13 +355,16 @@
     <delete id="deleteMenuRoleRelation">
     <delete id="deleteMenuRoleRelation">
         delete from auth_role_menu where menu_id = #{menuId}
         delete from auth_role_menu where menu_id = #{menuId}
     </delete>
     </delete>
+    <delete id="deleteVipRelation">
+        delete
+    </delete>
     <insert id="insertPermission" keyProperty="id" keyColumn="id" useGeneratedKeys="true">
     <insert id="insertPermission" keyProperty="id" keyColumn="id" useGeneratedKeys="true">
         INSERT INTO auth_permission(title, name, menu_id)
         INSERT INTO auth_permission(title, name, menu_id)
         VALUES (#{title}, #{name}, #{menuId})
         VALUES (#{title}, #{name}, #{menuId})
     </insert>
     </insert>
-    <insert id="insertAdminUser" keyProperty="id" keyColumn="id" useGeneratedKeys="true" parameterType="com.caimei.model.po.SysUser">
+    <insert id="insertUser" keyProperty="id" keyColumn="id" useGeneratedKeys="true" parameterType="com.caimei.model.po.SysUser">
         insert into cm_brand_auth_user (name, mobile, password, linkMan, userIdentity, createTime, createBy,
         insert into cm_brand_auth_user (name, mobile, password, linkMan, userIdentity, createTime, createBy,
                                         status)
                                         status)
-        values (#{username}, #{mobile}, #{password}, #{linkMan}, 1, NOW(), #{createBy}, 1)
+        values (#{username}, #{mobile}, #{password}, #{linkMan}, #{userIdentity}, NOW(), #{createBy}, 1)
     </insert>
     </insert>
 </mapper>
 </mapper>