LiteOrderDaoImpl.java 2.5 KB
package com.myproject.dao.mongo.impl;

import com.google.common.collect.Lists;
import com.myproject.bean.json.LiteOrder;
import com.myproject.bean.json.LiteOrderItem;
import com.myproject.dao.mongo.AbstractMongoDao;
import com.myproject.dao.mongo.ILiteOrderDao;
import com.myproject.dao.mongo.ILiteOrderItemDao;
import com.myproject.util.StorageConstants;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Repository;

import java.util.*;

/**
 * Created by kangmor on 2015/10/15.
 */
@Repository
public class LiteOrderDaoImpl extends AbstractMongoDao implements ILiteOrderDao {

    @Autowired
    private ILiteOrderItemDao liteOrderItemDao;

    @Override
    public LiteOrder findByOrderNo(String orderNo) {
        if (StringUtils.isEmpty(orderNo))
            return null;
        else return findOneByCondition(new String[] {"orderNo"}, new String[] {orderNo});
    }

    @Override
    public LiteOrder createWithItems(LiteOrder liteOrder){
        List<LiteOrderItem> items = Lists.newArrayList();
        for (LiteOrderItem liteOrderItem : liteOrder.getOrderItems()) {
            liteOrderItem.setOrderNo(liteOrder.getOrderNo());
            liteOrderItem = liteOrderItemDao.save(liteOrderItem);
            items.add(liteOrderItem);
        }
        liteOrder  = save(liteOrder);
        liteOrder.setOrderItems(items);
        return liteOrder;
    }

    @Override
    public LiteOrder findWithItemsByOrderNo(String orderNo){
        LiteOrder order = findByOrderNo(orderNo);
        if(order != null){
            List<LiteOrderItem> items = liteOrderItemDao.findOrderItems(orderNo);
            order.setOrderItems(items);
        }
        return order;
    }

    @Override
    public LiteOrder findBySource(String source) {
        if (StringUtils.isEmpty(source))
            return null;
        else return findOneByCondition(new String[] {"source"}, new String[] {source});
    }

    @Override
    public List<LiteOrder> findUnCloseOrders() {
        Criteria c = Criteria.where("closed").is(false);
        Query query = Query.query(c);
        query.with(new Sort(Sort.Direction.DESC,"createDate"));
        return findByQuery(query);
    }

    @Override
    public Class getEntityClass() {
        return LiteOrder.class;
    }

}