예제 #1
0
def addCardTrack():

    resp = {"code": 200, "msg": "success"}
    # IP认证
    ip = request.remote_addr
    # resp['msg']=ip
    if ip not in app.config["ALLOWED_IP"]:
        resp['code'] = -1
        resp['msg'] = "无权限"
        return jsonify(resp)

    try:
        # token认证
        reqData = json.loads(request.get_data(as_text=True))
        if "token" not in reqData or reqData['token'] != app.config["TOKEN"]:
            resp['code'] = -1
            resp['msg'] = "无权限"
            return jsonify(resp)

        # 在数据库中添加相应的用户和场所以及关系
        for track in reqData['data']['item']:
            TrackService.addCardTrack(track['user'], track['venue'],
                                      track['time'], track['source'])

    except Exception as e:
        resp['code'] = -1
        resp['msg'] = "fail"
        print(e)

    return jsonify(resp)
예제 #2
0
def getStaffTrackByNo():
    resp_data = {"code": 200, "msg": "操作成功", "data": {}}

    # 权限判断
    if g.current_user.super != 1:  #超级管理员权限
        resp_data["code"] = -1
        resp_data["msg"] = "无权限"
        return jsonify(resp_data)

    req = request.values
    no = req["no"] if 'no' in req else ''
    page = int(req["p"]) if ("p" in req and req["p"]) else 1

    # 轨迹列表
    totalCount, trackList = TrackService.getTrackByNo(3, no, page,
                                                      app.config["PAGE_SIZE"])

    page_params = {
        "total": totalCount,
        "page_size": app.config["PAGE_SIZE"],
        "page_num": page,
        "display": app.config["PAGE_DISPLAY"],
    }

    pages = iPagination(page_params)
    resp_data["list"] = trackList
    resp_data["pages"] = pages
    return jsonify(resp_data)
예제 #3
0
def getScanRecord():
    resp = {"code": 200, "msg": "success"}
    # IP认证
    ip = request.remote_addr
    # resp['msg']=ip
    if ip not in app.config["ALLOWED_IP"]:
        resp['code'] = -1
        resp['msg'] = "无权限"
        return jsonify(resp)

    try:
        # token认证
        #req = request.values
        reqData = json.loads(request.get_data(as_text=True))
        if "token" not in reqData or reqData['token'] != app.config["TOKEN"]:
            resp['code'] = -1
            resp['msg'] = "无权限"
            return jsonify(resp)

        page_num = int(reqData['data']['page_num']) if (
            "page_num" in reqData['data']
            and reqData['data']['page_num']) else 1
        page_size = int(reqData['data']['page_size']) if ("page_size" in reqData['data'] and reqData['data']['page_size']) \
            else app.config['PAGE_SIZE']
        type = int(reqData['data']["type"]) if (
            "type" in reqData['data'] and reqData['data']["type"]) else 0
        venue = reqData['data']["venue"] if ("venue"
                                             in reqData['data']) else ""
        no = reqData['data']["no"] if ("no" in reqData['data']) else ""
        name = reqData['data']["name"] if ("name" in reqData['data']) else ""
        begintime = reqData['data']['begintime'] if (
            'begintime' in reqData['data']
            and reqData['data']["begintime"]) else '0000-00-00 00:00:00'
        endtime = reqData['data']['endtime'] if (
            'endtime' in reqData['data']
            and reqData['data']["endtime"]) else '9999-99-99 23:59:59'

        totalCount, trackList = TrackService.search("", type, venue, no, name,
                                                    begintime, endtime,
                                                    page_num, page_size)

        page_params = {
            "total": totalCount,
            "page_size": page_size,
            "page_num": page_num,
            "display": app.config["PAGE_DISPLAY"],
        }

        pages = iPaginationForAPI(page_params)
        resp["data"] = trackList
        resp["pages"] = pages

    except Exception as e:
        resp['code'] = -1
        resp['msg'] = "请求失败"
        print(e)

    return jsonify(resp)
