예제 #1
0
 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)
예제 #2
0
    def add_or_update_series(self):
        data = parameter_required()
        seid = data.get('seid')
        doid = getattr(request, 'user').id
        with db.auto_commit():
            if seid:
                series = Series.query.filter(
                    Series.SEid == seid, Series.isdelete == 0).first()
                current_app.logger.info('get series {} '.format(series))
                # 优先判断删除
                if data.get('delete'):
                    if not series:
                        raise ParamsError('剧集已删除')
                    current_app.logger.info('删除科室 {}'.format(doid))
                    series.isdelete = 1
                    db.session.add(series)
                    return Success('删除成功', data=seid)

                # 执行update
                if series:
                    update_dict = series.get_update_dict(data)
                    if update_dict.get('SEid'):
                        update_dict.pop('SEid')
                    if update_dict.get('DOid'):
                        update_dict.pop('DOid')
                    if update_dict.get('SEsort', 0):
                        try:
                            int(update_dict.get('SEsort'))
                        except:
                            raise ParamsError('排序请输入整数')

                    series.update(update_dict)
                    current_app.logger.info('更新系列 {}'.format(seid))
                    db.session.add(series)
                    return Success('更新成功', data=seid)
            # 添加
            data = parameter_required({'sename': '剧集名', })

            seid = str(uuid.uuid1())

            if data.get('sesort', 0):
                try:
                    int(data.get('sesort', 0))
                except:
                    raise ParamsError('排序请输入整数')
            doctor = Series.create({
                'DOid': doid,
                'SEid': seid,
                'SEname': data.get('sename'),
                'SEsort': data.get('sesort', 0),
            })
            current_app.logger.info('创建剧集 {}'.format(data.get('sename')))
            db.session.add(doctor)
        return Success('创建剧集成功', data=doid)
예제 #3
0
    def set_register(self):
        data = parameter_required('reid')
        with db.auto_commit():
            reid, recode, doid = data.get('reid'), data.get('recode'), data.get('doid')
            register = Register.query.filter(Register.REid == reid,
                                             Register.REstatus <= RegisterStatus.transfer.value,
                                             Register.isdelete == 0).first_('预约已操作完成')
            update_dict = {}
            # 优先判断是否填写预约号
            if recode:
                # 添加预约号
                retansferdate, retansferamorpm = data.get('retansferdate') or data.get('redate'), \
                                                 data.get('retansferamorpm') or data.get('reamorpm')

                update_dict.setdefault('REcode', str(recode))
                retansferdate = self._check_time(retansferdate)
                try:
                    retansferamorpm = RegisterAmOrPm(int(str(retansferamorpm))).value
                except:
                    retansferamorpm = 0
                current_app.logger.info('get redate = {} and reamorpm = {}'.format(retansferdate, retansferamorpm))
                if retansferdate and retansferamorpm is not None:

                    update_dict.setdefault('REtansferDate', retansferdate)
                    update_dict.setdefault('REtansferAmOrPm', retansferamorpm)
                    update_dict.setdefault('REstatus', RegisterStatus.transfer.value)

                else:
                    update_dict.setdefault('REstatus', RegisterStatus.pending.value)

                register.update(update_dict)
                db.session.add(register)
                return Success('预约号填写成功')
            if not doid:
                return Success('未填写内容')
            doctor = Doctor.query.filter(Doctor.DOid == doid, Doctor.isdelete == 0).first_('医生不存在')
            dmmain = DoctorMedia.query.filter(
                DoctorMedia.DOid == doctor.DOid,
                DoctorMedia.DMtype == DoctorMetiaType.mainpic.value,
                DoctorMedia.isdelete == 0).first()
            if dmmain:
                update_dict.setdefault('DOmedia', dmmain['DMmedia'])

            update_dict.setdefault('DOid', doctor.DOid)
            update_dict.setdefault('DOtel', doctor.DOtel)
            update_dict.setdefault('DOtitle', doctor.DOtitle)
            update_dict.setdefault('DOname', doctor.DOname)
            update_dict.setdefault('REstatus', RegisterStatus.commenting.value)
            register.update(update_dict)
            db.session.add(register)
            return Success('设置主治医生成功')
