Ejemplo n.º 1
0
def UpdTableData(request):
    log = public.logger
    log.info(
        '----------------------Admin-UpdTableData-begin---------------------------'
    )

    # 请求body转为json
    tmp = request.body
    tmp = tmp.decode(encoding='utf-8')
    reqest_body = json.loads(tmp)
    log.info(reqest_body)
    menuid = reqest_body.get('MENU_ID', None)
    if menuid == None:
        s = public.setrespinfo({"respcode": "310001", "respmsg": "菜单编号必输!"})
        return HttpResponse(s)
    try:
        MenuTable = models.IrsadminMenu.objects.get(menu_id=menuid)
    except models.IrsadminMenu.DoesNotExist:
        MenuTable = None
        s = public.setrespinfo({"respcode": "310002", "respmsg": "菜单编号不存在!"})
        return HttpResponse(s)
    try:
        TranRegTable = models.IrsadminDbTranReg.objects.get(
            app_id=MenuTable.app_id)
    except models.IrsadminDbTranReg.DoesNotExist:
        TranRegTable = None
        s = public.setrespinfo({"respcode": "310003", "respmsg": "应用编号不存在!"})
        return HttpResponse(s)
    if TranRegTable.update_able != 'Y':
        s = public.setrespinfo({
            "respcode": "320003",
            "respmsg": "该交易没有更新数据的权限!"
        })
        return HttpResponse(s)

    try:
        TranList = models.IrsadminDbTranList.objects.filter(
            app_id=MenuTable.app_id).values('field_id', 'is_key',
                                            'search_exts', 'ui_type')
    except models.IrsadminDbTranList.DoesNotExist:
        TranList = None
        s = public.setrespinfo({"respcode": "310004", "respmsg": "应用配置不存在!"})
        return HttpResponse(s)

    #校验权限
    flag = userrole.checkauth(request.session.get('user_id', None),
                              MenuTable.menu_id)
    if flag == False:
        s = public.setrespinfo({"respcode": "349921", "respmsg": "用户权限不正确!"})
        return HttpResponse(s)

    keylist = []
    field_search_list = {}
    for item in TranList:
        if item['is_key'] == 'Y':  #获取主键列表
            keylist.append(item['field_id'])
        field_search_list[item['field_id']] = item['search_exts']

    #print('keylist=',keylist)
    # print('field_search_list=', field_search_list)
    #上送字段等数据
    DataReq = reqest_body['datainfo']
    #print(type(DataReq),DataReq)
    wheresql = ''
    updatesql = ''
    updatevalue = ()
    for item in DataReq:
        if item not in keylist:
            if DataReq[item]=='' or DataReq[item]==None \
                or DataReq[item]=='null' or DataReq[item]=='NULL' \
                or DataReq[item] =='Null':
                DataReq[item] = None
            if updatesql == '':
                updatesql = item + '=%s'
            else:
                updatesql = updatesql + ',' + str(item) + '=%s'

            # print(item,'=',type(DataReq[item]),DataReq[item])
            if type(DataReq[item]) == type([]):
                tmpvalue = ""
                for tmpitem in DataReq[item]:
                    #上送的是图片不存在的图片,跳过不处理
                    # if 'irs_noimg_exists.png' in tmpitem:
                    #     continue

                    if tmpvalue == "":
                        tmpvalue = tmpitem
                    else:
                        tmpvalue = tmpvalue + ';' + tmpitem
            else:
                tmpvalue = DataReq[item]

            #去掉查询配置生成的解释说明
            if field_search_list[item]:
                if '${THIS}' in (field_search_list[item]):
                    if DataReq[item]:
                        # log.info('item=' + str(item) + ',DataReq[item]=' + str(DataReq[item]))
                        tmpvalue = str(DataReq[item]).split(' - ')[0]

            tmptuple = (tmpvalue, )
            updatevalue = updatevalue + tmptuple
        else:
            if wheresql == '':
                wheresql = item + '="' + str(DataReq[item]) + '"'
            else:
                wheresql = wheresql + ' and ' + item + '="' + DataReq[
                    item] + '"'

    if wheresql == '':
        s = public.setrespinfo({
            "respcode": "320002",
            "respmsg": "更新数据必须上送主键做为更新条件!"
        })
        return HttpResponse(s)

    #print('wheresql=',wheresql)
    sql = 'update ' + TranRegTable.table_name + ' set ' + updatesql + ' where ' + wheresql
    log.info(sql % updatevalue)
    cur = connection.cursor()
    effect_row = cur.execute(sql, updatevalue)
    cur.close()
    # print(effect_row)
    if effect_row <= 0:
        s = public.setrespinfo({
            "respcode": "310010",
            "respmsg": "更新数据失败,找不到记录!"
        })
        return HttpResponse(s)

    # 特殊处理,新增UITYPE='transfer'穿梭框,用于有些表的联表操作
    if str(menuid) == '6':
        Transfer = reqest_body['transfer_data']
        # print(type(Transfer), Transfer)
        RolePurvTable = models.IrsadminRolePurv(role_id=DataReq['ROLE_ID'])
        RolePurvTable.delete()
        for item in Transfer:
            RolePurvTable = models.IrsadminRolePurv(role_id=DataReq['ROLE_ID'],
                                                    menu_id=item)
            RolePurvTable.save(force_insert=True)
        # texcfg.addrolepurv()

    # 特殊处理,新增UITYPE='transfer'穿梭框,用于有些表的联表操作
    if str(menuid) == '2':
        Transfer = reqest_body['transfer_data']
        # print(type(Transfer), Transfer)
        UserRoleTable = models.IrsadminUserRule(user_id=DataReq['USER_ID'])
        UserRoleTable.delete()
        for item in Transfer:
            UserRoleTable = models.IrsadminUserRule(user_id=DataReq['USER_ID'],
                                                    role_id=item)
            UserRoleTable.save(force_insert=True)
            # texcfg.addrolepurv()

    #处理穿梭框的数据
    tranfercfg_id = None
    for item in TranList:
        if item['ui_type'] == 'transfer':
            tranfercfg_id = item['search_exts']
            break
    #tranfercfg_id中存的就是穿梭框的数据
    if tranfercfg_id:
        try:
            TranferCfg = models.IrsadminDbTranferCfg.objects.get(
                id=tranfercfg_id)
        except models.IrsadminDbTranferCfg.DoesNotExist:
            TranferCfg = None

        if TranferCfg:
            data = updatetransferdata(TranferCfg, reqest_body)

    resp = {"respcode": "000000", "respmsg": "交易成功"}
    s = json.dumps(resp, cls=models.JsonCustomEncoder, ensure_ascii=False)
    log.info(s)
    log.info(
        '--------------------Admin-UpdTableData-end-------------------------')
    return HttpResponse(s)
