浏览代码

'17200011'

zory 2 月之前
父节点
当前提交
1ef904b198

+ 2 - 2
app/controller/api/Account.php

@@ -18,7 +18,7 @@ use support\Response;
 class Account extends Base
 {
 
-    protected array $noNeedLogin = ['getAccountDetail','getAccountList'];
+    protected array $noNeedLogin = [];
 
     #[Inject]
     protected BlueExpertPlatform $model;
@@ -87,7 +87,7 @@ class Account extends Base
             if (!is_array($param)) return error($param);
             $platform = $this->model->where(['openid' => $request->user['openid'],'source' => $param['source']])->findOrEmpty();
             if (!$platform->isEmpty()) {
-                if ($platform['status'] <= 2) return error("请勿重复提交");
+                if ($platform['status'] < 2) return error("请勿重复提交");
                 $platform->nickname = $param['nickname'];
                 $platform->url = $param['url'];
                 $platform->home_page = $param['home'];

+ 1 - 1
app/controller/api/Address.php

@@ -19,7 +19,7 @@ class Address extends Base
 {
 
 
-    protected array $noNeedLogin = ['getAddressList'];
+    protected array $noNeedLogin = [];
 
     #[Inject]
     protected BlueAddress $model;

+ 5 - 0
app/controller/api/Auth.php

@@ -6,6 +6,8 @@ use app\extra\basic\Base;
 use app\extra\tools\CodeExtend;
 use app\extra\weMini\Crypt;
 use app\middleware\WxMiddleware;
+use app\model\blue\BlueCategory;
+use app\model\blue\BlueExpertPlatform;
 use app\model\blue\BlueUserOpen;
 use DI\Attribute\Inject;
 use LinFly\Annotation\Route\Controller;
@@ -14,6 +16,9 @@ use LinFly\Annotation\Route\Route;
 use Shopwwi\WebmanAuth\Facade\Auth as AuthMode;
 use support\Request;
 use support\Response;
+use think\db\exception\DataNotFoundException;
+use think\db\exception\DbException;
+use think\db\exception\ModelNotFoundException;
 
 #[Controller(prefix: "/wx_api/auth"),Middleware(WxMiddleware::class)]
 class Auth extends Base

+ 4 - 3
app/controller/api/Page.php

@@ -32,7 +32,7 @@ class Page extends Base
     {
         try {
             $data = sConf("page.rule");
-            return json_encode(['code' => 1,'data' => $data],JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);
+            return json_encode(['code' => 1,'data' => $data]);
         } catch (\Throwable $throwable) {
             return error($throwable->getMessage());
         }
@@ -44,7 +44,8 @@ class Page extends Base
     {
         try {
             $data = sConf("page.privacy");
-            return json_encode(['code' => 1,'data' => $data],JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);
+//            return json_encode(['code' => 1,'data' => $data]);
+            return successTrans("success.data",compact("data"));
         } catch (\Throwable $throwable) {
             return error($throwable->getMessage());
         }
@@ -56,7 +57,7 @@ class Page extends Base
     {
         try {
             $data = sConf("page.agreements");
-            return json_encode(['code' => 1,'data' => $data],JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);
+            return json_encode(['code' => 1,'data' => $data]);
         } catch (\Throwable $throwable) {
             return error($throwable->getMessage());
         }

+ 5 - 1
app/controller/api/Portal.php

@@ -47,9 +47,13 @@ class Portal extends Base
             if (empty($param['category'])) {
                 $param['category'] = $category[0]['id'];
             }
+            $share = [
+                "image" => sConf("wechat.share"),
+                "title" => sConf("wechat.share_title")
+            ];
             $list = $this->service->getHomeList(['category' => $param['category'],'pageSize' => $param['size'],'page' => $param['page']]);
             $task = pageFormat($list);
-            return success("ok",compact("banner","category",'task'));
+            return success("ok",compact("banner","category",'task','share'));
         } catch (\Throwable $throwable) {
             return error($throwable->getMessage());
         }

+ 21 - 2
app/controller/api/Rank.php

@@ -15,6 +15,7 @@ use support\Response;
 class Rank extends Base
 {
 
+    protected array $noNeedLogin = ['getRankData'];
 
     /**
      * 排行榜,前100名
@@ -29,8 +30,26 @@ class Rank extends Base
                 "type.default"  => "mon"
             ],$request->method());
             if (!is_array($param)) return error($param);
-
-            return successTrans("success.data",[]);
+            $pool = 0; // 奖金池
+            $rank = [
+                [
+                    "avatar_uri"    => "",
+                    "nick_name"     => "",
+                    "indicator_agg_format"  => "0.00", // 已结算收益,
+                    "consume_format"        => "0.00", // 累计消耗
+                    "task"          => 0,
+                    "level"         => 1
+                ]
+            ];
+            $self = [
+                "avatar_uri"    => "",
+                "nick_name"     => "",
+                "indicator_agg_format"  => "0.00", // 已结算收益,
+                "consume_format"        => "0.00", // 累计消耗
+                "task"          => 0,
+                "level"         => 1
+            ];
+            return successTrans("success.data",compact("pool","rank","self"));
         } catch (\Throwable $throwable) {
             return error($throwable->getMessage());
         }

+ 6 - 39
app/controller/api/Task.php

@@ -21,7 +21,7 @@ class Task extends Base
 {
 
 
-    protected array $noNeedLogin = [];
+    protected array $noNeedLogin = ["getTaskDetail"];
 
 
     #[Inject]
@@ -62,37 +62,13 @@ class Task extends Base
             if (!is_array($param)) return error($param);
             $data = $this->service->getTaskDetail($param);
             if (empty($data)) return errorTrans("empty.data");
+            $data['content'] = strip_img_attributes($data['content']);
             return success("ok",$data->toArray());
         } catch (\Throwable $throwable) {
             return error($throwable->getMessage());
         }
     }
 
-
-    /**
-     * 检查是否绑定星图ID
-     * @param Request $request
-     * @return Response
-     */
-    #[Route(path: "starId",methods: "post")]
-    public function getStarId(Request $request): Response
-    {
-        try {
-            $param = $this->_valid([
-                "task_sn.require"   => trans("empty.require"),
-                "task_id.require"   => trans("empty.require"),
-            ],$request->method());
-            if (!is_array($param)) return error($param);
-            $task = $this->model->where(['task_sn' => $param['task_sn'],'id' => $param['task_id']])->findOrEmpty();
-            if ($task->isEmpty()) return errorTrans("empty.data");
-            $platformUser = (new BlueExpertPlatform)->where(['openid' => $request->user['openid'],"source" => $task['category'],"status" => 1])->findOrEmpty();
-            if ($platformUser->isEmpty()) return error("请先完成平台绑定");
-            return success("ok",['star_id' => $platformUser['star_id']]);
-        } catch (\Throwable $throwable) {
-            return error($throwable->getMessage());
-        }
-    }
-
     /**
      * 任务报名
      * @param Request $request
@@ -105,30 +81,21 @@ class Task extends Base
             $param = $this->_valid([
                 "task_sn.require"   => trans("empty.require"),
                 "task_id.require"   => trans("empty.require"),
-                "start_id.require"  => trans("empty.require"),
             ],$request->method());
             if (!is_array($param)) return error($param);
             $task = $this->model->where(['task_sn' => $param['task_sn'],'id' => $param['task_id']])->findOrEmpty();
             if ($task->isEmpty()) return errorTrans("empty.data");
-            $platformUser = (new BlueExpertPlatform)->where(['openid' => $request->user['openid'],"source" => $task['category'],"status" => 1])->findOrEmpty();
-            if ($platformUser->isEmpty()) return error("请先完成平台绑定");
-            if (empty($platformUser['star_id'])) {
-                $platformUser->star_id = $param['start_id'];
-                $platformUser->save();
-            }
-            $taskUser = (new BlueTaskUser)->where(['openid' => $request->user['openid'],'task_sn' => $param['task_sn'],'id' => $param['task_id']])->findOrEmpty();
-            if (!$taskUser->isEmpty()) return error("请勿重复提交");
+            $taskUser = (new BlueTaskUser)->where(['openid' => $request->user['openid'],'task_sn' => $param['task_sn'],'task_id' => $param['task_id']])->findOrEmpty();
+            if (!$taskUser->isEmpty()) return error("请勿重复报名");
             $state = $taskUser->insertGetId([
                 "openid"    => $request->user['openid'],
                 "task_id"   => $param['task_id'],
                 "task_sn"   => $param['task_sn'],
                 "source"    => $task['category'],
-                "platform"  => json_encode($platformUser->toArray()),
-                "url"       => $task['category'],
-                "image"     => $task['image'],
+                "status"    => 0 // 0待提交 1审核中 2审核通过 3已拒绝
             ]);
             if (!$state) return errorTrans("error.data");
-            return successTrans("success.data");
+            return successTrans("success.data",['task_user_id' => $state]);
         } catch (\Throwable $throwable) {
             return error($throwable->getMessage());
         }

+ 66 - 3
app/controller/api/TaskUser.php

@@ -5,6 +5,7 @@ namespace app\controller\api;
 use app\extra\basic\Base;
 use app\extra\service\blue\BlueTaskUserService;
 use app\middleware\WxMiddleware;
+use app\model\blue\BlueExpertPlatform;
 use app\model\blue\BlueTaskUser;
 use DI\Attribute\Inject;
 use LinFly\Annotation\Route\Controller;
@@ -17,7 +18,7 @@ use support\Response;
 #[Controller(prefix: "/wx_api/task/user"),Middleware(WxMiddleware::class)]
 class TaskUser extends Base
 {
-    protected array $noNeedLogin = ["getTaskUserDetail"];
+    protected array $noNeedLogin = [];
 
     #[Inject]
     protected BlueTaskUser $model;
@@ -36,10 +37,11 @@ class TaskUser extends Base
     {
         try {
             $param = $this->_valid([
+                "status.default"    => 0,
                 "size.default"      => 10,
                 "page.default"      => 1,
             ],$request->method());
-            $list = $this->service->getHomeList(['openid' => $request->user['openid'],'pageSize' => $param['size'],'page' => $param['page']]);
+            $list = $this->service->getHomeList(['openid' => $request->user['openid'],'status' => $param['status'],'pageSize' => $param['size'],'page' => $param['page']]);
             return success("ok",pageFormat($list));
         } catch (\Throwable $throwable) {
             return error($throwable->getMessage());
@@ -47,6 +49,67 @@ class TaskUser extends Base
     }
 
 
+    /**
+     * 提交任务资料
+     * @param Request $request
+     * @return Response
+     */
+    #[Route(path: "submit",methods: "post")]
+    public function updateTaskUser(Request $request): Response
+    {
+        try {
+            $param = $this->_valid([
+                "id.require"        => trans("empty.require"),
+                "task_sn.require"   => trans("empty.require"),
+                "star_id.require"   => trans("empty.require"),
+            ],$request->method());
+            if (!is_array($param)) return error($param);
+            $task = $this->model->where(['id' => $param['id'],'task_sn' => $param['task_sn'],'openid' => $request->user['openid'] ])->findOrEmpty();
+            if ($task->isEmpty()) return errorTrans("empty.data");
+            $platformUser = (new BlueExpertPlatform)->where(['openid' => $request->user['openid'],"source" => $task['source'],"status" => 1])->findOrEmpty();
+            if ($platformUser->isEmpty()) return error("请先完成平台绑定");
+            if (empty($platformUser['star_id'])) {
+                $platformUser->star_id = $param['star_id'];
+                $platformUser->save();
+            }
+            $task->star_id = $param['star_id'];
+            $task->status = 1;
+            $task->submit_at = getDateFull();
+            $task->platform = json_encode($platformUser);
+            $state = $task->save();
+            if (!$state) return errorTrans("error.data");
+            return successTrans("success.data");
+        } catch (\Throwable $throwable) {
+            return error($throwable->getMessage());
+        }
+    }
+
+    /**
+     * 检查是否绑定星图ID
+     * @param Request $request
+     * @return Response
+     */
+    #[Route(path: "starId",methods: "post")]
+    public function getStarId(Request $request): Response
+    {
+        try {
+            $param = $this->_valid([
+                "id.require"        => trans("empty.require"),
+                "task_sn.require"   => trans("empty.require"),
+            ],$request->method());
+            if (!is_array($param)) return error($param);
+            $task = $this->model->where(['task_sn' => $param['task_sn'],'id' => $param['id']])->findOrEmpty();
+            if ($task->isEmpty()) return errorTrans("empty.data");
+            $platformUser = (new BlueExpertPlatform)->where(['openid' => $request->user['openid'],"source" => $task['source'],"status" => 1])->findOrEmpty();
+            if ($platformUser->isEmpty()) return error("请先完成平台绑定");
+            return success("ok",['star_id' => $platformUser['star_id']]);
+        } catch (\Throwable $throwable) {
+            return error($throwable->getMessage());
+        }
+    }
+
+
+
     /**
      * 已接任务详情
      * @param Request $request
@@ -61,7 +124,7 @@ class TaskUser extends Base
                 "task_sn.require"   => trans("empty.require"),
             ],$request->method());
             if (!is_array($param)) return error($param);
-            $task = $this->model->where(['id' => $param['id'],'task_sn' => $param['task_sn'],'openid' => '123' ])->with(['task' => function ($query) {
+            $task = $this->model->where(['id' => $param['id'],'task_sn' => $param['task_sn'],'openid' => $request->user['openid'] ])->with(['task' => function ($query) {
                 $query->field("id,title,task_sn,product_cover_url,total_budget,sign_number,need_number,category,level,sys_level,product_price")->append(['progress','total_budget_format'])->withAttr(['progress' => function ($data,$resp) {
                     if ($resp['sign_number'] == 0) return $resp['sign_number'];
                     return ceil($resp['sign_number']/$resp['need_number'] * 100);

+ 38 - 1
app/controller/api/User.php

@@ -4,6 +4,8 @@ namespace app\controller\api;
 
 use app\extra\basic\Base;
 use app\middleware\WxMiddleware;
+use app\model\blue\BlueCategory;
+use app\model\blue\BlueExpertPlatform;
 use app\model\blue\BlueUserOpen;
 use DI\Attribute\Inject;
 use LinFly\Annotation\Route\Controller;
@@ -11,6 +13,9 @@ use LinFly\Annotation\Route\Route;
 use LinFly\Annotation\Route\Middleware;
 use support\Request;
 use support\Response;
+use think\db\exception\DataNotFoundException;
+use think\db\exception\DbException;
+use think\db\exception\ModelNotFoundException;
 
 
 #[Controller(prefix: "/wx_api/user"),Middleware(WxMiddleware::class)]
@@ -26,8 +31,9 @@ class User extends Base
         try {
             $user = $request->user;
             if (empty($user)) return errorTrans("empty.data");
+            $platform = $this->checkPlatform($user['openid']);
             $member = $this->model->where("openid",$user['openid'])->field("openid,headimg,nickname")
-                ->append(["withdraw",'day','mon','bonus','task','sign','level','dy_level'])
+                ->append(["withdraw",'day','mon','bonus','task','sign','level','dy_level','platform'])
                 ->withAttr(['withdraw' => function(){
                         return 0; // 可提现金额
                     },'day' => function(){
@@ -44,6 +50,8 @@ class User extends Base
                         return 0; // 平台等级
                     },'dy_level' => function(){
                         return 0; // 抖音等级
+                    },'platform' => function() use($platform) {
+                        return $platform;
                     }
                 ])
                 ->findOrEmpty();
@@ -53,4 +61,33 @@ class User extends Base
         }
     }
 
+
+
+    /**
+     * 绑定平台信息
+     * @param string $openId
+     * @return array
+     * @throws DataNotFoundException
+     * @throws DbException
+     * @throws ModelNotFoundException
+     */
+    protected function checkPlatform(string $openId = ""): array
+    {
+        $category = (new BlueCategory)->where("status",1)->where("type",1)->field("sign,name,icon")->select();
+        if ($category->isEmpty()) return [];
+        $platform = [];
+        $platformModel = new BlueExpertPlatform();
+        foreach ($category as $key=>$val)
+        {
+            $bind = $platformModel->where("source",$val['sign'])->where("openid",$openId)->findOrEmpty();
+            if ($bind->isEmpty()) {
+                $bindState = 0;
+            } else {
+                $bindState = $bind['status'] + 1;
+            }
+            $platform[$val['sign']]['status'] = $bindState;
+        }
+        return $platform;
+    }
+
 }

+ 1 - 1
app/extra/service/blue/BlueTaskUserService.php

@@ -37,7 +37,7 @@ class BlueTaskUserService extends Service
         !empty($param['task_sn']) && $filter[] = ["task_sn", '=', $param['task_sn']];
         !empty($param['type']) && $filter[] = ["type", '=', $param['type']];
         !empty($param['category']) && $filter[] = ["category", '=', $param['category']];
-        !empty($param['status']) && $filter[] = ["status", '=', $param['status']];
+        !empty($param['status']) && $filter[] = ["status", '=', ($param['status']-1)];
         !empty($param['name']) && $filter[] = ["name", 'like', "%{$param['name']}%"];
         return $filter;
     }

+ 17 - 0
app/functions.php

@@ -664,4 +664,21 @@ if (!function_exists('formatMoneyKw')) {
         $val = rtrim(rtrim(sprintf("%.{$decimal}f", $val), '0'), '.');
         return $val . $unit;
     }
+}
+
+if (!function_exists("strip_img_attributes"))
+{
+    /**
+     * 纯正则过滤 img 标签的指定属性
+     * @param string $html 富文本
+     * @param array $attrs 要删除的属性:width, height, style, border 等
+     * @return string
+     */
+    function strip_img_attributes($html, $attrs = ['width', 'height', 'style', 'border']) {
+        // 拼接正则:匹配 属性="xxx" 或 属性='xxx' 或 属性=xxx
+        $pattern = '/(' . implode('|', $attrs) . ')\s*=\s*("[^"]*"|\'[^\']*\'|\S*)\s*/i';
+
+        // 一次性替换掉所有 img 里的目标属性
+        return preg_replace($pattern, '', $html);
+    }
 }

二进制
xg-api.zip