89 lines
2.8 KiB
PHP
89 lines
2.8 KiB
PHP
|
|
<?php
|
||
|
|
namespace app\common\model;
|
||
|
|
|
||
|
|
use think\Db;
|
||
|
|
use think\Hook;
|
||
|
|
use think\Model;
|
||
|
|
|
||
|
|
class VipOrder extends Model
|
||
|
|
{
|
||
|
|
protected $name = 'vip_order';
|
||
|
|
protected $autoWriteTimestamp = 'int';
|
||
|
|
protected $createTime = 'createtime';
|
||
|
|
protected $updateTime = 'updatetime';
|
||
|
|
|
||
|
|
|
||
|
|
protected $append = [
|
||
|
|
'createtime_text',
|
||
|
|
'updatetime_text',
|
||
|
|
];
|
||
|
|
public function getCreatetimeTextAttr($value, $data)
|
||
|
|
{
|
||
|
|
$value = $value ? $value : $data['createtime'];
|
||
|
|
return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value;
|
||
|
|
}
|
||
|
|
|
||
|
|
public function getUpdatetimeTextAttr($value, $data)
|
||
|
|
{
|
||
|
|
$value = $value ? $value : $data['updatetime'];
|
||
|
|
return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value;
|
||
|
|
}
|
||
|
|
/**
|
||
|
|
* 创建金币订单号
|
||
|
|
*/
|
||
|
|
public static function CreateOrder($user_id, $pay_type, $money, $nums){
|
||
|
|
$order_sn = self::create_order_no('V', $user_id);
|
||
|
|
$trade_sn = self::create_order_no('VIP', $user_id);
|
||
|
|
$insert_data = [
|
||
|
|
'order_sn' => $order_sn,
|
||
|
|
'out_trade_no' => $trade_sn,
|
||
|
|
'user_id' => $user_id,
|
||
|
|
'price' => $money,
|
||
|
|
'pay_status' => '0',
|
||
|
|
'pay_type' => $pay_type,
|
||
|
|
'day_num' => $nums,
|
||
|
|
];
|
||
|
|
self::create($insert_data);
|
||
|
|
return ['code' => 1, 'msg' => '创建成功', 'data' => ['out_trade_no' => $trade_sn]];
|
||
|
|
}
|
||
|
|
|
||
|
|
public static function resetOrderSn($order_id,$user_id)
|
||
|
|
{
|
||
|
|
$order_info = self::get($order_id);
|
||
|
|
if (empty($order_info)) return ['code' => 0, 'msg' => '订单不存在'];
|
||
|
|
if ($order_info->user_id != $user_id){
|
||
|
|
return ['code' => 0, 'msg' => '非法信息'];
|
||
|
|
}
|
||
|
|
$trade_sn = self::create_order_no('GL', $order_info['user_id']);
|
||
|
|
$order_info->out_trade_no = $trade_sn;
|
||
|
|
$order_info->save();
|
||
|
|
return ['code' => 1, 'msg' => '重置成功', 'data' => ['out_trade_no' => $trade_sn]];
|
||
|
|
}
|
||
|
|
|
||
|
|
public function orderFinish($out_trade_no){
|
||
|
|
$order = $this->where('out_trade_no',$out_trade_no)->find();
|
||
|
|
if($order['pay_status'] == 1){
|
||
|
|
$this->error('订单已支付');
|
||
|
|
}
|
||
|
|
//更新订单状态
|
||
|
|
$this->where('id',$order['id'])->update(['pay_status'=>1,'pay_time'=>time()]);
|
||
|
|
$user_info = User::get($order['user_id']);
|
||
|
|
if($user_info['vip_endtime']<= time()){
|
||
|
|
$user_info->vip_endtime = time() + (86400*$order['day_num']);
|
||
|
|
}else{
|
||
|
|
$user_info->vip_endtime = $user_info['vip_endtime'] + (86400*$order['day_num']);
|
||
|
|
}
|
||
|
|
$user_info->save();
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
private static function create_order_no($field = 'D', $user_id)
|
||
|
|
{
|
||
|
|
$uniqueId = $field . $user_id . date('Ymd') . substr(time(), 5, 5);
|
||
|
|
return $uniqueId;
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|