package com.yeshi.fanli.service.impl.hongbao;
|
|
import java.io.Serializable;
|
import java.util.ArrayList;
|
import java.util.Collection;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
import javax.annotation.Resource;
|
|
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.hongbao.HongBaoActivityDao;
|
import com.yeshi.fanli.entity.admin.HongBaoActivityAdmin;
|
import com.yeshi.fanli.entity.bus.su.hongbao.SuperHongBaoActivity;
|
import com.yeshi.fanli.entity.bus.user.HongBaoActivity;
|
import com.yeshi.fanli.entity.system.BusinessSystem;
|
import com.yeshi.fanli.exception.NotExistObjectException;
|
import com.yeshi.fanli.service.inter.config.BusinessSystemService;
|
import com.yeshi.fanli.service.inter.hongbao.HongBaoActivityService;
|
import com.yeshi.fanli.service.inter.hongbao.SuperHongBaoActivityService;
|
import com.yeshi.fanli.util.Constant;
|
import com.yeshi.fanli.util.Utils;
|
|
@Service
|
public class HongBaoActivityServiceImpl implements HongBaoActivityService {
|
|
@Resource
|
private HongBaoActivityDao hongBaoActivityDao;
|
|
@Resource
|
private BusinessSystemService businessSystemService;
|
|
@Resource
|
private SuperHongBaoActivityService superHongBaoActivityService;
|
|
public void addHongBaoActivity(HongBaoActivity hongBaoActivity) {
|
hongBaoActivity.setCreatetime(java.lang.System.currentTimeMillis());
|
hongBaoActivityDao.create(hongBaoActivity);
|
}
|
|
@SuppressWarnings("unchecked")
|
public List<HongBaoActivityAdmin> getHongBaoActivitys(int index,
|
String platform, String packages, String key) {
|
final int strat = index * Constant.PAGE_SIZE;
|
platform = Utils.getMap().get(platform);
|
com.yeshi.fanli.entity.system.BusinessSystem system = businessSystemService.getBusinessSystem(platform, packages);
|
List<HongBaoActivity> hongBaoActivityList=null;
|
List<SuperHongBaoActivity> superHongBaoActivityList=null;
|
Map<Long,HongBaoActivityAdmin> HongBaoActivityAdminMap=new HashMap<Long, HongBaoActivityAdmin>();
|
List<HongBaoActivityAdmin> hongBaoActivityAdmin=new ArrayList<HongBaoActivityAdmin>();
|
if(system == null){
|
if("".equals(key.trim())){
|
hongBaoActivityList = (List<HongBaoActivity>) hongBaoActivityDao.excute(new HibernateCallback<List<HongBaoActivity>>(){
|
public List<HongBaoActivity> doInHibernate(Session session)
|
throws HibernateException {
|
Query query = session.createQuery(" from HongBaoActivity hs");
|
query.setFirstResult(strat);
|
query.setMaxResults(Constant.PAGE_SIZE);
|
return query.list();
|
}
|
});
|
}else{
|
final String likekey = "%"+key+"%";
|
hongBaoActivityList= (List<HongBaoActivity>) hongBaoActivityDao.excute(new HibernateCallback<List<HongBaoActivity>>(){
|
public List<HongBaoActivity> doInHibernate(Session session)
|
throws HibernateException {
|
Query query = session.createQuery(" from HongBaoActivity hs where hs.name like ? ");
|
query.setFirstResult(strat);
|
query.setMaxResults(Constant.PAGE_SIZE);
|
query.setParameter(0, likekey);
|
return query.list();
|
}
|
});
|
}
|
List<Long> hbaIdList = new ArrayList<Long>();
|
for (HongBaoActivity rs : hongBaoActivityList) {
|
hbaIdList.add(rs.getId());
|
}
|
superHongBaoActivityList = superHongBaoActivityService.getSuperHongBaoActivitysByHongBaoActivitys(hbaIdList);
|
Map<Long,List<BusinessSystem>> superMap = new HashMap<Long, List<BusinessSystem>>();
|
Long rsId=null;
|
List<BusinessSystem> systemList=null;
|
for (SuperHongBaoActivity srs : superHongBaoActivityList) {
|
rsId = srs.getHongBaoActivity().getId();
|
systemList = superMap.get(rsId);
|
if(systemList==null){
|
systemList=new ArrayList<BusinessSystem>();
|
}
|
systemList.add(srs.getSystem());
|
superMap.put(rsId,systemList);
|
}
|
HongBaoActivityAdmin rsa=null;
|
for (HongBaoActivity HongBaoActivity : hongBaoActivityList) {
|
long id = HongBaoActivity.getId();
|
rsa = HongBaoActivityAdminMap.get(id);
|
if(rsa==null){
|
rsa=new HongBaoActivityAdmin();
|
}
|
List<BusinessSystem> list = superMap.get(id);
|
if(list != null){
|
rsa.getSystemList().addAll(superMap.get(id));
|
}
|
rsa.setHongBaoActivity(HongBaoActivity);
|
HongBaoActivityAdminMap.put(id, rsa);
|
}
|
}else if(system != null){
|
if("".equals(key.trim())){
|
superHongBaoActivityList = superHongBaoActivityService.getSuperHongBaoActivityBySystemId(system.getId(),strat, Constant.PAGE_SIZE);
|
}else{
|
String likekey = "%"+key+"%";
|
superHongBaoActivityList = superHongBaoActivityService.getSuperHongBaoActivityBySystemId(system.getId(),strat, Constant.PAGE_SIZE,likekey);
|
}
|
List<Long> hsIdList =new ArrayList<Long>();
|
for (SuperHongBaoActivity superHongBaoActivity : superHongBaoActivityList) {
|
HongBaoActivity HongBaoActivity = superHongBaoActivity.getHongBaoActivity();
|
hsIdList.add(HongBaoActivity.getId());
|
}
|
superHongBaoActivityList = superHongBaoActivityService.getSuperHongBaoActivitysByHongBaoActivitys(hsIdList);
|
HongBaoActivityAdmin rsa=null;
|
for (SuperHongBaoActivity superHongBaoActivity : superHongBaoActivityList) {
|
HongBaoActivity hongBaoActivity = superHongBaoActivity.getHongBaoActivity();
|
rsa = HongBaoActivityAdminMap.get(hongBaoActivity.getId());
|
if(rsa==null){
|
rsa=new HongBaoActivityAdmin(hongBaoActivity);
|
}
|
rsa.getSystemList().add(superHongBaoActivity.getSystem());
|
HongBaoActivityAdminMap.put(hongBaoActivity.getId(), rsa);
|
}
|
}
|
Collection<HongBaoActivityAdmin> values = HongBaoActivityAdminMap.values();
|
hongBaoActivityAdmin.addAll(values);
|
return hongBaoActivityAdmin;
|
|
}
|
|
public int getCount(String platform, String packages, String key) {
|
platform = Utils.getMap().get(platform);
|
final BusinessSystem system = businessSystemService.getBusinessSystem(platform, packages);
|
Long lcount;
|
if(system==null){
|
lcount = hongBaoActivityDao.getCount("select count(*) from HongBaoActivity h where h.name like ?",new Serializable[] {"%"+key+"%"});
|
}else{
|
lcount = hongBaoActivityDao.getCount("select count(*) from SuperHongBaoActivity s where s.system.id=? and s.hongBaoActivity.name like ?",new Serializable[]{system.getId(),"%"+key+"%"});
|
}
|
return lcount.intValue();
|
}
|
|
public HongBaoActivity getHongBaoActivity(long id) {
|
HongBaoActivity find = hongBaoActivityDao.find(HongBaoActivity.class, id);
|
return find;
|
}
|
|
public void updateHongBaoActivity(HongBaoActivity hongBaoActivity) throws NotExistObjectException {
|
HongBaoActivity find = hongBaoActivityDao.find(HongBaoActivity.class, hongBaoActivity.getId());
|
if(find==null){
|
throw new NotExistObjectException("不存在该活动");
|
}
|
hongBaoActivity.setCreatetime(find.getCreatetime());
|
hongBaoActivityDao.update(hongBaoActivity);
|
}
|
|
public void deleteHongBaoActivity(long[] ids) {
|
for (long id : ids) {
|
hongBaoActivityDao.delete(new HongBaoActivity(id));
|
}
|
}
|
|
}
|