Prechádzať zdrojové kódy

wesmiler 报恩寺项目提交

wesmiler 4 rokov pred
rodič
commit
7321d158cf

+ 45 - 0
app/Http/Controllers/Api/v1/PracticesController.php

@@ -0,0 +1,45 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Http\Controllers\Api\v1;
+
+use App\Http\Controllers\Api\BaseController;
+use App\Services\PracticesService;
+
+/**
+ * 修行项目管理-控制器
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class PracticesController
+ * @package App\Http\Controllers
+ */
+class PracticesController extends BaseController
+{
+    /**
+     * 构造函数
+     * @author wesmiler
+     * @since 2020/11/11
+     * PracticesController constructor.
+     */
+    public function __construct()
+    {
+        parent::__construct();
+        $this->service = new PracticesService();
+    }
+
+    /**
+     * 列表
+     * @return array|mixed
+     */
+    public function index(){
+        return $this->service->getDataList($this->userId);
+    }
+}

+ 50 - 0
app/Models/PracticeLogsModel.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 ArticleModel
+ * @package App\Models
+ */
+class PracticeLogsModel extends BaseModel
+{
+    // 设置数据表
+    protected $table = 'practice_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
+        if ($info) {
+            // 图片
+            if ($info['thumb']) {
+                $info['thumb'] = get_image_url($info['thumb']);
+            }
+
+            // 图片
+            if ($info['complete_time']) {
+                $info['complete_time'] = datetime($info['complete_time'],'Y-m-d H:i:s');
+            }
+        }
+        return $info;
+    }
+
+}

+ 1 - 1
app/Models/PracticesModel.php

