153 lines
4.7 KiB
PHP
153 lines
4.7 KiB
PHP
<?php
|
|
namespace app\common\model;
|
|
|
|
use think\Db;
|
|
use think\Hook;
|
|
use think\Model;
|
|
|
|
class Gifts extends Model
|
|
{
|
|
protected $name = 'gifts';
|
|
protected $autoWriteTimestamp = 'int';
|
|
protected $createTime = 'createtime';
|
|
protected $updateTime = 'updatetime';
|
|
|
|
|
|
protected $append = [
|
|
'createtime_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 getList($where = [], $order = 'weigh desc', $field = null, $limit = null)
|
|
{
|
|
$list = self::where($where)->order($order)->field($field)->paginate();
|
|
return $list;
|
|
}
|
|
|
|
/*
|
|
* 赠送礼物
|
|
*/
|
|
public static function giveGift($gift_id, $from_user_id, $to_user_id, $num = 1){
|
|
//检测礼物
|
|
$gift = self::get($gift_id);
|
|
if(!$gift){
|
|
return ['code'=>0,'masg'=>'礼物不存在'];
|
|
}
|
|
if($gift['status'] != 1){
|
|
return ['code'=>0,'masg'=>'礼物已下架'];
|
|
}
|
|
//检测用户
|
|
$from_user = User::get($from_user_id);
|
|
if(!$from_user){
|
|
return ['code'=>0,'masg'=>'用户不存在'];
|
|
}
|
|
$to_user = User::get($to_user_id);
|
|
if(!$to_user){
|
|
return ['code'=>0,'masg'=>'用户不存在'];
|
|
}
|
|
$price = $gift['price'] * $num;
|
|
if($from_user['money'] < $price){
|
|
return ['code'=>0,'masg'=>'金币不足'];
|
|
}
|
|
|
|
//判断是不是好友
|
|
$isFriend_1 = FriendRelation::isFriend($from_user_id, $to_user_id);
|
|
$isFriend_2 = FriendRelation::isFriend($to_user_id, $from_user_id);
|
|
if (!$isFriend_1 || !$isFriend_2) {
|
|
return ['code'=>0,'masg'=>'请先添加对方为好友'];
|
|
}
|
|
Db::startTrans();
|
|
try {
|
|
//扣除金币
|
|
User::money($price*-1, $from_user_id, '赠送礼物:'.$gift['name']);
|
|
//增加礼物记录
|
|
$insert_data = [
|
|
'gifts_id'=>$gift_id,
|
|
'from_user_id'=>$from_user_id,
|
|
'to_user_id'=>$to_user_id,
|
|
'nums'=>$num,
|
|
'name'=>$gift['name'],
|
|
'image'=>$gift['image'],
|
|
'intimacy_value'=>$gift['intimacy_value'] * $num,
|
|
'createtime'=>time(),
|
|
];
|
|
|
|
GiftsLog::create($insert_data);
|
|
//增加亲密度
|
|
FriendRelation::addFriendDensity($from_user_id, $to_user_id, $gift['intimacy_value'] * $num,'gifts');
|
|
|
|
//监听亲密度升级问题
|
|
$data=['user_id'=>$from_user_id,'friend_id'=>$to_user_id,'intimacy_value'=>$insert_data['intimacy_value']];
|
|
Hook::listen('intimacy_uplevel', $data);
|
|
Db::commit();
|
|
}catch (\Exception $e){
|
|
Db::rollback();
|
|
return ['code'=>0,'masg'=>$e->getMessage()];
|
|
}
|
|
return ['code'=>1,'masg'=>'赠送成功'];
|
|
|
|
}
|
|
|
|
/*
|
|
* 赠送礼物-给女友
|
|
*/
|
|
public static function giveGiftGirlfriend($gift_id, $from_user_id, $num = 1){
|
|
//检测礼物
|
|
$gift = self::get($gift_id);
|
|
if(!$gift){
|
|
return ['code'=>0,'masg'=>'礼物不存在'];
|
|
}
|
|
if($gift['status'] != 1){
|
|
return ['code'=>0,'masg'=>'礼物已下架'];
|
|
}
|
|
//检测用户
|
|
$from_user = User::get($from_user_id);
|
|
if(!$from_user){
|
|
return ['code'=>0,'masg'=>'用户不存在'];
|
|
}
|
|
|
|
$price = $gift['price'] * $num;
|
|
if($from_user['money'] < $price){
|
|
return ['code'=>0,'masg'=>'金币不足'];
|
|
}
|
|
|
|
Db::startTrans();
|
|
try {
|
|
//扣除金币
|
|
User::money($price*-1, $from_user_id, '赠送礼物:'.$gift['name']);
|
|
//增加礼物记录
|
|
$insert_data = [
|
|
'gifts_id'=>$gift_id,
|
|
'from_user_id'=>$from_user_id,
|
|
'to_user_id'=>0,
|
|
'nums'=>$num,
|
|
'name'=>$gift['name'],
|
|
'image'=>$gift['image'],
|
|
'intimacy_value'=>$gift['intimacy_value'] * $num,
|
|
'createtime'=>time(),
|
|
'type'=>2,
|
|
];
|
|
GiftsLog::create($insert_data);
|
|
$UserBondLog = new UserBondLog();
|
|
$UserBondLog->add_log(3,$gift['intimacy_value'] * $num,$from_user);
|
|
Db::commit();
|
|
}catch (\Exception $e){
|
|
Db::rollback();
|
|
return ['code'=>0,'masg'=>$e->getMessage()];
|
|
}
|
|
|
|
}
|
|
|
|
} |