dongxiaoqin hai 1 ano
pai
achega
e6b4022dcf

+ 114 - 0
app/adminapi/controller/group_activity/GroupActivityCategoryController.php

@@ -0,0 +1,114 @@
+<?php
+// +----------------------------------------------------------------------
+// | likeadmin快速开发前后端分离管理后台(PHP版)
+// +----------------------------------------------------------------------
+// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
+// | 开源版本可自由商用,可去除界面版权logo
+// | gitee下载:https://gitee.com/likeshop_gitee/likeadmin
+// | github下载:https://github.com/likeshop-github/likeadmin
+// | 访问官网:https://www.likeadmin.cn
+// | likeadmin团队 版权所有 拥有最终解释权
+// +----------------------------------------------------------------------
+// | author: likeadminTeam
+// +----------------------------------------------------------------------
+
+
+namespace app\adminapi\controller\group_activity;
+
+
+use app\adminapi\controller\BaseAdminController;
+use app\adminapi\lists\group_activity\GroupActivityCategoryLists;
+use app\adminapi\logic\group_activity\GroupActivityCategoryLogic;
+use app\adminapi\validate\group_activity\GroupActivityCategoryValidate;
+
+
+/**
+ * 拼团活动分类控制器
+ * Class GroupActivityCategoryController
+ * @package app\adminapi\controller\group_activity
+ */
+class GroupActivityCategoryController extends BaseAdminController
+{
+
+    /**
+     * @notes 获取列表
+     * @return \think\response\Json
+     * @author likeadmin
+     * @date 2025/03/13 10:31
+     */
+    public function lists()
+    {
+        return $this->dataLists(new GroupActivityCategoryLists());
+    }
+
+
+    /**
+     * @notes 添加
+     * @return \think\response\Json
+     * @author likeadmin
+     * @date 2025/03/13 10:31
+     */
+    public function add()
+    {
+        $params = (new GroupActivityCategoryValidate())->post()->goCheck('add');
+        $result = GroupActivityCategoryLogic::add($params);
+        if (true === $result) {
+            return $this->success('添加成功', [], 1, 1);
+        }
+        return $this->fail(GroupActivityCategoryLogic::getError());
+    }
+
+
+    /**
+     * @notes 编辑
+     * @return \think\response\Json
+     * @author likeadmin
+     * @date 2025/03/13 10:31
+     */
+    public function edit()
+    {
+        $params = (new GroupActivityCategoryValidate())->post()->goCheck('edit');
+        $result = GroupActivityCategoryLogic::edit($params);
+        if (true === $result) {
+            return $this->success('编辑成功', [], 1, 1);
+        }
+        return $this->fail(GroupActivityCategoryLogic::getError());
+    }
+
+
+    /**
+     * @notes 删除
+     * @return \think\response\Json
+     * @author likeadmin
+     * @date 2025/03/13 10:31
+     */
+    public function delete()
+    {
+        $params = (new GroupActivityCategoryValidate())->post()->goCheck('delete');
+        GroupActivityCategoryLogic::delete($params);
+        return $this->success('删除成功', [], 1, 1);
+    }
+
+
+    /**
+     * @notes 获取详情
+     * @return \think\response\Json
+     * @author likeadmin
+     * @date 2025/03/13 10:31
+     */
+    public function detail()
+    {
+        $params = (new GroupActivityCategoryValidate())->goCheck('detail');
+        $result = GroupActivityCategoryLogic::detail($params);
+        return $this->data($result);
+    }
+    /**
+     * 获取活动分类二维码
+     */
+    public function getQRCode()
+    {
+        $params = (new GroupActivityCategoryValidate())->post()->goCheck('detail');
+        return $this->success('',['qrcode'=>GroupActivityCategoryLogic::getQRCode($params, $this->request->domain())], 1, 1);
+    }
+
+}

+ 78 - 0
app/adminapi/lists/group_activity/GroupActivityCategoryLists.php

