package com.withiter.models.account;
import java.util.ArrayList;
import java.util.List;
import play.modules.morphia.Model.MorphiaQuery;
import play.modules.morphia.Model.NoAutoTimestamp;
import cn.bran.japid.util.StringUtils;
import com.google.code.morphia.annotations.Entity;
import com.withiter.common.Constants.CateType;
import com.withiter.models.merchant.Merchant;
@Entity
@NoAutoTimestamp
public class Credit extends CreditEntityDef {
private static int DEFAULT_PAGE_ITEMS_NUMBER = 10;
/**
* find credits by account ID
* @param accountId account ID
* @return credit list
*/
public static List<Credit> findByAccountId(String accountId) {
MorphiaQuery q = Credit.q();
q.filter("accountId", accountId);
q.filter("available", true);
return q.asList();
}
/**
* get next page credits by account ID
* @param accountId account ID
* @param page the page number
* @param sortBy 排序方式
* @return credit list
*/
public static List<Credit> findByAccountId(String accountId,int page,String sortBy) {
MorphiaQuery q = Credit.q();
q.filter("accountId", accountId);
q.filter("available", true);
if (!StringUtils.isEmpty(sortBy)) {
q = sortBy(q, sortBy);
}else{
q = sortBy(q,"-created");
}
return paginate(q, page);
}
/**
* 通用排序
* @param q
* @param sortBy
* @return
*/
private static MorphiaQuery sortBy(MorphiaQuery q, String sortBy) {
q.order(sortBy);
return q;
}
/**
* 通用分页
* @param q
* @param page
* @return
*/
private static List<Credit> paginate(MorphiaQuery q, int page) {
q.offset((page - 1) * DEFAULT_PAGE_ITEMS_NUMBER).limit(
DEFAULT_PAGE_ITEMS_NUMBER);
return q.asList();
}
public static List<Credit> findByAccountId(String accountId, String sortBy) {
MorphiaQuery q = Credit.q();
q.filter("accountId", accountId);
q.filter("available", true);
if (!StringUtils.isEmpty(sortBy)) {
q = sortBy(q, sortBy);
}else{
q = sortBy(q,"-created");
}
if(null != q.asKeyList() && !q.asKeyList().isEmpty()){
return q.asList();
}
return new ArrayList<Credit>();
}
}