change
This commit is contained in:
+2
@@ -196,6 +196,8 @@ public class ActivityCultureApplyActivityController {
|
||||
}
|
||||
|
||||
private void cleanNewActivityData(ActivityTissue tissue) {
|
||||
// 从模板另存或直接新建的活动必须进入活动列表,不能继承来源活动的模板状态。
|
||||
tissue.setTemplateStatus(ActivityTissue.TEMPLATE_STATUS_UNSET);
|
||||
tissue.setId(null);
|
||||
tissue.setAuditId(null);
|
||||
tissue.setState(null);
|
||||
|
||||
+10
-30
@@ -4,6 +4,7 @@ import cn.dev33.satoken.annotation.SaCheckLogin;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.dev33.satoken.annotation.SaMode;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
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.param.PageForm;
|
||||
@@ -69,8 +70,9 @@ public class ActivityCultureInfoManageController {
|
||||
public Result pageData(PageForm page, String year,
|
||||
String name,
|
||||
String unionId,
|
||||
@Valid Integer activity_type) {
|
||||
return Result.success(activityCultureService.pageData(page, year, name, unionId, activity_type));
|
||||
@Valid Integer activity_type,
|
||||
Integer templateStatus) {
|
||||
return Result.success(activityCultureService.pageData(page, year, name, unionId, activity_type, templateStatus));
|
||||
}
|
||||
|
||||
@At
|
||||
@@ -90,47 +92,25 @@ public class ActivityCultureInfoManageController {
|
||||
}
|
||||
|
||||
@At
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@SaCheckPermission("activity.culture.infoManage.school")
|
||||
@SaCheckPermission(value = {"activity.culture.infoManage.school", "activity.culture.infoManage.union"}, mode = SaMode.OR)
|
||||
public Result setTemplate(@Valid String id) {
|
||||
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
|
||||
return Result.error("无权操作");
|
||||
}
|
||||
ActivityTissue tissue = activityCultureService.fetch(id);
|
||||
if (tissue == null) {
|
||||
return Result.error("活动不存在");
|
||||
String errorMessage = activityCultureService.setTemplate(id);
|
||||
if (StrUtil.isNotBlank(errorMessage)) {
|
||||
return Result.error(errorMessage);
|
||||
}
|
||||
if (tissue.getActivity_type() == null || tissue.getActivity_type() != 40001) {
|
||||
return Result.error("仅校工会文化活动可设为模板");
|
||||
}
|
||||
Sys_home_template oldHomeTemplate = activityCultureService.dao().fetch(Sys_home_template.class, id);
|
||||
Sys_home_template sysHomeTemplate = tissue.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());
|
||||
}
|
||||
}
|
||||
activityCultureService.dao().insertOrUpdate(sysHomeTemplate);
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
@At
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
@SaCheckPermission("activity.culture.infoManage.school")
|
||||
@SaCheckPermission(value = {"activity.culture.infoManage.school", "activity.culture.infoManage.union"}, mode = SaMode.OR)
|
||||
public Result cancelTemplate(@Valid String id) {
|
||||
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
|
||||
return Result.error("无权操作");
|
||||
}
|
||||
activityCultureService.dao().delete(Sys_home_template.class, id);
|
||||
activityCultureService.cancelTemplate(id);
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
|
||||
@@ -28,6 +28,12 @@ import java.util.List;
|
||||
@Table("activity_tissue")
|
||||
public class ActivityTissue extends BaseModel implements Serializable, SysHomeConvert {
|
||||
|
||||
/** 未设置为活动模板。 */
|
||||
public static final int TEMPLATE_STATUS_UNSET = 0;
|
||||
|
||||
/** 已设置为活动模板。 */
|
||||
public static final int TEMPLATE_STATUS_SET = 1;
|
||||
|
||||
@Column
|
||||
@Name
|
||||
@Comment("ID")
|
||||
@@ -236,6 +242,12 @@ public class ActivityTissue extends BaseModel implements Serializable, SysHomeCo
|
||||
@ColDefine(type = ColType.BOOLEAN)
|
||||
private Boolean isUnseal;
|
||||
|
||||
@Column
|
||||
@Comment("模板设置状态(0:未设置,1:已设置)")
|
||||
@ColDefine(type = ColType.INT, width = 1)
|
||||
@Default("0")
|
||||
private Integer templateStatus;
|
||||
|
||||
@Column
|
||||
@Comment("物品")
|
||||
@ColDefine(type = ColType.MYSQL_JSON)
|
||||
|
||||
+27
-1
@@ -21,7 +21,33 @@ public interface ActivityCultureService extends BaseService<ActivityTissue> {
|
||||
|
||||
void doEditActivity(ActivityTissue tissue);
|
||||
|
||||
Object pageData(PageForm page, String year, String name, String unionId, Integer activity_type);
|
||||
/**
|
||||
* 分页查询文化活动。
|
||||
*
|
||||
* @param page 分页参数
|
||||
* @param year 年度
|
||||
* @param name 活动名称
|
||||
* @param unionId 工会ID
|
||||
* @param activity_type 活动类型
|
||||
* @param templateStatus 模板设置状态,为空时不限制
|
||||
* @return 文化活动分页数据
|
||||
*/
|
||||
Object pageData(PageForm page, String year, String name, String unionId, Integer activity_type, Integer templateStatus);
|
||||
|
||||
/**
|
||||
* 将校工会或分工会文化活动设置为工作模板,并同步模板状态。
|
||||
*
|
||||
* @param id 活动ID
|
||||
* @return 空字符串表示成功,否则返回业务错误信息
|
||||
*/
|
||||
String setTemplate(String id);
|
||||
|
||||
/**
|
||||
* 取消校工会或分工会文化活动模板,并同步模板状态。
|
||||
*
|
||||
* @param id 活动ID
|
||||
*/
|
||||
void cancelTemplate(String id);
|
||||
|
||||
NutMap findOne(String id);
|
||||
|
||||
|
||||
+63
-3
@@ -6,6 +6,7 @@ import com.budwk.app.base.model.Audit;
|
||||
import com.budwk.app.base.param.PageForm;
|
||||
import com.budwk.app.base.service.impl.BaseServiceImpl;
|
||||
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.web.commons.auth.utils.SecurityUtil;
|
||||
import com.budwk.app.zhgh.activity.basic.service.ActivityBasicScopeService;
|
||||
@@ -14,6 +15,8 @@ import com.budwk.app.zhgh.activity.culture.models.ActivityTissuePerson;
|
||||
import com.budwk.app.zhgh.activity.culture.service.ActivityCultureService;
|
||||
import com.budwk.app.zhgh.club.model.SysClub;
|
||||
import com.budwk.app.zhgh.club.service.SysClubService;
|
||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
@@ -21,6 +24,7 @@ import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||
import org.nutz.ioc.loader.annotation.Inject;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
import org.nutz.ioc.aop.Aop;
|
||||
import org.nutz.lang.Strings;
|
||||
import org.nutz.lang.util.NutMap;
|
||||
|
||||
@@ -85,7 +89,7 @@ public class ActivityCultureServiceImpl extends BaseServiceImpl<ActivityTissue>
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object pageData(PageForm page, String year, String name, String unionId, Integer activity_type) {
|
||||
public Object pageData(PageForm page, String year, String name, String unionId, Integer activity_type, Integer templateStatus) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
|
||||
Sql sql = Sqls.create("""
|
||||
@@ -110,7 +114,7 @@ public class ActivityCultureServiceImpl extends BaseServiceImpl<ActivityTissue>
|
||||
t.variable taskVariable,
|
||||
IF((SELECT taskName FROM wf_process_task tt WHERE tt.id = t.taskParentId) = 'startTask', 1, 0) canRevoke,
|
||||
(select MAX(id) from wf_process_task where processInstanceId = ins.id and taskName = 'startTask') AS startTaskId,
|
||||
IF(sht.id IS NULL, 0, 1) AS isTemplate
|
||||
tissue.templateStatus AS isTemplate
|
||||
FROM
|
||||
activity_tissue tissue
|
||||
LEFT JOIN sys_union uni ON uni.id = tissue.unionId
|
||||
@@ -119,7 +123,6 @@ public class ActivityCultureServiceImpl extends BaseServiceImpl<ActivityTissue>
|
||||
LEFT JOIN `wf_process_instance` ins ON ins.businessNo = tissue.id
|
||||
LEFT JOIN wf_process_task t ON t.processInstanceId = ins.id AND t.taskState = 10
|
||||
LEFT JOIN wf_process_task_actor ta ON ta.processTaskId = t.id
|
||||
LEFT JOIN sys_home_template sht ON sht.id = tissue.id
|
||||
$condition
|
||||
""");
|
||||
|
||||
@@ -127,6 +130,8 @@ public class ActivityCultureServiceImpl extends BaseServiceImpl<ActivityTissue>
|
||||
cnd.andEX("tissue.projectTypeCode", "!=", "50004");
|
||||
cnd.andEX("tissue.unionId", "=", unionId);
|
||||
cnd.andEX("tissue.activity_type", "=", activity_type);
|
||||
// 校工会管理页按页签传入模板状态;其他文化活动页面不传时保持原查询范围。
|
||||
cnd.andEX("tissue.templateStatus", "=", templateStatus);
|
||||
cnd.groupBy("tissue.id");
|
||||
|
||||
if (Strings.isNotBlank(name)) {
|
||||
@@ -159,6 +164,61 @@ public class ActivityCultureServiceImpl extends BaseServiceImpl<ActivityTissue>
|
||||
return this.listPageMap(page.getPageNumber(), page.getPageSize(), sql);
|
||||
}
|
||||
|
||||
/**
|
||||
* 将校工会或分工会文化活动转换为工作模板,并保留模板中心已维护的展示配置。
|
||||
*
|
||||
* @param id 活动ID
|
||||
* @return 空字符串表示成功,否则返回业务错误信息
|
||||
*/
|
||||
@Override
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
public String setTemplate(String id) {
|
||||
ActivityTissue tissue = fetch(id);
|
||||
if (tissue == null) {
|
||||
return "活动不存在";
|
||||
}
|
||||
if (tissue.getActivity_type() == null || !List.of(40001, 40002).contains(tissue.getActivity_type())) {
|
||||
return "仅校工会或分工会文化活动可设为模板";
|
||||
}
|
||||
|
||||
Sys_home_template oldHomeTemplate = dao().fetch(Sys_home_template.class, id);
|
||||
Sys_home_template sysHomeTemplate = tissue.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);
|
||||
dao().update(ActivityTissue.class,
|
||||
Chain.make("templateStatus", ActivityTissue.TEMPLATE_STATUS_SET),
|
||||
Cnd.where("id", "=", id));
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除模板中心记录并将文化活动恢复为未设置模板状态。
|
||||
*
|
||||
* @param id 活动ID
|
||||
*/
|
||||
@Override
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
public void cancelTemplate(String id) {
|
||||
dao().delete(Sys_home_template.class, id);
|
||||
dao().update(ActivityTissue.class,
|
||||
Chain.make("templateStatus", ActivityTissue.TEMPLATE_STATUS_UNSET),
|
||||
Cnd.where("id", "=", id));
|
||||
}
|
||||
|
||||
@Override
|
||||
public NutMap findOne(String id) {
|
||||
Sql sql = Sqls.create("""
|
||||
|
||||
+9
-31
@@ -6,7 +6,6 @@ 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;
|
||||
@@ -68,20 +67,15 @@ public class FamilyActivityController {
|
||||
@SaCheckPermission("family.manage")
|
||||
public Result pageData(PageForm pageForm,
|
||||
@Param(value = "year") Integer year,
|
||||
@Param(value = "activityName") String activityName) {
|
||||
@Param(value = "activityName") String activityName,
|
||||
@Param(value = "templateStatus") Integer templateStatus) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("year", "=", year);
|
||||
cnd.and(Cnd.likeEX("activityName", activityName));
|
||||
// 有模板管理角色时前端按页签传入状态;普通用户不传时保持原列表范围。
|
||||
cnd.andEX("templateStatus", "=", templateStatus);
|
||||
cnd.orderBy("createdAt", "desc");
|
||||
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);
|
||||
return Result.success().addData(familyActivityManageService.pageData(pageForm, cnd));
|
||||
}
|
||||
|
||||
@At
|
||||
@@ -91,27 +85,9 @@ public class FamilyActivityController {
|
||||
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
|
||||
return Result.error("无权操作");
|
||||
}
|
||||
FamilyActivity activity = familyActivityManageService.fetch(id);
|
||||
if (activity == null) {
|
||||
if (!familyActivityManageService.setTemplate(id)) {
|
||||
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();
|
||||
}
|
||||
|
||||
@@ -122,7 +98,7 @@ public class FamilyActivityController {
|
||||
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
|
||||
return Result.error("无权操作");
|
||||
}
|
||||
dao.delete(Sys_home_template.class, id);
|
||||
familyActivityManageService.cancelTemplate(id);
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
@@ -224,6 +200,8 @@ public class FamilyActivityController {
|
||||
if (activity == null) {
|
||||
return;
|
||||
}
|
||||
// 直接新建或从模板另存时明确重置状态,防止前端历史字段被带回。
|
||||
activity.setTemplateStatus(FamilyActivity.TEMPLATE_STATUS_UNSET);
|
||||
activity.setId(null);
|
||||
activity.setIsTemplate(false);
|
||||
activity.setCreatedBy(null);
|
||||
|
||||
@@ -25,6 +25,12 @@ import java.util.List;
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class FamilyActivity extends BaseModel implements Serializable, SysHomeConvert {
|
||||
|
||||
/** 未设置为活动模板。 */
|
||||
public static final int TEMPLATE_STATUS_UNSET = 0;
|
||||
|
||||
/** 已设置为活动模板。 */
|
||||
public static final int TEMPLATE_STATUS_SET = 1;
|
||||
|
||||
@Name
|
||||
@PrevInsert(uu32 = true)
|
||||
private String id;
|
||||
@@ -114,6 +120,12 @@ public class FamilyActivity extends BaseModel implements Serializable, SysHomeCo
|
||||
|
||||
private Boolean isTemplate;
|
||||
|
||||
@Column
|
||||
@Comment("模板设置状态(0:未设置,1:已设置)")
|
||||
@ColDefine(type = ColType.INT, width = 1)
|
||||
@Default("0")
|
||||
private Integer templateStatus;
|
||||
|
||||
@Column
|
||||
@Comment("活动类型")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 20)
|
||||
|
||||
@@ -50,6 +50,21 @@ public interface FamilyActivityService extends BaseService<FamilyActivity> {
|
||||
*/
|
||||
Pagination pageData(PageForm pageForm, Cnd cnd);
|
||||
|
||||
/**
|
||||
* 将亲子活动设置为工作模板,并同步模板状态。
|
||||
*
|
||||
* @param id 活动ID
|
||||
* @return true 表示活动存在且设置成功,false 表示活动不存在
|
||||
*/
|
||||
boolean setTemplate(String id);
|
||||
|
||||
/**
|
||||
* 取消亲子活动模板,并同步模板状态。
|
||||
*
|
||||
* @param id 活动ID
|
||||
*/
|
||||
void cancelTemplate(String id);
|
||||
|
||||
|
||||
/**
|
||||
* 手机端分页查询
|
||||
|
||||
+54
-1
@@ -6,6 +6,7 @@ import com.budwk.app.base.param.PageForm;
|
||||
import com.budwk.app.base.result.Result;
|
||||
import com.budwk.app.base.service.impl.BaseServiceImpl;
|
||||
import com.budwk.app.sys.models.Sys_home_activity;
|
||||
import com.budwk.app.sys.models.Sys_home_template;
|
||||
import com.budwk.app.sys.views.View_user;
|
||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||
import com.budwk.app.zhgh.activity.family.models.*;
|
||||
@@ -48,7 +49,8 @@ public class FamilyActivityServiceImpl extends BaseServiceImpl<FamilyActivity> i
|
||||
@Override
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
public void add(FamilyActivity activity, FamilyCourse course) {
|
||||
|
||||
// 新建活动(包括从模板另存)统一归入活动列表,不能继承来源活动的模板状态。
|
||||
activity.setTemplateStatus(FamilyActivity.TEMPLATE_STATUS_UNSET);
|
||||
dao().insert(activity);
|
||||
|
||||
//插入类型限制
|
||||
@@ -215,6 +217,57 @@ public class FamilyActivityServiceImpl extends BaseServiceImpl<FamilyActivity> i
|
||||
return pagination;
|
||||
}
|
||||
|
||||
/**
|
||||
* 将亲子活动转换为工作模板,并保留模板中心已维护的展示配置。
|
||||
*
|
||||
* @param id 活动ID
|
||||
* @return true 表示活动存在且设置成功,false 表示活动不存在
|
||||
*/
|
||||
@Override
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
public boolean setTemplate(String id) {
|
||||
FamilyActivity activity = fetch(id);
|
||||
if (activity == null) {
|
||||
return false;
|
||||
}
|
||||
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);
|
||||
dao().update(FamilyActivity.class,
|
||||
Chain.make("templateStatus", FamilyActivity.TEMPLATE_STATUS_SET),
|
||||
Cnd.where("id", "=", id));
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除模板中心记录并将亲子活动恢复为未设置模板状态。
|
||||
*
|
||||
* @param id 活动ID
|
||||
*/
|
||||
@Override
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
public void cancelTemplate(String id) {
|
||||
dao().delete(Sys_home_template.class, id);
|
||||
dao().update(FamilyActivity.class,
|
||||
Chain.make("templateStatus", FamilyActivity.TEMPLATE_STATUS_UNSET),
|
||||
Cnd.where("id", "=", id));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Pagination mPageData(PageForm pageForm, Integer year, int activityStatus, Integer activityType) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
|
||||
+7
-23
@@ -65,7 +65,8 @@ public class ActivitySportsInfoManageController {
|
||||
@Param(value = "gameStyle") String gameStyle,
|
||||
@Param(value = "query") String query,
|
||||
@Param(value = "activityId") String activityId,
|
||||
@Param(value = "activityLevel") String activityLevel) {
|
||||
@Param(value = "activityLevel") String activityLevel,
|
||||
@Param(value = "templateStatus") Integer templateStatus) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
@@ -91,13 +92,12 @@ public class ActivitySportsInfoManageController {
|
||||
school.activityCode,
|
||||
school.foundDate,
|
||||
school.applyType,
|
||||
IF(sht.id IS NULL, 0, 1) isTemplate,
|
||||
school.templateStatus 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
|
||||
""");
|
||||
|
||||
@@ -121,6 +121,8 @@ public class ActivitySportsInfoManageController {
|
||||
|
||||
cnd.andEX("school.activityLevel", "=", activityLevel);
|
||||
cnd.andEX("school.gameStyle", "=", gameStyle);
|
||||
// 管理员页签传入模板状态;未展示页签的用户不传该参数,继续查询原完整列表。
|
||||
cnd.andEX("school.templateStatus", "=", templateStatus);
|
||||
cnd.andEX("YEAR(school.applyStartTime)", "=", year);
|
||||
if (StrUtil.isNotBlank(name)) {
|
||||
cnd.and(Cnd.likeEX("school.name", name));
|
||||
@@ -141,27 +143,9 @@ public class ActivitySportsInfoManageController {
|
||||
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
|
||||
return Result.error("无权操作");
|
||||
}
|
||||
ActivitySchool activitySchool = activitySportsService.fetch(id);
|
||||
if (activitySchool == null) {
|
||||
if (!activitySportsService.setTemplate(id)) {
|
||||
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();
|
||||
}
|
||||
|
||||
@@ -172,7 +156,7 @@ public class ActivitySportsInfoManageController {
|
||||
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
|
||||
return Result.error("无权操作");
|
||||
}
|
||||
dao.delete(Sys_home_template.class, id);
|
||||
activitySportsService.cancelTemplate(id);
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
|
||||
@@ -171,6 +171,18 @@ public class ActivitySchool extends BaseModel implements Serializable , SysHomeC
|
||||
@ColDefine(type = ColType.BOOLEAN)
|
||||
private Integer isSave;
|
||||
|
||||
/** 未设置为工作模板。 */
|
||||
public static final int TEMPLATE_STATUS_UNSET = 0;
|
||||
|
||||
/** 已设置为工作模板。 */
|
||||
public static final int TEMPLATE_STATUS_SET = 1;
|
||||
|
||||
@Column
|
||||
@Comment("模板设置状态(0:未设置 1:已设置)")
|
||||
@ColDefine(type = ColType.INT, width = 1)
|
||||
@Default("0")
|
||||
private Integer templateStatus;
|
||||
|
||||
@Column
|
||||
@Comment("小程序活动封面")
|
||||
@ColDefine(type = ColType.VARCHAR,width = 100)
|
||||
|
||||
@@ -18,5 +18,20 @@ public interface ActivitySportsService extends BaseService<ActivitySchool> {
|
||||
|
||||
void doDelete(String id);
|
||||
|
||||
/**
|
||||
* 将体育活动设置为工作模板,并同步活动表中的模板设置状态。
|
||||
*
|
||||
* @param id 体育活动ID
|
||||
* @return 活动存在且设置成功时返回 true,活动不存在时返回 false
|
||||
*/
|
||||
boolean setTemplate(String id);
|
||||
|
||||
/**
|
||||
* 取消体育活动的工作模板,并同步活动表中的模板设置状态。
|
||||
*
|
||||
* @param id 体育活动ID
|
||||
*/
|
||||
void cancelTemplate(String id);
|
||||
|
||||
void exportXlsx(String id, String unionId, HttpServletResponse response);
|
||||
}
|
||||
|
||||
+56
@@ -8,6 +8,7 @@ import com.budwk.app.base.service.impl.BaseServiceImpl;
|
||||
import com.budwk.app.base.utils.CommonDownloadUtil;
|
||||
import com.budwk.app.base.utils.DateUtil;
|
||||
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.SecurityUtil;
|
||||
import com.budwk.app.zhgh.activity.basic.models.ActivityBasicUnit;
|
||||
import com.budwk.app.zhgh.activity.basic.models.ActivityBasicUnion;
|
||||
@@ -61,6 +62,8 @@ public class ActivitySportsServiceImpl extends BaseServiceImpl<ActivitySchool> i
|
||||
}
|
||||
activitySchool.setFoundDate(DateUtil.getDate());
|
||||
activitySchool.setClose(false);
|
||||
// 新建活动只能从“未设置模板”状态开始,防止客户端提交模板状态造成数据不一致。
|
||||
activitySchool.setTemplateStatus(ActivitySchool.TEMPLATE_STATUS_UNSET);
|
||||
ActivitySchool school = insert(activitySchool);
|
||||
addTeam(school.getId(), events);
|
||||
|
||||
@@ -190,6 +193,59 @@ public class ActivitySportsServiceImpl extends BaseServiceImpl<ActivitySchool> i
|
||||
dao().delete(Sys_home_activity.class, id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 将活动内容转换为首页工作模板,并在同一事务内更新活动模板状态。
|
||||
* 重复设置时保留管理员在工作模板管理中维护的名称、图标、文件及排序配置。
|
||||
*
|
||||
* @param id 体育活动ID
|
||||
* @return 活动存在且设置成功时返回 true,否则返回 false
|
||||
*/
|
||||
@Override
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
public boolean setTemplate(String id) {
|
||||
ActivitySchool activitySchool = fetch(id);
|
||||
if (activitySchool == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
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);
|
||||
dao().update(ActivitySchool.class,
|
||||
Chain.make("templateStatus", ActivitySchool.TEMPLATE_STATUS_SET),
|
||||
Cnd.where("id", "=", id));
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除首页工作模板,并在同一事务内将活动恢复为未设置模板状态。
|
||||
*
|
||||
* @param id 体育活动ID
|
||||
*/
|
||||
@Override
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
public void cancelTemplate(String id) {
|
||||
dao().delete(Sys_home_template.class, id);
|
||||
dao().update(ActivitySchool.class,
|
||||
Chain.make("templateStatus", ActivitySchool.TEMPLATE_STATUS_UNSET),
|
||||
Cnd.where("id", "=", id));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exportXlsx(String id, String unionId, HttpServletResponse response) {
|
||||
try {
|
||||
|
||||
+7
-31
@@ -6,7 +6,6 @@ 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.flow.entity.ProcessInstance;
|
||||
@@ -72,20 +71,15 @@ public class TrainSignUpManageController {
|
||||
@SaCheckPermission("trainSignUp.manage")
|
||||
public Result pageData(PageForm pageForm,
|
||||
@Param(value = "year") Integer year,
|
||||
@Param(value = "activityName") String activityName) {
|
||||
@Param(value = "activityName") String activityName,
|
||||
@Param(value = "templateStatus") Integer templateStatus) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("year", "=", year);
|
||||
cnd.and(Cnd.likeEX("activityName", activityName));
|
||||
// 具备模板管理角色时,前端按页签传入状态;普通用户不传时仍保持原列表范围。
|
||||
cnd.andEX("templateStatus", "=", templateStatus);
|
||||
cnd.orderBy("createdAt", "desc");
|
||||
Pagination<TrainSignUpActivity> pagination = trainSignUpActivityManageService.pageData(pageForm, cnd);
|
||||
List<TrainSignUpActivity> list = pagination.getList(TrainSignUpActivity.class);
|
||||
if (list != null && !list.isEmpty()) {
|
||||
List<String> ids = list.stream().map(TrainSignUpActivity::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);
|
||||
return Result.success().addData(trainSignUpActivityManageService.pageData(pageForm, cnd));
|
||||
}
|
||||
|
||||
@At
|
||||
@@ -95,27 +89,9 @@ public class TrainSignUpManageController {
|
||||
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
|
||||
return Result.error("无权操作");
|
||||
}
|
||||
TrainSignUpActivity activity = trainSignUpActivityManageService.fetch(id);
|
||||
if (activity == null) {
|
||||
if (!trainSignUpActivityManageService.setTemplate(id)) {
|
||||
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();
|
||||
}
|
||||
|
||||
@@ -126,7 +102,7 @@ public class TrainSignUpManageController {
|
||||
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
|
||||
return Result.error("无权操作");
|
||||
}
|
||||
dao.delete(Sys_home_template.class, id);
|
||||
trainSignUpActivityManageService.cancelTemplate(id);
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
|
||||
@@ -22,6 +22,12 @@ import java.util.List;
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class TrainSignUpActivity extends BaseModel implements Serializable, SysHomeConvert {
|
||||
|
||||
/** 未设置为活动模板。 */
|
||||
public static final int TEMPLATE_STATUS_UNSET = 0;
|
||||
|
||||
/** 已设置为活动模板。 */
|
||||
public static final int TEMPLATE_STATUS_SET = 1;
|
||||
|
||||
@Name
|
||||
@PrevInsert(uu32 = true)
|
||||
private String id;
|
||||
@@ -112,6 +118,12 @@ public class TrainSignUpActivity extends BaseModel implements Serializable, SysH
|
||||
|
||||
private Boolean isTemplate;
|
||||
|
||||
@Column
|
||||
@Comment("模板设置状态(0:未设置,1:已设置)")
|
||||
@ColDefine(type = ColType.INT, width = 1)
|
||||
@Default("0")
|
||||
private Integer templateStatus;
|
||||
|
||||
@Column
|
||||
@Comment("活动类型")
|
||||
@ColDefine(type = ColType.VARCHAR, width = 20)
|
||||
|
||||
+15
@@ -59,6 +59,21 @@ public interface TrainSignUpActivityService extends BaseService<TrainSignUpActiv
|
||||
*/
|
||||
Pagination pageData(PageForm pageForm, Cnd cnd);
|
||||
|
||||
/**
|
||||
* 将品牌活动设置为工作模板,并同步活动表中的模板状态。
|
||||
*
|
||||
* @param id 活动ID
|
||||
* @return true 表示活动存在且设置成功,false 表示活动不存在
|
||||
*/
|
||||
boolean setTemplate(String id);
|
||||
|
||||
/**
|
||||
* 取消品牌活动工作模板,并同步活动表中的模板状态。
|
||||
*
|
||||
* @param id 活动ID
|
||||
*/
|
||||
void cancelTemplate(String id);
|
||||
|
||||
|
||||
/**
|
||||
* 手机端分页查询
|
||||
|
||||
+55
-1
@@ -5,6 +5,7 @@ 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.models.Sys_home_activity;
|
||||
import com.budwk.app.sys.models.Sys_home_template;
|
||||
import com.budwk.app.sys.views.View_user;
|
||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||
import com.budwk.app.zhgh.activity.family.models.FamilyActivity;
|
||||
@@ -53,7 +54,8 @@ public class TrainSignUpActivityServiceImpl extends BaseServiceImpl<TrainSignUpA
|
||||
@Override
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
public void add(TrainSignUpActivity activity, TrainSignUpCourse course) {
|
||||
|
||||
// 新建活动(包括从模板另存)统一归入活动列表,不能继承来源活动的模板状态。
|
||||
activity.setTemplateStatus(TrainSignUpActivity.TEMPLATE_STATUS_UNSET);
|
||||
dao().insert(activity);
|
||||
|
||||
//插入类型限制
|
||||
@@ -289,6 +291,58 @@ public class TrainSignUpActivityServiceImpl extends BaseServiceImpl<TrainSignUpA
|
||||
return pagination;
|
||||
}
|
||||
|
||||
/**
|
||||
* 将品牌活动转换为工作模板,并原样保留模板中心已维护的展示配置。
|
||||
*
|
||||
* @param id 活动ID
|
||||
* @return true 表示活动存在且设置成功,false 表示活动不存在
|
||||
*/
|
||||
@Override
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
public boolean setTemplate(String id) {
|
||||
TrainSignUpActivity activity = fetch(id);
|
||||
if (activity == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
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);
|
||||
dao().update(TrainSignUpActivity.class,
|
||||
Chain.make("templateStatus", TrainSignUpActivity.TEMPLATE_STATUS_SET),
|
||||
Cnd.where("id", "=", id));
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除模板中心记录并将活动恢复为未设置模板状态。
|
||||
*
|
||||
* @param id 活动ID
|
||||
*/
|
||||
@Override
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
public void cancelTemplate(String id) {
|
||||
dao().delete(Sys_home_template.class, id);
|
||||
dao().update(TrainSignUpActivity.class,
|
||||
Chain.make("templateStatus", TrainSignUpActivity.TEMPLATE_STATUS_UNSET),
|
||||
Cnd.where("id", "=", id));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Pagination mPageData(PageForm pageForm, Integer year, int activityStatus, Integer activityType) {
|
||||
Cnd cnd = Cnd.NEW();
|
||||
|
||||
+6
-49
@@ -7,10 +7,8 @@ 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;
|
||||
@@ -53,8 +51,6 @@ public class ActivityWorksCollectionManageController {
|
||||
@Inject
|
||||
private ActivityWorksCollectionService activityWorksCollectionService;
|
||||
@Inject
|
||||
private BaseService baseService;
|
||||
@Inject
|
||||
private SysMsgService sysMsgService;
|
||||
@Inject
|
||||
private ActivityBasicScopeService activityBasicScopeService;
|
||||
@@ -67,31 +63,8 @@ public class ActivityWorksCollectionManageController {
|
||||
|
||||
@At
|
||||
@SaCheckPermission("activity.workscollection.manage")
|
||||
public Result pageData(@Valid PageForm pageForm, Long year) {
|
||||
Sql sql = Sqls.create("""
|
||||
select
|
||||
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();
|
||||
cnd.andEX("year(startDateTime)", "=", year);
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
cnd.where().andLike("name", pageForm.getSearchKeyword());
|
||||
}
|
||||
sql.setCondition(cnd);
|
||||
Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
return Result.success(pagination);
|
||||
public Result pageData(@Valid PageForm pageForm, Long year, Integer templateStatus) {
|
||||
return Result.success(activityWorksCollectionService.pageData(pageForm, year, templateStatus));
|
||||
}
|
||||
|
||||
@At
|
||||
@@ -100,27 +73,9 @@ public class ActivityWorksCollectionManageController {
|
||||
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) {
|
||||
if (!activityWorksCollectionService.setTemplate(id)) {
|
||||
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();
|
||||
}
|
||||
|
||||
@@ -130,7 +85,7 @@ public class ActivityWorksCollectionManageController {
|
||||
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
|
||||
return Result.error("无权操作");
|
||||
}
|
||||
dao.delete(Sys_home_template.class, id);
|
||||
activityWorksCollectionService.cancelTemplate(id);
|
||||
return Result.success();
|
||||
}
|
||||
|
||||
@@ -165,6 +120,8 @@ public class ActivityWorksCollectionManageController {
|
||||
if (worksCollection == null) {
|
||||
return;
|
||||
}
|
||||
// 新建或从模板另存的活动必须进入活动列表,不能继承来源活动的模板状态。
|
||||
worksCollection.setTemplateStatus(Activity_works_collection.TEMPLATE_STATUS_UNSET);
|
||||
worksCollection.setId(null);
|
||||
worksCollection.setCreatedBy(null);
|
||||
worksCollection.setCreatedAt(null);
|
||||
|
||||
+12
@@ -22,6 +22,12 @@ import java.util.List;
|
||||
@Comment("作品征集活动")
|
||||
public class Activity_works_collection extends BaseModel implements SysHomeConvert {
|
||||
|
||||
/** 未设置为活动模板。 */
|
||||
public static final int TEMPLATE_STATUS_UNSET = 0;
|
||||
|
||||
/** 已设置为活动模板。 */
|
||||
public static final int TEMPLATE_STATUS_SET = 1;
|
||||
|
||||
@Name
|
||||
@Comment("ID")
|
||||
@PrevInsert(uu32 = true)
|
||||
@@ -110,6 +116,12 @@ public class Activity_works_collection extends BaseModel implements SysHomeConve
|
||||
@Default(value = "1")
|
||||
private Boolean isSubmit;
|
||||
|
||||
@Column
|
||||
@Comment("模板设置状态(0:未设置,1:已设置)")
|
||||
@ColDefine(type = ColType.INT, width = 1)
|
||||
@Default("0")
|
||||
private Integer templateStatus;
|
||||
|
||||
@Column
|
||||
@Comment("主办单位")
|
||||
@ColDefine(type = ColType.MYSQL_JSON)
|
||||
|
||||
+29
-1
@@ -1,11 +1,39 @@
|
||||
package com.budwk.app.zhgh.activity.workscollection.service;
|
||||
|
||||
import com.budwk.app.base.page.Pagination;
|
||||
import com.budwk.app.base.param.PageForm;
|
||||
import com.budwk.app.base.service.BaseService;
|
||||
import com.budwk.app.zhgh.activity.workscollection.models.Activity_works_collection;
|
||||
|
||||
/**
|
||||
* 作品征集活动配置服务。
|
||||
*/
|
||||
public interface ActivityWorksCollectionService {
|
||||
public interface ActivityWorksCollectionService extends BaseService<Activity_works_collection> {
|
||||
|
||||
/**
|
||||
* 分页查询作品征集活动。
|
||||
*
|
||||
* @param pageForm 分页及关键字参数
|
||||
* @param year 活动年度
|
||||
* @param templateStatus 模板设置状态,为空时不限制
|
||||
* @return 作品征集活动分页数据
|
||||
*/
|
||||
Pagination pageData(PageForm pageForm, Long year, Integer templateStatus);
|
||||
|
||||
/**
|
||||
* 将作品征集活动设置为工作模板,并同步模板状态。
|
||||
*
|
||||
* @param id 活动ID
|
||||
* @return true 表示设置成功,false 表示活动不存在
|
||||
*/
|
||||
boolean setTemplate(String id);
|
||||
|
||||
/**
|
||||
* 取消作品征集活动模板,并同步模板状态。
|
||||
*
|
||||
* @param id 活动ID
|
||||
*/
|
||||
void cancelTemplate(String id);
|
||||
|
||||
/**
|
||||
* 校验编辑活动时删除的主题类型、作品类型是否已被投稿引用。
|
||||
|
||||
+89
-1
@@ -2,13 +2,22 @@ package com.budwk.app.zhgh.activity.workscollection.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
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.models.Sys_home_template;
|
||||
import com.budwk.app.zhgh.activity.workscollection.models.Activity_works_collection;
|
||||
import com.budwk.app.zhgh.activity.workscollection.models.Activity_works_collection_upload;
|
||||
import com.budwk.app.zhgh.activity.workscollection.models.Activity_works_subjectType;
|
||||
import com.budwk.app.zhgh.activity.workscollection.models.Activity_works_worksType;
|
||||
import com.budwk.app.zhgh.activity.workscollection.service.ActivityWorksCollectionService;
|
||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||
import org.nutz.dao.Chain;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Dao;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.ioc.aop.Aop;
|
||||
import org.nutz.ioc.loader.annotation.IocBean;
|
||||
|
||||
import java.util.Collections;
|
||||
@@ -20,14 +29,93 @@ import java.util.stream.Collectors;
|
||||
* 作品征集活动配置服务实现。
|
||||
*/
|
||||
@IocBean(args = {"refer:dao"})
|
||||
public class ActivityWorksCollectionServiceImpl implements ActivityWorksCollectionService {
|
||||
public class ActivityWorksCollectionServiceImpl extends BaseServiceImpl<Activity_works_collection> implements ActivityWorksCollectionService {
|
||||
|
||||
private final Dao dao;
|
||||
|
||||
public ActivityWorksCollectionServiceImpl(Dao dao) {
|
||||
super(dao);
|
||||
this.dao = dao;
|
||||
}
|
||||
|
||||
/**
|
||||
* 按年度、关键字及模板状态分页查询作品征集活动。
|
||||
*/
|
||||
@Override
|
||||
public Pagination pageData(PageForm pageForm, Long year, Integer templateStatus) {
|
||||
Sql sql = Sqls.create("""
|
||||
select
|
||||
wc.id,
|
||||
wc.name,
|
||||
wc.createdAt,
|
||||
wc.startDateTime,
|
||||
wc.endDateTime,
|
||||
wc.enable,
|
||||
wc.templateStatus,
|
||||
wc.templateStatus isTemplate,
|
||||
u.username as userName
|
||||
from
|
||||
activity_works_collection wc
|
||||
LEFT JOIN vw_user u on u.id = wc.createdBy
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
cnd.andEX("year(wc.startDateTime)", "=", year);
|
||||
cnd.andEX("wc.templateStatus", "=", templateStatus);
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
cnd.where().andLike("wc.name", pageForm.getSearchKeyword());
|
||||
}
|
||||
cnd.desc("wc.createdAt");
|
||||
sql.setCondition(cnd);
|
||||
return listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
}
|
||||
|
||||
/**
|
||||
* 将作品征集活动转换为工作模板,并保留模板中心已维护的展示配置。
|
||||
*/
|
||||
@Override
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
public boolean setTemplate(String id) {
|
||||
Activity_works_collection worksCollection = dao.fetch(Activity_works_collection.class, id);
|
||||
if (worksCollection == null) {
|
||||
return false;
|
||||
}
|
||||
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);
|
||||
dao.update(Activity_works_collection.class,
|
||||
Chain.make("templateStatus", Activity_works_collection.TEMPLATE_STATUS_SET),
|
||||
Cnd.where("id", "=", id));
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除模板中心记录并将作品征集活动恢复为未设置模板状态。
|
||||
*/
|
||||
@Override
|
||||
@Aop(TransAop.READ_COMMITTED)
|
||||
public void cancelTemplate(String id) {
|
||||
dao.delete(Sys_home_template.class, id);
|
||||
dao.update(Activity_works_collection.class,
|
||||
Chain.make("templateStatus", Activity_works_collection.TEMPLATE_STATUS_UNSET),
|
||||
Cnd.where("id", "=", id));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String validateReferencedTypesBeforeUpdate(Activity_works_collection worksCollection) {
|
||||
if (worksCollection == null || StrUtil.isBlank(worksCollection.getId())) {
|
||||
|
||||
Reference in New Issue
Block a user