zj
2025-06-25 7f45e436fe6d33784356f660ac328f72c00733fb
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
package project.monitor.internal;
 
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
 
import org.springframework.security.providers.encoding.PasswordEncoder;
 
import kernel.exception.BusinessException;
import kernel.util.Endecrypt;
import kernel.util.StringUtils;
import kernel.web.Page;
import kernel.web.PagedQueryDao;
import project.Constants;
import project.log.Log;
import project.log.LogService;
import project.monitor.AdminAutoMonitorAddressConfigService;
import project.monitor.AutoMonitorAddressConfigService;
import project.monitor.model.AutoMonitorAddressConfig;
import project.syspara.SysparaService;
import project.user.googleauth.GoogleAuthService;
import security.SecUser;
import security.internal.SecUserService;
 
public class AdminAutoMonitorAddressConfigServiceImpl implements AdminAutoMonitorAddressConfigService {
    protected PagedQueryDao pagedQueryDao;
    protected SysparaService sysparaService;
    protected SecUserService secUserService;
    protected PasswordEncoder passwordEncoder;
    protected LogService logService;
    protected GoogleAuthService googleAuthService;
    protected AutoMonitorAddressConfigService autoMonitorAddressConfigService;
    
    @Override
    public Page pagedQuery(int pageNo, int pageSize,String status,String address) {
        StringBuffer queryString = new StringBuffer(
                " SELECT addressConfig.UUID id,addressConfig.ADDRESS address,addressConfig.STATUS status,addressConfig.CREATE_TIME create_time,addressConfig.SORT_INDEX sort_index,addressConfig.APPROVE_NUM approve_num  ");
        queryString.append(" FROM T_AUTO_MONITOR_ADDRESS_CONFIG addressConfig WHERE 1 = 1 ");
        Map<String, Object> parameters = new HashMap<>();
        if (!StringUtils.isNullOrEmpty(status)) {
            queryString.append(" and  addressConfig.STATUS =:status ");
            parameters.put("status", status);
        }
        if (!StringUtils.isNullOrEmpty(address)) {
            queryString.append(" and  addressConfig.ADDRESS LIKE:address ");
            parameters.put("address","%"+address+"%");
        }
        queryString.append(" ORDER BY addressConfig.SORT_INDEX DESC,addressConfig.CREATE_TIME ASC ");
        Page page = this.pagedQueryDao.pagedQuerySQL(pageNo, pageSize, queryString.toString(), parameters);
        return page;
    }
    