@@ -0,0 +1,78 @@
+<?php
+// +----------------------------------------------------------------------
+// | likeadmin快速开发前后端分离管理后台(PHP版)
+// +----------------------------------------------------------------------
+// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
+// | 开源版本可自由商用,可去除界面版权logo
+// | gitee下载:https://gitee.com/likeshop_gitee/likeadmin
+// | github下载:https://github.com/likeshop-github/likeadmin
+// | 访问官网:https://www.likeadmin.cn
+// | likeadmin团队 版权所有 拥有最终解释权
+// +----------------------------------------------------------------------
+// | author: likeadminTeam
+// +----------------------------------------------------------------------
+
+namespace app\adminapi\lists\group_activity;
+
+
+use app\adminapi\lists\BaseAdminDataLists;
+use app\common\model\group_activity\GroupActivityCategory;
+use app\common\lists\ListsSearchInterface;
+
+
+/**
+ * 拼团活动分类列表
+ * Class GroupActivityCategoryLists
+ * @package app\adminapi\listsgroup_activity
+ */
+class GroupActivityCategoryLists extends BaseAdminDataLists implements ListsSearchInterface
+{
+
+
+    /**
+     * @notes 设置搜索条件
+     * @return \string[][]
+     * @author likeadmin
+     * @date 2025/03/13 10:31
+     */
+    public function setSearch(): array
+    {
+        return [
+            '=' => ['id', 'status'],
+            '%like%' => ['title'],
+        ];
+    }
+
+    /**
+     * @notes 获取列表
+     * @return array
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\DbException
+     * @throws \think\db\exception\ModelNotFoundException
+     * @author likeadmin
+     * @date 2025/03/13 10:31
+     */
+    public function lists(): array
+    {
+        $list = GroupActivityCategory::where($this->searchWhere)
+            ->field(['id', 'title', 'status','create_time'])
+            ->limit($this->limitOffset, $this->limitLength)
+            ->order(['id' => 'desc'])
+            ->select()
+            ->toArray();
+        return $list;
+    }
+
+
+    /**
+     * @notes 获取拼团活动数量
+     * @return int
+     * @author likeadmin
+     * @date 2025/03/13 10:31
+     */
+    public function count(): int
+    {
+        return GroupActivityCategory::where($this->searchWhere)->count();
+    }
+
+}

+ 147 - 0
app/adminapi/logic/group_activity/GroupActivityCategoryLogic.php

