diff --git a/src/main/java/io/v/nutz/sys/models/Sys_club_user.java b/src/main/java/io/v/nutz/sys/models/Sys_club_user.java index f79fd92..9b586f4 100644 --- a/src/main/java/io/v/nutz/sys/models/Sys_club_user.java +++ b/src/main/java/io/v/nutz/sys/models/Sys_club_user.java @@ -1,5 +1,6 @@ package io.v.nutz.sys.models; +import lombok.Data; import org.nutz.dao.entity.annotation.*; import org.nutz.lang.util.NutMap; @@ -10,8 +11,10 @@ import java.util.List; * @DateTime: 2020/8/15 16:39 * @Description: 社团成员 */ +@Data @Table("Sys_club_user") public class Sys_club_user { + @Column @Name @Comment("id") @@ -49,64 +52,30 @@ public class Sys_club_user { @ColDefine(type = ColType.INT, width = 4) private Integer status; + @Column + @Comment("退会状态(1 待协会审核 2 协会审核不通过 3 待校工会审核 4 校工会审核不通过 5 通过)") + @ColDefine(type = ColType.INT, width = 4) + private Integer exitStatus; + @Column @ColDefine(type = ColType.MYSQL_JSON) @Comment("审核记录") private List auditList; - public Boolean getIsjf() { - return isjf; - } + @Column + @Comment("是否正常,此字段相当于一个标识,删除或者退休,设置为false,不会真正的从数据库删除,目的是为了后面统计年度成员情况") + @ColDefine(type = ColType.BOOLEAN) + @Default("1") + private Boolean isNormal; - public void setIsjf(Boolean isjf) { - this.isjf = isjf; - } + @Column + @Comment("isNormal变化的时间") + @ColDefine(type = ColType.VARCHAR, width = 30) + private String changeTime; - public String getId() { - return id; - } + @Column + @ColDefine(type = ColType.MYSQL_JSON) + @Comment("退出审核记录") + private List exitAuditList; - public void setId(String id) { - this.id = id; - } - - public String getClubid() { - return clubid; - } - - public void setClubid(String clubid) { - this.clubid = clubid; - } - - public String getUserid() { - return userid; - } - - public void setUserid(String userid) { - this.userid = userid; - } - - public String getJoin_time() { - return join_time; - } - - public void setJoin_time(String join_time) { - this.join_time = join_time; - } - - public Integer getSf() { - return sf; - } - - public void setSf(Integer sf) { - this.sf = sf; - } - - public Integer getStatus() { - return status; - } - - public void setStatus(Integer status) { - this.status = status; - } } diff --git a/src/main/java/io/v/nutz/web/controllers/platform/sys/club/ClubUserCountController.java b/src/main/java/io/v/nutz/web/controllers/platform/sys/club/ClubUserCountController.java index 830a6aa..c9a5096 100644 --- a/src/main/java/io/v/nutz/web/controllers/platform/sys/club/ClubUserCountController.java +++ b/src/main/java/io/v/nutz/web/controllers/platform/sys/club/ClubUserCountController.java @@ -40,16 +40,16 @@ public class ClubUserCountController { SELECT club.id, club.`name`, - sum( CASE WHEN cu.STATUS = 5 THEN 1 ELSE 0 END ) AS total, - sum( CASE WHEN su.userState = '在职' AND cu.STATUS = 5 THEN 1 ELSE 0 END ) AS `work`, - sum( CASE WHEN su.userState = '退休' AND cu.STATUS = 5 THEN 1 ELSE 0 END ) AS retire, - sum( CASE WHEN su.sex = '男' AND cu.STATUS = 5 THEN 1 ELSE 0 END ) AS man, - sum( CASE WHEN su.sex = '女' AND cu.STATUS = 5 THEN 1 ELSE 0 END ) AS woman, - sum( CASE WHEN cu.sf != 2 THEN 1 ELSE 0 END ) AS governing_body, - sum( CASE WHEN cu.STATUS != 1 AND cu.sf = 2 THEN 1 ELSE 0 END ) AS club_has_confirm, - sum( CASE WHEN cu.STATUS = 1 AND cu.sf = 2 THEN 1 ELSE 0 END ) AS club_no_confirm, - sum( CASE WHEN cu.STATUS IN ( 4, 5 ) AND cu.sf = 2 THEN 1 ELSE 0 END ) AS school_has_confirm, - sum( CASE WHEN cu.STATUS = 3 AND cu.sf = 2 THEN 1 ELSE 0 END ) AS school_no_confirm + sum( CASE WHEN cu.STATUS = 5 AND cu.isNormal=true THEN 1 ELSE 0 END ) AS total, + sum( CASE WHEN su.userState = '在职' AND cu.isNormal=true AND cu.STATUS = 5 THEN 1 ELSE 0 END ) AS `work`, + sum( CASE WHEN su.userState = '退休' AND cu.isNormal=true AND cu.STATUS = 5 THEN 1 ELSE 0 END ) AS retire, + sum( CASE WHEN su.sex = '男' AND cu.isNormal=true AND cu.STATUS = 5 THEN 1 ELSE 0 END ) AS man, + sum( CASE WHEN su.sex = '女' AND cu.isNormal=true AND cu.STATUS = 5 THEN 1 ELSE 0 END ) AS woman, + sum( CASE WHEN cu.sf != 2 AND cu.isNormal=true THEN 1 ELSE 0 END ) AS governing_body, + sum( CASE WHEN cu.STATUS != 1 AND cu.isNormal=true AND cu.sf = 2 THEN 1 ELSE 0 END ) AS club_has_confirm, + sum( CASE WHEN cu.STATUS = 1 AND cu.isNormal=true AND cu.sf = 2 THEN 1 ELSE 0 END ) AS club_no_confirm, + sum( CASE WHEN cu.STATUS IN ( 4, 5 ) AND cu.isNormal=true AND cu.sf = 2 THEN 1 ELSE 0 END ) AS school_has_confirm, + sum( CASE WHEN cu.STATUS = 3 AND cu.isNormal=true AND cu.sf = 2 THEN 1 ELSE 0 END ) AS school_no_confirm FROM sys_club_user cu RIGHT JOIN sys_club club ON cu.clubid = club.id diff --git a/src/main/java/io/v/nutz/web/controllers/platform/sys/club/SysClubCon.java b/src/main/java/io/v/nutz/web/controllers/platform/sys/club/SysClubCon.java index 6299372..7351f94 100644 --- a/src/main/java/io/v/nutz/web/controllers/platform/sys/club/SysClubCon.java +++ b/src/main/java/io/v/nutz/web/controllers/platform/sys/club/SysClubCon.java @@ -195,7 +195,7 @@ public class SysClubCon { "\tclub.*,\n" + "\tfzr.username fzrname,\n" + "\tunit.`name` fzr_unit_name,\n" + - "\t( SELECT count( 1 ) FROM sys_club_user scu WHERE scu.clubid = club.id AND scu.`status` = 5 ) cynum \n" + + "\t( SELECT count( 1 ) FROM sys_club_user scu WHERE scu.clubid = club.id and scu.isNormal=true AND scu.`status` = 5 ) cynum \n" + "FROM\n" + "\t`sys_club` club\n" + "\tLEFT JOIN sys_user fzr ON club.fzr = fzr.id\n" + diff --git a/src/main/java/io/v/nutz/web/controllers/platform/sys/club/SysClubUserCon.java b/src/main/java/io/v/nutz/web/controllers/platform/sys/club/SysClubUserCon.java index 8203471..9176c5e 100644 --- a/src/main/java/io/v/nutz/web/controllers/platform/sys/club/SysClubUserCon.java +++ b/src/main/java/io/v/nutz/web/controllers/platform/sys/club/SysClubUserCon.java @@ -100,6 +100,7 @@ public class SysClubUserCon { Cnd cnd = Cnd.NEW(); cnd.and("scu.clubid", "=", clubid); + cnd.and("scu.isNormal", "=", true); cnd.and("scu.status", "in", type == 1 ? new int[]{5} : new int[]{1, 3, 5}); if (Strings.isNotBlank(searchName) && Strings.isNotBlank(searchKeyword)) { diff --git a/src/main/java/io/v/nutz/web/controllers/platform/sys/club/SysClubUserShCon.java b/src/main/java/io/v/nutz/web/controllers/platform/sys/club/SysClubUserShCon.java index 5c762e1..91d4563 100644 --- a/src/main/java/io/v/nutz/web/controllers/platform/sys/club/SysClubUserShCon.java +++ b/src/main/java/io/v/nutz/web/controllers/platform/sys/club/SysClubUserShCon.java @@ -2,6 +2,7 @@ package io.v.nutz.web.controllers.platform.sys.club; import cn.hutool.core.util.StrUtil; import io.v.nutz.annontation.ViReturn; +import io.v.nutz.base.utils.DateUtil; import io.v.nutz.base.utils.PageUtil; import io.v.nutz.base.utils.Roles; import io.v.nutz.sys.services.SysClubService; @@ -48,10 +49,15 @@ public class SysClubUserShCon { public void schoolsh() { } - @At("/mobile") - @Ok("beetl:/mobile/club/clubActivityAudit.html") - public void mobile() { - } + @At("/mobile") + @Ok("beetl:/mobile/club/clubAudit.html") + public void mobile() { + } + + @At("/schoolAudit") + @Ok("beetl:/mobile/club/schoolAudit.html") + public void schoolAudit() { + } @Inject private SysClubService sysClubService; @@ -61,7 +67,16 @@ public class SysClubUserShCon { @At @ViReturn - public Object pageData(String clubid, String searchName, String searchKeyword, int pageNumber, int pageSize, String pageOrderName, String pageOrderBy, Integer radioType, Integer type) { + public Object pageData(String clubid, + String searchName, + String searchKeyword, + int pageNumber, + int pageSize, + String pageOrderName, + String pageOrderBy, + Integer radioType, + Integer type, + Integer applyType) { Sql sql = Sqls.create(""" SELECT scu.*, @@ -80,37 +95,36 @@ public class SysClubUserShCon { LEFT JOIN sys_club club ON scu.clubid = club.id LEFT JOIN `user` u ON scu.userid = u.id $condition + $myOrderBy """); Cnd cnd = Cnd.NEW(); cnd.and("u.username", "is not", null); int status = type == 1 ? 1 : 3; - if (!ShiroUtil.hasAnyRoles(new String[]{"sysadmin", "A06"})) { - if (radioType == 1) { - cnd.and("scu.status", "=", status).or(new Static("JSON_CONTAINS(auditList, JSON_OBJECT('auditUser', '" + ShiroUtil.getPrincipalProperty("id") + "'))")); - } - if (radioType == 2) { - cnd.and("scu.status", ">", status).and(new Static("JSON_CONTAINS(auditList, JSON_OBJECT('auditUser', '" + ShiroUtil.getPrincipalProperty("id") + "'))")); - } - if (radioType == 3) { - cnd.and("scu.status", "=", status); - } - } else { - if (radioType == 1) { - cnd.and("scu.status", "=", status); - } - if (radioType == 2) { - cnd.and("scu.status", ">", status); - } - if (radioType == 3) { - cnd.and("scu.status", "=", status); - } - } + if (radioType == 1) { + if (ShiroUtil.hasAnyRoles(new String[]{"sysadmin"})) { + cnd.and(applyType == 1 ? "scu.status" : "scu.exitStatus", ">=", status); + } else { + cnd.and(applyType == 1 ? "scu.status" : "scu.exitStatus", ">", status); + } + } + if (radioType == 2) { + if (ShiroUtil.hasAnyRoles(new String[]{"sysadmin"})) { + cnd.and(applyType == 1 ? "scu.status" : "scu.exitStatus", ">=", status); + } else { + cnd.and(applyType == 1 ? "scu.status" : "scu.exitStatus", ">", status); + } + } + if (radioType == 3) { + cnd.and(applyType == 1 ? "scu.status" : "scu.exitStatus", "=", status); + } - cnd.andEX("scu.clubid", "=", clubid); + cnd.and("sf", "=", 2); + cnd.and("isNormal", "=", true); + cnd.andEX("scu.clubid", "=", clubid); if (!ShiroUtil.hasAnyRoles(new String[]{"sysadmin", "A06"})) { - if (ShiroUtil.hasRole("H02")) { + if (ShiroUtil.hasAnyRoles("club01, club02, club03, club04, H02")) { cnd.and(new Static(""" scu.clubid IN ( SELECT stid FROM sys_user_role WHERE roleid = '%s' AND userid = '%s' AND stid IS NOT NULL ) """.formatted(Roles.CLUB_FZR, ShiroUtil.getPrincipalProperty("id")))); @@ -121,10 +135,14 @@ public class SysClubUserShCon { cnd.and(searchName, "like", "%" + searchKeyword + "%"); } if (Strings.isNotBlank(pageOrderName) && Strings.isNotBlank(pageOrderBy)) { - cnd.orderBy(pageOrderName, PageUtil.getOrder(pageOrderBy)); + if("auditTime".equals(pageOrderName)) { + sql.setVar("myOrderBy", "ORDER BY JSON_EXTRACT(scu.auditList, '$[0].auditTime') " + PageUtil.getOrder(pageOrderBy)); + } else { + cnd.orderBy(pageOrderName, PageUtil.getOrder(pageOrderBy)); + } } else { /*cnd.asc("scu.status").asc("scu.clubid").asc("scu.sf").desc("scu.join_time");*/ - cnd.and(new Static(" 1=1 order by field(scu.status, 1, 3, 5, 2, 4), scu.clubid asc, scu.join_time desc")); + sql.setVar("myOrderBy", "ORDER BY JSON_EXTRACT(scu.auditList, '$[0].auditTime') DESC"); } sql.setCondition(cnd); return sysClubService.listPageMap(pageNumber, pageSize, sql); @@ -133,36 +151,56 @@ public class SysClubUserShCon { @At @ViReturn - public Object check(String[] ids, Boolean flag, Integer type) { + public Object check(String[] ids, Boolean flag, Integer type, Integer applyType) { Cnd cnd = Cnd.NEW(); cnd.where().andInStrArray("id", ids); int status = 0; if (type == 1) { - status = flag ? 3 : 2; + status = flag ? 5 : 2; } else if (type == 2) { status = flag ? 5 : 4; } List auditList = new ArrayList<>(); - auditList.add(NutMap.NEW().addv("auditUser", ShiroUtil.getPrincipalProperty("id")).addv("auditState", flag)); - sysClubUserService.update(Chain.make("status", status).add("auditList", auditList), cnd); + auditList.add(NutMap.NEW().addv("auditUser", ShiroUtil.getPrincipalProperty("id")).addv("auditState", flag) + .addv("auditTime", DateUtil.getDateTime()).addv("auditType", type == 1 ? "club" : "school")); + if(applyType == 1) { + sysClubUserService.update(Chain.make("status", status) + .add("join_time", cn.hutool.core.date.DateUtil.now()) + .add("auditList", auditList), cnd); + } else { + Chain exitStatus = Chain.make("exitStatus", status).add("exitAuditList", auditList); + if(status == 5) { + exitStatus.add("isNormal", false); + } + sysClubUserService.update(exitStatus, cnd); + } return null; } //获取当前登录用户负责的社团 @At @ViReturn - public Object getMyClub(String searchKeyword, int pageNumber, int pageSize, String clubType) { - Sql sql = Sqls.create(""" - select - club.*, - u.username as fzrname, - (select count(*) from sys_club_user cu where cu.clubid = club.id and status = 1) as no_audit, - (select count(*) from sys_club_user cu where cu.clubid = club.id and JSON_CONTAINS(auditList, JSON_OBJECT('auditUser', @userid))) as has_audit - from - sys_club club - left join `user` u on club.fzr = u.id - $condition - """).setParam("userid", ShiroUtil.getPrincipalProperty("id")); + public Object getMyClub(String searchKeyword, int pageNumber, int pageSize, String clubType, int type, Integer applyType) { + String str = " and %s in ".formatted(applyType == 1 ? "status" : "exitstatus") + (type == 1 ? "('1')" : "('3')"); + String has_str = " and JSON_CONTAINS(%s, JSON_OBJECT('auditUser', '%s')) " + .formatted(applyType == 1 ? "auditList" : "exitAuditList", ShiroUtil.getPrincipalProperty("id")); + int status = type == 1 ? 1 : 3; + if (ShiroUtil.hasAnyRoles(new String[]{"sysadmin"})) { + has_str = " and %s > %s ".formatted(applyType == 1 ? "status" : "exitStatus", status); + } + + Sql sql = Sqls.create("" + + "select " + + "club.*, " + + "u.username as fzrname," + + "(select count(*) from sys_club_user cu where cu.clubid = club.id and sf = '2'" + str + ") as no_audit, " + + "(select count(*) from sys_club_user cu where cu.clubid = club.id and sf = '2'" + has_str + ") as has_audit " + + "from " + + "sys_club club " + + "left join `user` u on club.fzr = u.id " + + "$condition" + + "").setParam("userid", ShiroUtil.getPrincipalProperty("id")); + Cnd cnd = Cnd.NEW(); cnd.and("isjs", "=", false); @@ -184,7 +222,16 @@ public class SysClubUserShCon { //获取社团已审或者未审人员 @At @ViReturn - public Object getClubUser(String id, String auditType) { + public Object getClubUser(String id, String auditType, int type, Integer applyType) { + + String str = type == 1 ? "1" : "3"; + String has_str = " JSON_CONTAINS(%s, JSON_OBJECT('auditUser', '%s')) " + .formatted(applyType == 1 ? "auditList" : "exitAuditList", ShiroUtil.getPrincipalProperty("id")); + int status = type == 1 ? 1 : 3; + if (ShiroUtil.hasAnyRoles(new String[]{"sysadmin"})) { + has_str = " %s > %s ".formatted(applyType == 1 ? "status" : "exitStatus", status); + } + Sql sql = Sqls.create(""" SELECT scu.*, @@ -196,8 +243,7 @@ public class SysClubUserShCon { u.birthday, u.unionname, u.unitname, - club.name clubname, - su.rylx + club.name clubname FROM sys_club_user scu LEFT JOIN sys_club club ON scu.clubid = club.id @@ -207,12 +253,13 @@ public class SysClubUserShCon { """); Cnd cnd = Cnd.NEW(); cnd.and("u.username", "is not", null); + cnd.and("sf", "=", 2); if ("notAudit".equals(auditType)) { - cnd.and("scu.status", "=", 1); - } - if ("hasAudit".equals(auditType)) { - cnd.and(new Static("JSON_CONTAINS(auditList, JSON_OBJECT('auditUser', '" + ShiroUtil.getPrincipalProperty("id") + "'))")); + cnd.and(applyType == 1 ? "scu.status" : "scu.exitStatus", "in", str); } + if ("hasAudit".equals(auditType)) { + cnd.and(new Static(has_str)); + } cnd.andEX("scu.clubid", "=", id); if (!ShiroUtil.hasAnyRoles(new String[]{"sysadmin", "A06"})) { @@ -226,15 +273,18 @@ public class SysClubUserShCon { List list = sysClubService.list(sql); if ("hasAudit".equals(auditType)) { list.forEach(item -> { - List listMap = Json.fromJsonAsList(NutMap.class, item.getString("auditList")); - Boolean auditState = false; - for (NutMap map : listMap) { - if (map.getString("auditUser").equals(ShiroUtil.getPrincipalProperty("id"))) { - auditState = map.get("auditState") == null ? null : map.getBoolean("auditState"); - break; - } - } - item.put("auditState", auditState); + String s = applyType == 1 ? "auditList" : "exitAuditList"; + if (item.getString(s) != null) { + List listMap = Json.fromJsonAsList(NutMap.class, item.getString(s)); + Boolean auditState = false; + for (NutMap map : listMap) { + if (ShiroUtil.hasAnyRoles(new String[]{"sysadmin"}) || map.getString("auditUser").equals(ShiroUtil.getPrincipalProperty("id"))) { + auditState = map.get("auditState") == null ? null : map.getBoolean("auditState"); + break; + } + } + item.put("auditState", auditState); + } }); } return list; diff --git a/src/main/java/io/v/nutz/web/controllers/platform/sys/club/SysClubUserSqCon.java b/src/main/java/io/v/nutz/web/controllers/platform/sys/club/SysClubUserSqCon.java index d519922..f736816 100644 --- a/src/main/java/io/v/nutz/web/controllers/platform/sys/club/SysClubUserSqCon.java +++ b/src/main/java/io/v/nutz/web/controllers/platform/sys/club/SysClubUserSqCon.java @@ -1,15 +1,19 @@ package io.v.nutz.web.controllers.platform.sys.club; import cn.hutool.core.util.StrUtil; +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.PageUtil; +import io.v.nutz.base.utils.Vi; import io.v.nutz.sys.models.Sys_club_user; import io.v.nutz.sys.services.SysClubService; import io.v.nutz.sys.services.SysClubUserService; +import io.v.nutz.web.commons.slog.annotation.SLog; import io.v.nutz.web.commons.utils.ShiroUtil; import org.apache.shiro.authz.annotation.RequiresAuthentication; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.nutz.dao.Chain; import org.nutz.dao.Cnd; import org.nutz.dao.Dao; import org.nutz.dao.Sqls; @@ -21,6 +25,7 @@ import org.nutz.lang.util.NutMap; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; +import java.util.List; import java.util.Objects; /** @@ -62,11 +67,12 @@ public class SysClubUserSqCon { " club.*," + " fzr.username fzrname," + " unit.`name` fzr_unit_name," + - " (SELECT count( 1 ) FROM sys_club_user scu WHERE scu.clubid = club.id AND scu.`status` = 5) cynum," + - " (SELECT count( 1 ) FROM sys_club_user scu WHERE scu.clubid = club.id AND scu.`status` in (1, 3)) approvalnum," + - " (SELECT status FROM sys_club_user scu WHERE scu.clubid = club.id AND scu.userid = @userid) status," + - " (select count(*) from sys_user where userState='在职' and id in (select userid from sys_club_user where clubid = club.id and `status` = 5)) as worknum," + - " (select count(*) from sys_user where userState='退休' and id in (select userid from sys_club_user where clubid = club.id and `status` = 5)) as outnum" + + " (SELECT count( 1 ) FROM sys_club_user scu WHERE scu.clubid = club.id AND scu.`status` = 5 and isNormal = true) cynum," + + " (SELECT count( 1 ) FROM sys_club_user scu WHERE scu.clubid = club.id AND scu.`status` in (1, 3) and isNormal = true) approvalnum," + + " (SELECT status FROM sys_club_user scu WHERE scu.clubid = club.id AND scu.userid = @userid and isNormal = true) status," + + " (SELECT exitStatus FROM sys_club_user scu WHERE scu.clubid = club.id AND scu.userid = @userid and isNormal = true) exitStatus," + + " (select count(*) from sys_user where userState='在职' and id in (select userid from sys_club_user where clubid = club.id and `status` = 5 and isNormal = true)) as worknum," + + " (select count(*) from sys_user where userState='退休' and id in (select userid from sys_club_user where clubid = club.id and `status` = 5 and isNormal = true)) as outnum" + " FROM" + " `sys_club` club" + " LEFT JOIN sys_user fzr ON club.fzr = fzr.id" + @@ -79,9 +85,9 @@ public class SysClubUserSqCon { } if (isjr) { - cnd.and("club.id in (SELECT clubid from sys_club_user WHERE userid = '" + ShiroUtil.getPrincipalProperty("id") + "') and 1", "=", 1); + cnd.and("club.id in (SELECT clubid from sys_club_user WHERE isNormal = true and userid = '" + ShiroUtil.getPrincipalProperty("id") + "') and 1", "=", 1); } else { - cnd.and("club.id not in (SELECT clubid from sys_club_user WHERE userid = '" + ShiroUtil.getPrincipalProperty("id") + "' and status not in (2, 4) ) and 1", "=", 1); + cnd.and("club.id not in (SELECT clubid from sys_club_user WHERE isNormal = true and userid = '" + ShiroUtil.getPrincipalProperty("id") + "' and status not in (2, 4) ) and 1", "=", 1); } if (Strings.isNotBlank(searchName) && Strings.isNotBlank(searchKeyword)) { @@ -110,6 +116,7 @@ public class SysClubUserSqCon { sys_club_user.setSf(2); sys_club_user.setStatus(1); sys_club_user.setIsjf(false); + sys_club_user.setIsNormal(true); sysClubUserService.insert(sys_club_user); return null; } @@ -117,8 +124,8 @@ public class SysClubUserSqCon { @At @ViReturn public Object getCount() { - int hasJoinCount = dao.count("sys_club", Cnd.NEW().and("isjs", "=", false).and("id in (SELECT clubid from sys_club_user WHERE userid = '" + ShiroUtil.getPrincipalProperty("id") + "') and 1", "=", 1)); - int noJoinCount = dao.count("sys_club", Cnd.NEW().and("isjs", "=", false).and("id not in (SELECT clubid from sys_club_user WHERE userid = '" + ShiroUtil.getPrincipalProperty("id") + "' and status not in (2, 4) ) and 1", "=", 1)); + int hasJoinCount = dao.count("sys_club", Cnd.NEW().and("isjs", "=", false).and("id in (SELECT clubid from sys_club_user WHERE isNormal = true and userid = '" + ShiroUtil.getPrincipalProperty("id") + "') and 1", "=", 1)); + int noJoinCount = dao.count("sys_club", Cnd.NEW().and("isjs", "=", false).and("id not in (SELECT clubid from sys_club_user WHERE isNormal = true and userid = '" + ShiroUtil.getPrincipalProperty("id") + "' and status not in (2, 4) ) and 1", "=", 1)); return new NutMap().setv("hasJoinCount", hasJoinCount).setv("noJoinCount", noJoinCount); } @@ -151,4 +158,28 @@ public class SysClubUserSqCon { """).setParam("userid", id); return sysClubUserService.list(sql); } + + @At + @ViReturn + @SLog(type = "club", tag = "申请退会", msg = "申请退会") + public Object exitClub(String id) { + if (StrUtil.isBlank(id)) { + return Result.error("参数为空"); + } + dao.update(Sys_club_user.class, Chain.make("exitStatus", 1) + , Cnd.where("clubid", "=", id).and("userid", "=", ShiroUtil.getPlatformUid())); + return null; + } + + @At + @ViReturn + @SLog(type = "club", tag = "撤销申请退会", msg = "撤销申请退会") + public Object cancelExitClub(String id) { + if (StrUtil.isBlank(id)) { + return Result.error("参数为空"); + } + dao.update(Sys_club_user.class, Chain.make("exitStatus", null) + , Cnd.where("clubid", "=", id).and("userid", "=", ShiroUtil.getPlatformUid())); + return null; + } } diff --git a/src/main/resources/static/assets/mobile/icon/activity/bm.png b/src/main/resources/static/assets/mobile/icon/activity/bm.png deleted file mode 100644 index 4fb0e36..0000000 Binary files a/src/main/resources/static/assets/mobile/icon/activity/bm.png and /dev/null differ diff --git a/src/main/resources/static/assets/mobile/icon/activity/school.png b/src/main/resources/static/assets/mobile/icon/activity/school.png new file mode 100644 index 0000000..a80ce49 Binary files /dev/null and b/src/main/resources/static/assets/mobile/icon/activity/school.png differ diff --git a/src/main/resources/static/assets/mobile/icon/activity/sport.png b/src/main/resources/static/assets/mobile/icon/activity/sport.png new file mode 100644 index 0000000..a85b69d Binary files /dev/null and b/src/main/resources/static/assets/mobile/icon/activity/sport.png differ diff --git a/src/main/resources/static/assets/mobile/icon/club/apply.png b/src/main/resources/static/assets/mobile/icon/club/apply.png index b919c16..de02fa6 100644 Binary files a/src/main/resources/static/assets/mobile/icon/club/apply.png and b/src/main/resources/static/assets/mobile/icon/club/apply.png differ diff --git a/src/main/resources/static/assets/mobile/icon/club/club.png b/src/main/resources/static/assets/mobile/icon/club/club.png index 91fd49a..88749aa 100644 Binary files a/src/main/resources/static/assets/mobile/icon/club/club.png and b/src/main/resources/static/assets/mobile/icon/club/club.png differ diff --git a/src/main/resources/static/assets/mobile/icon/club/school.png b/src/main/resources/static/assets/mobile/icon/club/school.png index fb3b5de..ed174dc 100644 Binary files a/src/main/resources/static/assets/mobile/icon/club/school.png and b/src/main/resources/static/assets/mobile/icon/club/school.png differ diff --git a/src/main/resources/static/assets/mobile/icon/jjpy/建家评议 (1).png b/src/main/resources/static/assets/mobile/icon/jjpy/建家评议 (1).png new file mode 100644 index 0000000..5741dda Binary files /dev/null and b/src/main/resources/static/assets/mobile/icon/jjpy/建家评议 (1).png differ diff --git a/src/main/resources/static/assets/mobile/icon/jjpy/建家评议 (我的).png b/src/main/resources/static/assets/mobile/icon/jjpy/建家评议 (我的).png new file mode 100644 index 0000000..dc35dea Binary files /dev/null and b/src/main/resources/static/assets/mobile/icon/jjpy/建家评议 (我的).png differ diff --git a/src/main/resources/static/assets/mobile/icon/member/apply.png b/src/main/resources/static/assets/mobile/icon/member/apply.png index e8a12eb..8a04740 100644 Binary files a/src/main/resources/static/assets/mobile/icon/member/apply.png and b/src/main/resources/static/assets/mobile/icon/member/apply.png differ diff --git a/src/main/resources/static/assets/mobile/icon/member/audit.png b/src/main/resources/static/assets/mobile/icon/member/audit.png index 20919e6..04b055b 100644 Binary files a/src/main/resources/static/assets/mobile/icon/member/audit.png and b/src/main/resources/static/assets/mobile/icon/member/audit.png differ diff --git a/src/main/resources/static/assets/mobile/icon/member/da.png b/src/main/resources/static/assets/mobile/icon/member/da.png index c66d1fe..a6c397a 100644 Binary files a/src/main/resources/static/assets/mobile/icon/member/da.png and b/src/main/resources/static/assets/mobile/icon/member/da.png differ diff --git a/src/main/resources/static/assets/mobile/icon/member/dashboard.png b/src/main/resources/static/assets/mobile/icon/member/dashboard.png index b0f3a7b..f8885c6 100644 Binary files a/src/main/resources/static/assets/mobile/icon/member/dashboard.png and b/src/main/resources/static/assets/mobile/icon/member/dashboard.png differ diff --git a/src/main/resources/static/assets/mobile/icon/proposal/cx.png b/src/main/resources/static/assets/mobile/icon/proposal/cx.png index 7b388e1..32a18fc 100644 Binary files a/src/main/resources/static/assets/mobile/icon/proposal/cx.png and b/src/main/resources/static/assets/mobile/icon/proposal/cx.png differ diff --git a/src/main/resources/static/assets/mobile/icon/proposal/fy.png b/src/main/resources/static/assets/mobile/icon/proposal/fy.png index b0a95d4..5c5dab0 100644 Binary files a/src/main/resources/static/assets/mobile/icon/proposal/fy.png and b/src/main/resources/static/assets/mobile/icon/proposal/fy.png differ diff --git a/src/main/resources/static/assets/mobile/icon/proposal/myProposal.png b/src/main/resources/static/assets/mobile/icon/proposal/myProposal.png index 15140ee..7235d27 100644 Binary files a/src/main/resources/static/assets/mobile/icon/proposal/myProposal.png and b/src/main/resources/static/assets/mobile/icon/proposal/myProposal.png differ diff --git a/src/main/resources/static/assets/mobile/icon/proposal/search.png b/src/main/resources/static/assets/mobile/icon/proposal/search.png index 5c86793..1d6edb6 100644 Binary files a/src/main/resources/static/assets/mobile/icon/proposal/search.png and b/src/main/resources/static/assets/mobile/icon/proposal/search.png differ diff --git a/src/main/resources/static/assets/mobile/icon/proposal/tz.png b/src/main/resources/static/assets/mobile/icon/proposal/tz.png index 356142f..a44b2f8 100644 Binary files a/src/main/resources/static/assets/mobile/icon/proposal/tz.png and b/src/main/resources/static/assets/mobile/icon/proposal/tz.png differ diff --git a/src/main/resources/static/assets/mobile/icon/site/apply.png b/src/main/resources/static/assets/mobile/icon/site/apply.png index 1b89b29..8895a14 100644 Binary files a/src/main/resources/static/assets/mobile/icon/site/apply.png and b/src/main/resources/static/assets/mobile/icon/site/apply.png differ diff --git a/src/main/resources/static/assets/mobile/icon/site/audit.png b/src/main/resources/static/assets/mobile/icon/site/audit.png index 27509ae..e805fb5 100644 Binary files a/src/main/resources/static/assets/mobile/icon/site/audit.png and b/src/main/resources/static/assets/mobile/icon/site/audit.png differ diff --git a/src/main/resources/static/assets/mobile/icon/site/my.png b/src/main/resources/static/assets/mobile/icon/site/my.png index 3e2c309..2c872f7 100644 Binary files a/src/main/resources/static/assets/mobile/icon/site/my.png and b/src/main/resources/static/assets/mobile/icon/site/my.png differ diff --git a/src/main/resources/static/assets/mobile/icon/train/my.png b/src/main/resources/static/assets/mobile/icon/train/my.png index 422ca9b..a889a1a 100644 Binary files a/src/main/resources/static/assets/mobile/icon/train/my.png and b/src/main/resources/static/assets/mobile/icon/train/my.png differ diff --git a/src/main/resources/static/assets/mobile/icon/train/scan.png b/src/main/resources/static/assets/mobile/icon/train/scan.png new file mode 100644 index 0000000..ac7da3b Binary files /dev/null and b/src/main/resources/static/assets/mobile/icon/train/scan.png differ diff --git a/src/main/resources/static/assets/mobile/icon/train/train.png b/src/main/resources/static/assets/mobile/icon/train/train.png index 84e57f8..7da4ae7 100644 Binary files a/src/main/resources/static/assets/mobile/icon/train/train.png and b/src/main/resources/static/assets/mobile/icon/train/train.png differ diff --git a/src/main/resources/static/assets/mobile/icon/wmhd/apply.png b/src/main/resources/static/assets/mobile/icon/wmhd/apply.png index 99a86c5..7d02319 100644 Binary files a/src/main/resources/static/assets/mobile/icon/wmhd/apply.png and b/src/main/resources/static/assets/mobile/icon/wmhd/apply.png differ diff --git a/src/main/resources/static/assets/platform/img/quickentry/education.png b/src/main/resources/static/assets/platform/img/quickentry/education.png new file mode 100644 index 0000000..6173ec9 Binary files /dev/null and b/src/main/resources/static/assets/platform/img/quickentry/education.png differ diff --git a/src/main/resources/views/mobile/club/clubAudit.html b/src/main/resources/views/mobile/club/clubAudit.html index 1557a58..70628b5 100644 --- a/src/main/resources/views/mobile/club/clubAudit.html +++ b/src/main/resources/views/mobile/club/clubAudit.html @@ -25,8 +25,6 @@ layout("/mobile/platform.html"){ } .van-doc-card .van-button--small { - border-top-right-radius: 16px; - border-bottom-left-radius: 16px; height: 26px; } @@ -112,6 +110,8 @@ layout("/mobile/platform.html"){ + @@ -154,13 +154,6 @@ layout("/mobile/platform.html"){ 会费标准:{{o.dues_standard}} 限定人数:{{o.number}}人 - - - 介绍链接: - {{o.introduce_href}} - - @@ -208,7 +201,6 @@ layout("/mobile/platform.html"){ {{obj.unitname}}
{{obj.sex}} - 13296575967 {{obj.loginname}} @@ -248,6 +240,12 @@ layout("/mobile/platform.html"){ userShow: false, clickRow: {}, typeOptions: [], + type: '', + auditType: '', + applyTypeOptions: [ + {text: '申请加入', value: '1'}, + {text: '申请退会', value: '2'}, + ], } }, methods: { @@ -266,6 +264,7 @@ layout("/mobile/platform.html"){ ids: JSON.stringify(idList), flag: auditType === 'pass', type: 1, + applyType: this.pageForm.applyType, }) if (resp.code === 0) { this.doSearch() @@ -295,11 +294,19 @@ layout("/mobile/platform.html"){ const resp = await $.post('/platform/sys/club/sh/getClubUser', { id: o.id, auditType: 'hasAudit', + type: 1, + applyType: this.pageForm.applyType, }) if (resp.code === 0) { this.userList = resp.data - this.userList.sort((a, b) => { return b.auditstate - a.auditstate }) - this.userShow = true + if (this.userList.length === 0) { + vant.Toast('暂无已审人员') + } else { + this.userList.sort((a, b) => { + return b.auditstate - a.auditstate + }) + this.userShow = true + } } }, async openView(o) { @@ -308,6 +315,8 @@ layout("/mobile/platform.html"){ const resp = await $.post('/platform/sys/club/sh/getClubUser', { id: o.id, auditType: 'notAudit', + type: 1, + applyType: this.pageForm.applyType, }) if (resp.code === 0) { this.userList = resp.data @@ -329,6 +338,7 @@ layout("/mobile/platform.html"){ }, async onLoad() { this.loading = true + this.pageForm.type = 1 $.post('/platform/sys/club/sh/getMyClub', this.pageForm).then(res => { if (res.code === 0) { this.tableData = this.tableData.concat(res.data.list) @@ -349,6 +359,7 @@ layout("/mobile/platform.html"){ }) this.typeOptions.unshift({text: '全部类型'}) this.$set(this.pageForm, "clubType", this.typeOptions[0].value) + this.$set(this.pageForm, "applyType", '1') this.onLoad() } }) @@ -356,4 +367,4 @@ layout("/mobile/platform.html"){ \ No newline at end of file +#--> diff --git a/src/main/resources/views/mobile/club/inClub.html b/src/main/resources/views/mobile/club/inClub.html index 7c60730..458116d 100644 --- a/src/main/resources/views/mobile/club/inClub.html +++ b/src/main/resources/views/mobile/club/inClub.html @@ -25,8 +25,6 @@ layout("/mobile/platform.html"){ } .van-button--small { - border-top-right-radius: 16px; - border-bottom-left-radius: 16px; height: 26px; } @@ -115,29 +113,47 @@ layout("/mobile/platform.html"){
{{o.location}}
-
- 待协会审核 - 协会拒绝 - 待校工会审核 - 校工会拒绝 - 审核通过 -
- 联 系 人:{{o.fzrname}} - 电  话:{{o.fzr_mobile}} + + 联 系 人: + {{o.fzrname}} + + + 电  话: + {{o.fzr_mobile}} + - 会费标准:{{o.dues_standard}} - 限定人数:{{o.number}}人 + + 会费标准: + {{o.dues_standard}} + + + 限定人数: + {{o.number}}人 + - - 介绍链接: - {{o.introduce_href}} + + 入会状态: + 待协会审核 + 协会拒绝 + 待校工会审核 + 校工会拒绝 + 审核通过 + 暂未申请 + + + 退会状态: + 待协会审核 + 协会拒绝 + 待校工会审核 + 校工会拒绝 + 审核通过 + 暂未申请
@@ -146,13 +162,27 @@ layout("/mobile/platform.html"){
- 撤销申请 - 我要加入 - 人数已满 + + 撤销加入申请 + + + 我要加入 + + + + 撤销退会申请 + + + 我要退会 +
@@ -181,6 +211,24 @@ layout("/mobile/platform.html"){ } }, methods: { + exitClub(row) { + vant.Dialog.confirm({title: '提示', message: '您确定要申请退会吗?',}).then(async () => { + const resp = await $.post('/platform/sys/club/sq/exitClub', {id: row.id}) + if (resp.code === 0) { + this.doSearch() + } + vant.Toast(resp.msg) + }).catch(() => {}) + }, + cancelExitClub(id) { + vant.Dialog.confirm({title: '提示', message: '您确定要撤销退会申请吗?',}).then(async () => { + const resp = await $.post('/platform/sys/club/sq/cancelExitClub', {id: id}) + if (resp.code === 0) { + this.doSearch() + } + vant.Toast(resp.msg) + }).catch(() => {}) + }, openView(id) { }, @@ -257,4 +305,4 @@ layout("/mobile/platform.html"){ \ No newline at end of file +#--> diff --git a/src/main/resources/views/mobile/club/schoolAudit.html b/src/main/resources/views/mobile/club/schoolAudit.html new file mode 100644 index 0000000..8168232 --- /dev/null +++ b/src/main/resources/views/mobile/club/schoolAudit.html @@ -0,0 +1,385 @@ + + + + +
+ + + + + + + +
+ + + + + + + + +
+ + +
+ + +
+
+ +
+
+
+ | + {{o.username}} +
+
+
+
+ + + +
+ + + 协会名称: + {{o.clubname}} + + + + + 工  号: + {{o.loginname}} + + + + + 所属单位: + {{o.unitname}} + + + + + 申请时间: + {{o.applytime}} + + +
+ +
+
+ + 查看 + + + 审核 + +
+
+
+
+
+ +
+ + + + + + + +
+ + + + diff --git a/src/main/resources/views/mobile/home.html b/src/main/resources/views/mobile/home.html index 102b4cf..f97b40b 100644 --- a/src/main/resources/views/mobile/home.html +++ b/src/main/resources/views/mobile/home.html @@ -117,24 +117,24 @@ layout("/mobile/platform.html"){ - 会员档案 + 会员档案 - 申请入会 + 申请入会 - 会员审核 + 会员审核 - 会员看板 + 会员看板 @@ -177,25 +177,6 @@ layout("/mobile/platform.html"){ 代表查询 - - - - - - - - - - - - - - - - - - - @@ -216,7 +197,7 @@ layout("/mobile/platform.html"){ - + 扫一扫 @@ -228,15 +209,15 @@ layout("/mobile/platform.html"){ - + 体育活动报名 - + 校活动报名 - + 教工作品征集 \ No newline at end of file +#--> diff --git a/src/main/resources/views/platform/sys/club/sqrt.html b/src/main/resources/views/platform/sys/club/sqrt.html index 4a4de58..ada15be 100644 --- a/src/main/resources/views/platform/sys/club/sqrt.html +++ b/src/main/resources/views/platform/sys/club/sqrt.html @@ -109,7 +109,7 @@ layout("/layouts/platform.html"){ - + + + + + @@ -250,6 +270,44 @@ layout("/layouts/platform.html"){ } }, methods: { + exitClub(row) { + this.$confirm('您确定要申请退会吗?', '提示', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', + callback: async (a, b) => { + if ("confirm" === a) {//确认后再执行 + const resp = await $.post('/platform/sys/club/sq/exitClub', {id: row.id}) + if (resp.code === 0) { + await this.getCount() + this.pageData() + this.$message.success(resp.msg) + } else { + this.$message.warning(resp.msg) + } + } + } + }); + }, + cancelExitClub(id) { + this.$confirm('您确定要撤销申请吗?', '提示', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', + callback: async (a, b) => { + if ("confirm" === a) {//确认后再执行 + const resp = await $.post('/platform/sys/club/sq/cancelExitClub', {id: id}) + if (resp.code === 0) { + await this.getCount() + this.pageData() + this.$message.success(resp.msg) + } else { + this.$message.warning(resp.msg) + } + } + } + }); + }, doRevocation(id) { this.$confirm('是否撤销申请?', '提示', { confirmButtonText: '确定', @@ -394,4 +452,4 @@ layout("/layouts/platform.html"){ \ No newline at end of file +#-->