// 每日登录后,点击领取积分
 public void daily() {
   String token = getPara("token");
   User user = getUser(token);
   Map<String, Object> map = new HashMap<String, Object>();
   // 查询今天是否获取过奖励
   Mission mission =
       Mission.me.findByInTime(
           user.getStr("id"),
           DateUtil.formatDate(new Date()) + " 00:00:00",
           DateUtil.formatDate(new Date()) + " 23:59:59");
   if (mission == null) {
     // 查询最后一次签到记录
     Mission lastMission = Mission.me.findLastByAuthorId(user.getStr("id"));
     Integer day = 1;
     if (lastMission != null) {
       String lastMissionInTimeStr = DateUtil.formatDate(lastMission.getDate("in_time"));
       String beforeDateStr = DateUtil.formatDate(DateUtil.getDateBefore(new Date(), 1));
       if (lastMissionInTimeStr != null && lastMissionInTimeStr.equalsIgnoreCase(beforeDateStr)) {
         day = lastMission.getInt("day") + 1;
       }
     }
     Random random = new Random();
     int score = random.nextInt(10) + 1; // 随机积分,1-10分
     user.set("score", user.getInt("score") + score)
         .set("mission", DateUtil.formatDate(new Date()))
         .update();
     getModel(Mission.class)
         .set("score", score)
         .set("author_id", user.get("id"))
         .set("day", day)
         .set("in_time", new Date())
         .save();
     map.put("score", score);
     map.put("day", day);
   } else {
     map.put("msg", "您今天已经领取了奖励,明天在来吧");
   }
   success(map);
 }
 /**
  * qq登录回调方法
  *
  * @throws QQConnectException
  */
 public void qqlogincallback() throws QQConnectException, IOException {
   HttpServletRequest request = getRequest();
   AccessToken accessTokenObj = (new Oauth()).getAccessTokenByRequest(request);
   String accessToken = null, openID = null;
   if (accessTokenObj.getAccessToken().equals("")) {
     renderText("用户取消了授权或没有获取到响应参数");
   } else {
     accessToken = accessTokenObj.getAccessToken();
     // 利用获取到的accessToken 去获取当前用的openid -------- start
     OpenID openIDObj = new OpenID(accessToken);
     openID = openIDObj.getUserOpenID();
     UserInfo qzoneUserInfo = new UserInfo(accessToken, openID);
     UserInfoBean userInfoBean = qzoneUserInfo.getUserInfo();
     String avatar = userInfoBean.getAvatar().getAvatarURL50();
     String nickname = userInfoBean.getNickname();
     User user = (User) getSession().getAttribute(Constants.USER_SESSION);
     if (user == null) {
       user = User.me.findByOpenID(openID, "qq");
       String id = StrUtil.getUUID();
       if (user == null) {
         user = new User();
         user.set("id", id)
             .set("qq_nickname", nickname)
             .set("qq_avatar", avatar)
             .set("qq_open_id", openID);
       } else {
         user.set("qq_nickname", nickname).set("qq_avatar", avatar);
       }
       setSessionAttr("open_id", openID);
       setSessionAttr("thirdlogin_type", "qq");
       setSessionAttr("unsave_user", user);
     } else {
       User user1 = User.me.findByOpenID(openID, "qq");
       if (user1 != null && !user1.get("id").equals(user.get("id"))) {
         getResponse().setCharacterEncoding("utf-8");
         getResponse()
             .getWriter()
             .write(
                 "<script>alert('此QQ号已经绑定其他账户,请更换绑定');location.href=\'/user/setting\'</script>");
         return;
       } else {
         user.set("qq_nickname", nickname)
             .set("qq_open_id", openID)
             .set("qq_avatar", avatar)
             .update();
       }
     }
     if (StrUtil.isBlank(user.getStr("email"))) {
       redirect("/reg.html?third=qq");
     } else {
       setSessionAttr(Constants.USER_SESSION, user);
       setCookie(
           Constants.USER_COOKIE,
           StrUtil.getEncryptionToken(user.getStr("token")),
           30 * 24 * 60 * 60);
       String source = (String) getSession().getAttribute("source");
       if (!StrUtil.isBlank(source)) {
         if (source.equalsIgnoreCase("usersetting")) {
           getSession().removeAttribute("source");
           redirect("/user/setting");
         }
       } else {
         redirect("/");
       }
     }
   }
 }
 /**
  * 新浪微博登录后回调
  *
  * @throws WeiboException
  */
 public void weibologincallback() throws WeiboException, IOException {
   String code = getPara("code");
   cn.weibo.Oauth oauth = new cn.weibo.Oauth();
   String error = getPara("error");
   if (!StrUtil.isBlank(error) && error.equals("access_denied")) {
     renderText("用户拒绝了新浪微博登录");
   } else {
     cn.weibo.http.AccessToken accessToken = oauth.getAccessTokenByCode(code);
     Users users = new Users(accessToken.getAccessToken());
     cn.weibo.model.User weiboUser = users.showUserById(accessToken.getUid());
     if (weiboUser != null) {
       User user = (User) getSession().getAttribute(Constants.USER_SESSION);
       if (user == null) {
         user = User.me.findByOpenID(weiboUser.getId(), "sina");
         String id = StrUtil.getUUID();
         if (user == null) {
           user = new User();
           user.set("id", id)
               .set("sina_nickname", weiboUser.getScreenName())
               .set("sina_avatar", weiboUser.getAvatarLarge())
               .set("sina_open_id", weiboUser.getId());
         } else {
           user.set("sina_nickname", weiboUser.getScreenName())
               .set("sina_avatar", weiboUser.getAvatarLarge());
         }
         setSessionAttr("open_id", weiboUser.getId());
         setSessionAttr("thirdlogin_type", "sina");
         setSessionAttr("unsave_user", user);
       } else {
         User user1 = User.me.findByOpenID(weiboUser.getId(), "sina");
         if (user1 != null && !user1.get("id").equals(user.get("id"))) {
           getResponse().setCharacterEncoding("utf-8");
           getResponse()
               .getWriter()
               .write(
                   "<script>alert('此微博账号已经绑定其他账户,请更换绑定');location.href=\'/user/setting\'</script>");
           return;
         } else {
           user.set("sina_nickname", weiboUser.getScreenName())
               .set("sina_avatar", weiboUser.getAvatarLarge())
               .set("sina_open_id", weiboUser.getId())
               .update();
         }
       }
       if (StrUtil.isBlank(user.getStr("email"))) {
         redirect("/reg.html?third=qq");
       } else {
         setSessionAttr(Constants.USER_SESSION, user);
         setCookie(
             Constants.USER_COOKIE,
             StrUtil.getEncryptionToken(user.getStr("token")),
             30 * 24 * 60 * 60);
         String source = (String) getSession().getAttribute("source");
         if (!StrUtil.isBlank(source)) {
           if (source.equalsIgnoreCase("usersetting")) {
             getSession().removeAttribute("source");
             redirect("/user/setting");
           }
         } else {
           redirect("/");
         }
       }
     } else {
       renderText("新浪微博登陆失败");
     }
   }
 }