fanli/src/main/java/com/yeshi/fanli/dao/mybatis/order/OrderTeamRewardMapper.java
@@ -1,5 +1,6 @@ package com.yeshi.fanli.dao.mybatis.order; import java.util.Date; import java.util.List; import org.apache.ibatis.annotations.Param; @@ -96,4 +97,28 @@ * @throws */ long countCanSettle(@Param("uid") Long uid); /** * 获取某个时间点可以结算的用户ID列表 * @Title: listCanSettleUid * @Description: * @param time * @param start * @param count * @return * List<Long> 返回类型 * @throws */ List<Long> listCanSettleUid( @Param("time") Date time, @Param("start") long start, @Param("count") int count); /** * 获取某个时间点可以结算的用户数量 * @Title: countCanSettleUid * @Description: * @param time * @return * Long 返回类型 * @throws */ Long countCanSettleUid(Date time); } fanli/src/main/java/com/yeshi/fanli/job/order/taobao/UpdateOrderJob.java
@@ -28,6 +28,7 @@ import com.yeshi.fanli.service.inter.common.DataMonitorService; import com.yeshi.fanli.service.inter.order.CommonOrderService; import com.yeshi.fanli.service.inter.order.LostOrderService; import com.yeshi.fanli.service.inter.order.OrderMoneySettleService; import com.yeshi.fanli.service.inter.order.OrderProcessService; import com.yeshi.fanli.service.inter.order.OrderService; import com.yeshi.fanli.service.inter.order.tb.TaoBaoOrderService; @@ -80,6 +81,9 @@ @Resource private CommonOrderService commonOrderService; @Resource private OrderMoneySettleService orderMoneySettleService; /** * 新版获取普通订单 @@ -381,6 +385,18 @@ return ReturnT.SUCCESS; } // 团队奖励到账 @XxlJob("fanliOrderTeamRewardHandler") public ReturnT<String> fanliOrderTeamRewardHandler(String param) throws Exception { if (StringUtil.isNullOrEmpty(param)) orderProcessService.fanliOrderTeamReward(); else { orderProcessService.fanliOrderTeamReward(Long.parseLong(param)); } return ReturnT.SUCCESS; } // 维权订单处理-处理最近60天的 // 30分钟一次 @Scheduled(cron = "0 0/30 * * * ? ") fanli/src/main/java/com/yeshi/fanli/mapping/order/OrderTeamRewardMapper.xml
@@ -141,9 +141,11 @@ otr_subsidy_id = #{0} </select> <select id="listCanSettleByUid" resultMap="BaseResultMap">SELECT * FROM yeshi_ec_order_team_reward WHERE <select id="listCanSettleByUid" resultMap="BaseResultMap">SELECT * FROM yeshi_ec_order_team_reward WHERE otr_uid =#{uid} AND otr_state=1 AND NOW()>otr_pre_get_time =#{uid} AND otr_state=1 AND NOW()>otr_pre_get_time limit #{start},#{count} </select> @@ -155,5 +157,23 @@ </select> <select id="listCanSettleUid" resultType="java.lang.Long"> SELECT t.`otr_uid` FROM yeshi_ec_order_team_reward t WHERE t.`otr_state`=1 AND #{time} > t.`otr_pre_get_time` GROUP BY t.`otr_uid` LIMIT #{start},#{count} </select> <select id="countCanSettleUid" resultType="java.lang.Long" parameterType="java.util.Date"> SELECT COUNT(*) FROM ( SELECT t.otr_uid FROM yeshi_ec_order_team_reward t WHERE t.otr_state=1 AND #{0}>t.otr_pre_get_time GROUP BY t.otr_uid) a </select> </mapper> fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java
@@ -73,6 +73,7 @@ import com.yeshi.fanli.service.inter.order.LostOrderService; import com.yeshi.fanli.service.inter.order.OrderMoneySettleService; import com.yeshi.fanli.service.inter.order.OrderProcessService; import com.yeshi.fanli.service.inter.order.OrderTeamRewardService; import com.yeshi.fanli.service.inter.order.jd.JDOrderService; import com.yeshi.fanli.service.inter.order.pdd.PDDOrderService; import com.yeshi.fanli.service.inter.order.tb.TaoBaoOrderService; @@ -165,6 +166,9 @@ @Resource private HongBaoV2AddManager hongBaoV2AddManager; @Resource private OrderTeamRewardService orderTeamRewardService; /** * 是否是分享订单 @@ -1339,4 +1343,28 @@ return false; } @Override public void fanliOrderTeamReward() { Date time = new Date(); long count = orderTeamRewardService.countCanSettleUid(time); int pageSize = 500; int page = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1); List<Long> uidList = new ArrayList<>(); for (int i = 0; i < page; i++) { List<Long> list = orderTeamRewardService.listCanSettleUid(time, i + 1, pageSize); if (list != null && list.size() > 0) uidList.addAll(list); } // 添加到队列 if (uidList != null) for (Long uid : uidList) if (!Constant.IS_TEST) CMQManager.getInstance().addFanLiOrderTeamRewardMsg(uid); } @Override public void fanliOrderTeamReward(Long uid) throws OrderMoneySettleException { orderMoneySettleService.orderTeamRewardSettle(uid); } } fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderTeamRewardServiceImpl.java
@@ -61,7 +61,8 @@ @Transactional(rollbackFor = Exception.class) @Override public void addOrUpdate(InviteOrderSubsidy subsidy, BigDecimal money, Long uid,int level) throws OrderTeamRewardException { public void addOrUpdate(InviteOrderSubsidy subsidy, BigDecimal money, Long uid, int level) throws OrderTeamRewardException { if (subsidy == null || subsidy.getId() == null) throw new OrderTeamRewardException(1, "补贴为空"); if (money == null) @@ -141,6 +142,7 @@ OrderTeamReward orderSubsidy = new OrderTeamReward(id); orderSubsidy.setMoney(money); orderSubsidy.setState(OrderTeamReward.STATE_RECIEVED); orderSubsidy.setGetTime(new Date()); orderSubsidy.setUpdateTime(new Date()); orderTeamRewardMapper.updateByPrimaryKeySelective(orderSubsidy); } @@ -153,12 +155,22 @@ @Override public List<OrderTeamReward> listCanSettle(Long uid, int page, int pageSize) { return orderTeamRewardMapper.listCanSettleByUid(uid, (page-1)*pageSize, pageSize); return orderTeamRewardMapper.listCanSettleByUid(uid, (page - 1) * pageSize, pageSize); } @Override public long countCanSettle(Long uid) { return orderTeamRewardMapper.countCanSettle(uid); } @Override public List<Long> listCanSettleUid(Date time, int page, int count) { return orderTeamRewardMapper.listCanSettleUid(time, (page - 1) * count, count); } @Override public long countCanSettleUid(Date time) { return orderTeamRewardMapper.countCanSettleUid(time); } } fanli/src/main/java/com/yeshi/fanli/service/inter/order/OrderProcessService.java
@@ -9,6 +9,7 @@ import com.yeshi.fanli.entity.pdd.PDDOrder; import com.yeshi.fanli.entity.taobao.TaoBaoOrder; import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder; import com.yeshi.fanli.exception.money.OrderMoneySettleException; import com.yeshi.fanli.exception.order.HongBaoException; import com.yeshi.fanli.exception.order.OrderItemException; import com.yeshi.fanli.exception.order.TaoBaoWeiQuanException; @@ -75,6 +76,25 @@ public void fanliInvaiteAndShare(Long uid) throws TaoBaoWeiQuanException; /** * 团队奖励到账 * @Title: fanliOrderTeamReward * @Description: * void 返回类型 * @throws */ public void fanliOrderTeamReward(); /** * 团队奖励到账(按用户) * @Title: fanliOrderTeamReward * @Description: * @param uid * void 返回类型 * @throws */ public void fanliOrderTeamReward(Long uid) throws OrderMoneySettleException; /** * 订单维权 * * @param orderList fanli/src/main/java/com/yeshi/fanli/service/inter/order/OrderTeamRewardService.java
@@ -106,4 +106,28 @@ public long countCanSettle(Long uid); /** * 能够结算的用户ID列表 * @Title: listCanSettleUid * @Description: * @param page * @param count * @return * List<Long> 返回类型 * @throws */ public List<Long> listCanSettleUid(Date time, int page,int count); /** * 能够结算的用户ID数量 * @Title: countCanSettleUid * @Description: * @return * long 返回类型 * @throws */ public long countCanSettleUid(Date time); } fanli/src/main/java/com/yeshi/fanli/util/CMQManager.java
@@ -24,7 +24,7 @@ private static String secretKey = "xhCSUHo55oHUQ6XicFcmfIgspX0EEzWo"; private static CMQManager cmqManager; private static CMQUtil cmqUtil; // TODO 订单处理队列 // 订单处理队列 public static String QUEUENAME_ORDER = "fanli-orders"; // 刚刚产生的订单处理队列 @@ -32,18 +32,22 @@ // 提现结果处理队列 public static String EXTRACT_RESULT = "extract-result"; // TODO IOS推送队列 // IOS推送队列 public static String PUSH_IOS = "push-ios"; // TODO 返利队列 // 返利队列 public static String FANLI_ORDER = "fanli-order"; // TODO 返利队列 // 返利队列 public static String FANLI_ORDER_NEW = "fanli-order-new"; // TODO 提成订单 // 提成订单 public static String FANLI_TICHENG_ORDER = "fanli-ticheng-order"; // TODO 维权订单 // 团队奖励到账 public static String FANLI_ORDER_TEAM_REWARD="fanli-order-team-reward"; // 维权订单 public static String ORDER_WEIQUAN = "weiquan-order"; public static String GOODS_UPDATE = "goods_update_queue"; @@ -60,6 +64,9 @@ FANLI_ORDER = "test-" + FANLI_ORDER; FANLI_ORDER_NEW = "test-" + FANLI_ORDER_NEW; FANLI_TICHENG_ORDER = "test-" + FANLI_TICHENG_ORDER; FANLI_ORDER_TEAM_REWARD = "test-" + FANLI_ORDER_TEAM_REWARD; ORDER_WEIQUAN = "test-" + ORDER_WEIQUAN; IMPORTANT_GOODS_UPDATE = "test-" + IMPORTANT_GOODS_UPDATE; } @@ -71,6 +78,8 @@ FANLI_ORDER += "-" + Constant.systemCommonConfig.getProjectName(); FANLI_ORDER_NEW += "-" + Constant.systemCommonConfig.getProjectName(); FANLI_TICHENG_ORDER += "-" + Constant.systemCommonConfig.getProjectName(); FANLI_ORDER_TEAM_REWARD += "-" + Constant.systemCommonConfig.getProjectName(); ORDER_WEIQUAN += "-" + Constant.systemCommonConfig.getProjectName(); IMPORTANT_GOODS_UPDATE += "-" + Constant.systemCommonConfig.getProjectName(); @@ -83,6 +92,7 @@ cmqUtil.createQueue(FANLI_ORDER); cmqUtil.createQueue(FANLI_ORDER_NEW); cmqUtil.createQueue(FANLI_TICHENG_ORDER); cmqUtil.createQueue(FANLI_ORDER_TEAM_REWARD); cmqUtil.createQueue(ORDER_WEIQUAN); cmqUtil.createQueue(GOODS_UPDATE); cmqUtil.createQueue(IMPORTANT_GOODS_UPDATE); @@ -285,6 +295,30 @@ cmqUtil.deleteMsg(FANLI_TICHENG_ORDER, receiptHandle); } // 团队奖励 public void addFanLiOrderTeamRewardMsg(Long uid) { cmqUtil.sendMsg(FANLI_ORDER_TEAM_REWARD, uid + ""); } public Map<String, Long> consumeOrderTeamRewardMsg(int count) { List<Message> list = cmqUtil.recieveMsg(count, FANLI_ORDER_TEAM_REWARD); Map<String, Long> map = new HashMap<>(); if (list != null) for (Message msg : list) { String result = msg.msgBody; if (!StringUtil.isNullOrEmpty(result)) { map.put(msg.receiptHandle, Long.parseLong(result)); } } return map; } public void deleteOrderTeamRewardMsg(String receiptHandle) { cmqUtil.deleteMsg(FANLI_ORDER_TEAM_REWARD, receiptHandle); } // 维权订单 public void addWeiQuanOrderMsg(TaoBaoWeiQuanOrder order) { cmqUtil.sendMsg(ORDER_WEIQUAN, new Gson().toJson(order)); fanli/src/main/java/com/yeshi/fanli/util/SpringContext.java
@@ -35,6 +35,7 @@ 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.money.OrderMoneySettleException; import com.yeshi.fanli.exception.order.TaoBaoWeiQuanException; import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.inter.ad.DouYinClickEventService; @@ -162,7 +163,8 @@ doTaoBaoOrders();// 处理淘宝订单 doTaoBaoNewOrders();// 处理淘宝订单(刚刚产生的) doOrderFanLiNew();// 新版返利 // doOrderTiChengFanLi();// 处理订单提成返利 doOrderTiChengFanLi();// 处理订单提成返利 doOrderTeamRewardFanLi();// 团队奖励到账 doWeiQuanOrder();// 处理维权订单 doPushIOS();// 处理发送IOS消息 doUserMoneyDebtJob();// 债务偿还 @@ -327,7 +329,8 @@ try { HongBaoV2 hongbao = map.get(handler); if (hongbao != null) { String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.hongBaoFanLi, hongbao.getId() + ""); String key = RedisKeyEnum.getRedisKey(RedisKeyEnum.hongBaoFanLi, hongbao.getId() + ""); if (StringUtil.isNullOrEmpty(redisManager.getCommonString(key))) { // 处理之后要隔2小时再次进行处理 redisManager.cacheCommonString(key, "1", 60 * 60 * 2); @@ -401,6 +404,47 @@ } /** * 订单团队奖励到账 */ public void doOrderTeamRewardFanLi() { executor.execute(new Runnable() { @Override public void run() { while (true) { try { Map<String, Long> map = CMQManager.getInstance().consumeOrderTeamRewardMsg(16); if (map != null) { Iterator<String> its = map.keySet().iterator(); while (its.hasNext()) { String handler = its.next(); try { orderProcessService.fanliOrderTeamReward(map.get(handler)); CMQManager.getInstance().deleteOrderTeamRewardMsg(handler); } catch (OrderMoneySettleException e) { try { LogHelper.errorDetailInfo(e); } catch (Exception e1) { e1.printStackTrace(); } } catch (Exception e) { try { LogHelper.errorDetailInfo(e, map.get(handler).toString(), ""); } catch (Exception e1) { e1.printStackTrace(); } } } } } catch (Exception e) { } } } }); } /** * 处理淘宝订单维权 */ public void doWeiQuanOrder() { fanli/src/test/java/org/fanli/MyBatisProduce.java
@@ -3,7 +3,8 @@ import org.junit.Test; import org.yeshi.utils.mybatis.ColumnParseUtil; import com.yeshi.fanli.entity.order.CommonOrder; import com.yeshi.fanli.entity.order.InviteOrderSubsidy; import com.yeshi.fanli.entity.order.OrderTeamReward; //@Ignore public class MyBatisProduce { @@ -12,10 +13,10 @@ public void test3() { } // @Test @Test public void test1() { ColumnParseUtil.parseColumn(CommonOrder.class, "D:/workspace/fanli/fanli-server/fanli/src/main/java/com/yeshi/fanli/mapping/order/CommonOrderMapper.xml"); ColumnParseUtil.parseColumn(OrderTeamReward.class, "D:/workspace/fanli/fanli-server/fanli/src/main/java/com/yeshi/fanli/mapping/order/OrderTeamRewardMapper.xml"); } }