package cn.javaex.yaoqishan.service.user_info;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import cn.javaex.yaoqishan.constant.ErrorMsg;
import cn.javaex.yaoqishan.dao.activate_info.IActivateInfoDAO;
import cn.javaex.yaoqishan.dao.collection_info.ICollectionInfoDAO;
import cn.javaex.yaoqishan.dao.comment_info.ICommentInfoDAO;
import cn.javaex.yaoqishan.dao.history_info.IHistoryInfoDAO;
import cn.javaex.yaoqishan.dao.reply_info.IReplyInfoDAO;
import cn.javaex.yaoqishan.dao.user_info.IUserInfoDAO;
import cn.javaex.yaoqishan.dao.user_profile_info.IUserProfileInfoDAO;
import cn.javaex.yaoqishan.dao.web_info.IWebInfoDAO;
import cn.javaex.yaoqishan.exception.QingException;
import cn.javaex.yaoqishan.service.activate_info.ActivateInfoService;
import cn.javaex.yaoqishan.service.email_info.EmailInfoService;
import cn.javaex.yaoqishan.service.group_info.GroupInfoService;
import cn.javaex.yaoqishan.util.GetIp;
import cn.javaex.yaoqishan.util.Jiami;
import cn.javaex.yaoqishan.util.MD5;
import cn.javaex.yaoqishan.view.ActivateInfo;
import cn.javaex.yaoqishan.view.UserInfo;
import cn.javaex.yaoqishan.view.UserProfileInfo;
import cn.javaex.yaoqishan.view.WebInfo;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
@Service("UserInfoService")
public class UserInfoService {
@Autowired
private IUserInfoDAO iUserInfoDAO;
@Autowired
private IUserProfileInfoDAO iUserProfileInfoDAO;
@Autowired
private GroupInfoService groupInfoService;
@Autowired
private EmailInfoService emailInfoService;
@Autowired
private IWebInfoDAO iWebInfoDAO;
@Autowired
private ActivateInfoService activateInfoService;
@Autowired
private IActivateInfoDAO iActivateInfoDAO;
@Autowired
private IReplyInfoDAO iReplyInfoDAO;
@Autowired
private ICommentInfoDAO iCommentInfoDAO;
@Autowired
private ICollectionInfoDAO iCollectionInfoDAO;
@Autowired
private IHistoryInfoDAO iHistoryInfoDAO;
/**
* 查询所有用户
* @param param
* @return
*/
public List<UserInfo> list(Map<String, Object> param) {
return iUserInfoDAO.list(param);
}
/**
* 校验用户登录
* @param loginName 登录名
* @param passWord 登录密码
* @return
*/
public UserInfo selectUser(String loginName, String passWord) {
return iUserInfoDAO.selectUser(loginName, passWord);
}
/**
* 校验账号是否已经被注册
* @param loginName 注册时填写的账号
* @param email 注册时填写的邮箱
* @return
*/
public int countUser(String loginName, String email) {
return iUserInfoDAO.countUser(loginName, email);
}
/**
* 注册新用户
* @param UserInfo
* @return
* @throws QingException
*/
public Map<String, Object> register(HttpServletRequest request) throws QingException {
// 1.0 获取注册参数
String szLoginName = request.getParameter("loginName");
String szPassWord = request.getParameter("passWord");
String szEmail = request.getParameter("email");
// 2.0 校验注册信息
// 2.1 校验账号是否填写
if (StringUtils.isEmpty(szLoginName)) {
throw new QingException(ErrorMsg.ERROR_100004);
}
// 2.2 校验账号长度
szLoginName = szLoginName.replaceAll("\\s*", "");
if (szLoginName.length()<4 || szLoginName.length()>10) {
throw new QingException(ErrorMsg.ERROR_100005);
}
// 2.3 校验密码是否填写
if (StringUtils.isEmpty(szPassWord)) {
throw new QingException(ErrorMsg.ERROR_100006);
}
// 2.4 校验密码长度
szPassWord = szPassWord.replaceAll("\\s*", "");
if (szPassWord.length()<6 || szPassWord.length()>16) {
throw new QingException(ErrorMsg.ERROR_100007);
}
// 2.5 校验邮箱是否填写
if (StringUtils.isEmpty(szEmail)) {
throw new QingException(ErrorMsg.ERROR_100008);
}
int count = 0;
// 2.6 校验账号是否已被占用
count = countUser(szLoginName, null);
if (count>0) {
throw new QingException(ErrorMsg.ERROR_100009);
}
// 2.7 校验邮箱是否已被占用
szEmail = szEmail.replaceAll("\\s*", "").toLowerCase();
count = countUser(null, szEmail);
if (count>0) {
throw new QingException(ErrorMsg.ERROR_100010);
}
// 3.0 注册新用户
String szUserIp = GetIp.getIp(request);
Date currentTime = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String now = formatter.format(currentTime);
UserInfo userInfo = new UserInfo();
userInfo.setLoginName(szLoginName);
userInfo.setPassWord(MD5.md5(szPassWord));
userInfo.setEmail(szEmail);
userInfo.setRegisterTime(now);
userInfo.setRegisterIp(szUserIp);
userInfo.setLastLoginTime(now);
userInfo.setLastLoginIp(szUserIp);
userInfo.setStatus("0"); // 账号未激活
iUserInfoDAO.insert(userInfo);
UserProfileInfo userProfileInfo = new UserProfileInfo();
userProfileInfo.setUserId(userInfo.getId());
userProfileInfo.setGroupId("2"); // 注册会员
userProfileInfo.setPoint(0); // 积分0份
iUserProfileInfoDAO.insert(userProfileInfo);
// 4.0 对用户信息进行加密,用于cookie存储
// 用户id
String UID = userInfo.getId();
// 用户的登录名和密码
String userToken = Jiami.getInstance().encrypt(szLoginName) + "&&" + Jiami.getInstance().encrypt(szPassWord);
// 将用户名转为没有特殊字符的base64编码
BASE64Encoder encoder = new BASE64Encoder();
userToken = encoder.encode(userToken.getBytes());
Map<String, Object> info = new HashMap<String, Object>();
info.put("UID", UID);
info.put("userToken", userToken);
return info;
}
/**
* 根据主键查询用户信息
* @param id
* @return
*/
public UserInfo selectUserById(String id) {
return iUserInfoDAO.selectUserById(id);
}
/**
* 用户登录
* @param request
* @return
* @throws QingException
* @throws UnsupportedEncodingException
*/
public Map<String, Object> login(HttpServletRequest request) throws QingException, UnsupportedEncodingException {
// 1.0 获取登录参数
String szLoginName = request.getParameter("loginName");
String szPassWord = request.getParameter("passWord");
// 2.0 校验用户
// 2.1 校验用户名或密码是否填写
if (StringUtils.isEmpty(szLoginName) || StringUtils.isEmpty(szPassWord)) {
throw new QingException(ErrorMsg.ERROR_100001);
}
// 2.2 校验用户名、密码是否正确
UserInfo userInfo = selectUser(szLoginName, MD5.md5(szPassWord));
if (userInfo==null) {
throw new QingException(ErrorMsg.ERROR_100002);
}
// 2.3 校验用户是否正常
if ("0".equals(userInfo.getStatus())) {
throw new QingException(ErrorMsg.ERROR_100019);
}
if ("2".equals(userInfo.getStatus())) {
throw new QingException(ErrorMsg.ERROR_100003);
}
// 3.0 将用户信息保存进session
request.getSession().setAttribute("userInfo", userInfo);
// 4.0 对用户信息进行加密,用于cookie存储
// 用户id
String UID = userInfo.getId();
// 用户的登录名和密码
String userToken = Jiami.getInstance().encrypt(szLoginName) + "&&" + Jiami.getInstance().encrypt(szPassWord);
// 将用户名转为没有特殊字符的base64编码
BASE64Encoder encoder = new BASE64Encoder();
userToken = encoder.encode(userToken.getBytes());
Map<String, Object> info = n
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
项目介绍 第一款面向大众的java版的视频管理系统。 妖气山视频管理系统理论上可以制作任何类型的视频网站。 软件架构 前端:javaex 后端:ssm 数据库:sql server 2012以上 编译器:eclipse JDK:1.8 tomcat:tomcat8
资源推荐
资源详情
资源评论





格式:x-rar 资源大小:4.8MB



格式:zip 资源大小:1.7MB





格式:zip 资源大小:512.0KB


















收起资源包目录





































































































共 322 条
- 1
- 2
- 3
- 4

软件源码
- 粉丝: 800
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 大数据时代下互联网金融发展的机遇与风险应对.docx
- 三天六万平米之创造算量新神话.doc
- 信息化条件下农村综合服务体系建设问题与对策.docx
- 通信设备环境考点精讲之空调系统的水泵与冷却塔.docx
- 电子信息工程在信息化环境中的发展探讨.docx
- 建设工程施工技术资料管理培训课件(161页)2.pdf
- 实验一---网络化控制系统的构成及投运和1.doc
- 牛津英语3A优秀教案.doc
- 物流行业信息化发展现状及趋势分析.docx
- 基于android-的任务管理器的设计.doc
- 某小区工地临时用水方案.doc
- 互联网时代的信息技术.doc
- 11-楼竣工评估报告.doc
- 万科大钢模板施工方案.doc
- 消防水施工程进度计划安排表.doc
- 第11讲第6章-圆轴扭转-.ppt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制

- 1
- 2
前往页