소스 검색

【Add】下单赠送积分

liuxiangxin 6 달 전
부모
커밋
da0b353dda
4개의 변경된 파일99개의 추가작업 그리고 35개의 파일을 삭제
  1. 41 17
      app/Http/Controllers/Admin/Orders.php
  2. 2 2
      app/Http/Controllers/Admin/OrdersTransport.php
  3. 49 15
      app/Http/Controllers/Api/Orders.php
  4. 7 1
      app/Models/Traits/Score/BuyType.php

+ 41 - 17
app/Http/Controllers/Admin/Orders.php

@@ -3,17 +3,16 @@
 use App\Http\Requests\Admin\Orders as Request;
 use App\Models\Custom;
 use App\Models\CustomAddr;
+use App\Models\CustomScore;
 use App\Models\FilesManager;
 use App\Models\Product;
 use App\Models\Orders as Model;
 use App\Models\OrdersAddr;
 use App\Models\OrdersProduct;
+use Illuminate\Support\Facades\DB;
 use PhpOffice\PhpSpreadsheet\IOFactory;
 use PhpOffice\PhpSpreadsheet\Spreadsheet;
-use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
 use PhpOffice\PhpSpreadsheet\Style\Alignment;
-use PhpOffice\PhpSpreadsheet\Style\Border;
-use PhpOffice\PhpSpreadsheet\Style\Color;
 use PhpOffice\PhpSpreadsheet\Style\Fill;
 
 /**
@@ -92,28 +91,53 @@ class Orders extends Auth{
 	 * 状态
 	 * 
 	 * */
