| | |
| | | package com.yeshi.buwan.service.imp; |
| | | |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | import javax.annotation.Resource; |
| | | |
| | | import com.yeshi.buwan.dao.user.LoginUserExtraDao; |
| | | import com.yeshi.buwan.domain.user.LoginUserExtra; |
| | | import com.yeshi.buwan.dto.user.LoginInfoDto; |
| | | import com.yeshi.buwan.exception.user.LoginUserException; |
| | | import com.yeshi.buwan.exception.user.RegisterUserException; |
| | | import com.yeshi.buwan.service.inter.LoginUserService; |
| | | import com.yeshi.buwan.service.inter.system.SystemConfigService; |
| | | import org.hibernate.HibernateException; |
| | | import org.hibernate.Session; |
| | | import org.springframework.cache.annotation.Cacheable; |
| | |
| | | import com.yeshi.buwan.dao.user.LoginUserDao; |
| | | import com.yeshi.buwan.dao.UserDao; |
| | | import com.yeshi.buwan.domain.user.LoginUser; |
| | | import com.yeshi.buwan.domain.SystemInfo; |
| | | import com.yeshi.buwan.domain.system.SystemInfo; |
| | | import com.yeshi.buwan.domain.UserData; |
| | | import com.yeshi.buwan.domain.UserInfo; |
| | | import com.yeshi.buwan.util.Constant; |
| | |
| | | @Resource |
| | | private LoginUserDao loginUserDao; |
| | | |
| | | public UserDao getUserDao() { |
| | | return userDao; |
| | | } |
| | | @Resource |
| | | private LoginUserExtraDao loginUserExtraDao; |
| | | |
| | | public void setUserDao(UserDao userDao) { |
| | | this.userDao = userDao; |
| | | } |
| | | @Resource |
| | | private LoginUserService loginUserService; |
| | | |
| | | @Resource |
| | | private SystemConfigService systemConfigService; |
| | | |
| | | |
| | | // 用户操作 |
| | | public List<UserInfo> getUserList(int system, int page) { |
| | | return userDao.list("from UserInfo u where u.system.id=? order by u.createtime desc", |
| | | (page - 1) * Constant.pageCount, Constant.pageCount, new String[]{system + ""}); |
| | | } |
| | | |
| | | //设置昵称 |
| | | public void setNickName(Long uid, String nickName) { |
| | | LoginUser update = new LoginUser(); |
| | | update.setId(uid + ""); |
| | | update.setName(nickName); |
| | | loginUserDao.updateSelective(update); |
| | | } |
| | | |
| | | // 获取用户数量 |
| | |
| | | } |
| | | |
| | | public void updateLoginUserInfo(LoginUser lu) { |
| | | loginUserDao.update(lu); |
| | | loginUserDao.updateSelective(lu); |
| | | } |
| | | |
| | | public String getUid(String device, String system, String imei, String mac, String lat, String lng) { |
| | |
| | | |
| | | |
| | | /** |
| | | * 登录 |
| | | * |
| | | * @param openid |
| | | * @param detailSystem |
| | | * @param type 1-QQ 2-微信 |
| | | * @param portrait |
| | | * @param name |
| | | * @param ipInfo |
| | | * @param dto |
| | | * @return |
| | | * @throws LoginUserException |
| | | */ |
| | | @SuppressWarnings("unchecked") |
| | | public LoginUser getLoginUser(final String openid, final String detailSystem, final int type, final String portrait, |
| | | final String name, final String ipInfo) { |
| | | return (LoginUser) userDao.excute(new HibernateCallback<LoginUser>() { |
| | | public LoginUser doInHibernate(Session session) throws HibernateException { |
| | | try { |
| | | List<LoginUser> list = session |
| | | .createQuery("from LoginUser lu where lu.openid=? and lu.loginType=?") |
| | | .setParameter(0, openid).setParameter(1, type).list(); |
| | | public LoginUser login(LoginInfoDto dto) throws LoginUserException { |
| | | |
| | | if (list != null && list.size() > 0) |
| | | return list.get(0); |
| | | else { |
| | | session.getTransaction().begin(); |
| | | LoginUser lu = new LoginUser(); |
| | | lu.setCreatetime(System.currentTimeMillis() + ""); |
| | | lu.setDetailsystem(detailSystem); |
| | | lu.setLoginType(type); |
| | | lu.setName(name); |
| | | lu.setOpenid(openid); |
| | | lu.setPortrait(portrait); |
| | | lu.setIpinfo(ipInfo); |
| | | session.save(lu); |
| | | session.flush(); |
| | | session.getTransaction().commit(); |
| | | return lu; |
| | | } |
| | | LoginUser loginUser = null; |
| | | |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | session.getTransaction().rollback(); |
| | | LoginUserExtra loginUserExtra = null; |
| | | switch (dto.getLoginType()) { |
| | | case LoginUser.LOGIN_TYPE_EMAIL: { |
| | | if (StringUtil.isNullOrEmpty(dto.getEmail()) || StringUtil.isNullOrEmpty(dto.getPwd())) { |
| | | throw new LoginUserException(LoginUserException.CODE_PARAMS_NOT_ENOUGH, "邮箱和密码不能为空"); |
| | | } |
| | | return null; |
| | | } |
| | | }); |
| | | List<LoginUser> userList = loginUserDao.list("from LoginUser lu where lu.systemId=? and lu.email=? and lu.state=?", dto.getSystemId(), dto.getEmail(), LoginUser.STATE_NORMAL); |
| | | if (userList == null || userList.size() == 0) { |
| | | throw new LoginUserException(LoginUserException.CODE_NO_USER, "用户不存在"); |
| | | } |
| | | |
| | | if (!dto.getPwd().equalsIgnoreCase(userList.get(0).getPwd())) { |
| | | throw new LoginUserException(LoginUserException.CODE_PWD_WRONG, "密码错误"); |
| | | } |
| | | loginUser = userList.get(0); |
| | | loginUserExtra = new LoginUserExtra(loginUser.getId()); |
| | | loginUserExtra.setEmail(dto.getEmail()); |
| | | } |
| | | break; |
| | | case LoginUser.LOGIN_TYPE_QQ: { |
| | | if (dto.getQqUserInfo() == null || StringUtil.isNullOrEmpty(dto.getQqUserInfo().getOpenId())) { |
| | | throw new LoginUserException(LoginUserException.CODE_PARAMS_NOT_ENOUGH, "QQ授权信息为空"); |
| | | } |
| | | List<LoginUser> userList = loginUserDao.list("from LoginUser lu where lu.systemId=? and lu.qqOpenId=? and lu.state=?", dto.getSystemId(), dto.getQqUserInfo().getOpenId(), LoginUser.STATE_NORMAL); |
| | | if (userList == null || userList.size() == 0) { |
| | | throw new LoginUserException(LoginUserException.CODE_NO_USER, "用户不存在"); |
| | | } |
| | | loginUser = userList.get(0); |
| | | loginUserExtra = new LoginUserExtra(loginUser.getId()); |
| | | loginUserExtra.setQqPortrait(dto.getQqUserInfo().getPortrait()); |
| | | loginUserExtra.setQqOpenId(dto.getQqUserInfo().getOpenId()); |
| | | loginUserExtra.setQqNickName(dto.getQqUserInfo().getName()); |
| | | } |
| | | break; |
| | | case LoginUser.LOGIN_TYPE_WX: { |
| | | if (dto.getWeiXinUser() == null || StringUtil.isNullOrEmpty(dto.getWeiXinUser().getOpenid())) { |
| | | throw new LoginUserException(LoginUserException.CODE_PARAMS_NOT_ENOUGH, "微信授权信息为空"); |
| | | } |
| | | List<LoginUser> userList = loginUserDao.list("from LoginUser lu where lu.systemId=? and lu.wxOpenId=? and lu.state=?", dto.getSystemId(), dto.getWeiXinUser().getOpenid(), LoginUser.STATE_NORMAL); |
| | | if (userList == null || userList.size() == 0) { |
| | | throw new LoginUserException(LoginUserException.CODE_NO_USER, "用户不存在"); |
| | | } |
| | | loginUser = userList.get(0); |
| | | |
| | | //更新微信信息 |
| | | loginUser.setWxUnionId(dto.getWeiXinUser().getUnionid()); |
| | | |
| | | loginUserExtra = new LoginUserExtra(loginUser.getId()); |
| | | loginUserExtra.setWxPortrait(dto.getWeiXinUser().getHeadimgurl()); |
| | | loginUserExtra.setWxOpenId(dto.getWeiXinUser().getOpenid()); |
| | | loginUserExtra.setWxNickName(dto.getWeiXinUser().getNickname()); |
| | | loginUserExtra.setWxSex(dto.getWeiXinUser().getSex()); |
| | | loginUserExtra.setWxUnionId(dto.getWeiXinUser().getUnionid()); |
| | | } |
| | | break; |
| | | case LoginUser.LOGIN_TYPE_PHONE: { |
| | | |
| | | if (StringUtil.isNullOrEmpty(dto.getPhone())) { |
| | | throw new LoginUserException(LoginUserException.CODE_PARAMS_NOT_ENOUGH, "手机号为空"); |
| | | } |
| | | List<LoginUser> userList = loginUserDao.list("from LoginUser lu where lu.systemId=? and lu.phone=? and lu.state=?", dto.getSystemId(), dto.getPhone(), LoginUser.STATE_NORMAL); |
| | | if (userList == null || userList.size() == 0) { |
| | | throw new LoginUserException(LoginUserException.CODE_NO_USER, "用户不存在"); |
| | | } |
| | | loginUser = userList.get(0); |
| | | loginUserExtra = new LoginUserExtra(loginUser.getId()); |
| | | } |
| | | break; |
| | | } |
| | | |
| | | if (loginUser != null) { |
| | | loginUser.setLoginType(dto.getLoginType()); |
| | | loginUserDao.updateSelective(loginUser); |
| | | } |
| | | |
| | | if (loginUserExtra != null) { |
| | | loginUserExtra.setUtdId(dto.getUtdId()); |
| | | loginUserExtraDao.updateSelective(loginUserExtra); |
| | | } |
| | | |
| | | return loginUser; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 注册 |
| | | * |
| | | * @param dto |
| | | */ |
| | | public LoginUser register(LoginInfoDto dto) throws RegisterUserException { |
| | | LoginUser loginUser = null; |
| | | LoginUserExtra loginUserExtra = null; |
| | | switch (dto.getLoginType()) { |
| | | case LoginUser.LOGIN_TYPE_EMAIL: { |
| | | if (StringUtil.isNullOrEmpty(dto.getEmail()) || StringUtil.isNullOrEmpty(dto.getPwd())) { |
| | | throw new RegisterUserException(RegisterUserException.CODE_PARAMS_NOT_ENOUGH, "邮箱和密码不能为空"); |
| | | } |
| | | List<LoginUser> userList = loginUserDao.list("from LoginUser lu where lu.systemId=? and lu.email=? and lu.state=?", dto.getSystemId(), dto.getEmail(), LoginUser.STATE_NORMAL); |
| | | if (userList != null && userList.size() > 0) { |
| | | throw new RegisterUserException(RegisterUserException.CODE_USER_EXIST, "用户已存在"); |
| | | } |
| | | |
| | | loginUser = new LoginUser(); |
| | | loginUser.setLoginType(LoginUser.LOGIN_TYPE_EMAIL); |
| | | loginUser.setEmail(dto.getEmail()); |
| | | loginUser.setPwd(dto.getPwd()); |
| | | loginUser.setName(dto.getNickName()); |
| | | loginUser.setState(LoginUser.STATE_NORMAL); |
| | | loginUser.setSystemId(dto.getSystemId()); |
| | | loginUserExtra = new LoginUserExtra(); |
| | | loginUserExtra.setEmail(dto.getEmail()); |
| | | } |
| | | break; |
| | | case LoginUser.LOGIN_TYPE_QQ: { |
| | | if (dto.getQqUserInfo() == null || StringUtil.isNullOrEmpty(dto.getQqUserInfo().getOpenId())) { |
| | | throw new RegisterUserException(RegisterUserException.CODE_PARAMS_NOT_ENOUGH, "QQ授权信息为空"); |
| | | } |
| | | |
| | | List<LoginUser> userList = loginUserDao.list("from LoginUser lu where lu.systemId=? and lu.qqOpenId=? and lu.state=?", dto.getSystemId(), dto.getQqUserInfo().getOpenId(), LoginUser.STATE_NORMAL); |
| | | if (userList != null && userList.size() > 0) { |
| | | throw new RegisterUserException(RegisterUserException.CODE_USER_EXIST, "用户已存在"); |
| | | } |
| | | |
| | | loginUser = new LoginUser(); |
| | | loginUser.setLoginType(LoginUser.LOGIN_TYPE_QQ); |
| | | loginUser.setQqOpenId(dto.getQqUserInfo().getOpenId()); |
| | | loginUser.setName(dto.getQqUserInfo().getName()); |
| | | loginUser.setPortrait(dto.getQqUserInfo().getPortrait()); |
| | | |
| | | |
| | | loginUserExtra = new LoginUserExtra(); |
| | | loginUserExtra.setQqPortrait(dto.getQqUserInfo().getPortrait()); |
| | | loginUserExtra.setQqOpenId(dto.getQqUserInfo().getOpenId()); |
| | | loginUserExtra.setQqNickName(dto.getQqUserInfo().getName()); |
| | | } |
| | | break; |
| | | case LoginUser.LOGIN_TYPE_WX: { |
| | | if (dto.getWeiXinUser() == null || StringUtil.isNullOrEmpty(dto.getWeiXinUser().getOpenid())) { |
| | | throw new RegisterUserException(RegisterUserException.CODE_PARAMS_NOT_ENOUGH, "微信授权信息为空"); |
| | | } |
| | | List<LoginUser> userList = loginUserDao.list("from LoginUser lu where lu.systemId=? and lu.wxOpenId=? and lu.state=?", dto.getSystemId(), dto.getWeiXinUser().getOpenid(), LoginUser.STATE_NORMAL); |
| | | if (userList != null && userList.size() > 0) { |
| | | throw new RegisterUserException(RegisterUserException.CODE_USER_EXIST, "用户已存在"); |
| | | } |
| | | loginUser = new LoginUser(); |
| | | loginUser.setLoginType(LoginUser.LOGIN_TYPE_WX); |
| | | loginUser.setWxUnionId(dto.getWeiXinUser().getUnionid()); |
| | | loginUser.setName(dto.getWeiXinUser().getNickname()); |
| | | loginUser.setWxOpenId(dto.getWeiXinUser().getOpenid()); |
| | | loginUser.setPortrait(dto.getWeiXinUser().getHeadimgurl()); |
| | | |
| | | |
| | | loginUserExtra = new LoginUserExtra(); |
| | | loginUserExtra.setWxPortrait(dto.getWeiXinUser().getHeadimgurl()); |
| | | loginUserExtra.setWxOpenId(dto.getWeiXinUser().getOpenid()); |
| | | loginUserExtra.setWxNickName(dto.getWeiXinUser().getNickname()); |
| | | loginUserExtra.setWxSex(dto.getWeiXinUser().getSex()); |
| | | loginUserExtra.setWxUnionId(dto.getWeiXinUser().getUnionid()); |
| | | } |
| | | break; |
| | | case LoginUser.LOGIN_TYPE_PHONE: { |
| | | |
| | | if (StringUtil.isNullOrEmpty(dto.getPhone())) { |
| | | throw new RegisterUserException(RegisterUserException.CODE_PARAMS_NOT_ENOUGH, "手机号为空"); |
| | | } |
| | | |
| | | List<LoginUser> userList = loginUserDao.list("from LoginUser lu where lu.systemId=? and lu.phone=? and lu.state=?", dto.getSystemId(), dto.getPhone(), LoginUser.STATE_NORMAL); |
| | | if (userList != null && userList.size() > 0) { |
| | | throw new RegisterUserException(RegisterUserException.CODE_USER_EXIST, "用户已存在"); |
| | | } |
| | | |
| | | loginUser = new LoginUser(); |
| | | loginUser.setLoginType(LoginUser.LOGIN_TYPE_PHONE); |
| | | loginUser.setName(dto.getNickName()); |
| | | loginUser.setPhone(dto.getPhone()); |
| | | |
| | | loginUserExtra = new LoginUserExtra(); |
| | | } |
| | | break; |
| | | } |
| | | |
| | | if (loginUser == null) { |
| | | throw new RegisterUserException(RegisterUserException.CODE_PARAMS_NOT_ENOUGH, "注册类型出错"); |
| | | } |
| | | |
| | | |
| | | loginUser.setIpinfo(dto.getIpInfo()); |
| | | loginUser.setState(LoginUser.STATE_NORMAL); |
| | | loginUser.setSystemId(dto.getSystemId()); |
| | | loginUser.setCreatetime(System.currentTimeMillis() + ""); |
| | | |
| | | Serializable uid = loginUserDao.save(loginUser); |
| | | loginUser.setId(uid + ""); |
| | | |
| | | if (StringUtil.isNullOrEmpty(loginUser.getName())) { |
| | | //TODO 昵称前缀 |
| | | // systemConfigService.getConfigValueByKeyCache(""); |
| | | //设置默认用户昵称 |
| | | String nickName = "ID_" + uid; |
| | | LoginUser update = new LoginUser(); |
| | | update.setId(uid + ""); |
| | | update.setName(nickName); |
| | | loginUserDao.updateSelective(update); |
| | | } |
| | | |
| | | loginUserExtra.setId(loginUser.getId()); |
| | | loginUserExtra.setCreateTime(new Date()); |
| | | loginUserService.initExtra(loginUserExtra); |
| | | |
| | | return loginUser; |
| | | } |
| | | |
| | | public LoginUser getLoginUser(String id) { |
| | |
| | | List<LoginUser> list = loginUserDao.list("from LoginUser lu where lu.openid=?", new Serializable[]{openid}); |
| | | if (list != null && list.size() > 0) |
| | | return list.get(0); |
| | | return null; |
| | | } |
| | | |
| | | |
| | | public LoginUser getValidLoginUserByEmail(String email, String systemId) { |
| | | List<LoginUser> userList = loginUserDao.list("from LoginUser lu where lu.systemId=? and lu.email=? and lu.state=?", systemId, email, LoginUser.STATE_NORMAL); |
| | | if(userList!=null&&userList.size()>0){ |
| | | return userList.get(0); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | |
| | | throw new Exception("账户已被注销"); |
| | | } |
| | | user.setState(LoginUser.STATE_UNREGISTER); |
| | | loginUserDao.update(user); |
| | | loginUserDao.updateSelective(user); |
| | | } |
| | | |
| | | // 邮箱注册 |
| | |
| | | return (LoginUser) userDao.excute(new HibernateCallback<LoginUser>() { |
| | | @SuppressWarnings("unchecked") |
| | | public LoginUser doInHibernate(Session session) throws HibernateException { |
| | | List<LoginUser> list = session.createQuery("from LoginUser lu where lu.openid=? and lu.loginType=?") |
| | | .setParameter(0, user.getOpenid()).setParameter(1, user.getLoginType()).list(); |
| | | List<LoginUser> list = session.createQuery("from LoginUser lu where lu.email=?") |
| | | .setParameter(0, user.getOpenid()).list(); |
| | | if (list != null && list.size() > 0) { |
| | | if (list.get(0).getPwd().equalsIgnoreCase(user.getPwd())) |
| | | return list.get(0); |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | }); |