Parcourir la source

wesmiler 报恩寺项目

wesmiler il y a 4 ans
Parent
commit
da683d4d11
87 fichiers modifiés avec 3282 ajouts et 156 suppressions
  1. 23 8
      app/Helpers/common.php
  2. 37 0
      app/Http/Controllers/ActivityBooksController.php
  3. 37 0
      app/Http/Controllers/AdvicesController.php
  4. 44 0
      app/Http/Controllers/ArticleCatesController.php
  5. 36 0
      app/Http/Controllers/ArticleController.php
  6. 3 0
      app/Http/Controllers/BaseController.php
  7. 35 0
      app/Http/Controllers/DonatesController.php
  8. 35 0
      app/Http/Controllers/MecryController.php
  9. 36 0
      app/Http/Controllers/MusicController.php
  10. 44 0
      app/Http/Controllers/MusicSheetsController.php
  11. 36 0
      app/Http/Controllers/RechargeController.php
  12. 37 0
      app/Http/Controllers/SignCatesController.php
  13. 37 0
      app/Http/Controllers/SignsController.php
  14. 44 0
      app/Http/Controllers/StoreCatesController.php
  15. 45 0
      app/Http/Controllers/StoreRecordsController.php
  16. 36 0
      app/Http/Controllers/StoresController.php
  17. 36 0
      app/Http/Controllers/TradesController.php
  18. 4 4
      app/Http/Controllers/UploadController.php
  19. 36 0
      app/Http/Controllers/YigongController.php
  20. 1 0
      app/Models/ActionLogModel.php
  21. 46 0
      app/Models/ActivityBooksModel.php
  22. 42 0
      app/Models/ArticleBooksModel.php
  23. 42 0
      app/Models/ArticleCatesModel.php
  24. 45 0
      app/Models/ArticleModel.php
  25. 45 0
      app/Models/DonateModel.php
  26. 45 0
      app/Models/MecryModel.php
  27. 2 2
      app/Models/MemberModel.php
  28. 50 0
      app/Models/MusicModel.php
  29. 42 0
      app/Models/MusicSheetsModel.php
  30. 39 0
      app/Models/RechargeModel.php
  31. 42 0
      app/Models/SignCatesModel.php
  32. 42 0
      app/Models/SignsModel.php
  33. 42 0
      app/Models/StoresCatesModel.php
  34. 45 0
      app/Models/StoresModel.php
  35. 39 0
      app/Models/StoresRecordsModel.php
  36. 39 0
      app/Models/TradeModel.php
  37. 45 0
      app/Models/YigongModel.php
  38. 105 0
      app/Services/ActivityBooksService.php
  39. 103 0
      app/Services/AdvicesService.php
  40. 106 0
      app/Services/ArticleBooksService.php
  41. 74 0
      app/Services/ArticleCatesService.php
  42. 128 0
      app/Services/ArticleService.php
  43. 9 6
      app/Services/BaseService.php
  44. 0 128
      app/Services/Demo3Service.php
  45. 108 0
      app/Services/DonateService.php
  46. 3 3
      app/Services/GoodsCatesService.php
  47. 3 1
      app/Services/GoodsService.php
  48. 113 0
      app/Services/MecryService.php
  49. 130 0
      app/Services/MusicService.php
  50. 74 0
      app/Services/MusicSheetsService.php
  51. 2 2
      app/Services/OrdersService.php
  52. 13 1
      app/Services/PositionService.php
  53. 127 0
      app/Services/RechargeService.php
  54. 74 0
      app/Services/SignCatesService.php
  55. 108 0
      app/Services/SignsService.php
  56. 157 0
      app/Services/StoreRecordsService.php
  57. 120 0
      app/Services/StoresService.php
  58. 133 0
      app/Services/TradeService.php
  59. 121 0
      app/Services/YigongService.php
  60. BIN
      public/uploads/file/20210705/60e2c09ee863f.mp3
  61. BIN
      public/uploads/file/20210705/60e2c19426861.mp3
  62. BIN
      public/uploads/file/20210705/60e2c1a4d6f53.mp3
  63. BIN
      public/uploads/file/20210705/60e2c20f307b0.mp3
  64. BIN
      public/uploads/file/20210705/60e2c3b393a32.mp3
  65. BIN
      public/uploads/file/20210705/60e2c44a52cb3.mp3
  66. BIN
      public/uploads/img/20210704/60e1557b8ca58.png
  67. BIN
      public/uploads/img/20210704/60e155e33580a.png
  68. BIN
      public/uploads/img/20210704/60e156278bdf2.jpg
  69. BIN
      public/uploads/img/20210704/60e15659e55a5.jpg
  70. BIN
      public/uploads/img/20210704/60e171a0bc767.jpg
  71. BIN
      public/uploads/img/20210704/60e171bdccd19.jpg
  72. BIN
      public/uploads/img/20210704/60e1737ee13d5.jpeg
  73. BIN
      public/uploads/img/20210704/60e173cc6a8aa.jpg
  74. BIN
      public/uploads/img/20210705/60e2b97cdb86f.png
  75. BIN
      public/uploads/img/20210705/60e2bb04cfa78.png
  76. BIN
      public/uploads/img/20210705/60e2bb187ae1c.jpg
  77. BIN
      public/uploads/img/20210705/60e2bb2caf40e.jpeg
  78. BIN
      public/uploads/img/20210705/60e2bb558a639.png
  79. BIN
      public/uploads/img/20210705/60e2bc7d1e76f.png
  80. BIN
      public/uploads/img/20210705/60e2bfb025c45.mp3
  81. BIN
      public/uploads/img/20210705/60e2bfd4979d8.mp3
  82. BIN
      public/uploads/img/20210705/60e2c0506a742.mp3
  83. BIN
      public/uploads/img/20210705/60e2c3bf9f480.png
  84. BIN
      public/uploads/img/20210705/60e35f7465b02.jpg
  85. BIN
      public/uploads/img/20210705/60e35fa627166.jpg
  86. 136 1
      routes/web.php
  87. 1 0
      开发文档功能.md

+ 23 - 8
app/Helpers/common.php

@@ -710,6 +710,21 @@ if (!function_exists('get_image_url')) {
     }
 }
 
+if (!function_exists('get_file_url')) {
+
+    /**
+     * 获取文件地址
+     * @param $file_url 文件地址
+     * @return string 返回图片网络地址
+     * @author wesmiler
+     * @date 2019/6/6
+     */
+    function get_file_url($file_url)
+    {
+        return strpos($file_url,'http') === false? IMG_URL . $file_url : $file_url;
+    }
+}
+
 if (!function_exists('get_hash')) {
 
     /**
@@ -1482,14 +1497,14 @@ if (!function_exists('upload_file')) {
     {
         // 检测请求中是否包含上传的文件
         if (!$request->hasFile($form_name)) {
-            return message("请上传文件");
+            return message("请上传文件", false);
         }
         // 文件对象
         $file = $request->file($form_name);
         // 判断图片上传是否错误
         if (!$file->isValid()) {
             // 文件上传失败
-            return message("上传文件验证失败");
+            return message("上传文件验证失败", false);
         }
         // 文件原名
         $original_name = $file->getClientOriginalName();
@@ -1503,19 +1518,19 @@ if (!function_exists('upload_file')) {
         $size = $file->getSize();
 
         // 文件大小校验(MAX=5M)
-        $file_max_size = 5 * 1024 * 1024;
+        $file_max_size = 50 * 1024 * 1024;
         if ($size > $file_max_size) {
-            return message("您上传的文件过大,最大值为" . $file_max_size / 1024 / 1024 . "MB");
+            return message("您上传的文件过大,最大值为" . $file_max_size / 1024 / 1024 . "MB", false);
         }
 
         // 允许上传的文件后缀
-        $file_exts = array('xls', 'xlsx', 'csv');
+        $file_exts = array('xls', 'xlsx', 'csv','mp3','mp4','WMA','MPEG');
         if (!in_array($ext, $file_exts)) {
-            return message("文件格式不正确");
+            return message("文件格式不正确", false);
         }
 
         // 文件路径
-        $file_dir = UPLOAD_TEMP_PATH . "/" . date('Ymd');
+        $file_dir = UPLOAD_FILE_PATH . "/" . date('Ymd');
 
         // 检测文件路径是否存在,不存在则创建
         if (!file_exists($file_dir)) {
@@ -1527,7 +1542,7 @@ if (!function_exists('upload_file')) {
         // 重命名保存
         $path = $file->move($file_dir, $file_name);
         // 文件临时路径
-        $file_path = str_replace(IMG_PATH, '', $file_dir) . '/' . $file_name;
+        $file_path = str_replace(ATTACHMENT_PATH, '', $file_dir) . '/' . $file_name;
 
         // 返回结果
         $result = [

+ 37 - 0
app/Http/Controllers/ActivityBooksController.php

@@ -0,0 +1,37 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Http\Controllers;
+
+use App\Services\ActivityBooksService;
+use App\Services\ActivityService;
+
+/**
+ * 寺院活动报名管理-控制器
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class ActivityBooksController
+ * @package App\Http\Controllers
+ */
+class ActivityBooksController extends Backend
+{
+    /**
+     * 构造函数
+     * @author wesmiler
+     * @since 2020/11/11
+     * ActivityBooksController constructor.
+     */
+    public function __construct()
+    {
+        parent::__construct();
+        $this->service = new ActivityBooksService();
+    }
+}

+ 37 - 0
app/Http/Controllers/AdvicesController.php

@@ -0,0 +1,37 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Http\Controllers;
+
+use App\Services\AdvicesService;
+
+/**
+ * 反馈建议管理-控制器
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class AdvicesController
+ * @package App\Http\Controllers
+ */
+class AdvicesController extends Backend
+{
+    /**
+     * 构造函数
+     * @author wesmiler
+     * @since 2020/11/11
+     * AdvicesController constructor.
+     */
+    public function __construct()
+    {
+        parent::__construct();
+        $this->service = new AdvicesService();
+    }
+
+}

+ 44 - 0
app/Http/Controllers/ArticleCatesController.php

@@ -0,0 +1,44 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Http\Controllers;
+
+use App\Services\ArticleCatesService;
+
+/**
+ * 文章分类管理-控制器
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class ArticleCatesController
+ * @package App\Http\Controllers
+ */
+class ArticleCatesController extends Backend
+{
+    /**
+     * 构造函数
+     * @author wesmiler
+     * @since 2020/11/11
+     * ArticleCatesController constructor.
+     */
+    public function __construct()
+    {
+        parent::__construct();
+        $this->service = new ArticleCatesService();
+    }
+
+    /**
+     * 获取分类选项列表
+     * @return array
+     */
+    public function options(){
+        return $this->service->getOptions();
+    }
+}

+ 36 - 0
app/Http/Controllers/ArticleController.php

@@ -0,0 +1,36 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Http\Controllers;
+
+use App\Services\ArticleService;
+
+/**
+ * 文章管理-控制器
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class ArticlesController
+ * @package App\Http\Controllers
+ */
+class ArticleController extends Backend
+{
+    /**
+     * 构造函数
+     * @author wesmiler
+     * @since 2020/11/11
+     * ArticlesController constructor.
+     */
+    public function __construct()
+    {
+        parent::__construct();
+        $this->service = new ArticleService();
+    }
+}

+ 3 - 0
app/Http/Controllers/BaseController.php

@@ -82,6 +82,9 @@ class BaseController extends \Illuminate\Routing\Controller
         // 临时存放目录
         defined('UPLOAD_TEMP_PATH') or define('UPLOAD_TEMP_PATH', ATTACHMENT_PATH . "/img");
 
+        // 文件存放目录
+        defined('UPLOAD_FILE_PATH') or define('UPLOAD_FILE_PATH', ATTACHMENT_PATH . "/file");
+
         // 定义普通图片域名
         defined('IMG_URL') or define('IMG_URL', env('IMG_URL'));
 

+ 35 - 0
app/Http/Controllers/DonatesController.php

@@ -0,0 +1,35 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Http\Controllers;
+use App\Services\DonateService;
+
+/**
+ * 捐赠物品管理-控制器
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class DonatesController
+ * @package App\Http\Controllers
+ */
+class DonatesController extends Backend
+{
+    /**
+     * 构造函数
+     * @author wesmiler
+     * @since 2020/11/11
+     * DonatesController constructor.
+     */
+    public function __construct()
+    {
+        parent::__construct();
+        $this->service = new DonateService();
+    }
+}

+ 35 - 0
app/Http/Controllers/MecryController.php

@@ -0,0 +1,35 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Http\Controllers;
+use App\Services\MecryService;
+
+/**
+ * 行善记录管理-控制器
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class MecryController
+ * @package App\Http\Controllers
+ */
+class MecryController extends Backend
+{
+    /**
+     * 构造函数
+     * @author wesmiler
+     * @since 2020/11/11
+     * MecryController constructor.
+     */
+    public function __construct()
+    {
+        parent::__construct();
+        $this->service = new MecryService();
+    }
+}

+ 36 - 0
app/Http/Controllers/MusicController.php

@@ -0,0 +1,36 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Http\Controllers;
+
+use App\Services\MusicService;
+
+/**
+ * 佛音管理-控制器
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class MusicController
+ * @package App\Http\Controllers
+ */
+class MusicController extends Backend
+{
+    /**
+     * 构造函数
+     * @author wesmiler
+     * @since 2020/11/11
+     * MusicController constructor.
+     */
+    public function __construct()
+    {
+        parent::__construct();
+        $this->service = new MusicService();
+    }
+}

+ 44 - 0
app/Http/Controllers/MusicSheetsController.php

@@ -0,0 +1,44 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Http\Controllers;
+
+use App\Services\MusicSheetsService;
+
+/**
+ * 佛音歌单管理-控制器
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class MusicSheetsController
+ * @package App\Http\Controllers
+ */
+class MusicSheetsController extends Backend
+{
+    /**
+     * 构造函数
+     * @author wesmiler
+     * @since 2020/11/11
+     * MusicSheetsController constructor.
+     */
+    public function __construct()
+    {
+        parent::__construct();
+        $this->service = new MusicSheetsService();
+    }
+
+    /**
+     * 获取分类选项列表
+     * @return array
+     */
+    public function options(){
+        return $this->service->getOptions();
+    }
+}

+ 36 - 0
app/Http/Controllers/RechargeController.php

@@ -0,0 +1,36 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Http\Controllers;
+
+use App\Services\RechargeService;
+
+/**
+ * 充值记录管理-控制器
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class RechargeController
+ * @package App\Http\Controllers
+ */
+class RechargeController extends Backend
+{
+    /**
+     * 构造函数
+     * @author wesmiler
+     * @since 2020/11/11
+     * RechargeController constructor.
+     */
+    public function __construct()
+    {
+        parent::__construct();
+        $this->service = new RechargeService();
+    }
+}

+ 37 - 0
app/Http/Controllers/SignCatesController.php

@@ -0,0 +1,37 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Http\Controllers;
+
+use App\Services\SignCatesService;
+
+/**
+ * 打卡签到分类管理-控制器
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class SignCatesController
+ * @package App\Http\Controllers
+ */
+class SignCatesController extends Backend
+{
+    /**
+     * 构造函数
+     * @author wesmiler
+     * @since 2020/11/11
+     * SignCatesController constructor.
+     */
+    public function __construct()
+    {
+        parent::__construct();
+        $this->service = new SignCatesService();
+    }
+
+}

+ 37 - 0
app/Http/Controllers/SignsController.php

@@ -0,0 +1,37 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Http\Controllers;
+
+use App\Services\SignsService;
+
+/**
+ * 打卡签到管理-控制器
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class SignsController
+ * @package App\Http\Controllers
+ */
+class SignsController extends Backend
+{
+    /**
+     * 构造函数
+     * @author wesmiler
+     * @since 2020/11/11
+     * SignsController constructor.
+     */
+    public function __construct()
+    {
+        parent::__construct();
+        $this->service = new SignsService();
+    }
+
+}

+ 44 - 0
app/Http/Controllers/StoreCatesController.php

@@ -0,0 +1,44 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Http\Controllers;
+
+use App\Services\SignCatesService;
+
+/**
+ * 库房商品分类管理-控制器
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class StoreCatesController
+ * @package App\Http\Controllers
+ */
+class StoreCatesController extends Backend
+{
+    /**
+     * 构造函数
+     * @author wesmiler
+     * @since 2020/11/11
+     * StoreCatesController constructor.
+     */
+    public function __construct()
+    {
+        parent::__construct();
+        $this->service = new SignCatesService();
+    }
+
+    /**
+     * 获取分类选项列表
+     * @return array
+     */
+    public function options(){
+        return $this->service->getOptions();
+    }
+}

+ 45 - 0
app/Http/Controllers/StoreRecordsController.php

@@ -0,0 +1,45 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Http\Controllers;
+
+use App\Services\StoreRecordsService;
+
+/**
+ * 库房商品出入库管理-控制器
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class StoreRecordsController
+ * @package App\Http\Controllers
+ */
+class StoreRecordsController extends Backend
+{
+    /**
+     * 构造函数
+     * @author wesmiler
+     * @since 2020/11/11
+     * StoreRecordsController constructor.
+     */
+    public function __construct()
+    {
+        parent::__construct();
+        $this->service = new StoreRecordsService();
+    }
+
+
+    /**
+     * 获取分类选项列表
+     * @return array
+     */
+    public function make(){
+        return $this->service->make();
+    }
+}

+ 36 - 0
app/Http/Controllers/StoresController.php

@@ -0,0 +1,36 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Http\Controllers;
+
+use App\Services\StoresService;
+
+/**
+ * 库房商品管理-控制器
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class StoresController
+ * @package App\Http\Controllers
+ */
+class StoresController extends Backend
+{
+    /**
+     * 构造函数
+     * @author wesmiler
+     * @since 2020/11/11
+     * StoresController constructor.
+     */
+    public function __construct()
+    {
+        parent::__construct();
+        $this->service = new StoresService();
+    }
+}

+ 36 - 0
app/Http/Controllers/TradesController.php

@@ -0,0 +1,36 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Http\Controllers;
+
+use App\Services\TradeService;
+
+/**
+ * 交易明细管理-控制器
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class TradesController
+ * @package App\Http\Controllers
+ */
+class TradesController extends Backend
+{
+    /**
+     * 构造函数
+     * @author wesmiler
+     * @since 2020/11/11
+     * TradesController constructor.
+     */
+    public function __construct()
+    {
+        parent::__construct();
+        $this->service = new TradeService();
+    }
+}

+ 4 - 4
app/Http/Controllers/UploadController.php

@@ -63,12 +63,12 @@ class UploadController extends Backend
     {
         $result = upload_file($request);
         if (!$result['success']) {
-            $this->jsonReturn(MESSAGE_FAILED, false, $result['message']);
+            return message(MESSAGE_FAILED, false, $result['msg']);
         }
         // 文件路径
-        $file_path = $result['data']['file_path'];
+        $file_path = isset($result['data']['file_path'])? $result['data']['file_path'] : '';
         if (!$file_path) {
-            $this->jsonReturn(message("文件上传失败"));
+            return message(message("文件上传失败"));
         }
 
         // 网络域名拼接
@@ -77,7 +77,7 @@ class UploadController extends Backend
         }
 
         // 返回结果
-        $this->jsonReturn(MESSAGE_OK, true, $file_path);
+        return message(MESSAGE_OK, true, $file_path);
     }
 
 }