@@ -12,7 +12,7 @@
 namespace App\Models;
 namespace App\Models;
 
 
 /**
 /**
- * 文章管理-模型
+ * 修行项目管理-模型
  * @author wesmiler
  * @author wesmiler
  * @since 2020/11/11
  * @since 2020/11/11
  * Class ArticleModel
  * Class ArticleModel

+ 10 - 0
app/Services/DevicesService.php

@@ -185,6 +185,16 @@ class DevicesService extends BaseService
             $dataStr[] = $k.'='.$v;
             $dataStr[] = $k.'='.$v;
         }
         }
 
 
+        // 屏幕控制队列数据
+        $screenData = [
+            'order_sn'=> $orderSn,
+            'device_code'=> $deviceCode,
+            'port'=> $port,
+        ];
+
+        RedisService::rPush('push:screens', $screenData);
+        RedisService::expire('push:screens', 3600);
+
         // 调用亮灯接口处理
         // 调用亮灯接口处理
         $dataStr = implode('&', $dataStr);
         $dataStr = implode('&', $dataStr);
         $headers = ["Content-Type:application/x-www-form-urlencoded; charset=UTF-8"];
         $headers = ["Content-Type:application/x-www-form-urlencoded; charset=UTF-8"];

+ 6 - 0
app/Services/EnshrineService.php

@@ -297,6 +297,7 @@ class EnshrineService extends BaseService
         ];
         ];
 
 
         if ($this->model::insertGetId($data)) {
         if ($this->model::insertGetId($data)) {
+            PracticesService::make()->saveLog($userId,3, "祈福供奉{$foInfo->name}佛像");
             return message('请佛成功', true);
             return message('请佛成功', true);
         } else {
         } else {
             return message('请佛失败', true);
             return message('请佛失败', true);
@@ -386,6 +387,7 @@ class EnshrineService extends BaseService
         ];
         ];
 
 
         if ($this->model::insertGetId($data)) {
         if ($this->model::insertGetId($data)) {
+            PracticesService::make()->saveLog($userId,1, "超度供奉{$foInfo->name}佛像牌位");
             return message('超度成功', true);
             return message('超度成功', true);
         } else {
         } else {
             return message('超度失败', true);
             return message('超度失败', true);
@@ -634,6 +636,10 @@ class EnshrineService extends BaseService
         ];
         ];
         DynamicNoticeModel::insertGetId($data);
         DynamicNoticeModel::insertGetId($data);
 
 
+        // 放生
+        if($type == 3){
+            PracticesService::make()->saveLog($userId,2, "放生{$goodsInfo->name}");
+        }
 
 
         if ($totalGd > 0) {
         if ($totalGd > 0) {
             return message("获得功德值{$totalGd}", true, ['num' => $totalGd]);
             return message("获得功德值{$totalGd}", true, ['num' => $totalGd]);

+ 35 - 3
app/Services/NotifyService.php

@@ -76,7 +76,7 @@ class NotifyService extends BaseService
         }
         }
 
 
         // 订单用户
         // 订单用户
-        $memberInfo = MemberModel::where(['id'=> $userId])->select(['id','openid','nickname','balance','coupon','status'])->first();
+        $memberInfo = MemberModel::where(['id'=> $userId])->select(['id','openid','nickname','balance','coupon','merits_num','status'])->first();
         if(!$memberInfo){
         if(!$memberInfo){
             return NotifyService::rebackMsg('订单用户不存在', 'success');
             return NotifyService::rebackMsg('订单用户不存在', 'success');
         }
         }
@@ -128,6 +128,38 @@ class NotifyService extends BaseService
             return NotifyService::rebackMsg('处理交易明细失败', 'error');
             return NotifyService::rebackMsg('处理交易明细失败', 'error');
         }
         }
 
 
+        // 项目完成
+        $giveGd = ConfigService::make()->getConfigByCode('gongdeng_give_gd');
+        $giveGd = $giveGd? $giveGd : 0;
+        if($giveGd>0){
+            if(!MemberModel::where(['id'=> $userId])->increment('merits_num', $giveGd)){
+                DB::rollBack();
+                return NotifyService::rebackMsg('奖励功德失败', 'error');
+            }
+
+            $data = [
+                'user_id'=> $userId,
+                'type'=> 3,
+                'coin_type'=> 4,
+                'pay_type'=> 4,
+                'money'=> $giveGd,
+                'change_type'=> 1,
+                'balance'=> $memberInfo->merits_num? $memberInfo->merits_num : 0,
+                'create_time'=> time(),
+                'remark'=> '供灯奖励',
+                'status'=> 1
+            ];
+            if(!TradeModel::insertGetId($data)){
+                RedisService::set($errorKey.':error_gd',['notify'=> $notifyData, 'error'=> '功德奖励交易明细失败','data'=> $data
+                ], 3600);
+                DB::rollBack();
+                return NotifyService::rebackMsg('功德奖励处理失败', 'error');
+            }
+
+            // 完成供灯项目
+            PracticesService::make()->saveLog($userId, 4,'供灯祈福');
+        }
+
         DB::commit();
         DB::commit();
 
 
         // 记录
         // 记录
@@ -141,17 +173,17 @@ class NotifyService extends BaseService
         RedisService::set("caches:dynamic:notice_{$userId}", $data, 300);
         RedisService::set("caches:dynamic:notice_{$userId}", $data, 300);
         DynamicNoticeModel::insertGetId($data);
         DynamicNoticeModel::insertGetId($data);
 
 
+
         // 开灯处理,续费不处理
         // 开灯处理,续费不处理
         $buyType = isset($orderInfo['buy_type'])? $orderInfo['buy_type'] : 0;
         $buyType = isset($orderInfo['buy_type'])? $orderInfo['buy_type'] : 0;
         if($buyType == 1){
         if($buyType == 1){
             DevicesService::make()->catchLamp($outTradeNo);
             DevicesService::make()->catchLamp($outTradeNo);
+
         }
         }
 
 
 
 
 
 
         // 消息处理
         // 消息处理
-
-
         return NotifyService::rebackMsg('支付处理成功','success');
         return NotifyService::rebackMsg('支付处理成功','success');
     }
     }
 
 

+ 54 - 5
app/Services/PracticesService.php

@@ -11,6 +11,7 @@
 
 
 namespace App\Services;
 namespace App\Services;
 
 
+use App\Models\PracticeLogsModel;
 use App\Models\PracticesModel;
 use App\Models\PracticesModel;
 
 
 /**
 /**
@@ -22,6 +23,8 @@ use App\Models\PracticesModel;
  */
  */
 class PracticesService extends BaseService
 class PracticesService extends BaseService
 {
 {
+
+    protected static $instance = null;
     /**
     /**
      * 构造函数
      * 构造函数
      * @author wesmiler
      * @author wesmiler
@@ -34,12 +37,24 @@ class PracticesService extends BaseService
     }
     }
 
 
     /**
     /**
+     * 静态入口
+     * @return PracticesService|null
+     */
+    public static function make(){
+        if(!self::$instance){
+            self::$instance = new PracticesService();
+        }
+
+        return self::$instance;
+    }
+
+    /**
      * 获取列表
      * 获取列表
      * @return array
      * @return array
      * @since 2020/11/11
      * @since 2020/11/11
      * @author wesmiler
      * @author wesmiler
      */
      */
-    public function getDataList()
+    public function getDataList($userId)
     {
     {
         $params = request()->all();
         $params = request()->all();
         $page = isset($params['pageSize']) ? intval($params['pageSize']) : PAGE;
         $page = isset($params['pageSize']) ? intval($params['pageSize']) : PAGE;
@@ -59,10 +74,7 @@ class PracticesService extends BaseService
             foreach ($dataList['data'] as &$item) {
             foreach ($dataList['data'] as &$item) {
                 $item['thumb'] = $item['thumb'] ? get_image_url($item['thumb']) : '';
                 $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') : '';
                 $item['create_time'] = $item['create_time'] ? datetime($item['create_time'],'Y-m-d H:i:s') : '';
-                $item['complete_status'] = 0;
-                if($item['complete_time']>strtotime(date('Y-m-d'))){
-                    $item['complete_status'] = 1;
-                }
+
             }
             }
             unset($item);
             unset($item);
         }
         }
@@ -114,4 +126,41 @@ class PracticesService extends BaseService
         return parent::edit($data); // TODO: Change the autogenerated stub
         return parent::edit($data); // TODO: Change the autogenerated stub
     }
     }
 
 
