Bladeren bron

02322234-0012

Zory 4 dagen geleden
bovenliggende
commit
b929c5f84b

+ 31 - 1
app/controller/api/Auth.php

@@ -21,11 +21,41 @@ use support\Response;
 class Auth extends Base
 {
 
-    protected array $noNeedLogin = ["log2mobile"];
+    protected array $noNeedLogin = ["log2mobile","log2nickname"];
 
     #[Inject]
     protected SaasUserOpen $model;
 
+
+    #[PostMapping("nickname")]
+    public function log2nickname(Request $request): Response
+    {
+        try {
+            $param = $request->post();
+            $sessionKey = (new Crypt)->config($this->getDyConfig())->getSessionKey($param['login']);
+            if (empty($sessionKey)) return error("授权登录失败");
+            $userInfo = [
+                "openid"    => $sessionKey['openid'],
+                "nickname"  => $param['nickname']??'',
+                "avatar"    => $param['avatar']??'',
+                "create_ip" => $request->getRealIp()
+            ];
+            $map = ["openid" => $sessionKey['openid']];
+            $user = $this->model->where($map)->findOrEmpty();
+            if ($user->isEmpty()) {
+                $user->insertGetId($userInfo);
+            } else {
+                $user->nickname = $param['nickname']??'';
+                $user->avatar = $param['avatar']??'';
+                $user->save();
+            }
+            $userAuth = get_object_vars(AuthFacade::guard("user")->login(['openid' => $sessionKey['openid']]));
+            return success("ok",$userAuth);
+        } catch (\Throwable $th) {
+            return error($th->getMessage());
+        }
+    }
+
     #[PostMapping("mobile")]
     public function log2mobile(Request $request): Response
     {

+ 8 - 3
app/controller/api/Order.php

@@ -225,8 +225,13 @@ class Order extends Base
         }
     }
 
+    /**
+     * 交易组件获取手机号码
+     * @param Request $request
+     * @return Response
+     */
     #[PostMapping("mobile")]
