package com.yida.data.system.service;

import com.yida.data.common.core.entity.CurrentUser;
import com.yida.data.common.core.entity.constant.FebsConstant;
import com.yida.data.common.core.entity.system.Dept;

import com.yida.data.common.core.entity.system.EduApp;
import org.springframework.scheduling.annotation.Async;

public interface QywxService {


    /**
     * 初始化 家校部门
     */
    @Async(FebsConstant.ASYNC_POOL)
    void initSchoolDept(Long schoolId);

    /**
     * 初始化通讯录部门
     */
    @Async(FebsConstant.ASYNC_POOL)
    void initDept(Long schoolId);

    /**
     * 初始化职工信息
     */
    @Async(FebsConstant.ASYNC_POOL)
    void initStaff(Long schoolId, CurrentUser currentUser);

    /**
     * 初始化家长和学生信息
     */
    @Async(FebsConstant.ASYNC_POOL)
    void initUser(Long schoolId, CurrentUser currentUser);

    /**
     * 创建家校沟通部门
     *
     * @param corpId
     * @param accessToken
     * @param deptId
     * @param school
     */
//    @Async(FebsConstant.ASYNC_POOL)
    void createSchoolDept(String corpId, String accessToken, Long deptId, Dept school);

    /**
     * 更新家校通讯录部门
     *
     * @param accessToken
     * @param deptId
     * @param school
     */
//    @Async(FebsConstant.ASYNC_POOL)
    void updateSchoolDept(String accessToken, Long deptId, Dept school);

    /**
     * 删除家校通讯录部门
     *
     * @param deptId
     * @param school
     */
    void deleteSchoolDept(Long deptId, Dept school);

    /**
     * 新增通讯录部门
     *
     * @param deptId
     * @param deptName
     * @param parentId
     * @param order
     * @param school
     */
//    @Async(FebsConstant.ASYNC_POOL)
    void createDept(String deptId, String deptName, String parentId, String order, Dept school);

    /**
     * 更新通讯录部门
     *
     * @param deptId
     * @param deptName
     * @param parentId
     * @param schoolId
     */
//    @Async(FebsConstant.ASYNC_POOL)
    void updateDept(String deptId, String deptName, String parentId, Long schoolId);

    /**
     * 删除通讯录部门
     *
     * @param deptId
     * @param schoolId
     */
    void deleteDept(String deptId, Long schoolId);

    /**
     * 新增，更新学生
     *
     * @param accessToken
     * @param wxId
     * @param school
     */
    void changeStudent(String accessToken, String wxId, Dept school);

    /**
     * 删除学生
     *
     * @param wxId
     * @param schoolId
     */
    void deleteStudent(String wxId, Long schoolId);

    /**
     * 更新家长
     *
     * @param accessToken
     * @param wxId
     * @param schoolId
     */
    void updateParent(String accessToken, String wxId, Long schoolId);

    /**
     * 删除家长
     *
     * @param wxId
     * @param schoolId
     */
    void deleteParent(String wxId, Long schoolId);

    /**
     * 新建企业用户
     *
     * @param name
     * @param wxId
     * @param phone
     * @param email
     * @param gender
     * @param avatar
     * @param department
     * @param isLeader
     * @param mainDepartment
     * @param school
     */
    void createUser(String name, String wxId, String phone, String email,
                    String gender, String avatar, String department, String isLeader,
                    String mainDepartment, Dept school);

    /**
     * 更新企业用户
     *
     * @param name
     * @param wxId
     * @param phone
     * @param email
     * @param gender
     * @param avatar
     * @param department
     * @param isLeader
     * @param mainDepartment
     * @param school
     */
    void updateUser(String name, String wxId, String phone, String email,
                    String gender, String avatar, String department, String isLeader,
                    String mainDepartment, Dept school);

    /**
     * 删除企业用户
     *
     * @param wxId
     * @param schoolId
     */
    void deleteUser(String wxId, Long schoolId);

    /**
     * 家长关注事件
     */
    void sendParentSubscribeMessage(String parentId, Long schoolId);

    /**
     * 修改职工部门信息
     */
    void updateUserInfo(String userId, Dept school, EduApp app);
}
