wesmiler 9 часов назад
Родитель
Сommit
3ef1808bb2

+ 24 - 0
app/Models/CouponModel.php

@@ -0,0 +1,24 @@
+<?php
+// +----------------------------------------------------------------------
+// | LARAVEL8.0 框架 [ LARAVEL ][ RXThinkCMF ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 LARAVEL研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: laravel开发员 <laravel.qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Models;
+
+/**
+ * 优惠券-模型
+ * @author laravel开发员
+ * @since 2020/11/11
+ * @package App\Models
+ */
+class CouponModel extends BaseModel
+{
+    // 设置数据表
+    protected $table = 'coupons';
+}

+ 36 - 0
app/Models/MemberCouponModel.php

@@ -0,0 +1,36 @@
+<?php
+// +----------------------------------------------------------------------
+// | LARAVEL8.0 框架 [ LARAVEL ][ RXThinkCMF ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 LARAVEL研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: laravel开发员 <laravel.qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Models;
+
+/**
+ * 用户优惠券-模型
+ * @author laravel开发员
+ * @since 2020/11/11
+ * @package App\Models
+ */
+class MemberCouponModel extends BaseModel
+{
+    // 设置数据表
+    protected $table = 'member_coupons';
+
+    /**
+     * 领取用户
+     * @return \Illuminate\Database\Eloquent\Relations\HasOne
+     */
+    public function member()
+    {
+        return $this->hasOne(MemberModel::class,'id','user_id')
+            ->select(['id','nickname','openid','realname','balance','gender','status']);
+    }
+
+
+}

+ 6 - 1
app/Services/Api/MemberService.php

@@ -13,6 +13,7 @@ namespace App\Services\Api;
 
 use App\Models\AccountStatisticsModel;
 use App\Models\ActionLogModel;
+use App\Models\CouponModel;
 use App\Models\MemberBankModel;
 use App\Models\MemberModel;
 use App\Services\BaseService;
@@ -123,7 +124,6 @@ class MemberService extends BaseService
                 $parents = ',1,';
             }
 
-
             $data = [
                 'nickname' => '',
                 'openid' => $openid,
@@ -145,6 +145,11 @@ class MemberService extends BaseService
                 $this->error = 2018;
                 return false;
             }
+
+            // 注册奖励优惠券
+            SettleService::make()->registerReward($userId);
+
+
         } // 更新登录信息
         else if ($mark == 0 || !RedisService::get("caches:members:login_{$userId}")) {
             $updateData = [

+ 54 - 1
app/Services/Api/SettleService.php

@@ -12,9 +12,11 @@
 namespace App\Services\Api;
 
 use App\Models\AccountLogModel;
+use App\Models\CouponModel;
 use App\Models\MeetingModel;
 use App\Models\StoreModel;
 use App\Services\BaseService;
+use App\Services\ConfigService;
 use App\Services\RedisService;
 use Illuminate\Support\Facades\DB;
 
@@ -48,7 +50,6 @@ class SettleService extends BaseService
         return self::$instance;
     }
 
-
     /**
      * 商家收益结算
      * @param $storeId
@@ -101,4 +102,56 @@ class SettleService extends BaseService
 
         return $result;
     }
+
+    /**
+     * 新人注册奖励
+     * @param $userId
+     * @return array|bool
+     */
+    public function registerReward($userId)
+    {
+        $rewardOpen = ConfigService::make()->getConfigByCode('register_award_coupon',0);
+        $rewardCouponId = ConfigService::make()->getConfigByCode('register_reward_coupon_id',0);
+        if($rewardCouponId<=0 || $rewardOpen!= 1){
+            $this->error = '未开启或配置注册优惠券奖励';
+            return true;
+        }
+
+        $couponInfo = CouponModel::where(['id'=>$rewardCouponId,'mark'=>1])
+            ->first();
+        $status = isset($couponInfo['status'])?$couponInfo['status']:0;
+        if(empty($couponInfo) || $status != 1){
+            $this->error = '配置的注册奖励优惠券不存在或无效';
+            return true;
+        }
+
+        $data = [
+            'coupon_id'=> $rewardCouponId,
+            'user_id'=> $userId,
+            'store_id'=> isset($couponInfo['store_id'])?$couponInfo['store_id']:0,
+            'name'=> isset($couponInfo['name'])?$couponInfo['name']:'',
+            'coupon_type'=> isset($couponInfo['coupon_type'])?$couponInfo['coupon_type']: 20,
+            'reduce_price'=> isset($couponInfo['reduce_price'])?$couponInfo['reduce_price']:0,
+            'discount'=> isset($couponInfo['discount'])?$couponInfo['discount']:0,
+            'min_price'=> isset($couponInfo['min_price'])?$couponInfo['min_price']:0,
+            'expire_day'=> isset($couponInfo['expire_day'])?$couponInfo['expire_day']:0,
+            'start_time'=> isset($couponInfo['start_time'])?$couponInfo['start_time']:0,
+            'end_time'=> isset($couponInfo['end_time'])?$couponInfo['end_time']:0,
+            'goods_ids'=> isset($couponInfo['goods_ids'])&&$couponInfo['goods_ids']?$couponInfo['goods_ids']:'',
+            'create_time'=> time(),
+            'status'=> 1,
+        ];
+
+        if(!$id =CouponModel::insertGetId($data)){
+            $this->error = '奖励注册优惠券失败';
+            return true;
+        }
+
+        $data['id'] = $id;
+        unset($data['create_time']);
+        unset($data['status']);
+        unset($data['goods_ids']);
+        $this->error = '奖励注册优惠券成功';
+        return $data;
+    }
 }