徐总多门店
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

127 lines
3.9 KiB

3 months ago
<?php
namespace app\controller\out;
use app\Request;
use app\services\activity\coupon\StoreCouponIssueServices;
use app\services\product\product\StoreProductCouponServices;
class Coupon
{
/**
* 优惠券services
* @var StoreCouponIssueServices
*/
protected $issueServices;
/**
* @param StoreCouponIssueServices $issueServices
*/
public function __construct(StoreCouponIssueServices $issueServices)
{
$this->issueServices = $issueServices;
}
/**
* 优惠券列表
* @param Request $request
* @return mixed
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function couponList(Request $request)
{
$where = $request->getMore([
['status', 1],
['coupon_title', ''],
['receive_type', ''],
['coupon_type', ''],
['type', '', '', 'receive'],
]);
$list = $this->issueServices->getCouponIssueList($where);
$list['pages_url'] = '/pages/users/user_get_coupon/index';
return app('json')->success($list);
}
/**
* 新增优惠券
* @param Request $request
* @return void
*/
public function couponSave(Request $request)
{
$data = $request->postMore([
['coupon_title', ''],
['coupon_price', 0.00],
['use_min_price', 0.00],
['coupon_time', 0],
['start_use_time', 0],
['end_use_time', 0],
['start_time', 0],
['end_time', 0],
['receive_type', 0],
['is_permanent', 0],
['total_count', 0],
['product_id', ''],
['category_id', []],
['type', 0],
['sort', 0],
['status', 0],
['coupon_type', 1],
]);
if ($data['category_id']) {
$data['category_id'] = end($data['category_id']);
}
if ($data['start_time'] && $data['start_use_time']) {
if ($data['start_use_time'] < $data['start_time']) {
return app('json')->fail('使用开始时间不能小于领取开始时间');
}
}
if ($data['end_time'] && $data['end_use_time']) {
if ($data['end_use_time'] < $data['end_time']) {
return app('json')->fail('使用结束时间不能小于领取结束时间');
}
}
//赠送券 、新人券不限量
if (in_array($data['receive_type'], [2, 3])) {
$data['is_permanent'] = 1;
$data['total_count'] = 0;
}
if (!$data['coupon_price']) {
return app('json')->fail($data['coupon_type'] == 1 ? '请输入优惠券金额' : '请输入优惠券折扣');
}
if ($data['coupon_type'] == 2 && ($data['coupon_price'] < 0 || $data['coupon_price'] > 100)) {
return app('json')->fail('优惠券折扣为0~100数字');
}
$res = $this->issueServices->saveCoupon($data);
if ($res) return app('json')->success('添加成功!');
}
/**
* 修改优惠券状态
* @param $id
* @param $status
* @return mixed
*/
public function setStatus($id, $status)
{
$this->issueServices->update($id, ['status' => $status]);
return app('json')->success('修改成功');
}
/**
* 删除优惠券
* @param $id
* @return mixed
*/
public function couponDel($id)
{
$this->issueServices->update($id, ['is_del' => 1]);
/** @var StoreProductCouponServices $storeProductService */
$storeProductService = app()->make(StoreProductCouponServices::class);
//删除商品关联这个优惠券
$storeProductService->delete(['issue_coupon_id' => $id]);
return app('json')->success('删除成功!');
}
}