package com.qtzl.alterSales.manager.handler; import cn.com.taiji.common.manager.net.http.ServiceHandleException; import cn.hutool.core.bean.BeanUtil; import com.google.common.collect.Lists; import com.qtzl.alterSales.dao.entity.second.AflUserLoginInfo; import com.qtzl.alterSales.dao.repo.jpa.second.AflUserLoginInfoRepo; import com.qtzl.alterSales.manager.abstracts.AbstractAfterSalesManager; import com.qtzl.alterSales.manager.enums.AuthenticationStatusEnum; import com.qtzl.alterSales.manager.model.protocol.UcServiceError; import com.qtzl.alterSales.manager.model.protocol.sales.AflUserLoginInfoFindPageViewRequest; import com.qtzl.alterSales.manager.model.protocol.sales.AflUserLoginInfoFindPageViewResponse; import com.qtzl.alterSales.manager.service.AfterSalesCmd; import com.qtzl.alterSales.manager.vo.AflUserLoginInfoVo; import com.txffp.api.core.manager.comm.annotation.ApiHandler; import org.apache.commons.lang3.StringUtils; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import javax.annotation.Resource; import javax.persistence.criteria.Predicate; import java.time.LocalDateTime; import java.util.List; import java.util.stream.Collectors; /** * 查询用户信息分页 */ @Service @ApiHandler public class AflUserLoginInfoFindPageHandler extends AbstractAfterSalesManager { @Resource AflUserLoginInfoRepo aflUserLoginInfoRepo; public AflUserLoginInfoFindPageHandler() { super(AfterSalesCmd.FINDPAGEUSERLOGINFO, AflUserLoginInfoFindPageViewRequest.class); } @Override public String handleInternal(String filename, AflUserLoginInfoFindPageViewRequest request) throws ServiceHandleException { try { Page page = select(request); return toResponse(page,request).toJson(); } catch (Exception e) { if (e instanceof ServiceHandleException) { throw e; } logger.error("选装-查询用户信息管理失败:{}", e.getMessage()); throw UcServiceError.BUSINESS_VALIDATE_ERR.toHandleException("查询用户信息管理失败"); } } private AflUserLoginInfoFindPageViewResponse toResponse(Page page, AflUserLoginInfoFindPageViewRequest request) { final AflUserLoginInfoFindPageViewResponse response = new AflUserLoginInfoFindPageViewResponse(); response.setCurrentPage(request.getPageNo()); response.setPageSize(request.getPageSize()); response.setPageCount(page.getTotalPages()); response.setTotalCount(page.getTotalElements()); if (isEmpty(page.getContent())) { response.setData(Lists.newArrayList()); return response; } List formVoList = page.getContent().stream().map(this::toVo).collect(Collectors.toList()); response.setData(formVoList); return response; } private Page select(AflUserLoginInfoFindPageViewRequest request) throws ServiceHandleException { if (request.getPageSize() > 100) { throw UcServiceError.BUSINESS_VALIDATE_ERR.toHandleException("请求每页数量过大 " + request.getPageSize()); } return aflUserLoginInfoRepo.findAll(((root, query, cb) -> { List list = Lists.newArrayList(); if (!StringUtils.isEmpty(request.getMobile())) { list.add(cb.equal(root.get("mobile"), request.getMobile())); } if (!StringUtils.isEmpty(request.getPatternOpenId())) { list.add(cb.equal(root.get("openId"), request.getPatternOpenId())); } if (!StringUtils.isEmpty(request.getNickName())) { list.add(cb.like(root.get("nickName"),"%"+ request.getNickName()+"%")); } if (request.getSex()!=null) { list.add(cb.equal(root.get("sex"), request.getSex())); } if (request.getStatus()!=null) { list.add(cb.equal(root.get("status"), request.getStatus())); } if (request.getInsertTimeEnd()!=null) { list.add(cb.lessThanOrEqualTo(root.get("insertTime"), request.getInsertTimeEnd())); } if (request.getInsertTimeStart()!=null) { list.add(cb.greaterThanOrEqualTo(root.get("insertTime"), request.getInsertTimeStart())); } Predicate[] p = new Predicate[list.size()]; return cb.and(list.toArray(p)); }), PageRequest.of(request.getPageNo() - 1, request.getPageSize(), Sort.by(Sort.Direction.DESC, "insertTime"))); } private AflUserLoginInfoVo toVo(AflUserLoginInfo aflUserLoginInfo) { AflUserLoginInfoVo aflUserLoginInfoVo = new AflUserLoginInfoVo(); BeanUtil.copyProperties(aflUserLoginInfo, aflUserLoginInfoVo); aflUserLoginInfoVo.setStatus(AuthenticationStatusEnum.YESREALNAME.getCode()); return aflUserLoginInfoVo; } }