def ApiPublicUpload(): if request.method == 'POST': f = request.files['file'] basepath = os.path.dirname(__file__) newName = "{0}{1}".format( str(time.time())[0:10], f.filename[f.filename.rfind("."):]) upload_path = os.path.join(basepath, "../static/uploads", newName) f.save(upload_path) userId = 0 if hasattr(g, "current_user"): userId = g.current_user.ID addFile = { "NAME": f.filename, "URL": 'uploads/{0}'.format(newName), "PATH": upload_path, "USER_ID": userId, "LENGTH": len(f.read()), "UPLOAD_TIME": datetime.datetime.now(), } dal = FileDal() re_ent, message = dal.file_Save(addFile, []) if message.IsSuccess: tmp = json.dumps(re_ent, cls=AlchemyEncoder) if len(tmp) < 5: tmp = json.dumps(re_ent, cls=AlchemyEncoder) msg = json.loads(tmp) # print(tmp) # print(re_ent) # print(msg) message.Data = msg reStr = Fun.class_to_JsonStr(message) return reStr return Fun.class_to_JsonStr(AppReturnDTO(False))
def ApiUserInfoSave(): j_data = request.json if j_data is None: return Fun.class_to_JsonStr(AppReturnDTO(False, "参数有误")) in_ent = RequestSaveModel(j_data) _modele = UserInfoDal() # 更新添加的用户 if hasattr(g, "current_user"): # 表示添加 if "ID" not in in_ent.Data or in_ent.Data["ID"] is None or in_ent.Data[ "ID"] == 0: in_ent.Data["CREATE_USER_NAME"] = g.current_user.NAME if "CREATE_USER_NAME" not in in_ent.SaveKeys: in_ent.SaveKeys.append('CREATE_USER_NAME') in_ent.Data["CREATE_USER_ID"] = g.current_user.ID if "CREATE_USER_ID" not in in_ent.SaveKeys: in_ent.SaveKeys.append('CREATE_USER_ID') # 设置角色 in_ent.Data["roleIdList"] = "3" if "roleIdList" not in in_ent.SaveKeys: in_ent.SaveKeys.append('roleIdList') re_ent, message = _modele.userInfo_Save(in_dict=in_ent.Data, saveKeys=in_ent.SaveKeys) if message.IsSuccess: message.Data = json.loads(json.dumps(re_ent, cls=AlchemyEncoder)) # message.set_data(re_ent) return Fun.class_to_JsonStr(message)
def module_list(): j_data = request.json if j_data is None: return Fun.class_to_JsonStr(AppReturnDTO(False, "参数有误")) in_ent = RequestPagesModel(j_data) where = [] for search in in_ent.SearchKey: if search["Type"] == "like": where.append( eval("FaModule.%(Key)s.like('%%%(Value)s%%')" % search)) else: where.append(eval("FaModule.%(Key)s%(Type)s%(Value)s" % search)) criterion = [] for search in in_ent.OrderBy: search["Value"] = search["Value"].lower() criterion.append(eval("FaModule.%(Key)s.%(Value)s()" % search)) _modele = ModuleDal() re_ent, message = _modele.module_findall(in_ent.PageIndex, in_ent.PageSize, criterion, where) if message.IsSuccess: message.set_data(re_ent) return Fun.class_to_JsonStr(message)
def view_export(): """ 导出EXCEL文件 """ j_data = request.json if j_data is None: return Fun.class_to_JsonStr(AppReturnDTO(False, "参数有误")) in_ent = RequestPagesModel(j_data) _modele = QueryDal() sql, cfg, message = _modele.query_GetSqlByCode( in_ent.Key, in_ent.SearchKey, in_ent.OrderBy) if not message.IsSuccess: return Fun.class_to_JsonStr(message) _dict, message = Fun.sql_to_dict(sql) if not message.IsSuccess: return Fun.class_to_JsonStr(message) dirpath = os.path.join(app.root_path, 'download') file_name = "query_{0}.xlsx".format(in_ent.Key) Of.Office.ExportToXls(_dict, cfg, dirpath + "\\" + file_name) # directory = os.getcwd() # 假设在当前目录 # response = make_response( # send_from_directory(directory, file_name, as_attachment=True)) # response.headers["Content-Disposition"] = "attachment; filename={}".format( # file_name.encode().decode('latin-1')) return Fun.class_to_JsonStr( AppReturnDTO(True, "{0}/{1}".format('download', file_name)))
def module_delete(): j_data = request.json if j_data is None: return Fun.class_to_JsonStr(AppReturnDTO(False, "参数有误")) in_ent = PostBaseModel(j_data) _modele = ModuleDal() message = _modele.module_delete(in_ent.Key) return Fun.class_to_JsonStr(message)
def auth_UserLogin(): '''手机用户登录''' j_data = request.json if j_data is None: return Fun.class_to_JsonStr(AppReturnDTO(False, "参数有误")) _model = UserDal() ent = _model.user_login(j_data) return Fun.class_to_JsonStr(ent)
def query_single_code(): j_data = request.json if j_data is None: return Fun.class_to_JsonStr(AppReturnDTO(False, "参数有误")) in_ent = PostBaseModel(j_data) _modele = QueryDal() re_ent, message = _modele.query_singleByCode(in_ent.Key) if message.IsSuccess: message.set_data(re_ent) return Fun.class_to_JsonStr(message)
def module_save(): j_data = request.json if j_data is None: return Fun.class_to_JsonStr(AppReturnDTO(False, "参数有误")) in_ent = RequestSaveModel(j_data) _modele = ModuleDal() re_ent, message = _modele.module_Save(in_dict=in_ent.Data, saveKeys=in_ent.SaveKeys) if message.IsSuccess: message.set_data(re_ent) return Fun.class_to_JsonStr(message)
def user_reg(): '''用户注册''' j_data = request.json if j_data is None: return Fun.class_to_JsonStr(AppReturnDTO(False, "参数有误")) ent = AuthDal.login_reg(j_data) print(ent.__dict__) # return json.dumps(ent, cls=AlchemyEncoder) return json.dumps(Fun.convert_to_dict(ent), ensure_ascii=False)
def ApiPublicGetSolarDate(): j_data, msg = Fun.post_to_dict(request) if j_data is None: return Fun.class_to_JsonStr(msg) postEnt = RequestSaveModel(j_data) if postEnt is None or postEnt.Data is None: return Fun.class_to_JsonStr(AppReturnDTO(False, "参数有问题")) t = time.strptime(postEnt.Data["Data"], "%Y-%m-%d") y, m, d = t[0:3] reStr = iSoft.core.LunarDate.LunarDate.fromSolarDate(y, m, d) reStr = "{0}-{1}-{2}".format(reStr.year, reStr.month, reStr.day) return Fun.class_to_JsonStr(AppReturnDTO(True, reStr))
def UserInfo_Register(): ''' 用于手机端注册用户 ''' j_data, message = Fun.post_to_dict(request) if j_data is None: return Fun.class_to_JsonStr(message) postEnt = RequestSaveModel(j_data) if postEnt is None or postEnt.Data is None: return Fun.class_to_JsonStr(AppReturnDTO(False, "参数有问题")) dal = UserInfoDal() postEnt = dal.userInfo_register(postEnt.Data) return Fun.class_to_JsonStr(postEnt)
def AddUserInfoAndLogin(self, parentId, loginName, password, name, level_id, sex, YEARS_TYPE, BIRTHDAY_TIME, birthday_place, ICON_FILES_ID, ALIAS, AUTHORITY): '完善用户的基本资料以及登录账号' parentEnt = FaUserInfo.query.filter(FaUserInfo.ID == parentId).first() if parentEnt is None: return None, AppReturnDTO(False, "父ID有问题") # <- 获取添加成功后的Login实体 loginDal = LoginDal() loginDal.LOGIN_NAME = loginName loginDal.PASSWORD = password loginDal.PHONE_NO = loginName loginEng, msg = loginDal.AddLoginName() if not msg.IsSuccess: return msg # -> # <- 更新用户信息 userInfoEnt = FaUserInfo() userInfoEnt.ID = Fun.GetSeqId(FaUser) userInfoEnt.FATHER_ID = parentId userInfoEnt.LOGIN_NAME = loginDal.LOGIN_NAME userInfoEnt.UPDATE_TIME = datetime.datetime.now() userInfoEnt.NAME = name userInfoEnt.LEVEL_ID = level_id userInfoEnt.SEX = sex userInfoEnt.YEARS_TYPE = YEARS_TYPE if not Fun.IsNullOrEmpty(BIRTHDAY_TIME): userInfoEnt.BIRTHDAY_TIME = datetime.datetime.strptime( BIRTHDAY_TIME, '%Y-%m-%dT%H:%M:%SZ') userInfoEnt.BIRTHDAY_PLACE = birthday_place userInfoEnt.DIED_TIME = None userInfoEnt.DIED_PLACE = None userInfoEnt.DISTRICT_ID = parentEnt.DISTRICT_ID userInfoEnt.IS_LOCKED = 0 userInfoEnt.CREATE_TIME = datetime.datetime.now() userInfoEnt.LEVEL_ID = 1 userInfoEnt.STATUS = '正常' userInfoEnt.CREATE_USER_NAME = name userInfoEnt.CREATE_USER_ID = userInfoEnt.ID userInfoEnt.UPDATE_TIME = datetime.datetime.now() userInfoEnt.UPDATE_USER_NAME = name userInfoEnt.ICON_FILES_ID = ICON_FILES_ID userInfoEnt.ALIAS = ALIAS userInfoEnt.AUTHORITY = AUTHORITY db.session.add(userInfoEnt) return userInfoEnt, AppReturnDTO(True)
def query_query(): j_data = request.json if j_data is None: return Fun.class_to_JsonStr(AppReturnDTO(False, "参数有误")) in_ent = RequestPagesModel(j_data) _modele = QueryDal() re_ent, message = _modele.query_queryByCode(in_ent.Key, in_ent.PageIndex, in_ent.PageSize, in_ent.OrderBy, in_ent.SearchKey) if message.IsSuccess: message.set_dict_data(re_ent) return Fun.class_to_JsonStr(message)
def Role_Save(self, in_dict, saveKeys): relist, is_succ = Fun.model_save(FaRole, self, in_dict, saveKeys) if is_succ.IsSuccess: # 表示已经添加成功角色 sqlStr = ''' DELETE FROM fa_role_module WHERE fa_role_module.ROLE_ID = {0} '''.format(relist.ID) print(sqlStr) execObj = db.session.execute(sqlStr) if len(relist.moduleIdStr) > 0: sqlStr = ''' INSERT INTO fa_role_module (ROLE_ID, MODULE_ID) SELECT {0} ROLE_ID, m.ID MODULE_ID FROM fa_module m WHERE m.ID IN ({1}) '''.format(relist.ID, ','.join(str(i) for i in relist.moduleIdStr)) print(sqlStr) execObj = db.session.execute(sqlStr) db.session.commit() return relist, is_succ
def AddUserInfoSimple(self, name, parentId): """ 只添加用户的名称和父节点,不会添加登录账号,没提交事务 :param name: 用户名 :param parentId:父ID """ parentEnt = FaUserInfo.query.filter(FaUserInfo.ID == parentId).first() if parentEnt is None: return None, AppReturnDTO(False, "父ID有问题") userInfoEnt = FaUserInfo() userInfoEnt.ID = Fun.GetSeqId(FaUser) userInfoEnt.NAME = name userInfoEnt.FATHER_ID = parentId userInfoEnt.DISTRICT_ID = parentEnt.DISTRICT_ID userInfoEnt.IS_LOCKED = 0 userInfoEnt.CREATE_TIME = datetime.datetime.now() userInfoEnt.LEVEL_ID = 1 userInfoEnt.STATUS = '正常' userInfoEnt.CREATE_USER_NAME = '自动' userInfoEnt.CREATE_USER_ID = '1' userInfoEnt.UPDATE_TIME = datetime.datetime.now() userInfoEnt.UPDATE_USER_NAME = 'admin' db.session.add(userInfoEnt) return userInfoEnt, AppReturnDTO(True)
def query_queryByCode(self, code, pageIndex, pageSize, criterion, where): sql, cfg, msg = self.query_GetSqlByCode(code, criterion, where) if not msg.IsSuccess: return sql, msg relist = db.session.execute(sql) num = relist.rowcount relist.close() if pageIndex < 1: pageSize = 1 if pageSize < 1: pageSize = 10 # 最大页码 max_page = math.ceil(num / pageSize) # 向上取整 if pageIndex > max_page: return None, AppReturnDTO(True, num) pageSql = "{0} LIMIT {1},{2}".format(sql, (pageIndex - 1) * pageSize, pageSize) allData, msg = Fun.sql_to_dict(pageSql) if msg.IsSuccess: msg.Msg = num # relist = relist.paginate(pageIndex, per_page=pageSize).items return allData, msg
def user_Save(self, in_dict, saveKeys): relist, is_succ = Fun.model_save(FaUser, self, in_dict, saveKeys) if is_succ.IsSuccess: # 表示已经添加成功角色 sqlStr = ''' DELETE FROM fa_user_role WHERE fa_user_role.USER_ID = {0} '''.format(relist.ID) print(sqlStr) execObj = db.session.execute(sqlStr) if len(relist.roleIdList) > 0: sqlStr = ''' INSERT INTO fa_user_role (ROLE_ID, USER_ID) SELECT m.ID ROLE_ID, {0} USER_ID FROM fa_role m WHERE m.ID IN ({1}) '''.format(relist.ID, ','.join(str(i) for i in relist.roleIdList)) print(sqlStr) execObj = db.session.execute(sqlStr) db.session.commit() return relist, is_succ
def user_login(self, _inent): '''用户登录''' in_ent = LogingModel() # 验证输入是否合法 in_ent.__dict__ = _inent if in_ent.loginName is None or in_ent.loginName == '': return AppReturnDTO(False, "用户名不能为空") if in_ent.passWord is None or in_ent.passWord == '': return AppReturnDTO(False, "密码不能为空") # 验证输入是否正确 login = FaLogin.query.filter_by(LOGIN_NAME=in_ent.loginName).first() user = FaUser.query.filter_by(LOGIN_NAME=in_ent.loginName).first() if user is None or login is None: return AppReturnDTO(False, "用户名有误") if login.PASSWORD != Fun.md5(in_ent.passWord): return AppReturnDTO(False, "密码有误") # 读取用户信息 exUser, msg = self.user_export(user) if not msg.IsSuccess: return AppReturnDTO(True, "登录失败", msg) # 获取token值 token = AuthDal.generate_auth_token(exUser) token = token.decode('utf-8') return AppReturnDTO(True, "登录成功", exUser, token)
def UpdateCode(self, loginName, verifyCode): '更新短验证码,如果号码不存在,则添加新有号码,并发送短信' msg = "成功" if not send_verify_code(loginName, verifyCode): msg = verifyCode # return AppReturnDTO(False, "短信发送失败") loginEnt = FaLogin.query.filter( FaLogin.LOGIN_NAME == loginName).first() if loginEnt is None: loginEnt = self loginEnt.LOGIN_NAME = loginName loginEnt.VERIFY_CODE = verifyCode loginEnt.ID = Fun.GetSeqId(self) loginEnt.FAIL_COUNT = 0 loginEnt.VERIFY_TIME = datetime.datetime.now() db.session.add(loginEnt) else: loginEnt.VERIFY_CODE = verifyCode loginEnt.FAIL_COUNT = 0 loginEnt.VERIFY_TIME = datetime.datetime.now() db.session.commit() db.session.close() return AppReturnDTO(True, msg)
def user_module(): ''' 获取用户的所有模块 ''' j_data = request.json if j_data is None: return Fun.class_to_JsonStr(AppReturnDTO(False, "参数有误")) in_ent = PostBaseModel(j_data) _mod = UserDal() if g == None: return Fun.class_to_JsonStr(AppReturnDTO(False, "没有登录")) re_ent, message = _mod.user_all_module(g.current_user['ID']) if message.IsSuccess: message.set_data(re_ent) return Fun.class_to_JsonStr(message)
def ApiUserInfoSingle(): ''' 重置密码:RequestSaveModel对象,其中Data里包括VerifyCode,LoginName、NewPwd ''' j_data, message = Fun.post_to_dict(request) if j_data is None: return Fun.class_to_JsonStr(message) in_ent = PostBaseModel(j_data) if Fun.IsNullOrEmpty(in_ent.Key): return Fun.class_to_JsonStr(AppReturnDTO(False, "参数有问题")) dal = UserInfoDal() delMode, message = dal.userInfo_single(in_ent.Key) if message.IsSuccess: message.set_data(delMode) return Fun.class_to_JsonStr(message)
def ApiPublicGetLunarDate(): '获取阴历' j_data, msg = Fun.post_to_dict(request) if j_data is None: return Fun.class_to_JsonStr(msg) postEnt = RequestSaveModel(j_data) if postEnt is None or postEnt.Data is None: return Fun.class_to_JsonStr(AppReturnDTO(False, "参数有问题")) t = time.strptime(postEnt.Data["Data"], "%Y-%m-%dT%H:%M") y, m, d, h = t[0:4] converter = LunarSolarConverter() solar = Solar(y, m, d) lunar = converter.SolarToLunar(solar) reStr = "%d年%02d月%02d日%02d时" % (lunar.lunarYear, lunar.lunarMonth, lunar.lunarDay, h) return Fun.class_to_JsonStr(AppReturnDTO(True, reStr))
def user_single(self, key): '''查询一用户''' relist, is_succ = Fun.model_single(FaUser, key) tmp = UserDal() tmp.__dict__ = relist.__dict__ tmpId = [x.ID for x in relist.fa_roles] tmp.roleIdList = tmpId return tmp, is_succ
def Role_single(self, key): relist, is_succ = Fun.model_single(FaRole, key) tmp = RoleDal() tmp.__dict__ = relist.__dict__ userId = [x.ID for x in relist.fa_user] moduleId = [x.ID for x in relist.fa_modules] tmp.fa_user_arrid = userId tmp.moduleIdStr = moduleId return tmp, is_succ
def CheckUpdate(): '获取最新版本' j_data, msg = Fun.post_to_dict(request) if j_data is None: return Fun.class_to_JsonStr(msg) postEnt = RequestSaveModel(j_data) dirpath = os.path.join(app.root_path, '../static/') #设置以utf-8解码模式读取文件,encoding参数必须设置,否则默认以gbk模式读取文件,当文件中包含中文时,会报错 f = open("{0}update/wjbjp/wjbjp.json".format(dirpath), encoding='utf-8') setting = json.load(f) reJson = None for item in setting: if item["CODE"] > postEnt.Key: reJson = item print(item["CODE"]) break return Fun.class_to_JsonStr(AppReturnDTO(True, "", reJson))
def ApiFamilyUserInfoRelative(): j_data, message = Fun.post_to_dict(request) if j_data is None: return Fun.class_to_JsonStr(message) in_ent = PostBaseModel(j_data) if in_ent is None: return Fun.class_to_JsonStr(AppReturnDTO(False, "参数有问题")) dal = FamilyDal() # 如果没有传值,则显示当前用户的ID if Fun.IsNullOrEmpty(in_ent.Key): in_ent.Key = 1 re_ent, message = dal.UserInfoRelative(in_ent.Key) if message.IsSuccess: message.Data = re_ent.__dict__ return Fun.class_to_JsonStr(message)
def userInfo_single(self, key): '''查询一用户''' user, is_succ = Fun.model_single(FaUserInfo, key) userDal = UserDal() user, msg = userDal.user_export(user) # 计算阴阳历 converter = LunarSolarConverter() if user.YEARS_TYPE == "阳历": if user.BIRTHDAY_TIME is not None: solar = Solar(user.BIRTHDAY_TIME.year, user.BIRTHDAY_TIME.month, user.BIRTHDAY_TIME.day) lunar = converter.SolarToLunar(solar) user.BirthdaysolarDate = user.BIRTHDAY_TIME.strftime( "%Y年%m月%d日%H时") user.BirthdaylunlarDate = "%d年%02d月%02d日%02d时" % ( lunar.lunarYear, lunar.lunarMonth, lunar.lunarDay, user.BIRTHDAY_TIME.hour) if user.DIED_TIME is not None: user.DiedsolarDate = user.DIED_TIME.strftime("%Y年%m月%d日%H时") solar = Solar(user.DIED_TIME.year, user.DIED_TIME.month, user.DIED_TIME.day) lunar = converter.SolarToLunar(solar) user.DiedlunlarDate = "%d年%02d月%02d日%02d时" % ( lunar.lunarYear, lunar.lunarMonth, lunar.lunarDay, user.DIED_TIME.hour) else: if user.BIRTHDAY_TIME is not None: user.BirthdaylunlarDate = user.BIRTHDAY_TIME.strftime( "%Y年%m月%d日%H时") lunar = Lunar(user.BIRTHDAY_TIME.year, user.BIRTHDAY_TIME.month, user.BIRTHDAY_TIME.day, isleap=False) solar = converter.LunarToSolar(lunar) user.BirthdaysolarDate = "%d年%02d月%02d日%02d时" % ( solar.solarYear, solar.solarMonth, solar.solarDay, user.BIRTHDAY_TIME.hour) if user.DIED_TIME is not None: user.DiedlunlarDate = user.DIED_TIME.strftime("%Y年%m月%d日%H时") lunar = Lunar(user.DIED_TIME.year, user.DIED_TIME.month, user.DIED_TIME.day, isleap=False) solar = converter.LunarToSolar(lunar) user.DiedsolarDate = "%d年%02d月%02d日%02d时" % ( solar.solarYear, solar.solarMonth, solar.solarDay, user.DIED_TIME.hour) return user, is_succ
def ApiResetPassword(): ''' 重置密码:RequestSaveModel对象,其中Data里包括VerifyCode,LoginName、NewPwd ''' j_data, message = Fun.post_to_dict(request) if j_data is None: return Fun.class_to_JsonStr(message) postEnt = RequestSaveModel(j_data) if postEnt is None or postEnt.Data is None: return Fun.class_to_JsonStr(AppReturnDTO(False, "参数有问题")) dal = LoginDal() re_ent, message = dal.ResetPassword(postEnt.Data["VerifyCode"], postEnt.Data["LoginName"], postEnt.Data["NewPwd"]) if message.IsSuccess: message.set_data(re_ent) return json.dumps(Fun.convert_to_dict(message))
def query_Save(self, in_dict, saveKeys): jsonStr = re.sub(r'\r|\n| ', "", in_dict["QUERY_CFG_JSON"]) jsonStr = re.sub(r'"onComponentInitFunction"((.|\n)+?)},', "", jsonStr) jsonStr = re.sub(r',},', ",", jsonStr) try: x = json.loads(jsonStr) except: return None, AppReturnDTO(False, "列配置信息有误") relist, is_succ = Fun.model_save(FaQuery, self, in_dict, saveKeys) return relist, is_succ
def ApiPublicSendCode(): ''' 发送短信:RequestSaveModel对象,其中Data里包括phone ''' j_data, msg = Fun.post_to_dict(request) if j_data is None: return Fun.class_to_JsonStr(msg) postEnt = RequestSaveModel(j_data) if postEnt is None or postEnt.Data is None: return Fun.class_to_JsonStr(AppReturnDTO(False, "参数有问题")) if "phoneNum" not in postEnt.Data or postEnt.Data[ "phoneNum"] is None or postEnt.Data["phoneNum"] == "": return Fun.class_to_JsonStr(AppReturnDTO(False, "没有获取phoneNum的值")) # 生成随机代码 code = random.randint(1000, 9999) dal = LoginDal() re_ent = dal.UpdateCode(postEnt.Data["phoneNum"], code) return json.dumps(Fun.convert_to_dict(re_ent))