+ 36 - 0
app/Http/Controllers/YigongController.php

@@ -0,0 +1,36 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Http\Controllers;
+
+use App\Services\YigongService;
+
+/**
+ * 义工管理-控制器
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class YigongController
+ * @package App\Http\Controllers
+ */
+class YigongController extends Backend
+{
+    /**
+     * 构造函数
+     * @author wesmiler
+     * @since 2020/11/11
+     * YigongController constructor.
+     */
+    public function __construct()
+    {
+        parent::__construct();
+        $this->service = new YigongService();
+    }
+}

+ 1 - 0
app/Models/ActionLogModel.php

@@ -140,5 +140,6 @@ class ActionLogModel extends BaseModel
         ];
         // 日志入库
         self::insert($data);
+
     }
 }

+ 46 - 0
app/Models/ActivityBooksModel.php

@@ -0,0 +1,46 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Models;
+
+/**
+ * 寺院活动管理-模型
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class ActivityBooksModel
+ * @package App\Models
+ */
+class ActivityBooksModel extends BaseModel
+{
+    // 设置数据表
+    protected $table = 'activity_books';
+
+    /**
+     * 获取记录信息
+     * @param int $id 记录ID
+     * @return array|string
+     * @author wesmiler
+     * @since 2020/11/11
+     */
+    public function getInfo($id)
+    {
+        $info = parent::getInfo($id); // TODO: Change the autogenerated stub
+        if ($info) {
+            // 图片
+            if ($info['avatar']) {
+                $info['avatar'] = get_image_url($info['avatar']);
+            }
+
+        }
+        return $info;
+    }
+
+}

+ 42 - 0
app/Models/ArticleBooksModel.php

@@ -0,0 +1,42 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Models;
+
+/**
+ * 文章报名管理-模型
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class ArticleBooksModel
+ * @package App\Models
+ */
+class ArticleBooksModel extends BaseModel
+{
+    // 设置数据表
+    protected $table = 'article_books';
+
+    /**
+     * 获取记录信息
+     * @param int $id 记录ID
+     * @return array|string
+     * @author wesmiler
+     * @since 2020/11/11
+     */
+    public function getInfo($id)
+    {
+        $info = parent::getInfo($id); // TODO: Change the autogenerated stub
+        if ($info) {
+
+        }
+        return $info;
+    }
+
+}

+ 42 - 0
app/Models/ArticleCatesModel.php

@@ -0,0 +1,42 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Models;
+
+/**
+ * 文章分类管理-模型
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class ArticleCatesModel
+ * @package App\Models
+ */
+class ArticleCatesModel extends BaseModel
+{
+    // 设置数据表
+    protected $table = 'article_cates';
+
+    /**
+     * 获取记录信息
+     * @param int $id 记录ID
+     * @return array|string
+     * @author wesmiler
+     * @since 2020/11/11
+     */
+    public function getInfo($id)
+    {
+        $info = parent::getInfo($id); // TODO: Change the autogenerated stub
+        if ($info) {
+
+        }
+        return $info;
+    }
+
+}

+ 45 - 0
app/Models/ArticleModel.php

@@ -0,0 +1,45 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Models;
+
+/**
+ * 文章管理-模型
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class ArticleModel
+ * @package App\Models
+ */
+class ArticleModel extends BaseModel
+{
+    // 设置数据表
+    protected $table = 'article';
+
+    /**
+     * 获取记录信息
+     * @param int $id 记录ID
+     * @return array|string
+     * @author wesmiler
+     * @since 2020/11/11
+     */
+    public function getInfo($id)
+    {
+        $info = parent::getInfo($id); // TODO: Change the autogenerated stub
+        if ($info) {
+            // 图片
+            if ($info['thumb']) {
+                $info['thumb'] = get_image_url($info['thumb']);
+            }
+        }
+        return $info;
+    }
+
+}

+ 45 - 0
app/Models/DonateModel.php

@@ -0,0 +1,45 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Models;
+
+/**
+ * 捐赠物品管理-模型
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class DonateModel
+ * @package App\Models
+ */
+class DonateModel extends BaseModel
+{
+    // 设置数据表
+    protected $table = 'donates';
+
+    /**
+     * 获取记录信息
+     * @param int $id 记录ID
+     * @return array|string
+     * @author wesmiler
+     * @since 2020/11/11
+     */
+    public function getInfo($id)
+    {
+        $info = parent::getInfo($id); // TODO: Change the autogenerated stub
+        if ($info) {
+            // 图片
+            if ($info['thumb']) {
+                $info['thumb'] = get_image_url($info['thumb']);
+            }
+        }
+        return $info;
+    }
+
+}

+ 45 - 0
app/Models/MecryModel.php

@@ -0,0 +1,45 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Models;
+
+/**
+ * 行善记录管理-模型
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class MecryModel
+ * @package App\Models
+ */
+class MecryModel extends BaseModel
+{
+    // 设置数据表
+    protected $table = 'mecrys';
+
+    /**
+     * 获取记录信息
+     * @param int $id 记录ID
+     * @return array|string
+     * @author wesmiler
+     * @since 2020/11/11
+     */
+    public function getInfo($id)
+    {
+        $info = parent::getInfo($id); // TODO: Change the autogenerated stub
+        if ($info) {
+            // 图片
+            if ($info['thumb']) {
+                $info['thumb'] = get_image_url($info['thumb']);
+            }
+        }
+        return $info;
+    }
+
+}

+ 2 - 2
app/Models/MemberModel.php

