zhangguidong 2 anni fa
parent
commit
c1a4a4777c

+ 17 - 0
app/data/controller/api/Comment.php

@@ -0,0 +1,17 @@
+<?php
+
+namespace app\data\controller\api;
+
+
+use app\data\model\DataUser;
+use app\data\model\DataUserToken;
+
+class Comment
+{
+    public function user_id(){
+        $token = app()->request->header('token');
+
+        return DataUserToken::mk()->where('token',$token)->value('uuid');
+    }
+
+}

+ 69 - 1
app/data/controller/api/Goods.php

@@ -3,6 +3,7 @@
 namespace app\data\controller\api;
 
 use app\data\model\ShopGoods;
+use app\data\model\ShopGoodsCart;
 use app\data\model\ShopGoodsCate;
 use app\data\model\ShopGoodsMark;
 use app\data\service\ExpressService;
@@ -14,7 +15,7 @@ use think\admin\Controller;
  * Class Goods
  * @package app\data\controller\api
  */
-class Goods extends Controller
+class Goods extends Auth
 {
     /**
      * 获取分类数据
@@ -60,4 +61,71 @@ class Goods extends Controller
     {
         $this->success('获取区域成功', ExpressService::region(3, 1));
     }
+    public function cart_add()
+    {
+        $user = $this->getUser();
+        $data = $this->_vali([
+            'admin_id.default'=>'',
+            'item_id.default' => '',
+            'num.default'     => '',
+            'goods_id.default' =>'',
+            'admin_id.require' =>'店铺不能为空',
+            'item_id.require'            => '选择商品规格不能为空!',
+            'num.require'           => '数量不能为空!',
+            'goods_id.require' =>'商品不能为空'
+        ]);
+        $add_data=[
+            'admin_id'=>$data['admin_id'],
+            'goods_id'=>$data['goods_id'],
+            'item_id'=>$data['item_id'],
+            'user_id'=>$user['id'],
+            'num'=>$data['num'],
+            'create_time'=>date('Y-m-d H:i:s')
+        ];
+        ShopGoodsCart::mk()->insert($add_data);
+        $this->success('成功加入购物车!');
+    }
+
+    /**
+     * @return void
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\DbException
+     * @throws \think\db\exception\ModelNotFoundException
+     * 购物车列表
+     */
+    public function goods_cart_list(){
+        $user = $this->getUser();
+        $cart_list = ShopGoodsCart::mk()->alias('cart')
+            ->join('shop_goods_item item','cart.item_id=item.id')
+            ->join('shop_goods goods','item.goods_code=goods.code')
+            ->join('system_user admin','admin.id=item.admin_id')
+            ->where('cart.user_id',$user['id'])
+            ->field('cart.*,item.goods_spec,goods.cover')
+            ->paginate();
+        $this->success('我的购物车列表',$cart_list);
+    }
+
+    /**
+     * @return void
+     * 购物车修改
+     */
+    public function goods_cart_save(){
+        $user = $this->getUser();
+        $cart_id= input('cart_id');
+        $num = input('num');
+        ShopGoodsCart::mk()->where(array('id'=>$cart_id,'user_id'=>$user['id']))->save(['num'=>$num]);
+        $this->success('购物车修改完成');
+
+    }
+
+    /**
+     * @return void
+     * 购物车删除啊
+     */
+    public function goods_cart_del(){
+        $user = $this->getUser();
+        $cart_id= input('cart_ids');
+        ShopGoodsCart::mk()->whereIn('id',$cart_id)->where('user_id',$user['id'])->delete();
+        $this->success('购物车已删除');
+    }
 }

+ 106 - 0
app/data/controller/api/Order.php

