xieruidong 2 年之前
父節點
當前提交
f2084a6d9d

+ 14 - 8
application/api/controller/UserAddressController.php

@@ -4,7 +4,7 @@ namespace app\api\controller;
 
 use app\common\controller\UserApi;
 use app\common\model\Area;
-use app\common\model\UserAddress;
+use fast\Arr;
 
 /**
  * 用户端地址模块
@@ -20,6 +20,7 @@ class UserAddressController extends UserApi
      * @ApiReturnParams (name=name,description=姓名)
      * @ApiReturnParams (name=mobile,description=手机号码)
      * @ApiReturnParams (name=address,description=详细地址)
+     * @ApiReturnParams (name=full_address,description=包含省市县的地址详细地址)
      * @ApiReturnParams (name=city,description=所在城市)
      * @ApiReturnParams (name=city_detail,description=所在城市名)
      * @ApiReturnParams (name=longitude,description=经度)
@@ -40,7 +41,7 @@ class UserAddressController extends UserApi
      * @ApiParams (name=id,description="id,修改的时候必须")
      * @ApiParams (name=name,description="姓名")
      * @ApiParams (name=mobile,description="手机号")
-     * @ApiParams (name=city,description="区县名字")
+     * @ApiParams (name=city,description="区县ID")
      * @ApiParams (name=address,description="详细地址")
      * @ApiParams (name=is_default,description="1和0,是否默认")
      */
@@ -52,20 +53,24 @@ class UserAddressController extends UserApi
             'mobile'=>'require|number',
             'city'=>'require',
             'address'=>'require',
-            //'location'=>'require',
-            //'longitude'=>'require|float',
-            //'latitude'=>'require|float',
             'is_default'=>'require|in:0,1',
         ]);
-        $city=Area::area()->where('name|shortname',$data['city'])->find();
+        $city=Area::area()->where('id',$data['city'])->find();
         if(!$city){
             $this->error('区县不存在');
         }
+        $saveData=[
+            'name'=>$data['name'],
+            'mobile'=>$data['mobile'],
+            'city'=>$data['city'],
+            'address'=>$data['address'],
+            'is_default'=>$data['is_default'],
+        ];
         if(!empty($data['id'])){
             $address=$user->address()->findOrFail($data['id']);
-            $address->save($data);
+            $address->save($saveData);
         }else{
-            $user->address()->save($data);
+            $user->address()->save($saveData);
         }
         $this->success();
     }
@@ -76,6 +81,7 @@ class UserAddressController extends UserApi
      * @ApiReturnParams (name=name,description=姓名)
      * @ApiReturnParams (name=mobile,description=手机号码)
      * @ApiReturnParams (name=address,description=详细地址)
+     * @ApiReturnParams (name=full_address,description=包含省市县的地址详细地址)
      * @ApiReturnParams (name=city,description=所在城市)
      * @ApiReturnParams (name=city_detail,description=所在城市名)
      * @ApiReturnParams (name=longitude,description=经度)

+ 20 - 1
application/api/controller/mall/Orders.php

@@ -4,6 +4,7 @@ namespace app\api\controller\mall;
 
 use app\common\controller\Api;
 use app\common\service\OrderService;
+use think\Db;
 
 /**
  * 商城订单接口
@@ -46,8 +47,26 @@ class Orders extends Api
      * @ApiParams (name=form,description="key为规格id,对象:num购买数量,num_install安装数量")
      * @ApiParams (name=coupon_use,description=是否使用优惠券)
      * @ApiParams (name=coupon_id,description=优惠券id)
+     * @ApiParams (name=remark,description=留言)
      */
     public function create(){
-
+        $data=$this->_validate([
+            'coupon_id|优惠券'=>['integer','requireIf:coupon_use,1'],
+            'form|商品'=>['require','array','min:1'],
+            'frm|来源'=>['require','in:1,2'],
+        ]);
+        Db::startTrans();
+        $user=$this->auth->getUser();
+        $goods=$data['form'];
+        $service=new OrderService();
+        $service->setUser($user);
+        $service->setGoods($goods);
+        $service->setFrm(1);
+        $service->setSubmit(true);
+        $service->setCouponUse($data['coupon_use']??false);
+        $service->setCouponId($data['coupon_id']??0);
+        $info=$service->calculate();
+        Db::commit();
+        $this->success();
     }
 }

