package cn.aqroid.business.customer.service;

import java.util.List;

import cn.aqroid.business.customer.domain.Customer;

/**
 * 顾客Service接口
 *
 * @author aqroid
 * @date 2026-01-12
 */
public interface ICustomerService {

    /**
     * 根据openid查询顾客
     *
     * @param openid 微信openid
     * @return 顾客信息
     */
    Customer selectByOpenid(String openid);

    /**
     * 根据ID查询顾客
     *
     * @param id 顾客ID
     * @return 顾客信息
     */
    Customer selectById(Long id);

    /**
     * 根据手机号查询顾客
     *
     * @param phone 手机号
     * @return 顾客信息
     */
    Customer selectByPhone(String phone);

    /**
     * 查询顾客列表
     *
     * @param customer 顾客查询条件
     * @return 顾客列表
     */
    List<Customer> selectCustomerList(Customer customer);

    /**
     * 新增顾客
     *
     * @param customer 顾客信息
     * @return 影响行数
     */
    int insertCustomer(Customer customer);

    /**
     * 更新顾客信息
     *
     * @param customer 顾客信息
     * @return 影响行数
     */
    int updateCustomer(Customer customer);

    /**
     * 更新最后登录时间
     *
     * @param id 顾客ID
     * @return 影响行数
     */
    int updateLastLoginTime(Long id);

    /**
     * 删除顾客
     *
     * @param id 顾客ID
     * @return 影响行数
     */
    int deleteById(Long id);

    /**
     * 根据openid获取或创建顾客
     * 如果openid不存在则创建新顾客
     *
     * @param openid 微信openid
     * @param nickname 昵称（可选）
     * @param avatar 头像（可选）
     * @return 顾客信息
     */
    Customer getOrCreateByOpenid(String openid, String nickname, String avatar);
}
