ActivityViewerController基本完善

对DAO层以及service的功能进行了进一步完善
修改了一些命名规则
This commit is contained in:
chuyan 2020-04-05 21:45:31 +08:00 committed by yourtree
parent 224b2c4a77
commit b27cf72bc5
12 changed files with 294 additions and 69 deletions

View File

@ -17,7 +17,9 @@ import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
//将合法的JSON对象转化为Activity对象 /**
* JSONObject-Activity转化类
*/
@Component @Component
public class ActivityConverter { public class ActivityConverter {
@ -30,6 +32,10 @@ public class ActivityConverter {
@Resource @Resource
AttendanceService attendanceService; AttendanceService attendanceService;
/**
* @param json 一个Optional的json对象用以转化为Activity对象此过程中进行值的合法校验
* @return 一个可以被直接存储在数据库中的合法的Activity对象
*/
public Activity convertToActivity(Optional<JSONObject> json) { public Activity convertToActivity(Optional<JSONObject> json) {
if (!json.isPresent()) { if (!json.isPresent()) {
throw new NullPointerException(); throw new NullPointerException();
@ -37,10 +43,12 @@ public class ActivityConverter {
Activity activity = new Activity(); Activity activity = new Activity();
JSONObject jsonObject = json.get(); JSONObject jsonObject = json.get();
//设置活动创建人
int userId = (int) jsonObject.get("creator"); int userId = (int) jsonObject.get("creator");
Optional<User> creator = userService.findUserById(userId); Optional<User> creator = userService.findUserById(userId);
activity.setCreator(creator.get()); activity.setCreator(creator.get());
//设置参与人员
List<Integer> participateGroupFromJson = (List<Integer>) jsonObject.get("participate-group"); List<Integer> participateGroupFromJson = (List<Integer>) jsonObject.get("participate-group");
Set<User> participateGroup = new HashSet<>(); Set<User> participateGroup = new HashSet<>();
for (int id : participateGroupFromJson) { for (int id : participateGroupFromJson) {
@ -49,13 +57,16 @@ public class ActivityConverter {
} }
activity.setParticipateGroup(participateGroup); activity.setParticipateGroup(participateGroup);
//设置活动标题
String title = (String) jsonObject.get("title"); String title = (String) jsonObject.get("title");
activity.setTitle(title); activity.setTitle(title);
//设置主要负责人
int chiefManagerId = (int) jsonObject.get("chief-manager"); int chiefManagerId = (int) jsonObject.get("chief-manager");
Optional<User> chiefManager = userService.findUserById(chiefManagerId); Optional<User> chiefManager = userService.findUserById(chiefManagerId);
activity.setChiefManager(chiefManager.get()); activity.setChiefManager(chiefManager.get());
//设置次要负责人
List<Integer> assistManagersFromJSON = (List<Integer>) jsonObject.get("assist-managers"); List<Integer> assistManagersFromJSON = (List<Integer>) jsonObject.get("assist-managers");
Set<User> assistManager = new HashSet<>(); Set<User> assistManager = new HashSet<>();
for (int id : assistManagersFromJSON) { for (int id : assistManagersFromJSON) {
@ -64,9 +75,11 @@ public class ActivityConverter {
} }
activity.setAssistManagers(assistManager); activity.setAssistManagers(assistManager);
//设置活动类型
String type = (String) jsonObject.get("type"); String type = (String) jsonObject.get("type");
activity.setType(type); activity.setType(type);
//设置
String startTimeFromJSON = (String) jsonObject.get("start-time"); String startTimeFromJSON = (String) jsonObject.get("start-time");
String endTimeFromJSON = (String) jsonObject.get("end-time"); String endTimeFromJSON = (String) jsonObject.get("end-time");
LocalDateTime startTime = LocalDateTime.parse(startTimeFromJSON, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); LocalDateTime startTime = LocalDateTime.parse(startTimeFromJSON, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
@ -152,9 +165,7 @@ public class ActivityConverter {
Attendance attendance = new Attendance(); Attendance attendance = new Attendance();
attendance.setClockInPeriods(periods); attendance.setClockInPeriods(periods);
attendance.setOnline(attendanceOnLine); attendance.setOnline(attendanceOnLine);
/**
* 二维码模块未完成
*/
attendance = attendanceService.save(attendance); attendance = attendanceService.save(attendance);
activity.setAttendance(attendance); activity.setAttendance(attendance);

View File

@ -5,11 +5,9 @@ import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter; import com.google.zxing.MultiFormatWriter;
import com.google.zxing.common.BitMatrix; import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import jdk.internal.util.xml.impl.Input;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import javax.imageio.stream.ImageOutputStream;
import java.awt.*; import java.awt.*;
import java.awt.geom.RoundRectangle2D; import java.awt.geom.RoundRectangle2D;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;

View File

@ -2,10 +2,15 @@ package com.codesdream.ase.controller.activity;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.annotation.Resource; import javax.annotation.Resource;
@Controller @Controller
@RequestMapping("/act")
public class ActivityAttendanceController { public class ActivityAttendanceController {
private final String url = "/forget";
} }

View File

@ -22,6 +22,7 @@ import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource; import javax.annotation.Resource;
@ -31,6 +32,7 @@ import java.util.List;
import java.util.Optional; import java.util.Optional;
@Controller @Controller
@RequestMapping("/forget/act")
public class ActivityCreatorController { public class ActivityCreatorController {
@Resource @Resource
@ -66,41 +68,40 @@ public class ActivityCreatorController {
@Resource @Resource
ActivityConverter activityConverter; ActivityConverter activityConverter;
private final String url = "/forget/activity";
@PostMapping(value = "/creator")
@PostMapping(value = url + "/activity_creator")
@ResponseBody @ResponseBody
@ApiOperation(value = "创建活动", notes = "所有有关用户的数据传递均使用id类型为int") @ApiOperation(value = "创建活动", notes = "所有有关用户的数据传递均使用id类型为int")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "title", value = "活动标题", required = true), @ApiImplicitParam(name = "title", value = "活动标题", dataType = "String", required = true),
@ApiImplicitParam(name = "type", value = "活动类型", required = true), @ApiImplicitParam(name = "type", value = "活动类型", dataType = "String", required = true),
@ApiImplicitParam(name = "start-time", value = "活动开始时间格式为yyyy-MM-dd HH:mm:ss", required = true), @ApiImplicitParam(name = "start-time", value = "活动开始时间格式为yyyy-MM-dd HH:mm:ss", required = true),
@ApiImplicitParam(name = "end-time", value = "活动结束时间格式为yyyy-MM-dd HH:mm:ss", required = true), @ApiImplicitParam(name = "end-time", value = "活动结束时间格式为yyyy-MM-dd HH:mm:ss", required = true),
@ApiImplicitParam(name = "chief-manager", value = "主要负责人", required = true), @ApiImplicitParam(name = "chief-manager", dataType = "int", value = "主要负责人", required = true),
@ApiImplicitParam(name = "assist-managers", value = "次要负责人"), @ApiImplicitParam(name = "assist-managers", dataType = "int", value = "次要负责人"),
@ApiImplicitParam(name = "description", value = "活动描述"), @ApiImplicitParam(name = "description", dataType = "String", value = "活动描述"),
@ApiImplicitParam(name = "cycle", value = "活动周期,格式为阿拉伯数字数字+单位0表示无周期"), @ApiImplicitParam(name = "cycle", dataType = "String", value = "活动周期,格式为阿拉伯数字数字+单位0表示无周期"),
@ApiImplicitParam(name = "participate-group", value = "预定参与人员"), @ApiImplicitParam(name = "participate-group", value = "预定参与人员"),
@ApiImplicitParam(name = "sign-group", value = "可参与人员"), @ApiImplicitParam(name = "sign-group", dataType = "List<int>", value = "可参与人员"),
@ApiImplicitParam(name = "inform-group", value = "通知人群,若为空,则默认为预定参与人员和可报名人员的并集"), @ApiImplicitParam(name = "inform-group", dataType = "List<int>", value = "通知人群,若为空,则默认为预定参与人员和可报名人员的并集"),
@ApiImplicitParam(name = "visible-group", value = "活动可见人群,若为空,则默认为负责人、活动创建者预定参和可报名人员以及通知人员的并集"), @ApiImplicitParam(name = "visible-group", dataType = "List<int>", value = "活动可见人群,若为空,则默认为负责人、活动创建者预定参和可报名人员以及通知人员的并集"),
@ApiImplicitParam(name = "remind-time", defaultValue = "30m", value = "活动提醒时间,格式为数字+单位,可接受的单位从大到小有:w,d,h,m,s"), @ApiImplicitParam(name = "remind-time", dataType = "String", defaultValue = "30m", value = "活动提醒时间,格式为数字+单位,可接受的单位从大到小有:w,d,h,m,s"),
}) })
String activityCreator(HttpServletRequest request) throws InvalidFormFormatException, NoSuchMethodException, IllegalAccessException, InvocationTargetException { String activityCreator(HttpServletRequest request) throws InvalidFormFormatException, NoSuchMethodException, IllegalAccessException, InvocationTargetException {
JSONObject error = new JSONObject(); JSONObject error = new JSONObject();
aseSpringUtil = new ASESpringUtil(); aseSpringUtil = new ASESpringUtil();
//判断是否为JSON对象
Optional<JSONObject> json = jsonParameter.getJSONByRequest(request); Optional<JSONObject> json = jsonParameter.getJSONByRequest(request);
if (!json.isPresent()) return jsonParameter.getJSONString(new JSONStandardFailedRespond()); if (!json.isPresent()) return jsonParameter.getJSONString(new JSONStandardFailedRespond());
List<String> formatCheckResult = jsonFormValidator.check(activityFormConfigure.getStdActivityForm(), json.get()); List<String> formatCheckResult = jsonFormValidator.check(activityFormConfigure.getStdActivityForm(), json.get());
//检验JSON格式是否有误
if (!formatCheckResult.isEmpty()) { if (!formatCheckResult.isEmpty()) {
error.put("error", formatCheckResult); error.put("error", formatCheckResult);
return error.toJSONString(); throw new InvalidFormFormatException(error.toJSONString());
} }
// 需要检查JSON是否合法
Activity activity = activityConverter.convertToActivity(json); Activity activity = activityConverter.convertToActivity(json);
List<String> nullValues = nullValueValidator.checkNullValues(activity); List<String> nullValues = nullValueValidator.checkNullValues(activity);
@ -136,7 +137,7 @@ public class ActivityCreatorController {
String username = json.get().get("creator").toString(); String username = json.get().get("creator").toString();
Optional<User> user = userService.findUserByUsername(username); Optional<User> user = userService.findUserByUsername(username);
UserActivity userActivity = userActivityRepository.findByUser(user.get()); UserActivity userActivity = userActivityRepository.findByUser(user.get());
userActivity.getCreatedActivities().add(activity); userActivity.getCreatedActs().add(activity);
userActivityRepository.save(userActivity); userActivityRepository.save(userActivity);
} }
} }
@ -146,7 +147,8 @@ public class ActivityCreatorController {
nullParameters.put("null_values",nullValueAttributes.getNullValueAttributes()); nullParameters.put("null_values",nullValueAttributes.getNullValueAttributes());
return nullParameters.toJSONString(); return nullParameters.toJSONString();
} }
return url + "/act_created"; JSONObject jsonObject = (JSONObject) JSONObject.toJSON(activity);
return jsonObject.toJSONString();
} }
} }

View File

@ -1,37 +1,94 @@
package com.codesdream.ase.controller.activity; package com.codesdream.ase.controller.activity;
import com.codesdream.ase.component.ASESpringUtil; import com.alibaba.fastjson.JSONObject;
import com.codesdream.ase.component.datamanager.JSONParameter;
import com.codesdream.ase.model.activity.Activity; import com.codesdream.ase.model.activity.Activity;
import com.codesdream.ase.repository.activity.ActivityRepository; import com.codesdream.ase.model.permission.User;
import com.codesdream.ase.service.ActivityService; import com.codesdream.ase.service.ActivityService;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.security.Principal; import java.util.List;
@Controller @Controller
@RequestMapping("/forget/act")
public class ActivityViewerController { public class ActivityViewerController {
private final String url = "/forget/activity";
@Resource @Resource
ActivityService activityService; ActivityService activityService;
@Resource @GetMapping("/created_acts")
ActivityRepository activityRepository; String showCreated() {
@RequestMapping(value = url + "/my/participated", method = RequestMethod.GET) User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
String showParticipated(Model model, HttpServletRequest request){ List<Activity> activities = activityService.findCreatedActs(user);
Principal principal = request.getUserPrincipal(); return JSONObject.toJSONString(activities);
String username = principal.getName(); }
ASESpringUtil aseSpringUtil = new ASESpringUtil();
activityRepository = aseSpringUtil.getBean(ActivityRepository.class); @GetMapping("/parting_acts")
//List<Activity> participatedActivities = activityRepository.findc String showParticipate(HttpServletRequest request) {
return "/my/participated";
User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
List<Activity> activities = activityService.findParticipatingActs(user);
return JSONObject.toJSONString(activities);
}
@GetMapping("/parted_acts")
String showParticipated() {
User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
List<Activity> activities = activityService.findParticipatedActs(user);
return JSONObject.toJSONString(activities);
}
@GetMapping("/sign_acts")
String showSign() {
User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
List<Activity> activities = activityService.findSignActs(user);
return JSONObject.toJSONString(activities);
}
@GetMapping("/vis_acts")
String showVisible() {
User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
List<Activity> activities = activityService.findVisibleActs(user);
return JSONObject.toJSONString(activities);
}
@GetMapping("/all")
String showAll() {
User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
List<Activity> activities = activityService.findAll(user);
return JSONObject.toJSONString(activities);
}
@GetMapping("/main_responsible_acts")
String showMainResponsible() {
User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
List<Activity> activities = activityService.findMainResponsibleActs(user);
return JSONObject.toJSONString(activities);
}
@GetMapping("/sec_responsible_acts")
String showSecondaryResponsible() {
User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
List<Activity> activities = activityService.findSecondaryResponsibleActs(user);
return JSONObject.toJSONString(activities);
}
@GetMapping("/acts_by_type")
String showInType(@RequestParam(defaultValue = "考勤", name = "type") String type) {
User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
List<Activity> activities = activityService.findActivityByType(user, type);
return JSONObject.toJSONString(activities);
} }
} }

View File

@ -1,14 +0,0 @@
package com.codesdream.ase.exception;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
public class LackOfActivityInformation extends Throwable {
private String message = "";
public LackOfActivityInformation(){super();}
public LackOfActivityInformation(String message){this.message = message;}
}

View File

@ -0,0 +1,18 @@
package com.codesdream.ase.exception;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
public class LackOfActivityInformationException extends Throwable {
private String message = "";
public LackOfActivityInformationException() {
super();
}
public LackOfActivityInformationException(String message) {
this.message = message;
}
}

View File

@ -23,33 +23,33 @@ public class UserActivity {
//主要负责的活动 //主要负责的活动
@OneToMany(cascade = {CascadeType.MERGE, CascadeType.DETACH, CascadeType.PERSIST}, fetch = FetchType.LAZY) @OneToMany(cascade = {CascadeType.MERGE, CascadeType.DETACH, CascadeType.PERSIST}, fetch = FetchType.LAZY)
private List<Activity> manageActivities; private List<Activity> mainResponsibleActs;
//次要负责的活动 //次要负责的活动
@ManyToMany(cascade = {CascadeType.MERGE, CascadeType.DETACH, CascadeType.PERSIST}, fetch = FetchType.LAZY) @ManyToMany(cascade = {CascadeType.MERGE, CascadeType.DETACH, CascadeType.PERSIST}, fetch = FetchType.LAZY)
private List<Activity> assistActivities; private List<Activity> secondaryResponsibleActs;
//可见的活动 //可见的活动
@OneToMany(cascade = {CascadeType.MERGE, CascadeType.DETACH, CascadeType.PERSIST}, fetch = FetchType.LAZY) @OneToMany(cascade = {CascadeType.MERGE, CascadeType.DETACH, CascadeType.PERSIST}, fetch = FetchType.LAZY)
private List<Activity> visibleActivities; private List<Activity> visibleActs;
//创建的活动 //创建的活动
@OneToMany(cascade = {CascadeType.MERGE, CascadeType.DETACH, CascadeType.PERSIST}, fetch = FetchType.LAZY) @OneToMany(cascade = {CascadeType.MERGE, CascadeType.DETACH, CascadeType.PERSIST}, fetch = FetchType.LAZY)
private List<Activity> createdActivities; private List<Activity> createdActs;
//可报名的活动 //可报名的活动
@OneToMany(cascade = {CascadeType.MERGE, CascadeType.DETACH, CascadeType.PERSIST}, fetch = FetchType.LAZY) @OneToMany(cascade = {CascadeType.MERGE, CascadeType.DETACH, CascadeType.PERSIST}, fetch = FetchType.LAZY)
private List<Activity> signUpActivities; private List<Activity> signUpActs;
//已经参与的活动 //已经参与的活动
@OneToMany(cascade = {CascadeType.MERGE, CascadeType.DETACH, CascadeType.PERSIST}, fetch = FetchType.LAZY) @OneToMany(cascade = {CascadeType.MERGE, CascadeType.DETACH, CascadeType.PERSIST}, fetch = FetchType.LAZY)
private List<Activity> participatedActivities; private List<Activity> participatedActs;
//正在将要参与的活动 //正在将要参与的活动
@OneToMany(cascade = {CascadeType.MERGE, CascadeType.DETACH, CascadeType.PERSIST}, fetch = FetchType.LAZY) @OneToMany(cascade = {CascadeType.MERGE, CascadeType.DETACH, CascadeType.PERSIST}, fetch = FetchType.LAZY)
private List<Activity> participatingActivities; private List<Activity> participatingActs;
//打卡签到活动 //打卡签到活动
@OneToMany(cascade = {CascadeType.MERGE, CascadeType.DETACH, CascadeType.PERSIST}, fetch = FetchType.LAZY) @OneToMany(cascade = {CascadeType.MERGE, CascadeType.DETACH, CascadeType.PERSIST}, fetch = FetchType.LAZY)
private List<Activity> clockIn; private List<Activity> clockIns;
} }

View File

@ -1,16 +1,23 @@
package com.codesdream.ase.repository.activity; package com.codesdream.ase.repository.activity;
import com.codesdream.ase.model.activity.Activity; import com.codesdream.ase.model.activity.Activity;
import com.codesdream.ase.model.permission.User;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Optional; import java.util.Optional;
@Repository @Repository
public interface ActivityRepository extends CrudRepository<Activity, Integer> { public interface ActivityRepository extends JpaRepository<Activity, Integer> {
Optional<Activity> findByTitle(String Title); Optional<Activity> findByTitle(String Title);
Optional<Activity> findByCreator(String creatorName); Optional<Activity> findByCreator(String creatorName);
List<Activity> findByUserAndType(User user, String type);
} }

View File

@ -1,14 +1,17 @@
package com.codesdream.ase.repository.activity; package com.codesdream.ase.repository.activity;
import com.codesdream.ase.model.activity.Activity;
import com.codesdream.ase.model.activity.UserActivity; import com.codesdream.ase.model.activity.UserActivity;
import com.codesdream.ase.model.permission.User; import com.codesdream.ase.model.permission.User;
import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Optional; import java.util.Optional;
@Repository @Repository
public interface UserActivityRepository extends CrudRepository<UserActivity, Integer> { public interface UserActivityRepository extends CrudRepository<UserActivity, Integer> {
UserActivity findByUser(User user); UserActivity findByUser(User user);
} }

View File

@ -1,13 +1,17 @@
package com.codesdream.ase.service; package com.codesdream.ase.service;
import com.codesdream.ase.model.activity.Activity; import com.codesdream.ase.model.activity.Activity;
import com.codesdream.ase.model.activity.Period;
import com.codesdream.ase.model.activity.Report; import com.codesdream.ase.model.activity.Report;
import com.codesdream.ase.model.activity.UserActivity;
import com.codesdream.ase.model.permission.User; import com.codesdream.ase.model.permission.User;
import com.codesdream.ase.repository.activity.ActivityRepository; import com.codesdream.ase.repository.activity.ActivityRepository;
import com.codesdream.ase.repository.activity.UserActivityRepository;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Optional; import java.time.LocalDateTime;
import java.util.*;
@Service @Service
public class ActivityService implements IActivityService { public class ActivityService implements IActivityService {
@ -15,6 +19,9 @@ public class ActivityService implements IActivityService {
@Resource @Resource
private ActivityRepository activityRepository; private ActivityRepository activityRepository;
@Resource
private UserActivityRepository userActivityRepository;
@Override @Override
public Optional<Activity> findActivityByTitle(String title) { public Optional<Activity> findActivityByTitle(String title) {
return activityRepository.findByTitle(title); return activityRepository.findByTitle(title);
@ -25,6 +32,12 @@ public class ActivityService implements IActivityService {
return activityRepository.findByCreator(creatorName); return activityRepository.findByCreator(creatorName);
} }
@Override
public List<Activity> findActivityByType(User user, String type) {
return activityRepository.findByUserAndType(user, type);
}
@Override @Override
public Activity save(Activity activity) { public Activity save(Activity activity) {
return activityRepository.save(activity); return activityRepository.save(activity);
@ -51,9 +64,109 @@ public class ActivityService implements IActivityService {
return activityRepository.save(activity); return activityRepository.save(activity);
} }
/*@Override @Override
public Activity findActivitiesInTheCharge(User user) { public List<Activity> findMainResponsibleActs(User user) {
UserActivity userActivity = userActivityRepository.findByUser(user);
List<Activity> acts = userActivity.getMainResponsibleActs();
Collections.sort(acts, new ActivityComparator());
return acts;
}
@Override
public List<Activity> findSecondaryResponsibleActs(User user) {
UserActivity userActivity = userActivityRepository.findByUser(user);
List<Activity> acts = userActivity.getSecondaryResponsibleActs();
Collections.sort(acts, new ActivityComparator());
return acts;
}
@Override
public List<Activity> findVisibleActs(User user) {
UserActivity userActivity = userActivityRepository.findByUser(user);
List<Activity> acts = userActivity.getVisibleActs();
Collections.sort(acts, new ActivityComparator());
return acts;
}
@Override
public List<Activity> findSignActs(User user) {
UserActivity userActivity = userActivityRepository.findByUser(user);
List<Activity> acts = userActivity.getSignUpActs();
Collections.sort(acts, new ActivityComparator());
return acts;
}
@Override
public List<Activity> findParticipatedActs(User user) {
UserActivity userActivity = userActivityRepository.findByUser(user);
List<Activity> acts = userActivity.getParticipatedActs();
Collections.sort(acts, new ActivityComparator());
return acts;
}
@Override
public List<Activity> findParticipatingActs(User user) {
UserActivity userActivity = userActivityRepository.findByUser(user);
List<Activity> acts = userActivity.getParticipatingActs();
Collections.sort(acts, new ActivityComparator());
return acts;
}
@Override
public List<Activity> findCreatedActs(User user) {
UserActivity userActivity = userActivityRepository.findByUser(user);
List<Activity> acts = userActivity.getCreatedActs();
Collections.sort(acts, new ActivityComparator());
return acts;
}
@Override
public List<Activity> findAll(User user) {
List<Activity> activities = findCreatedActs(user);
List<Activity> activities1 = findMainResponsibleActs(user);
List<Activity> activities2 = findSecondaryResponsibleActs(user);
List<Activity> activities3 = findParticipatingActs(user);
List<Activity> activities4 = findParticipatedActs(user);
List<Activity> activities5 = findParticipatingActs(user);
List<Activity> activities6 = findSignActs(user);
List<Activity> activities7 = findVisibleActs(user);
Set<Activity> activitySet = new HashSet<>();
activitySet.addAll(activities);
activitySet.addAll(activities1);
activitySet.addAll(activities2);
activitySet.addAll(activities3);
activitySet.addAll(activities4);
activitySet.addAll(activities5);
activitySet.addAll(activities6);
activitySet.addAll(activities7);
List<Activity> res = new ArrayList<>(activitySet);
Collections.sort(res, new ActivityComparator());
return res;
}
}*/
} }
class ActivityComparator implements Comparator<Activity> {
@Override
public int compare(Activity o1, Activity o2) {
Period p1 = o1.getRealPeriod();
Period p2 = o2.getRealPeriod();
LocalDateTime s1 = p1.getStartTime();
LocalDateTime s2 = p2.getStartTime();
if (s1.isBefore(s2)) return -1;
else if (s1.isAfter(s2)) return 1;
else return 0;
}
}

View File

@ -4,6 +4,7 @@ import com.codesdream.ase.model.activity.Activity;
import com.codesdream.ase.model.activity.Report; import com.codesdream.ase.model.activity.Report;
import com.codesdream.ase.model.permission.User; import com.codesdream.ase.model.permission.User;
import java.util.List;
import java.util.Optional; import java.util.Optional;
public interface IActivityService { public interface IActivityService {
@ -13,6 +14,9 @@ public interface IActivityService {
//通过创建人姓名查找活动 //通过创建人姓名查找活动
Optional<Activity> findActivityByCreator(String creatorName); Optional<Activity> findActivityByCreator(String creatorName);
//通过活动类型查找活动
List<Activity> findActivityByType(User user, String type);
//活动持久化 //活动持久化
Activity save(Activity activity); Activity save(Activity activity);
@ -29,6 +33,27 @@ public interface IActivityService {
Activity createActivity(Activity activity); Activity createActivity(Activity activity);
//查询主要负责的活动 //查询主要负责的活动
//Activity findActivitiesInTheCharge(User user); List<Activity> findMainResponsibleActs(User user);
//查询次要负责的活动
List<Activity> findSecondaryResponsibleActs(User user);
//查询所有可见活动即可报名活动主次要负责的活动参与过的活动等等之外却仍然可见的活动并集
List<Activity> findVisibleActs(User user);
//查找可报名的活动
List<Activity> findSignActs(User user);
//查询参与过的活动
List<Activity> findParticipatedActs(User user);
//查询将要参与的活动
List<Activity> findParticipatingActs(User user);
//查询创建的活动
List<Activity> findCreatedActs(User user);
//查询所有活动权限内
List<Activity> findAll(User user);
} }