소스 검색

bugfix-菜单

Aslee 3 년 전
부모
커밋
69f0903d76

+ 2 - 0
src/main/java/com/caimei/mapper/SystemMapper.java

@@ -204,4 +204,6 @@ public interface SystemMapper {
     void deleteVipRoleMenuRelation(Integer menuId);
 
     void deleteRoleMenuPermission(Integer menuId);
+
+    void deleteMenuRoleRelation(Integer menuId);
 }

+ 4 - 0
src/main/java/com/caimei/model/po/SysMenu.java

@@ -38,6 +38,10 @@ public class SysMenu {
      * 父级菜单Id
      */
     private Integer parentId;
+    /**
+     * 顶层父级菜单Id
+     */
+    private Integer baseParentId;
     /**
      * 创建时间
      */

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

@@ -50,5 +50,5 @@ public interface SysMenuService {
      */
     ResponseJson<Void> deleteMenu(Integer id);
 
-    ResponseJson<Void> saveVipRole(SysMenu menu, List<SysPermission> permissionList);
+    ResponseJson<Void> saveVipMenu(SysMenu menu, List<SysPermission> permissionList);
 }

+ 48 - 29
src/main/java/com/caimei/service/sys/impl/SysMenuServiceImpl.java

@@ -123,17 +123,18 @@ public class SysMenuServiceImpl implements SysMenuService {
             return ResponseJson.error(result.getMsg(), null);
         }
         List<SysPermission> permissionList = result.getData();
-        Integer parentMenuId = getBaseParentId(menu.getId());
-        SysMenu baseParentMenu = systemMapper.getMenu(parentMenuId);
+        Integer baseParentId = getBaseParentId(menu.getId());
+        SysMenu baseParentMenu = systemMapper.getMenu(baseParentId);
+        menu.setBaseParentId(baseParentId);
         if (2 == menu.getMenuType()) {
-            // 移除菜单与供应商基础角色的关联
-            removeMenuRoleRelation(menu.getId());
+            // 移除菜单与角色的关联
+            removeMenuRoleRelation(menu, dbMenu);
             if (1 == baseParentMenu.getBaseFlag()) {
                 // 供应商基础菜单
                 addShopRoleRelation(menu.getId(), permissionList);
             } else {
                 // 供应商会员菜单
-                ResponseJson<Void> saveResult = saveVipRole(menu, permissionList);
+                ResponseJson<Void> saveResult = saveVipMenu(menu, permissionList);
                 if (0 != saveResult.getCode()) {
                     return saveResult;
                 }
@@ -210,14 +211,15 @@ public class SysMenuServiceImpl implements SysMenuService {
             }
             List<SysPermission> permissionList = result.getData();
             if (2 == menu.getMenuType()) {
-                Integer parentMenuId = getBaseParentId(menuId);
-                SysMenu baseParentMenu = systemMapper.getMenu(parentMenuId);
+                Integer baseParentId = getBaseParentId(menuId);
+                SysMenu baseParentMenu = systemMapper.getMenu(baseParentId);
+                menu.setBaseParentId(baseParentId);
                 if (1 == baseParentMenu.getBaseFlag()) {
                     // 会员基础菜单
                     addShopRoleRelation(menuId, permissionList);
                 } else {
                     // 会员订制菜单
-                    ResponseJson<Void> saveResult = saveVipRole(menu, permissionList);
+                    ResponseJson<Void> saveResult = saveVipMenu(menu, permissionList);
                     if (0 != saveResult.getCode()) {
                         systemMapper.deleteMenu(menuId);
                         return saveResult;
@@ -247,26 +249,35 @@ public class SysMenuServiceImpl implements SysMenuService {
     }
 
     @Override
-    public ResponseJson<Void> saveVipRole(SysMenu menu, List<SysPermission> permissionList) {
-        // 保存会员菜单角色
-        SysRole vipMenuRole = new SysRole();
-        vipMenuRole.setRoleName(menu.getTitle() + "会员菜单角色");
-        vipMenuRole.setRoleDesc(menu.getTitle() + "会员菜单角色");
-        vipMenuRole.setMenuIds(menu.getId().toString());
-        vipMenuRole.setRoleType(2);
-        Integer dbVipRoleId = systemMapper.getVipRoleIdByMenuId(menu.getId());
-        ResponseJson<Void> result = null;
-        if (null == dbVipRoleId) {
-            result = sysRoleService.addRole(vipMenuRole);
+    public ResponseJson<Void> saveVipMenu(SysMenu menu, List<SysPermission> permissionList) {
+        if (0 == menu.getParentId()) {
+            // 供应商订制首层菜单
+            // 保存会员菜单角色
+            SysRole vipMenuRole = new SysRole();
+            vipMenuRole.setRoleName(menu.getTitle() + "会员菜单角色");
+            vipMenuRole.setRoleDesc(menu.getTitle() + "会员菜单角色");
+            vipMenuRole.setMenuIds(menu.getId().toString());
+            vipMenuRole.setRoleType(2);
+            Integer dbVipRoleId = systemMapper.getVipRoleIdByMenuId(menu.getId());
+            ResponseJson<Void> result = null;
+            if (null == dbVipRoleId) {
+                result = sysRoleService.addRole(vipMenuRole);
+            } else {
+                result = sysRoleService.updateRole(dbVipRoleId, vipMenuRole);
+            }
+            if (0 != result.getCode()) {
+                return result;
+            }
+            permissionList.forEach(permission->{
+                systemMapper.insertRolePermissionRelation(vipMenuRole.getId(), permission.getId());
+            });
         } else {
-            result = sysRoleService.updateRole(dbVipRoleId, vipMenuRole);
-        }
-        if (0 != result.getCode()) {
-            return result;
+            // 供应商订制子菜单
+            // 查询顶层父级菜单对应角色id
+            Integer baseParentRoleId = systemMapper.getVipRoleIdByMenuId(menu.getBaseParentId());
+            // 保存角色菜单关系
+            systemMapper.insertRoleMenuRelation(baseParentRoleId, menu.getId());
         }
-        permissionList.forEach(permission->{
-            systemMapper.insertRolePermissionRelation(vipMenuRole.getId(), permission.getId());
-        });
         return ResponseJson.success();
     }
 
@@ -290,10 +301,12 @@ public class SysMenuServiceImpl implements SysMenuService {
     }
 
 
-    private void removeMenuRoleRelation(Integer menuId) {
+    private void removeMenuRoleRelation(SysMenu menu, SysMenu dbMenu) {
+        Integer menuId = menu.getId();
         // 根据角色ID获取菜单Ids
         List<Integer> menuIdList = systemMapper.getMenuIdsByRoleId(1);
         if (menuIdList.contains(menuId)) {
+            //之前是基础菜单
             menuIdList.remove(menuId);
             String menuIds = CommonUtil.idListToString(menuIdList, ",");
             SysRole sysRole = new SysRole();
@@ -301,9 +314,15 @@ public class SysMenuServiceImpl implements SysMenuService {
             sysRoleService.updateRole(1, sysRole);
             sysRoleService.updateRole(2, sysRole);
         } else {
+            // 之前是订制菜单
             Integer roleId = systemMapper.getVipRoleIdByMenuId(menuId);
-            systemMapper.deleteRole(roleId);
-            systemMapper.deleteRoleMenuRelation(roleId);
+            if (1 == menu.getBaseFlag() && 0 == menu.getParentId()) {
+                // 只有顶层订制菜单更改为基础菜单才删除原角色
+                systemMapper.deleteRole(roleId);
+                systemMapper.deleteMenuRoleRelation(menuId);
+            } else {
+                systemMapper.deleteMenuRoleRelation(menuId);
+            }
         }
         // 根据菜单ID获取权限关联信息
         systemMapper.deleteRoleMenuPermission(menuId);

+ 1 - 3
src/main/java/com/caimei/service/vip/impl/VipServiceImpl.java

@@ -10,10 +10,8 @@ import com.caimei.service.sys.SysMenuService;
 import com.caimei.service.sys.SysRoleService;
 import com.caimei.service.sys.SysUserService;
 import com.caimei.service.vip.VipService;
-import com.caimei.utils.CommonUtil;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
-import io.swagger.models.auth.In;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
@@ -261,7 +259,7 @@ public class VipServiceImpl implements VipService {
             // 获取菜单下所有权限id
             List<SysPermission> permissionList = systemMapper.getPermissionList(menuId);
             Integer dbRoleId = systemMapper.getVipRoleIdByMenuId(menuId);
-            sysMenuService.saveVipRole(upMenu, permissionList);
+            sysMenuService.saveVipMenu(upMenu, permissionList);
             Integer roleId = systemMapper.getVipRoleIdByMenuId(menuId);
             // 获取子菜单列表
             List<SysMenu> childMenuList = systemMapper.getMenuList(menuId, 2, null);

+ 1 - 1
src/main/resources/mapper/ClubMapper.xml

@@ -65,7 +65,7 @@
     </select>
     <select id="getWxClubList" resultType="com.caimei.model.vo.WxClubListVo">
         select id as authId, authParty as clubName,concat(ifnull(p.name,''),ifnull(c.name,''),ifnull(t.name,'')) as area,a.address,a.mobile,a.logo,
-        ifnull(round(st_distance(point(a.lng,a.lat),point(114.05454,22.52291))*111195/1000,2),99999) as distance
+        ifnull(round(st_distance(point(a.lng,a.lat),point(#{lng},#{lat}))*111195/1000,2),99999) as distance
         from cm_brand_auth a
         left join cm_brand_auth_user au on a.authUserId = au.authUserId
         left join province p on a.provinceId = p.provinceID

+ 3 - 0
src/main/resources/mapper/SystemMapper.xml

@@ -287,6 +287,9 @@
         from auth_role_permission
         where permission_id in (select permission_id from auth_permission where menu_id = #{menuId})
     </delete>
+    <delete id="deleteMenuRoleRelation">
+        delete from auth_role_menu where menu_id = #{menuId}
+    </delete>
     <insert id="insertPermission" keyProperty="id" keyColumn="id" useGeneratedKeys="true">
         INSERT INTO auth_permission(title, name, menu_id)
         VALUES (#{title}, #{name}, #{menuId})

+ 1 - 1
src/main/resources/mapper/VipMapper.xml

@@ -106,7 +106,7 @@
         as vipStatus,
         payTime,endTime,services
         from auth_vip_history
-        where authUserId = #{authUserId}
+        where authUserId = #{authUserId} and payStatus = 1
         <if test="vipPackageId != null">
             and packageId = #{vipPackageId}
         </if>