Files
Smart-Farm/app/massage/model/CarAtvRecord.php
2025-12-22 14:32:54 +08:00

632 lines
13 KiB
PHP

<?php
namespace app\massage\model;
use app\BaseModel;
use app\shop\model\RefundOrder;
use think\facade\Db;
class CarAtvRecord extends BaseModel
{
//定义表名
protected $name = 'shequshop_car_atv_record';
protected $append = [
'content',
'time_text',
'game_info',
'hx_user_name'
];
/**
* @author chenniang
* @DataTime: 2021-09-28 14:12
* @功能说明:核销人姓名
*/
public function getHxUserNameAttr($value,$data){
if(!empty($data['hx_user'])){
$user_model = new User();
$name = $user_model->where(['id'=>$data['hx_user']])->value('nickName');
return $name;
}
}
/**
* @author chenniang
* @DataTime: 2021-09-27 16:21
* @功能说明:赛事信息
*/
public function getGameInfoAttr($value,$data){
if(!empty($data['id'])){
$game_model = new CarGame();
$dis = [
'type' => 1,
'record_id' => $data['id']
];
$list = $game_model->dataInfo($dis);
if(!empty($list)){
$list['best_time'] = game_time($list['best_time']);
$list['total_time'] = game_time($list['total_time']);
}
return $list;
}
}
/**
* @param $value
* @param $data
* @功能说明:转换时间
* @author chenniang
* @DataTime: 2021-09-26 1 4:11
*/
public function getTimeTextAttr($value,$data){
if(!empty($data['start_time'])&&!empty($data['end_time'])){
$time = date('Y.m.d H:i',$data['start_time']).'-'.date('Y.m.d H:i',$data['end_time']);
return $time;
}
}
/**
* @author chenniang
* @DataTime: 2021-09-15 14:31
* @功能说明:获取活动内容
*/
public function getContentAttr($value,$data){
if(!empty($data['id'])){
$content = Db::name('shequshop_car_atv_record_content')->where(['record_id'=>$data['id']])->select()->toArray();
return array_values($content);
}
}
/**
* @author chenniang
* @DataTime: 2020-09-29 11:04
* @功能说明:添加
*/
public function dataAdd($data){
$data['create_time'] = time();
if(isset($data['content'])){
$content = $data['content'];
unset($data['content']);
}
$res = $this->insert($data);
if(!empty($content)){
$id = $this->getLastInsID();
$this->updateSome($id,$content,$data['uniacid']);
}
return $res;
}
/**
* @author chenniang
* @DataTime: 2021-09-15 11:22
* @功能说明:
*/
public function updateSome($id,$content,$uniacid){
Db::name('shequshop_car_atv_record_content')->where(['record_id'=>$id])->delete();
if(!empty($content)){
foreach ($content as $value){
$insert = [
'uniacid' => $uniacid,
'content_id' => $value['content_id'],
'content_key' => $value['content_key'],
'content_value' => $value['content_value'],
'content_type' => $value['content_type'],
'record_id' => $id
];
Db::name('shequshop_car_atv_record_content')->insert($insert);
}
}
return true;
}
/**
* @author chenniang
* @DataTime: 2020-09-29 11:05
* @功能说明:编辑
*/
public function dataUpdate($dis,$data){
if(isset($data['content'])){
$content = $data['content'];
unset($data['content']);
}
$res = $this->where($dis)->update($data);
if(!empty($content)){
$id = $this->getLastInsID();
$this->updateSome($data['id'],$content,$data['uniacid']);
}
return $res;
}
/**
* @author chenniang
* @DataTime: 2020-09-29 11:06
* @功能说明:列表
*/
public function dataList($dis,$page=10,$mapor=[]){
$data = $this->where($dis)->order('id desc')->paginate($page)->toArray();
return $data;
}
/**
* @author chenniang
* @DataTime: 2021-09-16 13:57
* @功能说明:成绩排行版
*/
public function topRecordList($dis,$page=10,$mapor=[]){
$data = $this->alias('a')
->join('massage_service_user_list b','a.user_id = b.id')
->where($dis)
->where(function ($query) use ($mapor){
$query->whereOr($mapor);
})
->field('a.*,b.nickName,b.avatarUrl')
->group('a.id')
->order('a.result asc,a.id desc')
->paginate($page)
->toArray();
return $data;
}
/**
* @author chenniang
* @DataTime: 2021-09-16 13:57
* @功能说明:成绩排行版(可根据时间)
*/
public function timeTopRecordList($dis,$page=10,$time = 1,$mapor=[]){
switch ($time){
case 1:
$time_text = 'day';
break;
case 2:
$time_text = 'week';
break;
case 3:
$time_text = 'month';
break;
case 4:
$time_text = 'year';
break;
}
$data = $this->alias('a')
->join('massage_service_user_list b','a.user_id = b.id')
->join('shequshop_car_game c','a.id = c.record_id')
->where($dis)
->whereTime('a.start_time',$time_text)
->where(function ($query) use ($mapor){
$query->whereOr($mapor);
})
->field('a.*,b.nickName')
->group('a.id')
->order('c.best_time asc,a.id desc')
->paginate($page)
->toArray();
return $data;
}
/**
* @author chenniang
* @DataTime: 2021-09-16 13:57
* @功能说明:积分排行榜
*/
public function integralRecordList($dis,$page=10,$mapor=[]){
// $data = $this->alias('a')
// ->join('massage_service_user_list b','a.user_id = b.id')
// ->where($dis)
// ->where(function ($query) use ($mapor){
// $query->whereOr($mapor);
// })
// ->field('a.*,b.nickName,b.avatarUrl')
// ->group('a.id')
// ->order('a.integral desc,a.id desc')
// ->paginate($page)
// ->toArray();
$data = $this->alias('a')
->join('massage_service_user_list b','a.user_id = b.id')
->join('shequshop_car_game c','a.id = c.record_id','left')
->where($dis)
->where('a.pay_type','>',1)
->where(function ($query) use ($mapor){
$query->whereOr($mapor);
})
->field('a.*,c.best_time as best_time,b.nickName,b.avatarUrl')
->group('a.id')
->order(['a.integral desc','a.pay_type desc','c.best_time','a.id desc'])
->paginate($page)
->toArray();
return $data;
}
/**
* @author chenniang
* @DataTime: 2021-09-16 13:57
* @功能说明:记录列表
*/
public function recordList($dis,$page=10,$mapor=[]){
$data = $this->alias('a')
->join('massage_service_user_list b','a.user_id = b.id')
->where($dis)
->where(function ($query) use ($mapor){
$query->whereOr($mapor);
})
->field('a.*,b.nickName')
->group('a.id')
->order('a.id desc')
->paginate($page)
->toArray();
return $data;
}
/**
* @author chenniang
* @DataTime: 2020-09-29 11:43
* @功能说明:
*/
public function dataInfo($dis){
$data = $this->where($dis)->find();
return !empty($data)?$data->toArray():[];
}
/**
* @author chenniang
* @DataTime: 2021-10-19 17:58
* @功能说明:获取排名
*/
public function getRecordTop($record){
$dis = [
'a.atv_id' => $record['atv_id']
];
$data = $this->alias('a')
->join('shequshop_car_game c','a.id = c.record_id')
->where($dis)
->field('a.id')
->group('a.id')
->order(['a.integral desc','a.pay_type desc','c.best_time','a.id desc'])
->select()
->toArray();
$top = 0;
if(!empty($data)){
foreach ($data as $k=>$v){
if($v['id']==$record['id']){
$top = $k+1;
}
}
}
return $top;
}
/**
* @author chenniang
* @DataTime: 2021-09-16 13:57
* @功能说明:记录列表
*/
public function atvRecordList($dis,$page=10,$mapor=[],$rank = 2){
$top = $rank==2?'a.integral':'a.integral desc';
$data = $this->alias('a')
->join('shequshop_car_atv_list b','a.atv_id = b.id')
->join('shequshop_car_game c','a.id = c.record_id','left')
->where($dis)
->where(function ($query) use ($mapor){
$query->whereOr($mapor);
})
->field('a.*,b.title,b.cover,b.atv_num,b.atv_status,c.best_time as best_time,c.major')
->group('a.id')
->order([$top,'a.pay_type desc','c.best_time','a.id desc'])
->paginate($page)
->toArray();
return $data;
}
/**
* @author chenniang
* @DataTime: 2021-09-26 16:44
* @功能说明:支付回调
*/
public function dataResult($order_code,$transaction_id){
$data = $this->dataInfo(['order_code'=>$order_code]);
if($data['pay_type']==1){
//由于时效性问题 报名数量放到回调里面处理
// $atv_model = new CarAtvList();
//
// $atv = $atv_model->dataInfo(['id'=>$data['atv_id']]);
// //报名已经满了
// if($atv['atv_num']<=$atv['have_num']){
//
// $this
//
//
// //不再执行
// return true;
// }
//
//
// $atv_model->where(['id'=>$data['atv_id']])->update(['have_num'=>Db::raw("have_num+1")]);
$update = [
'pay_type' => 2,
'pay_time' => time(),
'transaction_id' => $transaction_id
];
$this->dataUpdate(['id'=>$data['id']],$update);
//余额扣除
if($data['balance']>0){
$user_model = new User();
$user = $user_model->dataInfo(['id'=>$data['user_id']]);
$balance = $user['balance'] - $data['balance'];
$user_model->dataUpdate(['id'=>$data['user_id']],['balance'=>$balance]);
}
}
return true;
}
/**
* @author chenniang
* @DataTime: 2021-09-26 17:19
* @功能说明:取消超时未支付的
*/
public function autoCancelRecord($user_id=0){
if(!empty($user_id)){
$dis[] = ['user_id','=',$user_id];
}else{
$dis[] = ['over_time','<',time()];
}
$dis[] = ['pay_type','=',1];
$list = $this->where($dis)->select()->toArray();
if(!empty($list)){
foreach ($list as $value){
Db::startTrans();
$res = $this->cancelRecord($value,1);
if(!empty($res['code'])){
Db::rollback();
}
Db::commit();
}
}
return true;
}
/**
* @author chenniang
* @DataTime: 2021-09-26 17:19
* @功能说明:取消超时未支付的
*/
public function cancelRecord($record,$auto_refund=0){
$atv_model = new CarAtvList();
$update = [
'pay_type' => -1,
'refund_time' => time(),
'auto_refund' => $auto_refund,
];
$res = $this->dataUpdate(['id'=>$record['id']],$update);
if($res==0){
return ['code'=>500,'msg'=>'取消失败1'];
}
$atv = $atv_model->dataInfo(['id'=>$record['atv_id']]);
$res = $atv_model->dataUpdate(['id'=>$record['atv_id']],['have_num'=>$atv['have_num']-1]);
if($res==0){
return ['code'=>500,'msg'=>'取消失败'];
}
return true;
}
/**
* @author chenniang
* @DataTime: 2021-11-12 15:06
* @功能说明:积分到账
*/
public function pointSuccess($uniacid){
$dis = [
'pay_type' => 7,
'have_tx' => 0,
'uniacid' => $uniacid
];
$order = $this->where($dis)->field('id,integral,user_id,uniacid')->select()->toArray();
if(!empty($order)){
$integral_model = new \app\member\model\Integral();
foreach ($order as $value){
//修改订单状态
$res = $this->where(['id'=>$value['id'],'have_tx'=>0])->update(['have_tx'=>1]);
//增加用户积分
if($res==1){
$integral_model->integralUserAdd($value['user_id'],$value['integral'],$value['uniacid'],2,8,$value['id']);
}
}
}
return true;
}
}