# -*- coding: utf-8 -*-

from StatusCode import BaseStatusCode, StatusCodeField


class ParamStatusCode(BaseStatusCode):
    """ 4000xx 参数相关错误码 """
    PARAM_NOT_FOUND = StatusCodeField(400000, 'Param Not Found', description=u'参数不存在')


class SaleclerkStatusCode(BaseStatusCode):
    """ 店员相关错误码 5001xx """
    CLERK_NOT_FOUND = StatusCodeField(500101, 'Clerk Not Found', description=u'店员不存在')
    # 手机号
    CLERK_PHONE_ALREADY_EXISTS = StatusCodeField(500105, 'Clerk Phone Already Exists', description=u'手机号已经存在')
    # 状态
    CLERK_ALREADY_NOT_UNVERIFIED = StatusCodeField(500110, 'Clerk Already Not Unverified', description=u'店员帐号已激活')
    CLERK_NOT_ACTIVATED = StatusCodeField(500115, 'Clerk Not Activated', description=u'店员帐号未激活')
    CLERK_NOT_AUTH = StatusCodeField(500116, 'Clerk Not AUTH', description=u'店员帐号未认证')
    # 上传
    DUPLICATE_SUBMIT = StatusCodeField(500199, 'Duplicate Submit', description=u'重复提交')


class SalesResponsibilityStatusCode(BaseStatusCode):
    """ 销售担当相关错误码 5002xx """
    SR_NOT_FOUND = StatusCodeField(500201, 'SR Not Found', description=u'销售担当不存在')
    # 手机号
    SR_PHONE_ALREADY_EXISTS = StatusCodeField(500205, 'SR Phone Already Exists', description=u'手机号已经存在')


class ProductBrandStatusCode(BaseStatusCode):
    """ 品牌相关错误码 5010xx """
    BRAND_NOT_FOUND = StatusCodeField(501001, 'Brand Not Found', description=u'品牌不存在')
    BRAND_NOT_MATCH = StatusCodeField(501011, 'Brand Not Match', description=u'品牌不匹配')


class ProductModelStatusCode(BaseStatusCode):
    """ 型号相关错误码 5011xx """
    MODEL_NOT_FOUND = StatusCodeField(501101, 'Model Not Found', description=u'型号不存在')


class ProductDistributorStatusCode(BaseStatusCode):
    """ 经销商相关错误码 5012xx """
    DISTRIBUTOR_NOT_FOUND = StatusCodeField(501201, 'Distributor Not Found', description=u'经销商不存在')


class ProductMachineStatusCode(BaseStatusCode):
    """ 机器相关错误码 5013xx """
    SN_NOT_FOUND = StatusCodeField(501301, 'SN Not Found', description=u'序列号不存在')

    # 快递单号校验
    DUPLICATE_TRACKING_NUMBER = StatusCodeField(501311, 'Duplicate Tracking Number', description=u'快递单号重复')


class ProductCouponStatusCode(BaseStatusCode):
    """ 优惠券相关错误码 5014xx """
    COUPON_NOT_FOUND = StatusCodeField(501401, 'Coupon Not Found', description=u'优惠券不存在')

    COUPON_HAS_EXPIRED = StatusCodeField(501411, 'Coupon Has Expired', description=u'优惠券已过期')


class ComplementCodeStatusCode(BaseStatusCode):
    """ 补码相关错误码 5016xx """
    COMPLEMENT_CODE_NOT_FOUND = StatusCodeField(501601, 'Complement Code Not Found', description=u'补码记录不存在')
    COMPLEMENT_CODE_HAS_AUDITED = StatusCodeField(501605, 'Complement Code Has Audited', description=u'补码记录已审核')
    COMPLEMENT_CODE_STATUS_INVALID = StatusCodeField(501611, 'Complement Code Status Invalid', description=u'补码记录状态不合法')


