增加分享和抽奖相关后台接口

This commit is contained in:
zhl 2021-06-07 20:00:23 +08:00
parent 3bdd960cfa
commit 5f7b57fe78
4 changed files with 74 additions and 11 deletions

View File

@ -0,0 +1,56 @@
import BaseController from '../../common/base.controller'
import { permission, router } from '../../decorators/router'
import { ZError } from '../../common/ZError'
import { ShopCfg } from '../../models/shop/ShopCfg'
class ShopCfgController extends BaseController {
@permission('shop:edit')
@router('post /api/shop/lottery')
async lottery_list(req, res) {
let { shop } = req.params
if (!shop) {
throw new ZError(11, 'params mismatch')
}
let data = (await ShopCfg.findOrCreate({ shop })).doc
let cfg = data.lottery_cfgs || []
return cfg
}
@permission('shop:edit')
@router('post /api/shop/lottery_update')
async lottery_save(req, res) {
let { shop, cfgs } = req.params
if (!shop) {
throw new ZError(11, 'params mismatch')
}
let data = (await ShopCfg.findOrCreate({ shop })).doc
data.lottery_cfgs = cfgs
await data.save()
return {}
}
@permission('shop:edit')
@router('post /api/shop/share')
async share_list(req, res) {
let { shop } = req.params
if (!shop) {
throw new ZError(11, 'params mismatch')
}
let data = (await ShopCfg.findOrCreate({ shop })).doc
let cfg = data.share_cfgs || []
return cfg
}
@permission('shop:edit')
@router('post /api/shop/share_update')
async share_save(req, res) {
let { shop, cfgs } = req.params
if (!shop) {
throw new ZError(11, 'params mismatch')
}
let data = (await ShopCfg.findOrCreate({ shop })).doc
data.share_cfgs = cfgs
await data.save()
return {}
}
}

View File

@ -6,7 +6,7 @@ import { ShopCfg } from '../../models/shop/ShopCfg'
import { Coupon } from '../../models/shop/Coupon' import { Coupon } from '../../models/shop/Coupon'
import { getCouponUrl } from '../../services/File' import { getCouponUrl } from '../../services/File'
import { UserItem } from '../../models/user/UserItem' import { UserItem } from '../../models/user/UserItem'
import { LOTTERY_TICKET } from '../../constants/BaseConst' import { EMPTY, LOTTERY_TICKET } from '../../constants/BaseConst'
import { UserReward } from '../../models/user/UserReward' import { UserReward } from '../../models/user/UserReward'
import { random_prob } from '../../utils/number.util' import { random_prob } from '../../utils/number.util'
@ -89,17 +89,19 @@ class LotteryController extends BaseController {
} }
let idx = random_prob(arr) let idx = random_prob(arr)
const reward = cfg.lottery_cfgs[idx] const reward = cfg.lottery_cfgs[idx]
let obj = await UserReward.saveOneRecord({
accountId,
shop: shop.id,
itemId: reward.coupon,
count: reward.count,
rewardId: reward._id + '',
activityId: 'lottery',
source: 'lottery',
})
let rewardList = [] let rewardList = []
rewardList.push(obj) if (reward.coupon !== EMPTY) {
let obj = await UserReward.saveOneRecord({
accountId,
shop: shop.id,
itemId: reward.coupon,
count: reward.count,
rewardId: reward._id + '',
activityId: 'lottery',
source: 'lottery',
})
rewardList.push(obj)
}
return rewardList return rewardList
} }
} }

View File

@ -12,3 +12,4 @@ export class BaseConst {
// 抽奖券的物品id // 抽奖券的物品id
export const LOTTERY_TICKET = 'lottery_ticket' export const LOTTERY_TICKET = 'lottery_ticket'
export const EMPTY = 'empty'

View File

@ -5,6 +5,8 @@ import { Severity } from '@typegoose/typegoose/lib/internal/constants'
import { Base } from '@typegoose/typegoose/lib/defaultClasses' import { Base } from '@typegoose/typegoose/lib/defaultClasses'
export class ShareCfgClass extends Base { export class ShareCfgClass extends Base {
@prop()
public id: number
/** /**
* *
* @type {number} * @type {number}
@ -30,6 +32,8 @@ export class ShareCfgClass extends Base {
} }
export class LotteryCfgClass extends Base { export class LotteryCfgClass extends Base {
@prop()
public id: number
/** /**
* *
* @type {number} * @type {number}