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
* * @Description:
* @Project:
* @CreateDate: Created in 2020/2/20 09:19
* @Author: liuke */ @Slf4j @Service public class ClientServiceImpl extends SuperServiceImpl 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().eq("client_id", clientId) , clientId + "已存在"); return ResultBody.ok().msg("操作成功"); } @Override public PageResult listClent(Map params, boolean isPage) { Page page; if (isPage) { page = new Page<>(MapUtils.getInteger(params, "page"), MapUtils.getInteger(params, "limit")); } else { page = new Page<>(1, -1); } List list = baseMapper.findList(page, params); page.setRecords(list); return PageResult.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; } }