Пример #1
0
    def set_linkcontent(self):
        body = request.json
        admin = Admin.query.filter(Admin.isdelete == false(),
                                   Admin.ADid == getattr(request,
                                                         'user').id).first()
        current_app.logger.info('当前管理员是 {}'.format(admin.ADname))
        lcid = body.get('lcid')
        lccontent = body.get('lccontent')
        with db.auto_commit():
            if lcid:
                lc = LinkContent.query.filter(
                    LinkContent.LCid == lcid,
                    LinkContent.isdelete == False).first()
                if body.get('delete'):
                    current_app.logger.info('开始删除富文本内容 lcid = {}'.format(lcid))
                    if not lc:
                        raise ParamsError('该内容已删除')
                    lc.isdelete = True
                    return Success('删除成功', data=lcid)
                if lc:
                    current_app.logger.info('开始更新富文本内容 lcid = {}'.format(lcid))
                    if lccontent:
                        lc.LCcontent = lccontent
                    db.session.add(lc)
                    return Success('更新成功', data=lcid)

            if not lccontent:
                raise ParamsError('富文本内容不能为空')
            lc = LinkContent.create({
                'LCid': str(uuid.uuid1()),
                'LCcontent': lccontent
            })
            current_app.logger.info('开始创建富文本内容 lcid = {}'.format(lc.LCid))
            db.session.add(lc)
            return Success('添加成功', data=lc.LCid)
Пример #2
0
 def create_product(self):
     """创建商品"""
     if is_admin():
         product_from = ProductFrom.platform.value
     elif is_supplizer():
         product_from = ProductFrom.supplizer.value
     else:
         raise AuthorityError('当前用户无权进行该操作')
     data = request.json
     product_dict = self._validate_ticket_param(data)
     if Product.query.filter(Product.isdelete == false(), Product.PRname == data.get('prname')).first():
         raise ParamsError('该商品名称已存在')
     with db.auto_commit():
         product_dict.update({'PRid': str(uuid.uuid1()),
                              'CreatorId': getattr(request, 'user').id,
                              'CreatorType': getattr(request, 'user').model,
                              'PRname': data.get('prname'),
                              'PRimg': data.get('primg'),
                              'PRdetails': data.get('prdetails'),
                              # 'PRstatus': ProductStatus.ready.value if product_dict.get(
                              #     'PRtimeLimeted') else ProductStatus.active.value,
                              'PRstatus': ProductStatus.pending.value
                              })
         product = Product.create(product_dict)
         db.session.add(product)
     # 0702 增加审批
     # if product.PRtimeLimeted:  # 限时商品,添加异步任务
     #     add_async_task(func=start_product, start_time=product.PRissueStartTime, func_args=(product.PRid,),
     #                    conn_id='start_product{}'.format(product.PRid))
     #     add_async_task(func=end_product, start_time=product.PRissueEndTime, func_args=(product.PRid,),
     #                    conn_id='end_product{}'.format(product.PRid))
     self.base_approval.create_approval('toshelves', request.user.id, product.PRid, product_from)
     self.base_admin.create_action(AdminActionS.insert.value, 'Product', product.PRid)
     return Success('创建成功', data={'prid': product.PRid})
Пример #3
0
 def list_product(self):
     """商品列表"""
     args = request.args.to_dict()
     filter_args = []
     if not (is_admin() or is_supplizer()):
         filter_args.append(Product.PRstatus.notin_((ProductStatus.interrupt.value, ProductStatus.reject.value,
                                                     ProductStatus.pending.value)))
     if is_supplizer():
         filter_args.append(Product.SUid == getattr(request, 'user').id)
     prlimited = args.get('prtimelimeted')
     if str(prlimited) in '01':
         filter_args.append(Product.PRtimeLimeted == prlimited)
     products = Product.query.filter(Product.isdelete == false(), *filter_args
                                     ).order_by(func.field(Product.PRstatus, ProductStatus.active.value,
                                                           ProductStatus.ready.value, ProductStatus.over.value),
                                                Product.PRissueStartTime.asc(),
                                                Product.createtime.desc()).all_with_page()
     products_fields = ['PRid', 'PRname', 'PRimg', 'PRlinePrice', 'PRtruePrice', 'PRnum', 'PRtimeLimeted',
                        'PRstatus', 'prstatus_zh', 'apply_num', 'PRissueStartTime', 'PRissueEndTime',
                        'PRuseStartTime', 'PRuseEndTime', 'interrupt', 'apply_num_str', 'buyer_avatar',
                        'start_time_str']
     for product in products:
         self._fill_product(product)
         product.fields = products_fields
         if not product.PRtimeLimeted:
             product.PRnum = '无限量'
     return Success(data=products)
