花了一年时间做了个网盘下载站点,有兴趣的朋友可以看看站名:去转盘网
其中有个需求是想模拟百度网盘的邀请好友注册功能,想了很久果然
"皇天不负有心人"
,终于整理出个思路,并且附上代码,希望各位网友多多吐槽。我的思路大体是用网络范围内唯一的字符串uuid为标识去邀请好友,邀请者给个状态位
1
代表邀请者,并给他绑定个唯一uuid。被邀请者给个标识位
0
代表被邀请者,如果他注册成功,则可以根据邀请链接获得uuid去查询数据库找到邀请者,找到后给予相应积分即可,代码如下:
public String invite(){ int invteOrBeInted=1;//邀请人为1,被邀请为0 String username=null; String temp=getParameter("username"); if(temp!=null){ try { username = new String(temp.getBytes("ISO-8859-1"), "utf-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } //username=((User)session.get(CodeConst.USERINSESSION)).getUsername(); if(username==null){ message="没有权限邀请用户"; return ERROR; } RegisterService registerService = ServiceFactory.getRegisterService(); UserDao userDao=null; try { userDao = registerService.getUserDao(); } catch (Exception e1) { e1.printStackTrace(); } @SuppressWarnings("rawtypes") java.util.List list=null; User u=null; try { list=userDao.findByUserName(username); } catch (Exception e) { e.printStackTrace(); } if(list!=null&&list.size()>0){ u=(User)list.get(0); } if(u.getInviteCode()!=null&&u.getInvitedOrBeInvited()==1){ //已经邀请了 inviteCode=u.getInviteCode(); } else{ inviteCode=UUID.randomUUID().toString();//uuid的唯一性 } String goodNews="网盘分享,网盘下载,这里是去转盘网。赶快点击下面链接注册吧,海量网盘资源与你共享"; String url=goodNews+getBase()+"registerManager/inviteRegister.action?inviteCode="+inviteCode; //注释,这里getBase()函数请自己实现,是获得 getHttpRequest().setAttribute("url",url);//发送给前台 try { registerService.updateInviteMan(username, inviteCode,invteOrBeInted); //更新邀请人信息,注意inviteCode为uuid是唯一的 //当用户注册成功之后根据inviteCode为邀请人加分 } catch (Exception e) { e.printStackTrace(); } return SUCCESS; }