basePath: /
definitions:
  admin.GrantRewardRequest:
    properties:
      activity_id:
        description: 活动ID（可选）
        type: integer
      address_id:
        description: 收货地址ID（可选，实物商品需要）
        type: integer
      product_id:
        description: 商品ID
        type: integer
      quantity:
        description: 发放数量
        minimum: 1
        type: integer
      remark:
        description: 备注
        type: string
      reward_id:
        description: 奖励配置ID（可选）
        type: integer
    required:
    - product_id
    type: object
  admin.GrantRewardResponse:
    properties:
      inventory_ids:
        items:
          type: integer
        type: array
      message:
        type: string
      order_id:
        type: integer
      success:
        type: boolean
    type: object
  admin.activitysvcIssueData:
    properties:
      id:
        type: integer
      issue_number:
        type: string
      sort:
        type: integer
      status:
        type: integer
    type: object
  admin.addCouponRequest:
    properties:
      coupon_id:
        type: integer
    required:
    - coupon_id
    type: object
  admin.addCouponResponse:
    properties:
      success:
        type: boolean
    type: object
  admin.addPointsRequest:
    properties:
      kind:
        type: string
      points:
        type: integer
      remark:
        type: string
      valid_days:
        type: integer
    required:
    - points
    type: object
  admin.addPointsResponse:
    properties:
      success:
        type: boolean
    type: object
  admin.adminUserCouponItem:
    properties:
      coupon_id:
        type: integer
      discount_type:
        type: integer
      discount_value:
        type: integer
      id:
        type: integer
      min_spend:
        type: integer
      name:
        type: string
      scope_type:
        type: integer
      status:
        type: integer
      used_at:
        type: string
      used_order_id:
        type: integer
      valid_end:
        type: string
      valid_start:
        type: string
    type: object
  admin.adminUserItem:
    properties:
      avatar:
        type: string
      created_at:
        type: string
      id:
        type: integer
      invite_code:
        type: string
      inviter_id:
        type: integer
      nickname:
        type: string
    type: object
  admin.assignItemCardRequest:
    properties:
      card_id:
        type: integer
      quantity:
        type: integer
    required:
    - card_id
    type: object
  admin.bannerItem:
    properties:
      id:
        type: integer
      image_url:
        type: string
      link_url:
        type: string
      sort:
        type: integer
      status:
        type: integer
      title:
        type: string
    type: object
  admin.categoryItem:
    properties:
      id:
        type: integer
      name:
        type: string
    type: object
  admin.createActivityRequest:
    properties:
      activity_category_id:
        type: integer
      banner:
        type: string
      end_time:
        type: string
      is_boss:
        type: integer
      name:
        type: string
      price_draw:
        type: integer
      start_time:
        type: string
      status:
        type: integer
    required:
    - activity_category_id
    - name
    type: object
  admin.createAdminRequest:
    properties:
      avatar:
        description: 头像
        type: string
      mobile:
        description: 手机号
        type: string
      nickname:
        description: 昵称
        type: string
      password:
        description: 密码
        type: string
      username:
        description: 用户名
        type: string
    required:
    - nickname
    - password
    - username
    type: object
  admin.createAdminResponse:
    properties:
      message:
        description: 提示信息
        type: string
    type: object
  admin.createBannerRequest:
    properties:
      image_url:
        type: string
      link_url:
        type: string
      sort:
        type: integer
      status:
        type: integer
      title:
        type: string
    required:
    - image_url
    - title
    type: object
  admin.createBannerResponse:
    properties:
      id:
        type: integer
      message:
        type: string
    type: object
  admin.createGuildRequest:
    properties:
      avatar_url:
        type: string
      consume_limit:
        type: integer
      description:
        type: string
      is_open:
        type: integer
      join_mode:
        type: integer
      name:
        type: string
      owner_id:
        type: integer
    required:
    - name
    - owner_id
    type: object
  admin.createGuildResponse:
    properties:
      message:
        type: string
    type: object
  admin.createIssueRequest:
    properties:
      issue_number:
        type: string
      sort:
        type: integer
      status:
        type: integer
    required:
    - issue_number
    type: object
  admin.createItemCardRequest:
    properties:
      activity_category_id:
        type: integer
      activity_id:
        type: integer
      boost_rate_x1000:
        type: integer
      card_type:
        type: integer
      effect_type:
        type: integer
      issue_id:
        type: integer
      max_effect_value_x1000:
        type: integer
      name:
        type: string
      price:
        type: integer
      remark:
        type: string
      reward_multiplier_x1000:
        type: integer
      scope_type:
        type: integer
      stacking_strategy:
        type: integer
      status:
        type: integer
      valid_end_unix:
        type: integer
      valid_start_unix:
        type: integer
    required:
    - card_type
    - effect_type
    - name
    - price
    - scope_type
    type: object
  admin.createItemCardResponse:
    properties:
      id:
        type: integer
      message:
        type: string
    type: object
  admin.createProductCategoryRequest:
    properties:
      name:
        type: string
      parent_id:
        type: integer
      status:
        type: integer
    required:
    - name
    type: object
  admin.createProductCategoryResponse:
    properties:
      id:
        type: integer
      message:
        type: string
    type: object
  admin.createProductRequest:
    properties:
      category_id:
        type: integer
      images_json:
        type: string
      name:
        type: string
      price:
        type: integer
      status:
        type: integer
      stock:
        type: integer
    required:
    - category_id
    - name
    - price
    - stock
    type: object
  admin.createProductResponse:
    properties:
      id:
        type: integer
      message:
        type: string
    type: object
  admin.createRewardsRequest:
    properties:
      rewards:
        items:
          $ref: '#/definitions/admin.rewardItem'
        type: array
    required:
    - rewards
    type: object
  admin.deleteAdminRequest:
    properties:
      ids:
        description: 编号(多个用,分割)
        type: string
    required:
    - ids
    type: object
  admin.deleteAdminResponse:
    properties:
      message:
        description: 提示信息
        type: string
    type: object
  admin.deleteGuildResponse:
    properties:
      message:
        type: string
    type: object
  admin.itemCardListItem:
    properties:
      activity_category_id:
        description: 指定活动分类ID（可空）
        type: integer
      activity_id:
        description: 指定活动ID（可空）
        type: integer
      boost_rate_x1000:
        description: 概率提升（千分比，+20%=200）
        type: integer
      card_type:
        description: 卡类型：1双倍奖励 2概率提升 等
        type: integer
      created_at:
        description: 创建时间
        type: string
      effect_type:
        description: 效果类型：1奖励倍数 2概率提升 等
        type: integer
      id:
        description: 主键ID
        type: integer
      issue_id:
        description: 指定期ID（可空）
        type: integer
      max_effect_value_x1000:
        description: 效果上限（千分比）
        type: integer
      name:
        description: 卡名称
        type: string
      price:
        description: 售卖价格（分）
        type: integer
      remark:
        description: 备注
        type: string
      reward_multiplier_x1000:
        description: 奖励倍数（千分比，×2=2000）
        type: integer
      scope_type:
        description: 适用范围：1全局 2活动分类 3活动 4期
        type: integer
      stacking_strategy:
        description: 叠加策略：1禁止 2同类叠加-上限 3取最大值 4乘法叠加
        type: integer
      status:
        description: 状态：1启用 2停用
        type: integer
      updated_at:
        description: 更新时间
        type: string
      valid_end:
        description: 有效期结束
        type: string
      valid_start:
        description: 有效期开始
        type: string
    type: object
  admin.listBannersResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/admin.bannerItem'
        type: array
      page:
        type: integer
      page_size:
        type: integer
      total:
        type: integer
    type: object
  admin.listCategoriesResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/admin.categoryItem'
        type: array
    type: object
  admin.listCouponsResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/admin.adminUserCouponItem'
        type: array
      page:
        type: integer
      page_size:
        type: integer
      total:
        type: integer
    type: object
  admin.listData:
    properties:
      avatar:
        description: 头像
        type: string
      created_at:
        description: 创建时间
        type: string
      id:
        description: 编号
        type: integer
      mobile:
        description: 手机号
        type: string
      nickname:
        description: 昵称
        type: string
      updated_at:
        description: 更新时间
        type: string
      username:
        description: 用户名
        type: string
    type: object
  admin.listGuildMembersResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/admin.memberItem'
        type: array
      page:
        type: integer
      page_size:
        type: integer
      total:
        type: integer
    type: object
  admin.listInventoryResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/user.InventoryWithProduct'
        type: array
      page:
        type: integer
      page_size:
        type: integer
      total:
        type: integer
    type: object
  admin.listInvitesResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/admin.adminUserItem'
        type: array
      page:
        type: integer
      page_size:
        type: integer
      total:
        type: integer
    type: object
  admin.listIssuesResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/admin.activitysvcIssueData'
        type: array
      page:
        type: integer
      page_size:
        type: integer
      total:
        type: integer
    type: object
  admin.listItemCardsResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/admin.itemCardListItem'
        type: array
      page:
        type: integer
      page_size:
        type: integer
      total:
        type: integer
    type: object
  admin.listOrdersResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/user.OrderWithItems'
        type: array
      page:
        type: integer
      page_size:
        type: integer
      total:
        type: integer
    type: object
  admin.listPointsResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/model.UserPointsLedger'
        type: array
      page:
        type: integer
      page_size:
        type: integer
      total:
        type: integer
    type: object
  admin.listProductCategoriesResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/admin.productCategoryListItem'
        type: array
      page:
        type: integer
      page_size:
        type: integer
      total:
        type: integer
    type: object
  admin.listProductsResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/admin.productItem'
        type: array
      page:
        type: integer
      page_size:
        type: integer
      total:
        type: integer
    type: object
  admin.listResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/admin.listData'
        type: array
      page:
        description: 当前页码
        type: integer
      page_size:
        description: 每页返回的数据量
        type: integer
      total:
        description: 符合查询条件的总记录数
        type: integer
    type: object
  admin.listRewardsResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/admin.rewardItem'
        type: array
    type: object
  admin.listUserItemCardsResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/user.ItemCardWithTemplate'
        type: array
      page:
        type: integer
      page_size:
        type: integer
      total:
        type: integer
    type: object
  admin.listUsersResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/admin.adminUserItem'
        type: array
      page:
        type: integer
      page_size:
        type: integer
      total:
        type: integer
    type: object
  admin.loginRequest:
    properties:
      password:
        description: 密码 (MD5加密后的密码)
        type: string
      username:
        description: 用户名
        type: string
    required:
    - password
    - username
    type: object
  admin.loginResponse:
    properties:
      is_super:
        description: 是否是超级管理员(1:是 0:否)
        type: integer
      token:
        description: 登录成功后颁发的 Token
        type: string
    type: object
  admin.memberItem:
    properties:
      id:
        type: integer
      role:
        type: string
      start_time:
        type: string
      user_id:
        type: integer
    type: object
  admin.modifyActivityRequest:
    properties:
      activity_category_id:
        type: integer
      banner:
        type: string
      end_time:
        type: string
      is_boss:
        type: integer
      name:
        type: string
      price_draw:
        type: integer
      start_time:
        type: string
      status:
        type: integer
    type: object
  admin.modifyAdminRequest:
    properties:
      avatar:
        description: 头像
        type: string
      mobile:
        description: 手机号
        type: string
      nickname:
        description: 昵称
        type: string
      password:
        description: 密码
        type: string
      username:
        description: 用户名
        type: string
    required:
    - nickname
    - username
    type: object
  admin.modifyAdminResponse:
    properties:
      message:
        description: 提示信息
        type: string
    type: object
  admin.modifyBannerRequest:
    properties:
      image_url:
        type: string
      link_url:
        type: string
      sort:
        type: integer
      status:
        type: integer
      title:
        type: string
    type: object
  admin.modifyGuildRequest:
    properties:
      avatar_url:
        type: string
      consume_limit:
        type: integer
      description:
        type: string
      is_open:
        type: integer
      join_mode:
        type: integer
      name:
        type: string
      status:
        type: integer
    type: object
  admin.modifyGuildResponse:
    properties:
      message:
        type: string
    type: object
  admin.modifyIssueRequest:
    properties:
      issue_number:
        type: string
      sort:
        type: integer
      status:
        type: integer
    type: object
  admin.modifyItemCardRequest:
    properties:
      activity_category_id:
        type: integer
      activity_id:
        type: integer
      boost_rate_x1000:
        type: integer
      card_type:
        type: integer
      effect_type:
        type: integer
      issue_id:
        type: integer
      max_effect_value_x1000:
        type: integer
      name:
        type: string
      price:
        type: integer
      remark:
        type: string
      reward_multiplier_x1000:
        type: integer
      scope_type:
        type: integer
      stacking_strategy:
        type: integer
      status:
        type: integer
      valid_end_unix:
        type: integer
      valid_start_unix:
        type: integer
    type: object
  admin.modifyProductCategoryRequest:
    properties:
      name:
        type: string
      parent_id:
        type: integer
      status:
        type: integer
    type: object
  admin.modifyProductRequest:
    properties:
      category_id:
        type: integer
      images_json:
        type: string
      name:
        type: string
      price:
        type: integer
      status:
        type: integer
      stock:
        type: integer
    type: object
  admin.modifyRewardRequest:
    properties:
      is_boss:
        type: integer
      level:
        type: integer
      name:
        type: string
      original_qty:
        type: integer
      product_id:
        type: integer
      quantity:
        type: integer
      sort:
        type: integer
      weight:
        type: integer
    type: object
  admin.pcSimpleMessage:
    properties:
      message:
        type: string
    type: object
  admin.pointsBalanceResponse:
    properties:
      balance:
        type: integer
    type: object
  admin.productCategoryListItem:
    properties:
      id:
        type: integer
      name:
        type: string
      parent_id:
        type: integer
      status:
        type: integer
    type: object
  admin.productItem:
    properties:
      category_id:
        type: integer
      id:
        type: integer
      images_json:
        type: string
      name:
        type: string
      price:
        type: integer
      sales:
        type: integer
      status:
        type: integer
      stock:
        type: integer
    type: object
  admin.rewardItem:
    properties:
      id:
        type: integer
      is_boss:
        type: integer
      level:
        type: integer
      name:
        type: string
      original_qty:
        type: integer
      product_id:
        type: integer
      quantity:
        type: integer
      sort:
        type: integer
      weight:
        type: integer
    required:
    - level
    - name
    - original_qty
    - quantity
    - weight
    type: object
  admin.roleItem:
    properties:
      createTime:
        type: string
      description:
        type: string
      enabled:
        type: boolean
      roleCode:
        type: string
      roleId:
        type: integer
      roleName:
        type: string
    type: object
  admin.roleListResponse:
    properties:
      current:
        type: integer
      records:
        items:
          $ref: '#/definitions/admin.roleItem'
        type: array
      size:
        type: integer
      total:
        type: integer
    type: object
  admin.simpleMessage:
    properties:
      message:
        type: string
    type: object
  admin.simpleMessageResponse:
    properties:
      message:
        type: string
    type: object
  admin.userListItem:
    properties:
      avatar:
        type: string
      createBy:
        type: string
      createTime:
        type: string
      id:
        type: integer
      nickName:
        type: string
      status:
        type: string
      updateBy:
        type: string
      updateTime:
        type: string
      userEmail:
        type: string
      userGender:
        type: string
      userName:
        type: string
      userPhone:
        type: string
      userRoles:
        items:
          type: string
        type: array
    type: object
  admin.userListResponse:
    properties:
      current:
        type: integer
      records:
        items:
          $ref: '#/definitions/admin.userListItem'
        type: array
      size:
        type: integer
      total:
        type: integer
    type: object
  app.activityItem:
    properties:
      activity_category_id:
        type: integer
      banner:
        type: string
      category_name:
        type: string
      id:
        type: integer
      is_boss:
        type: integer
      name:
        type: string
      price_draw:
        type: integer
      status:
        type: integer
    type: object
  app.addAddressRequest:
    properties:
      address:
        type: string
      city:
        type: string
      district:
        type: string
      is_default:
        type: boolean
      mobile:
        type: string
      name:
        type: string
      province:
        type: string
    type: object
  app.addAddressResponse:
    properties:
      id:
        type: integer
    type: object
  app.appBannerItem:
    properties:
      id:
        type: integer
      image_url:
        type: string
      link_url:
        type: string
      sort:
        type: integer
      title:
        type: string
    type: object
  app.bindPhoneRequest:
    properties:
      code:
        type: string
    type: object
  app.bindPhoneResponse:
    properties:
      mobile:
        type: string
      success:
        type: boolean
    type: object
  app.couponItem:
    properties:
      amount:
        type: integer
      id:
        type: integer
      name:
        type: string
      rules:
        type: string
      status:
        type: integer
      valid_end:
        type: string
      valid_start:
        type: string
    type: object
  app.drawLogItem:
    properties:
      current_level:
        type: integer
      id:
        type: integer
      is_winner:
        type: integer
      issue_id:
        type: integer
      level:
        type: integer
      order_id:
        type: integer
      reward_id:
        type: integer
      user_id:
        type: integer
    type: object
  app.guildItem:
    properties:
      avatar_url:
        type: string
      consume_limit:
        type: integer
      description:
        type: string
      id:
        type: integer
      is_open:
        type: integer
      join_mode:
        type: integer
      name:
        type: string
      owner_id:
        type: integer
      status:
        type: integer
    type: object
  app.inviteUserItem:
    properties:
      avatar:
        type: string
      id:
        type: integer
      invite_code:
        type: string
      nickname:
        type: string
    type: object
  app.issueItem:
    properties:
      id:
        type: integer
      issue_number:
        type: string
      sort:
        type: integer
      status:
        type: integer
    type: object
  app.joinGuildRequest:
    properties:
      user_id:
        type: integer
    required:
    - user_id
    type: object
  app.listActivitiesResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/app.activityItem'
        type: array
      page:
        type: integer
      page_size:
        type: integer
      total:
        type: integer
    type: object
  app.listAddressesResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/model.UserAddresses'
        type: array
      page:
        type: integer
      page_size:
        type: integer
      total:
        type: integer
    type: object
  app.listAppBannersResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/app.appBannerItem'
        type: array
    type: object
  app.listCouponsResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/app.couponItem'
        type: array
      page:
        type: integer
      page_size:
        type: integer
      total:
        type: integer
    type: object
  app.listDrawLogsResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/app.drawLogItem'
        type: array
      page:
        type: integer
      page_size:
        type: integer
      total:
        type: integer
    type: object
  app.listGuildsResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/app.guildItem'
        type: array
      page:
        type: integer
      page_size:
        type: integer
      total:
        type: integer
    type: object
  app.listInvitesResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/app.inviteUserItem'
        type: array
      page:
        type: integer
      page_size:
        type: integer
      total:
        type: integer
    type: object
  app.listIssuesResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/app.issueItem'
        type: array
      page:
        type: integer
      page_size:
        type: integer
      total:
        type: integer
    type: object
  app.listMembersResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/app.memberItem'
        type: array
      page:
        type: integer
      page_size:
        type: integer
      total:
        type: integer
    type: object
  app.listOrdersResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/model.Orders'
        type: array
      page:
        type: integer
      page_size:
        type: integer
      total:
        type: integer
    type: object
  app.listPointsResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/model.UserPointsLedger'
        type: array
      page:
        type: integer
      page_size:
        type: integer
      total:
        type: integer
    type: object
  app.listRewardsResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/app.rewardItem'
        type: array
    type: object
  app.listUserItemCardUsesResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/model.ActivityDrawEffects'
        type: array
      page:
        type: integer
      page_size:
        type: integer
      total:
        type: integer
    type: object
  app.listUserItemCardsResponse:
    properties:
      list:
        items:
          $ref: '#/definitions/user.ItemCardWithTemplate'
        type: array
      page:
        type: integer
      page_size:
        type: integer
      total:
        type: integer
    type: object
  app.memberItem:
    properties:
      id:
        type: integer
      role:
        type: string
      start_time:
        type: string
      user_id:
        type: integer
    type: object
  app.modifyUserRequest:
    properties:
      avatar:
        type: string
      nickname:
        type: string
    type: object
  app.modifyUserResponse:
    properties:
      user:
        $ref: '#/definitions/app.userItem'
    type: object
  app.okDeleteResponse:
    properties:
      ok:
        type: boolean
    type: object
  app.okResponse:
    properties:
      ok:
        type: boolean
    type: object
  app.pointsBalanceResponse:
    properties:
      balance:
        type: integer
    type: object
  app.rewardItem:
    properties:
      is_boss:
        type: integer
      level:
        type: integer
      name:
        type: string
      original_qty:
        type: integer
      product_id:
        type: integer
      quantity:
        type: integer
      sort:
        type: integer
      weight:
        type: integer
    type: object
  app.simpleMessageResponse:
    properties:
      message:
        type: string
    type: object
  app.userItem:
    properties:
      avatar:
        type: string
      id:
        type: integer
      invite_code:
        type: string
      inviter_id:
        type: integer
      nickname:
        type: string
    type: object
  app.userStatsResponse:
    properties:
      coupon_count:
        type: integer
      item_card_count:
        type: integer
      points_balance:
        type: integer
    type: object
  app.weixinLoginRequest:
    properties:
      code:
        type: string
      invite_code:
        type: string
    type: object
  app.weixinLoginResponse:
    properties:
      avatar:
        type: string
      invite_code:
        type: string
      nickname:
        type: string
      token:
        type: string
      user_id:
        type: integer
    type: object
  code.Failure:
    properties:
      code:
        description: 业务码
        type: integer
      message:
        description: 描述信息
        type: string
    type: object
  model.Activities:
    properties:
      activity_category_id:
        description: 活动所属分类ID（activity_categories.id，可空）
        type: integer
      banner:
        description: 活动横幅/海报URL
        type: string
      created_at:
        description: 创建时间
        type: string
      end_time:
        description: 结束时间
        type: string
      id:
        description: 主键ID
        type: integer
      is_boss:
        description: 'Boss: 1 是 0 不是'
        type: integer
      name:
        description: 活动名称
        type: string
      price_draw:
        description: 活动门票价格
        type: integer
      start_time:
        description: 开始时间
        type: string
      status:
        description: 状态：1进行中 2下线
        type: integer
      updated_at:
        description: 更新时间
        type: string
    type: object
  model.ActivityDrawEffects:
    properties:
      activity_category_id:
        description: 范围快照-活动分类ID
        type: integer
      activity_id:
        description: 范围快照-活动ID
        type: integer
      applied:
        description: 是否生效：0否 1是
        type: integer
      card_type:
        description: 卡类型快照
        type: integer
      created_at:
        description: 创建时间
        type: string
      draw_log_id:
        description: 抽奖日志ID（activity_draw_logs.id）
        type: integer
      effect_type:
        description: 效果类型快照
        type: integer
      id:
        description: 主键ID
        type: integer
      issue_id:
        description: 范围快照-期ID
        type: integer
      probability_delta_x1000:
        description: 概率相对增益（千分比）
        type: integer
      remark:
        description: 备注
        type: string
      reward_multiplier_x1000:
        description: 奖励倍数（千分比）
        type: integer
      scope_type:
        description: 适用范围快照
        type: integer
      system_item_card_id:
        description: 卡模板ID（system_item_cards.id）
        type: integer
      user_id:
        description: 用户ID（users.id）
        type: integer
      user_item_card_id:
        description: 用户卡实例ID（user_item_cards.id）
        type: integer
    type: object
  model.Guild:
    properties:
      avatar_url:
        description: 工会头像
        type: string
      consume_limit:
        description: 加入工会消费流水最低限额(分)
        type: integer
      created_at:
        description: 创建时间
        type: string
      description:
        description: 工会描述
        type: string
      id:
        description: 主键ID
        type: integer
      is_open:
        description: 1 公开 2 私有
        type: integer
      join_mode:
        description: '加入方式 1: 审核通过 2: 自动通过 3. 消费流水'
        type: integer
      name:
        description: 公会名称
        type: string
      owner_id:
        description: 会长用户ID
        type: integer
      status:
        description: 状态：1正常 2解散
        type: integer
    type: object
  model.OrderItems:
    properties:
      created_at:
        description: 创建时间
        type: string
      id:
        description: 主键ID
        type: integer
      order_id:
        description: 订单ID（orders.id）
        type: integer
      price:
        description: 成交单价（分）
        type: integer
      product_id:
        description: 商品ID（products.id）
        type: integer
      product_images:
        description: 商品图片快照（JSON）
        type: string
      quantity:
        description: 购买数量
        type: integer
      status:
        description: 行状态：1正常 2取消
        type: integer
      title:
        description: 商品标题快照
        type: string
      total_amount:
        description: 行应付总额（分）
        type: integer
    type: object
  model.Orders:
    properties:
      actual_amount:
        description: 实际支付金额（分）
        type: integer
      cancelled_at:
        description: 取消时间
        type: string
      created_at:
        description: 创建时间
        type: string
      discount_amount:
        description: 优惠券抵扣金额（分）
        type: integer
      id:
        description: 主键ID
        type: integer
      is_consumed:
        description: 是否已履约/消耗（对虚拟资产）
        type: integer
      order_no:
        description: 业务订单号（唯一）
        type: string
      paid_at:
        description: 支付完成时间
        type: string
      pay_preorder_id:
        description: 关联预支付单ID（payment_preorder.id）
        type: integer
      points_amount:
        description: 积分抵扣金额（分）
        type: integer
      points_ledger_id:
        description: 积分扣减流水ID（user_points_ledger.id）
        type: integer
      remark:
        description: 备注
        type: string
      source_type:
        description: 来源：1商城直购 2抽奖票据 3其他
        type: integer
      status:
        description: 订单状态：1待支付 2已支付 3已取消 4已退款
        type: integer
      total_amount:
        description: 订单总金额（分）
        type: integer
      updated_at:
        description: 更新时间
        type: string
      user_address_id:
        description: 收货地址ID（user_addresses.id）
        type: integer
      user_id:
        description: 下单用户ID（user_members.id）
        type: integer
    type: object
  model.UserAddresses:
    properties:
      address:
        description: 详细地址
        type: string
      city:
        description: 市
        type: string
      created_at:
        description: 创建时间
        type: string
      default_user_unique:
        description: 用于唯一约束的生成列：默认地址→user_id
        type: integer
      district:
        description: 区/县
        type: string
      id:
        description: 主键ID
        type: integer
      is_default:
        description: 是否默认地址：0否 1是
        type: integer
      mobile:
        description: 收件人手机号
        type: string
      name:
        description: 收件人姓名
        type: string
      province:
        description: 省
        type: string
      updated_at:
        description: 更新时间
        type: string
      user_id:
        description: 用户ID（user_members.id）
        type: integer
    type: object
  model.UserPointsLedger:
    properties:
      action:
        description: 变更动作：signin/order_deduct/refund_restore/manual
        type: string
      created_at:
        description: 创建时间
        type: string
      id:
        description: 主键ID
        type: integer
      points:
        description: 积分变动值（正增负减）
        type: integer
      ref_id:
        description: 关联ID（如订单号/记录ID）
        type: string
      ref_table:
        description: 关联表名（如orders/payment_refund）
        type: string
      remark:
        description: 备注
        type: string
      user_id:
        description: 用户ID（user_members.id）
        type: integer
    type: object
  user.InventoryWithProduct:
    properties:
      activity_id:
        description: 来源活动ID
        type: integer
      created_at:
        description: 创建时间
        type: string
      id:
        description: 主键ID
        type: integer
      order_id:
        description: 来源订单ID
        type: integer
      product_id:
        description: 资产对应商品ID（实物奖/商品）
        type: integer
      product_images:
        type: string
      product_name:
        type: string
      remark:
        description: 备注
        type: string
      reward_id:
        description: 来源奖励ID（activity_reward_settings.id）
        type: integer
      status:
        description: 状态：1持有 2作废 3已使用/发货
        type: integer
      updated_at:
        description: 更新时间
        type: string
      user_id:
        description: 资产归属用户ID
        type: integer
    type: object
  user.ItemCardWithTemplate:
    properties:
      card_id:
        description: 卡模板ID（system_item_cards.id）
        type: integer
      card_type:
        type: integer
      created_at:
        description: 创建时间
        type: string
      effect_type:
        type: integer
      id:
        description: 主键ID
        type: integer
      name:
        type: string
      remark:
        type: string
      scope_type:
        type: integer
      stacking_strategy:
        type: integer
      status:
        description: 状态：1未使用 2已使用 3已过期
        type: integer
      updated_at:
        description: 更新时间
        type: string
      used_activity_id:
        description: 使用时活动ID
        type: integer
      used_at:
        description: 使用时间
        type: string
      used_draw_log_id:
        description: 使用关联抽奖日志ID（activity_draw_logs.id）
        type: integer
      used_issue_id:
        description: 使用时期ID
        type: integer
      user_id:
        description: 用户ID（users.id）
        type: integer
      valid_end:
        description: 有效期结束
        type: string
      valid_start:
        description: 有效期开始
        type: string
    type: object
  user.OrderWithItems:
    properties:
      actual_amount:
        description: 实际支付金额（分）
        type: integer
      cancelled_at:
        description: 取消时间
        type: string
      created_at:
        description: 创建时间
        type: string
      discount_amount:
        description: 优惠券抵扣金额（分）
        type: integer
      id:
        description: 主键ID
        type: integer
      is_consumed:
        description: 是否已履约/消耗（对虚拟资产）
        type: integer
      items:
        items:
          $ref: '#/definitions/model.OrderItems'
        type: array
      order_no:
        description: 业务订单号（唯一）
        type: string
      paid_at:
        description: 支付完成时间
        type: string
      pay_preorder_id:
        description: 关联预支付单ID（payment_preorder.id）
        type: integer
      points_amount:
        description: 积分抵扣金额（分）
        type: integer
      points_ledger_id:
        description: 积分扣减流水ID（user_points_ledger.id）
        type: integer
      remark:
        description: 备注
        type: string
      source_type:
        description: 来源：1商城直购 2抽奖票据 3其他
        type: integer
      status:
        description: 订单状态：1待支付 2已支付 3已取消 4已退款
        type: integer
      total_amount:
        description: 订单总金额（分）
        type: integer
      updated_at:
        description: 更新时间
        type: string
      user_address_id:
        description: 收货地址ID（user_addresses.id）
        type: integer
      user_id:
        description: 下单用户ID（user_members.id）
        type: integer
    type: object