@@ -0,0 +1,106 @@
+<?php
+
+namespace app\data\controller\api;
+
+use app\data\model\ShopGoodsCart;
+use app\data\model\ShopGoods;
+use app\data\model\ShopGoodsItem;
+use app\data\model\ShopOrder;
+use app\data\model\ShopOrderItem;
+use app\data\service\OrderService;
+use think\admin\Controller;
+
+/**
+ * 商品订单接口
+ * Class Order
+ * @package app\data\controller\api
+ */
+class Order extends Auth
+{
+    /**
+     * @Title("商品规格下单")
+     * @Method("post")
+     * @Param("admin_id",desc="商家id")
+     * @Param("item_id",desc="规格id")
+     * @Param("num",desc="数量")
+     * @Param ("address_id",desc="地址id")
+     */
+    public function order_create(){
+        $user = $this->getUser();
+        $item_id =input('item_id');
+        $address_id=input('address_id');
+        $number = input('number');
+
+        $data=[
+            'uuid'=>$user['id'],
+            'address_id'=>$address_id,
+            'item_id'=>$item_id,
+            'number'=>$number,
+
+
+        ];
+        $shop_order_model = new  ShopOrder();
+        $pay_on = $shop_order_model->order_create($data);
+        $this->success('快去支付吧',$pay_on);
+    }
+    /**
+     * @Title("购物车下单")
+     * @Method("post")
+     * @Param("cart_ids",desc="购物车id(数组)")
+     * @Param ("address_id",desc="地址id")
+     */
+    public function crat_create(){
+        $user =$this->getUser();
+        $cart_ids = input('cart_ids');
+//        $cart_ids=array(1,2);
+        $address_id = input('address_id');
+        $data=[
+            'uuid'=>$user['id'],
+            'cart_ids'=>$cart_ids,
+            'address_id'=>$address_id,
+        ];
+        $shop_order_model = new  ShopOrder();
+        $pay_on = $shop_order_model->cart_create($data);
+        $this->success('快去支付吧',$pay_on);
+
+    }
+    /**
+     * @Title("我的订单")
+     * @Method("post")
+     * @Param("cart_ids",desc="购物车id(数组)")
+     * @Param ("address_id",desc="地址id")
+     */
+    public function order_list(){
+        $user = $this->getUser();
+        $status = input('status',1);
+        if(!empty($status)){
+            switch ($status){
+                case 1:
+                    $array = [0,1,2,3,4,5,6,7];
+                    break;
+                case 2:
+                    $array = [2];
+                    break;
+                case 3:
+                    $array = [4];
+                    break;
+                case 4:
+                    $array = [5];
+                    break;
+                case 5:
+                    $array = [6,7];
+                    break;
+            }
+        }
+        $query = ShopOrder::mQuery()->like('order_name');
+        $list = $query ->where('uuid',$user['id'])
+            ->whereIn('status',$array)->order('id desc')->page(true, false, false, 10);
+        foreach ($list['list'] as $k=>$v){
+            $list['list'][$k]['goods_item']=ShopOrderItem::mk()->where('order_no',$list['list'][$k]['order_no'])->select();
+        }
+        $this->success('我的订单列表',$list);
+    }
+
+
+
+}

+ 99 - 0
app/data/controller/api/User.php

