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