Ejemplo n.º 2
0
def DelTableData(request):
    log = public.logger
    log.info(
        '----------------------Admin-DelTableData-begin---------------------------'
    )

    # 请求body转为json
    tmp = request.body
    tmp = tmp.decode(encoding='utf-8')
    reqest_body = json.loads(tmp)
    log.info(reqest_body)
    menuid = reqest_body.get('MENU_ID', None)
    if menuid == None:
        s = public.setrespinfo({"respcode": "310001", "respmsg": "菜单编号必输!"})
        return HttpResponse(s)
    try:
        MenuTable = models.IrsadminMenu.objects.get(menu_id=menuid)
    except models.IrsadminMenu.DoesNotExist:
        MenuTable = None
        s = public.setrespinfo({"respcode": "310002", "respmsg": "菜单编号不存在!"})
        return HttpResponse(s)
    try:
        TranRegTable = models.IrsadminDbTranReg.objects.get(
            app_id=MenuTable.app_id)
    except models.IrsadminDbTranReg.DoesNotExist:
        TranRegTable = None
        s = public.setrespinfo({"respcode": "310003", "respmsg": "应用编号不存在!"})
        return HttpResponse(s)

    if TranRegTable.delete_able != 'Y':
        s = public.setrespinfo({
            "respcode": "320002",
            "respmsg": "该交易没有删除数据的权限!"
        })
        return HttpResponse(s)

    try:
        TranList = models.IrsadminDbTranList.objects.filter(
            app_id=MenuTable.app_id,
            is_key='Y').values('field_id', 'ui_type', 'search_exts')
    except models.IrsadminDbTranList.DoesNotExist:
        TranList = None
        s = public.setrespinfo({"respcode": "310004", "respmsg": "应用配置不存在!"})
        return HttpResponse(s)

    #校验权限
    flag = userrole.checkauth(request.session.get('user_id', None),
                              MenuTable.menu_id)
    if flag == False:
        s = public.setrespinfo({"respcode": "349921", "respmsg": "用户权限不正确!"})
        return HttpResponse(s)

    keylist = []
    for item in TranList:
        #print(item['field_id'])
        keylist.append(item['field_id'])

    # print('keylist=',keylist)
    #上送字段等数据
    DataReqList = reqest_body['datainfo']
    #print(type(DataReqList),DataReqList)
    for DataReq in DataReqList:
        #print(type(DataReq), DataReq)
        wheresql = ''
        for item in DataReq:
            #print(item, '===', DataReq[item])
            if item not in keylist:
                continue

            if wheresql == '':
                wheresql = item + '="' + str(DataReq[item]) + '"'
            else:
                wheresql = wheresql + ' and ' + str(item) + '="' + str(
                    DataReq[item]) + '"'

        if wheresql == '':
            s = public.setrespinfo({
                "respcode": "320003",
                "respmsg": "删除数据必须上送主键做为删除条件!"
            })
            return HttpResponse(s)

        #print('wheresql=',wheresql)
        sql = 'delete from ' + TranRegTable.table_name + ' where ' + wheresql
        log.info(sql)
        cur = connection.cursor()
        cur.execute(sql)
        cur.close()

    # 特殊处理,新增UITYPE='transfer'穿梭框,用于有些表的联表操作
    if str(menuid) == '6':
        RolePurvTable = models.IrsadminRolePurv(role_id=DataReq['ROLE_ID'])
        RolePurvTable.delete()
    if str(menuid) == '2':
        UserRoleTable = models.IrsadminUserRule(user_id=DataReq['USER_ID'])
        UserRoleTable.delete()

    # 处理穿梭框的数据
    tranfercfg_id = None
    for item in TranList:
        if item['ui_type'] == 'transfer':
            tranfercfg_id = item['search_exts']
            break
    # tranfercfg_id中存的就是穿梭框的数据
    if tranfercfg_id:
        try:
            TranferCfg = models.IrsadminDbTranferCfg.objects.get(
                id=tranfercfg_id)
        except models.IrsadminDbTranferCfg.DoesNotExist:
            TranferCfg = None

        if TranferCfg:
            data = deltransferdata(TranferCfg, reqest_body)

    resp = {"respcode": "000000", "respmsg": "交易成功"}
    s = json.dumps(resp, cls=models.JsonCustomEncoder, ensure_ascii=False)
    log.info(s)
    log.info(
        '----------------------Admin-DelTableData-end---------------------------'
    )
    return HttpResponse(s)