@@ -0,0 +1,99 @@
+<?php
+
+namespace app\data\controller\api;
+
+
+use app\data\model\DataUserAddress;
+
+class User extends Auth
+{
+    protected $noNeedLogin=[];
+
+    public function address_list(){
+        $user= $this->getUser();
+        $list = DataUserAddress::mk()->where('uuid',$user['id'])->where('deleted',1)->paginate();
+        $this->success('我的地址列表',$list);
+    }
+    /**
+     * @return void
+     * 添加快递地址
+     */
+    public function add_address(){
+        $user = $this->getUser();
+        $type = input('type',0);
+        $name = input('name','');
+        $phone = input('phone','');
+        $province = input('province','');
+        $city = input('city','');
+        $area = input('area','');
+        $address = input('address','');
+        if(empty($name)||empty($phone)||empty($province)||empty($city)||empty($area)||empty($address)){
+            $this->error('请完善邮寄地址信息!');
+        }
+        $data = [
+            'uuid'=>$user['id'],
+            'type'=>$type,
+            'name'=>$name,
+            'phone'=>$phone,
+            'province'=>$province,
+            'city'=>$city,
+            'area'=>$area,
+            'address'=>$address,
+            'deleted'=>1,
+            'create_at'=>date('Y-m-d H:i:s')
+        ];
+        if($type==1){
+            DataUserAddress::mk()->where('type',1)->save(['type'=>0]);
+        }
+        DataUserAddress::mk()->insert($data);
+        $this->success('邮寄地址已添加');
+    }
+
+    /**
+     * @return void
+     * 编辑用户地址
+     */
+    public function save_address(){
+        $user = $this->getUser();
+        $id = input('id');
+        $type = input('type',0);
+        $name = input('name','');
+        $phone = input('phone','');
+        $province = input('province','');
+        $city = input('city','');
+        $area = input('area','');
+        $address = input('address','');
+        if(empty($name)||empty($phone)||empty($province)||empty($city)||empty($area)||empty($address)){
+            $this->error('请完善邮寄地址信息!');
+        }
+        $data = [
+            'type'=>$type,
+            'name'=>$name,
+            'phone'=>$phone,
+            'province'=>$province,
+            'city'=>$city,
+            'area'=>$area,
+            'address'=>$address,
+            'deleted'=>1,
+            'create_at'=>date('Y-m-d H:i:s')
+        ];
+        if($type==1){
+            DataUserAddress::mk()->where('type',1)->save(['type'=>0]);
+        }
+        DataUserAddress::mk()->where('id',$id)->save($data);
+        $this->success('邮寄地址已修改');
+    }
+
+    /**
+     * @return void
+     * 删除快递地址
+     */
+    public function del_address(){
+        $user = $this->getUser();
+        $id = input('id');
+        DataUserAddress::mk()->where('id',$id)->where('uuid',$user['id'])->save(['deleted'=>0]);
+        $this->success('邮寄地址已删除');
+    }
+
+
+}

+ 0 - 2
app/data/controller/shop/Goods.php

@@ -159,8 +159,6 @@ class Goods extends Controller
             if (empty($data['cover'])) $this->error('商品图片不能为空!');
             if (empty($data['slider'])) $this->error('轮播图片不能为空!');
 //            if (empty($data['payment'])) $this->error('支付方式不能为空!');
-            // 商品规格保存
-
             [$data['price_market'], $data['price_selling']] = [0, 0];
             $data['stock_total']=10;
             [$count, $items] = [0, array_column(json_decode($data['data_items'], true), 0)];

+ 9 - 2
app/data/controller/shop/Order.php

@@ -10,6 +10,7 @@ use app\data\service\PaymentService;
 use app\data\service\UserAdminService;
 use think\admin\Controller;
 use think\admin\extend\CodeExtend;
