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);
}
}