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('订单不存在,数据异常!');
        }
    }
}