Ejemplo n.º 3
0
def AddTableData(request):
    log = public.logger
    log.info(
        '----------------------Admin-selectTableData-begin---------------------------'
    )

    # 请求body转为json
    tmp = request.body
    tmp = tmp.decode(encoding='utf-8')
    reqest_body = json.loads(tmp)
    log.info(reqest_body)
    menuid = reqest_body.get('MENU_ID', None)
    if menuid == None:
        s = public.setrespinfo({"respcode": "310001", "respmsg": "菜单编号必输!"})
        return HttpResponse(s)
    try:
        MenuTable = models.IrsadminMenu.objects.get(menu_id=menuid)
    except models.IrsadminMenu.DoesNotExist:
        MenuTable = None
        s = public.setrespinfo({"respcode": "310002", "respmsg": "菜单编号不存在!"})
        return HttpResponse(s)
    try:
        TranRegTable = models.IrsadminDbTranReg.objects.get(
            app_id=MenuTable.app_id)
    except models.IrsadminDbTranReg.DoesNotExist:
        TranRegTable = None
        s = public.setrespinfo({"respcode": "310003", "respmsg": "应用编号不存在!"})
        return HttpResponse(s)

    if TranRegTable.insert_able != 'Y':
        s = public.setrespinfo({
            "respcode": "320001",
            "respmsg": "该交易没有添加数据的权限!"
        })
        return HttpResponse(s)

    #校验权限
    flag = userrole.checkauth(request.session.get('user_id', None),
                              MenuTable.menu_id)
    if flag == False:
        s = public.setrespinfo({"respcode": "349921", "respmsg": "用户权限不正确!"})
        return HttpResponse(s)

    #上送字段等数据
    DataReq = reqest_body['datainfo']
    fieldlist = ''
    for item in DataReq.keys():
        #print(item)
        if fieldlist == '':
            fieldlist = item
        else:
            fieldlist = fieldlist + ',' + item

    valuelist = ''
    valuedata = ()
    for item in DataReq.values():
        #print(item)
        if valuelist == '':
            valuelist = '%s'
        else:
            valuelist = valuelist + ',' + '%s'
        if type(item) == type([]):
            tmpvalue = ""
            for tmpitem in item:
                if tmpvalue == "":
                    tmpvalue = tmpitem
                else:
                    tmpvalue = tmpvalue + ';' + tmpitem
            item = tmpvalue
        if item == "":
            item = None
        tmptuple = (item, )
        valuedata = valuedata + tmptuple
    # print('fieldlist=', fieldlist)
    # print('valuelist=',valuelist)
    # print('valuedata=', valuedata)

    if str(menuid) == '2':  #新增用户,主要解决传输框数据问题
        fieldlist_dict = fieldlist.split(',')
        # print('valuedata=',valuedata)

        i = 0
        data_dict = {}
        for item in fieldlist_dict:
            data_dict[item.lower()] = valuedata[i]
            i = i + 1
        if data_dict['user_id'] == None or data_dict['user_id'] == '':
            del data_dict['user_id']
        # print('IrsadminUser data_dict=', data_dict)
        IrsadminUser = models.IrsadminUser(**data_dict)
        IrsadminUser.save()
        # print('IrsadminUser='******'transfer_data']
        # print(type(Transfer),Transfer)
        for item in Transfer:
            # print('item=',item)
            RolePurvTable = models.IrsadminUserRule(
                user_id=IrsadminUser.user_id, role_id=item)
            RolePurvTable.save(force_insert=True)
    else:  #其它数据表的新增,走通用处理
        sql = 'insert into ' + TranRegTable.table_name + '(' + fieldlist + ') values (' + valuelist + ')'
        log.info(sql % valuedata)
        cur = connection.cursor()
        cur.execute(sql, valuedata)
        cur.close()

    # 特殊处理,新增UITYPE='transfer'穿梭框,用于有些表的联表操作
    if str(menuid) == '6':  #新增角色
        Transfer = reqest_body['transfer_data']
        # print(type(Transfer),Transfer)
        for item in Transfer:
            # print('item=',item)
            RolePurvTable = models.IrsadminRolePurv(role_id=DataReq['ROLE_ID'],
                                                    menu_id=item)
            RolePurvTable.save(force_insert=True)
        # texcfg.addrolepurv()

    resp = {"respcode": "000000", "respmsg": "交易成功"}
    s = json.dumps(resp, cls=models.JsonCustomEncoder, ensure_ascii=False)
    log.info(s)
    log.info(
        '----------------------Admin-selectTableData-end---------------------------'
    )
    return HttpResponse(s)
