package com.zcloud.basic.info.api;


import com.alibaba.cola.dto.MultiResponse;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.Response;
import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.basic.info.dto.*;
import com.zcloud.basic.info.dto.clientobject.*;
import com.zcloud.basic.info.persistence.dataobject.UserImgDO;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
* web-client
* @Author zhangyue
* @Date 2025-11-04 14:07:37
*/
public interface UserServiceI {
    PageResponse<UserCO> listPage(UserPageQry qry);

    SingleResponse<UserCO> add(UserAddCmd cmd);

    SingleResponse<UserCO> register(AppUserRegisterCmd cmd);
    SingleResponse<UserCO> registerYanshi(AppUserRegisterCmd cmd);

    SingleResponse<UserCO> passwordRecover(AppUserRegisterCmd cmd);

    SingleResponse<UserCO> perfectUserInfo(AppUserInfoCmd cmd);

    SingleResponse<UserCO> onboarding(AppUserOnboardingCmd cmd);

    SingleResponse<UserCO> verifyPhone(UserVerifyPhoneCmd cmd);

    SingleResponse<Boolean> sendPhoneCode(UserVerifyPhoneCmd cmd);

    SingleResponse<UserCO> addXgf(UserXgfAddCmd cmd);

    void edit(UserUpdateCmd cmd);
    void editData(UserQryCmd cmd);

    void exportUserTable(HttpServletResponse httpServletResponse, Long[] ids, Long corpinfoId);

    void importUserTable(MultipartFile file, Integer corpFlag);

    void remove(Long id);

    void removeBatch(Long[] ids);

    MultiResponse<UserCO> listAll(UserQryCmd userQryCmd);

    List<UserCO> listByUserIds(Collection<Long> collection);

    List<UserCO> listUserByUserName(Collection<String> collection);

    List<UserCO> listUserByUserNameV1(Collection<String> collection);


    SingleResponse<UserCO> getInfoById(Long id);

    SingleResponse<UserCO> getInfoByUserName(String userName);
    Response verifyUser(UserVerifyQryCmd userVerifyQryCmd);

    SingleResponse<UserCO> getInfoBySession();

    UserCO getInfoByUserId(Long aLong);
    void changePassword(Long id);
    Response updatePassword(UserUpdatePassWordCmd userUpdatePassWordCmd);

    Boolean updateUserFaceUrl(UserUpdateFaceUrlCmd cmd);

    SingleResponse<UserCO> getEncryInfo(UserCheckPassWordCmd userCheckPassWordCmd);

    PageResponse<UserXmfCO> listXgf(UserPageQry qry);

    void resignation(UserResignationCmd userResignationCmd);

    void reviewStatus(UserReviewStatusCmd userReviewStatusCmd);

    void appUserResignation(AppUserResignationCmd appUserResignationCmd);

    Boolean updatePasswordFromApp(AppUserUpdatePassWordCmd cmd);

    void logOut(AppUserLogOutCmd cmd);

    UserLoginCO login(UserAppLoginCmd cmd);

    List<UserCorpInfoCO> getUserCorpList(Long id);

    CaptchaCO generateCaptcha();

    SingleResponse<UserCO> getUserIdByPhone(GetUserIdByPhoneCmd getUserIdByPhoneCmd);

    PageResponse<UserCO> pageByNopermission(UserPageQry qry);

    List<UserCO> getUserList();

    UserLoginCO getUserCorpByPhone(UserAppPhoneCmd cmd);

    List<UserImgDO> listBase64ByUrl(Map<String, Object> map);
}

