IndexController.php 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719
  1. <?php
  2. namespace App\Http\Controllers\Api\Crm;
  3. use App\Http\Controllers\Api\ApiBaseController;
  4. use Illuminate\Http\Request;
  5. use App\Services\Crm\JobsService;
  6. use App\Services\Crm\CompanyService;
  7. use App\Services\Crm\JobfairService;
  8. use App\Services\Crm\PersonService;
  9. use App\Services\Auth\RegisterService;
  10. use Illuminate\Support\Facades\Cache;
  11. use App\Services\Common\EmailService;
  12. use App\Services\Common\MembersSetmealService;
  13. use App\Services\Common\SmsService;
  14. use App\Services\Common\TaskService;
  15. use App\Services\Common\SetmealService;
  16. use App\Services\Common\SetmealIncrementsService;
  17. use App\Services\Person\MemberPointService;
  18. use App\Services\Common\PaymentService;
  19. use App\Services\Common\PayService;
  20. use App\Services\Common\OrderService;
  21. use App\Services\Company\ServiceService;
  22. use Aix\Pay\Data\PayOrder;
  23. use App\Models\Order;
  24. class IndexController extends ApiBaseController
  25. {
  26. protected $jobsService;
  27. protected $companyService;
  28. protected $jobfairService;
  29. protected $personService;
  30. protected $registerService;
  31. protected $membersSetmealService;
  32. protected $emailService;
  33. protected $taskService;
  34. protected $setmealService;
  35. protected $setmealIncrementsService;
  36. protected $memberPointService;
  37. protected $paymentService;
  38. protected $payService;
  39. protected $orderService;
  40. protected $serviceService;
  41. protected $hash;
  42. public function __construct
  43. (
  44. JobsService $jobsService,
  45. CompanyService $companyService,
  46. JobfairService $jobfairService,
  47. PersonService $personService,
  48. RegisterService $registerService,
  49. MembersSetmealService $membersSetmealService,
  50. EmailService $emailService,
  51. TaskService $taskService,
  52. SetmealService $setmealService,
  53. SetmealIncrementsService $setmealIncrementsService,
  54. MemberPointService $memberPointService,
  55. PaymentService $paymentService,
  56. PayService $payService,
  57. OrderService $orderService,
  58. ServiceService $serviceService
  59. )
  60. {
  61. $this->jobsService = $jobsService;
  62. $this->companyService = $companyService;
  63. $this->jobfairService = $jobfairService;
  64. $this->personService = $personService;
  65. $this->registerService = $registerService;
  66. $this->membersSetmealService = $membersSetmealService;
  67. $this->emailService = $emailService;
  68. $this->taskService = $taskService;
  69. $this->setmealService = $setmealService;
  70. $this->setmealIncrementsService = $setmealIncrementsService;
  71. $this->memberPointService = $memberPointService;
  72. $this->paymentService = $paymentService;
  73. $this->payService = $payService;
  74. $this->orderService = $orderService;
  75. $this->serviceService = $serviceService;
  76. $this->hash = 'e@LJ9V9YmCm3#CJr';
  77. }
  78. //企业会员登录
  79. public function companyLogin(Request $request)
  80. {
  81. $token = $request->input('token');
  82. $auth_success = $this->check_auth($token);
  83. if (!$auth_success) {
  84. $data = ['status'=>'0','msg'=>'验证失败'];
  85. return response()->json($data);
  86. }
  87. $company_id = $request->input('uid', 0);
  88. if (!$company_id) {
  89. return false;
  90. }
  91. $company = $this->companyService->getCompany($company_id);
  92. if (!$company) {
  93. $data = ['status'=>'0','msg'=>'企业不存在'];
  94. return response()->json($data);
  95. }
  96. $key=uniqid();
  97. Cache::put($key, $company, 1);
  98. $url=route('auth.thirdlogin.background', ['ticket' => $key])."?redirect_url=".urlencode(route('com.index'));
  99. return redirect($url);
  100. }
  101. public function check_auth($token){
  102. $auth_success = false;
  103. if ($token) {
  104. if ($this->decrypt($token, $this->hash) == $this->hash) {
  105. $auth_success = true;
  106. }
  107. }
  108. return $auth_success;
  109. }
  110. public function decrypt($txt, $key = '_qscms') {
  111. // $txt 的结果为加密后的字串经过 base64 解码,然后与私有密匙一起,
  112. // 经过 passport_key() 函数处理后的返回值
  113. $txt = $this->passport_key(base64_decode($txt), $key);
  114. // 变量初始化
  115. $tmp = '';
  116. // for 循环,$i 为从 0 开始,到小于 $txt 字串长度的整数
  117. for ($i = 0; $i < strlen($txt); $i++) {
  118. // $tmp 字串在末尾增加一位,其内容为 $txt 的第 $i 位,
  119. // 与 $txt 的第 $i + 1 位取异或。然后 $i = $i + 1
  120. $tmp .= $txt[$i] ^ $txt[++$i];
  121. }
  122. // 返回 $tmp 的值作为结果
  123. return $tmp;
  124. }
  125. /**
  126. * Passport 密匙处理函数
  127. *
  128. * @param string 待加密或待解密的字串
  129. * @param string 私有密匙(用于解密和加密)
  130. *
  131. * @return string 处理后的密匙
  132. */
  133. function passport_key($txt, $encrypt_key) {
  134. // 将 $encrypt_key 赋为 $encrypt_key 经 md5() 后的值
  135. $encrypt_key = md5($encrypt_key);
  136. // 变量初始化
  137. $ctr = 0;
  138. $tmp = '';
  139. // for 循环,$i 为从 0 开始,到小于 $txt 字串长度的整数
  140. for($i = 0; $i < strlen($txt); $i++) {
  141. // 如果 $ctr = $encrypt_key 的长度,则 $ctr 清零
  142. $ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr;
  143. // $tmp 字串在末尾增加一位,其内容为 $txt 的第 $i 位,
  144. // 与 $encrypt_key 的第 $ctr + 1 位取异或。然后 $ctr = $ctr + 1
  145. $tmp .= $txt[$i] ^ $encrypt_key[$ctr++];
  146. }
  147. // 返回 $tmp 的值作为结果
  148. return $tmp;
  149. }
  150. public function getApplys()
  151. {
  152. $data = ['status'=>'1','msg'=>['Aio','Analyze','Crm','Daping','Jobfair']];
  153. return response()->json($data);
  154. }
  155. //获取企业职位信息
  156. public function getjobs(Request $request)
  157. {
  158. $uid = $request->input('com_id');
  159. $audit = $request->input('audit', 0);
  160. $jobtype = $request->input('jobtype', 0);
  161. $limit = $request->input('limit', '');
  162. $offset = $request->input('offset');
  163. $order_by = 'field(audit,2) desc, id desc';
  164. $map = [];
  165. if($audit){
  166. $map[] = ['audit','=',$audit];
  167. }
  168. /*$map['valid'] = 1;
  169. $map['display'] = 1;*/
  170. $where_in = [];
  171. if($uid){
  172. $where_in = ['company_id'=>array($uid)];
  173. }
  174. $rst = $this->jobsService->getJobs($map, $where_in, $order_by, '', $offset, $limit);
  175. if ($rst) {
  176. $list = [];
  177. if ($rst->isNotEmpty()) {
  178. $list = $this->jobsService->dealjobFilelds($rst);
  179. }
  180. return response()->json(['status'=>1,'msg'=>['list'=>$list]]);
  181. } else {
  182. return response()->json(['status'=>0,'msg'=>'查询失败']);
  183. }
  184. }
  185. //获取企业预约刷新的职位
  186. public function getJobRefresh(Request $request)
  187. {
  188. $uid = $request->input('com_uid', 0);
  189. $type = $request->input('type', 1);
  190. $return_data = [];
  191. if($uid && $type){
  192. $where = array('uid'=>$uid,'type'=>$type);
  193. $res = $this->jobsService->getAutoRefreshJobs($where, 'pid');
  194. if ($res->isNotEmpty()) {
  195. $return_data = $res->toArray();
  196. }
  197. }
  198. return response()->json(['status'=>1,'msg'=>$return_data]);
  199. }
  200. //获取招聘会参会企业
  201. public function jobfairExhibitors(Request $request)
  202. {
  203. $com_ids = $request->input('com_id');
  204. $rst = $this->jobfairService->getJobfairExhibitors($com_ids, $request->all());
  205. return response()->json(['status'=>1,'msg'=>$rst]);
  206. }
  207. //审核招聘会展位预定
  208. public function auditJobfairExhibitor(Request $request)
  209. {
  210. $rst = $request->all();
  211. $rst = $this->jobfairService->auditExhibitors($request->all());
  212. return response()->json($rst);
  213. }
  214. //获取招聘会职位信息
  215. public function getJobfairJobs(Request $request)
  216. {
  217. $rst = $this->jobfairService->getJobs($request->all());
  218. return response()->json(['status'=>1,'msg'=>['list'=>$rst]]);
  219. }
  220. //获取招聘会详细信息
  221. public function getJobfairInfo(Request $request)
  222. {
  223. $id = $request->input('id', 0);
  224. if(!$id){
  225. return response()->json(['status'=>0,'msg'=>'招聘会编号不正确!']);
  226. }
  227. $info = $this->jobfairService->getJobfairInfo([['id','=',$id]]);
  228. if (!$info) {
  229. return response()->json(['status'=>0,'msg'=>'招聘会编号不正确!']);
  230. }
  231. return response()->json(['status'=>1,'msg'=>$info]);
  232. }
  233. //企业认证
  234. public function companyAudit(Request $request)
  235. {
  236. $ids = $request->id;
  237. if (!$ids) {
  238. return response()->json(['status'=>0,'msg'=>'请选择要审核的企业']);
  239. }
  240. $rst = $this->companyService->auditCompany($request->all());
  241. return response()->json($rst);
  242. }
  243. //获取职位详细信息
  244. public function getJobInfo(Request $request)
  245. {
  246. $id = $request->input('id', 0);
  247. if (!$id) {
  248. return response()->json(['status'=>0,'msg'=>'职位id不正确!']);
  249. }
  250. $jtype = $request->input('jtype', '');
  251. if ($jtype == 'network') { //网络职位信息
  252. $info = $this->jobsService->getJobInfo($id);
  253. return response()->json($info);
  254. } elseif ($jtype == 'jobFair') { //招聘会职位信息
  255. $info = $this->jobfairService->getJobInfo($id);
  256. return response()->json($info);
  257. } else {
  258. return response()->json(['status'=>0,'msg'=>'参数错误']);
  259. }
  260. }
  261. //审核网络职位
  262. public function auditJobs(Request $request)
  263. {
  264. //审核职位、刷新职位
  265. $rst = $this->jobsService->auditJobs($request->all());
  266. return response()->json($rst);
  267. }
  268. //审核招聘会职位
  269. public function auditFairJobs(Request $request)
  270. {
  271. $rst =$this->jobfairService->auditJobs($request->all());
  272. return response()->json($rst);
  273. }
  274. //获取网络职位数量
  275. public function jobNums(Request $request){
  276. $uid = $request->input('com_id', 0);
  277. $audit = $request->input('audit', 0);
  278. $jobtype = $request->input('jobtype', 0);
  279. $map = [];
  280. if($audit){
  281. $map[] = ['audit','=',$audit];
  282. }
  283. $whereIn = [];
  284. if ($uid) {
  285. $whereIn['company_id'] = explode(',', $uid);
  286. }
  287. $num = $this->jobsService->getJobNums($map, $whereIn);
  288. if ($num !== false) {
  289. return response()->json(['status'=>1,'msg'=>['total'=>$num]]);
  290. } else {
  291. return response()->json(['status'=>0,'msg'=>'查询失败']);
  292. }
  293. }
  294. //获取在招职位数量
  295. public function validJobNums(Request $request)
  296. {
  297. $uid = $request->input('com_id', 0);
  298. $map = [];
  299. if (config('aix.companyset.comset.show_set.jobs_display')==1) {
  300. $map[] = array('audit','=',1);
  301. } else {
  302. $map[] = array('audit','<>',3);
  303. }
  304. $whereIn = [];
  305. if ($uid) {
  306. $whereIn['company_id'] = explode(',', $uid);
  307. }
  308. $num = $this->jobsService->getJobNums($map, $whereIn);
  309. if ($num !== false) {
  310. return response()->json(['status'=>1,'msg'=>['total'=>$num]]);
  311. } else {
  312. return response()->json(['status'=>0,'msg'=>'查询失败']);
  313. }
  314. }
  315. //获取招聘会职位数量
  316. public function fairjobsNums(Request $request)
  317. {
  318. $uid = $request->input('com_id', 0);
  319. $audit = $request->input('audit', 0);
  320. $map = [];
  321. if($audit){
  322. $map[] = ['audit','=',$audit];
  323. }
  324. $whereIn = [];
  325. if ($uid) {
  326. $whereIn['company_id'] = $uid;
  327. }
  328. $num = $this->jobfairService->getJobNums($map, $whereIn);
  329. if ($num !== false) {
  330. return response()->json(['status'=>1,'msg'=>['total'=>$num]]);
  331. } else {
  332. return response()->json(['status'=>0,'msg'=>'查询失败']);
  333. }
  334. }
  335. //获取招聘会预定数量
  336. public function jobfairExhibitorsNum(Request $request)
  337. {
  338. $rst = $this->jobfairService->getJobfairExhibitorNums($request->all());
  339. return response()->json($rst);
  340. }
  341. //获取简历信息
  342. public function getResume(Request $request)
  343. {
  344. $resume_id = $request->input('resume_id', 0);
  345. if (!$resume_id) {
  346. return response()->json(['status'=>0,'msg'=>'请选择简历!']);
  347. }
  348. $resume_info = $this->personService->getResume($resume_id);
  349. return response()->json($resume_info);
  350. }
  351. //审核简历
  352. public function auditResume(Request $request)
  353. {
  354. $id = $request->input('id', 0);
  355. if (!$id) {
  356. return response()->json(['staus'=>0, 'msg'=>'请选择简历!']);
  357. }
  358. $id = explode(",", $id);
  359. $rst = $this->personService->auditResume($id, $request->all());
  360. return response()->json($rst);
  361. }
  362. //获取付款方式
  363. public function getPayments(){
  364. }
  365. //添加企业会员
  366. public function addCompany(Request $request)
  367. {
  368. $company=$this->registerService->registerCompany($request->all());
  369. $this->membersSetmealService->addMemberSetmeal($company, config('aix.companyset.setmeal_com.setmeal_com_set.reg_service'));
  370. $company->uid = $company->id;
  371. $this->taskService->doUserTask($company, 17);
  372. $this->emailService->setAuthTag('company')->setCallback('App\Services\Company\CompanyService', 'sendAuthEmailHook', [$request->email, $company])->sendAuthMail($request->email, EmailService::TEMPLATE_VALIDATION);
  373. if ($company) {
  374. return response()->json(['status'=>1,'msg'=>$company]);
  375. } else {
  376. return response()->json(['status'=>0,'msg'=>'操作失败']);
  377. }
  378. }
  379. //处理订单
  380. public function setOrder(Request $request)
  381. {
  382. //参数
  383. $order_id = $request->input('id', 0);
  384. $notes = $request->input('notes', '');
  385. if (!$order_id) {
  386. return response()->json(['status'=>0,'msg'=>'请选择订单!']);
  387. }
  388. //获取订单信息
  389. $order = Order::where('id', $order_id)->first();
  390. if ($order->is_pay != '1') {
  391. return response()->json(['status'=>0,'msg'=>'只有未付款订单可以确认收款!']);
  392. }
  393. $up_data['is_pay'] = 2;
  394. $up_data['out_trade_no'] = $order->oid;
  395. $up_data['notes'] = $notes;
  396. $up_data['admin_id'] = 0;
  397. $up_data['operate_time'] = date('Y-m-d H:i:s', time());
  398. if (!$this->payService->offlineHook($up_data)) {
  399. return response()->json(['status'=>0,'msg'=>'订单操作失败!']);
  400. }
  401. return response()->json(['status'=>1,'msg'=>'订单操作成功!']);
  402. }
  403. //修改简历联系方式(手机和邮箱)
  404. //获取订单信息
  405. public function getSetmealInfo($order_type,$setmeal_id=0)
  406. {
  407. switch($order_type){
  408. case 1:
  409. $setmeal = $this->setmealService->getSetmealOne($setmeal_id);
  410. if ($setmeal) {
  411. return $setmeal->setmeal_name;
  412. } else {
  413. return '会员套餐';
  414. }
  415. break;
  416. case 2:
  417. return '充值积分';
  418. break;
  419. case 6:
  420. case 7:
  421. case 8:
  422. case 9:
  423. case 12:
  424. case 15:
  425. case 16:
  426. $rst = $this->setmealIncrementsService->getIncrement($setmeal_id);
  427. if ($rst) {
  428. return $rst->name;
  429. } else {
  430. return '';
  431. }
  432. break;
  433. case 11:
  434. return '诚聘通';
  435. break;
  436. case 10:
  437. return '企业模板';
  438. break;
  439. default:
  440. return "CRM自定义类型订单";
  441. break;
  442. }
  443. }
  444. public function getCat($order_type)
  445. {
  446. $cat = 'jobs';
  447. switch($order_type){
  448. case 5:
  449. $cat = 'tpl';
  450. break;
  451. case 6:
  452. $cat = 'download_resume';
  453. break;
  454. case 7:
  455. $cat = 'sms';
  456. break;
  457. case 8:
  458. $cat = 'stick';
  459. break;
  460. case 9:
  461. $cat = 'emergency';
  462. break;
  463. case 12:
  464. $cat = 'auto_refresh_jobs';
  465. break;
  466. case 15:
  467. $cat = "jobs";
  468. break;
  469. case 16:
  470. $cat = "jobfair_num";
  471. break;
  472. default:
  473. $cat = "";
  474. break;
  475. }
  476. return $cat;
  477. }
  478. //添加企业订单
  479. public function addCompanyOrder(Request $request)
  480. {
  481. $member_uid = $request->input('uid', 0);
  482. if(!$member_uid){
  483. return response()->json(['status'=>0,'msg'=>'客户uid错误!']);
  484. }
  485. $order_type = $request->input('order_type', 0);
  486. if($order_type==1 || $order_type==6 || $order_type==7 || $order_type==8 || $order_type==9 || $order_type==12 || $order_type==15|| $order_type==16){
  487. $setmeal_id = $request->input('setmeal_id', 0);
  488. if($setmeal_id==0){
  489. return response()->json(['status'=>0,'msg'=>'请选择套餐!']);
  490. }
  491. $points = 0;
  492. }elseif($order_type==2){
  493. $setmeal_id = 0;
  494. $points = $request->input('points', 0);
  495. if($points==0){
  496. return response()->json(['status'=>0,'msg'=>'请填写充值积分数!']);
  497. }
  498. //判断是否开启积分充值功能
  499. if (!config('aix.companyset.points.points_set.enable_com_buy_points')) {
  500. return response()->json(['status'=>0,'msg'=>'企业充值未开启,请联系网站管理员!']);
  501. }
  502. //判断充值数量是否大于最小值
  503. if ($points < config('aix.companyset.points.points_set.com_buy_points_min')) {
  504. return response()->json(['status'=>0,'msg'=>'企业积分充值不能小于'.config('aix.companyset.points.points_set.com_buy_points_min').'!']);
  505. }
  506. } elseif ($order_type==10) {
  507. $setmeal_id = $request->input('setmeal_id', 0);
  508. if($setmeal_id==0){
  509. return response()->json(['status'=>0,'msg'=>'请选择套餐!']);
  510. }
  511. $points = 0;
  512. //判断当前企业模板是否存在
  513. $tpl_info = $this->companyService->getTpl($setmeal_id);
  514. if (!$tpl_info) {
  515. return response()->json(['status'=>0,'msg'=>'所选企业模板不存在!']);
  516. }
  517. //判断所选模板是否已购买
  518. $company_tpl = $this->companyService->getCompanyTpl(['uid'=>$member_uid,'tplid'=>$setmeal_id]);
  519. if ($company_tpl) {
  520. return response()->json(['status'=>0,'msg'=>'所选企业模板已购买!']);
  521. }
  522. } else{
  523. $setmeal_id = 0;
  524. $points = 0;
  525. }
  526. //职位置顶/职位紧急时判断是否选择了职位
  527. if($order_type == 8 || $order_type == 9 || $order_type == 12){
  528. $job_id = $request->input('job_id', 0);
  529. if(!$job_id){
  530. return response()->json(['status'=>0,'msg'=>'请选择职位!']);
  531. }
  532. //判断职位是否已预约刷新
  533. if($order_type == 12){
  534. $promotion_field = $this->jobsService->getAutoRefresh(['pid'=>$job_id,'type'=>1]);
  535. if($promotion_field){
  536. return response()->json(['status'=>0,'msg'=>'该职位已预约刷新!']);
  537. }
  538. }
  539. }
  540. $payment = $request->input('payment', '');
  541. $payment_cn = $request->input('payment_cn', '');
  542. if($payment=='' || $payment_cn==''){
  543. return response()->json(['status'=>0,'msg'=>'请选择支付方式!']);
  544. }
  545. //获取服务名称
  546. $setmeal_name = $this->getSetmealInfo($order_type,$setmeal_id);
  547. $amount = $request->input('amount', '');
  548. if($amount==''){
  549. return response()->json(['status'=>0,'msg'=>'请填写支付金额!']);
  550. }
  551. $ordtotal_fee = $request->input('ordtotal_fee', '');
  552. if($ordtotal_fee==''){
  553. return response()->json(['status'=>0,'msg'=>'请填写实付金额!']);
  554. }
  555. $uid = $request->input('uid', 0);
  556. if($uid==0){
  557. return response()->json(['status'=>0,'msg'=>'请选择会员!']);
  558. }
  559. //订单类型是crm自定义
  560. if(!array_key_exists($order_type, [1,2,3,4,5,6,7,8,9,10,12,13,14,15]) && $order_type!=15 && $order_type!=16){
  561. $setmeal_name = $request->input('setmeal_name', '');
  562. if(!$setmeal_name){
  563. return response()->json(['status'=>0,'msg'=>'请选择订单类型!']);
  564. }
  565. }
  566. $description = '购买服务:'.$setmeal_name.';'.$payment_cn.$ordtotal_fee.'元';
  567. $notes = $request->input('notes', '');
  568. $cat = $this->getCat($order_type);
  569. //获取会员信息
  570. $user = $this->companyService->getCompany($uid);
  571. $user->uid = $uid;
  572. $my_setmeal = $this->membersSetmealService->getUserSetmeal($user, '1'); //获取会员套餐信息
  573. $my_point = $this->memberPointService->getPoints($user->id, 1); //获取会员积分信息
  574. $increment_info = $this->setmealIncrementsService->getIncrement($setmeal_id); //获取所选简历增值包信息
  575. //职位置顶、职位紧急、职位刷新、简历包、短信包
  576. if ($order_type== 7 || $order_type== 8 || $order_type== 9 || $order_type== 12 || $order_type== 15 || $order_type== 16) {
  577. $my_discount = $this->setmealIncrementsService->getIncrementDiscountByArray($cat, $my_setmeal); //套餐折扣
  578. $params = array();
  579. if ($order_type != 15 && $order_type != 7 && $order_type != 16 ) {
  580. $params['jobs_id'] = $job_id;
  581. $params['days'] = $increment_info->value;
  582. $nowtime = time();
  583. $params['starttime'] = $nowtime;
  584. for ($i=0; $i < $params['days']*4; $i++) {
  585. $timespace = 3600*6*$i;
  586. if($i+1==$params['days']*4){
  587. $params['endtime'] = $nowtime+$timespace;
  588. }
  589. }
  590. }
  591. $callback = "App\Services\Common\OrderService.incrementSave";
  592. $rst = $this->callCashPay($user, $my_setmeal, $my_point, $setmeal_name, $order_type, $payment, $ordtotal_fee, 0, 0, $description, $params, 0, $setmeal_id, '专享'.$my_discount.'折优惠', $notes, $callback);
  593. } elseif ($order_type == 2) {
  594. //积分充值
  595. $params['points'] = $points;
  596. $params['cash'] = $ordtotal_fee;
  597. $params['rate'] = config('aix.companyset.points.points_set.payment_rate');
  598. $callback = "App\Services\Common\OrderService.pointsSave";
  599. $rst = $this->callCashPay($user, $my_setmeal, $my_point, $setmeal_name, $order_type, $payment, $ordtotal_fee, 0, 0, $description, $params, 0, $setmeal_id, '', $notes, $callback);
  600. } elseif ($order_type == 1) {
  601. //套餐
  602. $params = [
  603. 'setmeal_id'=>$setmeal_id,
  604. 'setmeal_name'=>$setmeal_name,
  605. 'company_id'=>$user->id,
  606. 'utype'=>$user->utype,
  607. 'companyname'=>$user->companyname,
  608. 'amount'=>$ordtotal_fee,
  609. 'points'=>$points,
  610. 'payment'=>$payment_cn,
  611. 'username'=>$user->username,
  612. 'subsite_id'=>$user->subsite_id,
  613. ];
  614. $callback = "App\Services\Common\OrderService.updateCompany";
  615. $rst = $this->callCashPay($user, $my_setmeal, $my_point, $setmeal_name, $order_type, $payment, $ordtotal_fee, 0, 0, $description, $params, 0, $setmeal_id, '', $notes, $callback);
  616. } elseif ($order_type == 10) { //企业模板
  617. $callback = "App\Services\Common\OrderService.incrementTplUpdate";
  618. $rst = $this->callCashPay($user, $my_setmeal, $my_point, $setmeal_name, $order_type, $payment, $ordtotal_fee, 0, 0, $description, '', 0, $setmeal_id, '', $notes, $callback);
  619. } else {
  620. //添加其他类型订单 - CRM自定义项目
  621. $callback = "App\Services\Common\OrderService.crmOrderUpdate";
  622. $rst = $this->callCashPay($user, $my_setmeal, $my_point, $setmeal_name, $order_type, $payment, $ordtotal_fee, 0, 0, $description, '', 0, $setmeal_id, '', $notes, $callback);
  623. }
  624. if ($rst['status'] == 0) {
  625. return response()->json(['status'=>1,'msg'=>$rst['msg']]);
  626. }
  627. return response()->json(['status'=>1,'msg'=>['order'=>$rst['order']]]);
  628. }
  629. //现金支付
  630. public function callCashPay($user, $my_setmeal, $my_point, $setmeal_name, $order_pay_type, $payment_name = '', $amount = '0.0', $is_deductible, $deductible = 0, $description = '', $params = '', $points = 0, $stemeal = 0, $discount = '', $notes = '', $callback = "App\Services\Common\OrderService.orderPaid")
  631. {
  632. $paymenttpye = $this->paymentService->returnPayment($payment_name); //获取支付方式
  633. if (!$paymenttpye) {
  634. return array( 'status'=>0, 'msg' => '支付方式错误!');
  635. }
  636. if (!config("aix.system.pay.{$payment_name}.is_on")) {
  637. return array( 'status'=>0, 'msg' => "支付方式未开启!请联系客服电话:【".config('aix.system.pay.offline.service_tel')."】");
  638. }
  639. $is_deductible=0;
  640. $type='pay';
  641. $m_amount = $amount;
  642. $paysetarr['ordtotal_fee']=$m_amount;
  643. if ($description=='') {
  644. $description = '购买服务:'.$setmeal_name;
  645. }
  646. $description .= ';'.$paymenttpye->name.$paysetarr['ordtotal_fee'].'元';
  647. $stime = time();
  648. //生成订单
  649. $order = $this->orderService->addOrder($user, $order_pay_type, $amount, $paysetarr['ordtotal_fee'], $deductible, $setmeal_name, $payment_name, $paymenttpye->name, $description, 1, $deductible, $stemeal, 0, serialize($params), $discount, $notes);
  650. $tradeNo = $this->payService->getTradeNo($order->id);
  651. if (!$this->serviceService->updateOid($order->id, $tradeNo)) {
  652. return array( 'status'=>0, 'msg' => '生成订单号失败!');
  653. }
  654. $payOrder = new PayOrder();
  655. $payOrder->trade_no = $tradeNo;
  656. $payOrder->subject = '购买'.$setmeal_name;
  657. $payOrder->detail = $description;
  658. $payOrder->price = round($m_amount, 2);
  659. $payOrder->callback = $callback;
  660. $payOrder->return_url = route('service.order.index');
  661. $result = $this->payService->pay($payment_name, $type, $payOrder);
  662. return [
  663. 'status'=>1,
  664. 'tradeNo'=>$tradeNo,
  665. 'url'=>route("service.order.detail",['id'=>$order->id]),
  666. 'order'=>$order
  667. ];
  668. }
  669. //修改企业信息
  670. public function updateCompany(Request $request)
  671. {
  672. $params = $request->except('_method', 'token');
  673. $rst = $this->companyService->companySave($params);
  674. return response()->json($rst);
  675. }
  676. }