Пример #4
0
 def get(self):
     commision = Commision.query.filter(
         Commision.isdelete == False, ).first()
     commision.Levelcommision = json.loads(commision.Levelcommision)
     commision.ReduceRatio = json.loads(commision.ReduceRatio)
     commision.IncreaseRatio = json.loads(commision.IncreaseRatio)
     return Success(data=commision)
Пример #5
0
 def list_linkcontent(self):
     lc_list = LinkContent.query.filter(
         LinkContent.isdelete == False).order_by(
             LinkContent.createtime.desc()).all_with_page()
     for lc in lc_list:
         self._fill_lc(lc)
     return Success(data=lc_list)
Пример #6
0
 def set_mp_banner(self):
     """小程序轮播图"""
     data = parameter_required(('mpbpicture', ))
     mpbid = data.get('mpbid')
     mpb_dict = {
         'MPBpicture': data.get('mpbpicture'),
         'MPBsort': data.get('mpbsort'),
         'MPBshow': data.get('mpbshow'),
         'contentlink': data.get('contentlink')
     }
     with db.auto_commit():
         if not mpbid:
             mpb_dict['MPBid'] = str(uuid.uuid1())
             mpb_dict['ADid'] = getattr(request, 'user').id
             mpb_instance = MiniProgramBanner.create(mpb_dict)
             # BASEADMIN().create_action(AdminActionS.insert.value, 'MiniProgramBanner', mpb_instance.MPBid)
             msg = '添加成功'
         else:
             mpb_instance = MiniProgramBanner.query.filter_by_(
                 MPBid=mpbid).first_('未找到该轮播图信息')
             if data.get('delete'):
                 mpb_instance.update({'isdelete': True})
                 # BASEADMIN().create_action(AdminActionS.delete.value, 'MiniProgramBanner', mpb_instance.MPBid)
                 msg = '删除成功'
             else:
                 mpb_instance.update(mpb_dict, null='not')
                 # BASEADMIN().create_action(AdminActionS.update.value, 'MiniProgramBanner', mpb_instance.MPBid)
                 msg = '编辑成功'
         db.session.add(mpb_instance)
     return Success(message=msg, data={'mpbid': mpb_instance.MPBid})
Пример #7
0
 def get_linkcontent(self):
     data = parameter_required('lcid')
     lcid = data.get('lcid')
     lc = LinkContent.query.filter_by(LCid=lcid, isdelete=False).first()
     if not lc:
         raise ParamsError('链接失效')
     return Success(data=lc)
Пример #8
0
 def get_location(self):
     """获取定位"""
     # user = get_current_user()
     usid = getattr(request, 'user').id
     data = parameter_required(('longitude', 'latitude'))
     current_location = self.get_user_location(data.get('latitude'),
                                               data.get('longitude'), usid)
     return Success(data={'nelocation': current_location})
Пример #9
0
 def list_activationtype(self):
     data = parameter_required()
     filter_args = {
         ActivationType.isdelete == false()
     }
     # if data.get('atttype'):
     #     filter_args.add(ActivationType.ATTtype == data.get('atttype'))
     att_list = ActivationType.query.filter(*filter_args).order_by(ActivationType.updatetime.desc()).all_with_page()
     return Success(data=att_list)
Пример #10
0
 def list_omstatus(self):
     """所有试用记录状态类型"""
     res = [{'omstatus': k,
             'omstatus_en': OrderStatus(k).name,
             'omstatus_zh': OrderStatus(k).zh_value
             } for k in (OrderStatus.pending.value, OrderStatus.has_won.value,
                         OrderStatus.completed.value, OrderStatus.cancle.value,
                         OrderStatus.not_won.value,)]
     return Success(data=res)
