| | |
| | | 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 org.hibernate.HibernateException; |
| | | import org.hibernate.Session; |
| | | import org.springframework.cache.annotation.Cacheable; |
| | |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import com.yeshi.buwan.dao.LoginUserDao; |
| | | import com.yeshi.buwan.dao.user.LoginUserDao; |
| | | import com.yeshi.buwan.dao.UserDao; |
| | | import com.yeshi.buwan.domain.LoginUser; |
| | | import com.yeshi.buwan.domain.SystemInfo; |
| | | import com.yeshi.buwan.domain.user.LoginUser; |
| | | 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; |
| | |
| | | @Service |
| | | public class UserService { |
| | | |
| | | public UserService() { |
| | | public UserService() { |
| | | |
| | | } |
| | | } |
| | | |
| | | @Resource |
| | | private UserDao userDao; |
| | | @Resource |
| | | private UserDao userDao; |
| | | |
| | | @Resource |
| | | private LoginUserDao loginUserDao; |
| | | @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; |
| | | |
| | | // 用户操作 |
| | | 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 long getUserInfoCount(int system) { |
| | | // 用户操作 |
| | | 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 + ""}); |
| | | } |
| | | |
| | | return userDao.getCount("select count(*) from UserInfo u where u.system.id=?", new String[] { system + "" }); |
| | | } |
| | | // 获取用户数量 |
| | | public long getUserInfoCount(int system) { |
| | | |
| | | // 获取总的用户数量 |
| | | public long getUserInfoCount() { |
| | | return userDao.getCount("select count(*) from UserInfo u where u.system.id=?", new String[]{system + ""}); |
| | | } |
| | | |
| | | return userDao.getCount("select count(*) from UserInfo u"); |
| | | } |
| | | // 获取总的用户数量 |
| | | public long getUserInfoCount() { |
| | | |
| | | // 获取用户的页数 |
| | | public long getUserInfoPage(int system) { |
| | | long count = getUserInfoCount(system); |
| | | return count % Constant.pageCount == 0 ? count / Constant.pageCount : count / Constant.pageCount + 1; |
| | | } |
| | | return userDao.getCount("select count(*) from UserInfo u"); |
| | | } |
| | | |
| | | // 获取某个用户的详细信息 |
| | | @Cacheable(value = "longTimeCache", key = "'getUserInfo'+'-'+#id") |
| | | public UserInfo getUserInfo(String id) { |
| | | // 获取用户的页数 |
| | | public long getUserInfoPage(int system) { |
| | | long count = getUserInfoCount(system); |
| | | return count % Constant.pageCount == 0 ? count / Constant.pageCount : count / Constant.pageCount + 1; |
| | | } |
| | | |
| | | return userDao.find(UserInfo.class, id); |
| | | } |
| | | // 获取某个用户的详细信息 |
| | | @Cacheable(value = "longTimeCache", key = "'getUserInfo'+'-'+#id") |
| | | public UserInfo getUserInfo(String id) { |
| | | |
| | | // 更新用户信息 |
| | | public void updateUserInfo(UserInfo userInfo) { |
| | | userDao.update(userInfo); |
| | | } |
| | | return userDao.find(UserInfo.class, id); |
| | | } |
| | | |
| | | public void updateLoginUserInfo(LoginUser lu) { |
| | | loginUserDao.update(lu); |
| | | } |
| | | // 更新用户信息 |
| | | public void updateUserInfo(UserInfo userInfo) { |
| | | userDao.update(userInfo); |
| | | } |
| | | |
| | | public String getUid(String device, String system, String imei, String mac, String lat, String lng) { |
| | | UserInfo info; |
| | | info = new UserInfo(); |
| | | info.setDevice(device); |
| | | if (!StringUtil.isNullOrEmpty(imei)) |
| | | info.setImei(imei); |
| | | if (!StringUtil.isNullOrEmpty(mac)) |
| | | info.setMac(mac); |
| | | if (!StringUtil.isNullOrEmpty(lat)) |
| | | info.setLat(lat); |
| | | if (!StringUtil.isNullOrEmpty(lng)) |
| | | info.setLng(lng); |
| | | String s; |
| | | List<UserInfo> list = userDao.list("from UserInfo u where u.device=? and u.system.id=" + system, |
| | | new String[] { device }); |
| | | public void updateLoginUserInfo(LoginUser lu) { |
| | | loginUserDao.update(lu); |
| | | } |
| | | |
| | | if (list.size() <= 0) {// |
| | | info.setScore("0"); |
| | | info.setCreatetime((new StringBuilder(String.valueOf(System.currentTimeMillis()))).toString()); |
| | | SystemInfo sys = new SystemInfo(); |
| | | sys.setId(system); |
| | | info.setSystem(sys); |
| | | userDao.create(info); |
| | | s = queryUid(device, system); |
| | | } else { |
| | | UserInfo u = (UserInfo) list.get(0); |
| | | s = u.getId(); |
| | | if (!StringUtil.isNullOrEmpty(imei)) |
| | | u.setImei(imei); |
| | | if (!StringUtil.isNullOrEmpty(mac)) |
| | | u.setMac(mac); |
| | | if (!StringUtil.isNullOrEmpty(lat)) |
| | | u.setLat(lat); |
| | | if (!StringUtil.isNullOrEmpty(lng)) |
| | | u.setLng(lng); |
| | | userDao.update(u); |
| | | } |
| | | public String getUid(String device, String system, String imei, String mac, String lat, String lng) { |
| | | UserInfo info; |
| | | info = new UserInfo(); |
| | | info.setDevice(device); |
| | | if (!StringUtil.isNullOrEmpty(imei)) |
| | | info.setImei(imei); |
| | | if (!StringUtil.isNullOrEmpty(mac)) |
| | | info.setMac(mac); |
| | | if (!StringUtil.isNullOrEmpty(lat)) |
| | | info.setLat(lat); |
| | | if (!StringUtil.isNullOrEmpty(lng)) |
| | | info.setLng(lng); |
| | | String s; |
| | | List<UserInfo> list = userDao.list("from UserInfo u where u.device=? and u.system.id=" + system, |
| | | device); |
| | | |
| | | return s; |
| | | } |
| | | if (list.size() <= 0) {// |
| | | info.setScore("0"); |
| | | info.setCreatetime((new StringBuilder(String.valueOf(System.currentTimeMillis()))).toString()); |
| | | SystemInfo sys = new SystemInfo(); |
| | | sys.setId(system); |
| | | info.setSystem(sys); |
| | | userDao.create(info); |
| | | s = queryUid(device, system); |
| | | } else { |
| | | UserInfo u = (UserInfo) list.get(0); |
| | | s = u.getId(); |
| | | if (!StringUtil.isNullOrEmpty(imei)) |
| | | u.setImei(imei); |
| | | if (!StringUtil.isNullOrEmpty(mac)) |
| | | u.setMac(mac); |
| | | if (!StringUtil.isNullOrEmpty(lat)) |
| | | u.setLat(lat); |
| | | if (!StringUtil.isNullOrEmpty(lng)) |
| | | u.setLng(lng); |
| | | userDao.update(u); |
| | | } |
| | | |
| | | @SuppressWarnings("unchecked") |
| | | public String queryUid(String device, String system) { |
| | | String s = "0"; |
| | | List<UserInfo> list = userDao.list("from UserInfo u where u.device=? and u.system.id=" + system, |
| | | new String[] { device }); |
| | | if (list.size() <= 0) |
| | | s = "0"; |
| | | else |
| | | s = ((UserInfo) list.get(0)).getId(); |
| | | return s; |
| | | } |
| | | return s; |
| | | } |
| | | |
| | | @Cacheable(value = "userCache", key = "'getUserData'+'-'+#uid") |
| | | public UserData getUserData(String uid) { |
| | | UserData data = new UserData(); |
| | | data.setCollectCount((new StringBuilder(String.valueOf(userDao.getCount( |
| | | (new StringBuilder("select count(*) from Collection c where c.user.id=")).append(uid).toString())))) |
| | | .toString()); |
| | | data.setWatchCount((new StringBuilder(String.valueOf(userDao.getCount( |
| | | (new StringBuilder("select count(*) from GetScoreWatch c where c.user.id=")).append(uid).toString())))) |
| | | .toString()); |
| | | List<UserInfo> user = userDao |
| | | .list((new StringBuilder("select count(*) from UserInfo u where u.id=")).append(uid).toString()); |
| | | // if (user != null && user.size() > 0) |
| | | // data.setScore(((UserInfo) user.get(0)).getScore()); |
| | | // else |
| | | // data.setScore("0"); |
| | | return data; |
| | | } |
| | | @SuppressWarnings("unchecked") |
| | | public String queryUid(String device, String system) { |
| | | String s = "0"; |
| | | List<UserInfo> list = userDao.list("from UserInfo u where u.device=? and u.system.id=" + system, |
| | | new String[]{device}); |
| | | if (list.size() <= 0) |
| | | s = "0"; |
| | | else |
| | | s = ((UserInfo) list.get(0)).getId(); |
| | | return s; |
| | | } |
| | | |
| | | @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(); |
| | | @Cacheable(value = "userCache", key = "'getUserData'+'-'+#uid") |
| | | public UserData getUserData(String uid) { |
| | | UserData data = new UserData(); |
| | | data.setCollectCount((new StringBuilder(String.valueOf(userDao.getCount( |
| | | (new StringBuilder("select count(*) from Collection c where c.user.id=")).append(uid).toString())))) |
| | | .toString()); |
| | | data.setWatchCount((new StringBuilder(String.valueOf(userDao.getCount( |
| | | (new StringBuilder("select count(*) from GetScoreWatch c where c.user.id=")).append(uid).toString())))) |
| | | .toString()); |
| | | List<UserInfo> user = userDao |
| | | .list((new StringBuilder("select count(*) from UserInfo u where u.id=")).append(uid).toString()); |
| | | // if (user != null && user.size() > 0) |
| | | // data.setScore(((UserInfo) user.get(0)).getScore()); |
| | | // else |
| | | // data.setScore("0"); |
| | | return data; |
| | | } |
| | | |
| | | 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; |
| | | } |
| | | |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | session.getTransaction().rollback(); |
| | | } |
| | | return null; |
| | | } |
| | | }); |
| | | /** |
| | | * 登录 |
| | | * |
| | | * @param dto |
| | | * @return |
| | | * @throws LoginUserException |
| | | */ |
| | | public LoginUser login(LoginInfoDto dto) throws LoginUserException { |
| | | |
| | | } |
| | | LoginUser loginUser = null; |
| | | |
| | | public LoginUser getLoginUser(String id) { |
| | | return loginUserDao.find(LoginUser.class, id); |
| | | } |
| | | 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, "邮箱和密码不能为空"); |
| | | } |
| | | 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, "用户不存在"); |
| | | } |
| | | |
| | | public LoginUser getLoginUserByOpenId(String openid) { |
| | | 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; |
| | | } |
| | | 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); |
| | | |
| | | /** |
| | | * 用户注销 |
| | | * |
| | | * @param uid |
| | | */ |
| | | @Transactional |
| | | public void unRegister(Long uid) throws Exception { |
| | | LoginUser user = loginUserDao.find(LoginUser.class, uid+""); |
| | | if (user == null) { |
| | | throw new Exception("用户不存在"); |
| | | } |
| | | if (user.getState() != LoginUser.STATE_NORMAL) { |
| | | throw new Exception("账户已被注销"); |
| | | } |
| | | user.setState(LoginUser.STATE_UNREGISTER); |
| | | loginUserDao.update(user); |
| | | } |
| | | //更新微信信息 |
| | | loginUser.setWxUnionId(dto.getWeiXinUser().getUnionid()); |
| | | |
| | | // 邮箱注册 |
| | | public String registerByEmail(final LoginUser user) { |
| | | return userDao.excute(new HibernateCallback<String>() { |
| | | @SuppressWarnings("unchecked") |
| | | public String 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(); |
| | | if (list != null && list.size() > 0) |
| | | return "该邮箱已注册"; |
| | | try { |
| | | session.getTransaction().begin(); |
| | | session.save(user); |
| | | session.flush(); |
| | | session.getTransaction().commit(); |
| | | return "注册成功"; |
| | | } catch (Exception e) { |
| | | return "注册失败"; |
| | | } |
| | | } |
| | | }) + ""; |
| | | } |
| | | 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: { |
| | | |
| | | /** |
| | | * 邮箱登录 |
| | | * |
| | | * @param user |
| | | * @return |
| | | */ |
| | | public LoginUser loginByEmail(final LoginUser 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(); |
| | | if (list != null && list.size() > 0) { |
| | | if (list.get(0).getPwd().equalsIgnoreCase(user.getPwd())) |
| | | return list.get(0); |
| | | } |
| | | return null; |
| | | } |
| | | }); |
| | | } |
| | | 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.update(loginUser); |
| | | } |
| | | |
| | | if (loginUserExtra != null) { |
| | | 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(null); |
| | | 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())) { |
| | | //设置默认用户昵称 |
| | | String nickName = "无名氏"; |
| | | 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) { |
| | | return loginUserDao.find(LoginUser.class, id); |
| | | } |
| | | |
| | | public LoginUser getLoginUserByOpenId(String openid) { |
| | | 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; |
| | | } |
| | | |
| | | /** |
| | | * 用户注销 |
| | | * |
| | | * @param uid |
| | | */ |
| | | @Transactional |
| | | public void unRegister(Long uid) throws Exception { |
| | | LoginUser user = loginUserDao.find(LoginUser.class, uid + ""); |
| | | if (user == null) { |
| | | throw new Exception("用户不存在"); |
| | | } |
| | | if (user.getState() != LoginUser.STATE_NORMAL) { |
| | | throw new Exception("账户已被注销"); |
| | | } |
| | | user.setState(LoginUser.STATE_UNREGISTER); |
| | | loginUserDao.update(user); |
| | | } |
| | | |
| | | // 邮箱注册 |
| | | public String registerByEmail(final LoginUser user) { |
| | | return userDao.excute(new HibernateCallback<String>() { |
| | | @SuppressWarnings("unchecked") |
| | | public String 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(); |
| | | if (list != null && list.size() > 0) |
| | | return "该邮箱已注册"; |
| | | try { |
| | | user.setState(LoginUser.STATE_NORMAL); |
| | | session.getTransaction().begin(); |
| | | session.save(user); |
| | | session.flush(); |
| | | session.getTransaction().commit(); |
| | | return "注册成功"; |
| | | } catch (Exception e) { |
| | | return "注册失败"; |
| | | } |
| | | } |
| | | }) + ""; |
| | | } |
| | | |
| | | /** |
| | | * 邮箱登录 |
| | | * |
| | | * @param user |
| | | * @return |
| | | */ |
| | | public LoginUser loginByEmail(final LoginUser 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.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; |
| | | } |
| | | }); |
| | | } |
| | | } |