当前位置:网站首页>edusoho兑换码功能二次开发
edusoho兑换码功能二次开发
2022-08-11 11:27:00 【withkai44】
功能描述:兑换码,是由一串数字或字母的组合,用户可使用兑换码去兑换网校课程。网校可通过其它流量平台售卖兑换码、印制线下礼品卡等方式,将兑换码发送给用户;
场景示例:某网校想要拓宽自己的销售渠道,使用兑换码功能,将课程加入到兑换码中,放在淘宝天猫店铺内售卖,用户获得兑换码即可兑换网校课程,网校借助淘宝天猫平台的流量为网校引流,提高销量;
技术支持二次开发QQ: 735660248
<?php
namespace CouponPlugin\Controller;
use AppBundle\Common\ArrayToolkit;
use AppBundle\Common\Paginator;
use AppBundle\Controller\BaseController;
use Biz\Coupon\Service\CouponService;
use Codeages\Biz\Order\Service\OrderService;
use CouponPlugin\Biz\Coupon\Service\CouponBatchService;
use Symfony\Component\HttpFoundation\Request;
class CouponBatchController extends BaseController
{
public function appendAction(Request $request, $batchId)
{
$batch = $this->getCouponBatchService()->getBatch($batchId);
if ($request->isMethod('POST')) {
$data = $request->request->all();
$data['batch'] = $batch;
$appendBatch = $this->getCouponBatchService()->appendCoupon($batch['id'], $data);
$data = array(
'url' => $this->generateUrl('admin_coupon_batch_create', array('batchId' => $batch['id'])),
'num' => $appendBatch['generatedNum'] - $batch['generatedNum'],
);
return $this->createJsonResponse($data);
}
return $this->render('CouponPlugin::batch-append-coupon-modal.html.twig', array(
'batch' => $batch,
));
}
public function checkNumAction(Request $request, $batchId)
{
$appendNum = $request->query->get('value');
$batch = $this->getCouponBatchService()->getBatch($batchId);
$remain = CouponBatchService::BATCH_COUPON_MAX_NUM - $batch['generatedNum'];
if ($appendNum > $remain) {
$response = array('success' => false, 'message' => '当前批次优惠券数量已达到最大值,请重新创建优惠券批次');
} else {
$response = array('success' => true, 'message' => '');
}
return $this->createJsonResponse($response);
}
public function detailAction(Request $request, $batchId)
{
$count = $this->getCouponService()->searchCouponsCount(array('batchId' => $batchId));
$batch = $this->getCouponBatchService()->getBatch($batchId);
$paginator = new Paginator($this->get('request'), $count, 20);
$coupons = $this->getCouponService()->searchCoupons(
array('batchId' => $batchId),
array('orderTime' => 'DESC', 'id' => 'ASC'),
$paginator->getOffsetCount(),
$paginator->getPerPageCount()
);
$users = $this->getUserService()->findUsersByIds(ArrayToolkit::column($coupons, 'userId'));
$orders = $this->getOrderService()->findOrdersByIds(ArrayToolkit::column($coupons, 'orderId'));
return $this->render('CouponPlugin:coupon:coupon-modal.html.twig', array(
'coupons' => $coupons,
'batch' => $batch,
'paginator' => $paginator,
'users' => $users,
'orders' => ArrayToolkit::index($orders, 'id'),
));
}
public function logAction(Request $request, $batchId)
{
$count = $this->getCouponBatchService()->countBatchLog(array('batchId' => $batchId));
$paginator = new Paginator($this->get('request'), $count, 20);
$batchLogs = $this->getCouponBatchService()->searchBatchLog(
array('batchId' => $batchId),
array('createdTime' => 'DESC'),
$paginator->getOffsetCount(),
$paginator->getPerPageCount()
);
$users = $this->getUserService()->findUsersByIds(ArrayToolkit::column($batchLogs, 'userId'));
return $this->render('CouponPlugin:coupon:coupon-log-tab.html.twig', array(
'batchLogs' => $batchLogs,
'paginator' => $paginator,
'users' => $users,
));
}
/** * @return CouponService */
private function getCouponService()
{
return $this->createService('Coupon:CouponService');
}
/** * @return CouponBatchService */
protected function getCouponBatchService()
{
return $this->createService('CouponPlugin:Coupon:CouponBatchService');
}
/** * @return OrderService */
private function getOrderService()
{
return $this->createService('Order:OrderService');
}
}
边栏推荐
- Flexmonster 数据透视表和图表组件
- 什么是架构基本概念和架构本质
- Go-Excelize API源码阅读(七)—— CopySheet(from, to int)
- FS2956A 输入8-120V 用于液晶仪表5V-USB 充电口方案
- How long does it take to train a neural network, neural network training takes too long
- 2022-08-10北京华为OD机试真题分享
- Jetpack Compose学习(9)——Compose中的列表控件(LazyRow和LazyColumn)
- 《长津湖》和《三十而已》,不及王一博赚钱?
- 神经网络可视化有3D版本了,美到沦陷!(已开源)
- MySQL --- 存储引擎
猜你喜欢
CCF大会腾源会专场即将召开,聚焦基础软件与开发语言未来发展
leetcode:373. 查找和最小的 K 对数字
从零开始配置 vim(12)——主题配置
【Opencv】-----倾斜图片转正
VirtualLab:Ince-Gaussian光束产生涡旋阵列激光束的观测
虚拟机使用 WinSCP & Putty
C# Call AutoNavi Map API to obtain latitude, longitude and positioning [Detailed 4D explanation with complete code]
兴盛优选:时序数据如何高效处理?
同城是美团电商的解法吗?
智能恒等于推荐系统
随机推荐
我用这个操作,代码可读性提升一个档次
MySQL --- 存储引擎
Through the thermal lens focus on different types of gaussian model
openresty概述及Lua语言的嵌入
同城是美团电商的解法吗?
「开源推荐」一个通用的后台管理系统
分析 Flink 任务如何超过 YARN 容器内存限制
ID3v2 Library以便能够设置
关于数据权限的设计
使用神经网络进行医学影像识别分析
a-upload上传图片
FS2956A 输入8-120V 用于液晶仪表5V-USB 充电口方案
从零开始配置 vim(12)——主题配置
1元限时秒杀 | 接口抓包分析与Mock实战训练营
AWS、Splunk和Symantec牵头成立OCSF开放网络安全架构框架
如何用100元制作一块全志V853的AI 开发板
闪灯IC,可按要求开发各种规格闪灯IC,单片机方案开发
【黑马早报】抖音否认与头部主播签对赌协议;阿迪达斯CEO承认在中国犯了错;网易云社交App心遇被指涉黄;联通董事长称5G资费比点外卖还便宜
低延时实时音视频在5G远程操控场景的应用实践
数据库导出的csv文件纯数字被转为科学计数法