A component required a bean of type ‘‘ that could not be found

在这里插入图片描述
做个笔记防止一直出现这种问题,其实就是很简单的一个问题只是在ServiceImpl中少了注释才会出现这个debug

加上后问题解决。

@Service
@Transactional
@Slf4j
public class BaseServiceBoImpl implements BaseService {

    private static final String splitWord = "__";

    private final static Logger logger = LoggerFactory.getLogger(BaseServiceBoImpl.class);

    private String salt;                                                            // 盐
    protected String encryptKeyDecode;                                             // 加密秘钥
    protected String signKeyDecode;                                                // 签名秘钥
    private static final int EXPIREDATE = 1;                                       // token过期时间间隔-天
    private static final String ENCODE = "utf-8";                                  // 编码

    public void init() {
        salt = "salt_xxx";
        encryptKeyDecode = "encrypt_xxx";
        signKeyDecode = "sign_xxx";
    }

    @Override
    public ResponseDto checkTokenAndSign(String token, String sign, Map<String, String> params) {
        logger.info("----checkTokenAndSign----" + params.toString());
        ResponseDto result = new ResponseDto();
        // 1、验证token
        if (StringUtils.isEmpty(token) || StringUtils.isEmpty(sign)) {
            String code = ErrorEnum.input_null.getCode();
            result.setErrorcode(code);
            result.setErrormsg(ErrorEnum.getMsg(code));
            return result;
        }
        String decryptStr = DESUtil.decrypt(token, this.encryptKeyDecode);
        String timestamp = decryptStr.split(splitWord)[2];

        int diff_day = (int) ((System.currentTimeMillis() - Long.valueOf(timestamp)) / 1000 / 60 / 60 / 24); // 当前时间与token时间的时间差(天为单位)

        if (diff_day > EXPIREDATE) {
            String code = ErrorEnum.token_expired.getCode();
            result.setErrorcode(code);
            result.setErrormsg(ErrorEnum.getMsg(code));
            return result;
        }

        // 2、签名(token和sign不做签名)
        String newSign = SignatureUtil.sign(params, this.signKeyDecode, ENCODE);
        if (!newSign.equals(sign)) {
            String code = ErrorEnum.sign_failure.getCode();
            result.setErrorcode(code);
            result.setErrormsg(ErrorEnum.getMsg(code));
            return result;
        }
        result.setErrorcode(ErrorEnum.ok.getCode());
        return result;
    }

    @Override
    public ResponseDto getToken(String user, String encodeSecret) {
        ResponseDto result = new ResponseDto();
        try {
            String deSecret = DESUtil.decrypt(encodeSecret, this.encryptKeyDecode);// 解密用户的appSecret
            String secret = "password";//diamondConfigBo.getConfigByBuffer(user); // 获取diamond的user秘钥
            // secret验证不通过
            if (!deSecret.equals(secret)) {
                String code = ErrorEnum.secret_error.getCode();
                result.setErrorcode(code);
                result.setErrormsg(ErrorEnum.getMsg(code));
                return result;
            }

            String timestamp = String.valueOf(System.currentTimeMillis());
            String token = DESUtil.encrypt(user + splitWord + salt + splitWord + timestamp, this.encryptKeyDecode);
            String code = ErrorEnum.ok.getCode();
            result.setErrorcode(code);
            result.setErrormsg(ErrorEnum.getMsg(code));
            result.setData(token);
            return result;
        } catch (Exception e) {
            String code = ErrorEnum.unknown_error.getCode();
            result.setErrorcode(code);
            result.setErrormsg(ErrorEnum.getMsg(code));
            return result;
        }

    }

    public ResponseDto checkRequest(Map<String, String> params) {
        ResponseDto result = new ResponseDto();
        String user = params.get("user");
        // 判断必填
        if (StringUtils.isEmpty(user)) {
            String code = ErrorEnum.input_null.getCode();
            result.setErrorcode(code);
            result.setErrormsg(ErrorEnum.getMsg(code));
            return result;
        }
        result.setErrorcode(ErrorEnum.ok.getCode());
        return result;
    }

    @Override
    public RequestDto getRequestArgs(Map<String, String> params) {
        RequestDto requestDto = new RequestDto();
        String user = params.get("user");
        requestDto.setUser(user);
        return requestDto;
    }

    @Override
    public void service(String token, String sign, Map<String, String> params,
                        ServiceWrapper<ResponseDto> serviceWrapper) {
        ResponseDto result = new ResponseDto();
        boolean flag = true;

        // 1、校验字段是否为空,如果有错误,只写日志
        result = checkRequest(params);
        if (!"0".equals(result.getErrorcode())) {
            flag = false;
        }
        // 2、校验token和签名,如果有错误,只写日志
        if (flag) {
            result = checkTokenAndSign(token, sign, params);
            if (!"0".equals(result.getErrorcode())) {
                flag = false;
            }
        }
        // 3、验空和token都没问题,执行业务逻辑操作
        if (flag) {
            result = serviceWrapper.doLogic();
        }

        // 4、写日志
        writeLog(params, result);
    }

    /**
     * 写调用log
     *
     * @param params
     * @param result
     */
    private void writeLog(Map<String, String> params, ResponseDto result) {

    }
}

public interface ServiceWrapper<T> {

    /**
     * 业务逻辑处理
     */
    ResponseDto doLogic();
}

@Data
public class ResponseDto {

    /** 错误code */
    private String errorcode = "0";
    /** 错误描述 */
    private String errormsg  = "";
    /** 数据内容 */
    private Object data;
    /** 分页信息 */
    private Page   page;

    public static class Page {

        public Page(){

        }

        public Page(int current, int total){
            this.current = current;
            this.total = total;
        }

        /** 当前页数 */
        private Integer current;
        /** 总页数 */
        private Integer total;

        public Integer getCurrent() {
            return current;
        }

        public void setCurrent(Integer current) {
            this.current = current;
        }

        public Integer getTotal() {
            return total;
        }

        public void setTotal(Integer total) {
            this.total = total;
        }

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值