fanli/src/main/java/com/yeshi/fanli/controller/TestController.java
@@ -8,7 +8,9 @@ import java.io.PrintWriter; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Set; import java.util.UUID; import javax.annotation.Resource; @@ -67,6 +69,7 @@ import net.sf.json.JSONArray; import net.sf.json.JSONObject; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; @Controller @@ -105,15 +108,11 @@ @Resource private InviteMaterialService inviteMaterialService; @Resource private DynamicInfoDao dynamicInfoDao; @Resource private JedisPool jedisPool; @RequestMapping(value = "testimg") public void testImg(HttpServletRequest request, PrintWriter out) { @@ -479,8 +478,6 @@ } } /** * 插入邀请素材 * @@ -515,17 +512,30 @@ } } JsonUtil.printMode(out, null, JsonUtil.loadTrueResult("操作成功")); // JsonUtil.printMode(out, null, JsonUtil.loadTrueResult(JsonUtil.getSimpleGson().toJson(list))); // JsonUtil.printMode(out, null, // JsonUtil.loadTrueResult(JsonUtil.getSimpleGson().toJson(list))); } catch (Exception e) { JsonUtil.printMode(out, null, JsonUtil.loadFalseResult("操作失败")); e.printStackTrace(); } } @RequestMapping(value = "getWaitingThreadsCount") public void getWaitingThreadsCount(PrintWriter out) { out.print(Constant.waitingThreadSet.size()); } @RequestMapping(value = "getBinFaRedisKey") public void getPinFaRedisKey(PrintWriter out) { JSONArray array = new JSONArray(); Jedis jedis = jedisPool.getResource(); try { Set<String> sets = jedis.keys("rs-*"); for (Iterator<String> its = sets.iterator(); its.hasNext();) array.add(its.next()); } finally { jedisPool.returnResource(jedis); } out.println(array.toString()); } } fanli/src/main/java/com/yeshi/fanli/dao/mybatis/order/CommonOrderMapper.java
@@ -257,16 +257,15 @@ */ List<CommonOrder> listBySourceTypeAndTradeId(@Param("sourceType") int sourceType, @Param("tradeId") String tradeId); /** * 根据来源和交易ID获取订单列表 * * @param sourceType * @param tradeIdList * @return */ List<CommonOrder> listBySourceTypeAndTradeIdList(@Param("sourceType") int sourceType, @Param("tradeIdList") List<String> tradeIdList); List<CommonOrder> listBySourceTypeAndTradeIdList(@Param("sourceType") int sourceType, @Param("tradeIdList") List<String> tradeIdList); /** * @@ -282,12 +281,23 @@ @Param("state") Integer state, @Param("minTime") Long minTime, @Param("maxTime") Long maxTime, @Param("start") long start, @Param("count") int count); /** * 根据订单号查询 * * @param orderNO * @return */ List<CommonOrder> getByOrderNo(@Param("uid") Long uid, @Param("orderNo") String orderNo); /** * 根据用户ID查询 * @param uid * @param stateList * @param start * @param count * @return */ List<CommonOrder> listByUid(@Param("uid")Long uid,@Param("stateList") List<Integer> stateList,@Param("start") long start,@Param("count") int count); } fanli/src/main/java/com/yeshi/fanli/dto/order/CommonOrderAddResultDTO.java
New file @@ -0,0 +1,38 @@ package com.yeshi.fanli.dto.order; import com.yeshi.fanli.entity.order.CommonOrder; public class CommonOrderAddResultDTO { public final static int TYPE_ADD = 1; public final static int TYPE_UPDATE = 2; public final static int TYPE_NOUPDATE = 3; private CommonOrder commonOrder; private int type; public CommonOrderAddResultDTO() { } public CommonOrderAddResultDTO(CommonOrder commonOrder, int type) { this.commonOrder = commonOrder; this.type = type; } public CommonOrder getCommonOrder() { return commonOrder; } public void setCommonOrder(CommonOrder commonOrder) { this.commonOrder = commonOrder; } public int getType() { return type; } public void setType(int type) { this.type = type; } } fanli/src/main/java/com/yeshi/fanli/mapping/order/CommonOrderMapper.xml
@@ -193,20 +193,26 @@ </select> <select id="listBySourceTypeAndTradeIdList" resultMap="BaseResultMap">SELECT * <select id="listBySourceTypeAndTradeIdList" resultMap="BaseResultMap"> SELECT * FROM yeshi_ec_common_order co WHERE co.co_source_type=#{sourceType} yeshi_ec_common_order co WHERE co.co_source_type=#{sourceType} <if test="tradeIdList!=null"> <foreach collection="tradeIdList" item="tradeId" open=" and (" close=")" separator=" or "> <foreach collection="tradeIdList" item="tradeId" open=" and (" close=")" separator=" or "> co.co_trade_id=#{tradeId} </foreach> </if> </select> <select id="listBySourceTypeAndStateAndThirdCrateTime" resultMap="BaseResultMap">SELECT * <select id="listBySourceTypeAndStateAndThirdCrateTime" resultMap="BaseResultMap"> SELECT * FROM yeshi_ec_common_order co WHERE co.co_source_type=#{sourceType} yeshi_ec_common_order co WHERE co.co_source_type=#{sourceType} <if test="state!=null"> and co_state=#{state} @@ -560,7 +566,8 @@ (v2.`hb_type` = 5 OR v2.`hb_type` = 6 OR v2.`hb_type` = 7 OR v2.`hb_type` = 21 OR v2.`hb_type` = 22 ) ) hbp ON hbp.hb_pid=ho.`ho_hongbao_id` LEFT JOIN yeshi_ec_common_order co ON co.`co_id`=ho.`ho_order_id` WHERE hbp.hb_id IS NOT NULL and hbp.hb_state!=4 co.`co_id`=ho.`ho_order_id` WHERE hbp.hb_id IS NOT NULL and hbp.hb_state!=4 <if test="day != null and day == 1"> <!-- 今天 --> AND TO_DAYS(co.`co_third_create_time`) = TO_DAYS(NOW()) @@ -751,7 +758,8 @@ totalMoney, hb.hb_state AS hongBaoState, hb.`hb_type` AS hongBaoType, hb.`hb_get_time` AS accountTime, hb.`hb_pre_get_time` AS preAccountTime, co.* FROM yeshi_ec_hongbao_order ho LEFT JOIN (SELECT * FROM yeshi_ec_hongbao_v2 v2 WHERE 1=1 (SELECT * FROM yeshi_ec_hongbao_v2 v2 WHERE 1=1 <include refid="SELECT_PARAM_HONGBAO_TYPE" /> <!-- 红包类型 --> <include refid="SELECT_HONGBAO_STATE" /> @@ -782,13 +790,15 @@ totalMoney, hb.hb_state AS hongBaoState, hb.`hb_type` AS hongBaoType, hb.`hb_get_time` AS accountTime, hb.`hb_pre_get_time` AS preAccountTime, co.* FROM yeshi_ec_hongbao_order ho LEFT JOIN (SELECT * FROM yeshi_ec_hongbao_v2 v2 WHERE 1=1 (SELECT * FROM yeshi_ec_hongbao_v2 v2 WHERE 1=1 <include refid="SELECT_PARAM_HONGBAO_TYPE" /> <!-- 红包类型 --> <include refid="SELECT_HONGBAO_STATE" /> <!-- 红包状态 --> )hb ON hb.hb_id=ho.`ho_hongbao_id` LEFT JOIN yeshi_ec_common_order co ON co.`co_id`=ho.`ho_order_id` LEFT JOIN yeshi_ec_common_order co ON co.`co_id`=ho.`ho_order_id` WHERE hb.hb_id IS NOT NULL <include refid="SELECT_PARAM_ORDER_STATE" /> <!-- 订单状态 --> @@ -840,7 +850,8 @@ <include refid="SELECT_HONGBAO_STATE" /> <!-- 红包状态 --> )hb ON hb.hb_id=ho.`ho_hongbao_id` LEFT JOIN yeshi_ec_common_order co ON co.`co_id`=ho.`ho_order_id` LEFT JOIN yeshi_ec_common_order co ON co.`co_id`=ho.`ho_order_id` WHERE hb.hb_id IS NOT NULL <include refid="SELECT_PARAM_ORDER_STATE" /> <!-- 订单状态 --> @@ -884,7 +895,8 @@ FROM yeshi_ec_hongbao_v2 v2 WHERE v2.`hb_uid`= #{uid} AND <![CDATA[v2.`hb_type`<> 10 ]]> )hb ON IF(hb.hb_pid IS NULL,hb.hb_id,hb.hb_pid)=ho.`ho_hongbao_id` LEFT JOIN yeshi_ec_common_order co ON co.`co_id`=ho.`ho_order_id` WHERE hb.hb_id IS NOT NULL AND co.co_order_no = #{orderNo} AND co.`co_source_type` = #{sourceType} WHERE hb.hb_id IS NOT NULL AND co.co_order_no = #{orderNo} AND co.`co_source_type` = #{sourceType} <if test="orderState != null"> AND co.co_state = #{orderState} <!-- 已收货 --> @@ -893,7 +905,24 @@ </select> <select id="getByOrderNo" resultMap="BaseResultMap"> SELECT * FROM yeshi_ec_common_order co SELECT * FROM yeshi_ec_common_order co WHERE co_uid = #{uid} AND co_order_no=#{orderNo} </select> <select id="listByUid" resultMap="BaseResultMap"> SELECT * FROM yeshi_ec_common_order co WHERE co_uid = #{uid} <if test="stateList!=null"> <foreach collection="stateList" separator=" or " open="and (" item="state" close=")"> co_state=#{state} </foreach> </if> limit #{start},#{count} </select> </mapper> fanli/src/main/java/com/yeshi/fanli/service/impl/jd/JDOrderProcessServiceImpl.java
File was deleted fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java
@@ -20,6 +20,7 @@ import com.yeshi.fanli.dao.mybatis.order.CommonOrderMapper; import com.yeshi.fanli.dao.mybatis.order.CommonOrderTradeIdMapMapper; import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoWeiQuanOrderMapper; import com.yeshi.fanli.dto.order.CommonOrderAddResultDTO; import com.yeshi.fanli.dto.pdd.PDDGoodsDetail; import com.yeshi.fanli.entity.accept.AcceptData; import com.yeshi.fanli.entity.bus.user.HongBaoV2; @@ -728,8 +729,9 @@ @Transactional @Override public List<CommonOrder> addTaoBaoOrder(List<TaoBaoOrder> taoBaoOrders, Long uid) throws CommonOrderException { List<CommonOrder> commonOrderList = new ArrayList<>(); public List<CommonOrderAddResultDTO> addTaoBaoOrder(List<TaoBaoOrder> taoBaoOrders, Long uid) throws CommonOrderException { List<CommonOrderAddResultDTO> commonOrderList = new ArrayList<>(); // 判断所有的订单状态 int invalidCount = 0; for (TaoBaoOrder tb : taoBaoOrders) { @@ -789,8 +791,9 @@ @Transactional @Override public List<CommonOrder> addPDDOrder(List<PDDOrder> pddOrderList, Long uid) throws CommonOrderException { List<CommonOrder> commonOrderList = new ArrayList<>(); public List<CommonOrderAddResultDTO> addPDDOrder(List<PDDOrder> pddOrderList, Long uid) throws CommonOrderException { List<CommonOrderAddResultDTO> commonOrderList = new ArrayList<>(); // 判断所有的订单状态 int invalidCount = 0; for (PDDOrder order : pddOrderList) { @@ -838,8 +841,8 @@ @Transactional @Override public List<CommonOrder> addJDOrder(JDOrder jdOrder, Long uid) throws CommonOrderException { List<CommonOrder> commonOrderList = new ArrayList<>(); public List<CommonOrderAddResultDTO> addJDOrder(JDOrder jdOrder, Long uid) throws CommonOrderException { List<CommonOrderAddResultDTO> commonOrderList = new ArrayList<>(); // 判断所有的订单状态 int invalidCount = 0; for (JDOrderItem tb : jdOrder.getOrderItemList()) { @@ -907,7 +910,7 @@ * @param commonOrder */ @Transactional private CommonOrder addCommonOrder(CommonOrder commonOrder) throws CommonOrderException { private CommonOrderAddResultDTO addCommonOrder(CommonOrder commonOrder) throws CommonOrderException { // 判断商品是否存在 if (commonOrder == null) throw new CommonOrderException(1, "订单为空"); @@ -950,13 +953,13 @@ // 插入映射,保证交易ID的完整性 commonOrderTradeIdMapMapper.insertSelective(new CommonOrderTradeIdMap(commonOrder.getId(), commonOrder.getTradeId(), new Date(), commonOrder.getSourceType())); return commonOrder; return new CommonOrderAddResultDTO(commonOrder, CommonOrderAddResultDTO.TYPE_ADD); } else {// 修改 // 已经结算,已经失效,状态未改变的订单不处理 if (oldCommonOrder.getState() == CommonOrder.STATE_JS || oldCommonOrder.getState() == CommonOrder.STATE_SX || oldCommonOrder.getState() == CommonOrder.STATE_WQ || (oldCommonOrder.getState().intValue() == commonOrder.getState())) { return oldCommonOrder; return new CommonOrderAddResultDTO(oldCommonOrder, CommonOrderAddResultDTO.TYPE_NOUPDATE); } // 交易ID一致才修改 if (commonOrder.getTradeId() != null @@ -972,9 +975,10 @@ updateCommonOrder.setUpdateTime(new Date()); updateCommonOrder.setTradeId(commonOrder.getTradeId()); commonOrderMapper.updateByPrimaryKeySelective(updateCommonOrder); return commonOrderMapper.selectByPrimaryKey(updateCommonOrder.getId()); return new CommonOrderAddResultDTO(commonOrderMapper.selectByPrimaryKey(updateCommonOrder.getId()), CommonOrderAddResultDTO.TYPE_UPDATE); } else return oldCommonOrder; return new CommonOrderAddResultDTO(oldCommonOrder, CommonOrderAddResultDTO.TYPE_NOUPDATE); } } @@ -1451,4 +1455,15 @@ return commonOrderMapper.getByOrderNo(uid, orderNO); } @Override public CommonOrder selectLatestValidByUid(Long uid) { List<Integer> stateList = new ArrayList<>(); stateList.add(CommonOrder.STATE_FK); stateList.add(CommonOrder.STATE_JS); List<CommonOrder> commonOrderList = commonOrderMapper.listByUid(uid, stateList, 0, 1); if (commonOrderList == null || commonOrderList.size() == 0) return null; return commonOrderList.get(0); } } fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java
@@ -26,6 +26,7 @@ import com.yeshi.fanli.dao.mybatis.order.OrderMapper; import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoWeiQuanOrderMapper; import com.yeshi.fanli.dto.HongBao; import com.yeshi.fanli.dto.order.CommonOrderAddResultDTO; import com.yeshi.fanli.entity.bus.user.HongBaoV2; import com.yeshi.fanli.entity.bus.user.Order; import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo; @@ -49,10 +50,12 @@ import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.inter.hongbao.AccountDetailsHongBaoMapService; import com.yeshi.fanli.service.inter.hongbao.HongBaoV2Service; import com.yeshi.fanli.service.inter.jd.JDOrderService; import com.yeshi.fanli.service.inter.msg.UserMoneyMsgNotificationService; import com.yeshi.fanli.service.inter.order.CommonOrderService; import com.yeshi.fanli.service.inter.order.LostOrderService; import com.yeshi.fanli.service.inter.order.OrderProcessService; import com.yeshi.fanli.service.inter.pdd.PDDOrderService; import com.yeshi.fanli.service.inter.taobao.TaoBaoBuyRelationMapService; import com.yeshi.fanli.service.inter.taobao.TaoBaoOrderService; import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService; @@ -67,6 +70,7 @@ import com.yeshi.fanli.util.TaoBaoConstant; import com.yeshi.fanli.util.TimeUtil; import com.yeshi.fanli.util.cmq.HongBaoRecieveCMQManager; import com.yeshi.fanli.util.cmq.PlaceOrderCMQManager; import com.yeshi.fanli.util.factory.UserMoneyDetailFactory; import com.yeshi.fanli.util.jd.JDApiUtil; import com.yeshi.fanli.util.pinduoduo.PinDuoDuoApiUtil; @@ -125,6 +129,43 @@ @Resource private HongBaoV2Service hongBaoV2Service; @Resource private JDOrderService jdOrderService; @Resource private PDDOrderService pddOrderService; /** * 是否是分享订单 * * @param order * @return */ private boolean isShareOrder(TaoBaoOrder order) { List<TaoBaoUnionConfig> configList = taoBaoUnionConfigService.getConfigByTypeCache(PidUser.TYPE_FANLI_ANDROID); String pid = String.format("mm_%s_%s_%s", configList.get(0).getAccountId(), order.getSourceMediaId(), order.getAdPositionId()); if (!StringUtil.isNullOrEmpty(order.getSpecialId()) || pid.equalsIgnoreCase(TaoBaoConstant.TAOBAO_RELATION_AS_SPECIAL_PID)) {// 设置渠道ID当做会员运营ID的位置ID return false; } else if (!StringUtil.isNullOrEmpty(order.getRelationId())) { return true; } else { // 通过红包查询 CommonOrder commonOrder = commonOrderService.selectBySourceTypeAndTradeId(Constant.SOURCE_TYPE_TAOBAO, order.getTradeId()); if (commonOrder != null) { HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(commonOrder.getId()); if (hongBaoOrder != null && hongBaoOrder.getHongBaoV2() != null && hongBaoOrder.getHongBaoV2().getType() == HongBaoV2.TYPE_SHARE_GOODS) { return true; } } return false; } } @Override public synchronized void processOrder(Map<String, List<TaoBaoOrder>> orders) { @@ -947,11 +988,21 @@ orderMapper.updateByPrimaryKeySelective(updateOrder); // 用第一个子订单锁定用户 List<CommonOrder> commonOrderList = null; List<CommonOrderAddResultDTO> commonOrderList = null; try { commonOrderList = commonOrderService.addTaoBaoOrder(orderList, uid); hongBaoV2Service.addHongBao(commonOrderList, HongBaoV2.TYPE_ZIGOU); hongBaoV2Service.addHongBao(convertCommonOrder(commonOrderList), HongBaoV2.TYPE_ZIGOU); if (isCommonOrderAllAdd(commonOrderList)) { Order order = new Order(); order.setOrderId(orderId); order.setOrderType(Constant.SOURCE_TYPE_TAOBAO); order.setUserInfo(new UserInfo(uid)); try { PlaceOrderCMQManager.getInstance().addPlaceOrderMsg(order); } catch (Exception e) { } } } catch (CommonOrderException e) { try { LogHelper.errorDetailInfo(e, "addTaoBaoOrder或addHongBao出错", "订单号:" + orderId); @@ -999,14 +1050,40 @@ // 用第一个子订单锁定用户 try { List<CommonOrder> commonOrders = commonOrderService.addTaoBaoOrder(orderList, uid); hongBaoV2Service.addHongBao(commonOrders, HongBaoV2.TYPE_SHARE_GOODS); List<CommonOrderAddResultDTO> commonOrders = commonOrderService.addTaoBaoOrder(orderList, uid); hongBaoV2Service.addHongBao(convertCommonOrder(commonOrders), HongBaoV2.TYPE_SHARE_GOODS); if (isCommonOrderAllAdd(commonOrders)) { Order order = new Order(); order.setOrderId(orderId); order.setOrderType(Constant.SOURCE_TYPE_TAOBAO); order.setUserInfo(new UserInfo(uid)); try { PlaceOrderCMQManager.getInstance().addPlaceOrderMsg(order); } catch (Exception e) { } } } catch (CommonOrderException e) { e.printStackTrace(); } catch (HongBaoException e1) { e1.printStackTrace(); } } } /** * 是否为分享订单 * * @param order * @return */ private boolean isShareOrder(JDOrder order) { if (order == null || order.getOrderItemList() == null || order.getOrderItemList().size() == 0) return false; Long positionId = order.getOrderItemList().get(0).getPositionId(); if (positionId == JDApiUtil.POSITION_SHARE) {// 分享订单 return true; } return false; } @Override @@ -1092,8 +1169,18 @@ } try { List<CommonOrder> commonOrderList = commonOrderService.addJDOrder(jdOrder, uid); hongBaoV2Service.addHongBao(commonOrderList, HongBaoV2.TYPE_ZIGOU); List<CommonOrderAddResultDTO> commonOrderList = commonOrderService.addJDOrder(jdOrder, uid); hongBaoV2Service.addHongBao(convertCommonOrder(commonOrderList), HongBaoV2.TYPE_ZIGOU); if (isCommonOrderAllAdd(commonOrderList)) { Order order = new Order(); order.setOrderId(jdOrder.getOrderId() + ""); order.setOrderType(Constant.SOURCE_TYPE_TAOBAO); order.setUserInfo(new UserInfo(uid)); try { PlaceOrderCMQManager.getInstance().addPlaceOrderMsg(order); } catch (Exception e) { } } } catch (CommonOrderException e) { try { LogHelper.errorDetailInfo(e, "addJDOrder或addHongBao出错", "订单号:" + jdOrder.getOrderId()); @@ -1116,23 +1203,47 @@ * @param uid */ @Transactional private void processShareJDOrder(JDOrder order, Long uid) { private void processShareJDOrder(JDOrder jdOrder, Long uid) { try { List<CommonOrder> commonOrderList = commonOrderService.addJDOrder(order, uid); hongBaoV2Service.addHongBao(commonOrderList, HongBaoV2.TYPE_SHARE_GOODS); List<CommonOrderAddResultDTO> commonOrderList = commonOrderService.addJDOrder(jdOrder, uid); hongBaoV2Service.addHongBao(convertCommonOrder(commonOrderList), HongBaoV2.TYPE_SHARE_GOODS); if (isCommonOrderAllAdd(commonOrderList)) { Order order = new Order(); order.setOrderId(jdOrder.getOrderId() + ""); order.setOrderType(Constant.SOURCE_TYPE_TAOBAO); order.setUserInfo(new UserInfo(uid)); try { PlaceOrderCMQManager.getInstance().addPlaceOrderMsg(order); } catch (Exception e) { } } } catch (CommonOrderException e) { try { LogHelper.errorDetailInfo(e, "addJDOrder或addHongBao出错", "订单号:" + order.getOrderId()); LogHelper.errorDetailInfo(e, "addJDOrder或addHongBao出错", "订单号:" + jdOrder.getOrderId()); } catch (Exception e1) { e1.printStackTrace(); } } catch (HongBaoException e) { try { LogHelper.errorDetailInfo(e, "addJDOrder或addHongBao出错", "订单号:" + order.getOrderId()); LogHelper.errorDetailInfo(e, "addJDOrder或addHongBao出错", "订单号:" + jdOrder.getOrderId()); } catch (Exception e1) { e1.printStackTrace(); } } } /** * 是否是分享赚订单 * * @param order * @return */ private boolean isShareOrder(PDDOrder pddOrder) { String positionId = pddOrder.getpId(); if (PinDuoDuoApiUtil.PID_SHARE.equalsIgnoreCase(positionId)) return true; else return false; } /** @@ -1208,8 +1319,18 @@ try { List<PDDOrder> pddOrderList = new ArrayList<>(); pddOrderList.add(pddOrder); List<CommonOrder> commonOrderList = commonOrderService.addPDDOrder(pddOrderList, uid); hongBaoV2Service.addHongBao(commonOrderList, HongBaoV2.TYPE_ZIGOU); List<CommonOrderAddResultDTO> commonOrderList = commonOrderService.addPDDOrder(pddOrderList, uid); hongBaoV2Service.addHongBao(convertCommonOrder(commonOrderList), HongBaoV2.TYPE_ZIGOU); if (isCommonOrderAllAdd(commonOrderList)) { Order order = new Order(); order.setOrderId(pddOrder.getOrderSn()); order.setOrderType(Constant.SOURCE_TYPE_TAOBAO); order.setUserInfo(new UserInfo(uid)); try { PlaceOrderCMQManager.getInstance().addPlaceOrderMsg(order); } catch (Exception e) { } } } catch (CommonOrderException e) { try { LogHelper.errorDetailInfo(e, "addPDDOrder或addHongBao出错", "订单号:" + pddOrder.getOrderSn()); @@ -1232,21 +1353,31 @@ * @param uid */ @Transactional private void processSharePDDOrder(PDDOrder order, Long uid) { private void processSharePDDOrder(PDDOrder pddOrder, Long uid) { try { List<PDDOrder> pddOrderList = new ArrayList<>(); pddOrderList.add(order); List<CommonOrder> commonOrderList = commonOrderService.addPDDOrder(pddOrderList, uid); hongBaoV2Service.addHongBao(commonOrderList, HongBaoV2.TYPE_SHARE_GOODS); pddOrderList.add(pddOrder); List<CommonOrderAddResultDTO> commonOrderList = commonOrderService.addPDDOrder(pddOrderList, uid); hongBaoV2Service.addHongBao(convertCommonOrder(commonOrderList), HongBaoV2.TYPE_SHARE_GOODS); if (isCommonOrderAllAdd(commonOrderList)) { Order order = new Order(); order.setOrderId(pddOrder.getOrderSn()); order.setOrderType(Constant.SOURCE_TYPE_TAOBAO); order.setUserInfo(new UserInfo(uid)); try { PlaceOrderCMQManager.getInstance().addPlaceOrderMsg(order); } catch (Exception e) { } } } catch (CommonOrderException e) { try { LogHelper.errorDetailInfo(e, "addJDOrder或addHongBao出错", "订单号:" + order.getOrderId()); LogHelper.errorDetailInfo(e, "addJDOrder或addHongBao出错", "订单号:" + pddOrder.getOrderId()); } catch (Exception e1) { e1.printStackTrace(); } } catch (HongBaoException e) { try { LogHelper.errorDetailInfo(e, "addJDOrder或addHongBao出错", "订单号:" + order.getOrderId()); LogHelper.errorDetailInfo(e, "addJDOrder或addHongBao出错", "订单号:" + pddOrder.getOrderId()); } catch (Exception e1) { e1.printStackTrace(); } @@ -1272,4 +1403,53 @@ } } @Override public boolean isShareOrder(CommonOrder commonOrder) { switch (commonOrder.getSourceType()) { case Constant.SOURCE_TYPE_TAOBAO: return isShareOrder(taoBaoOrderService.selectByTradeId(commonOrder.getTradeId())); case Constant.SOURCE_TYPE_JD: return isShareOrder(jdOrderService.selectDetailByOrderId(Long.parseLong(commonOrder.getOrderNo()))); case Constant.SOURCE_TYPE_PDD: return isShareOrder(pddOrderService.selectByOrderSn(commonOrder.getOrderNo()).get(0)); } return false; } /** * 转为普通订单 * * @param dtoList * @return */ private List<CommonOrder> convertCommonOrder(List<CommonOrderAddResultDTO> dtoList) { List<CommonOrder> commonOrderList = new ArrayList<>(); if (dtoList != null) for (CommonOrderAddResultDTO dto : dtoList) commonOrderList.add(dto.getCommonOrder()); return commonOrderList; } /** * 是否全是增加 * * @param list * @return */ private boolean isCommonOrderAllAdd(List<CommonOrderAddResultDTO> list) { if (list == null || list.size() == 0) return false; int addCount = 0; if (list != null) for (CommonOrderAddResultDTO dto : list) { if (dto.getType() == CommonOrderAddResultDTO.TYPE_ADD) addCount++; } if (addCount == list.size()) return true; else return false; } } fanli/src/main/java/com/yeshi/fanli/service/impl/pdd/PDDOrderProcessServiceImpl.java
File was deleted fanli/src/main/java/com/yeshi/fanli/service/inter/jd/JDOrderProcessService.java
File was deleted fanli/src/main/java/com/yeshi/fanli/service/inter/order/CommonOrderService.java
@@ -5,6 +5,7 @@ import java.util.List; import java.util.Map; import com.yeshi.fanli.dto.order.CommonOrderAddResultDTO; import com.yeshi.fanli.entity.accept.AcceptData; import com.yeshi.fanli.entity.jd.JDOrder; import com.yeshi.fanli.entity.order.CommonOrder; @@ -76,8 +77,9 @@ * 到账状态 * @return */ public List<CommonOrderVO> getOrderByUid(AcceptData acceptData, Integer page, Long uid, Integer state, Integer type, Integer orderState, String orderNo, String startTime, String endTime, Integer dateType, Integer source) throws CommonOrderException; public List<CommonOrderVO> getOrderByUid(AcceptData acceptData, Integer page, Long uid, Integer state, Integer type, Integer orderState, String orderNo, String startTime, String endTime, Integer dateType, Integer source) throws CommonOrderException; /** * 统计订单-根据红包类型 自购 邀请 分享 @@ -93,7 +95,8 @@ * @param uid * @return */ public long countBonusOrderNumber(Long uid, Integer type, Integer isToday, String startTime, String endTime, Integer source); public long countBonusOrderNumber(Long uid, Integer type, Integer isToday, String startTime, String endTime, Integer source); /** * 统计订单 @@ -101,7 +104,8 @@ * @param uid * @return */ public BigDecimal countBonusOrderMoney(Long uid, Integer type, Integer isToday, String startTime, String endTime, Integer source); public BigDecimal countBonusOrderMoney(Long uid, Integer type, Integer isToday, String startTime, String endTime, Integer source); /** * 统计奖金订单数量、金额 @@ -145,7 +149,7 @@ * @return * @throws CommonOrderException */ public List<CommonOrder> addTaoBaoOrder(List<TaoBaoOrder> taoBaoOrder, Long uid) throws CommonOrderException; public List<CommonOrderAddResultDTO> addTaoBaoOrder(List<TaoBaoOrder> taoBaoOrder, Long uid) throws CommonOrderException; /** * 缓存拼多多类普通订单 @@ -155,7 +159,7 @@ * @return * @throws CommonOrderException */ public List<CommonOrder> addPDDOrder(List<PDDOrder> pddOrderList, Long uid) throws CommonOrderException; public List<CommonOrderAddResultDTO> addPDDOrder(List<PDDOrder> pddOrderList, Long uid) throws CommonOrderException; /** * 缓存京东普通订单 @@ -165,7 +169,7 @@ * @return * @throws CommonOrderException */ public List<CommonOrder> addJDOrder(JDOrder jdOrder, Long uid) throws CommonOrderException; public List<CommonOrderAddResultDTO> addJDOrder(JDOrder jdOrder, Long uid) throws CommonOrderException; /** * 根据用户ID,订单状态,结算时间统计订单数量 @@ -219,10 +223,12 @@ */ public List<CommonOrderVO> listQuery(long start, int count, Integer keyType, String key, Integer state, Integer type, Integer orderState, String startTime, String endTime, Integer source) throws CommonOrderException; Integer type, Integer orderState, String startTime, String endTime, Integer source) throws CommonOrderException; public long countQuery(Integer keyType, String key, Integer state, Integer type, Integer orderState, String startTime, String endTime, Integer source) throws CommonOrderException; /** * 查询订单 * @@ -283,10 +289,19 @@ /** * 查询订单 -根据订单号 * * @param uid * @param orderNO * @return */ public List<CommonOrder> getByOrderNo(Long uid, String orderNO); /** * 根据用户ID查询最近一条有效的订单 * * @param uid * @return */ public CommonOrder selectLatestValidByUid(Long uid); } fanli/src/main/java/com/yeshi/fanli/service/inter/order/OrderProcessService.java
@@ -5,6 +5,7 @@ import com.yeshi.fanli.entity.bus.user.HongBaoV2; import com.yeshi.fanli.entity.jd.JDOrder; import com.yeshi.fanli.entity.order.CommonOrder; import com.yeshi.fanli.entity.pdd.PDDOrder; import com.yeshi.fanli.entity.taobao.TaoBaoOrder; import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder; @@ -97,15 +98,24 @@ /** * 处理拼多多订单 * * @param pddOrder */ public void processPDDOrder(PDDOrder pddOrder); /** * 根据淘宝订单的排序值修复常规订单的排序值 * * @param orderId */ public void repairCommonOrderByByTaoBaoOrder(String orderId); /** * 是否是分享赚订单 * * @param commonOrder * @return */ public boolean isShareOrder(CommonOrder commonOrder); } fanli/src/main/java/com/yeshi/fanli/service/inter/pdd/PDDOrderProcessService.java
File was deleted fanli/src/main/java/com/yeshi/fanli/util/SpringContext.java
@@ -20,8 +20,12 @@ import com.yeshi.fanli.dto.money.UserMoneyChangeDTO; import com.yeshi.fanli.entity.bus.user.AlipayTransferResultInfo; import com.yeshi.fanli.entity.bus.user.HongBaoV2; import com.yeshi.fanli.entity.bus.user.Order; import com.yeshi.fanli.entity.bus.user.ThreeSale; import com.yeshi.fanli.entity.bus.user.UserInfo; import com.yeshi.fanli.entity.jd.JDOrder; import com.yeshi.fanli.entity.order.CommonOrder; import com.yeshi.fanli.entity.order.HongBaoOrder; import com.yeshi.fanli.entity.pdd.PDDOrder; import com.yeshi.fanli.entity.push.PushQueueRecord; import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; @@ -36,6 +40,8 @@ import com.yeshi.fanli.service.inter.lable.BoutiqueAutoRuleService; import com.yeshi.fanli.service.inter.lable.LabelService; import com.yeshi.fanli.service.inter.money.UserMoneyDebtService; import com.yeshi.fanli.service.inter.order.CommonOrderService; import com.yeshi.fanli.service.inter.order.HongBaoOrderService; import com.yeshi.fanli.service.inter.order.OrderProcessService; import com.yeshi.fanli.service.inter.pdd.PDDOrderService; import com.yeshi.fanli.service.inter.push.IOSPushService; @@ -47,6 +53,7 @@ import com.yeshi.fanli.util.cmq.HongBaoRecieveCMQManager; import com.yeshi.fanli.util.cmq.JDOrderCMQManager; import com.yeshi.fanli.util.cmq.PDDOrderCMQManager; import com.yeshi.fanli.util.cmq.PlaceOrderCMQManager; import com.yeshi.fanli.util.cmq.ThreeSaleCMQManager; import com.yeshi.fanli.util.cmq.UserMoneyChangeCMQManager; import com.yeshi.fanli.util.taobao.TaoKeApiUtil; @@ -111,6 +118,12 @@ @Resource private IntegralGetService integralGetService; @Resource private CommonOrderService commonOrderService; @Resource private HongBaoOrderService hongBaoOrderService; private static boolean isInited = false; public void onApplicationEvent(ContextRefreshedEvent arg0) { @@ -146,6 +159,7 @@ doPDDOrderJob();// 拼多多订单处理 doImportantTaoBaoGoodsUpdateJob();// 淘宝重要商品的信息更新 doHongBaoRecieveIntegralGetJob();// 返利到账,金币增加 doPlaceOrderIntegralJob();// 下单赠送金币任务 } } @@ -743,7 +757,121 @@ } } }); } private boolean isFirstValidOrder(String orderId, int sourceType, Long uid) { CommonOrder commonOrder = commonOrderService.selectLatestValidByUid(uid); if (commonOrder != null && commonOrder.getOrderNo().equalsIgnoreCase(orderId) && sourceType == commonOrder.getSourceType()) return true; else return false; } // 下单获取金币任务 public void doPlaceOrderIntegralJob() { executor.execute(new Runnable() { @Override public void run() { while (true) { Map<String, Order> map = PlaceOrderCMQManager.getInstance() .consumeQueueMsg(PlaceOrderCMQManager.QUEUE_INTEGRAL, 16); if (map != null) { // 是否是首单 for (Iterator<String> its = map.keySet().iterator(); its.hasNext();) { String key = its.next(); Order order = map.get(key); // 统计订单下的用户所获得的返利金额 List<CommonOrder> list = commonOrderService.listBySourceTypeAndOrderId(order.getOrderType(), order.getOrderId()); Map<Long, BigDecimal> hongBaoMoney = new HashMap<>(); if (list != null) for (CommonOrder commonOrder : list) { HongBaoOrder hongBaoOrder = hongBaoOrderService .selectDetailByCommonOrderId(commonOrder.getId()); if (hongBaoOrder != null && hongBaoOrder.getHongBaoV2() != null) { Long mainUid = hongBaoOrder.getHongBaoV2().getUserInfo().getId(); if (hongBaoMoney.get(mainUid) == null) hongBaoMoney.put(mainUid, new BigDecimal(0)); hongBaoMoney.put(mainUid, hongBaoMoney.get(mainUid).add(hongBaoOrder.getHongBaoV2().getMoney())); // 查询上级 List<HongBaoV2> children = hongBaoV2Service .listChildrenById(hongBaoOrder.getHongBaoV2().getId()); if (children != null) { for (HongBaoV2 hongBao : children) { Long uid = hongBao.getUserInfo().getId(); if (hongBaoMoney.get(uid) == null) hongBaoMoney.put(uid, new BigDecimal(0)); hongBaoMoney.put(uid, hongBaoMoney.get(uid).add(hongBao.getMoney())); } } } } if (isFirstValidOrder(order.getOrderId(), order.getOrderType(), order.getUserInfo().getId())) {// 有效的首单 if (hongBaoMoney.get(order.getUserInfo().getId()) == null || hongBaoMoney .get(order.getUserInfo().getId()).compareTo(new BigDecimal("0")) <= 0) { // TODO 分享奖金是0 } // 获取上两级数据 UserInfo boss = threeSaleSerivce.getBoss(order.getUserInfo().getId()); if (boss != null) {// 判断上级的红包 if (hongBaoMoney.get(boss.getId()) == null || hongBaoMoney.get(boss.getId()).compareTo(new BigDecimal("0")) <= 0) { // TODO 补偿资金 } } } else {// 自购订单 UserInfo boss = threeSaleSerivce.getBoss(order.getUserInfo().getId()); if (boss != null) {// 判断上级的红包 if (hongBaoMoney.get(boss.getId()) == null || hongBaoMoney.get(boss.getId()).compareTo(new BigDecimal("0")) <= 0) { // TODO 补偿资金1级 } } boss = threeSaleSerivce.getBoss(boss.getId()); if (boss != null) {// 判断上级的红包 if (hongBaoMoney.get(boss.getId()) == null || hongBaoMoney.get(boss.getId()).compareTo(new BigDecimal("0")) <= 0) { // TODO 补偿资金2级 } } } } } } } }); } // 抖音广告监控 public void doPlaceOrderAdJob() { executor.execute(new Runnable() { @Override public void run() { while (true) { Map<String, Order> map = PlaceOrderCMQManager.getInstance() .consumeQueueMsg(PlaceOrderCMQManager.QUEUE_AD, 16); if (map != null) { // 是否是首单 for (Iterator<String> its = map.keySet().iterator(); its.hasNext();) { String key = its.next(); Order order = map.get(key); if (isFirstValidOrder(order.getOrderId(), order.getOrderType(), order.getUserInfo().getId())) {// 有效的首单 // TODO 抖音的数据回调 } } } } } }); } } fanli/src/main/java/com/yeshi/fanli/util/cmq/PlaceOrderCMQManager.java
New file @@ -0,0 +1,92 @@ package com.yeshi.fanli.util.cmq; import java.util.HashMap; import java.util.List; import java.util.Map; import org.yeshi.utils.CMQUtil; import com.google.gson.Gson; import com.qcloud.cmq.Message; import com.yeshi.fanli.entity.bus.user.Order; import com.yeshi.fanli.entity.order.CommonOrder; public class PlaceOrderCMQManager { private static String secretId = "AKIDTlpgJhLjOozvd6QI2XnpfGbgV4NQJk25"; private static String secretKey = "xhCSUHo55oHUQ6XicFcmfIgspX0EEzWo"; private static PlaceOrderCMQManager placeOrderCMQManager; private static CMQUtil cmqUtil; private final static String TOPIC_NAME = "topic_place_order"; public static String QUEUE_AD = TOPIC_NAME + "_" + "ad"; public static String QUEUE_INTEGRAL = TOPIC_NAME + "_" + "integral"; public static String SUBSCRIBE_AD = "ad"; public static String SUBSCRIBE_INTEGRAL = "integral"; static { cmqUtil = CMQUtil.getInstance(secretId, secretKey); // 创建主题,添加订阅 cmqUtil.createTopic(TOPIC_NAME); // 用户券订阅 String[] subscripts = new String[] { SUBSCRIBE_AD, SUBSCRIBE_INTEGRAL }; String[] queues = new String[] { QUEUE_AD, QUEUE_INTEGRAL }; for (int i = 0; i < subscripts.length; i++) { String queueName = queues[i]; try { cmqUtil.createQueue(queueName); } catch (Exception e) { } try { cmqUtil.subscribeTopic(TOPIC_NAME, subscripts[i], queueName); } catch (Exception e) { } } } public static PlaceOrderCMQManager getInstance() { if (placeOrderCMQManager == null) placeOrderCMQManager = new PlaceOrderCMQManager(); return placeOrderCMQManager; } /** * 下单 * * @param order(只需要订单号与sourceType) */ public void addPlaceOrderMsg(Order order) { if (order == null) return; cmqUtil.publishTopicMessage(TOPIC_NAME, new Gson().toJson(order)); } /** * 消费队列消息 * * @param queueName * @param count * @return */ public Map<String, Order> consumeQueueMsg(String queueName, int count) { List<Message> list = cmqUtil.recieveMsg(count, queueName); Map<String, Order> map = new HashMap<>(); if (list != null) for (Message msg : list) { String result = msg.msgBody; Order dto = new Gson().fromJson(result, Order.class); map.put(msg.receiptHandle, dto); } return map; } public void deleteQueueMsg(String queueName, String receiptHandle) { cmqUtil.deleteMsg(queueName, receiptHandle); } } fanli/src/main/java/com/yeshi/fanli/util/factory/goods/GoodsDetailVOFactory.java
@@ -160,7 +160,7 @@ goodsInfo.setMoneyInfo(moneyInfoVO); // 券信息 if (goods.getCouponAmount().compareTo(BigDecimal.valueOf(0)) > 0) { if (goods.getCouponAmount()!=null&&goods.getCouponAmount().compareTo(BigDecimal.valueOf(0)) > 0) { // 计算券后价 BigDecimal sub = goods.getPrice().subtract(goods.getCouponStartPrice()); if (sub.compareTo(BigDecimal.valueOf(0)) >= 0) {