+use think\admin\service\AdminService;
 use think\exception\HttpResponseException;
 
 /**
@@ -45,14 +46,20 @@ class Order extends Controller
     public function index()
     {
         $this->title = '订单数据管理';
+        if(AdminService::getUserId()==10000){
+            $admin_id = [];
+        }
+        else{
+            $admin_id['admin_id']=AdminService::getUserId();
+        }
         // 状态数据统计
         $this->total = ['t0' => 0, 't1' => 0, 't2' => 0, 't3' => 0, 't4' => 0, 't5' => 0, 't6' => 0, 'ta' => 0];
-        foreach (ShopOrder::mk()->field('status,count(1) total')->group('status')->cursor() as $vo) {
+        foreach (ShopOrder::mk()->where($admin_id)->field('status,count(1) total')->group('status')->cursor() as $vo) {
             [$this->total["t{$vo['status']}"] = $vo['total'], $this->total["ta"] += $vo['total']];
         }
 
         // 订单列表查询
-        $query = ShopOrder::mQuery();
+        $query = ShopOrder::mQuery()->where($admin_id);
         $query->like('order_no,truck_name,truck_phone,truck_province|truck_area|truck_address#address,truck_send_no,truck_send_name');
         $query->equal('status,payment_type,payment_status')->dateBetween('create_at,payment_datetime,cancel_datetime,truck_datetime,truck_send_datetime');
 

+ 10 - 0
app/data/model/ShopGoodsCart.php

@@ -0,0 +1,10 @@
+<?php
+
+namespace app\data\model;
+
+use think\admin\Model;
+
+class ShopGoodsCart extends Model
+{
+
+}

+ 196 - 0
app/data/model/ShopOrder.php

@@ -3,6 +3,8 @@
 namespace app\data\model;
 
 use think\admin\Model;
+use think\facade\Db;
+
 
 /**
  * 商城订单主模型
@@ -11,5 +13,199 @@ use think\admin\Model;
  */
 class ShopOrder extends Model
 {
+    /**
+     * @param $data
+     * @return void
+     * 1 创建订单
+     * 2 创建订单商品
+     * 3 创建订单发货
+     */
+    public function order_create($data){
+        $address_info = $this->address_info($data['uuid'],$data['address_id']);
+        $goods_info = $this->goods_info($data['item_id']);
+        $order_no =$this->order_no($data['uuid']);
+        $pay_no = $this->pay_no($data['uuid']);
+        $order_data = [
+            'uuid'=>$data['uuid'],
+            'order_no'=>$order_no,
+            'order_name'=>$goods_info['goods_spec'],
+            'amount_real'=>$goods_info['price_selling']*$data['number'],
+            'amount_total'=>$goods_info['price_selling']*$data['number'],
+            'amount_goods'=>$goods_info['price_market']*$data['number'],
+            'amount_express'=>6,
+            'payment_trade'=>$pay_no,
+            'payment_status'=>0,
+        ];
+        $item_data=[
+            'uuid'=>$data['uuid'],
+            'order_no'=>$order_no,
+            'goods_sku'=>$goods_info['goods_sku'],
+            'goods_code'=>$goods_info['goods_code'],
+            'goods_spec'=>$goods_info['goods_spec'],
+            'goods_name'=>$goods_info['name'],
+            'goods_cover'=>$goods_info['cover'],
+            'price_market'=>$goods_info['price_market'],
+            'price_selling'=>$goods_info['price_selling'],
+            'total_market'=>$goods_info['price_market']*$data['number'],
+            'total_selling'=>$goods_info['price_selling']*$data['number'],
+            'stock_sales'=>$data['number'],
+        ];
+        $send_data = [
+            'uuid'=>$data['uuid'],
+            'order_no'=>$order_no,
+            'address_code'=>$data['address_id'],
+            'address_name'=>$address_info['name'],
+            'address_phone'=>$address_info['phone'],
+            'address_province'=>$address_info['province'],
+            'address_city'=>$address_info['city'],
+            'address_area'=>$address_info['area'],
+            'address_content'=>$address_info['address'],
+        ];
+        // 启动事务
+        try {
+            $order_id = ShopOrder::mk()->insertGetId($order_data);
+
+            $item_id = ShopOrderItem::mk()->insertGetId($item_data);
+
+            $send_id = ShopOrderSend::mk()->insertGetId($send_data);
+            // 提交事务
+            Db::commit();
+            return $pay_no;
+
+        } catch (\Exception $e) {
+            // 回滚事务
+            Db::rollback();
+        }
+    }
+
+    /**
+     * @param $user_id
+     * @param $address_id
+     * @return DataUserAddress|array|mixed|\think\Model|null
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\DbException
+     * @throws \think\db\exception\ModelNotFoundException
+     * 购物车下单
+     */
+    public function cart_create($data)
+    {
+        $address_info = $this->address_info($data['uuid'], $data['address_id']);
+        $goods_info = $this->cart_goods_info($data['cart_ids'], $data['uuid']);
+        $order_no = $this->order_no($data['uuid']);
+        $pay_no = $this->pay_no($data['uuid']);
+        foreach ($goods_info as $k => $v) {
+            //订单主表
+            $order_no = $this->order_no($v['admin_id']);
+            $order_data = [
+                'uuid' => $data['uuid'],
+                'order_no' => $order_no,
+                'order_name'=>$v['order_name'],
+                'amount_real' => $v['goods_money'],
+                'amount_total' => $v['goods_money'],
+                'amount_goods' => $v['goods_money'],
+                'amount_express' => 6,
+                'payment_trade' => $pay_no,
+                'payment_status' => 0,
+            ];
+            $order_id = ShopOrder::mk()->insertGetId($order_data);
+            $order_id_arr[] = $order_id;
+            //订单项目表
+            foreach ($v['goods_list'] as $k_order_goods => $order_goods) {
+                $item_data = array(
+                    'uuid'=>$data['uuid'],
+                    'order_no'=>$order_no,
+                    'goods_sku'=>$order_goods['goods_sku'],
+                    'goods_code'=>$order_goods['goods_code'],
+                    'goods_spec'=>$order_goods['goods_spec'],
+                    'goods_name'=>$order_goods['name'],
+                    'goods_cover'=>$order_goods['cover'],
+                    'price_market'=>$order_goods['price_market'],
+                    'price_selling'=>$order_goods['price_selling'],
+                    'total_market'=>$order_goods['price_market']*$order_goods['num'],
+                    'total_selling'=>$order_goods['price_selling']*$order_goods['num'],
+                    'stock_sales'=>$order_goods['num'],
+                );
+                $item_id = ShopOrderItem::mk()->insertGetId($item_data);
+            }
+
+            $send_data = [
+                'uuid' => $data['uuid'],
+                'order_no' => $order_no,
+                'address_code' => $data['address_id'],
+                'address_name' => $address_info['name'],
+                'address_phone' => $address_info['phone'],
+                'address_province' => $address_info['province'],
+                'address_city' => $address_info['city'],
+                'address_area' => $address_info['area'],
+                'address_content' => $address_info['address'],
+            ];
+            // 启动事务
+            try {
+                $send_id = ShopOrderSend::mk()->insertGetId($send_data);
+                // 提交事务
+                Db::commit();
+                return $pay_no;
+
+            } catch (\Exception $e) {
+                // 回滚事务
+                Db::rollback();
+            }
+        }
+    }
+    public function address_info($user_id,$address_id){
+      $address_info = DataUserAddress::mk()->where(array('id'=>$address_id,'uuid'=>$user_id))->find();
+      return $address_info;
+
+    }
+    public function goods_info($item_id){
+        $goods_info = ShopGoodsItem::mk()->alias('item')
+            ->join('shop_goods goods','goods.code=item.goods_code')
+            ->where('item.id',$item_id)
+            ->field('item.*,goods.cover,goods.name')
+            ->find();
+        return $goods_info;
+
+    }
+    public function cart_goods_info($cart_ids,$uuid){
+        //组装商品列表
+        $goods_list = ShopGoodsCart::mk()->alias('car')
+            ->join('shop_goods_item item','item.id=car.item_id')
+            ->join('shop_goods goods','goods.code=item.goods_code')
+            ->whereIn('car.id',$cart_ids)->where('car.user_id',$uuid)->select();
+        $shop_goods_list = [];
+        if(!empty($goods_list))
+        {
+            foreach ($goods_list as $k => $v)
+            {
+                $site_id = $v['admin_id'];
+                if(isset($shop_goods_list[$site_id]))
+                {
+                    $shop_goods_list[$site_id]['goods_list'][] = $v;
+                    $shop_goods_list[$site_id]['goods_num'] += $v['num'];
+                    $shop_goods_list[$site_id]['order_name'] = $shop_goods_list[$site_id]['order_name'].$v['goods_spec'];
+                    $shop_goods_list[$site_id]['goods_money'] += $v['price_selling'] * $v['num'];
+                }else{
+                    $shop_goods_list[$site_id]['admin_id'] = $site_id;
+                    $shop_goods_list[$site_id]['admin_name'] = 111;
+                    $shop_goods_list[$site_id]['order_name'] = $v['goods_spec'];
+                    $shop_goods_list[$site_id]['goods_money'] = $v['price_selling'] * $v['num'];
+                    $shop_goods_list[$site_id]['goods_num'] = $v['num'];
+                    $shop_goods_list[$site_id]['goods_list'][] = $v;
+                }
+            }
+        }
+        return $shop_goods_list;
+
+    }
+    public function order_no($uuid){
+        $time_str = date('YmdHi');
+        $order_no = $time_str . sprintf("%04d", $uuid);
+        return $order_no;
+    }
+    public function pay_no($uuid){
+        $time_str = date('YmdHi');
+        $pay_no = 'PAY'.$time_str . rand(00000,99999).$uuid;
+        return $pay_no;
+    }
 
 }

