xieruidong il y a 2 ans
Parent
commit
50a542e804

+ 12 - 1
application/admin/controller/Coupon.php

@@ -110,7 +110,18 @@ class Coupon extends Backend
         if($this->request->isGet()){
             return $this->fetch();
         }else{
-
+            $data=input('row/a');
+            $this->validate($data,[
+                'num|数量'=>['require','gt:0'],
+                'users|用户'=>['require']
+            ]);
+            Db::startTrans();
+            $coupons=$this->model->whereIn('id',$ids)->lock(true)->select();
+            foreach ($coupons as $coupon){
+                $coupon->sendToUser(explode(',',$data['users']),$data['num']);
+            }
+            Db::commit();
+            $this->success();
         }
     }
 }

+ 33 - 0
application/admin/view/coupon/send.html

@@ -0,0 +1,33 @@
+<form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Num')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-num" min="0" class="form-control" name="row[num]" type="number" value="" data-rule="required">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('发送用户')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input
+                    id="c-name"
+                    data-rule=""
+                    data-params='{}'
+                    data-source="user/user"
+                    class="form-control selectpage"
+                    name="row[users]"
+                    data-multiple="true"
+                    data-order-by="id"
+                    data-field="username"
+                    type="text"
+                    value=""
+            >
+        </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">
+            <button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button>
+            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
+        </div>
+    </div>
+</form>

+ 16 - 0
application/common/model/Coupon.php

@@ -33,4 +33,20 @@ class Coupon extends Model
             }
         });
     }
+
+    public function sendToUser($users,$num){
+        $this['num_send']=$this['num_send']+$num;
+        if($this['num_send']>$this['num']){
+            throw_user("[{$this['id']}]券数量不足");
+        }
+        $users=array_unique($users);
+        $users=array_filter($users);
+        foreach ($users as $userId){
+            $user=User::find($userId);
+            if($user){
+                UserCoupon::toUser($user,$this);
+            }
+        }
+
+    }
 }

+ 3 - 34
application/common/model/User.php

@@ -221,24 +221,18 @@ class User extends Model
     public function scorelog(){
         return $this->hasMany(ScoreLog::class);
     }
-    public function notification(){
-        return $this->hasMany(Notification::class);
-    }
     public function cart(){
         return $this->hasMany(GoodsCart::class);
     }
+    public function coupon(){
+        return $this->hasMany(UserCoupon::class);
+    }
     public static function recharge($params,Payment $payment){
         self::money($payment['amount'],$payment['uer_id'],MoneyLog::TYPE_CHARGE,'充值');
     }
     public function verification(){
         return $this->hasOne(UserVerification::class);
     }
-    public function mobileHoldLog(){
-        return $this->morphMany(MobileHoldLog::class,'holdable','user');
-    }
-    public function mobileOrderRefundLog(){
-        return $this->morphMany(MobileOrderRefundLog::class,'refunduser','user');
-    }
     /** 模糊搜索 */
     public function scopeDim(Query $query,$keyword){
         $keyword="%{$keyword}%";
@@ -286,10 +280,6 @@ class User extends Model
 
 
 
-
-
-
-
     /** attr */
     #获取地区
     public function appendArea(){
@@ -310,25 +300,4 @@ class User extends Model
         }
         return $a;
     }
-    protected function getIsVipAttr($a,$b){
-        return $b['level']==self::LEVEL_20;
-    }
-    protected function getIsVisitorAttr($a,$b){
-        return $b['level']==self::LEVEL_0;
-    }
-    protected function getHasAnsweredAttr($a,$b){
-        $user=request()->_user;
-        if(!$user){
-            return false;
-        }
-        return Cache::get("user:question:{$user['id']}")==date('Ymd');
-    }
-
-
-
-    /** set */
-    public function setVip(){
-        $this['level']=self::LEVEL_20;
-        $this->save();
-    }
 }

+ 18 - 0
application/common/model/UserCoupon.php

@@ -22,4 +22,22 @@ class UserCoupon extends Model
             }
         });
     }
+
+    public static function toUser(User $user,Coupon $coupon){
+        $userCoupon=$user->coupon()->save([
+            'type'=>$coupon['type'],
+            'amount'=>$coupon['amount'],
+            'amount_full'=>$coupon['amount_full'],
+            'time_start'=>$coupon['time_start'],
+            'time_end'=>$coupon['time_end'],
+        ]);
+        $goods_ids=$coupon->bindGoods()->column('goods_id');
+        $arr=[];
+        foreach ($goods_ids as $goods_id){
+            $arr[]=[
+                'goods_id'=>$goods_id,
+            ];
+        }
+        $userCoupon->bindGoods()->saveAll($arr);
+    }
 }

+ 3 - 0
public/assets/js/backend/coupon.js

@@ -67,6 +67,9 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
         edit: function () {
             Controller.api.bindevent();
         },
+        send(){
+            Controller.api.bindevent();
+        },
         api: {
             bindevent: function () {
                 Form.api.bindevent($("form[role=form]"));