package com.yami.trading.service.finance.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.yami.trading.bean.finance.Finance; import com.yami.trading.dao.finance.FinanceMapper; import com.yami.trading.service.finance.service.FinanceRedisKeys; import com.yami.trading.service.finance.service.FinanceService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @Service @Transactional public class FinanceServiceImpl extends ServiceImpl implements FinanceService { @Autowired private RedisTemplate redisTemplate; public void save(Finance entity, String login_safeword, String operaterUsername) { //todo // User sec = this.secUserService.findByUserName(operaterUsername); // String sysSafeword = sec.getSafePassword(); // String safeword_md5 = passwordEncoder.encode(login_safeword); // if (!safeword_md5.equals(sysSafeword)) { // throw new BusinessException("资金密码错误"); // } this.save(entity); // redisHandler.setSync(FinanceRedisKeys.FINANCE_ID + entity.getId().toString(), entity); redisTemplate.opsForValue().set(FinanceRedisKeys.FINANCE_ID + entity.getUuid(), entity); Map cacheMap = (Map) redisTemplate.opsForValue().get(FinanceRedisKeys.FINANCE_MAP); if (cacheMap == null) { cacheMap = new ConcurrentHashMap(); } cacheMap.put(entity.getUuid(), entity); // redisHandler.setSync(FinanceRedisKeys.FINANCE_MAP, cacheMap); redisTemplate.opsForValue().set(FinanceRedisKeys.FINANCE_MAP, cacheMap); } public void update(Finance entity, String login_safeword, String operaterUsername) { System.out.println("operaterUsername => " + operaterUsername); //todo // User sec = this.secUserService.findByUserName(operaterUsername); // String sysSafeword = sec.getSafePassword(); // String safeword_md5 = passwordEncoder.encode(login_safeword); // if (!safeword_md5.equals(sysSafeword)) { // throw new BusinessException("资金密码错误"); // } this.updateById(entity); // redisHandler.setSync(FinanceRedisKeys.FINANCE_ID + entity.getId().toString(), entity); redisTemplate.opsForValue().set(FinanceRedisKeys.FINANCE_ID + entity.getUuid(), entity); Map cacheMap = (Map) redisTemplate.opsForValue().get(FinanceRedisKeys.FINANCE_MAP); if (cacheMap == null) { cacheMap = new ConcurrentHashMap(); } cacheMap.put(entity.getUuid(), entity); redisTemplate.opsForValue().set(FinanceRedisKeys.FINANCE_MAP, cacheMap); } public void delete(String id, String login_safeword, String operaterUsername) { //todo // User sec = this.secUserService.findByUserName(operaterUsername); // String sysSafeword = sec.getSafePassword(); // String safeword_md5 = passwordEncoder.encode(login_safeword); // if (!safeword_md5.equals(sysSafeword)) { // throw new BusinessException("资金密码错误"); // } Finance entity = findById(id); this.removeById(entity); // redisHandler.remove(FinanceRedisKeys.FINANCE_ID + entity.getUuid().toString()); redisTemplate.delete(FinanceRedisKeys.FINANCE_ID + entity.getUuid()); Map cacheMap = (Map) redisTemplate.opsForValue().get(FinanceRedisKeys.FINANCE_MAP); if (cacheMap != null && !cacheMap.isEmpty()) { cacheMap.remove(entity.getUuid()); redisTemplate.opsForValue().set(FinanceRedisKeys.FINANCE_MAP, cacheMap); } } public Finance findById(String id) { return (Finance) redisTemplate.opsForValue().get(FinanceRedisKeys.FINANCE_ID + id); } public List findAll() { Map cacheMap = (Map) redisTemplate.opsForValue().get(FinanceRedisKeys.FINANCE_MAP); if (cacheMap != null && !cacheMap.isEmpty()) { return new ArrayList<>(cacheMap.values()); } return new ArrayList<>(); } public List findAllState_1() { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(Finance::getState, 1); queryWrapper.orderByAsc(Finance::getInvestmentMin); return list(queryWrapper); } @Override public List selectAllNoCache() { return list(); } }