@@ -29,10 +29,11 @@ from member.models import (GoodsInfo, GoodsOrderInfo, MemberActivityContribution  | 
            ||
| 29 | 29 | 
                MemberActivityGroupShareInfo, MemberActivityInfo, MemberActivitySignupInfo)  | 
            
| 30 | 30 | 
                from pre.custom_message import sendtemplatemessage, sendwxasubscribemessage  | 
            
| 31 | 31 | 
                from statistic.models import ConsumeModelSaleStatisticInfo, ConsumeSaleStatisticInfo, ConsumeUserStatisticInfo  | 
            
| 32 | 
                -from utils.error.errno_utils import (AdministratorStatusCode, ComplementCodeStatusCode,  | 
            |
| 32 | 
                +from utils.error.errno_utils import (AdministratorStatusCode, ComplementCodeStatusCode, CouponStatusCode,  | 
            |
| 33 | 33 | 
                MemberActivityContributionStatusCode, MemberActivityContributionWelfareStatusCode,  | 
            
| 34 | 
                - MemberActivityContributionWelfareUnblockingStatusCode, ProductBrandStatusCode,  | 
            |
| 35 | 
                - ProductCouponStatusCode, ProductMachineStatusCode, UserStatusCode)  | 
            |
| 34 | 
                + MemberActivityContributionWelfareUnblockingStatusCode, MemberActivityStatusCode,  | 
            |
| 35 | 
                + MemberGoodStatusCode, ProductCouponStatusCode, ProductMachineStatusCode,  | 
            |
| 36 | 
                + UserStatusCode)  | 
            |
| 36 | 37 | 
                 | 
            
| 37 | 38 | 
                 | 
            
| 38 | 39 | 
                WECHAT = settings.WECHAT  | 
            
                @@ -791,7 +792,7 @@ def member_activity_detail(request, administrator):  | 
            ||
| 791 | 792 | 
                try:  | 
            
| 792 | 793 | 
                log = MemberActivityInfo.objects.get(activity_id=activity_id)  | 
            
| 793 | 794 | 
                except MemberActivityInfo.DoesNotExist:  | 
            
| 794 | 
                - return response()  | 
            |
| 795 | 
                + return response(MemberActivityStatusCode.ACTIVITY_NOT_FOUND)  | 
            |
| 795 | 796 | 
                 | 
            
