package com.yeshi.fanli.service.impl.user; import java.io.Serializable; import java.math.BigDecimal; import java.util.List; 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 org.springframework.transaction.annotation.Transactional; import com.yeshi.fanli.dao.hongbao.HongBaoDao; import com.yeshi.fanli.dao.user.ShareManageDao; import com.yeshi.fanli.dao.user.UserInfoDao; import com.yeshi.fanli.entity.bus.user.HongBao; import com.yeshi.fanli.entity.bus.user.ShareManage; import com.yeshi.fanli.entity.bus.user.UserInfo; import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService; import com.yeshi.fanli.service.inter.order.OrderService; import com.yeshi.fanli.service.inter.user.ShareManageService; import com.yeshi.fanli.util.Constant; @Service public class ShareManageServiceImpl implements ShareManageService { @Resource private ShareManageDao shareManageDao; @Resource private UserInfoDao userInfoDao; @Resource private OrderService orderService; @Resource private HongBaoManageService hongBaoManageService; @Resource private HongBaoDao hongBaoDao; private static final String HONGBAO_INVITE_MONEY = "hongbao_invite_money"; private static final String HONGBAO_INVITE_UNLOCK_DAY = "hongbao_invite_unlock_day"; private static final String HONGBAO_INVITE_UNLOCK_HOUR = "hongbao_invite_unlock_hour"; @Transactional public int addShareManage(long inviterId, long uid) { if (inviterId == uid) { return -1; } UserInfo inviter = userInfoDao.find(UserInfo.class, inviterId); if (inviter == null) { return 0; } UserInfo invitee = userInfoDao.find(UserInfo.class, uid); if (invitee == null) { return 0; } boolean isfirstOrder = orderService.isfirstOrder(uid); if (!isfirstOrder) { return 2; } List list = shareManageDao.list("from ShareManage sm where sm.invitee.id = ? ", 0, 1, new Serializable[] { uid }); if (list.size() > 0) { return 3; } ShareManage manage = new ShareManage(); manage.setInviter(inviter); manage.setInvitee(invitee); manage.setState(0); shareManageDao.save(manage); return 1; } @Transactional public HongBao setShareHongBao(final long uid) { ShareManage sm = (ShareManage) shareManageDao.excute(new HibernateCallback() { public ShareManage doInHibernate(Session session) throws HibernateException { Query query = session.createQuery("from ShareManage sm where sm.invitee.id = ? and sm.state=0 "); query.setParameter(0, uid); List list = query.list(); if (list.size() > 0) { return list.get(0); } return null; } }); if (sm == null) { return null; } String moneyStr = hongBaoManageService.get(HONGBAO_INVITE_MONEY); BigDecimal money = new BigDecimal(moneyStr); HongBao hb = new HongBao(); hb.setCreatetime(System.currentTimeMillis()); hb.setGetTime(0L); hb.setPreGettime(0L); hb.setHasChild(false); hb.setType(5); hb.setMoney(money); hb.setUserInfo(new UserInfo(sm.getInviter().getId())); long currentTimeMillis = System.currentTimeMillis(); hb.setCreatetime(currentTimeMillis); String dayStr = hongBaoManageService.get(HONGBAO_INVITE_UNLOCK_DAY); String hourStr = hongBaoManageService.get(HONGBAO_INVITE_UNLOCK_HOUR); double day = Double.parseDouble(dayStr); double hour = Double.parseDouble(hourStr); long ms = (long) (day * Constant.DAYMS + hour * Constant.HOURMS + currentTimeMillis); hb.setPreGettime(ms); hb.setState(1); hongBaoDao.save(hb); sm.setState(1); shareManageDao.update(sm); return hb; } }