commit
This commit is contained in:
@@ -3,8 +3,11 @@ package io.v.nutz.activity.controller.union;
|
|||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.wizzer.framework.base.service.BaseService;
|
import cn.wizzer.framework.base.service.BaseService;
|
||||||
import io.v.nutz.activity.models.ActivityTissue;
|
import io.v.nutz.activity.models.ActivityTissue;
|
||||||
|
import io.v.nutz.activity.models.ActivityTissueBasicSettings;
|
||||||
import io.v.nutz.annontation.ViReturn;
|
import io.v.nutz.annontation.ViReturn;
|
||||||
import io.v.nutz.base.service.SimpleService;
|
import io.v.nutz.base.service.SimpleService;
|
||||||
|
import io.v.nutz.base.utils.DateUtil;
|
||||||
|
import org.apache.shiro.authz.annotation.Logical;
|
||||||
import org.apache.shiro.authz.annotation.RequiresAuthentication;
|
import org.apache.shiro.authz.annotation.RequiresAuthentication;
|
||||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||||
import org.nutz.dao.Cnd;
|
import org.nutz.dao.Cnd;
|
||||||
@@ -18,6 +21,7 @@ import org.nutz.mvc.annotation.Ok;
|
|||||||
import org.nutz.mvc.annotation.Param;
|
import org.nutz.mvc.annotation.Param;
|
||||||
|
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author zhf
|
* @author zhf
|
||||||
@@ -116,4 +120,13 @@ public class ActivityUnionApplyController {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@At
|
||||||
|
@ViReturn
|
||||||
|
@RequiresPermissions(value = {"activity.school.apply", "activity.club.apply", "activity.union.apply"}, logical = Logical.OR)
|
||||||
|
public Object getActivityBasicSettingsList(){
|
||||||
|
List<ActivityTissueBasicSettings> list = simpleService.dao().query(ActivityTissueBasicSettings.class,
|
||||||
|
Cnd.where("YEAR(applyDate)", "=", DateUtil.getYear()));
|
||||||
|
return list;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-2
@@ -164,7 +164,8 @@ public class ActivityUnionApplyUserController {
|
|||||||
$condition
|
$condition
|
||||||
""");
|
""");
|
||||||
Cnd cnd = Cnd.NEW();
|
Cnd cnd = Cnd.NEW();
|
||||||
cnd.and("u.unionId", "=", Vi.getUnionId());
|
cnd.and("u.unitid", "is not", null);
|
||||||
|
cnd.and("u.unionid", "is not", null);
|
||||||
cnd.and("aus.groupId", "=", groupId);
|
cnd.and("aus.groupId", "=", groupId);
|
||||||
cnd.groupBy("u.id");
|
cnd.groupBy("u.id");
|
||||||
cnd.asc("u.unitname").asc("u.unionname");
|
cnd.asc("u.unitname").asc("u.unionname");
|
||||||
@@ -184,10 +185,11 @@ public class ActivityUnionApplyUserController {
|
|||||||
activity_tissue_person atp
|
activity_tissue_person atp
|
||||||
LEFT JOIN `user` u ON atp.userId = u.id
|
LEFT JOIN `user` u ON atp.userId = u.id
|
||||||
WHERE
|
WHERE
|
||||||
atp.tissueId = @tissueId AND u.unionid = @unionId
|
atp.tissueId = @tissueId AND atp.applyUserId = @userId
|
||||||
""");
|
""");
|
||||||
sql.setParam("tissueId", tissueId);
|
sql.setParam("tissueId", tissueId);
|
||||||
sql.setParam("unionId", Vi.getUnionId());
|
sql.setParam("unionId", Vi.getUnionId());
|
||||||
|
sql.setParam("userId", ShiroUtil.getUserId());
|
||||||
List<NutMap> list = baseService.listMap(sql);
|
List<NutMap> list = baseService.listMap(sql);
|
||||||
List<String> userIds = list.stream().map(v -> v.getString("userId")).collect(Collectors.toList());
|
List<String> userIds = list.stream().map(v -> v.getString("userId")).collect(Collectors.toList());
|
||||||
return userIds;
|
return userIds;
|
||||||
|
|||||||
+62
@@ -0,0 +1,62 @@
|
|||||||
|
package io.v.nutz.activity.controller.union;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import io.v.nutz.activity.models.ActivityTissueBasicSettings;
|
||||||
|
import io.v.nutz.annontation.ViReturn;
|
||||||
|
import io.v.nutz.base.page.Pagination;
|
||||||
|
import io.v.nutz.base.service.BaseService;
|
||||||
|
import io.v.nutz.modules.models.PageForm;
|
||||||
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||||
|
import org.nutz.dao.Sqls;
|
||||||
|
import org.nutz.dao.sql.Sql;
|
||||||
|
import org.nutz.ioc.loader.annotation.Inject;
|
||||||
|
import org.nutz.ioc.loader.annotation.IocBean;
|
||||||
|
import org.nutz.mvc.annotation.At;
|
||||||
|
import org.nutz.mvc.annotation.Ok;
|
||||||
|
import org.nutz.mvc.annotation.Param;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ClassName ActivityUnionBasicSettingsController
|
||||||
|
* @Description TODO
|
||||||
|
* @Author zhf
|
||||||
|
* @Date 2025/4/3 上午9:16
|
||||||
|
*/
|
||||||
|
@IocBean
|
||||||
|
@Ok("json:full")
|
||||||
|
@At("/platform/activity/union/basicSettings")
|
||||||
|
public class ActivityUnionBasicSettingsController {
|
||||||
|
|
||||||
|
@At("")
|
||||||
|
@Ok("beetl:/platform/activity/union/basicSettings.html")
|
||||||
|
@RequiresPermissions("activity.union.basicSettings")
|
||||||
|
public void index() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private BaseService baseService;
|
||||||
|
|
||||||
|
|
||||||
|
@At
|
||||||
|
@ViReturn
|
||||||
|
@RequiresPermissions("activity.union.basicSettings")
|
||||||
|
public Object doSubmit(ActivityTissueBasicSettings activityTissueBasicSettings) {
|
||||||
|
if (StrUtil.isEmpty(activityTissueBasicSettings.getApplyDate())){
|
||||||
|
activityTissueBasicSettings.setApplyDate(DateUtil.now());
|
||||||
|
}
|
||||||
|
baseService.insertOrUpdate(activityTissueBasicSettings);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@At
|
||||||
|
@ViReturn
|
||||||
|
@RequiresPermissions("activity.union.basicSettings")
|
||||||
|
public Object pageData(PageForm pageForm, Integer year) {
|
||||||
|
Sql sql = Sqls.create("SELECT * FROM `activity_tissue_basic_settings` WHERE YEAR(applyDate)=@year").setParam("year", year);
|
||||||
|
Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||||
|
return pagination;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -249,4 +249,9 @@ public class ActivityTissue extends BaseModel implements Serializable {
|
|||||||
@ColDefine(type = ColType.VARCHAR, width = 30)
|
@ColDefine(type = ColType.VARCHAR, width = 30)
|
||||||
private String signEndTime;
|
private String signEndTime;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("活动设置id")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
|
private String basicSettingsId;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,48 @@
|
|||||||
|
package io.v.nutz.activity.models;
|
||||||
|
|
||||||
|
import cn.wizzer.framework.base.model.BaseModel;
|
||||||
|
import lombok.Data;
|
||||||
|
import org.nutz.dao.entity.annotation.*;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ClassName ActivityTissueBasicSettings
|
||||||
|
* @Description TODO
|
||||||
|
* @Author zhf
|
||||||
|
* @Date 2025/4/3 上午9:20
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Table("activity_tissue_basic_settings")
|
||||||
|
@Comment("协会或分工会活动校工会活动基础设置")
|
||||||
|
public class ActivityTissueBasicSettings extends BaseModel implements Serializable {
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Name
|
||||||
|
@Comment("ID")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
|
@Prev(els = {@EL("uuid()")})
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("设置名称")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 100)
|
||||||
|
private String basicSettingsName;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("设置编码")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
|
private String basicSettingsCode;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("可报活动数")
|
||||||
|
@ColDefine(type = ColType.INT)
|
||||||
|
private Integer signUpActivityNum;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("创建时间")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
|
private String applyDate;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
+96
-13
@@ -2,9 +2,7 @@ package io.v.nutz.mobile.activity.unionActivity;
|
|||||||
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.wizzer.framework.base.Result;
|
import cn.wizzer.framework.base.Result;
|
||||||
import io.v.nutz.activity.models.ActivityTissue;
|
import io.v.nutz.activity.models.*;
|
||||||
import io.v.nutz.activity.models.ActivityTissuePerson;
|
|
||||||
import io.v.nutz.activity.models.ActivityUserScope;
|
|
||||||
import io.v.nutz.annontation.ViReturn;
|
import io.v.nutz.annontation.ViReturn;
|
||||||
import io.v.nutz.base.service.SimpleService;
|
import io.v.nutz.base.service.SimpleService;
|
||||||
import io.v.nutz.base.utils.DateUtil;
|
import io.v.nutz.base.utils.DateUtil;
|
||||||
@@ -31,7 +29,9 @@ import org.nutz.mvc.annotation.Ok;
|
|||||||
import org.nutz.mvc.annotation.Param;
|
import org.nutz.mvc.annotation.Param;
|
||||||
import org.nutz.trans.Trans;
|
import org.nutz.trans.Trans;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.concurrent.locks.Lock;
|
import java.util.concurrent.locks.Lock;
|
||||||
import java.util.concurrent.locks.ReentrantLock;
|
import java.util.concurrent.locks.ReentrantLock;
|
||||||
@@ -120,9 +120,9 @@ public class UnionActivityRegisterController {
|
|||||||
@ViReturn
|
@ViReturn
|
||||||
@RequiresAuthentication
|
@RequiresAuthentication
|
||||||
public Object pageData(PageForm pageForm,
|
public Object pageData(PageForm pageForm,
|
||||||
@Param(value = "year",required = false) Integer year,
|
@Param(value = "year", required = false) Integer year,
|
||||||
@Param(value = "activityStatus",required = false)int activityStatus,
|
@Param(value = "activityStatus", required = false) int activityStatus,
|
||||||
@Param(value = "activityLevel",required = false)String activityLevel) {
|
@Param(value = "activityLevel", required = false) String activityLevel) {
|
||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
SELECT
|
SELECT
|
||||||
id,
|
id,
|
||||||
@@ -334,12 +334,67 @@ public class UnionActivityRegisterController {
|
|||||||
@ViReturn
|
@ViReturn
|
||||||
@RequiresAuthentication
|
@RequiresAuthentication
|
||||||
public synchronized Object doSaveUnionRegister(String activityId, String[] personIds) {
|
public synchronized Object doSaveUnionRegister(String activityId, String[] personIds) {
|
||||||
|
lock.lock();
|
||||||
|
ActivityTissue activityTissue = simpleService.dao().fetch(ActivityTissue.class, activityId);
|
||||||
|
|
||||||
|
if (StrUtil.isNotEmpty(activityTissue.getBasicSettingsId())) {
|
||||||
|
//如果不为空就代表有活动设置
|
||||||
|
ActivityTissueBasicSettings settings = simpleService.dao().fetch(ActivityTissueBasicSettings.class, activityTissue.getBasicSettingsId());
|
||||||
|
//找出跟这个活动设置关联的活动
|
||||||
|
List<ActivityTissue> tissueList = simpleService.dao().query(ActivityTissue.class, Cnd.where("basicSettingsId", "=", settings.getId()).and("id", "!=", activityId));
|
||||||
|
List<String> tissueIds = tissueList.stream().map(ActivityTissue::getId).collect(Collectors.toList());
|
||||||
|
//找出当前登入人报名的活动
|
||||||
|
Sql sql = Sqls.create("""
|
||||||
|
SELECT
|
||||||
|
act.`name`
|
||||||
|
FROM
|
||||||
|
`activity_tissue_person` atp
|
||||||
|
LEFT JOIN activity_tissue act ON act.id = atp.tissueId
|
||||||
|
WHERE atp.tissueId in (@tissueId) AND atp.userId=@userId
|
||||||
|
""").setParam("tissueId", tissueIds).setParam("userId", ShiroUtil.getUserId());
|
||||||
|
List<NutMap> applyTissueList = simpleService.listMap(sql);
|
||||||
|
if (applyTissueList.size() == settings.getSignUpActivityNum()) {
|
||||||
|
lock.unlock();
|
||||||
|
List<String> nameList = applyTissueList.stream().map(v -> v.getString("name")).collect(Collectors.toList());
|
||||||
|
return Result.error("【" + settings.getBasicSettingsName() + "】类型只能报名" + settings.getSignUpActivityNum() + "个!您已报名【" + String.join(",", nameList) + "】");
|
||||||
|
}
|
||||||
|
|
||||||
|
//找到队友的id
|
||||||
|
List<String> teammateUserIds = Arrays.stream(personIds).filter(id -> !id.equals(ShiroUtil.getUserId())).collect(Collectors.toList());
|
||||||
|
Sql sql2 = Sqls.create("""
|
||||||
|
SELECT
|
||||||
|
atp.userId,
|
||||||
|
atp.userName,
|
||||||
|
act.`name`
|
||||||
|
FROM
|
||||||
|
`activity_tissue_person` atp
|
||||||
|
LEFT JOIN activity_tissue act ON act.id = atp.tissueId
|
||||||
|
WHERE atp.tissueId in (@tissueId) AND atp.userId in (@userId)
|
||||||
|
""").setParam("tissueId", tissueIds).setParam("userId", teammateUserIds);
|
||||||
|
List<NutMap> teammateUserList = simpleService.listMap(sql2);
|
||||||
|
//队友分组
|
||||||
|
Map<String, List<NutMap>> groupedData = teammateUserList.stream()
|
||||||
|
.collect(Collectors.groupingBy(
|
||||||
|
nutMap -> nutMap.getString("userName") // 提取 userName 作为分组键
|
||||||
|
));
|
||||||
|
final String[] msg = {""};
|
||||||
|
groupedData.forEach((key, value) -> {
|
||||||
|
//判断每个队友是否报名
|
||||||
|
if (value.size() == settings.getSignUpActivityNum()) {
|
||||||
|
List<String> activityNames = value.stream().map(v -> v.getString("name")).collect(Collectors.toList());
|
||||||
|
msg[0] = msg[0] + "当前活动只能报名" + settings.getSignUpActivityNum() + "个,【" + key + "】已报名【" + String.join(",", activityNames) + "】";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (StrUtil.isNotEmpty(msg[0])) {
|
||||||
|
lock.unlock();
|
||||||
|
return Result.error().addMsg(msg[0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
String unionId = Vi.getUnionId();
|
String unionId = Vi.getUnionId();
|
||||||
|
|
||||||
ActivityTissue activityTissue = simpleService.dao().fetch(ActivityTissue.class, activityId);
|
|
||||||
if (activityTissue.getSignUpMethod() == 2) {
|
if (activityTissue.getSignUpMethod() == 2) {
|
||||||
if (!ShiroUtil.hasRole("H04")) {
|
if (!ShiroUtil.hasRole("H04")) {
|
||||||
|
lock.unlock();
|
||||||
return Result.error().addMsg("请使用分工会管理员报名!");
|
return Result.error().addMsg("请使用分工会管理员报名!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -348,12 +403,14 @@ public class UnionActivityRegisterController {
|
|||||||
int hasRegisterCount = simpleService.dao().count(ActivityTissuePerson.class, Cnd.where("tissueId", "=", activityId));
|
int hasRegisterCount = simpleService.dao().count(ActivityTissuePerson.class, Cnd.where("tissueId", "=", activityId));
|
||||||
if (hasRegisterCount + personIds.length > activityTissue.getTotalUserNumberLimit()) {
|
if (hasRegisterCount + personIds.length > activityTissue.getTotalUserNumberLimit()) {
|
||||||
// return Result.error().addMsg("当前最多只能报名%s人!".formatted(Math.max(activityTissue.getTotalUserNumberLimit() - hasRegisterCount, 0)));
|
// return Result.error().addMsg("当前最多只能报名%s人!".formatted(Math.max(activityTissue.getTotalUserNumberLimit() - hasRegisterCount, 0)));
|
||||||
|
lock.unlock();
|
||||||
return Result.error().addMsg("该活动限制人数为%s人".formatted(activityTissue.getTotalUserNumberLimit()));
|
return Result.error().addMsg("该活动限制人数为%s人".formatted(activityTissue.getTotalUserNumberLimit()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (activityTissue.getUserNumberLimit() == 2) {
|
if (activityTissue.getUserNumberLimit() == 2) {
|
||||||
int limitNumByUnion = getLimitNumByUnion(activityTissue.getUnionUserNumberLimit(), unionId);
|
int limitNumByUnion = getLimitNumByUnion(activityTissue.getUnionUserNumberLimit(), unionId);
|
||||||
if (personIds.length > limitNumByUnion) {
|
if (personIds.length > limitNumByUnion) {
|
||||||
|
lock.unlock();
|
||||||
return Result.error().addMsg("分工会报名限额%s人!".formatted(limitNumByUnion));
|
return Result.error().addMsg("分工会报名限额%s人!".formatted(limitNumByUnion));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -398,6 +455,7 @@ public class UnionActivityRegisterController {
|
|||||||
sql.setCondition(Cnd.where("id", "in", personIds));
|
sql.setCondition(Cnd.where("id", "in", personIds));
|
||||||
List<ActivityTissuePerson> fullPersonList = simpleService.listEntity(sql, ActivityTissuePerson.class);
|
List<ActivityTissuePerson> fullPersonList = simpleService.listEntity(sql, ActivityTissuePerson.class);
|
||||||
simpleService.insert(fullPersonList);
|
simpleService.insert(fullPersonList);
|
||||||
|
lock.unlock();
|
||||||
});
|
});
|
||||||
return Result.success().addMsg("报名成功!");
|
return Result.success().addMsg("报名成功!");
|
||||||
}
|
}
|
||||||
@@ -422,10 +480,32 @@ public class UnionActivityRegisterController {
|
|||||||
lock.unlock();
|
lock.unlock();
|
||||||
return Result.error("您的工会信息有误,无法报名,请联系工会管理员!");
|
return Result.error("您的工会信息有误,无法报名,请联系工会管理员!");
|
||||||
}
|
}
|
||||||
String unionId = Vi.getUnionId();
|
|
||||||
// String unionId = "74d1600a7486457b9afd660128c86a20";
|
|
||||||
ActivityTissue activityTissue = simpleService.dao().fetch(ActivityTissue.class, activityId);
|
ActivityTissue activityTissue = simpleService.dao().fetch(ActivityTissue.class, activityId);
|
||||||
;
|
if (StrUtil.isNotEmpty(activityTissue.getBasicSettingsId())) {
|
||||||
|
//如果不为空就代表有活动设置
|
||||||
|
ActivityTissueBasicSettings settings = simpleService.dao().fetch(ActivityTissueBasicSettings.class, activityTissue.getBasicSettingsId());
|
||||||
|
//找出跟这个活动设置关联的活动
|
||||||
|
List<ActivityTissue> tissueList = simpleService.dao().query(ActivityTissue.class, Cnd.where("basicSettingsId", "=", settings.getId()));
|
||||||
|
List<String> tissueIds = tissueList.stream().map(ActivityTissue::getId).collect(Collectors.toList());
|
||||||
|
//找出当前登入人报名的活动
|
||||||
|
Sql sql = Sqls.create("""
|
||||||
|
SELECT
|
||||||
|
act.`name`
|
||||||
|
FROM
|
||||||
|
`activity_tissue_person` atp
|
||||||
|
LEFT JOIN activity_tissue act ON act.id = atp.tissueId
|
||||||
|
WHERE atp.tissueId in (@tissueId) AND atp.userId=@userId
|
||||||
|
""").setParam("tissueId", tissueIds).setParam("userId", ShiroUtil.getUserId());
|
||||||
|
List<NutMap> applyTissueList = simpleService.listMap(sql);
|
||||||
|
if (applyTissueList.size() == settings.getSignUpActivityNum()) {
|
||||||
|
lock.unlock();
|
||||||
|
List<String> nameList = applyTissueList.stream().map(v -> v.getString("name")).collect(Collectors.toList());
|
||||||
|
return Result.error("【" + settings.getBasicSettingsName() + "】类型只能报名" + settings.getSignUpActivityNum() + "个!您已报名【" + String.join(",", nameList) + "】");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
//活动设置了分组人员
|
//活动设置了分组人员
|
||||||
if (activityTissue.getGroupId() != null) {
|
if (activityTissue.getGroupId() != null) {
|
||||||
int count = simpleService.dao().count(ActivityUserScope.class, Cnd.where("groupId", "=", activityTissue.getGroupId()).and("userId", "=", ShiroUtil.getPrincipalProperty("id")));
|
int count = simpleService.dao().count(ActivityUserScope.class, Cnd.where("groupId", "=", activityTissue.getGroupId()).and("userId", "=", ShiroUtil.getPrincipalProperty("id")));
|
||||||
@@ -434,7 +514,7 @@ public class UnionActivityRegisterController {
|
|||||||
return Result.error().addMsg("您不在本次活动参加人员范围内!");
|
return Result.error().addMsg("您不在本次活动参加人员范围内!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
String unionId = Vi.getUnionId();
|
||||||
if (Lang.isNotEmpty(activityTissue.getUserNumberLimit())) {
|
if (Lang.isNotEmpty(activityTissue.getUserNumberLimit())) {
|
||||||
if (activityTissue.getUserNumberLimit() == 1) {
|
if (activityTissue.getUserNumberLimit() == 1) {
|
||||||
Integer totalUserNumberLimit = activityTissue.getTotalUserNumberLimit();
|
Integer totalUserNumberLimit = activityTissue.getTotalUserNumberLimit();
|
||||||
@@ -477,6 +557,9 @@ public class UnionActivityRegisterController {
|
|||||||
activityTissuePerson.setMobile(principal.getMobile());
|
activityTissuePerson.setMobile(principal.getMobile());
|
||||||
activityTissuePerson.setUnitName(principal.getUnit().getName());
|
activityTissuePerson.setUnitName(principal.getUnit().getName());
|
||||||
activityTissuePerson.setUnionName(principal.getUnion().getUnionname());
|
activityTissuePerson.setUnionName(principal.getUnion().getUnionname());
|
||||||
|
activityTissuePerson.setApplyDateTime(DateUtil.getDateTime());
|
||||||
|
activityTissuePerson.setApplyUserId(principal.getId());
|
||||||
|
activityTissuePerson.setApplyUserUserName(principal.getUsername());
|
||||||
simpleService.dao().insert(activityTissuePerson);
|
simpleService.dao().insert(activityTissuePerson);
|
||||||
lock.unlock();
|
lock.unlock();
|
||||||
return Result.success().addMsg("报名成功!");
|
return Result.success().addMsg("报名成功!");
|
||||||
@@ -487,7 +570,7 @@ public class UnionActivityRegisterController {
|
|||||||
@RequiresAuthentication
|
@RequiresAuthentication
|
||||||
public Object doSingleCancelRegister(String activityId) {
|
public Object doSingleCancelRegister(String activityId) {
|
||||||
simpleService.dao().clear(ActivityTissuePerson.class, Cnd.where("tissueId", "=", activityId)
|
simpleService.dao().clear(ActivityTissuePerson.class, Cnd.where("tissueId", "=", activityId)
|
||||||
.and("userId", "=", ShiroUtil.getPrincipalProperty("id")));
|
.and("applyUserId", "=", ShiroUtil.getPrincipalProperty("id")));
|
||||||
return Result.success().addMsg("取消成功!");
|
return Result.success().addMsg("取消成功!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -185,7 +185,6 @@ layout("/mobile/platform.html"){
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
showActivityInfo(activityContent){
|
showActivityInfo(activityContent){
|
||||||
console.log(activityContent)
|
|
||||||
this.activityContent = ''
|
this.activityContent = ''
|
||||||
this.activityContent = activityContent
|
this.activityContent = activityContent
|
||||||
this.showActivityInfoPopup = true
|
this.showActivityInfoPopup = true
|
||||||
|
|||||||
@@ -51,6 +51,7 @@
|
|||||||
|
|
||||||
<body>
|
<body>
|
||||||
<script>
|
<script>
|
||||||
|
window.sessionStorage.setItem("user", JSON.stringify(${json(@shiro.getPrincipal())}))
|
||||||
const APP_DOMAIN = "${AppDomain!}"
|
const APP_DOMAIN = "${AppDomain!}"
|
||||||
const FILE_DOMAIN = "${AppFileDomain!}"
|
const FILE_DOMAIN = "${AppFileDomain!}"
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -201,6 +201,19 @@
|
|||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
<el-col :lg="12" :xl="12" :xs="24">
|
||||||
|
<el-form-item label="活动设置" prop="basicSettingsId">
|
||||||
|
<el-select clearable filterable
|
||||||
|
placeholder="参加人员范围"
|
||||||
|
prop="id"
|
||||||
|
style="width: 100%;"
|
||||||
|
v-model="formData.basicSettingsId">
|
||||||
|
<el-option :label="item.basicSettingsName"
|
||||||
|
:value="item.id"
|
||||||
|
v-for="item in basicSettingsList"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
@@ -225,7 +238,8 @@
|
|||||||
<!--<el-radio :label="null">无需报名</el-radio>-->
|
<!--<el-radio :label="null">无需报名</el-radio>-->
|
||||||
<el-radio :label="1">个人报名</el-radio>
|
<el-radio :label="1">个人报名</el-radio>
|
||||||
<el-radio :label="3">组队报名</el-radio>
|
<el-radio :label="3">组队报名</el-radio>
|
||||||
<el-radio :label="2" v-if="type===40001">分工会报名</el-radio>
|
<el-radio :label="2" v-if="type===40001">分工会报名
|
||||||
|
</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -429,8 +443,10 @@
|
|||||||
|
|
||||||
|
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="活动介绍" prop="activityContent" :rules="{required:true,message: '请输入活动介绍', trigger: 'blur'}">
|
<el-form-item label="活动介绍" prop="activityContent"
|
||||||
<text-editor v-model="formData.activityContent" ref="contentEditor"></text-editor>
|
:rules="{required:true,message: '请输入活动介绍', trigger: 'blur'}">
|
||||||
|
<text-editor v-model="formData.activityContent"
|
||||||
|
ref="contentEditor"></text-editor>
|
||||||
<!-- <el-input-->
|
<!-- <el-input-->
|
||||||
<!-- :rows="7"-->
|
<!-- :rows="7"-->
|
||||||
<!-- placeholder="请输入活动内容"-->
|
<!-- placeholder="请输入活动内容"-->
|
||||||
@@ -442,7 +458,8 @@
|
|||||||
|
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="附件上传" prop="otherFiles">
|
<el-form-item label="附件上传" prop="otherFiles">
|
||||||
<file-upload :files.sync="formData.otherFiles" card></file-upload>
|
<file-upload :files.sync="formData.otherFiles"
|
||||||
|
card></file-upload>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
@@ -478,7 +495,8 @@
|
|||||||
<el-divider content-position="left">购置物品及价格</el-divider>
|
<el-divider content-position="left">购置物品及价格</el-divider>
|
||||||
|
|
||||||
<div style="padding-left: 10px">
|
<div style="padding-left: 10px">
|
||||||
<el-tooltip class="item" content="点击添加购置物品及价格" effect="dark"
|
<el-tooltip class="item" content="点击添加购置物品及价格"
|
||||||
|
effect="dark"
|
||||||
placement="top">
|
placement="top">
|
||||||
<el-button @click="formData.goods.push({})" circle
|
<el-button @click="formData.goods.push({})" circle
|
||||||
icon="el-icon-plus"
|
icon="el-icon-plus"
|
||||||
@@ -496,7 +514,8 @@
|
|||||||
sortable
|
sortable
|
||||||
type="index" width="100">
|
type="index" width="100">
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column align="center" header-align="center" label="物品名称"
|
<el-table-column align="center" header-align="center"
|
||||||
|
label="物品名称"
|
||||||
prop="name">
|
prop="name">
|
||||||
<template slot-scope="{row}">
|
<template slot-scope="{row}">
|
||||||
<el-input maxlength="50" placeholder="物品名称"
|
<el-input maxlength="50" placeholder="物品名称"
|
||||||
@@ -504,7 +523,8 @@
|
|||||||
v-model="row.name"></el-input>
|
v-model="row.name"></el-input>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column align="center" header-align="center" label="预算费用"
|
<el-table-column align="center" header-align="center"
|
||||||
|
label="预算费用"
|
||||||
prop="price">
|
prop="price">
|
||||||
<template slot-scope="{row}">
|
<template slot-scope="{row}">
|
||||||
<el-input @input="blur" maxlength="50"
|
<el-input @input="blur" maxlength="50"
|
||||||
@@ -512,7 +532,8 @@
|
|||||||
type="number" v-model="row.price"></el-input>
|
type="number" v-model="row.price"></el-input>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column align="center" header-align="center" label="实际费用"
|
<el-table-column align="center" header-align="center"
|
||||||
|
label="实际费用"
|
||||||
prop="actualPrice">
|
prop="actualPrice">
|
||||||
<template slot-scope="{row}">
|
<template slot-scope="{row}">
|
||||||
<el-input @input="blur" maxlength="50"
|
<el-input @input="blur" maxlength="50"
|
||||||
@@ -554,7 +575,8 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
|
|
||||||
<el-tab-pane label="活动人员信息" name="3" v-if="formData.isEnrollSystem === false">
|
<el-tab-pane label="活动人员信息" name="3"
|
||||||
|
v-if="formData.isEnrollSystem === false">
|
||||||
<table-tool :app="this" label="活动人员信息">
|
<table-tool :app="this" label="活动人员信息">
|
||||||
<template #func>
|
<template #func>
|
||||||
<el-button @click="openAddUser" icon="el-icon-plus"
|
<el-button @click="openAddUser" icon="el-icon-plus"
|
||||||
@@ -622,7 +644,8 @@
|
|||||||
|
|
||||||
</guava>
|
</guava>
|
||||||
|
|
||||||
<el-dialog :close-on-click-modal="false" :visible.sync="dialogVisible" title="添加人员" width="40%">
|
<el-dialog :close-on-click-modal="false" :visible.sync="dialogVisible" title="添加人员"
|
||||||
|
width="40%">
|
||||||
|
|
||||||
<el-form :model="formData" label-width="100px">
|
<el-form :model="formData" label-width="100px">
|
||||||
<el-form-item label="参加人员" prop="userId">
|
<el-form-item label="参加人员" prop="userId">
|
||||||
@@ -687,7 +710,11 @@
|
|||||||
groupId: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
groupId: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||||
name: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
name: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||||
type: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
type: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||||
projectTypeCode: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
projectTypeCode: [{
|
||||||
|
required: true,
|
||||||
|
message: '必填',
|
||||||
|
trigger: ['blur', 'change']
|
||||||
|
}],
|
||||||
address: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
address: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||||
plannedDate: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
plannedDate: [{required: true, message: '必填', trigger: ['blur', 'change']}],
|
||||||
},
|
},
|
||||||
@@ -701,7 +728,8 @@
|
|||||||
],
|
],
|
||||||
/*ZXY - ADD*/
|
/*ZXY - ADD*/
|
||||||
activityGroupList: [],
|
activityGroupList: [],
|
||||||
userScopeDialog: false
|
userScopeDialog: false,
|
||||||
|
basicSettingsList:[]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@@ -805,9 +833,9 @@
|
|||||||
await this.$refs['addForm'].validate()
|
await this.$refs['addForm'].validate()
|
||||||
},
|
},
|
||||||
plannedDateChange(val) {
|
plannedDateChange(val) {
|
||||||
if (val){
|
if (val) {
|
||||||
val[0]=moment(val[0]).format('YYYY-MM-DD HH:mm')
|
val[0] = moment(val[0]).format('YYYY-MM-DD HH:mm')
|
||||||
val[1]=moment(val[1]).format('YYYY-MM-DD HH:mm')
|
val[1] = moment(val[1]).format('YYYY-MM-DD HH:mm')
|
||||||
}
|
}
|
||||||
this.$set(this.formData, "time", val)
|
this.$set(this.formData, "time", val)
|
||||||
|
|
||||||
@@ -1138,10 +1166,15 @@
|
|||||||
async getActivityGroup() {
|
async getActivityGroup() {
|
||||||
const resp = await $.get('/platform/activity/basic/scope/getActivityUserScopeGroup')
|
const resp = await $.get('/platform/activity/basic/scope/getActivityUserScopeGroup')
|
||||||
this.activityGroupList = resp.data
|
this.activityGroupList = resp.data
|
||||||
|
},
|
||||||
|
async getActivityBasicSettingsList() {
|
||||||
|
const resp = await $.get('/platform/activity/apply/getActivityBasicSettingsList')
|
||||||
|
this.basicSettingsList = resp.data
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async created() {
|
async created() {
|
||||||
await this.getActivityGroup()
|
await this.getActivityGroup()
|
||||||
|
await this.getActivityBasicSettingsList()
|
||||||
const projectType = await getActivityTwoLevelType("50000")
|
const projectType = await getActivityTwoLevelType("50000")
|
||||||
projectType.forEach(v => {
|
projectType.forEach(v => {
|
||||||
if (v.code !== "50004") {
|
if (v.code !== "50004") {
|
||||||
|
|||||||
@@ -0,0 +1,139 @@
|
|||||||
|
<!--#
|
||||||
|
layout("/layouts/platform.html"){
|
||||||
|
#-->
|
||||||
|
|
||||||
|
<div id="app" v-cloak>
|
||||||
|
<guava ref="guava">
|
||||||
|
<el-card shadow="never">
|
||||||
|
<div class="search">
|
||||||
|
<div class="search-item">
|
||||||
|
<div class="search-item-label">年度:</div>
|
||||||
|
<div class="search-item-option">
|
||||||
|
<el-date-picker
|
||||||
|
style="width: 100%;"
|
||||||
|
:clearable="false"
|
||||||
|
@change="doSearch"
|
||||||
|
placeholder="选择年"
|
||||||
|
type="year"
|
||||||
|
v-model="pageForm.year"
|
||||||
|
value-format="yyyy">
|
||||||
|
</el-date-picker>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
|
||||||
|
<el-card shadow="never" class="mt10">
|
||||||
|
<vi-title2 title="基本设置">
|
||||||
|
<template #func>
|
||||||
|
<el-button size="small" type="primary" @click="openAdd">
|
||||||
|
新增设置
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</vi-title2>
|
||||||
|
<el-table :data="tableData" ref="table" row-key="id">
|
||||||
|
<el-table-column type="index" width="50" label="序号"></el-table-column>
|
||||||
|
<el-table-column property="basicSettingsCode" label="设置编码"
|
||||||
|
align="center"></el-table-column>
|
||||||
|
<el-table-column property="basicSettingsName" label="设置名称"
|
||||||
|
align="center"></el-table-column>
|
||||||
|
<el-table-column property="signUpActivityNum" label="可报活动数"
|
||||||
|
align="center"></el-table-column>
|
||||||
|
<el-table-column property="applyDate" label="创建时间"
|
||||||
|
align="center"></el-table-column>
|
||||||
|
<el-table-column align="center" header-align="center" label="操作" fixed="right"
|
||||||
|
width="150px">
|
||||||
|
<template scope="{row}">
|
||||||
|
<el-button size="mini" @click="openEdit(row)" type="primary">
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<!--#include("/layouts/pagination.html"){}#-->
|
||||||
|
</el-card>
|
||||||
|
</guava>
|
||||||
|
|
||||||
|
<el-dialog
|
||||||
|
title="活动设置"
|
||||||
|
:visible.sync="dialogVisible"
|
||||||
|
:close-on-click-modal="false"
|
||||||
|
width="30%">
|
||||||
|
<el-form :model="formData" ref="addForm" :rules="formRules"
|
||||||
|
label-width="100px">
|
||||||
|
<el-form-item label="设置名称" prop="basicSettingsName">
|
||||||
|
<el-input v-model="formData.basicSettingsName" maxlength="50"
|
||||||
|
placeholder="请填写设置名称"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="设置编码" prop="basicSettingsCode">
|
||||||
|
<el-input v-model="formData.basicSettingsCode" maxlength="50"
|
||||||
|
placeholder="请填写设置编码"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="可报活动数" prop="signUpActivityNum">
|
||||||
|
<el-input-number v-model="formData.signUpActivityNum" :min="1"
|
||||||
|
placeholder="请填写可报活动数"
|
||||||
|
style="width: 100%"></el-input-number>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button @click="dialogVisible = false">关 闭</el-button>
|
||||||
|
<el-button type="primary" @click="doSubmit">提 交</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
const vue = new Vue({
|
||||||
|
el: '#app',
|
||||||
|
mixins: [initTableMixins],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
pageForm: {
|
||||||
|
year: moment().format('YYYY') + ""
|
||||||
|
},
|
||||||
|
dialogVisible: false,
|
||||||
|
formRules: {
|
||||||
|
basicSettingsName: [
|
||||||
|
{required: true, message: '请填写设置名称', trigger: 'change'}
|
||||||
|
],
|
||||||
|
basicSettingsCode: [
|
||||||
|
{required: true, message: '请填写设置编码', trigger: 'change'}
|
||||||
|
],
|
||||||
|
signUpActivityNum: [
|
||||||
|
{required: true, message: '请填写可报活动数', trigger: 'change'}
|
||||||
|
],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
doSubmit() {
|
||||||
|
this.$refs.addForm.validate(async (valid) => {
|
||||||
|
if (valid) {
|
||||||
|
const res = await $.post('/platform/activity/union/basicSettings/doSubmit', this.formData)
|
||||||
|
if (res.code === 0) {
|
||||||
|
this.$message.success('保存成功')
|
||||||
|
this.dialogVisible = false
|
||||||
|
this.doSearch()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
openAdd() {
|
||||||
|
this.formData = {}
|
||||||
|
this.dialogVisible = true
|
||||||
|
this.$refs.addForm.resetFields()
|
||||||
|
},
|
||||||
|
openEdit(row) {
|
||||||
|
this.formData = clone(row)
|
||||||
|
this.dialogVisible = true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async created() {
|
||||||
|
this.pageData()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<!--#
|
||||||
|
}
|
||||||
|
#-->
|
||||||
Reference in New Issue
Block a user