| | |
| | | package com.yeshi.fanli.service.impl.order;
|
| | |
|
| | | import java.math.BigDecimal;
|
| | | import java.math.RoundingMode;
|
| | | import java.util.Date;
|
| | | import java.util.List;
|
| | |
|
| | | import javax.annotation.Resource;
|
| | |
|
| | | import org.springframework.stereotype.Service;
|
| | | import org.springframework.transaction.annotation.Transactional;
|
| | |
|
| | | import com.yeshi.fanli.dao.mybatis.order.UserOrderWeiQuanRecordMapper;
|
| | | import com.yeshi.fanli.dto.HongBaoDTO;
|
| | | import com.yeshi.fanli.entity.bus.user.HongBaoV2;
|
| | | import com.yeshi.fanli.entity.order.CommonOrder;
|
| | | import com.yeshi.fanli.entity.order.HongBaoOrder;
|
| | | import com.yeshi.fanli.entity.order.UserOrderWeiQuanRecord;
|
| | | import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanDrawBack;
|
| | | import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder;
|
| | | import com.yeshi.fanli.service.inter.money.tb.TaoBaoWeiQuanDrawBackService;
|
| | | 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.UserOrderWeiQuanRecordService;
|
| | | import com.yeshi.fanli.service.inter.order.tb.TaoBaoWeiQuanOrderService;
|
| | | import com.yeshi.fanli.util.MoneyBigDecimalUtil;
|
| | | import com.yeshi.fanli.util.Constant;
|
| | |
|
| | | @Service
|
| | | public class UserOrderWeiQuanRecordServiceImpl implements UserOrderWeiQuanRecordService {
|
| | | |
| | |
|
| | | @Resource
|
| | | private UserOrderWeiQuanRecordMapper userOrderWeiQuanRecordMapper;
|
| | | |
| | |
|
| | | @Resource
|
| | | private TaoBaoWeiQuanOrderService taoBaoWeiQuanOrderService;
|
| | | |
| | |
|
| | | @Resource
|
| | | private TaoBaoWeiQuanDrawBackService taoBaoWeiQuanDrawBackService;
|
| | | |
| | |
|
| | | @Resource
|
| | | private HongBaoV2Service hongBaoV2Service;
|
| | | |
| | |
|
| | | @Resource
|
| | | private CommonOrderService commonOrderService;
|
| | |
|
| | | @Resource
|
| | | private HongBaoOrderService hongBaoOrderService;
|
| | |
|
| | | @Override
|
| | | public void syncPrevious() {
|
| | | BigDecimal zero = new BigDecimal(0);
|
| | | for (int page = 1; page < Integer.MAX_VALUE; page++) {
|
| | | List<TaoBaoWeiQuanOrder> list = taoBaoWeiQuanOrderService.listByBeginWeiQuan(page, 100);
|
| | | if (list == null || list.isEmpty()) |
| | | if (list == null || list.isEmpty())
|
| | | break;
|
| | | |
| | | for (TaoBaoWeiQuanOrder weiQuanOrder: list) {
|
| | |
|
| | | for (TaoBaoWeiQuanOrder weiQuanOrder : list) {
|
| | | String orderItemId = weiQuanOrder.getOrderItemId();
|
| | | |
| | |
|
| | | List<HongBaoDTO> listV2 = hongBaoV2Service.listByOrderTradeId(orderItemId);
|
| | | for (HongBaoDTO hongBaoV2: listV2) {
|
| | | for (HongBaoDTO hongBaoV2 : listV2) {
|
| | | Long uid = hongBaoV2.getUserInfo().getId();
|
| | | TaoBaoWeiQuanDrawBack drawBack= taoBaoWeiQuanDrawBackService.selectByOrderItemIdAndUid(orderItemId, uid);
|
| | | |
| | | TaoBaoWeiQuanDrawBack drawBack = taoBaoWeiQuanDrawBackService.selectByOrderItemIdAndUid(orderItemId,
|
| | | uid);
|
| | |
|
| | | int state = 0;
|
| | | BigDecimal money = null;
|
| | | if (drawBack != null) {
|
| | |
| | | money = drawBackMoney;
|
| | | }
|
| | | }
|
| | | |
| | |
|
| | | if (money == null) {
|
| | | // (维权金额/结算金额) * 返利金额 |
| | | // (维权金额/结算金额) * 返利金额
|
| | | BigDecimal wqmoney = weiQuanOrder.getMoney();
|
| | | money = wqmoney.divide(hongBaoV2.getSettlement(), 2, BigDecimal.ROUND_DOWN)
|
| | | .multiply(hongBaoV2.getMoney()).setScale(2, BigDecimal.ROUND_DOWN);
|
| | | |
| | | // 大于返利金额 则等于返利金额
|
| | | money = wqmoney.multiply(hongBaoV2.getMoney()).divide(hongBaoV2.getSettlement(), 2,
|
| | | BigDecimal.ROUND_UP);
|
| | |
|
| | | // 大于返利金额 则等于返利金额
|
| | | if (money.compareTo(hongBaoV2.getMoney()) > 0)
|
| | | money = hongBaoV2.getMoney();
|
| | | }
|
| | | |
| | |
|
| | | UserOrderWeiQuanRecord weiQuanRecord = new UserOrderWeiQuanRecord();
|
| | | weiQuanRecord.setUid(uid);
|
| | | weiQuanRecord.setSourceType(1); // 淘宝
|
| | |
| | | }
|
| | | }
|
| | | }
|
| | | |
| | |
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | @Override
|
| | | public void addTaoBaoWeiQuan(TaoBaoWeiQuanOrder order) {
|
| | | if (!order.getState().contains("维权成功"))
|
| | | return;
|
| | | // 查询是否存在红包
|
| | | CommonOrder commonOrder = commonOrderService.selectBySourceTypeAndTradeId(Constant.SOURCE_TYPE_TAOBAO,
|
| | | order.getOrderItemId());
|
| | | if (commonOrder == null)
|
| | | return;
|
| | | HongBaoOrder hongBaoOrder = hongBaoOrderService.selectDetailByCommonOrderId(commonOrder.getId());
|
| | | if (hongBaoOrder == null || hongBaoOrder.getHongBaoV2() == null)
|
| | | return;
|
| | |
|
| | | BigDecimal settleMoney = hongBaoOrder.getCommonOrder().getSettlement();
|
| | | HongBaoV2 mainHongBao = hongBaoOrder.getHongBaoV2();
|
| | | UserOrderWeiQuanRecord ur = userOrderWeiQuanRecordMapper.selectByOrderInfoAndUid(
|
| | | mainHongBao.getUserInfo().getId(), order.getOrderItemId(), Constant.SOURCE_TYPE_TAOBAO);
|
| | | if (ur == null) {
|
| | | UserOrderWeiQuanRecord record = new UserOrderWeiQuanRecord();
|
| | | record.setCreateTime(new Date());
|
| | | record.setMoney(hongBaoOrder.getHongBaoV2().getMoney().multiply(order.getMoney()).divide(settleMoney, 2,
|
| | | RoundingMode.UP));
|
| | | record.setSourceType(Constant.SOURCE_TYPE_TAOBAO);
|
| | | record.setState(0);
|
| | | record.setTradeId(order.getOrderItemId());
|
| | | record.setUid(hongBaoOrder.getHongBaoV2().getUserInfo().getId());
|
| | |
|
| | | if (record.getMoney().compareTo(hongBaoOrder.getHongBaoV2().getMoney()) > 0)
|
| | | record.setMoney(hongBaoOrder.getHongBaoV2().getMoney());
|
| | |
|
| | | userOrderWeiQuanRecordMapper.insertSelective(record);
|
| | | }
|
| | | List<HongBaoV2> children = hongBaoV2Service.listChildrenById(mainHongBao.getId());
|
| | | for (HongBaoV2 v2 : children) {
|
| | | UserOrderWeiQuanRecord record = userOrderWeiQuanRecordMapper.selectByOrderInfoAndUid(
|
| | | v2.getUserInfo().getId(), order.getOrderItemId(), Constant.SOURCE_TYPE_TAOBAO);
|
| | | if (record == null) {
|
| | | record = new UserOrderWeiQuanRecord();
|
| | | record.setCreateTime(new Date());
|
| | | record.setMoney(v2.getMoney().multiply(order.getMoney()).divide(settleMoney, 2, RoundingMode.UP));
|
| | | record.setSourceType(Constant.SOURCE_TYPE_TAOBAO);
|
| | | record.setState(0);
|
| | | record.setTradeId(order.getOrderItemId());
|
| | | record.setUid(v2.getUserInfo().getId());
|
| | |
|
| | | if (record.getMoney().compareTo(v2.getMoney()) > 0)
|
| | | record.setMoney(v2.getMoney());
|
| | |
|
| | | userOrderWeiQuanRecordMapper.insertSelective(record);
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | @Override
|
| | | public UserOrderWeiQuanRecord selectByOrderInfoAndUid(Long uid, String tradeId, int sourceType) {
|
| | | UserOrderWeiQuanRecord record = userOrderWeiQuanRecordMapper.selectByOrderInfoAndUid(uid, tradeId, sourceType);
|
| | |
|
| | | return record;
|
| | | }
|
| | |
|
| | | |
| | | @Override
|
| | | public Integer countWeiQaunOrderNumberByDate(String preDay) {
|
| | | return userOrderWeiQuanRecordMapper.countWeiQaunOrderNumberByDate(preDay);
|
| | | }
|
| | | |
| | | |
| | | |
| | | @Override
|
| | | public BigDecimal countWeiQaunOrderMoneyByDate(String preDay) {
|
| | | return userOrderWeiQuanRecordMapper.countWeiQaunOrderMoneyByDate(preDay);
|
| | | }
|
| | | }
|