Ejemplo n.º 4
0
def UserLogin_Qrcode(request):
    log = public.logger
    log.info(
        '----------------------Admin-UserLogin_Qrcode-begin---------------------------'
    )

    # 获取code,根据code得到openid
    code = request.GET.get('code', None)  # 微信授权返回的code

    # 根据code得到unionid
    # 获取微信开放平台的appid和appsecret
    appid = 'wx755f9eeb4022a481'
    appsecret = '34d726c0473859fed4239ecc7491c33d'
    appid = '11111'
    url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' + appid + '&secret=' + appsecret
    url = url + '&code=' + code + '&grant_type=authorization_code'
    log.info(url)
    conn = requests.post(url)
    jsondata = json.loads(conn.text)
    log.info("根据code获取openid:[%s]" % jsondata)
    try:
        openid = jsondata['openid']
        unionid = jsondata['unionid']
        access_token = jsondata['access_token']
        # 更加openid异步获取用户信息 插入或更新到CONSUMER表里
        # pass
    except:
        log.info("已过期:[%s]" % jsondata)
        return HttpResponse('wxcode已过期,请重新使用微信客户端登陆!')

    # 根据unionid获取用户信息
    log.info('unionid=' + unionid + ',public.appname=' + public.appname)
    try:
        CustomerInfo = models.IrsServerConsumer.objects.get(
            union_id=unionid, wx_gzh=public.appname)
    except models.IrsServerConsumer.DoesNotExist:
        CustomerInfo = None
        info_json = {
            "respcode": "658821",
            "respmsg": "请先关注微信公众号[" + public.appnamedesc + "]!",
        }
        s = json.dumps(info_json,
                       cls=models.JsonCustomEncoder,
                       ensure_ascii=False)
        return HttpResponse(s)

    TokenModel = models.IrsServerToken.objects.get(app_name=public.appname)
    access_token = TokenModel.access_token
    url = 'https://api.weixin.qq.com/cgi-bin/user/info?access_token=' + access_token + '&openid=' + CustomerInfo.wx_open_id + '&lang=zh_CN'
    log.info(url)
    try:
        conn = requests.post(url)
        # 推送返回数据
        recvdata = conn.text
    except Exception:
        log.error("消息发送失败", exc_info=True)
    log.info(recvdata)
    jsondata = json.loads(recvdata)

    # 必须关注公众号
    if str(jsondata.get('subscribe', '0')) == '1':
        log.info('已关注微信公众号')
        models.IrsServerConsumer.objects.filter(id=CustomerInfo.id).update(
            head_imgurl=jsondata['headimgurl'],
            union_id=jsondata['unionid'],
            nick_name=jsondata['nickname'],
            user_sex=jsondata['sex'],
            user_address=jsondata['city'],
        )
    # else:
    #     info_json = {
    #         "respcode": "658821",
    #         "respmsg": "请先关注微信公众号[" + public.appnamedesc + "]!",
    #     }
    #     s = json.dumps(info_json, cls=models.JsonCustomEncoder, ensure_ascii=False)
    #     return HttpResponse(s)

    uid = CustomerInfo.id
    log.info("根据union_id获取uid:[%s]" % uid)

    # 查找管理台用户信息表权限
    try:
        AdminUser = models.IrsadminUser.objects.get(uid=uid)
    except models.IrsadminUser.DoesNotExist:  # 新用户,直接赋值vip0角色,插入用户表一条记录
        AdminUser = models.IrsadminUser(
            user_id=uid,
            user_name=jsondata['nickname'],
            org_id='wx0000',
            station='新扫码登陆用户',
            sex=jsondata['sex'],
            address=jsondata['city'],
            status='1',
            uid=uid,
            create_time=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
        )
        AdminUser.save()
        log.info("插入IrsadminUser表成功:[%s]" % uid)
        AdminUserRole = models.IrsadminUserRule(
            user_id=uid,
            role_id='vip0',  # 角色ID
        )
        AdminUserRole.save()
        log.info("插入AdminUserRole表成功:[%s]" % uid)

    # 根据code生成checksum
    m = hashlib.md5()
    m.update(code.encode('utf-8'))
    checksum = m.hexdigest()

    # session赋值,便于以后验证
    request.session['uid'] = uid
    request.session['user_id'] = AdminUser.user_id
    request.session['checksum'] = checksum
    request.session[
        'logintype'] = 'qrcode'  # password-密码, qrcode-二维码,msgcode-短信

    newurl = 'https://admin.irusheng.com?uid=' + str(uid) + '&checksum=' + str(
        checksum)
    log.info("新url:[%s]" % newurl)
    log.info(
        '----------------------Admin-UserLogin_Qrcode-end---------------------------'
    )
    return redirect(newurl)
