Pārlūkot izejas kodu

【Add】地址接口新增

liuxiangxin 3 mēneši atpakaļ
vecāks
revīzija
f558a5cf50

+ 4 - 3
app/Http/Controllers/Api/Custom.php

@@ -41,7 +41,7 @@ class Custom extends Api{
 		// 手机号
 		$custom['phone']				= hide_phone($custom['phone']);
 		// 如果没有关联企微,获取二维码,已关联的不验证
-		$followQrcode					= $custom['external_userid'] ?  '' : $WorkState->getFollowQrcode($custom['city_id']);
+		$followQrcode					= $WorkState->getFollowQrcode($custom['city_id']);
 		// 城市ID换城市名
 		$cityId							= (string) $City->getOne($custom['city_id'],'name');
 		// 所需数组组合
@@ -51,9 +51,10 @@ class Custom extends Api{
 											'userpic'=>$custom['userpic'],
 											'phone'=>$custom['phone'],
 											'company_id'=>1, // 无需验证资质
-											'show_price'=>$cityId?1:0, // 是否选择了城市处理
+											'show_price'=>1, // 是否选择了城市处理
 											'city_id'=>$cityId,
-											'follow_qrcode'=>$followQrcode,
+											'have_follow'=>$custom['external_userid']?1:0,
+											'follow_qrcode'=>(string)$followQrcode,
 											'follow_linkurl'=>'',
 										];
 		// 返回结果

+ 25 - 32
app/Http/Controllers/Api/Orders.php

@@ -6,9 +6,8 @@ use App\Models\Product;
 use App\Models\Product\Skus as ProductSkus;
 use App\Http\Requests\Api\Orders as Request;
 use App\Models\Business;
-use App\Models\City;
 use App\Models\Custom;
-use App\Models\CustomAddr;
+use App\Models\StudentAddr;
 use App\Models\CustomCoupon;
 use App\Models\CustomScore;
 use App\Models\OrdersAddr;
@@ -35,7 +34,7 @@ class Orders extends Api{
 	 * 创建订单						 	/api/orders/create
 	 * 
 	 * */
-	public function create(Request $request,Custom $Custom,City $City,Model $Model,WorkTag $WorkTag,OrdersAddr $OrdersAddr,OrdersProduct $OrdersProduct,Product $Product,ProductSkus $ProductSkus,CustomCoupon $CustomCoupon,ShopCart $ShopCart,CustomAddr $CustomAddr,CustomScore $CustomScore,PromoProduct $PromoProduct){
+	public function create(Request $request,Custom $Custom,Model $Model,WorkTag $WorkTag,OrdersAddr $OrdersAddr,OrdersProduct $OrdersProduct,Product $Product,ProductSkus $ProductSkus,CustomCoupon $CustomCoupon,ShopCart $ShopCart,StudentAddr $StudentAddr,CustomScore $CustomScore,PromoProduct $PromoProduct){
 		// 接口验签
 		// $this->verify_sign();
 		// 验证参数
@@ -54,24 +53,22 @@ class Orders extends Api{
 		// 如果不存在数据
 		if( empty($buyList) )			return json_send(['code'=>'error','msg'=>'没有需下单的产品','data'=>['error'=>'产品列表为空']]);
 		// 选择地址
-		$addr							= $CustomAddr->getOne($addrId);
+		$addr							= $StudentAddr->getOne($addrId);
 		// 如果不存在数据
 		if( !$addr )					return json_send(['code'=>'error','msg'=>'地址有误,请核对','data'=>['error'=>'没有找到对应的地址']]);
 		// 重组数据
-		$addr							= ['contact_name'=>$addr['contact_name'],'contact_shop'=>$addr['contact_shop'],'contact_phone'=>$addr['contact_phone'],'contact_province'=>$addr['contact_province'],'contact_city'=>$addr['contact_city'],'contact_area'=>$addr['contact_area'],'contact_addr'=>$addr['contact_addr']];
+		$addr							= [
+											'contact_area'=>$addr['contact_area'],
+											'contact_school'=>$addr['contact_school'],
+											'contact_grade'=>$addr['contact_grade'],
+											'contact_class'=>$addr['contact_class'],
+											'contact_name'=>$addr['contact_name'],
+											'contact_phone'=>$addr['contact_phone'],
+										];
 		// 获取客户城市ID
 		$custom							= $Custom->getOne($uid);
 		// 如果不存在的话
 		if( !$custom )					return json_send(['code'=>'no_login','msg'=>'用户不存在,请重新登录','data'=>['error'=>'用户不存在,请重新登录']]);
-		// 如果不存在的话
-		if( !$custom['city_id'] )		return json_send(['code'=>'error','msg'=>'请选择所在城市后下单','data'=>['error'=>'请选择所在城市后下单']]);
-		// 获取城市ID
-		$cityId							= $custom['city_id'];
-		$cityName						= $City->getOne($cityId,'name');
-		$pid 							= $City->getOne($cityId,'pid');
-		$province						= $City->getOne($pid,'name');
-		// 判断选择的城市名称是不是一致
-		if( $cityName != $addr['contact_city'] ) return json_send(['code'=>'error','msg'=>'收货地址请选择'.$province.'/'.$cityName,'data'=>['error'=>'收货地址需与您所选城市一致']]);
         // 商品购买数量
 		$buyNum							= [];
 		// 循环购买信息
@@ -188,7 +185,7 @@ class Orders extends Api{
 		// 获取优惠券赠品信息
 		$rebateProduct					= $couponRebate['rebate_product'];
         /*活动优惠数据*/
-        $promoList					    = $PromoProduct->getRebatePrice(array_column($buyList,'product_id'),$uid,$productPrice,$cityId,$tags);
+        $promoList					    = $PromoProduct->getRebatePrice(array_column($buyList,'product_id'),$productPrice,$tags);
         $promoProductPrice				= $promoList['product_price'];
         $promoRebateProduct				= $promoList['rebate_product'];
         //订单支付总价
@@ -617,7 +614,7 @@ class Orders extends Api{
      * 创建拼团订单						 	/api/orders/create_regiment
      *
      * */
-    public function create_regiment(Request $request,Custom $Custom,City $City,Model $Model,WorkTag $WorkTag,OrdersAddr $OrdersAddr,OrdersProduct $OrdersProduct,Product $Product,ProductSkus $ProductSkus,CustomCoupon $CustomCoupon,ShopCart $ShopCart,CustomAddr $CustomAddr,CustomScore $CustomScore){
+    public function create_regiment(Request $request,Custom $Custom,Model $Model,WorkTag $WorkTag,OrdersAddr $OrdersAddr,OrdersProduct $OrdersProduct,Product $Product,ProductSkus $ProductSkus,CustomCoupon $CustomCoupon,ShopCart $ShopCart,StudentAddr $StudentAddr,CustomScore $CustomScore){
         // 接口验签
         // $this->verify_sign();
         // 验证参数
@@ -625,9 +622,7 @@ class Orders extends Api{
         // 检查登录
         $uid							= $this->checkLogin();
         // 接收参数
-        $isCart							= request('is_cart',0);
         $productList					= request('product_list','[]');
-        $customCouponId					= request('custom_coupon_id',0);
         $addrId							= request('addr_id',0);
         $regimentId					    = request('regiment_id',0);
         $regimentActiveId				= request('regiment_active_id',0);
@@ -642,24 +637,22 @@ class Orders extends Api{
         if( empty($buyList) )			return json_send(['code'=>'error','msg'=>'没有需下单的产品','data'=>['error'=>'产品列表为空']]);
         $time = time();
         // 选择地址
-        $addr							= $CustomAddr->getOne($addrId);
-        // 如果不存在数据
-        if( !$addr )					return json_send(['code'=>'error','msg'=>'地址有误,请核对','data'=>['error'=>'没有找到对应的地址']]);
-        // 重组数据
-        $addr							= ['contact_name'=>$addr['contact_name'],'contact_shop'=>$addr['contact_shop'],'contact_phone'=>$addr['contact_phone'],'contact_province'=>$addr['contact_province'],'contact_city'=>$addr['contact_city'],'contact_area'=>$addr['contact_area'],'contact_addr'=>$addr['contact_addr']];
+		$addr							= $StudentAddr->getOne($addrId);
+		// 如果不存在数据
+		if( !$addr )					return json_send(['code'=>'error','msg'=>'地址有误,请核对','data'=>['error'=>'没有找到对应的地址']]);
+		// 重组数据
+		$addr							= [
+											'contact_area'=>$addr['contact_area'],
+											'contact_school'=>$addr['contact_school'],
+											'contact_grade'=>$addr['contact_grade'],
+											'contact_class'=>$addr['contact_class'],
+											'contact_name'=>$addr['contact_name'],
+											'contact_phone'=>$addr['contact_phone'],
+										];
         // 获取客户城市ID
         $custom							= $Custom->getOne($uid);
         // 如果不存在的话
         if( !$custom )					return json_send(['code'=>'no_login','msg'=>'用户不存在,请重新登录','data'=>['error'=>'用户不存在,请重新登录']]);
-        // 如果不存在的话
-        if( !$custom['city_id'] )		return json_send(['code'=>'error','msg'=>'请选择所在城市后下单','data'=>['error'=>'请选择所在城市后下单']]);
-        // 获取城市ID
-        $cityId							= $custom['city_id'];
-        $cityName						= $City->getOne($cityId,'name');
-        $pid 							= $City->getOne($cityId,'pid');
-        $province						= $City->getOne($pid,'name');
-        // 判断选择的城市名称是不是一致
-        if( $cityName != $addr['contact_city'] ) return json_send(['code'=>'error','msg'=>'收货地址请选择'.$province.'/'.$cityName,'data'=>['error'=>'收货地址需与您所选城市一致']]);
         //获取团活动信息
         $regimentActiveInfo             = RegimentActive::query()
             ->where([['id','=',$regimentActiveId],['status','=',1],['start_time','<=',$time],['end_time','>=',$time]])

+ 154 - 0
app/Http/Controllers/Api/StudentAddr.php

@@ -0,0 +1,154 @@
+<?php namespace App\Http\Controllers\Api;
+
+use App\Http\Controllers\Api\Api;
+use App\Models\CustomAddr as Model;
+use App\Http\Requests\Api\CustomAddr as Request;
+
+/**
+ * 学生地址
+ * 
+ * @author 刘相欣
+ * 
+ * */
+class StudentAddr extends Api{
+	
+
+	/**
+	 * 获取列表			/api/student_addr/get_list
+	 * 
+	 * @param	string		$code		授权码
+	 * 
+	 * */
+	public function get_list(Model $Model){
+		// 接口验签
+		// $this->verify_sign();
+		// 检查登录
+		$uid							= $this->checkLogin();
+		// 查询信息
+		$list							= $Model->getListByCustom($uid);
+		// 返回结果
+		return							json_send(['code'=>'success','msg'=>'获取成功','data'=>$list]);
+	}
+	
+	/**
+	 * 添加			/api/student_addr/add
+	 * 
+	 * @param	string		$code		授权码
+	 * 
+	 * */
+	public function add(Request $request,Model $Model){
+		// 接口验签
+		// $this->verify_sign();
+		// 验证参数
+		$request->scene('add')->validate();
+		// 检查登录
+		$uid							= $this->checkLogin();
+		// 接收参数
+		$data['contact_area']			= request('contact_area','');
+		$data['contact_school']			= request('contact_school','');
+		$data['contact_grade']			= request('contact_grade','');
+		$data['contact_class']			= request('contact_class','');
+		$data['contact_name']			= request('contact_name','');
+		$data['contact_phone']			= request('contact_phone','');
+		$data['is_default']				= request('is_default',0);
+		$data['custom_uid']				= $uid;
+		// 最大数量
+		$limitMax						= 20;
+		$havaNum						= $Model->query()->where([['custom_uid','=',$uid]])->count();
+		// 如果是最大数量的话
+		if( $havaNum > $limitMax )		return json_send(['code'=>'error','msg'=>'您已经有'.$limitMax.'条地址了','data'=>['error'=>'最多只能保20条地址']]);
+		// 如果需要默认当前的话
+		if( $data['is_default'] )		$Model->query()->where([['custom_uid','=',$uid]])->update(['is_default'=>0]);
+		// 查询是否已经提交过
+		$result							= $Model->add($data);
+		// 如果用户状态被拉黑,不允许登录
+		if( !$result )					return json_send(['code'=>'error','msg'=>'保存失败,请重试','data'=>['error'=>'写入失败']]);
+		// 返回结果
+		return							json_send(['code'=>'success','msg'=>'保存成功','data'=>$data]);
+	}
+
+
+	/**
+	 * 修改			/api/student_addr/edit
+	 * 
+	 * @param	string		$code		授权码
+	 * 
+	 * */
+	public function edit(Request $request,Model $Model){
+		// 接口验签
+		// $this->verify_sign();
+		// 检查登录
+		$uid							= $this->checkLogin();
+		// 验证参数
+		$request->scene('edit')->validate();
+		// 接收参数
+		$id								= request('id',0);
+		$data['contact_area']			= request('contact_area','');
+		$data['contact_school']			= request('contact_school','');
+		$data['contact_grade']			= request('contact_grade','');
+		$data['contact_class']			= request('contact_class','');
+		$data['contact_name']			= request('contact_name','');
+		$data['contact_phone']			= request('contact_phone','');
+		$data['is_default']				= request('is_default',0);
+		$data['is_default']				= request('is_default',0);
+		// 如果需要默认当前的话
+		if( $data['is_default'] )		$Model->query()->where([['custom_uid','=',$uid]])->update(['is_default'=>0]);
+		// 查询是否已经提交过
+		$result							= $Model->edit($id,$data);
+		// 如果用户状态被拉黑,不允许登录
+		if( !$result )					return json_send(['code'=>'error','msg'=>'保存失败,请重试','data'=>['error'=>'写入失败']]);
+		// 返回结果
+		return							json_send(['code'=>'success','msg'=>'保存成功','data'=>$data]);
+	}
+	
+
+	/**
+	 * 删除			/api/student_addr/del
+	 * 
+	 * @param	string		$code		授权码
+	 * 
+	 * */
+	public function del(Request $request,Model $Model){
+		// 接口验签
+		// $this->verify_sign();
+		// 检查登录
+		$uid							= $this->checkLogin();
+		// 验证参数
+		$request->scene('del')->validate();
+		// 接收参数
+		$id								= request('id',0);
+		// 如果需要默认当前的话
+		$result							= $Model->del($id);
+		// 如果用户状态被拉黑,不允许登录
+		if( !$result )					return json_send(['code'=>'success','msg'=>'删除失败','data'=>['error'=>'删除失败']]);
+		// 返回结果
+		return							json_send(['code'=>'success','msg'=>'删除成功','data'=>['id'=>$id]]);
+	}
+
+	/**
+	 * 修改			/api/student_addr/set_default
+	 * 
+	 * @param	string		$code		授权码
+	 * 
+	 * */
+	public function set_default(Request $request,Model $Model){
+		// 接口验签
+		// $this->verify_sign();
+		// 检查登录
+		$uid							= $this->checkLogin();
+		// 验证参数
+		$request->scene('set_default')->validate();
+		// 接收参数
+		$id								= request('id',0);
+		// 如果需要默认当前的话
+		$Model->query()->where([['custom_uid','=',$uid]])->update(['is_default'=>0]);
+		// 查询是否已经提交过
+		$result							= $Model->edit($id,['is_default'=>1]);
+		// 如果用户状态被拉黑,不允许登录
+		if( !$result )					return json_send(['code'=>'error','msg'=>'保存失败,请重试','data'=>['error'=>'写入失败']]);
+		// 返回结果
+		return							json_send(['code'=>'success','msg'=>'保存成功','data'=>['id'=>$id]]);
+	}
+	
+
+}

+ 62 - 0
app/Http/Requests/Api/StudentAddr.php

@@ -0,0 +1,62 @@
+<?php namespace App\Http\Requests\Api;
+
+use App\Http\Requests\BaseRequest;
+/**
+ * 地址验证器
+ * 
+ */
+class StudentAddr extends BaseRequest
+{
+    /**
+     * 获取应用于请求的规则
+     *
+     * @return array
+     */
+    public function rules()
+    {
+        // 编辑时排除ID
+        // 返回结果
+        return      [
+            // 有时候我们希望某个字段在第一次验证失败后就停止运行验证规则,只需要将 bail 添加到规则中:
+            // 验证字段,验证规则,提示信息
+            // 地址
+            'id'                    => 'required|integer|gt:0',
+            'contact_area'          => 'required',
+            'contact_school'        => 'required',
+            'contact_grade'         => 'required',
+            'contact_class'         => 'required',
+            'contact_name'          => 'required|max:20',
+            'contact_phone'         => 'required|phone',
+        ];
+    }
+
+    // 场景列表
+    protected   $scenes         = [
+        'add'                   => ['contact_area','contact_school','contact_grade','contact_class','contact_name','contact_phone'],
+        'edit'                  => ['id','contact_area','contact_school','contact_grade','contact_class','contact_name','contact_phone'],
+        'del'                   => ['id'],
+        'set_default'           => ['id'],
+	];
+
+    /**
+     * 获取已定义验证规则的错误消息
+     *
+     * @return array
+     */
+    public function messages()
+    {
+        return [
+            'contact_area.required'     => '请选择地区',
+            'contact_school.required'   => '请选择学校',
+            'contact_grade.required'   	=> '请选择地区',
+            'contact_class.required'   	=> '请填写地址',
+            'contact_name.required'   	=> '请填写学生姓名',
+            'contact_phone.required'    => '请填写手机号',
+            'contact_phone.phone'       => '请填写正确的手机号',
+            'id.required'               => '请选择地址',
+            'id.integer'                => '地址格式有误',
+            'id.gt'                     => '地址格式有误',
+        ];
+    }
+
+}

+ 1 - 8
app/Models/PromoProduct.php

@@ -120,20 +120,14 @@ class PromoProduct extends Model
      * 获取优惠券扣减金额
      *
      */
-    public function getRebatePrice($productIds,$uid,$productPrice,$cityId,$tags){
+    public function getRebatePrice($productIds,$productPrice,$tags){
         // 如果有产品
         if( !$productIds )			return ['is_used'=>0,'product_price'=>$productPrice,'rebate_product'=>[]];
         // 获取产品活动
         $promoList							= $this->getListByIds($productIds);
         $promoProductList   =   [];
         foreach ($promoList as $promoInfo) {
-            $promoInfoCity      =   [];
-            if ($promoInfo['city_ids']){
-                $promoInfoCity      =   explode(',',$promoInfo['city_ids']);
-            }
             $promoInfo['price_total']      =   $productPrice[$promoInfo['product_id']]['price_total'];
-            // 判断是不是可以参与
-            if (!$promoInfoCity || in_array($cityId, $promoInfoCity)) {
                 if ($promoInfo['tag_scope']) {
                     // 解析数组
                     $promoInfo['tag_scope'] = explode(',', $promoInfo['tag_scope']);
@@ -153,7 +147,6 @@ class PromoProduct extends Model
                 } else {
                     $promoProductList[$promoInfo['id']][] = $promoInfo;
                 }
-            }
         }
         if( !$promoProductList )			return ['is_used'=>0,'product_price'=>$productPrice,'rebate_product'=>[]];
         $reductionTotal =   0;

+ 86 - 0
app/Models/StudentAddr.php

@@ -0,0 +1,86 @@
+<?php namespace App\Models;
+
+use Illuminate\Database\Eloquent\Factories\HasFactory;
+use Illuminate\Database\Eloquent\Model;
+
+/**
+ * 学生地址模型
+ * 
+ */
+class StudentAddr extends Model
+{
+    use HasFactory;
+
+    // 与模型关联的表名
+    protected $table = 'student_addr';
+    // 是否主动维护时间戳
+    public $timestamps = false;
+    // 定义时间戳字段名
+    // const CREATED_AT = 'insert_time';
+    // const UPDATED_AT = 'update_time';
+
+    /**
+     * 添加数据
+     * 
+     */
+    public function add($data)
+    {
+        // 时间
+        $data['insert_time']				= time();
+        $data['update_time']				= time();
+        // 写入数据表
+        $id						            = $this->query()->insertGetId($data);
+        // 返回结果
+        return                              $id;
+    }
+
+    /**
+     * 添加数据
+     * 
+     */
+    public function edit($id,$data)
+    {
+        // 更新时间
+        $data['update_time']                = time();
+        // 写入数据表
+        $result						        = $this->query()->where(['id'=>$id])->update($data);
+        // 返回结果
+        return                              $result;
+    }
+
+    /**
+     * 添加数据
+     * 
+     */
+    public function del($id)
+    {
+        // 写入数据表
+        $result						        = $this->query()->where(['id'=>$id])->delete();
+        // 返回结果
+        return                              $result;
+    }
+
+    /**
+     * 查询某条数据
+     * 
+     */
+    public function getOne($id,$field=''){
+        // 返回结果
+        $result     = $field ? $this->query()->where([['id','=',$id]])->value($field) : $this->query()->where([['id','=',$id]])->first(['id','custom_uid','contact_area','contact_school','contact_grade','contact_class','contact_name','contact_phone','is_default']);
+        // 返回结果
+        return      $result;
+    }
+
+    /**
+     * 查询某条数据
+     * 
+     */
+    public function getListByCustom($uid){
+        // 返回结果
+        $result     = $this->query()->where([['custom_uid','=',$uid]])->get(['id','custom_uid','contact_area','contact_school','contact_grade','contact_class','contact_name','contact_phone','is_default']);
+        // 返回结果
+        return      $result;
+    }
+
+
+}

+ 13 - 1
routes/api.php

@@ -213,4 +213,16 @@ Route::any('course/cancel_reservation',[\App\Http\Controllers\Api\Course::class,
 // 微信支付
 Route::any('wechat_pay/pay',[\App\Http\Controllers\Api\WechatPay::class,'pay']);
 // 微信支付回调
-Route::any('wechat_pay/notify',[\App\Http\Controllers\Api\WechatPay::class,'notify']);
+Route::any('wechat_pay/notify',[\App\Http\Controllers\Api\WechatPay::class,'notify']);
+
+
+// 新增购物车
+Route::any('student_addr/add',[\App\Http\Controllers\Api\StudentAddr::class,'add']);
+// 更新购物车
+Route::any('student_addr/edit',[\App\Http\Controllers\Api\StudentAddr::class,'edit']);
+// 删除购物车
+Route::any('student_addr/del',[\App\Http\Controllers\Api\StudentAddr::class,'del']);
+// 列表
+Route::any('student_addr/get_list',[\App\Http\Controllers\Api\StudentAddr::class,'get_list']);
+// 列表
+Route::any('student_addr/set_default',[\App\Http\Controllers\Api\StudentAddr::class,'set_default']);

+ 16 - 2
routes/web.php

@@ -1,6 +1,6 @@
 <?php
 
-use Illuminate\Support\Facades\DB;
+use App\Facades\Servers\WechatMini\Mini;
 use Illuminate\Support\Facades\Route;
 
 /*
@@ -14,6 +14,20 @@ use Illuminate\Support\Facades\Route;
 |
 */
 
+
+/* 首页 */
+Route::any('/',function () {
+    // 从缓存获取
+    $link                       = cache('redirect_mini_url','');
+    // 跳转链接
+    $link						= $link ? '' : Mini::getUrlLink('pages/index/index');
+    // 时间
+    if( $link )                 cache(['redirect_mini_url'=>$link],now()->addDays(20));
+    // 跳转
+    return 						redirect($link,302);
+});
+
+
 /* 后台 */
 Route::middleware('admin')->prefix('admin')->group(function(){
     /* 首页 */
@@ -554,7 +568,7 @@ Route::middleware('admin')->prefix('admin')->group(function(){
     // 编辑
     Route::any('contact_way/edit',[App\Http\Controllers\Admin\ContactWay::class,'edit']);
     // 状态
-    Route::any('contact_way/set_status',[App\Http\Controllers\Admin\ContactWay::class,'set_status']);
+    Route::any('contact_way/set_follow',[App\Http\Controllers\Admin\ContactWay::class,'set_follow']);
 
     // 企微标签
     Route::any('corp_tag/index',[App\Http\Controllers\Admin\CorpTag::class,'index']);