From 012232edc4dac15517c69c2af3934f901e818b7c Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期四, 26 十二月 2019 15:57:53 +0800
Subject: [PATCH] 帮助中心 + 新人红包统计
---
fanli/src/main/java/com/yeshi/fanli/service/impl/order/UserOrderWeiQuanRecordServiceImpl.java | 110 ++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 89 insertions(+), 21 deletions(-)
diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/UserOrderWeiQuanRecordServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/UserOrderWeiQuanRecordServiceImpl.java
index 5435fa2..d4da58d 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/UserOrderWeiQuanRecordServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/UserOrderWeiQuanRecordServiceImpl.java
@@ -1,54 +1,69 @@
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) {
@@ -58,18 +73,18 @@
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); // 娣樺疂
@@ -82,6 +97,59 @@
}
}
}
-
+
+ @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);
+ }
+ }
+ }
}
--
Gitblit v1.8.0