package cn.ksource.web.facade.uc.login; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import cn.ksource.core.dao.BaseDao; import cn.ksource.core.dao.SqlParameter; import cn.ksource.core.util.ConvertUtil; import cn.ksource.core.util.StringUtil; import cn.ksource.core.web.PasswordEncoder; import cn.ksource.core.web.WebLoginUser; import cn.ksource.web.SysConstants; import cn.ksource.web.entity.WebLoginEntity; @Service("userFacade") @SuppressWarnings("unchecked") public class UserFacadeImpl implements UserFacade { @Autowired private BaseDao baseDao; @Override public Map queryUserByName(String username) { Map resultMap = new HashMap(); if(StringUtil.notEmpty(username)) { //StringBuilder builder = new StringBuilder("SELECT A.*,B.CUSTOMER_NAME,B.PARTNER_ID FROM SC_PARTNER_CUSTOMER_ACCOUNT_INFO A,SC_PARTNER_CUSTOMER_INFO B WHERE A.CUSTOMER_ID = B.ID AND LOGIN_NAME = :username"); String selectSql = "SELECT A.*,B.CUSTOMER_STATE,B.CREATE_TIME,B.VALID_BEGIN_DATE,B.VALID_END_DATE,B.CUSTOMER_NAME,B.SHORT_NAME,B.CUSTOMER_STATE FROM CUSTOMER_CONTACTS A,SC_PARTNER_CUSTOMER_INFO B WHERE A.CUSTOMER_ID = B.ID AND A.LOGIN_NAME = :username"; resultMap = baseDao.queryForMap(selectSql,new SqlParameter().addValue("username", username)); } return resultMap; } @Override public int queryHasUser(String username) { if(StringUtil.notEmpty(username)) { StringBuilder sql = new StringBuilder("SELECT COUNT(ID) FROM CUSTOMER_INFO WHERE CUSTOMER_NAME = :username "); Map paramMap = new HashMap(); paramMap.put("username", username); String registerPeople = "SELECT COUNT(ID) FROM CRM_NEW_REGISTER_POOL WHERE COMPANY_NAME = :username "; int count1 = baseDao.queryForInteger(sql.toString(), paramMap); int count2 = baseDao.queryForInteger(registerPeople,paramMap); return count1+count2; } return 0; } @Override public WebLoginEntity doUserLogin(HttpServletRequest request,String username, String password) { WebLoginEntity loginEntity = new WebLoginEntity(); //用户名为空 if(!StringUtil.notEmpty(username)) { loginEntity.setResult(WebLoginEntity.LOGIN_RESULT_USERNAME_IS_EMPTY); return loginEntity; } //密码为空 if(!StringUtil.notEmpty(password)) { loginEntity.setResult(WebLoginEntity.LOGIN_RESULT_PASSWORD_IS_EMPTY); return loginEntity; } Map map = new HashMap(); map = queryUserByName(username.trim()); //用户名不存在 if (null == map || map.isEmpty()) { loginEntity.setResult(WebLoginEntity.Login_Result_UserNameNotExists); return loginEntity; } String pwd = ConvertUtil.obj2StrBlank(map.get("PASSWORD")); //密码错误 if (!PasswordEncoder.encode(password.trim()).equals(pwd)) { loginEntity.setResult(WebLoginEntity.Login_Result_PassowrdError); return loginEntity; } //账号被锁定,请联系管理员 if(ConvertUtil.obj2StrBlank(map.get("STATE")).equals("2")){ loginEntity.setResult(WebLoginEntity.Login_Result_Lock); return loginEntity; } //账号不允许登录 if(ConvertUtil.obj2StrBlank(map.get("ALLOW_LOGIN")).equals("2")) { loginEntity.setResult(WebLoginEntity.Login_Result_Lock); return loginEntity; } //判断登录的联系人所属的客户是否被禁用 if(ConvertUtil.obj2StrBlank(map.get("CUSTOMER_STATE")).equals("2")){ loginEntity.setResult(WebLoginEntity.Login_Customer_Disable); return loginEntity; } String isTimeOut = ConvertUtil.obj2StrBlank(map.get("IS_TIME_OUT")); if(StringUtil.notEmpty(isTimeOut) && isTimeOut.equals("2")) { loginEntity.setResult(WebLoginEntity.Login_out_time); return loginEntity; } //判断当前用户密码是否和初始化密码一致 if(PasswordEncoder.encode(SysConstants.default_Password).equals(pwd)) { loginEntity.setResult(WebLoginEntity.Login_Result_InitPwd); } else { loginEntity.setResult(WebLoginEntity.LOGIN_RESULT_SUCCESSED); } String userId = ConvertUtil.obj2StrBlank(map.get("ID")); String userName = ConvertUtil.obj2StrBlank(map.get("CONTACT_NAME")); String customerId = ConvertUtil.obj2StrBlank(map.get("CUSTOMER_ID")); String customerName = ConvertUtil.obj2StrBlank(map.get("CUSTOMER_NAME")); String isEmail = ConvertUtil.obj2StrBlank(map.get("ISEMAIL")); String isPhone = ConvertUtil.obj2StrBlank(map.get("ISPHONE")); String partnerId = ConvertUtil.obj2StrBlank(map.get("PARTNER_ID")); WebLoginUser loginUser = new WebLoginUser(userId,userName,customerId,customerName,isEmail,isPhone); loginEntity.setUser(loginUser); request.getSession().setAttribute(SysConstants.WEBSITE_LOGIN_INFO_KEY, loginUser); return loginEntity; } @Override public boolean doResetPwd(String username, String mobile, String password) { if(StringUtil.notEmpty(password)) { Map paramMap = new HashMap(); paramMap.put("username", username); paramMap.put("mobile", mobile); String sql = "SELECT ID,LOGIN_NAME FROM CUSTOMER_CONTACTS WHERE LOGIN_NAME = :username AND MOBILE = :mobile"; List list = baseDao.queryForList(sql, paramMap); if(null!=list && list.size() == 1) { paramMap.put("password", PasswordEncoder.encode(password)); String updateSql = "UPDATE CUSTOMER_CONTACTS SET PASSWORD = :password WHERE LOGIN_NAME = :username AND MOBILE = :mobile"; baseDao.execute(updateSql, paramMap); return true; } } return false; } }