This commit is contained in:
wuaho 2021-08-18 17:17:16 +08:00
parent b5a0791a5d
commit 192b407e15
6 changed files with 50 additions and 16 deletions

View File

@ -112,7 +112,7 @@ async def my_event(request: Request,
my_data_auth = []
my_data_auth = await ck.distinct(game, 'event', '#event_name')
my_data_auth = await ck.distinct(game, 'event_view', '#event_name')
#
# else:

View File

@ -227,7 +227,7 @@ async def read_kanban(
# 我的空间
where = {
'project_id': data_in.id,
'members._id': current_user.id
'members.user_id': current_user.id
# '$or': [{'rw_members': current_user.id}, {'r_members': current_user.id}]
}
spaces = await crud.space.find_many(db, where)

View File

@ -11,6 +11,7 @@ router = APIRouter()
@router.post("/create")
async def create(
game: str,
data_in: schemas.SpaceCreate,
db: AsyncIOMotorDatabase = Depends(get_database),
current_user: schemas.UserDB = Depends(deps.get_current_user)
@ -68,14 +69,31 @@ async def rename(
return schemas.Msg(code=0, msg='ok', data=1)
@router.post("/add_members")
async def add_members(
@router.post("/set_members")
async def set_members(
data_in: schemas.AddSpaceMembers,
game: str,
db: AsyncIOMotorDatabase = Depends(get_database),
current_user: schemas.UserDB = Depends(deps.get_current_user)
) -> schemas.Msg:
"""添加空间成员"""
# res = await crud.space.rename(db, data_in)
pass
"""设置空间成员"""
res = await crud.space.set_members(db, data_in)
return schemas.Msg(code=0, msg='ok', data=1)
@router.post("/detail")
async def detail(
data_in: schemas.SpaceDetail,
game: str,
db: AsyncIOMotorDatabase = Depends(get_database),
current_user: schemas.UserDB = Depends(deps.get_current_user)
) -> schemas.Msg:
"""空间详细"""
space_info = await crud.space.get(db, id=data_in.space_id)
exists_member = {item.get('user_id') for item in space_info.get('members', [])}
members_info = await crud.user.find_ids(db, list(exists_member))
members_info = {item['_id']: item for item in members_info}
for item in space_info.get('members', []):
if user_info := members_info.get(item['user_id']):
item.update(schemas.UserDB(**user_info).dict(by_alias=True))
return schemas.Msg(code=0, msg='ok', data=space_info)

View File

@ -7,20 +7,32 @@ from schemas import *
__all__ = 'space',
from utils import get_uid
class CRUDSpace(CRUDBase):
async def create(self, db: AsyncIOMotorDatabase, obj_in: SpaceCreate, user: UserDB):
obj_in.members.append({'_id': user.id, 'name': user.name, 'authority': 'rw'})
obj_in.members.append({'user_id': user.id, 'authority': 'rw'})
db_obj = SpaceDB(
**obj_in.dict(by_alias=True), user_id=user.id,
_id=uuid.uuid1().hex
_id=get_uid()
)
return await db[self.coll_name].insert_one(db_obj.dict(by_alias=True))
async def read_space(self, db, user_id, project_id):
return await self.read_have(db, user_id=user_id, project_id=project_id)
async def set_members(self, db, data_in: schemas.AddSpaceMembers):
space_id = data_in.space_id
# space_info = await self.get(db, space_id)
# exists_member = {item.get('user_id') for item in space_info.get('members', [])}
add_member = []
for member in data_in.members:
# if member.user_id not in exists_member:
add_member.append(member.dict())
return await self.update_one(db, {'_id': space_id}, {'$set': {'members': add_member}})
async def rename(self, db, data_in: schemas.SpaceRename):
return await self.update_one(db, {'_id': data_in.space_id}, {'$set': {'name': data_in.new_name}})

View File

@ -119,7 +119,7 @@ class XAnalysis:
cnt1,
{select_ltv_str}
FROM (SELECT toDate(addHours(`#event_time`, `#zone_offset`)) as date, uniqExact(`{quota}`) cnt1
FROM {self.game}.event
FROM {self.game}.event_view
where `#event_name` = 'create_account'
AND {where_str}
GROUP BY toDate(addHours(`#event_time`, `#zone_offset`))) as reg
@ -127,11 +127,11 @@ class XAnalysis:
(select a.date,
{sumpay_str}
from (SELECT toDate(addHours(`#event_time`, `#zone_offset`)) as date, `{quota}`
FROM {self.game}.event
FROM {self.game}.event_view
where `#event_name` = 'create_account'
and {where_str}) as a
left join (select `{quota}`, unitPrice/100 as money, toDate(addHours(`#event_time`, `#zone_offset`)) as date
from {self.game}.event
from {self.game}.event_view
where `#event_name` = 'pay' and {where_order_str}) b
on a.`{quota}` = b.`{quota}`
group by a.date) log on reg.date = log.date

View File

@ -17,8 +17,8 @@ class Authority(str, Enum):
r = 'r'
class Member(DBBase):
name: str
class Member(BaseModel):
user_id: str
authority: Authority
@ -35,6 +35,10 @@ class SpaceDelete(DBBase):
pass
class SpaceDetail(BaseModel):
space_id: str
class SpaceRename(BaseModel):
space_id: str
new_name: str
@ -42,7 +46,7 @@ class SpaceRename(BaseModel):
class AddSpaceMembers(BaseModel):
space_id: str
user_ids: List[str]
members: List[Member]
# --------------------------------------------------------------