Exemplo n.º 1
0
    def pay_for_service(self):
        data = parameter_required()
        if is_tourist():
            raise TOKEN_ERROR()
        if is_admin():
            raise AUTHORITY_ERROR(u'请使用普通用户登陆')
        usid = request.user.id
        user = self.suser.get_user_by_usid(usid)
        openid = user.WXopenid
        if 'umtid' in data:
            umtid = data.get('umtid')
            usermoverorder = self.strade.get_mover_order_by_umtid(umtid)
            if not usermoverorder or usermoverorder.UMTstatus != 0:
                raise NOT_FOUND()
            total_fee = usermoverorder.UMTpreviewprice
            out_trade_no = self.pay.nonce_str
            self.strade.update_movertrade_detail_by_umtid(
                umtid, {'sn': out_trade_no})
            body = u'邻家搬家'
            attach = u'mover'
        elif 'uctid' in data:
            uctid = data.get('uctid')
            user_clean_order = self.strade.get_clean_order_by_uctid(uctid)
            if not user_clean_order or user_clean_order.UCTstatus != 0:
                raise NOT_FOUND()
            total_fee = user_clean_order.UCTprice
            out_trade_no = self.pay.nonce_str
            self.strade.update_cleanorder_detail_by_uctid(
                uctid, {'sn': out_trade_no})
            body = u'cleaner'
            attach = u'cleaner'

        elif 'uftid' in data:
            uftid = data.get('uftid')
            user_fixer_order = self.strade.get_fixer_order_by_uftid(uftid)
            if not user_fixer_order or user_fixer_order.UFTstatus != 0:
                raise NOT_FOUND()
            total_fee = user_fixer_order.UFTprice
            out_trade_no = self.pay.nonce_str
            self.strade.update_fixerorder_detail_by_uftid(
                uftid, {'sn': out_trade_no})
            body = u'fixer'
            attach = u'fixer'
        else:
            raise PARAMS_ERROR()
        try:
            total_fee *= 100
            raw = self.pay.jsapi(trade_type="JSAPI",
                                 openid=openid,
                                 body=body,
                                 out_trade_no=out_trade_no,
                                 total_fee=int(total_fee),
                                 attach=attach,
                                 spbill_create_ip=request.remote_addr)
            res = dict(raw)
            res['paySign'] = res.get('sign')
        except WeixinPayError as e:
            return SYSTEM_ERROR(e.message)
        return Success(res)
Exemplo n.º 2
0
 def delete_banner_show(self):
     """删除轮播"""
     if not is_admin():
         raise AUTHORITY_ERROR('请使用管理员登录')
     data = parameter_required(('ibid', ))
     banner = self.sindex.delete_banner_show_by_ibid(data.get('ibid'))
     message = u'删除成功' if banner else u'要删除的元素不存在'
     return Success(message, {
         'ibid': data.get('ibid')     
     })
Exemplo n.º 3
0
 def add_server_index(self):
     """新建首页显示的服务项目"""
     if not is_admin():
         raise AUTHORITY_ERROR('请使用管理员登录')
     data = parameter_required(('sisimage', 'sislink', 'sissort'), others='ignore')
     data['SISid'] = str(uuid.uuid4())
     self.sindex.add_model('ServerIndexShow', data)
     return Success(u'添加成功', {
         'sisid': data['SISid']
     })
Exemplo n.º 4
0
 def add_banner(self):
     """新建轮播图, 必要的参数: 图片地址, 顺序标志, 链接"""
     if not is_admin():
         raise AUTHORITY_ERROR('请使用管理员登录')
     data = parameter_required(('ibimage', 'iblink', 'ibsort'), others='ignore')
     data['IBid'] = str(uuid.uuid4())
     self.sindex.add_model('IndexBanner', data)
     return Success(u'添加成功', {
         'ibid': data['IBid']
     })
Exemplo n.º 5
0
 def delete_server_index_show(self):
     """删除首页显示的服务"""
     if not is_admin():
         raise AUTHORITY_ERROR('请使用管理员登录')
     data = parameter_required(('sisid', ))
     server_index_show = self.sindex.delete_server_index_show(data.get('sisid'))
     message = u'删除成功' if server_index_show else u'要删除的对象不存在'
     return Success(message, {
         'sisid': data.get('sisid')
     })
Exemplo n.º 6
0
 def delete_room_show_by_roid(self):
     if not is_admin():
         raise AUTHORITY_ERROR('请使用管理员登录')
     data = parameter_required(('roid', ))
     room_index_show = self.sindex.delete_room_show_by_roid(data.get('roid'))
     cache.delete("get_index_room_list_data")  # 删除缓存
     message = u'取消成功' if room_index_show else u'要取消的房源不在首页'
     return Success(message, {
         'roid': data.get('roid')
     })
Exemplo n.º 7
0
 def delete_room_show(self):
     """删除首页显示的整租或合租房源"""
     if not is_admin():
         raise AUTHORITY_ERROR('请使用管理员登录')
     data = parameter_required(('risid', ))
     room_index_show = self.sindex.delete_room_show_by_risid(data.get('risid'))
     cache.delete("get_index_room_list_data")  # 删除缓存
     message = u'删除成功' if room_index_show else u'要删除的对象不存在'
     return Success(message, {
         'risid': data.get('risid')
     })
Exemplo n.º 8
0
 def add_room_show(self):
     """新建首页显示的合租整租公寓民宿, 必要的参数 房源id, type, 和顺序: """
     if not is_admin():
         raise AUTHORITY_ERROR('请使用管理员登录')
     data = parameter_required(('roid', 'rotype', 'rosort'), others='ignore')
     data['RISid'] = str(uuid.uuid4())
     self.sindex.add_model('RoomIndexShow', data)
     cache.delete("get_index_room_list_data")  # 删除缓存
     return Success(u'添加成功', {
         'risid': data['RISid']
     })
Exemplo n.º 9
0
 def unfreeze_admin(self):
     """管理员解冻"""
     if not is_hign_level_admin():
         raise TOKEN_ERROR(u'需要高级管理权限')
     data = parameter_required(('adid', ))
     adid = data.get('adid')
     admin = self.suser.get_admin_by_adid(adid)
     if admin and admin.ADlevel >= request.user.level:
         raise AUTHORITY_ERROR()
     unfreezed = self.suser.unfreeze_admin_by_adid(adid)
     msg = u'操作成功' if unfreezed else u'无此记录'
     return Success(msg, {
         'adid': adid     
     })
Exemplo n.º 10
0
    def add_admin(self):
        # 添加管理员, 默认添加0级别管理员
        if not is_hign_level_admin():
            raise TOKEN_ERROR(u'需要高级管理权限')
        required = ['adname', 'adusername', 'adpassword', 'admobiel', 'ademail']
        data = parameter_required(required)
        if self.suser.get_admin_by_adusername(data.get('adusername')):
            raise PARAMS_ERROR(u'用户名重复')

        validate_phone(data.get('admobiel'))
        validate_phone(data.get('adphone'))
        validate_arg('\w+@\w+\.\w+', data.get('ademail'), u'电子邮箱格式不正确')
        data['adlevel'] = 0 or data.get('adlevel')
        if data['adlevel'] >= request.user.level:
            raise AUTHORITY_ERROR()
        data['adid'] = str(uuid.uuid4())
        data['adpassword'] = generate_password_hash(data.get('adpassword'))
        self.suser.add_model('Admin', data)
        return Success(u'添加管理员成功', {
            'adid': data.get('adid')
        })