+    /**
+     * @param $userId
+     * @param $itemId
+     * @param $remark
+     * @return array|false
+     */
+    public function saveLog($userId, $itemId, $remark){
+        $cacheKey ="caches:practices:logs_{$userId}_{$itemId}";
+        if(RedisService::get($cacheKey)){
+            return false;
+        }
+
+        $logInfo = PracticeLogsModel::where(['item_id'=> $itemId,'user_id'=> $userId,'mark'=> 1,'status'=> 1])
+                ->where('create_time','>',strtotime(date('Y-m-d')))
+                ->select(['id','item_id','user_id','remark'])
+                ->orderBy('create_time','desc')
+                ->first();
+        if($logInfo){
+            RedisService::set($cacheKey, $logInfo, rand(5, 10));
+            return false;
+        }
+
+        $data = [
+            'item_id'=> $itemId,
+            'user_id'=> $userId,
+            'remark'=> $remark,
+            'create_time'=> time(),
+            'update_time'=> time(),
+            'status'=> 1,
+        ];
+
+        if(PracticeLogsModel::insertGetId($data)){
+            RedisService::set($cacheKey, $data, rand(5, 10));
+            return message('操作成功', true);
+        }
+        return message('操作失败', false);
+    }
 }
 }

+ 10 - 0
app/Services/RedisService.php

@@ -122,6 +122,16 @@ class RedisService extends BaseRedis
     }
     }
 
 
     /**
     /**
+     * 有效期设置
+     * @param $key
+     * @param $expire
+     * @return mixed
+     */
+    public static function expire($key, $expire){
+        return BaseRedis::expire($key, $expire);
+    }
+
+    /**
      * 原子锁
      * 原子锁
      * @param $key
      * @param $key
      * @param $value
      * @param $value

+ 8 - 0
routes/api.php

@@ -169,3 +169,11 @@ Route::post('/enshrine/noticeDel', [\App\Http\Controllers\Api\v1\EnshrineControl
 Route::post('/enshrine/chaodu', [\App\Http\Controllers\Api\v1\EnshrineController::class, 'chaodu']);
 Route::post('/enshrine/chaodu', [\App\Http\Controllers\Api\v1\EnshrineController::class, 'chaodu']);
 Route::post('/enshrine/order', [\App\Http\Controllers\Api\v1\EnshrineController::class, 'orderList']);
 Route::post('/enshrine/order', [\App\Http\Controllers\Api\v1\EnshrineController::class, 'orderList']);
 
 
+// 修行项目
+Route::post('/practices/list', [\App\Http\Controllers\Api\v1\PracticesController::class, 'index']);
+
+
+
+
+
+