package com.yida.data.user.fallback;

import com.yida.data.common.core.annotation.Fallback;
import com.yida.data.common.core.common.ResultBean;
import com.yida.data.common.core.entity.user.EduUserDept;
import com.yida.data.user.dto.DeleteUserDeptDTO;
import com.yida.data.user.feign.RemoteUserDeptService;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;

import java.util.List;

/**
 * RemoteUserDeptService fallback处理类
 *
 * @author ZYJ
 * @date 2022/8/26
 */
@Slf4j
@Fallback
public class RemoteUserDeptServiceFallback implements FallbackFactory<RemoteUserDeptService> {

    @Override
    public RemoteUserDeptService create(Throwable throwable) {
        log.error("RemoteUserDeptService fallback reason:{}", throwable.getMessage());

        return new RemoteUserDeptService() {
            /**
             * 同步企业微信家校部门
             *
             * @return com.yida.data.common.core.common.ResultBean<java.lang.String>
             * @author ZYJ
             * @date 2021/11/22 16:10
             */
            @Override
            public ResultBean<String> syncUserDept() {
                return null;
            }

            /**
             * 处理挂在学校下的家校部门
             *
             * @return com.yida.data.common.core.common.ResultBean<java.lang.String>
             * @author ZYJ
             * @date 2021/11/22 16:11
             */
            @Override
            public ResultBean<String> dealNoParentUserDept() {
                return null;
            }

            /**
             * 查询父级家校部门是否存在
             *
             * @param deptIdList 家校部门id集合
             * @param parentWxId 家校部门父级企业微信id
             * @return com.yida.data.common.core.common.ResultBean<com.yida.data.common.core.entity.user.EduUserDept>
             * @author ZYJ
             * @date 2021/11/22 17:49
             */
            @Override
            public ResultBean<EduUserDept> getUserDeptByDeptAndWx(List<Long> deptIdList, Long parentWxId) {
                return null;
            }

            /**
             * 企业微信创建家校部门
             *
             * @param userDept 创建的家校部门信息
             * @return com.yida.data.common.core.common.ResultBean<java.lang.String>
             * @author ZYJ
             * @date 2021/11/22 17:57
             */
            @Override
            public ResultBean<String> createUserDept(EduUserDept userDept) {
                return null;
            }

            /**
             * 根据家校部门id查询家校部门信息
             *
             * @param deptId 家校部门id
             * @return com.yida.data.common.core.common.ResultBean<com.yida.data.common.core.entity.user.EduUserDept>
             * @author ZYJ
             * @date 2021/11/24 15:03
             */
            @Override
            public ResultBean<EduUserDept> getByDeptId(Long deptId) {
                return null;
            }

            /**
             * 查询家校部门直接子节点
             *
             * @param deptId 家校部门父节点id，不能为空
             * @return com.yida.data.common.core.common.ResultBean<java.util.List < com.yida.data.common.core.entity.system.Dept>>
             * @author ZYJ
             * @date 2021/11/25 11:29
             */
            @Override
            public ResultBean<List<EduUserDept>> findChildByParent(Long deptId) {
                return null;
            }

            /**
             * 根据家校部门id查询上级家校部门信息
             *
             * @param deptId 家校部门id
             * @return com.yida.data.common.core.common.ResultBean<com.yida.data.common.core.entity.user.EduUserDept>
             * @author ZYJ
             * @date 2021/11/30 10:05
             */
            @Override
            public ResultBean<EduUserDept> getParentByDeptId(Long deptId) {
                return null;
            }

            @Override
            public ResultBean<List<EduUserDept>> getParentListByDeptId(Long deptId) {
                return null;
            }

            /**
             * 批量保存家校部门
             *
             * @param saveDeptList 批量保存的家校部门数据
             * @return com.yida.data.common.core.common.ResultBean<java.lang.String>
             * @author ZYJ
             * @date 2021/11/30 10:14
             */
            @Override
            public ResultBean<String> updateBatchUserDept(List<EduUserDept> saveDeptList) {
                return null;
            }

            /**
             * 递归删除家校部门
             *
             * @param deleteUserDeptDTO 企业微信回调删除本地家校部门请求类
             * @return com.yida.data.common.core.common.ResultBean<java.lang.String>
             * @author ZYJ
             * @date 2021/11/30 10:42
             */
            @Override
            public ResultBean<String> deleteUserDeptRecur(DeleteUserDeptDTO deleteUserDeptDTO) {
                return null;
            }

            /**
             * 向上获取部门id到学校，向下获取部门id
             *
             * @param deptIds
             */
            @Override
            public ResultBean<List<Long>> getUpAndDownId(Long[] deptIds) {
                return null;
            }

            /**
             * 向上获取部门id到学校
             *
             * @param deptIds
             */
            @Override
            public ResultBean<List<Long>> getUpId(Long[] deptIds) {
                return null;
            }

            /**
             * 向下获取部门id
             *
             * @param deptId
             */
            @Override
            public ResultBean<List<Long>> getDownId(Long[] deptId) {
                return null;
            }

            /**
             * 向下查询指定家校部门类型的家校部门数据(可查询非直接子家校部门)
             *
             * @param parentId
             * @param type
             */
            @Override
            public ResultBean<List<EduUserDept>> findChildByParentAndType(Long parentId, Integer type) {
                return null;
            }

            /**
             * 向下查询指定家校部门类型的家校部门id(可查询非直接子家校部门)
             * 未毕业家校部门
             *
             * @param parentId
             * @param type
             */
            @Override
            public ResultBean<List<EduUserDept>> findChildIdByParentAndTypeNoPermission(Long parentId, Integer type) {
                return null;
            }

            @Override
            public ResultBean<List<EduUserDept>> findListByParent(Long deptId) {
                return null;
            }

            @Override
            public ResultBean<List> getUserDeptTree(List<Long> deptIds) {
                return null;
            }
        };
    }
}
