package com.xunhong.erp.turbo.user.domain.gateway;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.xunhong.erp.turbo.api.facade.dto.qry.WxMaOpenidQry;
import com.xunhong.erp.turbo.api.user.dto.cmd.*;
import com.xunhong.erp.turbo.api.user.dto.qry.UserListQry;
import com.xunhong.erp.turbo.api.user.dto.qry.UserPageQry;
import com.xunhong.erp.turbo.api.user.dto.qry.UserShowQry;
import com.xunhong.erp.turbo.user.domain.entity.User;

import java.time.LocalDateTime;
import java.util.List;

/**
 * @author shenyifei
 */
public interface UserGateway {
	User create(UserCreateCmd userCreateCmd);

	User getByUserId(Long userId);

	User updateUser(UserUpdateCmd userUpdateCmd);

	IPage<User> page(UserPageQry userPageQry);

	User show(UserShowQry userShowQry);

	void destroy(UserDestroyCmd userDestroyCmd);

	void disable(UserDisableCmd userDisableCmd);

	List<User> list(UserListQry userListQry);

	void enable(UserEnableCmd userEnableCmd);

	void updateWx(UserUpdateWxCmd userUpdateWxCmd);

	void unsubscribe(WxMaOpenidQry wxMaOpenidQry);

	void updateLastLoginAt(Long userId, LocalDateTime lastLoginAt);
}