Пример #11
0
    def set_supplizeraccount(self):
        if not is_supplizer():
            raise AuthorityError
        data = request.json
        cardno = data.get('sacardno')
        cardno = re.sub(r'\s', '', str(cardno))
        self.cuser._CUser__check_card_num(cardno)
        check_res = self.cuser._verify_cardnum(cardno)  # 检验卡号
        if not check_res.data.get('validated'):
            raise ParamsError('请输入正确的银行卡号')
        checked_res = self.cuser._verify_cardnum(data.get('sabankaccount'))
        # if not checked_res.data.get('validated'):
        #     raise ParamsError('请输入正确的开票账户银行卡号')
        checked_name = self.cuser._verify_chinese(data.get('sacardname'))
        if not checked_name or len(checked_name[0]) < 2:
            raise ParamsError('请输入正确的开户人姓名')
        current_app.logger.info('用户输入银行名为:{}'.format(data.get('sabankname')))
        bankname = check_res.data.get('cnbankname')
        try:
            WexinBankCode(bankname)
        except Exception:
            raise ParamsError('系统暂不支持该银行提现,请更换银行后重新保存')
        data['sabankname'] = bankname
        current_app.logger.info('校验后更改银行名为:{}'.format(data.get('sabankname')))

        sa = SupplizerAccount.query.filter(
            SupplizerAccount.SUid == request.user.id,
            SupplizerAccount.isdelete == false()).first()
        if sa:
            for key in sa.__dict__:
                if str(key).lower() in data:
                    if re.match(r'^(said|suid)$', str(key).lower()):
                        continue
                    if str(key).lower() == 'sacardno':
                        setattr(sa, key, cardno)
                        continue
                    setattr(sa, key, data.get(str(key).lower()))
        else:
            sa_dict = {}
            for key in SupplizerAccount.__dict__:

                if str(key).lower() in data:
                    if not data.get(str(key).lower()):
                        continue
                    if str(key).lower() == 'suid':
                        continue
                    if str(key).lower() == 'sacardno':
                        sa_dict.setdefault(key, cardno)
                        continue
                    sa_dict.setdefault(key, data.get(str(key).lower()))
            sa_dict.setdefault('SAid', str(uuid.uuid1()))
            sa_dict.setdefault('SUid', request.user.id)
            sa = SupplizerAccount.create(sa_dict)
            db.session.add(sa)

        return Success('设置供应商账户信息成功')
Пример #12
0
 def get_approvalnotes(self):
     """查看审批的所有流程"""
     if not (is_admin() or is_supplizer()):
         raise AuthorityError('权限不足')
     data = parameter_required(('avid', ))
     an_list = ApprovalNotes.query.filter_by_(
         AVid=data.get('avid')).order_by(ApprovalNotes.createtime).all()
     for an in an_list:
         an.fill('anaction', ApprovalAction(an.ANaction).zh_value)
     return Success('获取审批记录成功', data=an_list)
Пример #13
0
 def update_role(self):
     data = parameter_required('amtype')
     # amtype = int(data.get('amtype', 0) or 0)
     with db.auto_commit():
         amtype = self._check_roletype(data.get('amtype', 0))
         role = Agreement.query.filter_by(AMtype=amtype,
                                          isdelete=False).first()
         if not role:
             raise ParamsError('规则失效')
         role.AMcontent = data.get('amcontent')
     return Success('更新成功')
Пример #14
0
 def list_mp_banner(self):
     """小程序轮播图获取"""
     filter_args = []
     if not is_admin():
         filter_args.append(MiniProgramBanner.MPBshow == true())
     mpbs = MiniProgramBanner.query.filter(
         MiniProgramBanner.isdelete == false(),
         *filter_args).order_by(MiniProgramBanner.MPBsort.asc(),
                                MiniProgramBanner.createtime.desc()).all()
     [x.hide('ADid') for x in mpbs]
     return Success(data=mpbs)
