This commit is contained in:
=
2026-05-13 14:38:15 +08:00
parent f50c7eba89
commit 0f20f35e1e
4 changed files with 26 additions and 7 deletions
@@ -16,6 +16,7 @@ import org.nutz.dao.Cnd;
import org.nutz.dao.Sqls; import org.nutz.dao.Sqls;
import org.nutz.dao.entity.Record; import org.nutz.dao.entity.Record;
import org.nutz.dao.sql.Sql; import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.Static;
import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.util.NutMap; import org.nutz.lang.util.NutMap;
@@ -197,7 +198,8 @@ public class ActivityUnionYearSummaryController {
SELECT sur.stid FROM sys_user_role sur SELECT sur.stid FROM sys_user_role sur
$condition $condition
"""); """);
sql.setCondition(Cnd.NEW().and("sur.userId", "=", ShiroUtil.getPrincipalProperty("id")).and("sur.roleId", "=", Roles.CLUB_FZR)); sql.setCondition(Cnd.NEW().and("sur.userId", "=", ShiroUtil.getPrincipalProperty("id"))
.and(new Static("sur.roleId IN (SELECT id FROM sys_role WHERE id = '" + Roles.CLUB_FZR + "' OR code = '" + Roles.CLUB_JBR_CODE + "')")));
List<Record> list = baseService.list(sql); List<Record> list = baseService.list(sql);
List<String> stids = list.stream().map(x -> x.getString("stid")).collect(Collectors.toList()); List<String> stids = list.stream().map(x -> x.getString("stid")).collect(Collectors.toList());
return stids; return stids;
+10 -2
View File
@@ -14,6 +14,7 @@ import org.nutz.dao.Dao;
import org.nutz.dao.Sqls; import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql; import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.Daos; import org.nutz.dao.util.Daos;
import org.nutz.dao.util.cri.Static;
import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.Lang; import org.nutz.lang.Lang;
@@ -96,7 +97,8 @@ public class Vi {
* @return 当前登录用户的所负责的社团id * @return 当前登录用户的所负责的社团id
*/ */
public String getClubId() { public String getClubId() {
Sys_user_role userRole = sysUserRoleService.fetch(Cnd.where("userId", "=", ShiroUtil.getPrincipalProperty("id")).and("roleId", "=", Roles.CLUB_FZR)); Sys_user_role userRole = sysUserRoleService.fetch(Cnd.where("userId", "=", ShiroUtil.getPrincipalProperty("id"))
.and(new Static("roleId IN " + getClubManageRoleSql())));
return userRole == null ? "" : userRole.getStid(); return userRole == null ? "" : userRole.getStid();
} }
@@ -104,7 +106,13 @@ public class Vi {
* @return 当前登录用户管理的协会社团 * @return 当前登录用户管理的协会社团
*/ */
public String getMangeClubStr() { public String getMangeClubStr() {
return "(SELECT sur.stid FROM sys_user_role sur WHERE sur.userId = '" + ShiroUtil.getPrincipalProperty("id") + "' and sur.roleId = '" + Roles.CLUB_FZR + "')"; return "(SELECT sur.stid FROM sys_user_role sur WHERE sur.userId = '" + ShiroUtil.getPrincipalProperty("id")
+ "' AND sur.roleId IN " + getClubManageRoleSql() + ")";
}
// 协会社团管理角色范围:会长和经办人保持相同的数据权限。
private String getClubManageRoleSql() {
return "(SELECT id FROM sys_role WHERE id = '" + Roles.CLUB_FZR + "' OR code = '" + Roles.CLUB_JBR_CODE + "')";
} }
/** /**
@@ -12,6 +12,7 @@ import io.v.nutz.util.ViResource;
import org.nutz.dao.Cnd; import org.nutz.dao.Cnd;
import org.nutz.dao.Sqls; import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql; import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.cri.Static;
import org.nutz.dao.util.cri.SqlExpressionGroup; import org.nutz.dao.util.cri.SqlExpressionGroup;
import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.ioc.loader.annotation.IocBean;
@@ -374,9 +375,9 @@ public class ViCommonCon {
sys_club club sys_club club
LEFT JOIN `sys_user_role` role ON club.id = role.stid LEFT JOIN `sys_user_role` role ON club.id = role.stid
$condition $condition
"""); """);
if (!ShiroUtil.hasRole("sysadmin")) { if (!ShiroUtil.hasRole("sysadmin")) {
cnd.and("role.roleId", "=", Roles.CLUB_FZR); cnd.and(new Static("role.roleId IN (SELECT id FROM sys_role WHERE id = '" + Roles.CLUB_FZR + "' OR code = '" + Roles.CLUB_JBR_CODE + "')"));
cnd.and("role.userId", "=", ShiroUtil.getUserId()); cnd.and("role.userId", "=", ShiroUtil.getUserId());
} }
cnd.and("club.isjs", "=", false); cnd.and("club.isjs", "=", false);
@@ -208,7 +208,7 @@ public class SysClubCon {
if (ShiroUtil.hasAnyRoles(new String[]{"sysadmin", "A06"})) { if (ShiroUtil.hasAnyRoles(new String[]{"sysadmin", "A06"})) {
} else { } else {
cnd.and("club.fzr", "=", ShiroUtil.getPrincipalProperty("id")); cnd.and(new Static("(club.fzr = '" + ShiroUtil.getPrincipalProperty("id") + "' OR " + getClubManageRoleCnd("club.id") + ")"));
} }
@@ -330,7 +330,7 @@ public class SysClubCon {
record.set("child", sysClubService.query(Cnd.NEW().asc("code"))); record.set("child", sysClubService.query(Cnd.NEW().asc("code")));
} else { } else {
Cnd cnd = Cnd.NEW(); Cnd cnd = Cnd.NEW();
cnd.and(new Static("id in (select stid from sys_user_role where userId = '" + ShiroUtil.getPrincipalProperty("id") + "' and roleid = '" + Roles.CLUB_FZR + "')")); cnd.and(new Static(getClubManageRoleCnd("id")));
record.set("child", sysClubService.query(cnd)); record.set("child", sysClubService.query(cnd));
} }
@@ -341,4 +341,12 @@ public class SysClubCon {
return Result.error("获取工会信息失败"); return Result.error("获取工会信息失败");
} }
} }
// 协会社团管理角色范围:会长和经办人都可以进入对应协会数据。
private String getClubManageRoleCnd(String clubIdColumn) {
return clubIdColumn + " IN ( SELECT stid FROM sys_user_role WHERE userId = '"
+ ShiroUtil.getPrincipalProperty("id")
+ "' AND stid IS NOT NULL AND roleid IN (SELECT id FROM sys_role WHERE id = '"
+ Roles.CLUB_FZR + "' OR code = '" + Roles.CLUB_JBR_CODE + "') )";
}
} }