Browse Source

套餐转让审核

lizhen_gitee 1 year ago
parent
commit
8a79de2ac1

+ 81 - 1
application/admin/controller/Packagemove.php

@@ -3,7 +3,7 @@
 namespace app\admin\controller;
 
 use app\common\controller\Backend;
-
+use think\Db;
 /**
  * 套餐转让申请
  *
@@ -70,4 +70,84 @@ class Packagemove extends Backend
         return $this->view->fetch();
     }
 
+    /**
+     * 审核
+     */
+    public function audit(){
+        $id = input('id');
+        $info = Db::name('package_move')
+            ->where('id',$id)
+            ->find();
+
+        if ($this->request->isPost()) {
+            $status = input('status',0);
+            $data = [
+                'status' => $status,
+                'auditremark' => input('auditremark'),
+                'audittime' => time(),
+                'updatetime' => time(),
+            ];
+            Db::startTrans();
+
+            $rs = Db::name('package_move')->where('id',$id)->update($data);
+            if($rs === false){
+                Db::rollback();
+                $this->error('保存失败');
+            }
+
+            if($status == 1){
+                //老订单
+                $package_info = Db::name('package_order')->where('id',$info['package_order_id'])->lock(true)->find();
+
+                //剩余课时判断
+                $new_remain = $package_info['remain'] - $info['sessions'];
+                if($new_remain < 0){
+                    Db::rollback();
+                    $this->error('原套餐订单的剩余课程已不足转出');
+                }
+
+                //老订单修改
+                $package_update = [
+                    'remain' => $new_remain,
+                    'updatetime' => time(),
+                ];
+                $order_rs = Db::name('package_order')->where('id',$info['package_order_id'])->update($package_update);
+                if($order_rs === false){
+                    Db::rollback();
+                    $this->error('原套餐订单的剩余课程已不足转出');
+                }
+
+                //生成新订单
+                $new_order = $package_info;
+                unset($new_order['id']);
+                $new_order['order_no'] = '';
+                $new_order['user_id'] = $info['to_user_id'];
+
+                $new_order['sessions'] = $info['sessions'];
+                $new_order['remain'] = $info['sessions'];
+                $new_order['createtime'] = time();
+                $new_order['updatetime'] = time();
+                $new_order['is_gift'] = 0;
+                $new_order['notice_status'] = 0;
+                $new_order['remark'] = '来自转让';
+                $order_id = Db::name('package_order')->insertGetId($new_order);
+                if(!$order_id){
+                    Db::rollback();
+                    $this->error('转让失败');
+                }
+
+                Db::commit();
+                $this->success('转让成功');
+            }elseif($status == 2){
+
+            }
+            Db::rollback();
+
+            $this->success('审核完成');
+        }
+
+        $this->assign('row',$info);
+        return $this->view->fetch();
+    }
+
 }

+ 130 - 0
application/admin/view/packagemove/audit.html