예제 #4
0
파일: COrder.py 프로젝트: zhangyuz/hospital
    def send(self):
        data = parameter_required('omids')
        omids = data.get('omids')
        if not omids or not isinstance(omids, list):
            return Success('发货成功')
        with db.auto_commit():
            omlen = OrderMain.query.filter(
                OrderMain.OMid.in_(omids), OrderMain.isdelete == 0,
                OrderMain.OMstatus == OrderMainStatus.ready.value).update(
                    {'OMstatus': OrderMainStatus.send.value},
                    synchronize_session=False)
            current_app.logger.info('发货订单 {} 条, 修改成功 {} 条'.format(
                len(omids), omlen))

        return Success('发货成功')
예제 #5
0
    def get_video(self):
        data = parameter_required('viid')
        viid = data.get('viid')
        usid = getattr(request, 'user').id
        video = Video.query.filter(Video.VIid == viid, Video.isdelete == 0).first_('视频已删除')
        # 添加 评论
        reviews = Review.query.filter(
            Review.RVtype == 405, Review.RVtypeid == video.VIid, Review.isdelete == 0).order_by(
            Review.createtime.desc()).all()
        for review in reviews:
            review.add('createtime')
        reviesw_count = len(reviews)

        video.fill('reviesw_count', reviesw_count)
        video.fill('reviews', reviews)
        doctor = Doctor.query.filter(Doctor.DOid == video.DOid, Doctor.isdelete == 0).first()
        if doctor:
            video.fill('doname', doctor.DOname)
            video.fill('dotitle', doctor.DOtitle)
            video.fill('dotel', doctor.DOtel)

        if video.SEid:
            se_video_list = Video.query.filter(Video.SEid == video.SEid, Video.isdelete == 0).order_by(
                Video.VIsort.asc(), Video.createtime.desc()).all()
            sename_list = [{'viid': se_video.VIid, 'viname': '第{}期:{}'.format(i + 1, se_video.VIname)}
                           for i, se_video in enumerate(se_video_list)]
            video.fill('senamelist', sename_list)
            series = Series.query.filter(Series.SEid == video.SEid, Series.isdelete == 0).first()
            if series:
                video.fill('sename', series.SEname)
        # 添加积分获取
        from .CConfig import CConfig
        CConfig()._judge_point(PointTaskType.watch_video.value, 1, usid)

        return Success('获取成功', data=video)
예제 #6
0
 def get_course_by_doctor_month(self):
     """
     基于医生id获取未来30天课程情况
     """
     args = parameter_required(('doid', 'clid'))
     filter_args = [
         Course.isdelete == 0, Course.DOid == args.get('doid'),
         Course.CLid == args.get('clid')
     ]
     year = int(datetime.datetime.now().year)
     month = int(datetime.datetime.now().month)
     day = int(datetime.datetime.now().day)
     start_time = datetime.datetime(year, month, day, 0, 0, 0)
     end_time = datetime.datetime(year, month, day, 23, 59,
                                  59) + datetime.timedelta(days=30)
     filter_args.append(Course.COstarttime > start_time)
     filter_args.append(Course.COendtime < end_time)
     course_list = Course.query.filter(*filter_args).all()
     time_dict = []
     for course in course_list:
         costarttime = course["COstarttime"]
         if "{0}-{1}-{2}".format(year, month,
                                 costarttime.day) not in time_dict:
             time_dict.append("{0}-{1}-{2}".format(year, month,
                                                   costarttime.day))
     return Success(message="获取日期成功", data=time_dict)
