future = ecs.take();
- future.get(); // 等待任务完成
+ future.get();
} catch (InterruptedException | ExecutionException e) {
- Thread.currentThread().interrupt(); // 恢复中断状态
- throw new RuntimeException(e);
+ Thread.currentThread().interrupt();
+ throw new RuntimeException("Error during batch update", e);
}
}
} catch (Exception e) {
- e.printStackTrace();
+ log.error("Error in massUpdatesAsync", e);
+ throw new RuntimeException("Error in massUpdatesAsync", e);
} finally {
- // 关闭线程池
executorService.shutdown();
try {
- // 设置合理的超时时间,防止无限期阻塞
if (!executorService.awaitTermination(10, TimeUnit.SECONDS)) {
- executorService.shutdownNow(); // 如果超时,强制关闭
+ executorService.shutdownNow();
}
} catch (InterruptedException e) {
- Thread.currentThread().interrupt(); // 恢复中断状态
+ Thread.currentThread().interrupt();
}
}
}
diff --git a/src/main/java/io/v/nutz/zhgh/member/handle/MemberChangeHandle.java b/src/main/java/io/v/nutz/zhgh/member/handle/MemberChangeHandle.java
index 3199738..bdc5f0d 100644
--- a/src/main/java/io/v/nutz/zhgh/member/handle/MemberChangeHandle.java
+++ b/src/main/java/io/v/nutz/zhgh/member/handle/MemberChangeHandle.java
@@ -10,6 +10,7 @@ import io.v.nutz.sys.services.SysRoleService;
import io.v.nutz.sys.services.SysUserService;
import io.v.nutz.zhgh.data.constant.UserChangeType;
import io.v.nutz.zhgh.data.model.UserHistory;
+import io.v.nutz.zhgh.member.MemberMode;
import io.v.nutz.zhgh.member.UserMode;
import io.v.nutz.zhgh.member.WelfareMemberMode;
import io.v.nutz.zhgh.member.constant.MemberStatus;
@@ -49,13 +50,10 @@ public enum MemberChangeHandle {
@Override
public void change(MemberChangeRecord record) {
archive(record.getUserId(), UserChangeType.NEW);
- if (null != record.getInsertMember() && record.getInsertMember()){
- UserMode.addMemberRole(record.getUserId());
+ if (null != record.getUpdateMember() && record.getUpdateMember()){
sysUserService.update(Chain.make("schoolTime", DateUtil.today()),Cnd.where("id","=",record.getUserId()));
}
- if (null != record.getUpdateWelfareMember() && record.getUpdateWelfareMember()) {
- sysUserService.update(Chain.make("welfareMember", WelfareMemberMode.NORMAL.getCode()).add("schoolTime", DateUtil.today()), Cnd.where("id", "=", record.getUserId()));
- }
+ updateMemberAndWelfareMember(record);
sysUserService.clearCache();
sysRoleService.clearCache();
}
@@ -65,8 +63,8 @@ public enum MemberChangeHandle {
public void change(MemberChangeRecord record) {
archive(record.getUserId(), UserChangeType.RESIGN);
UserMode.removeMemberRole(record.getUserId());
- updateWelfareMember(record);
- updateMemberStatus(MemberStatus.TURN_OUT, record.getUserId());
+ updateMemberAndWelfareMember(record);
+// updateMemberStatus(MemberStatus.TURN_OUT, record.getUserId());
updateUserStateAndPersonType(record);
}
},
@@ -85,8 +83,8 @@ public enum MemberChangeHandle {
public void change(MemberChangeRecord record) {
archive(record.getUserId(), UserChangeType.RETIREMENT);
UserMode.removeMemberRole(record.getUserId());
- updateWelfareMember(record);
- updateMemberStatus(MemberStatus.KEEP, record.getUserId());
+ updateMemberAndWelfareMember(record);
+// updateMemberStatus(MemberStatus.KEEP, record.getUserId());
updateUserStateAndPersonType(record);
}
},
@@ -106,9 +104,7 @@ public enum MemberChangeHandle {
archive(record.getUserId(), UserChangeType.RESTORE);
UserMode.addMemberRole(record.getUserId());
updateMemberStatus(MemberStatus.RESTORE, record.getUserId());
- if (record.getUpdateWelfareMember()) {
- sysUserService.update(Chain.make("welfareMember", WelfareMemberMode.NORMAL.getCode()), Cnd.where("id", "=", record.getUserId()));
- }
+ updateMemberAndWelfareMember(record);
}
},
WITHDRAWAL(UserChangeType.WITHDRAWAL.getCode()) {
@@ -116,7 +112,7 @@ public enum MemberChangeHandle {
public void change(MemberChangeRecord record) {
archive(record.getUserId(), UserChangeType.WITHDRAWAL);
UserMode.removeMemberRole(record.getUserId());
- updateWelfareMember(record);
+ updateMemberAndWelfareMember(record);
updateMemberStatus(MemberStatus.WITHDRAWAL, record.getUserId());
updateUserStateAndPersonType(record);
}
@@ -171,14 +167,17 @@ public enum MemberChangeHandle {
*
* @param record 变更记录
*/
- public static void updateWelfareMember(MemberChangeRecord record) {
- //record.getUpdateWelfareMember() (true:增加福利会员 false:取消福利会员);针对入会(恢复)
- if (null != record.getUpdateWelfareMember() && record.getUpdateWelfareMember()) {
- sysUserService.update(Chain.make("welfareMember", WelfareMemberMode.NORMAL.getCode()), Cnd.where("id", "=", record.getUserId()));
+ public static void updateMemberAndWelfareMember(MemberChangeRecord record) {
+ if (null != record.getUpdateWelfareMember()) {
+ sysUserService.update(Chain.make("welfareMember", record.getUpdateWelfareMember() ? WelfareMemberMode.NORMAL.getCode() : WelfareMemberMode.NONE.getCode()), Cnd.where("id", "=", record.getUserId()));
}
- //record.getUpdateWelfare() (true:取消 false:不取消);针对(退休、离职、退会、去世)
- if (null != record.getUpdateWelfare() && record.getUpdateWelfare()){
- sysUserService.update(Chain.make("welfareMember", WelfareMemberMode.NONE.getCode()), Cnd.where("id", "=", record.getUserId()));
+ if (null != record.getUpdateMember()){
+ sysUserService.update(Chain.make("member", record.getUpdateMember() ? MemberMode.NORMAL.getCode() : MemberMode.NONE.getCode()), Cnd.where("id", "=", record.getUserId()));
+ }
+ if (null != record.getUpdateMember() && record.getUpdateMember()) {
+ UserMode.addMemberRole(record.getUserId());
+ } else {
+ UserMode.removeMemberRole(record.getUserId());
}
}
@@ -199,13 +198,11 @@ public enum MemberChangeHandle {
* @param record 变更记录
*/
public static void updateUserStateAndPersonType(MemberChangeRecord record){
- Chain chain = null;
- if (Strings.isNotBlank(record.getChangeUserState()) && Strings.isNotBlank(record.getChangePersonType())){
- chain = Chain.make("userState",record.getChangeUserState()).add("personType",record.getChangePersonType());
- } else if (Strings.isNotBlank(record.getChangeUserState()) && Strings.isBlank(record.getChangePersonType())){
- chain = Chain.make("userState",record.getChangeUserState());
- } else if (Strings.isBlank(record.getChangeUserState()) && Strings.isNotBlank(record.getChangePersonType())){
- chain = Chain.make("personType",record.getChangePersonType());
+ Chain chain = Chain.make("eCard",null);
+ if (Strings.isNotBlank(record.getChangeUserState())) {
+ chain.add("userState", record.getChangeUserState());
+ } else if (Strings.isNotBlank(record.getChangePersonType())) {
+ chain.add("personType", record.getChangePersonType());
}
sysUserService.update(chain,Cnd.where("id","=",record.getUserId()));
}
diff --git a/src/main/java/io/v/nutz/zhgh/member/model/MemberChangeRecord.java b/src/main/java/io/v/nutz/zhgh/member/model/MemberChangeRecord.java
index 3bb9b06..1b64495 100644
--- a/src/main/java/io/v/nutz/zhgh/member/model/MemberChangeRecord.java
+++ b/src/main/java/io/v/nutz/zhgh/member/model/MemberChangeRecord.java
@@ -124,16 +124,6 @@ public class MemberChangeRecord {
@ColDefine(type = ColType.BOOLEAN)
private Boolean updateMember;
- @Column
- @Comment("福利会员身份(true:取消 false:不取消);针对(退休、离职、退会、去世)")
- @ColDefine(type = ColType.BOOLEAN)
- private Boolean updateWelfare;
-
- @Column
- @Comment("是否增加会员身份(true:增加 false:不增加)")
- @ColDefine(type = ColType.BOOLEAN)
- private Boolean insertMember;
-
@Column
@Comment("身份证号异动")
@ColDefine(type = ColType.VARCHAR, width = 30)
diff --git a/src/main/java/org/nutz/boot/starter/shiro/NbShiroEnvironmentLoaderListener.java b/src/main/java/org/nutz/boot/starter/shiro/NbShiroEnvironmentLoaderListener.java
new file mode 100644
index 0000000..efb9ce0
--- /dev/null
+++ b/src/main/java/org/nutz/boot/starter/shiro/NbShiroEnvironmentLoaderListener.java
@@ -0,0 +1,86 @@
+package org.nutz.boot.starter.shiro;
+
+import java.io.IOException;
+
+import javax.servlet.ServletContext;
+import javax.servlet.ServletContextEvent;
+
+import org.apache.shiro.ShiroException;
+import org.apache.shiro.config.ConfigurationException;
+import org.apache.shiro.util.ClassUtils;
+import org.apache.shiro.util.UnknownClassException;
+import org.apache.shiro.web.env.EnvironmentLoader;
+import org.apache.shiro.web.env.EnvironmentLoaderListener;
+import org.apache.shiro.web.env.IniWebEnvironment;
+import org.apache.shiro.web.env.WebEnvironment;
+import org.nutz.boot.AppContext;
+import org.nutz.ioc.impl.PropertiesProxy;
+import org.nutz.lang.Lang;
+
+public class NbShiroEnvironmentLoaderListener extends EnvironmentLoaderListener {
+
+ protected PropertiesProxy conf;
+
+ protected AppContext appContext;
+
+ @Override
+ public void contextInitialized(ServletContextEvent sce) {
+ PropertiesProxy conf = appContext.getConfigureLoader().get();
+ try {
+ // 走原生API的shiro.ini文件吗?
+ String iniPath = conf.get("shiro.ini.path", "shiro.ini");
+ if (conf.has("shiro.ini.path") || appContext.getResourceLoader().has(iniPath)) {
+ sce.getServletContext().setAttribute(EnvironmentLoader.CONFIG_LOCATIONS_PARAM, iniPath);
+ super.contextInitialized(sce);
+ return;
+ }
+ } catch (Exception e) {
+ throw Lang.wrapThrow(e);
+ }
+ sce.getServletContext().setAttribute(ENVIRONMENT_CLASS_PARAM, NbResourceBasedWebEnvironment.class.getName());
+ super.contextInitialized(sce);
+ }
+
+ protected WebEnvironment determineWebEnvironment(ServletContext servletContext) {
+// Class extends WebEnvironment> webEnvironmentClass = this.webEnvironmentClassFromServletContext(servletContext);
+// WebEnvironment webEnvironment = null;
+// if (webEnvironmentClass == null) {
+// webEnvironment = this.webEnvironmentFromServiceLoader();
+// }
+//
+// if (webEnvironmentClass == null && webEnvironment == null) {
+// webEnvironmentClass = this.getDefaultWebEnvironmentClass();
+// }
+//
+// if (webEnvironmentClass != null) {
+// webEnvironment = (WebEnvironment)ClassUtils.newInstance(webEnvironmentClass);
+// }
+//
+// return webEnvironment;
+// String className = servletContext.getInitParameter(ENVIRONMENT_CLASS_PARAM);
+ WebEnvironment webEnvironment = (WebEnvironment)ClassUtils.newInstance(NbResourceBasedWebEnvironment.class);
+ return webEnvironment;
+ }
+
+ protected Class> determineWebEnvironmentClass(ServletContext servletContext) {
+ String className = servletContext.getInitParameter(ENVIRONMENT_CLASS_PARAM);
+ if (className != null) {
+ try {
+ return ClassUtils.forName(className);
+ } catch (UnknownClassException ex) {
+ throw new ConfigurationException(
+ "Failed to load custom WebEnvironment class [" + className + "]", ex);
+ }
+ } else {
+ try {
+ String iniPath = conf.get("shiro.ini.path", "shiro.ini");
+ if (conf.has("shiro.ini.path") || appContext.getResourceLoader().has(iniPath)) {
+ return IniWebEnvironment.class;
+ }
+ } catch (IOException e) {
+ throw new ShiroException(e);
+ }
+ return NbResourceBasedWebEnvironment.class;
+ }
+ }
+}
diff --git a/src/main/resources/static/components/member/MemChangeApply.vue b/src/main/resources/static/components/member/MemChangeApply.vue
index befbf89..6789810 100644
--- a/src/main/resources/static/components/member/MemChangeApply.vue
+++ b/src/main/resources/static/components/member/MemChangeApply.vue
@@ -87,18 +87,24 @@
-
-
- 享受福利
- 不享受福利
-
-
-
-
- 成为会员
- 不成为会员
-
-
+
+
+
+
+ 享受福利
+ 不享受福利
+
+
+
+
+
+
+ 成为会员
+ 不成为会员
+
+
+
+
@@ -111,23 +117,30 @@
-
-
- 保留享受福利
- 取消享受福利
-
-
-
+
+
+
+
+ 保留享受福利
+ 取消享受福利
+
+
+
+
+
+
+ 保留会员资格
+ 取消会员资格
+
+
+
+
-
-
- 取消会员资格
- 保留会员资格
-
-
+
-
+
+
+