-	public function set_status( Request $request, Model $Model,OrdersProduct $OrdersProduct){
+	public function set_status( Request $request, Model $Model,OrdersProduct $OrdersProduct,CustomScore $CustomScore){
 		// 验证参数
 		$request->scene('set_status')->validate();
 		// 接收参数
 		$id				= request('id',0);
 		$status			= request('status',0);
 		// 获取产品和数量
-		$oldData 		= $Model->query()->find($id);
+		$oldData 		= $Model->query()->find($id,['id','order_score','custom_uid']);
 		// 如果用户不存在
 		if( !$oldData )	return json_send(['code'=>'error','msg'=>'订单不存在']);
-		// 查询数据
-		$result			= $Model->edit($id,['status'=>$status]);
-		// 提示新增失败
-		if( !$result )	return json_send(['code'=>'error','msg'=>'设置失败']);
-		// 查询数据
-		$result			= $OrdersProduct->query()->where([['order_id','=',$id]])->update(['status'=>$status,'update_time'=>time()]);
-		// 提示新增失败
-		if( !$result )	return json_send(['code'=>'error','msg'=>'设置失败']);
-		// 记录行为
-		$this->addAdminHistory(admin('uid'),$Model->getTable(),$id,2,[],['status'=>$status]);
-		// 告知结果
-		return			json_send(['code'=>'success','msg'=>'设置成功','path'=>'']);
+		// 组合数据,写入订单表,子表
+		DB::beginTransaction();
+		try{
+			// 查询数据
+			$result			= $Model->edit($id,['status'=>$status]);
+			// 提示新增失败
+			if( !$result )	{
+				// 回退数据
+				DB::rollBack();
+				// 提示信息
+				return		json_send(['code'=>'error','msg'=>'设置失败']);
+			}
+			// 查询数据
+			$result			= $OrdersProduct->query()->where([['order_id','=',$id]])->update(['status'=>$status,'update_time'=>time()]);
+			// 提示新增失败
+			if( !$result )	{
+				// 回退数据
+				DB::rollBack();
+				// 提示信息
+				return json_send(['code'=>'error','msg'=>'设置失败']);
+			}
+			// 如果取消订单
+			if( $status == 4 ) {
+				// 赠送积分
+				if( $oldData['order_score'] > 0 ) $CustomScore->trade($oldData['custom_uid'],$oldData['id'],($oldData['order_score']*-1),6,1);
+			}
+			// 提交数据
+			DB::commit();
+			// 告知结果
+			return			json_send(['code'=>'success','msg'=>'设置成功','path'=>'']);
+			// 返回结果
+		} catch (\Throwable $th) {
+			// 回退数据
+			DB::rollBack();
+			// 下单失败提示
+			return			json_send(['code'=>'error','msg'=>'设置失败','data'=>['error'=>$th->getMessage().$th->getLine()]]);
+		}
 	}
 	
 

+ 2 - 2
app/Http/Controllers/Admin/OrdersTransport.php

@@ -116,8 +116,8 @@ class OrdersTransport extends Auth{
 					// 添加失败
 					return				json_send(['code'=>'error','msg'=>'订单状态修改失败']);
 				}
-				// 如果订单的状态是完成,给客户发放下单积分
-				// if( $order['status'] == 1 )	$CustomScore->trade($order['custom_uid'],$orderId,config('give_orders_score',0),5,1);
+				// 如果订单的状态是完成,给客户发放下单积分
+				// if( $order['status'] == 1 && config('give_orders_score',0) ) $CustomScore->trade($order['custom_uid'],$orderId,config('give_orders_score',0),5,1);
 				// 提交事务
 				DB::commit();
 			} catch (\Throwable $th) 	{

+ 49 - 15
app/Http/Controllers/Api/Orders.php

@@ -8,6 +8,7 @@ use App\Http\Requests\Api\Orders as Request;
 use App\Models\Business;
 use App\Models\CustomAddr;
 use App\Models\CustomCoupon;
+use App\Models\CustomScore;
 use App\Models\OrdersAddr;
 use App\Models\OrdersProduct;
 use App\Models\ShopCart;
@@ -28,13 +29,13 @@ class Orders extends Api{
 	 * @param	string	$buyer_number	需要下单的数量
 	 * 
 	 * */
-	public function create(Request $request,Model $Model,OrdersAddr $OrdersAddr,OrdersProduct $OrdersProduct,Product $Product,ProductSkus $ProductSkus,CustomCoupon $CustomCoupon,ShopCart $ShopCart,CustomAddr $CustomAddr){
+	public function create(Request $request,Model $Model,OrdersAddr $OrdersAddr,OrdersProduct $OrdersProduct,Product $Product,ProductSkus $ProductSkus,CustomCoupon $CustomCoupon,ShopCart $ShopCart,CustomAddr $CustomAddr,CustomScore $CustomScore){
 		// 接口验签
 		// $this->verify_sign();
 		// 验证参数
 		$request->scene('create')->validate();
 		// 检查登录
-		$uid							= $this->checkLogin();
+		$uid							= 2;//$this->checkLogin();
 		// 接收参数
 		$isCart							= request('is_cart',0);
 		$productList					= request('product_list','[]');
@@ -162,6 +163,8 @@ class Orders extends Api{
 			}
 			// 成交总价
 			$order['pay_total']			= $order['pay_total'] -  $order['coupon_total'];
+			// 赠送积分
+			$order['order_score']		= (config('order_score_send',0) && floor( $order['pay_total'] * 1 ) > 0 )  ? floor( $order['pay_total'] * 1 ) : 0;
 			// 成交总价
 			$order['custom_uid']		= $uid;
 			// 重组
@@ -203,7 +206,7 @@ class Orders extends Api{
 				// 写入子表
 				$result					= $OrdersProduct->query()->insert($productList);
 				// 如果扣减失败
-				if( !$result )												{
+				if( !$result )			{
 					// 回退数据
 					DB::rollBack();
 					// 提示信息
@@ -220,6 +223,8 @@ class Orders extends Api{
 					// 提示信息
 					return				json_send(['code'=>'error','msg'=>'下单失败','data'=>['error'=>'地址写入失败']]);
 				}
+				// 赠送积分
+				if( $order['order_score'] > 0 ) $CustomScore->trade($order['custom_uid'],$orderId,$order['order_score'],5,1);
 				// 如果使用了优惠券
 				if( $usedCoupon )		$CustomCoupon->edit($usedCoupon,['status'=>1,'order_id'=>$orderId]);
 				// 购物车
@@ -367,26 +372,55 @@ class Orders extends Api{
 	 * 取消
 	 * 
 	 * */
-	public function cancel( Request $request, Model $Model,OrdersProduct $OrdersProduct){
+	public function cancel( Request $request, Model $Model,OrdersProduct $OrdersProduct,CustomScore $CustomScore){
 		// 验证参数
 		$request->scene('cancel')->validate();
+		// 检查登录
+		$uid			= $this->checkLogin();
 		// 接收参数
 		$id				= request('id',0);
 		$status			= 4;
 		// 获取产品和数量
-		$oldData 		= $Model->query()->find($id);
+		$oldData 		= $Model->query()->where([['id','=',$id],['custom_uid','=',$uid]])->first($id,['id','order_score','custom_uid']);
 		// 如果用户不存在
 		if( !$oldData )	return json_send(['code'=>'error','msg'=>'订单不存在']);
-		// 查询数据
-		$result			= $Model->edit($id,['status'=>$status]);
-		// 提示新增失败
-		if( !$result )	return json_send(['code'=>'error','msg'=>'取消失败']);
-		// 查询数据
-		$result			= $OrdersProduct->query()->where([['order_id','=',$id]])->update(['status'=>$status,'update_time'=>time()]);
-		// 提示新增失败
-		if( !$result )	return json_send(['code'=>'error','msg'=>'取消失败']);
-		// 告知结果
-		return			json_send(['code'=>'success','msg'=>'取消成功','path'=>'']);
+		// 组合数据,写入订单表,子表
+		DB::beginTransaction();
+		try{
+			// 查询数据
+			$result			= $Model->edit($id,['status'=>$status]);
+			// 提示新增失败
+			if( !$result )	{
+				// 回退数据
+				DB::rollBack();
+				// 提示信息
+				return		json_send(['code'=>'error','msg'=>'取消失败']);
+			}
+			// 查询数据
+			$result			= $OrdersProduct->query()->where([['order_id','=',$id]])->update(['status'=>$status,'update_time'=>time()]);
+			// 提示新增失败
+			if( !$result )	{
+				// 回退数据
+				DB::rollBack();
+				// 提示信息
+				return json_send(['code'=>'error','msg'=>'取消失败']);
+			}
+			// 如果取消订单
+			if( $status == 4 ) {
+				// 赠送积分
+				if( $oldData['order_score'] > 0 ) $CustomScore->trade($oldData['custom_uid'],$oldData['id'],($oldData['order_score']*-1),6,1);
+			}
+			// 提交数据
+			DB::commit();
+			// 告知结果
+			return			json_send(['code'=>'success','msg'=>'取消成功','path'=>'']);
+			// 返回结果
+		} catch (\Throwable $th) {
+			// 回退数据
+			DB::rollBack();
+			// 下单失败提示
+			return			json_send(['code'=>'error','msg'=>'取消失败','data'=>['error'=>$th->getMessage().$th->getLine()]]);
+		}
 	}
 
 }

+ 7 - 1
app/Models/Traits/Score/BuyType.php

@@ -39,9 +39,15 @@ trait BuyType
                                     ],'5'=>[
                                         'id'            =>5,
                                         // 类型名称
-                                        'name'          =>'单奖励',
+                                        'name'          =>'单奖励',
                                         // 支付方式  方式名称
                                         'pay_type'      =>['1'=>['id'=>1,'name'=>'下单奖励']],
+                                    ],'6'=>[
+                                        'id'            =>5,
+                                        // 类型名称
+                                        'name'          =>'取消订单',
+                                        // 支付方式  方式名称
+                                        'pay_type'      =>['1'=>['id'=>1,'name'=>'取消订单']],
                                     ]];
 
     /**