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;
|
}
|
|
|
}
|