CouponController.php 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586
  1. <?php
  2. namespace app\backend\modules\coupon\controllers;
  3. use app\backend\modules\coupon\models\HotelCoupon;
  4. use app\common\components\BaseController;
  5. use app\backend\modules\coupon\models\Coupon;
  6. use app\common\helpers\Cache;
  7. use app\common\helpers\PaginationHelper;
  8. use app\common\models\MemberCoupon;
  9. use app\common\models\coupon\CouponIncreaseRecords;
  10. use app\common\helpers\Url;
  11. use app\backend\modules\member\models\MemberLevel;
  12. use app\backend\modules\coupon\models\CouponLog;
  13. use app\backend\modules\goods\models\Goods;
  14. use app\backend\modules\goods\models\Category;
  15. use app\common\facades\Setting;
  16. use app\common\models\Store;
  17. use app\common\services\ExportService;
  18. use app\frontend\modules\coupon\listeners\CouponSend;
  19. use Carbon\Carbon;
  20. use Illuminate\Http\Request;
  21. use Yunshop\Hotel\common\models\CouponHotel;
  22. use Illuminate\Support\Facades\DB;
  23. use Yunshop\Integral\Common\Services\SetService;
  24. /**
  25. * Created by PhpStorm.
  26. * Author: 芸众商城 www.yunzshop.com
  27. * Date: 2017/3/20
  28. * Time: 16:20
  29. */
  30. class CouponController extends BaseController
  31. {
  32. //优惠券列表
  33. public function index()
  34. {
  35. if(isset(request()->laststock)){
  36. //系统通知详情进来,查询剩余数量为0的优惠券
  37. return $this->searchNotStockCoupon();
  38. }
  39. return view('coupon.index')->render();
  40. }
  41. //查询剩余数量为0的优惠券
  42. public function searchNotStockCoupon()
  43. {
  44. $pageSize = 10;
  45. $allData = Coupon::uniacid()->pluginId()
  46. ->where('total','>',-1)//非无限领取
  47. ->get()
  48. ->toArray();
  49. if(!empty($allData)){
  50. $id = [];
  51. foreach ($allData as $k=>$v){
  52. $get_total = MemberCoupon::uniacid()->where("coupon_id", $v['id'])->count();
  53. if(($v['total'] - $get_total) <= 0){
  54. $id[] = $v['id'];
  55. }
  56. }
  57. if(!empty($id)){
  58. $list = Coupon::uniacid()->pluginId()
  59. ->whereIn('id',$id)
  60. ->orderBy('display_order', 'desc')
  61. ->orderBy('updated_at', 'desc')
  62. ->paginate($pageSize)->toArray();
  63. $pager = PaginationHelper::show($list['total'], $list['current_page'], $list['per_page']);
  64. foreach ($list['data'] as &$item) {
  65. $item['gettotal'] = MemberCoupon::uniacid()->where("coupon_id", $item['id'])->count();
  66. $item['usetotal'] = MemberCoupon::uniacid()->where("coupon_id", $item['id'])->where("used", 1)->count();
  67. $lasttotal = $item['total'] - $item['gettotal'];
  68. $item['lasttotal'] = ($lasttotal > 0) ? $lasttotal : 0; //考虑到可领取总数修改成比之前的设置小, 则会变成负数
  69. }
  70. return view('coupon.index', [
  71. 'list' => $list['data'],
  72. 'pager' => $pager,
  73. 'total' => $list['total'],
  74. ])->render();
  75. }
  76. }
  77. return view('coupon.index', [
  78. 'list' => [],
  79. 'pager' => '',
  80. 'total' => 0,
  81. ])->render();
  82. }
  83. public function couponData()
  84. {
  85. $keyword = request()->keyword;
  86. $getType = request()->gettype;
  87. $timeSearchSwitch = request()->timesearchswtich;
  88. $timeStart = request()->time['start'];
  89. $timeEnd = request()->time['end'];
  90. $pageSize = 10;
  91. $list = Coupon::getCouponsBySearch($keyword, $getType, $timeSearchSwitch, $timeStart, $timeEnd)
  92. ->pluginId()
  93. ->orderBy('display_order', 'desc')
  94. ->orderBy('updated_at', 'desc')
  95. ->paginate($pageSize)
  96. ->toArray();
  97. foreach ($list['data'] as &$item) {
  98. $item['gettotal'] = MemberCoupon::uniacid()->where("coupon_id", $item['id'])->count();
  99. $item['usetotal'] = MemberCoupon::uniacid()->where("coupon_id", $item['id'])->where("used", 1)->count();
  100. // 总数为负数代表无限张,无需计算
  101. $lasttotal = $item['total'] - $item['gettotal'];
  102. $item['lasttotal'] = $lasttotal > 0 ? $lasttotal : 0; //考虑到可领取总数修改成比之前的设置小, 则会变成负数
  103. }
  104. $data = [
  105. 'list' => $list,
  106. ];
  107. return $this->successJson('ok', $data);
  108. }
  109. //添加优惠券
  110. public function create()
  111. {
  112. //获取表单提交的值
  113. $couponRequest = request()->coupon;
  114. $couponRequest['uniacid'] = \YunShop::app()->uniacid;
  115. $couponRequest['time_start'] = request()->time['start'];
  116. $couponRequest['time_end'] = request()->time['end'];
  117. $couponRequest['category_ids'] = request()->category_ids;
  118. $couponRequest['categorynames'] = request()->category_names;
  119. $couponRequest['goods_ids'] = request()->goods_id ?: request()->goods_ids;
  120. $couponRequest['goods_names'] = request()->goods_name ?: request()->goods_names;
  121. //新增门店
  122. $couponRequest['storeids'] = request()->store_ids; //去重,去空值
  123. $couponRequest['storenames'] = request()->store_names;
  124. //消费积分兑换优惠券
  125. $couponRequest['is_integral_exchange_coupon'] = request()->is_integral_exchange_coupon;
  126. $couponRequest['exchange_coupon_integral'] = (float)request()->exchange_coupon_integral;
  127. //标签
  128. $couponRequest['member_tags_ids'] = array_filter(array_unique(request()->member_tags_ids)); //去重,去空值
  129. $couponRequest['member_tags_names'] = request()->member_tags_names;
  130. $hotel_is_open = app('plugins')->isEnabled('hotel');
  131. //获取会员等级列表
  132. $memberLevels = MemberLevel::getMemberLevelList();
  133. //表单验证
  134. if (request()->coupon) {
  135. if (request()->goods_id) {
  136. if (count($couponRequest['goods_id']) > 1) {
  137. return $this->errorJson('优惠券创建失败,兑换券只能指定一个商品');
  138. }
  139. }
  140. $coupon = new HotelCoupon();
  141. if ($hotel_is_open) {
  142. $coupon->widgets['more_hotels'] = request()->hotel_ids;
  143. }
  144. $couponRequest['use_conditions'] = serialize($couponRequest['use_conditions']);
  145. if ($couponRequest['time_limit'] == 1) {
  146. //使用时间范围时
  147. $couponRequest['time_end'] = strtotime(date('Y-m-d 23:59:59',$couponRequest['time_end']));
  148. }
  149. $coupon->fill($couponRequest);
  150. $validator = $coupon->validator();
  151. // $validator->sometimes('get_max','required|integer',function($input){
  152. // return $input->get_type == 1;
  153. // });
  154. // $validator->sometimes('get_limit_max','required|integer',function($input){
  155. // return $input->get_type == 1 and $input->get_limit_type == 1;
  156. // });
  157. if ($validator->fails()) {
  158. $this->errorJson($validator->messages());
  159. } elseif ($coupon->save()) {
  160. return $this->successJson('优惠券创建成功');
  161. } else {
  162. $this->errorJson('优惠券创建失败');
  163. }
  164. }
  165. $store_is_open = app('plugins')->isEnabled('store-cashier');
  166. $couponRequest['use_conditions'] = unserialize($couponRequest['use_conditions']);
  167. $integral_is_open = 0;
  168. if (app('plugins')->isEnabled('integral')) {
  169. $integral_name = SetService::getIntegralName();
  170. $integral_is_open = 1;
  171. }
  172. $data = [
  173. 'coupon' => $couponRequest,
  174. 'memberlevels' => $memberLevels,
  175. 'timestart' => strtotime(\YunShop::request()->time['start']),
  176. 'timeend' => strtotime(\YunShop::request()->time['end']),
  177. 'hotel_is_open' => $hotel_is_open,
  178. 'store_is_open' => $store_is_open,
  179. 'integral_is_open' => $integral_is_open,
  180. 'integral_name' => $integral_name ?? '消费积分',
  181. 'member_tags_is_open' => app('plugins')->isEnabled('member-tags')
  182. ];
  183. return $this->successJson('ok',$data);
  184. }
  185. //编辑优惠券
  186. public function edit()
  187. {
  188. $coupon_id = intval(request()->id);
  189. if (!$coupon_id) {
  190. $this->errorJson('请传入正确参数.');
  191. }
  192. //获取会员等级列表
  193. $memberLevels = MemberLevel::getMemberLevelList();
  194. $coupon = HotelCoupon::getCouponById($coupon_id);
  195. if (!empty($coupon->goods_ids)) {
  196. $goods_ids = array_filter(array_unique($coupon->goods_ids)); //去重,去空值
  197. if (!empty($goods_ids)) {
  198. // $coupon->goods_names = Goods::getGoodNameByGoodIds($coupon->goods_ids); //因为商品名称可能修改,所以必须以商品表为准 //todo category_names和goods_names是不可靠的, 考虑删除这2个字段
  199. $goodsnames = Goods::uniacid()
  200. ->select('id','title')
  201. ->whereIn('id', $goods_ids)
  202. ->orderByRaw(DB::raw("FIELD(id, ".implode(',', $goods_ids).')')) //必须按照goodIds的顺序输出商品名称
  203. ->get();
  204. $goods_ids = $goodsnames->pluck('id')->toArray();
  205. $goods_names = $goodsnames->pluck('title')->toArray();
  206. }
  207. }
  208. if (!empty($coupon->category_ids)) {
  209. $ids = $coupon->category_ids;
  210. $categorynames = Category::uniacid()//因为商品分类名称可能修改,所以必须以商品表为准
  211. ->select('id','name')
  212. ->whereIn('id', $ids)
  213. ->orderByRaw(DB::raw("FIELD(id, ".implode(',', $ids).')')) //必须按照categoryIds的顺序输出分类名称
  214. ->get();
  215. $ids = $categorynames->pluck('id')->toArray();
  216. $names = $categorynames->pluck('name')->toArray();
  217. }
  218. //新增酒店
  219. $hotel_is_open = app('plugins')->isEnabled('hotel');
  220. $couponRequest = request()->coupon;
  221. // 查询优惠券是否有被发放
  222. $memberCoupon = MemberCoupon::uniacid()->where("coupon_id", $coupon->id)->first();
  223. // 当存在发放优惠券并且用户编辑了发放总数,返回提示警告(中间 $couponRequest 不能被优化掉.否则前端拿不到优惠券基本信息)
  224. if ($memberCoupon && $couponRequest && $couponRequest['total'] != $coupon->total) {
  225. return $this->errorJson('优惠券已经发放,无法对发放总数进行编辑');
  226. }
  227. if ($couponRequest) {
  228. if ($couponRequest['use_type'] == 8) {
  229. if (count(request()->goods_id) > 1) {
  230. return $this->errorJson('优惠券修改失败,兑换券只能指定一个商品');
  231. }
  232. $goodsIds = request()->goods_id;
  233. $goodsNames = request()->goods_name;
  234. }
  235. $couponRequest['time_start'] = request()->time['start'];
  236. $couponRequest['time_end'] = request()->time['end'];
  237. $coupon->use_type = request()->usetype;
  238. $coupon->category_ids = array_filter(array_unique(request()->category_ids)); //去重,去空值
  239. $coupon->categorynames = request()->category_names;
  240. $coupon->goods_ids = $goodsIds ? $goodsIds : array_filter(array_unique(request()->goods_ids)); //去重,去空值
  241. $coupon->goods_names = $goodsNames ? $goodsNames : request()->goods_names;
  242. //新增门店
  243. $coupon->storeids = array_filter(array_unique(request()->store_ids)); //去重,去空值
  244. $coupon->storenames = request()->store_names;
  245. //消费积分兑换优惠券
  246. $coupon->is_integral_exchange_coupon = request()->is_integral_exchange_coupon;
  247. $coupon->exchange_coupon_integral = (float)request()->exchange_coupon_integral;
  248. //标签
  249. $coupon->member_tags_ids = array_filter(array_unique(request()->member_tags_ids)); //去重,去空值;
  250. $coupon->member_tags_names = request()->member_tags_names;
  251. if ($hotel_is_open) {
  252. $coupon->widgets['more_hotels'] = request()->hotel_ids;
  253. }
  254. //表单验证
  255. $couponRequest['use_conditions'] = serialize($couponRequest['use_conditions']);
  256. $coupon->fill($couponRequest);
  257. $validator = $coupon->validator();
  258. // $validator->sometimes('get_max','required|integer',function($input){
  259. // return $input->get_type == 1;
  260. // });
  261. // $validator->sometimes('get_limit_max','required|integer',function($input){
  262. // return $input->get_type == 1 and $input->get_limit_type == 1;
  263. // });
  264. if ($validator->fails()) {
  265. return $this->errorJson($validator->messages());
  266. } else {
  267. if ($coupon->save()) {
  268. //已失效的优惠券重新改为可使用
  269. if ($coupon['time_limit'] == Coupon::COUPON_DATE_TIME_RANGE && time() < strtotime($coupon['time_end'])) {
  270. MemberCoupon::where('coupon_id', $coupon['id'])->where('is_expired', 1)->update(['is_expired' => 0]);
  271. }
  272. if ($coupon['time_limit'] == Coupon::COUPON_SINCE_RECEIVE && ($coupon['time_days'] !== 0)) {
  273. $member_coupon = MemberCoupon::where('coupon_id', $coupon['id'])->where('is_expired', 1)->get();
  274. foreach ($member_coupon as $memberCoupon) {
  275. if (time() < Carbon::createFromTimestamp(strtotime($memberCoupon['get_time']) + $coupon['time_days'] * 3600 * 24)->endOfDay()->timestamp) {
  276. $memberCoupon->is_expired = 0;
  277. $memberCoupon->save();
  278. }
  279. }
  280. }
  281. //店铺装修清除缓存
  282. if (app('plugins')->isEnabled('designer')) {
  283. Cache::flush();//清除缓存
  284. }
  285. return $this->successJson('优惠券修改成功');
  286. } else {
  287. return $this->errorJson('优惠券修改失败');
  288. }
  289. }
  290. }
  291. // 添加优惠券新增记录数据
  292. $coupon['coupon_increase_records'] = $coupon->couponIncreaseRecords()->toArray();
  293. $coupon['use_conditions'] = unserialize($coupon['use_conditions']);
  294. $use_conditions_goods_ids = is_array($coupon['use_conditions']['good_ids'])?$coupon['use_conditions']['good_ids']:[];
  295. $use_conditions_store_ids = is_array($coupon['use_conditions']['store_ids'])?$coupon['use_conditions']['store_ids']:[];
  296. $store_is_open = app('plugins')->isEnabled('store-cashier');
  297. $integral_is_open = 0;
  298. if (app('plugins')->isEnabled('integral')) {
  299. $integral_name = SetService::getIntegralName();
  300. $integral_is_open = 1;
  301. }
  302. $data = [
  303. 'coupon' => $coupon->toArray(),
  304. 'usetype' => $coupon->use_type,
  305. 'category_ids' => $ids ?: [],
  306. 'category_names' => $names ?: [],
  307. 'goods_ids' => $goods_ids ?: [],
  308. 'goods_names' => $goods_names ?: [],
  309. 'memberlevels' => $memberLevels,
  310. 'timestart' => $coupon->time_start->timestamp,
  311. 'timeend' => $coupon->time_end->timestamp,
  312. 'hotel_is_open' => $hotel_is_open,
  313. 'hotel_ids' => $hotel_is_open ? CouponHotel::getHotels($coupon_id) : [],
  314. 'store_ids' => $coupon->storeids,
  315. 'store_names' =>$coupon->storenames,
  316. 'store_is_open' => $store_is_open,
  317. 'goods' => Goods::select(['id', 'title'])->uniacid()->whereIn('id', $use_conditions_goods_ids)->get(),
  318. 'store' => app('plugins')->isEnabled('store-cashier') ? Store::select(['id', 'store_name'])->uniacid()->whereIn('id', $use_conditions_store_ids)->get() : [],
  319. 'is_integral_exchange_coupon' => $coupon->is_integral_exchange_coupon,
  320. 'exchange_coupon_integral' => $coupon->exchange_coupon_integral,
  321. 'member_tags_ids' => $coupon->member_tags_ids,
  322. 'member_tags_names' => $coupon->member_tags_names,
  323. 'integral_is_open' => $integral_is_open,
  324. 'integral_name' => $integral_name ?? '消费积分',
  325. 'member_tags_is_open' => app('plugins')->isEnabled('member-tags')
  326. ];
  327. return $this->successJson('ok',$data);
  328. }
  329. public function couponView()
  330. {
  331. return view('coupon.coupon', [
  332. 'id' => request()->id,
  333. ])->render();
  334. }
  335. //删除优惠券
  336. public function destory()
  337. {
  338. $coupon_id = intval(request()->id);
  339. if (!$coupon_id) {
  340. $this->errorJson('请传入正确参数.');
  341. }
  342. $coupon = Coupon::getCouponById($coupon_id);
  343. if (!$coupon) {
  344. return $this->errorJson('无此记录或者已被删除.');
  345. }
  346. $usageCount = Coupon::getUsageCount($coupon_id)->first()->toArray();
  347. if ($usageCount['has_many_member_coupon_count'] > 0) {
  348. return $this->errorJson('优惠券已被领取且尚未使用,因此无法删除');
  349. }
  350. $res = HotelCoupon::deleteCouponById($coupon_id);
  351. if ($res) {
  352. //店铺装修清除缓存
  353. if (app('plugins')->isEnabled('designer')) {
  354. Cache::flush();//清除缓存
  355. }
  356. return $this->successJson('删除优惠券成功');
  357. } else {
  358. return $this->errorJson('删除优惠券失败');
  359. }
  360. }
  361. /**
  362. * 获取搜索优惠券
  363. * @return html
  364. */
  365. public function getSearchCoupons()
  366. {
  367. $keyword = \YunShop::request()->keyword;
  368. $coupons = Coupon::getCouponsByName($keyword);
  369. return view('coupon.query', [
  370. 'coupons' => $coupons
  371. ])->render();
  372. }
  373. public function getSearchCouponsV2()
  374. {
  375. $keyword = request()->keyword;
  376. $coupons = Coupon::getCouponsByName($keyword);
  377. return $this->successJson('ok',$coupons);
  378. }
  379. /**
  380. * 获取搜索优惠券
  381. * @return html
  382. */
  383. public function getVueSearchCoupons()
  384. {
  385. $keyword = \YunShop::request()->keyword;
  386. $coupons = Coupon::getCouponsByName($keyword);
  387. echo json_encode($coupons);
  388. }
  389. //用于"适用范围"添加商品或者分类
  390. public function addParam()
  391. {
  392. $type = \YunShop::request()->type;
  393. switch ($type) {
  394. case 'goods':
  395. return view('coupon.tpl.goods')->render();
  396. break;
  397. case 'category':
  398. return view('coupon.tpl.category')->render();
  399. break;
  400. case 'store':
  401. return view('coupon.tpl.store')->render();
  402. break;
  403. case 'hotel':
  404. return view('coupon.tpl.hotel')->render();
  405. break;
  406. case 'goods-exchange':
  407. return view('coupon.tpl.exchange-goods')->render();
  408. break;
  409. }
  410. }
  411. //优惠券领取和发放记录
  412. public function log()
  413. {
  414. $couponId = request()->id;
  415. $couponName = request()->couponname;
  416. $member_keyword = request()->member_keyword;
  417. $nickname = request()->nickname;
  418. $getFrom = request()->getfrom;
  419. $searchSearchSwitch = request()->timesearchswtich;
  420. $timeStart = request()->time['start'];
  421. $timeEnd = request()->time['end'];
  422. $memberId = request()->member_id;
  423. if (empty($couponId) && empty($couponName) && ($getFrom == null) && empty($nickname) && empty($member_keyword) && ($searchSearchSwitch == 0) && empty($memberId)) {
  424. $list = CouponLog::getCouponLogs();
  425. } else {
  426. $searchData = [];
  427. if (!empty($couponId)) {
  428. $searchData['coupon_id'] = $couponId;
  429. }
  430. if (!empty($couponName)) {
  431. $searchData['coupon_name'] = $couponName;
  432. }
  433. if (!empty($nickname)) {
  434. $searchData['nickname'] = $nickname;
  435. }
  436. if (!empty($member_keyword)) {
  437. $searchData['member_keyword'] = $member_keyword;
  438. }
  439. if ($getFrom !== '') {
  440. $searchData['get_from'] = $getFrom;
  441. }
  442. if ($searchSearchSwitch == 1) {
  443. $searchData['time_search_swtich'] = $searchSearchSwitch;
  444. $searchData['time_start'] = $timeStart;
  445. $searchData['time_end'] = $timeEnd;
  446. }
  447. if (!empty($memberId)) {
  448. $searchData['member_id'] = $memberId;
  449. }
  450. $list = CouponLog::searchCouponLog($searchData);
  451. }
  452. $data = [
  453. 'list' => $list,
  454. 'couponid' => $couponId,
  455. ];
  456. return $this->successJson('ok',$data);
  457. }
  458. public function logView()
  459. {
  460. return view('coupon.log', [
  461. 'id' => request()->id,
  462. 'member_id' => request()->member_id,
  463. 'getfrom' => request()->getfrom,
  464. ])->render();
  465. }
  466. public function export()
  467. {
  468. $couponId = request()->id;
  469. $couponName = request()->couponname;
  470. $nickname = request()->nickname;
  471. $getFrom = request()->getfrom;
  472. $searchSearchSwitch = request()->timesearchswtich;
  473. $timeStart = request()->start;
  474. $timeEnd = request()->end;
  475. $export_page = request()->export_page ? request()->export_page : 1;
  476. if (empty($couponId) && empty($couponName) && ($getFrom == null) && empty($nickname) && ($searchSearchSwitch == 0)) {
  477. $buidler = CouponLog::getCouponLogsBuilder();
  478. } else {
  479. $searchData = [];
  480. if (!empty($couponId)) {
  481. $searchData['coupon_id'] = $couponId;
  482. }
  483. if (!empty($couponName)) {
  484. $searchData['coupon_name'] = $couponName;
  485. }
  486. if (!empty($nickname)) {
  487. $searchData['nickname'] = $nickname;
  488. }
  489. if ($getFrom != '') {
  490. $searchData['get_from'] = $getFrom;
  491. }
  492. if ($searchSearchSwitch == 1) {
  493. $searchData['time_search_swtich'] = $searchSearchSwitch;
  494. $searchData['time_start'] = $timeStart;
  495. $searchData['time_end'] = $timeEnd;
  496. }
  497. $buidler = CouponLog::searchCouponLogBuilder($searchData);
  498. }
  499. $export_model = new ExportService($buidler, $export_page);
  500. $file_name = date('Ymdhis', time()) . '优惠券领取记录';
  501. $export_data[0] = ['ID', '优惠券名称', '用户', '获得途径', '领取时间', '日志详情'];
  502. foreach ($export_model->builder_model as $key => $item) {
  503. $type = '';
  504. switch ($item->getfrom)
  505. {
  506. case '0' :
  507. $type = '发放';
  508. break;
  509. case '1' :
  510. $type = '领取';
  511. break;
  512. case '4' :
  513. $type = '购物赠送';
  514. break;
  515. case '5' :
  516. $type = '会员转赠';
  517. break;
  518. case '6' :
  519. $type = '签到奖励';
  520. break;
  521. }
  522. $export_data[$key + 1] = [
  523. $item->id,
  524. $export_model->eliminateSpecialSymbol($item->coupon->name),
  525. $export_model->eliminateSpecialSymbol($item->member->nickname),
  526. $type,
  527. date('Y-m-d h:i:s',$item->createtime),
  528. $item->logno,
  529. ];
  530. }
  531. $export_model->export($file_name, $export_data, \Request::query('route'));
  532. }
  533. public function addCouponCount(Request $request)
  534. {
  535. $total = (int)$request->get('total');
  536. $coupon = Coupon::find($request->get('id'));
  537. $coupon['total'] += $total;
  538. // 记录每次增加的数量
  539. $records = new CouponIncreaseRecords;
  540. $records['count'] = $total;
  541. $records['uniacid'] = $coupon['uniacid'];
  542. $records['coupon_id'] = $coupon['id'];
  543. $coupon->save();
  544. $records->save();
  545. return $this->successJson('ok', ['total' => $coupon['total']]);
  546. }
  547. }