package com.yeshi.fanli.service.impl.goods;
|
|
import java.util.ArrayList;
|
import java.util.Collection;
|
import java.util.HashMap;
|
import java.util.LinkedHashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
import javax.annotation.Resource;
|
import javax.transaction.Transactional;
|
|
import org.hibernate.HibernateException;
|
import org.hibernate.Query;
|
import org.hibernate.Session;
|
import org.springframework.orm.hibernate4.HibernateCallback;
|
import org.springframework.stereotype.Service;
|
|
import com.yeshi.fanli.dao.goods.RecommendBannerDao;
|
import com.yeshi.fanli.entity.admin.RecommendBannerAdmin;
|
import com.yeshi.fanli.entity.bus.recommend.RecommendBanner;
|
import com.yeshi.fanli.entity.bus.su.recommend.SuperRecommendBanner;
|
import com.yeshi.fanli.entity.system.BusinessSystem;
|
import com.yeshi.fanli.service.inter.config.BusinessSystemService;
|
import com.yeshi.fanli.service.inter.goods.RecommendBannerService;
|
import com.yeshi.fanli.service.inter.goods.SuperRecommendBannerService;
|
import com.yeshi.fanli.util.Constant;
|
import com.yeshi.fanli.util.Utils;
|
|
@Service
|
public class RecommendBannerServiceImpl implements RecommendBannerService {
|
|
@Resource
|
private RecommendBannerDao recommendBannerDao;
|
|
@Resource
|
private SuperRecommendBannerService superRecommendBannerService;
|
|
@Resource
|
private BusinessSystemService businessSystemService;
|
|
public List<RecommendBanner> getRecommendBanners() {
|
|
return recommendBannerDao.list("from RecommendBanner rb order by rb.orderby");
|
|
}
|
|
public void addRecommendBanner(RecommendBanner banner) {
|
banner.setCreatetime(java.lang.System.currentTimeMillis());
|
recommendBannerDao.create(banner);
|
}
|
|
@SuppressWarnings("unchecked")
|
public List<RecommendBannerAdmin> getRecommendBanners(int pageIndex,
|
String platform, String packages, String key) {
|
final int strat = pageIndex * Constant.PAGE_SIZE;
|
platform = Utils.getMap().get(platform);
|
com.yeshi.fanli.entity.system.BusinessSystem system = businessSystemService.getBusinessSystem(platform, packages);
|
List<RecommendBanner> recommendBannerList=null;
|
List<SuperRecommendBanner> superRecommendBannerList=null;
|
Map<Long,RecommendBannerAdmin> recommendBannerAdminMap=new HashMap<Long, RecommendBannerAdmin>();
|
List<RecommendBannerAdmin> recommendBannerAdmin=new ArrayList<RecommendBannerAdmin>();
|
if(system == null){
|
if("".equals(key.trim())){
|
recommendBannerList = (List<RecommendBanner>) recommendBannerDao.excute(new HibernateCallback<List<RecommendBanner>>(){
|
public List<RecommendBanner> doInHibernate(Session session)
|
throws HibernateException {
|
Query query = session.createQuery(" from RecommendBanner rb order by rb.orderby ");
|
query.setFirstResult(strat);
|
query.setMaxResults(Constant.PAGE_SIZE);
|
return query.list();
|
}
|
});
|
}else{
|
final String likekey = "%"+key+"%";
|
recommendBannerList= (List<RecommendBanner>) recommendBannerDao.excute(new HibernateCallback<List<RecommendBanner>>(){
|
public List<RecommendBanner> doInHibernate(Session session)
|
throws HibernateException {
|
Query query = session.createQuery(" from RecommendBanner rs where rs.name like ? order by rs.orderby ");
|
query.setFirstResult(strat);
|
query.setMaxResults(Constant.PAGE_SIZE);
|
query.setParameter(0, likekey);
|
return query.list();
|
}
|
});
|
}
|
List<Long> rsIdList = new ArrayList<Long>();
|
for (RecommendBanner rs : recommendBannerList) {
|
rsIdList.add(rs.getId());
|
}
|
superRecommendBannerList = superRecommendBannerService.getSuperRecommendBannersByBanners(rsIdList);
|
Map<Long,List<BusinessSystem>> superMap = new HashMap<Long, List<BusinessSystem>>();
|
Long rsId=null;
|
List<BusinessSystem> systemList=null;
|
for (SuperRecommendBanner srs : superRecommendBannerList) {
|
rsId = srs.getRecommendBanner().getId();
|
systemList = superMap.get(rsId);
|
if(systemList==null){
|
systemList=new ArrayList<BusinessSystem>();
|
}
|
systemList.add(srs.getSystem());
|
superMap.put(rsId,systemList);
|
}
|
RecommendBannerAdmin rsa=null;
|
for (RecommendBanner recommendBanner : recommendBannerList) {
|
long id = recommendBanner.getId();
|
rsa = recommendBannerAdminMap.get(id);
|
if(rsa==null){
|
rsa=new RecommendBannerAdmin();
|
}
|
List<BusinessSystem> list = superMap.get(id);
|
if(list != null){
|
rsa.getSystemList().addAll(superMap.get(id));
|
}
|
rsa.setRecommendBanner(recommendBanner);
|
recommendBannerAdminMap.put(id, rsa);
|
}
|
}else if(system != null){
|
if("".equals(key.trim())){
|
superRecommendBannerList = superRecommendBannerService.getSuperRecommendBannerBySystemId(system.getId(),strat, Constant.PAGE_SIZE);
|
}else{
|
String likekey = "%"+key+"%";
|
superRecommendBannerList = superRecommendBannerService.getSuperRecommendBannerBySystemId(system.getId(),strat, Constant.PAGE_SIZE,likekey);
|
}
|
List<Long> rsIdList =new ArrayList<Long>();
|
for (SuperRecommendBanner superRecommendBanner : superRecommendBannerList) {
|
RecommendBanner recommendBanner = superRecommendBanner.getRecommendBanner();
|
rsIdList.add(recommendBanner.getId());
|
}
|
superRecommendBannerList = superRecommendBannerService.getSuperRecommendBannersByBanners(rsIdList);
|
RecommendBannerAdmin rsa=null;
|
for (SuperRecommendBanner superRecommendBanner : superRecommendBannerList) {
|
RecommendBanner recommendBanner = superRecommendBanner.getRecommendBanner();
|
rsa = recommendBannerAdminMap.get(recommendBanner.getId());
|
if(rsa==null){
|
rsa=new RecommendBannerAdmin(recommendBanner);
|
}
|
rsa.getSystemList().add(superRecommendBanner.getSystem());
|
recommendBannerAdminMap.put(recommendBanner.getId(), rsa);
|
}
|
}
|
Map<Long, RecommendBannerAdmin> obMap = (LinkedHashMap<Long, RecommendBannerAdmin>) Utils.orderBy(recommendBannerAdminMap);
|
Collection<RecommendBannerAdmin> values = obMap.values();
|
recommendBannerAdmin.addAll(values);
|
return recommendBannerAdmin;
|
|
}
|
|
public long getCount() {
|
return recommendBannerDao
|
.getCount("select count(*) from RecommendBanner");
|
}
|
|
@Transactional
|
public void deleteBanners(final long[] rbids) {
|
superRecommendBannerService.deleteSuperRecommendBanners(rbids);
|
recommendBannerDao.excute(new HibernateCallback() {
|
public Object doInHibernate(Session session)
|
throws HibernateException {
|
|
StringBuffer sb = new
|
// StringBuffer("delete b,j from yeshi_ec_recommend_banner b left join yeshi_ec_action_jumpdetail j on b.jumpid=j.id ");
|
StringBuffer("delete b from yeshi_ec_recommend_banner b ");
|
for (int i = 0; i < rbids.length; i++) {
|
if(i==0){
|
sb.append(" where b.id=? ");
|
}else{
|
sb.append(" or b.id=?");
|
}
|
}
|
Query query = session.createSQLQuery(sb.toString());
|
for (int i = 0; i < rbids.length; i++) {
|
query.setLong(i, rbids[i]);
|
}
|
query.executeUpdate();
|
return null;
|
}
|
});
|
}
|
|
public RecommendBanner getRecommendBanner(long id) {
|
RecommendBanner banner = recommendBannerDao.find(RecommendBanner.class, id);
|
return banner;
|
}
|
|
public void updateBanner(RecommendBanner banner) {
|
recommendBannerDao.update(banner);
|
}
|
|
public int getCount(String platform, String packages, final String key) {
|
platform = Utils.getMap().get(platform);
|
final BusinessSystem system = businessSystemService.getBusinessSystem(platform, packages);
|
return (Integer) recommendBannerDao.excute(new HibernateCallback<Integer>() {
|
|
public Integer doInHibernate(Session session)
|
throws HibernateException {
|
String k = "%"+key+"%";
|
Query query;
|
if(system==null){
|
// query = session.createSQLQuery("select count(a.name) from (select name from yeshi_ec_recommend_banner where `name` like ?) a");
|
query=session.createQuery("select count(rb.id) from RecommendBanner rb where rb.name like ? ");
|
query.setParameter(0, k);
|
}else{
|
// query =session.createSQLQuery("select count(a.name) from (select hs.name from yeshi_ec_super_recommendbanner shs left join yeshi_ec_recommend_banner hs on shs.recommendbanner_id=hs.id where shs.system_id=? and hs.name like ?) a");
|
query=session.createQuery("select count(srb.id) from SuperRecommendBanner srb where srb.system.id = ? and srb.recommendBanner.name like ?");
|
query.setParameter(0, system.getId());
|
query.setParameter(1, k);
|
}
|
Long result = (Long) query.uniqueResult();
|
int intValue = result.intValue();
|
return intValue;
|
}
|
});
|
}
|
|
public void updateBannerJumpDetail(final long id) {
|
recommendBannerDao.excute(new HibernateCallback() {
|
|
public Object doInHibernate(Session session)
|
throws HibernateException {
|
Query query = session.createQuery("update RecommendBanner rb set rb.jumpDetail.id = NULL where rb.jumpDetail.id = ?");
|
query.setParameter(0, id);
|
return query.executeUpdate();
|
}
|
});
|
}
|
}
|