From dc5be7d38446f70e6ff86df311119c32b41fe7f8 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期六, 28 十一月 2020 16:37:05 +0800 Subject: [PATCH] 大淘客搜索接口升级 --- fanli/src/main/java/com/yeshi/fanli/service/impl/order/LostOrderServiceImpl.java | 554 +++++++++++++++++++++++++++++-------------------------- 1 files changed, 293 insertions(+), 261 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/LostOrderServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/LostOrderServiceImpl.java index 2fe72bd..44f9ef9 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/LostOrderServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/LostOrderServiceImpl.java @@ -1,5 +1,6 @@ package com.yeshi.fanli.service.impl.order; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -9,6 +10,9 @@ import javax.annotation.Resource; +import com.yeshi.fanli.entity.SystemEnum; +import com.yeshi.fanli.entity.bus.user.UserInfo; +import com.yeshi.fanli.service.inter.user.UserInfoService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -16,311 +20,339 @@ import com.yeshi.fanli.entity.bus.user.HongBaoV2; import com.yeshi.fanli.entity.bus.user.LostOrder; import com.yeshi.fanli.entity.bus.user.Order; +import com.yeshi.fanli.entity.order.CommonOrder; +import com.yeshi.fanli.entity.order.HongBaoOrder; +import com.yeshi.fanli.entity.system.ConfigKeyEnum; import com.yeshi.fanli.service.inter.config.ConfigService; -import com.yeshi.fanli.service.inter.msg.UserOrderMsgNotificationService; import com.yeshi.fanli.service.inter.order.HongBaoOrderService; import com.yeshi.fanli.service.inter.order.LostOrderService; import com.yeshi.fanli.service.inter.order.OrderService; +import com.yeshi.fanli.service.inter.order.msg.UserOrderMsgNotificationService; +import com.yeshi.fanli.service.inter.order.tb.TaoBaoPunishOrderService; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.Utils; @Service public class LostOrderServiceImpl implements LostOrderService { - @Resource - private OrderService orderService; + @Resource + private OrderService orderService; - @Resource - private HongBaoOrderService hongBaoOrderService; + @Resource + private HongBaoOrderService hongBaoOrderService; - @Resource - private LostOrderMapper lostOrderMapper; + @Resource + private LostOrderMapper lostOrderMapper; - @Resource - private ConfigService configService; + @Resource + private ConfigService configService; - @Resource - private UserOrderMsgNotificationService userOrderMsgNotificationService; + @Resource + private UserOrderMsgNotificationService userOrderMsgNotificationService; - @Transactional - @Override - public int addLostOrder(LostOrder lostOrder) { - String orderId = lostOrder.getOrderId(); - Integer type = lostOrder.getType(); - if (type == null) { // 榛樿涓烘窐瀹濊鍗� - lostOrder.setType(1); - type = 1; - } + @Resource + private TaoBaoPunishOrderService taoBaoPunishOrderService; - // 璁㈠崟鏄惁宸茬敵璇� - List<LostOrder> orderList = lostOrderMapper.selectByOrderIdAndType(orderId, type); - if (orderList != null && orderList.size() > 0) { - if (orderList.get(0).getState() == 0 || orderList.get(0).getResultCode() == LostOrder.RESULT_CODE_VERFING) { - return -2; - } else if (orderList.get(0).getState() == 1 - && orderList.get(0).getResultCode() == LostOrder.RESULT_CODE_SUCCESS) { - return -1; - } else { - return -6; - } - } + @Resource + private UserInfoService userInfoService; - // 璁㈠崟宸插瓨鍦� - Order order = orderService.findOrderByOrderIdAndType(orderId, type); - if (order != null) { - return -3; - } + @Transactional + @Override + public int addLostOrder(LostOrder lostOrder) { + String orderId = lostOrder.getOrderId(); + Integer type = lostOrder.getType(); + if (type == null) { // 榛樿涓烘窐瀹濊鍗� + lostOrder.setType(1); + type = 1; + } - // 鏄惁涓哄垎浜禋璁㈠崟 - if (hongBaoOrderService.countByOrderNoAndHongBaoType(orderId, HongBaoV2.TYPE_SHARE_GOODS) > 0) - return -5; + // 鏄惁澶勪簬杩濊璁㈠崟涓� + if (type == 1) { + int count = taoBaoPunishOrderService.countByTradeParentId(orderId); + if (count > 0) { + return -1001; + } + } - // 娆℃暟闄愬埗 - long count = lostOrderMapper.countTodayAppeal(lostOrder.getUserInfo().getId()); - String countMax = configService.get("order_appeal_count_day"); - if (countMax != null && countMax.trim().length() > 0 && count >= Long.parseLong(countMax)) { - return -7; - } + // 璁㈠崟鏄惁宸茬敵璇� + List<LostOrder> orderList = lostOrderMapper.selectByOrderIdAndType(orderId, type); + if (orderList != null && orderList.size() > 0) { + if (orderList.get(0).getState() == 0 || orderList.get(0).getResultCode() == LostOrder.RESULT_CODE_VERFING) { + return -2; + } else if (orderList.get(0).getState() == 1 + && orderList.get(0).getResultCode() == LostOrder.RESULT_CODE_SUCCESS) { + return -1; + } else { + return -6; + } + } - WriteLock lostOrderwriteLock = lostOrderLock.writeLock(); - ReadLock lostOrderReadLock = lostOrderLock.readLock(); - try { - try { - lostOrderwriteLock.lock(); - List<Integer> stateList = new ArrayList<>(); - stateList.add(0); - stateList.add(1); - List<LostOrder> list = lostOrderMapper.listByOrderIdAndTypeAndState(orderId, type, stateList); - if (list.size() > 0) { - LostOrder find = list.get(0); - Integer state = find.getState(); - if (state == 0) { - return -2; - } else if (state == 1) { - return -1; - } - } - } finally { - lostOrderReadLock.lock(); - lostOrderwriteLock.unlock(); - } + // 璁㈠崟宸插瓨鍦� + Order order = orderService.findOrderByOrderIdAndType(orderId, type); + if (order != null) { + return -3; + } - Order or = orderService.getSystemOrderByUid(Constant.TAOBAO, lostOrder.getUserInfo().getId()); - if (or != null) { - boolean b = Utils.isUserOrder(or.getOrderId(), lostOrder.getOrderId()); - if (b) { - lostOrder.setJudge("鍖归厤"); + // 鏄惁涓哄垎浜禋璁㈠崟 + if (hongBaoOrderService.countByOrderNoAndHongBaoType(orderId, HongBaoV2.TYPE_SHARE_GOODS, type) > 0) + return -5; - } else { - lostOrder.setJudge("涓嶅尮閰�"); - } - } else { - lostOrder.setJudge("涓嶅尮閰�"); - } + SystemEnum system = userInfoService.getUserSystem(lostOrder.getUserInfo().getId()); - try { - Order addorder = new Order(); - addorder.setBeizhu("琛ュ崟"); - addorder.setCreatetime(lostOrder.getCreateTime()); - addorder.setOrderId(lostOrder.getOrderId()); - addorder.setOrderType(lostOrder.getType()); - addorder.setState(1); - addorder.setUserInfo(lostOrder.getUserInfo()); + // 娆℃暟闄愬埗 + long count = lostOrderMapper.countTodayAppeal(lostOrder.getUserInfo().getId()); + String countMax = configService.getValue(ConfigKeyEnum.orderAppealCountDay.getKey(), system); + if (countMax != null && countMax.trim().length() > 0 && count >= Long.parseLong(countMax)) { + return -7; + } - boolean b = orderService.addOrder(addorder); - if (b) { - lostOrder.setRemake("澶勭悊鎴愬姛"); - lostOrder.setState(LostOrder.STATE_PASS); - lostOrder.setOrder(order); - } else { - lostOrder.setRemake("璁㈠崟宸插瓨鍦�!"); - lostOrder.setState(LostOrder.STATE_REJECT); - } - } catch (Exception e) { - e.printStackTrace(); - String message = e.getMessage(); - if (message.length() > 255) { - message = message.substring(0, 255); - } - lostOrder.setRemake(e.getMessage()); - lostOrder.setState(LostOrder.STATE_REJECT); - } + WriteLock lostOrderwriteLock = lostOrderLock.writeLock(); + ReadLock lostOrderReadLock = lostOrderLock.readLock(); + try { + try { + lostOrderwriteLock.lock(); + List<Integer> stateList = new ArrayList<>(); + stateList.add(0); + stateList.add(1); + List<LostOrder> list = lostOrderMapper.listByOrderIdAndTypeAndState(orderId, type, stateList); + if (list.size() > 0) { + LostOrder find = list.get(0); + Integer state = find.getState(); + if (state == 0) { + return -2; + } else if (state == 1) { + return -1; + } + } + } finally { + lostOrderReadLock.lock(); + lostOrderwriteLock.unlock(); + } - lostOrder.setResultCode(LostOrder.RESULT_CODE_VERFING); - lostOrder.setHandleTime(System.currentTimeMillis()); - lostOrder.setCreateTime(System.currentTimeMillis()); - lostOrderMapper.insertSelective(lostOrder); + Order or = orderService.getSystemOrderByUid(type, lostOrder.getUserInfo().getId()); + if (or != null) { + boolean b = Utils.isUserOrder(or.getOrderId(), lostOrder.getOrderId()); + if (b) { + lostOrder.setJudge("鍖归厤"); - } finally { - lostOrderReadLock.unlock(); - } - return 0; - } + } else { + lostOrder.setJudge("涓嶅尮閰�"); + } + } else { + lostOrder.setJudge("涓嶅尮閰�"); + } - public void pass(LostOrder lostOrder) { - Order order = new Order(); - order.setBeizhu("琛ュ崟"); - order.setCreatetime(lostOrder.getCreateTime()); - order.setOrderId(lostOrder.getOrderId()); - order.setOrderType(lostOrder.getType()); - order.setState(1); - order.setUserInfo(lostOrder.getUserInfo()); - try { - boolean b = orderService.addOrder(order); - if (b) { - lostOrder.setRemake("澶勭悊鎴愬姛"); - lostOrder.setState(1); - lostOrder.setOrder(order); - } else { - lostOrder.setRemake("璁㈠崟宸插瓨鍦�!"); - lostOrder.setState(2); - } - } catch (Exception e) { - e.printStackTrace(); - String message = e.getMessage(); - if (message.length() > 255) { - message = message.substring(0, 255); - } - lostOrder.setRemake(e.getMessage()); - lostOrder.setState(2); - } - lostOrder.setHandleTime(System.currentTimeMillis()); - lostOrder.setResultCode(LostOrder.RESULT_CODE_VERFING); - lostOrderMapper.updateByPrimaryKeySelective(lostOrder); - } + try { + Order addorder = new Order(); + addorder.setBeizhu("琛ュ崟"); + addorder.setCreatetime(lostOrder.getCreateTime()); + addorder.setOrderId(lostOrder.getOrderId()); + addorder.setOrderType(lostOrder.getType()); + addorder.setState(1); + addorder.setUserInfo(lostOrder.getUserInfo()); - public void reject(LostOrder lostOrder) { - lostOrder.setHandleTime(System.currentTimeMillis()); - lostOrder.setState(2); - lostOrderMapper.updateByPrimaryKeySelective(lostOrder); - } + boolean b = orderService.addOrder(addorder); + if (b) { + lostOrder.setRemake("澶勭悊鎴愬姛"); + lostOrder.setState(LostOrder.STATE_PASS); + lostOrder.setOrder(order); + } else { + lostOrder.setRemake("璁㈠崟宸插瓨鍦�!"); + lostOrder.setState(LostOrder.STATE_REJECT); + } + } catch (Exception e) { + e.printStackTrace(); + String message = e.getMessage(); + if (message.length() > 255) { + message = message.substring(0, 255); + } + lostOrder.setRemake(e.getMessage()); + lostOrder.setState(LostOrder.STATE_REJECT); + } - @Override - public LostOrder getOne(long id) { - return lostOrderMapper.selectByPrimaryKey(id); - } + lostOrder.setResultCode(LostOrder.RESULT_CODE_VERFING); + lostOrder.setHandleTime(System.currentTimeMillis()); + lostOrder.setCreateTime(System.currentTimeMillis()); + lostOrderMapper.insertSelective(lostOrder); - @Override - public List<LostOrder> getLostOrderListByUid(Long uid, int page, int pageSize) { + } finally { + lostOrderReadLock.unlock(); + } + return 0; + } - return lostOrderMapper.listByUidOrderByCreateTimeDesc(uid, (page - 1) * pageSize, pageSize); - } + public void pass(LostOrder lostOrder) { + Order order = new Order(); + order.setBeizhu("琛ュ崟"); + order.setCreatetime(lostOrder.getCreateTime()); + order.setOrderId(lostOrder.getOrderId()); + order.setOrderType(lostOrder.getType()); + order.setState(1); + order.setUserInfo(lostOrder.getUserInfo()); + try { + boolean b = orderService.addOrder(order); + if (b) { + lostOrder.setRemake("澶勭悊鎴愬姛"); + lostOrder.setState(1); + lostOrder.setOrder(order); + } else { + lostOrder.setRemake("璁㈠崟宸插瓨鍦�!"); + lostOrder.setState(2); + } + } catch (Exception e) { + e.printStackTrace(); + String message = e.getMessage(); + if (message.length() > 255) { + message = message.substring(0, 255); + } + lostOrder.setRemake(e.getMessage()); + lostOrder.setState(2); + } + lostOrder.setHandleTime(System.currentTimeMillis()); + lostOrder.setResultCode(LostOrder.RESULT_CODE_VERFING); + lostOrderMapper.updateByPrimaryKeySelective(lostOrder); + } - @Override - public long getLostOrderCountByUid(Long uid) { - return lostOrderMapper.countAllByUid(uid); - } + public void reject(LostOrder lostOrder) { + lostOrder.setHandleTime(System.currentTimeMillis()); + lostOrder.setState(2); + lostOrderMapper.updateByPrimaryKeySelective(lostOrder); + } - @Transactional - @Override - public void processSuceess(String orderId, int orderType) { - // 鏌ヨ璁㈠崟鍙锋槸鍚﹀湪鐢宠瘔鍒楄〃涓� - List<LostOrder> list = lostOrderMapper.selectByOrderIdAndType(orderId, orderType); - if (list == null || list.size() == 0) - return; - for (LostOrder lo : list) { - if (lo.getState() == LostOrder.STATE_PASS && lo.getResultCode() != null - && lo.getResultCode() == LostOrder.RESULT_CODE_VERFING) { - LostOrder update = new LostOrder(); - update.setId(lo.getId()); - update.setResultCode(LostOrder.RESULT_CODE_SUCCESS); - lostOrderMapper.updateByPrimaryKeySelective(update); - Order order = orderService.findOrderByOrderIdAndType(orderId, Order.ORDER_TYPE_TAOBAO); - if (order != null) - // 娣诲姞閫氱煡 - userOrderMsgNotificationService.orderFoundSuccess(lo.getUserInfo().getId(), lo.getOrderId(), - order.getMoney(), 1, new Date(lo.getHandleTime())); - } - } - } + @Override + public LostOrder getOne(long id) { + return lostOrderMapper.selectByPrimaryKey(id); + } - @Override - public void processFail(String orderId, int orderType) { - List<LostOrder> list = lostOrderMapper.selectByOrderIdAndType(orderId, orderType); - if (list != null) - for (LostOrder order : list) { - LostOrder update = new LostOrder(); - update.setId(order.getId()); - update.setResultCode(LostOrder.RESULT_CODE_FAIL); - lostOrderMapper.updateByPrimaryKeySelective(update); - // 娣诲姞閫氱煡 - userOrderMsgNotificationService.orderFoundFail(order.getUserInfo().getId(), order.getOrderId(), null, 1, - new Date(order.getHandleTime())); - } - } + @Override + public List<LostOrder> getLostOrderListByUid(Long uid, int page, int pageSize) { - @Override - public void processFail() { - // 璁㈠崟鐢宠瘔浜哄伐閫氳繃鍚庯紝浣嗘槸闅斾簡3澶╄繕鏈鐞嗘垚鍔熷氨瑙嗕负璇ヨ鍗曠敵璇夊け璐� - List<LostOrder> list = lostOrderMapper.listByMaxHandleTimeAndStateAndResultCode( - System.currentTimeMillis() - 1000 * 60 * 60 * 24 * 3L, LostOrder.STATE_PASS, - LostOrder.RESULT_CODE_VERFING); - if (list != null) - for (LostOrder order : list) { - LostOrder update = new LostOrder(); - update.setId(order.getId()); - update.setResultCode(LostOrder.RESULT_CODE_FAIL); - lostOrderMapper.updateByPrimaryKeySelective(update); - // 娣诲姞閫氱煡 - userOrderMsgNotificationService.orderFoundFail(order.getUserInfo().getId(), order.getOrderId(), null, 1, - new Date(order.getHandleTime())); - } - } + return lostOrderMapper.listByUidOrderByCreateTimeDesc(uid, (page - 1) * pageSize, pageSize); + } - @Override - public void deleteLostOrder(long id) { - lostOrderMapper.deleteByPrimaryKey(id); - } + @Override + public long getLostOrderCountByUid(Long uid) { + return lostOrderMapper.countAllByUid(uid); + } - @Override - public void deleteLostOrderByUid(long uid) { + @Transactional + @Override + public void processSuceess(String orderId, int orderType) { + // 鏌ヨ璁㈠崟鍙锋槸鍚﹀湪鐢宠瘔鍒楄〃涓� + List<LostOrder> list = lostOrderMapper.selectByOrderIdAndType(orderId, orderType); + if (list == null || list.size() == 0) + return; + for (LostOrder lo : list) { + if (lo.getState() == LostOrder.STATE_PASS && lo.getResultCode() != null + && lo.getResultCode() == LostOrder.RESULT_CODE_VERFING) { + LostOrder update = new LostOrder(); + update.setId(lo.getId()); + update.setResultCode(LostOrder.RESULT_CODE_SUCCESS); + lostOrderMapper.updateByPrimaryKeySelective(update); + Order order = orderService.findOrderByOrderIdAndType(orderId, orderType); - lostOrderMapper.deleteByUid(uid); - } + List<HongBaoOrder> hongBaoOrderList = hongBaoOrderService.listDetailByOrderIdAndSourceType(orderId, + orderType); + int goodsCount = 0; + BigDecimal fanMoney = new BigDecimal(0); + for (HongBaoOrder hongBaoOrder : hongBaoOrderList) { + if (hongBaoOrder.getCommonOrder().getState() != CommonOrder.STATE_SX) { + goodsCount += hongBaoOrder.getCommonOrder().getCount(); + fanMoney = fanMoney.add(hongBaoOrder.getHongBaoV2().getMoney()); + } + } - @Override - public Map<String, Object> countByUid(long uid) { - return lostOrderMapper.countByUid(uid); - } + if (order != null) + userOrderMsgNotificationService.orderFoundSuccess(lo.getUserInfo().getId(), orderId, orderType, + Constant.TYPE_REBATE, order.getMoney(), fanMoney, goodsCount, new Date(lo.getCreateTime())); + } + } + } - /** - * 鍚庣鍒楄〃鏌ヨ - * - * @param start - * @param count - * @param key - * @return - */ - @Override - public List<LostOrder> listQuery(long start, int count, String key, Integer state, Integer handleType) { - return lostOrderMapper.listQuery(start, count, key, state, handleType); - } + @Override + public void processFail(String orderId, int orderType) { + List<LostOrder> list = lostOrderMapper.selectByOrderIdAndType(orderId, orderType); + if (list != null) + for (LostOrder order : list) { + LostOrder update = new LostOrder(); + update.setId(order.getId()); + update.setResultCode(LostOrder.RESULT_CODE_FAIL); + lostOrderMapper.updateByPrimaryKeySelective(update); + // 娣诲姞閫氱煡 + userOrderMsgNotificationService.orderFoundFail(order.getUserInfo().getId(), order.getOrderId()); + } + } - @Override - public long countQuery(String key, Integer state, Integer handleType) { - return lostOrderMapper.countQuery(key, state, handleType); - } + @Override + public void processFail() { + // 璁㈠崟鐢宠瘔浜哄伐閫氳繃鍚庯紝浣嗘槸闅斾簡3澶╄繕鏈鐞嗘垚鍔熷氨瑙嗕负璇ヨ鍗曠敵璇夊け璐� + List<LostOrder> list = lostOrderMapper.listByMaxHandleTimeAndStateAndResultCode( + System.currentTimeMillis() - 1000 * 60 * 60 * 24 * 3L, LostOrder.STATE_PASS, + LostOrder.RESULT_CODE_VERFING); + if (list != null) + for (LostOrder order : list) { + LostOrder update = new LostOrder(); + update.setId(order.getId()); + update.setResultCode(LostOrder.RESULT_CODE_FAIL); + lostOrderMapper.updateByPrimaryKeySelective(update); + // 娣诲姞閫氱煡 + userOrderMsgNotificationService.orderFoundFail(order.getUserInfo().getId(), order.getOrderId()); + } + } - @Override - public List<Map<String, Object>> countLostNum(Integer dateType, Integer resultCode, String year, String startTime, - String endTime) throws Exception { - return lostOrderMapper.countLostNum(dateType, resultCode, year, startTime, endTime); - } + @Override + public void deleteLostOrder(long id) { + lostOrderMapper.deleteByPrimaryKey(id); + } - @Override - public List<Map<String, Object>> countAppealMoney(Integer dateType, String year, String startTime, String endTime) - throws Exception { - return lostOrderMapper.countAppealMoney(dateType, year, startTime, endTime); - } + @Override + public void deleteLostOrderByUid(long uid) { - @Override - public List<LostOrder> listByStateAndResultCode(int state, int resultCode, int page, int pageSize) { - return lostOrderMapper.listByStateAndResultCode(state, resultCode, (page - 1) * pageSize, pageSize); - } + lostOrderMapper.deleteByUid(uid); + } - @Override - public void saveLostOrder(LostOrder lostOrder) { - lostOrderMapper.insertSelective(lostOrder); - } + @Override + public Map<String, Object> countByUid(long uid) { + return lostOrderMapper.countByUid(uid); + } + + /** + * 鍚庣鍒楄〃鏌ヨ + * + * @param start + * @param count + * @param key + * @return + */ + @Override + public List<LostOrder> listQuery(long start, int count, String key, Integer state, Integer handleType, + Integer type, SystemEnum system) { + return lostOrderMapper.listQuery(start, count, key, state, handleType, type,system); + } + + @Override + public long countQuery(String key, Integer state, Integer handleType, Integer type, SystemEnum system) { + return lostOrderMapper.countQuery(key, state, handleType, type,system); + } + + @Override + public Integer countLostOrderNum(String preDay, int resultCode) { + return lostOrderMapper.countLostOrderNum(preDay, resultCode); + } + + @Override + public BigDecimal countAppealMoney(String preDay) { + return lostOrderMapper.countAppealMoney(preDay); + } + + @Override + public List<LostOrder> listByStateAndResultCode(int state, int resultCode, int page, int pageSize) { + return lostOrderMapper.listByStateAndResultCode(state, resultCode, (page - 1) * pageSize, pageSize); + } + + @Override + public void saveLostOrder(LostOrder lostOrder) { + lostOrderMapper.insertSelective(lostOrder); + } } -- Gitblit v1.8.0