Пример #15
0
    def get_dealing_approval(self):
        """管理员查看自己名下可以处理的审批流 概览"""
        if is_admin():
            admin = Admin.query.filter_by_(
                ADid=request.user.id).first_('管理员账号已被回收')
            if not admin:
                current_app.logger.info('get admin failed id is {0}'.format(
                    admin.ADid))
                raise NotFound("该管理员已被删除")
            # pttype = request.args.to_dict().get('pttypo')
            pt_list = PermissionType.query.filter(
                PermissionType.PTid == Permission.PTid,
                Permission.PIid == AdminPermission.PIid,
                AdminPermission.ADid == admin.ADid,
                PermissionType.isdelete == False,
                AdminPermission.isdelete == False,
                Permission.isdelete == False).order_by(
                    PermissionType.createtime.desc()).all()
            # pi_list = AdminPermission.query.filter_by_(ADid=admin.ADid).all()
            for pt in pt_list:
                ap_num = Approval.query.filter(
                    Approval.PTid == pt.PTid,
                    Approval.AVlevel == Permission.PELevel,
                    Permission.PTid == pt.PTid,
                    Permission.PIid == AdminPermission.PIid,
                    AdminPermission.ADid == admin.ADid,
                    Approval.AVstatus == ApplyStatus.wait_check.value,
                    Approval.isdelete == False, Permission.isdelete == False,
                    AdminPermission.isdelete == False).count()
                pt.fill('approval_num', ap_num)
        elif is_supplizer():
            sup = Supplizer.query.filter_by_(
                SUid=request.user.id).first_('供应商账号已回收')
            pt_list = PermissionType.query.filter(
                PermissionType.PTid == Approval.PTid,
                Approval.AVstartid == sup.SUid,
                Approval.AVstatus == ApplyStatus.wait_check.value,
                PermissionType.isdelete == False,
                Approval.isdelete == False).all()
            if not pt_list:
                pt_list = PermissionType.query.filter_by_(
                    PTid='tointegral').all()
            # todo 供应商的审批类型筛选
            for pt in pt_list:
                ap_num = Approval.query.filter(
                    Approval.AVstartid == sup.SUid, Approval.PTid == pt.PTid,
                    Approval.isdelete == False).count()

                pt.fill('approval_num', ap_num)
        else:
            pt_list = []

        return Success('获取审批流类型成功', data=pt_list)
Пример #16
0
 def get(self):
     data = parameter_required('omid')
     omid = data.get('omid')
     filter_args = [OrderMain.OMid == omid, OrderMain.isdelete == false()]
     if is_user():
         filter_args.append(OrderMain.USid == getattr(request, 'user').id)
     om = OrderMain.query.filter(*filter_args).first_('订单不存在')
     user = User.query.filter(User.isdelete == false(), User.USid == om.USid).first_('订单信息错误')
     self._fill_ordermain(om)
     om.fill('usname', user.USname)
     om.fill('usheader', user['USheader'])
     return Success(data=om)
Пример #17
0
    def get_verifier(self):
        form = GetVerifier().valid_data()
        suid = form.suid.data
        if is_supplizer():
            suid = request.user.id
        if not suid:
            raise ParamsError('未指定供应商')
        tv_list = ProductVerifier.query.filter_by(
            SUid=suid,
            isdelete=False).order_by(ProductVerifier.createtime.desc()).all()

        phone_list = [tv.PVphone for tv in tv_list]
        return Success(data=phone_list)
Пример #18
0
 def offshelves(self):
     current_app.logger.info('下架供应商')
     data = parameter_required(('suid', ))
     suid = data.get('suid')
     with db.auto_commit():
         supplizer = Supplizer.query.filter(
             Supplizer.isdelete == False,
             Supplizer.SUid == suid).first_('供应商不存在')
         supplizer.SUstatus = UserStatus.forbidden.value
         db.session.add(supplizer)
         self.base_admin.create_action(AdminActionS.update.value,
                                       'Supplizer', suid)
     return Success('供应商下架成功')
Пример #19
0
    def get_product(self):
        """商品详情"""
        args = parameter_required(('prid',))
        prid = args.get('prid')
        secret_usid = args.get('secret_usid')
        if secret_usid:  # 创建邀请记录
            self._invitation_record(secret_usid, args)
        product = Product.query.filter(Product.isdelete == false(), Product.PRid == prid).first_('商品已下架')
        self._fill_product(product)

        month_sale_value = self._fill_month_sale_value(prid)
        product.fill('month_sale_value', month_sale_value)
        return Success(data=product)
