浏览代码

【Add】优惠券商品接口

liuxiangxin 6 月之前
父节点
当前提交
9f4433e1e7

+ 64 - 0
app/Http/Controllers/Api/Coupon.php

@@ -0,0 +1,64 @@
+<?php namespace App\Http\Controllers\Api;
+
+use App\Http\Controllers\Api\Api;
+use App\Models\CouponProduct;
+use App\Models\Coupon as Model;
+use App\Http\Requests\Api\Coupon as Request;
+
+/**
+ * 优惠券接口
+ * 
+ * @author 刘相欣
+ * 
+ * */
+class Coupon extends Api{
+
+
+	/**
+	 * 获取优惠券可用商品			/api/coupon/get_product
+	 * 
+	 * @param	string		$code		授权码
+	 * 
+	 * */
+	public function get_product(Request $request,Model $Model,CouponProduct $CouponProduct){
+		// 接口验签
+		// $this->verify_sign();
+		// 验证参数
+		$request->scene('get_product')->validate();
+		// 检查登录
+		$uid						= $this->checkLogin();
+		// 接收参数
+		$couponId					= request('coupon_id',0);
+		$limit						= request('limit',10);
+		// 显示
+		$map						= [['id','=',$couponId],['status','=',0]];
+		// 查询
+		$coupon						= $Model->query()->where($map)->first();
+		// 获取优惠券可用商品列表
+		$Paginator					= $CouponProduct->query()
+									->join('product','coupon_product.product_id','=','product.id')
+									->where([['coupon_product.coupon_id','=',$couponId],['product.status','=',0]])
+									->orderBy('product.sort')
+									->orderBy('product.id')
+									->paginate($limit,['product.id','product.sort','product.name','product.thumb','product.spec','product.price','product.market_price','product.stock']);
+		// 获取数据
+		$data['total']				= $Paginator->total();
+		$data['current_page']		= $Paginator->currentPage();
+		$data['per_page']			= $Paginator->perPage();
+		$data['last_page']			= $Paginator->lastPage();
+		$data['data']				= $Paginator->items();
+		// 处理请求
+		foreach ( $data['data'] as $key => $value ) {
+			// 处理数据
+			$value['thumb'] 		= path_compat($value['thumb']);
+			// 重组数据
+			$data['data'][$key]		= $value;
+		}
+		// 返回结果
+		return						json_send(['code'=>'success','msg'=>'获取成功','data'=>$data]);
+	}
+
+
+	
+
+}

+ 20 - 3
app/Http/Controllers/Api/CustomCoupon.php

