@Override public String getRongToken(long userId, boolean isNew, String resAccountUri) { User user = this.getUserById(userId); if (user == null) { return null; } if (user.getRongToken() != null && !isNew) { return user.getRongToken(); } String imgUrl = user.getPhotoPath(); if (imgUrl != null && !imgUrl.startsWith("http://")) { imgUrl = resAccountUri + imgUrl; } UserToken ut = null; try { String appKey = "0vnjpoadnxp5z"; String appSecret = "3UH04WirdR69D"; ApiRongIM.init(appKey, appSecret); ut = ApiRongIM.getToken(user.getUserId() + "", user.getNickName(), imgUrl); user.setRongToken(ut.getToken()); } catch (Exception e) { logger.error("userId=" + user.getUserId(), e); } // 修改数据库 userDao.updateRongToken(userId, user.getRongToken()); return user.getRongToken(); }
@Override public void editUserBasic( Long userId, String nickName, String userName, Integer sex, int birthdayYear, int birthdayMonth, int birthdayDay, String summary, String qqId, String wangwangId) { // 数据不能为空 if (userId <= 0 || nickName.trim().equals("") || userName.trim().equals("")) { throw new IllegalArgumentException(); } // 验证昵称格式 if (!StringUtil.match(nickName, "^.{1,12}$")) { throw new ServiceException(ErrService.UserS.ACC_106, "昵称:“" + nickName + "”格式错误。"); } // 验证生日格式 Calendar calendar = Calendar.getInstance(); try { calendar.set(birthdayYear, birthdayMonth - 1, birthdayDay); } catch (Exception e) { throw new ServiceException( ErrService.UserS.ACC_104, "生日:“" + birthdayYear + "年" + birthdayMonth + "月" + birthdayDay + "日”,格式错误。", e); } // 验证昵称 User user = userDao.queryById(userId); if (!user.getNickName().equals(nickName)) { if (this.verifyNickRep(nickName)) { throw new ServiceException(ErrService.UserS.ACC_102, "昵称:“" + nickName + "”已经被使用。"); } } JSONObject eaddress = new JSONObject(); if (!StringUtil.isEmptyOrNull(qqId)) { eaddress.put("qqId", qqId); } if (!StringUtil.isEmptyOrNull(wangwangId)) { eaddress.put("wangwangId", wangwangId); } userDao.update( userId, nickName, userName, sex, birthdayYear, birthdayMonth, birthdayDay, eaddress.toString(), summary); }
@Override public User checkLogin(String account, String password) { password = PasswordMD.md5(password); User u = userDao.queryByAccount(account); if (u == null) { u = userDao.queryByEnEmail(account); } if (u != null && password.equals(u.getPassword())) { return u; } else { throw new ServiceException(ErrService.UserS.ACC_109, "用户账号或者密码错误"); } }
private User register(String nickName, String photoPath) { if (StringUtil.isEmptyOrNull(nickName)) { throw new IllegalArgumentException(); } long userId = userDao.getId(); User user = new User(); user.setPhotoPath(photoPath); user.setNickName(nickName + userId); user.setAddTime(new Date()); user.setUserId(userId); return this.addUser(user); }
@Override public void editUserEmail(Long userId, String email) { if (email == null || email.equals("")) { throw new ServiceException(ErrService.UserS.ACC_102, "电子邮箱格式错误。"); } User u = userDao.queryByEnEmail(email); if (u != null) { throw new ServiceException(ErrService.UserS.ACC_102, "该电子邮箱已经被激活。"); } User user = userDao.queryById(userId); if (!email.equals(user.getEmail())) { userDao.updateEmail(userId, email); } }
@Override public void editUserPasswore(Long userId, String oldPsw, String newPsw) { // 验证密码格式 if (!StringUtil.match(newPsw, "^.{6,20}$")) { throw new ServiceException(ErrService.UserS.ACC_107, "密码:“" + newPsw + "”格式错误。"); } // 密码MD5加密 oldPsw = PasswordMD.md5(oldPsw); User user = userDao.queryById(userId); if (!user.getPassword().equals(oldPsw)) { throw new ServiceException(ErrService.UserS.ACC_103, "用户:“" + userId + "”原始密码错误。"); } newPsw = PasswordMD.md5(newPsw); userDao.updatePsw(userId, newPsw); }
@Override public BindSite checkLogin( BindSite.SiteMark siteMark, String openId, String accessToken, long tokenExpireIn) { // 第三方用户信息在当前平台保存的信息 BindSite bs = bindSiteDao.queryByOpenId(siteMark, openId); // 获取第三方用户信息 BindSite bsOther = UserServiceImpl.getBindSite(siteMark, openId, accessToken); if (bs != null) { // 更新token等信息 bsOther.setBindSiteId(bs.getBindSiteId()); this.changeToken(bsOther, tokenExpireIn); } else { // 注册用户 User user = register(bsOther.getNickName(), bsOther.getPhotoPath()); // 绑定平台 bs = bindSiteUser(user.getUserId(), siteMark, openId, accessToken, tokenExpireIn, true); } return bs; }
@Override public User register(String account, String password, String nick) throws ServiceException { if (StringUtil.isEmptyOrNull(password) || StringUtil.isEmptyOrNull(nick)) { throw new IllegalArgumentException(); } if (!StringUtil.isEmptyOrNull(account)) { // 验证账号格式 if (!StringUtil.match(account, "^\\w{5,50}$")) { throw new ServiceException(ErrService.UserS.ACC_105, "账号:“" + account + "”格式错误。"); } account = account.toLowerCase(); // 验证账号是否重复 if (this.verifyAccountRep(account)) { throw new ServiceException(ErrService.UserS.ACC_101, "账号:“" + account + "”已经被使用。"); } } // 验证昵称格式 if (!StringUtil.match(nick, "^.{1,12}$")) { throw new ServiceException(ErrService.UserS.ACC_106, "昵称:“" + nick + "”格式错误。"); } // 验证密码格式 if (!StringUtil.match(password, "^.{6,20}$")) { throw new ServiceException(ErrService.UserS.ACC_107, "密码:“" + password + "”格式错误。"); } // 验证昵称是否重复 if (this.verifyNickRep(nick)) { throw new ServiceException(ErrService.UserS.ACC_102, "昵称:“" + nick + "”已经被使用。"); } User user = new User(); user.setAccount(account); // 加密处理 password = PasswordMD.md5(password); user.setPassword(password); user.setNickName(nick); user.setAddTime(new Date()); return this.addUser(user); }