class ProductStatusCode(BaseStatusCode):
    """ 产品相关错误码 5020xx """
    PRODUCT_NOT_FOUND = StatusCodeField(502001, 'Product Not Found', description=u'产品不存在')
    # 状态
    PRODUCT_HAS_USED = StatusCodeField(502011, 'Product Has Used', description=u'产品已使用')
    PRODUCT_NOT_USED = StatusCodeField(502012, 'Product Not Used', description=u'产品未使用')


class MemberGoodStatusCode(BaseStatusCode):
    """ 会员商品相关错误码 5035xx """
    GOOD_NOT_FOUND = StatusCodeField(503501, 'Good Not Found', description=u'商品不存在')

    GOOD_NO_EXCHANGE_PERMISSION = StatusCodeField(503502, 'Good No Exchange Permission', description=u'商品无兑换权限')
    GOOD_INTEGRAL_NOT_ENOUGH = StatusCodeField(503503, 'Good Integral Not Enough', description=u'商品兑换积分不足')
    GOOD_STOCK_NOT_ENOUGH = StatusCodeField(503504, 'Good Integral Not Enough', description=u'商品库存不足')
    GOOD_EXCHANGE_ONLY_ONCE = StatusCodeField(503505, 'Good Exchange Only Once', description=u'商品仅可兑换一次')


class MemberRightStatusCode(BaseStatusCode):
    """ 会员商品相关错误码 5036xx """
    RIGHT_NOT_FOUND = StatusCodeField(503601, 'Right Not Found', description=u'权益不存在')


class MemberActivityStatusCode(BaseStatusCode):
    """ 会员活动相关错误码 5037xx """
    ACTIVITY_NOT_FOUND = StatusCodeField(503701, 'Activity Not Found', description=u'活动不存在')


class MemberCouponStatusCode(BaseStatusCode):
    """ 会员优惠券相关错误码 5040xx """
    USER_COUPON_NOT_FOUND = StatusCodeField(504001, 'User Coupon Not Found', description=u'用户优惠券不存在')

    USER_COUPON_HAS_USED = StatusCodeField(504010, 'User Coupon Has Used', description=u'用户优惠券已使用')
    USER_COUPON_NOT_ACTIVED = StatusCodeField(504011, 'User Coupon Not Actived', description=u'用户优惠券未生效')
    USER_COUPON_HAS_EXPIRED = StatusCodeField(504012, 'User Coupon Has Expired', description=u'用户优惠券已过期')


class MarketCodeStatusCode(BaseStatusCode):
    """ 一物一码相关错误码 5050xx """
    MARKET_CODE_NOT_FOUND = StatusCodeField(505001, 'Market Code Not Found', description=u'一物一码不存在')


class MaintenacePointStatusCode(BaseStatusCode):
    """ 维修点相关错误码 5060xx """
    MAINTENACE_POINT_NOT_FOUND = StatusCodeField(506001, 'Maintenace Point Not Found', description=u'维修点不存在')


class ExpressStatusCode(BaseStatusCode):
    """ 快递公司相关错误码 5070xx """
    EXPRESS_NOT_FOUND = StatusCodeField(507001, 'Express Not Found', description=u'快递公司不存在')


class MaintenaceStatusCode(BaseStatusCode):
    """ 维修相关错误码 5080xx """
    MAINTENACE_NOT_FOUND = StatusCodeField(508001, 'Maintenace Not Found', description=u'维修不存在')


class AdministratorStatusCode(BaseStatusCode):
    """ 操作员相关错误码 4002xx """
    ADMINISTRATOR_NOT_FOUND = StatusCodeField(400201, 'Administrator Not Found', description=u'管理员不存在')
    # 密码
    ADMINISTRATOR_PASSWORD_ERROR = StatusCodeField(400202, 'Administrator Password Error', description=u'管理员密码错误')
    # 手机号
    ADMINISTRATOR_PHONE_ALREADY_EXISTS = StatusCodeField(400205, 'Administrator Phone Already Exists', description=u'管理员手机号已经存在')
    # 状态
    ADMINISTRATOR_NOT_ACTIVATED = StatusCodeField(400215, 'Administrator Not Activated', description=u'管理员未激活')
    ADMINISTRATOR_HAS_DISABLED = StatusCodeField(400216, 'Administrator Has Disabled', description=u'管理员已禁用')
    ADMINISTRATOR_HAS_DELETED = StatusCodeField(400217, 'Administrator Has Deleted', description=u'管理员已删除')
    # 管理员
    MAINTENANCE_NOT_FOUND = StatusCodeField(400251, 'Maintenance Not Found', description=u'核销员不存在')