예제 #4
0
    def getAllTrackList():
        '''
        获取全部轨迹数据
        :param: global变量 req
        :return: track list
        '''
        if not req:
            return []
        resp_data = {}
        page = int(req["p"]) if ("p" in req and req["p"]) else 1
        type = int(req["type"]) if ("type" in req and req["type"]) else 0
        venue = req["venue"] if ("venue" in req) else ""
        no = req["no"] if ("no" in req) else ""
        name = req["name"] if ("name" in req) else ""
        begintime = req['begintime'] if (
            'begintime' in req and req["begintime"]) else '0000-00-00'
        endtime = req['endtime'] if ('endtime' in req
                                     and req["endtime"]) else '9999-99-99'
        endtime = endtime + " 23:59:59"

        # 权限判断
        if g.current_user.super == 1:  # 超级管理员
            totalCount, trackList = TrackService.searchAll(
                "", type, venue, no, name, begintime, endtime)
        else:  # 场所管理员
            totalCount, trackList = TrackService.searchAll(
                g.current_user.no, type, venue, no, name, begintime, endtime)

        page_params = {
            "total": totalCount,
            "page_size": app.config["PAGE_SIZE"],
            "page_num": page,
            "display": app.config["PAGE_DISPLAY"],
        }

        pages = iPagination(page_params)

        resp_data["list"] = trackList
        resp_data["pages"] = pages
        return resp_data['list']
예제 #5
0
def getTrackList():
    resp_data = {}
    req = request.values

    page = int(req["p"]) if ("p" in req and req["p"]) else 1
    type = int(req["type"]) if ("type" in req and req["type"]) else 0
    venue = req["venue"] if ("venue" in req) else ""
    no = req["no"] if ("no" in req) else ""
    name = req["name"] if ("name" in req) else ""
    begintime = req['begintime'] if ('begintime' in req
                                     and req["begintime"]) else '0000-00-00'
    endtime = req['endtime'] if ('endtime' in req
                                 and req["endtime"]) else '9999-99-99'
    endtime = endtime + " 23:59:59"

    # 权限判断
    if g.current_user.super == 1:  #超级管理员
        totalCount, trackList = TrackService.search("", type, venue, no, name,
                                                    begintime, endtime, page,
                                                    app.config["PAGE_SIZE"])
    else:  #场所管理员
        totalCount, trackList = TrackService.search(g.current_user.no, type,
                                                    venue, no, name, begintime,
                                                    endtime, page,
                                                    app.config["PAGE_SIZE"])

    page_params = {
        "total": totalCount,
        "page_size": app.config["PAGE_SIZE"],
        "page_num": page,
        "display": app.config["PAGE_DISPLAY"],
    }

    pages = iPagination(page_params)

    resp_data["list"] = trackList
    resp_data["pages"] = pages
    return jsonify(resp_data)
예제 #6
0
def getMyTrack():

    req = request.values
    pageNum = int(req["pageNum"]) if ("pageNum" in req
                                      and req["pageNum"]) else 1
    pageSize = int(req["pageSize"]) if (
        "pageSize" in req and req["pageSize"]) else app.config["PAGE_SIZE"]

    member_info = g.member_info
    resp_data = {"code": 200, "msg": "success", "data": {}}
    trackList = TrackService.getMyTrackByNo(member_info.no, pageNum, pageSize)

    resp_data['data'] = trackList
    return jsonify(resp_data)