Пример #20
0
    def _list_ticket_sup():
        sups = Supplizer.query.filter(
            Supplizer.isdelete == false(),
            Supplizer.SUstatus == UserStatus.usual.value,
            Supplizer.SUgrade == SupplizerGrade.ticket.value)
        if is_supplizer():
            sups = sups.filter(Supplizer.SUid == getattr(request, 'user').id)
        sups = sups.all_with_page()

        for sup in sups:
            sup.fields = ['SUid', 'SUname', 'SUgrade', 'SUstatus']
            sup.fill('sustatus_zh', UserStatus(sup.SUstatus).zh_value)
            sup.fill('sugrade_zh', SupplizerGrade(sup.SUgrade).zh_value)
        return Success(data=sups)
Пример #21
0
 def remove(self):
     data = parameter_required(('img_url',))
     try:
         img_url = data.get('img_url')
         dirs = img_url.split('/')[-6:]
         name_shuffer = dirs[-1]
         name = name_shuffer.split('.')[0]
         if not 'anonymous' in name and request.user.id not in name:
             raise NotFound()
         path = os.path.join(current_app.config['BASEDIR'], '/'.join(dirs))
         os.remove(path)
     except Exception as e:
         raise NotFound()
     return Success(u'删除成功')
Пример #22
0
    def cancle(self):
        """付款前取消订单"""
        data = parameter_required(('omid',))
        omid = data.get('omid')
        if not is_user():
            raise AuthorityError

        usid = getattr(request, 'user').id
        order_main = OrderMain.query.filter(
            OrderMain.OMid == omid, OrderMain.USid == usid, OrderMain.isdelete == false()).first_('指定订单不存在')
        # if is_supplizer() and order_main.PRcreateId != usid:
        #     raise AuthorityError()
        # if not is_admin() and order_main.USid != usid:
        #     raise NotFound('订单订单不存在')
        self._cancle(order_main)
        return Success('取消成功')
Пример #23
0
    def get_duration_activation(self):
        data = parameter_required('tistarttime', 'tiendtime')
        if is_admin():
            usid = data.get('usid')
        elif is_user():
            usid = getattr(request, 'user').id
        else:
            raise AuthorityError('请登录')
        start = self._trans_time(data.get('tistarttime'))
        end = self._trans_time(data.get('tiendtime'))

        at_list = Activation.query.filter(
            Activation.USid == usid, Activation.createtime >= start, Activation.createtime <= end).all_with_page()
        for at in at_list:
            self._fill_at(at)
        return Success(data=at_list)
Пример #24
0
    def product_verified(self):
        """商品核销"""
        data = parameter_required('param')
        param = data.get('param')
        try:
            omid, secret_usid = str(param).split('&')
            if not omid.startswith('omid'):
                raise ValueError
        except ValueError:
            raise ParamsError('该二维码无效')
        current_app.logger.info('omid: {}, secret_usid: {}'.format(omid, secret_usid))
        omid = str(omid).split('=')[-1]
        secret_usid = str(secret_usid).split('=')[-1]
        current_app.logger.info('splited, omid: {}, secret_usid: {}'.format(omid, secret_usid))
        if not omid or not secret_usid:
            raise StatusError('该试用码无效')
        ticket_usid = self.cuser._base_decode(secret_usid)
        ticket_user = User.query.filter(User.isdelete == false(),
                                        User.USid == ticket_usid).first_('无效试用码')
        om = OrderMain.query.filter(OrderMain.isdelete == false(),
                                    OrderMain.OMid == omid).first_('订单状态异常')
        if om.OMstatus != OrderStatus.has_won.value:
            current_app.logger.error('om status: {}'.format(om.TSOstatus))
            raise StatusError('提示:该二维码已被核销过')
        pr = Product.query.filter(Product.PRid == om.PRid).first()
        if pr.PRtimeLimeted and (pr.PRuseStartTime <= datetime.now() <= pr.PRuseEndTime):
            raise StatusError('当前时间不在该券有效使用时间内')

        user = User.query.join(ProductVerifier, ProductVerifier.PVphone == User.UStelephone
                               ).join(Product, Product.SUid == ProductVerifier.SUid
                                      ).filter(User.isdelete == false(), User.USid == getattr(request, 'user').id,
                                               ProductVerifier.SUid == pr.SUid
                                               ).first_('请确认您是否拥有该券的核销权限')

        with db.auto_commit():
            # 订单改状态
            om.update({'OMstatus': OrderStatus.completed.value})
            db.session.add(om)
            # 核销记录
            tvr = ProductVerifiedRecord.create({'PVRid': str(uuid.uuid1()),
                                                'ownerId': ticket_user.USid,
                                                'VerifierId': user.USid,
                                                'OMid': om.OMid,
                                                'param': param})
            db.session.add(tvr)
        return Success('二维码验证成功', data=tvr.PVRid)
