| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950 | <?phpnamespace App\Services\Common;use Aix\Pay\Data\PayOrder;use Aix\Sms\Contracts\Smser;use App\Exceptions\ResponseException;use App\Models\Category;use App\Models\Company;use App\Models\CompanyTpl;use App\Models\Jobs;use App\Models\Member;use App\Models\MembersHandsel;use App\Models\MembersPoint;use App\Models\Order;use App\Models\PersonalServiceStick;use App\Models\PersonalServiceStickLog;use App\Models\PersonalServiceTag;use App\Models\PersonalServiceTagLog;use App\Models\PersonTpl;use App\Models\Resume;use App\Models\Tpl;use App\Repositories\CompanyRepository;use App\Repositories\InvoiceCategoryRepository;use App\Repositories\JobsRepository;use App\Repositories\MemberLogRepository;use App\Repositories\MemberPointRepository;use App\Repositories\MembersChargeLogRepository;use App\Repositories\InvoiceRepository;use App\Repositories\MembersSetmealLogRepository;use App\Repositories\OrderRepository;use App\Repositories\PaymentRepository;use App\Repositories\PromotionRepository;use App\Repositories\QueueAutoRefreshRepository;use App\Repositories\SetmealRepository;use App\Services\Company\JobsService;use App\Services\Company\ServiceService;use App\Repositories\MemberHandselRepository;use App\Repositories\SetmealIncrementsRepository;use App\Repositories\MemberSetmealRepository;use App\Repositories\MemberRepository;use App\Repositories\ResumeRepository;use App\Repositories\CompanyDownResumeRepository;use Illuminate\Support\Facades\Log;use SimpleSoftwareIO\QrCode\Facades\QrCode;use App\Http\Controllers\Web\WebBaseController;/** * 订单服务。 * Class OrderService * @package App\Services\Common */class OrderService extends WebBaseController{    protected $orderRepository;    protected $setmealRepository;    protected $companyRepository;    protected $memberPointRepository;    protected $serviceService;    protected $memberLogRepository;    protected $membersChargeLogRepository;    protected $memberHandselRepository;    protected $setmealIncrementsRepository;    protected $memberSetmealRepository;    protected $memberRepository;    protected $resumeRepository;    protected $companyDownResumeRepository;    protected $invoiceRepository;    protected $paymentRepository;    protected $invoiceCategoryRepository;    protected $payService;    protected $queueAutoRefreshRepository;    protected $promotionRepository;    protected $jobsRepository;    protected $smsService;    protected $membersSetmealLogRepository;    protected $order_type =[        "1"=>"套餐升级",        "2"=>"充值积分",        "3"=>"简历置顶",        "4"=>"醒目标签",        "5"=>"简历模板",        "6"=>"简历包",        "7"=>"短信包",        "8"=>"职位置顶",        "9"=>"职位紧急",        "10"=>"企业模板",        "12"=>"预约刷新职位",        "13"=>"职位刷新",        "14"=>"简历下载",        "15"=>"简历包",        "16"=>"招聘会包",        ];    /**     * OrderService constructor.     * @param $orderRepository     * @param $setmealRepository     * @param $companyRepository     * @param $memberPointRepository     * @param $serviceService     * @param $memberLogRepository     * @param $membersChargeLogRepository     * @param $memberHandselRepository     * @param $setmealIncrementsRepository     * @param $memberSetmealRepository     * @param $memberRepository     * @param $resumeRepository     * @param $companyDownResumeRepository     * @param $invoiceRepository     * @param $paymentRepository     * @param $invoiceCategoryRepository     * @param $payService     * @param $queueAutoRefreshRepository     * @param $promotionRepository     * @param $jobsRepository     * @param $smsService     * @param $membersSetmealLogRepository     */    public function __construct(MembersSetmealLogRepository $membersSetmealLogRepository,OrderRepository $orderRepository, SmsService $smsService, JobsRepository $jobsRepository, PromotionRepository $promotionRepository, QueueAutoRefreshRepository $queueAutoRefreshRepository, PayService $payService, InvoiceCategoryRepository $invoiceCategoryRepository, PaymentRepository $paymentRepository, InvoiceRepository $invoiceRepository, MembersChargeLogRepository $membersChargeLogRepository, MemberLogRepository $memberLogRepository, ServiceService $serviceService, MemberPointRepository $memberPointRepository, SetmealRepository $setmealRepository, CompanyRepository $companyRepository, MemberHandselRepository $memberHandselRepository, SetmealIncrementsRepository $setmealIncrementsRepository, MemberSetmealRepository $memberSetmealRepository, MemberRepository $memberRepository, ResumeRepository $resumeRepository, CompanyDownResumeRepository $companyDownResumeRepository)    {        $this->orderRepository = $orderRepository;        $this->setmealRepository = $setmealRepository;        $this->companyRepository = $companyRepository;        $this->memberPointRepository = $memberPointRepository;        $this->serviceService = $serviceService;        $this->memberLogRepository = $memberLogRepository;        $this->membersChargeLogRepository = $membersChargeLogRepository;        $this->memberHandselRepository = $memberHandselRepository;        $this->setmealIncrementsRepository = $setmealIncrementsRepository;        $this->memberSetmealRepository = $memberSetmealRepository;        $this->memberRepository = $memberRepository;        $this->resumeRepository = $resumeRepository;        $this->companyDownResumeRepository = $companyDownResumeRepository;        $this->invoiceRepository = $invoiceRepository;        $this->paymentRepository = $paymentRepository;        $this->invoiceCategoryRepository = $invoiceCategoryRepository;        $this->payService = $payService;        $this->queueAutoRefreshRepository = $queueAutoRefreshRepository;        $this->promotionRepository = $promotionRepository;        $this->jobsRepository = $jobsRepository;        $this->smsService = $smsService;        $this->membersSetmealLogRepository=$membersSetmealLogRepository;    }    /**订单列表     * @param $request     * @return array     */    public function orderList($request, $user)    {        $order_type_choose = ['setmeal'=>'套餐订单','increment'=>'增值服务订单','points'=>'积分订单'];        $pay_status_choose = [1=>'未支付',2=>'已完成',3=>'已取消'];        $type = isset($request['type'])?$request['type']:"";        $is_pay = isset($request['is_pay'])?$request['is_pay']:0;        $where = [];        $map = [];        switch ($type) {            case 'setmeal':                $where = ['1'];                break;            case 'increment':                $where= ['3','4','6','7','8','9','10','12','15','16'];                break;            case "points":                $where = ['2'];                break;            default:                $where = ['1','2','3','4','6','7','8','9','10','12','13','14','15','16'];        }        if ($is_pay) {            $map['is_pay'] = $is_pay;        }        $map['uid'] = $user->id;        $map['utype'] = 1;        $orderList = $this->orderRepository->orderList($map, $where);        foreach ($orderList as $key => $value) {            $orderList[$key]->invoice = $this->invoiceRepository->getOne($value->id, $user);        }        $param_array = ['type','is_pay'];        $params= array();        if ($request) {            foreach ($request as $k => $v) {                if (in_array($k, $param_array)) {                    $params[$k] = $v;                }            }        }        $result = [            'orderList'=>$orderList,            'params'=>$params,            'type'=>$type,            'is_pay'=>$is_pay,            'order_type_choose'=>$order_type_choose,            'pay_status_choose'=>$pay_status_choose,            'order_type'=>$this->order_type,        ];        return $result;    }    public function orderDetail($id, $user)    {        $order_type = [1=>'套餐升级',2=>'充值积分',3=>'简历置顶',4=>'醒目标签',5=>'简历模板',6=>'简历包',7=>'短信包',8=>'职位置顶',9=>'职位紧急',10=>'企业模板',11=>'诚聘通',12=>'预约刷新职位',13=>'职位刷新',14=>'简历下载',15=>'简历包',14=>'招聘会包'];        if (!$order = $this->orderRepository->getOrder(['id'=>$id,'uid'=>$user->id])) {            throw new ResponseException('无此订单!');        }        if(is_array(unserialize($order->params))){            $order->params_arr =unserialize($order->params);        }else{            $order->params_arr =json_decode(unserialize($order->params),true);        }        $order->discount_money =floatval(intval($order->pay_points)/config('aix.companyset.points.points_set.payment_rate'));        $old_price = $this->getOldPrice($order);        $order->old_price = $old_price?$old_price:$order->amount;        $res['user'] = $user;        $res['order'] = $order;        $res['open_invoice'] = config('aix.companyset.comset.com_set.open_invoice');        $res['invoice'] = $this->invoiceRepository->getOneInvoice($id, $user);        $res['order_type_cn'] = $order_type[$res['order']->order_type];        $res['mysetmeal'] = $this->memberSetmealRepository->getSetmealByUid($user->id, $user->utype);        $res['payment_info'] = $this->paymentRepository->findByField(['alias'=>$res['order']->payment]);        $res['myPoints'] = $this->memberPointRepository->getComPointsById($user->id, 1);        $res['payment_rate'] = config('aix.companyset.points.points_set.payment_rate');        $res['points_enough'] = 1;        if ($res['myPoints']->points < $order->pay_points) {            $res['points_enough'] = 0;        }        if ($res['order']->is_pay == 2 || $res['order']->is_pay == 3) {            $category = $this->invoiceCategoryRepository->get()->toArray();            $category_arr = [];            foreach ($category as $key => $val) {                $category_arr[$val['id']] = $val;            }            $res['category'] = $category_arr;        }        $res["orderExplain"]=config("aix.system.pay.offline.service_tel");        $mysetmeal = $this->memberSetmealRepository->getSetmealByUid($user->id, $user->utype);        //获取买的套餐信息        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 2:case 10:case 5://充值积分                $res['expireTime']="无期限";                break;            case 7:case 14:case 15:case 16:                $res['expireTime']="无期限";                break;            case 8:            case 9:            case 12:            case 13:                try{ //因为有那个单个的职位刷新 没有增值服务                    $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=$mysetmeal->endtime;                    }                    if($mysetmeal->endtime==0){//免费的                        $expireTime=strtotime($expireTimeBase);                    }                    $res['expireTime']=date("Y-m-d H:i:s",$expireTime);                }catch (\Exception $exception){                    $res['expireTime']="--";                }            break;            default:                $res['expireTime']="--";                break;        }        if($order->is_pay==3){            $res['expireTime']="--";            $res['payment_time']="--";        }        return $res;    }    /**     * 订单详情页获取原价     */    protected function getOldPrice($order)    {        $arr = [6,7,8,9,12];        if (in_array($order->order_type, $arr)) {            $increment = $this->setmealIncrementsRepository->find($order->setmeal);            return $increment->price;        } else {            return false;        }    }    public function orderPayRepeat($id)    {        $user = auth('web-company')->user();        $orderInfo = $this->orderRepository->find($id);        $myPoints = $this->memberPointRepository->getComPointsById($user->id, 1);        if ($orderInfo->pay_points > 0 && $myPoints->points < $orderInfo->pay_points) {            $back_url = \Illuminate\Support\Facades\URL::previous();            return $this->showMessage('积分不足,无法完成支付,请重新下单!', $back_url, true, '上一页', '3');//            throw new ResponseException('积分不足,无法完成支付,请重新下单!');        }        if ($orderInfo->payment == 'wechat') {            $type = 'scan';        } else {            $type = 'web';        }        $payOrder = new PayOrder();        $payOrder->trade_no = $orderInfo->oid;        $payOrder->subject = '购买' . $orderInfo->service_name;        $payOrder->detail = $orderInfo->description;        $payOrder->price = $orderInfo->pay_amount;        $payOrder->callback = "App\Services\Common\OrderService.orderPaySave";        $result = $this->payService->pay($orderInfo->payment, $type, $payOrder);        if ($orderInfo->payment == 'wechat') {            return response()->json([                'status' => 1,                'tradeCode' => get_qrcode_html($result->code_url),                'tradeNo' => $orderInfo->oid,            ]);        } else {            return $result;        }    }    public function mobileOrderPayRepeat($id)    {        $user = auth('web-company')->user();        $orderInfo = $this->orderRepository->find($id);        $myPoints = $this->memberPointRepository->getComPointsById($user->id, 1);        if ($orderInfo->pay_points > 0 && $myPoints->points < $orderInfo->pay_points) {            $back_url = \Illuminate\Support\Facades\URL::previous();            return $this->showMessage('积分不足,无法完成支付,请重新下单!', $back_url, true, '上一页', '3');        }        if ($orderInfo->payment == 'wechat') {            $type = 'wap';        } else {            $type = 'wap';        }        $payOrder = new PayOrder();        $payOrder->trade_no = $orderInfo->oid;        $payOrder->subject = '购买' . $orderInfo->service_name;        $payOrder->detail = $orderInfo->description;        $payOrder->price = $orderInfo->amount;        $payOrder->callback = "App\Services\Common\OrderService.orderPaySave";        if ($orderInfo->payment == 'wechat') {            if (!is_weixin()) {                $type = 'wap';            } else {                //预留            }            $payOrder->return_url=route('mobile.common.orderWechat', ['oid'=>$payOrder->trade_no]);        } else {            $type = 'wap';            $payOrder->return_url=route('mobile.firm.service.order.index');        }        $result = $this->payService->pay($orderInfo->payment, $type, $payOrder);        return $result;    }    public function orderPaySave(PayOrder $payOrder)    {        $trade_no = $payOrder->trade_no;        $this->orderRepository->updateStatus($trade_no, ['is_pay'=>2, 'payment_time'=>time()]);    }    /**订单删除     * @param $id     * @return \Illuminate\Http\JsonResponse     * @throws \ErrorException     * @throws \Prettus\Validator\Exceptions\ValidatorException     */    public function orderDel($id,$user)    {        $info = $this->orderRepository->findWhere(['id'=>$id,'uid'=>$user->id])->first();        if (empty($info)){            return response()->json(['status'=>0,'msg'=>'没有这个订单']);        }        if ($info->is_pay == 2) {            return response()->json(['status'=>0,'msg'=>'已完成的订单不允许删除!']);        }        if (!$this->orderRepository->delete($id)) {            return response()->json(['status'=>0,'msg'=>'删除订单失败!']);        }        $this->memberLogRepository->createLog($user, 9005, [$info->oid]);        return response()->json(['status'=>1,'msg'=>'删除订单成功!']);    }    public function invoiceSave($data, $user)    {        $has = $this->invoiceRepository->getOne($data['order_id'], $user);        if ($has) {            return response()->json(['status'=>0,'msg'=>"您已经索取过发票了!"]);        }        if ($data['title'] == 2) {            unset($data['organization']);        }        $order = $this->orderRepository->find($data['order_id']);        $data['order_num'] = $data['order_id'];        $data['oid'] = $order->oid;        $data['uid'] = $user->id;        $order_id = $data['order_id'];        unset($data['order_id']);        if (!$this->invoiceRepository->create($data)) {            return response()->json(['status'=>0,'msg'=>"操作失败!"]);        }        $this->memberLogRepository->createLog($user, 9003, [$order_id]);        return array('status'=>1,'msg'=>'索取发票成功!','data'=>$this->invoiceRepository->getOne($data['order_num'], $user));    }    /**订单取消     * @param $id     * @return \Illuminate\Http\JsonResponse     * @throws \ErrorException     * @throws \Prettus\Validator\Exceptions\ValidatorException     */    public function orderCancel($id, $user)    {        $info = $this->orderRepository->findWhere(['uid'=>$user->id],$id)->first();        if (!$info) {            return response()->json(['status'=>0,'msg'=>'没有找到对应的订单!']);        } elseif ($info->is_pay !=1) {            return response()->json(['status'=>0,'msg'=>'该订单不允许取消!']);        }        if (!$this->orderRepository->update(['is_pay'=>3], $id)) {            return response()->json(['status'=>0,'msg'=>'取消订单失败!']);        }        $this->memberLogRepository->createLog($user, 9004, [$info->oid]);        return response()->json(['status'=>1,'msg'=>'取消订单成功!']);    }    /**     * 电子票据     *///    public function enote($id)//    {//////        $result = [];//        return $result;//    }    /**     * @param PayOrder $payOrder     */    public function updateOrder(PayOrder $payOrder)    {        $trade_no = $payOrder->trade_no;        Order::where(['oid'=>$trade_no])->update(['is_pay'=>2,'payment_time'=>time()]);        $order = Order::where(['oid'=>$trade_no])->first();        $input = json_decode($order->charge);        $resume = Resume::where('id', $input->resume_id)->first();        $uid = $resume->uid;        $TYPE = $input->type;        $member = Member::where('id', $uid)->first();        $uytpe = $member->utype;        $POINTS = MembersPoint::where(['uid'=>$uid, 'utype'=>$uytpe])->first();        if ($order->pay_points > 0) {            $STATUS = $TYPE=='tag' ? '简历标签' : '简历置顶';            if ($POINTS) {                if ($POINTS->points>=$order->pay_points) {                    MembersPoint::where(                        ['uid'=>$uid,'utype'=>$uytpe]                    )->decrement('points', $order->pay_points);                } else {                    MembersPoint::where(                        ['uid'=>$uid,'utype'=>$uytpe]                    )->update(['points'=>0]);                }            }            MembersHandsel::create(                [                    'uid'=>$uid,                    'utype'=>$uytpe,                    'htype'=>'','htype_cn'=>$STATUS.$input->days.'天',                    'operate'=>2,'points'=>$order->pay_points                ]            );        }        if ($TYPE=='tag') {            $categorys = Category::where('id', $input->tagid)->first();            $personal_service_tags = PersonalServiceTag::where('days', $input->days)->first();            $tag_logs = PersonalServiceTagLog::where(['resume_id'=>$input->resume_id,'resume_uid'=>$uid])->first();            if ($tag_logs) {                $dat['days']= $input->days;                $dat['points']= $personal_service_tags->points;                $dat['tag_id']= $input->tagid;                $dat['tag_cn']= $categorys->demand;                $dat['addtime']= time();                $dat['endtime']= strtotime("+".$input->days." day");                PersonalServiceTagLog::where(                    ['resume_id'=>$input->resume_id,'resume_uid'=>$uid]                )->update($dat);            } else {                $dat['resume_id']= $input->resume_id;                $dat['resume_uid']= $uid;                $dat['days']= $input->days;                $dat['points']= $personal_service_tags->points;                $dat['tag_id']= $input->tagid;                $dat['tag_cn']= $categorys->demand;                $dat['addtime']= time();                $dat['endtime']= strtotime("+".$input->days." day");                PersonalServiceTagLog::create($dat);            }        } else {            Resume::where('id', $input->resume_id)->update(['stick'=>1,'stime'=>strtotime("+".$input->days." day")]);            $stick_logs = PersonalServiceStickLog::where(                ['resume_id'=>$input->resume_id,'resume_uid'=>$uid]            )->first();            $personal_service_sticks = PersonalServiceStick::where('days', $input->days)->first();            if ($stick_logs) {                $dat['days']= $input->days;                $dat['points']= $personal_service_sticks->points;                $dat['addtime']= time();                $dat['endtime']= strtotime("+".$input->days." day");                PersonalServiceStickLog::where(                    ['resume_id'=>$input->resume_id,'resume_uid'=>$uid]                )->update($dat);            } else {                $dat['resume_id']= $input->resume_id;                $dat['resume_uid']= $uid;                $dat['days']= $input->days;                $dat['points']= $personal_service_sticks->points;                $dat['addtime']= time();                $dat['endtime']= strtotime("+".$input->days." day");                PersonalServiceStickLog::create($dat);            }        }        return;    }    /**     * @param $user     * @param $order_type     * @param $amount     * @param $pay_amount     * @param $pay_points     * @param $service_name     * @param $payment     * @param $payment_cn     * @param $description     * @param $is_paid     * @param $points     * @param $setmeal     * @param $payment_time     * @param $params     * @param $discount     * @param $notes     * @return Order     */    public function addOrder($user, $order_type, $amount, $pay_amount, $pay_points, $service_name, $payment, $payment_cn, $description, $is_paid, $points, $setmeal, $payment_time, $params,$my_discount="")    {        return $this->orderRepository->addOrder($user, $order_type, $amount, $pay_amount, $pay_points, $service_name, $payment, $payment_cn, $description, $is_paid, $points, $setmeal, $payment_time, $params,$my_discount);    }    /**支付成功后回调此函数,修改各表值,生成记录     * @param PayOrder $payOrder     * @throws \ErrorException     * @throws \Prettus\Validator\Exceptions\ValidatorException     */    public function updateCompany(PayOrder $payOrder)    {        //支付成功后操作== 修改订单表中状态和支付时间        $trade_no = $payOrder->trade_no;        $data = [            'is_pay'=>2,            'payment_time'=>time(),        ];        if ($payOrder->attch) {            $data['notes'] = $payOrder->attch;        }        $this->orderRepository->updateStatus($trade_no, $data);        $order = $this->orderRepository->getOneOder($trade_no);        $params = unserialize($order->params);        $setmeal_id = $params['setmeal_id'];        $id = $params['company_id'];        $utype = $params['utype'];        $username = $params['username'];        $subsite_id = $params['subsite_id'];        $setmealInfo = $this->setmealRepository->find($setmeal_id);        $user =(object)['id'=>$id,'utype'=>$utype,'username'=>$username,'subsite_id'=>$subsite_id];        $this->serviceService->setMembersSetmeal($user, $setmeal_id);        switch ($order->pay_type) {            case 1:                $paytype = '积分兑换';                break;            case 2:                $paytype = '现金';                break;            case 3:                $paytype = '现金+积分';                break;        }        if ($order->pay_type !=1) {            $comInfo = $this->companyRepository->find($id, ['mobile']);            if ($comInfo->mobile) {                $this->smsService->sendSms($comInfo->mobile, Smser::TEMPLATE_SMS_ORDER, ['sitename'=>config('aix.system.site.site.site_name'),'oid'=>$trade_no,'paymenttpye'=>$order->payment_cn,'amount'=>$order->pay_amount,'sitedomain'=>config('aix.system.site.site.site_domain')]);            }        }            }    /**查询订单ID     * @param $tradeNo     * @return \Illuminate\Http\JsonResponse     */    public function getOrderbyTradeNo($tradeNo)    {        $orderInfo = $this->orderRepository->getOneOder($tradeNo);        if ($orderInfo->is_pay != 2) {            return response()->json(['status'=>0]);        }        return response()->json(['status'=>1]);    }    public function pointsSave(PayOrder $payOrder)    {        $trade_no = $payOrder->trade_no;        $this->orderRepository->updateStatus($trade_no, ['is_pay'=>2, 'payment_time'=>time()]);        $order = $this->orderRepository->getOneOder($trade_no);        $user = $this->companyRepository->getCompanyInfo(['id'=>$order->uid]);        if ($user->mobile) {            $this->smsService->sendSms($user->mobile, Smser::TEMPLATE_SMS_ORDER, ['sitename'=>config('aix.system.site.site.site_name'),'oid'=>$trade_no,'paymenttpye'=>$order->payment_cn,'amount'=>$order->pay_amount,'sitedomain'=>config('aix.system.site.site.site_domain')]);        }        $points = $order->amount*config('aix.companyset.points.points_set.payment_rate');        //增加积分记录        $handsel['uid']         = $user->id;        $handsel['utype']       = $user->utype;        $handsel['htype']       = 'cash_buy_points';        $handsel['htype_cn']    = $order->service_name;        $handsel['operate']     = 1;        $handsel['points']      = $points;        $this->memberHandselRepository->create($handsel);        $this->setPointByOrder($order);//更新邓积分    }    //根据传入订单,给积分总量++    public function setPointByOrder(Order $order){        if (empty($order) || empty($order->params)){            throw new \Exception("订单错误!");        }        $pointsArr=unserialize($order->params);        $points=$pointsArr["points"];        $this->memberPointRepository->reportDeal($order->uid,$order->utype,1,$points);    }    /**     * @param PayOrder $payOrder     */    public function incrementSave(PayOrder $payOrder)    {        $trade_no = $payOrder->trade_no;        $data = [            'is_pay'=>2,            'payment_time'=>time(),        ];        if ($payOrder->attch) {            $data['notes'] = $payOrder->attch;        }        $this->orderRepository->updateStatus($trade_no, $data);        $order = $this->orderRepository->getOneOder($trade_no);        $user = $this->companyRepository->getCompanyInfo(['id'=>$order->uid]);        if ($user->mobile) {            $this->smsService->sendSms($user->mobile, Smser::TEMPLATE_SMS_ORDER, ['sitename'=>config('aix.system.site.site.site_name'),'oid'=>$trade_no,'paymenttpye'=>$order->payment_cn,'amount'=>$order->pay_amount,'sitedomain'=>config('aix.system.site.site.site_domain')]);        }        $this->orderPaidResumeIncrement($order, $user);    }    public function orderPaidResumeIncrement($order, $user)    {        //处理支付方式        switch ($order->pay_type) {            case 1:                $paytype = '积分抵扣';                break;            case 2:                $paytype = $order->payment_cn;                break;            case 3:                $paytype = $order->payment_cn.'+积分抵扣';                break;        }        //会员日志 - 添加创建增值服务订单        $this->memberLogRepository->createLog($user, 9001, array($order->oid,$paytype,''));        //如果有积分抵扣 - 修改会员积分信息        if ($order->pay_points > 0) {            $p_rst = $this->memberPointRepository->reportDeal($user->id, $user->utype, 2, $order->pay_points);            if ($p_rst) {                //添加会员积分操作日志                $stime = date('Y-m-d H:i:s', time());                $handsel['uid']         = $user->id;                $handsel['utype']       = $user->utype;                $handsel['htype']       = '';                $handsel['htype_cn']    = $order->service_name;                $handsel['operate']     = 2;                $handsel['points']      = $order->pay_points;                $this->memberHandselRepository->create($handsel);            }        }        //修改会员套餐相关字段        try{            $setmeal_increment =  $this->setmealIncrementsRepository->getIncrementCache('', $order->setmeal);            if ($setmeal_increment->cat == 'auto_refresh_jobs') { //智能刷新                $params = unserialize($order->params);                $days = $params['days'];                $nowtime = time();                for ($i=0; $i < $days*4; $i++) {                    $timespace = 3600*6*$i;                    $this->queueAutoRefreshRepository->create(['uid'=>$user->id,'pid'=>$params['jobs_id'],'type'=>1,'refreshtime'=>$nowtime+$timespace]);                }            } elseif ($setmeal_increment->cat =='sms') { //增加短信                $this->companyRepository->updataSmsNum($user->id, 1, $setmeal_increment->value);                event_search_update(Company::class, (string)$user->id, 'update');            } elseif ($setmeal_increment->cat =='stick' || $setmeal_increment->cat =='emergency') {  //职位置顶和紧急                $params = unserialize($order->params);                $data['jobid'] = $params['jobs_id'];                $data['starttime'] = $params['starttime'];                $data['endtime'] = $params['endtime'];                $data['days'] = $params['days'];                if ($setmeal_increment->cat =='stick') {                    $data['ptype'] = 1;                } else {                    $data['ptype'] = 2;                }                $data['companyid'] = $user->id;                $this->promotionRepository->create($data);                $stickEmergency[$setmeal_increment->cat] = 1;                if ($data['ptype'] == 1) {                    $stickEmergency['deadline'] = $data['starttime'];                }                $this->jobsRepository->update($stickEmergency, $params['jobs_id']);                event_search_update(Jobs::class, (string)$params['jobs_id'], 'update');            } else { //职位、招聘会、简历                if ($setmeal_increment->cat == 'jobs') {                    $setmeal_increment->cat = 'jobs_meanwhile';                }                $this->memberSetmealRepository->incrementData(array('uid'=>$user->id), $setmeal_increment->cat, $setmeal_increment->value);            }        }catch (\Exception $e){        }        $order_type=$order->order_type; //订单类型        $order_params=unserialize($order->params);Log::info($order_params);        Log::info($order_type);        switch ($order_type){            case "12":            case "13":            { //智能刷新                $this->jobsRepository->jobsRefresh($order_params['jobs_id']);                break;            }        }        //会员日志 - 开通服务//        $this->memberLogRepository->createLog($user, 9002, array($order->service_name,$paytype,''));    }    public function orderPaid(PayOrder $payOrder)    {        //修改订单表中状态和支付时间        $trade_no = $payOrder->trade_no;        $this->orderRepository->updateStatus($trade_no, ['is_pay'=>2, 'payment_time'=>time()]);        $order = $this->orderRepository->getOneOder($trade_no);     //获取订单信息        //会员信息        if ($order->utype == 1) {            $user = $this->companyRepository->getCompanyInfo(array('id'=>$order->uid,'utype'=>1));            $email_url = route('com.index');        } else {            $user = $this->memberRepository->getMemberById($order->uid);            $email_url = route('person.index');        }        $email = $user->email;        if ($order->amount && $email && $user->email_audit == 1) {            $emailService = new EmailService;            $emailService->sendMail($email, 'mail_payment', [], ['sitedomain'=>$email_url]);        }        if ($order->order_type == 6) {            $this->orderPaidResumeIncrement($order, $user);        } elseif ($order->order_type == 14) {            $this->orderPaidSingleResumeDownload($order, $user);        }    }    public function orderPaidSingleResumeDownload($order, $user)    {        $params = unserialize($order->params);        $uid = $order->uid;        $deductible = $order->pay_points;        $resume_id = $params['resume_id'];        //有抵扣积分 - 修改会员积分、添加会员积分操作日志        if ($deductible>0) {            $p_rst = $this->memberPointRepository->reportDeal($user->id, $user->utype, 2, $deductible);            if ($p_rst) {                $stime = date('Y-m-d H:i:s', time());                $handsel['uid']         = $user->id;                $handsel['utype']       = $user->utype;                $handsel['htype']       = '';                $handsel['htype_cn']    = $order->service_name;                $handsel['operate']     = 2;                $handsel['points']      = $deductible;                $this->memberHandselRepository->create($handsel);            }        }        //获取企业信息        $company = $this->companyRepository->getCompanyInfo(array('id'=>$user->id));        //循环操作简历 - 添加简历下载记录        $resume_arr = $this->resumeRepository->getResumesWithInfo($resume_id);        if ($resume_arr->toArray()) {            foreach ($resume_arr as $key => $value) {                $addarr = array();                $memberInfo = $value->memberInfos;                $addarr['resume_id'] = $value->id;                if ($memberInfo->display_name == "2") {                    $addarr['resume_name'] = "N" . str_pad($value->id, 7, "0", STR_PAD_LEFT);                } elseif ($memberInfo->display_name == "3") {                    if ($memberInfo->sex == 1) {                        $addarr['resume_name'] = cut_str($memberInfo->realname, 1, 0, "先生");                    } elseif ($memberInfo->sex == 2) {                        $addarr['resume_name'] = cut_str($memberInfo->realname, 1, 0, "女士");                    }                } else {                    $addarr['resume_name'] = $memberInfo->realname;                }                $addarr["resume_uid"]=$value->uid;                $addarr["company_uid"]=$company->id;                $addarr["company_name"]=$company->companyname;                $addarr['down_addtime'] = time();                $addarr['is_reply'] = 0;                $info = $this->companyDownResumeRepository->create($addarr);                $this->membersSetmealLogRepository->createLog($user,"下载了简历【".$addarr['resume_name']."】");            }        }        //添加会员操作日志 - 开通服务        if ($deductible>0) {            $log_payment = $order->payment_cn.'+积分抵扣';        } else {            $log_payment = $order->payment_cn;        }//        $this->memberLogRepository->createLog($user, '9002', array($order->service_name,$log_payment,''));    }    public function incrementTplUpdate(PayOrder $payOrder)    {        $trade_no = $payOrder->trade_no;        $order = Order::where(['oid'=>$trade_no])->first();        $order->is_pay = 2;        $order->payment_time = time();        $order->save();        $input = json_decode($order->charge);        $tpl = Tpl::find($input->project_id);        $points = $input->is_deductible ?  $input->deductible : 0;        CompanyTpl::create(['uid'=>$input->uid,'tplid'=>$input->project_id]);        MembersHandsel::create(            [                'uid'=>$input->uid,                'utype'=>$input->utype,                'htype'=>'increment_tpl',                'htype_cn'=>'购买企业模板:'.$tpl->name,                'operate'=>2,                'points'=>$points            ]        );        if ($points) {                MembersPoint::where(['uid'=>$input->uid,'utype'=>$input->utype])->decrement('points', $points);        }        return;    }        public function incrementPersonTplUpdate(PayOrder $payOrder)    {        $trade_no = $payOrder->trade_no;        $order = Order::where(['oid'=>$trade_no])->first();        $order->is_pay = 2;        $order->payment_time = time();        $order->save();        $input = json_decode($order->charge);        $tpl = Tpl::find($input->tplid);        PersonTpl::create(['uid'=>$input->uid,'tplid'=>$input->tplid]);        MembersHandsel::create(            [                'uid'=>$input->uid,                'utype'=>$input->utype,                'htype'=>'increment_tpl',                'htype_cn'=>'购买简历模板:'.$tpl->name,                'operate'=>2,                'points'=>$input->points,            ]        );        return;    }    public function canselOrder()    {        $order_id = [];        $res = $this->orderRepository->canselOrder();        if($res){            $order_id = array_column($res,'id');        }        return $order_id;    }}
 |