예제 #7
0
def addTrackByAdmin():
    resp = {"code": 1000, "msg": "venue_name", "data": {}}
    req = request.values
    venueid = req["venueid"] if "venueid" in req else None
    if not venueid:
        resp["code"] = -1
        resp["msg"] = "需要场所id"
        return jsonify(resp)

    userid = req["userid"] if "userid" in req else None
    if not userid:
        resp["code"] = -1
        resp["msg"] = "需要用户id"
        return jsonify(resp)

    venue_info = VenueService.getByID(venueid)

    if not venue_info:
        resp["code"] = -1
        resp["msg"] = "场所不存在"
        return jsonify(resp)

    if venue_info.status == -1:
        resp["code"] = -1
        resp["msg"] = "场所已删除"
        return jsonify(resp)

    #通过userid获取User
    member_info = UserService.getByUserid(userid)
    if not member_info:
        resp["code"] = -1
        resp["msg"] = "用户不存在"
        return jsonify(resp)

    if member_info.leader == None:  #不是领导
        resp['data'] = {
            "userdept": member_info.dept,
            "username": member_info.name,
        }
    else:  #是领导
        resp['data'] = {
            "userdept": "",
            "username": "******",
        }

    now = datetime.datetime.now()
    str_now = getFormatDate(date=now)
    # now = datetime.datetime.now()
    # expiretime = now + datetime.timedelta(days=+10)
    # str_now = getFormatDate(date=expiretime)

    currentUser = g.member_info

    # -1直接红码
    if member_info.state == -1:
        # print("红码")
        resp["code"] = 2000
        resp["msg"] = venue_info.name  #获取场所名称返回 放在msg里
        return jsonify(resp)

    # 1直接绿码
    if member_info.state == 1:
        # print("超级用户绿码")
        # 添加轨迹
        TrackService.createByAdmin(currentUser.no, member_info.no, venueid,
                                   str_now, 1)  #type=1 绿码 2黄码

        resp["code"] = 1001  #1001绿码 1002黄码 #2000红码
        resp["msg"] = venue_info.name  #绿码
        return jsonify(resp)

    # 判断是否有提交过审批 需要审批通过且时间合法
    result2 = UserService.hasLegalApply(member_info.no, venueid, str_now)
    if result2 == True:
        TrackService.create(member_info.no, venueid, str_now, 1)  #绿码
        resp["code"] = 1001  #1001绿码 1002黄码 #2000红码
        resp["msg"] = venue_info.name
        return jsonify(resp)

    permissionType = venue_info.permissionType
    if permissionType == 2:  #对全体教职工开放
        if "TEACHER" in member_info.labels:  #教职工
            # print("绿码")
            TrackService.createByAdmin(currentUser.no, member_info.no, venueid,
                                       str_now, 1)  #type=1 绿码 2黄码
            resp["code"] = 1001  #1001绿码 1002黄码 #2000红码
            resp["msg"] = venue_info.name  #绿码
            return jsonify(resp)
        else:
            # print("黄码")
            TrackService.createByAdmin(currentUser.no, member_info.no, venueid,
                                       str_now, 2)  #type=1 绿码 2黄码
            resp["code"] = 1002  #1001绿码 1002黄码 #2000红码
            resp["msg"] = venue_info.name  #绿码
            return jsonify(resp)
    elif permissionType == 3:  #对全体学生开放
        if "STUDENT" in member_info.labels:  #学生
            # print("绿码")
            TrackService.createByAdmin(currentUser.no, member_info.no, venueid,
                                       str_now, 1)  #type=1 绿码 2黄码
            resp["code"] = 1001  #1001绿码 1002黄码 #2000红码
            resp["msg"] = venue_info.name  #绿码
            return jsonify(resp)
        else:
            # print("黄码")
            TrackService.createByAdmin(currentUser.no, member_info.no, venueid,
                                       str_now, 2)  #type=1 绿码 2黄码
            resp["code"] = 1002  #1001绿码 1002黄码 #2000红码
            resp["msg"] = venue_info.name  #绿码
            return jsonify(resp)
    elif permissionType == 4:  #对所有人开放
        # print("绿码")
        TrackService.createByAdmin(currentUser.no, member_info.no, venueid,
                                   str_now, 1)  #type=1 绿码 2黄码
        resp["code"] = 1001  #1001绿码 1002黄码 #2000红码
        resp["msg"] = venue_info.name  #绿码
        return jsonify(resp)
    else:  #permissionType==1 #根据白名单授权

        if member_info.state == None:  #没有赋值过state状态,暂且当做黄码处理
            # 添加轨迹
            TrackService.createByAdmin(currentUser.no, member_info.no, venueid,
                                       str_now, 2)  #type=1 绿码 2黄码
            resp["code"] = 1002  #1001绿码 1002黄码 #2000红码
            resp["msg"] = venue_info.name  #绿码
            return jsonify(resp)

        if member_info.state == 0:
            # print("需要进一步判断")

            result = TrackService.hasPermission(member_info.no, venueid)
            if result == True:
                # print("有权限")
                type = 1
                resp["code"] = 1001  #1001绿码 1002黄码 #2000红码
            else:
                type = 2
                resp["code"] = 1002  #1001绿码 1002黄码 #2000红码

            # 添加轨迹
            TrackService.createByAdmin(currentUser.no, member_info.no, venueid,
                                       str_now, type)  #绿码
            resp["msg"] = venue_info.name
            return jsonify(resp)