@@ -20,7 +20,7 @@ class CustomCoupon extends Api{
 	 * @param	string		$code		授权码
 	 * 
 	 * */
-	public function get_list(Model $Model,CouponRebate $CouponRebate){
+	public function get_list(Model $Model,CouponRebate $CouponRebate,CouponProduct $CouponProduct){
 		// 接口验签
 		// $this->verify_sign();
 		// 检查登录
@@ -33,6 +33,8 @@ class CustomCoupon extends Api{
 		$Paginator					= $Model->query()->join('coupon','custom_coupon.coupon_id','=','coupon.id')->where($map)->orderBy('custom_coupon.status')->paginate($limit,['custom_coupon.id','coupon.id as coupon_id','coupon.name','coupon.type_id','coupon.rebate_type','coupon.std_pay','coupon.rebate','custom_coupon.status','custom_coupon.exp_time']);
 		// 通过优惠券ID,查询赠品
 		$rebates					= $CouponRebate->getRebatesByCouponIds(array_column($Paginator->items(),'coupon_id'));
+		// 商品范围
+		$products					= $CouponProduct->getProductList(array_column($Paginator->items(),'coupon_id'));
 		// 循环处理数据
 		foreach ($Paginator as $key => $value) {
 			$rebateScope			= [];
@@ -50,10 +52,25 @@ class CustomCoupon extends Api{
 				// 设置过期状态
 				$Model->setStatusByExpire();
 				// 状态设置
-				$value['status'] = 3;
+				$value['status'] 	= 3;
 			}
-			// 适用范围
+			// 赠品范围
 			$value['rebate_scope']	= $rebateScope;
+			// 产品范围
+			$productScope			= [];
+			// 状态可用 且指定商品
+			if( $value['status'] == 0 && $value['type_id'] == 1 ) {
+				// 获取赠品列表
+				foreach ($products as $vv) {
+					// 获取优惠券的赠品
+					if( $vv['coupon_id'] == $value['coupon_id'] ) {
+						// 赠品信息
+						$productScope[] = $vv['product_id'];
+					}
+				}
+			}
+			// 商品范围
+			$value['product_scope']	= $productScope;
 			// 时间
 			$value['exp_time']		= date('Y-m-d H:i:s',$value['exp_time']);
 			// 优惠券回馈类型

+ 0 - 1
app/Http/Controllers/Api/Product.php

@@ -63,7 +63,6 @@ class Product extends Api{
 		foreach ( $data['data'] as $key => $value ) {
 			// 处理数据
 			$value['thumb'] 		= path_compat($value['thumb']);
-			$value['poster'] 		= path_compat($value['poster']);
 			// 重组数据
 			$data['data'][$key]		= $value;
 		}

+ 52 - 0
app/Http/Requests/Api/Coupon.php

@@ -0,0 +1,52 @@
+<?php namespace App\Http\Requests\Api;
+
+use App\Http\Requests\BaseRequest;
+/**
+ * 优惠券验证器
+ * 
+ */
+class Coupon extends BaseRequest
+{
+    /**
+     * 获取应用于请求的规则
+     *
+     * @return array
+     */
+    public function rules()
+    {
+        // 编辑时排除ID
+        // 返回结果
+        return      [
+            // 有时候我们希望某个字段在第一次验证失败后就停止运行验证规则,只需要将 bail 添加到规则中:
+            // 验证字段,验证规则,提示信息
+            // 'name'       => 'string|max:20',
+            'coupon_id'     => 'required|integer|gt:0',
+            'page'          => 'integer|gte:0',
+            'limit'         => 'integer|gte:0',
+        ];
+    }
+
+    // 场景列表
+    protected   $scenes         = [
+        'get_product'         => ['coupon_id','page','limit'],
+	];
+
+    /**
+     * 获取已定义验证规则的错误消息
+     *
+     * @return array
+     */
+    public function messages()
+    {
+        return [
+            'coupon_id.required'   		=> '请选择优惠券',
+            'coupon_id.integer'   		=> '优惠券ID格式错误',
+            'coupon_id.gt'   		    => '优惠券ID格式错误',
+            'page.integer'   		    => '页码格式错误',
+            'page.gte'   		        => '页码格式错误',
+            'limit.integer'   		    => '取数格式错误',
+            'limit.gte'   		        => '取数格式错误',
+        ];
+    }
+
+}

+ 0 - 2
resources/views/admin/coupon/index.blade.php

@@ -55,7 +55,6 @@ style="margin: 0 auto;width: 96%;padding: 30px 0px;"
 						<th>优惠券数量</th>
 						<th>已领取数量</th>
 						<th>指定客户</th>
-						<th>创建人</th>
 						<th>创建时间</th>
 						<th>操作</th>
 					</tr>
@@ -80,7 +79,6 @@ style="margin: 0 auto;width: 96%;padding: 30px 0px;"
 						<td> {{$a['issue_total']}}</td>
 						<td> {{$a['custom_total']}}</td>
 						<td> {{$a['is_appt']==0?'全部客户':'指定客户'}}</td>
-						<td> {{$a['admin_name']}}</td>
 						<td> {{date('Y/m/d H:i:s',$a['insert_time'])}}</td>
 						<td>
 							@if( check_auth('admin/custom_coupon/index') )

+ 4 - 1
routes/api.php

@@ -114,4 +114,7 @@ Route::any('custom/set_city',[\App\Http\Controllers\Api\Custom::class,'set_city'
 Route::any('banner/get_list',[\App\Http\Controllers\Api\Banner::class,'get_list']);
 
 // 客服二维码
-Route::any('weiban_qrcode/get_qrcode',[\App\Http\Controllers\Api\WeiBanQrcode::class,'get_qrcode']);
+Route::any('weiban_qrcode/get_qrcode',[\App\Http\Controllers\Api\WeiBanQrcode::class,'get_qrcode']);
+
+// 客服二维码
+Route::any('coupon/get_product',[\App\Http\Controllers\Api\Coupon::class,'get_product']);