From e11323698bd2165bfadae49433fe28644edc6e1e Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E5=88=98=E6=B4=AA=E9=9D=92?= Date: Thu, 5 Sep 2019 18:14:48 +0800 Subject: [PATCH] =?utf8?q?feat:=20=E5=A2=9E=E5=8A=A0=E8=B7=AF=E7=94=B1?= =?utf8?q?=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD=E7=9A=84api?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../api/v1/admin/AdminRouteController.java | 165 ++++++++++++++++++ .../api/vo/request/RouteCreateRequest.java | 21 +++ .../vo/request/RouteDeleteBatchRequest.java | 21 +++ .../api/vo/request/RouteQueryRequest.java | 40 +++++ .../api/vo/request/RouteUpdateRequest.java | 28 +++ .../vo/response/RouteCreateResponseData.java | 33 ++++ .../RouteDeleteBatchResponseData.java | 35 ++++ .../vo/response/RouteLoadResponseData.java | 33 ++++ .../vo/response/RouteQueryResponseData.java | 80 +++++++++ .../vo/response/RouteRemoveResponseData.java | 34 ++++ .../vo/response/RouteUpdateResponseData.java | 34 ++++ .../backend/base/domain/entity/Route.java | 69 ++++++++ .../base/domain/repo/RouteRepository.java | 76 ++++++++ .../base/domain/service/RouteService.java | 32 ++++ 14 files changed, 701 insertions(+) create mode 100644 base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/admin/AdminRouteController.java create mode 100644 base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/request/RouteCreateRequest.java create mode 100644 base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/request/RouteDeleteBatchRequest.java create mode 100644 base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/request/RouteQueryRequest.java create mode 100644 base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/request/RouteUpdateRequest.java create mode 100644 base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/response/RouteCreateResponseData.java create mode 100644 base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/response/RouteDeleteBatchResponseData.java create mode 100644 base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/response/RouteLoadResponseData.java create mode 100644 base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/response/RouteQueryResponseData.java create mode 100644 base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/response/RouteRemoveResponseData.java create mode 100644 base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/response/RouteUpdateResponseData.java create mode 100644 base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/Route.java create mode 100644 base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/RouteRepository.java create mode 100644 base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/RouteService.java diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/admin/AdminRouteController.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/admin/AdminRouteController.java new file mode 100644 index 0000000..b7a57ea --- /dev/null +++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/admin/AdminRouteController.java @@ -0,0 +1,165 @@ +package com.supwisdom.institute.backend.base.api.v1.admin; + +import java.util.List; + +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.http.HttpStatus; +import org.springframework.util.MimeTypeUtils; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.bind.annotation.RestController; + +import com.supwisdom.institute.backend.base.api.vo.request.RouteCreateRequest; +import com.supwisdom.institute.backend.base.api.vo.request.RouteDeleteBatchRequest; +import com.supwisdom.institute.backend.base.api.vo.request.RouteQueryRequest; +import com.supwisdom.institute.backend.base.api.vo.request.RouteUpdateRequest; +import com.supwisdom.institute.backend.base.api.vo.response.RouteCreateResponseData; +import com.supwisdom.institute.backend.base.api.vo.response.RouteDeleteBatchResponseData; +import com.supwisdom.institute.backend.base.api.vo.response.RouteLoadResponseData; +import com.supwisdom.institute.backend.base.api.vo.response.RouteQueryResponseData; +import com.supwisdom.institute.backend.base.api.vo.response.RouteRemoveResponseData; +import com.supwisdom.institute.backend.base.api.vo.response.RouteUpdateResponseData; +import com.supwisdom.institute.backend.base.domain.entity.Route; +import com.supwisdom.institute.backend.base.domain.service.RouteService; +import com.supwisdom.institute.backend.common.framework.entity.EntityUtils; +import com.supwisdom.institute.backend.common.framework.vo.response.DefaultApiResponse; + +@Api(value = "BaseAdminRoute", tags = { "BaseAdminRoute" }, description = "路由信息的操作接口") +@Slf4j +@RestController +@RequestMapping("/v1/admin/routes") +public class AdminRouteController { + + @Autowired + private RouteService routeService; + + + @GetMapping(produces = MimeTypeUtils.APPLICATION_JSON_VALUE) + @ResponseStatus(value = HttpStatus.OK) + @ResponseBody + public DefaultApiResponse query(RouteQueryRequest queryRequest) { + + Page page = routeService.selectPageList( + queryRequest.isLoadAll(), + queryRequest.getPageIndex(), + queryRequest.getPageSize(), + queryRequest.getMapBean(), + queryRequest.getOrderBy()); + + RouteQueryResponseData data = RouteQueryResponseData.of(queryRequest).build(page); + + return new DefaultApiResponse(data); + } + + @GetMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE) + @ResponseStatus(value = HttpStatus.OK) + @ResponseBody + public DefaultApiResponse load(@PathVariable("id") String id) { + + if (id == null || id.length() == 0) { + throw new RuntimeException("exception.get.id.must.not.empty"); // FIXME: RestException + } + + Route route = routeService.selectById(id); + + if (route == null) { + throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException + } + + RouteLoadResponseData data = RouteLoadResponseData.of(route); + + return new DefaultApiResponse(data); + } + + @PostMapping(consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE) + @ResponseStatus(value = HttpStatus.OK) + @ResponseBody + public DefaultApiResponse create( + @RequestBody RouteCreateRequest createRequest) { + + // FIXME: 验证数据有效性 + + Route route = createRequest.getEntity(); + + Route ret = routeService.insert(route); + + RouteCreateResponseData data = RouteCreateResponseData.build(ret); + + return new DefaultApiResponse(data); + } + + @PutMapping(path = "/{id}", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE) + @ResponseStatus(value = HttpStatus.OK) + @ResponseBody + public DefaultApiResponse update( + @PathVariable("id") String id, + @RequestBody RouteUpdateRequest updateRequest) { + + if (id == null || id.length() == 0) { + throw new RuntimeException("exception.update.id.must.not.empty"); + } + + Route tmp = routeService.selectById(id); + if (tmp == null) { + throw new RuntimeException("exception.update.domain.not.exist"); + } + + Route route = updateRequest.getEntity(); + route.setId(id); + + route = EntityUtils.merge(tmp, route); + + Route ret = routeService.update(route); + + RouteUpdateResponseData data = RouteUpdateResponseData.build(ret); + + return new DefaultApiResponse(data); + } + + @DeleteMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE) + @ResponseStatus(value = HttpStatus.OK) + @ResponseBody + public DefaultApiResponse delete( + @PathVariable("id") String id) { + + if (id == null || id.length() == 0) { + throw new RuntimeException("exception.delete.id.must.not.empty"); // FIXME: RestException + } + + Route tmp = routeService.selectById(id); + if (tmp == null) { + throw new RuntimeException("exception.delete.domain.not.exist"); // FIXME: RestException + } + + routeService.deleteById(id); + + RouteRemoveResponseData data = RouteRemoveResponseData.build(tmp); + return new DefaultApiResponse(data); + } + + @DeleteMapping(path = "/batch", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE) + @ResponseStatus(value = HttpStatus.OK) + @ResponseBody + public DefaultApiResponse deleteBatch( + @RequestBody RouteDeleteBatchRequest deleteBatchRequest) { + + List ids = deleteBatchRequest.getIds(); + + routeService.deleteBatch(ids); + + RouteDeleteBatchResponseData data = RouteDeleteBatchResponseData.build(ids); + return new DefaultApiResponse(data); + } + +} diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/request/RouteCreateRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/request/RouteCreateRequest.java new file mode 100644 index 0000000..b3f8d10 --- /dev/null +++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/request/RouteCreateRequest.java @@ -0,0 +1,21 @@ +package com.supwisdom.institute.backend.base.api.vo.request; + +import com.supwisdom.institute.backend.base.domain.entity.Route; +import com.supwisdom.institute.backend.common.framework.entity.EntityUtils; +import com.supwisdom.institute.backend.common.framework.vo.request.IApiCreateRequest; + +/** + * @author loie + */ +public class RouteCreateRequest extends Route implements IApiCreateRequest { + + /** + * + */ + private static final long serialVersionUID = -1610189545107922L; + + public Route getEntity() { + return EntityUtils.copy(this, new Route()); + } + +} diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/request/RouteDeleteBatchRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/request/RouteDeleteBatchRequest.java new file mode 100644 index 0000000..9c523c4 --- /dev/null +++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/request/RouteDeleteBatchRequest.java @@ -0,0 +1,21 @@ +package com.supwisdom.institute.backend.base.api.vo.request; + +import java.util.List; + +import lombok.Getter; +import lombok.Setter; + +import com.supwisdom.institute.backend.common.framework.vo.request.IApiRequest; + +public class RouteDeleteBatchRequest implements IApiRequest { + + /** + * + */ + private static final long serialVersionUID = -6325676083300813571L; + + @Getter + @Setter + private List ids; + +} diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/request/RouteQueryRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/request/RouteQueryRequest.java new file mode 100644 index 0000000..77dee0a --- /dev/null +++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/request/RouteQueryRequest.java @@ -0,0 +1,40 @@ +package com.supwisdom.institute.backend.base.api.vo.request; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Map; + +import com.supwisdom.institute.backend.common.framework.vo.request.IApiQueryRequest; + +import io.swagger.annotations.ApiModelProperty; + +/** + * @author loie + */ +public class RouteQueryRequest implements IApiQueryRequest { + + /** + * + */ + private static final long serialVersionUID = 5501929058767629345L; + + @Getter + @Setter + private boolean loadAll = false; + @Getter + @Setter + private int pageIndex = 0; + @Getter + @Setter + private int pageSize = 20; + @Getter + @Setter + @ApiModelProperty(hidden = true) + private Map mapBean; + @Getter + @Setter + @ApiModelProperty(hidden = true) + private Map orderBy; + +} diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/request/RouteUpdateRequest.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/request/RouteUpdateRequest.java new file mode 100644 index 0000000..991e7c4 --- /dev/null +++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/request/RouteUpdateRequest.java @@ -0,0 +1,28 @@ +package com.supwisdom.institute.backend.base.api.vo.request; + +import com.supwisdom.institute.backend.base.domain.entity.Route; +import com.supwisdom.institute.backend.common.framework.entity.EntityUtils; +import com.supwisdom.institute.backend.common.framework.vo.request.IApiUpdateRequest; + +import lombok.Getter; +import lombok.Setter; + +/** + * @author loie + */ +public class RouteUpdateRequest extends Route implements IApiUpdateRequest { + + /** + * + */ + private static final long serialVersionUID = -1999295284394866961L; + + @Getter + @Setter + private String id; + + public Route getEntity() { + return EntityUtils.copy(this, new Route()); + } + +} diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/response/RouteCreateResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/response/RouteCreateResponseData.java new file mode 100644 index 0000000..bc4a8fa --- /dev/null +++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/response/RouteCreateResponseData.java @@ -0,0 +1,33 @@ +package com.supwisdom.institute.backend.base.api.vo.response; + +import com.supwisdom.institute.backend.base.domain.entity.Route; +import com.supwisdom.institute.backend.common.framework.entity.EntityUtils; +import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiCreateResponseData; + +import lombok.Getter; +import lombok.Setter; + +/** + * @author loie + */ +public class RouteCreateResponseData extends Route implements IApiCreateResponseData { + + /** + * + */ + private static final long serialVersionUID = -3115757571075013907L; + + @Getter + @Setter + private String id; + + private RouteCreateResponseData() { + + } + + public static RouteCreateResponseData build(Route entity) { + RouteCreateResponseData data = new RouteCreateResponseData(); + + return EntityUtils.copy(entity, data); + } +} diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/response/RouteDeleteBatchResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/response/RouteDeleteBatchResponseData.java new file mode 100644 index 0000000..bee5441 --- /dev/null +++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/response/RouteDeleteBatchResponseData.java @@ -0,0 +1,35 @@ +package com.supwisdom.institute.backend.base.api.vo.response; + +import java.util.List; + +import lombok.Getter; +import lombok.Setter; + +import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiResponseData; + +/** + * @author loie + */ +public class RouteDeleteBatchResponseData implements IApiResponseData { + + /** + * + */ + private static final long serialVersionUID = -2204591486919573195L; + + @Getter + @Setter + private List ids; + + private RouteDeleteBatchResponseData() { + + } + + public static RouteDeleteBatchResponseData build(List ids) { + RouteDeleteBatchResponseData data = new RouteDeleteBatchResponseData(); + data.setIds(ids); + + return data; + } + +} diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/response/RouteLoadResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/response/RouteLoadResponseData.java new file mode 100644 index 0000000..f3f8c74 --- /dev/null +++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/response/RouteLoadResponseData.java @@ -0,0 +1,33 @@ +package com.supwisdom.institute.backend.base.api.vo.response; + +import com.supwisdom.institute.backend.base.domain.entity.Route; +import com.supwisdom.institute.backend.common.framework.entity.EntityUtils; +import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiLoadResponseData; + +import lombok.Getter; +import lombok.Setter; + +/** + * @author loie + */ +public class RouteLoadResponseData extends Route implements IApiLoadResponseData { + + /** + * + */ + private static final long serialVersionUID = 3295217395256011396L; + + @Getter + @Setter + private String id; + + private RouteLoadResponseData() { + + } + + public static RouteLoadResponseData of(Route entity) { + RouteLoadResponseData data = new RouteLoadResponseData(); + return EntityUtils.copy(entity, data); + } + +} diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/response/RouteQueryResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/response/RouteQueryResponseData.java new file mode 100644 index 0000000..932c9c3 --- /dev/null +++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/response/RouteQueryResponseData.java @@ -0,0 +1,80 @@ +package com.supwisdom.institute.backend.base.api.vo.response; + +import lombok.Getter; +import lombok.Setter; + +import java.util.List; +import java.util.Map; + +import org.springframework.data.domain.Page; + +import com.supwisdom.institute.backend.base.domain.entity.Route; +import com.supwisdom.institute.backend.common.framework.vo.request.IApiQueryRequest; +import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiQueryResponseData; + +/** + * @author loie + */ +public class RouteQueryResponseData implements IApiQueryResponseData { + + /** + * + */ + private static final long serialVersionUID = -2632433248197514787L; + + private RouteQueryResponseData(boolean loadAll, int pageIndex, int pageSize, Map mapBean, Map orderBy) { + this.loadAll = loadAll; + this.pageIndex = pageIndex; + this.pageSize = pageSize; + this.mapBean = mapBean; + this.orderBy = orderBy; + } + + public static RouteQueryResponseData of(IApiQueryRequest queryRequest) { + RouteQueryResponseData configQueryResponse = new RouteQueryResponseData( + queryRequest.isLoadAll(), + queryRequest.getPageIndex(), + queryRequest.getPageSize(), + queryRequest.getMapBean(), + queryRequest.getOrderBy() + ); + + return configQueryResponse; + } + + public RouteQueryResponseData build(Page page) { + this.currentItemCount = page.getNumberOfElements(); + this.pageCount = page.getTotalPages(); + this.recordCount = page.getTotalElements(); + this.items = page.getContent(); + + return this; + } + + @Getter + private boolean loadAll; + @Getter + private int pageIndex; + @Getter + private int pageSize; + @Getter + private Map mapBean; + @Getter + private Map orderBy; + + @Getter + @Setter + private int pageCount; + @Getter + @Setter + private long recordCount; + + @Getter + @Setter + private int currentItemCount; + + @Getter + @Setter + private List items; + +} diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/response/RouteRemoveResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/response/RouteRemoveResponseData.java new file mode 100644 index 0000000..ec4497b --- /dev/null +++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/response/RouteRemoveResponseData.java @@ -0,0 +1,34 @@ +package com.supwisdom.institute.backend.base.api.vo.response; + +import lombok.Getter; +import lombok.Setter; + +import com.supwisdom.institute.backend.base.domain.entity.Route; +import com.supwisdom.institute.backend.common.framework.entity.EntityUtils; +import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiRemoveResponseData; + +/** + * @author loie + */ +public class RouteRemoveResponseData implements IApiRemoveResponseData { + + /** + * + */ + private static final long serialVersionUID = -143516413115089421L; + + @Getter + @Setter + private String id; + + private RouteRemoveResponseData() { + + } + + public static RouteRemoveResponseData build(Route entity) { + RouteRemoveResponseData data = new RouteRemoveResponseData(); + + return EntityUtils.copy(entity, data); + } + +} diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/response/RouteUpdateResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/response/RouteUpdateResponseData.java new file mode 100644 index 0000000..a101e22 --- /dev/null +++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/vo/response/RouteUpdateResponseData.java @@ -0,0 +1,34 @@ +package com.supwisdom.institute.backend.base.api.vo.response; + +import com.supwisdom.institute.backend.base.domain.entity.Route; +import com.supwisdom.institute.backend.common.framework.entity.EntityUtils; +import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiUpdateResponseData; + +import lombok.Getter; +import lombok.Setter; + +/** + * @author loie + */ +public class RouteUpdateResponseData extends Route implements IApiUpdateResponseData { + + /** + * + */ + private static final long serialVersionUID = 364945014290674973L; + + @Getter + @Setter + private String id; + + private RouteUpdateResponseData() { + + } + + public static RouteUpdateResponseData build(Route entity) { + RouteUpdateResponseData data = new RouteUpdateResponseData(); + + return EntityUtils.copy(entity, data); + } + +} diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/Route.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/Route.java new file mode 100644 index 0000000..17f91cb --- /dev/null +++ b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/Route.java @@ -0,0 +1,69 @@ +package com.supwisdom.institute.backend.base.domain.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Table; + +import lombok.Getter; +import lombok.Setter; + +import com.supwisdom.institute.backend.common.framework.entity.ABaseEntity; + +@Entity +@Table(name = "TB_BASE_ROUTE") +public class Route extends ABaseEntity { + + /** + * + */ + private static final long serialVersionUID = -7435404154376360786L; + + /** + * 代码 + */ + @Column(name = "CODE") + @Getter + @Setter + private String code; + + /** + * 名称 + */ + @Column(name = "NAME") + @Getter + @Setter + private String name; + + /** + * 备注 + */ + @Column(name = "MEMO") + @Getter + @Setter + private String memo; + + /** + * 状态(1 启用,0 停用) + */ + @Column(name = "STATUS") + @Getter + @Setter + private String status; + + /** + * 路由地址 + */ + @Column(name = "URI") + @Getter + @Setter + private String uri; + + /** + * 路径前缀 + */ + @Column(name = "PATH_PREFIX") + @Getter + @Setter + private String pathPrefix; + +} diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/RouteRepository.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/RouteRepository.java new file mode 100644 index 0000000..425138b --- /dev/null +++ b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/RouteRepository.java @@ -0,0 +1,76 @@ +package com.supwisdom.institute.backend.base.domain.repo; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import javax.persistence.criteria.CriteriaBuilder; +import javax.persistence.criteria.CriteriaQuery; +import javax.persistence.criteria.Predicate; +import javax.persistence.criteria.Root; + +import org.springframework.data.jpa.domain.Specification; +import org.springframework.stereotype.Repository; +import org.springframework.util.StringUtils; + +import com.supwisdom.institute.backend.base.domain.entity.Route; +import com.supwisdom.institute.backend.common.framework.repo.BaseJpaRepository; +import com.supwisdom.institute.backend.common.util.MapBeanUtils; + +@Repository +public interface RouteRepository extends BaseJpaRepository { + + @Override + public default Specification convertToSpec(Map mapBean) { + + Specification spec = new Specification() { + + /** + * + */ + private static final long serialVersionUID = 9131799274128286026L; + + @Override + public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder criteriaBuilder) { + List predicates = new ArrayList<>(); + + if (mapBean != null) { + + if (MapBeanUtils.getBoolean(mapBean, "deleted") != null) { + predicates.add(criteriaBuilder.equal(root.get("deleted"), MapBeanUtils.getBoolean(mapBean, "deleted"))); + } + + if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "code"))) { + predicates.add(criteriaBuilder.like(root.get("code"), "%" + MapBeanUtils.getString(mapBean, "code") + "%")); + } + if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "name"))) { + predicates.add(criteriaBuilder.like(root.get("name"), "%" + MapBeanUtils.getString(mapBean, "name") + "%")); + } + + if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "status"))) { + predicates.add(criteriaBuilder.equal(root.get("status"), MapBeanUtils.getString(mapBean, "status"))); + } + + if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "url"))) { + predicates.add(criteriaBuilder.like(root.get("url"), "%" + MapBeanUtils.getString(mapBean, "url") + "%")); + } + + List predicatesKeyword = new ArrayList<>(); + if (!StringUtils.isEmpty(MapBeanUtils.getString(mapBean, "keyword"))) { + predicatesKeyword.add(criteriaBuilder.like(root.get("code"), "%" + MapBeanUtils.getString(mapBean, "keyword") + "%")); + predicatesKeyword.add(criteriaBuilder.like(root.get("name"), "%" + MapBeanUtils.getString(mapBean, "keyword") + "%")); + predicatesKeyword.add(criteriaBuilder.like(root.get("memo"), "%" + MapBeanUtils.getString(mapBean, "keyword") + "%")); + + predicates.add(criteriaBuilder.or(predicatesKeyword.toArray(new Predicate[predicatesKeyword.size()]))); + } + } + + return criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()])); + } + + }; + + return spec; + } + +} diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/RouteService.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/RouteService.java new file mode 100644 index 0000000..f93595f --- /dev/null +++ b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/RouteService.java @@ -0,0 +1,32 @@ +package com.supwisdom.institute.backend.base.domain.service; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.supwisdom.institute.backend.base.domain.entity.Route; +import com.supwisdom.institute.backend.base.domain.repo.RouteRepository; +import com.supwisdom.institute.backend.common.framework.service.ABaseService; + +@Service +public class RouteService extends ABaseService { + + @Override + public RouteRepository getRepo() { + return routeRepository; + } + + @Autowired + private RouteRepository routeRepository; + + + public void deleteBatch(List ids) { + + ids.stream().forEach(id -> { + this.deleteById(id); + }); + } + + +} -- 2.17.1