package com.energy.manage.service.controller.base;

import com.energy.manage.common.base.BaseController;
import com.energy.manage.common.base.Page;
import com.energy.manage.common.reponse.ResultResp;
import com.energy.manage.service.domain.dto.BaseDto;
import com.energy.manage.service.filter.LoginUser;
import com.energy.manage.service.filter.LoginUserContextHolder;
import com.github.pagehelper.PageInfo;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import java.util.List;

/**
 * @author chy
 * @date 2024/5/21 10:37
 * @desc
 */
public class BaseServiceController extends BaseController {

    /**
     * token 在请求头中的key
     */
    private final static String TOKE_KEY = "token";


    /**
     * 无返回数据成功函数
     * @param
     * @return
     */
    public ResultResp success() {
        return ResultResp.SUCCESS(null);
    }

    /**
     * 有返回数据成功函数
     * @param data
     * @return
     */
    public ResultResp success(Object data) {
        return ResultResp.SUCCESS(data);
    }

    /**
     * 分页结果集
     * @param data
     * @return
     */
    public <T> ResultResp<Page<T>> pageResult(List<T> data, BaseDto baseDto) {
        long total = new PageInfo(data).getTotal();
        return ResultResp.SUCCESS(Page.build(baseDto.getPageNum(),baseDto.getPageSize(),total,data));
    }

    /**
     * 获取登录用户信息  后来在改造
     * @return
     */
    public LoginUser getLoginUser(){
        return LoginUserContextHolder.get();
    }

    /**
     * 获取登录用户角色id
     * @return
     */
    public Integer getRoleId(){
        return getLoginUser().getCurrentRoleId();
    }

    /**
     * 获取登录用户角色id
     * @return
     */
    public Integer getUserId(){
        return getLoginUser().getUserId();
    }

    /**
     * 获取token
     * @return
     */
    private String getToken(){
        RequestAttributes attributes = RequestContextHolder.getRequestAttributes();
        ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) attributes;
        return servletRequestAttributes.getRequest().getHeader(TOKE_KEY);
    }

}
