cy
2022-06-21 129904537f66509f97b285e7eb4f42b3dc349dd0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
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;
    }
 
 
}