commit
This commit is contained in:
+14
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"printWidth": 150,
|
||||||
|
"singleQuote": false,
|
||||||
|
"tabWidth": 4,
|
||||||
|
"semi": false,
|
||||||
|
"trailingComma": "none",
|
||||||
|
"bracketSpacing": true,
|
||||||
|
"arrowParens": "always",
|
||||||
|
"rangeStart": 0,
|
||||||
|
"htmlWhitespaceSensitivity": "ignore",
|
||||||
|
"vueIndentScriptAndStyle": false,
|
||||||
|
"endOfLine": "auto",
|
||||||
|
"useTabs": false
|
||||||
|
}
|
||||||
@@ -165,6 +165,13 @@
|
|||||||
</exclusion>
|
</exclusion>
|
||||||
</exclusions>
|
</exclusions>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.shiro</groupId>
|
||||||
|
<artifactId>shiro-web</artifactId>
|
||||||
|
<version>1.9.1</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.nutz</groupId>
|
<groupId>org.nutz</groupId>
|
||||||
<artifactId>nutzboot-starter-shiro</artifactId>
|
<artifactId>nutzboot-starter-shiro</artifactId>
|
||||||
@@ -803,6 +810,14 @@
|
|||||||
</configuration>
|
</configuration>
|
||||||
</plugin>
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
<includes>
|
||||||
|
<include>**/*</include>
|
||||||
|
</includes>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
</build>
|
</build>
|
||||||
<repositories>
|
<repositories>
|
||||||
<repository>
|
<repository>
|
||||||
|
|||||||
@@ -53,9 +53,9 @@ public class Globals {
|
|||||||
//项目短名称
|
//项目短名称
|
||||||
public static String AppShrotName = "";
|
public static String AppShrotName = "";
|
||||||
//项目域名 (设置一个默认的 为优先级考虑)
|
//项目域名 (设置一个默认的 为优先级考虑)
|
||||||
public static String AppDomain = "https://zhgh.zufe.edu.cn";
|
public static String AppDomain = "https://zhgh.hmc.edu.cn";
|
||||||
//cas地址
|
//cas地址
|
||||||
public static String CasAddress = "https://cas.zufe.edu.cn/cas";
|
public static String CasAddress = "https://newca.hmc.edu.cn/cas";
|
||||||
//文件访问域名
|
//文件访问域名
|
||||||
public static String AppFileDomain = "";
|
public static String AppFileDomain = "";
|
||||||
//文件上传路径
|
//文件上传路径
|
||||||
@@ -69,7 +69,7 @@ public class Globals {
|
|||||||
//微信map
|
//微信map
|
||||||
public static NutMap WxMap = NutMap.NEW();
|
public static NutMap WxMap = NutMap.NEW();
|
||||||
//高校名称
|
//高校名称
|
||||||
public static String schoolName = "浙江财经大学";
|
public static String schoolName = "杭州医学院";
|
||||||
|
|
||||||
public static String BrandActivityName = "";
|
public static String BrandActivityName = "";
|
||||||
|
|
||||||
@@ -122,9 +122,11 @@ public class Globals {
|
|||||||
List<Sys_task> taskList = sysTaskService.query();
|
List<Sys_task> taskList = sysTaskService.query();
|
||||||
for (Sys_task sysTask : taskList) {
|
for (Sys_task sysTask : taskList) {
|
||||||
try {
|
try {
|
||||||
if (!sysTask.isDisabled())//不存在则新建
|
if (!sysTask.isDisabled()) {
|
||||||
|
//不存在则新建
|
||||||
taskPlatformService.add(sysTask.getId(), sysTask.getId(), sysTask.getJobClass(), sysTask.getCron()
|
taskPlatformService.add(sysTask.getId(), sysTask.getId(), sysTask.getJobClass(), sysTask.getCron()
|
||||||
, sysTask.getNote(), sysTask.getData());
|
, sysTask.getNote(), sysTask.getData());
|
||||||
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ public interface SourceData {
|
|||||||
* @param jsonResult 接口返回数据
|
* @param jsonResult 接口返回数据
|
||||||
*/
|
*/
|
||||||
private static void checkSuccess(NutMap jsonResult) {
|
private static void checkSuccess(NutMap jsonResult) {
|
||||||
Assert.isTrue(jsonResult.getBoolean("success"), jsonResult.getString("data"));
|
// Assert.isTrue(jsonResult.getBoolean("success"), jsonResult.getString("data"));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* *//**
|
/* *//**
|
||||||
@@ -157,10 +157,8 @@ public interface SourceData {
|
|||||||
while (hasRecords) {
|
while (hasRecords) {
|
||||||
String body = HttpUtil.createPost(DATA_URL).body(JSON.toJSONString(new NutMap().addv("address", "jzgjbxx").addv("params", new NutMap())
|
String body = HttpUtil.createPost(DATA_URL).body(JSON.toJSONString(new NutMap().addv("address", "jzgjbxx").addv("params", new NutMap())
|
||||||
.addv("token", "3318a5a9-c2f2-4c8b-a8ea-e99dd68c165c").addv("pageIndex", page).addv("pageSize", 1000))).execute().body();
|
.addv("token", "3318a5a9-c2f2-4c8b-a8ea-e99dd68c165c").addv("pageIndex", page).addv("pageSize", 1000))).execute().body();
|
||||||
// String body = HttpUtil.get(DATA_URL, new NutMap().addv("address", "jzgjbxx").addv("params", new NutMap())
|
|
||||||
// .addv("token", "3318a5a9-c2f2-4c8b-a8ea-e99dd68c165c").addv("pageIndex", page).addv("pageSize", 1000));
|
|
||||||
NutMap map = Json.fromJson(NutMap.class, body);
|
NutMap map = Json.fromJson(NutMap.class, body);
|
||||||
checkSuccess(map);
|
// checkSuccess(map);
|
||||||
List<NutMap> data = map.getAsList("data", NutMap.class);
|
List<NutMap> data = map.getAsList("data", NutMap.class);
|
||||||
for (NutMap row : data) {
|
for (NutMap row : data) {
|
||||||
Map entity = new HashMap(1000);
|
Map entity = new HashMap(1000);
|
||||||
@@ -179,7 +177,7 @@ public interface SourceData {
|
|||||||
users.add(BeanUtil.mapToBean(entity, UserSource.class, true));
|
users.add(BeanUtil.mapToBean(entity, UserSource.class, true));
|
||||||
}
|
}
|
||||||
int totalCount = map.getInt("totalCount");
|
int totalCount = map.getInt("totalCount");
|
||||||
maxPage = (int) Math.ceil((double) totalCount / page);
|
maxPage = (int) Math.ceil((double) totalCount / 1000);
|
||||||
page++;
|
page++;
|
||||||
if (page > maxPage) {
|
if (page > maxPage) {
|
||||||
hasRecords = false;
|
hasRecords = false;
|
||||||
@@ -212,11 +210,11 @@ public interface SourceData {
|
|||||||
List<Sys_unit> units = new ArrayList<>();
|
List<Sys_unit> units = new ArrayList<>();
|
||||||
int page = 1;
|
int page = 1;
|
||||||
String body = HttpUtil.createPost(DATA_URL).body(JSON.toJSONString(new NutMap().addv("address", "rsxt_dwjbsj").addv("params", new NutMap())
|
String body = HttpUtil.createPost(DATA_URL).body(JSON.toJSONString(new NutMap().addv("address", "rsxt_dwjbsj").addv("params", new NutMap())
|
||||||
.addv("token", "3318a5a9-c2f2-4c8b-a8ea-e99dd68c165c").addv("pageIndex", page).addv("pageSize", 1000))).execute().body();
|
.addv("token", "3318a5a9-c2f2-4c8b-a8ea-e99dd68c165c").addv("pageIndex", page).addv("pageSize", 100))).execute().body();
|
||||||
// String body = HttpUtil.get(DATA_URL, new NutMap().addv("address", "rsxt_dwjbsj").addv("params", new NutMap())
|
// String body = HttpUtil.get(DATA_URL, new NutMap().addv("address", "rsxt_dwjbsj").addv("params", new NutMap())
|
||||||
// .addv("token", "3318a5a9-c2f2-4c8b-a8ea-e99dd68c165c").addv("pageIndex", page).addv("pageSize", 1000));
|
// .addv("token", "3318a5a9-c2f2-4c8b-a8ea-e99dd68c165c").addv("pageIndex", page).addv("pageSize", 1000));
|
||||||
NutMap map = Json.fromJson(NutMap.class, body);
|
NutMap map = Json.fromJson(NutMap.class, body);
|
||||||
checkSuccess(map);
|
// checkSuccess(map);
|
||||||
List<NutMap> data = map.getAsList("data", NutMap.class);
|
List<NutMap> data = map.getAsList("data", NutMap.class);
|
||||||
|
|
||||||
for (NutMap row : data) {
|
for (NutMap row : data) {
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package io.v.nutz.zhgh.data.service.impl;
|
package io.v.nutz.zhgh.data.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
|
||||||
import cn.hutool.core.date.DateTime;
|
import cn.hutool.core.date.DateTime;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
@@ -14,7 +13,6 @@ import io.v.nutz.zhgh.data.model.UserHistory;
|
|||||||
import io.v.nutz.zhgh.data.model.UserSource;
|
import io.v.nutz.zhgh.data.model.UserSource;
|
||||||
import io.v.nutz.zhgh.data.service.HistoryUserService;
|
import io.v.nutz.zhgh.data.service.HistoryUserService;
|
||||||
import io.v.nutz.zhgh.data.service.SourceUserService;
|
import io.v.nutz.zhgh.data.service.SourceUserService;
|
||||||
import io.v.nutz.base.lang.Enum;
|
|
||||||
import io.v.nutz.zhgh.member.UserMode;
|
import io.v.nutz.zhgh.member.UserMode;
|
||||||
import io.v.nutz.base.service.AsyncService;
|
import io.v.nutz.base.service.AsyncService;
|
||||||
import io.v.nutz.base.service.impl.ViServiceImpl;
|
import io.v.nutz.base.service.impl.ViServiceImpl;
|
||||||
@@ -30,7 +28,6 @@ import org.nutz.dao.Cnd;
|
|||||||
import org.nutz.dao.Dao;
|
import org.nutz.dao.Dao;
|
||||||
import org.nutz.dao.FieldFilter;
|
import org.nutz.dao.FieldFilter;
|
||||||
import org.nutz.dao.Sqls;
|
import org.nutz.dao.Sqls;
|
||||||
import org.nutz.dao.entity.Record;
|
|
||||||
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.ioc.aop.Aop;
|
import org.nutz.ioc.aop.Aop;
|
||||||
@@ -47,9 +44,10 @@ import org.springframework.util.StringUtils;
|
|||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.*;
|
import java.util.concurrent.*;
|
||||||
import java.util.concurrent.atomic.AtomicReference;
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
|
import java.util.concurrent.locks.Lock;
|
||||||
|
import java.util.concurrent.locks.ReentrantLock;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author 1V
|
* @author 1V
|
||||||
*/
|
*/
|
||||||
@@ -83,12 +81,6 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
|
|||||||
public void pullSourceData(Boolean isIncrement) {
|
public void pullSourceData(Boolean isIncrement) {
|
||||||
Date now = new Date();
|
Date now = new Date();
|
||||||
List<UserSource> users = SourceData.users();
|
List<UserSource> users = SourceData.users();
|
||||||
/* List<UserSource> userSourceList = users.stream().filter(v -> !v.getUserState().equals("离校")).collect(Collectors.toList());
|
|
||||||
//离退休劳模,要更新到系统
|
|
||||||
List<String> userPartUpLoginNameList = userPatUpService.query(Cnd.where("groupId", "=", 2)).stream().map(UserPartUp::getLoginname).collect(Collectors.toList());
|
|
||||||
//离退休超过两年
|
|
||||||
List<UserSource> retireUser = userSourceList.stream().filter(v -> v.getRetireDate() != null && DateUtil.betweenYear(v.getRetireDate(), DateUtil.date(), false) > 2L && !userPartUpLoginNameList.contains(v.getLoginname())).collect(Collectors.toList());
|
|
||||||
users = userSourceList.stream().filter(v -> !retireUser.contains(v)).collect(Collectors.toList());*/
|
|
||||||
asyncService.exe2(users, (user) -> {
|
asyncService.exe2(users, (user) -> {
|
||||||
user.setPullTime(now);
|
user.setPullTime(now);
|
||||||
UserMode.initUser(user);
|
UserMode.initUser(user);
|
||||||
@@ -176,7 +168,7 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
List<UserChangeType> changeTypes = getChangeTypes(source, user);
|
List<UserChangeType> changeTypes = getChangeTypes(source, user, sourceType);
|
||||||
if (changeTypes.contains(UserChangeType.NEW)) {
|
if (changeTypes.contains(UserChangeType.NEW)) {
|
||||||
user = UserMode.initUser(u);
|
user = UserMode.initUser(u);
|
||||||
needInitUserList.add(user);
|
needInitUserList.add(user);
|
||||||
@@ -220,6 +212,7 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
|
|||||||
// sysRoleService.clearCache();
|
// sysRoleService.clearCache();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
throw new RuntimeException(e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -237,11 +230,14 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
|
|||||||
dao().clear(UserSource.class, Cnd.where("DATE(pullTime)", "<", formatAgoWeekDate));
|
dao().clear(UserSource.class, Cnd.where("DATE(pullTime)", "<", formatAgoWeekDate));
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<UserChangeType> getChangeTypes(Sys_user source, Sys_user user) {
|
private List<UserChangeType> getChangeTypes(Sys_user source, Sys_user user, String sourceType) {
|
||||||
List<UserChangeType> userChangeTypes = new ArrayList<>();
|
List<UserChangeType> userChangeTypes = new ArrayList<>();
|
||||||
if (user == null) {
|
if (user == null) {
|
||||||
userChangeTypes.add(UserChangeType.NEW);
|
userChangeTypes.add(UserChangeType.NEW);
|
||||||
return userChangeTypes;
|
return userChangeTypes;
|
||||||
|
} else {
|
||||||
|
if ("add".equals(sourceType)) {
|
||||||
|
return userChangeTypes;
|
||||||
}
|
}
|
||||||
if (!StringUtils.isEmpty(source.getUnitid()) && !source.getUnitid().equals(user.getUnitid())) {
|
if (!StringUtils.isEmpty(source.getUnitid()) && !source.getUnitid().equals(user.getUnitid())) {
|
||||||
userChangeTypes.add(UserChangeType.UNIT_CHANGE);
|
userChangeTypes.add(UserChangeType.UNIT_CHANGE);
|
||||||
@@ -265,7 +261,7 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return userChangeTypes;
|
return userChangeTypes;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -304,53 +300,51 @@ public class SourceUserServiceImpl extends ViServiceImpl<UserSource> implements
|
|||||||
* @param filterColumnDao 部分更新传递(部分更新存在过滤字段)
|
* @param filterColumnDao 部分更新传递(部分更新存在过滤字段)
|
||||||
*/
|
*/
|
||||||
private void massUpdatesAsync(List<Sys_user> needDoUpdateList, Boolean isPart, AtomicReference<Dao> filterColumnDao) {
|
private void massUpdatesAsync(List<Sys_user> needDoUpdateList, Boolean isPart, AtomicReference<Dao> filterColumnDao) {
|
||||||
// 根据服务器性能和任务特性动态确定线程池大小;通常,线程池大小为CPU核心数的2倍
|
// 创建一个CPU核心数的2倍的线程池
|
||||||
int numberOfThreads = Runtime.getRuntime().availableProcessors() * 2;
|
int numberOfThreads = Runtime.getRuntime().availableProcessors() * 2;
|
||||||
ExecutorService executorService = Executors.newFixedThreadPool(numberOfThreads);
|
ExecutorService executorService = Executors.newFixedThreadPool(numberOfThreads);
|
||||||
ExecutorCompletionService<Void> ecs = new ExecutorCompletionService<>(executorService);
|
ExecutorCompletionService<Void> ecs = new ExecutorCompletionService<>(executorService);
|
||||||
|
|
||||||
// 每批处理的数据量
|
int batchSize = 200;
|
||||||
int batchSize = 100;
|
// 共享锁
|
||||||
|
Lock lock = new ReentrantLock();
|
||||||
try {
|
try {
|
||||||
// 将sources分成若干批
|
|
||||||
for (int i = 0; i < needDoUpdateList.size(); i += batchSize) {
|
for (int i = 0; i < needDoUpdateList.size(); i += batchSize) {
|
||||||
final int end = Math.min(i + batchSize, needDoUpdateList.size());
|
final int end = Math.min(i + batchSize, needDoUpdateList.size());
|
||||||
List<Sys_user> batch = needDoUpdateList.subList(i, end);
|
List<Sys_user> batch = needDoUpdateList.subList(i, end);
|
||||||
|
|
||||||
// 提交任务给线程池执行
|
|
||||||
ecs.submit(() -> {
|
ecs.submit(() -> {
|
||||||
Dao daoToUse = isPart ? filterColumnDao.get() : dao();
|
Dao daoToUse = isPart ? filterColumnDao.get() : dao();
|
||||||
// 执行数据库更新操作
|
lock.lock();
|
||||||
synchronized (daoToUse) {
|
try {
|
||||||
daoToUse.updateIgnoreNull(batch);
|
daoToUse.updateIgnoreNull(batch);
|
||||||
|
} finally {
|
||||||
|
lock.unlock();
|
||||||
}
|
}
|
||||||
return null; // CompletionService需要一个返回值,这里返回null
|
return null;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 等待所有任务完成
|
|
||||||
for (int i = 0; i < needDoUpdateList.size(); i += batchSize) {
|
for (int i = 0; i < needDoUpdateList.size(); i += batchSize) {
|
||||||
try {
|
try {
|
||||||
Future<Void> future = ecs.take();
|
Future<Void> future = ecs.take();
|
||||||
future.get(); // 等待任务完成
|
future.get();
|
||||||
} catch (InterruptedException | ExecutionException e) {
|
} catch (InterruptedException | ExecutionException e) {
|
||||||
Thread.currentThread().interrupt(); // 恢复中断状态
|
Thread.currentThread().interrupt();
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException("Error during batch update", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
log.error("Error in massUpdatesAsync", e);
|
||||||
|
throw new RuntimeException("Error in massUpdatesAsync", e);
|
||||||
} finally {
|
} finally {
|
||||||
// 关闭线程池
|
|
||||||
executorService.shutdown();
|
executorService.shutdown();
|
||||||
try {
|
try {
|
||||||
// 设置合理的超时时间,防止无限期阻塞
|
|
||||||
if (!executorService.awaitTermination(10, TimeUnit.SECONDS)) {
|
if (!executorService.awaitTermination(10, TimeUnit.SECONDS)) {
|
||||||
executorService.shutdownNow(); // 如果超时,强制关闭
|
executorService.shutdownNow();
|
||||||
}
|
}
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
Thread.currentThread().interrupt(); // 恢复中断状态
|
Thread.currentThread().interrupt();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import io.v.nutz.sys.services.SysRoleService;
|
|||||||
import io.v.nutz.sys.services.SysUserService;
|
import io.v.nutz.sys.services.SysUserService;
|
||||||
import io.v.nutz.zhgh.data.constant.UserChangeType;
|
import io.v.nutz.zhgh.data.constant.UserChangeType;
|
||||||
import io.v.nutz.zhgh.data.model.UserHistory;
|
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.UserMode;
|
||||||
import io.v.nutz.zhgh.member.WelfareMemberMode;
|
import io.v.nutz.zhgh.member.WelfareMemberMode;
|
||||||
import io.v.nutz.zhgh.member.constant.MemberStatus;
|
import io.v.nutz.zhgh.member.constant.MemberStatus;
|
||||||
@@ -49,13 +50,10 @@ public enum MemberChangeHandle {
|
|||||||
@Override
|
@Override
|
||||||
public void change(MemberChangeRecord record) {
|
public void change(MemberChangeRecord record) {
|
||||||
archive(record.getUserId(), UserChangeType.NEW);
|
archive(record.getUserId(), UserChangeType.NEW);
|
||||||
if (null != record.getInsertMember() && record.getInsertMember()){
|
if (null != record.getUpdateMember() && record.getUpdateMember()){
|
||||||
UserMode.addMemberRole(record.getUserId());
|
|
||||||
sysUserService.update(Chain.make("schoolTime", DateUtil.today()),Cnd.where("id","=",record.getUserId()));
|
sysUserService.update(Chain.make("schoolTime", DateUtil.today()),Cnd.where("id","=",record.getUserId()));
|
||||||
}
|
}
|
||||||
if (null != record.getUpdateWelfareMember() && record.getUpdateWelfareMember()) {
|
updateMemberAndWelfareMember(record);
|
||||||
sysUserService.update(Chain.make("welfareMember", WelfareMemberMode.NORMAL.getCode()).add("schoolTime", DateUtil.today()), Cnd.where("id", "=", record.getUserId()));
|
|
||||||
}
|
|
||||||
sysUserService.clearCache();
|
sysUserService.clearCache();
|
||||||
sysRoleService.clearCache();
|
sysRoleService.clearCache();
|
||||||
}
|
}
|
||||||
@@ -65,8 +63,8 @@ public enum MemberChangeHandle {
|
|||||||
public void change(MemberChangeRecord record) {
|
public void change(MemberChangeRecord record) {
|
||||||
archive(record.getUserId(), UserChangeType.RESIGN);
|
archive(record.getUserId(), UserChangeType.RESIGN);
|
||||||
UserMode.removeMemberRole(record.getUserId());
|
UserMode.removeMemberRole(record.getUserId());
|
||||||
updateWelfareMember(record);
|
updateMemberAndWelfareMember(record);
|
||||||
updateMemberStatus(MemberStatus.TURN_OUT, record.getUserId());
|
// updateMemberStatus(MemberStatus.TURN_OUT, record.getUserId());
|
||||||
updateUserStateAndPersonType(record);
|
updateUserStateAndPersonType(record);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -85,8 +83,8 @@ public enum MemberChangeHandle {
|
|||||||
public void change(MemberChangeRecord record) {
|
public void change(MemberChangeRecord record) {
|
||||||
archive(record.getUserId(), UserChangeType.RETIREMENT);
|
archive(record.getUserId(), UserChangeType.RETIREMENT);
|
||||||
UserMode.removeMemberRole(record.getUserId());
|
UserMode.removeMemberRole(record.getUserId());
|
||||||
updateWelfareMember(record);
|
updateMemberAndWelfareMember(record);
|
||||||
updateMemberStatus(MemberStatus.KEEP, record.getUserId());
|
// updateMemberStatus(MemberStatus.KEEP, record.getUserId());
|
||||||
updateUserStateAndPersonType(record);
|
updateUserStateAndPersonType(record);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -106,9 +104,7 @@ public enum MemberChangeHandle {
|
|||||||
archive(record.getUserId(), UserChangeType.RESTORE);
|
archive(record.getUserId(), UserChangeType.RESTORE);
|
||||||
UserMode.addMemberRole(record.getUserId());
|
UserMode.addMemberRole(record.getUserId());
|
||||||
updateMemberStatus(MemberStatus.RESTORE, record.getUserId());
|
updateMemberStatus(MemberStatus.RESTORE, record.getUserId());
|
||||||
if (record.getUpdateWelfareMember()) {
|
updateMemberAndWelfareMember(record);
|
||||||
sysUserService.update(Chain.make("welfareMember", WelfareMemberMode.NORMAL.getCode()), Cnd.where("id", "=", record.getUserId()));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
WITHDRAWAL(UserChangeType.WITHDRAWAL.getCode()) {
|
WITHDRAWAL(UserChangeType.WITHDRAWAL.getCode()) {
|
||||||
@@ -116,7 +112,7 @@ public enum MemberChangeHandle {
|
|||||||
public void change(MemberChangeRecord record) {
|
public void change(MemberChangeRecord record) {
|
||||||
archive(record.getUserId(), UserChangeType.WITHDRAWAL);
|
archive(record.getUserId(), UserChangeType.WITHDRAWAL);
|
||||||
UserMode.removeMemberRole(record.getUserId());
|
UserMode.removeMemberRole(record.getUserId());
|
||||||
updateWelfareMember(record);
|
updateMemberAndWelfareMember(record);
|
||||||
updateMemberStatus(MemberStatus.WITHDRAWAL, record.getUserId());
|
updateMemberStatus(MemberStatus.WITHDRAWAL, record.getUserId());
|
||||||
updateUserStateAndPersonType(record);
|
updateUserStateAndPersonType(record);
|
||||||
}
|
}
|
||||||
@@ -171,14 +167,17 @@ public enum MemberChangeHandle {
|
|||||||
*
|
*
|
||||||
* @param record 变更记录
|
* @param record 变更记录
|
||||||
*/
|
*/
|
||||||
public static void updateWelfareMember(MemberChangeRecord record) {
|
public static void updateMemberAndWelfareMember(MemberChangeRecord record) {
|
||||||
//record.getUpdateWelfareMember() (true:增加福利会员 false:取消福利会员);针对入会(恢复)
|
if (null != record.getUpdateWelfareMember()) {
|
||||||
if (null != record.getUpdateWelfareMember() && record.getUpdateWelfareMember()) {
|
sysUserService.update(Chain.make("welfareMember", record.getUpdateWelfareMember() ? WelfareMemberMode.NORMAL.getCode() : WelfareMemberMode.NONE.getCode()), Cnd.where("id", "=", record.getUserId()));
|
||||||
sysUserService.update(Chain.make("welfareMember", WelfareMemberMode.NORMAL.getCode()), Cnd.where("id", "=", record.getUserId()));
|
|
||||||
}
|
}
|
||||||
//record.getUpdateWelfare() (true:取消 false:不取消);针对(退休、离职、退会、去世)
|
if (null != record.getUpdateMember()){
|
||||||
if (null != record.getUpdateWelfare() && record.getUpdateWelfare()){
|
sysUserService.update(Chain.make("member", record.getUpdateMember() ? MemberMode.NORMAL.getCode() : MemberMode.NONE.getCode()), Cnd.where("id", "=", record.getUserId()));
|
||||||
sysUserService.update(Chain.make("welfareMember", WelfareMemberMode.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 变更记录
|
* @param record 变更记录
|
||||||
*/
|
*/
|
||||||
public static void updateUserStateAndPersonType(MemberChangeRecord record){
|
public static void updateUserStateAndPersonType(MemberChangeRecord record){
|
||||||
Chain chain = null;
|
Chain chain = Chain.make("eCard",null);
|
||||||
if (Strings.isNotBlank(record.getChangeUserState()) && Strings.isNotBlank(record.getChangePersonType())){
|
if (Strings.isNotBlank(record.getChangeUserState())) {
|
||||||
chain = Chain.make("userState",record.getChangeUserState()).add("personType",record.getChangePersonType());
|
chain.add("userState", record.getChangeUserState());
|
||||||
} else if (Strings.isNotBlank(record.getChangeUserState()) && Strings.isBlank(record.getChangePersonType())){
|
} else if (Strings.isNotBlank(record.getChangePersonType())) {
|
||||||
chain = Chain.make("userState",record.getChangeUserState());
|
chain.add("personType", record.getChangePersonType());
|
||||||
} else if (Strings.isBlank(record.getChangeUserState()) && Strings.isNotBlank(record.getChangePersonType())){
|
|
||||||
chain = Chain.make("personType",record.getChangePersonType());
|
|
||||||
}
|
}
|
||||||
sysUserService.update(chain,Cnd.where("id","=",record.getUserId()));
|
sysUserService.update(chain,Cnd.where("id","=",record.getUserId()));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -124,16 +124,6 @@ public class MemberChangeRecord {
|
|||||||
@ColDefine(type = ColType.BOOLEAN)
|
@ColDefine(type = ColType.BOOLEAN)
|
||||||
private Boolean updateMember;
|
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
|
@Column
|
||||||
@Comment("身份证号异动")
|
@Comment("身份证号异动")
|
||||||
@ColDefine(type = ColType.VARCHAR, width = 30)
|
@ColDefine(type = ColType.VARCHAR, width = 30)
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -87,18 +87,24 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-else-if="welfare_member&&['2'].includes(formData.type)">
|
<div v-else-if="welfare_member&&['2'].includes(formData.type)">
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
<el-form-item prop="updateWelfareMember" label="福利会员">
|
<el-form-item prop="updateWelfareMember" label="福利会员">
|
||||||
<el-radio-group v-model="formData.updateWelfareMember" size="small">
|
<el-radio-group v-model="formData.updateWelfareMember" size="small">
|
||||||
<el-radio :label="true" border>享受福利</el-radio>
|
<el-radio :label="true" border>享受福利</el-radio>
|
||||||
<el-radio :label="false" border>不享受福利</el-radio>
|
<el-radio :label="false" border>不享受福利</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item prop="insertMember" label="工会会员">
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item prop="updateMember" label="工会会员">
|
||||||
<el-radio-group v-model="formData.updateMember" size="small">
|
<el-radio-group v-model="formData.updateMember" size="small">
|
||||||
<el-radio :label="true" border>成为会员</el-radio>
|
<el-radio :label="true" border>成为会员</el-radio>
|
||||||
<el-radio :label="false" border>不成为会员</el-radio>
|
<el-radio :label="false" border>不成为会员</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-else-if="welfare_member&&['7'].includes(formData.type)">
|
<div v-else-if="welfare_member&&['7'].includes(formData.type)">
|
||||||
@@ -111,23 +117,30 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-else-if="welfare_member&&['3','4','5','6','8'].includes(formData.type)">
|
<div v-else-if="welfare_member&&['3','4','5','6','8'].includes(formData.type)">
|
||||||
<el-form-item prop="updateWelfare" label="福利会员">
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item prop="updateWelfareMember" label="福利会员">
|
||||||
<el-radio-group v-model="formData.updateWelfareMember" size="small">
|
<el-radio-group v-model="formData.updateWelfareMember" size="small">
|
||||||
<el-radio :label="true" border>保留享受福利</el-radio>
|
<el-radio :label="true" border>保留享受福利</el-radio>
|
||||||
<el-radio :label="false" border>取消享受福利</el-radio>
|
<el-radio :label="false" border>取消享受福利</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
<!-- <span style="color: red">   温馨提醒:此操作将取消该教工正式会员资格</span>-->
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
<el-form-item prop="updateMember" label="工会会员">
|
<el-form-item prop="updateMember" label="工会会员">
|
||||||
<el-radio-group v-model="formData.updateMember" size="small">
|
<el-radio-group v-model="formData.updateMember" size="small">
|
||||||
<el-radio :label="false" border>取消会员资格</el-radio>
|
|
||||||
<el-radio :label="true" border>保留会员资格</el-radio>
|
<el-radio :label="true" border>保留会员资格</el-radio>
|
||||||
|
<el-radio :label="false" border>取消会员资格</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
<el-form-item prop="updateUserState" label="是否改变在职状态" style="width: 100%"
|
<template v-if="welfare_member&&['3','4','5','6','8'].includes(formData.type)">
|
||||||
v-if="welfare_member&&['3','4','5','6','8'].includes(formData.type)">
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<el-form-item prop="updateUserState" label="是否改变在职状态" style="width: 100%">
|
||||||
<dict-select v-model="formData.changeUserState" style="width: 100%" clearable placeholder="变更类型"
|
<dict-select v-model="formData.changeUserState" style="width: 100%" clearable placeholder="变更类型"
|
||||||
code="userState"></dict-select>
|
code="userState"></dict-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|||||||
Reference in New Issue
Block a user