12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091 |
- <?php
- /**
- * Created by PhpStorm.
- * User: wuzhenke
- * Date: 2018/11/28
- * Time: 16:43
- */
- namespace App\Services\Company;
- use App\Exceptions\ResponseException;
- use App\Models\Company;
- use App\Models\Jobs;
- use App\Models\MembersSetmeal;
- use App\Models\Tpl;
- use App\Repositories\CompanyRepository;
- use App\Repositories\JobsRepository;
- use App\Repositories\MemberHandselRepository;
- use App\Repositories\MemberLogRepository;
- use App\Repositories\MemberPointRepository;
- use App\Repositories\MembersChargeLogRepository;
- use App\Repositories\MemberSetmealRepository;
- use App\Repositories\MembersSetmealLogRepository;
- use App\Repositories\OrderRepository;
- use App\Repositories\PaymentRepository;
- use App\Repositories\QueueAutoRefreshRepository;
- use App\Repositories\SetmealIncrementsRepository;
- use App\Repositories\SetmealRepository;
- use App\Repositories\TaskLogRepository;
- use App\Repositories\TaskRepository;
- use App\Services\Common\MembersSetmealRecordService;
- use App\Services\Common\PayService;
- use Carbon\Carbon;
- use Illuminate\Contracts\Encryption\EncryptException;
- use Illuminate\Support\Facades\DB;
- use App\Repositories\TplRepository;
- use App\Repositories\MemberSetmealRecordRepository;
- use Illuminate\Support\Facades\Log;
- class ServiceService
- {
- protected $taskRepository;
- protected $memberPointRepository;
- protected $taskLogRepository;
- protected $memberHandselRepository;
- protected $memberSetmealRepository;
- protected $jobsRepository;
- protected $setmealRepository;
- protected $paymentRepository;
- protected $orderRepository;
- protected $memberLogRepository;
- protected $membersChargeLogRepository;
- protected $companyRepository;
- protected $membersSetmealLogRepository;
- protected $setmealIncrementsRepository;
- protected $queueAutoRefreshRepository;
- protected $tplRepository;
- protected $memberSetmealRecordRepository;
- /**
- * ServiceService constructor.
- * @param $taskRepository
- * @param $memberPointRepository
- * @param $taskLogRepository
- * @param $memberHandselRepository
- * @param $memberSetmealRepository
- * @param $jobsRepository
- * @param $setmealRepository
- * @param $paymentRepository
- * @param $orderRepository
- * @param $memberLogRepository
- * @param $membersChargeLogRepository
- * @param $companyRepository
- * @param $membersSetmealLogRepository
- * @param $setmealIncrementsRepository
- * @param $queueAutoRefreshRepository
- * @param $tplRepository
- *
- */
- 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){
- $this->taskRepository = $taskRepository;
- $this->memberPointRepository = $memberPointRepository;
- $this->taskLogRepository = $taskLogRepository;
- $this->memberHandselRepository = $memberHandselRepository;
- $this->memberSetmealRepository = $memberSetmealRepository;
- $this->jobsRepository = $jobsRepository;
- $this->setmealRepository = $setmealRepository;
- $this->paymentRepository = $paymentRepository;
- $this->orderRepository = $orderRepository;
- $this->memberLogRepository = $memberLogRepository;
- $this->membersChargeLogRepository = $membersChargeLogRepository;
- $this->companyRepository = $companyRepository;
- $this->membersSetmealLogRepository = $membersSetmealLogRepository;
- $this->setmealIncrementsRepository = $setmealIncrementsRepository;
- $this->queueAutoRefreshRepository = $queueAutoRefreshRepository;
- $this->tplRepository = $tplRepository;
- $this->memberSetmealRecordRepository=$memberSetmealRecordRepository;
- $this->membersSetmealRecordService=$membersSetmealRecordService;
- }
- public function index($user)
- {
- $mySetmeal = $this->memberSetmealRepository->getSetmealByUid($user->id, $user->utype);//套餐详细
- $condition['company_id'] = $user->id;
- $condition['display'] = 1;
- $condition['valid'] = 1;
- $condition[] = ['audit','<>',3];
- $jobsCount = $this->jobsRepository->jobsTotal($condition);
- $surplus_jobs = $mySetmeal->jobs_meanwhile-$jobsCount;
- $mySetmeal->jobs_meanwhile =$surplus_jobs>0?$surplus_jobs:0;
- if ($mySetmeal->endtime == 0) {
- $mySetmeal->leave_days = '永久';
- } else {
- $tmpday = ceil((strtotime($mySetmeal->endtime) - time())/86400);
- $minus = $tmpday<0?0:$tmpday;
- $mySetmeal->leave_days = intval($minus);
- }
- $setmeal = $this->setmealRepository->findWhere(['display' => 1]);//会员套餐
- foreach ($setmeal as $key => $val) {
- $setmeal[$key]->discount = $this->setmealRepository->getDiscountForSetmealOne($val);
- $setmeal[$key]->long = $val->days == 0 ? '永久' : $this->formatDays($val->days);
- }
- request()->offsetSet('id', $user->id);
- $setmealRecords=$this->membersSetmealRecordService->SetmealRecord(true);
- $this->freeSetmealIsOver($user);
- $result = [
- 'user' => $user,
- 'mySetmeal' => $mySetmeal,
- 'setmeal' => $setmeal,
- 'setmealRecord'=>$setmealRecords,
- ];
- return $result;
- }
- /**
- * 免费的会员是否过期了
- */
- public function freeSetmealIsOver($user){
- $mySetmeal = $this->memberSetmealRepository->getSetmealByUid($user->id, $user->utype);//套餐详细
- session(["setmeal_message"=>""]);
- if (strtotime($mySetmeal->endtime)<time() && $mySetmeal->endtime!=0){ //现在就判断到期时间了
- if (request('look')!=true){ //通过url来判断是否已经看过
- session(["setmeal_message"=>"提醒:您的套餐已到期,请及时到我的套餐处升级套餐"]);
- }
- }
- }
- /**
- * @param $request
- * @return array
- */
- public function setmealDetail($request, $user)
- {
- $mySetmeal = $this->memberSetmealRepository->getSetmealByUid($user->id, $user->utype);//套餐详细
- $condition['company_id'] = $user->id;
- $condition['display'] = 1;
- $condition['valid'] = 1;
- $condition[] = ['audit','<>',3];
- $jobsCount = $this->jobsRepository->jobsTotal($condition);
- $surplus_jobs = $mySetmeal->jobs_meanwhile-$jobsCount;
- $mySetmeal->jobs_meanwhile =$surplus_jobs>0?$surplus_jobs:0;
- if ($mySetmeal->endtime == 0) {
- $mySetmeal->leave_days = '永久';
- } else {
- $tmpday = ceil((strtotime($mySetmeal->endtime) - time())/86400);
- $minus = $tmpday<0?0:$tmpday;
- $mySetmeal->leave_days = intval($minus);
- }
- $setmeal = $this->setmealRepository->findWhere(['display' => 1]);//会员套餐
- foreach ($setmeal as $key => $val) {
- $setmeal[$key]->discount = $this->setmealRepository->getDiscountForSetmealOne($val);
- $setmeal[$key]->long = $val->days == 0 ? '永久' : $this->formatDays($val->days);
- }
- $starttime = isset($request['starttime'])?$request['starttime']:date('Y-m-d', time()-30*86400);
- $endtime = isset($request['endtime'])?$request['endtime']:date('Y-m-d', time());
- $where= [
- ['created_at','>=',$starttime." 23:10:10"],
- ['created_at','<=',$endtime." 23:10:10"],
- ['log_uid','=',$user->id],
- ['log_utype','=',$user->utype],
- ];
- $setmealDetail = $this->membersSetmealLogRepository->membersSetmealLog($where);
- request()->offsetSet('id', $user->id);
- $setmealRecords=$this->membersSetmealRecordService->SetmealRecord(true);
- $result = [
- 'user' => $user,
- 'mySetmeal' => $mySetmeal,
- 'setmeal' => $setmeal,
- 'starttime'=>$starttime,
- 'endtime'=>$endtime,
- 'setmealDetail'=>$setmealDetail,
- 'setmealRecord'=>$setmealRecords,
- ];
- return $result;
- }
- /**
- * 获取任务状态。
- */
- public function points($user, $type = 0)
- {
- $task = $this->memberPointRepository->getComTaskById($user->id);
- foreach ($task as $key => $val) {
- if ($key == 'task_logs') {
- $task_id = [];
- $task_id_w = [];
- foreach ($val as $k => $v) {
- if ($v['once'] != 1) {
- $task_id[] = $v['task_id'];
- } else {
- $task_id_w[] = $v['task_id'];
- }
- }
- }
- }
- $count = [];
- $task_id = array_unique($task_id);
- foreach ($task_id as $k => $v) {
- $count[$v] = $this->taskLogRepository->getTaskLogCount($user->id, $v, $user->utype);
- }
- $task_info = $this->taskRepository->getTaskById(array_keys($count));
- $finshTask = []; //已完成任务。
- foreach ($count as $k1 => $v1) {
- foreach ($task_info as $key1 => $val1) {
- if ($k1 == $val1->id) {
- if ($val1->times != -1) {
- if ($v1 == $val1->times) {
- $finshTask[$k1]['id'] = $val1->id;
- $finshTask[$k1]['title'] = $val1->title;
- $finshTask[$k1]['points'] = $val1->points;
- $finshTask[$k1]['type'] = '日常任务';
- $finshTask[$k1]['status'] = '已完成';
- $finshTask[$k1]['t_alias'] = $val1->t_alias;
- $finshTask[$k1]['count'] = '(*' . $v1 . ')';
- }
- }
- }
- }
- }
- $task_info_w = $this->taskRepository->getTaskById(($task_id_w));
- foreach ($task_info_w as $ke => $va) {
- $finshTask[$va->id]['id'] = $va->id;
- $finshTask[$va->id]['title'] = $va->title;
- $finshTask[$va->id]['points'] = $va->points;
- $finshTask[$va->id]['type'] = '一次性任务';
- $finshTask[$va->id]['status'] = '已完成';
- $finshTask[$va->id]['t_alias'] = $va->t_alias;
- $finshTask[$va->id]['count'] = '';
- }
- $task_ZZ = $this->taskRepository->getTaskByUtype($user->utype);
- $task_info_z = [];
- $sub_site = '';
- if (get_subsite_id() > 0) {
- $sub_site = 'jkq.';
- }
- foreach ($task_ZZ as $key => $val) {
- if (!in_array($val->id, array_keys($finshTask))) {
- $task_info_z[$val->id]['id'] = $val->id;
- $task_info_z[$val->id]['title'] = $val->title;
- $task_info_z[$val->id]['points'] = $val->points;
- if ($val->once == 1) {
- $task_info_z[$val->id]['count'] = '';
- $task_info_z[$val->id]['type'] = '一次性任务';
- } else {
- $task_info_z[$val->id]['type'] = '日常任务';
- $hjk = $this->taskLogRepository->getTaskLogCount($user->id, $val->id, $user->utype);
- if (!$hjk) {
- $task_info_z[$val->id]['count'] = '';
- } else {
- $times = $val->times;
- $lasT = $times - $hjk;
- if ($times == -1) {
- $task_info_z[$val->id]['count'] = '';
- } else {
- $task_info_z[$val->id]['count'] = '(*'.$lasT.')';
- }
- }
- }
- if ($type) {
- if ($val->id == 17) {
- $task_info_z[$val->id]['status'] = '<a href="" style="text-decoration: none;">去完成</a>';
- } elseif ($val->id == 18) {
- $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>';
- } elseif ($val->id == 19) {
- $task_info_z[$val->id]['status'] = '<a href=" ' . route($sub_site."mobile.firm.info") . '" style="text-decoration: none;">去完成</a>';
- } elseif ($val->id == 20) {
- $task_info_z[$val->id]['status'] = '<a href="' . route($sub_site."mobile.firm.com.img") . '" style="text-decoration: none;">去完成</a>';
- } elseif ($val->id == 21) {
- $task_info_z[$val->id]['status'] = '<a href="' . route($sub_site."mobile.resumes") . '" style="text-decoration: none;" target="_blank">去完成</a>';
- } elseif ($val->id == 22) {
- $task_info_z[$val->id]['status'] = '<a href=" ' . route($sub_site."mobile.firm.com.security") . '" style="text-decoration: none;">去完成</a>';
- } elseif ($val->id == 23) {
- $task_info_z[$val->id]['status'] = '<a href=" ' . route($sub_site."mobile.firm.com.security") . '" style="text-decoration: none;">去完成</a>';
- } elseif ($val->id == 25) {
- $task_info_z[$val->id]['status'] = '<a href=" ' . route($sub_site."mobile.firm.com.binding") . '" style="text-decoration: none;">去完成</a>';
- } elseif ($val->id == 27) {
- $task_info_z[$val->id]['status'] = '<a href=" ' . route($sub_site."mobile.firm.info") . '" style="text-decoration: none;">去完成</a>';
- } elseif ($val->id == 28) {
- $task_info_z[$val->id]['status'] = '<a href=" ' . route($sub_site."mobile.firm.resume.apply") . '" style="text-decoration: none;">去完成</a>';
- } elseif ($val->id == 29) {
- // $task_info_z[$val->id]['status'] = '<a href="" style="text-decoration: none;">去完成</a>';
- } elseif ($val->id == 30) {
- $task_info_z[$val->id]['status'] = '<a href="' . route($sub_site."mobile.firm.com.auth") . '" style="text-decoration: none;">去完成</a>';
- } elseif ($val->id == 31) {
- // $task_info_z[$val->id]['status'] = '<a href="" style="text-decoration: none;">去完成</a>';
- } elseif ($val->id == 32) {
- $task_info_z[$val->id]['status'] = '<a href="' . route($sub_site."mobile.firm.com.psm.consult") . '" style="text-decoration: none;">去完成</a>';
- } else {
- $task_info_z[$val->id]['status'] = '<a href=" ' . route($sub_site."mobile.firm.com.binding") . '" style="text-decoration: none;">去完成</a>';
- }
- } else {
- if ($val->id == 17) {
- $task_info_z[$val->id]['status'] = '<a href="" style="text-decoration: none;">去完成</a>';
- } elseif ($val->id == 18) {
- $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>';
- } elseif ($val->id == 19) {
- $task_info_z[$val->id]['status'] = '<a href=" ' . route($sub_site."com.info") . '" style="text-decoration: none;">去完成</a>';
- } elseif ($val->id == 20) {
- $task_info_z[$val->id]['status'] = '<a href="' . route($sub_site."com.img") . '" style="text-decoration: none;">去完成</a>';
- } elseif ($val->id == 21) {
- $task_info_z[$val->id]['status'] = '<a href="' . route($sub_site."resumes") . '" style="text-decoration: none;" target="_blank">去完成</a>';
- } elseif ($val->id == 22) {
- $task_info_z[$val->id]['status'] = '<a href=" ' . route($sub_site."com.security") . '" style="text-decoration: none;">去完成</a>';
- } elseif ($val->id == 23) {
- $task_info_z[$val->id]['status'] = '<a href=" ' . route($sub_site."com.security") . '" style="text-decoration: none;">去完成</a>';
- } elseif ($val->id == 25) {
- $task_info_z[$val->id]['status'] = '<a href=" ' . route($sub_site."com.security") . '" style="text-decoration: none;">去完成</a>';
- } elseif ($val->id == 27) {
- $task_info_z[$val->id]['status'] = '<a href=" ' . route($sub_site."com.info") . '" style="text-decoration: none;">去完成</a>';
- } elseif ($val->id == 28) {
- $task_info_z[$val->id]['status'] = '<a href=" ' . route($sub_site."resume.apply") . '" style="text-decoration: none;">去完成</a>';
- } elseif ($val->id == 29) {
- // $task_info_z[$val->id]['status'] = '<a href="" style="text-decoration: none;">去完成</a>';
- } elseif ($val->id == 30) {
- $task_info_z[$val->id]['status'] = '<a href="' . route($sub_site."com.auth") . '" style="text-decoration: none;">去完成</a>';
- } elseif ($val->id == 31) {
- // $task_info_z[$val->id]['status'] = '<a href="" style="text-decoration: none;">去完成</a>';
- } elseif ($val->id == 32) {
- $task_info_z[$val->id]['status'] = '<a href="' . route($sub_site."com.pms.consult") . '" style="text-decoration: none;">去完成</a>';
- } else {
- $task_info_z[$val->id]['status'] = '<a href=" ' . route($sub_site."com.security") . '" style="text-decoration: none;">去完成</a>';
- }
- }
- $task_info_z[$val->id]['t_alias'] = $val->t_alias;
- }
- }
- $todayPoints = 0;
- $rs = $this->taskLogRepository->getTodayPoints($user->id, $user->utype);
- if ($rs) {
- $todayPoints = $rs;
- }
- $onPoints = $this->taskLogRepository->getSinglePoints($user->id, $user->utype);
- $dayPoints = $this->taskLogRepository->getDayPoints($user->id, $user->utype);
- $arrAll = $this->taskRepository->getAllPoints($user->utype);
- $allPoints = 0;
- foreach ($arrAll as $key => $val) {
- if ($val->once == 1) {
- $allPoints += $val->points;
- } else {
- $allPoints += (abs($val->times)) * ($val->points);
- }
- }
- $lastPoints = (int)$allPoints - $onPoints - $dayPoints > 0 ? (int)$allPoints - $onPoints - $dayPoints : 0;
- $mySetmeal = $this->memberSetmealRepository->getSetmealByUid($user->id, $user->utype);//套餐详细
- return [
- 'w_finsh' => $task_info_z,
- 'finsh' => $finshTask,
- 'content' => $task,
- 'todayPoints' => $todayPoints,
- 'lastPoints' => $lastPoints,
- 'content' => $this->memberPointRepository->getComPointsById($user->id, $user->utype),
- 'mySetmeal' => $mySetmeal,
- ];
- }
- /**积分收支明细
- * @return array
- */
- public function pointsDetail($type, $user)
- {
- $getNum = $this->memberHandselRepository->getNum($user, 1);//累计获得
- $useNum = $this->memberHandselRepository->getNum($user, 2);//累计消耗
- $content = $this->memberHandselRepository->getMembersHandsel($user->id, $user->utype, $type);//积分操作记录
- $companyPoint = $this->memberPointRepository->getComPointsById($user->id, $user->utype);
- $points = $this->taskLogRepository->getTodayPoints($user->id, $user->utype);//今天获取积分
- $todayPoints = $points ? $points : 0;
- $onPoints = $this->taskLogRepository->getSinglePoints($user->id, $user->utype);//获取单次积分
- $dayPoints = $this->taskLogRepository->getDayPoints($user->id, $user->utype); //获取日常积分
- $arrAll = $this->taskRepository->getAllPoints($user->utype);
- $allPoints = 0;
- foreach ($arrAll as $key => $val) {
- if ($val->once == 1) {
- $allPoints += $val->points;
- } else {
- $allPoints += (abs($val->times)) * ($val->points);
- }
- }
- $lastPoints = (int)$allPoints - $onPoints - $dayPoints > 0 ? (int)$allPoints - $onPoints - $dayPoints : 0;
- $res = [
- 'content' => $content,
- 'points' => $todayPoints,
- 'lastPoints' => $lastPoints,
- 'companyPoint' => $companyPoint,
- 'getNum' => $getNum[0]->getTotalPoints,
- 'useNum' => $useNum[0]->getTotalPoints,
- 'type'=>$type
- ];
- return $res;
- }
- /**套餐升级
- * @param $id
- * @return array
- * @throws ResponseException
- */
- public function setmealAdd($id, $user)
- {
- $setmeal = $this->setmealRepository->find($id);
- if (!$setmeal) {
- throw new ResponseException('请选择正确的套餐', '', 404);
- }
- // 购买套餐优惠
- $setmeal->long = $this->formatDays($setmeal->days);
- $setmeal->discount = $this->setmealRepository->getDiscountForSetmealOne($setmeal);
- $offline = $this->paymentRepository->findWhere(['alias'=>'offline']);
- $online = $this->paymentRepository->findWhere([['alias','<>','offline']]);
- foreach ($offline as $key => &$val) {
- if (!config("aix.system.pay.{$val->alias}.is_on")) {
- unset($offline[$key]);
- }
- }
- foreach ($online as $key => &$val) {
- if (!config("aix.system.pay.{$val->alias}.is_on")) {
- unset($online[$key]);
- }
- }
- $mypoints = $this->memberPointRepository->getPointsById($user->id, $user->utype);
- $result = [
- 'user' => $user,
- 'setmeal' => $setmeal,
- 'offline' => $offline,
- 'online' => $online,
- 'mypoints' => $mypoints->points,
- 'need_points' => $setmeal->expense * config('aix.companyset.points.points_set.payment_rate')
- ];
- return $result;
- }
- public function setmealAddMobile($user)
- {
- //我的套餐
- $mySetmeal = $this->memberSetmealRepository->getSetmealByUid($user->id, 1);
- //我的积分
- $myPoints = $this->memberPointRepository->getPointsById($user->id, 1);
- //套餐列表
- $setmeal = $this->setmealRepository->getSetmealList();
- foreach ($setmeal as $key => $val) {
- $setmeal[$key]->long = $val->days==0?'永久':$this->formatDays($val->days);
- $setmeal[$key]['discount'] = $this->setmealRepository->getDiscountForSetmealOne($val);
- if (config('aix.mobile.mobile_set.mobile_set.mobile_setmeal_discount_value')>0) {
- $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');
- }
- $setmeal[$key]->service_points = round($setmeal[$key]->expense*config('aix.companyset.points.points_set.payment_rate'));
- }
- $result = [
- 'user'=>$user,
- 'mySetmeal'=>$mySetmeal,
- 'myPoints'=>$myPoints,
- 'setmeal'=>$setmeal,
- ];
- return $result;
- }
- /**设置套餐
- * @param $user
- * @param $setmeal_id
- * @return array
- * @params 用来传递参数,后台修改到期时间,希望设置开始时间维当日期 by 李艳
- * @throws \Prettus\Validator\Exceptions\ValidatorException
- * $params 参数使用地方 app/Admin/Controllers/Company/MembersSetmealController.php@update()
- */
- public function setMembersSetmeal($user, $setmeal_id,$params=null)
- {
- $setmeal = $this->setmealRepository->getOneSetmeal($setmeal_id);
- if (!$setmeal) {
- return ['status'=>0,'msg'=>'请选择正确的套餐'];
- }
- $mysetmeal = $this->memberSetmealRepository->getSetmealByUid($user->id, $user->utype);
- /**
- * 9月11日发现BUG
- * 当上个套餐,是免费会员的时候,并且结束时间是0,在此处转成时间戳的时候就会发生令人窒息的1970年
- */
- $before_end_time=$mysetmeal->endtime; //我现在的套餐的到期时间
- if ($before_end_time==0){
- $before_end_time=time();
- }else{ //有老的异常数据,1970年的
- if ($before_end_time<MembersSetmeal::ERROR_TIME){
- $before_end_time=time();//直接开始时间就是现在吧
- }
- }
- $sqlData['starttime']=$before_end_time;
- $sqlData['expire'] = 0;//如果$setmeal->is_free==1,说明是到期自动变为免费会员,标记过期 --- 其他会员降级 到期字段不变
- $sqlData['setmeal_id'] = $setmeal->id;
- $sqlData['setmeal_name'] = $setmeal->setmeal_name;
- $sqlData['days'] = $setmeal->days;
- if (!empty($params) && isset($params['starttime'])){ //传过来的是设置指定的开始时间
- $sqlData['starttime']=$params['starttime'];
- }
- if ($setmeal->days > 0) {
- //如果套餐未到期,判断是否叠加套餐服务时间
- //配置文件开启套餐时间叠被动模式
- if (config('aix.companyset.setmeal_com.setmeal_com_set.is_superposition_time') == 1) {
- $sqlData['endtime'] = strtotime("+{$setmeal->days} day",$sqlData['starttime']);
- } else {
- $sqlData['endtime'] = strtotime("".$setmeal->days." days");
- }
- } else {
- $sqlData['endtime'] = 0;
- }
- $sqlData['expense']=$setmeal['expense'];
- $sqlData['jobs_meanwhile'] = $setmeal->jobs_meanwhile;
- $sqlData['refresh_jobs_free'] = $setmeal->refresh_jobs_free;
- $sqlData['jobfair_num'] = $setmeal->jobfair_num;//招聘会场次
- $sqlData['download_resume'] = $setmeal->download_resume;
- //掠过免费会员
- if ($setmeal_id!=MembersSetmeal::FREE_SetMember){
- if (config('aix.companyset.setmeal_com.setmeal_com_set.is_superposition') == 1) { //如果开通服务时叠加项目,就减掉已发布的职位数
- $map['company_id'] = $user->id;
- $sqlData['download_resume']=$mysetmeal->download_resume+$setmeal->download_resume;
- $sqlData['jobfair_num'] = $mysetmeal->jobfair_num+$setmeal->jobfair_num;//招聘会场次
- $sqlData['jobs_meanwhile'] = $mysetmeal->jobs_meanwhile+$setmeal->jobs_meanwhile;
- }
- }
- $sqlData['download_resume_max'] = $setmeal->download_resume_max;
- $sqlData['added'] = $setmeal->added;
- $sqlData['setmeal_img'] = $setmeal->setmeal_img;
- $sqlData['show_apply_contact'] = $setmeal->show_apply_contact;
- $sqlData['is_free'] = $setmeal->is_free;
- $sqlData['discount_download_resume'] = $setmeal->discount_download_resume;
- $sqlData['discount_sms'] = $setmeal->discount_sms;
- $sqlData['discount_stick'] = $setmeal->discount_stick;
- $sqlData['discount_emergency'] = $setmeal->discount_emergency;
- $sqlData['discount_tpl'] = $setmeal->discount_tpl;
- $sqlData['discount_auto_refresh_jobs'] = $setmeal->discount_auto_refresh_jobs;
- $sqlData['discount_auto_refresh_jobs'] = $setmeal->discount_auto_refresh_jobs;
- $sqlData['discount_auto_refresh_jobs'] = $setmeal->discount_auto_refresh_jobs;
- $sqlData['discount_auto_refresh_jobs'] = $setmeal->discount_auto_refresh_jobs;
- $setmeal_jobs['setmeal_deadline']=$sqlData['endtime'];
- $setmeal_jobs['deadline']=$setmeal_jobs['setmeal_deadline'];
- $setmeal_jobs['setmeal_id']=$sqlData['setmeal_id'];
- $setmeal_jobs['setmeal_name']=$sqlData['setmeal_name'];
- DB::beginTransaction();//检查数据库事务(有错)
- try{
- //检查套餐的开始时间和结束时间是否正常
- if($sqlData["starttime"]<MembersSetmeal::ERROR_TIME ||
- ($sqlData["endtime"]<MembersSetmeal::ERROR_TIME && $sqlData["endtime"]!=0))
- {
- throw new \Exception('系统出现异常!,请联系管理员!');
- }
- if (!$this->memberSetmealRepository->updateSetmeal($sqlData, $mysetmeal->id)) {
- throw new \Exception('更新会员套餐失败!');
- }
- //删除 是否过期 以及套餐图标
- unset($sqlData['expire']);
- unset($sqlData['setmeal_img']);
- unset($sqlData['setmeal_deadline']);
- $sqlData['uid'] = $user->id;
- $sqlData['utype'] = $user->utype;
- //往套餐记录里头添加
- if($this->memberSetmealRecordRepository->create($sqlData)===false){
- throw new \Exception('添加记录失败!');
- }
- //如果套餐有赠送积分,则直接更新用户积分表
- if ($setmeal->set_points) {
- $this->memberPointRepository->reportDeal($user->id, $user->utype, 1, $setmeal->set_points);
- $handsel['uid'] = $user->id;
- $handsel['htype'] = 'setmeal_gifts';
- $handsel['htype_cn'] = '套餐内赠送';
- $handsel['operate'] = 1;
- $handsel['points'] = $setmeal->set_points;
- $this->memberHandselRepository->addNew($handsel);
- }
- //如果套餐有赠送短信,则直接更新用户表的短信条数字段
- //如果开启了服务叠被动模式
- if ($setmeal_id!=1 && config('aix.companyset.setmeal_com.setmeal_com_set.is_superposition') == 1){
- $this->companyRepository->updataSmsNum($user->id, 1, $setmeal->set_sms);
- }else{
- $this->companyRepository->SetSmsNum($user->id,$setmeal->set_sms);
- }
- $this->companyRepository->update(['setmeal_id'=>$setmeal->id, 'setmeal_name'=>$setmeal->setmeal_name], $user->id);
- event_search_update(Company::class, (string)$user->id, 'update');
- $this->jobsRepository->updateMap($user->id, $setmeal_jobs);
- $condition = [['where', 'company_id', $user->id]];
- event_search_update(Jobs::class, $condition, 'update');
- //检查在招职位数是否超出限额,并根据后台配置做关闭处理
- $this->checkJobsMeanwhile($user->id, $setmeal->jobs_meanwhile);
- DB::commit();
- return ['status'=>1];
- }catch (\Exception $exception){
- DB::rollBack();
- return ['status'=>0,'msg'=>$exception->getMessage()];
- }
- }
- /**设置免费会员套餐到期
- * @param $user
- * @param $setmeal_id
- * @return array
- * @throws \Prettus\Validator\Exceptions\ValidatorException
- */
- public function setFreeMembersSetmeal($user)
- {
- $mysetmeal = $this->memberSetmealRepository->getSetmealByUid($user->id, $user->utype);
- if (!$this->memberSetmealRepository->updateSetmeal(['expire'=>1], $mysetmeal->id)) {
- return ['status'=>0,'msg'=>'更新会员套餐失败!'];
- }else{
- return ['status'=>1];
- }
- }
- /**处理职位
- * @param $uid
- * @param $num
- */
- public function checkJobsMeanwhile($uid, $num)
- {
- if (config('aix.companyset.setmeal_com.setmeal_com_set.hold_beyond_jobs') == 0) {
- $yid = [];
- $com_ids = [];
- $jobs = $this->jobsRepository->jobsSelect($uid);
- if (count($jobs) >$num) {
- foreach ($jobs as $key => $val) {
- if ($key >= $num) {
- $yid[] = $val->id;
- $com_ids[] = $val->company_id;
- }
- }
- }
- if (!empty($yid)) {
- $this->jobsRepository->closeJobs($yid);
- $condition = [['whereIn','id', $yid]];
- event_search_update(Jobs::class, $condition, 'update');
- event_search_update(Company::class, [['whereIn','id', $com_ids]], 'update');
- }
- }
- }
- /**更新订单号
- * @param $order_insert_id
- * @param $oid
- * @return mixed
- * @throws \Prettus\Validator\Exceptions\ValidatorException
- */
- public function updateOid($order_insert_id, $oid)
- {
- $data['oid'] = $oid;
- return $this->orderRepository->update($data, $order_insert_id);
- }
- /**支付成功页面
- * @param $oid
- * @return array
- * @throws ResponseException
- */
- public function setmealFinish($oid)
- {
- if (!$oid) {
- throw new ResponseException('订单ID有误', '', 404);
- }
- $user = auth('web-company')->user();
- $order = $this->orderRepository->getOneOder($oid);
- if (!$order) {
- throw new ResponseException('参数错误', '', 404);
- }
- $mysetmeal = $this->memberSetmealRepository->getSetmealByUid($user->id, $user->utype);
- if (!$mysetmeal) {
- throw new ResponseException('您的套餐信息有误', '', 404);
- }
- switch ($order->order_type){
- case 1: //套餐升级
- $setmealIncr=$this->setmealRepository->find($order->setmeal);
- $setmealIncrDay=$setmealIncr->days;
- //理因到期时间
- $expireTimeBase=date("Y-m-d h:i:s",strtotime("+{$setmealIncrDay} day",$order->payment_time));
- $res['expireTime']=$expireTimeBase;
- break;
- case 16:case 7:case 14:case 2:case 10:case 5://充值积分 随着会员到期而到期
- $setmealIncrDay="无期限";
- break;
- case 15:
- $setmealIncrDay="无期限";
- break;
- case 8:
- case 9:
- case 12:
- case 13:
- $setmealIncr=$this->setmealIncrementsRepository->find($order->setmeal);
- $setmealIncrDay=$setmealIncr->value;
- //理因到期时间
- $expireTimeBase=date("Y-m-d H:i:s",strtotime("+{$setmealIncrDay} day",$order->payment_time));
- $expireTime=strtotime($expireTimeBase);
- //我会员的结束时间小于套餐的到期时间
- if (strtotime($expireTimeBase)>strtotime($mysetmeal->endtime)) {
- $expireTime=strtotime($mysetmeal->endtime);
- }
- if($mysetmeal->endtime==0){//免费的
- $expireTime=strtotime($expireTimeBase);
- }
- $res['expireTime']=date("Y-m-d H:i:s",$expireTime);
- break;
- default:
- $setmealIncrDay="--";
- break;
- }
- $endtime = strtotime($mysetmeal->endtime) == 0?"永久":date('Y-m-d', strtotime($mysetmeal->endtime));
- $res = [
- 'mysetmeal'=>$mysetmeal,
- 'order'=>$order,
- 'endtime'=>$endtime,
- 'open_time'=>date("Y-m-d H:i:s",$order->payment_time),
- 'setmealIncrDay'=>$setmealIncrDay
- ];
- return $res;
- }
- /**各项增值服务
- * @return array
- */
- public function increment($user)
- {
- $cat = $this->setmealIncrementsRepository->getIncrementCategory();
- $result = [];
- $category = [];
- foreach ($cat as $key => $val) {
- $category[$val->cat] = $val->cat;
- if ($val->cat=='jobs' || $val->cat=='jobfair_num') {
- $result[$val->cat] = 0;
- } else {
- $result[$val->cat] =$this->setmealRepository->getMaxDiscount($val->cat);
- }
- }
- $member_setmeal = 0;
- $memberSetmeal = $this->memberSetmealRepository->getSetmealByUid($user->id, $user->utype);
- if($memberSetmeal){
- $member_setmeal = $memberSetmeal->discount_tpl;
- }
- // $result['download_resume'] =$this->setmealRepository->getMaxDiscount('download_resume');
- // $result['sms'] =$this->setmealRepository->getMaxDiscount('sms');
- // $result['jobs_num'] =$this->setmealRepository->getMaxDiscount('jobs_num');
- // $result['jobfair_num'] =$this->setmealRepository->getMaxDiscount('jobfair_num');
- // $result['stick'] =$this->setmealRepository->getMaxDiscount('stick');
- // $result['emergency'] =$this->setmealRepository->getMaxDiscount('emergency');
- // $result['tpl'] =$this->setmealRepository->getMaxDiscount('tpl');
- // $result['auto_refresh_jobs'] =$this->setmealRepository->getMaxDiscount('auto_refresh_jobs');
- // return $result;
- return $res=['result'=>$result,'category'=>$category,'member_setmeal'=>$member_setmeal];
- }
- /**增值服务提示框
- * @return array
- */
- public function confirmPayIncrement($user)
- {
- $user = auth('web-company')->user();
- $mysetmeal = $this->memberSetmealRepository->getSetmealByUid($user->id, $user->utype);
- $setmeal_end_days = '永久';
- if (strtotime($mysetmeal->endtime) == 0) {
- $tip = '您当前【'.$mysetmeal->setmeal_name.'】有效期 '.date('Y-m-d', $mysetmeal->starttime).'至永久。增值包有效期与会员有效期一致('.$setmeal_end_days.'),是否继续购买增值包?';
- } else {
- if (strtotime($mysetmeal->endtime) > time()) {
- $sub_day = sub_day(strtotime($mysetmeal->endtime), time());
- $sub_day = preg_replace('/(\d+)/', '<span class="font_yellow">\1</span>', $sub_day);
- $setmeal_end_days = $sub_day.'后到期';
- } else {
- $setmeal_end_days = '已经到期';
- }
- $tip = "您当前【".$mysetmeal->setmeal_name."】有效期".date('Y-m-d', $mysetmeal->starttime)."至".date('Y-m-d', strtotime($mysetmeal->endtime))."。增值包有效期与会员有效期一致(".$setmeal_end_days."),是否继续购买增值包?";
- }
- return ['tip'=>$tip];
- }
- /**单个增值服务包内容
- * @param $cat
- * @param $request
- * @return array
- */
- public function incrementAdd($cat, $request)
- {
- $catData = $this->setmealIncrementsRepository->cate_arr;
- $service_unit = $this->setmealIncrementsRepository->service_unit;
- $user = auth('web-company')->user();
- $mysetmeal = $this->memberSetmealRepository->getSetmealByUid($user->id, $user->utype);
- $mypoints = $this->memberPointRepository->getComPointsById($user->id, $user->utype);
- $increment_rule = [
- 'jobs'=>config('aix.companyset.business_set.points_set.jobs_num'),
- 'jobfair_num'=>config('aix.companyset.business_set.points_set.jobfair_num'),
- 'download_resume'=>config('aix.companyset.business_set.points_set.download_resume'),
- 'sms'=>config('aix.companyset.business_set.points_set.sms'),
- 'stick'=>config('aix.companyset.business_set.points_set.stick'),
- 'emergency'=>config('aix.companyset.business_set.points_set.emergency'),
- 'tpl'=>config('aix.companyset.business_set.points_set.tpl'),
- 'auto_refresh_jobs'=>config('aix.companyset.business_set.points_set.auto_refresh_jobs')
- ];
- $offline = $this->paymentRepository->findWhere(['alias'=>'offline']);
- $online = $this->paymentRepository->findWhere([['alias','<>','offline']]);
- foreach ($offline as $key => &$val) {
- if (!config("aix.system.pay.{$val->alias}.is_on")) {
- unset($offline[$key]);
- }
- }
- foreach ($online as $key => &$val) {
- if (!config("aix.system.pay.{$val->alias}.is_on")) {
- unset($online[$key]);
- }
- }
- if ($cat == 'tpl') {
- $request_tpl = isset($request['tpl_id']) ? $request['tpl_id'] : 0;
- $cate_arr = $this->incrementAddTpl($mysetmeal, $request_tpl);
- } else {
- $cate_arr = $this->incrementAddNormal($cat, $mysetmeal);
- }
- $result = [
- 'user'=>$user,
- 'mysetmeal'=>$mysetmeal,
- 'cate_arr'=>$cate_arr,
- 'catData'=>$catData,
- 'service_unit'=>$service_unit,
- 'cat'=>$cat,
- 'increment_rule'=>$increment_rule,
- 'online'=>$online,
- 'offline'=>$offline,
- 'mypoints'=>$mypoints,
- ];
- return $result;
- }
- /**
- * 购买增值包 - 普通增值服务
- */
- protected function incrementAddNormal($cat, $mysetmeal)
- {
- $cate_arr = $this->setmealIncrementsRepository->findByField(['cat'=>$cat]);
- foreach ($cate_arr as $key => $val) {
- //如果是非免费套餐
- if ($mysetmeal->is_free == 0) {
- $discount = $this->setmealRepository->getIncrementDiscountByArray($cat, $mysetmeal);
- //当前基础套餐套餐需要付的价格,如果折扣为0,则价格与原始价格一致
- $cate_arr[$key]->my_price = $discount>0?round($val->price*$discount/10, 2):$val->price;
- //当前基础套餐的对应的折扣
- $cate_arr[$key]->my_discount = $discount;
- //单条价格
- $cate_arr[$key]->my_unit_price = round($cate_arr[$key]->my_price/$val->value, 2);
- //节省的数
- $cate_arr[$key]->my_saved_price = $val->price-$cate_arr[$key]->my_price;
- } else {
- $free_discount = $this->setmealRepository->getIncrementDiscountByArray($cat, $mysetmeal);
- //免费会员需要付的价格
- $cate_arr[$key]->my_price = $free_discount>0?round($val->price*$free_discount/10, 2):$val->price;
- //免费会员单条价格
- $cate_arr[$key]->my_unit_price = round($cate_arr[$key]->my_price/$val->value, 2);
- //VIP会员价格,取出折扣最大的套餐折扣
- $vip_discount = $this->setmealRepository->getMaxDiscount($cat);
- $cate_arr[$key]->vip_price = intval($vip_discount)>0?round($val->price*$vip_discount/10, 2):$val->price;
- //VIP会员单条价格
- $cate_arr[$key]->vip_unit_price = round($cate_arr[$key]->vip_price/$val->value, 2);
- }
- //换算积分
- $cate_arr[$key]->need_points = round($cate_arr[$key]->my_price*config('aix.companyset.points.points_set.payment_rate')); // 原为round()
- }
- $jobs_list = [];
- if ($cat=='stick' || $cat=='emergency' || $cat=='auto_refresh_jobs') {
- $jobs_where['company_id'] = auth('web-company')->user()->id;
- config('aix.companyset.comset.show_set.jobs_display') == 1 ? $jobs_where['audit'] = 1 : $jobs_where[] = ['audit','<>',3];
- $jobs_where['valid'] = 1;
- $jobs_list = $this->jobsRepository->findWhere($jobs_where);
- if ($cat == 'auto_refresh_jobs') {
- foreach ($jobs_list as $key => $val) {
- $condition['pid'] = $val->id;
- $condition['type'] = 1;
- $condition['utype'] = auth('web-company')->user()->utype;
- $has_auto = $this->queueAutoRefreshRepository->findData($condition);
- $jobs_list[$key]->auto_refresh = $has_auto?1:0;
- }
- }
- }
- $buy_cn = '';
- switch ($cat) {
- case 'stick':
- $buy_cn = '置顶';
- break;
- case 'emergency':
- $buy_cn = '紧急';
- break;
- case 'jobs':
- $buy_cn = '职位增值包';
- break;
- case 'jobfair_num':
- $buy_cn = '招聘会场次';
- break;
- }
- return [
- 'cate_arr'=>$cate_arr,
- 'jobs_list'=>$jobs_list,
- 'buy_cn'=>$buy_cn,
- ];
- }
- /**购买增值包 - 模版服务
- * @param int $request_tpl
- * @return bool
- */
- public function incrementAddTpl($mysetmeal, $request_tpl = 0)
- {
- if ($request_tpl >0) {
- $condition['id'] = $request_tpl;
- } else {
- $condition['tpl_type'] = 1;
- }
- $cate_arr =$this->tplRepository->findTpl($condition);
- foreach ($cate_arr as $key => $val) {
- $discount = $this->setmealRepository->getIncrementDiscountByArray('tpl', $mysetmeal);
- //当前基础套餐套餐需要付的价格,如果折扣为0,则价格与原始价格一致
- $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'));
- //当前基础套餐的对应的折扣
- $cate_arr[$key]->my_discount = $discount;
- //换算积分
- $cate_arr[$key]->need_points = $discount>0?round($val->price*$discount/10):$val->price; //原为round()
- $cate_arr[$key]->id = $val->id;
- // $cate_arr[$key]->thumb_dir = $val->dir;//模版位置
- }
- return ['cate_arr'=>$cate_arr];
- }
- public function pointsAdd()
- {
- $payment = $this->paymentRepository->get();
- foreach ($payment as $key => $val) {
- if (!config("aix.system.pay.{$val->alias}.is_on")) {
- unset($payment[$key]);
- }
- }
- $result = [
- 'payment'=>$payment,
- 'payment_rate'=>config('aix.companyset.points.points_set.payment_rate'),
- ];
- return $result;
- }
- /**计算天数
- * @param $days
- * @return string
- */
- protected function formatDays($days)
- {
- if ($days < 30) {
- return $days . '天';
- } else {
- return intval($days / 30) . '个月';
- }
- }
- //添加会员操作日志
- public function writeMembersLog($user, $type, $log_value)
- {
- return $this->memberLogRepository->createLog($user, $type, $log_value);
- }
- //添加积分操作日志
- public function writeMemberHandselLog($data)
- {
- return $this->memberHandselRepository->create($data);
- }
- //清除积分
- public function clearPoint($uid){
- if (config("aix.companyset.points.points_set.clear_points")==1){
- $point=$this->memberPointRepository->getPointsOne($uid,1);
- if (empty($point->points)){ //如果积分就是空,就不清空了
- return null;
- }
- $this->memberPointRepository->updateNew($uid,1,['points'=>0]);
- try{
- //添加消除记录
- $this->memberHandselRepository->addNew(['uid'=>$uid,'utype'=>1,
- "htype"=>"points_clear",
- "htype_cn"=>"套餐到期,清空积分",
- "operate"=>"2","points"=>$point->points]);
- }catch (\Exception $exception){
- }
- }
- }
- //检查套餐到期的问题
- public function checkMemberSetmeal(){
- $condition = [
- ['endtime','>', time()],//到期时间大于当前时间
- ['utype','=',1],
- ['expire','=',1]
- ];
- $or=[
- ['endtime',0],
- ['utype','=',1],
- ['expire','=',1]
- ];
- $list = $this->memberSetmealRepository->checkSetmeals($condition,$or);
- if (!empty($list)){
- foreach ($list as $item) {
- $log=[
- 'item'=>$item,
- 'action'=>"修改了套餐是否到期"
- ];
- $this->memberLogRepository->addDebugLog($log);
- $this->memberSetmealRepository->updateSetmeal(['expire'=>0],$item->id);
- }
- }
- return $list;
- }
- }
|