import requests
from model.DateUtils import DateUtils
from model.DataBaseUtils import *
from model.UserAuthUtils import super_auth

du = DateUtils()


def user_channel(arg):
    db = MysqlUtils()
    # 返回所有公众号
    sql = "select id,nick_name from t_mp_account where del_flag=0"
    return db.zx.getData_json(sql)


def user_channel_group(arg):
    db = MysqlUtils()
    di = db.zx.get_data_dict("select cast(id as char) ,nick_name from t_mp_account where del_flag=0")
    user_id = arg.get('user_id')
    if user_id:
        sql = f"""SELECT  id,name,channel_ids from channel_group where id in  
               (select channel_group_id from user_channel_group_auth where user_id={user_id})"""
    else:
        # 不传user_id 返回所有组
        sql = "select id,name,channel_ids from channel_group"
    data = db.quchen_text.getData_json(sql)
    for i in data:
        sr = ''
        for j in i['channel_ids'].split(','):
            sr += di[j] + ','
        i['channel_names'] = sr
    return data


def user(arg):
    # 在2021-9月之后不被前端使用
    db = MysqlUtils()
    # 返回所有用户
    sql = "SELECT user_id,nick_name from t_sys_user where del_flag=0 and status=0"
    return db.zx.getData_json(sql)


def group_add(arg):
    db = MysqlUtils()
    name = arg.get("name")
    ids = arg.get("channel_ids")
    if name and ids:
        sql = "insert into channel_group (name,channel_ids)  values (%s,%s)"
        db.quchen_text.execute(sql, (name, ids))


def group_del(arg):
    db = MysqlUtils()
    id = arg.get("id")

    if id:
        sql = f"delete from  channel_group where id={id}"
        db.quchen_text.execute(sql)


def group_auth_add(arg):
    db = MysqlUtils()
    user_id = arg.get("user_id")
    group_id = arg.get("group_id")
    if user_id and group_id:
        sql = "insert into user_channel_group_auth (user_id,channel_group_id)  values (%s,%s)"
        db.quchen_text.execute(sql, (user_id, group_id))


def group_auth_del(arg):
    db = MysqlUtils()
    user_id = arg.get("user_id")
    group_id = arg.get("group_id")
    if user_id and group_id:
        sql = f"delete from  user_channel_group_auth where user_id={user_id} and channel_group_id={group_id}"
        # print(sql)
        db.quchen_text.execute(sql)


def get_channel(arg):
    db = MysqlUtils()
    user_id = arg.get('user_id')
    name = arg.get('name')
    pitcher_id = arg.get('pitcher_id')

    # 获取公众号列表
    rsp = requests.get('http://api.zanxiangnet.com/system/api/mp/mpAccount/search/3')
    channel_list = []
    channel_dict = {}
    for _ in rsp.json()['data']:
        channel_list.append((_['id'], _['nickName']))
        channel_dict[_['id']] = _['nickName']
    if user_id in super_auth():
        return channel_list[:100]
    select_id = user_id
    # 通过pitcher_id,来添加
    if pitcher_id:
        select_id = pitcher_id

    # 普通权限------java,获取本人对应拥有的公众号
    rsp = requests.get(f'http://api.zanxiangnet.com/system/api/mp/mpAccount/subAccountWithUser/3/{select_id}')
    channel_list = rsp.json()['data']
    data1 = []
    for _ in channel_list:
        if name in _['nickName']:
            data1.append({'id': _['id'], 'nick_name': _['nickName']})

    # # 加上配置的号
    sql2 = f"""select GROUP_CONCAT(channel_ids) from user_channel_group_auth a
                         left join channel_group b on a.channel_group_id=b.id
                         where user_id={select_id}"""
    data2 = db.quchen_text.getOne(sql2)
    data3 = []
    if data2:
        data2_2 = tuple(data2.split(','))
        for _ in data2_2:
            data3.append(channel_dict[int(_)])
    data4 = data1 + data3


    return data4[:100]  # 给100个


def get_pitcher(arg):
    user_id = arg.get('user_id')
    if user_id in super_auth():
        user_list = []
        url = 'http://api.zanxiangnet.com/system/api/mp/mpAccount/allPutUser/3'
        rsp = requests.get(url)
        for _ in rsp.json()['data']:
            user_list.append({'user_id': _['userId'], 'nick_name': _['nickName']})
        return user_list

    user_list = []
    rsp = requests.get(url=f'http://api.zanxiangnet.com/erp/api/user/subUser/3/{user_id}')
    for _ in rsp.json()['data']:
        user_list.append({'user_id': _['userId'], 'nick_name': _['nickName']})

    return user_list


def get_user_name_by_id(user_id):
    rsp = requests.get(url=f'http://api.zanxiangnet.com/erp/api/user/subUser/3/{user_id}')
    nick_name = None
    for _ in rsp.json()['data']:
        if str(_['userId']) == str(user_id):
            nick_name = _['nickName']
    return nick_name


if __name__ == '__main__':
    # print(get_pitcher({'user_id':78}))
    # print(get_user_name_by_id(78))
    user_channel_group({})