from pymongo import MongoClient from bson import ObjectId, json_util # 主环境 (生产环境为production,开发环境为development) setting = 'development' # 获取数据集 def col(arg): conn = MongoClient('mongodb://coc:qlSfefSor5@localhost:12236/coc') if setting == 'development': arg += '_test' if arg == 'lost': return conn.coc.lost elif arg == 'found': return conn.coc.found elif arg == 'lost_test': return conn.coc.lost_test elif arg == 'found_test': return conn.coc.found_test else: return False # 新增失物招领信息 def addLAF(data, add_type): try: col(add_type).insert_one(data) except Exception as e: # 失败了 return { 'errcode': 331, 'errmsg': '插入数据库失败', 'errdetail': e} return {'errcode': 200, 'errmsg': 'ok'} # 获取全部失物信息 def getLost(): arr = [] try: for i in col('lost').find({'close':'false'},{'title': 1, 'create_time':1, 'img_url':1, 'total_addr':1,'type':1}): arr.append(i) except Exception as e: return {'errcode': 351, 'errmsg': 'lost表获取失败', 'errdetail': e} return {'errcode': 200, 'arr': json_util.dumps(arr), 'errmsg': 'ok'} # 获取全部招领信息 def getFound(): arr = [] try: for i in col('found').find({'close':'false'},{'title': 1, 'create_time':1, 'img_url':1, 'total_addr':1,'type':1}): arr.append(i) except Exception as e: return {'errcode': 352, 'errmsg': 'found表获取失败', 'errdetail': e} return {'errcode': 200, 'arr': json_util.dumps(arr), 'errmsg': 'ok'} # 获取指定失物信息 def getDetail(id, get_type, errcode): try: info = col(get_type).find_one({"_id": ObjectId(id)},{'user_info':0}) if info: return {'errcode': 200, 'detail': json_util.dumps(info), 'errmsg': 'ok'} else: return {'errcode': errcode, 'errmsg': '数据不存在'} except Exception as e: # id不合法 return {'errcode': errcode+1, 'errmsg': 'id不合法', 'errdetail': e} # 删除某个失物 def delLAF(id, del_type, del_user_info): try: col(del_type).update({"_id": ObjectId(id)}, {'$set': {'close': 'true','del_user_info': del_user_info}}) except Exception as e: # id不合法 print(e) return {'errcode': 341, 'errmsg': 'id不合法'} return {'errcode': 200, 'errmsg': 'ok'} # 向一条记录添加留言 def commentLAF(id, data, laf_type): try: col(laf_type).update({"_id": ObjectId(id)}, {'$push': {'comment': data}}) except Exception as e: # 失败 return {'errcode': 371, 'errmsg': '评论数据库修改失败'} return {'errcode': 200, 'errmsg': 'ok'} # 向一条记录添加回复 def replyLAF(id, comment, laf_type): try: col(laf_type).update({"_id": ObjectId(id)}, {'$set': {'comment': comment}}) except Exception as e: # 失败 return {'errcode': 372, 'errmsg': '回复数据库修改失败'} return {'errcode': 200, 'errmsg': 'ok'}