@@ -40,8 +40,8 @@ class MemberModel extends BaseModel
             }
             // 出生日期
             if ($info['birthday']) {
-                $info['birthday'] = datetime($info['birthday']);
-                $info['age'] = max(0, date('Y') - date('Y',$info['birthday']));
+                $info['age'] = $info['birthday']>0? max(0, date('Y') - date('Y',$info['birthday'])) : 0;
+                $info['birthday'] = $info['birthday']? datetime($info['birthday']) : '';
             }
             // 城市
             if ($info['province_id'] && $info['city_id'] && $info['district_id']) {

+ 50 - 0
app/Models/MusicModel.php

@@ -0,0 +1,50 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Models;
+
+/**
+ * 佛音管理-模型
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class MusicModel
+ * @package App\Models
+ */
+class MusicModel extends BaseModel
+{
+    // 设置数据表
+    protected $table = 'musics';
+
+    /**
+     * 获取记录信息
+     * @param int $id 记录ID
+     * @return array|string
+     * @author wesmiler
+     * @since 2020/11/11
+     */
+    public function getInfo($id)
+    {
+        $info = parent::getInfo($id); // TODO: Change the autogenerated stub
+        if ($info) {
+            // 图片
+            if ($info['thumb']) {
+                $info['thumb'] = get_image_url($info['thumb']);
+            }
+
+            // 文件
+            if ($info['file_url']) {
+                $info['file_url'] = get_file_url($info['file_url']);
+            }
+        }
+        return $info;
+    }
+
+}

+ 42 - 0
app/Models/MusicSheetsModel.php

@@ -0,0 +1,42 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Models;
+
+/**
+ * 佛音歌单管理-模型
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class MusicSheetsModel
+ * @package App\Models
+ */
+class MusicSheetsModel extends BaseModel
+{
+    // 设置数据表
+    protected $table = 'music_sheets';
+
+    /**
+     * 获取记录信息
+     * @param int $id 记录ID
+     * @return array|string
+     * @author wesmiler
+     * @since 2020/11/11
+     */
+    public function getInfo($id)
+    {
+        $info = parent::getInfo($id); // TODO: Change the autogenerated stub
+        if ($info) {
+
+        }
+        return $info;
+    }
+
+}

+ 39 - 0
app/Models/RechargeModel.php

@@ -0,0 +1,39 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Models;
+
+/**
+ * 充值记录管理-模型
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class RechargeModel
+ * @package App\Models
+ */
+class RechargeModel extends BaseModel
+{
+    // 设置数据表
+    protected $table = 'recharge_logs';
+
+    /**
+     * 获取记录信息
+     * @param int $id 记录ID
+     * @return array|string
+     * @author wesmiler
+     * @since 2020/11/11
+     */
+    public function getInfo($id)
+    {
+        $info = parent::getInfo($id); // TODO: Change the autogenerated stub
+        return $info;
+    }
+
+}

+ 42 - 0
app/Models/SignCatesModel.php

@@ -0,0 +1,42 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Models;
+
+/**
+ * 打卡分类管理-模型
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class SignCatesModel
+ * @package App\Models
+ */
+class SignCatesModel extends BaseModel
+{
+    // 设置数据表
+    protected $table = 'sign_cates';
+
+    /**
+     * 获取记录信息
+     * @param int $id 记录ID
+     * @return array|string
+     * @author wesmiler
+     * @since 2020/11/11
+     */
+    public function getInfo($id)
+    {
+        $info = parent::getInfo($id); // TODO: Change the autogenerated stub
+        if ($info) {
+
+        }
+        return $info;
+    }
+
+}

+ 42 - 0
app/Models/SignsModel.php

@@ -0,0 +1,42 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Models;
+
+/**
+ * 打卡签到管理-模型
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class SignsModel
+ * @package App\Models
+ */
+class SignsModel extends BaseModel
+{
+    // 设置数据表
+    protected $table = 'signs';
+
+    /**
+     * 获取记录信息
+     * @param int $id 记录ID
+     * @return array|string
+     * @author wesmiler
+     * @since 2020/11/11
+     */
+    public function getInfo($id)
+    {
+        $info = parent::getInfo($id); // TODO: Change the autogenerated stub
+        if ($info) {
+
+        }
+        return $info;
+    }
+
+}

+ 42 - 0
app/Models/StoresCatesModel.php

@@ -0,0 +1,42 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Models;
+
+/**
+ * 库房商品分类管理-模型
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class StoresCatesModel
+ * @package App\Models
+ */
+class StoresCatesModel extends BaseModel
+{
+    // 设置数据表
+    protected $table = 'store_cates';
+
+    /**
+     * 获取记录信息
+     * @param int $id 记录ID
+     * @return array|string
+     * @author wesmiler
+     * @since 2020/11/11
+     */
+    public function getInfo($id)
+    {
+        $info = parent::getInfo($id); // TODO: Change the autogenerated stub
+        if ($info) {
+
+        }
+        return $info;
+    }
+
+}

+ 45 - 0
app/Models/StoresModel.php

@@ -0,0 +1,45 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Models;
+
+/**
+ * 库房商品管理-模型
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class StoresModel
+ * @package App\Models
+ */
+class StoresModel extends BaseModel
+{
+    // 设置数据表
+    protected $table = 'stores';
+
+    /**
+     * 获取记录信息
+     * @param int $id 记录ID
+     * @return array|string
+     * @author wesmiler
+     * @since 2020/11/11
+     */
+    public function getInfo($id)
+    {
+        $info = parent::getInfo($id); // TODO: Change the autogenerated stub
+        if ($info) {
+            // 图片
+            if ($info['thumb']) {
+                $info['thumb'] = get_image_url($info['thumb']);
+            }
+        }
+        return $info;
+    }
+
+}

+ 39 - 0
app/Models/StoresRecordsModel.php

@@ -0,0 +1,39 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Models;
+
+/**
+ * 库房商品出入库管理-模型
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class StoresRecordsModel
+ * @package App\Models
+ */
+class StoresRecordsModel extends BaseModel
+{
+    // 设置数据表
+    protected $table = 'store_records';
+
+    /**
+     * 获取记录信息
+     * @param int $id 记录ID
+     * @return array|string
+     * @author wesmiler
+     * @since 2020/11/11
+     */
+    public function getInfo($id)
+    {
+        $info = parent::getInfo($id); // TODO: Change the autogenerated stub
+        return $info;
+    }
+
+}

+ 39 - 0
app/Models/TradeModel.php

@@ -0,0 +1,39 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Models;
+
+/**
+ * 交易明细管理-模型
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class TradeModel
+ * @package App\Models
+ */
+class TradeModel extends BaseModel
+{
+    // 设置数据表
+    protected $table = 'account_logs';
+
+    /**
+     * 获取记录信息
+     * @param int $id 记录ID
+     * @return array|string
+     * @author wesmiler
+     * @since 2020/11/11
+     */
+    public function getInfo($id)
+    {
+        $info = parent::getInfo($id); // TODO: Change the autogenerated stub
+        return $info;
+    }
+
+}

+ 45 - 0
app/Models/YigongModel.php

@@ -0,0 +1,45 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Models;
+
+/**
+ * 义工管理-模型
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class YigongModel
+ * @package App\Models
+ */
+class YigongModel extends BaseModel
+{
+    // 设置数据表
+    protected $table = 'yigong';
+
+    /**
+     * 获取记录信息
+     * @param int $id 记录ID
+     * @return array|string
+     * @author wesmiler
+     * @since 2020/11/11
+     */
+    public function getInfo($id)
+    {
+        $info = parent::getInfo($id); // TODO: Change the autogenerated stub
+        if ($info) {
+            // 图片
+            if ($info['avatar']) {
+                $info['avatar'] = get_image_url($info['avatar']);
+            }
+        }
+        return $info;
+    }
+
+}

+ 105 - 0
app/Services/ActivityBooksService.php

@@ -0,0 +1,105 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Services;
+
+use App\Models\ActivityBooksModel;
+
+/**
+ * 寺院活动报名管理-服务类
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class ActivityBooksService
+ * @package App\Services
+ */
+class ActivityBooksService extends BaseService
+{
+    /**
+     * 构造函数
+     * @author wesmiler
+     * @since 2020/11/11
+     * ActivityBooksService constructor.
+     */
+    public function __construct()
+    {
+        $this->model = new ActivityBooksModel();
+    }
+
+    /**
+     * 获取列表
+     * @return array
+     * @since 2020/11/11
+     * @author wesmiler
+     */
+    public function getList()
+    {
+        $params = request()->all();
+        $page = isset($params['pageSize']) ? intval($params['pageSize']) : PAGE;
+        $pageSize = isset($params['pageSize']) ? intval($params['pageSize']) : PERPAGE;
+
+        $dataList = $this->model::from('activity_books as b')
+            ->leftJoin('activity as a', 'a.id', '=', 'b.aid')
+            ->leftJoin('member as m', 'm.id', '=', 'b.user_id')
+            ->where(function ($query) use ($params) {
+                $query->where('b.mark', 1);
+
+                $status = isset($params['status']) ? $params['status'] : 0;
+                if ($status > 0) {
+                    $query->where('b.status', $status);
+                } else {
+                    $query->whereIn('b.status', [1, 2]);
+                }
+
+            })
+            ->where(function ($query) use ($params) {
+                $keyword = isset($params['keyword']) ? trim($params['keyword']) : '';
+                if (!empty($keyword)) {
+                    $query->where('a.title', 'like', "%{$keyword}%")
+                        ->orWhere('b.order_sn','like',"%{$keyword}%")
+                        ->orWhere('m.nickname','like',"%{$keyword}%");
+                }
+            })
+            ->select(['b.id', 'b.aid', 'a.title', 'm.nickname','b.order_sn','b.coupon','b.coupon_give','b.gd_name','b.xy_content', 'm.avatar', 'b.status', 'b.create_time', 'b.update_time'])
+            ->orderBy('b.update_time', 'desc')
+            ->paginate($pageSize);
+
+        $dataList = $dataList ? $dataList->toArray() : [];
+        if ($dataList) {
+            foreach ($dataList['data'] as &$item) {
+                $item['avatar'] = $item['avatar'] ? get_image_url($item['avatar']) : '';
+                $item['create_time'] = $item['create_time'] ? datetime($item['create_time'],'Y-m-d H:i:s') : '';
+            }
+            unset($item);
+        }
+
+        return [
+            'code' => 0,
+            'success'=> true,
+            'msg' => '操作成功',
+            'count' => isset($dataList['total']) ? $dataList['total'] : 0,
+            'data' => isset($dataList['data']) ? $dataList['data'] : 0,
+        ];
+    }
+
+    /**
+     * 添加或编辑
+     * @return array
+     * @since 2020/11/11
+     * @author wesmiler
+     */
+    public function edit()
+    {
+        $data = request()->all();
+        $data['update_time'] = time();
+        return parent::edit($data); // TODO: Change the autogenerated stub
+    }
+
+}

+ 103 - 0
app/Services/AdvicesService.php

@@ -0,0 +1,103 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Services;
+
+use App\Models\AdviceModel;
+
+/**
+ * 文章分类管理-服务类
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class AdvicesService
+ * @package App\Services
+ */
+class AdvicesService extends BaseService
+{
+    /**
+     * 构造函数
+     * @author wesmiler
+     * @since 2020/11/11
+     * ArticleBooksService constructor.
+     */
+    public function __construct()
+    {
+        $this->model = new AdviceModel();
+    }
+
+    /**
+     * 获取列表
+     * @return array
+     * @since 2020/11/11
+     * @author wesmiler
+     */
+    public function getList()
+    {
+        $params = request()->all();
+        $page = isset($params['pageSize']) ? intval($params['pageSize']) : PAGE;
+        $pageSize = isset($params['pageSize']) ? intval($params['pageSize']) : PERPAGE;
+
+        $dataList = $this->model::from('advices as a')
+            ->leftJoin('member as m', 'm.id', '=', 'a.user_id')
+            ->where(function ($query) use ($params) {
+                $query->where('a.mark', 1);
+
+                $status = isset($params['status']) ? $params['status'] : 0;
+                if ($status > 0) {
+                    $query->where('a.status', $status);
+                } else {
+                    $query->whereIn('a.status', [1, 2]);
+                }
+
+            })
+            ->where(function ($query) use ($params) {
+                $keyword = isset($params['keyword']) ? trim($params['keyword']) : '';
+                if (!empty($keyword)) {
+                    $query->where('a.title', 'like', "%{$keyword}%");
+                }
+            })
+            ->select(['a.id', 'a.user_id', 'a.title', 'm.nickname', 'a.thumb', 'a.status', 'a.create_time', 'a.update_time', 'a.description'])
+            ->orderBy('a.update_time', 'desc')
+            ->paginate($pageSize);
+
+        $dataList = $dataList ? $dataList->toArray() : [];
+        if ($dataList) {
+            foreach ($dataList['data'] as &$item) {
+                $item['thumb'] = $item['thumb'] ? get_image_url($item['thumb']) : '';
+                $item['create_time'] = $item['create_time'] ? datetime($item['create_time'],'Y-m-d H:i:s') : '';
+            }
+            unset($item);
+        }
+
+        return [
+            'code' => 0,
+            'success'=> true,
+            'msg' => '操作成功',
+            'count' => isset($dataList['total']) ? $dataList['total'] : 0,
+            'data' => isset($dataList['data']) ? $dataList['data'] : 0,
+        ];
+    }
+
+
+    /**
+     * 添加或编辑
+     * @return array
+     * @since 2020/11/11
+     * @author wesmiler
+     */
+    public function edit()
+    {
+        $data = request()->all();
+        $data['update_time'] = time();
+        return parent::edit($data); // TODO: Change the autogenerated stub
+    }
+
+}

+ 106 - 0
app/Services/ArticleBooksService.php

@@ -0,0 +1,106 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Services;
+
+use App\Models\ArticleBooksModel;
+
+/**
+ * 文章分类管理-服务类
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class ArticleBooksService
+ * @package App\Services
+ */
+class ArticleBooksService extends BaseService
+{
+    /**
+     * 构造函数
+     * @author wesmiler
+     * @since 2020/11/11
+     * ArticleBooksService constructor.
+     */
+    public function __construct()
+    {
+        $this->model = new ArticleBooksModel();
+    }
+
+    /**
+     * 获取列表
+     * @return array
+     * @since 2020/11/11
+     * @author wesmiler
+     */
+    public function getList()
+    {
+        $params = request()->all();
+        $page = isset($params['pageSize']) ? intval($params['pageSize']) : PAGE;
+        $pageSize = isset($params['pageSize']) ? intval($params['pageSize']) : PERPAGE;
+
+        $dataList = $this->model::from('article_books as b')
+            ->leftJoin('article as a', 'a.id', '=', 'b.aid')
+            ->leftJoin('member as m', 'm.id', '=', 'b.user_id')
+            ->where(function ($query) use ($params) {
+                $query->where('b.mark', 1);
+
+                $status = isset($params['status']) ? $params['status'] : 0;
+                if ($status > 0) {
+                    $query->where('b.status', $status);
+                } else {
+                    $query->whereIn('b.status', [1, 2]);
+                }
+
+            })
+            ->where(function ($query) use ($params) {
+                $keyword = isset($params['keyword']) ? trim($params['keyword']) : '';
+                if (!empty($keyword)) {
+                    $query->where('a.title', 'like', "%{$keyword}%")
+                        ->orWhere('b.realname','like',"%{$keyword}%")
+                        ->orWhere('m.nickname','like',"%{$keyword}%");
+                }
+            })
+            ->select(['b.id', 'b.aid', 'a.title', 'm.nickname', 'b.realname', 'b.phone', 'b.thumb', 'b.status', 'b.create_time', 'b.update_time', 'b.description'])
+            ->orderBy('b.update_time', 'desc')
+            ->paginate($pageSize);
+
+        $dataList = $dataList ? $dataList->toArray() : [];
+        if ($dataList) {
+            foreach ($dataList['data'] as &$item) {
+                $item['thumb'] = $item['thumb'] ? get_image_url($item['thumb']) : '';
+                $item['create_time'] = $item['create_time'] ? datetime($item['create_time'],'Y-m-d H:i:s') : '';
+            }
+            unset($item);
+        }
+
+        return [
+            'code' => 0,
+            'success'=> true,
+            'msg' => '操作成功',
+            'count' => isset($dataList['total']) ? $dataList['total'] : 0,
+            'data' => isset($dataList['data']) ? $dataList['data'] : 0,
+        ];
+    }
+
+
+    /**
+     * 添加或编辑
+     * @return array
+     * @since 2020/11/11
+     * @author wesmiler
+     */
+    public function edit()
+    {
+        $data = request()->all();
+        $data['update_time'] = time();
+        return parent::edit($data); // TODO: Change the autogenerated stub
+    }
+
+}

+ 74 - 0
app/Services/ArticleCatesService.php

@@ -0,0 +1,74 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Services;
+
+use App\Models\ArticleCatesModel;
+
+/**
+ * 文章分类管理-服务类
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class ArticleCatesService
+ * @package App\Services
+ */
+class ArticleCatesService extends BaseService
+{
+    /**
+     * 构造函数
+     * @author wesmiler
+     * @since 2020/11/11
+     * ArticleCatesService constructor.
+     */
+    public function __construct()
+    {
+        $this->model = new ArticleCatesModel();
+    }
+
+    /**
+     * 获取列表
+     * @return array
+     * @since 2020/11/11
+     * @author wesmiler
+     */
+    public function getList()
+    {
+        $params = request()->all();
+
+        return parent::getList();
+    }
+
+    /**
+     * 获取分类选项列表
+     * @param int $num
+     * @return array
+     */
+    public function getOptions(){
+        $params = request()->all();
+        $num = isset($params['num'])? $params['num'] : 0;
+        $datas = $this->model->where(['status'=> 1])->select(['id','pid','name','status'])->orderBy('sort','desc')->limit($num? $num : 999999)->get();
+        return message(MESSAGE_OK, true, $datas);
+    }
+
+    /**
+     * 添加或编辑
+     * @return array
+     * @since 2020/11/11
+     * @author wesmiler
+     */
+    public function edit()
+    {
+        $data = request()->all();
+        $data['update_time'] = time();
+        return parent::edit($data); // TODO: Change the autogenerated stub
+    }
+
+}

+ 128 - 0
app/Services/ArticleService.php

@@ -0,0 +1,128 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Services;
+
+use App\Models\ArticleModel;
+
+/**
+ * 文章管理-服务类
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class ArticleService
+ * @package App\Services
+ */
+class ArticleService extends BaseService
+{
+    /**
+     * 构造函数
+     * @author wesmiler
+     * @since 2020/11/11
+     * ArticleService constructor.
+     */
+    public function __construct()
+    {
+        $this->model = new ArticleModel();
+    }
+
+    /**
+     * 获取列表
+     * @return array
+     * @since 2020/11/11
+     * @author wesmiler
+     */
+    public function getList()
+    {
+        $params = request()->all();
+        $page = isset($params['pageSize']) ? intval($params['pageSize']) : PAGE;
+        $pageSize = isset($params['pageSize']) ? intval($params['pageSize']) : PERPAGE;
+
+        $dataList = $this->model::from('article as a')
+            ->leftJoin('article_cates as c', 'a.cate_id', '=', 'c.id')
+            ->where(function ($query) use ($params) {
+                $query->where('a.mark', 1);
+
+                $title = isset($params['title']) ? trim($params['title']) : '';
+                if (!empty($title)) {
+                    $query->where('a.title', 'like', "%{$title}%");
+                }
+
+                $cateId = isset($params['cate_id']) ? intval($params['cate_id']) : 0;
+                if ($cateId > 0) {
+                    $query->where('a.cate_id', $cateId);
+                } else if ($cateId == -1) {
+                    $query->where('a.is_recommand', 1);
+                }
+
+                $isTop = isset($params['is_top']) ? intval($params['is_top']) : 0;
+                if ($isTop > 0) {
+                    $query->where('a.is_top', $isTop);
+                }
+
+
+                $status = isset($params['status']) ? $params['status'] : 0;
+                if ($status > 0) {
+                    $query->where('a.status', $status);
+                } else {
+                    $query->whereIn('a.status', [1, 2]);
+                }
+
+            })
+            ->select(['a.id', 'a.cate_id', 'c.name as cate_name', 'a.title', 'a.is_form', 'a.is_recommand', 'a.view_num', 'a.thumb', 'a.status', 'a.create_time', 'a.update_time', 'a.description', 'a.sort', 'a.content','a.publish_at'])
+            ->orderBy('a.update_time', 'desc')
+            ->paginate($pageSize);
+
+        $dataList = $dataList ? $dataList->toArray() : [];
+        if ($dataList) {
+            foreach ($dataList['data'] as &$item) {
+                $item['thumb'] = $item['thumb'] ? get_image_url($item['thumb']) : '';
+                $item['create_time'] = $item['create_time'] ? datetime($item['create_time'],'Y-m-d H:i:s') : '';
+            }
+            unset($item);
+        }
+
+        return [
+            'code' => 0,
+            'success'=> true,
+            'msg' => '操作成功',
+            'count' => isset($dataList['total']) ? $dataList['total'] : 0,
+            'data' => isset($dataList['data']) ? $dataList['data'] : 0,
+        ];
+    }
+
+    /**
+     * 添加或编辑
+     * @return array
+     * @since 2020/11/11
+     * @author wesmiler
+     */
+    public function edit()
+    {
+        $data = request()->all();
+
+        // 图片处理
+        $image = trim($data['thumb']);
+        $id = isset($data['id']) ? $data['id'] : 0;
+        if (!$id && !$image) {
+            return message('请上传文章图片', false);
+        }
+        if (strpos($image, "temp")) {
+            $data['thumb'] = save_image($image, 'item');
+        } else {
+            $data['thumb'] = str_replace(IMG_URL, "", $data['thumb']);
+        }
+
+        $data['update_time'] = time();
+        $data['publish_at'] = isset($data['publish_at']) && $data['publish_at']? $data['publish_at'] : date('Y-m-d H:i:s');
+        return parent::edit($data); // TODO: Change the autogenerated stub
+    }
+
+}

+ 9 - 6
app/Services/BaseService.php

@@ -92,11 +92,6 @@ class BaseService
                 $map[] = ['type', '=', $param['type']];
             }
 
