def list(self): data = parameter_required() restatus = int(data.get('restatus', 0)) filter_args = [Register.isdelete == 0, ] if is_user(): usid = getattr(request, 'user').id filter_args.append(Register.USid == usid) telphone = data.get('telphone') if restatus: filter_args.append(or_(Register.REstatus > RegisterStatus.transfer.value, Register.REstatus == RegisterStatus.cancle.value)) elif telphone and telphone != 'null' and not restatus: # 手机号查看报告单时,显示该用户所有挂号记录报告单 filter_args.append(Register.REstatus > RegisterStatus.cancle.value) else: filter_args.append(and_(Register.REstatus < RegisterStatus.commenting.value, Register.REstatus > RegisterStatus.cancle.value)) if telphone: family = Family.query.filter(Family.FAtel == telphone, Family.USid == usid, Family.isdelete == 0).first() if family: filter_args.append(Register.FAid == family.FAid) elif is_doctor(): doctor = Doctor.query.filter(Doctor.DOid == getattr( request, 'user').id, Doctor.isdelete == 0).first_('账号已注销') filter_args.append(Register.DEid == doctor.DEid) # index = data.get('index') if not is_user(): # 后台筛选专用字段 if restatus: try: restatus = RegisterStatus(int(str(restatus))).value except: raise ParamsError('挂号状态筛选有误') filter_args.append(Register.REstatus == restatus) deid, usid, doid, redate, reamorpm = data.get('deid'), data.get('usid'), data.get( 'doid'), data.get('redate'), data.get('reamorpm') if deid: filter_args.append(Register.DEid == deid) if usid: filter_args.append(Register.USid == usid) if doid: filter_args.append(Register.DOid == doid) redate = self._check_time(redate) if redate: filter_args.append(or_(Register.REdate == redate, Register.REtansferDate == redate)) if reamorpm is not None: try: reamorpm = RegisterAmOrPm(int(str(reamorpm))).value except: raise ParamsError('时间段筛选有误') filter_args.append(or_(Register.REamOrPm == reamorpm, Register.REtansferAmOrPm == reamorpm)) register_list = Register.query.filter(*filter_args).order_by(Register.createtime.desc()).all_with_page() for register in register_list: self._fill_resgister(register) return Success('获取成功', data=register_list)
def get(self): data = parameter_required('prid') prid = data.get('prid') filter_args = [Products.PRid == prid, Products.isdelete == 0] if is_user(): filter_args.append(Products.PRstatus == ProductStatus.usual.value) product = Products.query.filter(*filter_args).first_('商品已下架') product.add('PRdesc', 'PRdetails') self._fill_coupon(product) address = Setting.query.filter(Setting.STname == 'address', Setting.STtype == 2, Setting.isdelete == 0).first() telphone = Setting.query.filter(Setting.STname == 'telphone', Setting.STtype == 2, Setting.isdelete == 0).first() if address: product.fill('address', address.STvalue) else: product.fill('address', "") if telphone: product.fill('telphone', telphone.STvalue) else: product.fill('telphone', "") if product.DEid: dep = Departments.query.filter(Departments.DEid == product.DEid, Departments.isdelete == 0).first() if dep: product.fill('dename', dep.DEname) else: product.fill('dename', '') else: product.fill('dename', '') return Success('获取成功', data=product)
def get_setmeal(self): """ 获取课时套餐 """ if is_admin() or is_hign_level_admin(): setmeal = Setmeal.query.filter( Setmeal.isdelete == 0).all_with_page() return Success(message="获取课时套餐成功", data=setmeal) elif is_user(): args = parameter_required(('clid', )) classes = Classes.query.filter( Classes.isdelete == 0, Classes.CLid == args.get('clid')).first_("未找到该课程信息") setmeal_list = [] setmeal_list.append({ "smid": "1", "clid": args.get('clid'), "clname": classes["CLname"], "smnum": 1, "smprice": classes["CLprice"] }) setmeal = Setmeal.query.filter( Setmeal.isdelete == 0, Setmeal.CLid == args.get("clid")).all() setmeal.sort(key=lambda x: x["SMnum"]) for setmeal_one in setmeal: setmeal_list.append(setmeal_one) return Success(message="获取课时套餐成功", data=setmeal_list)
def _invitation_records(): secret_user_id = request.args.to_dict().get('secret_usid') if not secret_user_id: return from hospital.extensions.interface.user_interface import is_user if not is_user(): return current_app.logger.info('>>>>>>>>record invitation<<<<<<<<') try: inviter_id = base_decode(secret_user_id) current_app.logger.info(f'secret_usid --> inviter_id: {inviter_id}') except Exception as e: current_app.logger.error(f'解析secret_usid时出错: {e}') return usid = getattr(request, 'user').id if inviter_id == usid: current_app.logger.info('inviter == invitee') return from hospital.models.user import UserInvitation from hospital.extensions.register_ext import db import uuid try: with db.auto_commit(): uin = UserInvitation.create({ 'UINid': str(uuid.uuid1()), 'USInviter': inviter_id, 'USInvitee': usid, 'UINapi': request.path }) current_app.logger.info(f'{request.path} 创建邀请记录') db.session.add(uin) except Exception as e: current_app.logger.error(f'存储邀请记录时出错: {e}')
def info(self): """活动详情""" args = request.args.to_dict() uaid = args.get('uaid') if uaid: ua = self._ua_filter( (UserActivity.UAid == uaid, ), ).first_('活动不存在') acid = ua.ACid else: parameter_required('acid', datafrom=args) acid = args.get('acid') activity = Activity.query.filter( Activity.isdelete == false(), Activity.ACid == acid).first_('未找到活动信息') if not is_admin(): activity.hide('ACnumber') if is_user(): activity.fill('signed_up', bool( self._ua_filter([ UserActivity.ACid == acid, UserActivity.USid == getattr( request, 'user').id ]).first())) # 是否已报名 activity.fill('acstatus_zh', ActivityStatus(activity.ACstatus).zh_value) activity.fill('remain_people', self._query_activity_remain_people(activity)) return Success(data=activity)
def userlist(self): """获取用户优惠券(前台)""" args = parameter_required(('ucalreadyuse', )) # 601已使用602未使用603已过期604可使用 if not is_user(): return AuthorityError() usid = request.user.id ucalreadyuse = int(args.get('ucalreadyuse')) if ucalreadyuse in [601, 602, 603]: coupon_list = CouponUser.query.filter(CouponUser.isdelete == 0, CouponUser.USid == usid, CouponUser.UCalreadyuse == ucalreadyuse)\ .order_by(CouponUser.createtime.desc()).all_with_page() elif ucalreadyuse in [604]: coupon_list = CouponUser.query.filter(CouponUser.isdelete == 0, CouponUser.USid == usid, CouponUser.UCalreadyuse == 602, CouponUser.COstarttime < datetime.datetime.now(), CouponUser.COendtime > datetime.datetime.now())\ .order_by(CouponUser.createtime.desc()).all_with_page() else: coupon_list = [] for coupon in coupon_list: coupon.fill("ucalreadyuse_zh", CouponUserStatus(coupon.UCalreadyuse).zh_value) if coupon.COdownline == 0: coupon.fill("codownline_zh", "无限制") else: coupon.fill("codownline_zh", "满足{0}元即可使用".format(Decimal(str(coupon.COdownline)))) coupon.fill("cotime", "{0}月{1}日-{2}月{3}日".format(coupon.COstarttime.month, coupon.COstarttime.day, coupon.COendtime.month, coupon.COendtime.day)) return Success(message="获取优惠券成功", data=coupon_list)
def get_review(self): """获取评论""" """案例404id/医生id/活动id403/视频id405/评价人名称==>rvtype+rvtypeid/usname/doid""" """当前使用场景用于pc后台和前台业务页面,不涉及用户个人""" args = parameter_required() if is_admin() or is_user(): filter_args = [Review.isdelete == 0] if args.get('rvtype') and args.get('rvtypeid') and args.get('rvtypeid') != 'undefined': filter_args.append(Review.RVtypeid == args.get('rvtypeid')) if args.get('doid'): filter_args.append(Review.DOid == args.get('doid')) if args.get('usname'): filter_args.append(Review.USname.like("%{0}%".format(args.get('usname')))) review_list = Review.query.filter(*filter_args).order_by(Review.createtime.desc()).all_with_page() for review in review_list: if review["DOid"]: doctor = Doctor.query.filter(Doctor.DOid == review["DOid"], Doctor.isdelete == 0).first_("未找到医生信息") review.fill("doname", doctor["DOname"]) rp = ReviewPicture.query.filter(ReviewPicture.RVid == review["RVid"], ReviewPicture.isdelete == 0).all() review.fill("createtime", review["createtime"]) review.fill("rp_list", rp) rvtype = review["RVtype"] review.fill("rvtype_zn", ReviewStatus(rvtype).zh_value) return Success(message="获取评论成功", data=review_list) else: return AuthorityError()
def relatives(self): """亲属详情""" args = parameter_required('arid') arid = args.get('arid') filter_args = [AssistanceRelatives.ARid == arid, ] if is_user(): filter_args.append(AssistanceRelatives.USid == getattr(request, 'user').id) relative = self._exist_assistance_relative(filter_args, '未找到任何信息') relative.fill('artype_zh', FamilyType(relative.ARtype).zh_value) return Success(data=relative)
def list(self): data = parameter_required() usid = getattr(request, 'user').id omstatus = data.get('omstatus') omname = data.get('omname') omtype = data.get('omtype', 0) filter_args = [ OrderMain.isdelete == 0, ] try: omtype = OrderMainType(int(omtype)).value except: raise ParamsError('订单类型有误 {}'.format(omtype)) if is_user(): filter_args.append( OrderMain.OMstatus >= OrderMainStatus.ready.value) filter_args.append(OrderMain.OMtype == omtype) filter_args.append(OrderMain.USid == usid) elif omstatus is not None: try: omstatus = OrderMainStatus(int(str(omstatus))).value except: raise ParamsError('订单状态筛选参数异常') filter_args.append(OrderMain.OMstatus == omstatus) if omname: filter_args.append( or_(OrderMain.CLname.ilike('%{}%'.format(omname)), OrderMain.PRtitle.ilike('%{}%'.format(omname)))) if is_admin(): filter_args.append(OrderMain.OMtype == 0) omlist = OrderMain.query.filter(*filter_args).order_by( OrderMain.createtime.desc()).all_with_page() if is_user(): uh_list = UserHour.query.filter(UserHour.USid == usid, UserHour.isdelete == 0).all() # 可用时长统计 smsum = sum([int(uh.UHnum) for uh in uh_list]) return Success('获取成功', data={'omlist': omlist, 'smsum': smsum}) return Success('获取成功', data={'omlist': omlist})
def get_pointtask(self): """获取任务列表""" args = parameter_required(('token', )) # user = token_to_user_(args.get('token')) usid = getattr(request, 'user').id if is_doctor(): return AuthorityError() else: pointtask_list = PointTask.query.filter(PointTask.isdelete == 0).order_by(PointTask.PTid.asc()).all() if is_user(): # 前台需要增加是否可完成的状态 for pointtask in pointtask_list: userintegral = UserIntegral.query.filter(UserIntegral.isdelete == 0, UserIntegral.UItrue == 0, UserIntegral.UItype == 1, UserIntegral.USid == usid, UserIntegral.UIaction == pointtask.PTtype).all() if userintegral: pointtask.fill("is_get", 1) else: pointtask.fill("is_get", 0) time_now = datetime.datetime.now() pttime = pointtask.PTtime or 0 if pttime > 0: userintegral_end = UserIntegral.query.filter(UserIntegral.isdelete == 0, UserIntegral.UItrue == 1, UserIntegral.UItype == 1, UserIntegral.USid == usid, UserIntegral.UIaction == pointtask.PTtype, UserIntegral.createtime > datetime.datetime(time_now.year, time_now.month, time_now.day, 0, 0, 0), UserIntegral.createtime < datetime.datetime(time_now.year, time_now.month, time_now.day, 23, 59, 59) ).all() if pttime <= len(userintegral_end): pointtask.is_get = 2 elif pttime < 0: pttime = abs(pttime) userintegral_end = UserIntegral.query.filter(UserIntegral.isdelete == 0, UserIntegral.UItrue == 1, UserIntegral.UItype == 1, UserIntegral.USid == usid, UserIntegral.UIaction == pointtask.PTtype ).all() if pttime <= len(userintegral_end): pointtask.is_get = 2 else: pass return Success(message="获取任务列表成功", data=pointtask_list)
def _fill_resgister(self, register): if is_user(): register.hide('USid') restatus = register.REstatus register.fill('restatus_zh', RegisterStatus(restatus).zh_value) if is_user(): register.REcode = register.REcode or '等待排号中' reamorpm = register.REtansferAmOrPm if reamorpm is None: reamorpm = register.REamOrPm register.fill('reamorpm_zh', RegisterAmOrPm(reamorpm).zh_value) register.fill('reamorpm', reamorpm) register.fill('REdate', register.REtansferDate or register.REdate) register.add('createtime') family = Family.query.filter(Family.FAid == register.FAid, Family.isdelete == 0).first() if family: register.fill('FAname', family.FAname) register.fill('FAtel', family.FAtel) register.fill('FAaddress', family.FAaddress) dep = Departments.query.filter(Departments.DEid == register.DEid, Departments.isdelete == 0).first() if dep: register.fill('DEname', dep.DEname)
def get(self): """ 课程详情 """ args = parameter_required(('clid')) classes = Classes.query.filter( Classes.isdelete == 0, Classes.CLid == args.get('clid')).first_("未查到课程信息") if is_user(): doctor_list2 = [] doctor_list = Course.query.with_entities( Course.DOid).distinct().all_with_page() for doctor in doctor_list: doid = doctor.DOid doctor_dict = Doctor.query.filter( Doctor.DOid == doid, Doctor.isdelete == 0).first_("未找到医生信息") doctor = doctor_dict doctor_media = DoctorMedia.query.filter( DoctorMedia.isdelete == 0, DoctorMedia.DMtype == 0, DoctorMedia.DOid == doid).first() doctor.fill("doctormainpic", doctor_media["DMmedia"]) # 医生主图 department = Departments.query.filter(Departments.isdelete == 0, Departments.DEid == doctor["DEid"])\ .first_("未找到科室信息") doctor.fill("dename", department["DEname"]) # 科室名称 review_good = Review.query.filter(Review.isdelete == 0, Review.RVnum >= 4, Review.DOid == doid).all() review = Review.query.filter(Review.isdelete == 0, Review.DOid == doid).all() if len(review) == 0: # 无评论情况下默认100%好评率 review_percentage = Decimal('1') else: review_percentage = Decimal( str(len(review_good) / len(review) or 0)) doctor.fill("favorablerate", "{0}%".format( (review_percentage * 100).quantize(Decimal('0.0')))) # 好评率 register = Register.query.filter(Register.DOid == doid, Register.isdelete == 0).all() doctor.fill("treatnum", len(register)) # 接诊次数 doctor_list2.append(doctor) classes.fill("doctor_list", doctor_list2) return Success(message="获取课程信息成功", data=classes)
def list(self): data = parameter_required() constatus = data.get('constatus', 0) doid = data.get('doid') condate = data.get('condate') filter_args = [ Consultation.isdelete == 0, ] if is_doctor(): doid = getattr(request, 'user').id if doid: filter_args.append(Consultation.DOid == doid) if not constatus and is_user(): filter_args.append( Consultation.CONstatus == ConsultationStatus.ready.value) elif constatus: try: constatus = ConsultationStatus(int(str(constatus))).value except: raise ParamsError('状态筛选参数异常') filter_args.append(Consultation.CONstatus == constatus) if condate: if not isinstance(condate, date): try: condate = datetime.strptime(str(condate), format_forweb_no_HMS).date() except: raise ParamsError('日期筛选 {} 参数错误'.format( data.get('condate'))) filter_args.append( cast(Consultation.CONstartTime, Date) == condate) con_list = Consultation.query.filter(*filter_args).order_by( Consultation.createtime.desc()).all_with_page() for con in con_list: self._fill_doctor_mainpic(con) con_count = db.session.query(func.count(Enroll.ENid)).filter( Enroll.CONid == con.CONid, Enroll.isdelete == 0).scalar() con.fill('conremainder', (int(con.CONlimit) - int(con_count))) return Success('获取成功', data=con_list)
def _query_my_activity(self): if not is_user(): raise TokenError uas = self._ua_filter( [UserActivity.USid == getattr(request, 'user').id]).all_with_page() ac_list = [] for ua in uas: activity = Activity.query.filter(Activity.ACid == ua.ACid).first() if not activity: current_app.logger.error('activity not found: acid:{}'.format( ua.ACid)) continue activity.fields = ['ACid', 'ACname', 'ACbanner'] activity.fill('uastatus', ua.UAstatus) activity.fill('uastatus_zh', UserActivityStatus(ua.UAstatus).zh_value) activity.fill('uaid', ua.UAid) ac_list.append(activity) return Success(data=ac_list)
def get_integral(self): """获取个人积分变动情况""" # 后台可筛选,前台默认用户token args = parameter_required(('token', )) filter_args = [UserIntegral.isdelete == 0] user = token_to_user_(args.get('token')) if is_user(): filter_args.append(UserIntegral.USid == user.id) filter_args.append(UserIntegral.UItrue == 1) else: if not (is_admin() or is_hign_level_admin()): return AuthorityError() if args.get('usid'): filter_args.append(UserIntegral.USid == args.get('usid')) userIntegral = UserIntegral.query.filter(*filter_args).order_by(UserIntegral.createtime.desc()).all_with_page() for user_item in userIntegral: user = User.query.filter(User.USid == user_item.USid).first() user_item.fill('usname', user.USname) user_item.fill('utname', PointTaskType(user_item.UIaction).zh_value) user_item.fill('createtime', user_item.createtime) return Success(message="获取积分变动成功", data=userIntegral)
def get_assistance(self): if is_user(): usid = getattr(request, 'user').id assistance = Assistance.query.filter(Assistance.isdelete == false(), Assistance.USid == usid ).order_by(Assistance.createtime.desc()).first() res = {} if assistance: current_app.logger.info(f'get assistance id: {assistance.ATid}') res['atstatus'] = assistance.ATstatus res['atstatus_zh'] = ApplyStatus(assistance.ATstatus).zh_value res['can_submit'] = False if assistance.ATstatus == ApplyStatus.waiting.value else True return Success(data=res) else: if not is_admin(): raise AuthorityError args = parameter_required('atid') assistance = Assistance.query.filter(Assistance.isdelete == false(), Assistance.ATid == args.get('atid')).first_('未找到申请信息') self._fill_assistance(assistance) # 添加证明图片 dia_pics, pove_pics = [], [] as_pics = AssistancePicture.query.filter(AssistancePicture.isdelete == false(), AssistancePicture.ATid == assistance.ATid ).order_by(AssistancePicture.createtime.asc()).all() [dia_pics.append(pic) if pic.APtype == AssistancePictureType.diagnosis.value else pove_pics.append(pic) for pic in as_pics] assistance.fill('diagnosis', dia_pics) assistance.fill('poverty', pove_pics) # 添加亲属信息 relatives_list = [] for arid in json.loads(assistance.ARids): relative = self._exist_assistance_relative([AssistanceRelatives.ARid == arid, ]) if not relative: current_app.logger.error('arid not found: {}'.format(arid)) continue relative.fill('artype_zh', FamilyType(relative.ARtype).zh_value) relatives_list.append(relative) assistance.fill('relatives', relatives_list) return Success(data=assistance)
def list_activity(self): """首页活动展示 / 我的活动""" args = parameter_required(('page_size', 'page_num')) option = args.get('option') time_now = datetime.now() if option == 'my': return self._query_my_activity() filter_args = [] if is_anonymous() or is_user(): filter_args.extend([ Activity.ACstatus == ActivityStatus.ready.value, Activity.ACstartTime > time_now ]) ac_list = Activity.query.filter( Activity.isdelete == false(), *filter_args).order_by( Activity.ACstatus.asc(), Activity.ACstartTime.desc()).all_with_page() for ac in ac_list: ac.fields = ['ACid', 'ACname', 'ACbanner'] ac.fill('acstatus_zh', ActivityStatus(ac.ACstatus).zh_value) if filter_args: remain = ac.ACstartTime - time_now remain_day = remain.days remain_str = f'{remain.seconds // 3600}小时' if ( remain.seconds // 3600) else f'{(remain.seconds % 3600) // 60}分钟' if ( (remain.seconds % 3600) // 60) else f'{remain.seconds}秒' ac.fill('remain_time', f'{remain_day}天' if remain_day else remain_str) if is_admin(): ac.fill( 'signed_number', f'{self._ua_filter([UserActivity.ACid == ac.ACid, ]).count()} / {ac.ACnumber}' ) return Success(data=ac_list)
def sign_up(self): """用户报名""" if not is_user(): raise TokenError data = parameter_required('acid') usid = getattr(request, 'user').id user = User.query.filter(User.isdelete == false(), User.USid == usid).first_('请重新登录') if not user.UStelphone: raise StatusError("请先在 '我的 - 我的家人' 中完善本人信息") activity = Activity.query.filter( Activity.isdelete == false(), Activity.ACstatus == ActivityStatus.ready.value, Activity.ACstartTime >= datetime.now(), Activity.ACid == data.get('acid')).first_('活动已结束或不存在') if self._ua_filter( [UserActivity.USid == usid, UserActivity.ACid == activity.ACid]).first(): raise StatusError('您已报名过该活动') if self._query_activity_remain_people(activity) <= 0: raise StatusError('该活动报名人数已满,请期待下次活动') with db.auto_commit(): ua = UserActivity.create({ 'UAid': str(uuid.uuid1()), 'USid': usid, 'ACid': activity.ACid, 'UAstatus': UserActivityStatus.ready.value }) db.session.add(ua) # 活动报名 积分任务 from .CConfig import CConfig from ..config.enums import PointTaskType CConfig()._judge_point(PointTaskType.make_activity.value, 1, user.USid) return Success('报名成功', data={'uaid': ua.UAid})
def make_evaluation(self): """提交评测""" data = parameter_required(('evid', 'ei_list')) # user = getattr(request, 'user') if not is_user(): raise AuthorityError('权限不足') usid = getattr(request, 'user').id evid = data.get('evid') anid = str(uuid.uuid1()) with db.auto_commit(): point = Decimal(0.0) evaluationitem_all = EvaluationItem.query.filter( EvaluationItem.isdelete == 0, EvaluationItem.EVid == evid).all() if len(evaluationitem_all) != len(data.get('ei_list')): return EvaluationNumError() for ei in data.get('ei_list'): eiid = ei["eiid"] eaid = ei["eaid"] evaluationitem = EvaluationItem.query.filter(EvaluationItem.EIid == eiid, EvaluationItem.isdelete == 0) \ .first_("未找到该题目") evaluationanswer = EvaluationAnswer.query.filter(EvaluationAnswer.EAid == eaid, EvaluationAnswer.isdelete == 0) \ .first_("未找到该选项") ai_dict = { "AIid": str(uuid.uuid1()), "EIname": evaluationitem["EIname"], "EAindex": evaluationanswer["EAindex"], "EApoint": evaluationanswer["EApoint"], "EAname": evaluationanswer["EAname"], "USid": usid, "ANid": anid } point = Decimal(str(evaluationanswer["EApoint"] or 0)) + Decimal(str(point or 0)) ai_instance = AnswerItem.create(ai_dict) db.session.add(ai_instance) evaluation = Evaluation.query.filter( Evaluation.isdelete == 0, Evaluation.EVid == evid).first_("未找到该评测") # 总积分逻辑改为平均分 # point = Decimal(str(point / len(evaluationitem_all))) current_app.logger.info(point) evaluationpoint = EvaluationPoint.query.filter(EvaluationPoint.EPstart <= point, EvaluationPoint.EVid == evid, EvaluationPoint.EPend >= point, EvaluationPoint.isdelete == 0) \ .first_("未找到评测结论") answer = evaluationpoint["EPanswer"] an_dict = { "ANid": anid, "USid": usid, "EVid": evid, "EVname": evaluation["EVname"], "EVpoint": point, "EPanswer": answer } an_instance = Answer.create(an_dict) share_url = Share(usid, point, an_instance).drawshare() an_instance.EVshare = share_url db.session.add(an_instance) # todo 创建分享图 from .CConfig import CConfig from ..config.enums import PointTaskType CConfig()._judge_point(PointTaskType.make_evaluation.value, 1, usid) return Success(message="提交评测成功", data={ "answer": answer, 'share': HTTP_HOST + share_url })
def get_subscribe_list(self): """ 分页获取预约列表 """ filter_args = [Subscribe.isdelete == 0] args = request.args.to_dict() user_id = getattr(request, 'user').id if is_user(): filter_args.append(Subscribe.USid == user_id) elif is_doctor(): filter_args.append(Subscribe.DOid == user_id) else: pass if args.get('sustatus'): filter_args.append(Subscribe.SUstatus == int(args.get('sustatus'))) if args.get('usname'): filter_args.append( Subscribe.USname.like("%{0}%".format(args.get('usname')))) if args.get('clname'): filter_args.append( Subscribe.CLname.like("%{0}%".format(args.get('clname')))) if args.get('doname'): filter_args.append( Subscribe.DOname.like("%{0}%".format(args.get('doname')))) if args.get('codate'): filter_args.append( Subscribe.COstarttime.date() == datetime.datetime.strptime( args.get('codate'), "%Y-%m-%d").date()) subcribe_list = Subscribe.query.filter(*filter_args).order_by( Subscribe.createtime).all_with_page() for subcribe in subcribe_list: subcribe.fill("sustatus_zh", SubscribeStatus(int(subcribe["SUstatus"])).zh_value) doid = subcribe["DOid"] doctor = Doctor.query.filter( Doctor.DOid == doid).first_("未找到该医生信息") subcribe.fill('dotitle', doctor.DOtitle) docmedia = DoctorMedia.query.filter( DoctorMedia.DOid == doid, DoctorMedia.DMtype == 0, DoctorMedia.isdelete == 0).first() subcribe.fill('doctormainpic', docmedia.DMmedia) coid = subcribe["COid"] course = Course.query.filter( Course.COid == coid, Course.isdelete == 0).first_("未找到课程排班信息") clid = course["CLid"] classes = Classes.query.filter( Classes.CLid == clid, Classes.isdelete == 0).first_("未找到课程信息") subcribe.fill("dename", classes["DEname"]) subcribe.fill("createtime", subcribe["createtime"]) subcribe.fill("coendtime", course["COendtime"]) if subcribe["COstarttime"].hour < 12: subcribe.fill( "date", "{0}.{1}.{2}".format(subcribe["COstarttime"].year, subcribe["COstarttime"].month, subcribe["COstarttime"].day)) subcribe.fill( "time", "{0} {1}:{2}-{3}:{4}".format( "上午", subcribe["COstarttime"].hour, subcribe["COstarttime"].minute, subcribe["coendtime"].hour, subcribe["coendtime"].minute)) else: subcribe.fill( "date", "{0}.{1}.{2}".format(subcribe["COstarttime"].year, subcribe["COstarttime"].month, subcribe["COstarttime"].day)) subcribe.fill( "time", "{0} {1}:{2}-{3}:{4}".format( "下午", subcribe["COstarttime"].hour - 12, subcribe["COstarttime"].minute, subcribe["coendtime"].hour - 12, subcribe["coendtime"].minute)) return Success(message="获取预约列表成功", data=subcribe_list)
def set_review(self): """ 创建评论 """ if not is_user(): return AuthorityError() data = parameter_required(("rvcontent", "rvtype", "rvtypeid", "rvnum")) usid = request.user.id rvtype = int(data.get('rvtype')) rvtypeid = data.get('rvtypeid') if rvtype == 401: """课程""" subscribe = Subscribe.query.filter(Subscribe.SUid == rvtypeid).first_("未找到预约信息") classes = Course.query.filter(Course.COid == subscribe.COid).first_("未找到该课程排班") doid = classes["DOid"] elif rvtype == 402: """挂诊""" register = Register.query.filter(Register.REid == rvtypeid).first_("未找到该挂诊信息") doid = register["DOid"] elif rvtype == 403: """活动""" doid = None elif rvtype == 404: """案例""" doid = None elif rvtype == 405: """视频""" video = Video.query.filter(Video.VIid == rvtypeid).first_("未找到该视频信息") doid = video["DOid"] else: return StatusError("评论种类异常") rvid = str(uuid.uuid1()) user_dict = User.query.filter(User.USid == usid).first_("未找到该用户") if (rvtype == 401 or rvtype == 402) and Review.query.filter( Review.isdelete == 0, Review.USid == usid, Review.RVtype == rvtype, Review.RVtypeid == data.get('rvtypeid')).first(): raise StatusError('您已进行过评价') rv_dict = { "USid": usid, "USname": user_dict["USname"], "USavatar": user_dict["USavatar"], "RVcontent": data.get('rvcontent'), "DOid": doid, "RVtype": rvtype, "RVtypeid": data.get('rvtypeid'), "RVnum": Decimal(str(data.get('rvnum') or 0)) } if data.get('rppicture_list'): rppicture_list = data.get('rppicture_list') else: rppicture_list = [] with db.auto_commit(): if rvtype == 401: subscribe_instance = Subscribe.query.filter(Subscribe.SUid == rvtypeid).first_("未找到预约信息") subscribe_instance.update({ "SUstatus": 203 }) db.session.add(subscribe_instance) elif rvtype == 402: register_instance = Register.query.filter(Register.REid == rvtypeid).first_("未找到该挂诊信息") register_instance.update({ "REstatus": 4 }) db.session.add(register_instance) elif rvtype == 403: # 更改用户活动状态为已评价 rv_dict["RVtypeid"] = self._change_user_activity_comment_status(rvtypeid, usid) else: pass for repicture in rppicture_list: rp_dict = { "RPid": str(uuid.uuid1()), "RVid": rvid, "RPpicture": repicture["rppicture"] } rv_instance = ReviewPicture.create(rp_dict) db.session.add(rv_instance) rv_dict["RVid"] = rvid rv_instance = Review.create(rv_dict) db.session.add(rv_instance) from .CConfig import CConfig from ..config.enums import PointTaskType CConfig()._judge_point(PointTaskType.review.value, 1, usid) return Success("评论成功")