From 7220cf2e1bef64b4a26904dfa07b7488d82c181f Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期二, 09 六月 2020 18:04:28 +0800
Subject: [PATCH] 订单
---
fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderRepairServiceImpl.java | 249 +++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 228 insertions(+), 21 deletions(-)
diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderRepairServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderRepairServiceImpl.java
index ccb03db..7c8b376 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderRepairServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderRepairServiceImpl.java
@@ -19,6 +19,7 @@
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;
@@ -26,7 +27,9 @@
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;
@@ -34,25 +37,31 @@
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.HongBaoException;
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.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.taobao.TaoBaoOrderService;
-import com.yeshi.fanli.service.inter.taobao.TaoBaoWeiQuanOrderService;
+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.UserMoneyService;
import com.yeshi.fanli.service.inter.user.UserSystemCouponRecordService;
import com.yeshi.fanli.service.inter.user.UserSystemCouponService;
import com.yeshi.fanli.util.Constant;
@@ -61,9 +70,11 @@
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.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 {
@@ -128,7 +139,16 @@
@Resource
private UserMoneyService userMoneyService;
- @Transactional
+ @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涓嶵aoBaoOrder鐨勯浼版敹鐩�
@@ -270,7 +290,7 @@
wholeOrderState = CommonOrder.STATE_WHOLE_ORDER_BUFENYOUXIAO;
for (TaoBaoOrder taoBaoOrder : taoBaoOrderList) {
- CommonOrder commonOrder = TaoBaoOrderUtil.convert(taoBaoOrder);
+ CommonOrder commonOrder = CommonOrderFactory.create(taoBaoOrder);
commonOrder.setStateWholeOrder(wholeOrderState);
commonOrder.setCommonOrderGoods(getCommonOrderGoods(taoBaoOrder.getAuctionId()));
commonOrder.setUserInfo(new UserInfo(mainUid));
@@ -372,10 +392,10 @@
}
// 淇敼璁㈠崟淇℃伅
- @Transactional
+ @Transactional(rollbackFor = Exception.class)
private void updateOrderInfo(TaoBaoOrder taoBaoOrder, Long commonOrderId) throws Exception {
HongBaoOrder hongBaoOrder = hongBaoOrderService.selectDetailByCommonOrderId(commonOrderId);
- CommonOrder newCommonOrder = TaoBaoOrderUtil.convert(taoBaoOrder);
+ CommonOrder newCommonOrder = CommonOrderFactory.create(taoBaoOrder);
List<CommonOrderGoods> commonGoodsList = commonOrderGoodsMapper
.listByGoodsIdAndGoodsType(taoBaoOrder.getAuctionId() + "", newCommonOrder.getSourceType());
CommonOrderGoods cog = null;
@@ -413,7 +433,8 @@
CommonOrder commonOrder = commonOrderService.selectByPrimaryKey(newCommonOrder.getId());
if (hongBaoOrder.getHongBaoV2().getType() == HongBaoV2.TYPE_ZIGOU) {
- BigDecimal fanliRate = hongBaoManageService.getFanLiRate(commonOrder.getCreateTime().getTime());
+ BigDecimal fanliRate = hongBaoManageService.getFanLiRate(UserLevelEnum.daRen,
+ commonOrder.getCreateTime().getTime());
// 鍏嶅崟澶勭悊
boolean mianDan = false;
List<CommonOrder> orderList = commonOrderService.listBySourceTypeAndOrderId(Constant.SOURCE_TYPE_TAOBAO,
@@ -423,7 +444,8 @@
if (commonOrder.getState() == CommonOrder.STATE_JS)
payMent = commonOrder.getSettlement();
if (payMent.compareTo(new BigDecimal(10)) < 0) {
- mianDan = userSystemCouponRecordService.isSuccessMianDan(commonOrder.getOrderNo());
+ mianDan = userSystemCouponRecordService.isSuccessMianDan(commonOrder.getSourceType(),
+ commonOrder.getOrderNo());
}
}
@@ -500,7 +522,8 @@
}
} else if (hongBaoOrder.getHongBaoV2().getType() == HongBaoV2.TYPE_SHARE_GOODS) {
- BigDecimal fanliRate = hongBaoManageService.getShareRate(commonOrder.getCreateTime().getTime());
+ BigDecimal fanliRate = hongBaoManageService.getShareRate(UserLevelEnum.daRen,
+ commonOrder.getCreateTime().getTime());
List<ShareGoodsActivityOrder> list = shareGoodsActivityOrderService
.listByOrderIdAndUid(commonOrder.getUserInfo().getId(), commonOrder.getOrderNo());
if (list != null && list.size() > 0) {
@@ -579,7 +602,7 @@
}
}
- @Transactional
+ @Transactional(rollbackFor = Exception.class)
public void addOrder(CommonOrder commonOrder, int type, Long firstUid, Long secondUid) throws Exception {
// 澧炲姞commonOrder
commonOrder.setCreateTime(commonOrder.getThirdCreateTime());
@@ -618,7 +641,8 @@
// 娣诲姞绾㈠寘
if (type == HongBaoV2.TYPE_ZIGOU) {// 鑾峰彇鑷喘鐨勮繑鍒╂瘮渚�
- BigDecimal fanliRate = hongBaoManageService.getFanLiRate(commonOrder.getCreateTime().getTime());
+ BigDecimal fanliRate = hongBaoManageService.getFanLiRate(UserLevelEnum.daRen,
+ commonOrder.getCreateTime().getTime());
// 鏌ヨ鏄惁鏈夊厤鍗曡鍒�
BigDecimal mianDanMoney = null;
if (commonOrder.getState() == CommonOrder.STATE_JS || commonOrder.getState() == CommonOrder.STATE_FK) {
@@ -794,7 +818,8 @@
if (commonOrder.getState() == CommonOrder.STATE_SX || commonOrder.getState() == CommonOrder.STATE_WQ)
return;
// 鍒嗕韩璧�
- BigDecimal shareRate = hongBaoManageService.getShareRate(commonOrder.getCreateTime().getTime());
+ BigDecimal shareRate = hongBaoManageService.getShareRate(UserLevelEnum.daRen,
+ commonOrder.getCreateTime().getTime());
HongBaoV2 hongBao = new HongBaoV2();
hongBao.setBeizhu("2019骞�7鏈堟壒閲忎慨鏀�");
@@ -880,6 +905,7 @@
@Transactional(propagation = Propagation.REQUIRED)
private void deleteByCommonOrderId(Long commonOrderId) {
+ commonOrderMapper.deleteByPrimaryKey(commonOrderId);
HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(commonOrderId);
if (hongBaoOrder == null || hongBaoOrder.getHongBaoV2() == null)
return;
@@ -890,7 +916,7 @@
}
hongBaoV2Mapper.deleteByPrimaryKey(hongBaoOrder.getHongBaoV2().getId());
hongBaoOrderMapper.deleteByPrimaryKey(hongBaoOrder.getId());
- commonOrderMapper.deleteByPrimaryKey(commonOrderId);
+
}
@Transactional
@@ -940,8 +966,12 @@
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)
@@ -964,6 +994,8 @@
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();
@@ -1098,6 +1130,118 @@
}
+ 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;
@@ -1156,22 +1300,85 @@
@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.add(history.getAfterGetMoney().subtract(history.getBeforeGetMoney()));
+ money = money.add(history.getAfterGetMoney().subtract(history.getBeforeGetMoney()));
+ orders += history.getOrderId() + ",";
}
if (money.compareTo(new BigDecimal(0)) > 0)// 璧勯噾闇�瑕佸鍔�
{
try {
- UserMoneyDetail detail = UserMoneyDetailFactory.createSystemEqualize(null, money, new UserInfo(uid));
+ 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 {// 璧勯噾闇�瑕佸噺灏�
+ } else {// 璧勯噾闇�瑕佸噺灏�,涓嶈鎵i挶
+ pushMsg(uid, "鍏充簬杩戞湡璁㈠崟涓庤祫閲戝紓甯哥殑鎺掓煡涓庝慨澶嶇粨鏋滈�氱煡",
+ "灏婃暚鐨勭敤鎴凤紝缁忎粩缁嗘牳瀵规偍璐︽埛涓殑璁㈠崟锛屽彂鐜版偍璐︽埛涓湁閿欒缁熻鐨勮鍗曪紝鎴戜滑宸茬粡涓烘偍鎭㈠姝e父锛屾墍娑夊強璁㈠崟澶氱粺璁″嚭鏉ョ殑璧勯噾锛屼笉浼氳鎵i櫎锛屽嵆鎮ㄨ处鎴蜂腑鐨勮祫閲戝皢淇濇寔涓嶅彉锛屽凡鎻愮幇鐨勮祫閲戯紝涔熶笉浼氭敹鍥烇紝鏁鐭ユ檽銆傛劅璋俊浠伙紝鏉挎牀蹇渷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();
}
}
--
Gitblit v1.8.0