package com.yeshi.fanli.service.impl.user; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collections; import java.util.List; import javax.annotation.Resource; import org.hibernate.HibernateException; import org.hibernate.SQLQuery; import org.hibernate.Session; import org.springframework.orm.hibernate4.HibernateCallback; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.yeshi.fanli.dao.mybatis.user.ShamUserMapper; import com.yeshi.fanli.dao.user.ShamUserDao; import com.yeshi.fanli.entity.bus.user.ShamUser; import com.yeshi.fanli.service.inter.config.ConfigService; import com.yeshi.fanli.service.inter.user.ShamUserService; import com.yeshi.fanli.util.StringUtil; import net.sf.json.JSONArray; @Service public class ShamUserServiceImpl implements ShamUserService { @Resource private ShamUserDao dao; @Resource private ShamUserMapper shamUserMapper; @Resource private ConfigService configService; @Transactional public void addShamUser(ShamUser shamUser) { dao.save(shamUser); } public List getAll() { return dao.list("from ShamUser"); } @SuppressWarnings("unchecked") public List findShamUserList(int sum){ return (List) dao.excute(new HibernateCallback>() { public List doInHibernate(Session session) throws HibernateException { SQLQuery query = session.createSQLQuery("SELECT * FROM yeshi_ec_sham_user").addEntity(ShamUser.class); query.setFirstResult(0); query.setMaxResults(sum); List list = query.list(); return list; } }); } @Transactional public void delete(final long id) { dao.excute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { session.createQuery(" delete ShamUser su where su.id = ? ").setParameter(0, id).executeUpdate(); return null; } }); } @Override public int deleteByPrimaryKey(Long id) { return shamUserMapper.deleteByPrimaryKey(id); } @Override public int insert(ShamUser record) { return shamUserMapper.insert(record); } @Override public int insertSelective(ShamUser record) { return shamUserMapper.insertSelective(record); } @Override public ShamUser selectByPrimaryKey(Long id) { return shamUserMapper.selectByPrimaryKey(id); } @Override public int updateByPrimaryKeySelective(ShamUser record) { return shamUserMapper.updateByPrimaryKeySelective(record); } @Override public int updateByPrimaryKey(ShamUser record) { return shamUserMapper.updateByPrimaryKey(record); } @Override public List listDistinctPicUrl(long start, int count) { return shamUserMapper.listByDistinctPicUrl(start, count); } @Override public int insertBatch(List list) { return shamUserMapper.insertBatch(list); } @Override public int updateBatchSelective(List list) { return shamUserMapper.updateBatchSelective(list); } @Override public List listRandCouponUser(int count, int smallTime, int largeTime) { List listTime = new ArrayList(); while (listTime.size() < count) { int time = smallTime + (int) (Math.random() * (largeTime - smallTime + 1)); if (!listTime.contains(Integer.valueOf(time))) { listTime.add(Integer.valueOf(time)); } } Collections.sort(listTime); List listRand = shamUserMapper.listRand(count); for (int i = 1; i <= count; i++) { ShamUser shamUser = (ShamUser) listRand.get(i - 1); transformId(shamUser); shamUser.setMsg(listTime.get(listTime.size() - i) + "秒前领券购买了这个商品"); } return listRand; } @Override public List listRandShareUser(int count, BigDecimal shareMoney, int small, int large) { List listMultiple = new ArrayList(); while (listMultiple.size() < count) { int Multiple = small + (int) (Math.random() * (large - small + 1)); listMultiple.add(Integer.valueOf(Multiple)); } List imgList = new ArrayList(); String value = configService.get("shareBonusPicture"); if (!StringUtil.isNullOrEmpty(value)) { JSONArray array = JSONArray.fromObject(value); if (array != null) { for (int n = 0; n < array.size(); n++) { imgList.add(array.optString(n)); } } } List listRand = shamUserMapper.listRand(count); for (int i = 0; i < count; i++) { ShamUser shamUser = (ShamUser) listRand.get(i); transformId(shamUser); if (imgList.size() > 0) { int randBonusPic = (int) (Math.random() * imgList.size()); shamUser.setShareBonusPic((String) imgList.get(randBonusPic)); } BigDecimal money = shareMoney.multiply(new BigDecimal(((Integer) listMultiple.get(i)).intValue())).setScale(2, 1); // 必须包含 【奖金¥】 这3个符号, 用于前端颜色区分 shamUser.setMsg("分享了这个商品,累计获得奖金¥" + money); } return listRand; } public void transformId(ShamUser shamUser) { String id = shamUser.getId() + ""; if (id.length() == 1) { shamUser.setShowId("2****" + id); } else { shamUser.setShowId(id.substring(0, 1) + "****" + id.substring(id.length() - 2, id.length() - 1)); } } }