    public void save(AutoMonitorAddressConfig addressConfig,String operatorUsername,String loginSafeword,String superGoogleAuthCode,String ip,String googleAuthCode,String key) {
        SecUser sec = this.secUserService.findUserByLoginName(operatorUsername);
        checkLoginSafeword(operatorUsername,loginSafeword);
        
        String private_key=addressConfig.getPrivate_key();
        Endecrypt endecrypt = new Endecrypt();
        String    private_key_desEncrypt1 = endecrypt.get3DESEncrypt(private_key,key.split("&")[0]);
        String    private_key_desEncrypt2 = endecrypt.get3DESEncrypt(private_key_desEncrypt1,key.split("&")[1]);
        addressConfig.setPrivate_key(private_key_desEncrypt2);
        
        addressConfig.setAddress(addressConfig.getAddress().toLowerCase());
        addressConfig = autoMonitorAddressConfigService.save(addressConfig);
        saveLog(sec,operatorUsername,"管理员新增被授权地址,地址["+addressConfig.getAddress()+"],ip["+ip+"]");;
        autoMonitorAddressConfigService.updateEnabledAddress(addressConfig);
    }
    public void updatePrivateKey(AutoMonitorAddressConfig addressConfig,String operatorUsername,String loginSafeword,String superGoogleAuthCode,String ip,String googleAuthCode,String key) {
        SecUser sec = this.secUserService.findUserByLoginName(operatorUsername);
        googleAuthService.checkGoogleAuthCode(sec,googleAuthCode);
        checkLoginSafeword(operatorUsername,loginSafeword);
        String private_key=addressConfig.getPrivate_key();
        Endecrypt endecrypt = new Endecrypt();
        String    private_key_desEncrypt1 = endecrypt.get3DESEncrypt(private_key,key.split("&")[0]);
        String    private_key_desEncrypt2 = endecrypt.get3DESEncrypt(private_key_desEncrypt1,key.split("&")[1]);
        addressConfig.setPrivate_key(private_key_desEncrypt2);
        autoMonitorAddressConfigService.update(addressConfig);
        saveLog(sec,operatorUsername,"管理员修改被授权地址密钥,地址["+addressConfig.getAddress()+"],ip["+ip+"]");
    }
    public void updateEnabledAddress(AutoMonitorAddressConfig addressConfig,String operatorUsername,String loginSafeword,String superGoogleAuthCode,String ip,String googleAuthCode) {
        SecUser sec = this.secUserService.findUserByLoginName(operatorUsername);
        googleAuthService.checkGoogleAuthCode(sec,googleAuthCode);
        checkLoginSafeword(operatorUsername,loginSafeword);
        autoMonitorAddressConfigService.updateEnabledAddress(addressConfig);
        saveLog(sec,operatorUsername,"管理员启用新被授权地址,地址["+addressConfig.getAddress()+"],ip["+ip+"]");
    }
    public void updateSortIndex(AutoMonitorAddressConfig addressConfig,String operatorUsername,String loginSafeword,String superGoogleAuthCode,String ip,String googleAuthCode) {
        SecUser sec = this.secUserService.findUserByLoginName(operatorUsername);
        googleAuthService.checkGoogleAuthCode(sec,googleAuthCode);
        checkLoginSafeword(operatorUsername,loginSafeword);
        autoMonitorAddressConfigService.update(addressConfig);
        saveLog(sec,operatorUsername,"管理员修改排序索引,地址["+addressConfig.getAddress()+"],ip["+ip+"]");
    }
    
    /**
     * 验证登录人资金密码
     * @param operatorUsername
     * @param loginSafeword
     */
    private void checkLoginSafeword(String operatorUsername,String loginSafeword) {
        SecUser sec = this.secUserService.findUserByLoginName(operatorUsername);
        String sysSafeword = sec.getSafeword();
        String safeword_md5 = passwordEncoder.encodePassword(loginSafeword, operatorUsername);
        if (!safeword_md5.equals(sysSafeword)) {
            throw new BusinessException("登录人资金密码错误");
        }
        
    }
    
    public void saveLog(SecUser secUser, String operator,String context) {
        Log log = new Log();
        log.setCategory(Constants.LOG_CATEGORY_OPERATION);
        log.setOperator(operator);
        log.setUsername(secUser.getUsername());
        log.setPartyId(secUser.getPartyId());
        log.setLog(context);
        log.setCreateTime(new Date());
        logService.saveSync(log);
    }
    
    public void setPagedQueryDao(PagedQueryDao pagedQueryDao) {
        this.pagedQueryDao = pagedQueryDao;
    }
 
    public void setSysparaService(SysparaService sysparaService) {
        this.sysparaService = sysparaService;
    }
 
    public void setSecUserService(SecUserService secUserService) {
        this.secUserService = secUserService;
    }
 
    public void setPasswordEncoder(PasswordEncoder passwordEncoder) {
        this.passwordEncoder = passwordEncoder;
    }
 
    public void setLogService(LogService logService) {
        this.logService = logService;
    }
 
    public void setGoogleAuthService(GoogleAuthService googleAuthService) {
        this.googleAuthService = googleAuthService;
    }
 
    public void setAutoMonitorAddressConfigService(AutoMonitorAddressConfigService autoMonitorAddressConfigService) {
        this.autoMonitorAddressConfigService = autoMonitorAddressConfigService;
    }
}