getBonusreceiveList(array('member_id' => $this->member_info['member_id']), $this->pagesize); $result = array_merge(array('log_list' => $bonuslog_list), mobile_page($bonus_model->page_info)); ds_json_encode(10000, '', $result); } /** * @api {POST} api/Memberbonus/receive 活动红包领取 * @apiVersion 1.0.0 * @apiGroup Memberbonus * * @apiHeader {String} X-DS-KEY 用户授权token * * @apiParam {Int} bonus_id 活动ID * * @apiSuccess {String} code 返回码,10000为成功 * @apiSuccess {String} message 返回消息 * @apiSuccess {Object} result 返回数据 */ public function receive() { $bonus_id = intval(input('param.bonus_id')); if ($bonus_id < 0) { ds_json_encode(10001, lang('param_error')); } $bonus_model = model('bonus'); $condition = array(); $condition[] = array('bonus_id', '=', $bonus_id); $bonus = $bonus_model->getOneBonus($condition); //获取当前红包的领取金额 if ($bonus['bonus_begintime'] > TIMESTAMP) { ds_json_encode(10001, lang('bonus_not_begin')); } if ($bonus['bonus_type'] != 1) { ds_json_encode(10001, lang('bonus_type_error')); } if ($bonus['bonus_state'] == 2 || TIMESTAMP > $bonus['bonus_endtime']) { ds_json_encode(10001, lang('bonus_expire')); } if ($bonus['bonus_state'] == 3) { ds_json_encode(10001, lang('bonus_invalid')); } //判断当前用户是否领取过 $condition = array(); $condition[] = array('bonus_id', '=', $bonus_id); $condition[] = array('member_id', '=', $this->member_info['member_id']); $bonusreceive = $bonus_model->getOneBonusreceive($condition); if ($bonusreceive) { ds_json_encode(10001, sprintf(lang('bonusreceive_info'), date('Y-m-d H:i:s', $bonusreceive['bonusreceive_time']), $bonusreceive['bonusreceive_price'])); } //获取未领取单个红包 $condition = array(); $condition[] = array('bonus_id', '=', $bonus_id); $condition[] = array('member_id', '=', 0); $bonusreceive = $bonus_model->getOneBonusreceive($condition); if (empty($bonusreceive)) { ds_json_encode(10001, lang('bonus_send_over')); } try { Db::startTrans(); $res = $bonus_model->receiveBonus($this->member_info, $bonus, $bonusreceive, lang('receive_bonus')); if (!$res['code']) { throw new \think\Exception($res['msg'], 10006); } Db::commit(); ds_json_encode(10000, sprintf(lang('get_bonus_info'), $bonusreceive['bonusreceive_price'])); } catch (Exception $e) { Db::rollback(); ds_json_encode(10001, $e->getMessage()); } } }