package com.hai.service;
/**
 * @ClassName: CommonService
 * @Description:TODO(共用接口)
 * @author: 杜江
 * @date: 2020年07月07日 15:35:43
 * @Copyright: 2018 www.shinwoten.com Inc. All rights reserved.
 */

import com.alibaba.fastjson.JSONObject;
import com.hai.entity.SecDictionary;
import com.hai.entity.SecRegion;
import com.hai.model.IndexCountModel;
import com.hai.model.LineCountModel;
import com.hai.model.OrderCountModel;
import com.hai.model.OrderSumModel;
import org.apache.ibatis.type.BigDecimalTypeHandler;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 *@ClassName CommonService
 *@Description 共用接口
 *@Author 杜江
 *@Date 2020/7/7 15:35
 *@Version 1.0
 */
public interface CommonService {

    /**
     * @Title: getDictionaries
     * @Description: 获取所有的数据字典
     * @author: 机器猫
     * @param: @param codeType
     * @param: @return
     * @return: List<BaseDictionary>
     * @throws
     */
    Map<String, Map<String, SecDictionary>> getDictionaries();

    /**
     * @Title: getDictionary
     * @Description: 精确查找数据字典值
     * @author: 机器猫
     * @param: @param codeType
     * @param: @param codeValue
     * @param: @return
     * @param: @throws Exception
     * @return: SysDictionary
     * @throws
     */
    String getDictionaryCodeName(String codeType, String codeValue);

    /**
     * @Title: mappingSysCode
     * @Description: 根据codetype，codevalue获取系统字典数据
     * @author: 机器猫
     * @param: @param codeType
     * @param: @param codeValue
     * @param: @return
     * @param: @throws Exception
     * @return: SysDictionary
     * @throws
     */
    SecDictionary mappingSysCode(String codeType, String codeValue);

    /**
     * @ClassName CommonService.java
     * @author Sum1Dream
     * @version 1.0.0
     * @Description //TODO
     * @createTime 14:53 2021/6/23
     **/
    Boolean findValue(String codeType, String codeValue);
    
    /**
     *
     * @Title: mappingSysName
     * @Description: 根据codetype，codeName获取系统字典数据
     * @author: 杜江
     * @Date: 2020/8/21 14:13
     * @param: [codeType, codeName]
     * @return: com.shinwoten.train.entity.SecDictionary
     * @throws
     */
    SecDictionary mappingSysName(String codeType, String codeName);

    /**
     * @ClassName CommonService.java
     * @author Sum1Dream
     * @version 1.0.0
     * @Description //TODO
     * @createTime 16:30 2021/6/23
     **/
    List<SecDictionary> mappingSysNameOl(String codeType);

    /**
     * 根据codeType获取该类的所有字典数据
     * @param codeType
     * @return
     */
    List<SecDictionary> getDictionarys(String codeType);

    /**
     * 根据codeType获取该类的所有字典数据
     * @param codeType
     * @return
     */
    List<SecDictionary> getDictionarysAndExt(String codeType, String ext1);

    List<JSONObject> getIdAndName(String codeType);

    /**
     *
     * @Title: getProvinces
     * @Description: 获取城市信息
     * @author: 机器猫
     * @param: @return
     * @return: List<BaseRegion>
     * @throws
     */
    List<SecRegion> getCities();

    /**
     *
     * @Title: getCities
     * @Description: 根据parentID获取地市列表
     * @author: 机器猫
     * @param: @param provinceId
     * @param: @return
     * @return: List<BaseRegion>
     * @throws
     */
    List<SecRegion> getRegionsByParentId(Long parentId);

    /**
     *
     * @Title: getCities
     * @Description: 根据regionId 查询
     * @author: 胡锐
     * @param: @param provinceId
     * @param: @return
     * @return: List<BaseRegion>
     * @throws
     */
    SecRegion getRegionsById(Long regionId);

    /**
     * 查询省级列表
     * @return
     */
    List<SecRegion> getProvinceList();

    /**
     * 根据地区名称模糊查询
     * @param regionName
     * @return
     */
    SecRegion getRegionsByName(String regionName);

    /**
     *
     * @Title: getParentInfoByRegionId
     * @Description: 根据区域Id获取父级目录
     * @author: 机器猫
     * @param: @param regionId
     * @param: @return
     * @return: Map<String,BaseRegion>   key:province,city,region
     * @throws
     */
    Map<String, SecRegion> getParentInfoByRegionId(Long regionId);

    /**
     *
     * @Title: getRegionName
     * @Description: 组装区域名称
     * @author: 杜江
     * @Date: 2020/7/8 17:37
     * @param: [regionId]
     * @return: java.lang.String
     * @throws
     */
    String getRegionName(Long regionId);


    /**
     *
     * @Title: findByName
     * @Description: 通过区域名称查询
     * @author: 杜江
     * @Date: 2020/7/10 15:43
     * @param: [name]
     * @return: java.util.List<com.shinwoten.plat.entity.SecRegion>
     * @throws
     */
    List<SecRegion> findByName(String name);

    SecRegion getParentByRegion(Long regionId);

    void updateDictionary(SecDictionary secDictionary);


    /**
    * @Author Sum1Dream
    * @name getHLTBalance.java
    * @Description // 查询汇联通余额
    * @Date 11:40 上午 2022/1/10
    * @Param [java.lang.String, java.lang.String]
    * @return java.lang.Long
    */
    BigDecimal getHLTBalance(String codeType);

    /**
    * @Author Sum1Dream
    * @name addHLTBalance.java
    * @Description // 充值余额
    * @Date 11:40 上午 2022/1/10
    * @Param [java.lang.String, java.lang.String, java.lang.Long]
    * @return void
    */
    void addHLTBalance(String codeType, BigDecimal price);

    /**
    * @Author Sum1Dream
    * @name getIndexCount.java
    * @Description // 获取首页统计数据
    * @Date 5:00 下午 2022/1/11
    * @Param []
    * @return com.hai.model.IndexCountModel
    */
    IndexCountModel getIndexCount();

    /**
    * @Author Sum1Dream
    * @name getLineCount.java
    * @Description // 查询折线图数据
    * @Date 2:38 下午 2022/1/13
    * @Param []
    * @return com.hai.model.LineCountModel
    */
    LineCountModel getLineCount();

    /**
     * @Author Sum1Dream
     * @name findByLatAndLng.java
     * @Description // 获取定位信息
     * @Date 10:59 2022/4/2
     * @Param [java.lang.String, java.lang.String]
     * @return com.alibaba.fastjson.JSONObject
     */
    JSONObject findByLatAndLng(  String lng , String lat) throws  Exception;

    /**
    * @Author Sum1Dream
    * @name configPayType.java
    * @Description // 配置支付方式
    * @Date 15:00 2022/5/12
    * @Param [com.alibaba.fastjson.JSONObject]
    * @return void
    */
    void configPayType(JSONObject object);

    /**
    * @Author Sum1Dream
    * @name configIntegralDiscount.java
    * @Description // 配置积分折扣比例
    * @Date 15:00 2022/5/12
    * @Param [com.alibaba.fastjson.JSONObject]
    * @return void
    */
    void configIntegralDiscount(JSONObject object);

    /**
    * @Author Sum1Dream
    * @name configPlatform.java
    * @Description // 配置展示平台
    * @Date 15:00 2022/5/12
    * @Param [com.alibaba.fastjson.JSONObject]
    * @return void
    */
    void configPlatform(JSONObject object);

}
