zxhxx 3 лет назад
Родитель
Сommit
65253c0346

+ 63 - 2
app/api/controller/JuniuController.php

@@ -1,12 +1,12 @@
 <?php
 namespace app\api\controller;
+use app\models\store\Order;
 use app\Request;
+use crmeb\services\HttpService;
 use crmeb\services\UtilService;
 
 class JuniuController
 {
-    private static $appid ="jnz_formal_0001";
-    private static $appsecret = "mxtw58mxbexwjk40ghin";
     private static $url = "https://new.juniuzu.com";
     /**
      * 获取商品列表
@@ -54,6 +54,67 @@ class JuniuController
      */
     public function order_create(Request $request)
     {
+        $data = UtilService::postMore([
+            ['real_name',''],
+            ['user_phone',''],
+            ['user_address',''],
+            ['province',''],
+            ['city',''],
+            ['district',''],
+            ['pay_price',0],
+            ['goods_id',0],
+            ['goods_name',''],
+            ['goods_image',''],
+            ['goods_num',''],
+            ['spec',[]],
+        ],$request);
+        $data1 = $data;
+        $data['user_address'] = $data['province']." ".$data['city']." ".$data['district']." ".$data['user_address'];
+        $data['uid'] = $request->uid();
+        $user = $request->user();
+        if($data['real_name']=='') return app('json')->fail('输入姓名');
+        if($data['user_phone']=='') return app('json')->fail('输入手机号');
+        if($data['user_address']=='') return app('json')->fail('输入详细地址');
+        if($data['goods_name']=='') return app('json')->fail('商品名称不能为空');
+        if($data['goods_image']=='') return app('json')->fail('商品图片不能为空');
+        if($data['goods_num']<1) return app('json')->fail('商品数量不能小于1');
+        if(bcsub($user['integral'],$data['pay_price'])<0)return app('json')->fail('用户积分不足,不能兑换');
+        $rs = Order::order_create($data);
+        if($rs)
+        {
 
+            $param['items'] = json_encode([['goods_id'=>$data['goods_id'],'num'=>$data['goods_num'],'spec'=>$data['spec']]]);
+            $param['province_name'] = $data['province'];
+            $param['city_name'] = $data['city'];
+            $param['district_name'] = $data['district'];
+            $param['address'] = $data1['user_address'];
+            $param['consignee'] = $data1['real_name'];
+            $param['tel'] = $data1['user_phone'];
+            $rs1 = Order::sign($param);
+            $rs2 =  HttpService::postRequest(self::$url."/api/order/cooperationadd",$rs1);
+            $rs2 = json_decode($rs2,true);
+            if(isset($rs2['order_sn']))
+            {
+                Order::where('id',$rs['id'])->update(['sn'=>$rs2['order_sn'],'rs'=>json_encode($rs2)]);
+            }
+            else {
+                Order::where('id', $rs['id'])->update(['rs' => json_encode($rs2)]);
+            }
+            return app('json')->success($rs->toarray());
+        }
+        else
+        {
+            return app('json')->fail(Order::getErrorInfo());
+        }
+    }
+    public function order_lst(Request $request)
+    {
+        $where = UtilService::getMore([
+            ['page',1],
+            ['limit',10],
+            ['uid',$request->uid()],
+        ],$request);
+        $rs = Order::lst($where);
+        return app('json')->success($rs);
     }
 }

+ 2 - 1
app/api/controller/PublicController.php

@@ -72,7 +72,8 @@ class PublicController
         }
         $newGoodsBananr = sys_config('new_goods_bananr');
         $tengxun_map_key = sys_config('tengxun_map_key');
