From c19a3475ad8309009e972d839734abfc05b29369 Mon Sep 17 00:00:00 2001 From: zhl Date: Tue, 6 Jul 2021 11:34:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=9D=A2=E5=90=91=E6=B8=B8?= =?UTF-8?q?=E6=88=8F=E7=AB=AF=E7=9A=84=E4=BC=98=E6=83=A0=E5=88=B8=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/api.md | 37 +++++++++++++++++++++++- src/api/controllers/coupon.controller.ts | 30 ++++++++++++++----- 2 files changed, 58 insertions(+), 9 deletions(-) diff --git a/doc/api.md b/doc/api.md index a08e9fb..32c298f 100644 --- a/doc/api.md +++ b/doc/api.md @@ -29,7 +29,7 @@ ### 20210705 -1. 增加[开始分享优惠券](#223), [领取分享的优惠券](#224) 接口 +1. 增加[开始分享优惠券](#223), [领取分享的优惠券](#224), [优惠券详情](#225) 接口 2. [用户券列表](#211), [抽奖](#214), [邀请奖励信息](#215), [领取邮件附件](#217)等接口返回的优惠券信息, 增加expire字段 3. [获取店铺信息](#208) 的gamecfg增加返回 default_desc_txt, 用于首页介绍文字 @@ -865,6 +865,7 @@ | 字段 | 说明 | | -------- | -------------------------------------- | | id | 优惠券的短id | +| shop | 优惠券的所属店铺 | | sender | 分享者的accountId | 3. Response: JSON @@ -880,4 +881,38 @@ status: '状态', //0: 未使用 , 1: 已使用 9: 已过期 expire: 0 // 过期时间, 0表示永不过期 } +``` + +### 25. 优惠券详情 + +1. Method: POST +2. URI: /api/:accountId/coupon/info + +| 字段 | 说明 | +| -------- | -------------------------------------- | +| accountid | 优惠券拥有者的帐号id | + +> POST参数 + + +| 字段 | 说明 | +| -------- | -------------------------------------- | +| id | 优惠券的短id | +| shop | 优惠券的所属店铺 | + +3. Response: JSON + +```js +{ + id: '记录id', + shop: '店铺id', + shopName: '店铺名', + coupon: '券id', + couponName: '券名', + couponUrl: '券图片url', + status: '状态', //0: 未使用 , 1: 已使用 2: 赠送中, 3: 已赠送(已被领取) ,9: 已过期 + expire: 0, // 过期时间, 0表示永不过期 + user: '拥有者的昵称', + userAvatar: '拥有者的头像' +} ``` \ No newline at end of file diff --git a/src/api/controllers/coupon.controller.ts b/src/api/controllers/coupon.controller.ts index e875efb..7a2185f 100644 --- a/src/api/controllers/coupon.controller.ts +++ b/src/api/controllers/coupon.controller.ts @@ -5,6 +5,7 @@ import { ZError } from '../../common/ZError' import { Shop } from '../../models/shop/Shop' import { Coupon } from '../../models/shop/Coupon' import { getCouponUrl } from '../../services/File' +import { GameUser } from 'models/user/GameUser' class CouponController extends BaseController { /** @@ -13,12 +14,17 @@ class CouponController extends BaseController { */ @role('anon') @router('get /pub/coupon/:shop/:id') + @router('post /api/:accountId/coupon/info') async info(req: any) { const { id, shop } = req.params if (!id || !shop) { throw new ZError(10, '缺少必要参数') } - const record = await UserCoupon.findOne({ sid: id, shop }) + const shopData = await Shop.fetchByID(shop) + if (!shopData) { + throw new ZError(12, '无法找到对应的店铺信息') + } + const record = await UserCoupon.findOne({ sid: id, shop: shopData.id }) if (!record) { throw new ZError(11, 'no matched records') } @@ -29,8 +35,8 @@ class CouponController extends BaseController { await record.save() } } - const shopData = await Shop.fetchByID(record.shop) const coupon = await Coupon.findById(record.item) + const user = await GameUser.getByAccountID(record.accountId) return { id: record.sid, shop: record.shop, @@ -40,6 +46,8 @@ class CouponController extends BaseController { couponUrl: getCouponUrl(shopData.id, record.item), status: record.status, expire: record.expire, + user: user.nickname, + userAvatar: user.avatar, } } /** @@ -93,11 +101,18 @@ class CouponController extends BaseController { @role('anon') @router('post /api/:accountId/coupon/receive_coupon') async receive(req: any) { - const { accountId, id, sender } = req.params - if (!id || !sender) { + const { accountId, id, sender, shop } = req.params + if (!id || !sender || !shop) { throw new ZError(10, '缺少必要参数: id') } - const result = await UserCoupon.updateOne({ sid: id, status: 2, accountId: sender }, { status: 3 }) + const shopData = await Shop.fetchByID(shop) + if (!shopData) { + throw new ZError(12, '无法找到对应的店铺信息') + } + const result = await UserCoupon.updateOne( + { sid: id, status: 2, accountId: sender, shop: shopData.id }, + { status: 3 }, + ) if (result.nModified !== 1) { throw new ZError(11, '未找到符合条件的记录, 可能已被别人领走') } @@ -108,15 +123,14 @@ class CouponController extends BaseController { recordNew.source = 'receive' recordNew.activityId = record.id await recordNew.save() - const shop = await Shop.fetchByID(record.shop) const coupon = await Coupon.findById(record.item) return { id: recordNew.sid, shop: recordNew.shop, - shopName: shop.showName, + shopName: shopData.showName, coupon: recordNew.item, couponName: coupon.name, - couponUrl: getCouponUrl(shop.id, recordNew.item), + couponUrl: getCouponUrl(shopData.id, recordNew.item), status: recordNew.status, expire: recordNew.expire, }