diff --git a/luigi-api/src/main/java/com/bzgame/server/luigi/api/rest/AuthorController.java b/luigi-api/src/main/java/com/bzgame/server/luigi/api/rest/AuthorController.java index 35e96b8..e96b5f8 100644 --- a/luigi-api/src/main/java/com/bzgame/server/luigi/api/rest/AuthorController.java +++ b/luigi-api/src/main/java/com/bzgame/server/luigi/api/rest/AuthorController.java @@ -4,13 +4,12 @@ import com.bczgame.server.common.vo.Response; import com.bzgame.server.luigi.api.aop.ApiFlag; import com.bzgame.server.luigi.dao.domain.Author; import com.bzgame.server.luigi.service.bo.AuthorService; +import com.bzgame.server.luigi.service.bo.request.PaginationQuery; import com.bzgame.server.luigi.service.bo.response.CommonList; +import com.bzgame.server.luigi.service.bo.response.PoemBo; import io.swagger.annotations.Api; import org.apache.commons.lang3.StringUtils; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.ArrayList; @@ -42,4 +41,16 @@ public class AuthorController { public Response getAuthorById(@RequestParam Integer id) { return new Response<>(authorService.getById(id), "ok", Response.CODE_SUCCESS); } + + @PostMapping("/list") + @ApiFlag + public Response> authorList(@RequestBody PaginationQuery query) { + return new Response<>(authorService.query(query), "ok", Response.CODE_SUCCESS); + } + + @PostMapping("/save") + @ApiFlag + public Response saveAuthor(@RequestBody Author author) { + return new Response<>(authorService.save(author), "ok", 1); + } } diff --git a/luigi-api/src/main/java/com/bzgame/server/luigi/api/rest/PoemController.java b/luigi-api/src/main/java/com/bzgame/server/luigi/api/rest/PoemController.java index 0e2ff9d..a5abddc 100644 --- a/luigi-api/src/main/java/com/bzgame/server/luigi/api/rest/PoemController.java +++ b/luigi-api/src/main/java/com/bzgame/server/luigi/api/rest/PoemController.java @@ -3,11 +3,10 @@ package com.bzgame.server.luigi.api.rest; import com.bczgame.server.common.vo.Response; import com.bzgame.server.luigi.api.aop.ApiFlag; import com.bzgame.server.luigi.service.bo.PoemService; -import com.bzgame.server.luigi.service.bo.request.PoemQuery; +import com.bzgame.server.luigi.service.bo.request.PaginationQuery; import com.bzgame.server.luigi.service.bo.response.CommonList; import com.bzgame.server.luigi.service.bo.response.PoemBo; import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -24,7 +23,7 @@ public class PoemController { @PostMapping("/list") @ApiFlag - public Response> poemList(@RequestBody PoemQuery query) { + public Response> poemList(@RequestBody PaginationQuery query) { return new Response<>(poemService.query(query), "ok", Response.CODE_SUCCESS); } diff --git a/luigi-dao/src/main/java/com/bzgame/server/luigi/dao/mapper/manual/ManualMapper.java b/luigi-dao/src/main/java/com/bzgame/server/luigi/dao/mapper/manual/ManualMapper.java index 13e3a38..5a42a24 100644 --- a/luigi-dao/src/main/java/com/bzgame/server/luigi/dao/mapper/manual/ManualMapper.java +++ b/luigi-dao/src/main/java/com/bzgame/server/luigi/dao/mapper/manual/ManualMapper.java @@ -1,6 +1,7 @@ package com.bzgame.server.luigi.dao.mapper.manual; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; public interface ManualMapper { @@ -9,4 +10,7 @@ public interface ManualMapper { @Update("update author set poem_cnt = poem_cnt + 1 where id = #{id}") void incrAuthorPoemCnt(@Param("id") Integer authorId); + + @Select("select count(*) from poem where author_id = #{id}") + int getPoemCntByAuthor(@Param("id") Integer authorId); } diff --git a/luigi-service/src/main/java/com/bzgame/server/luigi/service/bo/AuthorService.java b/luigi-service/src/main/java/com/bzgame/server/luigi/service/bo/AuthorService.java index e57fdd1..5fa21ca 100644 --- a/luigi-service/src/main/java/com/bzgame/server/luigi/service/bo/AuthorService.java +++ b/luigi-service/src/main/java/com/bzgame/server/luigi/service/bo/AuthorService.java @@ -1,10 +1,18 @@ package com.bzgame.server.luigi.service.bo; +import com.bczgame.server.common.exception.BizException; +import com.bczgame.server.common.exception.ExceptionCode; import com.bzgame.server.luigi.dao.domain.Author; import com.bzgame.server.luigi.dao.domain.AuthorExample; +import com.bzgame.server.luigi.dao.domain.Poem; +import com.bzgame.server.luigi.dao.domain.PoemExample; import com.bzgame.server.luigi.dao.mapper.AuthorMapper; +import com.bzgame.server.luigi.dao.mapper.manual.ManualMapper; +import com.bzgame.server.luigi.service.bo.request.PaginationQuery; import com.bzgame.server.luigi.service.bo.response.CommonList; +import com.bzgame.server.luigi.service.bo.response.PoemBo; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.util.List; @@ -19,6 +27,34 @@ public class AuthorService { @Resource private AuthorMapper authorMapper; + @Resource + private ManualMapper manualMapper; + + public CommonList query(PaginationQuery query) { + AuthorExample example = new AuthorExample(); + AuthorExample.Criteria criteria = example.createCriteria(); + setQuery(query, criteria); + example.setOffset((query.getCurrent() - 1) * query.getPageSize()); + example.setLimit(query.getPageSize()); + List authors = authorMapper.selectByExampleWithBLOBs(example); + long total = authorMapper.countByExample(example); + CommonList res = new CommonList<>(); + res.setTotal((int) total); + res.setList(authors); + return res; + } + + public Integer save(Author a) { + if (a.getId() != null) { + int poemCnt = manualMapper.getPoemCntByAuthor(a.getId()); + a.setPoemCnt(poemCnt); + authorMapper.updateByPrimaryKeySelective(a); + } else { + authorMapper.insertSelective(a); + } + return a.getId(); + } + public Map getByIds(List ids) { AuthorExample example = new AuthorExample(); example.createCriteria().andIdIn(ids); @@ -39,4 +75,27 @@ public class AuthorService { res.setList(authors); return res; } + + private void setQuery(PaginationQuery query, AuthorExample.Criteria criteria) { + criteria.andStatusGreaterThanOrEqualTo(0); + + if (CollectionUtils.isEmpty(query.getQuery())) { + return; + } + query.getQuery().forEach(x -> { + switch (x.getKey()) { + case "status": + criteria.andStatusEqualTo(Integer.valueOf(x.getVal())); + break; + case "id": + criteria.andIdEqualTo(Integer.valueOf(x.getVal())); + break; + case "name": + criteria.andNameLike(x.getVal() + "%"); + break; + default: + throw new BizException(ExceptionCode.PARAM_ILLEGAL_WARN, "参数非法"); + } + }); + } } diff --git a/luigi-service/src/main/java/com/bzgame/server/luigi/service/bo/PoemService.java b/luigi-service/src/main/java/com/bzgame/server/luigi/service/bo/PoemService.java index af273d0..6e12aef 100644 --- a/luigi-service/src/main/java/com/bzgame/server/luigi/service/bo/PoemService.java +++ b/luigi-service/src/main/java/com/bzgame/server/luigi/service/bo/PoemService.java @@ -7,7 +7,7 @@ import com.bzgame.server.luigi.dao.domain.Poem; import com.bzgame.server.luigi.dao.domain.PoemExample; import com.bzgame.server.luigi.dao.mapper.PoemMapper; import com.bzgame.server.luigi.dao.mapper.manual.ManualMapper; -import com.bzgame.server.luigi.service.bo.request.PoemQuery; +import com.bzgame.server.luigi.service.bo.request.PaginationQuery; import com.bzgame.server.luigi.service.bo.response.CommonList; import com.bzgame.server.luigi.service.bo.response.PoemBo; import com.google.gson.Gson; @@ -35,7 +35,7 @@ public class PoemService { @Resource private ManualMapper manualMapper; - public CommonList query(PoemQuery query) { + public CommonList query(PaginationQuery query) { PoemExample example = new PoemExample(); PoemExample.Criteria criteria = example.createCriteria(); setQuery(query, criteria); @@ -98,7 +98,7 @@ public class PoemService { }).collect(Collectors.toList()); } - private void setQuery(PoemQuery query, PoemExample.Criteria criteria) { + private void setQuery(PaginationQuery query, PoemExample.Criteria criteria) { criteria.andStatusGreaterThanOrEqualTo(0); if (CollectionUtils.isEmpty(query.getQuery())) { diff --git a/luigi-service/src/main/java/com/bzgame/server/luigi/service/bo/request/PoemQuery.java b/luigi-service/src/main/java/com/bzgame/server/luigi/service/bo/request/PaginationQuery.java similarity index 97% rename from luigi-service/src/main/java/com/bzgame/server/luigi/service/bo/request/PoemQuery.java rename to luigi-service/src/main/java/com/bzgame/server/luigi/service/bo/request/PaginationQuery.java index d012848..f46fabc 100644 --- a/luigi-service/src/main/java/com/bzgame/server/luigi/service/bo/request/PoemQuery.java +++ b/luigi-service/src/main/java/com/bzgame/server/luigi/service/bo/request/PaginationQuery.java @@ -5,7 +5,7 @@ import java.util.List; /** * @author nidaren */ -public class PoemQuery { +public class PaginationQuery { private List query; private int pageSize; private int current;