zory 2 weken geleden
bovenliggende
commit
8603847c45

+ 1 - 1
app/controller/admin/Shop.php

@@ -67,7 +67,7 @@ class Shop extends Base
             $state = $this->model->setAutoData($param);
             if (!$state) return errorTrans("error.data");
             $param['truename'] = $param['shop_name'];
-            $this->sceneUser($param,2,"id");
+//            $this->sceneUser($param,2,"id");
             return successTrans("success.data");
         } catch (\Throwable $throwable) {
             echo $throwable->getMessage()."\n";

+ 44 - 0
app/controller/exe/Login.php

@@ -0,0 +1,44 @@
+<?php
+
+namespace app\controller\exe;
+
+use app\extra\basic\Base;
+use app\model\system\SystemUser;
+use LinFly\Annotation\Route\Controller;
+use LinFly\Annotation\Route\Route;
+use Shopwwi\WebmanAuth\Auth;
+use support\Request;
+use support\Response;
+use think\facade\Db;
+use Tinywan\Captcha\Captcha;
+
+
+#[Controller(prefix: "/exe/login")]
+class Login extends Base
+{
+
+    /**
+     * 登陆
+     * @param Request $request
+     * @return Response
+     */
+    #[Route(path: "user",methods: "post")]
+    public function setLogin(Request $request): Response
+    {
+        try {
+            $param = $this->_valid([
+                "username.require"  => trans("empty.user"),
+                "password.require"  => trans("empty.passwd"),
+                "code.require"      => trans("empty.code"),
+                "key.require"       => trans("empty.data"),
+            ],"post");
+            if (!is_array($param)) return error($param);
+            if (Captcha::check($param['code'],$param['key']) === false) return errorTrans("error.captcha");
+            $map = ["is_deleted" => 0,"username" => $param['username']];
+            return successTrans("success.login");
+        } catch (\Throwable $throwable) {
+            return error($throwable->getMessage());
+        }
+    }
+
+}

+ 78 - 62
app/extra/basic/Base.php

@@ -2,18 +2,22 @@
 
 namespace app\extra\basic;
 
-use app\extra\douyin\Client;
 use app\extra\tools\CodeExtend;
-use app\model\saas\SaasOrderLife;
-use app\model\saas\SaasOrderLog;
-use app\model\saas\SaasStore;
 use app\model\system\SystemUser;
-use Overtrue\EasySms\Strategies\OrderStrategy;
+use think\contract\Arrayable;
 use think\Validate;
 
 class Base
 {
 
+
+    const DEFAULT_SUCCESS_MESSAGE = 'success';
+    const DEFAULT_FAIL_MESSAGE = 'fail';
+
+    const DEFAULT_SUCCESS_CODE = 200;
+    const DEFAULT_FAIL_CODE = 400;
+
+
     protected function getParent(array $data)
     {
         if ($data['parent_id'] > 0) {
@@ -37,63 +41,6 @@ class Base
         return ["appid" => sConf('dy.appid'),'secret' => sConf('dy.secret')];
     }
 
-
-    /**
-     * 同步订单-实时
-     * @param string $account
-     * @param string $openId
-     */
-    protected function asyncDyOrder(string $account = "",string $openId = "",string $orderId = "")
-    {
-        // 同步已经下单的订单
-        if (!empty($account)) {
-            if (!empty($orderId)) {
-                $order = (new SaasOrderLife)->where("order_id",$orderId)->findOrEmpty();
-                if (!$order->isEmpty()) return [];
-            }
-            $resp = (new Client)->config($this->getDyConfig())->token()->queryOrder($account,$openId);
-            $store = (new SaasStore)->where("store_id",$account)->findOrEmpty();
-            if (empty($resp['data']['orders'])) return [];
-            $lifeOrder = $resp['data']['orders'][0];
-            $orderData = $orderLog = [];
-            foreach ($lifeOrder['certificates'] as $key=>$val) {
-                $orderEx = (new SaasOrderLife)->where("order_id",$lifeOrder['order_id'])->where("certificate_id",$val['certificate_id'])->findOrEmpty();
-                if ($orderEx->isEmpty()) {
-                    $orderData[$key] = [
-                        "open_id"   => $openId,
-                        "agent_id"  => $store['agent_id']??'',
-                        "store_id"  => $store['store_id']??'',
-                        "order_id"  => $lifeOrder['order_id'],
-                        "pay_amount"    => $val['amount']['pay_amount'],
-                        "order_amount"  => $val['amount']['original_amount'],
-                        "expire_at"     => date("Y-m-d H:i:s",$val['expire_time']),
-                        "out_id"        => $val['sku_info']['sku_id'],
-                        "product_name"  => $val['sku_info']['title'],
-                        "groupon_type"  => $val['sku_info']['groupon_type'],
-                        "certificate_id"  => $val['certificate_id']??'',
-                        "status"        => 1,
-                        "pay_at"    => getDateFull(),
-                        "start_time"    => date("Y-m-d H:i:s",$val['start_time']),
-                    ];
-                } else {
-                    $orderEx->save([
-                        "open_id"       => $openId,
-                        "expire_at"     => date("Y-m-d H:i:s",$val['expire_time']),
-                        "out_id"        => $val['sku_info']['sku_id'],
-                        "product_name"  => $val['sku_info']['title'],
-                        "groupon_type"  => $val['sku_info']['groupon_type'],
-                        "certificate_id"  => $val['certificate_id']??'',
-                        "start_time"    => date("Y-m-d H:i:s",$val['start_time']),
-                    ]);
-                }
-            }
-            if (!empty($orderData)) {
-                (new SaasOrderLife)->insertAll(array_values($orderData));
-            }
-            return [];
-        }
-    }
-
     /**
      * 写入新用户
      * @param array $param
@@ -172,6 +119,75 @@ class Base
     }
 
 
+    /**
+     * @param $data
+     * @return array|string|null
+     */
+    private function parseData($data)
+    {
+        if ($data instanceof Arrayable)
+            return $data->toArray();
+        else
+            return $data;
+    }
+
+    /**
+     * @param string|array|Arrayable $message
+     * @param array|Arrayable|null $data
+     * @return Json
+     */
+    public function success($message = self::DEFAULT_SUCCESS_MESSAGE, $data = null)
+    {
+        $message = $this->parseData($message);
+        if (is_array($message)) {
+            $data = $message;
+            $message = self::DEFAULT_SUCCESS_MESSAGE;
+        } else {
+            $data = $this->parseData($data);
+        }
+        return $this->make(self::DEFAULT_SUCCESS_CODE, $message, $data);
+    }
+
+
+    /**
+     * @param int $status
+     * @param string $message
+     * @param array|Arrayable|null $data
+     */
+    public function make(int $status, string $message, $data = null)
+    {
+        $content = compact('status', 'message');
+        if (!is_null($data))
+            $content['data'] = $this->parseData($data);
+        return json($content);
+    }
+
+    public function encode($message = self::DEFAULT_SUCCESS_MESSAGE, $data = null)
+    {
+        $message = $this->parseData($message);
+        if (is_array($message)) {
+            $data = $message;
+            $message = self::DEFAULT_SUCCESS_MESSAGE;
+        } else {
+            $data = $this->parseData($data);
+        }
+        $status = self::DEFAULT_SUCCESS_CODE;
+        $encode = true;
+        $content = compact('status','encode', 'message');
+        if (is_null($data) || env('APP_DEBUG', false))
+            return $this->success($message, $data['data'] ?? $data);
+        if (!is_array($data) || !isset($data['data'])) {
+            $res['data'] = $data;
+        } else {
+            $res = $data;
+        }
+        $res['status'] = $status;
+        $res['message'] = $message;
+        $content['data'] =  base64_encode(gzdeflate(json_encode($res,JSON_UNESCAPED_UNICODE),9));
+        return json($content);
+    }
+
+
     /**
      * 菜单信息格式化
      * @param array $menus

+ 1 - 0
app/extra/service/system/MenuService.php

@@ -3,6 +3,7 @@
 namespace app\extra\service\system;
 
 use app\extra\basic\Service;
+use app\model\inmei\InmeiMenu;
 use app\model\system\SystemMenu;
 
 class MenuService extends Service

+ 3 - 0
app/model/saas/SaasAgent.php

@@ -13,6 +13,9 @@ use app\extra\basic\Model;
  * @property string $end_at 营业时间-结束
  * @property string $shop_address 地址
  * @property mixed $rule 收费规则
+ * @property integer $rate_type 
+ * @property integer $rate_radio 
+ * @property integer $rate_money 
  * @property mixed $vip_end VIP到期时间
  * @property string $shop_notice 公告
  * @property integer $is_deleted 

+ 8 - 20
app/model/saas/SaasCombo.php

@@ -6,14 +6,14 @@ use app\extra\basic\Model;
 
 
 /**
- * @property integer $id (主键)
- * @property string $name 
- * @property integer $sort 
- * @property integer $time 
- * @property integer $unit 1天2年
- * @property integer $money 金额
- * @property integer $old_money 原价
- * @property integer $status 
+ * @property integer $id (主键)
+ * @property string $name 
+ * @property integer $sort 
+ * @property integer $time 
+ * @property integer $unit 1天2年
+ * @property integer $money 金额
+ * @property integer $old_money 原价
+ * @property integer $status 
  * @property mixed $create_at
  */
 class SaasCombo extends Model
@@ -47,16 +47,4 @@ class SaasCombo extends Model
     public bool $timestamps = false;
 
 
-    public function getMoneyAttr($data): string
-    {
-        if (empty($data)) return "0.00";
-        return format_money($data/100,2,"");
-    }
-
-    public function getOldMoneyAttr($data): string
-    {
-        if (empty($data)) return "0.00";
-        return format_money($data/100,2,"");
-    }
-
 }

+ 1 - 3
app/model/system/SystemMenu.php

@@ -13,12 +13,10 @@ use app\extra\basic\Model;
  * @property string $path 
  * @property string $title 
  * @property string $type 
- * @property string $descs 
  * @property string $icon 
  * @property integer $status 
  * @property integer $sort 
- * @property integer $is_used 
- * @property integer $is_mch 1代理2门店
+ * @property mixed $create_at
  */
 class SystemMenu extends Model
 {

+ 16 - 21
app/model/system/SystemUser.php

@@ -3,26 +3,25 @@
 namespace app\model\system;
 
 use app\extra\basic\Model;
-use think\model\relation\HasOne;
 
 
 /**
- * @property integer $id (主键)
- * @property integer $agent_id 代理ID
- * @property string $username 用户名
- * @property string $truename 真实姓名
- * @property string $password 密码
- * @property mixed $salt 密钥串
- * @property integer $status 状态
- * @property integer $type 1管理员2代理子账号3店铺账号
- * @property integer $is_deleted 删除状态
- * @property integer $is_super 
- * @property string $remark 备注
- * @property string $login_ip 登录IP
- * @property mixed $login_at 登录时间
- * @property integer $login_num 
- * @property string $create_ip 
- * @property mixed $updated_at 更新时间
+ * @property integer $id (主键)
+ * @property integer $agent_id 代理ID
+ * @property string $username 用户名
+ * @property string $truename 真实姓名
+ * @property string $password 密码
+ * @property mixed $salt 密钥串
+ * @property integer $status 状态
+ * @property integer $type 1管理员2代理子账号3店铺账号
+ * @property integer $is_deleted 删除状态
+ * @property integer $is_super 
+ * @property string $remark 备注
+ * @property string $login_ip 登录IP
+ * @property mixed $login_at 登录时间
+ * @property integer $login_num 
+ * @property string $create_ip 
+ * @property mixed $updated_at 更新时间
  * @property mixed $create_at 创建时间
  */
 class SystemUser extends Model
@@ -55,9 +54,5 @@ class SystemUser extends Model
      */
     public bool $timestamps = false;
 
-    public function account(): HasOne
-    {
-        return $this->hasOne("app\model\saas\SaasAgent","agent_id","agent_id");
-    }
 
 }

+ 28 - 0
app/wss/PrintWss.php

@@ -0,0 +1,28 @@
+<?php
+
+namespace app\wss;
+use Workerman\Connection\TcpConnection;
+
+class PrintWss
+{
+    public function onConnect(TcpConnection $connection)
+    {
+        echo "onConnect\n";
+    }
+
+    public function onWebSocketConnect(TcpConnection $connection, $http_buffer)
+    {
+        echo "onWebSocketConnect\n";
+    }
+
+    public function onMessage(TcpConnection $connection, $data)
+    {
+        $connection->send($data);
+    }
+
+    public function onClose(TcpConnection $connection)
+    {
+        echo "onClose\n";
+    }
+
+}

+ 5 - 0
config/process.php

@@ -22,6 +22,11 @@ return [
             'publicPath' => public_path()
         ]
     ],
+    "wss" => [
+        "handler" => \app\wss\PrintWss::class,
+        "listen" => "websocket://0.0.0.0:18890",
+        "count"  => 1
+    ],
     // File update detection and automatic reload
     'monitor' => [
         'handler' => app\process\Monitor::class,