+ 2 - 10
app/data/view/shop/order/index.html

@@ -43,7 +43,7 @@
                         <!--{notempty name='vo.from'}-->
                         <div class="headimg" data-lazy-src="{$vo.from.headimg|default='__ROOT__/static/theme/img/headimg.png'}" data-tips-image></div>
                         <div class="inline-block sub-strong-red">
-                            <div>推荐用户:<span class="color-text">{$vo.from.nickname|default='--'}</span><span class="margin-left-5">[ <b>VIP{$vo.from.vip_code}</b> ] <b>{$vo.from.vip_name}</b></span></div>
+                            <div>推荐用户:<span class="color-text">{$vo.from.nickname|default='--'}</span></div>
                             <div>推荐手机:<span class="color-text">{$vo.from.phone|default='--'}</span></div>
                         </div>
                         <!--{else}-->
@@ -53,7 +53,7 @@
                     <div>
                         <div class="headimg" data-lazy-src="{$vo.user.headimg|default='__ROOT__/static/theme/img/headimg.png'}" data-tips-image></div>
                         <div class="inline-block sub-strong-red">
-                            用户昵称:<span class="color-text">{$vo.user.nickname|default='--'}</span><span class="margin-left-5">[ <b>VIP{$vo.user.vip_code}</b> ] <b>{$vo.user.vip_name}</b></span><br>
+                            用户昵称:<span class="color-text">{$vo.user.nickname|default='--'}</span><br>
                             用户手机:<span class="color-text">{$vo.user.phone|default='--'}</span><br>
                         </div>
                     </div>
@@ -121,14 +121,6 @@
                 <td class="nowrap">
                     {foreach $vo.items as $g}
                     <div>
-                        {if $g.vip_entry > 0 and $g.vip_upgrade > $g.vip_code}
-                        [ <b class="color-red">VIP{$g.vip_code}</b> <span class="layui-icon font-s10 color-blue">&#xe602;</span> <b class="color-red">VIP{$g.vip_upgrade}</b> ]
-                        {else}
-                        [ <b class="color-text">VIP{$g.vip_code}</b> ]
-                        {/if}
-                        {if $g.discount_rate < 100.00}
-                        <b class="color-blue">享{$g.discount_rate+0}%折扣</b><span class="color-red"> x </span>
-                        {/if}
                         <b class="color-blue">{$g.stock_sales|default=0}件</b><span class="color-red"> x </span><b class="color-blue">{$g.price_selling+0}元 </b>
                         {$g.goods_name|default=''} <span class="color-green"> ( {$g.goods_spec|show_goods_spec} )</span>
                     </div>