def get(self): names = self.get_arg('names','') if '' == names: self.out_fail(code = 1001, msg = 'names') return names = str_helper.format_str_to_list_filter_empty(names, ',') users = [] for name in names: if str_helper.is_null_or_empty(name): continue user = user_logic.query_user_by_name_cache(name = name) if None != user: users.append(user) json = str_helper.json_encode(users) self.out_ok(data = json) return
#-*- encoding: utf-8 -*- from helper import str_helper from common import mysql, state, error _query_sql = ''' select id, operID, operUserName, operRealName, appCode, funcPath, action, targetType, targetID, targetName, startStatus, endStatus, operIp, operTime from sso_oper_log as u where 1 = 1 ''' _query_col = str_helper.format_str_to_list_filter_empty( 'id, operID, operUserName, operRealName, appCode, funcPath, action, targetType, targetID, targetName, startStatus, endStatus, operIp, operTime ', ',') def query_page(operID, operUserName, appCode, funcPath, action, operIp, beginTime, endTime, page, size): sql = _query_sql ps = [] if None != operID and 0 != operID: sql = sql + ' and u.operID = %s ' ps.append(operID) if None != operUserName and '' != operUserName: sql = sql + ' and u.operUserName = %s ' ps.append(operUserName) if None != appCode and '' != appCode: sql = sql + ' and u.appCode = %s ' ps.append(appCode) if None != funcPath and '' != funcPath: sql = sql + ' and u.funcPath = %s ' ps.append(funcPath) if None != action and '' != action: sql = sql + ' and u.action = %s ' ps.append(action)
#-*- encoding: utf-8 -*- from helper import str_helper from common import mysql, state, error _query_sql = ''' select id, `name`, `status`, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime from sso_department where isDelete = %s ''' _query_col = str_helper.format_str_to_list_filter_empty( 'id, name, status, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime', ',') ''' 分页查询部门信息 ''' def query_page(name='', status=0, page=1, size=12): sql = _query_sql isdelete = state.Boole['false'] ps = [isdelete] if 0 != status: sql = sql + ' and status = %s ' ps.append(status) if '' != name: sql = sql + ' and name like %s ' ps.append('%' + name + '%') sql = sql + ' order by createTime asc ' yz = tuple(ps) deps = mysql.find_page(sql, yz, _query_col, page, size) if None != deps['data']: for r in deps['data']: r['statusname'] = state.Status.get(r['status'])
pw4 = True if (pw1 == True or pw2 == True) and pw3 == True: return 0 else: return 103012 _login_sql = ''' select id, realName, departmentID, email, mobile, tel , name, loginCount from sso_user where name = %s and passWord = %s and status = %s and beginDate <= now() and endDate >= now() and isDelete = %s ''' _login_col = str_helper.format_str_to_list_filter_empty('id, realName, departmentID, email, mobile, tel , name, loginCount', ',') ''' 用户登录 ''' def login( name, password): password = _format_user_password_md5(password) user = mysql.find_one(_login_sql, (name, password, state.statusActive, state.Boole['false']), _login_col) return user ''' 登录应用,获得登录的url ''' def get_goto_user_url( userID, appCode, ip, backUrl = ''): ''' 保存为这样的格式: {"id": 1, "tel": "123", "email": "*****@*****.**", "name": "\u4f59\u6d77", "rights": [{"id":12, "path":"xx.aa", "realName":"abc","right":1, "customRight": [1,2,3]}, {"id":13, "path":"xx.aa.bb","right":1, "customRight": []}]} {"code":0,"msg":"OK","data":{"tel": "123", "name": "yuhai", "rights": [{"path": "SOCRight.Login", "right": 15, "id": 18, "customRight": []}, {"path": "SOCRight.AppManager", "right": 15, "id": 9, "customRight": []}, {"path": "SOCRight.FuncManager", "right": 15, "id": 10, "customRight": [1, 2]},
#-*- encoding: utf-8 -*- from helper import str_helper from common import mysql, state, error, redis_cache import config from logic import func_logic, role_logic _query_sql = ''' select id, name, status, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime from sso_user_group where isDelete = %s ''' _query_col = str_helper.format_str_to_list_filter_empty( 'id, name, status, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime', ',') ''' 分页查询用户组信息 ''' def query_page(id='', name='', status=0, page=1, size=12): sql = _query_sql isdelete = state.Boole['false'] ps = [isdelete] if '' != id: sql = sql + ' and id = %s ' ps.append(id) if 0 != status: sql = sql + ' and status = %s ' ps.append(status) if '' != name: sql = sql + ' and name like %s ' ps.append('%' + name + '%') yz = tuple(ps) sql = sql + ' order by id desc '
def post(self): ps = self.get_page_config('创建项目') if ps['isedit']: ps['title'] = self.get_page_title('编辑项目') project = self.get_args(['name', 'teamPath', 'productUserName', 'productUserRealName', 'devUserName', 'devUserRealName','startDate', 'endDate', 'remark'], '') project['status'] = int(self.get_arg('status', '0')) project['id'] = int(self.get_arg('id', '0')) project['productIDs'] = str_helper.format_str_to_list_filter_empty(self.get_arg('productIDs',''), ',') project['products'] = product_logic.ProductLogic.instance().query_by_ids(project['productIDs']) ps = self._init_template_info(ps) ''' 获取绑定的用户 BEGIN ''' users = [] oneUserNames = {} for role in ps['projectRoles']: rid = role['id'] if role['isOne']: #单人 un = self.get_arg('role_select_'+str(rid), '') urn = self.get_arg('user_real_name_'+str(rid), '') if un != '': project['userName_'+str(rid)] = un users.append({'type':rid, 'userName':un, 'userRealName': urn}) if rid == state.productManagerRoleID: project['productUserName'] = un project['productUserRealName'] = urn elif rid == state.devManagerRoleID: project['devUserName'] = un project['devUserRealName'] = urn else: #多人 uns = str_helper.format_str_to_list_filter_empty(self.get_arg('userNames_'+str(rid),''), ',') for un in uns: for unn in ps['roleUsers'][rid]: if un != unn['userName']: continue users.append({'type':rid, 'userName':un, 'userRealName': unn['userRealName']}) ''' 获取绑定的用户 END ''' project['users'] = users ps['project'] = project if len(project['productIDs']) <= 0: ps['msg'] = '请选择产品' self.render('admin/project/add_or_edit.html', **ps) return if len(project['users']) <= 0: ps['msg'] = '请选择人员' self.render('admin/project/add_or_edit.html', **ps) return msg = self.check_str_empty_input(project, ['name', 'productUserName', 'productUserRealName', 'devUserName', 'devUserRealName','startDate', 'endDate']) if str_helper.is_null_or_empty(msg) == False: ps['msg'] = msg self.render('admin/project/add_or_edit.html', **ps) return project['user'] = self.get_oper_user() if ps['isedit']: # self.check_oper_right(right = state.operEdit) try: info = project_logic.ProjectLogic.instance().update(id = project['id'], name = project['name'], teamPath = project['teamPath'], productUserName = project['productUserName'], productUserRealName = project['productUserRealName'], devUserName = project['devUserName'], devUserRealName = project['devUserRealName'], startDate = project['startDate'], endDate = project['endDate'], status = project['status'], remark = project['remark'], user = project['user'], productIDs = project['productIDs'], users = project['users']) if info: self.redirect(ps['siteDomain'] + 'Admin/Project/List') return else: ps['msg'] = state.ResultInfo.get(101, '') except error.ProjectError as e: ps['msg'] = e.msg else: # self.check_oper_right(right = state.operAdd) try: info = project_logic.ProjectLogic.instance().add(name = project['name'], teamPath = project['teamPath'], productUserName = project['productUserName'], productUserRealName = project['productUserRealName'], devUserName = project['devUserName'], devUserRealName = project['devUserRealName'], startDate = project['startDate'], endDate = project['endDate'], status = project['status'], remark = project['remark'], user = project['user'], productIDs = project['productIDs'], users = project['users']) if info > 0: self.redirect(ps['siteDomain'] + 'Admin/Project/List') return else: ps['msg'] = state.ResultInfo.get(101, '') except error.ProjectError as e: ps['msg'] = e.msg ps = self.format_none_to_empty(ps) self.render('admin/project/add_or_edit.html', **ps)
#-*- encoding: utf-8 -*- from helper import str_helper from common import mysql, state, error, redis_cache import config from logic import func_logic, role_logic _query_sql = ''' select id, name, status, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime from sso_user_group where isDelete = %s ''' _query_col = str_helper.format_str_to_list_filter_empty('id, name, status, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime', ',') ''' 分页查询用户组信息 ''' def query_page( id = '', name = '', status = 0, page = 1, size = 12): sql = _query_sql isdelete = state.Boole['false'] ps = [isdelete] if '' != id: sql = sql + ' and id = %s ' ps.append(id) if 0 != status: sql = sql + ' and status = %s ' ps.append(status) if '' != name: sql = sql + ' and name like %s ' ps.append('%'+name+'%') yz = tuple(ps) sql = sql + ' order by id desc ' usergroups = mysql.find_page(sql, yz, _query_col, page, size) if None != usergroups['data']:
def post(self): ps = self.get_page_config('创建项目') if ps['isedit']: ps['title'] = self.get_page_title('编辑项目') project = self.get_args([ 'name', 'teamPath', 'productUserName', 'productUserRealName', 'devUserName', 'devUserRealName', 'startDate', 'endDate', 'remark' ], '') project['status'] = int(self.get_arg('status', '0')) project['id'] = int(self.get_arg('id', '0')) project['productIDs'] = str_helper.format_str_to_list_filter_empty( self.get_arg('productIDs', ''), ',') project['products'] = product_logic.ProductLogic.instance( ).query_by_ids(project['productIDs']) ps = self._init_template_info(ps) ''' 获取绑定的用户 BEGIN ''' users = [] oneUserNames = {} for role in ps['projectRoles']: rid = role['id'] if role['isOne']: #单人 un = self.get_arg('role_select_' + str(rid), '') urn = self.get_arg('user_real_name_' + str(rid), '') if un != '': project['userName_' + str(rid)] = un users.append({ 'type': rid, 'userName': un, 'userRealName': urn }) if rid == state.productManagerRoleID: project['productUserName'] = un project['productUserRealName'] = urn elif rid == state.devManagerRoleID: project['devUserName'] = un project['devUserRealName'] = urn else: #多人 uns = str_helper.format_str_to_list_filter_empty( self.get_arg('userNames_' + str(rid), ''), ',') for un in uns: for unn in ps['roleUsers'][rid]: if un != unn['userName']: continue users.append({ 'type': rid, 'userName': un, 'userRealName': unn['userRealName'] }) ''' 获取绑定的用户 END ''' project['users'] = users ps['project'] = project if len(project['productIDs']) <= 0: ps['msg'] = '请选择产品' self.render('admin/project/add_or_edit.html', **ps) return if len(project['users']) <= 0: ps['msg'] = '请选择人员' self.render('admin/project/add_or_edit.html', **ps) return msg = self.check_str_empty_input(project, [ 'name', 'productUserName', 'productUserRealName', 'devUserName', 'devUserRealName', 'startDate', 'endDate' ]) if str_helper.is_null_or_empty(msg) == False: ps['msg'] = msg self.render('admin/project/add_or_edit.html', **ps) return project['user'] = self.get_oper_user() if ps['isedit']: # self.check_oper_right(right = state.operEdit) try: info = project_logic.ProjectLogic.instance().update( id=project['id'], name=project['name'], teamPath=project['teamPath'], productUserName=project['productUserName'], productUserRealName=project['productUserRealName'], devUserName=project['devUserName'], devUserRealName=project['devUserRealName'], startDate=project['startDate'], endDate=project['endDate'], status=project['status'], remark=project['remark'], user=project['user'], productIDs=project['productIDs'], users=project['users']) if info: self.redirect(ps['siteDomain'] + 'Admin/Project/List') return else: ps['msg'] = state.ResultInfo.get(101, '') except error.ProjectError as e: ps['msg'] = e.msg else: # self.check_oper_right(right = state.operAdd) try: info = project_logic.ProjectLogic.instance().add( name=project['name'], teamPath=project['teamPath'], productUserName=project['productUserName'], productUserRealName=project['productUserRealName'], devUserName=project['devUserName'], devUserRealName=project['devUserRealName'], startDate=project['startDate'], endDate=project['endDate'], status=project['status'], remark=project['remark'], user=project['user'], productIDs=project['productIDs'], users=project['users']) if info > 0: self.redirect(ps['siteDomain'] + 'Admin/Project/List') return else: ps['msg'] = state.ResultInfo.get(101, '') except error.ProjectError as e: ps['msg'] = e.msg ps = self.format_none_to_empty(ps) self.render('admin/project/add_or_edit.html', **ps)
#-*- encoding: utf-8 -*- from helper import str_helper from common import mysql, state, error _query_sql = ''' select id, operID, operUserName, operRealName, appCode, funcPath, action, targetType, targetID, targetName, startStatus, endStatus, operIp, operTime from sso_oper_log as u where 1 = 1 ''' _query_col = str_helper.format_str_to_list_filter_empty( 'id, operID, operUserName, operRealName, appCode, funcPath, action, targetType, targetID, targetName, startStatus, endStatus, operIp, operTime ', ',') def query_page( operID , operUserName, appCode, funcPath, action, operIp, beginTime, endTime, page, size): sql = _query_sql ps = [] if None != operID and 0 != operID: sql = sql + ' and u.operID = %s ' ps.append(operID) if None != operUserName and '' != operUserName: sql = sql + ' and u.operUserName = %s ' ps.append(operUserName) if None != appCode and '' != appCode: sql = sql + ' and u.appCode = %s ' ps.append(appCode) if None != funcPath and '' != funcPath: sql = sql + ' and u.funcPath = %s ' ps.append(funcPath) if None != action and '' != action: sql = sql + ' and u.action = %s ' ps.append(action) if None != operIp and '' != operIp: sql = sql + ' and u.operIp = %s ' ps.append(operIp)
class ProjectLogic(): def __init__(self): return _instance = None @classmethod def instance(cls): if cls._instance == None: cls._instance = cls() return cls._instance _query_sql = ''' SELECT id, name, teamPath, productUserName, productUserRealName, devUserName, devUserRealName, startDate, endDate, `status`, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime FROM pm_project WHERE isDelete = %s ''' _query_col = str_helper.format_str_to_list_filter_empty( 'id, name, teamPath, productUserName, productUserRealName, devUserName, devUserRealName, startDate, endDate, status, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime', ',') ''' 分页查询项目信息 ''' def query_page(self, name='', productUserRealName='', devUserRealName='', status=0, page=1, size=12): sql = self._query_sql isdelete = state.Boole['false'] ps = [isdelete] if 0 != status: sql = sql + ' and status = %s ' ps.append(status) if '' != name: sql = sql + ' and name like %s ' ps.append('%' + name + '%') if '' != productUserRealName: sql = sql + ' and productUserRealName like %s ' ps.append('%' + productUserRealName + '%') if '' != devUserRealName: sql = sql + ' and devUserRealName like %s ' ps.append('%' + devUserRealName + '%') sql = sql + ' order by createTime desc ' yz = tuple(ps) projects = mysql.find_page(sql, yz, self._query_col, page, size) if None != projects['data']: for r in projects['data']: r['statusname'] = state.ProjectStatus.get(r['status']) return projects ''' 根据id查询项目信息 ''' def query_one(self, id=0): sql = self._query_sql isdelete = state.Boole['false'] ps = [isdelete] if 0 != id: sql = sql + ' and id = %s ' ps.append(id) else: return None yz = tuple(ps) project = mysql.find_one(sql, yz, self._query_col) if None != project: project['statusname'] = state.ProjectStatus.get(project['status']) return project ''' 根据名称查询项目信息 ''' def query_one_by_name(self, name=''): sql = self._query_sql isdelete = state.Boole['false'] sql = sql + ' and name = %s ' yz = (isdelete, name) project = mysql.find_one(sql, yz, self._query_col) if None != project: project['statusname'] = state.ProjectStatus.get(project['status']) return project _query_all_by_active_sql = ''' SELECT id, name FROM pm_project WHERE isDelete = %s ''' _query_all_by_active_col = str_helper.format_str_to_list_filter_empty( 'id, name', ',') ''' 查询所有可用项目 ''' def query_all_by_active(self): sql = self._query_all_by_active_sql isdelete = state.Boole['false'] sql = sql + ' and status != %s order by createTime desc ' yz = (isdelete, state.projectStatusActive) products = mysql.find_all(sql, yz, self._query_all_by_active_col) return products _add_sql = ''' INSERT INTO pm_project(name, teamPath, productUserName, productUserRealName, devUserName, devUserRealName, startDate, endDate, `status`, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime) VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, now(), %s, now()) ''' ''' 添加项目 ''' def add(self, name, teamPath, productUserName, productUserRealName, devUserName, devUserRealName, startDate, endDate, status, remark, user, productIDs=[], users=[]): obj = self.query_one_by_name(name=name) if None != obj: raise error.ProjectError(code=111002) isdelete = state.Boole['false'] yz = (name, teamPath, productUserName, productUserRealName, devUserName, devUserRealName, startDate, endDate, status, remark, isdelete, user, user) result = mysql.insert_or_update_or_delete(self._add_sql, yz, isbackinsertid=True) if result > 0: self._bind_project_product(result, productIDs, user) self._bind_project_user(projectID=result, users=users, user=user) return result _update_sql = ''' UPDATE pm_project SET name = %s, teamPath = %s, productUserName = %s, productUserRealName = %s, devUserName = %s, devUserRealName = %s, startDate = %s, endDate = %s, status = %s, remark = %s, lastUpdater = %s, lastUpdateTime = now() where id = %s ''' ''' 更新项目 ''' def update(self, id, name, teamPath, productUserName, productUserRealName, devUserName, devUserRealName, startDate, endDate, status, remark, user, productIDs=[], users=[]): obj = self.query_one_by_name(name=name) if None != obj and str(obj['id']) != str(id): raise error.ProjectError(code=111002) yz = (name, teamPath, productUserName, productUserRealName, devUserName, devUserRealName, startDate, endDate, status, remark, user, id) result = mysql.insert_or_update_or_delete(self._update_sql, yz) self._bind_project_product(id, productIDs, user) self._bind_project_user(projectID=id, users=users, user=user) return 0 == result _delete_sql = ''' UPDATE pm_project SET isDelete = %s, lastUpdater = %s, lastUpdateTime = now() where id = %s ''' ''' 删除项目 ''' def delete(self, id, user): isdelete = state.Boole['true'] yz = (isdelete, user, id) result = mysql.insert_or_update_or_delete(self._delete_sql, yz) return 0 == result _add_bind_project_product_sql = ''' INSERT INTO pm_product_project(productID, projectID, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime) VALUES(%s, %s, %s, %s, %s, now(), %s , now()) ''' _del_bind_project_product_sql = ''' UPDATE pm_product_project SET isDelete = %s, lastUpdater = %s, lastUpdateTime = now() WHERE projectID = %s AND isDelete = %s ''' ''' 绑定项目与产品 ''' def _bind_project_product(self, projectID, productIDs, user): isdeletefalse = state.Boole['false'] isdeletetrue = state.Boole['true'] yz = (isdeletetrue, user, projectID, isdeletefalse) result = mysql.insert_or_update_or_delete( self._del_bind_project_product_sql, yz) for productID in productIDs: yz = (productID, projectID, '', isdeletefalse, user, user) result = mysql.insert_or_update_or_delete( self._add_bind_project_product_sql, yz) return 0 == result _add_bind_project_user_sql = ''' INSERT INTO pm_project_user(projectID, userName, userRealName, type, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime) VALUES(%s, %s, %s, %s, %s, %s, %s, now(), %s , now()) ''' _del_bind_project_user_sql = ''' UPDATE pm_project_user SET isDelete = %s, lastUpdater = %s, lastUpdateTime = now() WHERE projectID = %s AND isDelete = %s ''' ''' 绑定项目与人员 ''' def _bind_project_user(self, projectID, users, user): isdeletefalse = state.Boole['false'] isdeletetrue = state.Boole['true'] yz = (isdeletetrue, user, projectID, isdeletefalse) result = mysql.insert_or_update_or_delete( self._del_bind_project_user_sql, yz) for u in users: yz = (projectID, u['userName'], u['userRealName'], u['type'], '', isdeletefalse, user, user) result = mysql.insert_or_update_or_delete( self._add_bind_project_user_sql, yz) return 0 == result _query_user_by_projectID_sql = ''' select id, projectID, userName, userRealName, type, remark from pm_project_user where projectID = %s and isDelete = %s order by type asc ''' _query_user_by_projectID_col = str_helper.format_str_to_list_filter_empty( 'id, projectID, userName, userRealName, type, remark', ',') ''' 查询项目开发者 ''' def query_user_by_project(self, projectID): isdelete = state.Boole['false'] yz = (projectID, isdelete) users = mysql.find_all(self._query_user_by_projectID_sql, yz, self._query_user_by_projectID_col) return users _query_user_by_projectID_sql = ''' select id, projectID, userName, userRealName, type, remark from pm_project_user where projectID = %s and isDelete = %s order by type asc ''' _query_user_by_projectID_col = str_helper.format_str_to_list_filter_empty( 'id, projectID, userName, userRealName, type, remark', ',') ''' 查询项目开发者_去重 ''' def query_user_by_project_distinct(self, projectID): users = [] us = self.query_user_by_project(projectID=projectID) if None == us or len(us) <= 0: return users for u in us: b = True for user in users: if u['userName'] == user['userName']: b = False break if b == True: users.append(u) return users
class ProductLogic(): def __init__(self): return _instance = None @classmethod def instance(cls): if cls._instance == None: cls._instance = cls() return cls._instance _query_sql = ''' select id, name, userName, userRealName, `status`, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime from pm_product where isDelete = %s ''' _query_col = str_helper.format_str_to_list_filter_empty( 'id, name, userName, userRealName, status, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime', ',') ''' 分页查询产品信息 ''' def query_page(self, name='', userRealName='', status=0, page=1, size=12): sql = self._query_sql isdelete = state.Boole['false'] ps = [isdelete] if 0 != status: sql = sql + ' and status = %s ' ps.append(status) if '' != name: sql = sql + ' and name like %s ' ps.append('%' + name + '%') if '' != userRealName: sql = sql + ' and userRealName like %s ' ps.append('%' + userRealName + '%') sql = sql + ' order by createTime asc ' yz = tuple(ps) products = mysql.find_page(sql, yz, self._query_col, page, size) if None != products['data']: for r in products['data']: r['statusname'] = state.Status.get(r['status']) return products ''' 根据id查询产品信息 ''' def query_one(self, id=0): sql = self._query_sql isdelete = state.Boole['false'] ps = [isdelete] if 0 != id: sql = sql + ' and id = %s ' ps.append(id) else: return None yz = tuple(ps) product = mysql.find_one(sql, yz, self._query_col) if None != product: product['statusname'] = state.Status.get(product['status']) return product ''' 根据名称查询产品信息 ''' def query_one_by_name(self, name=''): sql = self._query_sql isdelete = state.Boole['false'] sql = sql + ' and name = %s ' yz = (isdelete, name) product = mysql.find_one(sql, yz, self._query_col) if None != product: product['statusname'] = state.Status.get(product['status']) return product _query_all_by_active_sql = ''' select id, name from pm_product where isDelete = %s ''' _query_all_by_active_col = str_helper.format_str_to_list_filter_empty( 'id, name', ',') ''' 查询所有可用的产品信息 ''' def query_all_by_active(self): sql = self._query_all_by_active_sql isdelete = state.Boole['false'] sql = sql + ' and status = %s order by createTime asc ' yz = (isdelete, state.statusActive) products = mysql.find_all(sql, yz, self._query_all_by_active_col) return products _query_all_by_project_sql = ''' select p.id, p.name from pm_product_project as pp LEFT JOIN pm_product as p ON p.id = pp.productID WHERE pp.projectID = %s and pp.isDelete = %s order by pp.createTime asc''' _query_all_by_project_col = str_helper.format_str_to_list_filter_empty( 'id, name', ',') ''' 根据项目ID查询产品信息 ''' def query_all_by_project(self, projectID): sql = self._query_all_by_project_sql isdelete = state.Boole['false'] yz = (projectID, isdelete) products = mysql.find_all(sql, yz, self._query_all_by_project_col) return products ''' 根据IDs查询产品信息 ''' def query_by_ids(self, ids=[]): sql = self._query_all_by_active_sql isdelete = state.Boole['false'] idss = '' for i in ids: if idss == '': idss = i else: idss = idss + ',' + i if idss == '': return [] sql = sql + ' and id in (' + idss + ') order by createTime asc ' yz = (isdelete) products = mysql.find_all(sql, yz, self._query_all_by_active_col) return products _add_sql = ''' INSERT INTO pm_product(name, userName, userRealName, `status`, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime) VALUES(%s, %s, %s, %s, %s, %s, %s, now(), %s, now()) ''' ''' 添加产品 ''' def add(self, name, userName, userRealName, status, remark, user): obj = self.query_one_by_name(name=name) if None != obj: raise error.ProjectError(code=110002) isdelete = state.Boole['false'] yz = (name, userName, userRealName, status, remark, isdelete, user, user) result = mysql.insert_or_update_or_delete(self._add_sql, yz, True) return result _update_sql = ''' update pm_product set name = %s, userName = %s, userRealName = %s, status = %s, remark = %s, lastUpdater = %s, lastUpdateTime = now() where id = %s ''' ''' 更新产品信息 ''' def update(self, id, name, userName, userRealName, status, remark, user): obj = self.query_one_by_name(name=name) if None != obj and str(obj['id']) != str(id): raise error.ProjectError(code=110002) yz = (name, userName, userRealName, status, remark, user, id) result = mysql.insert_or_update_or_delete(self._update_sql, yz) return 0 == result _delete_sql = ''' update pm_product set isDelete = %s, lastUpdater = %s, lastUpdateTime = now() where id = %s ''' ''' 删除产品信息 ''' def delete(self, id, user): isdelete = state.Boole['true'] yz = (isdelete, user, id) result = mysql.insert_or_update_or_delete(self._delete_sql, yz) return 0 == result
#-*- encoding: utf-8 -*- from helper import str_helper from common import mysql, state, error _query_sql = ''' select id, name, status, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime from sso_role where isDelete = %s ''' _query_col = str_helper.format_str_to_list_filter_empty( 'id, name, status, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime', ',') ''' 分页查询角色信息 ''' def query_page(id='', name='', status=0, page=1, size=12): sql = _query_sql isdelete = state.Boole['false'] ps = [isdelete] if '' != id: sql = sql + ' and id = %s ' ps.append(id) if 0 != status: sql = sql + ' and status = %s ' ps.append(status) if '' != name: sql = sql + ' and name like %s ' ps.append('%' + name + '%') yz = tuple(ps) sql = sql + ' order by id desc ' roles = mysql.find_page(sql, yz, _query_col, page, size) if None != roles['data']: for r in roles['data']:
#-*- encoding: utf-8 -*- from helper import str_helper from common import mysql, state, error _query_sql = ''' select id, `name`, `status`, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime from sso_department where isDelete = %s ''' _query_col = str_helper.format_str_to_list_filter_empty('id, name, status, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime', ',') ''' 分页查询部门信息 ''' def query_page(name = '', status = 0, page = 1 , size = 12): sql = _query_sql isdelete = state.Boole['false'] ps = [isdelete] if 0 != status: sql = sql + ' and status = %s ' ps.append(status) if '' != name: sql = sql + ' and name like %s ' ps.append('%'+name+'%') sql = sql + ' order by createTime asc ' yz = tuple(ps) deps = mysql.find_page(sql, yz, _query_col, page, size) if None != deps['data']: for r in deps['data']: r['statusname'] = state.Status.get(r['status']) return deps ''' 根据编号查询部门信息 '''
#-*- encoding: utf-8 -*- from helper import str_helper from common import mysql, state, error _query_all_by_app_sql = ''' select id, name, code, parentID, path, rights, sort, customJson from sso_func where isDelete = %s ''' _query_all_by_app_col = str_helper.format_str_to_list_filter_empty('id, name, code, parentID, path, rights, sort, customJson', ',') ''' 根据appcode查询应用的功能信息 ''' def query_all_by_app(appCode): sql = _query_all_by_app_sql isdelete = state.Boole['false'] sql = sql + ' and appCode = %s order by sort desc' yz = (isdelete, appCode) funcs = mysql.find_all(sql, yz, _query_all_by_app_col) if funcs == None: return [] return _func_tree(funcs) _query_sql = ''' select id, appCode, name, code, parentID, path, rights, customJson, sort, status, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime from sso_func where isDelete = %s ''' _query_col = str_helper.format_str_to_list_filter_empty('id, appCode, name, code, parentID, path, rights, customJson, sort, status, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime', ',') ''' 根据path获取功能信息 ''' def query_one_by_path( path): sql = _query_sql isdelete = state.Boole['false'] sql = sql + ' and path = %s ' yz = (isdelete, path)
pw3 = True else: pw4 = True if (pw1 == True or pw2 == True) and pw3 == True: return 0 else: return 103012 _login_sql = '''select a.user_key, a.user_name, a.cust_key, a.dept_key, a.region_key, a.user_tel, a.user_loginCount,b.cust_title,\ b.cust_name from wqt_user a inner join wqt_cust b on a.user_id = %s and a.user_password = %s and a.cust_key = b.cust_key''' _login_col = str_helper.format_str_to_list_filter_empty('user_key, user_name, cust_key, dept_key, region_key, user_tel, \ user_loginCount,cust_title,cust_name', ',') ''' 用户登录 ''' def login(user_id, user_password): user_password = _format_user_password_md5(user_password) # user = str_helper.utf8(mysql.find_one(_login_sql,(name, password),_login_col)) user = mysql.find_one(_login_sql,(user_id, user_password), _login_col) print(user) if None == user: return None return user ''' 登录应用,获得登录的url ''' # def get_goto_user_url( userID, appCode, ip, backUrl = ''): # '''
class TaskHistoryLogic(): def __init__(self): return _instance = None @classmethod def instance(cls): if cls._instance == None: cls._instance = cls() return cls._instance _query_sql = ''' SELECT t.id, t.name, t.projectID, t.userName, t.userRealName, t.startDate, t.endDate, t.users, t.preID, t.parentID, t.sort, t.`status`, t.remark, t.isDelete, t.creater, t.createTime, t.lastUpdater, t.lastUpdateTime , ta.name AS preName FROM pm_task AS t LEFT JOIN pm_task as ta ON ta.id = t.preID WHERE isDelete = %s ''' _query_col = str_helper.format_str_to_list_filter_empty( 'id, name, projectID, userName, userRealName, startDate, endDate, users, preID, parentID, sort, status, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime, preName', ',') def query_page(self, projectID): sql = self._query_sql isdelete = state.Boole['false'] sql = sql + ' AND projectID = %s order by sort asc ' tasks = mysql.find_all(sql, yz, self._query_col) yz = (isdelete, projectID) tasks = self._format_project_tasks(tasks) return tasks def query_one(self, id=0): sql = self._query_sql ps = [isdelete] isdelete = state.Boole['false'] if 0 != id: sql = sql + ' and id = %s ' ps.append(id) else: return None yz = tuple(ps) task = mysql.find_one(sql, yz, self._query_col) task = self._format_task_status(task) return task _add_sql = ''' INSERT INTO pm_task(name, projectID, userName, userRealName, startDate, endDate, users, `preID`, parentID, sort, status, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime) VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, now(), %s, now()) ''' def add(self, name, projectID, userName, userRealName, startDate, endDate, users, preID, parentID, sort, status, remark, user): isdelete = state.Boole['false'] yz = (name, projectID, userName, userRealName, startDate, endDate, users, preID, parentID, sort, status, remark, isdelete, user, user) result = mysql.insert_or_update_or_delete(self._add_sql, yz, isbackinsertid=True) return result _update_sql = ''' UPDATE pm_task SET name = %s, userName = %s, userRealName = %s, users = %s, status = %s, remark = %s, lastUpdater = %s, lastUpdateTime = now() WHERE id = %s ''' def update(self, id, name, userName, userRealName, users, status, remark, user): yz = (name, userName, userRealName, users, status, remark, user, id) result = mysql.insert_or_update_or_delete(self._update_sql, yz) return 0 == result _update_taskid_sql = ''' UPDATE pm_task_history SET taskID = %s WHERE taskID = %s ''' def update_taskid(self, newTaskID, oldTaskID, user): yz = (newTaskID, oldTaskID) result = mysql.insert_or_update_or_delete(self._update_taskid_sql, yz) return 0 == result _delete_sql = ''' UPDATE pm_task SET isDelete = %s, lastUpdater = %s, lastUpdateTime = now() where projectID = %s AND isDelete = %s ''' def delete_by_projectID(self, projectID, user): isdelete = state.Boole['true'] isdeletefalse = state.Boole['false'] yz = (isdelete, user, projectID, isdeletefalse) result = mysql.insert_or_update_or_delete(self._delete_sql, yz) return 0 == result
#-*- encoding: utf-8 -*- from helper import str_helper from common import mysql, state, error _query_sql = ''' select id, name, status, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime from sso_role where isDelete = %s ''' _query_col = str_helper.format_str_to_list_filter_empty('id, name, status, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime', ',') ''' 分页查询角色信息 ''' def query_page( id = '', name = '', status = 0, page = 1, size = 12): sql = _query_sql isdelete = state.Boole['false'] ps = [isdelete] if '' != id: sql = sql + ' and id = %s ' ps.append(id) if 0 != status: sql = sql + ' and status = %s ' ps.append(status) if '' != name: sql = sql + ' and name like %s ' ps.append('%'+name+'%') yz = tuple(ps) sql = sql + ' order by id desc ' roles = mysql.find_page(sql, yz, _query_col, page, size) if None != roles['data']: for r in roles['data']: r['statusname'] = state.Status.get(r['status']) return roles
class TaskLogic(): def __init__(self): return _instance = None @classmethod def instance(cls): if cls._instance == None: cls._instance = cls() return cls._instance _query_sql = ''' SELECT t.id, t.name, t.type, t.projectID, t.userName, t.userRealName, t.date, t.startDate, t.endDate, t.users, t.preID, t.parentID, t.sort, t.`status`, t.degree, t.remark, t.isDelete, t.creater, t.createTime, t.lastUpdater, t.lastUpdateTime , ta.name AS preName, p.name AS projectName FROM pm_task AS t LEFT JOIN pm_task as ta ON ta.id = t.preID LEFT JOIN pm_project as p ON p.id = t.projectID WHERE t.isDelete = %s ''' _query_col = str_helper.format_str_to_list_filter_empty( 'id, name, type, projectID, userName, userRealName, date, startDate, endDate, users, preID, parentID, sort, status, degree, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime, preName, projectName', ',') def query_by_projectID(self, projectID): sql = self._query_sql isdelete = state.Boole['false'] sql = sql + ' AND t.projectID = %s AND t.type = %s order by sort asc ' yz = (isdelete, projectID, state.TaskProjectPlanType) tasks = mysql.find_all(sql, yz, self._query_col) if tasks != None or len(tasks) > 0: for task in tasks: task = self._format_task_status_type(task) return tasks ''' 分页查询任务 ''' def query_by_type_userName_status_begin_end(self, type, userName, status, startDate, endDate, page=1, size=12): sql = self._query_sql isdelete = state.Boole['false'] ps = [isdelete] if 0 != type: sql = sql + ' and t.type = %s ' ps.append(type) if not str_helper.is_null_or_empty(userName): sql = sql + ' and t.userName = %s ' ps.append(userName) if 0 != status: sql = sql + ' and t.`status` = %s ' ps.append(status) if not str_helper.is_null_or_empty(startDate): sql = sql + ' and t.startDate >= %s ' ps.append(startDate) if not str_helper.is_null_or_empty(endDate): sql = sql + ' and t.startDate <= %s ' ps.append(endDate) sql = sql + ' order by t.startDate asc ' yz = tuple(ps) tasks = mysql.find_page(sql, yz, self._query_col, page, size) if None != tasks['data']: for r in tasks['data']: r = self._format_task_status_type(r) return tasks def query_one(self, id=0): sql = self._query_sql isdelete = state.Boole['false'] ps = [isdelete] if 0 != id: sql = sql + ' and t.id = %s ' ps.append(id) else: return None yz = tuple(ps) task = mysql.find_one(sql, yz, self._query_col) task = self._format_task_status_type(task) return task def save_tasks(self, projectID, tasks, user): ''' 保存任务信息(还没有事务) 1、isdelete原有的任务信息 2、插入新的任务信息,并获取ID 3、如果有老的ID,原来的关系替换成新的ID 4、设置preid、parentID ''' code = self._check_tasks_info(tasks) if code != 0: raise error.ProjectError(code=code) #删除老任务 result = self.delete_by_projectID(projectID=projectID, user=user) if not result: raise error.ProjectError(code=112005) #插入新任务 sortMap = {0: 0} for task in tasks: s = self.get_task_status(degree=task['degree']) taskid = self.add(name=task['name'], type=task['type'], projectID=projectID, userName=task['userName'], userRealName=task['userRealName'], date=task['date'], startDate=task['startDate'], endDate=task['endDate'], users=task['users'], preID=0, parentID=0, sort=task['sort'], status=s, degree=task['degree'], remark='', user=user) task['id'] = taskid sortMap[task['sort']] = taskid if task.get('taskID', 0) > 0: #如果有老ID,替换成新ID task_history_logic.TaskHistoryLogic.instance().update_taskid( newTaskID=taskid, oldTaskID=task['taskID'], user=user) #检索,如果有preid和parentid的进行设置 for task in tasks: if task['parentID'] > 0 or task['preID'] > 0: parentID = sortMap.get(task['parentID'], 0) preID = sortMap.get(task['preID'], 0) self.update_parentID_preID(id=task['id'], parentID=parentID, preID=preID, user=user) return True _add_sql = ''' INSERT INTO pm_task(name, type, projectID, userName, userRealName, date, startDate, endDate, users, `preID`, parentID, sort, status, degree, remark, isDelete, creater, createTime, lastUpdater, lastUpdateTime) VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, now(), %s, now()) ''' def add(self, name, type, projectID, userName, userRealName, date, startDate, endDate, users, preID, parentID, sort, status, degree, remark, user): isdelete = state.Boole['false'] yz = (name, type, projectID, userName, userRealName, date, startDate, endDate, users, preID, parentID, sort, status, degree, remark, isdelete, user, user) result = mysql.insert_or_update_or_delete(self._add_sql, yz, isbackinsertid=True) return result _update_parentID_preID_sql = ''' UPDATE pm_task SET parentID = %s, preID = %s, lastUpdater = %s, lastUpdateTime = now() WHERE id = %s ''' def update_parentID_preID(self, id, parentID, preID, user): yz = (parentID, preID, user, id) result = mysql.insert_or_update_or_delete( self._update_parentID_preID_sql, yz) return 0 == result _update_sql = ''' UPDATE pm_task SET name = %s, userName = %s, userRealName = %s, `date` = %s, startDate = %s, endDate = %s, users = %s, status = %s, degree = %s, remark = %s, lastUpdater = %s, lastUpdateTime = now() WHERE id = %s ''' def update(self, id, name, userName, userRealName, date, startDate, endDate, users, degree, remark, user): s = self.get_task_status(degree=degree) yz = (name, userName, userRealName, date, startDate, endDate, users, s, degree, remark, user, id) result = mysql.insert_or_update_or_delete(self._update_sql, yz) return 0 == result update_degree_remark_sql = ''' UPDATE pm_task SET status = %s, degree = %s, users = %s, remark = %s, lastUpdater = %s, lastUpdateTime = now() WHERE id = %s ''' def update_degree_remark(self, id, degree, users, remark, user): s = self.get_task_status(degree=degree) yz = (s, degree, users, remark, user, id) result = mysql.insert_or_update_or_delete( self.update_degree_remark_sql, yz) return 0 == result _delete_sql = ''' UPDATE pm_task SET isDelete = %s, lastUpdater = %s, lastUpdateTime = now() where projectID = %s AND isDelete = %s ''' def delete_by_projectID(self, projectID, user): isdelete = state.Boole['true'] isdeletefalse = state.Boole['false'] yz = (isdelete, user, projectID, isdeletefalse) result = mysql.insert_or_update_or_delete(self._delete_sql, yz) return 0 == result def get_task_status(self, degree): if 0 < degree and 100 > degree: return state.TaskRunningStatus elif 100 == degree: return state.TaskRunedStatus else: return state.TaskNoRunStatus def _format_task_status_type(self, task): if None == task: return None for s in state.TaskStatus: if s['id'] == task['status']: task['statusname'] = s['name'] break for t in state.TaskTypes: if t['id'] == task['type']: task['typename'] = t['name'] break return task def _check_tasks_info(self, tasks): if None == tasks or type(tasks) != list: return 112001 for task in tasks: if str_helper.is_null_or_empty(task.get( 'userName', '')) or str_helper.is_null_or_empty( task.get('userRealName', '')): return 112002 if str_helper.is_null_or_empty(task.get( 'startDate', '')) or str_helper.is_null_or_empty( task.get('endDate', '')): return 112003 if str_helper.is_null_or_empty(task.get('name', '')): return 112004 if task.get('degree', 0) < 0 or task.get('degree', 0) > 100: return 112008 return 0