+ 2 - 1
application/common/model/UserAddress.php

@@ -13,7 +13,6 @@ use think\Model;
 class UserAddress extends Model
 {
     protected $append=[
-        'city_detail',
     ];
     public function user(){
         return $this->belongsTo(User::class);
@@ -27,6 +26,8 @@ class UserAddress extends Model
             if(!isset($address['is_default'])){
                 $address['is_default']=0;
             }
+            $address['area']=implode(',',Area::getTreeId($address['city']));
+            $address['full_address']=Area::getNameString($address['area']).$address['address'];
         });
         self::afterWrite(function (self $address){
             if($address['is_default']==1){

+ 23 - 0
application/common/service/OrderService.php

@@ -12,6 +12,7 @@ class OrderService extends BaseService {
     /** @var 1直接购买2购物车买 */
     protected $frm;
     protected $goods=[];
+    protected $submit=false;
 
     /**
      * @param User $user
@@ -22,6 +23,17 @@ class OrderService extends BaseService {
     }
 
     /**
+     * @param bool $submit
+     */
+    public function setSubmit(bool $submit): void
+    {
+        $this->submit = $submit;
+    }
+    public function getSubmit(){
+        return $this->submit;
+    }
+
+    /**
      * @return User
      */
     public function getUser(): User
@@ -96,6 +108,17 @@ class OrderService extends BaseService {
         $user=$this->getUser();
 
         $info['goods']=$this->getGoods();
+        #提交订单操作
+        if($this->getSubmit()) {
+            foreach ($info['goods'] as $goods) {
+                $sku = GoodsSku::lock(true)->find($goods['sku']['id']);
+                $sku['num_stock']=$sku['num_stock']-$goods['num'];
+                if($sku['num_stock']<0){
+                    $this->error('库存不足');
+                }
+                $sku->save();
+            }
+        }
         $info['num']=array_sum(array_column($info['goods'],'num'));
         $info['num_install']=array_sum(array_column($info['goods'],'num_install'));
 

+ 11 - 1
public/api.html

@@ -4117,6 +4117,12 @@
                                                         <td>是</td>
                                                         <td>优惠券id</td>
                                                     </tr>
+                                                                                                        <tr>
+                                                        <td>remark</td>
+                                                        <td>string</td>
+                                                        <td>是</td>
+                                                        <td>留言</td>
+                                                    </tr>
                                                                                                     </tbody>
                                             </table>
                                                                                     </div>
@@ -4155,6 +4161,10 @@
                                                             <label class="control-label" for="coupon_id">coupon_id</label>
                                                             <input type="string" class="form-control input-sm" id="coupon_id" required placeholder="优惠券id" name="coupon_id">
                                                         </div>
+                                                                                                                <div class="form-group">
+                                                            <label class="control-label" for="remark">remark</label>
+                                                            <input type="string" class="form-control input-sm" id="remark" required placeholder="留言" name="remark">
+                                                        </div>
                                                                                                                 <div class="form-group form-group-submit">
                                                             <button type="submit" class="btn btn-success send" rel="26">提交</button>
                                                             <button type="reset" class="btn btn-info" rel="26">重置</button>
@@ -8536,7 +8546,7 @@
 
                 </div>
                 <div class="col-md-6" align="right">
-                    Generated on 2022-09-22 19:45:12 <a href="./" target="_blank">后台管理</a>
+                    Generated on 2022-09-22 20:08:46 <a href="./" target="_blank">后台管理</a>
                 </div>
             </div>