zj
2024-08-02 815342ea90c689561adeecca3230b5b5f8ddc2b7
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
package project.finance.internal;
 
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
 
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.security.providers.encoding.PasswordEncoder;
 
import kernel.bo.RecordObjectMapper;
import kernel.exception.BusinessException;
import kernel.web.ApplicationUtil;
import project.finance.Finance;
import project.finance.FinanceRedisKeys;
import project.finance.FinanceService;
import project.redis.RedisHandler;
import security.SecUser;
import security.internal.SecUserService;
 
public class FinanceServiceImpl implements FinanceService {
 
    private JdbcTemplate jdbcTemplate;
    private RedisHandler redisHandler;
    private SecUserService  secUserService;
    private PasswordEncoder passwordEncoder;
 
    public void save(Finance entity,String login_safeword,String operaterUsername) {
        SecUser sec =  this.secUserService.findUserByLoginName(operaterUsername);
        String sysSafeword =sec.getSafeword();
        String safeword_md5 = passwordEncoder.encodePassword(login_safeword,operaterUsername);
        if (!safeword_md5.equals(sysSafeword)) {
            throw new BusinessException("资金密码错误");
        }
        entity.setId(ApplicationUtil.getCurrentTimeUUID());
        Object[] jdbcParams = ApplicationUtil.getInsertStatement(entity);
        String insertUserSql = (String)jdbcParams[0];
        Object[] sqlParameters = (Object[])jdbcParams[1];
        jdbcTemplate.update(insertUserSql, sqlParameters);
        
        redisHandler.setSync(FinanceRedisKeys.FINANCE_ID + entity.getId().toString(), entity);
 
        Map<String, Finance> cacheMap = (Map<String, Finance>) redisHandler.get(FinanceRedisKeys.FINANCE_MAP);
        if (cacheMap == null) {
            cacheMap = new ConcurrentHashMap<String, Finance>();
        }
        cacheMap.put(entity.getId().toString(), entity);
        redisHandler.setSync(FinanceRedisKeys.FINANCE_MAP, cacheMap);
    }
 
    public void update(Finance entity,String login_safeword,String operaterUsername) {
        SecUser sec =  this.secUserService.findUserByLoginName(operaterUsername);
        String sysSafeword =sec.getSafeword();
        String safeword_md5 = passwordEncoder.encodePassword(login_safeword,operaterUsername);
        if (!safeword_md5.equals(sysSafeword)) {
            throw new BusinessException("资金密码错误");
        }
        
        Object[] jdbcParams = ApplicationUtil.getUpdateStatement(entity, "WHERE UUID=?", new Object[] {entity.getId()});
        String updateUserSql = (String)jdbcParams[0];
        Object[] sqlParameters = (Object[])jdbcParams[1];
        jdbcTemplate.update(updateUserSql, sqlParameters);
        
        redisHandler.setSync(FinanceRedisKeys.FINANCE_ID + entity.getId().toString(), entity);
 
        Map<String, Finance> cacheMap = (Map<String, Finance>) redisHandler.get(FinanceRedisKeys.FINANCE_MAP);
        if (cacheMap == null) {
            cacheMap = new ConcurrentHashMap<String, Finance>();
        }
        cacheMap.put(entity.getId().toString(), entity);
        redisHandler.setSync(FinanceRedisKeys.FINANCE_MAP, cacheMap);
    
    }
 
    public void delete(String id,String login_safeword,String operaterUsername) {
        SecUser sec =  this.secUserService.findUserByLoginName(operaterUsername);
        String sysSafeword =sec.getSafeword();
        String safeword_md5 = passwordEncoder.encodePassword(login_safeword,operaterUsername);
        if (!safeword_md5.equals(sysSafeword)) {
            throw new BusinessException("资金密码错误");
        }
        
        Finance entity = findById(id);
        jdbcTemplate.update("DELETE FROM T_FINANCE WHERE UUID=?", entity.getId());
        redisHandler.remove(FinanceRedisKeys.FINANCE_ID + entity.getId().toString());
 
        Map<String, Finance> cacheMap = (Map<String, Finance>) redisHandler.get(FinanceRedisKeys.FINANCE_MAP);
        if (cacheMap != null && !cacheMap.isEmpty()) {
            cacheMap.remove(entity.getId().toString());
            redisHandler.setSync(FinanceRedisKeys.FINANCE_MAP, cacheMap);
        }
    }
 
    public Finance findById(String id) {
        return (Finance) redisHandler.get(FinanceRedisKeys.FINANCE_ID + id);
    }
 
    public List<Finance> findAll() {
        Map<String, Finance> cacheMap = (Map<String, Finance>) redisHandler.get(FinanceRedisKeys.FINANCE_MAP);
        if (cacheMap != null && !cacheMap.isEmpty()) {
            return new ArrayList<Finance>(cacheMap.values());
        }
        return new ArrayList<Finance>();
    }
    
    public Map<String, Finance> findFinanceMap(){
        return (Map<String, Finance>) redisHandler.get(FinanceRedisKeys.FINANCE_MAP);
    }
 
    public List<Finance> findAllState_1() {
        List<Finance> list = jdbcTemplate.query("SELECT * FROM T_FINANCE WHERE STATE = '1' ", RecordObjectMapper.newInstance(Finance.class));
        if (list.size() > 0) {
            return list;
        }
        return null;
    }
    
    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }
 
    public void setRedisHandler(RedisHandler redisHandler) {
        this.redisHandler = redisHandler;
    }
    
    public void setSecUserService(SecUserService secUserService) {
        this.secUserService = secUserService;
    }
    
    public void setPasswordEncoder(PasswordEncoder passwordEncoder) {
        this.passwordEncoder = passwordEncoder;
    }
}