Пример #25
0
 def get(self):
     if not is_admin() and not is_supplizer():
         raise AuthorityError()
     form = SupplizerGetForm().valid_data()
     supplizer = form.supplizer
     self._fill_supplizer(supplizer)
     # pbs = ProductBrand.query.filter(
     #     ProductBrand.isdelete == False,
     #     ProductBrand.SUid == supplizer.SUid
     # ).all()
     # for pb in pbs:
     #     if pb:
     #         pb.pbstatus_zh = ProductBrandStatus(pb.PBstatus).zh_value
     #         pb.add('pbstatus_zh')
     supplizer.fill('pbs', [])
     supplizer.fill('SUbaseRate', 0)
     return Success(data=supplizer)
Пример #26
0
    def update(self):
        """更新供应商信息"""
        if not is_admin() and not is_supplizer():
            raise AuthorityError()
        form = SupplizerUpdateForm().valid_data()
        pbids = form.pbids.data
        with db.auto_commit():
            supplizer = Supplizer.query.filter(
                Supplizer.isdelete == False,
                Supplizer.SUid == form.suid.data).first_('供应商不存在')
            supplizer_dict = {
                'SUlinkPhone': form.sulinkphone.data,
                'SUname': form.suname.data,
                'SUlinkman': form.sulinkman.data,
                'SUaddress': form.suaddress.data,
                'SUbanksn': form.subanksn.data,
                'SUbankname': form.subankname.data,
                # 'SUpassword': generate_password_hash(form.supassword.data),  # 暂时去掉
                'SUheader': form.suheader.data,
                'SUcontract': form.sucontract.data,
                'SUbusinessLicense': form.subusinesslicense.data,
                'SUregisteredFund': form.suregisteredfund.data,
                'SUmainCategory': form.sumaincategory.data,
                # 'SUregisteredTime': form.suregisteredtime.data,
                'SUlegalPerson': form.sulegalperson.data,
                'SUemail': form.suemail.data,
                'SUlegalPersonIDcardFront': form.sulegalpersonidcardfront.data,
                'SUlegalPersonIDcardBack': form.sulegalpersonidcardback.data,
            }
            if is_admin():
                # if form.subaserate.data:
                #     supplizer_dict['SUbaseRate'] = form.subaserate.data,
                if isinstance(form.sustatus.data, int):
                    supplizer_dict['SUstatus'] = form.sustatus.data
                    if form.sustatus.data == UserStatus.usual.value and not supplizer.SUpassword:
                        supplizer_dict['SUpassword'] = generate_password_hash(
                            supplizer.SUloginPhone)

            supplizer.update(supplizer_dict, null='dont ignore')
            db.session.add(supplizer)
            if is_admin():
                self.base_admin.create_action(AdminActionS.update.value,
                                              'Supplizer', form.suid.data)
        return Success('更新成功')
Пример #27
0
    def get_promotion(self):
        data = parameter_required('prid')
        user = User.query.filter(User.isdelete == false(), User.USid == getattr(request, 'user').id).first_('请重新登录')
        prid = data.get('prid')
        params = data.get('params')
        product = Product.query.filter(
            Product.PRid == prid, Product.PRstatus < ProductStatus.interrupt.value,
            Product.isdelete == false()).first_('活动已结束')

        usid = user.USid
        starttime = endtime = starttime_g = endtime_g = None
        if product.PRtimeLimeted:
            starttime = self._check_time(product.PRuseStartTime)
            endtime = self._check_time(product.PRuseEndTime, fmt='%m/%d')

            starttime_g = self._check_time(product.PRissueStartTime)
            endtime_g = self._check_time(product.PRissueEndTime, fmt='%m/%d')

        # 获取微信二维码
        from ..control.CUser import CUser
        cuser = CUser()
        if not params or 'page=' not in params:
            params = 'page=/pages/index/freeDetail'
        if 'prid' not in params:
            params = '{}&prid={}'.format(params, prid)
        if 'secret_usid' not in params:
            params = '{}&secret_usid={}'.format(params, cuser._base_encode(usid))
        params = '{}&sttype={}'.format(params, ShareType.promotion.value)
        params_key = cuser.shorten_parameters(params, usid, 'params')
        wxacode_path = cuser.wxacode_unlimit(
            usid, {'params': params_key}, img_name='{}{}'.format(usid, prid), is_hyaline=True)
        local_path, promotion_path = PlayPicture().create_ticket(
            product.PRimg, product.PRname, str(0), usid, prid, wxacode_path, product.PRlinePrice,
            product.PRtruePrice, starttime, endtime, starttime_g, endtime_g)

        CFile().upload_to_oss(local_path, promotion_path[1:], '商品推广图')

        scene = cuser.dict_to_query_str({'params': params_key})
        current_app.logger.info('get scene = {}'.format(scene))
        return Success(data={
            'promotion_path': promotion_path,
            'scene': scene
        })
