package com.kidgrow.oauth2.service.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.kidgrow.common.constant.CommonConstant;
|
import com.kidgrow.common.constant.SecurityConstants;
|
import com.kidgrow.common.lock.DistributedLock;
|
import com.kidgrow.common.model.PageResult;
|
import com.kidgrow.common.model.ResultBody;
|
import com.kidgrow.common.service.impl.SuperServiceImpl;
|
import com.kidgrow.oauth2.mapper.ClientMapper;
|
import com.kidgrow.oauth2.model.Client;
|
import com.kidgrow.oauth2.service.IClientService;
|
import com.kidgrow.redis.template.RedisRepository;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.collections4.MapUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.security.crypto.password.PasswordEncoder;
|
import org.springframework.stereotype.Service;
|
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
|
*
|
* @Description: <br>
|
* @Project: <br>
|
* @CreateDate: Created in 2020/2/20 09:19 <br>
|
* @Author: <a href="4345453@kidgrow.com">liuke</a>
|
*/
|
@Slf4j
|
@Service
|
public class ClientServiceImpl extends SuperServiceImpl<ClientMapper, Client> implements IClientService {
|
private final static String LOCK_KEY_CLIENTID = CommonConstant.LOCK_KEY_PREFIX+"clientId:";
|
|
@Autowired
|
private RedisRepository redisRepository;
|
|
@Autowired
|
private PasswordEncoder passwordEncoder;
|
|
@Autowired
|
private DistributedLock lock;
|
|
@Override
|
public ResultBody saveClient(Client client) {
|
client.setClientSecret(passwordEncoder.encode(client.getClientSecretStr()));
|
String clientId = client.getClientId();
|
super.saveOrUpdateIdempotency(client, lock
|
, LOCK_KEY_CLIENTID+clientId
|
, new QueryWrapper<Client>().eq("client_id", clientId)
|
, clientId + "已存在");
|
return ResultBody.ok().msg("操作成功");
|
}
|
|
@Override
|
public PageResult<Client> listClent(Map<String, Object> params, boolean isPage) {
|
Page<Client> page;
|
if (isPage) {
|
page = new Page<>(MapUtils.getInteger(params, "page"), MapUtils.getInteger(params, "limit"));
|
} else {
|
page = new Page<>(1, -1);
|
}
|
List<Client> list = baseMapper.findList(page, params);
|
page.setRecords(list);
|
return PageResult.<Client>builder().data(list).code(0).count(page.getTotal()).build();
|
}
|
|
@Override
|
public void delClient(long id) {
|
String clientId = baseMapper.selectById(id).getClientId();
|
baseMapper.deleteById(id);
|
redisRepository.del(clientRedisKey(clientId));
|
}
|
|
private String clientRedisKey(String clientId) {
|
return SecurityConstants.CACHE_CLIENT_KEY + ":" + clientId;
|
}
|
}
|