diff --git a/src/main/java/com/community/pocket/api/android/UserController.java b/src/main/java/com/community/pocket/api/android/UserController.java index 45beaa7..6ac771a 100644 --- a/src/main/java/com/community/pocket/api/android/UserController.java +++ b/src/main/java/com/community/pocket/api/android/UserController.java @@ -6,6 +6,7 @@ import com.community.pocket.entity.vo.android.*; import com.community.pocket.repository.EmailDao; import com.community.pocket.repository.android.TokenDao; import com.community.pocket.repository.android.UserDao; +import com.community.pocket.repository.android.VisitorPeopleDao; import com.community.pocket.util.EmailService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -30,21 +31,28 @@ public class UserController { @Autowired private TokenDao tokenDao; + @Autowired + private VisitorPeopleDao visitorPeopleDao; + /** * 用户注册 + * * @param userRegister 注册表单信息 */ @PostMapping("/register") - public RegisterResponse register(UserRegister userRegister){ - if(userDao.hasUser(userRegister.getUsername())){ - return new RegisterResponse(Result.FAIL, RegisterResponse.Msg.name,userRegister.getUsername()); - }else if(userDao.hasMobie(userRegister.getMobie())){ - return new RegisterResponse(Result.FAIL, RegisterResponse.Msg.mobie,userRegister.getMobie()); - }else if(userDao.hasEmail(userRegister.getEmail())){ - return new RegisterResponse(Result.FAIL,RegisterResponse.Msg.email,userRegister.getEmail()); - }else{ + public RegisterResponse register(UserRegister userRegister) { + if (userDao.hasUser(userRegister.getUsername())) { + return new RegisterResponse(Result.FAIL, RegisterResponse.Msg.name, userRegister.getUsername()); + } else if (userDao.hasMobie(userRegister.getMobie())) { + return new RegisterResponse(Result.FAIL, RegisterResponse.Msg.mobie, userRegister.getMobie()); + } else if (userDao.hasEmail(userRegister.getEmail())) { + return new RegisterResponse(Result.FAIL, RegisterResponse.Msg.email, userRegister.getEmail()); + } else { + //保存注册信息 userDao.save(userRegister); - return new RegisterResponse(Result.OK,RegisterResponse.Msg.ok); + //保存默认预约配置信息 + visitorPeopleDao.save(userRegister); + return new RegisterResponse(Result.OK, RegisterResponse.Msg.ok); } } diff --git a/src/main/java/com/community/pocket/api/android/VisitorController.java b/src/main/java/com/community/pocket/api/android/VisitorController.java new file mode 100644 index 0000000..54caad8 --- /dev/null +++ b/src/main/java/com/community/pocket/api/android/VisitorController.java @@ -0,0 +1,85 @@ +package com.community.pocket.api.android; + +import com.community.pocket.entity.po.android.Token; +import com.community.pocket.entity.po.android.Visitor; +import com.community.pocket.entity.po.android.VisitorPeople; +import com.community.pocket.entity.vo.Result; +import com.community.pocket.entity.vo.android.*; +import com.community.pocket.repository.android.TokenDao; +import com.community.pocket.repository.android.VisitorDao; +import com.community.pocket.repository.android.VisitorPeopleDao; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * 访客接口 + */ +@RestController +public class VisitorController { + + @Autowired + private VisitorDao visitorDao; + + @Autowired + private VisitorPeopleDao visitorPeopleDao; + + @Autowired + private TokenDao tokenDao; + + //访客预约 + @PostMapping("/visitor/visitor") + public VisitorResponse appointment(VisitorForm visitorForm) { + if (tokenDao.checkToken(visitorForm)) { + if (visitorDao.save(visitorForm) != null) { + return new VisitorResponse(Result.OK, VisitorResponse.Msg.ok); + } else { + return new VisitorResponse(Result.FAIL, VisitorResponse.Msg.fail); + } + } else { + return new VisitorResponse(Result.FAIL, VisitorResponse.Msg.token); + } + } + + //获取预约人 + @GetMapping("/visitor/people") + public VisitorPeopleResponse searchPeople(QueryVisitorPeople visitorPeople) { + List visitorPeopleList = visitorPeopleDao.loadAll(visitorPeople); + VisitorPeopleResponse response = new VisitorPeopleResponse(Result.OK, VisitorPeopleResponse.Msg.ok); + response.setVisitorPeopleList(visitorPeopleList); + return response; + } + + /** + * 我的预约 + */ + @GetMapping("/visitor/reservation") + public VisitorReservationResponse loadReservation(Token token) { + if (tokenDao.checkToken(token)) { + List visitorList = visitorDao.loadMyReservation(token); + VisitorReservationResponse response = new VisitorReservationResponse(Result.OK, VisitorReservationResponse.Msg.ok); + response.setVisitorList(visitorList); + return response; + } else { + return new VisitorReservationResponse(Result.FAIL, VisitorReservationResponse.Msg.fail); + } + } + + /** + * 加载我的访客 + */ + @GetMapping("/visitor/my") + public VisitorMyResponse loadMy(Token token) { + if (tokenDao.checkToken(token)) { + List visitorList = visitorDao.loadMyVisitor(token); + VisitorMyResponse response = new VisitorMyResponse(Result.OK, VisitorMyResponse.Msg.ok); + response.setVisitorList(visitorList); + return response; + } else { + return new VisitorMyResponse(Result.FAIL, VisitorMyResponse.Msg.fail); + } + } +} diff --git a/src/main/java/com/community/pocket/entity/po/android/Visitor.java b/src/main/java/com/community/pocket/entity/po/android/Visitor.java new file mode 100644 index 0000000..3f8a6db --- /dev/null +++ b/src/main/java/com/community/pocket/entity/po/android/Visitor.java @@ -0,0 +1,84 @@ +package com.community.pocket.entity.po.android; + +import com.community.pocket.util.TableName; +import com.fasterxml.jackson.annotation.JsonIgnore; +import org.bson.types.ObjectId; +import org.springframework.data.mongodb.core.mapping.Document; + +/** + * 访客预约 + */ +@Document(TableName.visitor) +public class Visitor { + //访客id + @JsonIgnore + private ObjectId id; + //访客人 + private String username; + //预约对象 + private String appointment; + //预约日期 + private String chooseDate; + //预约时间 + private String chooseTime; + //备注信息 + private String notes; + + private Long time; + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getAppointment() { + return appointment; + } + + public void setAppointment(String appointment) { + this.appointment = appointment; + } + + public String getChooseTime() { + return chooseTime; + } + + public void setChooseTime(String chooseTime) { + this.chooseTime = chooseTime; + } + + public String getNotes() { + return notes; + } + + public void setNotes(String notes) { + this.notes = notes; + } + + public ObjectId getId() { + return id; + } + + public void setId(ObjectId id) { + this.id = id; + } + + public Long getTime() { + return time; + } + + public void setTime(Long time) { + this.time = time; + } + + public String getChooseDate() { + return chooseDate; + } + + public void setChooseDate(String chooseDate) { + this.chooseDate = chooseDate; + } +} diff --git a/src/main/java/com/community/pocket/entity/po/android/VisitorPeople.java b/src/main/java/com/community/pocket/entity/po/android/VisitorPeople.java new file mode 100644 index 0000000..dfe5737 --- /dev/null +++ b/src/main/java/com/community/pocket/entity/po/android/VisitorPeople.java @@ -0,0 +1,35 @@ +package com.community.pocket.entity.po.android; + +import com.community.pocket.util.TableName; +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.Document; + +import java.util.List; + +/** + * 预约人信息 + */ +@Document(TableName.visitorPeople) +public class VisitorPeople { + @Id + //预约人 + private String username; + //可预约时间 + private List time; + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public List getTime() { + return time; + } + + public void setTime(List time) { + this.time = time; + } +} diff --git a/src/main/java/com/community/pocket/entity/vo/android/QueryVisitorPeople.java b/src/main/java/com/community/pocket/entity/vo/android/QueryVisitorPeople.java new file mode 100644 index 0000000..8dbb7e1 --- /dev/null +++ b/src/main/java/com/community/pocket/entity/vo/android/QueryVisitorPeople.java @@ -0,0 +1,18 @@ +package com.community.pocket.entity.vo.android; + +import com.community.pocket.entity.po.android.Token; + +/** + * 查询预约人条件 + */ +public class QueryVisitorPeople extends Token { + private String name; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/src/main/java/com/community/pocket/entity/vo/android/VisitorForm.java b/src/main/java/com/community/pocket/entity/vo/android/VisitorForm.java new file mode 100644 index 0000000..3760f84 --- /dev/null +++ b/src/main/java/com/community/pocket/entity/vo/android/VisitorForm.java @@ -0,0 +1,49 @@ +package com.community.pocket.entity.vo.android; + +import com.community.pocket.entity.po.android.Token; + +/** + * 访客预约表单 + */ +public class VisitorForm extends Token { + //预约人 + private String appointment; + //预约日期 + private String chooseDate; + //预约时间 + private String chooseTime; + //备注信息 + private String notes; + + public String getAppointment() { + return appointment; + } + + public void setAppointment(String appointment) { + this.appointment = appointment; + } + + public String getChooseTime() { + return chooseTime; + } + + public void setChooseTime(String chooseTime) { + this.chooseTime = chooseTime; + } + + public String getNotes() { + return notes; + } + + public void setNotes(String notes) { + this.notes = notes; + } + + public String getChooseDate() { + return chooseDate; + } + + public void setChooseDate(String chooseDate) { + this.chooseDate = chooseDate; + } +} diff --git a/src/main/java/com/community/pocket/entity/vo/android/VisitorMyResponse.java b/src/main/java/com/community/pocket/entity/vo/android/VisitorMyResponse.java new file mode 100644 index 0000000..70fe602 --- /dev/null +++ b/src/main/java/com/community/pocket/entity/vo/android/VisitorMyResponse.java @@ -0,0 +1,32 @@ +package com.community.pocket.entity.vo.android; + +import com.community.pocket.entity.po.android.Visitor; +import com.community.pocket.entity.vo.Result; + +import java.util.List; + +/** + * 我的访客信息 + */ +public class VisitorMyResponse extends AndroidResponse { + + private List visitorList; + + public List getVisitorList() { + return visitorList; + } + + public void setVisitorList(List visitorList) { + this.visitorList = visitorList; + } + + public VisitorMyResponse(Result result, Msg message, Object... args) { + super(result, message, args); + } + + public enum Msg implements CustomMessage { + ok, + fail, + token + } +} diff --git a/src/main/java/com/community/pocket/entity/vo/android/VisitorPeopleResponse.java b/src/main/java/com/community/pocket/entity/vo/android/VisitorPeopleResponse.java new file mode 100644 index 0000000..9d00ae1 --- /dev/null +++ b/src/main/java/com/community/pocket/entity/vo/android/VisitorPeopleResponse.java @@ -0,0 +1,31 @@ +package com.community.pocket.entity.vo.android; + +import com.community.pocket.entity.po.android.VisitorPeople; +import com.community.pocket.entity.vo.Result; + +import java.util.List; + +/** + * 查询预约人返回结果 + */ +public class VisitorPeopleResponse extends AndroidResponse { + + private List visitorPeopleList; + + public VisitorPeopleResponse(Result result, Msg message, Object... args) { + super(result, message, args); + } + + public List getVisitorPeopleList() { + return visitorPeopleList; + } + + public void setVisitorPeopleList(List visitorPeopleList) { + this.visitorPeopleList = visitorPeopleList; + } + + public enum Msg implements CustomMessage { + ok, + fail + } +} diff --git a/src/main/java/com/community/pocket/entity/vo/android/VisitorReservationResponse.java b/src/main/java/com/community/pocket/entity/vo/android/VisitorReservationResponse.java new file mode 100644 index 0000000..6c3521c --- /dev/null +++ b/src/main/java/com/community/pocket/entity/vo/android/VisitorReservationResponse.java @@ -0,0 +1,29 @@ +package com.community.pocket.entity.vo.android; + +import com.community.pocket.entity.po.android.Visitor; +import com.community.pocket.entity.vo.Result; + +import java.util.List; + +//我的预约信息 +public class VisitorReservationResponse extends AndroidResponse { + private List visitorList; + + public VisitorReservationResponse(Result result, Msg message, Object... args) { + super(result, message, args); + } + + public List getVisitorList() { + return visitorList; + } + + public void setVisitorList(List visitorList) { + this.visitorList = visitorList; + } + + public enum Msg implements CustomMessage { + ok, + fail, + token + } +} diff --git a/src/main/java/com/community/pocket/entity/vo/android/VisitorResponse.java b/src/main/java/com/community/pocket/entity/vo/android/VisitorResponse.java new file mode 100644 index 0000000..abeb479 --- /dev/null +++ b/src/main/java/com/community/pocket/entity/vo/android/VisitorResponse.java @@ -0,0 +1,19 @@ +package com.community.pocket.entity.vo.android; + +import com.community.pocket.entity.vo.Result; + +/** + * 访客预约结果 + */ +public class VisitorResponse extends AndroidResponse { + + public VisitorResponse(Result result, Msg message, Object... args) { + super(result, message, args); + } + + public enum Msg implements CustomMessage { + ok, + fail, + token + } +} diff --git a/src/main/java/com/community/pocket/repository/android/VisitorDao.java b/src/main/java/com/community/pocket/repository/android/VisitorDao.java new file mode 100644 index 0000000..df51f28 --- /dev/null +++ b/src/main/java/com/community/pocket/repository/android/VisitorDao.java @@ -0,0 +1,71 @@ +package com.community.pocket.repository.android; + +import com.community.pocket.entity.po.android.Token; +import com.community.pocket.entity.po.android.Visitor; +import com.community.pocket.entity.vo.android.VisitorForm; +import com.community.pocket.repository.BaseDao; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.domain.Sort; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; +import org.springframework.stereotype.Repository; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.List; + +//访客数据接口 +@Repository +public class VisitorDao extends BaseDao { + + private static final Logger LOG = LoggerFactory.getLogger(VisitorDao.class); + + @Value("${visitor.dateformat}") + private String dateformat; + + //保存访客信息 + public Visitor save(VisitorForm visitorForm) { + Visitor visitor = new Visitor(); + visitor.setAppointment(visitorForm.getAppointment()); + visitor.setUsername(visitorForm.getUsername()); + visitor.setChooseDate(visitorForm.getChooseDate()); + visitor.setChooseTime(visitorForm.getChooseTime()); + visitor.setNotes(visitorForm.getNotes()); + try { + visitor.setTime(new SimpleDateFormat(dateformat).parse(visitor.getChooseDate() + " " + visitor.getChooseTime()).getTime()); + return save(visitor); + } catch (ParseException e) { + e.printStackTrace(); + LOG.error(e.toString()); + } + return null; + } + + //加载我的访客信息 + public List loadMyVisitor(Token token) { + return mongoTemplate.find(new Query(Criteria.where("appointment").is(token.getUsername())).with(Sort.by("time").ascending()), entityClass()); + } + + //加载我的预约 + public List loadMyReservation(Token token) { + return mongoTemplate.find(new Query(Criteria.where("username").is(token.getUsername())).with(Sort.by("time").ascending()), entityClass()); + } + + @Override + public Visitor save(Visitor visitor) { + try { + return mongoTemplate.save(visitor); + } catch (Exception e) { + e.printStackTrace(); + LOG.error(e.toString()); + } + return null; + } + + @Override + public Class entityClass() { + return Visitor.class; + } +} diff --git a/src/main/java/com/community/pocket/repository/android/VisitorPeopleDao.java b/src/main/java/com/community/pocket/repository/android/VisitorPeopleDao.java new file mode 100644 index 0000000..f87f350 --- /dev/null +++ b/src/main/java/com/community/pocket/repository/android/VisitorPeopleDao.java @@ -0,0 +1,66 @@ +package com.community.pocket.repository.android; + +import com.community.pocket.entity.po.android.VisitorPeople; +import com.community.pocket.entity.vo.android.QueryVisitorPeople; +import com.community.pocket.entity.vo.android.UserRegister; +import com.community.pocket.repository.BaseDao; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.regex.Pattern; + +/** + * 预约人信息 + */ +@Repository +@ConfigurationProperties(prefix = "register") +public class VisitorPeopleDao extends BaseDao { + + private static final Logger LOG = LoggerFactory.getLogger(VisitorPeopleDao.class); + + private List visitorList; + + public void setVisitorList(List visitorList) { + this.visitorList = visitorList; + } + + public List getVisitorList() { + return visitorList; + } + + //加载预约人列表 + public List loadAll(QueryVisitorPeople queryVisitorPeople) { + return mongoTemplate.find(new Query(new Criteria().andOperator( + Criteria.where("username").regex(Pattern.compile(".*" + queryVisitorPeople.getName() + ".*")), + Criteria.where("username").ne(queryVisitorPeople.getUsername()))) + , entityClass()); + } + + @Override + public VisitorPeople save(VisitorPeople visitorPeople) { + try { + return mongoTemplate.save(visitorPeople); + } catch (Exception e) { + e.printStackTrace(); + LOG.error(e.toString()); + } + return null; + } + + @Override + public Class entityClass() { + return VisitorPeople.class; + } + + public VisitorPeople save(UserRegister userRegister) { + VisitorPeople visitorPeople = new VisitorPeople(); + visitorPeople.setUsername(userRegister.getUsername()); + visitorPeople.setTime(visitorList); + return save(visitorPeople); + } +} diff --git a/src/main/java/com/community/pocket/util/TableName.java b/src/main/java/com/community/pocket/util/TableName.java index 44223a6..17b1821 100644 --- a/src/main/java/com/community/pocket/util/TableName.java +++ b/src/main/java/com/community/pocket/util/TableName.java @@ -9,15 +9,18 @@ public class TableName { //管理员信息 public static final String manager="manager"; //验证码邮件 - public static final String emailCode="emailCode"; + public static final String emailCode = "emailCode"; //令牌 - public static final String token="token"; + public static final String token = "token"; //帖子基础信息 - public static final String forum="forum"; + public static final String forum = "forum"; //帖子详情信息 - public static final String forumContent="forumContent"; + public static final String forumContent = "forumContent"; //活动帖子 - public static final String active="active"; + public static final String active = "active"; //公告 - public static final String notice="notice"; + public static final String notice = "notice"; + //访客信息 + public static final String visitor = "visitor"; + public static final String visitorPeople = "visitorPeople"; } diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index 18f3656..6261fdd 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -44,4 +44,19 @@ forum: #注册配置 register: #默认信用分 - credit-score: 0 \ No newline at end of file + credit-score: 0 + #访客配置默认可预约时间 + visitor-list: + - '09:00' + - '10:00' + - '11:00' + - '13:00' + - '14:00' + - '15:00' + - '16:00' + - '17:00' + +#访客配置 +visitor: + #日期格式 + dateformat: 'yyyy/MM/dd HH:mm' \ No newline at end of file diff --git a/src/test/java/com/community/pocket/DemoApplicationTests.java b/src/test/java/com/community/pocket/DemoApplicationTests.java index 118af3c..48891a4 100644 --- a/src/test/java/com/community/pocket/DemoApplicationTests.java +++ b/src/test/java/com/community/pocket/DemoApplicationTests.java @@ -2,25 +2,41 @@ package com.community.pocket; import com.community.pocket.entity.vo.android.QueryUserForm; import com.community.pocket.repository.android.UserDao; +import com.community.pocket.repository.android.VisitorPeopleDao; import org.junit.jupiter.api.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import java.util.List; + @SpringBootTest class DemoApplicationTests { @Autowired private UserDao userDao; + @Autowired + private VisitorPeopleDao visitorPeopleDao; + + private static final Logger LOG = LoggerFactory.getLogger(DemoApplicationTests.class); + @Test void contextLoads() { } @Test - void queryUser(){ - QueryUserForm queryUserForm=new QueryUserForm(); + void queryUser() { + QueryUserForm queryUserForm = new QueryUserForm(); queryUserForm.setName("p"); userDao.queryUser(queryUserForm); } + @Test + void showTime() { + List s = visitorPeopleDao.getVisitorList(); + LOG.info(String.join(",", s)); + } + }