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

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

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

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);
          }
      }             
  }


相关文章
|
29天前
|
存储 JavaScript 前端开发
共享购融合推三返一:推动裂变增长,增加用户黏性
本文概述了将“共享购”与“推三返一”模式转化为技术实现的简化框架,涵盖后端开发(如技术栈选择、核心功能实现)、前端开发(如用户界面、状态管理)、数据库设计、安全性考虑及测试部署等方面,旨在为开发者提供指导。
|
3月前
|
搜索推荐 数据可视化 数据挖掘
会展中心定位导航:精准展位指引,提升用户参馆体验,增加企业成交机会!
在数字化时代,会展中心借助物联网、大数据与AI技术,推出了智能定位导航系统,革新参会体验。展前通过线上展位预约和可视化招商地图,简化招商流程,提高展位分配效率。展会期间,利用精准定位技术,实现一键导航,同时提供个性化展位推荐,增强参观效率与满意度。系统还支持位置分享、车位检索等功能,并通过数据分析为决策提供支持,全面提升会展品牌形象与竞争力。
76 0
会展中心定位导航:精准展位指引,提升用户参馆体验,增加企业成交机会!
|
4月前
|
数据挖掘
美容院代理分销APP开发:拓展客户群体,增加收益利润
在当今数字化时代,手机APP已经成为人们生活中不可或缺的一部分。对于美容院来说,开发一款代理分销APP具有极高的价值。此APP不仅可以提升业务效率,还可以扩大客户群体,增加收益。
|
4月前
|
人工智能 数据挖掘 数据库
客户在哪儿AI——做真正管用的大客户获客方案
我们的目标是打造高效的ToB大客户获客方案。客户在哪儿AI生成企业全历史行为数据并提供数据分析服务,帮助企业从上帝视角洞察营销。通过真实案例展示,AI能显著提升活动营销效果,例如仅通过10场活动即可触及贡献44.9%营收的客户,30场则可达73.3%,极大提高效率。此外,在决策层和销售工作中,AI发现了某一关键客户与其69.3%营收来源有深层联系,证实了聚焦此客户的战略价值。我们虽不能公开全部细节,但愿与有兴趣者分享真实分析流程。由于服务刚启动,目前尚未有足够反馈,未来将及时分享成果。
新能力 | 玩转“轻会员”,价值再跃升!
支付宝小程序讲堂第八期《会员营销新能力-轻会员》,本周讲堂邀请了商户平台运营部的运营专家雁来同学,教您如何玩转“轻会员”。
1604 12
新能力 | 玩转“轻会员”,价值再跃升!
[转]严防变相抬升小微企业综合融资成本,北京银保监局明确违规表现形式
20日,记者从北京银保监局获悉,昨日该局印发《北京银保监局关于规范小微企业贷款服务收费的通知》(下称《通知》),针对当前部分银行在发放小微企业贷款时附加不合理条件、变相抬升小微企业综合融资成本等现象提出监管要求。
乐驾:让客户认同产品需要技巧
现代智能电子产品的销售需要改变用户观点和体验。把产品使用场景化、功能可视化从而提升用户转化是在品牌传播时要完成的。
《玩法变了》活动评估(财务、营销、传播角度)
项目 活动A 活动B 活动C 时长 10天 12天 15天 硬广投放 3.56 4.33 2.24 直通车 .
934 0