feat(wxapp): 实现分享功能并优化用户信息相关操作
- 新增分享功能处理逻辑,包括获取设置、记录分享次数和更新用户积分 - 优化用户信息获取和更新操作,提高代码复用性和可维护性 - 添加错题收藏功能,支持用户对错题进行收藏和取消收藏 - 重构部分代码,提高可读性和性能
This commit is contained in:
parent
7ace7db5c5
commit
97a61189ea
File diff suppressed because it is too large
Load Diff
@ -111,6 +111,7 @@ class CRUDPaperTest(CRUDBase[PaperTest, PaperTestCreate, PaperTestUpdate]):
|
||||
class CRUDPhonecode(CRUDBase[Phonecode, PhoneCodeCreate, PhoneCodeUpdate]):
|
||||
def get_phonecode(self, db: Session, phonecode_id: int):
|
||||
return self.get_by_field(db, "id", phonecode_id)
|
||||
|
||||
def get_latest_by_phone(self, db: Session, phone: str, weid: int):
|
||||
"""获取指定手机号的最新验证码记录"""
|
||||
return db.query(self.model).filter(
|
||||
@ -118,6 +119,7 @@ class CRUDPhonecode(CRUDBase[Phonecode, PhoneCodeCreate, PhoneCodeUpdate]):
|
||||
self.model.weid == weid
|
||||
).order_by(self.model.createtime.desc()).first()
|
||||
|
||||
|
||||
class CRUDQYear(CRUDBase[QYear, QYearCreate, QYearUpdate]):
|
||||
def get_qyear(self, db: Session, qyear_id: int):
|
||||
return self.get_by_field(db, "id", qyear_id)
|
||||
@ -132,11 +134,70 @@ class CRUDSetting(CRUDBase[Setting, SettingCreate, SettingUpdate]):
|
||||
def get_setting(self, db: Session, setting_id: int):
|
||||
return self.get_by_field(db, "id", setting_id)
|
||||
|
||||
def get_setting_1(self, session: Session, uniacid: int):
|
||||
# 执行查询并获取第一条结果
|
||||
result = session.query(
|
||||
self.model.share_integral,
|
||||
self.model.share_title,
|
||||
self.model.shareupper
|
||||
).filter(
|
||||
self.model.weid == uniacid
|
||||
).first()
|
||||
|
||||
# 将结果转换为字典格式
|
||||
if result:
|
||||
return {
|
||||
"share_integral": result[0],
|
||||
"share_title": result[1],
|
||||
"shareupper": result[2]
|
||||
}
|
||||
return {}
|
||||
|
||||
|
||||
class CRUDShareRecord(CRUDBase[ShareRecord, ShareRecordCreate, ShareRecordUpdate]):
|
||||
def get_share_record(self, db: Session, share_record_id: int):
|
||||
return self.get_by_field(db, "id", share_record_id)
|
||||
|
||||
def get_share_record_1(self, session: Session, uniacid: int, uid: int):
|
||||
# 生成当天日期字符串
|
||||
current_day = datetime.now().strftime("%Y-%m-%d")
|
||||
|
||||
# 构建查询并获取结果
|
||||
result = session.query(
|
||||
self.model.id,
|
||||
self.model.uid,
|
||||
self.model.num
|
||||
).filter(
|
||||
self.model.weid == uniacid,
|
||||
self.model.uid == uid,
|
||||
self.model.day == current_day
|
||||
).first()
|
||||
|
||||
# 转换结果类型
|
||||
# return result._asdict() if result else {} # 适用于 SQLAlchemy 2.x 的 Row 对象
|
||||
# 或者手动构建字典(兼容更多版本)
|
||||
return dict(zip(['id', 'uid', 'num'], result)) if result else {}
|
||||
|
||||
def update_share_record(
|
||||
self,
|
||||
session: Session,
|
||||
update_data: dict,
|
||||
record_id: int,
|
||||
user_id: int
|
||||
) -> int:
|
||||
try:
|
||||
# 执行更新操作
|
||||
affected_rows = session.query(self.model).filter(
|
||||
self.model.id == record_id,
|
||||
self.model.uid == user_id
|
||||
).update(update_data)
|
||||
session.commit()
|
||||
return affected_rows
|
||||
except Exception as e:
|
||||
session.rollback()
|
||||
print(f"更新失败: {str(e)}")
|
||||
return 0
|
||||
|
||||
|
||||
class CRUDsonSimple(CRUDBase[SonSimple, SonSimpleCreate, SonSimpleUpdate]):
|
||||
def get_son_simple(self, db: Session, son_simple_id: int):
|
||||
|
@ -84,7 +84,7 @@ class CRUDUserSpequence(CRUDBase[UserSpequence, UserSpequenceCreate, UserSpequen
|
||||
class CRUDUserMember(CRUDBase[UserMember, UserMemberCreate, UserMemberUpdate]):
|
||||
def get_user_member(self, db: Session, user_member_id: int):
|
||||
return self.get_by_field(db, "id", user_member_id)
|
||||
|
||||
|
||||
def get_by_openid_and_weid(self, db: Session, openid: str, weid: int, istatus: int = 1):
|
||||
"""通过openid和weid获取用户"""
|
||||
return db.query(self.model).filter(
|
||||
@ -98,6 +98,47 @@ class CRUDUserCollectionPraction(
|
||||
CRUDBase[UserCollectionPraction, UserCollectionPractionCreate, UserCollectionPractionUpdate]):
|
||||
def get_user_collection_praction(self, db: Session, user_collection_praction_id: int):
|
||||
return self.get_by_field(db, "id", user_collection_praction_id)
|
||||
def get_user_collection_praction_1(
|
||||
self,
|
||||
session: Session,
|
||||
uniacid: int,
|
||||
uid: int,
|
||||
testid: int
|
||||
) -> dict:
|
||||
result = session.query(
|
||||
self.model
|
||||
).filter(
|
||||
self.model.weid == uniacid,
|
||||
self.model.istatus == 1,
|
||||
self.model.uid == uid,
|
||||
self.model.testid == testid
|
||||
).first()
|
||||
|
||||
return result.__dict__ if result else {}
|
||||
|
||||
def delete_user_collection_praction(
|
||||
self,
|
||||
session: Session,
|
||||
uniacid: int,
|
||||
uid: int,
|
||||
testid: int
|
||||
) -> int:
|
||||
try:
|
||||
# 执行删除操作
|
||||
affected_rows = session.query(
|
||||
self.model
|
||||
).filter(
|
||||
self.model.weid == uniacid,
|
||||
self.model.uid == uid,
|
||||
self.model.testid == testid
|
||||
).delete()
|
||||
|
||||
session.commit()
|
||||
return affected_rows
|
||||
except Exception as e:
|
||||
session.rollback()
|
||||
print(f"删除失败: {str(e)}")
|
||||
return 0
|
||||
|
||||
|
||||
class CRUDUserGift(CRUDBase[UserGift, UserGiftCreate, UserGiftUpdate]):
|
||||
@ -134,10 +175,48 @@ class CRUDUserPool(CRUDBase[UserPool, UserPoolCreate, UserPoolUpdate]):
|
||||
def get_user_pool(self, db: Session, user_pool_id: int):
|
||||
return self.get_by_field(db, "id", user_pool_id)
|
||||
|
||||
|
||||
class CRUDFullExamUser(CRUDBase[FullExamUser, FullExamUserCreate, FullExamUserUpdate]):
|
||||
def get_full_exam_user(self, db: Session, full_exam_user_id: int):
|
||||
return self.get_by_field(db, "id", full_exam_user_id)
|
||||
|
||||
|
||||
def get_user_info(self, session: Session, uniacid: int, uid: int):
|
||||
# 构建查询并获取第一条结果
|
||||
result = session.query(
|
||||
self.model.id,
|
||||
self.model.integral,
|
||||
self.model.status
|
||||
).filter(
|
||||
self.model.weid == uniacid,
|
||||
self.model.id == uid
|
||||
).first()
|
||||
|
||||
# 转换为字典格式
|
||||
fields = ["id", "integral", "status"]
|
||||
if result is not None:
|
||||
return dict(zip(fields, result))
|
||||
return {}
|
||||
|
||||
def update_user_info(
|
||||
self,
|
||||
session: Session,
|
||||
update_data: dict,
|
||||
user_id: int
|
||||
) -> int:
|
||||
try:
|
||||
# 执行更新操作
|
||||
affected_rows = session.query(self.model).filter(
|
||||
self.model.id == user_id
|
||||
).update(update_data)
|
||||
session.commit()
|
||||
return affected_rows
|
||||
except Exception as e:
|
||||
session.rollback()
|
||||
print(f"更新失败: {str(e)}")
|
||||
return 0
|
||||
|
||||
|
||||
|
||||
def get_by_openid_and_weid(self, db: Session, openid: str, weid: int, istatus: int = 1):
|
||||
"""通过openid和weid获取用户"""
|
||||
return db.query(self.model).filter(
|
||||
@ -145,7 +224,7 @@ class CRUDFullExamUser(CRUDBase[FullExamUser, FullExamUserCreate, FullExamUserUp
|
||||
self.model.weid == weid,
|
||||
self.model.istatus == istatus
|
||||
).first()
|
||||
|
||||
|
||||
def get_by_id_and_weid(self, db: Session, id: int, weid: int, istatus: int = 1):
|
||||
"""通过id和weid获取用户"""
|
||||
return db.query(self.model).filter(
|
||||
@ -154,6 +233,7 @@ class CRUDFullExamUser(CRUDBase[FullExamUser, FullExamUserCreate, FullExamUserUp
|
||||
self.model.istatus == istatus
|
||||
).first()
|
||||
|
||||
|
||||
# 创建实例
|
||||
user_doexam = CRUDUserDoexam(UserDoexam)
|
||||
user_doother_exam_answer = CRUDUserDoOtherExamAnswer(UserDoOtherExamAnswer)
|
||||
@ -170,5 +250,3 @@ user_doother_exam = CRUDUserDoOtherExam(UserDootherExam)
|
||||
user_wrong_praction = CRUDUserWrongPraction(UserWrongPraction)
|
||||
user_pool = CRUDUserPool(UserPool)
|
||||
full_exam_user = CRUDFullExamUser(FullExamUser)
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user