-    public function getOrderMobile(Request $request)
+    public function getOrderMobile(Request $request): Response
     {
         try {
             $param = $request->post();
@@ -250,10 +255,10 @@ class Order extends Base
     /**
      * 订单投诉
      * @param Request $request
-     * @return Response|void
+     * @return Response
      */
     #[PostMapping("complaint")]
-    public function setOrderComplaint(Request $request)
+    public function setOrderComplaint(Request $request): Response
     {
         try {
             $param = $this->_valid([

+ 17 - 6
app/controller/api/Service.php

@@ -69,9 +69,14 @@ class Service extends Base
             $store = (new SaasStore)->where("poi_id",$param['poi'])->findOrEmpty();
             if ($store->isEmpty()) return error("店铺不存在");
             $chatStore = (new SaasChatStore)->where(['poi_id'=> $store['poi_id'],"openid" => $request->user['openid']])->findOrEmpty();
+            $userAvatar = $request->user['avatar'];
             // 获取最新的10条聊天记录
-            $msg = (new SaasChatMsg)->where(['openid' => $request->user['openid'],'poi_id' => $store['poi_id']])->append(['avatar','time'])->withAttr(['avatar' => function(){
-                return "https://washmy.oss-cn-guangzhou.aliyuncs.com/storage/20260511/23627b2cb8f73a8a90b95c31d726e6ecad0cbb9a.png";
+            $msg = (new SaasChatMsg)->where(['openid' => $request->user['openid'],'poi_id' => $store['poi_id']])->append(['avatar','time'])->withAttr(['avatar' => function($data,$resp) use($userAvatar){
+                if ($resp['source'] == 1) { // 用户
+                    return $userAvatar??'';
+                } else {
+                    return "https://washmy.oss-cn-guangzhou.aliyuncs.com/storage/20260511/23627b2cb8f73a8a90b95c31d726e6ecad0cbb9a.png";
+                }
             },'time' => function($resp,$data){
                 return strtotime($data['create_at']) * 1000;
             }])->order("id","desc")->paginate([
@@ -96,7 +101,7 @@ class Service extends Base
                 $chatStore->goods = $param['goods']??'';
                 $chatStore->save();
             }
-            return $this->encode("ok",['store' => $store,'code' => 1,'sendId' => $request->user['openid'],'msg' => pageFormatMsg($msg),"serviceId" => $service['id']]); // 客服在线
+            return $this->encode("ok",['store' => $store,'code' => 1,'sendId' => $request->user['openid'],'msg' => pageFormatMsg($msg),"serviceId" => $service['id'],'avatar' => $userAvatar]); // 客服在线
         } catch (\Throwable $throwable) {
             echo $throwable->getMessage()."\n";
             echo $throwable->getFile()."\n";
@@ -115,8 +120,13 @@ class Service extends Base
                 "size.default"  => 10
             ],$request->method());
             if (!is_array($param)) return error($param);
-            $msg = (new SaasChatMsg)->where(['openid' => $request->user['openid'],'poi_id' => $param['poi']])->append(['avatar','time'])->withAttr(['avatar' => function(){
-                return "https://washmy.oss-cn-guangzhou.aliyuncs.com/storage/20260511/23627b2cb8f73a8a90b95c31d726e6ecad0cbb9a.png";
+            $userAvatar = $request->user['avatar'];
+            $msg = (new SaasChatMsg)->where(['openid' => $request->user['openid'],'poi_id' => $param['poi']])->append(['avatar','time'])->withAttr(['avatar' => function($data,$resp) use($userAvatar){
+                if ($resp['source'] == 1) {
+                    return $userAvatar??'';
+                } else {
+                    return "https://washmy.oss-cn-guangzhou.aliyuncs.com/storage/20260511/23627b2cb8f73a8a90b95c31d726e6ecad0cbb9a.png";
+                }
             },'time' => function($resp,$data){
                 return strtotime($data['create_at']) * 1000;
             }])->order("id","desc")->paginate([
@@ -167,7 +177,8 @@ class Service extends Base
                 "service_id"  => $param['sendId'],
                 "create_at"  => formatTime(time()),
                 "user"  => [
-                    "nickname" => $request->user['nickname']
+                    "nickname"  => $request->user['nickname'],
+                    "avatar"    => $request->user['avatar']
                 ]
             ]);
             return successTrans("success.data");

+ 12 - 2
app/controller/api/Solution.php

@@ -8,6 +8,7 @@ use app\extra\dyMini\Relation;
 use app\extra\tools\CodeExtend;
 use app\middleware\AuthMiddleware;
 use app\model\saas\SaasGoods;
+use app\model\saas\SaasGoodsSku;
 use app\model\saas\SaasOrder;
 use LinFly\Annotation\Attributes\Route\Controller;
 use LinFly\Annotation\Attributes\Route\GetMapping;
@@ -65,7 +66,15 @@ class Solution extends Base
                         ]]);
                         break;
                     case "pre_create_order": // 预下单
+                        echo getDateFull()."====预下单\n";
+                        print_r($msgData);
                         if (!isset($msgData['item_order_info_list'][0]['goods_id'])) return json(['err_no' => 0,"err_tips" => "success"]);
+                        if (empty($msgData['cp_extra'])) return json(['err_no' => 0,"err_tips" => "success"]);
+                        $cp_extra = json_decode($msgData['cp_extra'],true);
+                        $skuGoods = [];
+                        if ($cp_extra['product_id'] <> $cp_extra['sku_id']) { // 多规格下单
+                            $skuGoods = (new SaasGoodsSku)->where(['product_id' => $cp_extra['product_id'],'sku_id' => $cp_extra['sku_id']])->findOrEmpty();
+                        }
                         $goods = (new SaasGoods)->where("goods_id",$msgData['item_order_info_list'][0]['goods_id'])->findOrEmpty();
                         if ($goods->isEmpty()) return json(['err_no' => 0,"err_tips" => "success"]);
                         $order = (new SaasOrder)->where("order_sn",$msgData['order_id'])->findOrEmpty();
@@ -79,13 +88,14 @@ class Solution extends Base
                             "goods_id"  => $goods['id'],
                             "life_goods_id" => $goods['goods_id'],
                             "product_id"    => $goods['product_id'],
-                            "sku_id"        => "",
+                            "sku_id"        => $cp_extra['sku_id'],
                             "number"        => $msgData['goods'][0]['quantity']??1,
                             "price"         => $msgData['item_order_info_list'][0]['price']?:$goods['price'],
+                            "custom_price"  => empty($skuGoods)?$goods['custom_price']:$skuGoods['custom_price'], // 补差价金额
                             "line_price"    => $goods['line_price']*100,
                             "poi_id"        => $goods['poi_id'],
                             "img"           => $goodsImg[0]['url'],
-                            "sku_name"      => "",
+                            "sku_name"      => $cp_extra['name'],
                             "mobile"        => $msgData['phone_num']??'',
                             "pay_money"     => $msgData['total_amount']??0,
                         ]);

+ 2 - 3
app/controller/api/User.php

@@ -25,10 +25,9 @@ class User extends Base
     public function getUserData(Request $request): Response
     {
         try {
-            $data = $this->model->where("openid",$request->user['openid'])->field("openid,nickname")->append(['avatar'])->withAttr(['avatar' => function () {
-                return "https://washmy.oss-cn-guangzhou.aliyuncs.com/storage/20260511/23627b2cb8f73a8a90b95c31d726e6ecad0cbb9a.png";
-            }])->findOrEmpty();
+            $data = $this->model->where("openid",$request->user['openid'])->field("openid,nickname,avatar")->findOrEmpty();
             if ($data->isEmpty()) return errorTrans("error.data");
+            if (empty($data['avatar'])) $data['avatar'] = "https://washmy.oss-cn-guangzhou.aliyuncs.com/storage/20260511/23627b2cb8f73a8a90b95c31d726e6ecad0cbb9a.png";
             return success("ok",$data->toArray());
         } catch (\Throwable $th) {
             return error($th->getMessage());

+ 36 - 0
app/controller/merchant/OrderPrice.php

@@ -0,0 +1,36 @@
+<?php
+
+namespace app\controller\merchant;
+
+
+use app\extra\basic\Base;
+use app\middleware\AuthMiddleware;
+use app\service\saas\OrderPriceService;
+use DI\Attribute\Inject;
+use LinFly\Annotation\Attributes\Route\Controller;
+use LinFly\Annotation\Attributes\Route\GetMapping;
+use LinFly\Annotation\Attributes\Route\Middleware;
+use support\Request;
+use support\Response;
+
+#[Controller("/api/merchant/order/price"),Middleware(AuthMiddleware::class)]
+class OrderPrice extends Base
+{
+
+    #[Inject]
+    protected OrderPriceService $service;
+
+    #[GetMapping('list')]
+    public function getOrderList(Request $request): Response
+    {
+        try {
+            $param = $request->all();
+            $param['poi_id'] = $request->user['store_id'];
+            $data = $this->service->setModel()->getList($param);
+            return successTrans("success.data",pageFormat($data),200);
+        } catch (\Throwable $throwable) {
+            return error($throwable->getMessage());
+        }
+    }
+
+}

+ 2 - 2
app/controller/service/Service.php

@@ -43,7 +43,7 @@ class Service extends Base
             $param['poi_id'] = $request->user['store_id'];
             $param['service_id'] = $request->user['id'];
             $data = $this->service->setModel()->getList($param,['user' => function($query){
-                $query->field("openid,nickname,mobile,create_at");
+                $query->field("openid,nickname,avatar,mobile,create_at");
             }],true,['last','avatar'],['last' => function($data,$resp) use($param){
                 $last = (new SaasChatMsg)->where(["poi_id" => $resp['poi_id'],"service_id" => $param['service_id'],"openid" => $resp['openid']])->order("create_at desc")->field("content,create_at,type")->findOrEmpty();
                 if ($last->isEmpty()) {
@@ -71,7 +71,7 @@ class Service extends Base
             }])->with(['nick' => function ($query) {
                 $query->field("id,truename");
             },'user' => function ($query) {
-                $query->field("openid,nickname");
+                $query->field("openid,nickname,avatar");
             }])->order("id","desc")->paginate([
                 "list_rows" => $param['size'] ?? 10,
                 "page"      => $param['page'] ?? 1,

+ 13 - 7
app/model/saas/SaasOrderPrice.php

@@ -3,16 +3,17 @@
 namespace app\model\saas;
 
 use app\extra\basic\Model;
+use think\model\relation\HasOne;
 
 
 /**
- * @property integer $id (主键)
- * @property string $name 
- * @property integer $price 
- * @property string $image 
- * @property mixed $order_sn 
- * @property integer $status 
- * @property mixed $msgId 
+ * @property integer $id (主键)
+ * @property string $name 
+ * @property integer $price 
+ * @property string $image 
+ * @property mixed $order_sn 
+ * @property integer $status 
+ * @property mixed $msgId 
  * @property mixed $create_at
  */
 class SaasOrderPrice extends Model
@@ -46,4 +47,9 @@ class SaasOrderPrice extends Model
     public bool $timestamps = false;
 
 
+    public function user(): HasOne
+    {
+        return $this->hasOne(SaasUserOpen::class,"openid","openid");
+    }
+
 }

+ 41 - 0
app/service/saas/OrderPriceService.php

@@ -0,0 +1,41 @@
+<?php
+
+namespace app\service\saas;
+
+use app\extra\basic\Service;
+use app\model\saas\SaasOrderPrice;
+
+class OrderPriceService extends Service
+{
+
+
+    /**
+     *
+     * @return $this
+     */
+    public function setModel()
+    {
+        $this->mode = (new SaasOrderPrice);
+        return $this;
+    }
+
+
+    /**
+     *
+     * @param array $param
+     * @return array
+     */
+    public function searchFilter(array $param = []): array
+    {
+        $filter = [];
+        !empty($param['openid']) && $filter[] = ["openid", '=', $param['openid']];
+        !empty($param['poi_id']) && $filter[] = ["poi_id", '=', $param['poi_id']];
+        !empty($param['status']) && $filter[] = ["status", '=', ($param['status']-1)];
+        !empty($param['type']) && $filter[] = ["type", '=', $param['type']];
+        !empty($param['name']) && $filter[] = ["poi_name", 'like', "%{$param['name']}%"];
+        !empty($param['order_sn']) && $filter[] = ["order_sn", 'like', "%{$param['order_sn']}%"];
+        !empty($param['out_order_no']) && $filter[] = ["out_order_no", 'like', "%{$param['out_order_no']}%"];
+        return $filter;
+    }
+
+}

+ 1 - 0
app/service/saas/OrderService.php

@@ -32,6 +32,7 @@ class OrderService extends Service
         !empty($param['type']) && $filter[] = ["type", '=', $param['type']];
         !empty($param['name']) && $filter[] = ["poi_name", 'like', "%{$param['name']}%"];
         !empty($param['order_sn']) && $filter[] = ["order_sn", 'like', "%{$param['order_sn']}%"];
+        !empty($param['order']) && $filter[] = ["order_sn", 'like', "%{$param['order']}%"];
         !empty($param['out_order_no']) && $filter[] = ["out_order_no", 'like', "%{$param['out_order_no']}%"];
         return $filter;
     }