-        return app('json')->successful(compact('filing_info','banner', 'menus', 'roll', 'info', 'activity', 'lovely', 'benefit', 'likeInfo', 'logoUrl', 'couponList', 'site_name', 'subscribe', 'newGoodsBananr', 'tengxun_map_key', 'explosive_money'));
+        $three_integral = sys_config('three_integral',0.4);
+        return app('json')->successful(compact('filing_info','banner', 'menus', 'roll', 'info', 'activity', 'lovely', 'benefit', 'likeInfo', 'logoUrl', 'couponList', 'site_name', 'subscribe', 'newGoodsBananr', 'tengxun_map_key', 'explosive_money','three_integral'));
     }
 
     /**

+ 132 - 0
app/models/store/Order.php

@@ -0,0 +1,132 @@
+<?php
+namespace app\models\store;
+use app\models\user\User;
+use app\models\user\UserBill;
+use crmeb\basic\BaseModel;
+use crmeb\traits\ModelTrait;
+use think\Exception;
+
+class Order extends BaseModel
+{
+    use ModelTrait;
+    private static $appid ="jnz_formal_0001";
+    private static $appsecret = "mxtw58mxbexwjk40ghin";
+    private static $url = "https://new.juniuzu.com";
+    public  function setSpecAttr($value)
+    {
+        return json_encode($value);
+    }
+    public  function getSpecAttr($value)
+    {
+        return json_decode($value,true);
+    }
+    /**
+     * 生成订单唯一id
+     * @param $uid 用户uid
+     * @return string
+     */
+    public static function getNewOrderId()
+    {
+        list($msec, $sec) = explode(' ', microtime());
+        $msectime = number_format((floatval($msec) + floatval($sec)) * 1000, 0, '', '');
+        $orderId = 'pk' . $msectime . mt_rand(10000, 99999);
+        while (self::be(['order_id' => $orderId])) $orderId = 'pk' . $msectime . mt_rand(10000, 99999);
+        return $orderId;
+    }
+
+    /**
+     * 创建订单
+     * @param $data
+     * @return bool
+     */
+    public static function order_create($data)
+    {
+
+        try {
+            $data['order_id'] = self::getNewOrderId();
+            $data['pay_time'] = time();
+            $data['pay_type'] = 'integral';
+            $data['paid'] = 1;
+            $rs = self::create($data);
+            if ($rs) {
+                User::where('uid', $data['uid'])->dec('integral', $data['pay_price'])->update();
+                UserBill::expend('积分兑换', $data['uid'], 'integral', 'pay', $data['pay_price'], $rs['id'], User::where('uid', $data['uid'])->value('integral'), "兑换商品,支付" . $data['pay_price'] . "积分!");
+            }
+            return $rs;
+        }catch (Exception $e)
+        {
+            return  self::setErrorInfo('创建订单出错!'.$e->getMessage());
+        }
+
+    }
+
+    /**
+     * 订单列表
+     * @param $where
+     * @return array
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\DbException
+     * @throws \think\db\exception\ModelNotFoundException
+     */
+    public static function lst($where)
+    {
+        $model = new self;
+        if(isset($where['uid']) && $where['uid'] !=0)  $model = $model->where('uid',$where['uid']);
+        if(isset($where['data']) && $where['data'] !='') $model = $model->getModelTime($where,$model,"pay_time");
+        if(isset($where['paid']) && $where['paid'] >-1)  $model = $model->where('paid',$where['paid']);
+        if(isset($where['status']) && $where['status'] >-4)  $model = $model->where('status',$where['status']);
+        if(isset($where['key']) && $where['key'] !='') $model = $model->where('order_id','like',"%".$where['key']."%");
+        $model = $model->order('id desc');
+        $count = $model->value('count(id)')?:0;
+        $data = $model->page($where['page'],$where['limit'])->select()->toArray();
+        return compact('count','data');
+    }
+
+    /**
+     * 获取系统订单列表
+     * @param $where
+     * @return array
+     */
+    public static function sys_lst($where)
+    {
+        $model = new self;
+        if(isset($where['data']) && $where['data'] !='') $model = $model->getModelTime($where,$model,"add_time");
+        if(isset($where['paid']) && $where['paid'] >-1)  $model = $model->where('paid',$where['paid']);
+        if(isset($where['status']) && $where['status'] >-4)  $model = $model->where('status',$where['status']);
+        if(isset($where['key']) && $where['key'] !='') $model = $model->where('order_id','like',"%".$where['key']."%");
+        $model = $model->order('id desc');
+        return self::page($model, function ($v){
+
+        }, $where);
+    }
+    public static function sign($param)
+    {
+        $param['appid'] = self::$appid;
+        $param['appsecret'] = self::$appsecret;
+        ksort($param);
+        $string  = self::toUrlParams($param);
+        $string = md5( $string );
+        //签名步骤四:所有字符转为大写
+        $param['sign']  = strtoupper( $string );
+        unset($param['appsecret']);
+        return $param;
+    }
+
+    /**
+     * @param $data
+     *
+     * @return string
+     */
+    protected static function toUrlParams( $data ) {
+        $str = '';
+        foreach( $data as $key => $value ) {
+            if( $key != "sign" && !is_array( $value ) ) {
+                $str .= '&' . $key . '=' . rawurldecode( $value );
+            }
+        }
+        $str = ltrim( $str, '&' );
+
+        return $str;
+    }
+
+}

