Prechádzať zdrojové kódy

Merge branch 'feature-wechat' into liuzj-1001016-dev

# Conflicts:
#	modules/WechatPlatform/routes/route.php
liuzejian 1 rok pred
rodič
commit
88bda0b343

+ 13 - 0
modules/Common/Services/BaseService.php

@@ -36,4 +36,17 @@ class BaseService
         }
         throw  new FailedException($msg);
     }
+
+    /**
+     *  微信公众号关键字类型
+     * name: getWechatKeywordType
+     * @return \string[][]
+     * date 2023/07/05 16:34
+     */
+    public static function  getWechatKeywordType(){
+        return [
+            ['value' => 'txt', 'name' => "纯文本"],
+            ['value' => 'miniprogram', 'name' => "小程序"],
+        ];
+    }
 }

+ 1 - 1
modules/Operation/Http/Requests/BannerRequest.php

@@ -31,7 +31,7 @@ class BannerRequest extends FormRequest
                 function ($attribute, $value, $fail) {
                     $has = DB::table('videos')->where('id', $value)->first();
                     if (empty($has)) {
-                        $fail("剧不不正确");
+                        $fail("剧不不正确");
                         exit();
                     }
                     if ($has->shelf_type != 2){

+ 15 - 0
modules/WechatPlatform/Http/Controllers/SettingController.php

@@ -0,0 +1,15 @@
+<?php
+/**
+ *
+ * @file:settingController.php
+ * @Date: 2023/7/6
+ * @Time: 10:58
+ */
+
+
+namespace Modules\WechatPlatform\Http\Controllers;
+
+class SettingController
+{
+
+}

+ 120 - 0
modules/WechatPlatform/Http/Controllers/WechatKeywordsController.php

@@ -0,0 +1,120 @@
+<?php
+/**
+ * 微信公众号关键词回复设置
+ * @file:WechatKeywordsController.php
+ * @Date: 2023/7/5
+ * @Time: 15:00
+ */
+
+
+namespace Modules\WechatPlatform\Http\Controllers;
+
+use Catch\Base\CatchController;
+use Catch\Exceptions\FailedException;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\DB;
+use Modules\Manage\Enmus\MiniprogramType;
+use Modules\User\Http\Controllers\UserTrait;
+use Modules\WechatPlatform\Http\Requests\WechatKeywordsRequest;
+use Modules\WechatPlatform\Services\WechatKeywordsService;
+
+class WechatKeywordsController extends CatchController
+{
+    use UserTrait;
+    /**
+     *  关键词列表
+     * name: List
+     * @param Request $request
+     * date 2023/07/05 15:10
+     */
+    public function List(Request $request)
+    {
+
+    }
+
+    /**
+     *  添加
+     * name: add
+     * @param WechatKeywordsRequest $request
+     * date 2023/07/05 15:36
+     */
+    public function add(WechatKeywordsRequest $request)
+    {
+        $param = $request->validated();
+        $param = $this->WechatKeywordsParam($param);
+        $userContext = $this->getUserContext(null);
+        $param['user_id'] = $userContext['loginUser']->id;
+        $param['puser_id'] = $userContext['loginUser']->pid;
+        return WechatKeywordsService::addKeyword($param);
+    }
+
+    private function WechatKeywordsParam(mixed $param)
+    {
+        if (getProp($param,'type') != 'miniprogram'){
+            return $param;
+        }
+        $info = DB::table('miniprogram')->where('id',$param['miniprogram_id'])->first();
+        if(empty($info)){
+            throw  new  FailedException("小程序不正确");
+        }
+        if($info->status != 1){
+            throw  new  FailedException("此小程序暂不提供使用");
+        }
+        if ($info->type != MiniprogramType::WEIXIN->value()){
+            throw  new  FailedException("关键词回复设置仅支持微信小程序");
+        }
+        $param['miniprogram_appid'] = $info->appid;
+        $info = DB::table('user_has_miniprograms')->where('uid',$this->getLoginUserId())->where('miniprogram_id',$param['miniprogram_id'])->where('is_enabled',1)->value('id');
+        if(empty($info)){
+            throw  new  FailedException("没有此小程序的使用权限");
+        }
+        return  $param;
+    }
+    /**
+     *  编辑
+     * name: edit
+     * @param $id
+     * @param WechatKeywordsRequest $request
+     * date 2023/07/05 15:36
+     */
+    public function edit($id, WechatKeywordsRequest $request)
+    {
+
+    }
+
+    /**
+     *  详情
+     * name: detail
+     * @param $id
+     * date 2023/07/05 15:36
+     */
+    public function detail($id)
+    {
+
+    }
+
+    /**
+     *  分配
+     * name: allocation
+     * @param $id
+     * @param Request $request
+     * date 2023/07/05 16:03
+     */
+    public function allocation($id,Request $request)
+    {
+
+    }
+
+    /**
+     *  删除
+     * name: del
+     * @param $id
+     * date 2023/07/05 15:47
+     */
+    public function del($id)
+    {
+
+    }
+
+
+}

+ 17 - 0
modules/WechatPlatform/Http/Controllers/WechatMenuController.php

@@ -0,0 +1,17 @@
+<?php
+/**
+ *   微信公众号自定义菜单
+ * @file:WechatMenuController.php
+ * @Date: 2023/7/5
+ * @Time: 15:01
+ */
+
+
+namespace Modules\WechatPlatform\Http\Controllers;
+
+use Catch\Base\CatchController;
+
+class WechatMenuController extends CatchController
+{
+
+}

+ 17 - 0
modules/WechatPlatform/Http/Controllers/WechatSubscribeController.php

@@ -0,0 +1,17 @@
+<?php
+/**
+ *  微信公众号关注回复设置
+ * @file:WechatSubscribeController.php
+ * @Date: 2023/7/5
+ * @Time: 15:02
+ */
+
+
+namespace Modules\WechatPlatform\Http\Controllers;
+
+use Catch\Base\CatchController;
+
+class WechatSubscribeController extends CatchController
+{
+
+}

+ 65 - 0
modules/WechatPlatform/Http/Requests/WechatKeywordsRequest.php

@@ -0,0 +1,65 @@
+<?php
+/**
+ *
+ * @file:WechatKeywordsRequest.php
+ * @Date: 2023/7/5
+ * @Time: 15:11
+ */
+
+
+namespace Modules\WechatPlatform\Http\Requests;
+
+use Illuminate\Foundation\Http\FormRequest;
+use Illuminate\Support\Facades\DB;
+use Modules\User\Http\Controllers\UserTrait;
+use Modules\WechatPlatform\Services\WechatKeywordsService;
+
+class WechatKeywordsRequest extends FormRequest
+{
+
+    use  UserTrait;
+    /**
+     * rules
+     *
+     * @return array
+     */
+    public function rules(): array
+    {
+        return [
+            'keyword' => "required",
+            'type' => [
+                "required",
+                function ($attribute, $value, $fail) {
+                    $types = array_column(WechatKeywordsService::getWechatKeywordType(), 'value');
+                    if (!in_array($value, $types)) {
+                        $fail("关键词类型不正确!");
+                        exit();
+                    }
+                }
+            ],
+            'miniprogram_id' => [
+                'required_if:type,miniprogram',
+                'Integer',
+                "gt:0",
+            ],
+            "content" =>   "required|array",
+        ];
+    }
+
+
+    /**
+     * messages
+     *
+     * @return string[]
+     */
+    public function messages(): array
+    {
+        return [
+            'type.required' => '关键词类型必须填写',
+            'keyword.required' => '关键词必须填写',
+            "miniprogram_id.required_if" => "小程序必须填写",
+            "content.required" => "内容必须填写",
+            "content.array" => "内容格式不正确",
+        ];
+    }
+}

+ 16 - 0
modules/WechatPlatform/Models/WechatAccountKeywordLog.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace Modules\WechatPlatform\Models;
+
+use Modules\Common\Models\BaseModel;
+
+
+class WechatAccountKeywordLog extends BaseModel
+{
+    protected $table = 'wechat_account_keyword_log';
+
+    protected $fillable = [
+        'id', 'weacht_keyworld_id', 'appid', 'nick_name', 'sned_total', 'updated_at', 'created_at',
+    ];
+
+}

+ 17 - 0
modules/WechatPlatform/Models/WechatKeywords.php

@@ -0,0 +1,17 @@
+<?php
+
+namespace Modules\WechatPlatform\Models;
+
+use Modules\Common\Models\BaseModel;
+
+
+class WechatKeywords extends BaseModel
+{
+    protected $table = 'wechat_keywords';
+
+    protected $fillable = [
+        'id', 'keyword', 'user_id',"send_times", 'puser_id',"miniprogram_appid", 'miniprogram_id', 'type', 'content', 'is_del', 'del_at', 'updated_at', 'created_at',
+    ];
+    protected $casts = ['content' => 'array'];
+
+}

+ 32 - 0
modules/WechatPlatform/Services/WechatKeywordsService.php

@@ -0,0 +1,32 @@
+<?php
+/**
+ *
+ * @file:WechatKeywordsService.php
+ * @Date: 2023/7/5
+ * @Time: 16:31
+ */
+
+
+namespace Modules\WechatPlatform\Services;
+
+use Modules\Common\Services\BaseService;
+use Modules\WechatPlatform\Models\WechatKeywords;
+
+class WechatKeywordsService extends BaseService
+{
+
+    /**
+     *  添加关键字
+     * name: addKeyword
+     * @param mixed $param
+     * date 2023/07/06 10:11
+     */
+    public static function addKeyword(mixed $param)
+    {
+        $res =   WechatKeywords::create($param);
+        if ($res){
+            return "操作成功";
+        }
+        return "操作失败";
+    }
+}

+ 20 - 0
modules/WechatPlatform/routes/route.php

@@ -2,6 +2,7 @@
 
 use Illuminate\Support\Facades\Route;
 use Modules\WechatPlatform\Http\Controllers\KFMessageController;
+use Modules\WechatPlatform\Http\Controllers\WechatKeywordsController;
 
 Route::prefix('wechatPlatform')->group(function(){
     Route::prefix('kfMessage')->middleware('roleCheck:optimizer')->group(function(){
@@ -12,4 +13,23 @@ Route::prefix('wechatPlatform')->group(function(){
         Route::post('updateContent', [KFMessageController::class, 'updateContent']);
         Route::post('updateGZH', [KFMessageController::class, 'updateGZH']);
     });
+
+    // 微信公众号设置
+    Route::prefix('officialAccount')->group(function () {
+        // 关键字列表
+        Route::prefix('keyword')->group(function () {
+            // 列表
+            Route::any("list",[WechatKeywordsController::class,'list']);
+            // 添加
+            Route::post('add',[WechatKeywordsController::class,'add']);
+            // 编辑
+            Route::post('edit/{id}',[WechatKeywordsController::class,'edit']);
+            // 详情
+            Route::any('detail/{id}',[WechatKeywordsController::class,'detail']);
+            // 删除
+            Route::any('del/{id}',[WechatKeywordsController::class,'del']);
+            // 配置公众号
+            Route::post('allocation/id',[WechatKeywordsController::class,'allocation']);
+        });
+    });
 });