serviceService = $serviceService; $this->membersSetmealService = $membersSetmealService; $this->payService = $payService; $this->setmealService = $setmealService; $this->memberPointService = $memberPointService; $this->orderService = $orderService; $this->memberLogRepository = $memberLogRepository; $this->memberHandselRepository = $memberHandselRepository; $this->membersChargeLogRepository = $membersChargeLogRepository; $this->paymentService = $paymentService; $this->setmealIncrementsService = $setmealIncrementsService; $this->companyService = $companyService; $this->queueAutoRefreshRepository = $queueAutoRefreshRepository; $this->jobsRepository = $jobsRepository; $this->promotionRepository = $promotionRepository; $this->setmealIncrementsRepository = $setmealIncrementsRepository; $this->taskLogRepository = $taskLogRepository; } /**我的套餐 * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function index() { $user = auth('web-company')->user();//企业信息 $res = $this->serviceService->index($user); return view('mobile.app.company.service.setmeal.index', $res); } public function setmealDetail(Request $request) { $user = auth('web-company')->user();//企业信息 $res = $this->serviceService->setmealDetail($request->all(), $user); if ($request->ajax()) { if ($res['setmealDetail']->lastPage() < $res['setmealDetail']->currentPage()) { return response()->json(['status'=>0]); } return response()->json(['status'=>1,'data'=>view('mobile.app.company.service.setmeal.ajax.ajax_setmeal_detail', ['setmealDetail'=>$res['setmealDetail']])->render()]); } $res['wap_title']='我的套餐'; return view('mobile.app.company.service.setmeal.setmeal_detail', $res); } /**积分任务 * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function points() { $user = auth('web-company')->user(); $myPoints = $this->memberPointService->getPoints($user->id, 1); $signCount = $this->taskLogRepository->getTaskLogCount($user->id, 18, $user->utype); $res = [ 'myPoints' =>$myPoints, 'signCount' =>$signCount, 'wap_title'=>'我的积分' ]; return view('mobile.app.company.service.points.index', $res); } public function pointsTask() { $user = auth('web-company')->user(); $res = $this->serviceService->points($user, 1); $res['wap_title'] ='积分任务'; return view('mobile.app.company.service.points.points_task', $res); } /**积分明细 * @param Request $request * @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\JsonResponse|\Illuminate\View\View * @throws \Throwable */ public function pointsDetail(Request $request) { $user = auth('web-company')->user(); $type = $request->type?$request->type:1; $res = $this->serviceService->pointsDetail($type, $user); if ($request->ajax()) { if ($res['content']->lastPage() < $res['content']->currentPage()) { return response()->json(['status'=>0]); } return response()->json(['status'=>1,'data'=>view('mobile.app.company.service.points.ajax.ajax_points_list', ['content'=>$res['content'],'type'=>$res['type']])->render()]); } $res['wap_title']='积分明细'; return view('mobile.app.company.service.points.points_list', $res); } /**套餐升级 * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function setmealAdd() { $user = auth('web-company')->user(); $setmeal = $this->serviceService->setmealAddMobile($user); $setmeal['wap_title'] = '套餐升级'; if (request()->ajax()) { return response()->json(['status'=>1,'data'=>$setmeal]); } return view('mobile.app.company.service.setmeal.setmeal_add', $setmeal); } /**套餐弹窗 * @return \Illuminate\Http\JsonResponse * @throws \Throwable */ public function paySetmeal() { $user = auth('web-company')->user(); $mysetmeal = $this->membersSetmealService->getSetmealByUid($user->id, $user->utype); if (config('aix.companyset.setmeal_com.setmeal_com_set.is_superposition') == 0 && config('aix.companyset.setmeal_com.setmeal_com_set.is_superposition_time') == 0) { //项目和时间都不叠加 $tip = '您当前是【' . $mysetmeal->setmeal_name . '】重新开通套餐
1. 原有套餐资源以新开套餐资源为准;
2. 原有会员服务时长以新开套餐时长为准;
确定要重新开通套餐吗?'; } elseif (config('aix.companyset.setmeal_com.setmeal_com_set.is_superposition') == 0 && config('aix.companyset.setmeal_com.setmeal_com_set.is_superposition_time') == 1) { //项目不叠加时间叠加 $tip = '您当前是【' . $mysetmeal->setmeal_name . '】重新开通套餐
您的原套餐资源会被新开通的套餐资源覆盖
确定要重新开通套餐吗?'; } elseif (config('aix.companyset.setmeal_com.setmeal_com_set.is_superposition') == 1 && config('aix.companyset.setmeal_com.setmeal_com_set.is_superposition_time') == 0) { //项目叠加时间不叠加 $tip = '您当前是【' . $mysetmeal->setmeal_name . '】重新开通套餐
您的会员服务时长将以新开套餐服务时长为准
确定要重新开通套餐吗?'; } else { $tip = '您当前是【' . $mysetmeal->setmeal_name . '】重新开通套餐
您的套餐资源和会员时长将叠加
确定要重新开通套餐吗?'; } return response()->json(['status' => 1, 'data' => ['html' => view('app.company.ajax.ajax_warning', ['tip' => $tip])->render()]]); } /**会员套餐 * @param Request $request * @return \Illuminate\Http\JsonResponse * @throws ResponseException * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function setmealAddSave(Request $request) { $user = auth('web-company')->user(); //检查未处理订单数 $order_pay_type = 1; $payment_name = $request->input('payment_name', ''); $pay_type = $request->input('pay_type', 'points'); $setmeal_id = $request->input('project_id', 0); $is_deductible = $request->input('is_deductible', 0); if ($is_deductible == 0) { $deductible = 0; } else { $deductible = $request->input('deductible', ''); } $amount = $request->input('amount', ''); if ($amount == 0) { $pay_type = 'points'; } if ($setmeal_id == 0) { return response()->json(['status' => 0, 'msg' => "请选择套餐"]); } $setmealInfo = $this->setmealService->getSetmealOne($setmeal_id);//套餐详情 $mypoints = $this->memberPointService->getPoints($user->id, $user->utype); $amount = $setmealInfo->expense; $service_need_points = round($amount * config('aix.companyset.points.points_set.payment_rate')); if (!config('aix.companyset.setmeal_com.setmeal_com_set.setmeal_by_points')) { $is_deductible = 0; $deductible = 0; $pay_type = 'cash'; } if ($pay_type == 'points') { DB::beginTransaction(); try { if ($mypoints->points < $service_need_points) { throw new \Exception('积分不足,请使用其他方式支付!'); } $set_setmeal = $this->serviceService->setMembersSetmeal($user, $setmeal_id); if (!$set_setmeal['status']) { throw new \Exception($set_setmeal['msg']); } $description = '购买服务:' . $setmealInfo->setmeal_name . ';积分支付:' . $service_need_points . "积分"; $order = $this->orderService->addOrder($user, 1, $setmealInfo->expense, 0, $service_need_points, $setmealInfo->setmeal_name, 'points', '积分支付', $description, 2, 0, $setmeal_id, time(), ''); if (!$order) { throw new \Exception('生成订单失败!'); } $oid = $this->payService->getTradeNo($order->id);//订单号 if (!$this->serviceService->updateOid($order->id, $oid)) { throw new \Exception('生成订单号失败!'); } //生成会员日志 $this->memberLogRepository->createLog($user, 9001, [$oid, '积分支付','']); if (false === $p_rst = $this->memberPointService->reportDeal($user->id, $user->utype, 2, $service_need_points)) { throw new \Exception('修改会员积分失败!'); } else { $handsel['uid'] = $user->id; $handsel['utype'] = $user->utype; $handsel['htype'] = 'points_buy_setmeal'; $handsel['htype_cn'] = '购买增值包:' . $setmealInfo->setmeal_name; $handsel['operate'] = 2; $handsel['points'] = $service_need_points; if (!$this->memberHandselRepository->addNew($handsel)) { //添加积分操作记录 throw new \Exception('添加积分操作记录失败!'); } $notes = date('Y-m-d H:i:s', time()) . "通过积分兑换成功开通{ $setmealInfo->setmeal_name}"; } DB::commit(); } catch (\Exception $e) { DB::rollback(); return response()->json(['status' => 0, 'msg' => $e->getMessage()]); } return response()->json(['status' => 1, 'data' => $oid]); } else { if ($is_deductible == 1 && $mypoints->points < $deductible) { throw new ResponseException('积分不足,请使用其他方式支付!'); } if ($is_deductible == 1 && $deductible > 0) { $description = $setmealInfo->setmeal_name . ';积分抵扣:' . $deductible . '积分'; } //移动端啥折扣都不打 🤪 $service_need_cash=$setmealInfo->expense; $points_price=round($deductible/config('aix.companyset.points.points_set.payment_rate'),2); //积分抵扣的钱 $service_need_cash-=$points_price;//都需要减去积分抵扣的钱 $service_need_cash=round($service_need_cash,2); $paysetarr['ordtotal_fee'] = $service_need_cash; $payment = $this->paymentService->returnPayment($payment_name); $description = '购买服务:' . $setmealInfo->setmeal_name . ';' . $payment->name . $paysetarr['ordtotal_fee']; if ($deductible > 0 && $is_deductible == 1) { $description .= ';积分支付:' . $deductible . '积分'; } $params = [ 'setmeal_id'=>$setmealInfo->id, 'setmeal_name'=>$setmealInfo->setmeal_name, 'company_id'=>$user->id, 'utype'=>$user->utype, 'companyname'=>$user->companyname, 'amount'=>$paysetarr['ordtotal_fee'], 'points'=>$deductible, 'payment'=>$payment_name, 'username'=>$user->username, 'subsite_id'=>$user->subsite_id, ]; $insert_id = $this->orderService->addOrder($user, 1, $setmealInfo->expense, $paysetarr['ordtotal_fee'], $deductible, $setmealInfo->setmeal_name, $payment_name, $payment->name, $description, 1, $deductible, $setmeal_id, 0, serialize($params)); $tradeNo = $this->payService->getTradeNo($insert_id->id); if (!$this->serviceService->updateOid($insert_id->id, $tradeNo)) { throw new ResponseException('生成订单号失败'); } $payOrder = new PayOrder(); $payOrder->trade_no = $tradeNo; $payOrder->subject = '购买' . $setmealInfo->setmeal_name; $payOrder->detail = $description; $payOrder->price = $paysetarr['ordtotal_fee'] ; $payOrder->callback = "App\Services\Common\OrderService.updateCompany"; if ($payment_name == 'wechat') { if (!is_weixin()) { $type = 'wap'; } else { //预留 $type="official"; $payOrder->openid = $this->payService->getPayOpenid(); $payOrder->return_url = route('mobile.firm.service.order.index'); $result = $this->payService->pay($payment_name, $type, $payOrder); return response()->json(['status'=>1, 'msg' => $result]); } $payOrder->return_url=route('mobile.common.orderWechat', ['oid'=>$payOrder->trade_no]); } else { $type = 'wap'; $payOrder->return_url=route('mobile.firm.service.order.index'); } return $this->payService->pay($payment_name, $type, $payOrder); } } /**订单状态 * @param Request $request * @return \Illuminate\Http\JsonResponse */ public function checkOrderStatus(Request $request) { $tradeNo = $request->tradeNo; if (!$tradeNo) { return response()->json(['status' => 0, 'msg' => "订单号错误!"]); } return $this->orderService->getOrderbyTradeNo($tradeNo); } /** * @return \Illuminate\Http\JsonResponse * @throws \Throwable */ public function paySetmealStatus() { $tip = '请在新打开的支付页面完成付款'; $description = '付款完成前请不要关闭此窗口,付款后请根据您的情况点击下面的按钮,如果在支付中遇到问题请到帮助中心。'; return response()->json(['status' => 1, 'html' => view('app.company.ajax.ajax_warning', ['tip' => $tip, 'description' => $description])->render()]); } /**增值服务 * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function increment() { $res = $this->serviceService->increment(auth('web-company')->user()); $res['wap_title'] = '增值服务'; return view('mobile.app.company.service.increment.index', $res); } /**各增值包 * @param Request $request * @param $cat * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View * @throws ResponseException */ public function incrementAdd(Request $request, $cat) { switch ($cat) { case 'download_resume': case 'sms': case 'jobs': case 'jobfair_num': $display_tpl = "resume_sms"; break; case 'stick': case 'emergency': $display_tpl = 'stick_emergency'; break; case 'tpl': $display_tpl = 'tpl'; break; case 'auto_refresh_jobs': $display_tpl = 'auto_refresh_jobs'; break; default: throw new ResponseException('参数错误'); break; } $res = $this->serviceService->incrementAdd($cat, $request->all()); return view("app.company.increment.increment_add_{$display_tpl}", $res); } /**增值服务 === 提示框内容 * @return \Illuminate\Http\JsonResponse * @throws \Throwable */ public function confirmPayIncrement() { $user = auth('web-company')->user(); $res = $this->serviceService->confirmPayIncrement($user); return response()->json(['status'=>1, 'msg'=>'success','data'=>['html'=>view('app.company.ajax.ajax_warning', $res)->render()]]); } /**增值服务保存 * @param Request $request * @return \Illuminate\Http\JsonResponse */ public function incrementPaySave(Request $request) { $service_type = $request->input('service_type', ''); if (!$service_type) { return response()->json(['status'=>0,'msg'=>"参数错误"]); } switch ($service_type) { case 'download_resume': $fun = 'DownloadResume'; break; case 'sms': $fun = 'Sms'; break; case 'jobs': $fun = 'Jobs'; break; case 'jobfair_num': $fun = 'JobfairNum'; break; case 'stick': $fun = 'Stick'; break; case 'emergency': $fun = 'Emergency'; break; case 'tpl': $fun = 'Tpl'; break; case 'auto_refresh_jobs': $fun = 'AutoRefreshJobs'; break; } $func_name = "increment".$fun; $incrment_arr = ['download_resume','jobs','jobfair_num','sms','stick','emergency','tpl','auto_refresh_jobs']; if (!in_array($service_type, $incrment_arr)) { return response()->json(['status'=>0,'msg'=>"参数错误"]); } else { return $this->$func_name($request); } } /**简历包 * @param $request * @return array|\Illuminate\Http\JsonResponse * @throws ResponseException * @throws \Prettus\Validator\Exceptions\ValidatorException */ protected function incrementDownloadResume($request) { $cat = $request->input('service_type', 'download_resume'); $order_pay_type = 6; $payment_name = $request->input('payment_name', ''); $pay_type = $request->input('pay_type', 'points'); $project_id = $request->input('project_id', 0); $is_deductible = $request->input('is_deductible', 0); if ($is_deductible==0) { $deductible = 0; } else { $deductible = $request->input('deductible', 0); } $amount = floatval($request->input('amount', 0)); if ($amount==0) { $pay_type = 'points'; } if ($project_id==0) { return response()->json(['status'=>0, 'msg' => '请选择增值包套餐!']); } $user = auth('web-company')->user(); $my_setmeal = $this->membersSetmealService->getUserSetmeal($user, '1'); //会员套餐信息 $my_point = $this->memberPointService->getPoints($user->id, 1); //获取会员积分信息 $increment_info = $this->setmealIncrementsService->getIncrement($project_id); //获取所选简历增值包信息 $my_discount = $this->setmealIncrementsService->getIncrementDiscountByArray($cat, $my_setmeal); //套餐折扣 $points_price=round($deductible/config('aix.companyset.points.points_set.payment_rate'),2); //积分抵扣的钱 /** * 修改吴正科的DB 写法 * 没有折扣价格怎么就变成了原价了,积分不要吗 * 还有个在配置文件中的购买增值服务优惠 */ if ($pay_type=='points') { //积分支付,就是算出原价*固定折扣*套餐折扣 $mobile_discount=config("aix.mobile.mobile_set.mobile_set.mobile_setmeal_increment_discount_value")/100;//移动段固定折扣 if ($mobile_discount==0){$mobile_discount=1;} //没有配置,就为1 除了是不变的 if ($my_discount > 0){ //如果有折扣 //先打自己套餐的折扣,再打固定的折扣 $service_need_cash=($increment_info->price*$my_discount/10)*$mobile_discount; }else{ $service_need_cash=($increment_info->price)*$mobile_discount; //增值包套餐金额 } $service_need_points = round($service_need_cash*config('aix.companyset.points.points_set.payment_rate')); //增值包套餐所需积分 if ($my_point->points < $service_need_points) { return response()->json(['status'=>0, 'msg' =>'积分不足,请使用其他方式支付!']); } //操作事务开始 DB::beginTransaction(); try { //会员套餐添加增值包数量 $setmeal_rst = $this->membersSetmealService->actionUserSetmeal(array('uid'=>$user->id, 'utype'=>1), $cat, 1, $increment_info->value); if (!$setmeal_rst) { throw new \Exception('修改会员套餐失败!'); } $description1 = '购买服务:'.$increment_info->name.';积分支付:'.$service_need_points.'积分'; $stime = time(); //添加订单信息 $order = $this->orderService->addOrder($user, $order_pay_type, $service_need_cash, 0, $service_need_points, $increment_info->name, $payment_name, '积分支付', $description1, 2, 0, $project_id, $stime, '', '专享'.$my_discount.'折优惠'); if (!$order) { throw new \Exception('生成订单失败!'); } $oid = $this->payService->getTradeNo($order->id);//订单号 if (!$this->serviceService->updateOid($order->id, $oid)) { throw new \Exception('生成订单号失败!'); } //会员日志:添加创建增值服务订单日志 $log_rst1 = $this->serviceService->writeMembersLog($user, '9001', [$oid,'积分兑换','']); //修改会员积分 if (false === $p_rst = $this->memberPointService->reportDeal($user->id, $user->utype, 2, $service_need_points)) { throw new \Exception('修改会员积分失败!'); } else { $handsel['uid'] = $user->id; $handsel['utype'] = $user->utype; $handsel['htype'] = 'increment_download_resume'; $handsel['htype_cn'] = '购买增值包:' . $increment_info->name; $handsel['operate'] = 2; $handsel['points'] = $service_need_points; if (!$this->memberHandselRepository->addNew($handsel)) { //添加积分操作记录 throw new \Exception('添加积分操作记录失败!'); } $notes = date('Y-m-d H:i:s', time()) . "通过积分兑换成功开通{ $increment_info->name}"; } DB::commit(); } catch (\Exception $e) { DB::rollback(); return response()->json(['status'=>0, 'msg' => $e->getMessage()]); } return response()->json(['status'=>1, 'msg' => '积分兑换成功!','data'=>$oid]); } else { if ($is_deductible==1 && $my_point->points<$deductible) { return response()->json(['status'=>1, 'msg' => '积分不足,请使用其他方式支付!']); } return $this->callCashPay($my_setmeal, $my_point, $increment_info, $order_pay_type, $payment_name, "", $is_deductible, $deductible, '', '', 0, $project_id,$my_discount); } } /**短信包 * @param $request * @return array|\Illuminate\Http\JsonResponse * @throws ResponseException * @throws \Prettus\Validator\Exceptions\ValidatorException */ protected function incrementSms($request) { $cat = $request->input('service_type', 'sms'); $order_pay_type = 7; $payment_name = $request->input('payment_name', ''); $pay_type = $request->input('pay_type', 'points'); $project_id = $request->input('project_id', 0); $is_deductible = $request->input('is_deductible', 0); if ($is_deductible==0) { $deductible = 0; } else { $deductible = $request->input('deductible', 0); } $amount = floatval($request->input('amount', 0.0)); if ($amount==0) { $pay_type = 'points'; } if ($project_id==0) { return response()->json(['status'=>0, 'msg' => '请选择增值包套餐!']); } $user = auth('web-company')->user(); $my_setmeal = $this->membersSetmealService->getUserSetmeal($user, '1'); //会员套餐信息 $my_point = $this->memberPointService->getPoints($user->id, 1); //获取会员积分信息 $increment_info = $this->setmealIncrementsService->getIncrement($project_id); //获取所选简历增值包信息 $my_discount = $this->setmealIncrementsService->getIncrementDiscountByArray($cat, $my_setmeal); //套餐折扣 $service_need_cash = $my_discount > 0 ?round($increment_info->price*$my_discount/10, 2):$increment_info->price; //增值包套餐金额 $points_price=round($deductible/config('aix.companyset.points.points_set.payment_rate'),2); //积分抵扣的钱 if ($pay_type=='points') { //积分支付 $mobile_discount=config("aix.mobile.mobile_set.mobile_set.mobile_setmeal_increment_discount_value")/100;//移动段固定折扣 if ($mobile_discount==0){$mobile_discount=1;} //没有配置,就为1 除了是不变的 if ($my_discount > 0){ //如果有折扣 //先打自己套餐的折扣,再打固定的折扣 $service_need_cash=($increment_info->price*$my_discount/10)*$mobile_discount; }else{ $service_need_cash=($increment_info->price)*$mobile_discount; //增值包套餐金额 } $service_need_points = round($service_need_cash*config('aix.companyset.points.points_set.payment_rate')); //增值包套餐所需积分 if ($my_point->points < $service_need_points) { return response()->json(['status'=>0, 'msg' => '积分不足,请使用其他方式支付!']); } //操作事务开始 DB::beginTransaction(); try { $companySms = $this->companyService->incSms($user->id, 1, $increment_info->value); if (!$companySms) { throw new \Exception('会员短信数量增加失败!'); } $description1 = '购买服务:'.$increment_info->name.';积分支付:'.$service_need_points.'积分'; $stime = time(); //添加订单信息 $order = $this->orderService->addOrder($user, $order_pay_type, $service_need_cash, 0, $service_need_points, $increment_info->name, $payment_name, '积分支付', $description1, 2, 0, $project_id, $stime, '', '专享'.$my_discount.'折优惠'); if (!$order) { throw new \Exception('生成订单失败!'); } $oid = $this->payService->getTradeNo($order->id);//订单号 if (!$this->serviceService->updateOid($order->id, $oid)) { throw new \Exception('生成订单号失败!'); } //会员日志:添加创建增值服务订单日志 $log_rst1 = $this->serviceService->writeMembersLog($user, '9001', [$oid,'积分兑换','']); //修改会员积分 if (false === $p_rst = $this->memberPointService->reportDeal($user->id, $user->utype, 2, $service_need_points)) { throw new \Exception('修改会员积分失败!'); } else { $handsel['uid'] = $user->id; $handsel['utype'] = $user->utype; $handsel['htype'] = 'increment_download_resume'; $handsel['htype_cn'] = '购买增值包:' . $increment_info->name; $handsel['operate'] = 2; $handsel['points'] = $service_need_points; if (!$this->memberHandselRepository->addNew($handsel)) { //添加积分操作记录 throw new \Exception('添加积分操作记录失败!'); } $notes = date('Y-m-d H:i:s', time()) . "通过积分兑换成功开通{ $increment_info->name}"; } DB::commit(); } catch (\Exception $e) { DB::rollback(); return array( 'status'=>0, 'msg' => $e->getMessage()); } return array( 'status'=>1, 'msg' => '积分兑换成功!','data'=>$oid); } else { if ($is_deductible==1 && $my_point->points<$deductible) { return array( 'status'=>0, 'msg' => '积分不足,请使用其他方式支付!'); } return $this->callCashPay($my_setmeal, $my_point, $increment_info, $order_pay_type, $payment_name, $service_need_cash, $is_deductible, $deductible, '', '', 0, $project_id, $my_discount); } } protected function incrementJobfairNum($request) { $cat = $request->input('service_type', 'jobfair_num'); $order_pay_type = 7; $payment_name = $request->input('payment_name', ''); $pay_type = $request->input('pay_type', 'points'); $project_id = $request->input('project_id', 0); $is_deductible = $request->input('is_deductible', 0); if ($is_deductible==0) { $deductible = 0; } else { $deductible = $request->input('deductible', ''); } $amount = floatval($request->input('amount', '')); if ($amount==0) { $pay_type = 'points'; } if ($project_id==0) { return response()->json(['status'=>0, 'msg' => '请选择增值包套餐!']); } $user = auth('web-company')->user(); $my_setmeal = $this->membersSetmealService->getUserSetmeal($user, '1'); //会员套餐信息 $my_point = $this->memberPointService->getPoints($user->id, 1); //获取会员积分信息 $increment_info = $this->setmealIncrementsService->getIncrement($project_id); //获取所选简历增值包信息 $my_discount = $this->setmealIncrementsService->getIncrementDiscountByArray($cat, $my_setmeal); //套餐折扣 $service_need_cash = $my_discount > 0 ?round($increment_info->price*$my_discount/10, 2):$increment_info->price; //增值包套餐金额 if ($pay_type=='points') { //积分支付 $service_need_points = round($service_need_cash*config('aix.companyset.points.points_set.payment_rate')); //增值包套餐所需积分 if ($my_point->points < $service_need_points) { return response()->json(['status'=>0, 'msg' => '积分不足,请使用其他方式支付!']); } //操作事务开始 DB::beginTransaction(); try { $companySms = $this->membersSetmealService->actionUserSetmeal($user->id, 'jobfair_num', 1, $increment_info->value); if (!$companySms) { throw new \Exception('会员招聘会场次数量增加失败!'); } $description1 = '购买服务:'.$increment_info->name.';积分支付:'.$service_need_points.'积分'; $stime = time(); //添加订单信息 $order = $this->orderService->addOrder($user, $order_pay_type, $service_need_cash, 0, $service_need_points, $increment_info->name, $payment_name, '积分支付', $description1, 2, 0, $project_id, $stime, '', '专享'.$my_discount.'折优惠'); if (!$order) { throw new \Exception('生成订单失败!'); } $oid = $this->payService->getTradeNo($order->id);//订单号 if (!$this->serviceService->updateOid($order->id, $oid)) { throw new \Exception('生成订单号失败!'); } //会员日志:添加创建增值服务订单日志 $log_rst1 = $this->serviceService->writeMembersLog($user, '9001', [$oid,'积分兑换','']); //修改会员积分 if (false === $p_rst = $this->memberPointService->reportDeal($user->id, $user->utype, 2, $service_need_points)) { throw new \Exception('修改会员积分失败!'); } else { $handsel['uid'] = $user->id; $handsel['utype'] = $user->utype; $handsel['htype'] = 'increment_jobfair_num'; $handsel['htype_cn'] = '购买增值包:' . $increment_info->name; $handsel['operate'] = 2; $handsel['points'] = $service_need_points; if (!$this->memberHandselRepository->addNew($handsel)) { //添加积分操作记录 throw new \Exception('添加积分操作记录失败!'); } $notes = date('Y-m-d H:i:s', time()) . "通过积分兑换成功开通{ $increment_info->name}"; } DB::commit(); } catch (\Exception $e) { DB::rollback(); return array( 'status'=>0, 'msg' => $e->getMessage()); } return array( 'status'=>1, 'msg' => '积分兑换成功!','data'=>$oid); } else { if ($is_deductible==1 && $my_point->points<$deductible) { return array( 'status'=>0, 'msg' => '积分不足,请使用其他方式支付!'); } return $this->callCashPay($my_setmeal, $my_point, $increment_info, $order_pay_type, $payment_name, $service_need_cash, $is_deductible, $deductible, '', '', 0, $project_id, '专享'.$my_discount.'折优惠'); } } /**购买职位增值包 * @param $request * @return array|\Illuminate\Http\JsonResponse * @throws ResponseException * @throws \Prettus\Validator\Exceptions\ValidatorException */ protected function incrementJobs($request) { $cat = $request->input('service_type', 'jobs'); $order_pay_type = 7; $payment_name = $request->input('payment_name', ''); $pay_type = $request->input('pay_type', 'points'); //支付类型 $project_id = $request->input('project_id', 0); $is_deductible = $request->input('is_deductible', 0); if ($is_deductible==0) { $deductible = 0; } else { $deductible = $request->input('deductible', ''); } $amount = floatval($request->input('amount', '')); //这个就是前台传来的应该支付的价格 if ($amount==0) { //等于0就是积分支付 $pay_type = 'points'; } if ($project_id==0) { return response()->json(['status'=>0, 'msg' => '请选择增值包套餐!']); } $user = auth('web-company')->user(); $my_setmeal = $this->membersSetmealService->getUserSetmeal($user, '1'); //会员套餐信息 $my_point = $this->memberPointService->getPoints($user->id, 1); //获取会员积分信息 $increment_info = $this->setmealIncrementsService->getIncrement($project_id); //获取所选简历增值包信息 $my_discount = $this->setmealIncrementsService->getIncrementDiscountByArray($cat, $my_setmeal); //套餐折扣 if ($my_discount > 0){ $service_need_cash=round($increment_info->price*$my_discount/10, 2); }else{ $service_need_cash=$increment_info->price; //增值包套餐金额 } if ($pay_type=='points') { //积分支付 $mobile_discount=config("aix.mobile.mobile_set.mobile_set.mobile_setmeal_increment_discount_value")/100;//移动段固定折扣 if ($mobile_discount==0){$mobile_discount=1;} //没有配置,就为1 除了是不变的 if ($my_discount > 0){ //如果有折扣 //先打自己套餐的折扣,再打固定的折扣 $service_need_cash=($increment_info->price*$my_discount/10)*$mobile_discount; }else{ $service_need_cash=($increment_info->price)*$mobile_discount; //增值包套餐金额 } $service_need_points = round($service_need_cash*config('aix.companyset.points.points_set.payment_rate')); //增值包套餐所需积分 if ($my_point->points < $service_need_points) { return response()->json(['status'=>0, 'msg' => '积分不足,请使用其他方式支付!']); } //操作事务开始 DB::beginTransaction(); try { $companySms = $this->membersSetmealService->actionUserSetmeal($user->id, 'jobs_meanwhile', 1, $increment_info->value); if (!$companySms) { throw new \Exception('会员可发布职位数量增加失败!'); } $description1 = '购买服务:'.$increment_info->name.';积分支付:'.$service_need_points.'积分'; $stime = time(); //添加订单信息 $order = $this->orderService->addOrder($user, $order_pay_type, $service_need_cash, 0, $service_need_points, $increment_info->name, $payment_name, '积分支付', $description1, 2, 0, $project_id, $stime, '', '专享'.$my_discount.'折优惠'); if (!$order) { throw new \Exception('生成订单失败!'); } $oid = $this->payService->getTradeNo($order->id);//订单号 if (!$this->serviceService->updateOid($order->id, $oid)) { throw new \Exception('生成订单号失败!'); } //会员日志:添加创建增值服务订单日志 $log_rst1 = $this->serviceService->writeMembersLog($user, '9001', [$oid,'积分兑换','']); //修改会员积分 if (false === $p_rst = $this->memberPointService->reportDeal($user->id, $user->utype, 2, $service_need_points)) { throw new \Exception('修改会员积分失败!'); } else { $handsel['uid'] = $user->id; $handsel['utype'] = $user->utype; $handsel['htype'] = 'increment_jobs'; $handsel['htype_cn'] = '购买增值包:' . $increment_info->name; $handsel['operate'] = 2; $handsel['points'] = $service_need_points; if (!$this->memberHandselRepository->addNew($handsel)) { //添加积分操作记录 throw new \Exception('添加积分操作记录失败!'); } $notes = date('Y-m-d H:i:s', time()) . "通过积分兑换成功开通{ $increment_info->name}"; } DB::commit(); } catch (\Exception $e) { DB::rollback(); return array( 'status'=>0, 'msg' => $e->getMessage()); } return array( 'status'=>1, 'msg' => '积分兑换成功!','data'=>$oid); } else { if ($is_deductible==1 && $my_point->points<$deductible) { return array( 'status'=>0, 'msg' => '积分不足,请使用其他方式支付!'); } return $this->callCashPay($my_setmeal, $my_point, $increment_info, $order_pay_type, $payment_name, $service_need_cash, $is_deductible, $deductible, '', '', 0, $project_id, $my_discount); } } /** * @return \Illuminate\Http\JsonResponse * @throws ResponseException * 微信JSAP支付 */ public function JSApPay(){ $payment_name="wechat"; $type="official"; $payOrder = new PayOrder(); $payOrder->trade_no = $this->payService->getTradeNo(100); $payOrder->subject = "订单测试"; $payOrder->openid = $this->payService->getPayOpenid(); $payOrder->detail = "订单详情"; $payOrder->price = 0.01; $payOrder->callback = "App\Services\Common\OrderService.updateCompany"; $payOrder->return_url = route('service.order.index'); $result = $this->payService->pay($payment_name, $type, $payOrder); return response()->json($result); } /**职位置顶 * @param $request * @return \Illuminate\Http\JsonResponse * @throws ResponseException * @throws \Prettus\Validator\Exceptions\ValidatorException */ protected function incrementStick($request) { $cat = $request->input('service_type', 'stick'); $order_pay_type = 8; $payment_name = $request->input('payment_name', ''); $pay_type = $request->input('pay_type', 'points'); $project_id = $request->input('project_id', 0); $is_deductible = $request->input('is_deductible', 0); $jobs_id = $request->input('jobs_id', 0); if ($is_deductible==0) { $deductible = 0; } else { $deductible = $request->input('deductible', ''); } $amount = floatval($request->input('amount', '')); if ($amount==0) { $pay_type = 'points'; } if ($project_id==0) { return response()->json(['status'=>0, 'msg' => '请选择增值包套餐!']); } if (!$jobs_id) { return response()->json(['status'=>0, 'msg'=>"请选择职位!"]); } if (!$this->jobsRepository->find($jobs_id)) { return response()->json(['status'=>0,'msg'=>'该职位不存在!']); } if ($this->jobsRepository->getInfo(['stick'=>1,'id'=>$jobs_id,])) { return response()->json(['status'=>0,'msg'=>'该职位已置顶!']); } $user = auth('web-company')->user(); $my_setmeal = $this->membersSetmealService->getUserSetmeal($user, '1'); //会员套餐信息 $my_point = $this->memberPointService->getPoints($user->id, 1); //获取会员积分信息 $increment_info = $this->setmealIncrementsService->getIncrement($project_id); //获取所选简历增值包信息 $my_discount = $this->setmealIncrementsService->getIncrementDiscountByArray($cat, $my_setmeal); //套餐折扣 $service_need_cash = $my_discount > 0 ?round($increment_info->price*$my_discount/10, 2):$increment_info->price; //置顶所需积分 if ($pay_type=='points') { //积分支付 $mobile_discount=config("aix.mobile.mobile_set.mobile_set.mobile_setmeal_increment_discount_value")/100;//移动段固定折扣 if ($mobile_discount==0){$mobile_discount=1;} //没有配置,就为1 除了是不变的 if ($my_discount > 0){ //如果有折扣 //先打自己套餐的折扣,再打固定的折扣 $service_need_cash=($increment_info->price*$my_discount/10)*$mobile_discount; }else{ $service_need_cash=($increment_info->price)*$mobile_discount; //增值包套餐金额 } $service_need_points = round($service_need_cash*config('aix.companyset.points.points_set.payment_rate')); //置顶所需积分 if ($my_point->points < $service_need_points) { return response()->json(['status'=>0, 'msg' => '积分不足,请使用其他方式支付!']); } //操作事务开始 DB::beginTransaction(); try { $promotionsqlarr['companyid']=$user->id; $promotionsqlarr['jobid']=$jobs_id; $promotionsqlarr['ptype'] = 1; $promotionsqlarr['days']=$increment_info->value; $promotionsqlarr['starttime']=time(); $promotionsqlarr['endtime']=strtotime("{$increment_info->value} day"); $promotion_insert_id = $this->promotionRepository->create($promotionsqlarr); if (!$promotion_insert_id) { throw new \Exception('职位置顶添加失败!'); } $stick_time = time(); $this->jobsRepository->update(['stime'=>$stick_time, 'stick'=>1], $jobs_id); $params_array = array('days'=>$increment_info['value']); $description1 = '购买服务:'.$increment_info->name.';积分支付:'.$service_need_points.'积分'; $stime = time(); $params_array['jobs_id'] = $jobs_id; //添加订单信息 $order = $this->orderService->addOrder($user, $order_pay_type, $service_need_cash, 0, $service_need_points, $increment_info->name, $payment_name, '积分支付', $description1, 2, 0, $project_id, $stime, serialize($params_array), '专享'.$my_discount.'折优惠'); if (!$order) { throw new \Exception('生成订单失败!'); } $oid = $this->payService->getTradeNo($order->id);//订单号 if (!$this->serviceService->updateOid($order->id, $oid)) { throw new \Exception('生成订单号失败!'); } //会员日志:添加创建增值服务订单日志 $this->serviceService->writeMembersLog($user, '9001', [$oid,'积分兑换','']); //修改会员积分 if (false === $p_rst = $this->memberPointService->reportDeal($user->id, $user->utype, 2, $service_need_points)) { throw new \Exception('修改会员积分失败!'); } else { $handsel['uid'] = $user->id; $handsel['utype'] = $user->utype; $handsel['htype'] = 'increment_download_resume'; $handsel['htype_cn'] = '购买增值包:' . $increment_info->name; $handsel['operate'] = 2; $handsel['points'] = $service_need_points; if (!$this->memberHandselRepository->addNew($handsel)) { //添加积分操作记录 throw new \Exception('添加积分操作记录失败!'); } $notes = date('Y-m-d H:i:s', time()) . "通过积分兑换成功开通{ $increment_info->name}"; //会员日志(order 、setmeal) } DB::commit(); } catch (\Exception $e) { DB::rollback(); return response()->json(['status'=>0, 'msg' => $e->getMessage()]); } event_search_update(Jobs::class, (string)$jobs_id, 'update'); return response()->json(['status'=>1, 'msg' => '积分兑换成功!','data'=>$oid]); } else { if ($is_deductible==1 && $my_point->points<$deductible) { return response()->json(['status'=>0, 'msg' => '积分不足,请使用其他方式支付!!']); } $params['jobs_id'] = $jobs_id; $params['days'] = $increment_info['value']; $nowtime = time(); $params['starttime'] = $nowtime; for ($i=0; $i < $params['days']*4; $i++) { $timespace = 3600*6*$i; if ($i+1==$params['days']*4) { $params['endtime'] = $nowtime+$timespace; } } return $this->callCashPay($my_setmeal, $my_point, $increment_info, $order_pay_type, $payment_name, $service_need_cash, $is_deductible, $deductible, '', $params, 0, $project_id, $my_discount); } } /**简历包 * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function resume() { $user = auth('web-company')->user(); $my_setmeal = $this->membersSetmealService->getUserSetmeal($user, 1); //会员套餐信息 $my_point = $this->memberPointService->getPoints($user->id, 1); //获取会员积分信息 $cat_arr = $this->getServiceList('download_resume', $my_setmeal); $res = [ 'wap_title'=>'简历包', 'mysetmeal'=>$my_setmeal, 'mypoint'=>$my_point, 'cat_arr'=>$cat_arr, 'cat'=>'download_resume', 'payment_rate'=>config('aix.companyset.points.points_set.payment_rate'), ]; return view('mobile.app.company.service.increment.resume', $res); } /**短信包 * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function sms() { $user = auth('web-company')->user(); $my_setmeal = $this->membersSetmealService->getUserSetmeal($user, 1); //会员套餐信息 $my_point = $this->memberPointService->getPoints($user->id, 1); //获取会员积分信息 $cat_arr = $this->getServiceList('sms', $my_setmeal); $res = [ 'wap_title'=>'短信包', 'mysetmeal'=>$my_setmeal, 'mypoint'=>$my_point, 'cat_arr'=>$cat_arr, 'cat'=>'sms', 'payment_rate'=>config('aix.companyset.points.points_set.payment_rate'), ]; return view('mobile.app.company.service.increment.sms', $res); } /**职位包 * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function jobsNum() { $user = auth('web-company')->user(); $my_setmeal = $this->membersSetmealService->getUserSetmeal($user, 1); //会员套餐信息 $my_point = $this->memberPointService->getPoints($user->id, 1); //获取会员积分信息 $cat_arr = $this->getServiceList('jobs', $my_setmeal); $res = [ 'wap_title'=>'职位包', 'mysetmeal'=>$my_setmeal, 'mypoint'=>$my_point, 'cat_arr'=>$cat_arr, 'cat'=>'jobs', 'payment_rate'=>config('aix.companyset.points.points_set.payment_rate') ]; return view('mobile.app.company.service.increment.jobs_num', $res); } /**招聘会包 * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function jobfairNum() { $user = auth('web-company')->user(); $my_setmeal = $this->membersSetmealService->getUserSetmeal($user, 1); //会员套餐信息 $my_point = $this->memberPointService->getPoints($user->id, 1); //获取会员积分信息 $cat_arr = $this->getServiceList('jobfair_num', $my_setmeal); $res = [ 'wap_title'=>'招聘会包', 'mysetmeal'=>$my_setmeal, 'mypoint'=>$my_point, 'cat_arr'=>$cat_arr, 'cat'=>'jobfair_num', 'payment_rate'=>config('aix.companyset.points.points_set.payment_rate') ]; return view('mobile.app.company.service.increment.jobfair_num', $res); } /**职位置顶 * @param Request $request * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function stick(Request $request) { $user = auth('web-company')->user(); $job_id = $request->id?$request->id:0; $where['company_id'] = $user->id; if (config('aix.companyset.comset.show_set.jobs_display') == 1) { $where['audit'] = 1; } $joblist = $this->jobsRepository->findWhere($where)->toArray(); $joblist1 = array_column($joblist, 'stick', 'id'); if ($job_id) { $jobs_buy = $joblist1[$job_id]['stick']?1:0; } else { $jobs_buy=0; } $my_setmeal = $this->membersSetmealService->getUserSetmeal($user, 1); //会员套餐信息 $my_point = $this->memberPointService->getPoints($user->id, 1); //获取会员积分信息 $cat_arr = $this->getServiceList('stick', $my_setmeal); $res = [ 'wap_title'=>'职位置顶', 'jobs_buy'=>$jobs_buy, 'job_id'=>$job_id, 'joblist'=>$joblist, 'mysetmeal'=>$my_setmeal, 'mypoint'=>$my_point, 'cat_arr'=>$cat_arr, 'cat'=>'stick', 'payment_rate'=>config('aix.companyset.points.points_set.payment_rate'), ]; return view('mobile.app.company.service.increment.stick', $res); } /**职位紧急 * @param Request $request * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function emergency(Request $request) { $user = auth('web-company')->user(); $job_id = $request->id?$request->id:0; $where['company_id'] = $user->id; if (config('aix.companyset.comset.show_set.jobs_display') == 1) { $where['audit'] = 1; } $joblist = $this->jobsRepository->findWhere($where)->toArray(); $joblist1 = array_column($joblist, 'emergency', 'id'); if ($job_id) { $jobs_buy = $joblist1[$job_id]['emergency']?1:0; } else { $jobs_buy=0; } $my_setmeal = $this->membersSetmealService->getUserSetmeal($user, 1); //会员套餐信息 $my_point = $this->memberPointService->getPoints($user->id, 1); //获取会员积分信息 $cat_arr = $this->getServiceList('emergency', $my_setmeal); $res = [ 'wap_title'=>'职位紧急', 'jobs_buy'=>$jobs_buy, 'job_id'=>$job_id, 'joblist'=>$joblist, 'mysetmeal'=>$my_setmeal, 'mypoint'=>$my_point, 'cat_arr'=>$cat_arr, 'cat'=>'emergency', 'payment_rate'=>config('aix.companyset.points.points_set.payment_rate'), ]; return view('mobile.app.company.service.increment.emergency', $res); } /**自动刷新 * @param Request $request * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function autoRefresh(Request $request) { $user = auth('web-company')->user(); $job_id = $request->id?$request->id:0; $where['company_id'] = $user->id; if (config('aix.companyset.comset.show_set.jobs_display') == 1) { $where['audit'] = 1; } $joblist = $this->jobsRepository->findWhere($where)->toArray(); $joblist1 = array_column($joblist, 'stick', 'id'); if ($job_id) { $jobs_buy = $joblist1[$job_id]['stick']?1:0; } else { $jobs_buy=0; } $my_setmeal = $this->membersSetmealService->getUserSetmeal($user, 1); //会员套餐信息 $my_point = $this->memberPointService->getPoints($user->id, 1); //获取会员积分信息 $cat_arr = $this->getServiceList('auto_refresh_jobs', $my_setmeal); $res = [ 'wap_title'=>'自动刷新', 'jobs_buy'=>$jobs_buy, 'job_id'=>$job_id, 'joblist'=>$joblist, 'mysetmeal'=>$my_setmeal, 'mypoint'=>$my_point, 'cat_arr'=>$cat_arr, 'cat'=>'auto_refresh_jobs', 'payment_rate'=>config('aix.companyset.points.points_set.payment_rate'), ]; return view('mobile.app.company.service.increment.auto_refresh', $res); } /** * 获取某项增值服务列表 */ protected function getServiceList($cat, $mysetmeal) { $increment_arr = $this->setmealIncrementsRepository->getIncrementCache($cat); foreach ($increment_arr as $key => $value) { $free_discount = $this->setmealIncrementsService->getIncrementDiscountByArray($cat, $mysetmeal); if (config('aix.mobile.mobile_set.mobile_set.mobile_setmeal_increment_discount_value') > 0) { $value->price = config('aix.mobile.mobile_set.mobile_set.mobile_setmeal_increment_discount_type')==1?$value->price/100*config('aix.mobile.mobile_set.mobile_set.mobile_setmeal_increment_discount_value'):$value->price-config('aix.mobile.mobile_set.mobile_set.mobile_setmeal_increment_discount_value'); $value->price = $value->price<0?0:$value->price; } //当前会员需要付的价格 $increment_arr[$key]->service_price = $free_discount>0?round($value->price*$free_discount/10, 2):$value->price; //VIP会员价格,取出折扣最大的套餐折扣 $vip_discount = $this->setmealIncrementsService->getMaxDiscount($cat); $increment_arr[$key]->vip_price = intval($vip_discount)>0?round($value->price*$vip_discount/10, 2):$value->price; //换算积分 $increment_arr[$key]->service_points = round($increment_arr[$key]->service_price*config('aix.companyset.points.points_set.payment_rate')); } return $increment_arr; } /**职位紧急 * @param $request * @return \Illuminate\Http\JsonResponse * @throws ResponseException * @throws \Prettus\Validator\Exceptions\ValidatorException */ protected function incrementEmergency($request) { $cat = $request->input('service_type', 'emergency'); $order_pay_type = 9; $payment_name = $request->input('payment_name', ''); $pay_type = $request->input('pay_type', 'points'); $project_id = $request->input('project_id', 0); $is_deductible = $request->input('is_deductible', 0); $jobs_id = $request->input('jobs_id', 0); if ($is_deductible==0) { $deductible = 0; } else { $deductible = $request->input('deductible', ''); } $amount = floatval($request->input('amount', '')); if ($amount==0) { $pay_type = 'points'; } if ($project_id==0) { return response()->json(['status'=>0, 'msg' => '请选择增值包套餐!']); } if (!$jobs_id) { return response()->json(['status'=>0, 'msg'=>"请选择职位!"]); } if (!$this->jobsRepository->find($jobs_id)) { return response()->json(['status'=>0,'msg'=>'该职位不存在!']); } if ($this->jobsRepository->getInfo(['emergency'=>1,'id'=>$jobs_id,])) { return response()->json(['status'=>0,'msg'=>'该职位已紧急!']); } $user = auth('web-company')->user(); $my_setmeal = $this->membersSetmealService->getUserSetmeal($user, '1'); //会员套餐信息 $my_point = $this->memberPointService->getPoints($user->id, 1); //获取会员积分信息 $increment_info = $this->setmealIncrementsService->getIncrement($project_id); //获取所选简历增值包信息 $my_discount = $this->setmealIncrementsService->getIncrementDiscountByArray($cat, $my_setmeal); //套餐折扣 $service_need_cash = $my_discount > 0 ?round($increment_info->price*$my_discount/10, 2):$increment_info->price; //智能刷新所需积分 if ($pay_type=='points') { //积分支付 $mobile_discount=config("aix.mobile.mobile_set.mobile_set.mobile_setmeal_increment_discount_value")/100;//移动段固定折扣 if ($mobile_discount==0){$mobile_discount=1;} //没有配置,就为1 除了是不变的 if ($my_discount > 0){ //如果有折扣 //先打自己套餐的折扣,再打固定的折扣 $service_need_cash=($increment_info->price*$my_discount/10)*$mobile_discount; }else{ $service_need_cash=($increment_info->price)*$mobile_discount; //增值包套餐金额 } $service_need_points = round($service_need_cash*config('aix.companyset.points.points_set.payment_rate')); //智能刷新所需积分 if ($my_point->points < $service_need_points) { return response()->json(['status'=>0, 'msg' => '积分不足,请使用其他方式支付!']); } //操作事务开始 DB::beginTransaction(); try { $promotionsqlarr['companyid']=$user->id; $promotionsqlarr['jobid']=$jobs_id; $promotionsqlarr['ptype'] = 2; $promotionsqlarr['days']=$increment_info->value; $promotionsqlarr['starttime']=time(); $promotionsqlarr['endtime']=strtotime("{$increment_info->value} day"); $promotion_insert_id = $this->promotionRepository->create($promotionsqlarr); if (!$promotion_insert_id) { throw new \Exception('职位紧急添加失败!'); } $this->jobsRepository->update(['emergency'=>1], $jobs_id); $params_array = array('days'=>$increment_info['value']); $description1 = '购买服务:'.$increment_info->name.';积分支付:'.$service_need_points.'积分'; $stime = time(); $params_array['jobs_id'] = $jobs_id; //添加订单信息 $order = $this->orderService->addOrder($user, $order_pay_type, $service_need_cash, 0, $service_need_points, $increment_info->name, $payment_name, '积分支付', $description1, 2, 0, $project_id, $stime, serialize($params_array), '专享'.$my_discount.'折优惠'); if (!$order) { throw new \Exception('生成订单失败!'); } $oid = $this->payService->getTradeNo($order->id);//订单号 if (!$this->serviceService->updateOid($order->id, $oid)) { throw new \Exception('生成订单号失败!'); } //会员日志:添加创建增值服务订单日志 $log_rst1 = $this->serviceService->writeMembersLog($user, '9001', [$oid,'积分兑换','']); //修改会员积分 if (false === $p_rst = $this->memberPointService->reportDeal($user->id, $user->utype, 2, $service_need_points)) { throw new \Exception('修改会员积分失败!'); } else { $handsel['uid'] = $user->id; $handsel['utype'] = $user->utype; $handsel['htype'] = 'increment_download_resume'; $handsel['htype_cn'] = '购买增值包:' . $increment_info->name; $handsel['operate'] = 2; $handsel['points'] = $service_need_points; if (!$this->memberHandselRepository->addNew($handsel)) { //添加积分操作记录 throw new \Exception('添加积分操作记录失败!'); } $notes = date('Y-m-d H:i:s', time()) . "通过积分兑换成功开通{ $increment_info->name}"; } DB::commit(); } catch (\Exception $e) { DB::rollback(); return response()->json(['status'=>0, 'msg' => $e->getMessage()]); } event_search_update(Jobs::class, (string)$jobs_id, 'update'); return response()->json(['status'=>1, 'msg' => '积分兑换成功!','data'=>$oid]); } else { if ($is_deductible==1 && $my_point->points<$deductible) { return response()->json(['status'=>0, 'msg' => '积分不足,请使用其他方式支付!!']); } $params['jobs_id'] = $jobs_id; $params['days'] = $increment_info['value']; $nowtime = time(); $params['starttime'] = $nowtime; for ($i=0; $i < $params['days']*4; $i++) { $timespace = 3600*6*$i; if ($i+1==$params['days']*4) { $params['endtime'] = $nowtime+$timespace; } } return $this->callCashPay($my_setmeal, $my_point, $increment_info, $order_pay_type, $payment_name, $service_need_cash, $is_deductible, $deductible, '', $params, 0, $project_id, $my_discount); } } /**企业模版 * @param $request * @return ServiceController */ protected function incrementTpl($request) { return $this->sendErrorResponse('开发中。。。', 404); } /**智能刷新 * @param $request * @return \Illuminate\Http\JsonResponse * @throws ResponseException * @throws \Prettus\Validator\Exceptions\ValidatorException */ protected function incrementAutoRefreshJobs($request) { $cat = $request->input('service_type', 'auto_refresh_jobs'); $order_pay_type = 12; $payment_name = $request->input('payment_name', ''); $pay_type = $request->input('pay_type', 'points'); $project_id = $request->input('project_id', 0); $is_deductible = $request->input('is_deductible', 0); $jobs_id = $request->input('jobs_id', 0); if ($is_deductible==0) { $deductible = 0; } else { $deductible = $request->input('deductible', ''); } $amount = floatval($request->input('amount', '')); if ($amount==0) { $pay_type = 'points'; } if ($project_id==0) { return response()->json(['status'=>0, 'msg' => '请选择增值包套餐!']); } if (!$jobs_id) { return response()->json(['status'=>0, 'msg'=>"请选择职位!"]); } if ($this->queueAutoRefreshRepository->findData(['type'=>1, 'pid'=>$jobs_id])) { return response()->json(['status'=>0,'msg'=>'该职位已预约刷新!']); } $user = auth('web-company')->user(); $my_setmeal = $this->membersSetmealService->getUserSetmeal($user, '1'); //会员套餐信息 $my_point = $this->memberPointService->getPoints($user->id, 1); //获取会员积分信息 $increment_info = $this->setmealIncrementsService->getIncrement($project_id); //获取所选简历增值包信息 $my_discount = $this->setmealIncrementsService->getIncrementDiscountByArray($cat, $my_setmeal); //套餐折扣 $service_need_cash = $my_discount > 0 ?round($increment_info->price*$my_discount/10, 2):$increment_info->price; //智能刷新所需积分 if ($pay_type=='points') { //积分支付 $mobile_discount=config("aix.mobile.mobile_set.mobile_set.mobile_setmeal_increment_discount_value")/100;//移动段固定折扣 if ($mobile_discount==0){$mobile_discount=1;} //没有配置,就为1 除了是不变的 if ($my_discount > 0){ //如果有折扣 //先打自己套餐的折扣,再打固定的折扣 $service_need_cash=($increment_info->price*$my_discount/10)*$mobile_discount; }else{ $service_need_cash=($increment_info->price)*$mobile_discount; //增值包套餐金额 } $service_need_points = round($service_need_cash*config('aix.companyset.points.points_set.payment_rate')); //智能刷新所需积分 if ($my_point->points < $service_need_points) { return response()->json(['status'=>0, 'msg' => '积分不足,请使用其他方式支付!']); } //操作事务开始 DB::beginTransaction(); try { //添加自动刷新记录 $days = $increment_info->value; $params_array['days'] = $days; $nowtime = time(); $params_array['days'] = $nowtime; $params_array['starttime'] = $nowtime; for ($i=0; $i < $days*4; $i++) { $timespace = 3600*6*$i; $this->queueAutoRefreshRepository->create(['uid'=>$user->id,'pid'=>$jobs_id,'type'=>1,'refreshtime'=>$nowtime+$timespace]); if ($i+1==$days*4) { $params_array['endtime'] = $nowtime+$timespace; } } $params_array['jobs_id'] = $jobs_id; $description1 = '购买服务:'.$increment_info->name.';积分支付:'.$service_need_points.'积分'; $stime = time(); //添加订单信息 $order = $this->orderService->addOrder($user, $order_pay_type, $service_need_cash, 0, $service_need_points, $increment_info->name, $payment_name, '积分支付', $description1, 2, 0, $project_id, $stime, serialize($params_array), '专享'.$my_discount.'折优惠'); if (!$order) { throw new \Exception('生成订单失败!'); } $oid = $this->payService->getTradeNo($order->id);//订单号 if (!$this->serviceService->updateOid($order->id, $oid)) { throw new \Exception('生成订单号失败!'); } //会员日志:添加创建增值服务订单日志 $log_rst1 = $this->serviceService->writeMembersLog($user, '9001', [$oid,'积分兑换','']); //修改会员积分 if (false === $p_rst = $this->memberPointService->reportDeal($user->id, $user->utype, 2, $service_need_points)) { throw new \Exception('修改会员积分失败!'); } else { $handsel['uid'] = $user->id; $handsel['utype'] = $user->utype; $handsel['htype'] = 'increment_download_resume'; $handsel['htype_cn'] = '购买增值包:' . $increment_info->name; $handsel['operate'] = 2; $handsel['points'] = $service_need_points; if (!$this->memberHandselRepository->addNew($handsel)) { //添加积分操作记录 throw new \Exception('添加积分操作记录失败!'); } $notes = date('Y-m-d H:i:s', time()) . "通过积分兑换成功开通{ $increment_info->name}"; } DB::commit(); } catch (\Exception $e) { DB::rollback(); return response()->json(['status'=>0, 'msg' => $e->getMessage()]); } return response()->json(['status'=>1, 'msg' => '积分兑换成功!','data'=>$oid]); } else { if ($is_deductible==1 && $my_point->points<$deductible) { return response()->json(['status'=>0, 'msg' => '积分不足,请使用其他方式支付!!']); } $params['jobs_id'] = $jobs_id; $params['days'] = $increment_info['value']; $nowtime = time(); $params['starttime'] = $nowtime; for ($i=0; $i < $params['days']*4; $i++) { $timespace = 3600*6*$i; if ($i+1==$params['days']*4) { $params['endtime'] = $nowtime+$timespace; } } return $this->callCashPay($my_setmeal, $my_point, $increment_info, $order_pay_type, $payment_name, $service_need_cash, $is_deductible, $deductible, '', $params, 0, $project_id, $my_discount); } } /**购买积分 * @return ServiceController|\Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function pointsAdd() { if (!config('aix.companyset.points.points_set.enable_com_buy_points')) { return $this->showMessage('企业充值入口关闭!', route('mobile.firm.service.points')); } $user = auth('web-company')->user(); $myPoints = $this->memberPointService->getPoints($user->id, 1); $res = $this->serviceService->pointsAdd(); $res['mypoints'] = $myPoints; $res['wap_title']='充值积分'; return view('mobile.app.company.service.points.points_add', $res); } public function pointsSave(Request $request) { if (!config('aix.companyset.points.points_set.enable_com_buy_points')) { return $this->showMessage('企业充值未开启,请联系网站管理员!', route('mobile.firm.service.points')); } $payment_name = $request->input('payment_name', ''); $points = $request->input('points', 0); if (!$points) { return response()->json(['status'=>0, 'msg'=>"请输入要购买的积分数量!"]); } elseif ($points < config('aix.companyset.points.points_set.com_buy_points_min')) { $points = config('aix.companyset.points.points_set.com_buy_points_min'); } $service_need_cash = round($points/config('aix.companyset.points.points_set.payment_rate'), 2); $paymenttpye = $this->paymentService->returnPayment($payment_name); if (!$paymenttpye) { return array( 'status'=>0, 'msg' => '支付方式错误!'); } $user = auth('web-company')->user(); $description = '购买积分'; $params['points'] = $points; $params['cash'] = $service_need_cash; $params['rate'] = config('aix.companyset.points.points_set.payment_rate'); $order = $this->orderService->addOrder($user, 2, $service_need_cash, $service_need_cash, 0, '购买积分', $payment_name, $paymenttpye->name, $description, 1, 0, 0, 0, serialize($params)); $tradeNo = $this->payService->getTradeNo($order->id); if (!$this->serviceService->updateOid($order->id, $tradeNo)) { throw new ResponseException('生成订单号失败!'); } $payOrder = new PayOrder(); $payOrder->trade_no = $tradeNo; $payOrder->subject = '购买积分'; $payOrder->detail = $description; $payOrder->price = $service_need_cash; $payOrder->callback = "App\Services\Common\OrderService.pointsSave"; if ($payment_name == 'wechat') { if (!is_weixin()) { $type = 'wap'; } else { //预留 } $payOrder->return_url=route('mobile.common.orderWechat', ['oid'=>$payOrder->trade_no]); } else { $type = 'wap'; $payOrder->return_url=route('mobile.firm.service.order.index'); } return $this->payService->pay($payment_name, $type, $payOrder); } /**现金支付 * @param $resume_id * @param $my_setmeal * @param $my_point * @param $increment_info * @param $order_pay_type * @param string $payment_name * @param string $amount * @param $is_deductible * @param int $deductible * @param string $description * @param string $params * @param int $points * @param int $stemeal * @param string $discount * @return \Illuminate\Http\JsonResponse * @throws ResponseException * @throws \Prettus\Validator\Exceptions\ValidatorException */ protected function callCashPay($my_setmeal, $my_point, $increment_info, $order_pay_type, $payment_name = '', $amount = '0.0', $is_deductible, $deductible = 0, $description = '', $params = '', $points = 0, $stemeal = 0, $discount = '') { //获取支付方式 $paymenttpye = $this->paymentService->returnPayment($payment_name); if (!$paymenttpye) { return array( 'status'=>0, 'msg' => '支付方式错误!'); } if (!config("aix.system.pay.{$payment_name}.is_on")) { if ($payment_name == 'alipay') { return "支付方式未开启!请联系客服电话:【".config('aix.system.pay.offline.service_tel')."】"; } else { return array( 'status'=>0, 'msg' => "支付方式未开启!请联系客服电话:【".config('aix.system.pay.offline.service_tel')."】"); } } if ($my_point->points < $deductible) { return array( 'status'=>0, 'msg' => '积分不足,请使用其他方式支付!'); } if ($is_deductible==0) { $deductible = 0; } $points_price=round($deductible/config('aix.companyset.points.points_set.payment_rate'),2); //积分抵扣的钱 /** * 修改吴正科的DB 写法 * 没有折扣价格怎么就变成了原价了,积分不要吗 * 还有个在配置文件中的购买增值服务优惠 */ $mobile_discount=config("aix.mobile.mobile_set.mobile_set.mobile_setmeal_increment_discount_value")/100;//移动段固定折扣 if ($mobile_discount==0){$mobile_discount=1;} //没有配置,就为1 除了是不变的 $my_discount=$discount; if ($my_discount > 0){ //如果有折扣 //先打自己套餐的折扣,再打固定的折扣 $service_need_cash=($increment_info->price*$my_discount/10)*$mobile_discount; }else{ $service_need_cash=($increment_info->price)*$mobile_discount; //增值包套餐金额 } $service_need_cash=round($service_need_cash,2);//去掉多余小数点 $service_need_cash-=$points_price;//都需要减去积分抵扣的钱 $service_need_cash=round($service_need_cash,2); $paysetarr['ordtotal_fee']=$service_need_cash; if ($description=='') { $description = '购买服务:'.$increment_info->name; } $description .= ';'.$paymenttpye->name.$paysetarr['ordtotal_fee'].'元'; if ($deductible>0) { $description .= ';积分支付:'.$deductible.'积分'; } $stime = time(); $user = auth('web-company')->user(); //生成订单 $order = $this->orderService->addOrder($user, $order_pay_type, $amount, $paysetarr['ordtotal_fee'], $description, $increment_info->name, $payment_name, $paymenttpye->name, $description, 1, $deductible, $stemeal, 0, serialize($params), '专享'.$my_discount.'折优惠'); $tradeNo = $this->payService->getTradeNo($order->id); if (!$this->serviceService->updateOid($order->id, $tradeNo)) { throw new ResponseException('生成订单号失败!'); } $payOrder = new PayOrder(); $payOrder->trade_no = $tradeNo; $payOrder->subject = '购买' . $increment_info->name; $payOrder->detail = $description; $payOrder->price = $paysetarr['ordtotal_fee']; $payOrder->callback = "App\Services\Common\OrderService.incrementSave"; if ($payment_name == 'wechat') { if (!is_weixin()) { $type = 'wap'; } else { //如果在微信浏览器中 $type="official"; $payOrder->openid = $this->payService->getPayOpenid(); $payOrder->return_url = route('service.order.index'); $result = $this->payService->pay($payment_name, $type, $payOrder); return response()->json(['status'=>1, 'msg' => $result]); //预留 } $payOrder->return_url=route('mobile.common.orderWechat', ['oid'=>$payOrder->trade_no]); } else { $type = 'wap'; $payOrder->return_url=route('mobile.firm.service.order.index'); } return $this->payService->pay($payment_name, $type, $payOrder); } /**订单列表 * @param Request $request * @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\JsonResponse|\Illuminate\View\View * @throws \Throwable */ public function orderList(Request $request) { $user = auth('web-company')->user(); $res = $this->orderService->orderList($request->all(), $user); if ($request->ajax()) { if ($res['orderList']->lastPage() < $res['orderList']->currentPage()) { return response()->json(['status'=>0]); } return response()->json(['status'=>1,'data'=>view('mobile.app.company.order.ajax.ajax_order_list', ['orderList'=>$res['orderList'],'pay_status_choose'=>$res['pay_status_choose'],'order_type'=>$res['order_type']])->render()]); } $res['wap_title']='订单列表'; return view('mobile.app.company.order.index', $res); } /**删除订单 * @param Request $request * @return \Illuminate\Http\JsonResponse * @throws \Throwable */ public function orderDel(Request $request) { $id = $request->id?$request->id:0; if (!$id) { return response()->json(['status'=>0,'msg'=>'参数错误']); } if ($request->method()=='POST') { $user = auth('web-company')->user(); return $this->orderService->orderDel($id,$user); } $tip='订单被删除后无法恢复,您确定要删除该订单吗?'; return response()->json(['status'=>1, 'msg'=>'', 'data'=>['html'=>view('app.company.ajax.ajax_warning', ['tip'=>$tip])->render()]]); } /**订单取消 * @param Request $request * @return \Illuminate\Http\JsonResponse * @throws \Throwable */ public function orderCancel(Request $request) { $id = $request->id?$request->id:0; $user = auth('web-company')->user(); if (!$id) { return response()->json(['status'=>0,'msg'=>'参数错误']); } if ($request->method() == 'POST') { return $this->orderService->orderCancel($id, $user); } $tip='您确定要取消该订单吗?'; $description='如果您在支付过程中遇到问题,可以联系网站客服,联系电话:'.config('aix.system.site.site.bootom_tel').'。'; return response()->json(['status'=>1, 'msg'=>'', 'data'=>['html'=>view('app.company.ajax.ajax_warning', ['tip'=>$tip, 'description'=>$description])->render()]]); } /**订单详情 * @param $id * @return ServiceController|\Illuminate\Contracts\View\Factory|\Illuminate\View\View * @throws ResponseException */ public function orderDetail($id) { if (!$id) { return $this->showMessage('参数错误!', 404); } $user = auth('web-company')->user(); $res = $this->orderService->orderDetail($id, $user); if ($res['order']->is_pay==2 || $res['order']->is_pay==3) { $tpl = 'order_detail'; } else { $tpl = 'order_detail_nopay'; } return view("mobile.app.company.order.{$tpl}", $res); } /**索要发票 * @param Request $request * @return array|\Illuminate\Http\JsonResponse */ public function invoiceSave(Request $request) { $data = $request->except('_token'); $user = auth('web-company')->user(); return $this->orderService->invoiceSave($data, $user); } /**重新支付 * @param int $id * @return ServiceController|\Illuminate\Http\JsonResponse * @throws ResponseException */ public function orderPayRepeat($id = 0) { if (!$id) { return $this->showMessage('参数错误!', 404); } return $this->orderService->mobileOrderPayRepeat($id); } /** * 电子票据 */ // public function enote($id = 0) // { // if (!$id) { // return response()->json(['status'=>0, 'msg'=>"参数错误!"]); // } // $res = $this->orderService->enote($id); // return response()->json(['status'=>1,'msg'=>'获取数据成功!','data'=>['html'=>view('app.company.ajax.ajax_enote', $res)->render()]]); // } /**订单支付成功 * @param $oid * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View * @throws ResponseException */ public function setmealFinish($oid) { $res = $this->serviceService->setmealFinish($oid); return view('app.company.service.order_finish', $res); } }