爱心帮扶-职工慰问-分工会审核(手机端):

1.superadmin(工号):查看并审核全部分工会数据;
2.gh01(分工会主席角色)、sp01(职工慰问审批员):只能查看并审核自己分工会的数据;
3.sysadmin(角色):不再自动拥有分工会审核权限。
This commit is contained in:
2026-10-12 17:31:16 +08:00
parent 2b72da43f4
commit b2ffc17032
3 changed files with 55 additions and 16 deletions
@@ -65,20 +65,28 @@ public class CondolenceAuditControll {
Cnd cnd = Cnd.NEW();
if (!ShiroUtil.hasAnyRoles("sysadmin")) {
if (!"superadmin".equals(ShiroUtil.getPrincipalProperty("loginname"))) {
SqlExpressionGroup group = new SqlExpressionGroup();
if (ShiroUtil.hasAnyRoles("A06")) {
group.or(Cnd.exps("con.state_id", isAudit ? ">" : "=", 2020).or("con.state_id", isAudit ? ">" : "=", 2000));
// cnd.and("con.state_id", isAudit ? ">" : "=", 2020);
boolean hasAuditRole = false;
if (ShiroUtil.hasAnyRoles("gh01,sp01")) {
group.or(Cnd.exps("con.state_id", isAudit ? ">" : "=", 2000)
.and("sqr.unionid", "=", Vi.getUnionId()));
hasAuditRole = true;
}
if (ShiroUtil.hasAnyRoles("H04")) {
group.and("con.state_id", isAudit ? ">" : "=", 2000);
group.and("be.unionid", "=", Vi.getUnionId());
if (ShiroUtil.hasAnyRoles("A06,sysadmin")) {
group.or(Cnd.exps("con.state_id", isAudit ? ">" : "=", 2020));
hasAuditRole = true;
}
if (ShiroUtil.hasAnyRoles("xghkj")) {
group.and("con.state_id", isAudit ? ">" : "=", 2012);
if (ShiroUtil.hasAnyRoles("xghkj,sysadmin")) {
group.or(Cnd.exps("con.state_id", isAudit ? ">" : "=", 2012));
hasAuditRole = true;
}
if (hasAuditRole) {
cnd.and(group);
} else {
// 非慰问审核角色不允许查看手机端慰问审核数据。
cnd.and("1", "=", 0);
}
cnd.and(group);
} else {
cnd.and("con.state_id", "in", isAudit ? "1990,2010,2014,2030,2040" : "2000,2012,2020");
}
@@ -108,11 +116,12 @@ public class CondolenceAuditControll {
@At("/auditHtml")
@Ok("re")
public String auditHtml(Integer state_id) {
if (state_id == 2000 && ShiroUtil.hasAnyRoles("H04,A06,sysadmin")) {
boolean superadmin = "superadmin".equals(ShiroUtil.getPrincipalProperty("loginname"));
if (state_id == 2000 && (superadmin || ShiroUtil.hasAnyRoles("gh01,sp01"))) {
return "beetl:/mobile/condolence/union_Audit.html";
} else if (state_id == 2012 && ShiroUtil.hasAnyRoles("gh03,xghkj,sysadmin")) {
} else if (state_id == 2012 && (superadmin || ShiroUtil.hasAnyRoles("gh03,xghkj,sysadmin"))) {
return "beetl:/mobile/condolence/fr_Audit.html";
} else if (state_id == 2020 && ShiroUtil.hasAnyRoles("A06,sysadmin")) {
} else if (state_id == 2020 && (superadmin || ShiroUtil.hasAnyRoles("A06,sysadmin"))) {
return "beetl:/mobile/condolence/school_Audit.html";
}
return "beetl:/mobile/condolence/apply_info.html";
@@ -1,5 +1,6 @@
package io.v.nutz.zgfw.controller.condolence;
import cn.wizzer.framework.base.Result;
import io.v.nutz.annontation.ViReturn;
import io.v.nutz.base.utils.DateUtil;
import io.v.nutz.base.utils.MsgApi;
@@ -90,7 +91,12 @@ public class CondolenceUcrCon {
cnd.and("con.state_id", isAudit ? ">" : "=", 2000);
if (!"superadmin".equals(ShiroUtil.getPrincipalProperty("loginname"))) {
cnd.and("sqr.unionid", "=", vi.getUnionId());
if (ShiroUtil.hasAnyRoles("gh01,sp01")) {
cnd.and("sqr.unionid", "=", vi.getUnionId());
} else {
// 非分工会主席、职工慰问审批员角色(包括sysadmin)不允许查看分工会审核数据。
cnd.and("1", "=", 0);
}
}
Vi.cndPlus(cnd, "YEAR(con.apply_time)", "=", year);
@@ -125,6 +131,10 @@ public class CondolenceUcrCon {
@ViReturn
@RequiresPermissions("fw.condolence.ucr")
public Object doEdit(String id) {
Condolence condolence = condolenceService.fetch(id);
if (!hasReviewPermission(condolence)) {
return Result.error("您没有分工会审核权限!");
}
condolenceService.update(Chain.make("state_id", 2000), Cnd.where("id", "=", id));
return null;
}
@@ -133,11 +143,14 @@ public class CondolenceUcrCon {
@ViReturn
@RequiresPermissions("fw.condolence.ucr")
public Object doReview(String id, Integer pass, Review review) {
Condolence condolence = condolenceService.fetch(id);
if (!hasReviewPermission(condolence)) {
return Result.error("您没有分工会审核权限!");
}
review.setLoginname(ShiroUtil.getPrincipalProperty("loginname").toString());
review.setUsername(ShiroUtil.getPrincipalProperty("username").toString());
review.setTime(DateUtil.getDate());
review = reviewService.insert(review);
Condolence condolence = condolenceService.fetch(id);
condolence.setUnion_chairman_review(review.getId());
if (pass == 1) {
condolence.setState_id("2010");
@@ -167,5 +180,21 @@ public class CondolenceUcrCon {
return null;
}
/**
* 校验分工会审核权限:superadmin可审核全部,分工会主席和职工慰问审批员只能审核本分工会数据。
*/
private boolean hasReviewPermission(Condolence condolence) {
if ("superadmin".equals(ShiroUtil.getPrincipalProperty("loginname"))) {
return true;
}
if (condolence == null || !ShiroUtil.hasAnyRoles("gh01,sp01")) {
return false;
}
Sql sql = Sqls.fetchString(Sqls.create("select unionid from `user` where id = @id")
.setParam("id", condolence.getManager()).toString());
condolenceService.dao().execute(sql);
return vi.getUnionId().equals(sql.getString());
}
}
@@ -106,7 +106,8 @@ layout("/mobile/platform.html"){
},
async flushUnits() {
//this.$set(this.pageForm, "unitId", "")
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}" === 'true') {
if ("${@shiro.getPrincipalProperty('loginname')}" === 'superadmin' ||
"${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H03')}" === 'true') {
await mCommon.getUnitList(this.pageForm.unionId)
} else {
await mCommon.getUnitList("${@shiro.getPrincipalProperty('unit').getUnionid()}")