+ 50 - 0
app/models/user/UserTransfer.php

@@ -0,0 +1,50 @@
+<?php
+
+namespace app\models\user;
+
+use crmeb\basic\BaseModel;
+use crmeb\traits\ModelTrait;
+
+/**
+ * TODO 会员等级Model
+ * Class UserLevel
+ * @package app\models\user
+ */
+class UserTransfer extends BaseModel
+{
+    /**
+     * 数据表主键
+     * @var string
+     */
+    protected $pk = 'id';
+    use ModelTrait;
+    /**
+     * 生成订单唯一id
+     * @param $uid 用户uid
+     * @return string
+     */
+    public static function getNewOrderId()
+    {
+        list($msec, $sec) = explode(' ', microtime());
+        $msectime = number_format((floatval($msec) + floatval($sec)) * 1000, 0, '', '');
+        $orderId = 'wx' . $msectime . mt_rand(10000, 99999);
+        if (self::be(['order_id' => $orderId])) $orderId = 'wx' . $msectime . mt_rand(10000, 99999);
+        return $orderId;
+    }
+    /**
+     * 获取转账订单
+     */
+    public static function orderlist($where)
+    {
+        $model = new self;
+        if(isset($where['data']) && $where['data'] !='') $model = $model->getModelTime($where,$model,"addtime");
+        if(isset($where['paid']) && $where['paid'] >-1)  $model = $model->where('paid',$where['paid']);
+        if(isset($where['key']) && $where['key'] !='') $model = $model->where('order_id','like',"%".$where['key']."%");
+        if(isset($where['type']) && $where['type'] >-1)  $model = $model->where('type',$where['type']);
+        $model = $model->order('id desc');
+        return self::page($model, function ($v) {
+            $v['user'] = User::where('uid',$v['uid'])->field('nickname,avatar')->find();
+            $v['touser'] = User::where('uid',$v['touid'])->field('nickname,avatar')->find();
+        }, $where);
+    }
+}

+ 2 - 0
route/api/route.php

@@ -242,6 +242,8 @@ Route::group(function () {
     Route::post('juniu/lst', 'JuniuController/lst')->name('juniulst'); //商品列表
     Route::get('juniu/info', 'JuniuController/info')->name('juniuinfo'); //商品详情
     Route::get('juniu/express', 'JuniuController/express')->name('juniuexpress'); //物流信息
+    Route::post('juniu/order_create', 'JuniuController/order_create')->name('juniuordercreate'); //创建订单
+    Route::get('juniu/order', 'JuniuController/order_lst')->name('juniuorder'); //我的订单
 
 
 })->middleware(\app\http\middleware\AllowOriginMiddleware::class)->middleware(\app\http\middleware\AuthTokenMiddleware::class, false);