MemberPointRepository = $MemberPointRepository;
$this->TaskLogRepository = $TaskLogRepository;
$this->TaskRepository = $TaskRepository;
$this->PayService = $PayService;
$this->resumeRepository = $resumeRepository;
}
public function getPointsById($user)
{
$content = $this->MemberPointRepository->getPointsById($user->id, $user->utype);
$points = $this->TaskLogRepository->getTodayPoints($user->id, $user->utype);
$todayPoints = $points ? $points : 0;
$onPoints = $this->TaskLogRepository->getSinglePoints($user->id, $user->utype);
$dayPoints = $this->TaskLogRepository->getDayPoints($user->id, $user->utype);
$arrAll = $this->TaskRepository->getAllPoints($user->utype);
$allPoints = 0;
foreach ($arrAll as $key => $val) {
if ($val->once==1) {
$allPoints+=$val->points;
} else {
$allPoints+=(abs($val->times))*($val->points);
}
}
$lastPoints = (int)$allPoints-$onPoints-$dayPoints > 0 ? (int)$allPoints-$onPoints-$dayPoints : 0;
$member = MemberInfo::where(['uid'=>$user->id])->first();
$memhanselGet = MembersHandsel::where([
'uid'=>$user->id,
'utype'=>$user->utype,
'operate'=>1,
])->orderBy('id', 'desc')->paginate(10);
$memhanselPo = MembersHandsel::where([
'uid'=>$user->id,
'utype'=>$user->utype,
'operate'=>2,
])->orderBy('id', 'desc')->paginate(10);
$pointGet = MembersHandsel::where([
'uid'=>$user->id,
'utype'=>$user->utype,
'operate'=>1,
])->sum('points');
$pointPo = MembersHandsel::where([
'uid'=>$user->id,
'utype'=>$user->utype,
'operate'=>2,
])->sum('points');
return [
'content' =>$content,
'points'=>$todayPoints,
'lastPoints'=>$lastPoints,
'member'=>$member,
'memhanselGet'=>$memhanselGet,
'memhanselPo'=>$memhanselPo,
'pointGet'=>$pointGet,
'pointPo'=>$pointPo
];
}
/**根据uid 和utype获取points
* @param $uid
* @param $utype
* @return mixed
*/
public function getPoints($uid, $utype)
{
return $this->MemberPointRepository->getPointsById($uid, $utype);
}
/**积分操作
* @param $uid
* @param $utype
* @param $i_type
* @param $points
* @return mixed
*/
public function reportDeal($uid, $utype, $i_type, $points)
{
return $this->MemberPointRepository->reportDeal($uid, $utype, $i_type, $points);
}
/**
* 获取任务状态。
*/
public function getTask($user, $type=0)
{
$task = $this->MemberPointRepository->getTaskById($user->id, $user->utype);
foreach ($task as $key => $val) {
if ($key=='task_logs') {
$task_id = [];
$task_id_w = [];
foreach ($val as $k => $v) {
if ($v['once']!=1) {
$task_id[] = $v['task_id'];
} else {
$task_id_w[] = $v['task_id'];
}
}
}
}
$count = [];
$task_id = array_unique($task_id);
foreach ($task_id as $k => $v) {
$count[$v] = $this->TaskLogRepository->getTaskLogCount($user->id, $v, $user->utype);
}
$task_info = $this->TaskRepository->getTaskById(array_keys($count));
$finshTask = []; //已完成任务。
foreach ($count as $k1 => $v1) {
foreach ($task_info as $key1 => $val1) {
if ($k1==$val1->id) {
if ($val1->times!=-1) {
if ($v1==$val1->times) {
$finshTask[$k1]['id']=$val1->id;
$finshTask[$k1]['title']=$val1->title;
$finshTask[$k1]['points']=$val1->points;
$finshTask[$k1]['type']='日常任务';
$finshTask[$k1]['status']='已完成';
$finshTask[$k1]['t_alias']=$val1->t_alias;
$finshTask[$k1]['count']='(*'.$v1.')';
}
}
}
}
}
$task_info_w = $this->TaskRepository->getTaskById(($task_id_w));
foreach ($task_info_w as $ke => $va) {
$finshTask[$va->id]['id'] = $va->id;
$finshTask[$va->id]['title'] = $va->title;
$finshTask[$va->id]['points'] = $va->points;
$finshTask[$va->id]['type'] = '一次性任务';
$finshTask[$va->id]['status'] = '已完成';
$finshTask[$va->id]['t_alias'] = $va->t_alias;
$finshTask[$va->id]['count']='';
}
$task_ZZ=$this->TaskRepository->getTaskByUtype($user->utype);
$task_info_z = [];
foreach ($task_ZZ as $key => $val) {
if (!in_array($val->id, array_keys($finshTask))) {
$task_info_z[$val->id]['id'] = $val->id;
$task_info_z[$val->id]['title'] = $val->title;
$task_info_z[$val->id]['points'] = $val->points;
if ($val->once==1) {
$task_info_z[$val->id]['count'] = '';
$task_info_z[$val->id]['type'] = '一次性任务';
} else {
$task_info_z[$val->id]['type'] = '日常任务';
$hjk = $this->TaskLogRepository->getTaskLogCount($user->id, $val->id, $user->utype);
$times =$val->times;
if (!$hjk) {
if ($times==-1) {
$task_info_z[$val->id]['count'] = '';
} else {
$task_info_z[$val->id]['count'] = '(*'.$val->times.')';
}
} else {
if ($times==-1) {
$task_info_z[$val->id]['count'] = '';
} else {
$lasT = $times-$hjk;
$task_info_z[$val->id]['count'] = '(*'.$lasT.')';
}
}
}
$defultType = '';
if ($type == 1) {
if (get_subsite_id() > 0) {
$defultType = '/jkq/mobile';
} else {
$defultType = '/mobile';
}
} elseif ($type == 2) {
$defultType = '/jkq';
}
if ($val->id==1) {
$task_info_z[$val->id]['status'] = '去完成';
} elseif ($val->id==2) {
$task_info_z[$val->id]['status'] = '去完成';
} elseif ($val->id==3) {
$task_info_z[$val->id]['status'] = '去完成';
} elseif ($val->id==4) {
$task_info_z[$val->id]['status'] = '去完成';
} elseif ($val->id==5) {
$task_info_z[$val->id]['status'] = '去完成';
} elseif ($val->id==6) {
$task_info_z[$val->id]['status'] = '去完成';
} elseif ($val->id==7) {
$task_info_z[$val->id]['status'] = '去完成';
} elseif ($val->id==9) {
$task_info_z[$val->id]['status'] = '去完成';
} elseif ($val->id==11) {
$task_info_z[$val->id]['status'] = '去完成';
} elseif ($val->id==12) {
$task_info_z[$val->id]['status'] = '去完成';
} elseif ($val->id==13) {
$task_info_z[$val->id]['status'] = '去完成';
} elseif ($val->id==14) {
$task_info_z[$val->id]['status'] = '去完成';
} elseif ($val->id==15) {
$task_info_z[$val->id]['status'] = '去完成';
} else {
$task_info_z[$val->id]['status'] = '去完成';
}
$task_info_z[$val->id]['t_alias'] = $val->t_alias;
}
}
$todayPoints = 0;
$rs=$this->TaskLogRepository->getTodayPoints($user->id, $user->utype);
if ($rs) {
$todayPoints = $rs;
}
$onPoints = $this->TaskLogRepository->getSinglePoints($user->id, $user->utype);
$dayPoints = $this->TaskLogRepository->getDayPoints($user->id, $user->utype);
$arrAll = $this->TaskRepository->getAllPoints($user->utype);
$allPoints = 0;
foreach ($arrAll as $key => $val) {
if ($val->once==1) {
$allPoints+=$val->points;
} else {
$allPoints+=(abs($val->times))*($val->points);
}
}
$lastPoints = (int)$allPoints-$onPoints-$dayPoints > 0 ? (int)$allPoints-$onPoints-$dayPoints : 0;
$member = MemberInfo::where(['uid'=>$user->id])->first();
return[
'w_finsh'=>$task_info_z,
'finsh'=>$finshTask,
'content'=>$task,
'todayPoints'=>$todayPoints,
'lastPoints'=>$lastPoints,
'member'=>$member,
'wap_title'=>'我的任务'
];
}
public function increment_add($type, $user)
{
$resume = $this->resumeRepository->getSuccessResume($user->id, getResumeStatus());
$points = MembersPoint::where(['uid'=>$user->id,'utype'=>$user->utype])->first();
$payment = Payment::select(['id','name','alias'])->get();
foreach ($payment as $key => $val) {
if (!config("aix.system.pay.{$val->alias}.is_on")) {
unset($payment[$key]);
}
}
switch ($type) {
case 'stick':
$info = PersonalServiceStick::select(['id','days','points'])->orderBy('list_order', 'desc')->get();
$tpl_name = 'increment_add_stick';
$wap_title = '简历置顶';
break;
case 'tag':
$tagCategory = Category::where(['alias'=>'AIX_personaltag'])->get();
$tag = PersonalServiceTag::select(['id', 'days', 'points'])->orderBy('list_order', 'desc')->get();
foreach ($resume as $key => $val) {
$PersonalServiceTagLog = PersonalServiceTagLog::where(['resume_id'=>$val->id,'resume_uid'=>$user->id])->first();
if ($PersonalServiceTagLog) {
if ($PersonalServiceTagLog->endtime-time()>0) {
$resume[$key]['tagLog'] = true;
} else {
$resume[$key]['tagLog'] = false;
}
} else {
$resume[$key]['tagLog'] = false;
}
}
$info = ['tagCategory'=>$tagCategory,'tag'=>$tag];
$tpl_name = 'increment_add_tag';
$wap_title = '醒目标签';
break;
default:
//如果没有可以预览的简历信息,则获取默认简历
if ($resume->isEmpty()) {
$def_resume = $this->resumeRepository->getPersonInfo($user->id);
if ($def_resume->toArray()) {
$resume[0] = $def_resume;
} else {
$resume = [];
}
}
$tpl_name = 'increment_add_tpl';
$info = Tpl::where(['tpl_type'=>2,'display'=>1])->get();
$wap_title = '简历模板';
break;
}
return ['tpl'=>$tpl_name,'resume'=>$resume,'info'=>$info,'points'=>$points,'payment'=>$payment,
'wap_title'=>$wap_title];
}
public function pay($input, $user)
{
$order = new Order();
if ($input['payment_name']=='wechat') {
$order->payment_cn = '微信扫码';
} else {
$order->payment_cn = '支付宝';
}
if ($input['is_deductible']) {
$order->pay_type = 3;
$order->amount = $input['amountNum'];
$order->pay_amount = $input['amount'];
$order->pay_points = $input['deductible'];
$order->payment = $input['payment_name'];
$is_deductible = '使用积分抵现(抵扣积分:)'.$input['deductible'].'积分!支付金额:'.$input['amount'].'元';
if ($input['type']=='tag') {
$categorys = Category::where('id', $input['tagid'])->first();
$order->discount = isset($categorys->demand) ? $categorys->demand : '-';
$order->description = "简历标签(简历ID:".$input['resume_id']."),天数:".$input['days']."天,需要积分:".$input['points'].'积分,'.$is_deductible;
$order->service_name = '简历标签';
$order->order_type = 4;
} else {
$order->description = "简历置顶(简历ID:".$input['resume_id']."),天数:".$input['days']."天,需要积分:".$input['points'].'积分,'.$is_deductible;
$order->service_name = '简历置顶';
$order->order_type = 3;
$order->discount = '置顶'.$input['days'].'天';
}
} else {
$order->pay_type = 2;
$order->amount = $input['amountNum'];
$order->pay_amount = $input['amount'];
$order->pay_points = 0;
$order->payment = $input['payment_name'];
$is_deductible = '未使用积分抵现!支付金额:'.$input['amount'].'元';
if ($input['type']=='tag') {
$categorys = Category::where('id', $input['tagid'])->first();
$order->discount = isset($categorys->demand) ? $categorys->demand : '-';
$order->description = "简历标签(简历ID:".$input['resume_id']."),天数:".$input['days']."天,需要积分:".$input['points'].'积分,'.$is_deductible;
$order->service_name = '简历标签';
$order->order_type = 4;
} else {
$order->description = "简历置顶(简历ID:".$input['resume_id']."),天数:".$input['days']."天,需要积分:".$input['points'].'积分,'.$is_deductible;
$order->service_name = '简历置顶';
$order->order_type = 3;
$order->discount = '置顶'.$input['days'].'天';
}
}
$order->charge = json_encode($input);
$order->uid = $user->id;
$order->utype = $user->utype;
$order->save();
return ['order'=>$order,'input'=>$input];
}
public function updateOrder($tradeNo, $input, $order, $route)
{
if (is_weixin()) {
$type = 'official';
} else {
if (strpos($route->uri,'mobile')!== false) {
$type = 'wap';
} else {
if ($input['payment_name']=='wechat') {
$type = 'scan';
} else {
$type = 'web';
}
}
}
/* $type = 'official'; //------------自定义默认值。*/
$payorder=new PayOrder();
$payorder->trade_no=$tradeNo;
if ($input['type']=='tag') {
$payorder->subject="简历标签";
} else {
$payorder->subject="简历置顶";
}
if ($input['is_deductible']) {
$is_deductible = '使用积分抵现(抵扣积分:)'.$input['deductible'].'积分!支付金额:'.$input['amount'].'元';
} else {
$is_deductible = '未使用积分抵现!支付金额:'.$input['amount'].'元';
}
if ($input['type']=='tag') {
$payorder->detail="简历标签(简历ID:".$input['resume_id']."),天数:".$input['days']."天,需要积分:".$input['points'].'积分,'.$is_deductible;
} else {
$payorder->detail="简历置顶(简历ID:".$input['resume_id']."),天数:".$input['days']."天,需要积分:".$input['points'].'积分,'.$is_deductible;
}
$payorder->price=$input['amount'];
$payorder->callback='App\Services\Common\OrderService.updateOrder';
if ($type == 'web') {
$payorder->return_url=route('person.order_list');
}
if ($type=='wap') {
if ($input['payment_name']=='wechat') {
$payorder->return_url=route('mobile.common.orderWechat',['oid'=>$payorder->trade_no]);
} else {
$payorder->return_url=route('mobile.person.order_list');
}
}
if ($type=='official') {
$payorder->openid = $this->PayService->getPayOpenid();
/* $payorder->openid = 'o6poWw3LbYDgCGXCeM-qf-DYV1mo';*/
}
$result=$this->PayService->pay($input['payment_name'], $type, $payorder);
$order->oid = $payorder->trade_no;
$order->save();
if ($input['payment_name']=='wechat') {
if ($type=='wap') {
return [
'code'=>'wechat',
'tradeCode'=>$result,
'type'=>$type
];
}elseif ($type=='official') {
return [
'code'=>'wechat',
'tradeCode'=>$result,
'type'=>$type
];
} else {
return [
'code'=>'wechat',
'tradeCode'=>get_qrcode_html($result->code_url),
'tradeNo'=>[
'number'=>$payorder->trade_no,
],
'type'=>$type
];
}
} else {
return [
'code'=>'alipay',
'tradeCode'=>$result,
];
}
}
public function payStatus($tradeNo)
{
if (!$tradeNo) {
return false;
}
$order = Order::where('oid', $tradeNo)->first();
if ($order->is_pay==2) {
return true;
} else {
return false;
}
}
public function order_list($user, $all)
{
$param_array = array('status','settr');
$params= array();
if ($all) {
foreach ($all as $k => $v) {
if (in_array($k, $param_array)) {
$params[$k] = $v;
}
}
}
$data[] = ['uid','=',$user->id];
$data[] = ['utype','=',$user->utype];
if (request()->status) {
$data[] = ['is_pay','=',request()->status];
}
if (request()->settr) {
$data[] = ['order_type','=',request()->settr];
}
return['order'=>Order::where($data)->orderBy('id', 'desc')->paginate(10),'params'=>$params];
}
public function order_detail($oid,$user)
{
$res = Order::where(['uid'=>$user->id,'utype'=>$user->utype])->get()->toArray();
$array_id = array_column($res,'oid');
if(!in_array($oid,$array_id)){
throw new ResponseException('订单不存在!');
}
$order = Order::where(['oid'=>$oid])->first();
$charge = json_decode($order->charge);
$order->charge_cn = '';
if ($charge) {
$order->charge_cn = isset(Resume::find($charge->resume_id)->title) ?
Resume::find($charge->resume_id)->title : '';
$order->service_time = '';
if ($order->order_type==3) {
if (isset(PersonalServiceStickLog::where(['resume_id'=>$charge->resume_id])->first()->endtime)) {
$endtime = PersonalServiceStickLog::where(['resume_id'=>$charge->resume_id])->first()->endtime;
if ($order->is_pay==2) {
$order->service_time = $endtime;
}
}
}
if ($order->order_type==4) {
if (isset(PersonalServiceTagLog::where(['resume_id'=>$charge->resume_id])->first()->endtime)) {
$endtime = PersonalServiceTagLog::where(['resume_id'=>$charge->resume_id])->first()->endtime;
if ($order->is_pay==2) {
$order->service_time = $endtime;
}
}
}
}
return $order;
}
public function order_cancel($id,$user)
{
if (!$id) {
throw new ResponseException('订单不存在!');
}
$res = Order::where(['uid'=>$user->id,'utype'=>$user->utype])->get()->toArray();
$array_id = array_column($res,'id');
if(!in_array($id,$array_id)){
throw new ResponseException('订单不存在!');
}
return Order::where(['id'=>$id])->update(['is_pay'=>3]);
}
public function order_delete($id,$user)
{
if (!$id) {
throw new ResponseException('订单不存在!');
}
$res = Order::where(['uid'=>$user->id,'utype'=>$user->utype])->get()->toArray();
$array_id = array_column($res,'id');
if(!in_array($id,$array_id)){
throw new ResponseException('订单不存在!');
}
return Order::where(['id'=>$id])->delete();
}
public function payAgain($id, $route)
{
if (!$id) {
throw new ResponseException('订单不存在!');
}
$order = Order::where(['id'=>$id])->first();
if ($order) {
if (is_weixin()) {
$type = 'wap';
} else {
if (strpos($route->uri,'mobile')!== false) {
$type = 'wap';
} else {
if ($order->payment=='wechat') {
$type = 'scan';
} else {
$type = 'web';
}
}
}
$payorder = PayOrder::where(['trade_no'=>$order->oid])->first();
if ($type == 'web') {
$payorder->return_url=route('person.order_list');
}
if ($type=='wap') {
$payorder->return_url=route('mobile.person.order_list');
}
$result=$this->PayService->pay($order->payment, $type, $payorder);
if ($order->payment=='wechat') {
if ($type=='wap') {
return [
'code'=>'wechat',
'tradeCode'=>$result,
'type'=>$type
];
} else {
return [
'code'=>'wechat',
'tradeCode'=>get_qrcode_html($result->code_url),
'tradeNo'=>[
'number'=>$payorder->trade_no,
],
'type'=>$type
];
}
} else {
return [
'code'=>'alipay',
'tradeCode'=>$result,
];
}
} else {
throw new ResponseException('订单不存在,数据异常!');
}
}
}