ServiceService.php 48 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: wuzhenke
  5. * Date: 2018/11/28
  6. * Time: 16:43
  7. */
  8. namespace App\Services\Company;
  9. use App\Exceptions\ResponseException;
  10. use App\Models\Company;
  11. use App\Models\Jobs;
  12. use App\Models\MembersSetmeal;
  13. use App\Models\Tpl;
  14. use App\Repositories\CompanyRepository;
  15. use App\Repositories\JobsRepository;
  16. use App\Repositories\MemberHandselRepository;
  17. use App\Repositories\MemberLogRepository;
  18. use App\Repositories\MemberPointRepository;
  19. use App\Repositories\MembersChargeLogRepository;
  20. use App\Repositories\MemberSetmealRepository;
  21. use App\Repositories\MembersSetmealLogRepository;
  22. use App\Repositories\OrderRepository;
  23. use App\Repositories\PaymentRepository;
  24. use App\Repositories\QueueAutoRefreshRepository;
  25. use App\Repositories\SetmealIncrementsRepository;
  26. use App\Repositories\SetmealRepository;
  27. use App\Repositories\TaskLogRepository;
  28. use App\Repositories\TaskRepository;
  29. use App\Services\Common\MembersSetmealRecordService;
  30. use App\Services\Common\PayService;
  31. use Carbon\Carbon;
  32. use Illuminate\Contracts\Encryption\EncryptException;
  33. use Illuminate\Support\Facades\DB;
  34. use App\Repositories\TplRepository;
  35. use App\Repositories\MemberSetmealRecordRepository;
  36. use Illuminate\Support\Facades\Log;
  37. class ServiceService
  38. {
  39. protected $taskRepository;
  40. protected $memberPointRepository;
  41. protected $taskLogRepository;
  42. protected $memberHandselRepository;
  43. protected $memberSetmealRepository;
  44. protected $jobsRepository;
  45. protected $setmealRepository;
  46. protected $paymentRepository;
  47. protected $orderRepository;
  48. protected $memberLogRepository;
  49. protected $membersChargeLogRepository;
  50. protected $companyRepository;
  51. protected $membersSetmealLogRepository;
  52. protected $setmealIncrementsRepository;
  53. protected $queueAutoRefreshRepository;
  54. protected $tplRepository;
  55. protected $memberSetmealRecordRepository;
  56. /**
  57. * ServiceService constructor.
  58. * @param $taskRepository
  59. * @param $memberPointRepository
  60. * @param $taskLogRepository
  61. * @param $memberHandselRepository
  62. * @param $memberSetmealRepository
  63. * @param $jobsRepository
  64. * @param $setmealRepository
  65. * @param $paymentRepository
  66. * @param $orderRepository
  67. * @param $memberLogRepository
  68. * @param $membersChargeLogRepository
  69. * @param $companyRepository
  70. * @param $membersSetmealLogRepository
  71. * @param $setmealIncrementsRepository
  72. * @param $queueAutoRefreshRepository
  73. * @param $tplRepository
  74. *
  75. */
  76. public function __construct(TaskRepository $taskRepository,TplRepository $tplRepository, QueueAutoRefreshRepository $queueAutoRefreshRepository, SetmealIncrementsRepository $setmealIncrementsRepository, MembersSetmealLogRepository $membersSetmealLogRepository, CompanyRepository $companyRepository, MembersChargeLogRepository $membersChargeLogRepository, MemberLogRepository $memberLogRepository, OrderRepository $orderRepository, PaymentRepository $paymentRepository, SetmealRepository $setmealRepository, JobsRepository $jobsRepository, MemberSetmealRepository $memberSetmealRepository, MemberPointRepository $memberPointRepository, TaskLogRepository $taskLogRepository, MemberHandselRepository $memberHandselRepository,MemberSetmealRecordRepository $memberSetmealRecordRepository,MembersSetmealRecordService $membersSetmealRecordService){
  77. $this->taskRepository = $taskRepository;
  78. $this->memberPointRepository = $memberPointRepository;
  79. $this->taskLogRepository = $taskLogRepository;
  80. $this->memberHandselRepository = $memberHandselRepository;
  81. $this->memberSetmealRepository = $memberSetmealRepository;
  82. $this->jobsRepository = $jobsRepository;
  83. $this->setmealRepository = $setmealRepository;
  84. $this->paymentRepository = $paymentRepository;
  85. $this->orderRepository = $orderRepository;
  86. $this->memberLogRepository = $memberLogRepository;
  87. $this->membersChargeLogRepository = $membersChargeLogRepository;
  88. $this->companyRepository = $companyRepository;
  89. $this->membersSetmealLogRepository = $membersSetmealLogRepository;
  90. $this->setmealIncrementsRepository = $setmealIncrementsRepository;
  91. $this->queueAutoRefreshRepository = $queueAutoRefreshRepository;
  92. $this->tplRepository = $tplRepository;
  93. $this->memberSetmealRecordRepository=$memberSetmealRecordRepository;
  94. $this->membersSetmealRecordService=$membersSetmealRecordService;
  95. }
  96. public function index($user)
  97. {
  98. $mySetmeal = $this->memberSetmealRepository->getSetmealByUid($user->id, $user->utype);//套餐详细
  99. $condition['company_id'] = $user->id;
  100. $condition['display'] = 1;
  101. $condition['valid'] = 1;
  102. $condition[] = ['audit','<>',3];
  103. $jobsCount = $this->jobsRepository->jobsTotal($condition);
  104. $surplus_jobs = $mySetmeal->jobs_meanwhile-$jobsCount;
  105. $mySetmeal->jobs_meanwhile =$surplus_jobs>0?$surplus_jobs:0;
  106. if ($mySetmeal->endtime == 0) {
  107. $mySetmeal->leave_days = '永久';
  108. } else {
  109. $tmpday = ceil((strtotime($mySetmeal->endtime) - time())/86400);
  110. $minus = $tmpday<0?0:$tmpday;
  111. $mySetmeal->leave_days = intval($minus);
  112. }
  113. $setmeal = $this->setmealRepository->findWhere(['display' => 1]);//会员套餐
  114. foreach ($setmeal as $key => $val) {
  115. $setmeal[$key]->discount = $this->setmealRepository->getDiscountForSetmealOne($val);
  116. $setmeal[$key]->long = $val->days == 0 ? '永久' : $this->formatDays($val->days);
  117. }
  118. request()->offsetSet('id', $user->id);
  119. $setmealRecords=$this->membersSetmealRecordService->SetmealRecord(true);
  120. $this->freeSetmealIsOver($user);
  121. $result = [
  122. 'user' => $user,
  123. 'mySetmeal' => $mySetmeal,
  124. 'setmeal' => $setmeal,
  125. 'setmealRecord'=>$setmealRecords,
  126. ];
  127. return $result;
  128. }
  129. /**
  130. * 免费的会员是否过期了
  131. */
  132. public function freeSetmealIsOver($user){
  133. $mySetmeal = $this->memberSetmealRepository->getSetmealByUid($user->id, $user->utype);//套餐详细
  134. session(["setmeal_message"=>""]);
  135. if (strtotime($mySetmeal->endtime)<time() && $mySetmeal->endtime!=0){ //现在就判断到期时间了
  136. if (request('look')!=true){ //通过url来判断是否已经看过
  137. session(["setmeal_message"=>"提醒:您的套餐已到期,请及时到我的套餐处升级套餐"]);
  138. }
  139. }
  140. }
  141. /**
  142. * @param $request
  143. * @return array
  144. */
  145. public function setmealDetail($request, $user)
  146. {
  147. $mySetmeal = $this->memberSetmealRepository->getSetmealByUid($user->id, $user->utype);//套餐详细
  148. $condition['company_id'] = $user->id;
  149. $condition['display'] = 1;
  150. $condition['valid'] = 1;
  151. $condition[] = ['audit','<>',3];
  152. $jobsCount = $this->jobsRepository->jobsTotal($condition);
  153. $surplus_jobs = $mySetmeal->jobs_meanwhile-$jobsCount;
  154. $mySetmeal->jobs_meanwhile =$surplus_jobs>0?$surplus_jobs:0;
  155. if ($mySetmeal->endtime == 0) {
  156. $mySetmeal->leave_days = '永久';
  157. } else {
  158. $tmpday = ceil((strtotime($mySetmeal->endtime) - time())/86400);
  159. $minus = $tmpday<0?0:$tmpday;
  160. $mySetmeal->leave_days = intval($minus);
  161. }
  162. $setmeal = $this->setmealRepository->findWhere(['display' => 1]);//会员套餐
  163. foreach ($setmeal as $key => $val) {
  164. $setmeal[$key]->discount = $this->setmealRepository->getDiscountForSetmealOne($val);
  165. $setmeal[$key]->long = $val->days == 0 ? '永久' : $this->formatDays($val->days);
  166. }
  167. $starttime = isset($request['starttime'])?$request['starttime']:date('Y-m-d', time()-30*86400);
  168. $endtime = isset($request['endtime'])?$request['endtime']:date('Y-m-d', time());
  169. $where= [
  170. ['created_at','>=',$starttime." 23:10:10"],
  171. ['created_at','<=',$endtime." 23:10:10"],
  172. ['log_uid','=',$user->id],
  173. ['log_utype','=',$user->utype],
  174. ];
  175. $setmealDetail = $this->membersSetmealLogRepository->membersSetmealLog($where);
  176. request()->offsetSet('id', $user->id);
  177. $setmealRecords=$this->membersSetmealRecordService->SetmealRecord(true);
  178. $result = [
  179. 'user' => $user,
  180. 'mySetmeal' => $mySetmeal,
  181. 'setmeal' => $setmeal,
  182. 'starttime'=>$starttime,
  183. 'endtime'=>$endtime,
  184. 'setmealDetail'=>$setmealDetail,
  185. 'setmealRecord'=>$setmealRecords,
  186. ];
  187. return $result;
  188. }
  189. /**
  190. * 获取任务状态。
  191. */
  192. public function points($user, $type = 0)
  193. {
  194. $task = $this->memberPointRepository->getComTaskById($user->id);
  195. foreach ($task as $key => $val) {
  196. if ($key == 'task_logs') {
  197. $task_id = [];
  198. $task_id_w = [];
  199. foreach ($val as $k => $v) {
  200. if ($v['once'] != 1) {
  201. $task_id[] = $v['task_id'];
  202. } else {
  203. $task_id_w[] = $v['task_id'];
  204. }
  205. }
  206. }
  207. }
  208. $count = [];
  209. $task_id = array_unique($task_id);
  210. foreach ($task_id as $k => $v) {
  211. $count[$v] = $this->taskLogRepository->getTaskLogCount($user->id, $v, $user->utype);
  212. }
  213. $task_info = $this->taskRepository->getTaskById(array_keys($count));
  214. $finshTask = []; //已完成任务。
  215. foreach ($count as $k1 => $v1) {
  216. foreach ($task_info as $key1 => $val1) {
  217. if ($k1 == $val1->id) {
  218. if ($val1->times != -1) {
  219. if ($v1 == $val1->times) {
  220. $finshTask[$k1]['id'] = $val1->id;
  221. $finshTask[$k1]['title'] = $val1->title;
  222. $finshTask[$k1]['points'] = $val1->points;
  223. $finshTask[$k1]['type'] = '日常任务';
  224. $finshTask[$k1]['status'] = '已完成';
  225. $finshTask[$k1]['t_alias'] = $val1->t_alias;
  226. $finshTask[$k1]['count'] = '(*' . $v1 . ')';
  227. }
  228. }
  229. }
  230. }
  231. }
  232. $task_info_w = $this->taskRepository->getTaskById(($task_id_w));
  233. foreach ($task_info_w as $ke => $va) {
  234. $finshTask[$va->id]['id'] = $va->id;
  235. $finshTask[$va->id]['title'] = $va->title;
  236. $finshTask[$va->id]['points'] = $va->points;
  237. $finshTask[$va->id]['type'] = '一次性任务';
  238. $finshTask[$va->id]['status'] = '已完成';
  239. $finshTask[$va->id]['t_alias'] = $va->t_alias;
  240. $finshTask[$va->id]['count'] = '';
  241. }
  242. $task_ZZ = $this->taskRepository->getTaskByUtype($user->utype);
  243. $task_info_z = [];
  244. $sub_site = '';
  245. if (get_subsite_id() > 0) {
  246. $sub_site = 'jkq.';
  247. }
  248. foreach ($task_ZZ as $key => $val) {
  249. if (!in_array($val->id, array_keys($finshTask))) {
  250. $task_info_z[$val->id]['id'] = $val->id;
  251. $task_info_z[$val->id]['title'] = $val->title;
  252. $task_info_z[$val->id]['points'] = $val->points;
  253. if ($val->once == 1) {
  254. $task_info_z[$val->id]['count'] = '';
  255. $task_info_z[$val->id]['type'] = '一次性任务';
  256. } else {
  257. $task_info_z[$val->id]['type'] = '日常任务';
  258. $hjk = $this->taskLogRepository->getTaskLogCount($user->id, $val->id, $user->utype);
  259. if (!$hjk) {
  260. $task_info_z[$val->id]['count'] = '';
  261. } else {
  262. $times = $val->times;
  263. $lasT = $times - $hjk;
  264. if ($times == -1) {
  265. $task_info_z[$val->id]['count'] = '';
  266. } else {
  267. $task_info_z[$val->id]['count'] = '(*'.$lasT.')';
  268. }
  269. }
  270. }
  271. if ($type) {
  272. if ($val->id == 17) {
  273. $task_info_z[$val->id]['status'] = '<a href="" style="text-decoration: none;">去完成</a>';
  274. } elseif ($val->id == 18) {
  275. $task_info_z[$val->id]['status'] = '<a href="javascript:;" url="' . route($sub_site."mobile.firm.sing") . '" data-type="sign" class="ajax_do" style="text-decoration: none;">去完成</a>';
  276. } elseif ($val->id == 19) {
  277. $task_info_z[$val->id]['status'] = '<a href=" ' . route($sub_site."mobile.firm.info") . '" style="text-decoration: none;">去完成</a>';
  278. } elseif ($val->id == 20) {
  279. $task_info_z[$val->id]['status'] = '<a href="' . route($sub_site."mobile.firm.com.img") . '" style="text-decoration: none;">去完成</a>';
  280. } elseif ($val->id == 21) {
  281. $task_info_z[$val->id]['status'] = '<a href="' . route($sub_site."mobile.resumes") . '" style="text-decoration: none;" target="_blank">去完成</a>';
  282. } elseif ($val->id == 22) {
  283. $task_info_z[$val->id]['status'] = '<a href=" ' . route($sub_site."mobile.firm.com.security") . '" style="text-decoration: none;">去完成</a>';
  284. } elseif ($val->id == 23) {
  285. $task_info_z[$val->id]['status'] = '<a href=" ' . route($sub_site."mobile.firm.com.security") . '" style="text-decoration: none;">去完成</a>';
  286. } elseif ($val->id == 25) {
  287. $task_info_z[$val->id]['status'] = '<a href=" ' . route($sub_site."mobile.firm.com.binding") . '" style="text-decoration: none;">去完成</a>';
  288. } elseif ($val->id == 27) {
  289. $task_info_z[$val->id]['status'] = '<a href=" ' . route($sub_site."mobile.firm.info") . '" style="text-decoration: none;">去完成</a>';
  290. } elseif ($val->id == 28) {
  291. $task_info_z[$val->id]['status'] = '<a href=" ' . route($sub_site."mobile.firm.resume.apply") . '" style="text-decoration: none;">去完成</a>';
  292. } elseif ($val->id == 29) {
  293. // $task_info_z[$val->id]['status'] = '<a href="" style="text-decoration: none;">去完成</a>';
  294. } elseif ($val->id == 30) {
  295. $task_info_z[$val->id]['status'] = '<a href="' . route($sub_site."mobile.firm.com.auth") . '" style="text-decoration: none;">去完成</a>';
  296. } elseif ($val->id == 31) {
  297. // $task_info_z[$val->id]['status'] = '<a href="" style="text-decoration: none;">去完成</a>';
  298. } elseif ($val->id == 32) {
  299. $task_info_z[$val->id]['status'] = '<a href="' . route($sub_site."mobile.firm.com.psm.consult") . '" style="text-decoration: none;">去完成</a>';
  300. } else {
  301. $task_info_z[$val->id]['status'] = '<a href=" ' . route($sub_site."mobile.firm.com.binding") . '" style="text-decoration: none;">去完成</a>';
  302. }
  303. } else {
  304. if ($val->id == 17) {
  305. $task_info_z[$val->id]['status'] = '<a href="" style="text-decoration: none;">去完成</a>';
  306. } elseif ($val->id == 18) {
  307. $task_info_z[$val->id]['status'] = '<a href="javascript:;" url="' . route($sub_site."com.sign") . '" data-type="sign" class="ajax_do" style="text-decoration: none;">去完成</a>';
  308. } elseif ($val->id == 19) {
  309. $task_info_z[$val->id]['status'] = '<a href=" ' . route($sub_site."com.info") . '" style="text-decoration: none;">去完成</a>';
  310. } elseif ($val->id == 20) {
  311. $task_info_z[$val->id]['status'] = '<a href="' . route($sub_site."com.img") . '" style="text-decoration: none;">去完成</a>';
  312. } elseif ($val->id == 21) {
  313. $task_info_z[$val->id]['status'] = '<a href="' . route($sub_site."resumes") . '" style="text-decoration: none;" target="_blank">去完成</a>';
  314. } elseif ($val->id == 22) {
  315. $task_info_z[$val->id]['status'] = '<a href=" ' . route($sub_site."com.security") . '" style="text-decoration: none;">去完成</a>';
  316. } elseif ($val->id == 23) {
  317. $task_info_z[$val->id]['status'] = '<a href=" ' . route($sub_site."com.security") . '" style="text-decoration: none;">去完成</a>';
  318. } elseif ($val->id == 25) {
  319. $task_info_z[$val->id]['status'] = '<a href=" ' . route($sub_site."com.security") . '" style="text-decoration: none;">去完成</a>';
  320. } elseif ($val->id == 27) {
  321. $task_info_z[$val->id]['status'] = '<a href=" ' . route($sub_site."com.info") . '" style="text-decoration: none;">去完成</a>';
  322. } elseif ($val->id == 28) {
  323. $task_info_z[$val->id]['status'] = '<a href=" ' . route($sub_site."resume.apply") . '" style="text-decoration: none;">去完成</a>';
  324. } elseif ($val->id == 29) {
  325. // $task_info_z[$val->id]['status'] = '<a href="" style="text-decoration: none;">去完成</a>';
  326. } elseif ($val->id == 30) {
  327. $task_info_z[$val->id]['status'] = '<a href="' . route($sub_site."com.auth") . '" style="text-decoration: none;">去完成</a>';
  328. } elseif ($val->id == 31) {
  329. // $task_info_z[$val->id]['status'] = '<a href="" style="text-decoration: none;">去完成</a>';
  330. } elseif ($val->id == 32) {
  331. $task_info_z[$val->id]['status'] = '<a href="' . route($sub_site."com.pms.consult") . '" style="text-decoration: none;">去完成</a>';
  332. } else {
  333. $task_info_z[$val->id]['status'] = '<a href=" ' . route($sub_site."com.security") . '" style="text-decoration: none;">去完成</a>';
  334. }
  335. }
  336. $task_info_z[$val->id]['t_alias'] = $val->t_alias;
  337. }
  338. }
  339. $todayPoints = 0;
  340. $rs = $this->taskLogRepository->getTodayPoints($user->id, $user->utype);
  341. if ($rs) {
  342. $todayPoints = $rs;
  343. }
  344. $onPoints = $this->taskLogRepository->getSinglePoints($user->id, $user->utype);
  345. $dayPoints = $this->taskLogRepository->getDayPoints($user->id, $user->utype);
  346. $arrAll = $this->taskRepository->getAllPoints($user->utype);
  347. $allPoints = 0;
  348. foreach ($arrAll as $key => $val) {
  349. if ($val->once == 1) {
  350. $allPoints += $val->points;
  351. } else {
  352. $allPoints += (abs($val->times)) * ($val->points);
  353. }
  354. }
  355. $lastPoints = (int)$allPoints - $onPoints - $dayPoints > 0 ? (int)$allPoints - $onPoints - $dayPoints : 0;
  356. $mySetmeal = $this->memberSetmealRepository->getSetmealByUid($user->id, $user->utype);//套餐详细
  357. return [
  358. 'w_finsh' => $task_info_z,
  359. 'finsh' => $finshTask,
  360. 'content' => $task,
  361. 'todayPoints' => $todayPoints,
  362. 'lastPoints' => $lastPoints,
  363. 'content' => $this->memberPointRepository->getComPointsById($user->id, $user->utype),
  364. 'mySetmeal' => $mySetmeal,
  365. ];
  366. }
  367. /**积分收支明细
  368. * @return array
  369. */
  370. public function pointsDetail($type, $user)
  371. {
  372. $getNum = $this->memberHandselRepository->getNum($user, 1);//累计获得
  373. $useNum = $this->memberHandselRepository->getNum($user, 2);//累计消耗
  374. $content = $this->memberHandselRepository->getMembersHandsel($user->id, $user->utype, $type);//积分操作记录
  375. $companyPoint = $this->memberPointRepository->getComPointsById($user->id, $user->utype);
  376. $points = $this->taskLogRepository->getTodayPoints($user->id, $user->utype);//今天获取积分
  377. $todayPoints = $points ? $points : 0;
  378. $onPoints = $this->taskLogRepository->getSinglePoints($user->id, $user->utype);//获取单次积分
  379. $dayPoints = $this->taskLogRepository->getDayPoints($user->id, $user->utype); //获取日常积分
  380. $arrAll = $this->taskRepository->getAllPoints($user->utype);
  381. $allPoints = 0;
  382. foreach ($arrAll as $key => $val) {
  383. if ($val->once == 1) {
  384. $allPoints += $val->points;
  385. } else {
  386. $allPoints += (abs($val->times)) * ($val->points);
  387. }
  388. }
  389. $lastPoints = (int)$allPoints - $onPoints - $dayPoints > 0 ? (int)$allPoints - $onPoints - $dayPoints : 0;
  390. $res = [
  391. 'content' => $content,
  392. 'points' => $todayPoints,
  393. 'lastPoints' => $lastPoints,
  394. 'companyPoint' => $companyPoint,
  395. 'getNum' => $getNum[0]->getTotalPoints,
  396. 'useNum' => $useNum[0]->getTotalPoints,
  397. 'type'=>$type
  398. ];
  399. return $res;
  400. }
  401. /**套餐升级
  402. * @param $id
  403. * @return array
  404. * @throws ResponseException
  405. */
  406. public function setmealAdd($id, $user)
  407. {
  408. $setmeal = $this->setmealRepository->find($id);
  409. if (!$setmeal) {
  410. throw new ResponseException('请选择正确的套餐', '', 404);
  411. }
  412. // 购买套餐优惠
  413. $setmeal->long = $this->formatDays($setmeal->days);
  414. $setmeal->discount = $this->setmealRepository->getDiscountForSetmealOne($setmeal);
  415. $offline = $this->paymentRepository->findWhere(['alias'=>'offline']);
  416. $online = $this->paymentRepository->findWhere([['alias','<>','offline']]);
  417. foreach ($offline as $key => &$val) {
  418. if (!config("aix.system.pay.{$val->alias}.is_on")) {
  419. unset($offline[$key]);
  420. }
  421. }
  422. foreach ($online as $key => &$val) {
  423. if (!config("aix.system.pay.{$val->alias}.is_on")) {
  424. unset($online[$key]);
  425. }
  426. }
  427. $mypoints = $this->memberPointRepository->getPointsById($user->id, $user->utype);
  428. $result = [
  429. 'user' => $user,
  430. 'setmeal' => $setmeal,
  431. 'offline' => $offline,
  432. 'online' => $online,
  433. 'mypoints' => $mypoints->points,
  434. 'need_points' => $setmeal->expense * config('aix.companyset.points.points_set.payment_rate')
  435. ];
  436. return $result;
  437. }
  438. public function setmealAddMobile($user)
  439. {
  440. //我的套餐
  441. $mySetmeal = $this->memberSetmealRepository->getSetmealByUid($user->id, 1);
  442. //我的积分
  443. $myPoints = $this->memberPointRepository->getPointsById($user->id, 1);
  444. //套餐列表
  445. $setmeal = $this->setmealRepository->getSetmealList();
  446. foreach ($setmeal as $key => $val) {
  447. $setmeal[$key]->long = $val->days==0?'永久':$this->formatDays($val->days);
  448. $setmeal[$key]['discount'] = $this->setmealRepository->getDiscountForSetmealOne($val);
  449. if (config('aix.mobile.mobile_set.mobile_set.mobile_setmeal_discount_value')>0) {
  450. $setmeal[$key]->expense = config('aix.mobile.mobile_set.mobile_set.mobile_setmeal_discount_value_type')==1?$val->expense/100*config('aix.mobile.mobile_set.mobile_set.mobile_setmeal_discount_value'):$val->expense-config('aix.mobile.mobile_set.mobile_set.mobile_setmeal_discount_value');
  451. }
  452. $setmeal[$key]->service_points = round($setmeal[$key]->expense*config('aix.companyset.points.points_set.payment_rate'));
  453. }
  454. $result = [
  455. 'user'=>$user,
  456. 'mySetmeal'=>$mySetmeal,
  457. 'myPoints'=>$myPoints,
  458. 'setmeal'=>$setmeal,
  459. ];
  460. return $result;
  461. }
  462. /**设置套餐
  463. * @param $user
  464. * @param $setmeal_id
  465. * @return array
  466. * @params 用来传递参数,后台修改到期时间,希望设置开始时间维当日期 by 李艳
  467. * @throws \Prettus\Validator\Exceptions\ValidatorException
  468. * $params 参数使用地方 app/Admin/Controllers/Company/MembersSetmealController.php@update()
  469. */
  470. public function setMembersSetmeal($user, $setmeal_id,$params=null)
  471. {
  472. $setmeal = $this->setmealRepository->getOneSetmeal($setmeal_id);
  473. if (!$setmeal) {
  474. return ['status'=>0,'msg'=>'请选择正确的套餐'];
  475. }
  476. $mysetmeal = $this->memberSetmealRepository->getSetmealByUid($user->id, $user->utype);
  477. /**
  478. * 9月11日发现BUG
  479. * 当上个套餐,是免费会员的时候,并且结束时间是0,在此处转成时间戳的时候就会发生令人窒息的1970年
  480. */
  481. $before_end_time=$mysetmeal->endtime; //我现在的套餐的到期时间
  482. if ($before_end_time==0){
  483. $before_end_time=time();
  484. }else{ //有老的异常数据,1970年的
  485. if ($before_end_time<MembersSetmeal::ERROR_TIME){
  486. $before_end_time=time();//直接开始时间就是现在吧
  487. }
  488. }
  489. $sqlData['starttime']=$before_end_time;
  490. $sqlData['expire'] = 0;//如果$setmeal->is_free==1,说明是到期自动变为免费会员,标记过期 --- 其他会员降级 到期字段不变
  491. $sqlData['setmeal_id'] = $setmeal->id;
  492. $sqlData['setmeal_name'] = $setmeal->setmeal_name;
  493. $sqlData['days'] = $setmeal->days;
  494. if (!empty($params) && isset($params['starttime'])){ //传过来的是设置指定的开始时间
  495. $sqlData['starttime']=$params['starttime'];
  496. }
  497. if ($setmeal->days > 0) {
  498. //如果套餐未到期,判断是否叠加套餐服务时间
  499. //配置文件开启套餐时间叠被动模式
  500. if (config('aix.companyset.setmeal_com.setmeal_com_set.is_superposition_time') == 1) {
  501. $sqlData['endtime'] = strtotime("+{$setmeal->days} day",$sqlData['starttime']);
  502. } else {
  503. $sqlData['endtime'] = strtotime("".$setmeal->days." days");
  504. }
  505. } else {
  506. $sqlData['endtime'] = 0;
  507. }
  508. $sqlData['expense']=$setmeal['expense'];
  509. $sqlData['jobs_meanwhile'] = $setmeal->jobs_meanwhile;
  510. $sqlData['refresh_jobs_free'] = $setmeal->refresh_jobs_free;
  511. $sqlData['jobfair_num'] = $setmeal->jobfair_num;//招聘会场次
  512. $sqlData['download_resume'] = $setmeal->download_resume;
  513. //掠过免费会员
  514. if ($setmeal_id!=MembersSetmeal::FREE_SetMember){
  515. if (config('aix.companyset.setmeal_com.setmeal_com_set.is_superposition') == 1) { //如果开通服务时叠加项目,就减掉已发布的职位数
  516. $map['company_id'] = $user->id;
  517. $sqlData['download_resume']=$mysetmeal->download_resume+$setmeal->download_resume;
  518. $sqlData['jobfair_num'] = $mysetmeal->jobfair_num+$setmeal->jobfair_num;//招聘会场次
  519. $sqlData['jobs_meanwhile'] = $mysetmeal->jobs_meanwhile+$setmeal->jobs_meanwhile;
  520. }
  521. }
  522. $sqlData['download_resume_max'] = $setmeal->download_resume_max;
  523. $sqlData['added'] = $setmeal->added;
  524. $sqlData['setmeal_img'] = $setmeal->setmeal_img;
  525. $sqlData['show_apply_contact'] = $setmeal->show_apply_contact;
  526. $sqlData['is_free'] = $setmeal->is_free;
  527. $sqlData['discount_download_resume'] = $setmeal->discount_download_resume;
  528. $sqlData['discount_sms'] = $setmeal->discount_sms;
  529. $sqlData['discount_stick'] = $setmeal->discount_stick;
  530. $sqlData['discount_emergency'] = $setmeal->discount_emergency;
  531. $sqlData['discount_tpl'] = $setmeal->discount_tpl;
  532. $sqlData['discount_auto_refresh_jobs'] = $setmeal->discount_auto_refresh_jobs;
  533. $sqlData['discount_auto_refresh_jobs'] = $setmeal->discount_auto_refresh_jobs;
  534. $sqlData['discount_auto_refresh_jobs'] = $setmeal->discount_auto_refresh_jobs;
  535. $sqlData['discount_auto_refresh_jobs'] = $setmeal->discount_auto_refresh_jobs;
  536. $setmeal_jobs['setmeal_deadline']=$sqlData['endtime'];
  537. $setmeal_jobs['deadline']=$setmeal_jobs['setmeal_deadline'];
  538. $setmeal_jobs['setmeal_id']=$sqlData['setmeal_id'];
  539. $setmeal_jobs['setmeal_name']=$sqlData['setmeal_name'];
  540. DB::beginTransaction();//检查数据库事务(有错)
  541. try{
  542. //检查套餐的开始时间和结束时间是否正常
  543. if($sqlData["starttime"]<MembersSetmeal::ERROR_TIME ||
  544. ($sqlData["endtime"]<MembersSetmeal::ERROR_TIME && $sqlData["endtime"]!=0))
  545. {
  546. throw new \Exception('系统出现异常!,请联系管理员!');
  547. }
  548. if (!$this->memberSetmealRepository->updateSetmeal($sqlData, $mysetmeal->id)) {
  549. throw new \Exception('更新会员套餐失败!');
  550. }
  551. //删除 是否过期 以及套餐图标
  552. unset($sqlData['expire']);
  553. unset($sqlData['setmeal_img']);
  554. unset($sqlData['setmeal_deadline']);
  555. $sqlData['uid'] = $user->id;
  556. $sqlData['utype'] = $user->utype;
  557. //往套餐记录里头添加
  558. if($this->memberSetmealRecordRepository->create($sqlData)===false){
  559. throw new \Exception('添加记录失败!');
  560. }
  561. //如果套餐有赠送积分,则直接更新用户积分表
  562. if ($setmeal->set_points) {
  563. $this->memberPointRepository->reportDeal($user->id, $user->utype, 1, $setmeal->set_points);
  564. $handsel['uid'] = $user->id;
  565. $handsel['htype'] = 'setmeal_gifts';
  566. $handsel['htype_cn'] = '套餐内赠送';
  567. $handsel['operate'] = 1;
  568. $handsel['points'] = $setmeal->set_points;
  569. $this->memberHandselRepository->addNew($handsel);
  570. }
  571. //如果套餐有赠送短信,则直接更新用户表的短信条数字段
  572. //如果开启了服务叠被动模式
  573. if ($setmeal_id!=1 && config('aix.companyset.setmeal_com.setmeal_com_set.is_superposition') == 1){
  574. $this->companyRepository->updataSmsNum($user->id, 1, $setmeal->set_sms);
  575. }else{
  576. $this->companyRepository->SetSmsNum($user->id,$setmeal->set_sms);
  577. }
  578. $this->companyRepository->update(['setmeal_id'=>$setmeal->id, 'setmeal_name'=>$setmeal->setmeal_name], $user->id);
  579. event_search_update(Company::class, (string)$user->id, 'update');
  580. $this->jobsRepository->updateMap($user->id, $setmeal_jobs);
  581. $condition = [['where', 'company_id', $user->id]];
  582. event_search_update(Jobs::class, $condition, 'update');
  583. //检查在招职位数是否超出限额,并根据后台配置做关闭处理
  584. $this->checkJobsMeanwhile($user->id, $setmeal->jobs_meanwhile);
  585. DB::commit();
  586. return ['status'=>1];
  587. }catch (\Exception $exception){
  588. DB::rollBack();
  589. return ['status'=>0,'msg'=>$exception->getMessage()];
  590. }
  591. }
  592. /**设置免费会员套餐到期
  593. * @param $user
  594. * @param $setmeal_id
  595. * @return array
  596. * @throws \Prettus\Validator\Exceptions\ValidatorException
  597. */
  598. public function setFreeMembersSetmeal($user)
  599. {
  600. $mysetmeal = $this->memberSetmealRepository->getSetmealByUid($user->id, $user->utype);
  601. if (!$this->memberSetmealRepository->updateSetmeal(['expire'=>1], $mysetmeal->id)) {
  602. return ['status'=>0,'msg'=>'更新会员套餐失败!'];
  603. }else{
  604. return ['status'=>1];
  605. }
  606. }
  607. /**处理职位
  608. * @param $uid
  609. * @param $num
  610. */
  611. public function checkJobsMeanwhile($uid, $num)
  612. {
  613. if (config('aix.companyset.setmeal_com.setmeal_com_set.hold_beyond_jobs') == 0) {
  614. $yid = [];
  615. $com_ids = [];
  616. $jobs = $this->jobsRepository->jobsSelect($uid);
  617. if (count($jobs) >$num) {
  618. foreach ($jobs as $key => $val) {
  619. if ($key >= $num) {
  620. $yid[] = $val->id;
  621. $com_ids[] = $val->company_id;
  622. }
  623. }
  624. }
  625. if (!empty($yid)) {
  626. $this->jobsRepository->closeJobs($yid);
  627. $condition = [['whereIn','id', $yid]];
  628. event_search_update(Jobs::class, $condition, 'update');
  629. event_search_update(Company::class, [['whereIn','id', $com_ids]], 'update');
  630. }
  631. }
  632. }
  633. /**更新订单号
  634. * @param $order_insert_id
  635. * @param $oid
  636. * @return mixed
  637. * @throws \Prettus\Validator\Exceptions\ValidatorException
  638. */
  639. public function updateOid($order_insert_id, $oid)
  640. {
  641. $data['oid'] = $oid;
  642. return $this->orderRepository->update($data, $order_insert_id);
  643. }
  644. /**支付成功页面
  645. * @param $oid
  646. * @return array
  647. * @throws ResponseException
  648. */
  649. public function setmealFinish($oid)
  650. {
  651. if (!$oid) {
  652. throw new ResponseException('订单ID有误', '', 404);
  653. }
  654. $user = auth('web-company')->user();
  655. $order = $this->orderRepository->getOneOder($oid);
  656. if (!$order) {
  657. throw new ResponseException('参数错误', '', 404);
  658. }
  659. $mysetmeal = $this->memberSetmealRepository->getSetmealByUid($user->id, $user->utype);
  660. if (!$mysetmeal) {
  661. throw new ResponseException('您的套餐信息有误', '', 404);
  662. }
  663. switch ($order->order_type){
  664. case 1: //套餐升级
  665. $setmealIncr=$this->setmealRepository->find($order->setmeal);
  666. $setmealIncrDay=$setmealIncr->days;
  667. //理因到期时间
  668. $expireTimeBase=date("Y-m-d h:i:s",strtotime("+{$setmealIncrDay} day",$order->payment_time));
  669. $res['expireTime']=$expireTimeBase;
  670. break;
  671. case 16:case 7:case 14:case 2:case 10:case 5://充值积分 随着会员到期而到期
  672. $setmealIncrDay="无期限";
  673. break;
  674. case 15:
  675. $setmealIncrDay="无期限";
  676. break;
  677. case 8:
  678. case 9:
  679. case 12:
  680. case 13:
  681. $setmealIncr=$this->setmealIncrementsRepository->find($order->setmeal);
  682. $setmealIncrDay=$setmealIncr->value;
  683. //理因到期时间
  684. $expireTimeBase=date("Y-m-d H:i:s",strtotime("+{$setmealIncrDay} day",$order->payment_time));
  685. $expireTime=strtotime($expireTimeBase);
  686. //我会员的结束时间小于套餐的到期时间
  687. if (strtotime($expireTimeBase)>strtotime($mysetmeal->endtime)) {
  688. $expireTime=strtotime($mysetmeal->endtime);
  689. }
  690. if($mysetmeal->endtime==0){//免费的
  691. $expireTime=strtotime($expireTimeBase);
  692. }
  693. $res['expireTime']=date("Y-m-d H:i:s",$expireTime);
  694. break;
  695. default:
  696. $setmealIncrDay="--";
  697. break;
  698. }
  699. $endtime = strtotime($mysetmeal->endtime) == 0?"永久":date('Y-m-d', strtotime($mysetmeal->endtime));
  700. $res = [
  701. 'mysetmeal'=>$mysetmeal,
  702. 'order'=>$order,
  703. 'endtime'=>$endtime,
  704. 'open_time'=>date("Y-m-d H:i:s",$order->payment_time),
  705. 'setmealIncrDay'=>$setmealIncrDay
  706. ];
  707. return $res;
  708. }
  709. /**各项增值服务
  710. * @return array
  711. */
  712. public function increment($user)
  713. {
  714. $cat = $this->setmealIncrementsRepository->getIncrementCategory();
  715. $result = [];
  716. $category = [];
  717. foreach ($cat as $key => $val) {
  718. $category[$val->cat] = $val->cat;
  719. if ($val->cat=='jobs' || $val->cat=='jobfair_num') {
  720. $result[$val->cat] = 0;
  721. } else {
  722. $result[$val->cat] =$this->setmealRepository->getMaxDiscount($val->cat);
  723. }
  724. }
  725. $member_setmeal = 0;
  726. $memberSetmeal = $this->memberSetmealRepository->getSetmealByUid($user->id, $user->utype);
  727. if($memberSetmeal){
  728. $member_setmeal = $memberSetmeal->discount_tpl;
  729. }
  730. // $result['download_resume'] =$this->setmealRepository->getMaxDiscount('download_resume');
  731. // $result['sms'] =$this->setmealRepository->getMaxDiscount('sms');
  732. // $result['jobs_num'] =$this->setmealRepository->getMaxDiscount('jobs_num');
  733. // $result['jobfair_num'] =$this->setmealRepository->getMaxDiscount('jobfair_num');
  734. // $result['stick'] =$this->setmealRepository->getMaxDiscount('stick');
  735. // $result['emergency'] =$this->setmealRepository->getMaxDiscount('emergency');
  736. // $result['tpl'] =$this->setmealRepository->getMaxDiscount('tpl');
  737. // $result['auto_refresh_jobs'] =$this->setmealRepository->getMaxDiscount('auto_refresh_jobs');
  738. // return $result;
  739. return $res=['result'=>$result,'category'=>$category,'member_setmeal'=>$member_setmeal];
  740. }
  741. /**增值服务提示框
  742. * @return array
  743. */
  744. public function confirmPayIncrement($user)
  745. {
  746. $user = auth('web-company')->user();
  747. $mysetmeal = $this->memberSetmealRepository->getSetmealByUid($user->id, $user->utype);
  748. $setmeal_end_days = '永久';
  749. if (strtotime($mysetmeal->endtime) == 0) {
  750. $tip = '您当前【'.$mysetmeal->setmeal_name.'】有效期 '.date('Y-m-d', $mysetmeal->starttime).'至永久。增值包有效期与会员有效期一致('.$setmeal_end_days.'),是否继续购买增值包?';
  751. } else {
  752. if (strtotime($mysetmeal->endtime) > time()) {
  753. $sub_day = sub_day(strtotime($mysetmeal->endtime), time());
  754. $sub_day = preg_replace('/(\d+)/', '<span class="font_yellow">\1</span>', $sub_day);
  755. $setmeal_end_days = $sub_day.'后到期';
  756. } else {
  757. $setmeal_end_days = '已经到期';
  758. }
  759. $tip = "您当前【".$mysetmeal->setmeal_name."】有效期".date('Y-m-d', $mysetmeal->starttime)."至".date('Y-m-d', strtotime($mysetmeal->endtime))."。增值包有效期与会员有效期一致(".$setmeal_end_days."),是否继续购买增值包?";
  760. }
  761. return ['tip'=>$tip];
  762. }
  763. /**单个增值服务包内容
  764. * @param $cat
  765. * @param $request
  766. * @return array
  767. */
  768. public function incrementAdd($cat, $request)
  769. {
  770. $catData = $this->setmealIncrementsRepository->cate_arr;
  771. $service_unit = $this->setmealIncrementsRepository->service_unit;
  772. $user = auth('web-company')->user();
  773. $mysetmeal = $this->memberSetmealRepository->getSetmealByUid($user->id, $user->utype);
  774. $mypoints = $this->memberPointRepository->getComPointsById($user->id, $user->utype);
  775. $increment_rule = [
  776. 'jobs'=>config('aix.companyset.business_set.points_set.jobs_num'),
  777. 'jobfair_num'=>config('aix.companyset.business_set.points_set.jobfair_num'),
  778. 'download_resume'=>config('aix.companyset.business_set.points_set.download_resume'),
  779. 'sms'=>config('aix.companyset.business_set.points_set.sms'),
  780. 'stick'=>config('aix.companyset.business_set.points_set.stick'),
  781. 'emergency'=>config('aix.companyset.business_set.points_set.emergency'),
  782. 'tpl'=>config('aix.companyset.business_set.points_set.tpl'),
  783. 'auto_refresh_jobs'=>config('aix.companyset.business_set.points_set.auto_refresh_jobs')
  784. ];
  785. $offline = $this->paymentRepository->findWhere(['alias'=>'offline']);
  786. $online = $this->paymentRepository->findWhere([['alias','<>','offline']]);
  787. foreach ($offline as $key => &$val) {
  788. if (!config("aix.system.pay.{$val->alias}.is_on")) {
  789. unset($offline[$key]);
  790. }
  791. }
  792. foreach ($online as $key => &$val) {
  793. if (!config("aix.system.pay.{$val->alias}.is_on")) {
  794. unset($online[$key]);
  795. }
  796. }
  797. if ($cat == 'tpl') {
  798. $request_tpl = isset($request['tpl_id']) ? $request['tpl_id'] : 0;
  799. $cate_arr = $this->incrementAddTpl($mysetmeal, $request_tpl);
  800. } else {
  801. $cate_arr = $this->incrementAddNormal($cat, $mysetmeal);
  802. }
  803. $result = [
  804. 'user'=>$user,
  805. 'mysetmeal'=>$mysetmeal,
  806. 'cate_arr'=>$cate_arr,
  807. 'catData'=>$catData,
  808. 'service_unit'=>$service_unit,
  809. 'cat'=>$cat,
  810. 'increment_rule'=>$increment_rule,
  811. 'online'=>$online,
  812. 'offline'=>$offline,
  813. 'mypoints'=>$mypoints,
  814. ];
  815. return $result;
  816. }
  817. /**
  818. * 购买增值包 - 普通增值服务
  819. */
  820. protected function incrementAddNormal($cat, $mysetmeal)
  821. {
  822. $cate_arr = $this->setmealIncrementsRepository->findByField(['cat'=>$cat]);
  823. foreach ($cate_arr as $key => $val) {
  824. //如果是非免费套餐
  825. if ($mysetmeal->is_free == 0) {
  826. $discount = $this->setmealRepository->getIncrementDiscountByArray($cat, $mysetmeal);
  827. //当前基础套餐套餐需要付的价格,如果折扣为0,则价格与原始价格一致
  828. $cate_arr[$key]->my_price = $discount>0?round($val->price*$discount/10, 2):$val->price;
  829. //当前基础套餐的对应的折扣
  830. $cate_arr[$key]->my_discount = $discount;
  831. //单条价格
  832. $cate_arr[$key]->my_unit_price = round($cate_arr[$key]->my_price/$val->value, 2);
  833. //节省的数
  834. $cate_arr[$key]->my_saved_price = $val->price-$cate_arr[$key]->my_price;
  835. } else {
  836. $free_discount = $this->setmealRepository->getIncrementDiscountByArray($cat, $mysetmeal);
  837. //免费会员需要付的价格
  838. $cate_arr[$key]->my_price = $free_discount>0?round($val->price*$free_discount/10, 2):$val->price;
  839. //免费会员单条价格
  840. $cate_arr[$key]->my_unit_price = round($cate_arr[$key]->my_price/$val->value, 2);
  841. //VIP会员价格,取出折扣最大的套餐折扣
  842. $vip_discount = $this->setmealRepository->getMaxDiscount($cat);
  843. $cate_arr[$key]->vip_price = intval($vip_discount)>0?round($val->price*$vip_discount/10, 2):$val->price;
  844. //VIP会员单条价格
  845. $cate_arr[$key]->vip_unit_price = round($cate_arr[$key]->vip_price/$val->value, 2);
  846. }
  847. //换算积分
  848. $cate_arr[$key]->need_points = round($cate_arr[$key]->my_price*config('aix.companyset.points.points_set.payment_rate')); // 原为round()
  849. }
  850. $jobs_list = [];
  851. if ($cat=='stick' || $cat=='emergency' || $cat=='auto_refresh_jobs') {
  852. $jobs_where['company_id'] = auth('web-company')->user()->id;
  853. config('aix.companyset.comset.show_set.jobs_display') == 1 ? $jobs_where['audit'] = 1 : $jobs_where[] = ['audit','<>',3];
  854. $jobs_where['valid'] = 1;
  855. $jobs_list = $this->jobsRepository->findWhere($jobs_where);
  856. if ($cat == 'auto_refresh_jobs') {
  857. foreach ($jobs_list as $key => $val) {
  858. $condition['pid'] = $val->id;
  859. $condition['type'] = 1;
  860. $condition['utype'] = auth('web-company')->user()->utype;
  861. $has_auto = $this->queueAutoRefreshRepository->findData($condition);
  862. $jobs_list[$key]->auto_refresh = $has_auto?1:0;
  863. }
  864. }
  865. }
  866. $buy_cn = '';
  867. switch ($cat) {
  868. case 'stick':
  869. $buy_cn = '置顶';
  870. break;
  871. case 'emergency':
  872. $buy_cn = '紧急';
  873. break;
  874. case 'jobs':
  875. $buy_cn = '职位增值包';
  876. break;
  877. case 'jobfair_num':
  878. $buy_cn = '招聘会场次';
  879. break;
  880. }
  881. return [
  882. 'cate_arr'=>$cate_arr,
  883. 'jobs_list'=>$jobs_list,
  884. 'buy_cn'=>$buy_cn,
  885. ];
  886. }
  887. /**购买增值包 - 模版服务
  888. * @param int $request_tpl
  889. * @return bool
  890. */
  891. public function incrementAddTpl($mysetmeal, $request_tpl = 0)
  892. {
  893. if ($request_tpl >0) {
  894. $condition['id'] = $request_tpl;
  895. } else {
  896. $condition['tpl_type'] = 1;
  897. }
  898. $cate_arr =$this->tplRepository->findTpl($condition);
  899. foreach ($cate_arr as $key => $val) {
  900. $discount = $this->setmealRepository->getIncrementDiscountByArray('tpl', $mysetmeal);
  901. //当前基础套餐套餐需要付的价格,如果折扣为0,则价格与原始价格一致
  902. $cate_arr[$key]->my_price = $discount>0?round($val->price/config('aix.companyset.points.points_set.payment_rate')*$discount/10, 2):($val->price/config('aix.companyset.points.points_set.payment_rate'));
  903. //当前基础套餐的对应的折扣
  904. $cate_arr[$key]->my_discount = $discount;
  905. //换算积分
  906. $cate_arr[$key]->need_points = $discount>0?round($val->price*$discount/10):$val->price; //原为round()
  907. $cate_arr[$key]->id = $val->id;
  908. // $cate_arr[$key]->thumb_dir = $val->dir;//模版位置
  909. }
  910. return ['cate_arr'=>$cate_arr];
  911. }
  912. public function pointsAdd()
  913. {
  914. $payment = $this->paymentRepository->get();
  915. foreach ($payment as $key => $val) {
  916. if (!config("aix.system.pay.{$val->alias}.is_on")) {
  917. unset($payment[$key]);
  918. }
  919. }
  920. $result = [
  921. 'payment'=>$payment,
  922. 'payment_rate'=>config('aix.companyset.points.points_set.payment_rate'),
  923. ];
  924. return $result;
  925. }
  926. /**计算天数
  927. * @param $days
  928. * @return string
  929. */
  930. protected function formatDays($days)
  931. {
  932. if ($days < 30) {
  933. return $days . '天';
  934. } else {
  935. return intval($days / 30) . '个月';
  936. }
  937. }
  938. //添加会员操作日志
  939. public function writeMembersLog($user, $type, $log_value)
  940. {
  941. return $this->memberLogRepository->createLog($user, $type, $log_value);
  942. }
  943. //添加积分操作日志
  944. public function writeMemberHandselLog($data)
  945. {
  946. return $this->memberHandselRepository->create($data);
  947. }
  948. //清除积分
  949. public function clearPoint($uid){
  950. if (config("aix.companyset.points.points_set.clear_points")==1){
  951. $point=$this->memberPointRepository->getPointsOne($uid,1);
  952. if (empty($point->points)){ //如果积分就是空,就不清空了
  953. return null;
  954. }
  955. $this->memberPointRepository->updateNew($uid,1,['points'=>0]);
  956. try{
  957. //添加消除记录
  958. $this->memberHandselRepository->addNew(['uid'=>$uid,'utype'=>1,
  959. "htype"=>"points_clear",
  960. "htype_cn"=>"套餐到期,清空积分",
  961. "operate"=>"2","points"=>$point->points]);
  962. }catch (\Exception $exception){
  963. }
  964. }
  965. }
  966. //检查套餐到期的问题
  967. public function checkMemberSetmeal(){
  968. $condition = [
  969. ['endtime','>', time()],//到期时间大于当前时间
  970. ['utype','=',1],
  971. ['expire','=',1]
  972. ];
  973. $or=[
  974. ['endtime',0],
  975. ['utype','=',1],
  976. ['expire','=',1]
  977. ];
  978. $list = $this->memberSetmealRepository->checkSetmeals($condition,$or);
  979. if (!empty($list)){
  980. foreach ($list as $item) {
  981. $log=[
  982. 'item'=>$item,
  983. 'action'=>"修改了套餐是否到期"
  984. ];
  985. $this->memberLogRepository->addDebugLog($log);
  986. $this->memberSetmealRepository->updateSetmeal(['expire'=>0],$item->id);
  987. }
  988. }
  989. return $list;
  990. }
  991. }