From d98c8bd9d1d4f749bd59aa2d3e0905db28c394a6 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期三, 10 三月 2021 18:24:19 +0800
Subject: [PATCH] ArrayList实例化优化
---
src/main/java/com/yeshi/buwan/service/imp/UserService.java | 274 +++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 226 insertions(+), 48 deletions(-)
diff --git a/src/main/java/com/yeshi/buwan/service/imp/UserService.java b/src/main/java/com/yeshi/buwan/service/imp/UserService.java
index 467f3f8..2d8197c 100644
--- a/src/main/java/com/yeshi/buwan/service/imp/UserService.java
+++ b/src/main/java/com/yeshi/buwan/service/imp/UserService.java
@@ -1,10 +1,17 @@
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;
@@ -15,7 +22,7 @@
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;
@@ -34,13 +41,12 @@
@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) {
@@ -155,52 +161,223 @@
/**
+ * 鐧诲綍
*
- * @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);
- lu.setState(LoginUser.STATE_NORMAL);
- 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.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) {
@@ -265,12 +442,13 @@
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;
}
});
--
Gitblit v1.8.0