Ai_GirlFriend/xunifriend_RaeeC/application/common/model/JinbiOrder.php
2026-01-31 19:15:41 +08:00

112 lines
3.5 KiB
PHP

<?php
namespace app\common\model;
use think\Db;
use think\Hook;
use think\Model;
class JinbiOrder extends Model
{
protected $name = 'jibin_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 giftsCreateOrder($gifts_id, $from_user_id, $pay_type, $nums)
{
$gifts_info = Gifts::get($gifts_id);
if (empty($gifts_info)) return ['code' => 0, 'msg' => '礼物不存在'];
$order_sn = self::create_order_no('G', $from_user_id);
$trade_sn = self::create_order_no('GL', $from_user_id);
$jinbi_scale = config('site.jinbi_scale');
$price = $gifts_info['price'] / $jinbi_scale;
$order_money = $price * $nums;
$insert_data = [
'order_sn' => $order_sn,
'out_trade_no' => $trade_sn,
'user_id' => $from_user_id,
'price' => $order_money,
'pay_status' => '0',
'pay_type' => $pay_type,
'jinbi' => $gifts_info['price']*$nums,
];
self::create($insert_data);
return ['code' => 1, 'msg' => '创建成功', 'data' => ['out_trade_no' => $trade_sn]];
}
/**
* 创建金币订单号
*/
public static function CreateOrder($user_id, $pay_type, $money, $nums){
$order_sn = self::create_order_no('G', $user_id);
$trade_sn = self::create_order_no('GL', $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,
'jinbi' => $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::money($order['jinbi'], $order['user_id'], '金币充值');
return true;
}
private static function create_order_no($field = 'D', $user_id)
{
$uniqueId = $field . $user_id . date('Ymd') . substr(time(), 5, 5);
return $uniqueId;
}
}