This commit is contained in:
zhouhefeng
2026-06-01 08:36:26 +08:00
parent f05e534e52
commit 8b47088953
47 changed files with 1733 additions and 301 deletions
@@ -103,6 +103,7 @@ public class SysConfController {
private void ensureConfigValueColumn(Sys_config conf) {
if (conf == null || (!"AppHomeImg".equals(conf.getConfigKey())
&& !"H5AppHomeImg".equals(conf.getConfigKey())
&& !"AppFeaturedActivityImg".equals(conf.getConfigKey())
&& !"AppFestivalBenefitImg".equals(conf.getConfigKey()))) {
return;
@@ -140,6 +141,8 @@ public class SysConfController {
@SaCheckPermission("sys.manager.conf")
public Object data(@Param("pageNumber") int pageNumber, @Param("pageSize") int pageSize, @Param("pageOrderName") String pageOrderName, @Param("pageOrderBy") String pageOrderBy) {
try {
ensureAppImageConfig("AppHomeImg", "PC首页轮播图");
ensureAppImageConfig("H5AppHomeImg", "移动端首页轮播图");
ensureAppImageConfig("AppFeaturedActivityImg", "精彩活动页顶部图片");
ensureAppImageConfig("AppFestivalBenefitImg", "节日福利页顶部图片");
Cnd cnd = Cnd.NEW();
@@ -273,7 +273,7 @@ public class SysHomeController {
}
FieldFilter fieldFilter = FieldFilter.locked(Sys_home_template.class, "allowUserSql|classPath");
List<Sys_home_template> list = Daos.ext(dao, fieldFilter).query(Sys_home_template.class,
Cnd.NEW().desc("top").desc("sortNo"));
Cnd.where("enable", "=", 1).asc("sortNo"));
return Result.success(list);
}
@@ -167,7 +167,8 @@ public class SysUnionController {
cnd.asc("gh.unionCode");
cnd.groupBy("gh.id");
if (AuthUtil.hasRole(RoleConstant.BRANCH_UNION_CHAIRMAN.name())) {
boolean schoolUnionAdmin = AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name());
if (!schoolUnionAdmin && AuthUtil.hasRole(RoleConstant.BRANCH_UNION_CHAIRMAN.name())) {
cnd.and("gh.id", "=", SecurityUtil.getUnionId());
}
@@ -39,7 +39,7 @@ public class SysWorkTemplateController {
public Result pageData(@Valid SysHomeTemplatePageForm pageForm) {
Cnd cnd = Cnd.NEW();
cnd.and(Cnd.likeEX(Sys_home_template::getName, pageForm.getName()));
cnd.desc(Sys_home_template::getSortNo);
cnd.asc(Sys_home_template::getSortNo);
Pagination pagination = sysHomeTemplateService.listPage(pageForm.getPageNumber(), pageForm.getPageSize(), cnd);
return Result.success(pagination);
}
@@ -82,6 +82,28 @@ public class SysWorkTemplateController {
return Result.success();
}
@At
@SaCheckPermission("sys.worktemplate")
@ApiOperation("修改模板文件")
public Result updateTemplateFile(@Valid String id, String templateFile) {
if (StrUtil.isBlank(id)) {
return Result.error("参数错误");
}
sysHomeTemplateService.update(Chain.make("templateFile", templateFile), Cnd.where("id", "=", id));
return Result.success();
}
@At
@SaCheckPermission("sys.worktemplate")
@ApiOperation("修改排序")
public Result updateSortNo(@Valid String id, Integer sortNo) {
if (StrUtil.isBlank(id)) {
return Result.error("参数错误");
}
sysHomeTemplateService.update(Chain.make("sortNo", sortNo == null ? 0 : sortNo), Cnd.where("id", "=", id));
return Result.success();
}
@At
@SaCheckPermission("sys.worktemplate")
@ApiOperation("置顶")
@@ -33,6 +33,11 @@ public class Sys_home_template extends BaseModel {
@Comment("模板图标")
private String templateIcon;
@Column
@ColDefine(type = ColType.VARCHAR, width = 1000)
@Comment("模板文件")
private String templateFile;
@Column
@ColDefine(type = ColType.VARCHAR, width = 255)
@Comment("模板封面")
@@ -309,9 +309,9 @@ public class SysUserServiceImpl extends BaseServiceImpl<Sys_user> implements Sys
String decodePwd = Base64Decoder.decodeStr(passowrd);
String hashedPassword = PwdUtil.getPassword(decodePwd, user.getSalt());
if (!Strings.sNull(hashedPassword).equalsIgnoreCase(user.getPassword())) {
// if (Globals.sso){
if (Globals.sso) {
throw new BaseException("用户名或者密码不正确");
// }
}
}
user = this.fetchLinks(user, "unit");
if (Lang.isNotEmpty(user.getUnit()) && StrUtil.isNotBlank(user.getUnit().getUnionId())) {
@@ -110,12 +110,17 @@ public class ActivityCultureApplyActivityController {
tissue.setUserId(SecurityUtil.getUserId());
tissue.setApplyTime(DateUtil.now());
if (StrUtil.isBlank(tissue.getId())){
cleanNewActivityData(tissue);
activityCultureService.insertWith(tissue, "tissuePersonList");
}else{
tissue.getTissuePersonList().forEach(tissuePerson -> tissuePerson.setTissueId(tissue.getId()));
if (tissue.getTissuePersonList() != null) {
tissue.getTissuePersonList().forEach(tissuePerson -> tissuePerson.setTissueId(tissue.getId()));
}
activityCultureService.insertOrUpdate(tissue);
activityCultureService.dao().clear(ActivityTissuePerson.class, Cnd.where(ActivityTissuePerson::getTissueId, "=", tissue.getId()));
activityCultureService.insert(tissue.getTissuePersonList());
if (tissue.getTissuePersonList() != null) {
activityCultureService.insert(tissue.getTissuePersonList());
}
}
return Result.success();
@@ -132,7 +137,12 @@ public class ActivityCultureApplyActivityController {
}
tissue.setUserId(SecurityUtil.getUserId());
tissue.setApplyTime(DateUtil.now());
activityCultureService.insertOrUpdate(tissue);
if (StrUtil.isBlank(tissue.getId())) {
cleanNewActivityData(tissue);
activityCultureService.insertWith(tissue, "tissuePersonList");
} else {
activityCultureService.insertOrUpdate(tissue);
}
if (List.of(40002, 40003).contains(tissue.getActivity_type()) && tissue.getIsEnrollSystem()) {
// 开启流程实例
@@ -185,6 +195,36 @@ public class ActivityCultureApplyActivityController {
return Result.success();
}
private void cleanNewActivityData(ActivityTissue tissue) {
tissue.setId(null);
tissue.setAuditId(null);
tissue.setState(null);
tissue.setCreatedBy(null);
tissue.setCreatedAt(null);
tissue.setUpdatedBy(null);
tissue.setUpdatedAt(null);
tissue.setDelFlag(null);
if (tissue.getTissuePersonList() == null) {
return;
}
tissue.getTissuePersonList().forEach(this::cleanNewActivityPersonData);
}
private void cleanNewActivityPersonData(ActivityTissuePerson tissuePerson) {
tissuePerson.setId(null);
tissuePerson.setTissueId(null);
tissuePerson.setSignId(null);
tissuePerson.setSign(false);
tissuePerson.setSignTime(null);
tissuePerson.setApplyDateTime(null);
tissuePerson.setDynamicFormData(null);
tissuePerson.setCreatedBy(null);
tissuePerson.setCreatedAt(null);
tissuePerson.setUpdatedBy(null);
tissuePerson.setUpdatedAt(null);
tissuePerson.setDelFlag(null);
}
@At
@SaCheckPermission(value = {"activity.culture.applyActivity.school", "activity.culture.applyActivity.union", "activity.culture.applyActivity.club"}, mode = SaMode.OR)
public Result findUser(String serachWord,
@@ -115,6 +115,9 @@ public class ActivityCultureInfoManageController {
if (oldHomeTemplate.getTemplateIcon() != null) {
sysHomeTemplate.setTemplateIcon(oldHomeTemplate.getTemplateIcon());
}
if (oldHomeTemplate.getTemplateFile() != null) {
sysHomeTemplate.setTemplateFile(oldHomeTemplate.getTemplateFile());
}
}
activityCultureService.dao().insertOrUpdate(sysHomeTemplate);
return Result.success();
@@ -1,12 +1,17 @@
package com.budwk.app.zhgh.activity.family.controller.manage;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaMode;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.budwk.app.base.annotation.SLog;
import com.budwk.app.base.constant.RoleConstant;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.param.PageForm;
import com.budwk.app.base.result.Result;
import com.budwk.app.sys.models.Sys_home_activity;
import com.budwk.app.sys.models.Sys_home_template;
import com.budwk.app.web.commons.auth.utils.AuthUtil;
import com.budwk.app.zhgh.activity.basic.service.ActivityBasicScopeService;
import com.budwk.app.zhgh.activity.family.models.*;
import com.budwk.app.zhgh.activity.family.service.FamilyActivityService;
@@ -68,7 +73,57 @@ public class FamilyActivityController {
cnd.andEX("year", "=", year);
cnd.and(Cnd.likeEX("activityName", activityName));
cnd.orderBy("createdAt", "desc");
return Result.success().addData(familyActivityManageService.pageData(pageForm, cnd));
Pagination<FamilyActivity> pagination = familyActivityManageService.pageData(pageForm, cnd);
List<FamilyActivity> list = pagination.getList(FamilyActivity.class);
if (list != null && !list.isEmpty()) {
List<String> ids = list.stream().map(FamilyActivity::getId).toList();
List<Sys_home_template> templateList = dao.query(Sys_home_template.class, Cnd.where("id", "in", ids));
List<String> templateIds = templateList.stream().map(Sys_home_template::getId).toList();
list.forEach(activity -> activity.setIsTemplate(templateIds.contains(activity.getId())));
}
return Result.success().addData(pagination);
}
@At
@ApiOperation("设为模板")
@SaCheckPermission("family.manage")
public Result setTemplate(String id) {
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
return Result.error("无权操作");
}
FamilyActivity activity = familyActivityManageService.fetch(id);
if (activity == null) {
return Result.error("活动不存在");
}
Sys_home_template oldHomeTemplate = dao.fetch(Sys_home_template.class, id);
Sys_home_template sysHomeTemplate = activity.covertToSysHomeTemplate();
if (oldHomeTemplate != null) {
sysHomeTemplate.setTop(oldHomeTemplate.getTop());
sysHomeTemplate.setPush(oldHomeTemplate.getPush());
sysHomeTemplate.setSortNo(oldHomeTemplate.getSortNo());
if (oldHomeTemplate.getTemplateName() != null) {
sysHomeTemplate.setTemplateName(oldHomeTemplate.getTemplateName());
}
if (oldHomeTemplate.getTemplateIcon() != null) {
sysHomeTemplate.setTemplateIcon(oldHomeTemplate.getTemplateIcon());
}
if (oldHomeTemplate.getTemplateFile() != null) {
sysHomeTemplate.setTemplateFile(oldHomeTemplate.getTemplateFile());
}
}
dao.insertOrUpdate(sysHomeTemplate);
return Result.success();
}
@At
@ApiOperation("取消模板")
@SaCheckPermission("family.manage")
public Result cancelTemplate(String id) {
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
return Result.error("无权操作");
}
dao.delete(Sys_home_template.class, id);
return Result.success();
}
@At
@@ -76,6 +131,9 @@ public class FamilyActivityController {
@SaCheckPermission("family.manage")
@SLog(tag = "亲子活动-活动管理", msg = "删除活动")
public Result onDelete(String id) {
if (dao.fetch(Sys_home_template.class, id) != null) {
return Result.error("该活动已设为模板,请先取消模板后再删除");
}
Trans.exec(() -> {
familyActivityManageService.delete(id);
dao.clear(FamilyCourse.class, Cnd.where("activityId", "=", id));
@@ -102,7 +160,7 @@ public class FamilyActivityController {
@At
@ApiOperation("查询单个活动")
@SaCheckPermission("family")
@SaCheckPermission(value = {"family", "family.manage", "family.newcativity"}, mode = SaMode.OR)
public Result findOne(@Param("id") @NotNull String id) {
NutMap dataMap = familyActivityManageService.findOne(id, null, "");
String activityStartTime = dataMap.getString("activityStartTime");
@@ -150,10 +208,11 @@ public class FamilyActivityController {
@At
@Ok("json:full")
@ApiOperation("亲子活动新增/修改")
@SaCheckPermission("family.manage")
@SaCheckPermission(value = {"family.manage", "family.newcativity"}, mode = SaMode.OR)
@SLog(tag = "亲子活动-活动管理", msg = "新增/修改活动")
public Result doHandle(FamilyActivity activity) {
if (StrUtil.isBlank(activity.getId())) {
cleanNewActivityData(activity);
familyActivityManageService.add(activity, null);
} else {
familyActivityManageService.edit(activity);
@@ -161,10 +220,67 @@ public class FamilyActivityController {
return Result.success();
}
private void cleanNewActivityData(FamilyActivity activity) {
if (activity == null) {
return;
}
activity.setId(null);
activity.setIsTemplate(false);
activity.setCreatedBy(null);
activity.setCreatedAt(null);
activity.setUpdatedBy(null);
activity.setUpdatedAt(null);
activity.setDelFlag(null);
if (activity.getTypeLimits() != null) {
activity.getTypeLimits().forEach(this::cleanNewTypeLimitData);
}
if (activity.getCourseList() != null) {
activity.getCourseList().forEach(this::cleanNewCourseData);
}
}
private void cleanNewTypeLimitData(FamilyTypeLimit typeLimit) {
if (typeLimit == null) {
return;
}
typeLimit.setId(null);
typeLimit.setActivityId(null);
}
private void cleanNewCourseData(FamilyCourse course) {
if (course == null) {
return;
}
course.setId(null);
course.setActivityId(null);
course.setCreatedBy(null);
course.setCreatedAt(null);
course.setUpdatedBy(null);
course.setUpdatedAt(null);
course.setDelFlag(null);
course.setHasRegisterNum(null);
course.setHasWaitingNum(null);
course.setIsSign(false);
course.setCanSignThisCourseType(null);
if (course.getCourseTimeList() != null) {
course.getCourseTimeList().forEach(this::cleanNewCourseTimeData);
}
}
private void cleanNewCourseTimeData(FamilyActivityCourse courseTime) {
if (courseTime == null) {
return;
}
courseTime.setId(null);
courseTime.setActivityId(null);
courseTime.setCourseId(null);
courseTime.setHasRegisterNum(null);
}
@At
@Ok("json:full")
@ApiOperation("获取分工会人数限制")
@SaCheckPermission("family.manage")
@SaCheckPermission(value = {"family.manage", "family.newcativity"}, mode = SaMode.OR)
public Result getUnionLimit(@Param(value = "activityScopeId") String activityScopeId) {
Sql sql = Sqls.create("""
SELECT
@@ -188,7 +304,7 @@ public class FamilyActivityController {
@At
@Ok("json:full")
@ApiOperation("获取报名人员数量")
@SaCheckPermission("family.manage")
@SaCheckPermission(value = {"family.manage", "family.newcativity"}, mode = SaMode.OR)
public Result getRegisterUserCount(@Param(value = "courseId") String courseId) {
return Result.success().addData(dao.count(FamilyUser.class, Cnd.where("courseId", "=", courseId)));
}
@@ -196,7 +312,7 @@ public class FamilyActivityController {
@At
@Ok("json:full")
@ApiOperation("获取历史活动列表")
@SaCheckPermission("family.manage")
@SaCheckPermission(value = {"family.manage", "family.newcativity"}, mode = SaMode.OR)
public Result getHistoricalActList() {
List<FamilyActivity> query = dao.query(FamilyActivity.class, Cnd.NEW().desc("activityStartTime"));
return Result.success().addData(query);
@@ -0,0 +1,18 @@
package com.budwk.app.zhgh.activity.family.controller.manage;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaMode;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
@IocBean
@At("/platform/family/newcativity")
public class FamilyNewActivityController {
@At("")
@SaCheckPermission(value = {"family.manage", "family.newcativity"}, mode = SaMode.OR)
@Ok("beetl:/platform/zhgh/activity/family/newcativity/index.html")
public void index() {
}
}
@@ -2,6 +2,7 @@ package com.budwk.app.zhgh.activity.family.models;
import com.budwk.app.base.model.BaseModel;
import com.budwk.app.sys.models.Sys_home_activity;
import com.budwk.app.sys.models.Sys_home_template;
import com.budwk.app.sys.services.SysHomeConvert;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -111,6 +112,8 @@ public class FamilyActivity extends BaseModel implements Serializable, SysHomeCo
@Many(field = "activityId")
private List<FamilyTypeLimit> typeLimits;
private Boolean isTemplate;
@Column
@Comment("活动类型")
@ColDefine(type = ColType.VARCHAR, width = 20)
@@ -159,4 +162,23 @@ public class FamilyActivity extends BaseModel implements Serializable, SysHomeCo
sysHomeActivity.setClassPath(this.getClass().getPackageName() + this.getClass().getName());
return sysHomeActivity;
}
public Sys_home_template covertToSysHomeTemplate() {
Sys_home_template sysHomeTemplate = new Sys_home_template();
sysHomeTemplate.setId(this.getId());
sysHomeTemplate.setName(this.getActivityName());
sysHomeTemplate.setTemplateName(this.getActivityName());
sysHomeTemplate.setCover(this.getCover());
sysHomeTemplate.setContent(this.getIntroduce());
sysHomeTemplate.setUrl("/platform/family/newcativity?mode=edit&id=" + this.getId());
sysHomeTemplate.setH5Url("");
if (Lang.isNotEmpty(this.getActivitySignUpStartTime())) {
sysHomeTemplate.setStartDate(this.getActivitySignUpStartTime());
sysHomeTemplate.setEndDate(this.getActivitySignUpEndTime());
}
sysHomeTemplate.setAllowUserGroupId(this.getActivityGroupId());
sysHomeTemplate.setEnable(!this.isDisabled());
sysHomeTemplate.setClassPath(this.getClass().getPackageName() + this.getClass().getName());
return sysHomeTemplate;
}
}
@@ -8,6 +8,7 @@ import com.budwk.app.base.constant.RoleConstant;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.param.PageForm;
import com.budwk.app.base.result.Result;
import com.budwk.app.sys.models.Sys_home_template;
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.service.ActivityBasicScopeService;
@@ -90,11 +91,13 @@ public class ActivitySportsInfoManageController {
school.activityCode,
school.foundDate,
school.applyType,
IF(sht.id IS NULL, 0, 1) isTemplate,
(SELECT COUNT(1) FROM activity_school_apply asa WHERE asa.activityId = school.id and status=2) applyNum
FROM
activity_school school
LEFT JOIN activity_basic_settings ba ON ba.`code` = school.activityLevel
LEFT JOIN sys_union un ON un.id = school.belongUnionId
LEFT JOIN sys_home_template sht ON sht.id = school.id
$condition
""");
@@ -131,6 +134,48 @@ public class ActivitySportsInfoManageController {
return Result.success(pagination);
}
@At
@ApiOperation("设置为模板")
@SaCheckPermission("activity.sports.info")
public Result setTemplate(String id) {
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
return Result.error("无权操作");
}
ActivitySchool activitySchool = activitySportsService.fetch(id);
if (activitySchool == null) {
return Result.error("活动不存在");
}
Sys_home_template oldHomeTemplate = dao.fetch(Sys_home_template.class, id);
Sys_home_template sysHomeTemplate = activitySchool.covertToSysHomeTemplate();
if (oldHomeTemplate != null) {
sysHomeTemplate.setTop(oldHomeTemplate.getTop());
sysHomeTemplate.setPush(oldHomeTemplate.getPush());
sysHomeTemplate.setSortNo(oldHomeTemplate.getSortNo());
if (oldHomeTemplate.getTemplateName() != null) {
sysHomeTemplate.setTemplateName(oldHomeTemplate.getTemplateName());
}
if (oldHomeTemplate.getTemplateIcon() != null) {
sysHomeTemplate.setTemplateIcon(oldHomeTemplate.getTemplateIcon());
}
if (oldHomeTemplate.getTemplateFile() != null) {
sysHomeTemplate.setTemplateFile(oldHomeTemplate.getTemplateFile());
}
}
dao.insertOrUpdate(sysHomeTemplate);
return Result.success();
}
@At
@ApiOperation("取消模板")
@SaCheckPermission("activity.sports.info")
public Result cancelTemplate(String id) {
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
return Result.error("无权操作");
}
dao.delete(Sys_home_template.class, id);
return Result.success();
}
@At
@SaCheckPermission(value = {"activity.sports.info", "activity.sports.new"}, mode = SaMode.OR)
@@ -168,12 +213,41 @@ public class ActivitySportsInfoManageController {
@SaCheckPermission(value = {"activity.sports.info", "activity.sports.new"}, mode = SaMode.OR)
public Result doAdd(@Param(value = "data") ActivitySchool activitySchool,
@Param(value = "events") ActivitySchoolEvent[] events) {
cleanNewActivityData(activitySchool, events);
String id = activitySportsService.doAdd(activitySchool, events);
return Result.success().addData(id);
}
private void cleanNewActivityData(ActivitySchool activitySchool, ActivitySchoolEvent[] events) {
if (activitySchool != null) {
activitySchool.setId(null);
activitySchool.setFoundDate(null);
activitySchool.setCreatedBy(null);
activitySchool.setCreatedAt(null);
activitySchool.setUpdatedBy(null);
activitySchool.setUpdatedAt(null);
activitySchool.setDelFlag(null);
}
if (events != null) {
for (ActivitySchoolEvent event : events) {
if (event == null) {
continue;
}
if (!"allItems".equals(event.getId())) {
event.setId(null);
}
event.setActivityId(null);
event.setCreatedBy(null);
event.setCreatedAt(null);
event.setUpdatedBy(null);
event.setUpdatedAt(null);
event.setDelFlag(null);
}
}
}
@At
@SaCheckPermission(value = {"activity.sports.info", "activity.sports.new"}, mode = SaMode.OR)
public Result findOne(String id) {
@@ -198,6 +272,9 @@ public class ActivitySportsInfoManageController {
@SLog(tag = "体育活动", msg = "删除活动")
@SaCheckPermission("activity.sports.info")
public Result doDelete(String id) {
if (dao.fetch(Sys_home_template.class, id) != null) {
return Result.error("该活动已设为模板,请先取消模板后再删除");
}
activitySportsService.doDelete(id);
return Result.success();
}
@@ -3,10 +3,12 @@ package com.budwk.app.zhgh.activity.sports.models;
import cn.hutool.core.date.DateUtil;
import com.budwk.app.base.model.BaseModel;
import com.budwk.app.sys.models.Sys_home_activity;
import com.budwk.app.sys.models.Sys_home_template;
import com.budwk.app.sys.services.SysHomeConvert;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.nutz.dao.entity.annotation.*;
import org.nutz.lang.Lang;
import java.io.Serializable;
import java.util.List;
@@ -213,4 +215,23 @@ public class ActivitySchool extends BaseModel implements Serializable , SysHomeC
sysHomeActivity.setClassPath(this.getClass().getPackageName() + this.getClass().getName());
return sysHomeActivity;
}
public Sys_home_template covertToSysHomeTemplate() {
Sys_home_template sysHomeTemplate = new Sys_home_template();
sysHomeTemplate.setId(this.getId());
sysHomeTemplate.setName(this.getName());
sysHomeTemplate.setTemplateName(this.getName());
sysHomeTemplate.setCover(this.getImage());
sysHomeTemplate.setContent(Lang.isNotEmpty(this.getEventNotification()) ? this.getEventNotification() : this.getPrecautions());
sysHomeTemplate.setUrl("/platform/activity/sports/new?mode=edit&id=" + this.getId() + (this.getApplyType() == null ? "" : "&applyType=" + this.getApplyType()));
sysHomeTemplate.setH5Url("");
if (Lang.isNotEmpty(this.getApplyStartTime())) {
sysHomeTemplate.setStartDate(DateUtil.parseDate(this.getApplyStartTime()));
sysHomeTemplate.setEndDate(DateUtil.parseDate(this.getApplyEndTime()));
}
sysHomeTemplate.setAllowUserGroupId(this.getActivityGroupId());
sysHomeTemplate.setEnable(!Boolean.TRUE.equals(this.getClose()));
sysHomeTemplate.setClassPath(this.getClass().getPackageName() + this.getClass().getName());
return sysHomeTemplate;
}
}
@@ -111,6 +111,9 @@ public class TrainSignUpManageController {
if (oldHomeTemplate.getTemplateIcon() != null) {
sysHomeTemplate.setTemplateIcon(oldHomeTemplate.getTemplateIcon());
}
if (oldHomeTemplate.getTemplateFile() != null) {
sysHomeTemplate.setTemplateFile(oldHomeTemplate.getTemplateFile());
}
}
dao.insertOrUpdate(sysHomeTemplate);
return Result.success();
@@ -213,6 +216,7 @@ public class TrainSignUpManageController {
@SLog(tag = "品牌活动-活动管理", msg = "新增/修改活动")
public Result doHandle(TrainSignUpActivity activity) {
if (StrUtil.isBlank(activity.getId())) {
cleanNewActivityData(activity);
trainSignUpActivityManageService.add(activity, null);
} else {
trainSignUpActivityManageService.edit(activity);
@@ -220,6 +224,63 @@ public class TrainSignUpManageController {
return Result.success();
}
private void cleanNewActivityData(TrainSignUpActivity activity) {
if (activity == null) {
return;
}
activity.setId(null);
activity.setIsTemplate(false);
activity.setCreatedBy(null);
activity.setCreatedAt(null);
activity.setUpdatedBy(null);
activity.setUpdatedAt(null);
activity.setDelFlag(null);
if (activity.getTypeLimits() != null) {
activity.getTypeLimits().forEach(this::cleanNewTypeLimitData);
}
if (activity.getCourseList() != null) {
activity.getCourseList().forEach(this::cleanNewCourseData);
}
}
private void cleanNewTypeLimitData(TrainSignUpTypeLimit typeLimit) {
if (typeLimit == null) {
return;
}
typeLimit.setId(null);
typeLimit.setActivityId(null);
}
private void cleanNewCourseData(TrainSignUpCourse course) {
if (course == null) {
return;
}
course.setId(null);
course.setActivityId(null);
course.setCreatedBy(null);
course.setCreatedAt(null);
course.setUpdatedBy(null);
course.setUpdatedAt(null);
course.setDelFlag(null);
course.setHasRegisterNum(null);
course.setHasWaitingNum(null);
course.setIsSign(false);
course.setCanSignThisCourseType(null);
if (course.getCourseTimeList() != null) {
course.getCourseTimeList().forEach(this::cleanNewCourseTimeData);
}
}
private void cleanNewCourseTimeData(TrainSignUpActivityCourse courseTime) {
if (courseTime == null) {
return;
}
courseTime.setId(null);
courseTime.setActivityId(null);
courseTime.setCourseId(null);
courseTime.setHasRegisterNum(null);
}
@At
@Ok("json:full")
@ApiOperation("获取分工会人数限制")
@@ -267,13 +328,10 @@ public class TrainSignUpManageController {
@SaCheckPermission(value = {"trainSignUp.manage", "trainSignUp.applyActivity"}, mode = SaMode.OR)
public Result selectUnitAndClub() {
List<NutMap> result = new ArrayList<>();
List<Sys_unit> unitList = dao.query(Sys_unit.class, Cnd.NEW().asc(Sys_unit::getUnitcode));
java.util.Set<String> optionKeys = new java.util.HashSet<>();
List<Sys_unit> unitList = dao.query(Sys_unit.class, Cnd.where(Sys_unit::getUnitLevel, "=", 2).asc(Sys_unit::getUnitcode));
for (Sys_unit unit : unitList) {
NutMap map = new NutMap();
map.put("id", unit.getId());
map.put("name", unit.getName());
map.put("type", "unit");
result.add(map);
addSelectOption(result, optionKeys, unit.getId(), unit.getName(), "unit");
}
List<SysClub> clubList = dao.query(SysClub.class, Cnd.NEW().asc(SysClub::getClubCode));
@@ -286,12 +344,23 @@ public class TrainSignUpManageController {
List<SysClub> passClubList = clubList.stream().filter(o -> passList.contains(o.getId())).toList();
for (SysClub sysClub : passClubList) {
NutMap map = new NutMap();
map.put("id", sysClub.getId());
map.put("name", sysClub.getClubName());
map.put("type", "club");
result.add(map);
addSelectOption(result, optionKeys, sysClub.getId(), sysClub.getClubName(), "club");
}
return Result.success(result);
}
private void addSelectOption(List<NutMap> result, java.util.Set<String> optionKeys, String id, String name, String type) {
if (StrUtil.isBlank(id) || StrUtil.isBlank(name)) {
return;
}
String key = type + ":" + name;
if (!optionKeys.add(key)) {
return;
}
NutMap map = new NutMap();
map.put("id", id);
map.put("name", name);
map.put("type", type);
result.add(map);
}
}
@@ -1,17 +1,21 @@
package com.budwk.app.zhgh.activity.workscollection.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaMode;
import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HtmlUtil;
import com.budwk.app.base.constant.RoleConstant;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.param.PageForm;
import com.budwk.app.base.result.Result;
import com.budwk.app.base.service.BaseService;
import com.budwk.app.sys.models.Sys_home_activity;
import com.budwk.app.sys.models.Sys_home_template;
import com.budwk.app.sys.models.Sys_user;
import com.budwk.app.sys.services.SysMsgService;
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.service.ActivityBasicScopeService;
import com.budwk.app.zhgh.activity.workscollection.models.Activity_works_collection;
@@ -63,11 +67,18 @@ public class ActivityWorksCollectionManageController {
public Result pageData(@Valid PageForm pageForm, Long year) {
Sql sql = Sqls.create("""
select
wc.*,
wc.id,
wc.name,
wc.createdAt,
wc.startDateTime,
wc.endDateTime,
wc.enable,
IF(sht.id IS NULL, 0, 1) isTemplate,
u.username as userName
from
activity_works_collection wc
LEFT JOIN vw_user u on u.id = wc.createdBy
LEFT JOIN sys_home_template sht ON sht.id = wc.id
$condition
""");
Cnd cnd = Cnd.NEW();
@@ -82,8 +93,49 @@ public class ActivityWorksCollectionManageController {
@At
@SaCheckPermission("activity.workscollection.manage")
public Result setTemplate(String id) {
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
return Result.error("无权操作");
}
Activity_works_collection worksCollection = dao.fetch(Activity_works_collection.class, id);
if (worksCollection == null) {
return Result.error("活动不存在");
}
Sys_home_template oldHomeTemplate = dao.fetch(Sys_home_template.class, id);
Sys_home_template sysHomeTemplate = worksCollection.covertToSysHomeTemplate();
if (oldHomeTemplate != null) {
sysHomeTemplate.setTop(oldHomeTemplate.getTop());
sysHomeTemplate.setPush(oldHomeTemplate.getPush());
sysHomeTemplate.setSortNo(oldHomeTemplate.getSortNo());
if (oldHomeTemplate.getTemplateName() != null) {
sysHomeTemplate.setTemplateName(oldHomeTemplate.getTemplateName());
}
if (oldHomeTemplate.getTemplateIcon() != null) {
sysHomeTemplate.setTemplateIcon(oldHomeTemplate.getTemplateIcon());
}
if (oldHomeTemplate.getTemplateFile() != null) {
sysHomeTemplate.setTemplateFile(oldHomeTemplate.getTemplateFile());
}
}
dao.insertOrUpdate(sysHomeTemplate);
return Result.success();
}
@At
@SaCheckPermission("activity.workscollection.manage")
public Result cancelTemplate(String id) {
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
return Result.error("无权操作");
}
dao.delete(Sys_home_template.class, id);
return Result.success();
}
@At
@SaCheckPermission(value = {"activity.workscollection.manage", "activity.workscollection.new"}, mode = SaMode.OR)
@Aop(TransAop.READ_COMMITTED)
public Result insert(@Param("data") @Valid Activity_works_collection worksCollection) {
cleanNewActivityData(worksCollection);
worksCollection.setIsSubmit(true);
dao.insertWith(worksCollection, "subjectTypes");
worksCollection.getSubjectTypes().forEach(item -> {
@@ -94,9 +146,10 @@ public class ActivityWorksCollectionManageController {
}
@At
@SaCheckPermission("activity.workscollection.manage")
@SaCheckPermission(value = {"activity.workscollection.manage", "activity.workscollection.new"}, mode = SaMode.OR)
@Aop(TransAop.READ_COMMITTED)
public Result save(@Param("data") @Valid Activity_works_collection worksCollection) {
cleanNewActivityData(worksCollection);
worksCollection.setIsSubmit(false);
dao.insertWith(worksCollection, "subjectTypes");
worksCollection.getSubjectTypes().forEach(item -> {
@@ -105,8 +158,48 @@ public class ActivityWorksCollectionManageController {
return Result.success();
}
private void cleanNewActivityData(Activity_works_collection worksCollection) {
if (worksCollection == null) {
return;
}
worksCollection.setId(null);
worksCollection.setCreatedBy(null);
worksCollection.setCreatedAt(null);
worksCollection.setUpdatedBy(null);
worksCollection.setUpdatedAt(null);
worksCollection.setDelFlag(null);
if (worksCollection.getSubjectTypes() != null) {
worksCollection.getSubjectTypes().forEach(subjectType -> {
if (subjectType == null) {
return;
}
subjectType.setId(null);
subjectType.setActivityId(null);
subjectType.setCreatedBy(null);
subjectType.setCreatedAt(null);
subjectType.setUpdatedBy(null);
subjectType.setUpdatedAt(null);
subjectType.setDelFlag(null);
if (subjectType.getWorksTypes() != null) {
subjectType.getWorksTypes().forEach(worksType -> {
if (worksType == null) {
return;
}
worksType.setId(null);
worksType.setSubjectId(null);
worksType.setCreatedBy(null);
worksType.setCreatedAt(null);
worksType.setUpdatedBy(null);
worksType.setUpdatedAt(null);
worksType.setDelFlag(null);
});
}
});
}
}
@At
@SaCheckPermission("activity.workscollection.manage")
@SaCheckPermission(value = {"activity.workscollection.manage", "activity.workscollection.new"}, mode = SaMode.OR)
@Aop(TransAop.READ_COMMITTED)
public Result update(@Param("data") @Valid Activity_works_collection worksCollection) {
dao.update(worksCollection);
@@ -134,6 +227,9 @@ public class ActivityWorksCollectionManageController {
@SaCheckPermission("activity.workscollection.manage")
@Aop(TransAop.READ_COMMITTED)
public Result delete(@Valid String id) {
if (dao.fetch(Sys_home_template.class, id) != null) {
return Result.error("该活动已设为模板,请先取消模板后再删除");
}
dao.delete(Activity_works_collection.class, id);
dao.clear(Activity_works_collection_upload.class, Cnd.where(Activity_works_collection_upload::getActivityId, "=", id));
dao.clear(Activity_works_subjectType.class, Cnd.where(Activity_works_subjectType::getActivityId, "=", id));
@@ -142,7 +238,7 @@ public class ActivityWorksCollectionManageController {
}
@At
@SaCheckPermission("activity.workscollection.manage")
@SaCheckPermission(value = {"activity.workscollection.manage", "activity.workscollection.new"}, mode = SaMode.OR)
public Result findOne(@Valid String id) {
Activity_works_collection worksCollection = dao.fetch(Activity_works_collection.class, id);
dao.fetchLinks(worksCollection, "subjectTypes");
@@ -0,0 +1,18 @@
package com.budwk.app.zhgh.activity.workscollection.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaMode;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
@IocBean
@At("/platform/activity/worksCollection/new")
public class ActivityWorksCollectionNewController {
@At("")
@Ok("beetl:/platform/zhgh/activity/workscollection/manage/index.html")
@SaCheckPermission(value = {"activity.workscollection.manage", "activity.workscollection.new"}, mode = SaMode.OR)
public void index() {
}
}
@@ -2,6 +2,7 @@ package com.budwk.app.zhgh.activity.workscollection.models;
import com.budwk.app.base.model.BaseModel;
import com.budwk.app.sys.models.Sys_home_activity;
import com.budwk.app.sys.models.Sys_home_template;
import com.budwk.app.sys.services.SysHomeConvert;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -142,4 +143,21 @@ public class Activity_works_collection extends BaseModel implements SysHomeConve
return sysHomeActivity;
}
public Sys_home_template covertToSysHomeTemplate() {
Sys_home_template sysHomeTemplate = new Sys_home_template();
sysHomeTemplate.setId(this.getId());
sysHomeTemplate.setName(this.getName());
sysHomeTemplate.setTemplateName(this.getName());
sysHomeTemplate.setCover(this.getCover());
sysHomeTemplate.setContent(this.getContent());
sysHomeTemplate.setUrl("/platform/activity/worksCollection/new?mode=edit&id=" + this.getId());
sysHomeTemplate.setH5Url("");
sysHomeTemplate.setStartDate(this.getStartDateTime());
sysHomeTemplate.setEndDate(this.getEndDateTime());
sysHomeTemplate.setAllowUserGroupId(this.getActivityGroupId());
sysHomeTemplate.setEnable(Boolean.TRUE.equals(this.getEnable()));
sysHomeTemplate.setClassPath(this.getClass().getPackageName() + this.getClass().getName());
return sysHomeTemplate;
}
}
@@ -104,4 +104,8 @@ public class WelfareProjectSubjectOption extends BaseModel implements Serializab
@Comment("简短备注")
@ColDefine(type = ColType.VARCHAR,width = 100)
private String simpleDesc;
private Integer selectedTotal;
private Integer rankNo;
}
@@ -41,10 +41,45 @@ public class WelfareProjectServiceImpl extends BaseServiceImpl<WelfareProject> i
@Override
public WelfareProject projectInfo(String projectId) {
WelfareProject project = fetch(projectId);
if (project == null) {
return null;
}
fetchLinks(project, "options", Cnd.NEW().asc("optionSort"));
fillOptionRank(projectId, project.getOptions());
return project;
}
private void fillOptionRank(String projectId, List<WelfareProjectSubjectOption> options) {
if (options == null || options.isEmpty()) {
return;
}
Sql sql = Sqls.create("""
SELECT
selectOptionId,
SUM(IFNULL(selectNum, 0)) AS selectedTotal
FROM welfare_project_user_selection
WHERE welfareId = @projectId
AND selectOptionId IS NOT NULL
GROUP BY selectOptionId
""");
sql.setParam("projectId", projectId);
Map<String, Integer> selectedTotalMap = listMap(sql).stream()
.collect(Collectors.toMap(
item -> item.getString("selectOptionId"),
item -> item.getInt("selectedTotal", 0),
Integer::sum
));
options.forEach(option -> option.setSelectedTotal(selectedTotalMap.getOrDefault(option.getId(), 0)));
List<WelfareProjectSubjectOption> rankOptions = new ArrayList<>(options);
rankOptions.sort(Comparator
.comparing((WelfareProjectSubjectOption option) -> option.getSelectedTotal() == null ? 0 : option.getSelectedTotal()).reversed()
.thenComparing(option -> option.getOptionSort() == null ? Integer.MAX_VALUE : option.getOptionSort()));
for (int i = 0; i < rankOptions.size(); i++) {
rankOptions.get(i).setRankNo(i + 1);
}
}
@Override
@Aop(TransAop.READ_COMMITTED)
public void saveProject(WelfareProject project) {