예제 #7
0
 def get_course(self):
     """
     获取课程排班列表
     """
     filter_args = [Course.isdelete == 0]
     if request.args.get('doid') or is_doctor():
         if request.args.get('doid'):
             filter_args.append(Course.DOid == request.args.get('doid'))
         else:
             filter_args.append(Course.DOid == token_to_user_(
                 request.args.get('token')).id)
     if request.args.get('clname'):
         filter_args.append(Course.CLname == request.args.get('clname'))
     if request.args.get('costatus'):
         filter_args.append(
             Course.COstatus == int(request.args.get('costatus')))
     if request.args.get('costarttime'):
         filter_args.append(Course.COstarttime > datetime.datetime.strptime(
             request.args.get('costarttime'), "%Y-%m-%d %H:%M:%S"))
     if request.args.get('coendtime'):
         filter_args.append(Course.COendtime < datetime.datetime.strptime(
             request.args.get('coendtime'), "%Y-%m-%d %H:%M:%S"))
     course_list = Course.query.filter(*filter_args).order_by(
         Course.createtime.desc()).all_with_page()
     for course in course_list:
         course.fill("costatus_zh",
                     CourseStatus(int(course["COstatus"])).zh_value)
     return Success(message='获取课程排班列表成功', data=course_list)
예제 #8
0
    def delete_course(self):
        """
        删除课程排班
        """
        if not is_doctor():
            return AuthorityError("无权限")

        with db.auto_commit():
            for course in request.json:
                course_id = course["coid"]
                co_dict = {"isdelete": 1}
                co_instance = Course.query.filter(
                    Course.COid == course_id).first_('未找到该课程排班信息')
                if co_instance["COstatus"] != 101:
                    return AuthorityError("无权限")
                subscribe = Subscribe.query.filter(
                    Subscribe.COid == course_id).all()
                if subscribe:
                    return AuthorityError("已有人报名,不可修改")
                co_instance.update(co_dict, null='not')
                db.session.add(co_instance)

                cancel_async_task(conn_id='start_course{}'.format(
                    co_instance.COid))  # 取消已有的开始时间异步任务
                cancel_async_task(conn_id='end_course{}'.format(
                    co_instance.COid))  # 取消已有的结束时间异步任务

        return Success(message='删除成功')
예제 #9
0
 def set_evaluationanswer(self):
     """设置题目选项"""
     data = parameter_required((
         'eiid', 'eaname', 'eaindex',
         'eapoint') if not request.json.get('delete') else ('eaid', ))
     if not is_admin():
         return AuthorityError()
     ea_dict = {
         "EIid": data.get('eiid'),
         "EAname": data.get('eaname'),
         "EAindex": data.get('eaindex'),
         "EApoint": Decimal(str(data.get('eapoint') or 0))
     }
     eaid = data.get("eaid")
     with db.auto_commit():
         if not eaid:
             # 新增
             ea_dict["EAid"] = str(uuid.uuid1())
             ea_instance = EvaluationAnswer.create(ea_dict)
             msg = "新增成功"
         else:
             ea_instance = EvaluationAnswer.query.filter(
                 EvaluationAnswer.EAid == eaid).first_("未找到该选项")
             if data.get("delete"):
                 ea_instance.update({"isdelete": 1})
                 msg = "删除成功"
             else:
                 ea_instance.update(ea_dict)
                 msg = "修改成功"
         db.session.add(ea_instance)
     return Success(message=msg)
예제 #10
0
 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)
예제 #11
0
    def approve(self):
        """管理员审批"""
        data = request.json
        atids = data.get('atids')
        if not isinstance(atids, list):
            raise ParamsError('atids 格式错误, 应为["id1","id2"]')
        if not all(atids):
            raise ParamsError('null type in atids')

        action = data.get('action')
        try:
            action = int(action)
            ApproveAction(action)
        except ValueError:
            raise ParamsError('参数错误:action')
        atstatus = ApplyStatus.passed.value if ApproveAction.agree.value == action else ApplyStatus.reject.value
        instance_list = []
        with db.auto_commit():
            for atid in atids:
                assistance = self._exist_assistance([Assistance.ATid == atid, ])
                if not assistance:
                    current_app.logger.error('atid: {} not found'.format(atid))
                    continue
                assistance.update({'ATstatus': atstatus,
                                   'Reviewer': getattr(request, 'user').id, })
                instance_list.append(assistance)
            db.session.add_all(instance_list)
        return Success('成功')
