package com.easyproject.clientbus.service.member.impl;

import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.easyproject.common.constant.UserConstants;
import com.easyproject.common.core.domain.entity.ClientMember;
import com.easyproject.common.core.redis.RedisCache;
import com.easyproject.common.utils.StringUtils;
import com.easyproject.service.mapper.member.ClientMemberMapper;
import com.easyproject.clientbus.service.member.IClientMemberService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

/**
 * <p>方法说明: 用户相关 业务层处理
 * <p>参数说明:
 * <p>返回说明:
 * <p>创建时间: 2025/2/13 0013 11:08
 * <p>创  建  人: JAVA —— java001
 **/
@Slf4j
@Service
public class ClientMemberServiceImpl implements IClientMemberService {

    @Resource
    private ClientMemberMapper clientMemberMapper;
    @Resource
    private RedisCache redisCache;


    /**
     * <p>方法说明: 修改用户基本信息
     * <p>参数说明:
     * <p>返回说明:
     * <p>创建时间: 2025/2/13 0013 11:54
     * <p>创  建  人: JAVA —— java001
     **/
    @Override
    public int updateUserProfile(ClientMember member) {
        return clientMemberMapper.updateMember(member);
    }

    /**
     * <p>方法说明: 校验用户名称是否唯一
     * <p>参数说明:
     * <p>返回说明:
     * <p>创建时间: 2025/2/13 0013 12:55
     * <p>创  建  人: JAVA —— java001
     **/
    @Override
    public String checkUserNameUnique(ClientMember member) {
        Long memberId = StringUtils.isNull(member.getId()) ? -1L : member.getId();
        ClientMember info = clientMemberMapper.checkUserNameUnique(member.getMemberName());
        if (StringUtils.isNotNull(info) && info.getId().longValue() != memberId.longValue()) {
            return UserConstants.NOT_UNIQUE;
        }
        return UserConstants.UNIQUE;
    }

    /**
     * <p>方法说明: 注册用户信息
     * <p>参数说明:
     * <p>返回说明:
     * <p>创建时间: 2025/2/13 0013 13:05
     * <p>创  建  人: JAVA —— java001
     **/
    @Override
    public boolean registerMember(ClientMember member) {
        return clientMemberMapper.insertMember(member) > 0;
    }

    /**
     * <p>方法说明: 通过用户名查询用户
     * <p>参数说明:
     * <p>返回说明:
     * <p>创建时间: 2025/2/13 0013 13:26
     * <p>创  建  人: JAVA —— java001
     **/
    @Override
    public ClientMember selectMemberByMemberName(String memberName) {
        return clientMemberMapper.selectMemberByMemberName(memberName);
    }

    /**
     * 方法说明: 根据用户ID 查询数据库信息
     * 传入参数:
     * 返回的值:
     * 作者: java-002
     * 日期: 2025/7/24 0024
     */
    @Override
    public ClientMember selectMemberById(Long id) {
        return clientMemberMapper.selectMemberById(id);
    }

    /**
     * 方法说明: 判断邀请码是否存在
     * 入参说明:
     * 出参说明:
     * 创 建 人: JAVA-003
     * 创建时间: 2024/4/19 17:23
     */
    @Override
    public ClientMember selectMemberByCode(String inviteCode) {
        return clientMemberMapper.selectOne(Wrappers.<ClientMember>lambdaQuery().eq(ClientMember::getInviteCode, inviteCode));
    }

    /**
     * 方法说明: 检查邀请码是否存在
     * 入参说明:
     * 出参说明:
     * 创 建 人: JAVA-003
     * 创建时间: 2024/4/19 17:40
     */
    @Override
    public long selectCountByCode(String code) {
        long count = clientMemberMapper.selectCount(Wrappers.<ClientMember>lambdaQuery().eq(ClientMember::getInviteCode, code));
        return count;
    }

    /**
     * 方法说明: 新增 用户
     * 入参说明:
     * 出参说明:
     * 创 建 人: JAVA-003
     * 创建时间: 2024/4/19 18:04
     */
    @Override
    public int insertMember(ClientMember member) {
        int result = clientMemberMapper.insertMember(member);
        return result;
    }

}
