This commit is contained in:
2025-12-20 15:10:50 +08:00
parent bb1393439b
commit da92350b6e
8 changed files with 190 additions and 166 deletions
@@ -329,6 +329,7 @@ public class SysUnitController {
parentId = "";
}
unit.setCreatedBy(SecurityUtil.getUserId());
unit.setUnitTypeCode(1);
sysUnitService.save(unit, parentId);
return Result.success();
} catch (Exception e) {
@@ -4,11 +4,13 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import com.budwk.app.base.constant.RoleConstant;
import com.budwk.app.base.exception.BaseException;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.param.PageForm;
import com.budwk.app.base.service.impl.BaseServiceImpl;
import com.budwk.app.sys.views.View_user;
import com.budwk.app.web.commons.auth.utils.AuthUtil;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
import com.budwk.app.zhgh.activity.basic.models.ActivityUserScope;
import com.budwk.app.zhgh.activity.culture.models.ActivityTissue;
@@ -74,12 +76,20 @@ public class ActivityCultureApplyUserServiceImpl extends BaseServiceImpl<Activit
cnd.andEX("tissue.activity_type", "=", activity_type);
cnd.and("tissue.isEnrollSystem", "=", 1);
cnd.andEX("tissue.projectTypeCode", "!=", 50004);
cnd.andEX("tissue.signUpMethod", "in", List.of(1, 2, 3));
if (StrUtil.isNotBlank(page.getPageOrderName()) && StrUtil.isNotBlank(page.getPageOrderBy())) {
cnd.orderBy(page.getPageOrderName(), page.getPageOrderBy().equalsIgnoreCase("ascending") ? "ASC" : "DESC");
} else {
cnd.desc("tissue.startTime");
}
if (AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(),
RoleConstant.SCHOOL_UNION_ADMIN.name(),
RoleConstant.BRANCH_UNION_WENTI_SPORTS.name(),
RoleConstant.BRANCH_UNION_CHAIRMAN.name())) {
cnd.andEX("tissue.signUpMethod", "in", List.of(1, 2, 3));
} else {
cnd.andEX("tissue.signUpMethod", "in", List.of(1, 2));
}
if (state == 1) {
@@ -47,136 +47,144 @@ import java.util.List;
@At("/platform/member/info/dataManage")
public class MemberDataManageController {
@Inject
private MemberInfoService memberInfoService;
@Inject
private Dao dao;
@Inject
private SysRoleService roleService;
@Inject
private MemberInfoService memberInfoService;
@Inject
private Dao dao;
@Inject
private SysRoleService roleService;
@At("")
@SaCheckPermission("member.info.dataManage")
@Ok("beetl:/platform/zhgh/staffmanage/member/info/datamanage/index.html")
public void index() {
}
@At("")
@SaCheckPermission("member.info.dataManage")
@Ok("beetl:/platform/zhgh/staffmanage/member/info/datamanage/index.html")
public void index() {
}
@At
@ApiOperation("数据管理工具")
@SaCheckPermission("member.info.dataManage")
public Result pageData(MemberInfoPageForm pageForm) {
Sql sql = generateSql(pageForm, Cnd.NEW());
Pagination pagination = memberInfoService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
return Result.success(pagination);
}
@At
@ApiOperation("数据管理工具")
@SaCheckPermission("member.info.dataManage")
public Result pageData(MemberInfoPageForm pageForm) {
Sql sql = generateSql(pageForm, Cnd.NEW());
Pagination pagination = memberInfoService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
return Result.success(pagination);
}
@At
@ApiOperation("根据身份证号设置出生日期")
@Aop(TransAop.READ_COMMITTED)
@SaCheckPermission("member.info.dataManage")
@SLog(tag = "会员管理-数据管理工具", msg = "根据身份证号设置出生日期")
public Object setBirthdayByIdCard() {
Sql sql = Sqls.create("""
UPDATE sys_user
SET birthday = STR_TO_DATE(SUBSTRING(idcard, 7, 8), '%Y%m%d')
WHERE (birthday IS NULL OR birthday = '') AND length(idcard)=18
""");
memberInfoService.execute(sql);
return Result.success();
}
@At
@ApiOperation("根据身份证号设置出生日期")
@Aop(TransAop.READ_COMMITTED)
@SaCheckPermission("member.info.dataManage")
@SLog(tag = "会员管理-数据管理工具", msg = "根据身份证号设置出生日期")
public Object setBirthdayByIdCard() {
int count = dao.count(Sys_user.class, Cnd.where("idCard", "is not", null));
if (count == 0) {
return Result.error("系统里暂时没有身份证");
}
Sql sql = Sqls.create("""
UPDATE sys_user
SET birthday = STR_TO_DATE(SUBSTRING(idCard, 7, 8), '%Y%m%d')
WHERE birthday IS NULL
AND LENGTH(idCard) = 18
AND idCard IS NOT NULL
AND idCard != ''
AND SUBSTRING(idCard, 7, 8) REGEXP '^(19|20)[0-9]{2}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])$';
""");
memberInfoService.execute(sql);
return Result.success();
}
@At
@ApiOperation("批量设置会员")
@Aop(TransAop.READ_COMMITTED)
@SaCheckPermission("member.info.dataManage")
@SLog(tag = "会员管理-数据管理工具", msg = "批量设置会员")
public Object setMemberByCnd(@Param(value = "pageForm") MemberInfoPageForm pageForm,
@Param(value = "append") boolean append) {
@At
@ApiOperation("批量设置会员")
@Aop(TransAop.READ_COMMITTED)
@SaCheckPermission("member.info.dataManage")
@SLog(tag = "会员管理-数据管理工具", msg = "批量设置会员")
public Object setMemberByCnd(@Param(value = "pageForm") MemberInfoPageForm pageForm,
@Param(value = "append") boolean append) {
Sys_role sysRole = roleService.getByCode(RoleConstant.MEMBER.name());
// 如果是先清空再追加
if(!append) {
dao.update(Sys_user.class, Chain.make("member", false), Cnd.NEW());
dao.clear(Sys_user_role.class, Cnd.where(Sys_user_role::getRoleId, "=", sysRole.getId()));
}
Sys_role sysRole = roleService.getByCode(RoleConstant.MEMBER.name());
// 如果是先清空再追加
if (!append) {
dao.update(Sys_user.class, Chain.make("member", false), Cnd.NEW());
dao.clear(Sys_user_role.class, Cnd.where(Sys_user_role::getRoleId, "=", sysRole.getId()));
}
Cnd cnd = Cnd.NEW();
cnd.and(Cnd.exps("member", "=", false).or("member", "is", null));
Sql sql = generateSql(pageForm, cnd);
List<NutMap> listMap = memberInfoService.listMap(sql);
List<String> list = listMap.stream().map(o -> o.getString("id")).toList();
Cnd cnd = Cnd.NEW();
cnd.and(Cnd.exps("member", "=", false).or("member", "is", null));
Sql sql = generateSql(pageForm, cnd);
List<NutMap> listMap = memberInfoService.listMap(sql);
List<String> list = listMap.stream().map(o -> o.getString("id")).toList();
List<Sys_user_role> userRoles = list.stream().map(o -> {
Sys_user_role userRole = new Sys_user_role();
userRole.setRoleId(sysRole.getId());
userRole.setUserId(o);
return userRole;
}).toList();
List<Sys_user_role> userRoles = list.stream().map(o -> {
Sys_user_role userRole = new Sys_user_role();
userRole.setRoleId(sysRole.getId());
userRole.setUserId(o);
return userRole;
}).toList();
dao.update(Sys_user.class, Chain.make("member", true), Cnd.where("id", "in", list));
dao.insert(userRoles);
return Result.success();
}
dao.update(Sys_user.class, Chain.make("member", true), Cnd.where("id", "in", list));
dao.insert(userRoles);
return Result.success();
}
@At
@ApiOperation("批量设置福利会员")
@Aop(TransAop.READ_COMMITTED)
@SaCheckPermission("member.info.dataManage")
@SLog(tag = "会员管理-数据管理工具", msg = "批量设置福利会员")
public Object setWelfareMemberByCnd(@Param(value = "pageForm") MemberInfoPageForm pageForm,
@Param(value = "append") boolean append) {
@At
@ApiOperation("批量设置福利会员")
@Aop(TransAop.READ_COMMITTED)
@SaCheckPermission("member.info.dataManage")
@SLog(tag = "会员管理-数据管理工具", msg = "批量设置福利会员")
public Object setWelfareMemberByCnd(@Param(value = "pageForm") MemberInfoPageForm pageForm,
@Param(value = "append") boolean append) {
// 如果是先清空再追加
if(!append) {
dao.update(Sys_user.class, Chain.make("welfareMember", false), Cnd.NEW());
}
// 如果是先清空再追加
if (!append) {
dao.update(Sys_user.class, Chain.make("welfareMember", false), Cnd.NEW());
}
Cnd cnd = Cnd.NEW();
cnd.and(Cnd.exps("welfareMember", "=", false).or("welfareMember", "is", null));
Sql sql = generateSql(pageForm, cnd);
List<NutMap> listMap = memberInfoService.listMap(sql);
List<String> list = listMap.stream().map(o -> o.getString("id")).toList();
Cnd cnd = Cnd.NEW();
cnd.and(Cnd.exps("welfareMember", "=", false).or("welfareMember", "is", null));
Sql sql = generateSql(pageForm, cnd);
List<NutMap> listMap = memberInfoService.listMap(sql);
List<String> list = listMap.stream().map(o -> o.getString("id")).toList();
dao.update(Sys_user.class, Chain.make("welfareMember", true), Cnd.where("id", "in", list));
return Result.success();
}
dao.update(Sys_user.class, Chain.make("welfareMember", true), Cnd.where("id", "in", list));
return Result.success();
}
private Sql generateSql(MemberInfoPageForm pageForm, Cnd cnd) {
Sql sql = Sqls.create("""
SELECT
id,
loginname as loginName,
username as userName,
sex,
userState,
personType,
preparedBy,
unionName,
unitName,
mobile
from
`vw_user`
$condition
""");
pageForm.buildSearch(cnd, "");
if (StrUtil.isNotBlank(pageForm.getStartLoginNames())) {
String[] loginNames = pageForm.getStartLoginNames().split(",");
SqlExpressionGroup seg = new SqlExpressionGroup();
for (String loginName : loginNames) {
seg.orLikeL("loginname", loginName);
}
cnd.and(seg);
}
private Sql generateSql(MemberInfoPageForm pageForm, Cnd cnd) {
Sql sql = Sqls.create("""
SELECT
id,
loginname as loginName,
username as userName,
sex,
userState,
personType,
preparedBy,
unionName,
unitName,
mobile
from
`vw_user`
$condition
""");
pageForm.buildSearch(cnd, "");
if (StrUtil.isNotBlank(pageForm.getStartLoginNames())) {
String[] loginNames = pageForm.getStartLoginNames().split(",");
SqlExpressionGroup seg = new SqlExpressionGroup();
for (String loginName : loginNames) {
seg.orLikeL("loginname", loginName);
}
cnd.and(seg);
}
if (StrUtil.isNotBlank(pageForm.getEndLoginNames())) {
String[] loginNames = pageForm.getEndLoginNames().split(",");
SqlExpressionGroup seg = new SqlExpressionGroup();
for (String loginName : loginNames) {
seg.orLikeR("loginname", loginName);
}
cnd.and(seg);
}
sql.setCondition(cnd);
return sql;
}
if (StrUtil.isNotBlank(pageForm.getEndLoginNames())) {
String[] loginNames = pageForm.getEndLoginNames().split(",");
SqlExpressionGroup seg = new SqlExpressionGroup();
for (String loginName : loginNames) {
seg.orLikeR("loginname", loginName);
}
cnd.and(seg);
}
sql.setCondition(cnd);
return sql;
}
}
@@ -21,7 +21,7 @@ public class SingleTeacherPageForm extends PageForm {
private String sex;
@ApiModelProperty("婚姻状况")
private String maritalStatus;
private String marriage;
@ApiModelProperty("学历")
private String education;
@@ -36,7 +36,7 @@ public class SingleTeacherServiceImpl extends BaseServiceImpl<SingleTeacher> imp
Sql sql = buildSql(pageForm);
List<NutMap> list = listMap(sql);
for (int i = 0; i < list.size(); i++) {
list.get(i).put("序号", (i + 1));
list.get(i).put("index", (i + 1));
}
List<ExcelExportEntity> entities = new ArrayList<>();
@@ -100,7 +100,7 @@ public class SingleTeacherServiceImpl extends BaseServiceImpl<SingleTeacher> imp
cnd.andEX("u.personType", "=", pageForm.getPersonType());
cnd.andEX("u.userState", "=", pageForm.getUserState());
cnd.andEX("st.education", "=", pageForm.getEducation());
cnd.andEX("u.maritalStatus", "=", pageForm.getMaritalStatus());
cnd.andEX("u.marriage", "=", pageForm.getMarriage());
if (StrUtil.isAllNotBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy())) {
cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy()));
+47 -42
View File
@@ -4,51 +4,51 @@ const act = {
<div class="section-wrapper">
<div class="section-act">
<!-- Swiper容器 -->
<div v-if="actList && actList.length > 0" class="activity-swiper-container">
<div class="activity-swiper-container">
<!-- 活动数据 - Swiper -->
<div class="swiper activity-swiper">
<div class="swiper-wrapper">
<div class="swiper-slide" v-for="(activity, index) in actList" :key="activity.id">
<div class="item" @click="go(activity)">
<div class="img-box">
<img :src="activity.cover || 'https://www.ncu.edu.cn/__local/8/52/2C/644986B4C9A030F7B65300178A6_8679CB08_18467.jpg'"
alt="">
<span class="status">
<div v-if="actList && actList.length > 0" class="activity-swiper-container">
<div class="activity-swiper-container">
<!-- 活动数据 - Swiper -->
<div class="swiper activity-swiper">
<div class="swiper-wrapper">
<div class="swiper-slide" v-for="(activity, index) in actList" :key="activity.id">
<div class="item" @click="go(activity)">
<div class="img-box">
<img :src="activity.cover || 'https://www.ncu.edu.cn/__local/8/52/2C/644986B4C9A030F7B65300178A6_8679CB08_18467.jpg'"
alt="">
<span class="status">
{{getStatusText(activity)}}
</span>
</div>
<h4 class="title">
{{ activity.name}}
</h4>
<!--报名时间-->
<div class="time">
<p>
<i class="fa fa-clock-o"></i>
时间:{{ activity.startDate }}至{{ activity.endDate }}
</p>
</div>
</div>
</div>
</div>
</div>
<!-- 导航按钮 -->
<div class="swiper-button-next"></div>
<div class="swiper-button-prev"></div>
<!-- 进度条 -->
<div class="swiper-pagination"></div>
</div>
</div>
<h4 class="title">
{{ activity.name}}
</h4>
<!--报名时间-->
<div class="time">
<p>
<i class="fa fa-clock-o"></i>
时间:{{ activity.startDate }}至{{ activity.endDate }}
</p>
</div>
</div>
</div>
</div>
</div>
<!-- 导航按钮 -->
<div class="swiper-button-next"></div>
<div class="swiper-button-prev"></div>
<!-- 进度条 -->
<div class="swiper-pagination"></div>
</div>
</div>
<div v-else class="no-activity-placeholder">
<div class="icon">📅</div>
<p>暂无近期活动</p>
<p class="subtext">敬请关注后续通知</p>
</div>
<div v-else class="no-activity-placeholder">
<div class="icon">📅</div>
<p>暂无近期活动</p>
<p class="subtext">敬请关注后续通知</p>
</div>
</div>
</div>
`,
@@ -119,6 +119,11 @@ const act = {
this.$message.warning("管理员未配置活动链接")
return
}
if (act.url === "/platform/activity/apply"
&& !this.$auth.hasRoleOr(["SYSADMIN", "SCHOOL_UNION_ADMIN", "BRANCH_UNION_CHAIRMAN", "BRANCH_UNION_WENTI_SPORTS"])) {
return this.$message.warning("PC端暂未开放报名,请前往移动端报名!")
}
window.open(act.url)
}
},
@@ -32,7 +32,7 @@ layout("/layouts/platform.html"){
</div>
</search-item>
<search-item label="婚姻状况">
<el-select v-model="pageForm.maritalStatus" placeholder="请选择婚姻状况" clearable style="width: 100%">
<el-select v-model="pageForm.marriage" placeholder="请选择婚姻状况" clearable style="width: 100%">
<el-option label="未婚" value="未婚"></el-option>
<el-option label="已婚" value="已婚"></el-option>
<el-option label="离异" value="离异"></el-option>
@@ -48,7 +48,7 @@ layout("/layouts/platform_h5.html"){
<van-dropdown-menu>
<year-van-dropdown-item :num="5" @change="doSearch" v-model="pageForm.year"></year-van-dropdown-item>
<van-dropdown-item :options="stateList" @change="doSearch" v-model="pageForm.state"></van-dropdown-item>
<van-dropdown-item :options="isEnrolledOptions" @change="doSearch" v-model="pageForm.isEnrolledText"></van-dropdown-item>
<van-dropdown-item :options="isEnrolledOptions" @change="doSearch" v-model="pageForm.isEnrolled"></van-dropdown-item>
<van-dropdown-item :options="activityTypeOptions" @change="doSearch" v-model="pageForm.activity_type"></van-dropdown-item>
</van-dropdown-menu>
</van-sticky>
@@ -94,7 +94,7 @@ layout("/layouts/platform_h5.html"){
refreshing: false,
pageForm: {
state: 2,
isEnrolledText: 0,
isEnrolled: 0,
year: new Date().getFullYear(),
pageNumber: 1,
pageSize: 5,