예제 #12
0
 def set_evaluation(self):
     """设置问卷主体"""
     data = parameter_required((
         'evname',
         'evpicture',
     ) if not request.json.get('delete') else ('evid', ))
     if not is_admin():
         return AuthorityError()
     ev_dict = {
         "EVname": data.get('evname'),
         "EVpicture": data.get('evpicture')
     }
     evid = data.get("evid")
     with db.auto_commit():
         if not evid:
             # 新增
             ev_dict["EVid"] = str(uuid.uuid1())
             ev_instance = Evaluation.create(ev_dict)
             msg = "新增成功"
         else:
             ev_instance = Evaluation.query.filter(
                 Evaluation.EVid == evid).first_("未找到该问卷")
             if data.get("delete"):
                 ev_instance.update({"isdelete": 1})
                 msg = "删除成功"
             else:
                 ev_instance.update(ev_dict)
                 msg = "修改成功"
         db.session.add(ev_instance)
     return Success(message=msg)
예제 #13
0
    def delete_admin(self):
        """冻结管理员"""
        data = parameter_required(('adid', 'adtype'))

        token = token_to_user_(request.args.get("token"))
        # 权限判断
        ad = Admin.query.filter(Admin.isdelete == 0, Admin.ADid == token.id).first()
        adid = ad.ADid
        if adid != "1":
            raise AuthorityError("无权限")
        else:
            with db.auto_commit():
                ad_dict = {
                    "isdelete": 1
                }
                if data['adtype'] == 1:
                    ad_instance = Admin.query.filter(Admin.ADid == data.get("adid"), Admin.isdelete == 0)\
                        .first_('未找到该账号信息')
                    ad_instance.update(ad_dict, null='not')
                elif data['adtype'] == 2:
                    ad_instance = Doctor.query.filter(Doctor.DOid == data.get('adid'), Doctor.isdelete == 0)\
                        .first_('未找到该账号信息')
                    ad_instance.update(ad_dict, null='not')
            db.session.add(ad_instance)
            msg = "删除账号成功"
        return Success(message=msg)
예제 #14
0
 def set_honour(self):
     """创建/更新/删除团队荣誉"""
     data = parameter_required(('hopicture', 'hotext') if not request.json.get('delete') else('hoid',))
     hoid = data.get('hoid')
     ho_dict = {
         'HOpicture': data.get('hopicture'),
         'HOtext': data.get('hotext')
     }
     with db.auto_commit():
         if not hoid:
             """新增"""
             ho_dict['HOid'] = str(uuid.uuid1())
             ho_instance = Honour.create(ho_dict)
             msg = '添加成功'
         else:
             """修改/删除"""
             ho_instance = Honour.query.filter_by_(HOid=hoid).first_('未找到该特色科室信息')
             if data.get('delete'):
                 ho_instance.update({'isdelete': 1})
                 msg = '删除成功'
             else:
                 ho_instance.update(ho_dict, null='not')
                 msg = '编辑成功'
         db.session.add(ho_instance)
     return Success(message=msg, data={'hoid': ho_instance.HOid})
