package com.elink.esua.epdc.modules.analysis.service;

import com.elink.esua.epdc.common.token.dto.WorkUserAuthorizationDTO;
import com.elink.esua.epdc.common.token.dto.WorkUserLoginDTO;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.form.EpdcWorkAppUserMaTokenFormDTO;
import com.elink.esua.epdc.dto.user.form.MemberRankFormDTO;
import com.elink.esua.epdc.dto.user.form.UserSortRankFormDTO;
import com.elink.esua.epdc.dto.user.form.UserCountDTO;
import com.elink.esua.epdc.dto.user.result.OldMemberRankResultDTO;
import com.elink.esua.epdc.dto.user.result.UserSortRankResultDTO;
import com.elink.esua.epdc.dto.user.result.YoungMemberRankResultDTO;

import java.util.List;

/**
 * 项目模块-数据分析移动端
 * @Author LPF
 * @Date 2019/11/18 13:34
 */
public interface AnalysisUserService {


    /**
     * 测试模块
     * @Return: com.elink.esua.epdc.commons.tools.utils.Result<>
     * @Author: lipengfei
     * @Date: 2019/11/19 16:37
     */
    Result test();

    /**
     *
     * 数据分析端-用户登录
     *
     * @params [formDto]
     * @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.common.token.dto.WorkUserAuthorizationDTO>
     * @author liuchuang
     * @since 2020/2/12 10:59
     */
    Result<WorkUserAuthorizationDTO> login(WorkUserLoginDTO formDto);

    /**
     *
     * 数据分析端-获取token
     *
     * @params [formDto]
     * @return com.elink.esua.epdc.commons.tools.utils.Result<com.elink.esua.epdc.common.token.dto.WorkUserAuthorizationDTO>
     * @author liuchuang
     * @since 2020/2/12 11:00
     */
    Result<WorkUserAuthorizationDTO> getMaToken(EpdcWorkAppUserMaTokenFormDTO formDto);

    /**
     * @Description  获取党员老龄化排名列表
     * @Author songyunpeng
     * @Date  2020/2/11
     * @Param [formDto]
     * @return com.elink.esua.epdc.commons.tools.utils.Result<java.util.List<com.elink.esua.epdc.dto.user.result.OldMemberRankResultDTO>>
     **/
    Result<List<OldMemberRankResultDTO>> listOldMemberRankByDeptId(MemberRankFormDTO formDto);
    /**
     * @Description  获取党员年轻化排名列表
     * @Author songyunpeng
     * @Date  2020/2/11
     * @Param [formDto]
     * @return com.elink.esua.epdc.commons.tools.utils.Result<java.util.List<com.elink.esua.epdc.dto.user.result.YoungMemberRankResultDTO>>
     **/
    Result<List<YoungMemberRankResultDTO>> listYoungMemberRankByDeptId(MemberRankFormDTO formDto);


    /**
    *网格开通状况
    *
    * @author wangtong
    * @date 2020/2/12 10:08
    * @param [formDto]
    * @return com.elink.esua.epdc.commons.tools.utils.Result
    */
    Result getGridStatistics(UserCountDTO formDto);

    /**
    *用户数据统计
    *
    * @author wangtong
    * @date 2020/2/12 10:08
    * @param [formDto]
    * @return com.elink.esua.epdc.commons.tools.utils.Result
    */
    Result getUserStatistics(UserCountDTO formDto);
    /**
     * @Description  注册用户数排名
     * @Author lpf
     * @Date  2020/2/11
     * @Param [formDto]
     * @return com.elink.esua.epdc.commons.tools.utils.Result<java.util.List<com.elink.esua.epdc.dto.user.result.UserSortRankResultDTO>>
     **/
    Result<List<UserSortRankResultDTO>> userRegisterSort(UserSortRankFormDTO formDto);

}