| 796 | 797 | 
                     return response(200, 'Get Member Activity Record Details Success', u'获取会员活动详情成功', data={
               | 
            
| 797 | 798 | 
                'log': log.admindetails,  | 
            
                @@ -804,10 +805,10 @@ def member_activity_update(request, administrator):  | 
            ||
| 804 | 805 | 
                     activity_type = int(request.POST.get('activity_type', 0))
               | 
            
| 805 | 806 | 
                     title = request.POST.get('title', '')
               | 
            
| 806 | 807 | 
                     subtitle = request.POST.get('subtitle', '')
               | 
            
| 807 | 
                -    start_date = request.POST.get('start_date', '') or settings.DEFAULT_START_DATE
               | 
            |
| 808 | 
                -    end_date = date = request.POST.get('date', '') or request.POST.get('end_date', '') or settings.DEFAULT_END_DATE
               | 
            |
| 809 | 
                -    start_display_date = request.POST.get('start_display_date', '') or settings.DEFAULT_START_DATE
               | 
            |
| 810 | 
                -    end_display_date = request.POST.get('end_display_date', '') or settings.DEFAULT_END_DATE
               | 
            |
| 808 | 
                +    start_date = tc.to_date(request.POST.get('start_date', '') or settings.DEFAULT_START_DATE)
               | 
            |
| 809 | 
                +    end_date = date = tc.to_date(request.POST.get('date', '') or request.POST.get('end_date', '') or settings.DEFAULT_END_DATE)
               | 
            |
| 810 | 
                +    start_display_date = tc.to_date(request.POST.get('start_display_date', '') or settings.DEFAULT_START_DATE)
               | 
            |
| 811 | 
                +    end_display_date = tc.to_date(request.POST.get('end_display_date', '') or settings.DEFAULT_END_DATE)
               | 
            |
| 811 | 812 | 
                     city = request.POST.get('city', '')
               | 
            
| 812 | 813 | 
                     location = request.POST.get('location', '')
               | 
            
| 813 | 814 | 
                     integral = int(request.POST.get('integral', 0))
               | 
            
                @@ -828,7 +829,7 @@ def member_activity_update(request, administrator):  | 
            ||
| 828 | 829 | 
                try:  | 
            
| 829 | 830 | 
                log = MemberActivityInfo.objects.get(activity_id=activity_id, status=True)  | 
            
| 830 | 831 | 
                except MemberActivityInfo.DoesNotExist:  | 
            
| 831 | 
                - return response()  | 
            |
| 832 | 
                + return response(MemberActivityStatusCode.ACTIVITY_NOT_FOUND)  | 
            |
| 832 | 833 | 
                 | 
            
| 833 | 834 | 
                log.activity_type = activity_type  | 
            
| 834 | 835 | 
                log.title = title  | 
            
                @@ -1246,7 +1247,7 @@ def coupon_detail(request, administrator):  | 
            ||
| 1246 | 1247 | 
                try:  | 
            
| 1247 | 1248 | 
                log = CouponInfo.objects.get(coupon_id=coupon_id)  | 
            
| 1248 | 1249 | 
                except CouponInfo.DoesNotExist:  | 
            
| 1249 | 
                - return response()  | 
            |
| 1250 | 
                + return response(CouponStatusCode.COUPON_NOT_FOUND)  | 
            |
| 1250 | 1251 | 
                 | 
            
| 1251 | 1252 | 
                log = log.admindetails  | 
            
| 1252 | 1253 | 
                 | 
            
                @@ -1299,7 +1300,7 @@ def coupon_update(request, administrator):  | 
            ||
| 1299 | 1300 | 
                try:  | 
            
| 1300 | 1301 | 
                log = CouponInfo.objects.get(coupon_id=coupon_id, status=True)  | 
            
| 1301 | 1302 | 
                except CouponInfo.DoesNotExist:  | 
            
| 1302 | 
                - return response()  | 
            |
| 1303 | 
                + return response(CouponStatusCode.COUPON_NOT_FOUND)  | 
            |
| 1303 | 1304 | 
                 | 
            
| 1304 | 1305 | 
                log.brand_id = administrator.brand_id  | 
            
| 1305 | 1306 | 
                log.coupon_title = coupon_title  | 
            
                @@ -1323,7 +1324,7 @@ def coupon_delete(request, administrator):  | 
            ||
| 1323 | 1324 | 
                try:  | 
            
| 1324 | 1325 | 
                log = CouponInfo.objects.get(coupon_id=coupon_id, status=True)  | 
            
| 1325 | 1326 | 
                except CouponInfo.DoesNotExist:  | 
            
| 1326 | 
                - return response()  | 
            |
| 1327 | 
                + return response(CouponStatusCode.COUPON_NOT_FOUND)  | 
            |
| 1327 | 1328 | 
                 | 
            
| 1328 | 1329 | 
                log.status = False  | 
            
| 1329 | 1330 | 
                log.save()  | 
            
                @@ -1357,7 +1358,7 @@ def member_goods_detail(request, administrator):  | 
            ||
| 1357 | 1358 | 
                try:  | 
            
| 1358 | 1359 | 
                log = GoodsInfo.objects.get(good_id=good_id)  | 
            
| 1359 | 1360 | 
                except GoodsInfo.DoesNotExist:  | 
            
| 1360 | 
                - return response()  | 
            |
| 1361 | 
                + return response(MemberGoodStatusCode.GOOD_NOT_FOUND)  | 
            |
| 1361 | 1362 | 
                 | 
            
| 1362 | 1363 | 
                log = log.admindetails  | 
            
| 1363 | 1364 | 
                 | 
            
                @@ -1382,7 +1383,7 @@ def member_goods_update(request, administrator):  | 
            ||
| 1382 | 1383 | 
                try:  | 
            
| 1383 | 1384 | 
                log = GoodsInfo.objects.get(good_id=good_id, status=True)  | 
            
| 1384 | 1385 | 
                except GoodsInfo.DoesNotExist:  | 
            
| 1385 | 
                - return response()  | 
            |
| 1386 | 
                + return response(MemberGoodStatusCode.GOOD_NOT_FOUND)  | 
            |
| 1386 | 1387 | 
                 | 
            
| 1387 | 1388 | 
                log.title = title  | 
            
| 1388 | 1389 | 
                log.desc = desc  | 
            
                @@ -1519,7 +1520,7 @@ def complement_code_audit(request, administrator):  | 
            ||
| 1519 | 1520 | 
                try:  | 
            
| 1520 | 1521 | 
                user = UserInfo.objects.get(user_id=log.user_id, status=True)  | 
            
| 1521 | 1522 | 
                except UserInfo.DoesNotExist:  | 
            
| 1522 | 
                - return response()  | 
            |
| 1523 | 
                + return response(UserStatusCode.USER_NOT_FOUND)  | 
            |
| 1523 | 1524 | 
                 | 
            
| 1524 | 1525 | 
                # Send template_message  | 
            
| 1525 | 1526 | 
                         data = {
               | 
            
                @@ -422,7 +422,7 @@ def activity_signup_info(request):  | 
            ||
| 422 | 422 | 
                try:  | 
            
| 423 | 423 | 
                contribution = MemberActivityContributionInfo.objects.get(user_id=user_id, activity_id=activity_id, content_type=0, status=True)  | 
            
| 424 | 424 | 
                except MemberActivityContributionInfo.DoesNotExist:  | 
            
| 425 | 
                - return response()  | 
            |
| 425 | 
                + return response(MemberActivityContributionStatusCode.ACTIVITY_CONTRIBUTION_NOT_FOUND)  | 
            |
| 426 | 426 | 
                 | 
            
| 427 | 427 | 
                     return response(data={
               | 
            
| 428 | 428 | 
                'signup_info': signup_info.data,  | 
            
                @@ -16,7 +16,8 @@ from staff.models import StaffDeleteClerkSaleSubmitLogInfo, StaffDeleteConsumerS  | 
            ||
| 16 | 16 | 
                from statistic.models import (ConsumeModelSaleStatisticInfo, ConsumeSaleStatisticInfo, ConsumeUserStatisticInfo,  | 
            
| 17 | 17 | 
                DistributorSaleStatisticInfo, ModelSaleStatisticInfo, ProvinceSaleStatisticInfo,  | 
            
| 18 | 18 | 
                SaleclerkSaleStatisticInfo, SaleStatisticInfo)  | 
            
| 19 | 
                -from utils.error.errno_utils import AdministratorStatusCode  | 
            |
| 19 | 
                +from utils.error.errno_utils import (AdministratorStatusCode, ProductBrandStatusCode, ProductDistributorStatusCode,  | 
            |
| 20 | 
                + ProductModelStatusCode, SaleclerkStatusCode, UserStatusCode)  | 
            |
| 20 | 21 | 
                 | 
            
| 21 | 22 | 
                 | 
            
| 22 | 23 | 
                def exec_del_clerk_sale_submit(pk, admin_id):  | 
            
                @@ -35,22 +36,22 @@ def exec_del_clerk_sale_submit(pk, admin_id):  | 
            ||
| 35 | 36 | 
                try:  | 
            
| 36 | 37 | 
                brand = BrandInfo.objects.get(pk=ssli.brand_pk)  | 
            
| 37 | 38 | 
                except BrandInfo.DoesNotExist:  | 
            
| 38 | 
                - return response()  | 
            |
| 39 | 
                + return response(ProductBrandStatusCode)  | 
            |
| 39 | 40 | 
                 | 
            
| 40 | 41 | 
                try:  | 
            
| 41 | 42 | 
                model = ModelInfo.objects.get(pk=ssli.model_pk)  | 
            
| 42 | 43 | 
                except ModelInfo.DoesNotExist:  | 
            
| 43 | 
                - return response()  | 
            |
| 44 | 
                + return response(ProductModelStatusCode)  | 
            |
| 44 | 45 | 
                 | 
            
| 45 | 46 | 
                try:  | 
            
| 46 | 47 | 
                clerk = SaleclerkInfo.objects.select_for_update().get(clerk_id=ssli.clerk_id, status=True)  | 
            
| 47 | 48 | 
                except SaleclerkInfo.DoesNotExist:  | 
            
| 48 | 
                - return response()  | 
            |
| 49 | 
                + return response(SaleclerkStatusCode.CLERK_NOT_FOUND)  | 
            |
| 49 | 50 | 
                 | 
            
| 50 | 51 | 
                try:  | 
            
| 51 | 52 | 
                distributor = DistributorInfo.objects.get(distributor_id=clerk.distributor_id)  | 
            
| 52 | 53 | 
                except DistributorInfo.DoesNotExist:  | 
            
| 53 | 
                - return response()  | 
            |
| 54 | 
                + return response(ProductDistributorStatusCode.DISTRIBUTOR_NOT_FOUND)  | 
            |
| 54 | 55 | 
                 | 
            
| 55 | 56 | 
                ymd = str(ssli.ymd)  | 
            
| 56 | 57 | 
                 | 
            
                @@ -280,17 +281,17 @@ def exec_del_consumer_submit(pk, admin_id):  | 
            ||
| 280 | 281 | 
                try:  | 
            
| 281 | 282 | 
                brand = BrandInfo.objects.get(brand_id=ssli.brand_id)  | 
            
| 282 | 283 | 
                except BrandInfo.DoesNotExist:  | 
            
| 283 | 
                - return response()  | 
            |
| 284 | 
                + return response(ProductBrandStatusCode.BRAND_NOT_FOUND)  | 
            |
| 284 | 285 | 
                 | 
            
| 285 | 286 | 
                try:  | 
            
| 286 | 287 | 
                model = ModelInfo.objects.get(model_id=ssli.model_id)  | 
            
| 287 | 288 | 
                except ModelInfo.DoesNotExist:  | 
            
| 288 | 
                - return response()  | 
            |
| 289 | 
                + return response(ProductModelStatusCode.MODEL_NOT_FOUND)  | 
            |
| 289 | 290 | 
                 | 
            
| 290 | 291 | 
                try:  | 
            
| 291 | 292 | 
                user = UserInfo.objects.select_for_update().get(user_id=ssli.user_id)  | 
            
| 292 | 293 | 
                except UserInfo.DoesNotExist:  | 
            
| 293 | 
                - return response()  | 
            |
| 294 | 
                + return response(UserStatusCode.USER_NOT_FOUND)  | 
            |
| 294 | 295 | 
                 | 
            
| 295 | 296 | 
                # 记录删除日志  | 
            
| 296 | 297 | 
                StaffDeleteConsumerSubmitLogInfo.objects.create(  | 
            
                @@ -8,6 +8,78 @@ class ParamStatusCode(BaseStatusCode):  | 
            ||
| 8 | 8 | 
                PARAM_NOT_FOUND = StatusCodeField(400000, 'Param Not Found', description=u'参数不存在')  | 
            
| 9 | 9 | 
                 | 
            
| 10 | 10 | 
                 | 
            
| 11 | 
                +class PermissionStatusCode(BaseStatusCode):  | 
            |
| 12 | 
                + """ 4099xx 权限相关错误码 """  | 
            |
| 13 | 
                + PERMISSION_DENIED = StatusCodeField(409900, 'Permission Denied', description=u'权限不足')  | 
            |
| 14 | 
                +  | 
            |
| 15 | 
                +  | 
            |
| 16 | 
                +class AdministratorStatusCode(BaseStatusCode):  | 
            |
| 17 | 
                + """ 操作员相关错误码 4002xx """  | 
            |
| 18 | 
                + ADMINISTRATOR_NOT_FOUND = StatusCodeField(400201, 'Administrator Not Found', description=u'管理员不存在')  | 
            |
| 19 | 
                + ADMINISTRATOR_PERMISSION_DENIED = StatusCodeField(508002, 'Administrator Permission Denied', description=u'管理员权限不足')  | 
            |
| 20 | 
                +  | 
            |
| 21 | 
                + # 密码  | 
            |
| 22 | 
                + ADMINISTRATOR_PASSWORD_ERROR = StatusCodeField(400202, 'Administrator Password Error', description=u'管理员密码错误')  | 
            |
| 23 | 
                + # 手机号  | 
            |
| 24 | 
                + ADMINISTRATOR_PHONE_ALREADY_EXISTS = StatusCodeField(400205, 'Administrator Phone Already Exists', description=u'管理员手机号已经存在')  | 
            |
| 25 | 
                + # 状态  | 
            |
| 26 | 
                + ADMINISTRATOR_NOT_ACTIVATED = StatusCodeField(400215, 'Administrator Not Activated', description=u'管理员未激活')  | 
            |
| 27 | 
                + ADMINISTRATOR_HAS_DISABLED = StatusCodeField(400216, 'Administrator Has Disabled', description=u'管理员已禁用')  | 
            |
| 28 | 
                + ADMINISTRATOR_HAS_DELETED = StatusCodeField(400217, 'Administrator Has Deleted', description=u'管理员已删除')  | 
            |
| 29 | 
                + # 管理员  | 
            |
| 30 | 
                + MAINTENANCE_NOT_FOUND = StatusCodeField(400251, 'Maintenance Not Found', description=u'核销员不存在')  | 
            |
| 31 | 
                +  | 
            |
| 32 | 
                +  | 
            |
| 33 | 
                +class OperatorStatusCode(BaseStatusCode):  | 
            |
| 34 | 
                + """ 操作员相关错误码 4003xx """  | 
            |
| 35 | 
                + OPERATOR_NOT_FOUND = StatusCodeField(400301, 'Operator Not Found', description=u'操作员不存在')  | 
            |
| 36 | 
                + # 密码  | 
            |
| 37 | 
                + OPERATOR_PASSWORD_ERROR = StatusCodeField(400302, 'Operator Password Error', description=u'操作员密码错误')  | 
            |
| 38 | 
                + # 手机号  | 
            |
| 39 | 
                + OPERATOR_PHONE_ALREADY_EXISTS = StatusCodeField(400305, 'Operator Phone Already Exists', description=u'操作员手机号已经存在')  | 
            |
| 40 | 
                + # 状态  | 
            |
| 41 | 
                + OPERATOR_NOT_ACTIVATED = StatusCodeField(400315, 'Operator Not Activated', description=u'操作员未激活')  | 
            |
| 42 | 
                + OPERATOR_HAS_DISABLED = StatusCodeField(400316, 'Operator Has Disabled', description=u'操作员已禁用')  | 
            |
| 43 | 
                + OPERATOR_HAS_DELETED = StatusCodeField(400317, 'Operator Has Deleted', description=u'操作员已删除')  | 
            |
| 44 | 
                +  | 
            |
| 45 | 
                +  | 
            |
| 46 | 
                +class UserStatusCode(BaseStatusCode):  | 
            |
| 47 | 
                + """ 用户相关错误码 4005xx """  | 
            |
| 48 | 
                + USER_NOT_FOUND = StatusCodeField(400501, 'User Not Found', description=u'用户不存在')  | 
            |
| 49 | 
                + USER_PASSWORD_ERROR = StatusCodeField(400502, 'User Password Error', description=u'用户密码错误')  | 
            |
| 50 | 
                + USERNAME_HAS_REGISTERED = StatusCodeField(400503, 'Username Has Registered', description=u'用户名已注册')  | 
            |
| 51 | 
                + # 游客  | 
            |
| 52 | 
                + GUEST_NOT_ALLOWED = StatusCodeField(400511, 'Guest Not ALLOWED', description=u'游客登录未开启')  | 
            |
| 53 | 
                + # 身份  | 
            |
| 54 | 
                + USER_NOT_LENSMAN = StatusCodeField(400521, 'User Not Lensman', description=u'用户非摄影师')  | 
            |
| 55 | 
                + USER_NOT_TOURGUIDE = StatusCodeField(400522, 'User Not Tourguide', description=u'用户非导游')  | 
            |
| 56 | 
                +  | 
            |
| 57 | 
                +  | 
            |
| 58 | 
                +class PhoneStatusCode(BaseStatusCode):  | 
            |
| 59 | 
                + """ 手机相关错误码 4006xx """  | 
            |
| 60 | 
                + PHONE_NOT_FOUND = StatusCodeField(400601, 'Phone Not Found', description=u'手机不存在')  | 
            |
| 61 | 
                +  | 
            |
| 62 | 
                +  | 
            |
| 63 | 
                +class WechatStatusCode(BaseStatusCode):  | 
            |
| 64 | 
                + """ 微信相关错误码 4007xx """  | 
            |
| 65 | 
                + WECHAT_NOT_FOUND = StatusCodeField(400701, 'Wechat Not Found', description=u'微信不存在')  | 
            |
| 66 | 
                + UNIONID_NOT_FOUND = StatusCodeField(400702, 'Unionid Not Found', description=u'微信 UNIONID 不存在')  | 
            |
| 67 | 
                + OPENID_NOT_FOUND = StatusCodeField(400703, 'OPENID Not Found', description=u'微信 OPENID 不存在')  | 
            |
| 68 | 
                +  | 
            |
| 69 | 
                +  | 
            |
| 70 | 
                +class ScreenStatusCode(BaseStatusCode):  | 
            |
| 71 | 
                + """ 群组/团相关错误码 4030xx """  | 
            |
| 72 | 
                + QRCODE_NOT_SCAN = StatusCodeField(403001, 'QRCode Not Scan', description=u'二维码未扫描')  | 
            |
| 73 | 
                +  | 
            |
| 74 | 
                +  | 
            |
| 75 | 
                +class CouponStatusCode(BaseStatusCode):  | 
            |
| 76 | 
                + """ 4050xx 优惠劵相关错误码 """  | 
            |
| 77 | 
                + COUPON_NOT_FOUND = StatusCodeField(405001, 'Coupon Not Found', description=u'劵不存在')  | 
            |
| 78 | 
                + COUPON_EXPIRED = StatusCodeField(405002, 'Coupon Expired', description=u'劵已过期')  | 
            |
| 79 | 
                + COUPON_PERMISSION_DENIED = StatusCodeField(405003, 'Permission Denied', description=u'核销劵权限不足')  | 
            |
| 80 | 
                + COUPON_HAS_USED = StatusCodeField(405004, 'Coupon Has Used', description=u'劵已核销')  | 
            |
| 81 | 
                +  | 
            |
| 82 | 
                +  | 
            |
| 11 | 83 | 
                class SaleclerkStatusCode(BaseStatusCode):  | 
            
| 12 | 84 | 
                """ 店员相关错误码 5001xx """  | 
            
| 13 | 85 | 
                CLERK_NOT_FOUND = StatusCodeField(500101, 'Clerk Not Found', description=u'店员不存在')  | 
            
                @@ -138,75 +210,3 @@ class MaintenanceStatusCode(BaseStatusCode):  | 
            ||
| 138 | 210 | 
                """ 维修相关错误码 5080xx """  | 
            
| 139 | 211 | 
                MAINTENACE_NOT_FOUND = StatusCodeField(508001, 'Maintenance Not Found', description=u'维修不存在')  | 
            
| 140 | 212 | 
                MAINTENACE_PERMISSION_DENIED = StatusCodeField(508002, 'Maintenance Permission Denied', description=u'维修权限不足')  | 
            
| 141 | 
                -  | 
            |
| 142 | 
                -  | 
            |
| 143 | 
                -class AdministratorStatusCode(BaseStatusCode):  | 
            |
| 144 | 
                - """ 操作员相关错误码 4002xx """  | 
            |
| 145 | 
                - ADMINISTRATOR_NOT_FOUND = StatusCodeField(400201, 'Administrator Not Found', description=u'管理员不存在')  | 
            |
| 146 | 
                - ADMINISTRATOR_PERMISSION_DENIED = StatusCodeField(508002, 'Administrator Permission Denied', description=u'管理员权限不足')  | 
            |
| 147 | 
                -  | 
            |
| 148 | 
                - # 密码  | 
            |
| 149 | 
                - ADMINISTRATOR_PASSWORD_ERROR = StatusCodeField(400202, 'Administrator Password Error', description=u'管理员密码错误')  | 
            |
| 150 | 
                - # 手机号  | 
            |
| 151 | 
                - ADMINISTRATOR_PHONE_ALREADY_EXISTS = StatusCodeField(400205, 'Administrator Phone Already Exists', description=u'管理员手机号已经存在')  | 
            |
| 152 | 
                - # 状态  | 
            |
| 153 | 
                - ADMINISTRATOR_NOT_ACTIVATED = StatusCodeField(400215, 'Administrator Not Activated', description=u'管理员未激活')  | 
            |
| 154 | 
                - ADMINISTRATOR_HAS_DISABLED = StatusCodeField(400216, 'Administrator Has Disabled', description=u'管理员已禁用')  | 
            |
| 155 | 
                - ADMINISTRATOR_HAS_DELETED = StatusCodeField(400217, 'Administrator Has Deleted', description=u'管理员已删除')  | 
            |
| 156 | 
                - # 管理员  | 
            |
| 157 | 
                - MAINTENANCE_NOT_FOUND = StatusCodeField(400251, 'Maintenance Not Found', description=u'核销员不存在')  | 
            |
| 158 | 
                -  | 
            |
| 159 | 
                -  | 
            |
| 160 | 
                -class OperatorStatusCode(BaseStatusCode):  | 
            |
| 161 | 
                - """ 操作员相关错误码 4003xx """  | 
            |
| 162 | 
                - OPERATOR_NOT_FOUND = StatusCodeField(400301, 'Operator Not Found', description=u'操作员不存在')  | 
            |
| 163 | 
                - # 密码  | 
            |
| 164 | 
                - OPERATOR_PASSWORD_ERROR = StatusCodeField(400302, 'Operator Password Error', description=u'操作员密码错误')  | 
            |
| 165 | 
                - # 手机号  | 
            |
| 166 | 
                - OPERATOR_PHONE_ALREADY_EXISTS = StatusCodeField(400305, 'Operator Phone Already Exists', description=u'操作员手机号已经存在')  | 
            |
| 167 | 
                - # 状态  | 
            |
| 168 | 
                - OPERATOR_NOT_ACTIVATED = StatusCodeField(400315, 'Operator Not Activated', description=u'操作员未激活')  | 
            |
| 169 | 
                - OPERATOR_HAS_DISABLED = StatusCodeField(400316, 'Operator Has Disabled', description=u'操作员已禁用')  | 
            |
| 170 | 
                - OPERATOR_HAS_DELETED = StatusCodeField(400317, 'Operator Has Deleted', description=u'操作员已删除')  | 
            |
| 171 | 
                -  | 
            |
| 172 | 
                -  | 
            |
| 173 | 
                -class UserStatusCode(BaseStatusCode):  | 
            |
| 174 | 
                - """ 用户相关错误码 4005xx """  | 
            |
| 175 | 
                - USER_NOT_FOUND = StatusCodeField(400501, 'User Not Found', description=u'用户不存在')  | 
            |
| 176 | 
                - USER_PASSWORD_ERROR = StatusCodeField(400502, 'User Password Error', description=u'用户密码错误')  | 
            |
| 177 | 
                - USERNAME_HAS_REGISTERED = StatusCodeField(400503, 'Username Has Registered', description=u'用户名已注册')  | 
            |
| 178 | 
                - # 游客  | 
            |
| 179 | 
                - GUEST_NOT_ALLOWED = StatusCodeField(400511, 'Guest Not ALLOWED', description=u'游客登录未开启')  | 
            |
| 180 | 
                - # 身份  | 
            |
| 181 | 
                - USER_NOT_LENSMAN = StatusCodeField(400521, 'User Not Lensman', description=u'用户非摄影师')  | 
            |
| 182 | 
                - USER_NOT_TOURGUIDE = StatusCodeField(400522, 'User Not Tourguide', description=u'用户非导游')  | 
            |
| 183 | 
                -  | 
            |
| 184 | 
                -  | 
            |
| 185 | 
                -class PhoneStatusCode(BaseStatusCode):  | 
            |
| 186 | 
                - """ 手机相关错误码 4006xx """  | 
            |
| 187 | 
                - PHONE_NOT_FOUND = StatusCodeField(400601, 'Phone Not Found', description=u'手机不存在')  | 
            |
| 188 | 
                -  | 
            |
| 189 | 
                -  | 
            |
| 190 | 
                -class WechatStatusCode(BaseStatusCode):  | 
            |
| 191 | 
                - """ 微信相关错误码 4007xx """  | 
            |
| 192 | 
                - WECHAT_NOT_FOUND = StatusCodeField(400701, 'Wechat Not Found', description=u'微信不存在')  | 
            |
| 193 | 
                - UNIONID_NOT_FOUND = StatusCodeField(400702, 'Unionid Not Found', description=u'微信 UNIONID 不存在')  | 
            |
| 194 | 
                - OPENID_NOT_FOUND = StatusCodeField(400703, 'OPENID Not Found', description=u'微信 OPENID 不存在')  | 
            |
| 195 | 
                -  | 
            |
| 196 | 
                -  | 
            |
| 197 | 
                -class ScreenStatusCode(BaseStatusCode):  | 
            |
| 198 | 
                - """ 群组/团相关错误码 4030xx """  | 
            |
| 199 | 
                - QRCODE_NOT_SCAN = StatusCodeField(403001, 'QRCode Not Scan', description=u'二维码未扫描')  | 
            |
| 200 | 
                -  | 
            |
| 201 | 
                -  | 
            |
| 202 | 
                -class PermissionStatusCode(BaseStatusCode):  | 
            |
| 203 | 
                - """ 4099xx 权限相关错误码 """  | 
            |
| 204 | 
                - PERMISSION_DENIED = StatusCodeField(409900, 'Permission Denied', description=u'权限不足')  | 
            |
| 205 | 
                -  | 
            |
| 206 | 
                -  | 
            |
| 207 | 
                -class CouponStatusCode(BaseStatusCode):  | 
            |
| 208 | 
                - """ 4050xx 优惠劵相关错误码 """  | 
            |
| 209 | 
                - COUPON_NOT_FOUND = StatusCodeField(405001, 'Coupon Not Found', description=u'劵不存在')  | 
            |
| 210 | 
                - COUPON_EXPIRED = StatusCodeField(405002, 'Coupon Expired', description=u'劵已过期')  | 
            |
| 211 | 
                - COUPON_PERMISSION_DENIED = StatusCodeField(405003, 'Permission Denied', description=u'核销劵权限不足')  | 
            |
| 212 | 
                - COUPON_HAS_USED = StatusCodeField(405004, 'Coupon Has Used', description=u'劵已核销')  |