예제 #15
0
 def set_banner(self):
     """banner创建/编辑/删除"""
     data = parameter_required(('bnpicture', "bnsort",) if not request.json.get('delete') else('bnid', ))
     bnid = data.get('bnid')
     bn_dict = {'BNpicture': data.get('bnpicture'),
                 'BNsort': data.get('bnsort'),
                 'contentlink': data.get('contentlink')}
     with db.auto_commit():
         if not bnid:
             """新增"""
             bn_dict['BNid'] = str(uuid.uuid1())
             bn_dict['ADid'] = getattr(request, 'user').id
             bn_instance = Banner.create(bn_dict)
             msg = '添加成功'
         else:
             """修改/删除"""
             bn_instance = Banner.query.filter_by_(BNid=bnid).first_('未找到该轮播图信息')
             if data.get('delete'):
                 bn_instance.update({'isdelete': 1})
                 msg = '删除成功'
             else:
                 bn_instance.update(bn_dict, null='not')
                 msg = '编辑成功'
         db.session.add(bn_instance)
     return Success(message=msg, data={'bnid': bn_instance.BNid})
예제 #16
0
    def set_about_us(self):
        """更新除了团队荣誉和特色科室以外个人中心部分"""
        data = parameter_required(('min_pic', "name", "address", "route", "telphone", "synopsls", "environment", "official_website",))
        setting_dict = {
            "min_pic": data.get("min_pic"),
            "name": data.get("name"),
            "address": data.get("address"),
            "route": data.get("route"),
            "telphone": data.get("telphone"),
            "synopsls": data.get("synopsls"),
            "environment": data.get("environment"),
            "official_website": data.get("official_website"),
        }

        for row in setting_dict.keys():
            with db.auto_commit():
                setting_id = Setting.query.filter(Setting.isdelete == 0, Setting.STname == row).first()
                setting_dict = {
                    "STname": row,
                    "STvalue": data[row],
                    "STtype": 2
                }
                if not setting_id:
                    setting_dict["STid"] = str(uuid.uuid1())
                    setting_instance = Setting.create(setting_dict)
                    msg = "成功创建"
                else:
                    setting_instance = Setting.query.filter_by_(STid=setting_id.STid).first_('未找到该变量')
                    setting_instance.update(setting_dict, null='not')
                    msg = "成功更新"
                db.session.add(setting_instance)
        return Success(message=msg)
예제 #17
0
    def set_characteristic_team(self):
        """创建/更新/删除特色科室"""
        data = parameter_required(('ctpicture', 'ctname', 'ctposition', 'ctoffice')
                                  if not request.json.get('delete') else('ctid', ))
        ctid = data.get('ctid')
        ct_dict = {
            'CTpicture': data.get('ctpicture'),
            'CTname': data.get('ctname'),
            'CTposition': data.get('ctposition'),
            'CToffice': data.get('ctoffice')
        }
        with db.auto_commit():
            if not ctid:
                """新增"""
                ct_dict['CTid'] = str(uuid.uuid1())
                ct_instance = Characteristicteam.create(ct_dict)
                msg = '添加成功'
            else:
                """修改/删除"""
                ct_instance = Characteristicteam.query.filter_by_(CTid=ctid).first_('未找到该特色科室信息')
                if data.get('delete'):
                    ct_instance.update({'isdelete': 1})
                    msg = '删除成功'
                else:
                    ct_instance.update(ct_dict, null='not')
                    msg = '编辑成功'
            db.session.add(ct_instance)

        return Success(message=msg, data={'ctid': ct_instance.CTid})
예제 #18
0
 def add_enroll(self):
     data = parameter_required('conid')
     usid = getattr(request, 'user').id
     user = User.query.filter(User.USid == usid,
                              User.isdelete == 0).first_('用户不存在')
     if not user.UStelphone:
         raise StatusError("请先在 '我的 - 我的家人' 中完善本人信息")
     conid = data.get('conid')
     con = Consultation.query.filter(
         Consultation.CONid == conid,
         Consultation.isdelete == 0).first_('会诊已结束')
     con_count = db.session.query(func.count(Enroll.ENid)).filter(
         Enroll.CONid == conid, Enroll.isdelete == 0).scalar()
     if con_count >= int(con.CONlimit):
         raise StatusError('名额已满')
     enroll_user = Enroll.query.filter(Enroll.USid == usid,
                                       Enroll.CONid == conid).first()
     if enroll_user:
         raise StatusError('已经报名成功')
     with db.auto_commit():
         enroll = Enroll.create({
             'ENid': str(uuid.uuid1()),
             'CONid': con.CONid,
             'USid': user.USid,
             'USname': user.USname,
             'UStelphone': user.UStelphone
         })
         db.session.add(enroll)
     return Success('报名成功')
