package com.ylx.base;

import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; // 1. 必须引入这个包
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ylx.common.core.domain.model.WxLoginUser;
import com.ylx.common.exception.ServiceException;
import com.ylx.common.utils.SecurityUtils;

/**
 * 基础业务服务实现类
 * @param <M> Mapper 类型 (必须继承 BaseMapper)
 * @param <T> 实体类型
 */
// 2. 在 <M> 后面加上 extends BaseMapper<T>
public abstract class BaseServiceImpl<M extends BaseMapper<T>, T> extends ServiceImpl<M, T> {

    /**
     * 获取当前登录的微信用户信息
     */
    protected WxLoginUser getCurrentWxLoginUser() {
        WxLoginUser loginUser = SecurityUtils.getWxLoginUser();
        if (ObjectUtil.isNull(loginUser)) {
            throw new ServiceException("用户未登录或登录已过期");
        }
        return loginUser;
    }

    /**
     * 快捷获取当前用户ID
     */
    protected Long getCurrentUserId() {
        return Long.parseLong(getCurrentWxLoginUser().getId());
    }

    /**
     * 快捷获取当前用户昵称
     */
    protected String getCurrentUserNickName() {
        return getCurrentWxLoginUser().getCNickName();
    }
}