From c8f1c0533b29dee371a9cce735a871757248e349 Mon Sep 17 00:00:00 2001
From: 何书鹏 <heshupeng@bronet.cn>
Date: Mon, 21 Feb 2022 15:43:22 +0800
Subject: [PATCH] 注册送优惠券

---
 application/admin/lang/zh-cn/coupon.php |  7 ++++++-
 application/admin/model/Coupon.php      | 23 ++++++++++++++++++++++-
 application/admin/view/coupon/edit.html | 21 +++++++++++++++++++++
 application/api/controller/User.php     | 13 +++++++++++++
 public/assets/js/backend/coupon.js      |  3 +++
 5 files changed, 65 insertions(+), 2 deletions(-)

diff --git a/application/admin/lang/zh-cn/coupon.php b/application/admin/lang/zh-cn/coupon.php
index e90a899..26057d5 100644
--- a/application/admin/lang/zh-cn/coupon.php
+++ b/application/admin/lang/zh-cn/coupon.php
@@ -8,5 +8,10 @@ return [
     'Send_number' => '每次发放数量',
     'Days'        => '领取后过期天数',
     'Createtime'  => '创建时间',
-    'Endtime'     => '有效日期'
+    'Endtime'     => '有效日期',
+    'Register_send_switch'       => '注册送优惠券开关',
+    'Register_send_switch 0'       => '关',
+    'Register_send_switch 1'       => '开',
+    'Register_send_starttime'     => '注册送优惠券开始时间',
+    'Register_send_endtime'     => '注册送优惠券结束时间',
 ];
diff --git a/application/admin/model/Coupon.php b/application/admin/model/Coupon.php
index c11869c..fbc8e11 100644
--- a/application/admin/model/Coupon.php
+++ b/application/admin/model/Coupon.php
@@ -25,7 +25,8 @@ class Coupon extends Model
 
     // 追加属性
     protected $append = [
-        'endtime_text'
+        'endtime_text',
+        'register_send_switch_text'
     ];
     
 
@@ -44,5 +45,25 @@ class Coupon extends Model
         return $value === '' ? null : ($value && !is_numeric($value) ? strtotime($value) : $value);
     }
 
+    public function getRegisterSendSwitchList()
+    {
+        return ['0' => __('Register_send_switch 0'), '1' => __('Register_send_switch 1')];
+    }
+
+    public function getRegisterSendSwitchTextAttr($value, $data)
+    {
+        $value = $value ? $value : (isset($data['register_send_switch']) ? $data['register_send_switch'] : '');
+        $list = $this->getRegisterSendSwitchList();
+        return isset($list[$value]) ? $list[$value] : '';
+    }
+
+    protected function setRegisterSendStarttimeAttr($value)
+    {
+        return $value === '' ? null : ($value && !is_numeric($value) ? strtotime($value) : $value);
+    }
 
+    protected function setRegisterSendEndtimeAttr($value)
+    {
+        return $value === '' ? null : ($value && !is_numeric($value) ? strtotime($value) : $value);
+    }
 }
diff --git a/application/admin/view/coupon/edit.html b/application/admin/view/coupon/edit.html
index 6ceb35a..d61b706 100644
--- a/application/admin/view/coupon/edit.html
+++ b/application/admin/view/coupon/edit.html
@@ -42,6 +42,27 @@
             <input id="c-endtime" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[endtime]" type="text" value="{:$row.endtime?datetime($row.endtime):''}">
         </div>
     </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Register_send_switch')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input  id="c-register_send_switch" name="row[register_send_switch]" type="hidden" value="0">
+            <a href="javascript:;" data-toggle="switcher" class="btn-switcher" data-input-id="c-register_send_switch" data-yes="1" data-no="0" >
+                <i class="fa fa-toggle-on text-success {eq name="$row.register_send_switch" value="0"}fa-flip-horizontal text-gray{/eq} fa-2x"></i>
+            </a>
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Register_send_starttime')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-register_send_starttime" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[register_send_starttime]" type="text" value="{:$row.register_send_starttime?datetime($row.register_send_starttime):''}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Register_send_endtime')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-register_send_endtime" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[register_send_endtime]" type="text" value="{:$row.register_send_endtime?datetime($row.register_send_endtime):''}">
+        </div>
+    </div>
     <div class="form-group layer-footer">
         <label class="control-label col-xs-12 col-sm-2"></label>
         <div class="col-xs-12 col-sm-8">
diff --git a/application/api/controller/User.php b/application/api/controller/User.php
index 655c6c0..47bb304 100644
--- a/application/api/controller/User.php
+++ b/application/api/controller/User.php
@@ -126,6 +126,19 @@ class User extends Api
             }
             if ($userid){
                 $third->isUpdate(false)->save(['openid'=>$wxapi['openid'],'user_id'=>$userid,'session_key'=>$wxapi['session_key']]);
+                // 注册送优惠券
+                $coupon = Db::name('coupon')->find();
+                $time = time();
+                if($coupon['register_send_switch'] == '1' && $time >= $coupon['register_send_starttime'] && $time <= $coupon['register_send_endtime']){
+                    UserCoupon::create([
+                        'user_id' => $userid,
+                        'coupon_id' => $coupon['id'],
+                        'name' => $coupon['name'],
+                        'price' => $coupon['price'],
+                        'full_price' => $coupon['full_price'],
+                        'endtime' => $time+$coupon['days']*86400
+                    ]);
+                }
                 $this->success('登录成功',['token'=>$this->auth->getToken(),'user_type'=>$this->auth->user_type]);
             }else{
                 $this->error('注册失败');
diff --git a/public/assets/js/backend/coupon.js b/public/assets/js/backend/coupon.js
index 4145515..8d2ba9f 100644
--- a/public/assets/js/backend/coupon.js
+++ b/public/assets/js/backend/coupon.js
@@ -37,6 +37,9 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                         {field: 'days', title: __('Days')},
                         {field: 'createtime', title: __('Createtime'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime},
                         {field: 'endtime', title: __('Endtime'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime},
+                        {field: 'register_send_switch', title: __('Register_send_switch'), searchList: {"0":__('Register_send_switch 0'),"1":__('Register_send_switch 1')}, formatter: Table.api.formatter.toggle},
+                        {field: 'register_send_starttime', title: __('Register_send_starttime'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime},
+                        {field: 'register_send_endtime', title: __('Register_send_endtime'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime},
                         {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate,
                             buttons: [
                                 {
--
libgit2 0.24.0