class OperatorStatusCode(BaseStatusCode):
    """ 操作员相关错误码 4003xx """
    OPERATOR_NOT_FOUND = StatusCodeField(400301, 'Operator Not Found', description=u'操作员不存在')
    # 密码
    OPERATOR_PASSWORD_ERROR = StatusCodeField(400302, 'Operator Password Error', description=u'操作员密码错误')
    # 手机号
    OPERATOR_PHONE_ALREADY_EXISTS = StatusCodeField(400305, 'Operator Phone Already Exists', description=u'操作员手机号已经存在')
    # 状态
    OPERATOR_NOT_ACTIVATED = StatusCodeField(400315, 'Operator Not Activated', description=u'操作员未激活')
    OPERATOR_HAS_DISABLED = StatusCodeField(400316, 'Operator Has Disabled', description=u'操作员已禁用')
    OPERATOR_HAS_DELETED = StatusCodeField(400317, 'Operator Has Deleted', description=u'操作员已删除')


class UserStatusCode(BaseStatusCode):
    """ 用户相关错误码  4005xx """
    USER_NOT_FOUND = StatusCodeField(400501, 'User Not Found', description=u'用户不存在')
    USER_PASSWORD_ERROR = StatusCodeField(400502, 'User Password Error', description=u'用户密码错误')
    USERNAME_HAS_REGISTERED = StatusCodeField(400503, 'Username Has Registered', description=u'用户名已注册')
    # 游客
    GUEST_NOT_ALLOWED = StatusCodeField(400511, 'Guest Not ALLOWED', description=u'游客登录未开启')
    # 身份
    USER_NOT_LENSMAN = StatusCodeField(400521, 'User Not Lensman', description=u'用户非摄影师')
    USER_NOT_TOURGUIDE = StatusCodeField(400522, 'User Not Tourguide', description=u'用户非导游')


class PhoneStatusCode(BaseStatusCode):
    """ 手机相关错误码  4006xx """
    PHONE_NOT_FOUND = StatusCodeField(400601, 'Phone Not Found', description=u'手机不存在')


class WechatStatusCode(BaseStatusCode):
    """ 微信相关错误码  4007xx """
    WECHAT_NOT_FOUND = StatusCodeField(400701, 'Wechat Not Found', description=u'微信不存在')
    UNIONID_NOT_FOUND = StatusCodeField(400702, 'Unionid Not Found', description=u'微信 UNIONID 不存在')
    OPENID_NOT_FOUND = StatusCodeField(400703, 'OPENID Not Found', description=u'微信 OPENID 不存在')


class ScreenStatusCode(BaseStatusCode):
    """ 群组/团相关错误码 4030xx """
    QRCODE_NOT_SCAN = StatusCodeField(403001, 'QRCode Not Scan', description=u'二维码未扫描')


class PermissionStatusCode(BaseStatusCode):
    """ 4099xx 权限相关错误码 """
    PERMISSION_DENIED = StatusCodeField(409900, 'Permission Denied', description=u'权限不足')


class CouponStatusCode(BaseStatusCode):
    """ 4050xx 优惠劵相关错误码 """
    COUPON_NOT_FOUND = StatusCodeField(405001, 'Coupon Not Found', description=u'劵不存在')
    COUPON_EXPIRED = StatusCodeField(405002, 'Coupon Expired', description=u'劵已过期')
    COUPON_PERMISSION_DENIED = StatusCodeField(405003, 'Permission Denied', description=u'核销劵权限不足')
    COUPON_HAS_USED = StatusCodeField(405004, 'Coupon Has Used', description=u'劵已核销')