Ejemplo n.º 5
0
def UserLogin(request):
    log = public.logger
    log.info(
        '----------------------Admin-UserLogin-begin---------------------------'
    )

    tmp = request.body
    tmp = tmp.decode(encoding='utf-8')
    reqest_body = json.loads(tmp)

    qttime = reqest_body.get('time', None)
    qtip = request.META['REMOTE_ADDR']
    mobile = reqest_body.get('phone_number', None)
    checkcode = reqest_body.get('code', None)

    testcode = '112233'
    m = hashlib.md5()
    m.update(testcode.encode('utf-8'))
    checksum = m.hexdigest()
    log.info('checksum=' + checksum)
    if checkcode == checksum:
        # 模拟测试成功
        pass
    else:
        if checkcode == None or checkcode == '':
            s = public.setrespinfo({
                "respcode": "220020",
                "respmsg": "验证码不可为空"
            })
            return HttpResponse(s)

        if mobile == None or mobile == '':
            s = public.setrespinfo({
                "respcode": "220020",
                "respmsg": "手机号码不可为空"
            })
            return HttpResponse(s)

        outtime = datetime.datetime.now()
        outtime = outtime - datetime.timedelta(minutes=3)  # 获取三分钟之前的时间
        outtime = outtime.strftime('%b %d %Y %H:%M:%S')
        # log.info('获取三分钟之前的时间:'+ outtime )

        cur = connection.cursor()
        try:
            sql = "select count(1) from irs_server_mobilemessage where mobile='%s' and trandatetime>='%s' and msgstate='1'" \
                  % (mobile, outtime)
            cur.execute(sql)
            row = cur.fetchone()
            if row and row[0] >= 6:
                s = public.setrespinfo({
                    "respcode": "220011",
                    "respmsg": "操作过于频繁,请稍后再试!"
                })
                return HttpResponse(s)
        except Exception as e:
            s = public.setrespinfo({
                "respcode": "220011",
                "respmsg": "数据库错误:" + str(e)
            })
            return HttpResponse(s)

        try:
            mobilemsgTable = models.IrsServerMobilemessage.objects.filter(
                mobile=mobile, trandatetime__gte=outtime, msgstate='1')
        except models.IrsServerMobilemessage.DoesNotExist:
            mobilemsgTable = None
            s = public.setrespinfo({
                "respcode": "220021",
                "respmsg": "验证码错误或已过期"
            })
            return HttpResponse(s)
        if mobilemsgTable.count() == 0:
            s = public.setrespinfo({
                "respcode": "220021",
                "respmsg": "验证码错误或已过期"
            })
            return HttpResponse(s)

        try:
            mobilemsgTable = models.IrsServerMobilemessage.objects.filter(
                mobile=mobile,
                trandatetime__gte=outtime,
                msgstate='1',
                checkcode=checkcode)
        except models.IrsServerMobilemessage.DoesNotExist:
            mobilemsgTable = None
            s = public.setrespinfo({"respcode": "220022", "respmsg": "验证码错误"})
            return HttpResponse(s)
        if mobilemsgTable.count() == 0:
            s = public.setrespinfo({"respcode": "220022", "respmsg": "验证码错误"})
            return HttpResponse(s)

        mobilemsgTable.update(msgstate='2')

    # 查找管理台用户信息表权限
    try:
        AdminUser = models.IrsadminUser.objects.get(tel=mobile)
    except models.IrsadminUser.DoesNotExist:  # 新用户,直接赋值vip0角色,插入用户表一条记录
        AdminUser = models.IrsadminUser(
            user_id=mobile,
            org_id='mobile01',
            station='新短信登陆用户',
            status='1',
            tel=mobile,
            create_time=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
        )
        AdminUser.save()
        log.info("插入IrsadminUser表成功:[%s]" % mobile)
        AdminUserRole = models.IrsadminUserRule(
            user_id=mobile,
            role_id='vip0',  # 角色ID
        )
        AdminUserRole.save()
        log.info("插入AdminUserRole表成功:[%s]" % mobile)

    if AdminUser.uid == None:
        AdminUser.uid = AdminUser.user_id

    # session赋值
    request.session['uid'] = AdminUser.uid
    request.session['user_id'] = AdminUser.user_id
    request.session['checksum'] = checkcode
    request.session[
        'logintype'] = 'msgcode'  # password-密码, qrcode-二维码,msgcode-短信

    # 跳转到登陆成功后的管理台页面
    newurl = 'https://admin.irusheng.com?uid=' + str(
        request.session['uid']) + '&checksum=' + str(
            request.session['checksum'])
    log.info('跳转到登陆成功后的管理台页面  ' + newurl)
    info_json = {
        "respcode": "000000",
        "respmsg": "登陆成功",
        "trantype": "login",
        "url": newurl
    }

    s = json.dumps(info_json, cls=models.JsonCustomEncoder, ensure_ascii=False)
    log.info(
        '----------------------Admin-UserLogin-end---------------------------')
    return HttpResponse(s)
