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.dto.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<ShareManage> 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<ShareManage> 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;
|
}
|
|
}
|