info:
  contact: {}
  title: mini-chat 接口文档
  version: v0.0.1
paths:
  /api/admin/{id}:
    put:
      consumes:
      - application/json
      description: 编辑客服
      parameters:
      - description: 编号ID
        in: path
        name: id
        required: true
        type: string
      - description: 请求参数
        in: body
        name: RequestBody
        required: true
        schema:
          $ref: '#/definitions/admin.modifyAdminRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.modifyAdminResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 编辑客服
      tags:
      - 管理端.客服管理
  /api/admin/activities:
    post:
      consumes:
      - application/json
      description: 创建活动，配置基本信息与分类、Boss标签
      parameters:
      - description: 请求参数
        in: body
        name: RequestBody
        required: true
        schema:
          $ref: '#/definitions/admin.createActivityRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.simpleMessageResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 创建活动
      tags:
      - 管理端.活动
  /api/admin/activities/{activity_id}:
    delete:
      consumes:
      - application/json
      description: 删除指定活动
      parameters:
      - description: 活动ID
        in: path
        name: activity_id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.simpleMessageResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 删除活动
      tags:
      - 管理端.活动
    get:
      consumes:
      - application/json
      description: 查看指定活动的详细信息
      parameters:
      - description: 活动ID
        in: path
        name: activity_id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/model.Activities'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 查看活动详情
      tags:
      - 管理端.活动
    put:
      consumes:
      - application/json
      description: 修改活动基本信息、分类、Boss标签等
      parameters:
      - description: 活动ID
        in: path
        name: activity_id
        required: true
        type: integer
      - description: 请求参数
        in: body
        name: RequestBody
        required: true
        schema:
          $ref: '#/definitions/admin.modifyActivityRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.simpleMessageResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 修改活动
      tags:
      - 管理端.活动
  /api/admin/activities/{activity_id}/issues:
    get:
      consumes:
      - application/json
      description: 获取指定活动的期数列表，支持分页
      parameters:
      - description: 活动ID
        in: path
        name: activity_id
        required: true
        type: integer
      - default: 1
        description: 页码
        in: query
        name: page
        required: true
        type: integer
      - default: 20
        description: 每页数量，最多100
        in: query
        name: page_size
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.listIssuesResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 查看活动期数
      tags:
      - 管理端.活动
    post:
      consumes:
      - application/json
      description: 为指定活动创建一个新的期数
      parameters:
      - description: 活动ID
        in: path
        name: activity_id
        required: true
        type: integer
      - description: 请求参数
        in: body
        name: RequestBody
        required: true
        schema:
          $ref: '#/definitions/admin.createIssueRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.simpleMessage'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 创建活动期数
      tags:
      - 管理端.活动
  /api/admin/activities/{activity_id}/issues/{issue_id}:
    delete:
      consumes:
      - application/json
      description: 删除指定期数
      parameters:
      - description: 活动ID
        in: path
        name: activity_id
        required: true
        type: integer
      - description: 期ID
        in: path
        name: issue_id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.simpleMessage'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 删除活动期数
      tags:
      - 管理端.活动
    put:
      consumes:
      - application/json
      description: 修改指定期数的信息
      parameters:
      - description: 活动ID
        in: path
        name: activity_id
        required: true
        type: integer
      - description: 期ID
        in: path
        name: issue_id
        required: true
        type: integer
      - description: 请求参数
        in: body
        name: RequestBody
        required: true
        schema:
          $ref: '#/definitions/admin.modifyIssueRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.simpleMessage'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 修改活动期数
      tags:
      - 管理端.活动
  /api/admin/activities/{activity_id}/issues/{issue_id}/rewards:
    get:
      consumes:
      - application/json
      description: 查看指定期数的奖励配置列表
      parameters:
      - description: 活动ID
        in: path
        name: activity_id
        required: true
        type: integer
      - description: 期ID
        in: path
        name: issue_id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.listRewardsResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 查看期数奖品
      tags:
      - 管理端.活动
    post:
      consumes:
      - application/json
      description: 为指定期数批量创建奖励配置
      parameters:
      - description: 活动ID
        in: path
        name: activity_id
        required: true
        type: integer
      - description: 期ID
        in: path
        name: issue_id
        required: true
        type: integer
      - description: 请求参数
        in: body
        name: RequestBody
        required: true
        schema:
          $ref: '#/definitions/admin.createRewardsRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.simpleMessageResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 创建期数奖品
      tags:
      - 管理端.活动
  /api/admin/activities/{activity_id}/issues/{issue_id}/rewards/{reward_id}:
    delete:
      consumes:
      - application/json
      parameters:
      - description: 活动ID
        in: path
        name: activity_id
        required: true
        type: integer
      - description: 期ID
        in: path
        name: issue_id
        required: true
        type: integer
      - description: 奖励ID
        in: path
        name: reward_id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.simpleMessageResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 删除期数奖励
      tags:
      - 管理端.活动
    put:
      consumes:
      - application/json
      parameters:
      - description: 活动ID
        in: path
        name: activity_id
        required: true
        type: integer
      - description: 期ID
        in: path
        name: issue_id
        required: true
        type: integer
      - description: 奖励ID
        in: path
        name: reward_id
        required: true
        type: integer
      - description: 请求参数
        in: body
        name: RequestBody
        required: true
        schema:
          $ref: '#/definitions/admin.modifyRewardRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.simpleMessageResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 更新期数奖励
      tags:
      - 管理端.活动
  /api/admin/activity_categories:
    get:
      consumes:
      - application/json
      description: 获取启用状态的活动分类列表
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.listCategoriesResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 活动分类列表
      tags:
      - 管理端.活动
  /api/admin/banners:
    get:
      consumes:
      - application/json
      parameters:
      - description: 状态
        in: query
        name: status
        type: integer
      - default: 1
        description: 页码
        in: query
        name: page
        required: true
        type: integer
      - default: 20
        description: 每页数量
        in: query
        name: page_size
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.listBannersResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 查看轮播图列表
      tags:
      - 管理端.运营
    post:
      consumes:
      - application/json
      parameters:
      - description: 请求参数
        in: body
        name: RequestBody
        required: true
        schema:
          $ref: '#/definitions/admin.createBannerRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.createBannerResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 创建轮播图
      tags:
      - 管理端.运营
  /api/admin/banners/{banner_id}:
    delete:
      consumes:
      - application/json
      parameters:
      - description: 轮播图ID
        in: path
        name: banner_id
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.pcSimpleMessage'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 删除轮播图
      tags:
      - 管理端.运营
    put:
      consumes:
      - application/json
      parameters:
      - description: 轮播图ID
        in: path
        name: banner_id
        required: true
        type: string
      - description: 请求参数
        in: body
        name: RequestBody
        required: true
        schema:
          $ref: '#/definitions/admin.modifyBannerRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.pcSimpleMessage'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 修改轮播图
      tags:
      - 管理端.运营
  /api/admin/create:
    post:
      consumes:
      - application/json
      description: 新增客服
      parameters:
      - description: 请求参数
        in: body
        name: RequestBody
        required: true
        schema:
          $ref: '#/definitions/admin.createAdminRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.createAdminResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 新增客服
      tags:
      - 管理端.客服管理
  /api/admin/delete:
    post:
      consumes:
      - application/json
      description: 删除客服
      parameters:
      - description: 请求参数
        in: body
        name: RequestBody
        required: true
        schema:
          $ref: '#/definitions/admin.deleteAdminRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.deleteAdminResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 删除客服
      tags:
      - 管理端.客服管理
  /api/admin/guilds:
    post:
      consumes:
      - application/json
      description: 创建工会并将首位成员设为会长
      parameters:
      - description: 请求参数
        in: body
        name: RequestBody
        required: true
        schema:
          $ref: '#/definitions/admin.createGuildRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.createGuildResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 创建工会
      tags:
      - 管理端.工会
  /api/admin/guilds/{guild_id}:
    delete:
      consumes:
      - application/json
      description: 删除指定工会
      parameters:
      - description: 工会ID
        in: path
        name: guild_id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.deleteGuildResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 删除工会
      tags:
      - 管理端.工会
    get:
      consumes:
      - application/json
      description: 查看指定工会详情
      parameters:
      - description: 工会ID
        in: path
        name: guild_id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/model.Guild'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 查看工会详情
      tags:
      - 管理端.工会
    put:
      consumes:
      - application/json
      description: 修改指定工会信息
      parameters:
      - description: 工会ID
        in: path
        name: guild_id
        required: true
        type: integer
      - description: 请求参数
        in: body
        name: RequestBody
        required: true
        schema:
          $ref: '#/definitions/admin.modifyGuildRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.modifyGuildResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 修改工会
      tags:
      - 管理端.工会
  /api/admin/guilds/{guild_id}/members:
    get:
      consumes:
      - application/json
      description: 查看指定工会的成员列表
      parameters:
      - description: 工会ID
        in: path
        name: guild_id
        required: true
        type: integer
      - default: 1
        description: 页码
        in: query
        name: page
        required: true
        type: integer
      - default: 20
        description: 每页数量，最多100
        in: query
        name: page_size
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.listGuildMembersResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 查看工会成员
      tags:
      - 管理端.工会
  /api/admin/list:
    get:
      consumes:
      - application/json
      description: 客服列表
      parameters:
      - description: 用户名
        in: query
        name: username
        type: string
      - description: 昵称
        in: query
        name: nickname
        type: string
      - default: 1
        description: 当前页码
        in: query
        name: page
        required: true
        type: integer
      - default: 20
        description: 每页返回的数据量，最多 100 条
        in: query
        name: page_size
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.listResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 客服列表
      tags:
      - 管理端.客服管理
  /api/admin/login:
    post:
      consumes:
      - application/json
      description: 管理员登录
      parameters:
      - description: 请求参数
        in: body
        name: RequestBody
        required: true
        schema:
          $ref: '#/definitions/admin.loginRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.loginResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      summary: 管理员登录
      tags:
      - 管理端.登录
  /api/admin/product_categories:
    get:
      consumes:
      - application/json
      parameters:
      - description: 名称
        in: query
        name: name
        type: string
      - description: 状态
        in: query
        name: status
        type: integer
      - default: 1
        description: 页码
        in: query
        name: page
        required: true
        type: integer
      - default: 20
        description: 每页数量
        in: query
        name: page_size
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.listProductCategoriesResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 查看商品分类列表
      tags:
      - 管理端.商品
    post:
      consumes:
      - application/json
      parameters:
      - description: 请求参数
        in: body
        name: RequestBody
        required: true
        schema:
          $ref: '#/definitions/admin.createProductCategoryRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.createProductCategoryResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 创建商品分类
      tags:
      - 管理端.商品
  /api/admin/product_categories/{category_id}:
    delete:
      consumes:
      - application/json
      parameters:
      - description: 分类ID
        in: path
        name: category_id
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.pcSimpleMessage'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 删除商品分类
      tags:
      - 管理端.商品
    put:
      consumes:
      - application/json
      parameters:
      - description: 分类ID
        in: path
        name: category_id
        required: true
        type: string
      - description: 请求参数
        in: body
        name: RequestBody
        required: true
        schema:
          $ref: '#/definitions/admin.modifyProductCategoryRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.pcSimpleMessage'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 修改商品分类
      tags:
      - 管理端.商品
  /api/admin/products:
    get:
      consumes:
      - application/json
      parameters:
      - description: 名称
        in: query
        name: name
        type: string
      - description: 分类ID
        in: query
        name: category_id
        type: integer
      - description: 状态
        in: query
        name: status
        type: integer
      - default: 1
        description: 页码
        in: query
        name: page
        required: true
        type: integer
      - default: 20
        description: 每页数量
        in: query
        name: page_size
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.listProductsResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 查看商品列表
      tags:
      - 管理端.商品
    post:
      consumes:
      - application/json
      parameters:
      - description: 请求参数
        in: body
        name: RequestBody
        required: true
        schema:
          $ref: '#/definitions/admin.createProductRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.createProductResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 创建商品
      tags:
      - 管理端.商品
  /api/admin/products/{product_id}:
    delete:
      consumes:
      - application/json
      parameters:
      - description: 商品ID
        in: path
        name: product_id
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.pcSimpleMessage'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 删除商品
      tags:
      - 管理端.商品
    put:
      consumes:
      - application/json
      parameters:
      - description: 商品ID
        in: path
        name: product_id
        required: true
        type: string
      - description: 请求参数
        in: body
        name: RequestBody
        required: true
        schema:
          $ref: '#/definitions/admin.modifyProductRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.pcSimpleMessage'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 修改商品
      tags:
      - 管理端.商品
  /api/admin/system_item_cards:
    get:
      consumes:
      - application/json
      description: 管理员获取道具卡列表，支持按名称、状态、类型等条件筛选
      parameters:
      - description: 道具卡名称
        in: query
        name: name
        type: string
      - description: 状态：1启用 2禁用
        in: query
        name: status
        type: integer
      - description: 道具卡类型：1抽奖卡 2加成卡 3保底卡
        in: query
        name: card_type
        type: integer
      - description: 适用范围：1全局 2活动分类 3活动 4期次
        in: query
        name: scope_type
        type: integer
      - description: 页码，默认1
        in: query
        name: page
        type: integer
      - description: 每页条数，默认10
        in: query
        name: page_size
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.listItemCardsResponse'
        "400":
          description: 参数错误
          schema:
            $ref: '#/definitions/code.Failure'
        "401":
          description: 未授权
          schema:
            $ref: '#/definitions/code.Failure'
        "500":
          description: 服务器内部错误
          schema:
            $ref: '#/definitions/code.Failure'
      summary: 获取道具卡列表
      tags:
      - 管理端.运营管理
    post:
      consumes:
      - application/json
      description: 管理员创建新的道具卡，支持设置类型、效果、有效期等属性
      parameters:
      - description: 创建道具卡请求参数
        in: body
        name: RequestBody
        required: true
        schema:
          $ref: '#/definitions/admin.createItemCardRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.createItemCardResponse'
        "400":
          description: 参数错误
          schema:
            $ref: '#/definitions/code.Failure'
        "401":
          description: 未授权
          schema:
            $ref: '#/definitions/code.Failure'
        "403":
          description: 无权限，仅超管可操作
          schema:
            $ref: '#/definitions/code.Failure'
        "500":
          description: 服务器内部错误
          schema:
            $ref: '#/definitions/code.Failure'
      summary: 创建道具卡
      tags:
      - 管理端.运营管理
  /api/admin/system_item_cards/{item_card_id}:
    delete:
      consumes:
      - application/json
      description: 管理员删除指定的道具卡
      parameters:
      - description: 道具卡ID
        in: path
        name: item_card_id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.simpleMessageResponse'
        "400":
          description: 参数错误
          schema:
            $ref: '#/definitions/code.Failure'
        "401":
          description: 未授权
          schema:
            $ref: '#/definitions/code.Failure'
        "403":
          description: 无权限，仅超管可操作
          schema:
            $ref: '#/definitions/code.Failure'
        "500":
          description: 服务器内部错误
          schema:
            $ref: '#/definitions/code.Failure'
      summary: 删除道具卡
      tags:
      - 管理端.运营管理
    put:
      consumes:
      - application/json
      description: 管理员修改道具卡信息，支持修改名称、价格、有效期等属性
      parameters:
      - description: 道具卡ID
        in: path
        name: item_card_id
        required: true
        type: integer
      - description: 修改道具卡请求参数
        in: body
        name: RequestBody
        required: true
        schema:
          $ref: '#/definitions/admin.modifyItemCardRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.simpleMessageResponse'
        "400":
          description: 参数错误
          schema:
            $ref: '#/definitions/code.Failure'
        "401":
          description: 未授权
          schema:
            $ref: '#/definitions/code.Failure'
        "403":
          description: 无权限，仅超管可操作
          schema:
            $ref: '#/definitions/code.Failure'
        "500":
          description: 服务器内部错误
          schema:
            $ref: '#/definitions/code.Failure'
      summary: 修改道具卡
      tags:
      - 管理端.运营管理
  /api/admin/users:
    get:
      consumes:
      - application/json
      description: 查看APP端用户分页列表
      parameters:
      - default: 1
        description: 页码
        in: query
        name: page
        required: true
        type: integer
      - default: 20
        description: 每页数量，最多100
        in: query
        name: page_size
        required: true
        type: integer
      - description: 用户昵称
        in: query
        name: nickname
        type: string
      - description: 邀请码
        in: query
        name: inviteCode
        type: string
      - description: 开始日期(YYYY-MM-DD)
        in: query
        name: startDate
        type: string
      - description: 结束日期(YYYY-MM-DD)
        in: query
        name: endDate
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.listUsersResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 管理端用户列表
      tags:
      - 管理端.用户
  /api/admin/users/{user_id}/coupons:
    get:
      consumes:
      - application/json
      description: 查看指定用户持有的优惠券列表
      parameters:
      - description: 用户ID
        in: path
        name: user_id
        required: true
        type: integer
      - default: 1
        description: 页码
        in: query
        name: page
        required: true
        type: integer
      - default: 20
        description: 每页数量，最多100
        in: query
        name: page_size
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.listCouponsResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 查看用户优惠券列表
      tags:
      - 管理端.用户
  /api/admin/users/{user_id}/coupons/add:
    post:
      consumes:
      - application/json
      description: 管理端为指定用户发放优惠券
      parameters:
      - description: 用户ID
        in: path
        name: user_id
        required: true
        type: integer
      - description: 请求参数
        in: body
        name: RequestBody
        required: true
        schema:
          $ref: '#/definitions/admin.addCouponRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.addCouponResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 给用户添加优惠券
      tags:
      - 管理端.用户
  /api/admin/users/{user_id}/inventory:
    get:
      consumes:
      - application/json
      description: 查看指定用户的资产记录
      parameters:
      - description: 用户ID
        in: path
        name: user_id
        required: true
        type: integer
      - default: 1
        description: 页码
        in: query
        name: page
        required: true
        type: integer
      - default: 20
        description: 每页数量，最多100
        in: query
        name: page_size
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.listInventoryResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 查看用户资产列表
      tags:
      - 管理端.用户
  /api/admin/users/{user_id}/invites:
    get:
      consumes:
      - application/json
      description: 查看指定用户邀请的用户列表
      parameters:
      - description: 用户ID
        in: path
        name: user_id
        required: true
        type: integer
      - default: 1
        description: 页码
        in: query
        name: page
        required: true
        type: integer
      - default: 20
        description: 每页数量，最多100
        in: query
        name: page_size
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.listInvitesResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 查看用户邀请列表
      tags:
      - 管理端.用户
  /api/admin/users/{user_id}/item_cards:
    get:
      consumes:
      - application/json
      description: 查看指定用户的道具卡持有记录
      parameters:
      - description: 用户ID
        in: path
        name: user_id
        required: true
        type: integer
      - default: 1
        description: 页码
        in: query
        name: page
        required: true
        type: integer
      - default: 20
        description: 每页数量，最多100
        in: query
        name: page_size
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.listUserItemCardsResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 查看用户道具卡列表
      tags:
      - 管理端.用户
    post:
      consumes:
      - application/json
      description: 管理员给指定用户分配道具卡，可指定数量
      parameters:
      - description: 用户ID
        in: path
        name: user_id
        required: true
        type: integer
      - description: 分配道具卡请求参数
        in: body
        name: RequestBody
        required: true
        schema:
          $ref: '#/definitions/admin.assignItemCardRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.simpleMessageResponse'
        "400":
          description: 参数错误
          schema:
            $ref: '#/definitions/code.Failure'
        "401":
          description: 未授权
          schema:
            $ref: '#/definitions/code.Failure'
        "403":
          description: 无权限，仅超管可操作
          schema:
            $ref: '#/definitions/code.Failure'
        "500":
          description: 服务器内部错误
          schema:
            $ref: '#/definitions/code.Failure'
      summary: 给用户分配道具卡
      tags:
      - 管理端.运营管理
  /api/admin/users/{user_id}/orders:
    get:
      consumes:
      - application/json
      description: 查看指定用户的订单记录
      parameters:
      - description: 用户ID
        in: path
        name: user_id
        required: true
        type: integer
      - default: 1
        description: 页码
        in: query
        name: page
        required: true
        type: integer
      - default: 20
        description: 每页数量，最多100
        in: query
        name: page_size
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.listOrdersResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 查看用户订单列表
      tags:
      - 管理端.用户
  /api/admin/users/{user_id}/points:
    get:
      consumes:
      - application/json
      description: 查看指定用户的积分流水记录
      parameters:
      - description: 用户ID
        in: path
        name: user_id
        required: true
        type: integer
      - default: 1
        description: 页码
        in: query
        name: page
        required: true
        type: integer
      - default: 20
        description: 每页数量，最多100
        in: query
        name: page_size
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.listPointsResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 查看用户积分记录
      tags:
      - 管理端.用户
  /api/admin/users/{user_id}/points/add:
    post:
      consumes:
      - application/json
      description: 管理端为指定用户发放积分，支持设置有效期
      parameters:
      - description: 用户ID
        in: path
        name: user_id
        required: true
        type: integer
      - description: 请求参数
        in: body
        name: RequestBody
        required: true
        schema:
          $ref: '#/definitions/admin.addPointsRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.addPointsResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 给用户添加积分
      tags:
      - 管理端.用户
  /api/admin/users/{user_id}/points/balance:
    get:
      consumes:
      - application/json
      description: 查看指定用户当前积分余额（过滤过期）
      parameters:
      - description: 用户ID
        in: path
        name: user_id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.pointsBalanceResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 查看用户积分余额
      tags:
      - 管理端.用户
  /api/admin/users/{user_id}/rewards/grant:
    post:
      consumes:
      - application/json
      description: 管理员给用户发放奖励，支持实物和虚拟奖品，可选择关联活动和奖励配置
      parameters:
      - description: 用户ID
        in: path
        name: user_id
        required: true
        type: integer
      - description: 请求参数
        in: body
        name: RequestBody
        required: true
        schema:
          $ref: '#/definitions/admin.GrantRewardRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.GrantRewardResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
        "401":
          description: Unauthorized
          schema:
            $ref: '#/definitions/code.Failure'
        "403":
          description: Forbidden
          schema:
            $ref: '#/definitions/code.Failure'
        "500":
          description: Internal Server Error
          schema:
            $ref: '#/definitions/code.Failure'
      summary: 给用户发放奖励
      tags:
      - 管理端.用户
  /api/app/activities:
    get:
      consumes:
      - application/json
      description: 获取活动列表，支持分类、Boss、状态过滤与分页
      parameters:
      - description: 活动名称(模糊)
        in: query
        name: name
        type: string
      - description: 活动分类ID
        in: query
        name: category_id
        type: integer
      - description: 是否Boss(0/1)
        in: query
        name: is_boss
        type: integer
      - description: 状态(1进行中 2下线)
        in: query
        name: status
        type: integer
      - default: 1
        description: 页码
        in: query
        name: page
        required: true
        type: integer
      - default: 20
        description: 每页数量，最多100
        in: query
        name: page_size
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/app.listActivitiesResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      summary: 活动列表
      tags:
      - APP端.活动
  /api/app/activities/{activity_id}:
    get:
      consumes:
      - application/json
      description: 获取指定活动的详细信息
      parameters:
      - description: 活动ID
        in: path
        name: activity_id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/model.Activities'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      summary: 活动详情
      tags:
      - APP端.活动
  /api/app/activities/{activity_id}/issues:
    get:
      consumes:
      - application/json
      description: 获取指定活动的期列表，支持分页
      parameters:
      - description: 活动ID
        in: path
        name: activity_id
        required: true
        type: integer
      - default: 1
        description: 页码
        in: query
        name: page
        required: true
        type: integer
      - default: 20
        description: 每页数量，最多100
        in: query
        name: page_size
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/app.listIssuesResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      summary: 活动期列表
      tags:
      - APP端.活动
  /api/app/activities/{activity_id}/issues/{issue_id}/draw_logs:
    get:
      consumes:
      - application/json
      description: 查看指定活动期数的抽奖记录，支持分页
      parameters:
      - description: 活动ID
        in: path
        name: activity_id
        required: true
        type: integer
      - description: 期ID
        in: path
        name: issue_id
        required: true
        type: integer
      - default: 1
        description: 页码
        in: query
        name: page
        required: true
        type: integer
      - default: 20
        description: 每页数量，最多100
        in: query
        name: page_size
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/app.listDrawLogsResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      summary: 抽奖记录列表
      tags:
      - APP端.活动
  /api/app/activities/{activity_id}/issues/{issue_id}/rewards:
    get:
      consumes:
      - application/json
      description: 获取指定期的奖励配置列表
      parameters:
      - description: 活动ID
        in: path
        name: activity_id
        required: true
        type: integer
      - description: 期ID
        in: path
        name: issue_id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/app.listRewardsResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      summary: 奖励配置列表
      tags:
      - APP端.活动
  /api/app/banners:
    get:
      consumes:
      - application/json
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/app.listAppBannersResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      summary: APP端轮播图列表
      tags:
      - APP端.运营
  /api/app/guilds:
    get:
      consumes:
      - application/json
      description: 获取工会列表，支持公开与状态过滤以及分页
      parameters:
      - description: 工会名称(模糊)
        in: query
        name: name
        type: string
      - description: 是否公开(1公开 2私有)
        in: query
        name: is_open
        type: integer
      - description: 状态(1正常 2解散)
        in: query
        name: status
        type: integer
      - description: 加入方式(1审核 2自动 3消费流水)
        in: query
        name: join_mode
        type: integer
      - default: 1
        description: 页码
        in: query
        name: page
        required: true
        type: integer
      - default: 20
        description: 每页数量，最多100
        in: query
        name: page_size
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/app.listGuildsResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      summary: 浏览工会列表
      tags:
      - APP端.工会
  /api/app/guilds/{guild_id}:
    get:
      consumes:
      - application/json
      description: 查看指定工会详情
      parameters:
      - description: 工会ID
        in: path
        name: guild_id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/model.Guild'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      summary: 查看工会详情
      tags:
      - APP端.工会
  /api/app/guilds/{guild_id}/members:
    get:
      consumes:
      - application/json
      description: 查看指定工会的成员列表
      parameters:
      - description: 工会ID
        in: path
        name: guild_id
        required: true
        type: integer
      - default: 1
        description: 页码
        in: query
        name: page
        required: true
        type: integer
      - default: 20
        description: 每页数量，最多100
        in: query
        name: page_size
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/app.listMembersResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      summary: 查看工会成员
      tags:
      - APP端.工会
    post:
      consumes:
      - application/json
      description: 用户加入指定工会
      parameters:
      - description: 工会ID
        in: path
        name: guild_id
        required: true
        type: integer
      - description: 请求参数
        in: body
        name: RequestBody
        required: true
        schema:
          $ref: '#/definitions/app.joinGuildRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/app.simpleMessageResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      summary: 加入工会
      tags:
      - APP端.工会
  /api/app/guilds/{guild_id}/members/{user_id}:
    delete:
      consumes:
      - application/json
      description: 用户离开指定工会
      parameters:
      - description: 工会ID
        in: path
        name: guild_id
        required: true
        type: integer
      - description: 用户ID
        in: path
        name: user_id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/app.simpleMessageResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      summary: 离开工会
      tags:
      - APP端.工会
  /api/app/users/{user_id}:
    put:
      consumes:
      - application/json
      description: 修改用户昵称与头像
      parameters:
      - description: 用户ID
        in: path
        name: user_id
        required: true
        type: integer
      - description: 请求参数
        in: body
        name: RequestBody
        required: true
        schema:
          $ref: '#/definitions/app.modifyUserRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/app.modifyUserResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 修改用户信息
      tags:
      - APP端.用户
  /api/app/users/{user_id}/addresses:
    get:
      consumes:
      - application/json
      description: 分页获取当前登录用户的收货地址列表，默认地址优先
      parameters:
      - description: 用户ID
        in: path
        name: user_id
        required: true
        type: integer
      - description: 页码，默认1
        in: query
        name: page
        type: integer
      - description: 每页条数，默认20，最多100
        in: query
        name: page_size
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/app.listAddressesResponse'
        "400":
          description: 参数错误
          schema:
            $ref: '#/definitions/code.Failure'
        "401":
          description: 未授权
          schema:
            $ref: '#/definitions/code.Failure'
        "500":
          description: 服务器内部错误
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 获取用户地址列表
      tags:
      - APP端.用户
    post:
      consumes:
      - application/json
      description: 为当前登录用户新增收货地址，可选择设为默认
      parameters:
      - description: 用户ID
        in: path
        name: user_id
        required: true
        type: integer
      - description: 请求参数
        in: body
        name: RequestBody
        required: true
        schema:
          $ref: '#/definitions/app.addAddressRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/app.addAddressResponse'
        "400":
          description: 参数错误
          schema:
            $ref: '#/definitions/code.Failure'
        "401":
          description: 未授权
          schema:
            $ref: '#/definitions/code.Failure'
        "500":
          description: 服务器内部错误
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 新增用户地址
      tags:
      - APP端.用户
  /api/app/users/{user_id}/addresses/{address_id}:
    delete:
      consumes:
      - application/json
      description: 删除当前登录用户的指定收货地址
      parameters:
      - description: 用户ID
        in: path
        name: user_id
        required: true
        type: integer
      - description: 地址ID
        in: path
        name: address_id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/app.okDeleteResponse'
        "400":
          description: 参数错误
          schema:
            $ref: '#/definitions/code.Failure'
        "401":
          description: 未授权
          schema:
            $ref: '#/definitions/code.Failure'
        "500":
          description: 服务器内部错误
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 删除用户地址
      tags:
      - APP端.用户
  /api/app/users/{user_id}/addresses/{address_id}/default:
    put:
      consumes:
      - application/json
      description: 将指定地址设置为当前登录用户的默认地址
      parameters:
      - description: 用户ID
        in: path
        name: user_id
        required: true
        type: integer
      - description: 地址ID
        in: path
        name: address_id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/app.okResponse'
        "400":
          description: 参数错误
          schema:
            $ref: '#/definitions/code.Failure'
        "401":
          description: 未授权
          schema:
            $ref: '#/definitions/code.Failure'
        "500":
          description: 服务器内部错误
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 设置默认用户地址
      tags:
      - APP端.用户
  /api/app/users/{user_id}/coupons:
    get:
      consumes:
      - application/json
      description: 查看用户持有的优惠券列表
      parameters:
      - description: 用户ID
        in: path
        name: user_id
        required: true
        type: integer
      - default: 1
        description: 页码
        in: query
        name: page
        required: true
        type: integer
      - default: 20
        description: 每页数量，最多100
        in: query
        name: page_size
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/app.listCouponsResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 查看用户优惠券
      tags:
      - APP端.用户
  /api/app/users/{user_id}/invites:
    get:
      consumes:
      - application/json
      description: 查看被该用户邀请的用户列表
      parameters:
      - description: 用户ID
        in: path
        name: user_id
        required: true
        type: integer
      - default: 1
        description: 页码
        in: query
        name: page
        required: true
        type: integer
      - default: 20
        description: 每页数量，最多100
        in: query
        name: page_size
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/app.listInvitesResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 查看用户邀请记录
      tags:
      - APP端.用户
  /api/app/users/{user_id}/item_cards:
    get:
      consumes:
      - application/json
      description: 获取指定用户的道具卡列表，支持分页
      parameters:
      - description: 用户ID
        in: path
        name: user_id
        required: true
        type: integer
      - description: 页码，默认1
        in: query
        name: page
        type: integer
      - description: 每页条数，默认10
        in: query
        name: page_size
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/app.listUserItemCardsResponse'
        "400":
          description: 参数错误
          schema:
            $ref: '#/definitions/code.Failure'
        "401":
          description: 未授权
          schema:
            $ref: '#/definitions/code.Failure'
        "500":
          description: 服务器内部错误
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 获取用户道具卡列表
      tags:
      - APP端.用户
  /api/app/users/{user_id}/item_cards/uses:
    get:
      consumes:
      - application/json
      description: 获取指定用户的道具卡使用记录，支持分页
      parameters:
      - description: 用户ID
        in: path
        name: user_id
        required: true
        type: integer
      - description: 页码，默认1
        in: query
        name: page
        type: integer
      - description: 每页条数，默认10
        in: query
        name: page_size
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/app.listUserItemCardUsesResponse'
        "400":
          description: 参数错误
          schema:
            $ref: '#/definitions/code.Failure'
        "401":
          description: 未授权
          schema:
            $ref: '#/definitions/code.Failure'
        "500":
          description: 服务器内部错误
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 获取用户道具卡使用记录
      tags:
      - APP端.用户
  /api/app/users/{user_id}/orders:
    get:
      consumes:
      - application/json
      description: 查看用户抽奖来源订单记录
      parameters:
      - description: 用户ID
        in: path
        name: user_id
        required: true
        type: integer
      - default: 1
        description: 页码
        in: query
        name: page
        required: true
        type: integer
      - default: 20
        description: 每页数量，最多100
        in: query
        name: page_size
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/app.listOrdersResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 查看用户订单记录
      tags:
      - APP端.用户
  /api/app/users/{user_id}/phone/bind:
    post:
      consumes:
      - application/json
      description: 使用微信手机号 code 换取手机号并绑定到指定用户
      parameters:
      - description: 用户ID
        in: path
        name: user_id
        required: true
        type: integer
      - description: 请求参数
        in: body
        name: RequestBody
        required: true
        schema:
          $ref: '#/definitions/app.bindPhoneRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/app.bindPhoneResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 绑定手机号
      tags:
      - APP端.用户
  /api/app/users/{user_id}/points:
    get:
      consumes:
      - application/json
      description: 查看用户积分流水记录
      parameters:
      - description: 用户ID
        in: path
        name: user_id
        required: true
        type: integer
      - default: 1
        description: 页码
        in: query
        name: page
        required: true
        type: integer
      - default: 20
        description: 每页数量，最多100
        in: query
        name: page_size
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/app.listPointsResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 查看用户积分记录
      tags:
      - APP端.用户
  /api/app/users/{user_id}/points/balance:
    get:
      consumes:
      - application/json
      description: 查看用户积分余额（过滤过期积分）
      parameters:
      - description: 用户ID
        in: path
        name: user_id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/app.pointsBalanceResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 查看用户积分余额
      tags:
      - APP端.用户
  /api/app/users/{user_id}/stats:
    get:
      consumes:
      - application/json
      description: 返回当前登录用户的道具卡数量、优惠券数量、积分余额
      parameters:
      - description: 用户ID
        in: path
        name: user_id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/app.userStatsResponse'
        "400":
          description: 参数错误
          schema:
            $ref: '#/definitions/code.Failure'
        "401":
          description: 未授权
          schema:
            $ref: '#/definitions/code.Failure'
        "500":
          description: 服务器内部错误
          schema:
            $ref: '#/definitions/code.Failure'
      security:
      - LoginVerifyToken: []
      summary: 获取用户统计
      tags:
      - APP端.用户
  /api/app/users/weixin/login:
    post:
      consumes:
      - application/json
      description: 微信静默登录（需传递 code；可选 invite_code）
      parameters:
      - description: 请求参数
        in: body
        name: RequestBody
        required: true
        schema:
          $ref: '#/definitions/app.weixinLoginRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/app.weixinLoginResponse'
        "400":
          description: Bad Request
          schema:
            $ref: '#/definitions/code.Failure'
      summary: 微信登录
      tags:
      - APP端.用户
  /api/role/list:
    get:
      consumes:
      - application/json
      parameters:
      - default: 1
        description: 页码
        in: query
        name: current
        required: true
        type: integer
      - default: 20
        description: 每页数量
        in: query
        name: size
        required: true
        type: integer
      - description: 角色名称
        in: query
        name: roleName
        type: string
      - description: 角色编码
        in: query
        name: roleCode
        type: string
      - description: 是否启用
        in: query
        name: enabled
        type: boolean
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.roleListResponse'
      security:
      - LoginVerifyToken: []
      summary: 角色列表
      tags:
      - 管理端.系统
  /api/user/list:
    get:
      consumes:
      - application/json
      description: 返回系统用户分页数据
      parameters:
      - default: 1
        description: 页码
        in: query
        name: current
        required: true
        type: integer
      - default: 20
        description: 每页数量
        in: query
        name: size
        required: true
        type: integer
      - description: 用户名
        in: query
        name: userName
        type: string
      - description: 邮箱
        in: query
        name: userEmail
        type: string
      - description: 手机号
        in: query
        name: userPhone
        type: string
      - description: 状态
        in: query
        name: status
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/admin.userListResponse'
      security:
      - LoginVerifyToken: []
      summary: 系统用户列表
      tags:
      - 管理端.系统
  /api/v3/system/menus/simple:
    get:
      responses: {}
securityDefinitions:
  LoginVerifyToken:
    in: header
    name: Authorization
    type: apiKey
swagger: "2.0"
