租车吸引客户业务:关于多重奖励的解决方案

简介: 租车吸引客户业务:关于多重奖励的解决方案

最近项目有遇到一个需求:

1用户表tmk_user_info(图1)

refferNo是推荐人手机号表里的phoneNo(推荐人也是tmk_user_info里的人)

recordid是主键

2用户账号表tmk_user_account(图2 和tmk_user_info里的数据一 一对应)

accountuser是tmk_user_info表里的recordid

totalamount是该用户的账号余额

同一个用户可以有多个推荐人,奖励规则是:一级推荐人奖励a1元,二级推荐人奖励a2元,三级推荐人奖励3元… 以此类推,最多奖励五级,在奖励过程中如果发现两个相互推荐的人则结束后续的奖励,现在给定一个用户recordid要求根据tmk_user_info的推荐人关系更新所有的获得奖励的用户totalamount字段

问题分析和思路:

如上图假设recordid初始为1他的查表得到他的推荐人为2,3,4,5

然后继续查表得知2的推荐人为1,7,8,9其中1在前面的路径已经出现过了所以不计算奖励也不继续后面的查询,由于奖励最多5级所以最多查五次

伪代码:

Integer[] levelarr = {a1,a2,a3,a4,a5};  //奖励金额数组
   List<String> refferIds = new ArrayList<>();
   List<String> refferIds2 = new ArrayList<>();
   List<String> refferIds3 = new ArrayList<>();
  refferIds2.add(1);  //记录初始recordid 的值1
  for(int i=0;i<5;i++){
      refferIds.clear();                 
      refferIds.addAll(refferIds2);
      refferIds2.clear();
      for (String refferId : refferIds) {
       //从tmk_user_info读取推荐关系
       sql= " select tui2.recordid refferuserid from "+
            " tmk_user_info tui1 LEFT JOIN tmk_user_info "+
            " tui2 on tui1.refferNo =tui2.phoneNo and"+
            " tui2.deletestatus=0 where tui1.recordid "+
            " in(" + refferId + ") and tui1.deletestatus=0";
       refferIds3 = DbUtil.get().executeQueryFirstColString(sql);
         for (String refferId3 : refferIds3) {
         //有可能推荐人还未注册
         if(refferId3==null){
           continue;
         }
                           //验证是否存在相互推荐的情况
               count=DbUtil.get().executeQueryOneInt(
                              "select count(1) from tmk_user_info where 
                              " refferNo="+refferId+"
                              " and  recordid="+refferId3);
         if( count!=0){
           continue;
         }
         refferIds2.add(refferId3);
         //更新 tmk_user_account的totalamount字段
         UserAccountModel userAccountModel = new UserAccountModel();
         userAccountModel.setAccountuser(Integer.valueOf(refferId3));
               userAccountModel =  (UserAccountModel)getDao().selectObject("TMK_USER_ACCOUNT.ibatorgenerated_selectByUserid",userAccountModel);                
               userAccountModel.setReward(userAccountModel.getReward() + levelarr[i]); userAccountModel.setTotalamount(userAccountModel.getTotalamount() +  levelarr[i]);
                   getDao().updateSql("TMK_USER_ACCOUNT.ibatorgenerated_updateByPrimaryKeySelective",userAccountModel);
          }
      }             
  }


目录
打赏
0
0
0
0
25
分享
相关文章
美容院代理分销APP开发:拓展客户群体,增加收益利润
在当今数字化时代,手机APP已经成为人们生活中不可或缺的一部分。对于美容院来说,开发一款代理分销APP具有极高的价值。此APP不仅可以提升业务效率,还可以扩大客户群体,增加收益。
【业务架构】价值链分析:提高客户价值和盈利能力
【业务架构】价值链分析:提高客户价值和盈利能力
支付市场供给端潜力持续挖掘 SaaS成角逐增长点
在疫情、中小微企业数字化升级需求迫切等多重因素驱动下,我国第三方支付行业发展不断提速。根据前瞻产业研究院数据显示,2021年我国第三方支付市场规模已破300万亿,到2025年预计突破500万亿元,且呈现稳定增长趋势。
新能力 | 玩转“轻会员”,价值再跃升!
支付宝小程序讲堂第八期《会员营销新能力-轻会员》,本周讲堂邀请了商户平台运营部的运营专家雁来同学,教您如何玩转“轻会员”。
1624 12
新能力 | 玩转“轻会员”,价值再跃升!
Bertelsmann Arvato 邮购公司客户细分和预测
1. 介绍 1.1 项目概述 在商业直销活动中,使用标签化的用户模型对进行营销活动进行优化是实现精准营销的一个重要工具。本项目要求根据一家德国邮购公司已有客户的人口学特征数据,使用非监督学习技术来分析公司现有顾客的主要特征。
1106 1
Bertelsmann Arvato 邮购公司客户细分和预测
用户转化率的七大关键因素,突飞猛进不再是梦
每个网站每天都会面临巨大的流量,但是流量不等于最终收益,每个网站都必须通过提升转化率来优化服务、明确决策和获得更高的收益。那么转化率的提升和哪些因素有关呢? 影响转化率的因素 影响网站转化率的因素不尽相同、不同网站之间的因素也千差万别,不过依然有迹可循,总结而言,提升转化率有七大关键因素: 第一、主页面的视觉效果,因为首先看到的就是主页面,所以主页面一定要让人眼前一亮,抓住吸引人们的注意和目光,让他们对这些感兴趣。
乐驾:让客户认同产品需要技巧
现代智能电子产品的销售需要改变用户观点和体验。把产品使用场景化、功能可视化从而提升用户转化是在品牌传播时要完成的。
《玩法变了》活动评估(财务、营销、传播角度)
项目 活动A 活动B 活动C 时长 10天 12天 15天 硬广投放 3.56 4.33 2.24 直通车 .
947 0

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等