package org.taobao88.taobao.enterprise.dao.impl;
import java.util.List;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import org.taobao88.taobao.enterprise.dao.PostServicePriceDAO;
import org.taobao88.taobao.enterprise.entity.PostServicePrice;
@Repository("postServicePriceDAO")
@Transactional
public class PostServicePriceDAOImpl implements PostServicePriceDAO {
@Autowired private SessionFactory sessionFactory;
@Override
public PostServicePrice findById(int id) {
return (PostServicePrice) sessionFactory.getCurrentSession().createQuery("from PostServicePrice where id = :id").setParameter("id", id).uniqueResult();
}
@SuppressWarnings("unchecked")
@Override
public List<PostServicePrice> getAll() {
return (List<PostServicePrice>) sessionFactory.getCurrentSession().createQuery("from PostServicePrice").list();
}
@Override
public int create(PostServicePrice postPrice) {
return (int) sessionFactory.getCurrentSession().save(postPrice);
}
@Override
public void update(PostServicePrice postPrice) {
sessionFactory.getCurrentSession().update(postPrice);
}
@Override
public void delete(PostServicePrice postPrice) {
sessionFactory.getCurrentSession().delete(postPrice);
}
@Override
public double getPriceByWeight(double weight, int postServiceId) {
Double realWeight = (Double) sessionFactory.getCurrentSession().createSQLQuery("SELECT MIN(weight) FROM post_services_prices WHERE weight >= " + weight + " AND post_service_id = " + postServiceId).uniqueResult();
if (realWeight != null) {
return (double) sessionFactory.getCurrentSession().createSQLQuery("SELECT price FROM post_services_prices WHERE weight = " + realWeight.doubleValue() + " AND post_service_id = " + postServiceId).uniqueResult();
}
return 0.0;
}
}