package com.yeshi.fanli.service.impl.hongbao;
|
|
import java.math.BigDecimal;
|
import java.util.ArrayList;
|
import java.util.Calendar;
|
import java.util.Date;
|
import java.util.HashMap;
|
import java.util.HashSet;
|
import java.util.Iterator;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.Set;
|
|
import javax.annotation.Resource;
|
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import com.yeshi.fanli.dao.mybatis.HongBaoV2Mapper;
|
import com.yeshi.fanli.dao.mybatis.order.CommonOrderGoodsMapper;
|
import com.yeshi.fanli.dao.mybatis.order.CommonOrderMapper;
|
import com.yeshi.fanli.dao.mybatis.order.HongBaoOrderMapper;
|
import com.yeshi.fanli.dao.mybatis.order.OrderMapper;
|
import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoOrderMapper;
|
import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoWeiQuanOrderMapper;
|
import com.yeshi.fanli.dto.HongBao;
|
import com.yeshi.fanli.dto.HongBaoDTO;
|
import com.yeshi.fanli.entity.bus.msg.MsgOrderDetail;
|
import com.yeshi.fanli.entity.bus.user.HongBaoV2;
|
import com.yeshi.fanli.entity.bus.user.ThreeSale;
|
import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo;
|
import com.yeshi.fanli.entity.bus.user.UserInfo;
|
import com.yeshi.fanli.entity.order.CommonOrder;
|
import com.yeshi.fanli.entity.order.CommonOrderGoods;
|
import com.yeshi.fanli.entity.order.HongBaoOrder;
|
import com.yeshi.fanli.entity.order.ShareGoodsActivityOrder;
|
import com.yeshi.fanli.entity.taobao.TaoBaoOrder;
|
import com.yeshi.fanli.exception.HongBaoException;
|
import com.yeshi.fanli.exception.order.ShareGoodsActivityOrderException;
|
import com.yeshi.fanli.exception.share.UserShareGoodsRecordException;
|
import com.yeshi.fanli.log.LogHelper;
|
import com.yeshi.fanli.service.inter.config.ConfigService;
|
import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
|
import com.yeshi.fanli.service.inter.hongbao.HongBaoV2Service;
|
import com.yeshi.fanli.service.inter.hongbao.ThreeSaleSerivce;
|
import com.yeshi.fanli.service.inter.msg.UserOrderMsgNotificationService;
|
import com.yeshi.fanli.service.inter.order.CommonOrderService;
|
import com.yeshi.fanli.service.inter.order.ShareGoodsActivityOrderService;
|
import com.yeshi.fanli.service.inter.user.UserExtraTaoBaoInfoService;
|
import com.yeshi.fanli.service.inter.user.UserInfoService;
|
import com.yeshi.fanli.service.inter.user.UserNotificationService;
|
import com.yeshi.fanli.service.inter.user.UserShareGoodsGroupService;
|
import com.yeshi.fanli.service.inter.user.UserSystemCouponRecordService;
|
import com.yeshi.fanli.service.inter.user.UserSystemCouponService;
|
import com.yeshi.fanli.util.Constant;
|
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
|
import com.yeshi.fanli.util.StringUtil;
|
import com.yeshi.fanli.util.TimeUtil;
|
|
@Service
|
public class HongBaoV2ServiceImpl implements HongBaoV2Service {
|
|
@Resource
|
private HongBaoV2Mapper hongBaoV2Mapper;
|
|
@Resource
|
private TaoBaoOrderMapper taoBaoOrderMapper;
|
|
@Resource
|
private CommonOrderMapper commonOrderMapper;
|
|
@Resource
|
private CommonOrderGoodsMapper commonOrderGoodsMapper;
|
|
@Resource
|
private HongBaoOrderMapper hongBaoOrderMapper;
|
|
@Resource
|
private OrderMapper orderMapper;
|
|
@Resource
|
private CommonOrderService commonOrderService;
|
|
@Resource
|
private UserInfoService userInfoService;
|
|
@Resource
|
private TaoBaoWeiQuanOrderMapper taoBaoWeiQuanOrderMapper;
|
|
@Resource
|
private UserShareGoodsGroupService userShareGoodsGroupService;
|
|
@Resource
|
private HongBaoManageService hongBaoManageService;
|
|
@Resource
|
private ThreeSaleSerivce threeSaleSerivce;
|
|
@Resource
|
private UserNotificationService userNotificationService;
|
|
@Resource
|
private UserOrderMsgNotificationService userOrderMsgNotificationService;
|
|
@Resource
|
private ConfigService configService;
|
|
@Resource
|
private ShareGoodsActivityOrderService shareGoodsActivityOrderService;
|
|
@Resource
|
private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService;
|
|
@Resource
|
private UserSystemCouponService userSystemCouponService;
|
|
@Resource
|
private UserSystemCouponRecordService userSystemCouponRecordService;
|
|
@Override
|
public int insert(HongBaoV2 record) {
|
return hongBaoV2Mapper.insert(record);
|
}
|
|
@Override
|
public int insertSelective(HongBaoV2 record) {
|
return hongBaoV2Mapper.insertSelective(record);
|
}
|
|
@Override
|
public int updateByPrimaryKeySelective(HongBaoV2 record) {
|
return hongBaoV2Mapper.updateByPrimaryKeySelective(record);
|
}
|
|
@Override
|
public int updateByPrimaryKey(HongBaoV2 record) {
|
return hongBaoV2Mapper.updateByPrimaryKey(record);
|
}
|
|
@Override
|
public int deleteByPrimaryKey(Long id) {
|
return hongBaoV2Mapper.deleteByPrimaryKey(id);
|
}
|
|
@Override
|
public HongBaoV2 selectByPrimaryKey(Long id) {
|
return hongBaoV2Mapper.selectByPrimaryKey(id);
|
}
|
|
@Transactional
|
@Override
|
public void addHongBao(List<CommonOrder> commonOrderList, int type) throws HongBaoException {
|
Set<Integer> stateSet = new HashSet<>();// 订单状态Set
|
if (commonOrderList != null && commonOrderList.size() > 0) {
|
Map<Integer, HongBaoOrder> notificationMap = new HashMap<>();
|
int goodsCount = 0;
|
boolean hasAdd = false;
|
for (CommonOrder commonOrder : commonOrderList) {
|
stateSet.add(commonOrder.getState());
|
goodsCount += commonOrder.getCount();
|
if (commonOrder == null || commonOrder.getId() == null || commonOrder.getUserInfo() == null)
|
throw new HongBaoException(1, "订单信息不完整");
|
HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(commonOrder.getId());
|
if (hongBaoOrder == null) {
|
saveHongBao(commonOrder, type, notificationMap);
|
hasAdd = true;
|
} else {
|
updateHongBao(hongBaoOrder, commonOrder, type, notificationMap);
|
}
|
}
|
/**
|
* 通知用户的返利情况
|
*/
|
int state = getOrderState(stateSet);
|
if (hasAdd) {
|
Iterator<Integer> its = notificationMap.keySet().iterator();
|
while (its.hasNext()) {
|
Integer t = its.next();
|
HongBaoV2 notify = notificationMap.get(t).getHongBaoV2();
|
CommonOrder commonOrder = notificationMap.get(t).getCommonOrder();
|
String orderId = commonOrderList.get(0).getOrderNo();
|
Long uid = notify.getUserInfo().getId();
|
BigDecimal money = notify.getMoney();
|
switch (t) {
|
case HongBaoV2.TYPE_ZIGOU:
|
userNotificationService.orderFanliStatisticed(uid, orderId, goodsCount, MsgOrderDetail.STATE_FK,
|
null, money);
|
userOrderMsgNotificationService.orderFanLiStatistic(uid, orderId, commonOrder.getPayment(),
|
money, goodsCount, state);
|
break;
|
case HongBaoV2.TYPE_SHARE_GOODS:
|
userNotificationService.orderShareStatisticed(uid, orderId, goodsCount, MsgOrderDetail.STATE_FK,
|
null, money);
|
userOrderMsgNotificationService.orderShareStatistic(uid, orderId, commonOrder.getPayment(),
|
money, goodsCount, state);
|
break;
|
case HongBaoV2.TYPE_YIJI:
|
userNotificationService.orderInviteStatisticed(uid, orderId, goodsCount,
|
MsgOrderDetail.STATE_FK, null, money);
|
userOrderMsgNotificationService.orderInviteStatistic(uid, orderId, commonOrder.getPayment(),
|
money, goodsCount, state);
|
break;
|
case HongBaoV2.TYPE_ERJI:
|
userNotificationService.orderInviteStatisticed(uid, orderId, goodsCount,
|
MsgOrderDetail.STATE_FK, null, money);
|
userOrderMsgNotificationService.orderInviteStatistic(uid, orderId, commonOrder.getPayment(),
|
money, goodsCount, state);
|
break;
|
|
case HongBaoV2.TYPE_SHARE_YIJI:
|
userOrderMsgNotificationService.orderShareFirstLevelStatistic(uid, orderId,
|
commonOrder.getPayment(), money, goodsCount, state, notify.getBeizhu());
|
break;
|
}
|
}
|
}
|
|
// 添加新版本通知
|
|
if (!hasAdd) {
|
Iterator<Integer> its = notificationMap.keySet().iterator();
|
while (its.hasNext()) {
|
Integer t = its.next();
|
HongBaoV2 notify = notificationMap.get(t).getHongBaoV2();
|
CommonOrder commonOrder = notificationMap.get(t).getCommonOrder();
|
String orderId = commonOrderList.get(0).getOrderNo();
|
Long uid = notify.getUserInfo().getId();
|
BigDecimal money = notify.getMoney();
|
switch (t) {
|
case HongBaoV2.TYPE_ZIGOU:
|
userOrderMsgNotificationService.orderFanLiStateChanged(uid, orderId, commonOrder.getPayment(),
|
money, state);
|
break;
|
case HongBaoV2.TYPE_SHARE_GOODS:
|
userOrderMsgNotificationService.orderShareStateChanged(uid, orderId, commonOrder.getPayment(),
|
money, state);
|
break;
|
case HongBaoV2.TYPE_YIJI:
|
userOrderMsgNotificationService.orderInviteStateChanged(uid, orderId, commonOrder.getPayment(),
|
money, state);
|
break;
|
case HongBaoV2.TYPE_ERJI:
|
userOrderMsgNotificationService.orderInviteStateChanged(uid, orderId, commonOrder.getPayment(),
|
money, state);
|
break;
|
case HongBaoV2.TYPE_SHARE_YIJI:
|
userOrderMsgNotificationService.orderShareFirstLevelStateChanged(uid, orderId,
|
commonOrder.getPayment(), money, state);
|
}
|
}
|
}
|
}
|
|
}
|
|
private int getOrderState(Set<Integer> states) {
|
if (states.size() == 1)
|
return states.iterator().next();
|
Iterator<Integer> its = states.iterator();
|
while (its.hasNext()) {
|
int tempState = its.next();
|
if (tempState == CommonOrder.STATE_FK)
|
return CommonOrder.STATE_FK;
|
else if (tempState == CommonOrder.STATE_JS)
|
return CommonOrder.STATE_JS;
|
}
|
return CommonOrder.STATE_SX;
|
}
|
|
@Transactional
|
private void updateHongBao(HongBaoOrder hongBaoOrder, CommonOrder commonOrder, int type,
|
Map<Integer, HongBaoOrder> notificationMap) throws HongBaoException {
|
System.out.println(commonOrder.getOrderNo());
|
HongBaoV2 oldHongBao = hongBaoV2Mapper.selectByPrimaryKey(hongBaoOrder.getHongBaoV2().getId());
|
if (oldHongBao == null)
|
throw new HongBaoException(10, "红包对象不存在");
|
// 已经失效或者已经领取的红包不做处理
|
if (oldHongBao.getState() == HongBaoV2.STATE_SHIXIAO || oldHongBao.getState() == HongBaoV2.STATE_YILINGQU)
|
return;
|
|
if (type == HongBaoV2.TYPE_ZIGOU) {// 获取自购的返利比例
|
BigDecimal fanliRate = hongBaoManageService.getFanLiRate(commonOrder.getCreateTime().getTime());
|
// 免单处理
|
boolean mianDan = false;
|
List<CommonOrder> orderList = commonOrderService.listBySourceTypeAndOrderId(Constant.SOURCE_TYPE_TAOBAO,
|
commonOrder.getOrderNo());
|
if (orderList != null && orderList.size() == 1) {// 只有1个订单才参与免单
|
BigDecimal payMent = commonOrder.getPayment();
|
if (commonOrder.getState() == CommonOrder.STATE_JS)
|
payMent = commonOrder.getSettlement();
|
|
if (payMent.compareTo(new BigDecimal(10)) < 0) {
|
mianDan = userSystemCouponRecordService.isSuccessMianDan(commonOrder.getOrderNo());
|
}
|
}
|
|
HongBaoV2 hongBao = new HongBaoV2(hongBaoOrder.getHongBaoV2().getId());
|
hongBao.setUpdateTime(new Date());
|
// 更改状态与资金
|
if (commonOrder.getState() == CommonOrder.STATE_FK) {
|
hongBao.setState(HongBaoV2.STATE_BUKELINGQU);
|
hongBao.setMoney(
|
MoneyBigDecimalUtil.mul(commonOrder.getEstimate(), fanliRate.divide(new BigDecimal(100))));
|
if (mianDan)
|
hongBao.setMoney(commonOrder.getPayment());
|
} else if (commonOrder.getState() == CommonOrder.STATE_JS) {
|
hongBao.setState(HongBaoV2.STATE_KELINGQU);
|
hongBao.setMoney(
|
MoneyBigDecimalUtil.mul(commonOrder.geteIncome(), fanliRate.divide(new BigDecimal(100))));
|
hongBao.setPreGetTime(new Date(commonOrder.getSettleTime().getTime() + 1000 * 60 * 60 * 24 * 15L));
|
if (mianDan)
|
hongBao.setMoney(commonOrder.getSettlement().compareTo(commonOrder.getPayment()) <= 0
|
? commonOrder.getSettlement() : commonOrder.getPayment());// 返利结算与付款较小的金额
|
} else if (commonOrder.getState() == CommonOrder.STATE_SX) {
|
hongBao.setState(HongBaoV2.STATE_SHIXIAO);
|
hongBao.setMoney(new BigDecimal(0));
|
if (mianDan) {
|
try {
|
userSystemCouponService.updateStateByDrawback(commonOrder.getOrderNo());
|
} catch (Exception e) {
|
e.printStackTrace();
|
throw new HongBaoException(12, "免单券退款出错");
|
}
|
}
|
}
|
hongBaoV2Mapper.updateByPrimaryKeySelective(hongBao);
|
|
// 加入通知
|
if (notificationMap.get(type) == null) {
|
HongBaoV2 tempHongBao = new HongBaoV2(oldHongBao.getId());
|
tempHongBao.setUserInfo(oldHongBao.getUserInfo());
|
tempHongBao.setMoney(hongBao.getMoney());
|
CommonOrder tempCommonOrder = new CommonOrder(commonOrder.getId());
|
tempCommonOrder.setPayment(commonOrder.getPayment());
|
notificationMap.put(type, new HongBaoOrder(tempCommonOrder, tempHongBao));
|
} else {
|
// 增加付款金额与资金
|
HongBaoOrder tempHongBaoOrder = notificationMap.get(type);
|
tempHongBaoOrder.getCommonOrder()
|
.setPayment(tempHongBaoOrder.getCommonOrder().getPayment().add(commonOrder.getPayment()));
|
tempHongBaoOrder.getHongBaoV2()
|
.setMoney(tempHongBaoOrder.getHongBaoV2().getMoney().add(hongBao.getMoney()));
|
notificationMap.put(type, tempHongBaoOrder);
|
}
|
|
// 获取子红包
|
List<HongBaoV2> children = hongBaoV2Mapper.listChildrenById(hongBao.getId());
|
if (children != null && children.size() > 0)
|
for (HongBaoV2 child : children) {
|
HongBaoV2 childUpdate = new HongBaoV2(child.getId());
|
childUpdate.setState(hongBao.getState());
|
childUpdate.setUpdateTime(new Date());
|
BigDecimal rate = null;
|
if (child.getType() == HongBaoV2.TYPE_YIJI) {// 一级分享赚
|
rate = hongBaoManageService.getFirstInviteRate(child.getUrank(),
|
commonOrder.getCreateTime().getTime());
|
} else if (child.getType() == HongBaoV2.TYPE_ERJI) {// 二级分享赚
|
rate = hongBaoManageService.getSecondInviteRate(child.getUrank(),
|
commonOrder.getCreateTime().getTime());
|
}
|
|
// 以实际收入为准计算预估收益
|
if (hongBao.getState() == HongBaoV2.STATE_KELINGQU) {
|
childUpdate.setMoney(
|
MoneyBigDecimalUtil.mul(hongBao.getMoney(), rate.divide(new BigDecimal(100))));
|
Calendar calendar = Calendar.getInstance();
|
calendar.setTime(commonOrder.getSettleTime());
|
calendar.add(Calendar.MONTH, 1);
|
childUpdate.setPreGetTime(new Date(TimeUtil.convertToTimeTemp(
|
calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-25",
|
"yyyy-M-dd")));
|
} else if (hongBao.getState() == HongBaoV2.STATE_BUKELINGQU) {
|
childUpdate.setMoney(
|
MoneyBigDecimalUtil.mul(hongBao.getMoney(), rate.divide(new BigDecimal(100))));
|
}
|
hongBaoV2Mapper.updateByPrimaryKeySelective(childUpdate);
|
|
// 加入通知
|
if (notificationMap.get(child.getType()) == null) {
|
HongBaoV2 tempHongBao = new HongBaoV2(child.getId());
|
tempHongBao.setUserInfo(child.getUserInfo());
|
tempHongBao.setMoney(child.getMoney());
|
CommonOrder tempCommonOrder = new CommonOrder(commonOrder.getId());
|
tempCommonOrder.setPayment(commonOrder.getPayment());
|
notificationMap.put(child.getType(), new HongBaoOrder(tempCommonOrder, tempHongBao));
|
} else {
|
// 增加付款金额与资金
|
HongBaoOrder tempHongBaoOrder = notificationMap.get(child.getType());
|
tempHongBaoOrder.getCommonOrder().setPayment(
|
tempHongBaoOrder.getCommonOrder().getPayment().add(commonOrder.getPayment()));
|
tempHongBaoOrder.getHongBaoV2()
|
.setMoney(tempHongBaoOrder.getHongBaoV2().getMoney().add(child.getMoney()));
|
notificationMap.put(child.getType(), tempHongBaoOrder);
|
}
|
|
}
|
else {// 修复之前二级,三级订单未统计到的情况
|
if (!mianDan) {
|
ThreeSale threeSale = threeSaleSerivce.selectByWorkerId(commonOrder.getUserInfo().getId());
|
if (threeSale != null && threeSale.getSucceedTime() != null
|
&& threeSale.getSucceedTime() <= commonOrder.getThirdCreateTime().getTime()) {
|
UserInfo boss = threeSaleSerivce.getBoss(commonOrder.getUserInfo().getId());
|
// 插入一级子红包
|
BigDecimal firstRate = hongBaoManageService
|
.getFirstInviteRate(boss.getRank() == null ? 0 : boss.getRank());
|
if (firstRate.compareTo(new BigDecimal(0)) <= 0)
|
return;
|
HongBaoV2 firstHongbao = new HongBaoV2();
|
firstHongbao.setUserInfo(boss);
|
firstHongbao.setUrank(boss.getRank());
|
firstHongbao.setParent(hongBao);
|
firstHongbao.setCreateTime(new Date());
|
firstHongbao.setType(HongBaoV2.TYPE_YIJI);
|
firstHongbao.setVersion(2);
|
firstHongbao.setState(hongBao.getState());
|
|
if (hongBao.getState() == HongBaoV2.STATE_KELINGQU) {
|
firstHongbao.setMoney(
|
MoneyBigDecimalUtil.mul(hongBao.getMoney(), firstRate.divide(new BigDecimal(100))));
|
Calendar calendar = Calendar.getInstance();
|
calendar.setTime(commonOrder.getSettleTime());
|
calendar.add(Calendar.MONTH, 1);
|
firstHongbao.setPreGetTime(new Date(TimeUtil.convertToTimeTemp(
|
calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-25",
|
"yyyy-M-dd")));
|
} else if (hongBao.getState() == HongBaoV2.STATE_BUKELINGQU) {
|
firstHongbao.setMoney(
|
MoneyBigDecimalUtil.mul(hongBao.getMoney(), firstRate.divide(new BigDecimal(100))));
|
}
|
hongBaoV2Mapper.insertSelective(firstHongbao);
|
// 用户通知
|
if (notificationMap.get(HongBaoV2.TYPE_YIJI) == null) {
|
HongBaoV2 tempHongBao = new HongBaoV2(firstHongbao.getId());
|
tempHongBao.setUserInfo(firstHongbao.getUserInfo());
|
tempHongBao.setMoney(firstHongbao.getMoney());
|
CommonOrder tempCommonOrder = new CommonOrder(commonOrder.getId());
|
tempCommonOrder.setPayment(commonOrder.getPayment());
|
notificationMap.put(HongBaoV2.TYPE_YIJI, new HongBaoOrder(tempCommonOrder, tempHongBao));
|
} else {
|
// 增加付款金额与资金
|
HongBaoOrder tempHongBaoOrder = notificationMap.get(HongBaoV2.TYPE_YIJI);
|
tempHongBaoOrder.getCommonOrder().setPayment(
|
tempHongBaoOrder.getCommonOrder().getPayment().add(commonOrder.getPayment()));
|
tempHongBaoOrder.getHongBaoV2()
|
.setMoney(tempHongBaoOrder.getHongBaoV2().getMoney().add(firstHongbao.getMoney()));
|
notificationMap.put(HongBaoV2.TYPE_YIJI, tempHongBaoOrder);
|
}
|
|
// 插入二级子红包
|
boss = threeSaleSerivce.getBoss(boss.getId());
|
if (boss != null) {// 二级BOSS存在
|
BigDecimal secondRate = hongBaoManageService
|
.getSecondInviteRate(boss.getRank() == null ? 0 : boss.getRank());
|
if (secondRate.compareTo(new BigDecimal(0)) <= 0)
|
return;
|
HongBaoV2 secondHongbao = new HongBaoV2();
|
secondHongbao.setUserInfo(boss);
|
secondHongbao.setUrank(boss.getRank());
|
secondHongbao.setParent(hongBao);
|
secondHongbao.setCreateTime(new Date());
|
secondHongbao.setType(HongBaoV2.TYPE_ERJI);
|
secondHongbao.setVersion(2);
|
secondHongbao.setState(hongBao.getState());
|
if (hongBao.getState() == HongBaoV2.STATE_KELINGQU) {
|
secondHongbao.setMoney(MoneyBigDecimalUtil.mul(hongBao.getMoney(),
|
secondRate.divide(new BigDecimal(100))));
|
Calendar calendar = Calendar.getInstance();
|
calendar.setTime(commonOrder.getSettleTime());
|
calendar.add(Calendar.MONTH, 1);
|
secondHongbao.setPreGetTime(new Date(TimeUtil.convertToTimeTemp(
|
calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-25",
|
"yyyy-M-dd")));
|
} else if (hongBao.getState() == HongBaoV2.STATE_BUKELINGQU) {
|
secondHongbao.setMoney(MoneyBigDecimalUtil.mul(hongBao.getMoney(),
|
secondRate.divide(new BigDecimal(100))));
|
}
|
hongBaoV2Mapper.insertSelective(secondHongbao);
|
|
// 用户通知
|
if (notificationMap.get(HongBaoV2.TYPE_ERJI) == null) {
|
HongBaoV2 tempHongBao = new HongBaoV2(secondHongbao.getId());
|
tempHongBao.setUserInfo(secondHongbao.getUserInfo());
|
tempHongBao.setMoney(secondHongbao.getMoney());
|
CommonOrder tempCommonOrder = new CommonOrder(commonOrder.getId());
|
tempCommonOrder.setPayment(commonOrder.getPayment());
|
notificationMap.put(HongBaoV2.TYPE_ERJI,
|
new HongBaoOrder(tempCommonOrder, tempHongBao));
|
} else {
|
// 增加付款金额与资金
|
HongBaoOrder tempHongBaoOrder = notificationMap.get(HongBaoV2.TYPE_ERJI);
|
tempHongBaoOrder.getCommonOrder().setPayment(
|
tempHongBaoOrder.getCommonOrder().getPayment().add(commonOrder.getPayment()));
|
tempHongBaoOrder.getHongBaoV2().setMoney(
|
tempHongBaoOrder.getHongBaoV2().getMoney().add(secondHongbao.getMoney()));
|
notificationMap.put(HongBaoV2.TYPE_ERJI, tempHongBaoOrder);
|
}
|
}
|
}
|
}
|
}
|
} else if (type == HongBaoV2.TYPE_SHARE_GOODS) {
|
BigDecimal fanliRate = hongBaoManageService.getShareRate(commonOrder.getCreateTime().getTime());
|
List<ShareGoodsActivityOrder> list = shareGoodsActivityOrderService
|
.listByOrderIdAndUid(commonOrder.getUserInfo().getId(), commonOrder.getOrderNo());
|
if (list != null && list.size() > 0) {
|
fanliRate = list.get(0).getShareRate();
|
}
|
|
HongBaoV2 hongBao = new HongBaoV2(hongBaoOrder.getHongBaoV2().getId());
|
hongBao.setUpdateTime(new Date());
|
// 更改状态与资金
|
if (commonOrder.getState() == CommonOrder.STATE_FK) {
|
hongBao.setState(HongBaoV2.STATE_BUKELINGQU);
|
hongBao.setMoney(
|
MoneyBigDecimalUtil.mul(commonOrder.getEstimate(), fanliRate.divide(new BigDecimal(100))));
|
} else if (commonOrder.getState() == CommonOrder.STATE_JS) {
|
hongBao.setState(HongBaoV2.STATE_KELINGQU);
|
hongBao.setMoney(
|
MoneyBigDecimalUtil.mul(commonOrder.geteIncome(), fanliRate.divide(new BigDecimal(100))));
|
Calendar calendar = Calendar.getInstance();
|
calendar.setTime(commonOrder.getSettleTime());
|
calendar.add(Calendar.MONTH, 1);
|
hongBao.setPreGetTime(new Date(TimeUtil.convertToTimeTemp(
|
calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-25", "yyyy-M-dd")));
|
} else if (commonOrder.getState() == CommonOrder.STATE_SX) {
|
hongBao.setState(HongBaoV2.STATE_SHIXIAO);
|
hongBao.setMoney(new BigDecimal(0));
|
}
|
hongBaoV2Mapper.updateByPrimaryKeySelective(hongBao);
|
// 通知
|
if (notificationMap.get(type) == null) {
|
HongBaoV2 tempHongBao = new HongBaoV2(hongBao.getId());
|
tempHongBao.setUserInfo(hongBaoOrder.getHongBaoV2().getUserInfo());
|
tempHongBao.setMoney(hongBao.getMoney());
|
CommonOrder tempCommonOrder = new CommonOrder(commonOrder.getId());
|
tempCommonOrder.setPayment(commonOrder.getPayment());
|
notificationMap.put(type, new HongBaoOrder(tempCommonOrder, tempHongBao));
|
} else {
|
// 增加付款金额与资金
|
HongBaoOrder tempHongBaoOrder = notificationMap.get(type);
|
tempHongBaoOrder.getCommonOrder()
|
.setPayment(tempHongBaoOrder.getCommonOrder().getPayment().add(commonOrder.getPayment()));
|
tempHongBaoOrder.getHongBaoV2()
|
.setMoney(tempHongBaoOrder.getHongBaoV2().getMoney().add(hongBao.getMoney()));
|
notificationMap.put(type, tempHongBaoOrder);
|
}
|
|
// 获取子红包
|
List<HongBaoV2> children = hongBaoV2Mapper.listChildrenById(hongBao.getId());
|
if (children != null)
|
for (HongBaoV2 child : children) {
|
HongBaoV2 childUpdate = new HongBaoV2(child.getId());
|
// 统一设置状态
|
childUpdate.setState(hongBao.getState());
|
childUpdate.setUpdateTime(new Date());
|
BigDecimal rate = null;
|
if (child.getType() == HongBaoV2.TYPE_SHARE_YIJI) {// 一级分享赚
|
rate = hongBaoManageService.getFirstShareRate(1, commonOrder.getCreateTime().getTime());
|
} else if (child.getType() == HongBaoV2.TYPE_SHARE_ERJI) {// 二级分享赚
|
rate = hongBaoManageService.getSecondShareRate(1, commonOrder.getCreateTime().getTime());
|
}
|
|
// 以实际收入为准计算预估收益
|
if (CommonOrder.STATE_JS == commonOrder.getState()) {
|
childUpdate.setMoney(
|
MoneyBigDecimalUtil.mul(hongBao.getMoney(), rate.divide(new BigDecimal(100))));
|
if (commonOrder.getThirdCreateTime().getTime() > TimeUtil.convertToTimeTemp("2019-04-16",
|
"yyyy-MM-dd"))
|
childUpdate.setMoney(MoneyBigDecimalUtil.mul(commonOrder.geteIncome(),
|
rate.divide(new BigDecimal(100))));
|
|
Calendar calendar = Calendar.getInstance();
|
calendar.setTime(commonOrder.getSettleTime());
|
calendar.add(Calendar.MONTH, 1);
|
childUpdate.setPreGetTime(new Date(TimeUtil.convertToTimeTemp(
|
calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-25",
|
"yyyy-M-dd")));
|
} else if (CommonOrder.STATE_FK == commonOrder.getState()) {
|
if (commonOrder.getThirdCreateTime().getTime() > TimeUtil.convertToTimeTemp("2019-04-16",
|
"yyyy-MM-dd"))
|
childUpdate.setMoney(MoneyBigDecimalUtil.mul(commonOrder.getEstimate(),
|
rate.divide(new BigDecimal(100))));
|
else
|
childUpdate.setMoney(
|
MoneyBigDecimalUtil.mul(hongBao.getMoney(), rate.divide(new BigDecimal(100))));
|
}
|
hongBaoV2Mapper.updateByPrimaryKeySelective(childUpdate);
|
// 添加通知
|
if (notificationMap.get(child.getType()) == null) {
|
HongBaoV2 tempHongBao = new HongBaoV2(child.getId());
|
tempHongBao.setUserInfo(child.getUserInfo());
|
tempHongBao.setMoney(childUpdate.getMoney());
|
CommonOrder tempCommonOrder = new CommonOrder(commonOrder.getId());
|
tempCommonOrder.setPayment(commonOrder.getPayment());
|
notificationMap.put(child.getType(), new HongBaoOrder(tempCommonOrder, tempHongBao));
|
} else {
|
// 增加付款金额与资金
|
HongBaoOrder tempHongBaoOrder = notificationMap.get(child.getType());
|
tempHongBaoOrder.getCommonOrder().setPayment(
|
tempHongBaoOrder.getCommonOrder().getPayment().add(commonOrder.getPayment()));
|
tempHongBaoOrder.getHongBaoV2()
|
.setMoney(tempHongBaoOrder.getHongBaoV2().getMoney().add(childUpdate.getMoney()));
|
notificationMap.put(child.getType(), tempHongBaoOrder);
|
}
|
|
|
}
|
} else
|
throw new HongBaoException(2, "type错误");
|
}
|
|
@Transactional
|
private void saveHongBao(CommonOrder commonOrder, int type, Map<Integer, HongBaoOrder> notificationMap)
|
throws HongBaoException {
|
if (type == HongBaoV2.TYPE_ZIGOU) {// 获取自购的返利比例
|
BigDecimal fanliRate = hongBaoManageService.getFanLiRate(commonOrder.getCreateTime().getTime());
|
// 查询是否有免单计划
|
BigDecimal mianDanMoney = null;
|
if (commonOrder.getState() == CommonOrder.STATE_JS || commonOrder.getState() == CommonOrder.STATE_FK) {
|
List<CommonOrder> orderList = commonOrderService.listBySourceTypeAndOrderId(Constant.SOURCE_TYPE_TAOBAO,
|
commonOrder.getOrderNo());
|
if (orderList != null && orderList.size() == 1) {// 只有1个订单才参与免单
|
BigDecimal payMent = commonOrder.getPayment();
|
if (commonOrder.getState() == CommonOrder.STATE_JS)
|
payMent = commonOrder.getSettlement();
|
|
CommonOrderGoods goods = commonOrderGoodsMapper
|
.selectByPrimaryKey(commonOrder.getCommonOrderGoods().getId());
|
if (goods != null) {
|
|
try {
|
if (userSystemCouponService.updateCouponRecordUsed(commonOrder.getUserInfo().getId(),
|
commonOrder.getOrderNo(), payMent, Long.parseLong(goods.getGoodsId())))
|
mianDanMoney = payMent;
|
} catch (NumberFormatException e) {
|
throw new HongBaoException(10, "免单商品处理出错");
|
} catch (Exception e) {
|
e.printStackTrace();
|
throw new HongBaoException(11, "免单商品处理出错");
|
}
|
}
|
}
|
} else if (commonOrder.getState() == CommonOrder.STATE_SX) {// 设置免单券失效
|
try {
|
userSystemCouponService.updateStateByDrawback(commonOrder.getOrderNo());
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
HongBaoV2 hongBao = new HongBaoV2();
|
hongBao.setUserInfo(commonOrder.getUserInfo());
|
hongBao.setCreateTime(new Date());
|
hongBao.setType(HongBaoV2.TYPE_ZIGOU);
|
hongBao.setVersion(2);
|
if (commonOrder.getState() == CommonOrder.STATE_FK) {
|
hongBao.setState(HongBaoV2.STATE_BUKELINGQU);
|
hongBao.setMoney(
|
MoneyBigDecimalUtil.mul(commonOrder.getEstimate(), fanliRate.divide(new BigDecimal(100))));
|
} else if (commonOrder.getState() == CommonOrder.STATE_JS) {
|
hongBao.setState(HongBaoV2.STATE_KELINGQU);
|
hongBao.setMoney(
|
MoneyBigDecimalUtil.mul(commonOrder.geteIncome(), fanliRate.divide(new BigDecimal(100))));
|
hongBao.setPreGetTime(new Date(commonOrder.getSettleTime().getTime() + 1000 * 60 * 60 * 24 * 15L));
|
} else if (commonOrder.getState() == CommonOrder.STATE_SX) {
|
hongBao.setState(HongBaoV2.STATE_SHIXIAO);
|
hongBao.setMoney(new BigDecimal(0));
|
} else {
|
throw new HongBaoException(3, "维权订单不能创建红包");
|
}
|
|
if (mianDanMoney != null)
|
hongBao.setMoney(mianDanMoney);
|
|
UserInfo user = userInfoService.getUserById(commonOrder.getUserInfo().getId());
|
hongBao.setUrank(user.getRank());
|
hongBaoV2Mapper.insertSelective(hongBao);
|
// 添加红包与订单的映射
|
HongBaoOrder hongBaoOrder = new HongBaoOrder();
|
hongBaoOrder.setCommonOrder(commonOrder);
|
hongBaoOrder.setCreateTime(new Date());
|
hongBaoOrder.setHongBaoV2(hongBao);
|
hongBaoOrderMapper.insertSelective(hongBaoOrder);
|
// 加入通知
|
if (notificationMap.get(type) == null) {
|
HongBaoV2 tempHongBao = new HongBaoV2(hongBao.getId());
|
tempHongBao.setUserInfo(hongBao.getUserInfo());
|
tempHongBao.setMoney(hongBao.getMoney());
|
CommonOrder tempCommonOrder = new CommonOrder(commonOrder.getId());
|
tempCommonOrder.setPayment(commonOrder.getPayment());
|
notificationMap.put(type, new HongBaoOrder(tempCommonOrder, tempHongBao));
|
} else {
|
// 增加付款金额与资金
|
HongBaoOrder tempHongBaoOrder = notificationMap.get(type);
|
tempHongBaoOrder.getCommonOrder()
|
.setPayment(tempHongBaoOrder.getCommonOrder().getPayment().add(commonOrder.getPayment()));
|
tempHongBaoOrder.getHongBaoV2()
|
.setMoney(tempHongBaoOrder.getHongBaoV2().getMoney().add(hongBao.getMoney()));
|
notificationMap.put(type, tempHongBaoOrder);
|
}
|
|
UserInfo boss = threeSaleSerivce.getBoss(user.getId());
|
if (boss != null && hongBao.getState() != HongBaoV2.STATE_SHIXIAO && mianDanMoney == null) {// 1级BOSS存在且红包未失效,免单不支持多级分销
|
|
// 插入一级子红包
|
BigDecimal firstRate = hongBaoManageService
|
.getFirstInviteRate(boss.getRank() == null ? 0 : boss.getRank());
|
if (firstRate.compareTo(new BigDecimal(0)) <= 0)
|
return;
|
HongBaoV2 firstHongbao = new HongBaoV2();
|
firstHongbao.setUserInfo(boss);
|
firstHongbao.setUrank(boss.getRank());
|
firstHongbao.setParent(hongBao);
|
firstHongbao.setCreateTime(new Date());
|
firstHongbao.setType(HongBaoV2.TYPE_YIJI);
|
firstHongbao.setVersion(2);
|
firstHongbao.setState(hongBao.getState());
|
|
if (hongBao.getState() == HongBaoV2.STATE_KELINGQU) {
|
firstHongbao.setMoney(
|
MoneyBigDecimalUtil.mul(hongBao.getMoney(), firstRate.divide(new BigDecimal(100))));
|
Calendar calendar = Calendar.getInstance();
|
calendar.setTime(commonOrder.getSettleTime());
|
calendar.add(Calendar.MONTH, 1);
|
firstHongbao.setPreGetTime(new Date(TimeUtil.convertToTimeTemp(
|
calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-25",
|
"yyyy-M-dd")));
|
} else if (hongBao.getState() == HongBaoV2.STATE_BUKELINGQU) {
|
firstHongbao.setMoney(
|
MoneyBigDecimalUtil.mul(hongBao.getMoney(), firstRate.divide(new BigDecimal(100))));
|
}
|
hongBaoV2Mapper.insertSelective(firstHongbao);
|
// 用户通知
|
if (notificationMap.get(HongBaoV2.TYPE_YIJI) == null) {
|
HongBaoV2 tempHongBao = new HongBaoV2(firstHongbao.getId());
|
tempHongBao.setUserInfo(firstHongbao.getUserInfo());
|
tempHongBao.setMoney(firstHongbao.getMoney());
|
CommonOrder tempCommonOrder = new CommonOrder(commonOrder.getId());
|
tempCommonOrder.setPayment(commonOrder.getPayment());
|
notificationMap.put(HongBaoV2.TYPE_YIJI, new HongBaoOrder(tempCommonOrder, tempHongBao));
|
} else {
|
// 增加付款金额与资金
|
HongBaoOrder tempHongBaoOrder = notificationMap.get(HongBaoV2.TYPE_YIJI);
|
tempHongBaoOrder.getCommonOrder()
|
.setPayment(tempHongBaoOrder.getCommonOrder().getPayment().add(commonOrder.getPayment()));
|
tempHongBaoOrder.getHongBaoV2()
|
.setMoney(tempHongBaoOrder.getHongBaoV2().getMoney().add(firstHongbao.getMoney()));
|
notificationMap.put(HongBaoV2.TYPE_YIJI, tempHongBaoOrder);
|
}
|
|
// 插入二级子红包
|
boss = threeSaleSerivce.getBoss(boss.getId());
|
if (boss != null) {// 二级BOSS存在
|
BigDecimal secondRate = hongBaoManageService
|
.getSecondInviteRate(boss.getRank() == null ? 0 : boss.getRank());
|
if (secondRate.compareTo(new BigDecimal(0)) <= 0)
|
return;
|
HongBaoV2 secondHongbao = new HongBaoV2();
|
secondHongbao.setUserInfo(boss);
|
secondHongbao.setUrank(boss.getRank());
|
secondHongbao.setParent(hongBao);
|
secondHongbao.setCreateTime(new Date());
|
secondHongbao.setType(HongBaoV2.TYPE_ERJI);
|
secondHongbao.setVersion(2);
|
secondHongbao.setState(hongBao.getState());
|
if (hongBao.getState() == HongBaoV2.STATE_KELINGQU) {
|
secondHongbao.setMoney(
|
MoneyBigDecimalUtil.mul(hongBao.getMoney(), secondRate.divide(new BigDecimal(100))));
|
Calendar calendar = Calendar.getInstance();
|
calendar.setTime(commonOrder.getSettleTime());
|
calendar.add(Calendar.MONTH, 1);
|
secondHongbao.setPreGetTime(new Date(TimeUtil.convertToTimeTemp(
|
calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-25",
|
"yyyy-M-dd")));
|
} else if (hongBao.getState() == HongBaoV2.STATE_BUKELINGQU) {
|
secondHongbao.setMoney(
|
MoneyBigDecimalUtil.mul(hongBao.getMoney(), secondRate.divide(new BigDecimal(100))));
|
}
|
hongBaoV2Mapper.insertSelective(secondHongbao);
|
|
// 用户通知
|
if (notificationMap.get(HongBaoV2.TYPE_ERJI) == null) {
|
HongBaoV2 tempHongBao = new HongBaoV2(secondHongbao.getId());
|
tempHongBao.setUserInfo(secondHongbao.getUserInfo());
|
tempHongBao.setMoney(secondHongbao.getMoney());
|
CommonOrder tempCommonOrder = new CommonOrder(commonOrder.getId());
|
tempCommonOrder.setPayment(commonOrder.getPayment());
|
notificationMap.put(HongBaoV2.TYPE_ERJI, new HongBaoOrder(tempCommonOrder, tempHongBao));
|
} else {
|
// 增加付款金额与资金
|
HongBaoOrder tempHongBaoOrder = notificationMap.get(HongBaoV2.TYPE_ERJI);
|
tempHongBaoOrder.getCommonOrder().setPayment(
|
tempHongBaoOrder.getCommonOrder().getPayment().add(commonOrder.getPayment()));
|
tempHongBaoOrder.getHongBaoV2()
|
.setMoney(tempHongBaoOrder.getHongBaoV2().getMoney().add(secondHongbao.getMoney()));
|
notificationMap.put(HongBaoV2.TYPE_ERJI, tempHongBaoOrder);
|
}
|
}
|
|
}
|
|
} else if (type == HongBaoV2.TYPE_SHARE_GOODS) {
|
// 分享赚不加入失效的订单
|
if (commonOrder.getState() == CommonOrder.STATE_SX || commonOrder.getState() == CommonOrder.STATE_WQ)
|
return;
|
// 分享赚
|
BigDecimal shareRate = hongBaoManageService.getShareRate(commonOrder.getCreateTime().getTime());
|
|
// 判断订单分享活动是否开启
|
if ("1".equalsIgnoreCase(configService.get("share_goods_activity_open"))) {
|
// 没有订单,并且是渠道ID来的,并且
|
UserExtraTaoBaoInfo taoBaoExtraInfo = userExtraTaoBaoInfoService
|
.getByUid(commonOrder.getUserInfo().getId());
|
if (taoBaoExtraInfo != null && ((!StringUtil.isNullOrEmpty(taoBaoExtraInfo.getTaoBaoOrderEnd6Num())
|
&& !commonOrder.getOrderNo().endsWith(taoBaoExtraInfo.getTaoBaoOrderEnd6Num().trim()))
|
|| StringUtil.isNullOrEmpty(taoBaoExtraInfo.getTaoBaoOrderEnd6Num()))) {
|
List<TaoBaoOrder> taoBaoOrderList = taoBaoOrderMapper
|
.selectTaoBaoOrderByOrderId(commonOrder.getOrderNo());
|
if (taoBaoOrderList != null && taoBaoOrderList.size() > 0
|
&& !StringUtil.isNullOrEmpty(taoBaoOrderList.get(0).getRelationId())) {
|
if (shareGoodsActivityOrderService.listByUid(commonOrder.getUserInfo().getId()).size() < 1) {
|
shareRate = new BigDecimal(hongBaoManageService.get("share_activity_proportion"));
|
try {
|
shareGoodsActivityOrderService.addShareGoodsActivityOrder(
|
commonOrder.getUserInfo().getId(), shareRate, commonOrder.getOrderNo());
|
} catch (ShareGoodsActivityOrderException e) {
|
try {
|
LogHelper.errorDetailInfo(e);
|
} catch (Exception e1) {
|
e1.printStackTrace();
|
}
|
}
|
}
|
}
|
}
|
}
|
|
HongBaoV2 hongBao = new HongBaoV2();
|
hongBao.setCreateTime(new Date());
|
hongBao.setType(HongBaoV2.TYPE_SHARE_GOODS);
|
hongBao.setVersion(2);
|
if (commonOrder.getState() == CommonOrder.STATE_FK) {
|
hongBao.setState(HongBaoV2.STATE_BUKELINGQU);
|
hongBao.setMoney(
|
MoneyBigDecimalUtil.mul(commonOrder.getEstimate(), shareRate.divide(new BigDecimal(100))));
|
} else if (commonOrder.getState() == CommonOrder.STATE_JS) {
|
hongBao.setState(HongBaoV2.STATE_KELINGQU);
|
hongBao.setMoney(
|
MoneyBigDecimalUtil.mul(commonOrder.geteIncome(), shareRate.divide(new BigDecimal(100))));
|
Calendar calendar = Calendar.getInstance();
|
calendar.setTime(commonOrder.getSettleTime());
|
calendar.add(Calendar.MONTH, 1);
|
hongBao.setPreGetTime(new Date(TimeUtil.convertToTimeTemp(
|
calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-25", "yyyy-M-dd")));
|
}
|
UserInfo user = userInfoService.getUserById(commonOrder.getUserInfo().getId());
|
hongBao.setUrank(user.getRank());
|
hongBao.setUserInfo(user);
|
hongBaoV2Mapper.insertSelective(hongBao);
|
// 插入红包与订单映射
|
HongBaoOrder hongBaoOrder = new HongBaoOrder();
|
hongBaoOrder.setCommonOrder(commonOrder);
|
hongBaoOrder.setCreateTime(new Date());
|
hongBaoOrder.setHongBaoV2(hongBao);
|
hongBaoOrderMapper.insertSelective(hongBaoOrder);
|
|
if (notificationMap.get(type) == null) {
|
HongBaoV2 tempHongBao = new HongBaoV2(hongBao.getId());
|
tempHongBao.setUserInfo(hongBao.getUserInfo());
|
tempHongBao.setMoney(hongBao.getMoney());
|
CommonOrder tempCommonOrder = new CommonOrder(commonOrder.getId());
|
tempCommonOrder.setPayment(commonOrder.getPayment());
|
notificationMap.put(type, new HongBaoOrder(tempCommonOrder, tempHongBao));
|
} else {
|
// 增加付款金额与资金
|
HongBaoOrder tempHongBaoOrder = notificationMap.get(type);
|
tempHongBaoOrder.getCommonOrder()
|
.setPayment(tempHongBaoOrder.getCommonOrder().getPayment().add(commonOrder.getPayment()));
|
tempHongBaoOrder.getHongBaoV2()
|
.setMoney(tempHongBaoOrder.getHongBaoV2().getMoney().add(hongBao.getMoney()));
|
notificationMap.put(type, tempHongBaoOrder);
|
}
|
|
// 4月17日后才有一级分享赚
|
if (commonOrder.getThirdCreateTime().getTime() > TimeUtil.convertToTimeTemp("2019-04-17", "yyyy-MM-dd")) {
|
UserInfo boss = threeSaleSerivce.getBoss(hongBao.getUserInfo().getId());
|
if (boss != null) {
|
BigDecimal firstLevelRate = hongBaoManageService.getFirstShareRate(1,
|
commonOrder.getThirdCreateTime().getTime());
|
HongBaoV2 child = new HongBaoV2();
|
child.setParent(hongBao);
|
child.setType(HongBaoV2.TYPE_SHARE_YIJI);
|
if (commonOrder.getState() == CommonOrder.STATE_FK) {
|
child.setState(HongBaoV2.STATE_BUKELINGQU);
|
child.setMoney(MoneyBigDecimalUtil.mul(commonOrder.getEstimate(),
|
firstLevelRate.divide(new BigDecimal(100))));
|
} else if (commonOrder.getState() == CommonOrder.STATE_JS) {
|
child.setState(HongBaoV2.STATE_KELINGQU);
|
child.setMoney(MoneyBigDecimalUtil.mul(commonOrder.geteIncome(),
|
firstLevelRate.divide(new BigDecimal(100))));
|
Calendar calendar = Calendar.getInstance();
|
calendar.setTime(commonOrder.getSettleTime());
|
calendar.add(Calendar.MONTH, 1);
|
child.setPreGetTime(new Date(TimeUtil.convertToTimeTemp(
|
calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-25",
|
"yyyy-M-dd")));
|
}
|
child.setUserInfo(boss);
|
child.setUrank(boss.getRank());
|
child.setVersion(2);
|
child.setCreateTime(new Date());
|
hongBaoV2Mapper.insertSelective(child);
|
// 添加通知
|
if (notificationMap.get(HongBaoV2.TYPE_SHARE_YIJI) == null) {
|
HongBaoV2 tempHongBao = new HongBaoV2(child.getId());
|
tempHongBao.setUserInfo(child.getUserInfo());
|
tempHongBao.setMoney(child.getMoney());
|
tempHongBao.setBeizhu(hongBao.getUserInfo().getNickName());
|
CommonOrder tempCommonOrder = new CommonOrder(commonOrder.getId());
|
tempCommonOrder.setPayment(commonOrder.getPayment());
|
notificationMap.put(HongBaoV2.TYPE_SHARE_YIJI, new HongBaoOrder(tempCommonOrder, tempHongBao));
|
} else {
|
// 增加付款金额与资金
|
HongBaoOrder tempHongBaoOrder = notificationMap.get(HongBaoV2.TYPE_SHARE_YIJI);
|
tempHongBaoOrder.getCommonOrder().setPayment(
|
tempHongBaoOrder.getCommonOrder().getPayment().add(commonOrder.getPayment()));
|
tempHongBaoOrder.getHongBaoV2()
|
.setMoney(tempHongBaoOrder.getHongBaoV2().getMoney().add(child.getMoney()));
|
notificationMap.put(HongBaoV2.TYPE_SHARE_YIJI, tempHongBaoOrder);
|
}
|
}
|
}
|
|
// 修改统计数据
|
Long goodsId = commonOrder.getCommonOrderGoods().getId();
|
// 查询商品
|
CommonOrderGoods goods = commonOrderGoodsMapper.selectByPrimaryKey(goodsId);
|
|
HongBao hb = new HongBao();
|
if (goods != null)
|
hb.setAuctionId(Long.parseLong(goods.getGoodsId()));
|
hb.setUserInfo(hongBao.getUserInfo());
|
hb.setMoney(hongBao.getMoney());
|
|
try {
|
userShareGoodsGroupService.updateOrderRecord(hb);
|
} catch (UserShareGoodsRecordException e) {
|
try {
|
LogHelper.errorDetailInfo(e);
|
} catch (Exception e1) {
|
e1.printStackTrace();
|
}
|
}
|
|
} else
|
throw new HongBaoException(2, "type错误");
|
}
|
|
@Override
|
public List<HongBaoDTO> listJiangJinByUid(Long uid, int page, int pageSize) {
|
return hongBaoV2Mapper.listJiangJinByUid(uid, (page - 1) * pageSize, pageSize);
|
}
|
|
@Override
|
public long countJiangJinByUid(Long uid) {
|
Long count = hongBaoV2Mapper.countJiangJinByUid(uid);
|
return count == null ? 0 : count;
|
}
|
|
@Override
|
public BigDecimal getTotalTiChengMoney(Long uid) {
|
|
return hongBaoV2Mapper.getTotalTiChengMoney(uid);
|
}
|
|
@Override
|
public int getTotalTiChengCount(Long uid) {
|
return hongBaoV2Mapper.getTotalTiChengCount(uid);
|
}
|
|
@Override
|
public BigDecimal getUnGetTiChengMoney(Long uid) {
|
return hongBaoV2Mapper.getUnGetTiChengMoney(uid);
|
}
|
|
@Override
|
public BigDecimal getTotalFanLiMoney(Long uid) {
|
BigDecimal money = hongBaoV2Mapper.getTotalFanLiMoney(uid);
|
return money == null ? new BigDecimal(0) : money;
|
}
|
|
@Override
|
public BigDecimal getUnRecievedFanLiMoney(Long uid) {
|
BigDecimal money = hongBaoV2Mapper.getUnRecievedFanLiMoney(uid);
|
return money == null ? new BigDecimal(0) : money;
|
}
|
|
@Override
|
public BigDecimal getUnRecievedMoneyWithCreateTime(Long uid, Date minDate, Date maxDate) {
|
BigDecimal money = hongBaoV2Mapper.getUnRecievedMoneyWithCreateTime(uid, minDate, maxDate);
|
if (money == null)
|
return new BigDecimal(0);
|
else
|
return money;
|
}
|
|
@Override
|
public BigDecimal getUnRecievedMoneyWithPreGetTime(Long uid, Date minDate, Date maxDate) {
|
BigDecimal money = hongBaoV2Mapper.getUnRecievedMoneyWithPreGetTime(uid, minDate, maxDate);
|
if (money == null)
|
return new BigDecimal(0);
|
else
|
return money;
|
}
|
|
@Override
|
public BigDecimal computeMoneyByUidAndState(Long uid, int state) {
|
List<Integer> stateList = new ArrayList<>();
|
stateList.add(state);
|
BigDecimal money = hongBaoV2Mapper.computeMoneyByUidAndState(uid, stateList);
|
if (money == null)
|
return new BigDecimal(0);
|
else
|
return money;
|
}
|
}
|