@@ -0,0 +1,130 @@
+<form id="edit-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">{:__('User_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-user_id" disabled  class="form-control" name="row[user_id]" type="text" value="{$row.user_id|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Name')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-name" disabled class="form-control" name="row[name]" type="text" value="{$row.name|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Mobile')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-mobile" disabled class="form-control" name="row[mobile]" type="text" value="{$row.mobile|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Email')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-email" disabled class="form-control" name="row[email]" type="text" value="{$row.email|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Reason')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-reason" disabled class="form-control" name="row[reason]" type="text" value="{$row.reason|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Reason_files')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <ul class="row list-inline faupload-preview" data-listidx="0">
+                <?php
+                        $idcard_images = explode(',',$row['reason_files']);
+                        foreach($idcard_images as $key => $val){
+                ?>
+                <li class="col-xs-3">
+                    <a href="{$val}" data-url="{$val}" target="_blank" class="thumbnail">
+                        <img src="{$val}" onerror="this.src='/admin.php/ajax/icon?suffix=jpg';this.onerror=null;" class="img-responsive"></a>
+                </li>
+
+                <?php } ?>
+            </ul>
+        </div>
+    </div>
+
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Package_order_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-package_order_id" disabled data-rule="required" data-source="packageorder/index" data-field="order_no" class="form-control selectpage" name="row[package_order_id]" type="text" value="{$row.package_order_id|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Sessions')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-sessions" disabled class="form-control" name="row[sessions]" type="number" value="{$row.sessions|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('To_name')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-to_name" disabled class="form-control" name="row[to_name]" type="text" value="{$row.to_name|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('To_mobile')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-to_mobile" disabled class="form-control" name="row[to_mobile]" type="text" value="{$row.to_mobile|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('To_email')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-to_email" disabled class="form-control" name="row[to_email]" type="text" value="{$row.to_email|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('To_user_id')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-to_user_id" disabled class="form-control" name="row[to_user_id]" type="text" value="{$row.to_user_id|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Remark')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-remark" disabled class="form-control" name="row[remark]" type="text" value="{$row.remark|htmlentities}">
+        </div>
+    </div>
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Status')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            
+            <div class="radio">
+            {foreach name="statusList" item="vo"}
+            <label for="row[status]-{$key}"><input id="row[status]-{$key}" name="status" type="radio" value="{$key}" {in name="key" value="$row.status"}checked{/in} /> {$vo}</label>
+            {/foreach}
+            </div>
+
+        </div>
+    </div>
+    <!--<div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Audittime')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-audittime" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="audittime" type="text" value="{:$row.audittime?datetime($row.audittime):''}">
+        </div>
+    </div>-->
+    <div class="form-group">
+        <label class="control-label col-xs-12 col-sm-2">{:__('Auditremark')}:</label>
+        <div class="col-xs-12 col-sm-8">
+            <input id="c-auditremark" class="form-control" name="auditremark" type="text" value="{$row.auditremark|htmlentities}">
+        </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">
+            <font color="red">提交后套餐会自动转出</font>
+        </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-primary btn-embossed disabled">{:__('OK')}</button>
+            <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
+        </div>
+    </div>
+</form>

+ 24 - 0
application/api/controller/Usercenter.php

@@ -490,6 +490,30 @@ class Usercenter extends Api
 
         $data = request_post_hub($field);
 
+        //检查被装让套餐
+        $package = Db::name('package_order')->where('order_status',1)->where('user_id',$this->auth->id)->where('id',$data['package_order_id'])->find();
+        if(empty($package)){
+            $this->error('不存在的套餐订单');
+        }
+        if($package['remain'] < $data['sessions']){
+            $this->error('套餐剩余课时不足');
+        }
+        if($package['endtime'] < time()){
+            //$this->error('套餐已过期');
+        }
+
+        //检查被转让人
+        $to_user = Db::name('user')->where('email',$data['to_email'])->find();
+        if(empty($to_user)){
+            $this->error('被转让人的邮箱没找到对应用户');
+        }
+        if($to_user['id'] == $this->auth->id){
+            $this->error('不能转让给自己');
+        }
+
+        $data['to_user_id'] = $to_user['id'];
+
+        //入库
         $data['user_id'] = $this->auth->id;
         $data['createtime'] = time();
 

+ 4 - 0
application/api/lang/en/Usercenter.php

@@ -8,4 +8,8 @@ return [
     '用户主动取消' => 'User actively cancels',
     '取消完成' => 'Cancellation completed',
     '申请成功,请等待审核' => 'The application is successful, please wait for review',
+    '被转让人的邮箱没找到对应用户' => 'The corresponding user was not found in the email of the transferee',
+    '不能转让给自己' => 'Cannot be transferred to oneself',
+    '不存在的套餐订单' => 'Non existing package orders',
+    '套餐剩余课时不足' => 'Insufficient remaining class hours in the package',
 ];

+ 21 - 2
public/assets/js/backend/packagemove.js

@@ -7,7 +7,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                 extend: {
                     index_url: 'packagemove/index' + location.search,
                     add_url: 'packagemove/add',
-                    edit_url: 'packagemove/edit',
+//                    edit_url: 'packagemove/edit',
 //                    del_url: 'packagemove/del',
                     multi_url: 'packagemove/multi',
                     import_url: 'packagemove/import',
@@ -54,7 +54,23 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
 
 
 
-                        {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
+                        {field: 'operate', title: __('Operate'), table: table,
+                            buttons:[
+                                {
+                                    name:'audit',
+                                    text:'审核',
+                                    title:'审核',
+                                    icon:'fa fa-exclamation-circle',
+                                    classname:'btn btn-xs btn-info btn-dialog',
+                                    url:'packagemove/audit/id/{ids}?dialog=1',
+                                    target:'_self',
+                                    refresh:true,
+                                    hidden:function(row){
+                                     return row.status==0 ? false : true;
+                                     }
+                                }
+                            ],
+                            events: Table.api.events.operate, formatter: Table.api.formatter.operate}
                     ]
                 ]
             });
@@ -68,6 +84,9 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
         edit: function () {
             Controller.api.bindevent();
         },
+        audit: function () {
+            Controller.api.bindevent();
+        },
         api: {
             bindevent: function () {
                 Form.api.bindevent($("form[role=form]"));