VO对象
package com.yima.core.module.finance.vo;
import java.io.Serializable;
import java.util.Date;
/**
* <p>view-object:司机提现申请</p>
* @author Yifei Kuang
* */
public class VWithdrawal implements Serializable {
private static final long serialVersionUID = 2373108562100965579L;
/** 开始时间 */
private Date startTime;
/** 结束时间 */
private Date endTime;
/** 申请方 franchisee_id */
private String franchiseeId;
/** 姓名 */
private String userName;
/** 手机号 */
private String phone;
/** 状态 */
private int state;
/** 页码 */
private int pageNum;
/** 每页显示个数 */
private int pageSize;
//省略get/set/toString()方法....
}
schema类,要操作的entity类
package com.yima.core.module.finance.schema;
import com.tsborn.framework.dao.orm.annotation.Comment;
import com.tsborn.framework.dao.orm.schema.IdEntity;
import org.hibernate.annotations.*;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.math.BigDecimal;
import java.util.Date;
/**
*
* @author: Yifei Kuang
*
*/
@Entity
@Table(indexes = {}, name = "t_withdrawal")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE, include = "non-lazy")
@Comment("提现申请")
@SelectBeforeUpdate(true)
@DynamicUpdate
@DynamicInsert
public class TWithdrawal extends IdEntity {
private static final long serialVersionUID = -2265891880683047271L;
@Comment("所属平台")
@Column(name = "franchisee_id")
private String franchiseeId;
@Comment("会员ID")
@Column(name = "member_id")
private String memberId;
@Comment("姓名")
@Column(name = "username")
private String userName;
@Comment("手机号")
@Column(name = "phone")
private String phone;
@Comment("提现金额")
@Column(name = "withdraw_fee")
private BigDecimal withdrawFee;
@Comment("实际到账金额")
@Column(name = "actual_fee")
private BigDecimal actualFee;
@Comment("申请时间")
@Column(name = "create_time")
private Date createTime;
@Comment("开户行")
@Column(name = "bank")
private String bank;
@Comment("卡号")
@Column(name = "card_no")
private String cardNo;
@Comment("开户行姓名")
@Column(name = "card_holder")
private String cardHolder;
@Comment("状态:1.待审核,2.已通过,3.已驳回,4.已打款")
@Column(name = "state")
private int state;
@Comment("驳回理由")
@Column(name = "verify_reason")
private String verifyReason;
@Comment("审核时间")
@Column(name = "verify_time")
private Date verifyTime;
@Comment("审核员")
@Column(name = "verify_user")
private String verifyUser;
@Comment("受理员")
@Column(name = "dispose_user")
private String disposeUser;
@Comment("受理时间")
@Column(name = "dispose_time")
private Date disposeTime;
@Comment("受理备注")
@Column(name = "dispose_reason")
private String disposeReason;
//get/set/toString()方法省略...
}
Repository
package com.yima.core.module.finance.dao;
import com.yima.core.module.finance.schema.TWithdrawal;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
public interface TWithdrawalRepository extends JpaRepository<TWithdrawal,String>, JpaSpecificationExecutor<TWithdrawal> {
Page<TWithdrawal> findAll(Specification<TWithdrawal> specification, Pageable pageable);
}
Service接口
package com.yima.core.module.finance.service;
import com.yima.core.module.common.utils.result.Result;
import com.yima.core.module.finance.vo.VWithdrawal;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* <p>司机提现申请service接口</p>
* @author Yifei Kuang
*
* */
@Service
@Transactional
public interface TWithdrawalService {
/** 查询指定页码的记录<br> */
Result findAll(VWithdrawal vWithdrawal);
}
Service接口的实现类
package com.yima.core.module.finance.service.impl;
import com.yima.core.module.common.utils.result.Result;
import com.yima.core.module.finance.dao.TWithdrawalRepository;
import com.yima.core.module.finance.schema.TWithdrawal;
import com.yima.core.module.finance.service.TWithdrawalService;
import com.yima.core.module.finance.vo.VWithdrawal;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import java.util.ArrayList;
import java.util.List;
/**
* <p> 提现接口的实现类 </p>
* @author Yifei Kuang
* */
@Service
@Transactional
public class TWithdrawalServiceImpl implements TWithdrawalService {
@Autowired
private TWithdrawalRepository tWithdrawalRepository;
/**
* <p> 传入提现vo对象,拼接查询条件,返回Result<Page>对象给前台 </p>
* */
@Override
public Result findAll(VWithdrawal vWithdrawal) {
Specification<TWithdrawal> specification = new Specification<TWithdrawal>() {
@Override
public Predicate toPredicate(Root<TWithdrawal> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
//放置查询条件的List
List<Predicate> predicatesList = new ArrayList<Predicate>();
Predicate condition1 = null;
/** 申请时间开始时间存在 */
if (null != vWithdrawal.getStartTime()) {
condition1 = criteriaBuilder.greaterThanOrEqualTo(root.get("createTime"), vWithdrawal.getStartTime());
predicatesList.add(condition1);
}
Predicate condition2 = null;
/** 申请时间结束时间存在 */
if (null != vWithdrawal.getEndTime()) {
condition2 = criteriaBuilder.lessThanOrEqualTo(root.get("createTime"), vWithdrawal.getEndTime());
predicatesList.add(condition2);
}
Predicate condition3 = null;
/** 申请条件有手机号 */
if (!StringUtils.isNotBlank(vWithdrawal.getPhone())) {
condition3 = criteriaBuilder.equal(root.get("phone"), vWithdrawal.getPhone());
predicatesList.add(condition3);
}
Predicate condition4 = null;
/** 申请条件有用户名 */
if (!StringUtils.isNotBlank(vWithdrawal.getUserName())) {
condition4 = criteriaBuilder.equal(root.get("userName"), vWithdrawal.getUserName());
predicatesList.add(condition4);
}
Predicate condition5 = null;
/** 申请条件有申请方 */
if (!StringUtils.isNotBlank(vWithdrawal.getFranchiseeId())) {
condition5 = criteriaBuilder.equal(root.get("franchiseeId"), vWithdrawal.getFranchiseeId());
predicatesList.add(condition5);
}
Predicate condition = criteriaBuilder.equal(root.get("state"), vWithdrawal.getState());
predicatesList.add(condition);
criteriaQuery.where(predicatesList.toArray(new Predicate[predicatesList.size()]));
return null;
}
};
Pageable pageable = new PageRequest(vWithdrawal.getPageNum(),vWithdrawal.getPageSize());
//调用分页+动态加载条件查询,并返回给前台
return Result.success(tWithdrawalRepository.findAll(specification,pageable));
}
}