186 lines
7.3 KiB
PHP
186 lines
7.3 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
namespace app\api\model;
|
||
|
|
|
||
|
|
use think\Db;
|
||
|
|
use think\Model;
|
||
|
|
|
||
|
|
class Contract extends Model
|
||
|
|
{
|
||
|
|
|
||
|
|
//签约列表
|
||
|
|
public function get_user_contract_list($uid, $page, $page_limit){
|
||
|
|
$page = intval($page);
|
||
|
|
$page_limit = $page_limit < 20 ? $page_limit : 20;
|
||
|
|
|
||
|
|
$user_info = db::name('user')->find($uid);
|
||
|
|
if(!$user_info){
|
||
|
|
return ['code' => 201, 'msg' => '参数错误', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
$map = [];
|
||
|
|
$map[] = ['a.uid', '=', $uid];
|
||
|
|
$map[] = ['a.is_delete', '=', 1];
|
||
|
|
$list = db::name('user_sign_contract')->alias('a')->join('yy_user b', 'a.sign_uid = b.uid')->field('a.id, b.uid, b.sex, b.nick_name, b.base64_nick_name, b.head_pic, a.end_time')->where($map)->order('a.id desc')->page($page, $page_limit)->select();
|
||
|
|
foreach ($list as $k => &$v){
|
||
|
|
$v['nick_name'] = mb_convert_encoding(base64_decode($v['base64_nick_name']), 'UTF-8', 'UTF-8');
|
||
|
|
$v['head_pic'] = localpath_to_netpath($v['head_pic']);
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
return ['code' => 200, 'msg' => '获取成功', 'data' => $list];
|
||
|
|
}
|
||
|
|
|
||
|
|
//制作人续约是否缴费
|
||
|
|
public function user_renewal_contract_status($uid, $id){
|
||
|
|
$user_info = db::name('user')->find($uid);
|
||
|
|
if(!$user_info){
|
||
|
|
return ['code' => 201, 'msg' => '参数错误', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
//签约信息
|
||
|
|
$user_sign_contract_info = db::name('user_sign_contract')->where('id', $id)->where('is_delete', 1)->find();
|
||
|
|
if(!$user_sign_contract_info){
|
||
|
|
return ['code' => 201, 'msg' => '该签约信息不存在', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
if($uid != $user_sign_contract_info['uid']){
|
||
|
|
return ['code' => 201, 'msg' => '您不是该签约信息的制作人', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
if($user_sign_contract_info['renew_num'] >= 3){//续约缴费
|
||
|
|
$sign_user_info = db::name('user')->find($user_sign_contract_info['sign_uid']);
|
||
|
|
$money = (int)($sign_user_info['social'] * 0.1);
|
||
|
|
|
||
|
|
}else{//续约免费
|
||
|
|
$money = 0;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
$data = [];
|
||
|
|
$data['money'] = $money;
|
||
|
|
|
||
|
|
return ['code' => 200, 'msg' => '获取成功', 'data' => $data];
|
||
|
|
}
|
||
|
|
|
||
|
|
//制作人续约
|
||
|
|
public function user_renewal_contract($uid, $id){
|
||
|
|
$user_info = db::name('user')->find($uid);
|
||
|
|
if(!$user_info){
|
||
|
|
return ['code' => 201, 'msg' => '参数错误', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
//签约信息
|
||
|
|
$user_sign_contract_info = db::name('user_sign_contract')->where('id', $id)->where('is_delete', 1)->find();
|
||
|
|
if(!$user_sign_contract_info){
|
||
|
|
return ['code' => 201, 'msg' => '该签约信息不存在', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
if($uid != $user_sign_contract_info['uid']){
|
||
|
|
return ['code' => 201, 'msg' => '您不是该签约信息的制作人', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
Db::startTrans();
|
||
|
|
try {
|
||
|
|
$renewal_time = 60*60*24*7;
|
||
|
|
|
||
|
|
if($user_sign_contract_info['renew_num'] >= 3){//续约缴费
|
||
|
|
//当前截止日期
|
||
|
|
$end_time = $user_sign_contract_info['end_time'] - (60*60*24*2);
|
||
|
|
if($end_time > time()){
|
||
|
|
return ['code' => 201, 'msg' => '到期前两天才可续约', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
$sign_user_info = db::name('user')->find($user_sign_contract_info['sign_uid']);
|
||
|
|
$money = (int)($sign_user_info['social'] * 0.1);
|
||
|
|
|
||
|
|
//扣除制作人金币续约
|
||
|
|
$reslut = model('admin/User')->change_user_money_by_uid($uid, -$money, 2, 25, "制作人续约", $uid, 0, 0);
|
||
|
|
if ($reslut['code'] == 201) {
|
||
|
|
Db::rollback();
|
||
|
|
return ['code' => 201, 'msg' => $reslut['msg'], 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
//更新签约信息
|
||
|
|
$reslut = db::name('user_sign_contract')->where('id', $id)->inc('end_time', $renewal_time)->update(['renew_num' => 0, 'send_message_num' => 0, 'update_time' => time()]);
|
||
|
|
}else{//续约免费
|
||
|
|
$money = 0;
|
||
|
|
|
||
|
|
//更新签约信息
|
||
|
|
$reslut = db::name('user_sign_contract')->where('id', $id)->inc('end_time', $renewal_time)->inc('renew_num', 1)->update(['send_message_num' => 0, 'update_time' => time()]);
|
||
|
|
}
|
||
|
|
if(!$reslut){
|
||
|
|
Db::rollback();
|
||
|
|
return ['code' => 201, 'msg' => '续约失败', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
Db::commit();
|
||
|
|
|
||
|
|
return ['code' => 200, 'msg' => '续约成功', 'data' => null];
|
||
|
|
} catch (\Exception $e) {
|
||
|
|
// 回滚事务
|
||
|
|
dump($e);
|
||
|
|
Db::rollback();
|
||
|
|
return ['code' => 201, 'msg' => '续约失败', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
//制作人解约
|
||
|
|
public function user_cancel_contract($uid, $id){
|
||
|
|
$user_info = db::name('user')->find($uid);
|
||
|
|
if(!$user_info){
|
||
|
|
return ['code' => 201, 'msg' => '参数错误', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
//签约信息
|
||
|
|
$user_sign_contract_info = db::name('user_sign_contract')->where('id', $id)->where('is_delete', 1)->find();
|
||
|
|
if(!$user_sign_contract_info){
|
||
|
|
return ['code' => 201, 'msg' => '该签约信息不存在', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
if($uid != $user_sign_contract_info['uid']){
|
||
|
|
return ['code' => 201, 'msg' => '您不是该签约信息的制作人', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
$reslut = db::name('user_sign_contract')->where('id', $id)->update(['is_delete' => 2, 'update_time' => time()]);
|
||
|
|
if(!$reslut){
|
||
|
|
return ['code' => 201, 'msg' => '解约失败', 'data' => null];
|
||
|
|
}else{
|
||
|
|
return ['code' => 200, 'msg' => '解约成功', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
//收礼物涨身价
|
||
|
|
public function receive_gift_rise_user_social($uid, $total_gift_price){
|
||
|
|
$user_info = db::name('user')->find($uid);
|
||
|
|
//该用户是否已签约
|
||
|
|
$user_sign_contract_info = db::name('user_sign_contract')->where('sign_uid', $uid)->where('is_delete', 1)->find();
|
||
|
|
if($user_sign_contract_info && $user_info['social'] > 0){
|
||
|
|
//添加身价金额
|
||
|
|
$add_social = (int)($total_gift_price * 0.2);
|
||
|
|
if($add_social > 0){
|
||
|
|
$reslut = db::name('user')->where('uid', $uid)->inc('social', $add_social)->update();
|
||
|
|
if(!$reslut){
|
||
|
|
return ['code' => 201, 'msg' => '请重试', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
$insert = [];
|
||
|
|
$insert['uid'] = $uid;
|
||
|
|
$insert['total_gift_price'] = $total_gift_price;
|
||
|
|
$insert['add_social'] = $add_social;
|
||
|
|
$insert['add_time'] = time();
|
||
|
|
$reslut = db::name('user_social_log')->insert($insert);
|
||
|
|
if(!$reslut){
|
||
|
|
return ['code' => 201, 'msg' => '请重试', 'data' => null];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return ['code' => 200, 'msg' => '成功', 'data' => null];
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|