simple_sql_opt.py 7.45 KB
Newer Older
qunfeng qiu's avatar
qunfeng qiu committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168
'''
@Description: 简单数据操作类
@Author: guohb65
@Email: guohb65@chinaunicom.cn
@Date: 2019-01-24 18:39:08
@LastEditTime: 2019-07-10 17:16:54
@LastEditors: Please set LastEditors
'''

import json

from .my_datahandle.const import ConstGen
from .my_datahandle.datahandle_utility import DatahandleUtility


class SimpleSqlOpt(object):

    def __init__(self):
        pass

    def simple_add(self, table_name, request=None, data_params=None, uid=None):
        """
        单条数据新增
        :param request:
        :return:
        """
        datahandle_utility = DatahandleUtility()
        if data_params is None:
            data_params = json.loads(datahandle_utility.request_param2dict(
                request).get(ConstGen.DATA_STR))
        unique_data = data_params[ConstGen.UNIQUE_STR]
        others_data = data_params[ConstGen.OTHERS_STR]
        if datahandle_utility.data_is_exist(unique_data, table_name):
            ret = {ConstGen.RETCODE: "2", ConstGen.RETVAL: "名称重复"}
            print(ret)
            return json.dumps(ret, ensure_ascii=False)
        else:
            insert_data = dict(unique_data, **others_data)
            insert_sql = datahandle_utility.gen_insert_sql(
                dict_data=insert_data, table_name=table_name, uid=uid)
            trans_data = datahandle_utility.package_sql(
                ConstGen.TRANSSQL_STR, insert_sql)
            return datahandle_utility.request_trans_service(
                ConstGen.TRANSSQL_URL, trans_data)

    def batch_add(self, table_name, request=None, data_params=None):
        """
        批量新增
        :param request:
        :return:
        """
        datahandle_utility = DatahandleUtility()
        if data_params is None:
            data_params = json.loads(datahandle_utility.request_param2dict(
                request).get(ConstGen.DATA_STR))
        trans_sql_list = []
        for json_obj in data_params:
            if ConstGen.UNIQUE_STR in json_obj:
                unique_data = data_params[ConstGen.UNIQUE_STR]
            if ConstGen.OTHERS_STR in json_obj:
                others_data = data_params[ConstGen.OTHERS_STR]
            if datahandle_utility.data_is_exist(unique_data, table_name):
                ret = {ConstGen.RETCODE: "2", ConstGen.RETVAL: "名称重复"}
                print(ret)
                return json.dumps(ret, ensure_ascii=False)
            else:
                insert_data = dict(unique_data, **others_data)
                insert_sql = datahandle_utility.gen_insert_sql(
                    insert_data, table_name)
                trans_sql = datahandle_utility.trans_sql(insert_sql)
                trans_sql_list.append(trans_sql)

        trans_data = datahandle_utility.package_trans_list(trans_sql_list)
        return datahandle_utility.request_trans_service(
            ConstGen.TRANSSQL_URL, trans_data)

    def simple_alter(self, table_name, request=None, data_params=None):
        """
        修改/删除
        :param request:
        :return:
        """
        datahandle_utility = DatahandleUtility()
        if data_params is None:
            data_params = datahandle_utility.request_param2dict(request)
        if ConstGen.OPT_UPDATE in data_params.keys():
            update_all_data = json.loads(data_params.get(ConstGen.OPT_UPDATE))
            update_condition = update_all_data[ConstGen.CONDITION_STR]
            update_data = update_all_data[ConstGen.DATA_STR]

            unique_data = update_data[ConstGen.UNIQUE_STR]
            if datahandle_utility.data_is_exist(unique_data, table_name, update_condition):
                ret = {ConstGen.RETCODE: "2", ConstGen.RETVAL: "名称重复"}
                print(ret)
                return json.dumps(ret, ensure_ascii=False)
            else:
                update_sql = datahandle_utility.gen_update_sql(
                    update_data, update_condition, table_name)
                trans_data = datahandle_utility.package_sql(
                    ConstGen.TRANSSQL_STR, update_sql)
                if trans_data is None:
                    ret = {ConstGen.RETCODE: "2", ConstGen.RETVAL: "更新参数传输异常"}
                    return json.dumps(ret, ensure_ascii=False)
                else:
                    return datahandle_utility.request_trans_service(
                        ConstGen.TRANSSQL_URL, trans_data)
        if ConstGen.OPT_DELETE in data_params.keys():
            delete_condition = json.loads(data_params.get(ConstGen.OPT_DELETE))
            delete_sql = datahandle_utility.gen_delete_sql(
                delete_condition, table_name)
            trans_data = datahandle_utility.package_sql(
                ConstGen.TRANSSQL_STR, delete_sql)
            if trans_data is None:
                ret = {ConstGen.RETCODE: "2", ConstGen.RETVAL: "删除数据参数传输异常"}
                return json.dumps(ret, ensure_ascii=False)
            else:
                return datahandle_utility.request_trans_service(
                    ConstGen.TRANSSQL_URL, trans_data)

    def simple_query(self, table_name, request=None, data_params=None):
        """
        信息查询
        :param request:
        :return:
        """
        datahandle_utility = DatahandleUtility()
        if data_params is None:
            data_params = datahandle_utility.request_param2dict(request)
        print(data_params)
        print(ConstGen.STANDERSQL_URL)
        trans_data = datahandle_utility.gen_select_all_sql(
            data_params, table_name)
        print(trans_data)
        if trans_data is None:
            ret = {ConstGen.RETCODE: "2", ConstGen.RETVAL: "查询条件不存在"}
            return json.dumps(ret, ensure_ascii=False)
        else:
            ret_data = datahandle_utility.request_trans_service(
                ConstGen.STANDERSQL_URL, trans_data)
            if ConstGen.CONDITION_STR in data_params.keys():
                condition = json.loads(
                    data_params.get(ConstGen.CONDITION_STR))
            page_num = None
            page_size = None
            if ConstGen.PAGE_STR in condition:
                page_info = condition.get(ConstGen.PAGE_STR)
                if ConstGen.PAGE_NUM_STR in page_info:
                    page_num = page_info[ConstGen.PAGE_NUM_STR]
                if ConstGen.PAGE_SIZE_STR in page_info:
                    page_size = page_info[ConstGen.PAGE_SIZE_STR]
            if page_num is not None and page_size is not None:
                ret_data = json.loads(ret_data)
                start_index = (int(page_num) - 1) * int(page_size)
                if int(ret_data[ConstGen.ROWCOUNT_STR]) < start_index:
                    ret_data.pop(ConstGen.DATAROWS_STR)
                    ret_data[ConstGen.PAGECOUNT_STR] = "0"
                else:
                    if ConstGen.DATAROWS_STR in ret_data:
                        all_datarows = ret_data[ConstGen.DATAROWS_STR]
                        print(all_datarows)
                        datarows = all_datarows[start_index: start_index +
                                                             int(page_size)]
                        ret_data[ConstGen.DATAROWS_STR] = datarows
                        ret_data[ConstGen.PAGECOUNT_STR] = len(datarows)
                    else:
                        ret_data[ConstGen.PAGECOUNT_STR] = '0'
                return json.dumps(ret_data)
            return ret_data