| | |
| | | import com.yeshi.fanli.exception.BaseException;
|
| | |
|
| | | public class TeamEincomeRecordException extends BaseException {
|
| | | |
| | |
|
| | |
|
| | | /**
|
| | | *
|
| | |
| | |
|
| | | public class TeamDividentsRecordException extends BaseException {
|
| | |
|
| | | public final static int CODE_EXIST=1;
|
| | | |
| | | private static final long serialVersionUID = 1L;
|
| | |
|
| | | public TeamDividentsRecordException(int code, String msg) {
|
| | |
| | | import com.yeshi.fanli.service.inter.order.dividents.TeamDividentsSourceUserService;
|
| | | import com.yeshi.fanli.service.manger.money.TeamEincomeManager;
|
| | | import com.yeshi.fanli.service.manger.order.TeamDividentsManager;
|
| | | import com.yeshi.fanli.util.StringUtil;
|
| | | import com.yeshi.fanli.util.TimeUtil;
|
| | | import com.yeshi.fanli.util.cmq.order.TeamOrderCMQManager;
|
| | |
|
| | |
| | | @XxlJob("startPreOrderTeamDividentsHandler")
|
| | | public ReturnT<String> startPreDividents(String param) throws Exception {
|
| | | String day = TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyy-MM") + "-25";
|
| | | if (!StringUtil.isNullOrEmpty(param)) {
|
| | | day = param;
|
| | | }
|
| | |
|
| | | Date preSendTime = new Date(TimeUtil.convertToTimeTemp(day, "yyyy-MM-dd"));
|
| | |
|
| | | long count = teamDividentsSourceOrderService.countCanSendUidByPreSendTime(preSendTime);
|
| | |
| | | for (int i = 0; i < totalPage; i++) {
|
| | | List<Long> list = teamDividentsSourceOrderService.listCanSendUidByPreSendTime(preSendTime, i + 1, pageSize);
|
| | | for (Long uid : list) {
|
| | | teamDividentsManager.startDividents(uid);
|
| | | teamDividentsManager.startDividents(uid, preSendTime);
|
| | | }
|
| | | }
|
| | | startAddDividentsRecord(preSendTime);
|
| | |
| | | @XxlJob("addTeamDividentsTOUserAccountHandler")
|
| | | public ReturnT<String> addTeamIncomeTOUserAccount(String param) throws Exception {
|
| | | String day = TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyy-MM") + "-25";
|
| | | if (!StringUtil.isNullOrEmpty(param)) {
|
| | | day = param;
|
| | | }
|
| | |
|
| | | Date preSendTime = new Date(TimeUtil.convertToTimeTemp(day, "yyyy-MM-dd"));
|
| | |
|
| | | List<Integer> typeList = new ArrayList<>();
|
| | |
| | | int pageSize = 500;
|
| | | int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
|
| | | for (int i = 0; i < totalPage; i++) {
|
| | | List<Long> list = teamEincomeRecordService.listCanRecieveUid(preSendTime, typeList, i * pageSize, pageSize);
|
| | | List<Long> list = teamEincomeRecordService.listCanRecieveUid(preSendTime, typeList, i +1, pageSize);
|
| | | for (Long uid : list) {
|
| | | TeamOrderCMQManager.getInstance().addTeamDividentsMsg(new UidDateDTO(uid, preSendTime));
|
| | | }
|
| | |
| | | import com.yeshi.fanli.service.inter.order.dividents.TeamDividentsSourceOrderService;
|
| | | import com.yeshi.fanli.service.inter.order.dividents.TeamDividentsSourceUserService;
|
| | | import com.yeshi.fanli.service.manger.order.TeamDividentsManager;
|
| | | import com.yeshi.fanli.util.StringUtil;
|
| | | import com.yeshi.fanli.util.TimeUtil;
|
| | | import com.yeshi.fanli.util.cmq.order.TeamOrderCMQManager;
|
| | |
|
| | |
| | | @XxlJob("addTeamIncomeTOUserAccountHandler")
|
| | | public ReturnT<String> addTeamIncomeTOUserAccount(String param) throws Exception {
|
| | | String day = TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyy-MM") + "-25";
|
| | | if (!StringUtil.isNullOrEmpty(param))
|
| | | day = param;
|
| | |
|
| | | Date preSendTime = new Date(TimeUtil.convertToTimeTemp(day, "yyyy-MM-dd"));
|
| | |
|
| | | List<Integer> typeList = new ArrayList<>();
|
| | |
| | | int pageSize = 500;
|
| | | int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
|
| | | for (int i = 0; i < totalPage; i++) {
|
| | | List<Long> list = teamEincomeRecordService.listCanRecieveUid(preSendTime, typeList, i * pageSize, pageSize);
|
| | | List<Long> list = teamEincomeRecordService.listCanRecieveUid(preSendTime, typeList, i + 1, pageSize);
|
| | | for (Long uid : list) {
|
| | | TeamOrderCMQManager.getInstance().addFanLiTeamIncomeMsg(new UidDateDTO(uid, preSendTime));
|
| | | }
|
| | |
| | | // 所有的返利到账红包ID
|
| | | for (Long hongBaoId : recieveHongBaoIds) {
|
| | | try {
|
| | | if (Constant.ENABLE_MQ)
|
| | | HongBaoRecieveCMQManager.getInstance().addHongBaoRecieveMsg(hongBaoId);
|
| | | } catch (Exception e) {
|
| | | LogHelper.errorDetailInfo(e);
|
| | |
| | | // 所有的返利到账红包ID
|
| | | for (Long hongBaoId : recieveHongBaoIds) {
|
| | | try {
|
| | | if(Constant.ENABLE_MQ)
|
| | | HongBaoRecieveCMQManager.getInstance().addHongBaoRecieveMsg(hongBaoId);
|
| | | } catch (Exception e) {
|
| | | LogHelper.errorDetailInfo(e);
|
| | |
| | | public void fanli(HongBaoV2 hb1) throws TaoBaoWeiQuanException {
|
| | | // 查询最新的红包数据
|
| | | hb1 = hongBaoV2Mapper.selectByPrimaryKeyForUpdate(hb1.getId());
|
| | |
|
| | | if (hb1 == null || hb1.getState() != HongBaoV2.STATE_KELINGQU || hb1.getPreGetTime() == null
|
| | | || hb1.getPreGetTime().getTime() > System.currentTimeMillis())
|
| | | return;
|
| | |
|
| | | // 正常用户才能到账
|
| | | UserInfo mainUser = userInfoMapper.selectAvailableByPrimaryKey(hb1.getUserInfo().getId());
|
| | | if (mainUser == null || mainUser.getState() != UserInfo.STATE_NORMAL) {
|
| | |
| | | TeamDividentsRecord old = teamDividentsRecordMapper.selectByUidAndDayForUpdate(record.getUid(),
|
| | | record.getDay());
|
| | | if (old != null)
|
| | | throw new TeamDividentsRecordException(1, "记录已存在");
|
| | | throw new TeamDividentsRecordException(TeamDividentsRecordException.CODE_EXIST, "记录已存在");
|
| | | // 加入记录
|
| | |
|
| | | if (record.getCreateTime() == null)
|
| | |
| | | userMoneyService.addUserMoney(uid, money, detail);
|
| | | // 发送消息
|
| | | BigDecimal balance = userMoneyService.getBalance(uid);
|
| | | userMoneyMsgNotificationService.teamReceive(uid, money, balance, now);
|
| | | userMoneyMsgNotificationService.teamDividend(uid, money, balance, now);
|
| | | }
|
| | |
|
| | | }
|
| | |
| | |
|
| | | // 是否可以分红
|
| | | private boolean isCanDividents(TeamUserLevelStatistic tus) {
|
| | | if (Constant.IS_TEST)
|
| | | if (Constant.IS_TEST && tus.getLevel() != UserLevelEnum.daRen && tus.getLevel() != UserLevelEnum.normalVIP)
|
| | | return true;
|
| | |
|
| | | if (tus != null && (tus.getLevel() == UserLevelEnum.highVIP || tus.getLevel() == UserLevelEnum.superVIP
|
| | |
| | | import com.yeshi.fanli.entity.taobao.TaoBaoOrder;
|
| | | import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder;
|
| | | import com.yeshi.fanli.exception.order.TaoBaoWeiQuanException;
|
| | | import com.yeshi.fanli.exception.order.dividents.TeamDividentsRecordException;
|
| | | import com.yeshi.fanli.log.LogHelper;
|
| | | import com.yeshi.fanli.service.inter.ad.DouYinClickEventService;
|
| | | import com.yeshi.fanli.service.inter.lable.BoutiqueAutoRuleService;
|
| | |
| | | try {
|
| | | teamDividentsManager.addToTeamEincome(dto.getUid(), dto.getDate());
|
| | | TeamOrderCMQManager.getInstance().deleteTeamDividentsPreMsg(key);
|
| | | } catch (Exception e) {
|
| | | } catch (TeamDividentsRecordException e1) {
|
| | | if (e1.getCode() == TeamDividentsRecordException.CODE_EXIST) {
|
| | | TeamOrderCMQManager.getInstance().deleteTeamDividentsPreMsg(key);
|
| | | } else {
|
| | | try {
|
| | | LogHelper.errorDetailInfo(e1);
|
| | | } catch (Exception e2) {
|
| | | e2.printStackTrace();
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | catch (Exception e) {
|
| | | try {
|
| | | LogHelper.errorDetailInfo(e);
|
| | | } catch (Exception e1) {
|
| | |
| | | import com.yeshi.fanli.service.inter.order.OrderMoneySettleService;
|
| | | import com.yeshi.fanli.service.inter.user.UserSystemCouponRecordService;
|
| | | import com.yeshi.fanli.service.manger.order.TeamSubsidyManager;
|
| | | import com.yeshi.fanli.util.Constant;
|
| | | import com.yeshi.fanli.util.TimeUtil;
|
| | | import com.yeshi.fanli.util.rocketmq.MQTopicName;
|
| | |
|
| | |
| | | @Resource
|
| | | private CommonOrderService commonOrderService;
|
| | |
|
| | | // 团队奖励开始时间
|
| | | private static final long TEAM_REWARD_START_TIME = TimeUtil.convertToTimeTemp("2019-04-15", "yyyy-MM-dd");
|
| | |
|
| | | public InviteOrderSubsidyMessageListener() {
|
| | |
|
| | | }
|
| | |
| | | if (dto != null) {
|
| | | // 查询出订单创建时间
|
| | | Date orderTime = commonOrderService.getThirdCreateTime(dto.getOrderId(), dto.getType());
|
| | | if (orderTime.getTime() >= TEAM_REWARD_START_TIME) {
|
| | | if (orderTime.getTime() >= Constant.NEW_ORDER_FANLI_RULE_TIME) {
|
| | | try {
|
| | | teamSubsidyManager.addOrUpdateOrder(dto.getOrderId(), dto.getType());
|
| | | return Action.CommitMessage;
|
| | |
| | | } catch (ParamsException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | |
|
| | | return Action.ReconsumeLater;
|
| | | }
|
| | | }
|
| | |
| | | import com.yeshi.fanli.entity.bus.user.UserInfo;
|
| | | import com.yeshi.fanli.log.LogHelper;
|
| | | import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce;
|
| | | import com.yeshi.fanli.service.inter.user.invite.UserInviteValidNumService;
|
| | | import com.yeshi.fanli.service.inter.user.vip.TeamUserLevelStatisticService;
|
| | | import com.yeshi.fanli.service.inter.user.vip.UserVIPPreInfoService;
|
| | | import com.yeshi.fanli.util.rocketmq.MQTopicName;
|
| | |
| | |
|
| | | @Resource
|
| | | private ThreeSaleSerivce threeSaleSerivce;
|
| | | |
| | | @Resource
|
| | | private UserInviteValidNumService userInviteValidNumService;
|
| | |
|
| | | @Override
|
| | | public Action consume(Message message, ConsumeContext context) {
|
| | |
| | | if (dto != null) {
|
| | | // 会员等级升级-粉丝数量验证
|
| | | userVIPPreInfoService.upgradeVipByTeamNum(dto.getSourceUid());
|
| | | userInviteValidNumService.addValidTeamNum(dto.getSourceUid(), dto.getSettleMent(), dto.getPlaceOrderTime());
|
| | | }
|
| | | }
|
| | | }
|
| | |
| | | <bean id="inviteOrderSubsidyMsgListener"
|
| | | class="com.yeshi.fanli.util.rocketmq.consumer.order.InviteOrderSubsidyMessageListener"></bean> <!--Listener 配置 -->
|
| | | <!-- Group ID 订阅同一个 Topic,可以创建多个 ConsumerBean -->
|
| | | <bean id="orderTransactionConsumer" class="com.aliyun.openservices.ons.api.bean.ConsumerBean"
|
| | | <bean id="inviteOrderSubsidyConsumer" class="com.aliyun.openservices.ons.api.bean.ConsumerBean"
|
| | | init-method="start" destroy-method="shutdown">
|
| | | <property name="properties"> <!--消费者配置信息 -->
|
| | | <props>
|
| | | <prop key="AccessKey">${rocketmq.AccessKey}</prop>
|
| | | <prop key="SecretKey">${rocketmq.SecretKey}</prop>
|
| | | <prop key="GROUP_ID">GID_ORDER</prop>
|
| | | <prop key="GROUP_ID">GID_INVITE_ORDER_SUBSIDY</prop>
|
| | | <prop key="NAMESRV_ADDR">${rocketmq.NAMESRV_ADDR}</prop>
|
| | | <!--将消费者线程数固定为 50 个 <prop key="ConsumeThreadNums">50</prop> -->
|
| | | </props>
|
| | |
| | | </property>
|
| | | </bean>
|
| | |
|
| | |
|
| | | <!-- 产生有效队员 -->
|
| | | <bean id="inviteValidTeamMessageListener"
|
| | | class="com.yeshi.fanli.util.rocketmq.consumer.user.InviteValidTeamMessageListener"></bean>
|
| | | <!-- Group ID 订阅同一个 Topic,可以创建多个 ConsumerBean -->
|
| | | <bean id="inviteValidTeamConsumer" class="com.aliyun.openservices.ons.api.bean.ConsumerBean"
|
| | | init-method="start" destroy-method="shutdown">
|
| | | <property name="properties"> <!--消费者配置信息 -->
|
| | | <props>
|
| | | <prop key="AccessKey">${rocketmq.AccessKey}</prop>
|
| | | <prop key="SecretKey">${rocketmq.SecretKey}</prop>
|
| | | <prop key="GROUP_ID">GID_INVITE_VALID_TEAM</prop>
|
| | | <prop key="NAMESRV_ADDR">${rocketmq.NAMESRV_ADDR}</prop>
|
| | | <prop key="ConsumeThreadNums">50</prop>
|
| | | </props>
|
| | | </property>
|
| | | <property name="subscriptionTable">
|
| | | <map>
|
| | | <!-- 订单收货 -->
|
| | | <entry value-ref="inviteValidTeamMessageListener">
|
| | | <key>
|
| | | <bean class="com.aliyun.openservices.ons.api.bean.Subscription">
|
| | | <property name="topic" value="TOPIC_ORDER" />
|
| | | <property name="expression" value="orderConfirm" />
|
| | | </bean>
|
| | | </key>
|
| | | </entry>
|
| | | </map>
|
| | | </property>
|
| | | </bean>
|
| | |
|
| | | <!--团队分红消息订阅 -->
|
| | | <bean id="orderDividentsMessageListener"
|