提交 411b581b 编写于 作者: O o2sword

增加消息分页查询接口。用户说消息未接收到,未消费列表未查字典,实际已消费了。

上级 69579c0f
package com.x.message.assemble.communicate.jaxrs.message;
import com.google.gson.JsonElement;
import com.x.base.core.container.EntityManagerContainer;
import com.x.base.core.container.factory.EntityManagerContainerFactory;
import com.x.base.core.entity.JpaObject;
import com.x.base.core.project.annotation.FieldDescribe;
import com.x.base.core.project.bean.WrapCopier;
import com.x.base.core.project.bean.WrapCopierFactory;
import com.x.base.core.project.gson.GsonPropertyObject;
import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson;
import com.x.base.core.project.tools.DateTools;
import com.x.message.assemble.communicate.Business;
import com.x.message.core.entity.Message;
import com.x.message.core.entity.Message_;
import org.apache.commons.lang3.StringUtils;
import javax.persistence.EntityManager;
import javax.persistence.Tuple;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import java.util.List;
class ActionListPaging extends BaseAction {
ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, Integer page, Integer size, JsonElement jsonElement)
throws Exception {
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
Business business = new Business(emc);
ActionResult<List<Wo>> result = new ActionResult<>();
Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
Predicate p = this.toFilterPredicate(effectivePerson, business, wi);
List<Wo> wos = emc.fetchDescPaging(Message.class, Wo.copier, p, page, size, Message.sequence_FIELDNAME);
result.setData(wos);
result.setCount(emc.count(Message.class, p));
return result;
}
}
private Predicate toFilterPredicate(EffectivePerson effectivePerson, Business business, Wi wi) throws Exception {
EntityManager em = business.entityManagerContainer().get(Message.class);
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Tuple> cq = cb.createQuery(Tuple.class);
Root<Message> root = cq.from(Message.class);
Predicate p = cb.conjunction();
if(StringUtils.isNotEmpty(wi.getPerson())){
p = cb.and(p, cb.equal(root.get(Message_.person), wi.getPerson()));
}
if(StringUtils.isNotEmpty(wi.getType())){
p = cb.and(p, cb.equal(root.get(Message_.type), wi.getType()));
}
if(StringUtils.isNotEmpty(wi.getConsume())){
p = cb.and(p, cb.equal(root.get(Message_.consumer), wi.getConsume()));
}
if (DateTools.isDateTimeOrDate(wi.getStartTime())) {
p = cb.and(p, cb.greaterThan(root.get(Message_.createTime), DateTools.parse(wi.getStartTime())));
}
if (DateTools.isDateTimeOrDate(wi.getEndTime())) {
p = cb.and(p, cb.lessThan(root.get(Message_.createTime), DateTools.parse(wi.getEndTime())));
}
return p;
}
public class Wi extends GsonPropertyObject {
@FieldDescribe("用户")
private String person;
@FieldDescribe("消息类型.")
private String type;
@FieldDescribe("消费者")
private String consume;
@FieldDescribe("开始时间yyyy-MM-dd HH:mm:ss")
private String startTime;
@FieldDescribe("结束时间yyyy-MM-dd HH:mm:ss")
private String endTime;
public String getPerson() {
return person;
}
public void setPerson(String person) {
this.person = person;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getConsume() {
return consume;
}
public void setConsume(String consume) {
this.consume = consume;
}
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
this.startTime = startTime;
}
public String getEndTime() {
return endTime;
}
public void setEndTime(String endTime) {
this.endTime = endTime;
}
}
public static class Wo extends Message {
private static final long serialVersionUID = 681982898431236763L;
static WrapCopier<Message, Wo> copier = WrapCopierFactory.wo(Message.class, Wo.class, null,
JpaObject.FieldsInvisible);
}
}
package com.x.message.assemble.communicate.jaxrs.message;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.*;
import javax.ws.rs.container.AsyncResponse;
import javax.ws.rs.container.Suspended;
import javax.ws.rs.core.Context;
......@@ -13,6 +10,7 @@ import javax.ws.rs.core.MediaType;
import com.google.gson.JsonElement;
import com.x.base.core.project.annotation.JaxrsDescribe;
import com.x.base.core.project.annotation.JaxrsMethodDescribe;
import com.x.base.core.project.annotation.JaxrsParameterDescribe;
import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson;
import com.x.base.core.project.http.HttpMediaType;
......@@ -21,6 +19,8 @@ import com.x.base.core.project.jaxrs.StandardJaxrsAction;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import java.util.List;
@Path("message")
@JaxrsDescribe("消息")
public class MessageAction extends StandardJaxrsAction {
......@@ -45,4 +45,23 @@ public class MessageAction extends StandardJaxrsAction {
asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
}
}
\ No newline at end of file
@JaxrsMethodDescribe(value = "消息分页查询.", action = ActionListPaging.class)
@POST
@Path("list/paging/{page}/size/{size}")
@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
@Consumes(MediaType.APPLICATION_JSON)
public void listPaging(@Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request,
@JaxrsParameterDescribe("分页") @PathParam("page") Integer page,
@JaxrsParameterDescribe("每页数量") @PathParam("size") Integer size, JsonElement jsonElement) {
ActionResult<List<ActionListPaging.Wo>> result = new ActionResult<>();
EffectivePerson effectivePerson = this.effectivePerson(request);
try {
result = new ActionListPaging().execute(effectivePerson, page, size, jsonElement);
} catch (Exception e) {
logger.error(e, effectivePerson, request, jsonElement);
result.error(e);
}
asyncResponse.resume(ResponseFactory.getDefaultActionResultResponse(result));
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册