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->companyTplService = $companyTplService;
$this->complaintConsultantService = $complaintConsultantService;
}
/**我的套餐
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function index()
{
$user = auth('web-company')->user();//企业信息
$res = $this->serviceService->index($user);
return view('app.company.service.index', $res);
}
public function setmealDetail(Request $request)
{
$user = auth('web-company')->user();//企业信息
$res = $this->serviceService->setmealDetail($request->all(), $user);
return view('app.company.service.setmeal_detail', $res);
}
/**积分任务
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function points()
{
$user = auth('web-company')->user();
$res = $this->serviceService->points($user);
return view('app.company.service.points', $res);
}
/**积分明细
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function pointsDetail(Request $request)
{
$user = auth('web-company')->user();
$type = $request->type?$request->type:1;
$res = $this->serviceService->pointsDetail(3, $user);
return view('app.company.service.points_detail', $res);
}
/**套餐升级
* @param $id
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
* @throws \App\Exceptions\ResponseException
*/
public function setmealAdd($id)
{
$user = auth('web-company')->user();
if (!$id) {
throw new ResponseException('请选择正确的套餐!', '', 404);
}
$setmeal = $this->serviceService->setmealAdd($id, $user);
return view('app.company.service.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('points', '');
$setmeal_id = $request->input('project_id', 0);
$is_deductible = $request->input('is_deductible', 0);
if ($payment_name == 'wechat') {
$type = 'scan';
} elseif ($payment_name == 'alipay') {
$type = 'web';
} elseif ($payment_name == 'offline') {
$is_deductible=0;
$type = 'pay';
}
if ($is_deductible == 0) {
$deductible = 0;
} else {
$deductible = $request->input('deductible', '');
}
$amount = $request->input('amount', '');//应当付款价格
if ($amount == 0) {
$pay_type = 'points';
}
if ($deductible>0) {
$m_amount = floatval($deductible/config('aix.companyset.points.points_set.payment_rate')); //积分充值比例
} else {
$m_amount =0;//应该减去的钱
}
if ($setmeal_id == 0 || $setmeal_id==1) {
throw new ResponseException(AjaxError("请选择套餐",0));
}
$setmealInfo = $this->setmealService->getSetmealOne($setmeal_id);//套餐详情
if ($setmealInfo->apply==0){
throw new ResponseException(AjaxError("改套餐不可购买",0));
}
$mypoints = $this->memberPointService->getPoints($user->id, $user->utype);
$amount = $setmealInfo->expense;//套餐的价格
$price=$amount-$m_amount; //套餐-积分兑换的钱
$price=round($price, 2); //去小数点
$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 . '积分';
}
if ($deductible > 0 && $is_deductible) {
$amount = $amount - floatval($deductible / config('aix.companyset.points.points_set.payment_rate'));
}
$paysetarr['ordtotal_fee'] = $price;
$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, $price, $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 = $price;
$payOrder->callback = "App\Services\Common\OrderService.updateCompany";
$payOrder->return_url = route('service.order.index');
$result = $this->payService->pay($payment_name, $type, $payOrder);
if ($payment_name == 'wechat') {
return response()->json([
'status' => 1,
'tradeCode' => get_qrcode_html($result->code_url),
'tradeNo' => $tradeNo,
]);
} elseif ($payment_name =='alipay') {
return $result;
} else {
return response()->json([
'status'=>1,
'tradeNo'=>$tradeNo,
'url'=>route("service.order.detail",['id'=>$insert_id->id]),
]);
}
}
}
/**订单状态
* @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());
return view('app.company.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); //套餐折扣
$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 {
//会员套餐添加增值包数量
$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, $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 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);
// dd($request);
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->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('添加积分操作记录失败!');
}
}
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 = 15;
$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('添加积分操作记录失败!');
}
}
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 = 15;
$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, '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('添加积分操作记录失败!');
}
}
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 \Illuminate\Http\JsonResponse
* @throws ResponseException
* @throws \Prettus\Validator\Exceptions\ValidatorException
*/
protected function incrementStick($request)
{
$user = auth('web-company')->user();
$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);
$form_validate = $request->input('form_validate', false); //支付宝支付是Form 表单提交的,错误信息返回json,不是form的就不进行callback
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 (!$jobsRes = $this->jobsRepository->findWhere(['id'=>$jobs_id,'company_id'=>$user->id])->first()) {
return response()->json(['status'=>0,'msg'=>'该职位不存在!']);
}
if ($this->jobsRepository->getInfo(['stick'=>1,'id'=>$jobs_id,])) {
return response()->json(['status'=>0,'msg'=>'该职位已置顶!']);
}
$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 {
$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 = Promotion::create($promotionsqlarr);
if (!$promotion_insert_id) {
throw new \Exception('职位置顶添加失败!');
}
// $refresh_time = $this->jobsRepository->getFires($jobs_id);
$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('生成订单号失败!');
}
//会员日志:添加创建增值服务订单日志
$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('添加积分操作记录失败!');
}
}
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' => '积分不足,请使用其他方式支付!!']);
}
if ($form_validate){//是否是表单验证的
//返回之后支付宝再用form 表单再请求一遍
return response()->json(['status'=>1, '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 \Illuminate\Http\JsonResponse
* @throws ResponseException
* @throws \Prettus\Validator\Exceptions\ValidatorException
*/
protected function incrementEmergency($request)
{
$user = auth('web-company')->user();
$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);
$form_validate = $request->input('form_validate', false); //支付宝支付是Form 表单提交的,错误信息返回json,不是form的就不进行callback
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 (!$jobsRes = $this->jobsRepository->findWhere(['id'=>$jobs_id,'company_id'=>$user->id])->first()) {
return response()->json(['status'=>0,'msg'=>'该职位不存在!']);
}
if ($this->jobsRepository->getInfo(['emergency'=>1,'id'=>$jobs_id,])) {
return response()->json(['status'=>0,'msg'=>'该职位已紧急!']);
}
$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 {
$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('添加积分操作记录失败!');
}
}
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' => '积分不足,请使用其他方式支付!!']);
}
if ($form_validate){//是否是表单验证的
//返回之后支付宝再用form 表单再请求一遍
return response()->json(['status'=>1, '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 $request)
{
$result = $this->companyTplService->incrementTpl(auth('web-company')->user(), $request->all(), $request->route());
if ($result['code']=='wechat') {
if ($result['type']=='wap') {
return $result['tradeCode'];
} else {
return json_encode(['tradeCode'=>$result['tradeCode'],'tradeNo'=>$result['tradeNo']]);
}
} elseif ($result['code']=='alipay') {
return $result['tradeCode'];
} elseif ($result['code']=='offline') {
return json_encode(['tradeNo'=>$result['tradeNo']]);
} else {
if ($result['status']==1) {
return $this->sendSuccessResponse($result['info']);
} else {
return $this->sendErrorResponse($result['info'], '', 400);
}
}
}
/**智能刷新
* @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('id', 0);
$form_validate = $request->input('form_validate', false); //支付宝支付是Form 表单提交的,错误信息返回json,不是form的就不进行callback
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'); //会员套餐信息
if (isExpire($my_setmeal)){
return response()->json( ['status' => 0, 'msg' => "提醒:您的套餐已到期,请及时到我的套餐处升级套餐!"]);
}
$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 {
//添加自动刷新记录
$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('添加积分操作记录失败!');
}
}
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' => '积分不足,请使用其他方式支付!!']);
}
if ($form_validate){//是否是表单验证的
//返回之后支付宝再用form 表单再请求一遍
return response()->json(['status'=>1, '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->sendErrorResponse('参数错误!', 404);
}
$res = $this->serviceService->pointsAdd();
return view('app.company.increment.points_add', $res);
}
public function pointsSave(Request $request)
{
if (!config('aix.companyset.points.points_set.enable_com_buy_points')) {
return $this->sendErrorResponse('企业充值未开启,请联系网站管理员!', 404);
}
$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('生成订单号失败!');
}
if ($payment_name == 'wechat') {
$type = 'scan';
} elseif ($payment_name == 'offline') {
$type = 'pay';
} else {
$type = 'web';
}
$payOrder = new PayOrder();
$payOrder->trade_no = $tradeNo;
$payOrder->subject = '购买积分';
$payOrder->detail = $description;
$payOrder->price = $service_need_cash;
$payOrder->callback = "App\Services\Common\OrderService.pointsSave";
$result = $this->payService->pay($payment_name, $type, $payOrder);
if ($payment_name == 'wechat') {
return response()->json([
'status' => 1,
'tradeCode' => get_qrcode_html($result->code_url),
'tradeNo' => $tradeNo,
]);
} elseif ($payment_name == 'offline') {
return response()->json([
'status'=>1,
'tradeNo'=>$tradeNo,
'url'=>route("service.order.detail",['id'=>$order->id]),
]);
} else {
return $result;
}
}
/**现金支付
* @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 ($payment_name == 'wechat') {
$type = 'scan';
} elseif ($payment_name == 'alipay') {
$type = 'web';
} elseif ($payment_name == 'offline') { //如果是线下转账
/**
* 把积分设为0,产生原因:线下线上用的同一个请求参数,
* 切换时候没有擦除,会带上积分
* bug-#1255
*/
$is_deductible=0;
$type='pay';
}
if ($my_point->points < $deductible) {
return array( 'status'=>0, 'msg' => '积分不足,请使用其他方式支付!');
}
if ($is_deductible==0) {
$deductible = 0;
}
if ($deductible>0) {
$m_amount = round($amount- floatval($deductible/config('aix.companyset.points.points_set.payment_rate')),2);
} else {
$m_amount = $amount;
}
$paysetarr['ordtotal_fee']=$m_amount;
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'], $deductible, $increment_info->name, $payment_name, $paymenttpye->name, $description, 1, $deductible, $stemeal, 0, serialize($params), $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 = round($m_amount, 2);
$payOrder->callback = "App\Services\Common\OrderService.incrementSave";
$payOrder->return_url = route('service.order.index');
$result = $this->payService->pay($payment_name, $type, $payOrder);
if ($payment_name == 'wechat') {
return response()->json([
'status' => 1,
'tradeCode' => get_qrcode_html($result->code_url),
'tradeNo' => $tradeNo,
]);
} elseif ($payment_name =='alipay') {
return $result;
} else {
return response()->json([
'status'=>1,
'tradeNo'=>$tradeNo,
'url'=>route("service.order.detail",['id'=>$order->id]),
]);
}
}
/**订单列表
* @param Request $request
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function orderList(Request $request)
{
$user = auth('web-company')->user();
$res = $this->orderService->orderList($request->all(), $user);
return view('app.company.order.index', $res);
}
public function templateList()
{
$res = $this->companyTplService->templateList(auth('web-company')->user());
return view('app.company.increment.template', $res);
}
public function companyUpdate(Request $request)
{
$result = $this->companyTplService->companyUpdate(auth('web-company')->user(), $request->tpl);
if ($result) {
return $this->sendSuccessResponse('更新成功!');
} else {
return $this->sendErrorResponse('更新失败!');
}
}
public function complaintConsultant(Request $request)
{
if($request->method()=='POST'){
$result = $this->complaintConsultantService->getCompanyConsultant(auth('web-company')->user(), $request->all());
if ($result) {
return $this->sendSuccessResponse('投诉成功!');
} else {
return $this->sendErrorResponse('投诉失败!');
}
}else{
$arr['name'] = $request->name;
$arr['id'] = $request->id;
$html = view('app.company.ajax.complaint_consultant', $arr)->render();
return response()->json(['html'=>$html]);
}
}
/**删除订单
* @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)
{
$user = auth('web-company')->user();
$id = $request->id?$request->id:0;
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->sendErrorResponse('参数错误!', 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("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->sendErrorResponse('参数错误!', 404);
}
return $this->orderService->orderPayRepeat($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);
}
}