Пример #28
0
    def set_verifier(self):
        form = SetVerifier().valid_data()
        if is_admin():
            suid = form.suid.data
            assert suid, '供应商未指定'
        elif is_supplizer():
            suid = request.user.id
        else:
            raise AuthorityError()
        sup = Supplizer.query.filter(
            Supplizer.isdelete == false(),
            Supplizer.SUstatus == UserStatus.usual.value,
            Supplizer.SUid == suid).first_('供应商状态异常')
        if sup.SUgrade != SupplizerGrade.ticket.value:
            raise StatusError('仅虚拟商品供应商可设置核销员')
        phone_list = form.phone_list.data
        tvid_list = []
        instence_list = []
        phone_list = {}.fromkeys(phone_list).keys()
        with db.auto_commit():
            for phone in phone_list:
                User.query.filter(
                    User.isdelete == false(),
                    User.UStelephone == phone).first_(f'没有手机号为 {phone} 用户 ')
                tv = ProductVerifier.query.filter_by(SUid=suid,
                                                     PVphone=phone).first()
                if not tv:
                    tv = ProductVerifier.create({
                        'PVid': str(uuid.uuid1()),
                        'SUid': suid,
                        'PVphone': phone
                    })
                    instence_list.append(tv)
                tvid_list.append(tv.PVid)

            db.session.add_all(instence_list)
            # 删除无效的
            ProductVerifier.query.filter(
                ProductVerifier.isdelete == false(),
                ProductVerifier.SUid == suid,
                ProductVerifier.PVid.notin_(tvid_list)).delete_(
                    synchronize_session=False)
        return Success('修改成功', data=suid)
Пример #29
0
 def change_password(self):
     if not is_supplizer() and not is_admin():
         raise AuthorityError()
     form = SupplizerChangePasswordForm().valid_data()
     old_password = form.oldpassword.data
     supassword = form.supassword.data
     suid = form.suid.data
     with db.auto_commit():
         supplizer = Supplizer.query.filter(
             Supplizer.isdelete == False,
             Supplizer.SUid == suid).first_('不存在的供应商')
         if not is_admin() and not check_password_hash(
                 supplizer.SUpassword, old_password):
             raise AuthorityError('原密码错误')
         supplizer.SUpassword = generate_password_hash(supassword)
         db.session.add(supplizer)
         if is_admin():
             self.base_admin.create_action(AdminActionS.update.value,
                                           'Supplizer', suid)
     return Success('修改成功')
Пример #30
0
 def update_activationtype(self):
     data = parameter_required('attid')
     attid = data.pop('attid')
     with db.auto_commit():
         att = ActivationType.query.filter_by(ATTid=attid, isdelete=False).first_('活跃度获取方式未被记录')
         admin = Admin.query.filter(
             Admin.ADid == getattr(request, 'user').id, Admin.isdelete == false()).first_('用户信息有误')
         update_dict = {
             'ADid': admin.ADid
         }
         for key in att.keys():
             lower_key = str(key).lower()
             value = data.get(lower_key)
             if value or value == 0:
                 if key != 'ATTname' and not str(value).isdigit():
                     raise ParamsError('{} 只能是自然数'.format(getattr(ActivationType, key).comment))
                 update_dict.setdefault(key, value)
         att.update(update_dict)
         db.session.add(att)
     return Success('修改成功', data=attid)