예제 #19
0
    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()
예제 #20
0
    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)
예제 #21
0
    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)
예제 #22
0
    def get(self):
        data = parameter_required('doid')
        doid = data.get('doid')
        conid = data.get('conid')
        doctor = Doctor.query.filter(Doctor.DOid == doid,
                                     Doctor.isdelete == 0).first()
        if not doctor:
            raise ParamsError('医生已离开')

        doctor.fields = [
            'DEid', 'DOname', 'DOid', 'DOtitle', 'DOtel', 'DOdetails',
            'DOwxid', 'DOskilledIn', 'createtime', 'DOsort'
        ]
        self._fill_department(doctor)
        self._fill_doctor_mainpic(doctor)
        self._fill_doctor_listpic(doctor)
        self._fill_doctor_qrpic(doctor)
        if conid:
            # 填充会诊信息
            self._fill_consultation(doctor, conid)

        # doctor.fill('favorablerate', '100%')
        # doctor.fill('treatnum', '0')
        self._fill_doctor_review(doctor)
        return Success('获取成功', data=doctor)
예제 #23
0
 def set_evaluationitem(self):
     """设置问卷题目"""
     data = parameter_required((
         'evid',
         'einame',
         'eiindex',
     ) if not request.json.get('delete') else ('eiid', ))
     if not (is_hign_level_admin() or is_admin()):
         return AuthorityError()
     ei_dict = {
         "EVid": data.get('evid'),
         "EIname": data.get('einame'),
         "EIindex": data.get('eiindex')
     }
     eiid = data.get("eiid")
     with db.auto_commit():
         if not eiid:
             # 新增
             ei_dict["EIid"] = str(uuid.uuid1())
             ei_instance = EvaluationItem.create(ei_dict)
             msg = "新增成功"
         else:
             ei_instance = EvaluationItem.query.filter(
                 EvaluationItem.EIid == eiid).first_("未找到该题目")
             if data.get("delete"):
                 ei_instance.update({"isdelete": 1})
                 msg = "删除成功"
             else:
                 ei_instance.update(ei_dict)
                 msg = "修改成功"
         db.session.add(ei_instance)
     return Success(message=msg)
예제 #24
0
 def reset_password(self):
     """重置管理员密码"""
     data = parameter_required(('adid', 'adtype'))
     token = token_to_user_(request.args.get('token'))
     # 判断权限
     ad = Admin.query.filter(Admin.isdelete == 0, Admin.ADid == token.id).first()
     adid = ad.ADid
     if adid != "1":
         raise AuthorityError("无权限")
     else:
         with db.auto_commit():
             if data['adtype'] == 1:
                 ad_dict = {
                     'ADpassword': generate_password_hash('123456')
                 }
                 ad_instance = Admin.query.filter(Admin.ADid == data.get("adid"), Admin.isdelete == 0)\
                     .first_('未找到该账号信息')
                 ad_instance.update(ad_dict, null='not')
             elif data['adtype'] == 2:
                 ad_instance = Doctor.query.filter(Doctor.DOid == data.get('adid'), Doctor.isdelete == 0)\
                     .first_('未找到该账号信息')
                 ad_dict = {
                     'DOpassword': generate_password_hash(str(ad_instance.DOtel)[-6:])
                 }
                 ad_instance.update(ad_dict, null='not')
         db.session.add(ad_instance)
         msg = "重置密码成功"
     return Success(message=msg)