@@ -0,0 +1,147 @@
+<?php
+// +----------------------------------------------------------------------
+// | likeadmin快速开发前后端分离管理后台(PHP版)
+// +----------------------------------------------------------------------
+// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
+// | 开源版本可自由商用,可去除界面版权logo
+// | gitee下载:https://gitee.com/likeshop_gitee/likeadmin
+// | github下载:https://github.com/likeshop-github/likeadmin
+// | 访问官网:https://www.likeadmin.cn
+// | likeadmin团队 版权所有 拥有最终解释权
+// +----------------------------------------------------------------------
+// | author: likeadminTeam
+// +----------------------------------------------------------------------
+
+namespace app\adminapi\logic\group_activity;
+
+
+use think\Exception;
+use think\facade\Db;
+use think\facade\Log;
+use app\common\logic\BaseLogic;
+use app\common\model\group_activity\GroupActivity;
+use app\common\service\wechat\WeChatMnpService;
+use app\common\model\group_activity\GroupActivityCategory;
+
+/**
+ * 拼团活动分类逻辑
+ * Class GroupActivityCategoryLogic
+ * @package app\adminapi\logic\group_activity
+ */
+class GroupActivityCategoryLogic extends BaseLogic
+{
+
+
+    /**
+     * @notes 添加
+     * @param array $params
+     * @return bool
+     * @author likeadmin
+     * @date 2025/03/13 10:31
+     */
+    public static function add(array $params): bool
+    {
+        try {
+            $params['block_data'] = json_encode($params['block_data']);
+            $params['images'] = implode(",",$params['images']);
+            GroupActivityCategory::create([
+                'title' => $params['title'],
+                'images' => $params['images'],
+                'block_data' => $params['block_data'],
+                'status' => $params['status'],
+            ]);
+
+            return true;
+        } catch (\Exception $e) {
+            self::setError($e->getMessage());
+            return false;
+        }
+    }
+
+
+    /**
+     * @notes 编辑拼团活动
+     * @param array $params
+     * @return bool
+     * @author likeadmin
+     * @date 2025/03/13 10:31
+     */
+    public static function edit(array $params): bool
+    {
+        try {
+            $params['block_data'] = json_encode($params['block_data']);
+            $params['images'] = implode(",",$params['images']);
+            GroupActivityCategory::where('id', $params['id'])->update([
+                'title' => $params['title'],
+                'images' => $params['images'],
+                'block_data' => $params['block_data'],
+                'status' => $params['status'],
+            ]);
+            return true;
+        } catch (\Exception $e) {
+            self::setError($e->getMessage());
+            return false;
+        }
+    }
+
+
+    /**
+     * @notes 删除
+     * @param array $params
+     * @return bool
+     * @author likeadmin
+     * @date 2025/03/13 10:31
+     */
+    public static function delete(array $params): bool
+    {
+        return GroupActivityCategory::destroy($params['id']);
+    }
+
+
+    /**
+     * @notes 获取拼团活动详情
+     * @param $params
+     * @return array
+     * @author likeadmin
+     * @date 2025/03/13 10:31
+     */
+    public static function detail($params): array
+    {
+        $detail = GroupActivityCategory::findOrEmpty($params['id'])->toArray();
+        $detail['block_data'] = $detail['block_data'] ? json_decode($detail['block_data'],true) : [];
+        $detail['images'] = $detail['images'] ? explode(",",$detail['images']) : [];
+        $detail['activity'] = GroupActivity::with('goods')->field('id,equity_id,title,image')->select()->toArray();
+        return $detail;
+    }
+
+    /**
+     * 获取二维码
+     * @return string|void
+     */
+    public static function getQRCode($params,$url)
+    {
+        try {
+            $mnp_page = 'pages/web_view/group_catogory';
+            
+            $scene_page = 'group';
+            Log::info('getQRCode:'.rawurlencode($scene_page));
+            $response = (new WeChatMnpService())->getUnlimitedQRCode(
+                'page='.$scene_page.'&id='.$params['id'],
+                $mnp_page,
+                env('miniprogram.mini_env_version', 'release'),
+                false
+            );
+            Log::info('getQRCode:'.json_encode([$response]));
+            $qrcode = $response->getContent();
+            if(!is_dir('./uploads/wx_qrcode/'.date('Ymd'))){
+                mkdir('./uploads/wx_qrcode/'.date('Ymd'));
+            }
+            $file_name = 'uploads/wx_qrcode/'.date('Ymd').'/'.time().rand(1000,9999).'.png';
+            file_put_contents($file_name, $qrcode);
+            return $url.'/'.$file_name;
+        } catch (\Throwable $e) {
+            Log::info('getQRCode:'.$e->getMessage());
+            return '';
+        }
+    }
+}

+ 102 - 0
app/adminapi/validate/group_activity/GroupActivityCategoryValidate.php

@@ -0,0 +1,102 @@
+<?php
+// +----------------------------------------------------------------------
+// | likeadmin快速开发前后端分离管理后台(PHP版)
+// +----------------------------------------------------------------------
+// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
+// | 开源版本可自由商用,可去除界面版权logo
+// | gitee下载:https://gitee.com/likeshop_gitee/likeadmin
+// | github下载:https://github.com/likeshop-github/likeadmin
+// | 访问官网:https://www.likeadmin.cn
+// | likeadmin团队 版权所有 拥有最终解释权
+// +----------------------------------------------------------------------
+// | author: likeadminTeam
+// +----------------------------------------------------------------------
+
+namespace app\adminapi\validate\group_activity;
+
+
+use app\common\validate\BaseValidate;
+
+
+/**
+ * 拼团活动分类验证器
+ * Class GroupActivityCategoryValidate
+ * @package app\adminapi\validate\group_activity
+ */
+class GroupActivityCategoryValidate extends BaseValidate
+{
+
+     /**
+      * 设置校验规则
+      * @var string[]
+      */
+    protected $rule = [
+        'id' => 'require',
+        'title' => 'require',
+        'images' => 'require',
+        'block_data' => 'require',
+
+    ];
+
+
+    /**
+     * 参数描述
+     * @var string[]
+     */
+    protected $field = [
+        'id' => 'id',
+        'title' => '活动名称',
+        'images' => '活动图片',
+        'block_data' => '活动分类板块',
+
+    ];
+
+
+    /**
+     * @notes 添加场景
+     * @return GroupActivityValidate
+     * @author likeadmin
+     * @date 2025/03/13 10:31
+     */
+    public function sceneAdd()
+    {
+        return $this->only(['title','images','block_data']);
+    }
+
+
+    /**
+     * @notes 编辑场景
+     * @return GroupActivityValidate
+     * @author likeadmin
+     * @date 2025/03/13 10:31
+     */
+    public function sceneEdit()
+    {
+        return $this->only(['id','title','images','block_data']);
+    }
+
+
+    /**
+     * @notes 删除场景
+     * @return GroupActivityValidate
+     * @author likeadmin
+     * @date 2025/03/13 10:31
+     */
+    public function sceneDelete()
+    {
+        return $this->only(['id']);
+    }
+
+
+    /**
+     * @notes 详情场景
+     * @return GroupActivityValidate
+     * @author likeadmin
+     * @date 2025/03/13 10:31
+     */
+    public function sceneDetail()
+    {
+        return $this->only(['id']);
+    }
+
+}

