diff --git a/src/main/java/com/community/pocket/api/android/VisitorController.java b/src/main/java/com/community/pocket/api/android/AndroidVisitorController.java similarity index 97% rename from src/main/java/com/community/pocket/api/android/VisitorController.java rename to src/main/java/com/community/pocket/api/android/AndroidVisitorController.java index 54caad8..f365306 100644 --- a/src/main/java/com/community/pocket/api/android/VisitorController.java +++ b/src/main/java/com/community/pocket/api/android/AndroidVisitorController.java @@ -1,7 +1,7 @@ package com.community.pocket.api.android; +import com.community.pocket.entity.po.Visitor; 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.*; @@ -19,7 +19,7 @@ import java.util.List; * 访客接口 */ @RestController -public class VisitorController { +public class AndroidVisitorController { @Autowired private VisitorDao visitorDao; diff --git a/src/main/java/com/community/pocket/api/web/ManagerController.java b/src/main/java/com/community/pocket/api/web/ManagerController.java index 46cdcf4..7551556 100644 --- a/src/main/java/com/community/pocket/api/web/ManagerController.java +++ b/src/main/java/com/community/pocket/api/web/ManagerController.java @@ -19,8 +19,6 @@ import java.util.Date; @RestController @RequestMapping("/api/manager") -//客户端跨域测试 -@CrossOrigin("http://localhost:4200") //管理员接口 public class ManagerController { diff --git a/src/main/java/com/community/pocket/api/web/WebForumController.java b/src/main/java/com/community/pocket/api/web/WebForumController.java index 70610cf..b074e12 100644 --- a/src/main/java/com/community/pocket/api/web/WebForumController.java +++ b/src/main/java/com/community/pocket/api/web/WebForumController.java @@ -7,14 +7,16 @@ import com.community.pocket.entity.vo.web.ForumCheckResponse; import com.community.pocket.repository.android.ForumDao; import com.community.pocket.repository.android.NoticeDao; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; import java.util.List; /** * web和android端共用论坛接口 */ -@CrossOrigin("http://localhost:4200") @RestController public class WebForumController { diff --git a/src/main/java/com/community/pocket/api/web/WebVisitorController.java b/src/main/java/com/community/pocket/api/web/WebVisitorController.java new file mode 100644 index 0000000..44e03f7 --- /dev/null +++ b/src/main/java/com/community/pocket/api/web/WebVisitorController.java @@ -0,0 +1,41 @@ +package com.community.pocket.api.web; + +import com.community.pocket.entity.po.Visitor; +import com.community.pocket.entity.vo.Page; +import com.community.pocket.entity.vo.Result; +import com.community.pocket.entity.vo.web.VisitorForm; +import com.community.pocket.entity.vo.web.VisitorQuery; +import com.community.pocket.entity.vo.web.VisitorResponse; +import com.community.pocket.repository.android.VisitorDao; +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.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +@RestController +//访客预约管理 +public class WebVisitorController { + + @Autowired + private VisitorDao visitorDao; + + //加载访客信息 + @GetMapping("/api/visitor") + public VisitorResponse loadAll(VisitorQuery visitorQuery) { + Page visitorList = visitorDao.loadAllVisitor(visitorQuery); + VisitorResponse visitorResponse = new VisitorResponse(Result.OK, VisitorResponse.Msg.ok); + visitorResponse.setVisitorList(visitorList); + return visitorResponse; + } + + //访客预约放行 + @PostMapping("/api/visitor") + public VisitorResponse update(@RequestBody VisitorForm visitorForm) { + if (visitorDao.updateVisitor(visitorForm)) { + return new VisitorResponse(Result.OK, VisitorResponse.Msg.check_ok); + } else { + return new VisitorResponse(Result.FAIL, VisitorResponse.Msg.check_fail); + } + } +} diff --git a/src/main/java/com/community/pocket/entity/po/android/Visitor.java b/src/main/java/com/community/pocket/entity/po/Visitor.java similarity index 73% rename from src/main/java/com/community/pocket/entity/po/android/Visitor.java rename to src/main/java/com/community/pocket/entity/po/Visitor.java index f6deb11..fbc98ba 100644 --- a/src/main/java/com/community/pocket/entity/po/android/Visitor.java +++ b/src/main/java/com/community/pocket/entity/po/Visitor.java @@ -1,5 +1,6 @@ -package com.community.pocket.entity.po.android; +package com.community.pocket.entity.po; +import com.community.pocket.entity.vo.web.VisitorStatus; import com.community.pocket.util.TableName; import org.springframework.data.mongodb.core.mapping.Document; @@ -18,8 +19,12 @@ public class Visitor { private String chooseDate; //预约时间 private String chooseTime; - //备注信息 + //拜访目的 private String notes; + //审核状态 + private VisitorStatus status; + //审核管理员 + private String managerName; private Long time; @@ -78,4 +83,20 @@ public class Visitor { public void setChooseDate(String chooseDate) { this.chooseDate = chooseDate; } + + public VisitorStatus getStatus() { + return status; + } + + public void setStatus(VisitorStatus status) { + this.status = status; + } + + public String getManagerName() { + return managerName; + } + + public void setManagerName(String managerName) { + this.managerName = managerName; + } } 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 index 8dbb7e1..9722df6 100644 --- a/src/main/java/com/community/pocket/entity/vo/android/QueryVisitorPeople.java +++ b/src/main/java/com/community/pocket/entity/vo/android/QueryVisitorPeople.java @@ -6,7 +6,10 @@ import com.community.pocket.entity.po.android.Token; * 查询预约人条件 */ public class QueryVisitorPeople extends Token { + //预约人 private String name; + //是否外来人口预约 + private Boolean outPeople; public String getName() { return name; @@ -15,4 +18,12 @@ public class QueryVisitorPeople extends Token { public void setName(String name) { this.name = name; } + + public Boolean getOutPeople() { + return outPeople; + } + + public void setOutPeople(Boolean outPeople) { + this.outPeople = outPeople; + } } 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 index 3760f84..f35b0d5 100644 --- a/src/main/java/com/community/pocket/entity/vo/android/VisitorForm.java +++ b/src/main/java/com/community/pocket/entity/vo/android/VisitorForm.java @@ -12,8 +12,10 @@ public class VisitorForm extends Token { private String chooseDate; //预约时间 private String chooseTime; - //备注信息 + //拜访目的 private String notes; + //是否外来人口预约 + private Boolean isOutPeople; public String getAppointment() { return appointment; @@ -46,4 +48,12 @@ public class VisitorForm extends Token { public void setChooseDate(String chooseDate) { this.chooseDate = chooseDate; } + + public Boolean getOutPeople() { + return isOutPeople; + } + + public void setOutPeople(Boolean outPeople) { + isOutPeople = outPeople; + } } 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 index f0478d7..f5e07c6 100644 --- a/src/main/java/com/community/pocket/entity/vo/android/VisitorMyResponse.java +++ b/src/main/java/com/community/pocket/entity/vo/android/VisitorMyResponse.java @@ -1,6 +1,6 @@ package com.community.pocket.entity.vo.android; -import com.community.pocket.entity.po.android.Visitor; +import com.community.pocket.entity.po.Visitor; import com.community.pocket.entity.vo.Response; import com.community.pocket.entity.vo.Result; 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 index dd068e4..98d1a18 100644 --- a/src/main/java/com/community/pocket/entity/vo/android/VisitorReservationResponse.java +++ b/src/main/java/com/community/pocket/entity/vo/android/VisitorReservationResponse.java @@ -1,6 +1,6 @@ package com.community.pocket.entity.vo.android; -import com.community.pocket.entity.po.android.Visitor; +import com.community.pocket.entity.po.Visitor; import com.community.pocket.entity.vo.Response; import com.community.pocket.entity.vo.Result; diff --git a/src/main/java/com/community/pocket/entity/vo/web/VisitorForm.java b/src/main/java/com/community/pocket/entity/vo/web/VisitorForm.java new file mode 100644 index 0000000..f259d69 --- /dev/null +++ b/src/main/java/com/community/pocket/entity/vo/web/VisitorForm.java @@ -0,0 +1,37 @@ +package com.community.pocket.entity.vo.web; + +/** + * 访客预约表单 + */ +public class VisitorForm { + //访客id + private String id; + //审核状态 + private VisitorStatus status; + //审核管理员 + private String managerName; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public VisitorStatus getStatus() { + return status; + } + + public void setStatus(VisitorStatus status) { + this.status = status; + } + + public String getManagerName() { + return managerName; + } + + public void setManagerName(String managerName) { + this.managerName = managerName; + } +} diff --git a/src/main/java/com/community/pocket/entity/vo/web/VisitorQuery.java b/src/main/java/com/community/pocket/entity/vo/web/VisitorQuery.java new file mode 100644 index 0000000..ddb1d67 --- /dev/null +++ b/src/main/java/com/community/pocket/entity/vo/web/VisitorQuery.java @@ -0,0 +1,16 @@ +package com.community.pocket.entity.vo.web; + +/** + * 访客查询条件 + */ +public class VisitorQuery { + private Long currentPage; + + public Long getCurrentPage() { + return currentPage; + } + + public void setCurrentPage(Long currentPage) { + this.currentPage = currentPage; + } +} diff --git a/src/main/java/com/community/pocket/entity/vo/web/VisitorResponse.java b/src/main/java/com/community/pocket/entity/vo/web/VisitorResponse.java new file mode 100644 index 0000000..ed71789 --- /dev/null +++ b/src/main/java/com/community/pocket/entity/vo/web/VisitorResponse.java @@ -0,0 +1,30 @@ +package com.community.pocket.entity.vo.web; + +import com.community.pocket.entity.po.Visitor; +import com.community.pocket.entity.vo.Page; +import com.community.pocket.entity.vo.Response; +import com.community.pocket.entity.vo.Result; +import com.community.pocket.entity.vo.android.CustomMessage; + +public class VisitorResponse extends Response { + private Page visitorList; + + public VisitorResponse(Result result, Msg message, Object... args) { + super(result, message, args); + } + + public Page getVisitorList() { + return visitorList; + } + + public void setVisitorList(Page visitorList) { + this.visitorList = visitorList; + } + + public enum Msg implements CustomMessage { + ok, + fail, + check_ok, + check_fail + } +} diff --git a/src/main/java/com/community/pocket/entity/vo/web/VisitorStatus.java b/src/main/java/com/community/pocket/entity/vo/web/VisitorStatus.java new file mode 100644 index 0000000..c1b1408 --- /dev/null +++ b/src/main/java/com/community/pocket/entity/vo/web/VisitorStatus.java @@ -0,0 +1,7 @@ +package com.community.pocket.entity.vo.web; + +public enum VisitorStatus { + uncheck, + ok, + fail +} diff --git a/src/main/java/com/community/pocket/repository/android/VisitorDao.java b/src/main/java/com/community/pocket/repository/android/VisitorDao.java index df51f28..3edf05b 100644 --- a/src/main/java/com/community/pocket/repository/android/VisitorDao.java +++ b/src/main/java/com/community/pocket/repository/android/VisitorDao.java @@ -1,15 +1,20 @@ package com.community.pocket.repository.android; +import com.community.pocket.entity.po.Visitor; import com.community.pocket.entity.po.android.Token; -import com.community.pocket.entity.po.android.Visitor; +import com.community.pocket.entity.vo.Page; import com.community.pocket.entity.vo.android.VisitorForm; +import com.community.pocket.entity.vo.web.VisitorQuery; +import com.community.pocket.entity.vo.web.VisitorStatus; 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.PageRequest; 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.data.mongodb.core.query.Update; import org.springframework.stereotype.Repository; import java.text.ParseException; @@ -35,6 +40,7 @@ public class VisitorDao extends BaseDao { visitor.setNotes(visitorForm.getNotes()); try { visitor.setTime(new SimpleDateFormat(dateformat).parse(visitor.getChooseDate() + " " + visitor.getChooseTime()).getTime()); + visitor.setStatus(VisitorStatus.uncheck); return save(visitor); } catch (ParseException e) { e.printStackTrace(); @@ -43,6 +49,21 @@ public class VisitorDao extends BaseDao { return null; } + //加载所有访客信息 + public Page loadAllVisitor(VisitorQuery visitorQuery) { + long count = mongoTemplate.count(new Query(), entityClass()); + Page page = new Page<>(count, visitorQuery.getCurrentPage(), pageSize); + List visitorList = mongoTemplate.find(new Query().with(PageRequest.of(visitorQuery.getCurrentPage().intValue() - 1, pageSize)), entityClass()); + page.setList(visitorList); + return page; + } + + //访客预约放行 + public boolean updateVisitor(com.community.pocket.entity.vo.web.VisitorForm visitorForm) { + return mongoTemplate.updateFirst(new Query(Criteria.where("_id").is(visitorForm.getId())), Update.update("status", visitorForm.getStatus()).set("managerName", visitorForm.getManagerName()), entityClass()).wasAcknowledged(); + } + + //加载我的访客信息 public List loadMyVisitor(Token token) { return mongoTemplate.find(new Query(Criteria.where("appointment").is(token.getUsername())).with(Sort.by("time").ascending()), entityClass()); diff --git a/src/main/java/com/community/pocket/repository/android/VisitorPeopleDao.java b/src/main/java/com/community/pocket/repository/android/VisitorPeopleDao.java index f87f350..be4491b 100644 --- a/src/main/java/com/community/pocket/repository/android/VisitorPeopleDao.java +++ b/src/main/java/com/community/pocket/repository/android/VisitorPeopleDao.java @@ -35,10 +35,14 @@ public class VisitorPeopleDao extends BaseDao { //加载预约人列表 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()); + if (queryVisitorPeople.getOutPeople()) { + return mongoTemplate.find(new Query(Criteria.where("username").regex(Pattern.compile(".*" + queryVisitorPeople.getName() + ".*"))), entityClass()); + } else { + return mongoTemplate.find(new Query(new Criteria().andOperator( + Criteria.where("username").regex(Pattern.compile(".*" + queryVisitorPeople.getName() + ".*")), + Criteria.where("username").ne(queryVisitorPeople.getUsername()))) + , entityClass()); + } } @Override diff --git a/src/main/java/com/community/pocket/util/CrosConfiguration.java b/src/main/java/com/community/pocket/util/CrosConfiguration.java new file mode 100644 index 0000000..3c27836 --- /dev/null +++ b/src/main/java/com/community/pocket/util/CrosConfiguration.java @@ -0,0 +1,30 @@ +package com.community.pocket.util; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.cors.CorsConfiguration; +import org.springframework.web.cors.UrlBasedCorsConfigurationSource; +import org.springframework.web.filter.CorsFilter; + +@Configuration +public class CrosConfiguration { + + @Value("${cros.allow-origin}") + private String allowOrigin; + + @Bean + public FilterRegistrationBean corsFilter() { + UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); + CorsConfiguration config = new CorsConfiguration(); + config.setAllowCredentials(true); + config.addAllowedOrigin(allowOrigin); + config.addAllowedHeader("*"); + config.addAllowedMethod("*"); + source.registerCorsConfiguration("/api/**", config); + FilterRegistrationBean bean = new FilterRegistrationBean<>(new CorsFilter(source)); + bean.setOrder(0); + return bean; + } +} diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index 66cb3c8..0fab66b 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -71,4 +71,8 @@ waste: #废品回收 manage: name: admin - mobie: 10086 \ No newline at end of file + mobie: 10086 + +#跨域配置 +cros: + allow-origin: 'http://localhost:4200' \ 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 368bc46..eb6c793 100644 --- a/src/test/java/com/community/pocket/DemoApplicationTests.java +++ b/src/test/java/com/community/pocket/DemoApplicationTests.java @@ -172,4 +172,12 @@ void loadData() throws FileNotFoundException { .param("name", "安") ).andDo(MockMvcResultHandlers.print()).andReturn(); } + + //测试检索预约人 + @Test + void queryPeople() throws Exception { + mockMvc.perform(MockMvcRequestBuilders.get("/visitor/people") + .param("name", "p") + .param("outPeople", String.valueOf(false))).andDo(MockMvcResultHandlers.print()).andReturn(); + } }