예제 #25
0
 def get(self):
     """获取优惠券详情(后台)"""
     args = parameter_required(('token', 'coid', ))
     if not is_admin():
         return AuthorityError('无权限')
     coupon = Coupon.query.filter(Coupon.isdelete == 0, Coupon.COid == args.get('coid')).first_("未找到该优惠券")
     coupon.fill("costatus_zh", CouponStatus(coupon.COstatus).zh_value)
     return Success(message="获取优惠券信息成功", data=coupon)
예제 #26
0
 def get_series(self):
     data = parameter_required('seid')
     seid = data.get('seid')
     series = Series.query.filter(Series.SEid == seid, Series.isdelete == 0).first_('剧集已删除')
     video_list = Video.query.filter(Video.SEid == series.SEid, Video.isdelete == 0).order_by(
         Video.VIsort.asc(), Video.createtime.desc()).all()
     series.fill('videos', video_list)
     return Success("获取成功", data=series)
예제 #27
0
    def get_sympotom(self):
        data = parameter_required('syid')
        syid = data.get('syid')
        sy = Symptom.query.filter(
            Symptom.SYid == syid, Symptom.isdelete == 0).order_by(
                Symptom.SYsort.asc(),
                Symptom.createtime.desc()).first_('症状案例已下架')

        return Success('症状列表获取成功', data=sy)
예제 #28
0
 def list_enroll(self):
     data = parameter_required('conid')
     conid = data.get('conid')
     # conid 校验
     Consultation.query.filter(Consultation.CONid == conid,
                               Consultation.isdelete == 0).first_("会诊不存在")
     enroll_list = Enroll.query.filter(
         Enroll.CONid == conid, Enroll.isdelete == 0).all_with_page()
     return Success('获取成功', data=enroll_list)
예제 #29
0
    def list_sympotom(self):
        data = parameter_required('deid')
        deid = data.get('deid')
        sy_list = Symptom.query.filter(
            Symptom.DEid == deid, Symptom.isdelete == 0).order_by(
                Symptom.SYsort.asc(),
                Symptom.createtime.desc()).all_with_page()

        return Success('症状列表获取成功', data=sy_list)
예제 #30
0
    def admin_login(self):
        """管理员登录"""
        data = parameter_required(('adname', 'adpassword', 'adtype'))
        if data['adtype'] == 1:
            # 管理员/超级管理员登录
            ad = Admin.query.filter(Admin.isdelete == 0,
                                    Admin.ADname == data.get("adname")).first()

            # 密码验证
            if ad and check_password_hash(ad.ADpassword, data.get("adpassword")):
                token = usid_to_token(ad.ADid, 'Admin', ad.ADlevel, username=ad.ADname)
                ad.fields = ['ADname', 'ADheader', 'ADlevel']

                ad.fill('adlevel', AdminLevel(ad.ADlevel).zh_value)
                ad.fill('adstatus', AdminStatus(ad.ADstatus).zh_value)
                with db.auto_commit():
                    an_instance = AdminActions.create({
                        'AAid': str(uuid.uuid1()),
                        'ADid': ad.ADid,
                        "AAaction": 4,
                        "AAmodel": "Admin",
                        'AAdetail': str(data)
                    })

                    db.session.add(an_instance)
                return Success('登录成功', data={'token': token, "admin": ad})
        elif data['adtype'] == 2:
            # 医生登录
            dc = Doctor.query.filter(Doctor.isdelete == 0, Doctor.DOtel == data.get('adname')).first()
            if dc and check_password_hash(dc.DOpassword, data.get('adpassword')):
                token = usid_to_token(dc.DOid, 'Doctor', 3, username=dc.DOname)
                with db.auto_commit():
                    an_instance = AdminActions.create({
                        'AAid': str(uuid.uuid1()),
                        'ADid': dc.DOid,
                        "AAaction": 4,
                        "AAmodel": "Doctor",
                        'AAdetail': str(data)
                    })

                    db.session.add(an_instance)
                return Success('登录成功', data={'token': token, 'admin': dc})

        return ParamsError("用户名或密码错误")