-            // 筛选状态
-            if (isset($param['status']) && $param['status']) {
-                $map[] = ['status', '=', $param['status']];
-            }
-
             // 手机号码
             if (isset($param['mobile']) && $param['mobile']) {
                 $map[] = ['mobile', '=', $param['mobile']];
@@ -113,7 +108,14 @@ class BaseService
         }
 
         // 排序(支持多重排序)
-        $query = $this->model->where($map)->when($sort, function ($query, $sort) {
+        $query = $this->model->where($map)->where(function ($query) use ($param) {
+            // 筛选状态
+            if (isset($param['status']) && $param['status']) {
+                $query->where('status', intval($param['status']));
+            } else {
+                $query->whereIn('status', [1, 2]);
+            }
+        })->when($sort, function ($query, $sort) {
             foreach ($sort as $v) {
                 $query->orderBy($v[0], $v[1]);
             }
@@ -200,6 +202,7 @@ class BaseService
         if (empty($ids)) {
             return message("记录ID不能为空", false);
         }
+
         if (is_array($ids)) {
             // 批量删除
             $result = $this->model->deleteAll($ids);

+ 0 - 128
app/Services/Demo3Service.php

@@ -1,128 +0,0 @@
-<?php 
-// +----------------------------------------------------------------------
-// | Laravel框架 [ Laravel ]
-// +----------------------------------------------------------------------
-// | 版权所有 2017~2020 南京Laravel研发中心
-// +----------------------------------------------------------------------
-// | 官方网站: http://www.laravel.cn
-// +----------------------------------------------------------------------
-// | Author: wesmiler <12345678@qq.com>
-// +----------------------------------------------------------------------
-
-namespace App\Services;
-
-
-use App\Models\Demo3Model;
-
-/**
- * 演示管理-服务类
- * @author wesmiler
- * @since: 2021/04/10
- * Class Demo3Service
-* @package App\Services
- */
-class Demo3Service extends BaseService
-{
-    /**
-     * 构造函数
-     * @author wesmiler
-     * @since 2021/04/10
-     * LevelService constructor.
-     */
-    public function __construct()
-    {
-        $this->model = new Demo3Model();
-    }
-
-	/**
-     * 获取数据列表
-     * @return array
-     * @since 2021/04/10
-     * @author wesmiler
-     */
-    public function getList()
-    {
-        $param = request()->all();
-
-        // 查询条件
-        $map = [];
-	
-	    // 职级名称
-        $name = isset($param['name']) ? trim($param['name']) : '';
-        if ($name) {
-            $map[] = ['name', 'like', "%{$name}%"];
-        }
-		
-	    // 状态
-        $status = isset($param['status']) ? (int)$param['status'] : 0;
-        if ($status) {
-            $map[] = ['status', '=', $status];
-        }
-		
-	    // 类型
-        $type = isset($param['type']) ? (int)$param['type'] : 0;
-        if ($type) {
-            $map[] = ['type', '=', $type];
-        }
-		
-	    // 是否VIP
-        $is_vip = isset($param['is_vip']) ? (int)$param['is_vip'] : 0;
-        if ($is_vip) {
-            $map[] = ['is_vip', '=', $is_vip];
-        }
-	
-        return parent::getList($map); // TODO: Change the autogenerated stub
-    }
-
-	/**
-     * 添加或编辑
-     * @return array
-     * @since 2021/04/10
-     * @author wesmiler
-     */
-    public function edit()
-    {
-        // 参数
-        $data = request()->all();
-	                                
-		// 头像处理
-        $avatar = trim($data['avatar']);
-        if (strpos($avatar, "temp")) {
-            $data['avatar'] = save_image($avatar, 'demo3');
-        } else {
-            $data['avatar'] = str_replace(IMG_URL, "", $data['avatar']);
-        }
-                                                                                                                        
-        return parent::edit($data); // TODO: Change the autogenerated stub
-    }
-
-                    	            
-	/**
-     * 设置是否VIP
-	 * @return array
-     * @since 2021/04/10
-	 * @author wesmiler
-	 */
-    public function setIsVip()
-    {
-		// 参数
-        $data = request()->all();
-        if (!$data['id']) {
-            return message('记录ID不能为空', false);
-        }
-		if (!$data['is_vip']) {
-            return message('记录是否VIP不能为空', false);
-        }
-        $error = '';
-        $item = [
-            'id' => $data['id'],
-            'is_vip' => $data['is_vip']
-        ];
-        $rowId = $this->model->edit($item, $error);
-        if (!$rowId) {
-            return message($error, false);
-        }
-        return message();
-    }
-    	                        
-}

+ 108 - 0
app/Services/DonateService.php

@@ -0,0 +1,108 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Services;
+
+use App\Models\DonateModel;
+
+/**
+ * 捐赠物品管理-服务类
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class DeviceService
+ * @package App\Services
+ */
+class DonateService extends BaseService
+{
+    /**
+     * 构造函数
+     * @author wesmiler
+     * @since 2020/11/11
+     * DeviceService constructor.
+     */
+    public function __construct()
+    {
+        $this->model = new DonateModel();
+    }
+
+    /**
+     * 获取列表
+     * @return array
+     * @since 2020/11/11
+     * @author wesmiler
+     */
+    public function getList()
+    {
+        $params = request()->all();
+        $page = isset($params['pageSize']) ? intval($params['pageSize']) : PAGE;
+        $pageSize = isset($params['pageSize']) ? intval($params['pageSize']) : PERPAGE;
+
+        $dataList = $this->model::from('donates as a')
+            ->leftJoin('member as m', 'm.id', '=', 'a.user_id')
+            ->where(function ($query) use ($params) {
+                $query->where('a.mark', 1);
+
+                $userId = isset($params['user_id']) ? $params['user_id'] : 0;
+                if ($userId > 0) {
+                    $query->where('a.user_id', $userId);
+                }
+
+                $status = isset($params['status']) ? $params['status'] : 0;
+                if ($status > 0) {
+                    $query->where('a.status', $status);
+                } else {
+                    $query->whereIn('a.status', [1, 2]);
+                }
+
+            })
+            ->where(function ($query) use ($params) {
+                $keyword = isset($params['keyword']) ? trim($params['keyword']) : '';
+                if (!empty($keyword)) {
+                    $query->where('a.title','like',"%{$keyword}%")
+                        ->orWhere('m.nickname','like',"%{$keyword}%");
+                }
+            })
+            ->select(['a.id', 'a.user_id', 'm.nickname','a.stock','a.thumb', 'a.title', 'a.status', 'a.create_time', 'a.update_time','a.description'])
+            ->orderBy('a.create_time', 'desc')
+            ->paginate($pageSize);
+
+        $dataList = $dataList ? $dataList->toArray() : [];
+        if ($dataList) {
+            foreach ($dataList['data'] as &$item) {
+                $item['thumb'] = $item['thumb'] ? get_image_url($item['thumb']) : '';
+                $item['create_time'] = $item['create_time'] ? datetime($item['create_time'],'Y-m-d H:i:s') : '';
+            }
+            unset($item);
+        }
+
+        return [
+            'code' => 0,
+            'success'=> true,
+            'msg' => '操作成功',
+            'count' => isset($dataList['total']) ? $dataList['total'] : 0,
+            'data' => isset($dataList['data']) ? $dataList['data'] : 0,
+        ];
+    }
+
+    /**
+     * 添加或编辑
+     * @return array
+     * @since 2020/11/11
+     * @author wesmiler
+     */
+    public function edit()
+    {
+        $data = request()->all();
+        $data['update_time'] = time();
+        return parent::edit($data); // TODO: Change the autogenerated stub
+    }
+
+}

+ 3 - 3
app/Services/GoodsCatesService.php

@@ -11,7 +11,7 @@
 
 namespace App\Services;
 
-use App\Models\GoodsCatesModel;
+use App\Models\ArticleCatesModel;
 
 /**
  * 商品分类管理-服务类
@@ -30,11 +30,11 @@ class GoodsCatesService extends BaseService
      */
     public function __construct()
     {
-        $this->model = new GoodsCatesModel();
+        $this->model = new ArticleCatesModel();
     }
 
     /**
-     * 获取友链列表
+     * 获取列表
      * @return array
      * @since 2020/11/11
      * @author wesmiler

+ 3 - 1
app/Services/GoodsService.php

@@ -34,7 +34,7 @@ class GoodsService extends BaseService
     }
 
     /**
-     * 获取友链列表
+     * 获取列表
      * @return array
      * @since 2020/11/11
      * @author wesmiler
@@ -48,6 +48,7 @@ class GoodsService extends BaseService
         $dataList = $this->model::from('goods as g')
             ->leftJoin('goods_cates as c', 'g.cate_id', '=', 'c.id')
             ->where(function ($query) use ($params) {
+                $query->where('g.mark', 1);
                 $title = isset($params['title']) ? trim($params['title']) : '';
                 if (!empty($title)) {
                     $query->where('g.title', 'like', "%{$title}%");
@@ -78,6 +79,7 @@ class GoodsService extends BaseService
             foreach ($dataList['data'] as &$item) {
                 $item['thumb'] = $item['thumb'] ? get_image_url($item['thumb']) : '';
                 $item['albums'] = isset($item['albums']) && $item['albums'] ? json_decode($item['albums'], true) : [];
+                $item['create_time'] = $item['create_time'] ? datetime($item['create_time'],'Y-m-d H:i:s') : '';
                 if($item['albums']){
                     foreach ($item['albums'] as &$v){
                         $v['url'] = isset($v['url']) && $v['url']? get_image_url($v['url']) : '';

+ 113 - 0
app/Services/MecryService.php

@@ -0,0 +1,113 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Services;
+
+use App\Models\MecryModel;
+
+/**
+ * 行善记录管理-服务类
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class MecryService
+ * @package App\Services
+ */
+class MecryService extends BaseService
+{
+    /**
+     * 构造函数
+     * @author wesmiler
+     * @since 2020/11/11
+     * MecryService constructor.
+     */
+    public function __construct()
+    {
+        $this->model = new MecryModel();
+    }
+
+    /**
+     * 获取列表
+     * @return array
+     * @since 2020/11/11
+     * @author wesmiler
+     */
+    public function getList()
+    {
+        $params = request()->all();
+        $page = isset($params['pageSize']) ? intval($params['pageSize']) : PAGE;
+        $pageSize = isset($params['pageSize']) ? intval($params['pageSize']) : PERPAGE;
+
+        $dataList = $this->model::from('mecrys as a')
+            ->leftJoin('member as m', 'm.id', '=', 'a.user_id')
+            ->where(function ($query) use ($params) {
+                $query->where('a.mark', 1);
+
+                $userId = isset($params['user_id']) ? $params['user_id'] : 0;
+                if ($userId > 0) {
+                    $query->where('a.user_id', $userId);
+                }
+
+                $type = isset($params['type']) ? $params['type'] : 0;
+                if ($type > 0) {
+                    $query->where('a.type', $type);
+                }
+
+                $status = isset($params['status']) ? $params['status'] : 0;
+                if ($status > 0) {
+                    $query->where('a.status', $status);
+                } else {
+                    $query->whereIn('a.status', [1, 2]);
+                }
+
+            })
+            ->where(function ($query) use ($params) {
+                $keyword = isset($params['keyword']) ? trim($params['keyword']) : '';
+                if (!empty($keyword)) {
+                    $query->where('a.title','like',"%{$keyword}%")
+                        ->orWhere('m.nickname','like',"%{$keyword}%");
+                }
+            })
+            ->select(['a.id', 'a.user_id', 'm.nickname','a.coupon','a.thumb', 'a.type', 'a.status', 'a.create_time', 'a.update_time','a.description'])
+            ->orderBy('a.create_time', 'desc')
+            ->paginate($pageSize);
+
+        $dataList = $dataList ? $dataList->toArray() : [];
+        if ($dataList) {
+            foreach ($dataList['data'] as &$item) {
+                $item['thumb'] = $item['thumb'] ? get_image_url($item['thumb']) : '';
+                $item['create_time'] = $item['create_time'] ? datetime($item['create_time'],'Y-m-d H:i:s') : '';
+            }
+            unset($item);
+        }
+
+        return [
+            'code' => 0,
+            'success'=> true,
+            'msg' => '操作成功',
+            'count' => isset($dataList['total']) ? $dataList['total'] : 0,
+            'data' => isset($dataList['data']) ? $dataList['data'] : 0,
+        ];
+    }
+
+    /**
+     * 添加或编辑
+     * @return array
+     * @since 2020/11/11
+     * @author wesmiler
+     */
+    public function edit()
+    {
+        $data = request()->all();
+        $data['update_time'] = time();
+        return parent::edit($data); // TODO: Change the autogenerated stub
+    }
+
+}

+ 130 - 0
app/Services/MusicService.php

@@ -0,0 +1,130 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Services;
+
+use App\Models\MusicModel;
+
+/**
+ * 佛音管理-服务类
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class MusicService
+ * @package App\Services
+ */
+class MusicService extends BaseService
+{
+    /**
+     * 构造函数
+     * @author wesmiler
+     * @since 2020/11/11
+     * MusicService constructor.
+     */
+    public function __construct()
+    {
+        $this->model = new MusicModel();
+    }
+
+    /**
+     * 获取列表
+     * @return array
+     * @since 2020/11/11
+     * @author wesmiler
+     */
+    public function getList()
+    {
+        $params = request()->all();
+        $page = isset($params['pageSize']) ? intval($params['pageSize']) : PAGE;
+        $pageSize = isset($params['pageSize']) ? intval($params['pageSize']) : PERPAGE;
+
+        $dataList = $this->model::from('musics as m')
+            ->leftJoin('music_sheets as ms', 'm.sheet_id', '=', 'ms.id')
+            ->where(function ($query) use ($params) {
+                $query->where('m.mark', 1);
+
+                $title = isset($params['title']) ? trim($params['title']) : '';
+                if (!empty($title)) {
+                    $query->where('m.title', 'like', "%{$title}%");
+                }
+
+                $sheetId = isset($params['sheet_id']) ? intval($params['sheet_id']) : 0;
+                if ($sheetId > 0) {
+                    $query->where('m.sheet_id', $sheetId);
+                }
+
+                $isRecommand = isset($params['is_recommand']) ? intval($params['is_recommand']) : 0;
+                if ($isRecommand > 0) {
+                    $query->where('m.is_recommand', $isRecommand);
+                }
+
+                $status = isset($params['status']) ? $params['status'] : 0;
+                if ($status > 0) {
+                    $query->where('m.status', $status);
+                } else {
+                    $query->whereIn('m.status', [1, 2]);
+                }
+
+            })
+            ->select(['m.id', 'm.sheet_id', 'ms.name as sheet_name', 'm.title', 'm.author', 'm.is_recommand', 'm.play_num', 'm.thumb', 'm.file_url', 'm.status', 'm.create_time', 'm.update_time', 'm.description', 'm.sort'])
+            ->orderBy('m.update_time', 'desc')
+            ->paginate($pageSize);
+
+        $dataList = $dataList ? $dataList->toArray() : [];
+        if ($dataList) {
+            foreach ($dataList['data'] as &$item) {
+                $item['thumb'] = $item['thumb'] ? get_image_url($item['thumb']) : '';
+                $item['file_url'] = $item['file_url'] ? get_file_url($item['file_url']) : '';
+                $item['create_time'] = $item['create_time'] ? datetime($item['create_time'],'Y-m-d H:i:s') : '';
+            }
+            unset($item);
+        }
+
+        return [
+            'code' => 0,
+            'success'=> true,
+            'msg' => '操作成功',
+            'count' => isset($dataList['total']) ? $dataList['total'] : 0,
+            'data' => isset($dataList['data']) ? $dataList['data'] : 0,
+        ];
+    }
+
+    /**
+     * 添加或编辑
+     * @return array
+     * @since 2020/11/11
+     * @author wesmiler
+     */
+    public function edit()
+    {
+        $data = request()->all();
+
+        // 图片处理
+        $image = trim($data['thumb']);
+        $id = isset($data['id']) ? $data['id'] : 0;
+        if (!$id && !$image) {
+            return message('请上传文章图片', false);
+        }
+        if (strpos($image, "temp")) {
+            $data['thumb'] = save_image($image, 'item');
+        } else {
+            $data['thumb'] = str_replace(IMG_URL, "", $data['thumb']);
+        }
+
+        if(isset($data['file_url'])){
+            $data['file_url'] = str_replace(IMG_URL, "", $data['file_url']);
+        }
+
+        $data['update_time'] = time();
+        $data['publish_at'] = isset($data['publish_at']) && $data['publish_at']? $data['publish_at'] : date('Y-m-d H:i:s');
+        return parent::edit($data); // TODO: Change the autogenerated stub
+    }
+
+}

+ 74 - 0
app/Services/MusicSheetsService.php

@@ -0,0 +1,74 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Services;
+
+use App\Models\MusicSheetsModel;
+
+/**
+ * 佛音歌单管理-服务类
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class MusicSheetsService
+ * @package App\Services
+ */
+class MusicSheetsService extends BaseService
+{
+    /**
+     * 构造函数
+     * @author wesmiler
+     * @since 2020/11/11
+     * MusicSheetsService constructor.
+     */
+    public function __construct()
+    {
+        $this->model = new MusicSheetsModel();
+    }
+
+    /**
+     * 获取列表
+     * @return array
+     * @since 2020/11/11
+     * @author wesmiler
+     */
+    public function getList()
+    {
+        $params = request()->all();
+
+        return parent::getList();
+    }
+
+    /**
+     * 获取分类选项列表
+     * @param int $num
+     * @return array
+     */
+    public function getOptions(){
+        $params = request()->all();
+        $num = isset($params['num'])? $params['num'] : 0;
+        $datas = $this->model->where(['status'=> 1])->select(['id','name','status'])->orderBy('sort','desc')->limit($num? $num : 999999)->get();
+        return message(MESSAGE_OK, true, $datas);
+    }
+
+    /**
+     * 添加或编辑
+     * @return array
+     * @since 2020/11/11
+     * @author wesmiler
+     */
+    public function edit()
+    {
+        $data = request()->all();
+        $data['update_time'] = time();
+        return parent::edit($data); // TODO: Change the autogenerated stub
+    }
+
+}

+ 2 - 2
app/Services/OrdersService.php

@@ -34,7 +34,7 @@ class OrdersService extends BaseService
     }
 
     /**
-     * 获取友链列表
+     * 获取列表
      * @return array
      * @since 2020/11/11
      * @author wesmiler
@@ -62,7 +62,7 @@ class OrdersService extends BaseService
                 $keyword = isset($params['keyword']) ? trim($params['keyword']) : '';
                 if (!empty($keyword)) {
                     $query->where('o.order_sn', 'like', "%{$keyword}%")
-                        ->whereOr('m.nickname', 'like', "%{$keyword}%");
+                        ->orWhere('m.nickname', 'like', "%{$keyword}%");
                 }
             })
             ->select(['o.*','g.title as goods_name','g.thumb','m.nickname','m.mobile','es.name as express_company'])

+ 13 - 1
app/Services/PositionService.php

@@ -34,7 +34,7 @@ class PositionService extends BaseService
     }
 
     /**
-     * 获取岗位列表
+     * 获取列表
      * @return array
      * @since 2020/11/11
      * @author wesmiler
@@ -50,4 +50,16 @@ class PositionService extends BaseService
         return message("操作成功", true, $list);
     }
 
+    /**
+     * 添加或编辑
+     * @return array
+     * @since 2020/11/11
+     * @author wesmiler
+     */
+    public function edit()
+    {
+        $data = request()->all();
+        $data['update_time'] = time();
+        return parent::edit($data); // TODO: Change the autogenerated stub
+    }
 }

+ 127 - 0
app/Services/RechargeService.php

@@ -0,0 +1,127 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Services;
+
+use App\Models\RechargeModel;
+
+/**
+ * 充值记录管理-服务类
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class RechargeService
+ * @package App\Services
+ */
+class RechargeService extends BaseService
+{
+    /**
+     * 构造函数
+     * @author wesmiler
+     * @since 2020/11/11
+     * RechargeService constructor.
+     */
+    public function __construct()
+    {
+        $this->model = new RechargeModel();
+    }
+
+    /**
+     * 获取列表
+     * @return array
+     * @since 2020/11/11
+     * @author wesmiler
+     */
+    public function getList()
+    {
+        $params = request()->all();
+        $page = isset($params['pageSize']) ? intval($params['pageSize']) : PAGE;
+        $pageSize = isset($params['pageSize']) ? intval($params['pageSize']) : PERPAGE;
+
+        $dataList = $this->model::from('recharge_logs as a')
+            ->leftJoin('member as m', 'm.id', '=', 'a.user_id')
+            ->where(function ($query) use ($params) {
+                $query->where('a.mark', 1);
+
+                $type = isset($params['type']) ? $params['type'] : 0;
+                if ($type > 0) {
+                    $query->where('a.type', $type);
+                }
+
+                $payType = isset($params['pay_type']) ? $params['pay_type'] : 0;
+                if ($payType > 0) {
+                    $query->where('a.pay_type', $payType);
+                }
+
+                $userId = isset($params['user_id']) ? $params['user_id'] : 0;
+                if ($userId > 0) {
+                    $query->where('a.user_id', $userId);
+                }
+
+                $datetime = isset($params['datetime'])? $params['datetime'] : [];
+                $dateStart = $datetime && isset($datetime[0])? $datetime[0] : '';
+                $dateEnd = isset($datetime[1])? $datetime[1] : '';
+                if($dateStart && $dateEnd && $dateEnd> $dateStart){
+                    $query->where('a.create_time', '>', strtotime($dateStart))->where('a.create_time','<=', strtotime($dateEnd)+86399);
+                }else if($dateStart && $dateStart == $dateEnd){
+                    $query->where('a.create_time', '>=', strtotime($dateStart))->where('a.create_time','<=', strtotime($dateStart)+86399);
+                }else if ($dateStart){
+                    $query->where('a.create_time', '<=', strtotime($dateStart)+86399);
+                }
+
+                $status = isset($params['status']) ? $params['status'] : 0;
+                if ($status > 0) {
+                    $query->where('a.status', $status);
+                } else {
+                    $query->whereIn('a.status', [1, 2]);
+                }
+
+            })
+            ->where(function ($query) use ($params) {
+                $keyword = isset($params['keyword']) ? trim($params['keyword']) : '';
+                if (!empty($keyword)) {
+                    $query->where('m.nickname','like',"%{$keyword}%");
+                }
+            })
+            ->select(['a.id', 'a.user_id','a.order_sn','a.trade_no','a.pay_at', 'm.nickname','a.type','a.pay_type','a.money', 'a.balance', 'a.status', 'a.create_time', 'a.update_time','a.remark'])
+            ->orderBy('a.create_time', 'desc')
+            ->paginate($pageSize);
+
+        $dataList = $dataList ? $dataList->toArray() : [];
+        if ($dataList) {
+            foreach ($dataList['data'] as &$item) {
+                $item['create_time'] = $item['create_time'] ? datetime($item['create_time'],'Y-m-d H:i:s') : '';
+            }
+            unset($item);
+        }
+
+        return [
+            'code' => 0,
+            'success'=> true,
+            'msg' => '操作成功',
+            'count' => isset($dataList['total']) ? $dataList['total'] : 0,
+            'data' => isset($dataList['data']) ? $dataList['data'] : 0,
+        ];
+    }
+
+    /**
+     * 添加或编辑
+     * @return array
+     * @since 2020/11/11
+     * @author wesmiler
+     */
+    public function edit()
+    {
+        $data = request()->all();
+        $data['update_time'] = time();
+        return parent::edit($data); // TODO: Change the autogenerated stub
+    }
+
+}

+ 74 - 0
app/Services/SignCatesService.php

@@ -0,0 +1,74 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Services;
+
+use App\Models\StoresCatesModel;
+
+/**
+ * 打卡分类管理-服务类
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class SignCatesService
+ * @package App\Services
+ */
+class SignCatesService extends BaseService
+{
+    /**
+     * 构造函数
+     * @author wesmiler
+     * @since 2020/11/11
+     * SignCatesService constructor.
+     */
+    public function __construct()
+    {
+        $this->model = new StoresCatesModel();
+    }
+
+    /**
+     * 获取列表
+     * @return array
+     * @since 2020/11/11
+     * @author wesmiler
+     */
+    public function getList()
+    {
+        $params = request()->all();
+
+        return parent::getList();
+    }
+
+    /**
+     * 获取分类选项列表
+     * @param int $num
+     * @return array
+     */
+    public function getOptions(){
+        $params = request()->all();
+        $num = isset($params['num'])? $params['num'] : 0;
+        $datas = $this->model->where(['status'=> 1])->select(['id','pid','name','status'])->orderBy('sort','desc')->limit($num? $num : 999999)->get();
+        return message(MESSAGE_OK, true, $datas);
+    }
+
+    /**
+     * 添加或编辑
+     * @return array
+     * @since 2020/11/11
+     * @author wesmiler
+     */
+    public function edit()
+    {
+        $data = request()->all();
+        $data['update_time'] = time();
+        return parent::edit($data); // TODO: Change the autogenerated stub
+    }
+
+}

+ 108 - 0
app/Services/SignsService.php

@@ -0,0 +1,108 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Services;
+
+use App\Models\SignsModel;
+
+/**
+ * 打卡签到管理-服务类
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class SignsService
+ * @package App\Services
+ */
+class SignsService extends BaseService
+{
+    /**
+     * 构造函数
+     * @author wesmiler
+     * @since 2020/11/11
+     * SignsService constructor.
+     */
+    public function __construct()
+    {
+        $this->model = new SignsModel();
+    }
+
+    /**
+     * 获取列表
+     * @return array
+     * @since 2020/11/11
+     * @author wesmiler
+     */
+    public function getList()
+    {
+        $params = request()->all();
+        $page = isset($params['pageSize']) ? intval($params['pageSize']) : PAGE;
+        $pageSize = isset($params['pageSize']) ? intval($params['pageSize']) : PERPAGE;
+
+        $dataList = $this->model::from('signs as s')
+            ->leftJoin('sign_cates as sc', 'sc.id', '=', 's.cate_id')
+            ->leftJoin('member as m', 'm.id', '=', 's.user_id')
+            ->where(function ($query) use ($params) {
+                $query->where('s.mark', 1);
+                $type = isset($params['type'])? $params['type'] : 0;
+                if($type>0){
+                    $query->where('s.type', $type);
+                }
+
+                $status = isset($params['status']) ? $params['status'] : 0;
+                if ($status > 0) {
+                    $query->where('s.status', $status);
+                } else {
+                    $query->whereIn('s.status', [1, 2]);
+                }
+
+            })
+            ->where(function ($query) use ($params) {
+                $keyword = isset($params['keyword']) ? trim($params['keyword']) : '';
+                if (!empty($keyword)) {
+                    $query->where('m.nickname','like',"%{$keyword}%");
+                }
+            })
+            ->select(['s.id', 's.user_id','s.cate_id', 'sc.name as cate_name', 'm.nickname', 's.sign_at', 's.type', 's.status', 's.create_time', 's.update_time', 's.description'])
+            ->orderBy('s.sign_at', 'desc')
+            ->orderBy('s.cate_id')
+            ->paginate($pageSize);
+
+        $dataList = $dataList ? $dataList->toArray() : [];
+        if ($dataList) {
+            foreach ($dataList['data'] as &$item) {
+                $item['create_time'] = $item['create_time'] ? datetime($item['create_time'],'Y-m-d H:i:s') : '';
+            }
+            unset($item);
+        }
+
+        return [
+            'code' => 0,
+            'success'=> true,
+            'msg' => '操作成功',
+            'count' => isset($dataList['total']) ? $dataList['total'] : 0,
+            'data' => isset($dataList['data']) ? $dataList['data'] : 0,
+        ];
+    }
+
+
+    /**
+     * 添加或编辑
+     * @return array
+     * @since 2020/11/11
+     * @author wesmiler
+     */
+    public function edit()
+    {
+        $data = request()->all();
+        $data['update_time'] = time();
+        return parent::edit($data); // TODO: Change the autogenerated stub
+    }
+
+}

+ 157 - 0
app/Services/StoreRecordsService.php

@@ -0,0 +1,157 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Services;
+
+use App\Models\StoresModel;
+use App\Models\StoresRecordsModel;
+
+/**
+ * 商品出入库管理-服务类
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class StoreRecordsService
+ * @package App\Services
+ */
+class StoreRecordsService extends BaseService
+{
+
+    protected $storeModel = null;
+    /**
+     * 构造函数
+     * @author wesmiler
+     * @since 2020/11/11
+     * StoreRecordsService constructor.
+     */
+    public function __construct()
+    {
+        $this->model = new StoresRecordsModel();
+        $this->storeModel = new StoresModel();
+
+    }
+
+    /**
+     * 获取列表
+     * @return array
+     * @since 2020/11/11
+     * @author wesmiler
+     */
+    public function getList()
+    {
+        $params = request()->all();
+        $page = isset($params['pageSize']) ? intval($params['pageSize']) : PAGE;
+        $pageSize = isset($params['pageSize']) ? intval($params['pageSize']) : PERPAGE;
+
+        $dataList = $this->model::from('store_records as sr')
+            ->leftJoin('stores as s', 's.id', '=', 'sr.store_id')
+            ->where(function ($query) use ($params) {
+                $query->where('sr.mark', 1);
+                $type = isset($params['type']) ? intval($params['type']) : 0;
+                if ($type > 0) {
+                    $query->where('sr.cate_id', $type);
+                }
+
+
+                $status = isset($params['status']) ? $params['status'] : 0;
+                if ($status > 0) {
+                    $query->where('sr.status', $status);
+                } else {
+                    $query->whereIn('sr.status', [1, 2]);
+                }
+
+            })
+            ->where(function ($query) use ($params) {
+                $keyword = isset($params['keyword']) ? trim($params['keyword']) : '';
+                if (!empty($keyword)) {
+                    $query->where('s.title', 'like', "%{$keyword}%")
+                        ->orWhere('s.source','like',"%{$keyword}%");
+                }
+            })
+            ->select(['sr.id', 'sr.store_id', 's.title as goods_name','sr.stock', 'sr.type', 'sr.description', 'sr.create_time', 'sr.update_time'])
+            ->orderBy('sr.update_time', 'desc')
+            ->paginate($pageSize);
+
+        $dataList = $dataList ? $dataList->toArray() : [];
+        if ($dataList) {
+            foreach ($dataList['data'] as &$item) {
+                $item['create_time'] = $item['create_time'] ? datetime($item['create_time'],'Y-m-d H:i:s') : '';
+            }
+            unset($item);
+        }
+
+        return [
+            'code' => 0,
+            'success'=> true,
+            'msg' => '操作成功',
+            'count' => isset($dataList['total']) ? $dataList['total'] : 0,
+            'data' => isset($dataList['data']) ? $dataList['data'] : 0,
+        ];
+    }
+
+    /**
+     * 添加或编辑
+     * @return array
+     * @since 2020/11/11
+     * @author wesmiler
+     */
+    public function edit()
+    {
+        $data = request()->all();
+
+        $data['update_time'] = time();
+        $storeId = isset($data['store_id'])? $data['store_id'] : 0;
+        $type = isset($data['type'])? $data['type'] : 0;
+        $stock = isset($data['stock'])? $data['stock'] : 0;
+        if(!in_array($type, [1,2])){
+            return message('出入库类型错误', false);
+        }
+
+        if(empty($storeId)){
+            return message('操作商品参数错误', false);
+        }
+
+        if($stock<=0){
+            return message('出入库数量错误', false);
+        }
+
+        $storeInfo = $this->storeModel->where(['id'=> $storeId,'status'=> 1])->first();
+        if(!$storeInfo){
+            return message('操作商品不存在或状态不可操作', false);
+        }
+
+        // 出库
+        if($storeInfo->stock < $stock && $type == 2){
+            return message('出库数量超出商品库存', false);
+        }
+
+        if($type==1){
+            $res = $this->storeModel::where(['id'=> $storeId])->increment('stock', $stock);
+        }else{
+            $res = $this->storeModel::where(['id'=> $storeId])->decrement('stock', $stock);
+        }
+
+        $data = [
+            'store_id'=> $storeId,
+            'type'=> $type,
+            'stock'=> $stock,
+            'description'=> isset($data['description'])? $data['description'] : '',
+            'create_time'=> time(),
+            'update_time'=> time(),
+            'status'=> 1,
+        ];
+        if($res && $this->model->insert($data)){
+            return message();
+        }else{
+            return message(MESSAGE_FAILED, false);
+        }
+    }
+
+}

+ 120 - 0
app/Services/StoresService.php

@@ -0,0 +1,120 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Services;
+use App\Models\StoresModel;
+
+/**
+ * 商品管理-服务类
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class StoresService
+ * @package App\Services
+ */
+class StoresService extends BaseService
+{
+    /**
+     * 构造函数
+     * @author wesmiler
+     * @since 2020/11/11
+     * StoresService constructor.
+     */
+    public function __construct()
+    {
+        $this->model = new StoresModel();
+    }
+
+    /**
+     * 获取列表
+     * @return array
+     * @since 2020/11/11
+     * @author wesmiler
+     */
+    public function getList()
+    {
+        $params = request()->all();
+        $page = isset($params['pageSize']) ? intval($params['pageSize']) : PAGE;
+        $pageSize = isset($params['pageSize']) ? intval($params['pageSize']) : PERPAGE;
+
+        $dataList = $this->model::from('stores as s')
+            ->leftJoin('store_cates as sc', 's.cate_id', '=', 'sc.id')
+            ->where(function ($query) use ($params) {
+                $query->where('s.mark', 1);
+                $cateId = isset($params['cate_id']) ? intval($params['cate_id']) : 0;
+                if ($cateId > 0) {
+                    $query->where('s.cate_id', $cateId);
+                }
+
+
+                $status = isset($params['status']) ? $params['status'] : 0;
+                if ($status > 0) {
+                    $query->where('s.status', $status);
+                } else {
+                    $query->whereIn('s.status', [1, 2]);
+                }
+
+            })
+            ->where(function ($query) use ($params) {
+                $keyword = isset($params['keyword']) ? trim($params['keyword']) : '';
+                if (!empty($keyword)) {
+                    $query->where('s.title', 'like', "%{$keyword}%")
+                        ->orWhere('s.source','like',"%{$keyword}%");
+                }
+            })
+            ->select(['s.id', 's.cate_id', 'sc.name as cate_name','s.source', 's.title', 's.stock', 's.price', 's.thumb', 's.status', 's.create_time', 's.update_time', 's.description'])
+            ->orderBy('s.update_time', 'desc')
+            ->paginate($pageSize);
+
+        $dataList = $dataList ? $dataList->toArray() : [];
+        if ($dataList) {
+            foreach ($dataList['data'] as &$item) {
+                $item['thumb'] = $item['thumb'] ? get_image_url($item['thumb']) : '';
+                $item['create_time'] = $item['create_time'] ? datetime($item['create_time'],'Y-m-d H:i:s') : '';
+            }
+            unset($item);
+        }
+
+        return [
+            'code' => 0,
+            'success'=> true,
+            'msg' => '操作成功',
+            'count' => isset($dataList['total']) ? $dataList['total'] : 0,
+            'data' => isset($dataList['data']) ? $dataList['data'] : 0,
+        ];
+    }
+
+    /**
+     * 添加或编辑
+     * @return array
+     * @since 2020/11/11
+     * @author wesmiler
+     */
+    public function edit()
+    {
+        $data = request()->all();
+
+        // 图片处理
+        $image = trim($data['thumb']);
+        $id = isset($data['id']) ? $data['id'] : 0;
+        if (!$id && !$image) {
+            return message('请上传商品图片', false);
+        }
+        if (strpos($image, "temp")) {
+            $data['thumb'] = save_image($image, 'item');
+        } else {
+            $data['thumb'] = str_replace(IMG_URL, "", $data['thumb']);
+        }
+
+        $data['update_time'] = time();
+        return parent::edit($data); // TODO: Change the autogenerated stub
+    }
+
+}

+ 133 - 0
app/Services/TradeService.php

@@ -0,0 +1,133 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Services;
+
+use App\Models\TradeModel;
+use function GuzzleHttp\Psr7\str;
+
+/**
+ * 交易明细管理-服务类
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class TradeService
+ * @package App\Services
+ */
+class TradeService extends BaseService
+{
+    /**
+     * 构造函数
+     * @author wesmiler
+     * @since 2020/11/11
+     * TradeService constructor.
+     */
+    public function __construct()
+    {
+        $this->model = new TradeModel();
+    }
+
+    /**
+     * 获取列表
+     * @return array
+     * @since 2020/11/11
+     * @author wesmiler
+     */
+    public function getList()
+    {
+        $params = request()->all();
+        $page = isset($params['pageSize']) ? intval($params['pageSize']) : PAGE;
+        $pageSize = isset($params['pageSize']) ? intval($params['pageSize']) : PERPAGE;
+
+        $dataList = $this->model::from('account_logs as a')
+            ->leftJoin('member as m', 'm.id', '=', 'a.user_id')
+            ->where(function ($query) use ($params) {
+                $query->where('a.mark', 1);
+
+                $type = isset($params['type']) ? $params['type'] : 0;
+                if ($type > 0) {
+                    $query->where('a.type', $type);
+                }
+
+                $payType = isset($params['pay_type']) ? $params['pay_type'] : 0;
+                if ($payType > 0) {
+                    $query->where('a.pay_type', $payType);
+                }
+
+                $changeType = isset($params['change_type']) ? $params['change_type'] : 0;
+                if ($changeType > 0) {
+                    $query->where('a.change_type', $changeType);
+                }
+
+                $userId = isset($params['user_id']) ? $params['user_id'] : 0;
+                if ($userId > 0) {
+                    $query->where('a.user_id', $userId);
+                }
+
+                $datetime = isset($params['datetime'])? $params['datetime'] : [];
+                $dateStart = $datetime && isset($datetime[0])? $datetime[0] : '';
+                $dateEnd = isset($datetime[1])? $datetime[1] : '';
+                if($dateStart && $dateEnd && $dateEnd> $dateStart){
+                    $query->where('a.create_time', '>', strtotime($dateStart))->where('a.create_time','<=', strtotime($dateEnd)+86399);
+                }else if($dateStart && $dateStart == $dateEnd){
+                    $query->where('a.create_time', '>=', strtotime($dateStart))->where('a.create_time','<=', strtotime($dateStart)+86399);
+                }else if ($dateStart){
+                    $query->where('a.create_time', '<=', strtotime($dateStart)+86399);
+                }
+
+                $status = isset($params['status']) ? $params['status'] : 0;
+                if ($status > 0) {
+                    $query->where('a.status', $status);
+                } else {
+                    $query->whereIn('a.status', [1, 2]);
+                }
+
+            })
+            ->where(function ($query) use ($params) {
+                $keyword = isset($params['keyword']) ? trim($params['keyword']) : '';
+                if (!empty($keyword)) {
+                    $query->where('m.nickname','like',"%{$keyword}%");
+                }
+            })
+            ->select(['a.id', 'a.user_id', 'm.nickname','a.type','a.pay_type','a.change_type','a.coin_type','a.money', 'a.balance', 'a.status', 'a.create_time', 'a.update_time','a.remark'])
+            ->orderBy('a.create_time', 'desc')
+            ->paginate($pageSize);
+
+        $dataList = $dataList ? $dataList->toArray() : [];
+        if ($dataList) {
+            foreach ($dataList['data'] as &$item) {
+                $item['create_time'] = $item['create_time'] ? datetime($item['create_time'],'Y-m-d H:i:s') : '';
+            }
+            unset($item);
+        }
+
+        return [
+            'code' => 0,
+            'success'=> true,
+            'msg' => '操作成功',
+            'count' => isset($dataList['total']) ? $dataList['total'] : 0,
+            'data' => isset($dataList['data']) ? $dataList['data'] : 0,
+        ];
+    }
+
+    /**
+     * 添加或编辑
+     * @return array
+     * @since 2020/11/11
+     * @author wesmiler
+     */
+    public function edit()
+    {
+        $data = request()->all();
+        $data['update_time'] = time();
+        return parent::edit($data); // TODO: Change the autogenerated stub
+    }
+
+}

+ 121 - 0
app/Services/YigongService.php

@@ -0,0 +1,121 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 南京Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Services;
+
+use App\Models\YigongModel;
+
+/**
+ * 义工管理-服务类
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class YigongService
+ * @package App\Services
+ */
+class YigongService extends BaseService
+{
+    /**
+     * 构造函数
+     * @author wesmiler
+     * @since 2020/11/11
+     * YigongService constructor.
+     */
+    public function __construct()
+    {
+        $this->model = new YigongModel();
+    }
+
+    /**
+     * 获取列表
+     * @return array
+     * @since 2020/11/11
+     * @author wesmiler
+     */
+    public function getList()
+    {
+        $params = request()->all();
+        $page = isset($params['pageSize']) ? intval($params['pageSize']) : PAGE;
+        $pageSize = isset($params['pageSize']) ? intval($params['pageSize']) : PERPAGE;
+
+        $dataList = $this->model::from('yigong as y')
+            ->leftJoin('member as m', 'm.id', '=', 'y.user_id')
+            ->leftJoin('siyuan as s', 's.id', '=', 'y.siyuan_id')
+            ->where(function ($query) use ($params) {
+                $query->where('y.mark', 1);
+
+                $realname = isset($params['realname']) ? trim($params['realname']) : '';
+                if (!empty($realname)) {
+                    $query->where('y.realname', 'like', "%{$realname}%");
+                }
+
+                $onSiyuan = isset($params['on_siyuan']) ? intval($params['on_siyuan']) : 0;
+                if ($onSiyuan > 0) {
+                    $query->where('a.on_siyuan', $onSiyuan);
+                }
+
+                $status = isset($params['status']) ? $params['status'] : 0;
+                if ($status > 0) {
+                    $query->where('y.status', $status);
+                } else {
+                    $query->whereIn('y.status', [1, 2]);
+                }
+
+            })
+            ->select(['y.id', 'y.siyuan_id','y.user_id','s.title as siyuan', 'm.nickname', 'y.realname', 'y.on_siyuan', 'm.avatar', 'y.status', 'y.create_time', 'y.update_time', 'y.description', 'y.sort'])
+            ->orderBy('y.update_time', 'desc')
+            ->paginate($pageSize);
+
+        $dataList = $dataList ? $dataList->toArray() : [];
+        if ($dataList) {
+            foreach ($dataList['data'] as &$item) {
+                $item['avatar'] = $item['avatar'] ? get_image_url($item['avatar']) : '';
+                $item['create_time'] = $item['create_time'] ? datetime($item['create_time'],'Y-m-d H:i:s') : '';
+            }
+            unset($item);
+        }
+
+        return [
+            'code' => 0,
+            'success'=> true,
+            'msg' => '操作成功',
+            'count' => isset($dataList['total']) ? $dataList['total'] : 0,
+            'data' => isset($dataList['data']) ? $dataList['data'] : 0,
+        ];
+    }
+
+    /**
+     * 添加或编辑
+     * @return array
+     * @since 2020/11/11
+     * @author wesmiler
+     */
+    public function edit()
+    {
+        $data = request()->all();
+
+        // 图片处理
+        $image = trim($data['thumb']);
+        $id = isset($data['id']) ? $data['id'] : 0;
+        if (!$id && !$image) {
+            return message('请上传文章图片', false);
+        }
+        if (strpos($image, "temp")) {
+            $data['thumb'] = save_image($image, 'item');
+        } else {
+            $data['thumb'] = str_replace(IMG_URL, "", $data['thumb']);
+        }
+
+        $data['update_time'] = time();
+        $data['publish_at'] = isset($data['publish_at']) && $data['publish_at']? $data['publish_at'] : date('Y-m-d H:i:s');
+        return parent::edit($data); // TODO: Change the autogenerated stub
+    }
+
+}

BIN
public/uploads/file/20210705/60e2c09ee863f.mp3


BIN
public/uploads/file/20210705/60e2c19426861.mp3


BIN
public/uploads/file/20210705/60e2c1a4d6f53.mp3


BIN
public/uploads/file/20210705/60e2c20f307b0.mp3


BIN
public/uploads/file/20210705/60e2c3b393a32.mp3


BIN
public/uploads/file/20210705/60e2c44a52cb3.mp3


BIN
public/uploads/img/20210704/60e1557b8ca58.png


BIN
public/uploads/img/20210704/60e155e33580a.png


BIN
public/uploads/img/20210704/60e156278bdf2.jpg


BIN
public/uploads/img/20210704/60e15659e55a5.jpg


BIN
public/uploads/img/20210704/60e171a0bc767.jpg


BIN
public/uploads/img/20210704/60e171bdccd19.jpg


BIN
public/uploads/img/20210704/60e1737ee13d5.jpeg


BIN
public/uploads/img/20210704/60e173cc6a8aa.jpg


BIN
public/uploads/img/20210705/60e2b97cdb86f.png


BIN
public/uploads/img/20210705/60e2bb04cfa78.png


BIN
public/uploads/img/20210705/60e2bb187ae1c.jpg


BIN
public/uploads/img/20210705/60e2bb2caf40e.jpeg


BIN
public/uploads/img/20210705/60e2bb558a639.png


BIN
public/uploads/img/20210705/60e2bc7d1e76f.png


BIN
public/uploads/img/20210705/60e2bfb025c45.mp3


BIN
public/uploads/img/20210705/60e2bfd4979d8.mp3


BIN
public/uploads/img/20210705/60e2c0506a742.mp3


BIN
public/uploads/img/20210705/60e2c3bf9f480.png


BIN
public/uploads/img/20210705/60e35f7465b02.jpg


BIN
public/uploads/img/20210705/60e35fa627166.jpg


+ 136 - 1
routes/web.php

@@ -62,6 +62,7 @@ Route::get('/', function () {
 
 // 上传文件
 Route::post('/upload/uploadImage', [UploadController::class, 'uploadImage']);
+Route::post('/upload/uploadFile', [UploadController::class, 'uploadFile']);
 
 // 系统登录
 Route::get('/captcha', [LoginController::class, 'captcha'])->name('captcha');
@@ -91,7 +92,7 @@ Route::post('/level/status', [LevelController::class, 'status']);
 Route::get('/level/getLevelList', [LevelController::class, 'getLevelList']);
 Route::get('/level/exportExcel', [LevelController::class, 'exportExcel']);
 
-// 岗位管理
+// 职工
 Route::get('/position/index', [PositionController::class, 'index']);
 Route::get('/position/info', [PositionController::class, 'info']);
 Route::post('/position/edit', [PositionController::class, 'edit']);
@@ -263,6 +264,13 @@ Route::post('/activity/edit', [ActivityController::class, 'edit']);
 Route::post('/activity/delete', [ActivityController::class, 'delete']);
 Route::post('/activity/status', [ActivityController::class, 'status']);
 
+// 活动报名
+Route::get('/activitybooks/index', [\App\Http\Controllers\ActivityBooksController::class, 'index']);
+Route::get('/activitybooks/info', [\App\Http\Controllers\ActivityBooksController::class, 'info']);
+Route::post('/activitybooks/edit', [\App\Http\Controllers\ActivityBooksController::class, 'edit']);
+Route::post('/activitybooks/delete', [\App\Http\Controllers\ActivityBooksController::class, 'delete']);
+Route::post('/activitybooks/status', [\App\Http\Controllers\ActivityBooksController::class, 'status']);
+
 
 // 供奉物品管理
 Route::get('/offerings/index', [\App\Http\Controllers\OfferingsController::class, 'index']);
@@ -295,6 +303,133 @@ Route::post('/express/status', [\App\Http\Controllers\ExpressController::class,
 Route::post('/express/options', [\App\Http\Controllers\ExpressController::class, 'options']);
 
 
+// 文章管理
+Route::get('/article/index', [\App\Http\Controllers\ArticleController::class, 'index']);
+Route::get('/article/info', [\App\Http\Controllers\ArticleController::class, 'info']);
+Route::post('/article/edit', [\App\Http\Controllers\ArticleController::class, 'edit']);
+Route::post('/article/delete', [\App\Http\Controllers\ArticleController::class, 'delete']);
+Route::post('/article/status', [\App\Http\Controllers\ArticleController::class, 'status']);
+
+
+// 文章分类
+Route::get('/articlecates/index', [\App\Http\Controllers\ArticleCatesController::class, 'index']);
+Route::get('/articlecates/info', [\App\Http\Controllers\ArticleCatesController::class, 'info']);
+Route::post('/articlecates/edit', [\App\Http\Controllers\ArticleCatesController::class, 'edit']);
+Route::post('/articlecates/delete', [\App\Http\Controllers\ArticleCatesController::class, 'delete']);
+Route::post('/articlecates/status', [\App\Http\Controllers\ArticleCatesController::class, 'status']);
+Route::post('/articlecates/options', [\App\Http\Controllers\ArticleCatesController::class, 'options']);
+
+
+// 文章报名管理
+Route::get('/articlebooks/index', [\App\Http\Controllers\ArticleBooksController::class, 'index']);
+Route::get('/articlebooks/info', [\App\Http\Controllers\ArticleBooksController::class, 'info']);
+Route::post('/articlebooks/edit', [\App\Http\Controllers\ArticleBooksController::class, 'edit']);
+Route::post('/articlebooks/delete', [\App\Http\Controllers\ArticleBooksController::class, 'delete']);
+Route::post('/articlebooks/status', [\App\Http\Controllers\ArticleBooksController::class, 'status']);
+
+// 反馈建议
+Route::get('/advices/index', [\App\Http\Controllers\AdvicesController::class, 'index']);
+Route::get('/advices/info', [\App\Http\Controllers\AdvicesController::class, 'info']);
+Route::post('/advices/edit', [\App\Http\Controllers\AdvicesController::class, 'edit']);
+Route::post('/advices/delete', [\App\Http\Controllers\AdvicesController::class, 'delete']);
+Route::post('/advices/status', [\App\Http\Controllers\AdvicesController::class, 'status']);
+
+
+// 打卡签到
+Route::get('/signs/index', [\App\Http\Controllers\SignsController::class, 'index']);
+Route::get('/signs/info', [\App\Http\Controllers\SignsController::class, 'info']);
+Route::post('/signs/edit', [\App\Http\Controllers\SignsController::class, 'edit']);
+Route::post('/signs/delete', [\App\Http\Controllers\SignsController::class, 'delete']);
+Route::post('/signs/status', [\App\Http\Controllers\SignsController::class, 'status']);
+Route::post('/signs/options', [\App\Http\Controllers\SignsController::class, 'options']);
+
+
+// 打卡分类
+Route::get('/signcates/index', [\App\Http\Controllers\SignCatesController::class, 'index']);
+Route::get('/signcates/info', [\App\Http\Controllers\SignCatesController::class, 'info']);
+Route::post('/signcates/edit', [\App\Http\Controllers\SignCatesController::class, 'edit']);
+Route::post('/signcates/delete', [\App\Http\Controllers\SignCatesController::class, 'delete']);
+Route::post('/signcates/status', [\App\Http\Controllers\SignCatesController::class, 'status']);
+Route::post('/signcates/options', [\App\Http\Controllers\SignCatesController::class, 'options']);
+
+
+// 库房商品
+Route::get('/stores/index', [\App\Http\Controllers\StoresController::class, 'index']);
+Route::get('/stores/info', [\App\Http\Controllers\StoresController::class, 'info']);
+Route::post('/stores/edit', [\App\Http\Controllers\StoresController::class, 'edit']);
+Route::post('/stores/delete', [\App\Http\Controllers\StoresController::class, 'delete']);
+Route::post('/stores/status', [\App\Http\Controllers\StoresController::class, 'status']);
+
+
+// 库房商品分类
+Route::get('/storecates/index', [\App\Http\Controllers\StoreCatesController::class, 'index']);
+Route::get('/storecates/info', [\App\Http\Controllers\StoreCatesController::class, 'info']);
+Route::post('/storecates/edit', [\App\Http\Controllers\StoreCatesController::class, 'edit']);
+Route::post('/storecates/delete', [\App\Http\Controllers\StoreCatesController::class, 'delete']);
+Route::post('/storecates/status', [\App\Http\Controllers\StoreCatesController::class, 'status']);
+Route::post('/storecates/options', [\App\Http\Controllers\StoreCatesController::class, 'options']);
+
+// 库房出入库记录
+Route::get('/storerecords/index', [\App\Http\Controllers\StoreRecordsController::class, 'index']);
+Route::get('/storerecords/info', [\App\Http\Controllers\StoreRecordsController::class, 'info']);
+Route::post('/storerecords/edit', [\App\Http\Controllers\StoreRecordsController::class, 'edit']);
+Route::post('/storerecords/delete', [\App\Http\Controllers\StoreRecordsController::class, 'delete']);
+Route::post('/storerecords/status', [\App\Http\Controllers\StoreRecordsController::class, 'status']);
+
+
+// 捐赠商品
+Route::get('/donates/index', [\App\Http\Controllers\DonatesController::class, 'index']);
+Route::get('/donates/info', [\App\Http\Controllers\DonatesController::class, 'info']);
+Route::post('/donates/edit', [\App\Http\Controllers\DonatesController::class, 'edit']);
+Route::post('/donates/delete', [\App\Http\Controllers\DonatesController::class, 'delete']);
+Route::post('/donates/status', [\App\Http\Controllers\DonatesController::class, 'status']);
+
+// 行善记录
+Route::get('/mecry/index', [\App\Http\Controllers\MecryController::class, 'index']);
+Route::get('/mecry/info', [\App\Http\Controllers\MecryController::class, 'info']);
+Route::post('/mecry/edit', [\App\Http\Controllers\MecryController::class, 'edit']);
+Route::post('/mecry/delete', [\App\Http\Controllers\MecryController::class, 'delete']);
+Route::post('/mecry/status', [\App\Http\Controllers\MecryController::class, 'status']);
+
+
+// 佛音管理
+Route::get('/music/index', [\App\Http\Controllers\MusicController::class, 'index']);
+Route::get('/music/info', [\App\Http\Controllers\MusicController::class, 'info']);
+Route::post('/music/edit', [\App\Http\Controllers\MusicController::class, 'edit']);
+Route::post('/music/delete', [\App\Http\Controllers\MusicController::class, 'delete']);
+Route::post('/music/status', [\App\Http\Controllers\MusicController::class, 'status']);
+
+
+// 佛音歌单管理
+Route::get('/musicsheets/index', [\App\Http\Controllers\MusicSheetsController::class, 'index']);
+Route::get('/musicsheets/info', [\App\Http\Controllers\MusicSheetsController::class, 'info']);
+Route::post('/musicsheets/edit', [\App\Http\Controllers\MusicSheetsController::class, 'edit']);
+Route::post('/musicsheets/delete', [\App\Http\Controllers\MusicSheetsController::class, 'delete']);
+Route::post('/musicsheets/status', [\App\Http\Controllers\MusicSheetsController::class, 'status']);
+Route::post('/musicsheets/options', [\App\Http\Controllers\MusicSheetsController::class, 'options']);
+
+// 义工管理
+Route::get('/yigong/index', [\App\Http\Controllers\YigongController::class, 'index']);
+Route::get('/yigong/info', [\App\Http\Controllers\YigongController::class, 'info']);
+Route::post('/yigong/edit', [\App\Http\Controllers\YigongController::class, 'edit']);
+Route::post('/yigong/delete', [\App\Http\Controllers\YigongController::class, 'delete']);
+Route::post('/yigong/status', [\App\Http\Controllers\YigongController::class, 'status']);
+
+// 交易明细
+Route::get('/trades/index', [\App\Http\Controllers\TradesController::class, 'index']);
+Route::get('/trades/info', [\App\Http\Controllers\TradesController::class, 'info']);
+Route::post('/trades/edit', [\App\Http\Controllers\TradesController::class, 'edit']);
+Route::post('/trades/delete', [\App\Http\Controllers\TradesController::class, 'delete']);
+Route::post('/trades/status', [\App\Http\Controllers\TradesController::class, 'status']);
+
+// 充值记录
+Route::get('/recharge/index', [\App\Http\Controllers\RechargeController::class, 'index']);
+Route::get('/recharge/info', [\App\Http\Controllers\RechargeController::class, 'info']);
+Route::post('/recharge/edit', [\App\Http\Controllers\RechargeController::class, 'edit']);
+Route::post('/recharge/delete', [\App\Http\Controllers\RechargeController::class, 'delete']);
+Route::post('/recharge/status', [\App\Http\Controllers\RechargeController::class, 'status']);
+
+
 // 登录日志
 Route::get('/loginlog/index', [LoginLogController::class, 'index']);
 Route::post('/loginlog/delete', [LoginLogController::class, 'delete']);

+ 1 - 0
开发文档功能.md

@@ -75,6 +75,7 @@
 8、文章公告
 1.头条分类
 2.头条列表
+报名:
 3.反馈建议
 4.