+ 9 - 0
app/api/controller/GroupActivityController.php

@@ -18,6 +18,15 @@ class GroupActivityController extends BaseApiController
     public array $notNeedLogin = [];
 
 
+    /**
+     * 活动分类列表
+     */
+    public function categoryList()
+    {
+        $result = GroupActivityLogic::categoryList();
+        return $this->data($result);
+    }
+
     /**
      * 活动详情
      */

+ 13 - 0
app/api/logic/GroupActivityLogic.php

@@ -15,6 +15,7 @@ use app\common\model\equity\UserEquityLog;
 use app\common\model\group_activity\GroupOrder;
 use app\common\service\wechat\WeChatMnpService;
 use app\common\model\group_activity\GroupActivity;
+use app\common\model\group_activity\GroupActivityCategory;
 use app\common\model\group_activity\GroupUserOrder;
 
 
@@ -26,6 +27,18 @@ use app\common\model\group_activity\GroupUserOrder;
 class GroupActivityLogic extends BaseLogic
 {
 
+    /**
+     * 活动分类列表
+     */
+    public static function categoryList(){
+        $list = GroupActivityCategory::where('status',1)->field('id,title,images,block_data')->select()->toArray();
+        foreach($list as &$item) {
+            $item['images'] = $item['images'] ? explode(",",$item['images']) : [];
+            $item['block_data'] = $item['block_data'] ? json_decode($item['block_data'],true) : [];
+        }
+        return $list;
+    }
+
     /**
      * @notes 拼团活动详情
      */

+ 37 - 0
app/common/model/group_activity/GroupActivityCategory.php

@@ -0,0 +1,37 @@
+<?php
+// +----------------------------------------------------------------------
+// | likeadmin快速开发前后端分离管理后台(PHP版)
+// +----------------------------------------------------------------------
+// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
+// | 开源版本可自由商用,可去除界面版权logo
+// | gitee下载:https://gitee.com/likeshop_gitee/likeadmin
+// | github下载:https://github.com/likeshop-github/likeadmin
+// | 访问官网:https://www.likeadmin.cn
+// | likeadmin团队 版权所有 拥有最终解释权
+// +----------------------------------------------------------------------
+// | author: likeadminTeam
+// +----------------------------------------------------------------------
+
+namespace app\common\model\group_activity;
+
+use app\common\model\BaseModel;
+use think\model\concern\SoftDelete;
+
+
+/**
+ * 拼团活动分类模型
+ * Class GroupActivityCategory
+ * @package app\common\model\group_activity
+ */
+class GroupActivityCategory extends BaseModel
+{
+    use SoftDelete;
+    protected $name = 'group_activity_category';
+    protected $deleteTime = 'delete_time';
+
+    public function getCreateTimeAttr($value,$data)
+    {
+        return !empty($data['create_time'])?date('Y-m-d H:i:s',$data['create_time']):'';
+    }
+    
+}