예제 #8
0
def getTrace():
    resp_data = {"code": 200, "msg": "操作成功", "data": {}}
    req = request.values

    no = req["no"] if ("no" in req) else ""

    begintime = req['begintime'] if ('begintime' in req and req["begintime"]) else '0000-00-00'
    endtime = req['endtime'] if ('endtime' in req and req["endtime"]) else '9999-00-00'
    endtime = endtime+" 23:59:59"


    minute=3600000
    try:
        minute = int(req["minute"]) if ("minute" in req and req["minute"]) else 3600000
    except Exception as ex:
        resp_data["code"] = -1
        resp_data["msg"] = "请输入整数型的分钟数"
        return jsonify(resp_data)

    
    # time = req['time'] if ('time' in req and req["time"]) else '0000-00-00'
    # time = time+" 23:59:59"

    # date_array=time.split("-")
    # date_from=datetime.date(int(date_array[0]),int(date_array[1]),int(date_array[2]))
    # date_from = date_from + datetime.timedelta(days=-3)
    # date_from = getFormatDate(date=date_from)

    # date_to=time

    # 权限判断
    if g.current_user.super!=1:#超级管理员权限
        resp_data["code"] = -1
        resp_data["msg"] = "无权限"
        return jsonify(resp_data)



    # jsonData={"results":[{"data":[{"graph":{"nodes":[],"relationships":[]}}]}]};
    # print(date_from)
    # print(date_to)
    # venueList = TrackService.searchByNoTime(no,date_from,date_to)
    venueList = TrackService.searchByNoTime(no,begintime,endtime)
    relationshipList=[]

    nodesList=[]
    nodesList.append({
            "id": no,
            "labels": ["目标人员"],
            # "properties":{"姓名":"姓名","学工号":no},
            "properties":{"学工号":no},
        })


    for venue in venueList:
        nodesList.append({
            # "id": venue['venueid'],
            "id": venue['id'],
            "labels": ["场所"],
            "properties":{"名称":venue['venuename']},
        })

        if venue['id']=='1':
            relationshipList.append({
                "type": "去过",
                "startNode": no,
                "endNode": venue['id'],
                "properties": {
                    "时间": venue['time']
                }
            })
        else:
            relationshipList.append({
                "type": "接着去了",
                "startNode": str(int(venue['id'])-1),
                "endNode": venue['id'],
                "properties": {
                    "时间": venue['time']
                }
            })



        tmp_date=datetime.datetime.strptime(venue['time'],'%Y-%m-%d %H:%M:%S')
        tmp_date_from=tmp_date + datetime.timedelta(minutes=-minute)#minute分钟前
        tmp_date_to=tmp_date + datetime.timedelta(minutes=+minute)#minute分钟后

        tmp_date_from = getFormatDate(date=tmp_date_from)
        tmp_date_to = getFormatDate(date=tmp_date_to)

        # userList = TrackService.searchByVenueTime(venue['id'],date_from_venue,date_to_venue,no)
        userList = TrackService.searchByVenueTime(venue['venueid'],tmp_date_from,tmp_date_to,no)

        for user in userList:
            nodesList.append({
                # "id": venue['venueid'],
                "id": user['no'],
                "labels": ["人员"],
                "properties":{"学工号":user['no'],"姓名":user['name']},
            })

            relationshipList.append({
                "type": "去过",
                "startNode": user['no'],
                "endNode": venue['id'],
                "properties": {
                    "时间": user['time']
                }
            })



    # jsonData["results"]["data"]["graph"]["nodes"]=nodesList
    jsonData={"results":[{"data":[{"graph":{"nodes":nodesList,"relationships":relationshipList}}]}]};
    
    # print(venue['venueid']+'==='+venue['venuename']+'==='+venue['time'])

    

    


    
    # jsonData={"results":[]};



    resp_data["data"] = jsonData
    return jsonify(resp_data)