| | |
| | | package com.yeshi.fanli.service.impl.order;
|
| | |
|
| | | import java.io.File;
|
| | | import java.io.FileNotFoundException;
|
| | | import java.math.BigDecimal;
|
| | | import java.util.Calendar;
|
| | | import java.util.Date;
|
| | | import java.util.HashMap;
|
| | | import java.util.Iterator;
|
| | | import java.util.List;
|
| | | import java.util.Map;
|
| | | import java.util.Scanner;
|
| | |
|
| | | import javax.annotation.Resource;
|
| | |
|
| | | import org.springframework.jdbc.datasource.DataSourceTransactionManager;
|
| | | import org.springframework.stereotype.Service;
|
| | | import org.springframework.transaction.annotation.Propagation;
|
| | | import org.springframework.transaction.annotation.Transactional;
|
| | |
|
| | | import com.yeshi.fanli.dao.mybatis.HongBaoV2Mapper;
|
| | | import com.yeshi.fanli.dao.mybatis.money.ExtractCheckCompensateMapper;
|
| | | import com.yeshi.fanli.dao.mybatis.order.CommonOrderGoodsMapper;
|
| | | import com.yeshi.fanli.dao.mybatis.order.CommonOrderMapper;
|
| | | import com.yeshi.fanli.dao.mybatis.order.CommonOrderTradeIdMapMapper;
|
| | | import com.yeshi.fanli.dao.mybatis.order.HongBaoOrderMapper;
|
| | | import com.yeshi.fanli.dao.mybatis.order.OrderRepairHistoryMapper;
|
| | | import com.yeshi.fanli.entity.bus.user.HongBaoV2;
|
| | | import com.yeshi.fanli.entity.bus.user.UserInfo;
|
| | | import com.yeshi.fanli.entity.goods.CommonGoods;
|
| | | import com.yeshi.fanli.entity.money.ExtractCheckCompensate;
|
| | | import com.yeshi.fanli.entity.money.UserMoneyDetail;
|
| | | import com.yeshi.fanli.entity.order.CommonOrder;
|
| | | import com.yeshi.fanli.entity.order.CommonOrderGoods;
|
| | | import com.yeshi.fanli.entity.order.CommonOrderTradeIdMap;
|
| | | import com.yeshi.fanli.entity.order.HongBaoOrder;
|
| | | import com.yeshi.fanli.entity.order.OrderRepairHistory;
|
| | | import com.yeshi.fanli.entity.order.ShareGoodsActivityOrder;
|
| | | import com.yeshi.fanli.entity.push.PushInfo;
|
| | | import com.yeshi.fanli.entity.push.PushInfo.PushTypeEnum;
|
| | | import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
|
| | | import com.yeshi.fanli.entity.taobao.TaoBaoOrder;
|
| | | import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder;
|
| | | import com.yeshi.fanli.exception.money.UserMoneyDetailException;
|
| | | import com.yeshi.fanli.exception.order.HongBaoException;
|
| | | import com.yeshi.fanli.exception.push.PushException;
|
| | | import com.yeshi.fanli.exception.push.PushInfoException;
|
| | | import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
|
| | | import com.yeshi.fanli.log.LogHelper;
|
| | | import com.yeshi.fanli.service.inter.goods.CommonGoodsService;
|
| | | import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
|
| | | import com.yeshi.fanli.service.inter.hongbao.HongBaoV2Service;
|
| | | import com.yeshi.fanli.service.inter.money.UserMoneyService;
|
| | | import com.yeshi.fanli.service.inter.money.msg.UserMoneyMsgNotificationService;
|
| | | import com.yeshi.fanli.service.inter.order.CommonOrderService;
|
| | | import com.yeshi.fanli.service.inter.order.HongBaoOrderService;
|
| | | import com.yeshi.fanli.service.inter.order.OrderRepairHistoryService;
|
| | | import com.yeshi.fanli.service.inter.order.OrderRepairService;
|
| | | import com.yeshi.fanli.service.inter.order.ShareGoodsActivityOrderService;
|
| | | import com.yeshi.fanli.service.inter.push.PushInfoService;
|
| | | import com.yeshi.fanli.service.inter.taobao.TaoBaoOrderService;
|
| | | import com.yeshi.fanli.service.inter.taobao.TaoBaoWeiQuanOrderService;
|
| | | import com.yeshi.fanli.service.inter.user.UserInfoService;
|
| | | 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;
|
| | | import com.yeshi.fanli.util.factory.CommonOrderGoodsFactory;
|
| | | import com.yeshi.fanli.util.factory.UserMoneyDetailFactory;
|
| | | import com.yeshi.fanli.util.taobao.TaoBaoOrderUtil;
|
| | | import com.yeshi.fanli.util.taobao.TaoBaoUtil;
|
| | | import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
|
| | |
|
| | | import net.sf.json.JSONObject;
|
| | |
|
| | | @Service
|
| | | public class OrderRepairServiceImpl implements OrderRepairService {
|
| | |
|
| | | @Resource
|
| | | private OrderRepairHistoryMapper orderRepairHistoryMapper;
|
| | |
|
| | | @Resource
|
| | | private TaoBaoOrderService taoBaoOrderService;
|
| | |
|
| | | @Resource
|
| | | private CommonOrderService commonOrderService;
|
| | |
|
| | | @Resource
|
| | | private HongBaoOrderService hongBaoOrderService;
|
| | |
|
| | | @Resource
|
| | | private HongBaoV2Service hongBaoV2Service;
|
| | |
|
| | | @Resource
|
| | | private CommonOrderGoodsMapper commonOrderGoodsMapper;
|
| | |
|
| | | @Resource
|
| | | private CommonGoodsService commonGoodsService;
|
| | |
|
| | | @Resource
|
| | | private HongBaoManageService hongBaoManageService;
|
| | |
|
| | | @Resource
|
| | | private UserSystemCouponRecordService userSystemCouponRecordService;
|
| | |
|
| | | @Resource
|
| | | private HongBaoV2Mapper hongBaoV2Mapper;
|
| | |
|
| | | @Resource
|
| | | private UserSystemCouponService userSystemCouponService;
|
| | |
|
| | | @Resource
|
| | | private ShareGoodsActivityOrderService shareGoodsActivityOrderService;
|
| | |
|
| | | @Resource
|
| | | private CommonOrderMapper commonOrderMapper;
|
| | |
|
| | | @Resource
|
| | | private CommonOrderTradeIdMapMapper commonOrderTradeIdMapMapper;
|
| | |
|
| | | @Resource
|
| | | private UserInfoService userInfoService;
|
| | |
|
| | | @Resource
|
| | | private HongBaoOrderMapper hongBaoOrderMapper;
|
| | |
|
| | | @Resource
|
| | | private OrderRepairHistoryService orderRepairHistoryService;
|
| | |
|
| | | @Resource
|
| | | private DataSourceTransactionManager dataSourceTransactionManager;
|
| | |
|
| | | @Resource
|
| | | private TaoBaoWeiQuanOrderService taoBaoWeiQuanOrderService;
|
| | |
|
| | | @Resource
|
| | | private UserMoneyService userMoneyService;
|
| | |
|
| | | @Resource
|
| | | private PushInfoService pushInfoService;
|
| | |
|
| | | @Resource
|
| | | private UserMoneyMsgNotificationService userMoneyMsgNotificationService;
|
| | |
|
| | | @Resource
|
| | | private ExtractCheckCompensateMapper extractCheckCompensateMapper;
|
| | |
|
| | | @Transactional
|
| | | @Override
|
| | | public void repairOrder(String orderId) throws Exception {
|
| | | // 比较CommonOrder与TaoBaoOrder的预估收益
|
| | | List<TaoBaoOrder> orderList = taoBaoOrderService.getTaoBaoOrderByOrderId(orderId);
|
| | | // 统计
|
| | | BigDecimal sumMoney = new BigDecimal("0");
|
| | | for (TaoBaoOrder order : orderList) {
|
| | | // if (order.getOrderState().equalsIgnoreCase("订单付款") ||
|
| | | // order.getOrderState().equalsIgnoreCase("订单成功"))
|
| | | // return;
|
| | | if (order.getSubsidy() == null)
|
| | | order.setSubsidy(new BigDecimal(0));
|
| | | if (order.geteIncome() == null)
|
| | | order.seteIncome(new BigDecimal(0));
|
| | |
|
| | | BigDecimal money = order.geteIncome().add(order.getSubsidy());
|
| | | sumMoney = sumMoney.add(money);
|
| | | }
|
| | |
|
| | | List<CommonOrder> commonOrderList = commonOrderService.listBySourceTypeAndOrderId(Constant.SOURCE_TYPE_TAOBAO,
|
| | | orderId);
|
| | | BigDecimal commonSumMoney = new BigDecimal("0");
|
| | | for (CommonOrder commonOrder : commonOrderList) {
|
| | | commonSumMoney = commonSumMoney.add(commonOrder.geteIncome());
|
| | | }
|
| | |
|
| | | // 不处理维权过的订单
|
| | | List<TaoBaoWeiQuanOrder> weiQuanOrderList = taoBaoWeiQuanOrderService.getWeiQuanSuccessOrders(orderId);
|
| | | if (weiQuanOrderList != null && weiQuanOrderList.size() > 0)
|
| | | return;
|
| | |
|
| | | processLessFanOrder(orderId);
|
| | |
|
| | | // if (sumMoney.compareTo(commonSumMoney) > 0) {
|
| | | // // 少返了
|
| | | //
|
| | | // } else {
|
| | | //
|
| | | // }
|
| | |
|
| | | }
|
| | |
|
| | | @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
|
| | | private void processLessFanOrder(String orderId) throws Exception {
|
| | |
|
| | | List<CommonOrder> commonOrderList = commonOrderMapper.listBySourceTypeAndOrderNo(Constant.SOURCE_TYPE_TAOBAO,
|
| | | orderId);
|
| | | // 确定是自购还是分享赚
|
| | | if (commonOrderList.size() <= 0)
|
| | | return;
|
| | | HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(commonOrderList.get(0).getId());
|
| | | // 统计原来的上下级关系及返利的资金
|
| | | Map<Long, BigDecimal> oldMoney = new HashMap<>();
|
| | | Long firstUid = null;
|
| | | Long secondUid = null;
|
| | | Long mainUid = null;
|
| | | // 统计返利的资金
|
| | | for (CommonOrder co : commonOrderList) {
|
| | | HongBaoOrder tempHongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(co.getId());
|
| | | if (tempHongBaoOrder == null || tempHongBaoOrder.getHongBaoV2() == null)
|
| | | continue;
|
| | | hongBaoOrder = tempHongBaoOrder;
|
| | |
|
| | | mainUid = hongBaoOrder.getHongBaoV2().getUserInfo().getId();
|
| | | if (oldMoney.get(mainUid) == null)
|
| | | oldMoney.put(mainUid, new BigDecimal(0));
|
| | | if (hongBaoOrder.getHongBaoV2().getState() == HongBaoV2.STATE_YILINGQU)
|
| | | oldMoney.put(mainUid, oldMoney.get(mainUid).add(hongBaoOrder.getHongBaoV2().getMoney()));
|
| | | // 查询是否有下级
|
| | | List<HongBaoV2> childrenList = hongBaoV2Mapper.listChildrenById(hongBaoOrder.getHongBaoV2().getId());
|
| | | for (HongBaoV2 child : childrenList) {
|
| | | if (child.getType() == HongBaoV2.TYPE_YIJI || child.getType() == HongBaoV2.TYPE_SHARE_YIJI) {
|
| | | firstUid = child.getUserInfo().getId();
|
| | | if (oldMoney.get(firstUid) == null)
|
| | | oldMoney.put(firstUid, new BigDecimal(0));
|
| | | if (child.getState() == HongBaoV2.STATE_YILINGQU)
|
| | | oldMoney.put(firstUid, oldMoney.get(firstUid).add(child.getMoney()));
|
| | |
|
| | | } else if (child.getType() == HongBaoV2.TYPE_ERJI || child.getType() == HongBaoV2.TYPE_SHARE_ERJI) {
|
| | | secondUid = child.getUserInfo().getId();
|
| | | if (oldMoney.get(secondUid) == null)
|
| | | oldMoney.put(secondUid, new BigDecimal(0));
|
| | | if (child.getState() == HongBaoV2.STATE_YILINGQU)
|
| | | oldMoney.put(firstUid, oldMoney.get(secondUid).add(child.getMoney()));
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | // FileWriter fw = null;
|
| | | // try {
|
| | | // // 如果文件存在,则追加内容;如果文件不存在,则创建文件
|
| | | // File f = new File("D:\\three_sale.txt");
|
| | | // fw = new FileWriter(f, true);
|
| | | // } catch (IOException e) {
|
| | | // e.printStackTrace();
|
| | | // }
|
| | | // PrintWriter pw = new PrintWriter(fw);
|
| | | // pw.println(orderId+"#"+firstUid+"-"+oldMoney.get(firstUid)+"#"+secondUid+"-"+(secondUid!=null?
|
| | | // oldMoney.get(secondUid):""));
|
| | | // pw.flush();
|
| | | // try {
|
| | | // fw.flush();
|
| | | // pw.close();
|
| | | // fw.close();
|
| | | // } catch (IOException e) {
|
| | | // e.printStackTrace();
|
| | | // }
|
| | | //
|
| | | // if (1 > 0)
|
| | | // return;
|
| | |
|
| | | List<TaoBaoOrder> taoBaoOrderList = taoBaoOrderService.getTaoBaoOrderByOrderId(orderId);
|
| | |
|
| | | // 根据交易ID查询
|
| | | // 先删除所有信息
|
| | | List<CommonOrder> commonOrderOldList = commonOrderMapper.listBySourceTypeAndOrderNo(Constant.SOURCE_TYPE_TAOBAO,
|
| | | orderId);
|
| | | if (commonOrderOldList != null)
|
| | | for (CommonOrder co : commonOrderOldList) {
|
| | | deleteByCommonOrderId(co.getId());
|
| | | }
|
| | |
|
| | | // 然后再增加
|
| | |
|
| | | int invalidCount = 0;
|
| | | for (TaoBaoOrder tb : taoBaoOrderList) {
|
| | | if ("订单失效".equalsIgnoreCase(tb.getOrderState())) {
|
| | | invalidCount++;
|
| | | }
|
| | | }
|
| | |
|
| | | // 获取整体订单的状态
|
| | | int wholeOrderState = 0;
|
| | | if (taoBaoOrderList.size() == invalidCount)
|
| | | wholeOrderState = CommonOrder.STATE_WHOLE_ORDER_SHIXIAO;
|
| | | else if (invalidCount == 0)
|
| | | wholeOrderState = CommonOrder.STATE_WHOLE_ORDER_YOUXIAO;
|
| | | else
|
| | | wholeOrderState = CommonOrder.STATE_WHOLE_ORDER_BUFENYOUXIAO;
|
| | |
|
| | | for (TaoBaoOrder taoBaoOrder : taoBaoOrderList) {
|
| | | CommonOrder commonOrder = TaoBaoOrderUtil.convert(taoBaoOrder);
|
| | | commonOrder.setStateWholeOrder(wholeOrderState);
|
| | | commonOrder.setCommonOrderGoods(getCommonOrderGoods(taoBaoOrder.getAuctionId()));
|
| | | commonOrder.setUserInfo(new UserInfo(mainUid));
|
| | | addOrder(commonOrder, hongBaoOrder.getHongBaoV2().getType(), firstUid, secondUid);
|
| | | // } else {// 删除旧的,添加新的
|
| | | // Long commonOrderId = oldCommonOrder.getId();
|
| | | // List<CommonOrder> list =
|
| | | // commonOrderService.listBySourceTypeAndTradeId(Constant.SOURCE_TYPE_TAOBAO,
|
| | | // tradeId);
|
| | | // if (list.size() > 1)// 删除多余的tradeId
|
| | | // {
|
| | | // for (CommonOrder co : list) {
|
| | | // if (co.getId().longValue() != commonOrderId)
|
| | | // deleteByCommonOrderId(co.getId());
|
| | | // }
|
| | | // }
|
| | | // // 修改原来的信息
|
| | | // updateOrderInfo(taoBaoOrder, commonOrderId);
|
| | | // }
|
| | | }
|
| | |
|
| | | // 统计修改后的资金
|
| | | List<CommonOrder> newCommonOrderList = commonOrderMapper.listBySourceTypeAndOrderNo(Constant.SOURCE_TYPE_TAOBAO,
|
| | | orderId);
|
| | | Map<Long, BigDecimal> newMap = new HashMap<>();
|
| | | if (newCommonOrderList != null)
|
| | | for (CommonOrder co : newCommonOrderList) {
|
| | | HongBaoOrder newHongBaoOrder = hongBaoOrderService.selectDetailByCommonOrderId(co.getId());
|
| | | if (newHongBaoOrder == null)
|
| | | continue;
|
| | | HongBaoV2 hongBao = newHongBaoOrder.getHongBaoV2();
|
| | | if (hongBao.getState() == HongBaoV2.STATE_YILINGQU) {
|
| | | Long uid = hongBao.getUserInfo().getId();
|
| | | if (newMap.get(uid) == null)
|
| | | newMap.put(uid, new BigDecimal(0));
|
| | | newMap.put(uid, newMap.get(uid).add(hongBao.getMoney()));
|
| | | } else {
|
| | | Long uid = hongBao.getUserInfo().getId();
|
| | | if (newMap.get(uid) == null)
|
| | | newMap.put(uid, new BigDecimal(0));
|
| | | }
|
| | | List<HongBaoV2> children = hongBaoV2Service.listChildrenById(hongBao.getId());
|
| | | if (children != null)
|
| | | for (HongBaoV2 child : children) {
|
| | | if (newMap.get(child.getUserInfo().getId()) == null)
|
| | | newMap.put(child.getUserInfo().getId(), new BigDecimal(0));
|
| | | if (child.getState() == HongBaoV2.STATE_YILINGQU)
|
| | | newMap.put(child.getUserInfo().getId(),
|
| | | newMap.get(child.getUserInfo().getId()).add(child.getMoney()));
|
| | | }
|
| | | }
|
| | |
|
| | | for (Iterator<Long> its = newMap.keySet().iterator(); its.hasNext();) {
|
| | | Long uid = its.next();
|
| | | BigDecimal beforeGetMoney = oldMoney.get(uid);
|
| | | BigDecimal afterGetMoney = newMap.get(uid);
|
| | | OrderRepairHistory history = new OrderRepairHistory();
|
| | | history.setAfterGetMoney(afterGetMoney);
|
| | | history.setBeforeGetMoney(beforeGetMoney);
|
| | | history.setOrderId(orderId);
|
| | | history.setUid(uid);
|
| | | orderRepairHistoryService.addOrderRepairHistory(history);
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | private CommonOrderGoods getCommonOrderGoods(Long auctionId) {
|
| | | List<CommonOrderGoods> commonGoodsList = commonOrderGoodsMapper.listByGoodsIdAndGoodsType(auctionId + "",
|
| | | Constant.SOURCE_TYPE_TAOBAO);
|
| | | CommonOrderGoods cog = null;
|
| | | if (commonGoodsList.size() <= 0)// 不存在就插入商品
|
| | | {
|
| | | TaoBaoGoodsBrief taoBaoGoods = null;
|
| | | try {
|
| | | taoBaoGoods = TaoKeApiUtil.getSimpleGoodsInfo(auctionId);
|
| | | } catch (TaobaoGoodsDownException e) {
|
| | | e.printStackTrace();
|
| | | LogHelper.errorDetailInfo(e, "AUCTIONID:" + auctionId, "");
|
| | | try {
|
| | | taoBaoGoods = TaoBaoUtil.getSimpleGoodsBrief(auctionId);
|
| | | } catch (Exception e1) {
|
| | | CommonGoods commonGoods = commonGoodsService.getCommonGoodsByGoodsIdAndGoodsType(auctionId,
|
| | | Constant.SOURCE_TYPE_TAOBAO);
|
| | | if (commonGoods != null)
|
| | | taoBaoGoods = TaoBaoUtil.convert(commonGoods);
|
| | | }
|
| | | }
|
| | | if (taoBaoGoods != null) {
|
| | | cog = CommonOrderGoodsFactory.create(taoBaoGoods);
|
| | | }
|
| | | cog.setCreateTime(new Date());
|
| | | cog.setUpdateTime(new Date());
|
| | | commonOrderGoodsMapper.insertSelective(cog);
|
| | |
|
| | | return cog;
|
| | | } else
|
| | | return commonGoodsList.get(0);
|
| | |
|
| | | }
|
| | |
|
| | | // 修改订单信息
|
| | | @Transactional
|
| | | private void updateOrderInfo(TaoBaoOrder taoBaoOrder, Long commonOrderId) throws Exception {
|
| | | HongBaoOrder hongBaoOrder = hongBaoOrderService.selectDetailByCommonOrderId(commonOrderId);
|
| | | CommonOrder newCommonOrder = TaoBaoOrderUtil.convert(taoBaoOrder);
|
| | | List<CommonOrderGoods> commonGoodsList = commonOrderGoodsMapper
|
| | | .listByGoodsIdAndGoodsType(taoBaoOrder.getAuctionId() + "", newCommonOrder.getSourceType());
|
| | | CommonOrderGoods cog = null;
|
| | | if (commonGoodsList.size() <= 0)// 不存在就插入商品
|
| | | {
|
| | | TaoBaoGoodsBrief taoBaoGoods = null;
|
| | | try {
|
| | | taoBaoGoods = TaoKeApiUtil.getSimpleGoodsInfo(taoBaoOrder.getAuctionId());
|
| | | } catch (TaobaoGoodsDownException e) {
|
| | | e.printStackTrace();
|
| | | LogHelper.errorDetailInfo(e, "AUCTIONID:" + taoBaoOrder.getAuctionId(), "");
|
| | | try {
|
| | | taoBaoGoods = TaoBaoUtil.getSimpleGoodsBrief(taoBaoOrder.getAuctionId());
|
| | | } catch (Exception e1) {
|
| | | CommonGoods commonGoods = commonGoodsService.getCommonGoodsByGoodsIdAndGoodsType(
|
| | | taoBaoOrder.getAuctionId(), Constant.SOURCE_TYPE_TAOBAO);
|
| | | if (commonGoods != null)
|
| | | taoBaoGoods = TaoBaoUtil.convert(commonGoods);
|
| | | }
|
| | | }
|
| | | if (taoBaoGoods != null) {
|
| | | cog = CommonOrderGoodsFactory.create(taoBaoGoods);
|
| | | }
|
| | | cog.setCreateTime(new Date());
|
| | | cog.setUpdateTime(new Date());
|
| | | commonOrderGoodsMapper.insertSelective(cog);
|
| | | }
|
| | |
|
| | | newCommonOrder.setCommonOrderGoods(cog);
|
| | | newCommonOrder.setId(commonOrderId);
|
| | | newCommonOrder.setCreateTime(null);
|
| | | newCommonOrder.setUpdateTime(new Date());
|
| | | commonOrderService.updateByPrimaryKeySelective(newCommonOrder);
|
| | | // 更新主红包信息
|
| | | CommonOrder commonOrder = commonOrderService.selectByPrimaryKey(newCommonOrder.getId());
|
| | |
|
| | | if (hongBaoOrder.getHongBaoV2().getType() == 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.getSourceType(),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) {
|
| | | if (hongBaoOrder.getHongBaoV2().getPreGetTime().getTime() < System.currentTimeMillis())
|
| | | hongBao.setState(HongBaoV2.STATE_YILINGQU);
|
| | | 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);
|
| | |
|
| | | // 更新子红包信息
|
| | | // 获取子红包
|
| | | 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_YILINGQU) {
|
| | | 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")));
|
| | |
|
| | | if (child.getPreGetTime().getTime() < System.currentTimeMillis()) {
|
| | | childUpdate.setState(HongBaoV2.STATE_YILINGQU);
|
| | | childUpdate.setGetTime(child.getGetTime());
|
| | | }
|
| | |
|
| | | } else if (hongBao.getState() == HongBaoV2.STATE_BUKELINGQU) {
|
| | | childUpdate.setMoney(
|
| | | MoneyBigDecimalUtil.mul(hongBao.getMoney(), rate.divide(new BigDecimal(100))));
|
| | | }
|
| | | hongBaoV2Mapper.updateByPrimaryKeySelective(childUpdate);
|
| | | }
|
| | | } else if (hongBaoOrder.getHongBaoV2().getType() == 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_YILINGQU);
|
| | | hongBao.setMoney(
|
| | | MoneyBigDecimalUtil.mul(commonOrder.geteIncome(), fanliRate.divide(new BigDecimal(100))));
|
| | | Calendar calendar = Calendar.getInstance();
|
| | | calendar.setTime(commonOrder.getSettleTime());
|
| | | calendar.add(Calendar.MONTH, 1);
|
| | | if (hongBaoOrder.getHongBaoV2().getGetTime() == null) {
|
| | | hongBao.setGetTime(hongBaoOrder.getHongBaoV2().getPreGetTime());
|
| | | }
|
| | |
|
| | | } else if (commonOrder.getState() == CommonOrder.STATE_SX) {
|
| | | hongBao.setState(HongBaoV2.STATE_SHIXIAO);
|
| | | hongBao.setMoney(new BigDecimal(0));
|
| | | }
|
| | | hongBaoV2Mapper.updateByPrimaryKeySelective(hongBao);
|
| | |
|
| | | // 获取子红包
|
| | | 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")));
|
| | | if (child.getGetTime() == null) {
|
| | | childUpdate.setGetTime(child.getPreGetTime());
|
| | | }
|
| | |
|
| | | } 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);
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | @Transactional
|
| | | public void addOrder(CommonOrder commonOrder, int type, Long firstUid, Long secondUid) throws Exception {
|
| | | // 增加commonOrder
|
| | | commonOrder.setCreateTime(commonOrder.getThirdCreateTime());
|
| | | // 不存在就插入,存在就不管
|
| | | CommonOrderGoods goods = commonOrder.getCommonOrderGoods();
|
| | |
|
| | | // 之前不存在于数据库
|
| | | if (commonOrder.getCommonOrderGoods().getId() == null) {
|
| | | List<CommonOrderGoods> commonGoodsList = commonOrderGoodsMapper
|
| | | .listByGoodsIdAndGoodsType(goods.getGoodsId(), goods.getGoodsType());
|
| | |
|
| | | if (commonGoodsList == null || commonGoodsList.size() < 1) {// 不存在
|
| | | commonOrderGoodsMapper.insertSelective(goods);
|
| | | } else {// 存在
|
| | | goods = commonGoodsList.get(0);
|
| | | }
|
| | | if (goods.getId() == null)
|
| | | return;
|
| | | commonOrder.setCommonOrderGoods(goods);
|
| | | }
|
| | |
|
| | | CommonOrder oldCommonOrder = commonOrderMapper.selectBySourceTypeAndTradeId(commonOrder.getSourceType(),
|
| | | commonOrder.getTradeId());
|
| | | if (oldCommonOrder == null)// 新增
|
| | | {
|
| | | commonOrder.setUpdateTime(new Date());
|
| | | commonOrderMapper.insertSelective(commonOrder);
|
| | | try {
|
| | | // 插入映射,保证交易ID的完整性
|
| | | commonOrderTradeIdMapMapper.insertSelective(new CommonOrderTradeIdMap(commonOrder.getId(),
|
| | | commonOrder.getTradeId(), new Date(), commonOrder.getSourceType()));
|
| | | } catch (Exception e) {
|
| | |
|
| | | }
|
| | | }
|
| | |
|
| | | // 添加红包
|
| | | 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();
|
| | |
|
| | | 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.setBeizhu("2019年7月批量修改");
|
| | | 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));
|
| | |
|
| | | if (hongBao.getPreGetTime().getTime() < System.currentTimeMillis()) {
|
| | | hongBao.setState(HongBaoV2.STATE_YILINGQU);
|
| | | hongBao.setGetTime(hongBao.getPreGetTime());
|
| | | }
|
| | | } 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.getUserByIdWithMybatis(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);
|
| | |
|
| | | UserInfo boss = null;
|
| | | if (firstUid != null)
|
| | | boss = userInfoService.selectByPKey(firstUid);
|
| | |
|
| | | 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.setBeizhu("2019年7月批量修改");
|
| | | 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) {// ||
|
| | | // hongBao.getState()
|
| | | // ==
|
| | | // HongBaoV2.STATE_YILINGQU
|
| | | 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")));
|
| | | if (firstHongbao.getPreGetTime().getTime() < System.currentTimeMillis()) {
|
| | | firstHongbao.setGetTime(firstHongbao.getPreGetTime());
|
| | | firstHongbao.setState(HongBaoV2.STATE_YILINGQU);
|
| | | }
|
| | | } else if (hongBao.getState() == HongBaoV2.STATE_BUKELINGQU) {
|
| | | firstHongbao.setMoney(
|
| | | MoneyBigDecimalUtil.mul(hongBao.getMoney(), firstRate.divide(new BigDecimal(100))));
|
| | | }
|
| | | // 返利为0的不通知
|
| | | if (firstHongbao.getMoney() == null || firstHongbao.getMoney().compareTo(new BigDecimal(0)) <= 0)
|
| | | return;
|
| | |
|
| | | hongBaoV2Mapper.insertSelective(firstHongbao);
|
| | |
|
| | | // 插入二级子红包
|
| | | if (secondUid == null)
|
| | | boss = null;
|
| | | else
|
| | | boss = userInfoService.selectByPKey(secondUid);
|
| | |
|
| | | 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.setBeizhu("2019年7月批量修改");
|
| | | 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) {// ||
|
| | | // hongBao.getState()
|
| | | // ==
|
| | | // HongBaoV2.STATE_YILINGQU
|
| | | 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")));
|
| | | if (secondHongbao.getPreGetTime().getTime() < System.currentTimeMillis()) {
|
| | | secondHongbao.setGetTime(secondHongbao.getPreGetTime());
|
| | | secondHongbao.setState(HongBaoV2.STATE_YILINGQU);
|
| | | }
|
| | |
|
| | | } else if (hongBao.getState() == HongBaoV2.STATE_BUKELINGQU) {
|
| | | secondHongbao.setMoney(
|
| | | MoneyBigDecimalUtil.mul(hongBao.getMoney(), secondRate.divide(new BigDecimal(100))));
|
| | | }
|
| | |
|
| | | // 返利为0的不统计
|
| | | if (secondHongbao.getMoney() == null || secondHongbao.getMoney().compareTo(new BigDecimal(0)) <= 0)
|
| | | return;
|
| | | hongBaoV2Mapper.insertSelective(secondHongbao);
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | } 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());
|
| | |
|
| | | HongBaoV2 hongBao = new HongBaoV2();
|
| | | hongBao.setBeizhu("2019年7月批量修改");
|
| | | 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")));
|
| | | if (hongBao.getPreGetTime().getTime() < System.currentTimeMillis()) {
|
| | | hongBao.setGetTime(hongBao.getPreGetTime());
|
| | | hongBao.setState(HongBaoV2.STATE_YILINGQU);
|
| | | }
|
| | | }
|
| | | UserInfo user = userInfoService.getUserByIdWithMybatis(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);
|
| | |
|
| | | // 4月17日后才有一级分享赚
|
| | | if (commonOrder.getThirdCreateTime().getTime() > TimeUtil.convertToTimeTemp("2019-04-17", "yyyy-MM-dd")) {
|
| | | UserInfo boss = null;
|
| | | if (firstUid != null)
|
| | | boss = userInfoService.selectByPKey(firstUid);
|
| | | if (boss != null) {
|
| | | BigDecimal firstLevelRate = hongBaoManageService.getFirstShareRate(1,
|
| | | commonOrder.getThirdCreateTime().getTime());
|
| | | HongBaoV2 child = new HongBaoV2();
|
| | | child.setBeizhu("2019年7月批量修改");
|
| | | 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")));
|
| | |
|
| | | if (child.getPreGetTime().getTime() < System.currentTimeMillis()) {
|
| | | child.setGetTime(child.getPreGetTime());
|
| | | child.setState(HongBaoV2.STATE_YILINGQU);
|
| | | }
|
| | |
|
| | | }
|
| | | child.setUserInfo(boss);
|
| | | child.setUrank(boss.getRank());
|
| | | child.setVersion(2);
|
| | | child.setCreateTime(new Date());
|
| | | hongBaoV2Mapper.insertSelective(child);
|
| | | }
|
| | | }
|
| | |
|
| | | } else
|
| | | throw new HongBaoException(2, "type错误");
|
| | |
|
| | | // 添加
|
| | |
|
| | | }
|
| | |
|
| | | @Transactional(propagation = Propagation.REQUIRED)
|
| | | private void deleteByCommonOrderId(Long commonOrderId) {
|
| | | commonOrderMapper.deleteByPrimaryKey(commonOrderId);
|
| | | HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(commonOrderId);
|
| | | if (hongBaoOrder == null || hongBaoOrder.getHongBaoV2() == null)
|
| | | return;
|
| | | List<HongBaoV2> children = hongBaoV2Mapper.listChildrenById(hongBaoOrder.getHongBaoV2().getId());
|
| | | if (children != null)
|
| | | for (HongBaoV2 hongBao : children) {
|
| | | hongBaoV2Mapper.deleteByPrimaryKey(hongBao.getId());
|
| | | }
|
| | | hongBaoV2Mapper.deleteByPrimaryKey(hongBaoOrder.getHongBaoV2().getId());
|
| | | hongBaoOrderMapper.deleteByPrimaryKey(hongBaoOrder.getId());
|
| | |
|
| | | }
|
| | |
|
| | | @Transactional
|
| | | @Override
|
| | | public void testTransaction() {
|
| | | hongBaoV2Mapper.selectByPrimaryKey(1L);
|
| | | }
|
| | |
|
| | | private static Map<String, OrderInfo> orderInfoMap;
|
| | |
|
| | | private OrderInfo getOrderInfo(String orderId) {
|
| | | if (orderInfoMap == null) {
|
| | | orderInfoMap = new HashMap<>();
|
| | | Scanner scanner = null;
|
| | | try {
|
| | | scanner = new Scanner(new File("C:\\Users\\Administrator\\Desktop\\订单集中排查\\three_sale.txt"));
|
| | | while (scanner.hasNext()) {
|
| | | OrderInfo orderInfo = new OrderInfo();
|
| | | String info = scanner.next();
|
| | | if (StringUtil.isNullOrEmpty(info))
|
| | | continue;
|
| | |
|
| | | String[] sts = info.split("#");
|
| | | String orderid = sts[0];
|
| | | orderInfo.setOrderId(orderid);
|
| | | String firstUid = sts[1].split("-")[0];
|
| | | String firstUidMoney = sts[1].split("-")[1];
|
| | | orderInfo.setFirstUid(Long.parseLong(firstUid));
|
| | | orderInfo.setFirstUidMoney(new BigDecimal(firstUidMoney));
|
| | |
|
| | | String secondUid = sts[2].split("-")[0];
|
| | | String secondUidMoney = null;
|
| | | if (sts[2].split("-").length > 1)
|
| | | secondUidMoney = sts[2].split("-")[1];
|
| | | if (!StringUtil.isNullOrEmpty(secondUid))
|
| | | orderInfo.setSecondUid(Long.parseLong(secondUid));
|
| | | if (!StringUtil.isNullOrEmpty(secondUidMoney))
|
| | | orderInfo.setSecondUidMoney(new BigDecimal(secondUidMoney));
|
| | | orderInfoMap.put(orderInfo.getOrderId(), orderInfo);
|
| | | }
|
| | | } catch (FileNotFoundException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | scanner.close();
|
| | | }
|
| | |
|
| | | return orderInfoMap.get(orderId);
|
| | | }
|
| | |
|
| | | @Transactional
|
| | | @Override
|
| | | public void repireFirstAndSecondLevel(String orderId) throws Exception {
|
| | | repireFirstShare(orderId);
|
| | | if (1 > 0)
|
| | | return;
|
| | | OrderInfo info = getOrderInfo(orderId);
|
| | | Map<Long, BigDecimal> oldMoneyMap = new HashMap<>();
|
| | | if (info.getFirstUid() != null)
|
| | | oldMoneyMap.put(info.getFirstUid(), info.getFirstUidMoney());
|
| | | if (info.getSecondUid() != null)
|
| | | oldMoneyMap.put(info.getSecondUid(), info.getSecondUidMoney());
|
| | |
|
| | | if (info != null) {
|
| | | List<CommonOrder> list = commonOrderMapper.listBySourceTypeAndOrderNo(Constant.SOURCE_TYPE_TAOBAO,
|
| | | info.getOrderId());
|
| | | // 查询是否有子红包
|
| | | for (CommonOrder commonOrder : list) {
|
| | | HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(commonOrder.getId());
|
| | | if (hongBaoOrder == null)
|
| | | continue;
|
| | | List<HongBaoV2> hongBaoList = hongBaoV2Mapper.listChildrenById(hongBaoOrder.getHongBaoV2().getId());
|
| | | if (hongBaoList != null && hongBaoList.size() > 0)// 有子红包就不处理了
|
| | | return;
|
| | | }
|
| | |
|
| | | for (CommonOrder commonOrder : list) {
|
| | | HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(commonOrder.getId());
|
| | | if (hongBaoOrder == null)
|
| | | continue;
|
| | | HongBaoV2 hongBao = hongBaoOrder.getHongBaoV2();
|
| | | Long firstUid = info.getFirstUid();
|
| | | Long secondUid = info.getSecondUid();
|
| | | // 加入子红包
|
| | | UserInfo boss = null;
|
| | | if (firstUid != null)
|
| | | boss = userInfoService.selectByPKey(firstUid);
|
| | |
|
| | | if (boss != null && hongBao.getState() != HongBaoV2.STATE_SHIXIAO) {// 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.setBeizhu("2019年7月批量修改");
|
| | | 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
|
| | | || hongBao.getState() == HongBaoV2.STATE_YILINGQU) {
|
| | | 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")));
|
| | | if (firstHongbao.getPreGetTime().getTime() < System.currentTimeMillis()) {
|
| | | firstHongbao.setGetTime(firstHongbao.getPreGetTime());
|
| | | firstHongbao.setState(HongBaoV2.STATE_YILINGQU);
|
| | | }
|
| | | } else if (hongBao.getState() == HongBaoV2.STATE_BUKELINGQU) {
|
| | | firstHongbao.setMoney(
|
| | | MoneyBigDecimalUtil.mul(hongBao.getMoney(), firstRate.divide(new BigDecimal(100))));
|
| | | }
|
| | | // 返利为0的不通知
|
| | | if (firstHongbao.getMoney() == null || firstHongbao.getMoney().compareTo(new BigDecimal(0)) <= 0)
|
| | | continue;
|
| | |
|
| | | hongBaoV2Mapper.insertSelective(firstHongbao);
|
| | |
|
| | | // 插入二级子红包
|
| | | if (secondUid == null)
|
| | | boss = null;
|
| | | else
|
| | | boss = userInfoService.selectByPKey(secondUid);
|
| | |
|
| | | 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.setBeizhu("2019年7月批量修改");
|
| | | 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
|
| | | || hongBao.getState() == HongBaoV2.STATE_YILINGQU) {
|
| | | 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")));
|
| | | if (secondHongbao.getPreGetTime().getTime() < System.currentTimeMillis()) {
|
| | | secondHongbao.setGetTime(secondHongbao.getPreGetTime());
|
| | | secondHongbao.setState(HongBaoV2.STATE_YILINGQU);
|
| | | }
|
| | |
|
| | | } else if (hongBao.getState() == HongBaoV2.STATE_BUKELINGQU) {
|
| | | secondHongbao.setMoney(MoneyBigDecimalUtil.mul(hongBao.getMoney(),
|
| | | secondRate.divide(new BigDecimal(100))));
|
| | | }
|
| | |
|
| | | // 返利为0的不统计
|
| | | if (secondHongbao.getMoney() == null
|
| | | || secondHongbao.getMoney().compareTo(new BigDecimal(0)) <= 0)
|
| | | continue;
|
| | | hongBaoV2Mapper.insertSelective(secondHongbao);
|
| | | }
|
| | |
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | // 统计修改后的资金
|
| | | List<CommonOrder> newCommonOrderList = commonOrderMapper.listBySourceTypeAndOrderNo(Constant.SOURCE_TYPE_TAOBAO,
|
| | | orderId);
|
| | | Map<Long, BigDecimal> newMap = new HashMap<>();
|
| | | if (newCommonOrderList != null)
|
| | | for (CommonOrder co : newCommonOrderList) {
|
| | | HongBaoOrder newHongBaoOrder = hongBaoOrderService.selectDetailByCommonOrderId(co.getId());
|
| | | if (newHongBaoOrder == null)
|
| | | continue;
|
| | | HongBaoV2 hongBao = newHongBaoOrder.getHongBaoV2();
|
| | | List<HongBaoV2> children = hongBaoV2Service.listChildrenById(hongBao.getId());
|
| | | if (children != null)
|
| | | for (HongBaoV2 child : children) {
|
| | | if (newMap.get(child.getUserInfo().getId()) == null)
|
| | | newMap.put(child.getUserInfo().getId(), new BigDecimal(0));
|
| | | if (child.getState() == HongBaoV2.STATE_YILINGQU)
|
| | | newMap.put(child.getUserInfo().getId(),
|
| | | newMap.get(child.getUserInfo().getId()).add(child.getMoney()));
|
| | | }
|
| | | }
|
| | |
|
| | | for (Iterator<Long> its = newMap.keySet().iterator(); its.hasNext();) {
|
| | | Long uid = its.next();
|
| | | BigDecimal beforeGetMoney = oldMoneyMap.get(uid);
|
| | | BigDecimal afterGetMoney = newMap.get(uid);
|
| | | OrderRepairHistory history = new OrderRepairHistory();
|
| | | history.setAfterGetMoney(afterGetMoney);
|
| | | history.setBeforeGetMoney(beforeGetMoney);
|
| | | history.setOrderId(orderId);
|
| | | history.setUid(uid);
|
| | | orderRepairHistoryService.addOrderRepairHistory(history);
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | private void repireFirstShare(String orderId) throws Exception {
|
| | | OrderInfo info = getOrderInfo(orderId);
|
| | | Long firstUid = info.getFirstUid();
|
| | | Map<Long, BigDecimal> oldMoneyMap = new HashMap<>();
|
| | | if (info.getFirstUid() != null)
|
| | | oldMoneyMap.put(info.getFirstUid(), info.getFirstUidMoney());
|
| | | if (info.getSecondUid() != null)
|
| | | oldMoneyMap.put(info.getSecondUid(), info.getSecondUidMoney());
|
| | |
|
| | | if (info != null) {
|
| | | List<CommonOrder> list = commonOrderMapper.listBySourceTypeAndOrderNo(Constant.SOURCE_TYPE_TAOBAO,
|
| | | info.getOrderId());
|
| | | // 查询是否有子红包
|
| | | for (CommonOrder commonOrder : list) {
|
| | | HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(commonOrder.getId());
|
| | | if (hongBaoOrder == null)
|
| | | continue;
|
| | | List<HongBaoV2> hongBaoList = hongBaoV2Mapper.listChildrenById(hongBaoOrder.getHongBaoV2().getId());
|
| | | if (hongBaoList != null && hongBaoList.size() > 0)// 有子红包就不处理了
|
| | | return;
|
| | | }
|
| | |
|
| | | for (CommonOrder commonOrder : list) {
|
| | | if (commonOrder.getState() == CommonOrder.STATE_SX || commonOrder.getState() == CommonOrder.STATE_WQ)
|
| | | continue;
|
| | | // 分享赚
|
| | |
|
| | | HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(commonOrder.getId());
|
| | | if (hongBaoOrder == null)
|
| | | continue;
|
| | |
|
| | | HongBaoV2 hongBao = hongBaoOrder.getHongBaoV2();
|
| | | // 4月17日后才有一级分享赚
|
| | | if (commonOrder.getThirdCreateTime().getTime() > TimeUtil.convertToTimeTemp("2019-04-17",
|
| | | "yyyy-MM-dd")) {
|
| | | UserInfo boss = null;
|
| | | if (firstUid != null)
|
| | | boss = userInfoService.selectByPKey(firstUid);
|
| | | if (boss != null) {
|
| | | BigDecimal firstLevelRate = hongBaoManageService.getFirstShareRate(1,
|
| | | commonOrder.getThirdCreateTime().getTime());
|
| | | HongBaoV2 child = new HongBaoV2();
|
| | | child.setBeizhu("2019年7月批量修改");
|
| | | 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")));
|
| | |
|
| | | if (child.getPreGetTime().getTime() < System.currentTimeMillis()) {
|
| | | child.setGetTime(child.getPreGetTime());
|
| | | child.setState(HongBaoV2.STATE_YILINGQU);
|
| | | }
|
| | |
|
| | | }
|
| | | child.setUserInfo(boss);
|
| | | child.setUrank(boss.getRank());
|
| | | child.setVersion(2);
|
| | | child.setCreateTime(new Date());
|
| | | hongBaoV2Mapper.insertSelective(child);
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | // 统计修改后的资金
|
| | | List<CommonOrder> newCommonOrderList = commonOrderMapper.listBySourceTypeAndOrderNo(Constant.SOURCE_TYPE_TAOBAO,
|
| | | orderId);
|
| | | Map<Long, BigDecimal> newMap = new HashMap<>();
|
| | | if (newCommonOrderList != null)
|
| | | for (CommonOrder co : newCommonOrderList) {
|
| | | HongBaoOrder newHongBaoOrder = hongBaoOrderService.selectDetailByCommonOrderId(co.getId());
|
| | | if (newHongBaoOrder == null)
|
| | | continue;
|
| | | HongBaoV2 hongBao = newHongBaoOrder.getHongBaoV2();
|
| | | List<HongBaoV2> children = hongBaoV2Service.listChildrenById(hongBao.getId());
|
| | | if (children != null)
|
| | | for (HongBaoV2 child : children) {
|
| | | if (newMap.get(child.getUserInfo().getId()) == null)
|
| | | newMap.put(child.getUserInfo().getId(), new BigDecimal(0));
|
| | | if (child.getState() == HongBaoV2.STATE_YILINGQU)
|
| | | newMap.put(child.getUserInfo().getId(),
|
| | | newMap.get(child.getUserInfo().getId()).add(child.getMoney()));
|
| | | }
|
| | | }
|
| | |
|
| | | for (Iterator<Long> its = newMap.keySet().iterator(); its.hasNext();) {
|
| | | Long uid = its.next();
|
| | | BigDecimal beforeGetMoney = oldMoneyMap.get(uid);
|
| | | BigDecimal afterGetMoney = newMap.get(uid);
|
| | | OrderRepairHistory history = new OrderRepairHistory();
|
| | | history.setAfterGetMoney(afterGetMoney);
|
| | | history.setBeforeGetMoney(beforeGetMoney);
|
| | | history.setOrderId(orderId);
|
| | | history.setUid(uid);
|
| | | orderRepairHistoryService.addOrderRepairHistory(history);
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | class OrderInfo {
|
| | | private String orderId;
|
| | | private Long firstUid;
|
| | | private BigDecimal firstUidMoney;
|
| | | private Long secondUid;
|
| | | private BigDecimal secondUidMoney;
|
| | |
|
| | | public String getOrderId() {
|
| | | return orderId;
|
| | | }
|
| | |
|
| | | public void setOrderId(String orderId) {
|
| | | this.orderId = orderId;
|
| | | }
|
| | |
|
| | | public Long getFirstUid() {
|
| | | return firstUid;
|
| | | }
|
| | |
|
| | | public void setFirstUid(Long firstUid) {
|
| | | this.firstUid = firstUid;
|
| | | }
|
| | |
|
| | | public BigDecimal getFirstUidMoney() {
|
| | | return firstUidMoney;
|
| | | }
|
| | |
|
| | | public void setFirstUidMoney(BigDecimal firstUidMoney) {
|
| | | this.firstUidMoney = firstUidMoney;
|
| | | }
|
| | |
|
| | | public Long getSecondUid() {
|
| | | return secondUid;
|
| | | }
|
| | |
|
| | | public void setSecondUid(Long secondUid) {
|
| | | this.secondUid = secondUid;
|
| | | }
|
| | |
|
| | | public BigDecimal getSecondUidMoney() {
|
| | | return secondUidMoney;
|
| | | }
|
| | |
|
| | | public void setSecondUidMoney(BigDecimal secondUidMoney) {
|
| | | this.secondUidMoney = secondUidMoney;
|
| | | }
|
| | | }
|
| | |
|
| | | @Override
|
| | | public List<OrderRepairHistory> listByUid(Long uid) {
|
| | |
|
| | | return orderRepairHistoryMapper.listByUid(uid);
|
| | | }
|
| | |
|
| | | @Transactional
|
| | | @Override
|
| | | public void doMoney(Long uid) {
|
| | | List<OrderRepairHistory> historyList = listByUid(uid);
|
| | | for (int i = 0; i < historyList.size(); i++) {
|
| | | if (historyList.get(i).getCreateTime().getTime() < TimeUtil.convertToTimeTemp("2019-07-15 17:00:38",
|
| | | "yyyy-MM-dd HH:mm:ss")) {
|
| | | historyList.remove(i);
|
| | | i--;
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | BigDecimal money = new BigDecimal(0);
|
| | | String orders = "";
|
| | | for (OrderRepairHistory history : historyList) {
|
| | | money = money.add(history.getAfterGetMoney().subtract(history.getBeforeGetMoney()));
|
| | | orders += history.getOrderId() + ",";
|
| | | }
|
| | | if (money.compareTo(new BigDecimal(0)) > 0)// 资金需要增加
|
| | | {
|
| | | try {
|
| | | UserMoneyDetail detail = UserMoneyDetailFactory.createSystemEqualize("订单统计异常修复", money,
|
| | | new UserInfo(uid));
|
| | | // 系统补齐
|
| | | // 加资金
|
| | | userMoneyService.addUserMoney(uid, money, detail);
|
| | | pushMsg(uid, "关于近期订单与资金异常的排查与修复结果通知",
|
| | | "尊敬的用户,经仔细核对您账户中的订单,发现您账户中有未统计或错误统计的订单,我们已经为您补齐资金,对应资金已经存入您的账户余额中,敬请查收注查收。感谢信任,返利券App终将成为您最信任的购物省钱助手。");
|
| | | userMoneyMsgNotificationService.systemEqualize(uid, "订单统计异常修复", money, userInfoService.getBalance(uid));
|
| | | } catch (UserMoneyDetailException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | |
|
| | | } else {// 资金需要减少,不要扣钱
|
| | | pushMsg(uid, "关于近期订单与资金异常的排查与修复结果通知",
|
| | | "尊敬的用户,经仔细核对您账户中的订单,发现您账户中有错误统计的订单,我们已经为您恢复正常,所涉及订单多统计出来的资金,不会被扣除,即您账户中的资金将保持不变,已提现的资金,也不会收回,敬请知晓。感谢信任,返利券App终将成为您最信任的购物省钱助手。");
|
| | | // userMoneyMsgNotificationService.systemEqualize(uid, "订单统计异常修复",
|
| | | // money, userInfoService.getBalance(uid));
|
| | | // 加入提现审核异常保护中
|
| | | ExtractCheckCompensate check = new ExtractCheckCompensate();
|
| | | check.setBeiZhu("7月订单异常系统处理:" + orders);
|
| | | check.setCreateTime(new Date());
|
| | | check.setMoney(money);
|
| | | check.setUserInfo(new UserInfo(uid));
|
| | | check.setUpdateTime(new Date());
|
| | | extractCheckCompensateMapper.insertSelective(check);
|
| | | }
|
| | | }
|
| | |
|
| | | private void pushMsg(Long uid, String title, String content) {
|
| | |
|
| | | PushInfo pushInfo = new PushInfo();
|
| | | pushInfo.setTitle(title);
|
| | | pushInfo.setContent(content);
|
| | | pushInfo.setUids(uid + "");
|
| | | JSONObject jsonData = new JSONObject();
|
| | | jsonData.put("url", "");
|
| | | jsonData.put("ios", "全推");
|
| | | jsonData.put("android", "全推");
|
| | | pushInfo.setJsonData(jsonData.toString());
|
| | | pushInfo.setType(PushTypeEnum.ZNX);
|
| | | pushInfo.setArrayAndroid("[全推]");
|
| | | pushInfo.setArrayIOS("[全推]");
|
| | |
|
| | | pushInfo.setCreateTime(new Date());
|
| | |
|
| | | try {
|
| | | pushInfoService.save(pushInfo);
|
| | | } catch (PushInfoException e) {
|
| | | e.printStackTrace();
|
| | | } catch (Exception e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | |
|
| | | try {
|
| | | pushInfoService.handPush(pushInfo.getId());
|
| | | } catch (PushInfoException e) {
|
| | | e.printStackTrace();
|
| | | } catch (PushException e) {
|
| | | e.printStackTrace();
|
| | | } catch (Exception e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | }
|
| | | package com.yeshi.fanli.service.impl.order; |
| | | |
| | | import java.io.File; |
| | | import java.io.FileNotFoundException; |
| | | import java.math.BigDecimal; |
| | | import java.util.Calendar; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.Iterator; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Scanner; |
| | | |
| | | import javax.annotation.Resource; |
| | | |
| | | import com.yeshi.fanli.entity.SystemEnum; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import com.yeshi.fanli.dao.mybatis.HongBaoV2Mapper; |
| | | import com.yeshi.fanli.dao.mybatis.money.ExtractCheckCompensateMapper; |
| | | import com.yeshi.fanli.dao.mybatis.order.CommonOrderGoodsMapper; |
| | | import com.yeshi.fanli.dao.mybatis.order.CommonOrderMapper; |
| | | import com.yeshi.fanli.dao.mybatis.order.CommonOrderTradeIdMapMapper; |
| | | import com.yeshi.fanli.dao.mybatis.order.HongBaoOrderMapper; |
| | | import com.yeshi.fanli.dao.mybatis.order.OrderRepairHistoryMapper; |
| | | import com.yeshi.fanli.entity.bus.user.HongBaoV2; |
| | | import com.yeshi.fanli.entity.bus.user.UserInfo; |
| | | import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum; |
| | | import com.yeshi.fanli.entity.goods.CommonGoods; |
| | | import com.yeshi.fanli.entity.money.ExtractCheckCompensate; |
| | | import com.yeshi.fanli.entity.money.UserMoneyDetail; |
| | | import com.yeshi.fanli.entity.order.CommonOrder; |
| | | import com.yeshi.fanli.entity.order.CommonOrderGoods; |
| | | import com.yeshi.fanli.entity.order.CommonOrderTradeIdMap; |
| | | import com.yeshi.fanli.entity.order.HongBaoOrder; |
| | | import com.yeshi.fanli.entity.order.OrderRepairHistory; |
| | | import com.yeshi.fanli.entity.order.ShareGoodsActivityOrder; |
| | | import com.yeshi.fanli.entity.push.PushInfo; |
| | | import com.yeshi.fanli.entity.push.PushInfo.PushTypeEnum; |
| | | import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief; |
| | | import com.yeshi.fanli.entity.taobao.TaoBaoOrder; |
| | | import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder; |
| | | import com.yeshi.fanli.exception.money.UserMoneyDetailException; |
| | | import com.yeshi.fanli.exception.order.HongBaoException; |
| | | import com.yeshi.fanli.exception.push.PushException; |
| | | import com.yeshi.fanli.exception.push.PushInfoException; |
| | | import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException; |
| | | import com.yeshi.fanli.log.LogHelper; |
| | | import com.yeshi.fanli.service.inter.goods.CommonGoodsService; |
| | | import com.yeshi.fanli.service.inter.money.UserMoneyService; |
| | | import com.yeshi.fanli.service.inter.money.msg.UserMoneyMsgNotificationService; |
| | | import com.yeshi.fanli.service.inter.order.CommonOrderService; |
| | | import com.yeshi.fanli.service.inter.order.HongBaoOrderService; |
| | | import com.yeshi.fanli.service.inter.order.HongBaoV2Service; |
| | | import com.yeshi.fanli.service.inter.order.OrderRepairHistoryService; |
| | | import com.yeshi.fanli.service.inter.order.OrderRepairService; |
| | | import com.yeshi.fanli.service.inter.order.ShareGoodsActivityOrderService; |
| | | import com.yeshi.fanli.service.inter.order.config.HongBaoManageService; |
| | | import com.yeshi.fanli.service.inter.order.tb.TaoBaoOrderService; |
| | | import com.yeshi.fanli.service.inter.order.tb.TaoBaoWeiQuanOrderService; |
| | | import com.yeshi.fanli.service.inter.push.PushInfoService; |
| | | import com.yeshi.fanli.service.inter.user.UserInfoService; |
| | | import com.yeshi.fanli.service.inter.user.UserSystemCouponRecordService; |
| | | import com.yeshi.fanli.service.inter.user.UserSystemCouponService; |
| | | import com.yeshi.fanli.util.Constant; |
| | | import org.yeshi.utils.MoneyBigDecimalUtil; |
| | | import com.yeshi.fanli.util.StringUtil; |
| | | import org.yeshi.utils.TimeUtil; |
| | | import com.yeshi.fanli.util.factory.CommonOrderGoodsFactory; |
| | | import com.yeshi.fanli.util.factory.UserMoneyDetailFactory; |
| | | import com.yeshi.fanli.util.factory.goods.CommonOrderFactory; |
| | | import com.yeshi.fanli.util.taobao.TaoBaoUtil; |
| | | import com.yeshi.fanli.util.taobao.TaoKeApiUtil; |
| | | |
| | | import net.sf.json.JSONObject; |
| | | |
| | | @Service |
| | | public class OrderRepairServiceImpl implements OrderRepairService { |
| | | |
| | | @Resource |
| | | private OrderRepairHistoryMapper orderRepairHistoryMapper; |
| | | |
| | | @Resource |
| | | private TaoBaoOrderService taoBaoOrderService; |
| | | |
| | | @Resource |
| | | private CommonOrderService commonOrderService; |
| | | |
| | | @Resource |
| | | private HongBaoOrderService hongBaoOrderService; |
| | | |
| | | @Resource |
| | | private HongBaoV2Service hongBaoV2Service; |
| | | |
| | | @Resource |
| | | private CommonOrderGoodsMapper commonOrderGoodsMapper; |
| | | |
| | | @Resource |
| | | private CommonGoodsService commonGoodsService; |
| | | |
| | | @Resource |
| | | private HongBaoManageService hongBaoManageService; |
| | | |
| | | @Resource |
| | | private UserSystemCouponRecordService userSystemCouponRecordService; |
| | | |
| | | @Resource |
| | | private HongBaoV2Mapper hongBaoV2Mapper; |
| | | |
| | | @Resource |
| | | private UserSystemCouponService userSystemCouponService; |
| | | |
| | | @Resource |
| | | private ShareGoodsActivityOrderService shareGoodsActivityOrderService; |
| | | |
| | | @Resource |
| | | private CommonOrderMapper commonOrderMapper; |
| | | |
| | | @Resource |
| | | private CommonOrderTradeIdMapMapper commonOrderTradeIdMapMapper; |
| | | |
| | | @Resource |
| | | private UserInfoService userInfoService; |
| | | |
| | | @Resource |
| | | private HongBaoOrderMapper hongBaoOrderMapper; |
| | | |
| | | @Resource |
| | | private OrderRepairHistoryService orderRepairHistoryService; |
| | | |
| | | @Resource |
| | | private TaoBaoWeiQuanOrderService taoBaoWeiQuanOrderService; |
| | | |
| | | @Resource |
| | | private UserMoneyService userMoneyService; |
| | | |
| | | @Resource |
| | | private PushInfoService pushInfoService; |
| | | |
| | | @Resource |
| | | private UserMoneyMsgNotificationService userMoneyMsgNotificationService; |
| | | |
| | | @Resource |
| | | private ExtractCheckCompensateMapper extractCheckCompensateMapper; |
| | | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | @Override |
| | | public void repairOrder(String orderId) throws Exception { |
| | | // 比较CommonOrder与TaoBaoOrder的预估收益 |
| | | List<TaoBaoOrder> orderList = taoBaoOrderService.getTaoBaoOrderByOrderId(orderId); |
| | | // 统计 |
| | | BigDecimal sumMoney = new BigDecimal("0"); |
| | | for (TaoBaoOrder order : orderList) { |
| | | // if (order.getOrderState().equalsIgnoreCase("订单付款") || |
| | | // order.getOrderState().equalsIgnoreCase("订单成功")) |
| | | // return; |
| | | if (order.getSubsidy() == null) |
| | | order.setSubsidy(new BigDecimal(0)); |
| | | if (order.geteIncome() == null) |
| | | order.seteIncome(new BigDecimal(0)); |
| | | |
| | | BigDecimal money = order.geteIncome().add(order.getSubsidy()); |
| | | sumMoney = sumMoney.add(money); |
| | | } |
| | | |
| | | List<CommonOrder> commonOrderList = commonOrderService.listBySourceTypeAndOrderId(Constant.SOURCE_TYPE_TAOBAO, |
| | | orderId); |
| | | BigDecimal commonSumMoney = new BigDecimal("0"); |
| | | for (CommonOrder commonOrder : commonOrderList) { |
| | | commonSumMoney = commonSumMoney.add(commonOrder.geteIncome()); |
| | | } |
| | | |
| | | // 不处理维权过的订单 |
| | | List<TaoBaoWeiQuanOrder> weiQuanOrderList = taoBaoWeiQuanOrderService.getWeiQuanSuccessOrders(orderId); |
| | | if (weiQuanOrderList != null && weiQuanOrderList.size() > 0) |
| | | return; |
| | | |
| | | processLessFanOrder(orderId); |
| | | |
| | | // if (sumMoney.compareTo(commonSumMoney) > 0) { |
| | | // // 少返了 |
| | | // |
| | | // } else { |
| | | // |
| | | // } |
| | | |
| | | } |
| | | |
| | | private void processLessFanOrder(String orderId) throws Exception { |
| | | |
| | | List<CommonOrder> commonOrderList = commonOrderMapper.listBySourceTypeAndOrderNo(Constant.SOURCE_TYPE_TAOBAO, |
| | | orderId); |
| | | // 确定是自购还是分享赚 |
| | | if (commonOrderList.size() <= 0) |
| | | return; |
| | | HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(commonOrderList.get(0).getId()); |
| | | // 统计原来的上下级关系及返利的资金 |
| | | Map<Long, BigDecimal> oldMoney = new HashMap<>(); |
| | | Long firstUid = null; |
| | | Long secondUid = null; |
| | | Long mainUid = null; |
| | | // 统计返利的资金 |
| | | for (CommonOrder co : commonOrderList) { |
| | | HongBaoOrder tempHongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(co.getId()); |
| | | if (tempHongBaoOrder == null || tempHongBaoOrder.getHongBaoV2() == null) |
| | | continue; |
| | | hongBaoOrder = tempHongBaoOrder; |
| | | |
| | | mainUid = hongBaoOrder.getHongBaoV2().getUserInfo().getId(); |
| | | if (oldMoney.get(mainUid) == null) |
| | | oldMoney.put(mainUid, new BigDecimal(0)); |
| | | if (hongBaoOrder.getHongBaoV2().getState() == HongBaoV2.STATE_YILINGQU) |
| | | oldMoney.put(mainUid, oldMoney.get(mainUid).add(hongBaoOrder.getHongBaoV2().getMoney())); |
| | | // 查询是否有下级 |
| | | List<HongBaoV2> childrenList = hongBaoV2Mapper.listChildrenById(hongBaoOrder.getHongBaoV2().getId()); |
| | | for (HongBaoV2 child : childrenList) { |
| | | if (child.getType() == HongBaoV2.TYPE_YIJI || child.getType() == HongBaoV2.TYPE_SHARE_YIJI) { |
| | | firstUid = child.getUserInfo().getId(); |
| | | if (oldMoney.get(firstUid) == null) |
| | | oldMoney.put(firstUid, new BigDecimal(0)); |
| | | if (child.getState() == HongBaoV2.STATE_YILINGQU) |
| | | oldMoney.put(firstUid, oldMoney.get(firstUid).add(child.getMoney())); |
| | | |
| | | } else if (child.getType() == HongBaoV2.TYPE_ERJI || child.getType() == HongBaoV2.TYPE_SHARE_ERJI) { |
| | | secondUid = child.getUserInfo().getId(); |
| | | if (oldMoney.get(secondUid) == null) |
| | | oldMoney.put(secondUid, new BigDecimal(0)); |
| | | if (child.getState() == HongBaoV2.STATE_YILINGQU) |
| | | oldMoney.put(firstUid, oldMoney.get(secondUid).add(child.getMoney())); |
| | | } |
| | | } |
| | | } |
| | | |
| | | // FileWriter fw = null; |
| | | // try { |
| | | // // 如果文件存在,则追加内容;如果文件不存在,则创建文件 |
| | | // File f = new File("D:\\three_sale.txt"); |
| | | // fw = new FileWriter(f, true); |
| | | // } catch (IOException e) { |
| | | // e.printStackTrace(); |
| | | // } |
| | | // PrintWriter pw = new PrintWriter(fw); |
| | | // pw.println(orderId+"#"+firstUid+"-"+oldMoney.get(firstUid)+"#"+secondUid+"-"+(secondUid!=null? |
| | | // oldMoney.get(secondUid):"")); |
| | | // pw.flush(); |
| | | // try { |
| | | // fw.flush(); |
| | | // pw.close(); |
| | | // fw.close(); |
| | | // } catch (IOException e) { |
| | | // e.printStackTrace(); |
| | | // } |
| | | // |
| | | // if (1 > 0) |
| | | // return; |
| | | |
| | | List<TaoBaoOrder> taoBaoOrderList = taoBaoOrderService.getTaoBaoOrderByOrderId(orderId); |
| | | |
| | | // 根据交易ID查询 |
| | | // 先删除所有信息 |
| | | List<CommonOrder> commonOrderOldList = commonOrderMapper.listBySourceTypeAndOrderNo(Constant.SOURCE_TYPE_TAOBAO, |
| | | orderId); |
| | | if (commonOrderOldList != null) |
| | | for (CommonOrder co : commonOrderOldList) { |
| | | deleteByCommonOrderId(co.getId()); |
| | | } |
| | | |
| | | // 然后再增加 |
| | | |
| | | int invalidCount = 0; |
| | | for (TaoBaoOrder tb : taoBaoOrderList) { |
| | | if ("订单失效".equalsIgnoreCase(tb.getOrderState())) { |
| | | invalidCount++; |
| | | } |
| | | } |
| | | |
| | | // 获取整体订单的状态 |
| | | int wholeOrderState = 0; |
| | | if (taoBaoOrderList.size() == invalidCount) |
| | | wholeOrderState = CommonOrder.STATE_WHOLE_ORDER_SHIXIAO; |
| | | else if (invalidCount == 0) |
| | | wholeOrderState = CommonOrder.STATE_WHOLE_ORDER_YOUXIAO; |
| | | else |
| | | wholeOrderState = CommonOrder.STATE_WHOLE_ORDER_BUFENYOUXIAO; |
| | | |
| | | for (TaoBaoOrder taoBaoOrder : taoBaoOrderList) { |
| | | CommonOrder commonOrder = CommonOrderFactory.create(taoBaoOrder); |
| | | commonOrder.setStateWholeOrder(wholeOrderState); |
| | | commonOrder.setCommonOrderGoods(getCommonOrderGoods(taoBaoOrder.getAuctionId())); |
| | | commonOrder.setUserInfo(new UserInfo(mainUid)); |
| | | addOrder(commonOrder, hongBaoOrder.getHongBaoV2().getType(), firstUid, secondUid); |
| | | // } else {// 删除旧的,添加新的 |
| | | // Long commonOrderId = oldCommonOrder.getId(); |
| | | // List<CommonOrder> list = |
| | | // commonOrderService.listBySourceTypeAndTradeId(Constant.SOURCE_TYPE_TAOBAO, |
| | | // tradeId); |
| | | // if (list.size() > 1)// 删除多余的tradeId |
| | | // { |
| | | // for (CommonOrder co : list) { |
| | | // if (co.getId().longValue() != commonOrderId) |
| | | // deleteByCommonOrderId(co.getId()); |
| | | // } |
| | | // } |
| | | // // 修改原来的信息 |
| | | // updateOrderInfo(taoBaoOrder, commonOrderId); |
| | | // } |
| | | } |
| | | |
| | | // 统计修改后的资金 |
| | | List<CommonOrder> newCommonOrderList = commonOrderMapper.listBySourceTypeAndOrderNo(Constant.SOURCE_TYPE_TAOBAO, |
| | | orderId); |
| | | Map<Long, BigDecimal> newMap = new HashMap<>(); |
| | | if (newCommonOrderList != null) |
| | | for (CommonOrder co : newCommonOrderList) { |
| | | HongBaoOrder newHongBaoOrder = hongBaoOrderService.selectDetailByCommonOrderId(co.getId()); |
| | | if (newHongBaoOrder == null) |
| | | continue; |
| | | HongBaoV2 hongBao = newHongBaoOrder.getHongBaoV2(); |
| | | if (hongBao.getState() == HongBaoV2.STATE_YILINGQU) { |
| | | Long uid = hongBao.getUserInfo().getId(); |
| | | if (newMap.get(uid) == null) |
| | | newMap.put(uid, new BigDecimal(0)); |
| | | newMap.put(uid, newMap.get(uid).add(hongBao.getMoney())); |
| | | } else { |
| | | Long uid = hongBao.getUserInfo().getId(); |
| | | if (newMap.get(uid) == null) |
| | | newMap.put(uid, new BigDecimal(0)); |
| | | } |
| | | List<HongBaoV2> children = hongBaoV2Service.listChildrenById(hongBao.getId()); |
| | | if (children != null) |
| | | for (HongBaoV2 child : children) { |
| | | if (newMap.get(child.getUserInfo().getId()) == null) |
| | | newMap.put(child.getUserInfo().getId(), new BigDecimal(0)); |
| | | if (child.getState() == HongBaoV2.STATE_YILINGQU) |
| | | newMap.put(child.getUserInfo().getId(), |
| | | newMap.get(child.getUserInfo().getId()).add(child.getMoney())); |
| | | } |
| | | } |
| | | |
| | | for (Iterator<Long> its = newMap.keySet().iterator(); its.hasNext();) { |
| | | Long uid = its.next(); |
| | | BigDecimal beforeGetMoney = oldMoney.get(uid); |
| | | BigDecimal afterGetMoney = newMap.get(uid); |
| | | OrderRepairHistory history = new OrderRepairHistory(); |
| | | history.setAfterGetMoney(afterGetMoney); |
| | | history.setBeforeGetMoney(beforeGetMoney); |
| | | history.setOrderId(orderId); |
| | | history.setUid(uid); |
| | | orderRepairHistoryService.addOrderRepairHistory(history); |
| | | } |
| | | |
| | | } |
| | | |
| | | private CommonOrderGoods getCommonOrderGoods(String auctionId) { |
| | | List<CommonOrderGoods> commonGoodsList = commonOrderGoodsMapper.listByGoodsIdAndGoodsType(auctionId + "", |
| | | Constant.SOURCE_TYPE_TAOBAO); |
| | | CommonOrderGoods cog = null; |
| | | if (commonGoodsList.size() <= 0)// 不存在就插入商品 |
| | | { |
| | | TaoBaoGoodsBrief taoBaoGoods = null; |
| | | try { |
| | | taoBaoGoods = TaoKeApiUtil.getSimpleGoodsInfo(auctionId); |
| | | } catch (TaobaoGoodsDownException e) { |
| | | e.printStackTrace(); |
| | | LogHelper.errorDetailInfo(e, "AUCTIONID:" + auctionId, ""); |
| | | try { |
| | | taoBaoGoods = TaoBaoUtil.getSimpleGoodsBrief(auctionId); |
| | | } catch (Exception e1) { |
| | | CommonGoods commonGoods = commonGoodsService.getCommonGoodsByGoodsIdAndGoodsType(auctionId, |
| | | Constant.SOURCE_TYPE_TAOBAO); |
| | | if (commonGoods != null) |
| | | taoBaoGoods = TaoBaoUtil.convert(commonGoods); |
| | | } |
| | | } |
| | | if (taoBaoGoods != null) { |
| | | cog = CommonOrderGoodsFactory.create(taoBaoGoods); |
| | | } |
| | | cog.setCreateTime(new Date()); |
| | | cog.setUpdateTime(new Date()); |
| | | commonOrderGoodsMapper.insertSelective(cog); |
| | | |
| | | return cog; |
| | | } else |
| | | return commonGoodsList.get(0); |
| | | |
| | | } |
| | | |
| | | // 修改订单信息 |
| | | private void updateOrderInfo(TaoBaoOrder taoBaoOrder, Long commonOrderId) throws Exception { |
| | | HongBaoOrder hongBaoOrder = hongBaoOrderService.selectDetailByCommonOrderId(commonOrderId); |
| | | CommonOrder newCommonOrder = CommonOrderFactory.create(taoBaoOrder); |
| | | |
| | | SystemEnum system=userInfoService.getUserSystem(newCommonOrder.getUserInfo().getId()); |
| | | |
| | | List<CommonOrderGoods> commonGoodsList = commonOrderGoodsMapper |
| | | .listByGoodsIdAndGoodsType(taoBaoOrder.getAuctionId() + "", newCommonOrder.getSourceType()); |
| | | CommonOrderGoods cog = null; |
| | | if (commonGoodsList.size() <= 0)// 不存在就插入商品 |
| | | { |
| | | TaoBaoGoodsBrief taoBaoGoods = null; |
| | | try { |
| | | taoBaoGoods = TaoKeApiUtil.getSimpleGoodsInfo(taoBaoOrder.getAuctionId()); |
| | | } catch (TaobaoGoodsDownException e) { |
| | | e.printStackTrace(); |
| | | LogHelper.errorDetailInfo(e, "AUCTIONID:" + taoBaoOrder.getAuctionId(), ""); |
| | | try { |
| | | taoBaoGoods = TaoBaoUtil.getSimpleGoodsBrief(taoBaoOrder.getAuctionId()); |
| | | } catch (Exception e1) { |
| | | CommonGoods commonGoods = commonGoodsService.getCommonGoodsByGoodsIdAndGoodsType( |
| | | taoBaoOrder.getAuctionId(), Constant.SOURCE_TYPE_TAOBAO); |
| | | if (commonGoods != null) |
| | | taoBaoGoods = TaoBaoUtil.convert(commonGoods); |
| | | } |
| | | } |
| | | if (taoBaoGoods != null) { |
| | | cog = CommonOrderGoodsFactory.create(taoBaoGoods); |
| | | } |
| | | cog.setCreateTime(new Date()); |
| | | cog.setUpdateTime(new Date()); |
| | | commonOrderGoodsMapper.insertSelective(cog); |
| | | } |
| | | |
| | | newCommonOrder.setCommonOrderGoods(cog); |
| | | newCommonOrder.setId(commonOrderId); |
| | | newCommonOrder.setCreateTime(null); |
| | | newCommonOrder.setUpdateTime(new Date()); |
| | | commonOrderService.updateByPrimaryKeySelective(newCommonOrder); |
| | | // 更新主红包信息 |
| | | CommonOrder commonOrder = commonOrderService.selectByPrimaryKey(newCommonOrder.getId()); |
| | | |
| | | if (hongBaoOrder.getHongBaoV2().getType() == HongBaoV2.TYPE_ZIGOU) { |
| | | BigDecimal fanliRate = hongBaoManageService.getFanLiRate(UserLevelEnum.daRen, |
| | | commonOrder.getCreateTime().getTime(),system); |
| | | // 免单处理 |
| | | 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.getSourceType(), |
| | | 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) { |
| | | if (hongBaoOrder.getHongBaoV2().getPreGetTime().getTime() < System.currentTimeMillis()) |
| | | hongBao.setState(HongBaoV2.STATE_YILINGQU); |
| | | 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(),commonOrder.getSourceType()); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | throw new HongBaoException(12, "免单券退款出错"); |
| | | } |
| | | } |
| | | } |
| | | hongBaoV2Mapper.updateByPrimaryKeySelective(hongBao); |
| | | |
| | | // 更新子红包信息 |
| | | // 获取子红包 |
| | | 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(),system); |
| | | } else if (child.getType() == HongBaoV2.TYPE_ERJI) {// 二级分享赚 |
| | | rate = hongBaoManageService.getSecondInviteRate(child.getUrank(), |
| | | commonOrder.getCreateTime().getTime(),system); |
| | | } |
| | | |
| | | // 以实际收入为准计算预估收益 |
| | | if (hongBao.getState() == HongBaoV2.STATE_YILINGQU) { |
| | | 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"))); |
| | | |
| | | if (child.getPreGetTime().getTime() < System.currentTimeMillis()) { |
| | | childUpdate.setState(HongBaoV2.STATE_YILINGQU); |
| | | childUpdate.setGetTime(child.getGetTime()); |
| | | } |
| | | |
| | | } else if (hongBao.getState() == HongBaoV2.STATE_BUKELINGQU) { |
| | | childUpdate.setMoney( |
| | | MoneyBigDecimalUtil.mul(hongBao.getMoney(), rate.divide(new BigDecimal(100)))); |
| | | } |
| | | hongBaoV2Mapper.updateByPrimaryKeySelective(childUpdate); |
| | | } |
| | | } else if (hongBaoOrder.getHongBaoV2().getType() == HongBaoV2.TYPE_SHARE_GOODS) { |
| | | |
| | | BigDecimal fanliRate = hongBaoManageService.getShareRate(UserLevelEnum.daRen, |
| | | commonOrder.getCreateTime().getTime(),system); |
| | | 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_YILINGQU); |
| | | hongBao.setMoney( |
| | | MoneyBigDecimalUtil.mul(commonOrder.geteIncome(), fanliRate.divide(new BigDecimal(100)))); |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(commonOrder.getSettleTime()); |
| | | calendar.add(Calendar.MONTH, 1); |
| | | if (hongBaoOrder.getHongBaoV2().getGetTime() == null) { |
| | | hongBao.setGetTime(hongBaoOrder.getHongBaoV2().getPreGetTime()); |
| | | } |
| | | |
| | | } else if (commonOrder.getState() == CommonOrder.STATE_SX) { |
| | | hongBao.setState(HongBaoV2.STATE_SHIXIAO); |
| | | hongBao.setMoney(new BigDecimal(0)); |
| | | } |
| | | hongBaoV2Mapper.updateByPrimaryKeySelective(hongBao); |
| | | |
| | | // 获取子红包 |
| | | 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(),system); |
| | | } else if (child.getType() == HongBaoV2.TYPE_SHARE_ERJI) {// 二级分享赚 |
| | | rate = hongBaoManageService.getSecondShareRate(1, commonOrder.getCreateTime().getTime(),system); |
| | | } |
| | | |
| | | // 以实际收入为准计算预估收益 |
| | | 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"))); |
| | | if (child.getGetTime() == null) { |
| | | childUpdate.setGetTime(child.getPreGetTime()); |
| | | } |
| | | |
| | | } 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); |
| | | } |
| | | } |
| | | } |
| | | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void addOrder(CommonOrder commonOrder, int type, Long firstUid, Long secondUid) throws HongBaoException { |
| | | // 增加commonOrder |
| | | commonOrder.setCreateTime(commonOrder.getThirdCreateTime()); |
| | | // 不存在就插入,存在就不管 |
| | | CommonOrderGoods goods = commonOrder.getCommonOrderGoods(); |
| | | |
| | | // 之前不存在于数据库 |
| | | if (commonOrder.getCommonOrderGoods().getId() == null) { |
| | | List<CommonOrderGoods> commonGoodsList = commonOrderGoodsMapper |
| | | .listByGoodsIdAndGoodsType(goods.getGoodsId(), goods.getGoodsType()); |
| | | |
| | | if (commonGoodsList == null || commonGoodsList.size() < 1) {// 不存在 |
| | | commonOrderGoodsMapper.insertSelective(goods); |
| | | } else {// 存在 |
| | | goods = commonGoodsList.get(0); |
| | | } |
| | | if (goods.getId() == null) |
| | | return; |
| | | commonOrder.setCommonOrderGoods(goods); |
| | | } |
| | | |
| | | SystemEnum system=userInfoService.getUserSystem(commonOrder.getUserInfo().getId()); |
| | | |
| | | CommonOrder oldCommonOrder = commonOrderMapper.selectBySourceTypeAndTradeId(commonOrder.getSourceType(), |
| | | commonOrder.getTradeId()); |
| | | if (oldCommonOrder == null)// 新增 |
| | | { |
| | | commonOrder.setUpdateTime(new Date()); |
| | | commonOrderMapper.insertSelective(commonOrder); |
| | | try { |
| | | // 插入映射,保证交易ID的完整性 |
| | | commonOrderTradeIdMapMapper.insertSelective(new CommonOrderTradeIdMap(commonOrder.getId(), |
| | | commonOrder.getTradeId(), new Date(), commonOrder.getSourceType())); |
| | | } catch (Exception e) { |
| | | |
| | | } |
| | | } |
| | | |
| | | // 添加红包 |
| | | if (type == HongBaoV2.TYPE_ZIGOU) {// 获取自购的返利比例 |
| | | BigDecimal fanliRate = hongBaoManageService.getFanLiRate(UserLevelEnum.daRen, |
| | | commonOrder.getCreateTime().getTime(),system); |
| | | // 查询是否有免单计划 |
| | | 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(); |
| | | |
| | | goods = commonOrderGoodsMapper.selectByPrimaryKey(commonOrder.getCommonOrderGoods().getId()); |
| | | if (goods != null) { |
| | | |
| | | try { |
| | | if (userSystemCouponService.updateCouponRecordUsed(commonOrder.getUserInfo().getId(), |
| | | commonOrder.getOrderNo(), payMent, goods.getGoodsId(),commonOrder.getSourceType())) |
| | | 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(),commonOrder.getSourceType()); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | HongBaoV2 hongBao = new HongBaoV2(); |
| | | hongBao.setBeizhu("2019年7月批量修改"); |
| | | 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)); |
| | | |
| | | if (hongBao.getPreGetTime().getTime() < System.currentTimeMillis()) { |
| | | hongBao.setState(HongBaoV2.STATE_YILINGQU); |
| | | hongBao.setGetTime(hongBao.getPreGetTime()); |
| | | } |
| | | } else if (commonOrder.getState() == CommonOrder.STATE_SX) { |
| | | hongBao.setState(HongBaoV2.STATE_SHIXIAO); |
| | | hongBao.setMoney(new BigDecimal(0)); |
| | | } else { |
| | | throw new HongBaoException(HongBaoException.CODE_ORDER_WEIQUAN, "维权订单不能创建红包"); |
| | | } |
| | | |
| | | if (mianDanMoney != null) |
| | | hongBao.setMoney(mianDanMoney); |
| | | |
| | | UserInfo user = userInfoService.getUserByIdWithMybatis(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); |
| | | |
| | | UserInfo boss = null; |
| | | if (firstUid != null) |
| | | boss = userInfoService.selectByPKey(firstUid); |
| | | |
| | | if (boss != null && hongBao.getState() != HongBaoV2.STATE_SHIXIAO && mianDanMoney == null) {// 1级BOSS存在且红包未失效,免单不支持多级分销 |
| | | |
| | | // 插入一级子红包 |
| | | BigDecimal firstRate = hongBaoManageService |
| | | .getFirstInviteRate(boss.getRank() == null ? 0 : boss.getRank(),system); |
| | | if (firstRate.compareTo(new BigDecimal(0)) <= 0) |
| | | return; |
| | | HongBaoV2 firstHongbao = new HongBaoV2(); |
| | | firstHongbao.setBeizhu("2019年7月批量修改"); |
| | | 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) {// || |
| | | // hongBao.getState() |
| | | // == |
| | | // HongBaoV2.STATE_YILINGQU |
| | | 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"))); |
| | | if (firstHongbao.getPreGetTime().getTime() < System.currentTimeMillis()) { |
| | | firstHongbao.setGetTime(firstHongbao.getPreGetTime()); |
| | | firstHongbao.setState(HongBaoV2.STATE_YILINGQU); |
| | | } |
| | | } else if (hongBao.getState() == HongBaoV2.STATE_BUKELINGQU) { |
| | | firstHongbao.setMoney( |
| | | MoneyBigDecimalUtil.mul(hongBao.getMoney(), firstRate.divide(new BigDecimal(100)))); |
| | | } |
| | | // 返利为0的不通知 |
| | | if (firstHongbao.getMoney() == null || firstHongbao.getMoney().compareTo(new BigDecimal(0)) <= 0) |
| | | return; |
| | | |
| | | hongBaoV2Mapper.insertSelective(firstHongbao); |
| | | |
| | | // 插入二级子红包 |
| | | if (secondUid == null) |
| | | boss = null; |
| | | else |
| | | boss = userInfoService.selectByPKey(secondUid); |
| | | |
| | | if (boss != null) {// 二级BOSS存在 |
| | | BigDecimal secondRate = hongBaoManageService |
| | | .getSecondInviteRate(boss.getRank() == null ? 0 : boss.getRank(),system); |
| | | if (secondRate.compareTo(new BigDecimal(0)) <= 0) |
| | | return; |
| | | HongBaoV2 secondHongbao = new HongBaoV2(); |
| | | secondHongbao.setBeizhu("2019年7月批量修改"); |
| | | 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) {// || |
| | | // hongBao.getState() |
| | | // == |
| | | // HongBaoV2.STATE_YILINGQU |
| | | 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"))); |
| | | if (secondHongbao.getPreGetTime().getTime() < System.currentTimeMillis()) { |
| | | secondHongbao.setGetTime(secondHongbao.getPreGetTime()); |
| | | secondHongbao.setState(HongBaoV2.STATE_YILINGQU); |
| | | } |
| | | |
| | | } else if (hongBao.getState() == HongBaoV2.STATE_BUKELINGQU) { |
| | | secondHongbao.setMoney( |
| | | MoneyBigDecimalUtil.mul(hongBao.getMoney(), secondRate.divide(new BigDecimal(100)))); |
| | | } |
| | | |
| | | // 返利为0的不统计 |
| | | if (secondHongbao.getMoney() == null || secondHongbao.getMoney().compareTo(new BigDecimal(0)) <= 0) |
| | | return; |
| | | hongBaoV2Mapper.insertSelective(secondHongbao); |
| | | } |
| | | |
| | | } |
| | | |
| | | } else if (type == HongBaoV2.TYPE_SHARE_GOODS) { |
| | | // 分享赚不加入失效的订单 |
| | | if (commonOrder.getState() == CommonOrder.STATE_SX || commonOrder.getState() == CommonOrder.STATE_WQ) |
| | | return; |
| | | // 分享赚 |
| | | BigDecimal shareRate = hongBaoManageService.getShareRate(UserLevelEnum.daRen, |
| | | commonOrder.getCreateTime().getTime(),system); |
| | | |
| | | HongBaoV2 hongBao = new HongBaoV2(); |
| | | hongBao.setBeizhu("2019年7月批量修改"); |
| | | 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"))); |
| | | if (hongBao.getPreGetTime().getTime() < System.currentTimeMillis()) { |
| | | hongBao.setGetTime(hongBao.getPreGetTime()); |
| | | hongBao.setState(HongBaoV2.STATE_YILINGQU); |
| | | } |
| | | } |
| | | UserInfo user = userInfoService.getUserByIdWithMybatis(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); |
| | | |
| | | // 4月17日后才有一级分享赚 |
| | | if (commonOrder.getThirdCreateTime().getTime() > TimeUtil.convertToTimeTemp("2019-04-17", "yyyy-MM-dd")) { |
| | | UserInfo boss = null; |
| | | if (firstUid != null) |
| | | boss = userInfoService.selectByPKey(firstUid); |
| | | if (boss != null) { |
| | | BigDecimal firstLevelRate = hongBaoManageService.getFirstShareRate(1, |
| | | commonOrder.getThirdCreateTime().getTime(),system); |
| | | HongBaoV2 child = new HongBaoV2(); |
| | | child.setBeizhu("2019年7月批量修改"); |
| | | 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"))); |
| | | |
| | | if (child.getPreGetTime().getTime() < System.currentTimeMillis()) { |
| | | child.setGetTime(child.getPreGetTime()); |
| | | child.setState(HongBaoV2.STATE_YILINGQU); |
| | | } |
| | | |
| | | } |
| | | child.setUserInfo(boss); |
| | | child.setUrank(boss.getRank()); |
| | | child.setVersion(2); |
| | | child.setCreateTime(new Date()); |
| | | hongBaoV2Mapper.insertSelective(child); |
| | | } |
| | | } |
| | | |
| | | } else |
| | | throw new HongBaoException(HongBaoException.CODE_TYPE_ERROR, "type错误"); |
| | | |
| | | // 添加 |
| | | |
| | | } |
| | | |
| | | private void deleteByCommonOrderId(Long commonOrderId) { |
| | | commonOrderMapper.deleteByPrimaryKey(commonOrderId); |
| | | HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(commonOrderId); |
| | | if (hongBaoOrder == null || hongBaoOrder.getHongBaoV2() == null) |
| | | return; |
| | | List<HongBaoV2> children = hongBaoV2Mapper.listChildrenById(hongBaoOrder.getHongBaoV2().getId()); |
| | | if (children != null) |
| | | for (HongBaoV2 hongBao : children) { |
| | | hongBaoV2Mapper.deleteByPrimaryKey(hongBao.getId()); |
| | | } |
| | | hongBaoV2Mapper.deleteByPrimaryKey(hongBaoOrder.getHongBaoV2().getId()); |
| | | hongBaoOrderMapper.deleteByPrimaryKey(hongBaoOrder.getId()); |
| | | |
| | | } |
| | | |
| | | @Transactional |
| | | @Override |
| | | public void testTransaction() { |
| | | hongBaoV2Mapper.selectByPrimaryKey(1L); |
| | | } |
| | | |
| | | private static Map<String, OrderInfo> orderInfoMap; |
| | | |
| | | private OrderInfo getOrderInfo(String orderId) { |
| | | if (orderInfoMap == null) { |
| | | orderInfoMap = new HashMap<>(); |
| | | Scanner scanner = null; |
| | | try { |
| | | scanner = new Scanner(new File("C:\\Users\\Administrator\\Desktop\\订单集中排查\\three_sale.txt")); |
| | | while (scanner.hasNext()) { |
| | | OrderInfo orderInfo = new OrderInfo(); |
| | | String info = scanner.next(); |
| | | if (StringUtil.isNullOrEmpty(info)) |
| | | continue; |
| | | |
| | | String[] sts = info.split("#"); |
| | | String orderid = sts[0]; |
| | | orderInfo.setOrderId(orderid); |
| | | String firstUid = sts[1].split("-")[0]; |
| | | String firstUidMoney = sts[1].split("-")[1]; |
| | | orderInfo.setFirstUid(Long.parseLong(firstUid)); |
| | | orderInfo.setFirstUidMoney(new BigDecimal(firstUidMoney)); |
| | | |
| | | String secondUid = sts[2].split("-")[0]; |
| | | String secondUidMoney = null; |
| | | if (sts[2].split("-").length > 1) |
| | | secondUidMoney = sts[2].split("-")[1]; |
| | | if (!StringUtil.isNullOrEmpty(secondUid)) |
| | | orderInfo.setSecondUid(Long.parseLong(secondUid)); |
| | | if (!StringUtil.isNullOrEmpty(secondUidMoney)) |
| | | orderInfo.setSecondUidMoney(new BigDecimal(secondUidMoney)); |
| | | orderInfoMap.put(orderInfo.getOrderId(), orderInfo); |
| | | } |
| | | } catch (FileNotFoundException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | scanner.close(); |
| | | } |
| | | |
| | | return orderInfoMap.get(orderId); |
| | | } |
| | | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | @Override |
| | | public void repireFirstAndSecondLevel(String orderId) throws Exception { |
| | | repireFirstShare(orderId); |
| | | if (1 > 0) |
| | | return; |
| | | OrderInfo info = getOrderInfo(orderId); |
| | | Map<Long, BigDecimal> oldMoneyMap = new HashMap<>(); |
| | | if (info.getFirstUid() != null) |
| | | oldMoneyMap.put(info.getFirstUid(), info.getFirstUidMoney()); |
| | | if (info.getSecondUid() != null) |
| | | oldMoneyMap.put(info.getSecondUid(), info.getSecondUidMoney()); |
| | | |
| | | if (info != null) { |
| | | List<CommonOrder> list = commonOrderMapper.listBySourceTypeAndOrderNo(Constant.SOURCE_TYPE_TAOBAO, |
| | | info.getOrderId()); |
| | | // 查询是否有子红包 |
| | | for (CommonOrder commonOrder : list) { |
| | | HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(commonOrder.getId()); |
| | | if (hongBaoOrder == null) |
| | | continue; |
| | | List<HongBaoV2> hongBaoList = hongBaoV2Mapper.listChildrenById(hongBaoOrder.getHongBaoV2().getId()); |
| | | if (hongBaoList != null && hongBaoList.size() > 0)// 有子红包就不处理了 |
| | | return; |
| | | } |
| | | |
| | | |
| | | |
| | | for (CommonOrder commonOrder : list) { |
| | | SystemEnum system=userInfoService.getUserSystem(commonOrder.getUserInfo().getId()); |
| | | HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(commonOrder.getId()); |
| | | if (hongBaoOrder == null) |
| | | continue; |
| | | HongBaoV2 hongBao = hongBaoOrder.getHongBaoV2(); |
| | | Long firstUid = info.getFirstUid(); |
| | | Long secondUid = info.getSecondUid(); |
| | | // 加入子红包 |
| | | UserInfo boss = null; |
| | | if (firstUid != null) |
| | | boss = userInfoService.selectByPKey(firstUid); |
| | | |
| | | if (boss != null && hongBao.getState() != HongBaoV2.STATE_SHIXIAO) {// 1级BOSS存在且红包未失效,免单不支持多级分销 |
| | | // 插入一级子红包 |
| | | BigDecimal firstRate = hongBaoManageService |
| | | .getFirstInviteRate(boss.getRank() == null ? 0 : boss.getRank(),system); |
| | | if (firstRate.compareTo(new BigDecimal(0)) <= 0) |
| | | return; |
| | | HongBaoV2 firstHongbao = new HongBaoV2(); |
| | | firstHongbao.setBeizhu("2019年7月批量修改"); |
| | | 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 |
| | | || hongBao.getState() == HongBaoV2.STATE_YILINGQU) { |
| | | 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"))); |
| | | if (firstHongbao.getPreGetTime().getTime() < System.currentTimeMillis()) { |
| | | firstHongbao.setGetTime(firstHongbao.getPreGetTime()); |
| | | firstHongbao.setState(HongBaoV2.STATE_YILINGQU); |
| | | } |
| | | } else if (hongBao.getState() == HongBaoV2.STATE_BUKELINGQU) { |
| | | firstHongbao.setMoney( |
| | | MoneyBigDecimalUtil.mul(hongBao.getMoney(), firstRate.divide(new BigDecimal(100)))); |
| | | } |
| | | // 返利为0的不通知 |
| | | if (firstHongbao.getMoney() == null || firstHongbao.getMoney().compareTo(new BigDecimal(0)) <= 0) |
| | | continue; |
| | | |
| | | hongBaoV2Mapper.insertSelective(firstHongbao); |
| | | |
| | | // 插入二级子红包 |
| | | if (secondUid == null) |
| | | boss = null; |
| | | else |
| | | boss = userInfoService.selectByPKey(secondUid); |
| | | |
| | | if (boss != null) {// 二级BOSS存在 |
| | | BigDecimal secondRate = hongBaoManageService |
| | | .getSecondInviteRate(boss.getRank() == null ? 0 : boss.getRank(),system); |
| | | if (secondRate.compareTo(new BigDecimal(0)) <= 0) |
| | | return; |
| | | HongBaoV2 secondHongbao = new HongBaoV2(); |
| | | secondHongbao.setBeizhu("2019年7月批量修改"); |
| | | 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 |
| | | || hongBao.getState() == HongBaoV2.STATE_YILINGQU) { |
| | | 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"))); |
| | | if (secondHongbao.getPreGetTime().getTime() < System.currentTimeMillis()) { |
| | | secondHongbao.setGetTime(secondHongbao.getPreGetTime()); |
| | | secondHongbao.setState(HongBaoV2.STATE_YILINGQU); |
| | | } |
| | | |
| | | } else if (hongBao.getState() == HongBaoV2.STATE_BUKELINGQU) { |
| | | secondHongbao.setMoney(MoneyBigDecimalUtil.mul(hongBao.getMoney(), |
| | | secondRate.divide(new BigDecimal(100)))); |
| | | } |
| | | |
| | | // 返利为0的不统计 |
| | | if (secondHongbao.getMoney() == null |
| | | || secondHongbao.getMoney().compareTo(new BigDecimal(0)) <= 0) |
| | | continue; |
| | | hongBaoV2Mapper.insertSelective(secondHongbao); |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 统计修改后的资金 |
| | | List<CommonOrder> newCommonOrderList = commonOrderMapper.listBySourceTypeAndOrderNo(Constant.SOURCE_TYPE_TAOBAO, |
| | | orderId); |
| | | Map<Long, BigDecimal> newMap = new HashMap<>(); |
| | | if (newCommonOrderList != null) |
| | | for (CommonOrder co : newCommonOrderList) { |
| | | HongBaoOrder newHongBaoOrder = hongBaoOrderService.selectDetailByCommonOrderId(co.getId()); |
| | | if (newHongBaoOrder == null) |
| | | continue; |
| | | HongBaoV2 hongBao = newHongBaoOrder.getHongBaoV2(); |
| | | List<HongBaoV2> children = hongBaoV2Service.listChildrenById(hongBao.getId()); |
| | | if (children != null) |
| | | for (HongBaoV2 child : children) { |
| | | if (newMap.get(child.getUserInfo().getId()) == null) |
| | | newMap.put(child.getUserInfo().getId(), new BigDecimal(0)); |
| | | if (child.getState() == HongBaoV2.STATE_YILINGQU) |
| | | newMap.put(child.getUserInfo().getId(), |
| | | newMap.get(child.getUserInfo().getId()).add(child.getMoney())); |
| | | } |
| | | } |
| | | |
| | | for (Iterator<Long> its = newMap.keySet().iterator(); its.hasNext();) { |
| | | Long uid = its.next(); |
| | | BigDecimal beforeGetMoney = oldMoneyMap.get(uid); |
| | | BigDecimal afterGetMoney = newMap.get(uid); |
| | | OrderRepairHistory history = new OrderRepairHistory(); |
| | | history.setAfterGetMoney(afterGetMoney); |
| | | history.setBeforeGetMoney(beforeGetMoney); |
| | | history.setOrderId(orderId); |
| | | history.setUid(uid); |
| | | orderRepairHistoryService.addOrderRepairHistory(history); |
| | | } |
| | | |
| | | } |
| | | |
| | | private void repireFirstShare(String orderId) throws Exception { |
| | | OrderInfo info = getOrderInfo(orderId); |
| | | Long firstUid = info.getFirstUid(); |
| | | Map<Long, BigDecimal> oldMoneyMap = new HashMap<>(); |
| | | if (info.getFirstUid() != null) |
| | | oldMoneyMap.put(info.getFirstUid(), info.getFirstUidMoney()); |
| | | if (info.getSecondUid() != null) |
| | | oldMoneyMap.put(info.getSecondUid(), info.getSecondUidMoney()); |
| | | |
| | | if (info != null) { |
| | | List<CommonOrder> list = commonOrderMapper.listBySourceTypeAndOrderNo(Constant.SOURCE_TYPE_TAOBAO, |
| | | info.getOrderId()); |
| | | // 查询是否有子红包 |
| | | for (CommonOrder commonOrder : list) { |
| | | HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(commonOrder.getId()); |
| | | if (hongBaoOrder == null) |
| | | continue; |
| | | List<HongBaoV2> hongBaoList = hongBaoV2Mapper.listChildrenById(hongBaoOrder.getHongBaoV2().getId()); |
| | | if (hongBaoList != null && hongBaoList.size() > 0)// 有子红包就不处理了 |
| | | return; |
| | | } |
| | | |
| | | for (CommonOrder commonOrder : list) { |
| | | if (commonOrder.getState() == CommonOrder.STATE_SX || commonOrder.getState() == CommonOrder.STATE_WQ) |
| | | continue; |
| | | // 分享赚 |
| | | |
| | | HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(commonOrder.getId()); |
| | | if (hongBaoOrder == null) |
| | | continue; |
| | | |
| | | SystemEnum system=userInfoService.getUserSystem(commonOrder.getUserInfo().getId()); |
| | | |
| | | HongBaoV2 hongBao = hongBaoOrder.getHongBaoV2(); |
| | | // 4月17日后才有一级分享赚 |
| | | if (commonOrder.getThirdCreateTime().getTime() > TimeUtil.convertToTimeTemp("2019-04-17", |
| | | "yyyy-MM-dd")) { |
| | | UserInfo boss = null; |
| | | if (firstUid != null) |
| | | boss = userInfoService.selectByPKey(firstUid); |
| | | if (boss != null) { |
| | | BigDecimal firstLevelRate = hongBaoManageService.getFirstShareRate(1, |
| | | commonOrder.getThirdCreateTime().getTime(),system); |
| | | HongBaoV2 child = new HongBaoV2(); |
| | | child.setBeizhu("2019年7月批量修改"); |
| | | 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"))); |
| | | |
| | | if (child.getPreGetTime().getTime() < System.currentTimeMillis()) { |
| | | child.setGetTime(child.getPreGetTime()); |
| | | child.setState(HongBaoV2.STATE_YILINGQU); |
| | | } |
| | | |
| | | } |
| | | child.setUserInfo(boss); |
| | | child.setUrank(boss.getRank()); |
| | | child.setVersion(2); |
| | | child.setCreateTime(new Date()); |
| | | hongBaoV2Mapper.insertSelective(child); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | // 统计修改后的资金 |
| | | List<CommonOrder> newCommonOrderList = commonOrderMapper.listBySourceTypeAndOrderNo(Constant.SOURCE_TYPE_TAOBAO, |
| | | orderId); |
| | | Map<Long, BigDecimal> newMap = new HashMap<>(); |
| | | if (newCommonOrderList != null) |
| | | for (CommonOrder co : newCommonOrderList) { |
| | | HongBaoOrder newHongBaoOrder = hongBaoOrderService.selectDetailByCommonOrderId(co.getId()); |
| | | if (newHongBaoOrder == null) |
| | | continue; |
| | | HongBaoV2 hongBao = newHongBaoOrder.getHongBaoV2(); |
| | | List<HongBaoV2> children = hongBaoV2Service.listChildrenById(hongBao.getId()); |
| | | if (children != null) |
| | | for (HongBaoV2 child : children) { |
| | | if (newMap.get(child.getUserInfo().getId()) == null) |
| | | newMap.put(child.getUserInfo().getId(), new BigDecimal(0)); |
| | | if (child.getState() == HongBaoV2.STATE_YILINGQU) |
| | | newMap.put(child.getUserInfo().getId(), |
| | | newMap.get(child.getUserInfo().getId()).add(child.getMoney())); |
| | | } |
| | | } |
| | | |
| | | for (Iterator<Long> its = newMap.keySet().iterator(); its.hasNext();) { |
| | | Long uid = its.next(); |
| | | BigDecimal beforeGetMoney = oldMoneyMap.get(uid); |
| | | BigDecimal afterGetMoney = newMap.get(uid); |
| | | OrderRepairHistory history = new OrderRepairHistory(); |
| | | history.setAfterGetMoney(afterGetMoney); |
| | | history.setBeforeGetMoney(beforeGetMoney); |
| | | history.setOrderId(orderId); |
| | | history.setUid(uid); |
| | | orderRepairHistoryService.addOrderRepairHistory(history); |
| | | } |
| | | |
| | | } |
| | | |
| | | class OrderInfo { |
| | | private String orderId; |
| | | private Long firstUid; |
| | | private BigDecimal firstUidMoney; |
| | | private Long secondUid; |
| | | private BigDecimal secondUidMoney; |
| | | |
| | | public String getOrderId() { |
| | | return orderId; |
| | | } |
| | | |
| | | public void setOrderId(String orderId) { |
| | | this.orderId = orderId; |
| | | } |
| | | |
| | | public Long getFirstUid() { |
| | | return firstUid; |
| | | } |
| | | |
| | | public void setFirstUid(Long firstUid) { |
| | | this.firstUid = firstUid; |
| | | } |
| | | |
| | | public BigDecimal getFirstUidMoney() { |
| | | return firstUidMoney; |
| | | } |
| | | |
| | | public void setFirstUidMoney(BigDecimal firstUidMoney) { |
| | | this.firstUidMoney = firstUidMoney; |
| | | } |
| | | |
| | | public Long getSecondUid() { |
| | | return secondUid; |
| | | } |
| | | |
| | | public void setSecondUid(Long secondUid) { |
| | | this.secondUid = secondUid; |
| | | } |
| | | |
| | | public BigDecimal getSecondUidMoney() { |
| | | return secondUidMoney; |
| | | } |
| | | |
| | | public void setSecondUidMoney(BigDecimal secondUidMoney) { |
| | | this.secondUidMoney = secondUidMoney; |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public List<OrderRepairHistory> listByUid(Long uid) { |
| | | |
| | | return orderRepairHistoryMapper.listByUid(uid); |
| | | } |
| | | |
| | | @Transactional |
| | | @Override |
| | | public void doMoney(Long uid) { |
| | | List<OrderRepairHistory> historyList = listByUid(uid); |
| | | for (int i = 0; i < historyList.size(); i++) { |
| | | if (historyList.get(i).getCreateTime().getTime() < TimeUtil.convertToTimeTemp("2019-07-15 17:00:38", |
| | | "yyyy-MM-dd HH:mm:ss")) { |
| | | historyList.remove(i); |
| | | i--; |
| | | } |
| | | |
| | | } |
| | | |
| | | BigDecimal money = new BigDecimal(0); |
| | | String orders = ""; |
| | | for (OrderRepairHistory history : historyList) { |
| | | money = money.add(history.getAfterGetMoney().subtract(history.getBeforeGetMoney())); |
| | | orders += history.getOrderId() + ","; |
| | | } |
| | | if (money.compareTo(new BigDecimal(0)) > 0)// 资金需要增加 |
| | | { |
| | | try { |
| | | UserMoneyDetail detail = UserMoneyDetailFactory.createSystemEqualize("订单统计异常修复", money, |
| | | new UserInfo(uid)); |
| | | // 系统补齐 |
| | | // 加资金 |
| | | userMoneyService.addUserMoney(uid, money, detail); |
| | | pushMsg(uid, "关于近期订单与资金异常的排查与修复结果通知", |
| | | "尊敬的用户,经仔细核对您账户中的订单,发现您账户中有未统计或错误统计的订单,我们已经为您补齐资金,对应资金已经存入您的账户余额中,敬请查收注查收。感谢信任,板栗快省App终将成为您最信任的购物省钱助手。"); |
| | | userMoneyMsgNotificationService.systemEqualize(uid, "订单统计异常修复", money, userInfoService.getBalance(uid)); |
| | | } catch (UserMoneyDetailException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | } else {// 资金需要减少,不要扣钱 |
| | | pushMsg(uid, "关于近期订单与资金异常的排查与修复结果通知", |
| | | "尊敬的用户,经仔细核对您账户中的订单,发现您账户中有错误统计的订单,我们已经为您恢复正常,所涉及订单多统计出来的资金,不会被扣除,即您账户中的资金将保持不变,已提现的资金,也不会收回,敬请知晓。感谢信任,板栗快省App终将成为您最信任的购物省钱助手。"); |
| | | // userMoneyMsgNotificationService.systemEqualize(uid, "订单统计异常修复", |
| | | // money, userInfoService.getBalance(uid)); |
| | | // 加入提现审核异常保护中 |
| | | ExtractCheckCompensate check = new ExtractCheckCompensate(); |
| | | check.setBeiZhu("7月订单异常系统处理:" + orders); |
| | | check.setCreateTime(new Date()); |
| | | check.setMoney(money); |
| | | check.setUserInfo(new UserInfo(uid)); |
| | | check.setUpdateTime(new Date()); |
| | | extractCheckCompensateMapper.insertSelective(check); |
| | | } |
| | | } |
| | | |
| | | private void pushMsg(Long uid, String title, String content) { |
| | | |
| | | PushInfo pushInfo = new PushInfo(); |
| | | pushInfo.setTitle(title); |
| | | pushInfo.setContent(content); |
| | | pushInfo.setUids(uid + ""); |
| | | JSONObject jsonData = new JSONObject(); |
| | | jsonData.put("url", ""); |
| | | jsonData.put("ios", "全推"); |
| | | jsonData.put("android", "全推"); |
| | | pushInfo.setJsonData(jsonData.toString()); |
| | | pushInfo.setType(PushTypeEnum.ZNX); |
| | | pushInfo.setArrayAndroid("[全推]"); |
| | | pushInfo.setArrayIOS("[全推]"); |
| | | |
| | | pushInfo.setCreateTime(new Date()); |
| | | |
| | | try { |
| | | pushInfoService.save(pushInfo); |
| | | } catch (PushInfoException e) { |
| | | e.printStackTrace(); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | try { |
| | | pushInfoService.handPush(pushInfo.getId()); |
| | | } catch (PushInfoException e) { |
| | | e.printStackTrace(); |
| | | } catch (PushException e) { |
| | | e.printStackTrace(); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | } |
| | | |
| | | } |