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]):
|
class CRUDPhonecode(CRUDBase[Phonecode, PhoneCodeCreate, PhoneCodeUpdate]):
|
||||||
def get_phonecode(self, db: Session, phonecode_id: int):
|
def get_phonecode(self, db: Session, phonecode_id: int):
|
||||||
return self.get_by_field(db, "id", phonecode_id)
|
return self.get_by_field(db, "id", phonecode_id)
|
||||||
|
|
||||||
def get_latest_by_phone(self, db: Session, phone: str, weid: int):
|
def get_latest_by_phone(self, db: Session, phone: str, weid: int):
|
||||||
"""获取指定手机号的最新验证码记录"""
|
"""获取指定手机号的最新验证码记录"""
|
||||||
return db.query(self.model).filter(
|
return db.query(self.model).filter(
|
||||||
@ -118,6 +119,7 @@ class CRUDPhonecode(CRUDBase[Phonecode, PhoneCodeCreate, PhoneCodeUpdate]):
|
|||||||
self.model.weid == weid
|
self.model.weid == weid
|
||||||
).order_by(self.model.createtime.desc()).first()
|
).order_by(self.model.createtime.desc()).first()
|
||||||
|
|
||||||
|
|
||||||
class CRUDQYear(CRUDBase[QYear, QYearCreate, QYearUpdate]):
|
class CRUDQYear(CRUDBase[QYear, QYearCreate, QYearUpdate]):
|
||||||
def get_qyear(self, db: Session, qyear_id: int):
|
def get_qyear(self, db: Session, qyear_id: int):
|
||||||
return self.get_by_field(db, "id", qyear_id)
|
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):
|
def get_setting(self, db: Session, setting_id: int):
|
||||||
return self.get_by_field(db, "id", setting_id)
|
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]):
|
class CRUDShareRecord(CRUDBase[ShareRecord, ShareRecordCreate, ShareRecordUpdate]):
|
||||||
def get_share_record(self, db: Session, share_record_id: int):
|
def get_share_record(self, db: Session, share_record_id: int):
|
||||||
return self.get_by_field(db, "id", share_record_id)
|
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]):
|
class CRUDsonSimple(CRUDBase[SonSimple, SonSimpleCreate, SonSimpleUpdate]):
|
||||||
def get_son_simple(self, db: Session, son_simple_id: int):
|
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]):
|
class CRUDUserMember(CRUDBase[UserMember, UserMemberCreate, UserMemberUpdate]):
|
||||||
def get_user_member(self, db: Session, user_member_id: int):
|
def get_user_member(self, db: Session, user_member_id: int):
|
||||||
return self.get_by_field(db, "id", user_member_id)
|
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):
|
def get_by_openid_and_weid(self, db: Session, openid: str, weid: int, istatus: int = 1):
|
||||||
"""通过openid和weid获取用户"""
|
"""通过openid和weid获取用户"""
|
||||||
return db.query(self.model).filter(
|
return db.query(self.model).filter(
|
||||||
@ -98,6 +98,47 @@ class CRUDUserCollectionPraction(
|
|||||||
CRUDBase[UserCollectionPraction, UserCollectionPractionCreate, UserCollectionPractionUpdate]):
|
CRUDBase[UserCollectionPraction, UserCollectionPractionCreate, UserCollectionPractionUpdate]):
|
||||||
def get_user_collection_praction(self, db: Session, user_collection_praction_id: int):
|
def get_user_collection_praction(self, db: Session, user_collection_praction_id: int):
|
||||||
return self.get_by_field(db, "id", user_collection_praction_id)
|
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]):
|
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):
|
def get_user_pool(self, db: Session, user_pool_id: int):
|
||||||
return self.get_by_field(db, "id", user_pool_id)
|
return self.get_by_field(db, "id", user_pool_id)
|
||||||
|
|
||||||
|
|
||||||
class CRUDFullExamUser(CRUDBase[FullExamUser, FullExamUserCreate, FullExamUserUpdate]):
|
class CRUDFullExamUser(CRUDBase[FullExamUser, FullExamUserCreate, FullExamUserUpdate]):
|
||||||
def get_full_exam_user(self, db: Session, full_exam_user_id: int):
|
def get_full_exam_user(self, db: Session, full_exam_user_id: int):
|
||||||
return self.get_by_field(db, "id", full_exam_user_id)
|
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):
|
def get_by_openid_and_weid(self, db: Session, openid: str, weid: int, istatus: int = 1):
|
||||||
"""通过openid和weid获取用户"""
|
"""通过openid和weid获取用户"""
|
||||||
return db.query(self.model).filter(
|
return db.query(self.model).filter(
|
||||||
@ -145,7 +224,7 @@ class CRUDFullExamUser(CRUDBase[FullExamUser, FullExamUserCreate, FullExamUserUp
|
|||||||
self.model.weid == weid,
|
self.model.weid == weid,
|
||||||
self.model.istatus == istatus
|
self.model.istatus == istatus
|
||||||
).first()
|
).first()
|
||||||
|
|
||||||
def get_by_id_and_weid(self, db: Session, id: int, weid: int, istatus: int = 1):
|
def get_by_id_and_weid(self, db: Session, id: int, weid: int, istatus: int = 1):
|
||||||
"""通过id和weid获取用户"""
|
"""通过id和weid获取用户"""
|
||||||
return db.query(self.model).filter(
|
return db.query(self.model).filter(
|
||||||
@ -154,6 +233,7 @@ class CRUDFullExamUser(CRUDBase[FullExamUser, FullExamUserCreate, FullExamUserUp
|
|||||||
self.model.istatus == istatus
|
self.model.istatus == istatus
|
||||||
).first()
|
).first()
|
||||||
|
|
||||||
|
|
||||||
# 创建实例
|
# 创建实例
|
||||||
user_doexam = CRUDUserDoexam(UserDoexam)
|
user_doexam = CRUDUserDoexam(UserDoexam)
|
||||||
user_doother_exam_answer = CRUDUserDoOtherExamAnswer(UserDoOtherExamAnswer)
|
user_doother_exam_answer = CRUDUserDoOtherExamAnswer(UserDoOtherExamAnswer)
|
||||||
@ -170,5 +250,3 @@ user_doother_exam = CRUDUserDoOtherExam(UserDootherExam)
|
|||||||
user_wrong_praction = CRUDUserWrongPraction(UserWrongPraction)
|
user_wrong_praction = CRUDUserWrongPraction(UserWrongPraction)
|
||||||
user_pool = CRUDUserPool(UserPool)
|
user_pool = CRUDUserPool(UserPool)
|
||||||
full_exam_user = CRUDFullExamUser(FullExamUser)
|
full_exam_user = CRUDFullExamUser(FullExamUser)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user