package com.yeshi.fanli.service.impl.tlj;
|
|
import java.math.BigDecimal;
|
import java.text.SimpleDateFormat;
|
import java.util.Date;
|
import java.util.List;
|
|
import javax.annotation.Resource;
|
|
import org.springframework.core.task.TaskExecutor;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import com.yeshi.fanli.dao.mybatis.tlj.UserTaoLiJinOriginMapper;
|
import com.yeshi.fanli.dto.msg.MsgOtherGiveContentDTO;
|
import com.yeshi.fanli.dto.msg.MsgOtherTaoLiJinContentDTO;
|
import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinDetail;
|
import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinDetail.TaoLiJinDetailTypeEnum;
|
import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinGiveRecord;
|
import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinOrigin;
|
import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinOrigin.TaoLiJinOriginEnum;
|
import com.yeshi.fanli.exception.tlj.UserTaoLiJinOriginException;
|
import com.yeshi.fanli.log.LogHelper;
|
import com.yeshi.fanli.service.inter.money.UserMoneyExtraService;
|
import com.yeshi.fanli.service.inter.msg.UserOtherMsgNotificationService;
|
import com.yeshi.fanli.service.inter.tlj.ConfigTaoLiJinService;
|
import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinDetailService;
|
import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinOriginService;
|
import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinRecordService;
|
import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinReportService;
|
import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
|
|
@Service
|
public class UserTaoLiJinOriginServiceImpl implements UserTaoLiJinOriginService {
|
|
@Resource(name = "taskExecutor")
|
private TaskExecutor executor;
|
|
@Resource
|
private UserTaoLiJinOriginMapper userTaoLiJinOriginMapper;
|
|
@Resource
|
private UserMoneyExtraService userMoneyExtraService;
|
|
@Resource
|
private UserInfoExtraService userInfoExtraService;
|
|
@Resource
|
private UserTaoLiJinDetailService userTaoLiJinDetailService;
|
|
@Resource
|
private UserOtherMsgNotificationService userOtherMsgNotificationService;
|
|
@Resource
|
private ConfigTaoLiJinService configTaoLiJinService;
|
|
@Resource
|
private UserTaoLiJinRecordService userTaoLiJinRecordService;
|
|
@Resource
|
private UserTaoLiJinReportService userTaoLiJinReportService;
|
|
@Override
|
public void updateByPrimaryKeySelective(UserTaoLiJinOrigin record) {
|
userTaoLiJinOriginMapper.updateByPrimaryKeySelective(record);
|
}
|
|
@Override
|
public BigDecimal countMoneyByDate(long uid, int dateType) {
|
return userTaoLiJinOriginMapper.countMoneyByDate(uid, dateType);
|
}
|
|
@Override
|
public long countByUidAndOrigin(long uid, String origin) {
|
return userTaoLiJinOriginMapper.countByUidAndOrigin(uid, origin);
|
}
|
|
@Override
|
public UserTaoLiJinOrigin getByUidAndOrigin(long uid, String origin) {
|
return userTaoLiJinOriginMapper.getByUidAndOrigin(uid, origin);
|
}
|
|
@Override
|
public UserTaoLiJinOrigin getRankByThisMonth(long uid, String type) {
|
return userTaoLiJinOriginMapper.getRankByThisMonth(uid, type);
|
}
|
|
@Override
|
public List<UserTaoLiJinOrigin> getSurplusLiJin(long uid) {
|
return userTaoLiJinOriginMapper.getSurplusLiJin(uid);
|
}
|
|
@Override
|
@Transactional
|
public UserTaoLiJinOrigin receiveFriendsGive(Long uid, BigDecimal money) throws UserTaoLiJinOriginException {
|
if (uid == null || money == null) {
|
throw new UserTaoLiJinOriginException(1, "参数不能为空");
|
}
|
|
// 添加红包余额
|
userMoneyExtraService.addTaoLiJin(uid, money, false);
|
// 添加新增记录
|
UserTaoLiJinOrigin origin = saveOrigin(uid, 1, money, TaoLiJinOriginEnum.friendsGive);
|
// 红包明细
|
userTaoLiJinDetailService.createAddDetail(origin);
|
// 消息
|
executor.execute(new Runnable() {
|
@Override
|
public void run() {
|
try {
|
MsgOtherTaoLiJinContentDTO content = new MsgOtherTaoLiJinContentDTO();
|
content.setState("红包增加");
|
content.setSource("好友赠送");
|
content.setMoney(money);
|
userOtherMsgNotificationService.taoLiJinMsg(uid, "", content);
|
} catch (Exception e) {
|
LogHelper.errorDetailInfo(e);
|
}
|
}
|
});
|
return origin;
|
}
|
|
@Override
|
@Transactional
|
public void giveSendBack(Long uid, UserTaoLiJinGiveRecord record) throws UserTaoLiJinOriginException {
|
if (uid == null || record == null) {
|
throw new UserTaoLiJinOriginException(1, "参数不能为空");
|
}
|
|
BigDecimal money = record.getAmount();
|
|
// 添加红包余额
|
userMoneyExtraService.addTaoLiJin(uid, money, false);
|
// 添加新增记录
|
saveOrigin(uid, 1, money, TaoLiJinOriginEnum.giveSendBack);
|
// 红包明细
|
UserTaoLiJinDetail detail = new UserTaoLiJinDetail();
|
detail.setUid(uid);
|
detail.setMoney(money);
|
detail.setType(TaoLiJinDetailTypeEnum.giveBack);
|
detail.setTitle(TaoLiJinDetailTypeEnum.giveBack.getDesc());
|
detail.setCreateTime(new Date());
|
userTaoLiJinDetailService.insertSelective(detail);
|
|
executor.execute(new Runnable() {
|
@Override
|
public void run() {
|
// 退回消息
|
String beiZhu = "请到我的-推广红包查看";
|
SimpleDateFormat sd = new SimpleDateFormat("yyyy.MM.dd HH:mm");
|
MsgOtherGiveContentDTO msgOther = new MsgOtherGiveContentDTO();
|
msgOther.setType(MsgOtherGiveContentDTO.TYEP_TLJ);
|
msgOther.setTitle("推广红包退回");
|
msgOther.setGiveType("你赠送的¥" + money + "元推广红包未被领取");
|
msgOther.setGiveTime(sd.format(record.getGiveTime()));
|
msgOther.setReturnTime(sd.format(new Date()));
|
userOtherMsgNotificationService.tokenGiveMsg(record.getGiveUid(), beiZhu, msgOther);
|
}
|
});
|
}
|
|
// 添加新增记录
|
public UserTaoLiJinOrigin saveOrigin(Long uid, int type, BigDecimal money, TaoLiJinOriginEnum originEnum) {
|
UserTaoLiJinOrigin taoLiJinOrigin = new UserTaoLiJinOrigin();
|
taoLiJinOrigin.setUid(uid);
|
taoLiJinOrigin.setType(type);
|
taoLiJinOrigin.setOrigin(originEnum);
|
taoLiJinOrigin.setMoney(money);
|
taoLiJinOrigin.setMoneySurplus(money);
|
taoLiJinOrigin.setCreateTime(new Date());
|
taoLiJinOrigin.setUpdateTime(new Date());
|
taoLiJinOrigin.setRemark(originEnum.getDesc());
|
userTaoLiJinOriginMapper.insertSelective(taoLiJinOrigin);
|
return taoLiJinOrigin;
|
}
|
|
}
|