Ejemplo n.º 6
0
def addtabledata(request):
    log = public.logger
    try:
        cur = connection.cursor()  # 创建游标

        # 查询增删改查配置HEAD信息
        sql = "select table_name from sys_crud_cfg_head where app_id = " \
              "(select app_id from sys_menu where menu_id='%s') " % public.menu_id
        # log.info("查询增删改查配置HEAD信息:"+sql % appid, extra={'ptlsh':public.req_seq})
        cur.execute(sql)
        crud_head_row = cur.fetchone()
        table_name = crud_head_row[0]

        # 上送字段等数据
        DataReq = public.req_body['datainfo']
        fieldlist = ''
        for item in DataReq.keys():
            # print(item)
            if fieldlist == '':
                fieldlist = item
            else:
                fieldlist = fieldlist + ',' + item

        valuelist = ''
        valuedata = ()
        for item in DataReq.values():
            # print(item)
            if valuelist == '':
                valuelist = '%s'
            else:
                valuelist = valuelist + ',' + '%s'
            if type(item) == type([]):
                tmpvalue = ""
                for tmpitem in item:
                    if tmpvalue == "":
                        tmpvalue = tmpitem
                    else:
                        tmpvalue = tmpvalue + ';' + tmpitem
                item = tmpvalue
            if item == "":
                item = None
            tmptuple = (item, )
            valuedata = valuedata + tmptuple
        # print('fieldlist=', fieldlist)
        # print('valuelist=',valuelist)
        # print('valuedata=', valuedata)

        if str(public.menu_id) == '2':  # 新增用户,主要解决传输框数据问题
            fieldlist_dict = fieldlist.split(',')
            # print('valuedata=',valuedata)

            i = 0
            data_dict = {}
            for item in fieldlist_dict:
                data_dict[item.lower()] = valuedata[i]
                i = i + 1
            if data_dict['user_id'] == None or data_dict['user_id'] == '':
                del data_dict['user_id']
            # print('IrsadminUser data_dict=', data_dict)
            IrsadminUser = models.IrsadminUser(**data_dict)
            IrsadminUser.save()
            # print('IrsadminUser='******'transfer_data']
            # print(type(Transfer),Transfer)
            for item in Transfer:
                # print('item=',item)
                RolePurvTable = models.IrsadminUserRule(
                    user_id=IrsadminUser.user_id, role_id=item)
                RolePurvTable.save(force_insert=True)
        else:  # 其它数据表的新增,走通用处理
            sql = 'insert into ' + table_name + '(' + fieldlist + ') values (' + valuelist + ')'
            log.info(sql % valuedata)
            cur = connection.cursor()
            cur.execute(sql, valuedata)
            cur.close()

        # 特殊处理,新增UITYPE='transfer'穿梭框,用于有些表的联表操作
        if str(public.menu_id) == '6':  # 新增角色
            Transfer = public.req_body['transfer_data']
            # print(type(Transfer),Transfer)
            for item in Transfer:
                # print('item=',item)
                RolePurvTable = models.IrsadminRolePurv(
                    role_id=DataReq['ROLE_ID'], menu_id=item)
                RolePurvTable.save(force_insert=True)
                # texcfg.addrolepurv()

        #关闭游标
        cur.close()

    except Exception as ex:
        log.error("插入数据表信息失败!" + str(ex),
                  exc_info=True,
                  extra={'ptlsh': public.req_seq})
        public.exc_type, public.exc_value, public.exc_traceback = sys.exc_info(
        )
        public.respcode, public.respmsg = "100100", "插入数据表信息失败!" + str(ex)
        public.respinfo = HttpResponse(public.setrespinfo())
        return public.respinfo

    public.respcode, public.respmsg = "000000", "交易成功!"
    json_data = {
        "HEAD": public.resphead_setvalue(),
        "BODY": {},
    }
    s = json.dumps(json_data, cls=public.JsonCustomEncoder, ensure_ascii=False)
    public.respinfo = HttpResponse(s)
    return public.respinfo