123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198 |
- <?php
- /**
- * Created by PhpStorm.
- * User: hp
- * Date: 2017/11/22
- * Time: 11:36
- */
- namespace App\Http\Controllers\Channel\SendOrder;
- use App\Http\Controllers\Channel\BaseController;
- use App\Modules\Book\Models\BookConfig;
- use App\Modules\Book\Services\BookConfigService;
- use App\Modules\Book\Services\BookSubscribleChapterService;
- use App\Modules\Book\Services\ChapterService;
- use App\Modules\SendOrder\Services\SendOrderService;
- use Hashids;
- use Illuminate\Http\Request;
- use PhpOffice\PhpSpreadsheet\IOFactory;
- use DB;
- class SendOrderBatchHandleController extends BaseController
- {
- /**
- * @apiDefine sendOrder 派单
- */
- public function downloadTemplate(Request $request) {
- $bids = $request->input('bids',[]);
- if(!$bids) {
- return response()->error('PARAM_EMPTY');
- }
- if(!is_array($bids)) {
- return response()->error('PARAM_ERROR');
- };
- foreach ($bids as $key=>$bid) {
- $bids[$key] = Hashids::decode($bid)[0];
- }
- $header = ['书本编号','派单渠道名称','成本', '书名','阅读章节原文','派单类型','推广类型'];
- $books = BookConfig::leftjoin('books','books.id','=','book_configs.bid')
- ->leftjoin('chapters','chapters.id','=','book_configs.recommend_cid')
- ->select(['books.id as bid','book_configs.book_name','chapters.sequence'])
- ->whereIn('book_configs.bid',$bids)
- ->get();
- $data = array();
- foreach ($books as $book) {
- $data[] = array(
- Hashids::encode($book->bid),
- '','',
- $book->book_name,
- $book->sequence,
- 1,
- 1
- );
- }
- saveExcelData($header,$data,'',[
- ['cell'=>'I2','contents'=>'1、推广类型一栏请填写1或者2 ,1代表微信,2代表站外'],
- ['cell'=>'I3','contents'=>'2、派单类型一栏请填写1或者2 ,1代表内部,2代表外部'],
- ['cell'=>'I4','contents'=>'3、阅读章节原文默认为推荐章节,原文链接为当前章节'],
- ['cell'=>'I5','contents'=>'4、同一书本编号可产生多条记录,上传后一条记录对应产生一条派单链接'],
- ]);
- }
- public function importSendOrders(Request $request) {
- if(!$request->hasFile('send_orders')) {
- return response()->error('PARAM_ERROR');
- }
- $file_obj = $request->file('send_orders');
- $spreadsheet = IOFactory::load($file_obj->path());
- $sheetData = $spreadsheet->getActiveSheet(0)->toArray(null, true, true, true);
- //\Log::info('sheetData:'.json_encode($sheetData));
- $sheetDataLength = count($sheetData);
- $distribution_channel_id = $this->getChannelId();
- DB::beginTransaction();
- try{
- for($i=2;$i<=$sheetDataLength;$i++) {
- $chapter_sequnce = $sheetData[$i]['E'];
- $book_id = $sheetData[$i]['A'];
- \Log::info('book_id'.$book_id);
- if($book_id){
- $bid = Hashids::decode($book_id)[0];
- if($bid==2423 && time() >= strtotime('2018-10-10 00:00:00') && time() <= strtotime('2018-10-15 23:59:59')) {
- DB::rollback();
- return response()->error('UPLOAD_FAILED');
- //return response()->error('PARAM_ERROR');
- }
- $chapter_info = ChapterService::getChapterInfoByBidAndSeq($bid,$chapter_sequnce);
- $chapter_id = $chapter_info->id;
- $book_info = BookConfig::getBookById($bid);
- $subscribe_chapter_seq =$this->getSubscribeChapterNum($book_info,$distribution_channel_id);
- $subscribe_chapter_info = ChapterService::getChapterInfoByBidAndSeq($bid,$subscribe_chapter_seq);
- $name = $sheetData[$i]['B'];
- $cost = $sheetData[$i]['C']?$sheetData[$i]['C']:0;
- $book_name = $sheetData[$i]['D'];
- $qr_code_id = '';
- $chapter_name = $chapter_info?$chapter_info->name:'';
- $channel_type = '';
- $promotion_type = $sheetData[$i]['F']==1?'INTERNAL':'EXTERNAL';
- $subscribe_chapter_id = $subscribe_chapter_info ? $subscribe_chapter_info->id : '';
- //$subscribe_chapter_seq = $book_info->force_subscribe_chapter_seq ? $book_info->force_subscribe_chapter_seq : '';
- $subscribe_chapter_name = $subscribe_chapter_info ? $subscribe_chapter_info->name : '';
- $promotion_point = $sheetData[$i]['G']==1?1:2;
- if (!in_array($promotion_point, [1, 2])) {
- $promotion_point = 1;
- }
- //if (!$name || !$channel_type || !$promotion_type || !$book_id || !$book_name || !$chapter_id || !$chapter_name || !$subscribe_chapter_id || !$subscribe_chapter_seq || !$subscribe_chapter_name) return response()->error('PARAM_EMPTY');
- if (empty($qr_code_id)) {
- $qr_code_id = 0;
- }
- $redirect_url = "/reader?bid={$book_id}&cid={$chapter_info->id}";
- $book_id = Hashids::decode($book_id)[0];
- if ($promotion_point == 2) {
- $domain = 'chunnuan555.com';
- } else {
- $domain = $this->getDomainByBid($book_id);
- }
- $charge_type = $this->getBookChargeTypeByBid($book_id);
- $sendOrder = SendOrderService::createFromDirectory(compact(
- 'name',
- 'channel_type',
- 'promotion_type',
- 'charge_type',
- 'cost',
- 'domain',
- 'book_id',
- 'qr_code_id',
- 'book_name',
- 'chapter_id',
- 'subscribe_chapter_id',
- 'subscribe_chapter_name',
- 'subscribe_chapter_seq',
- 'chapter_name',
- 'distribution_channel_id',
- 'redirect_url',
- 'promotion_point'
- ));
- // $promotion_url = '/yun/' . $sendOrder->id;
- if ($promotion_point == 2) {
- $promotion_url = 'https://bsite' . encodeDistributionChannelId($distribution_channel_id) . '.chunnuan555.com/yun/' . $sendOrder->id;
- } else {
- $promotion_url = 'https://site' . encodeDistributionChannelId($distribution_channel_id) . '.' . $this->getDomainByBid($book_id) . '/yun/' . $sendOrder->id;
- }
- }
- }
- }catch (\Exception $e) {
- DB::rollback();
- \Log::error($e->getMessage());
- return response()->error('UPLOAD_FAILED',$e->getMessage());
- }
- DB::commit();
- return response()->success();
- }
- /**
- * 根据图书id获取域名
- * @param $bid
- */
- function getDomainByBid($bid = '')
- {
- $domain = 'chunnuan555.com';
- return $domain;
- }
- /**
- * 根据图书id获取图书的收费类型
- * @param string $bid
- */
- function getBookChargeTypeByBid($bid = '')
- {
- $charge_type = '';
- $bookConfig = BookConfigService::getBookById($bid);
- if ($bookConfig) {
- $charge_type = $bookConfig->charge_type;
- }
- return $charge_type;
- }
- protected function getSubscribeChapterNum($book,$distribution_channel_id)
- {
- //渠道设置的强关
- $subscribe = BookSubscribleChapterService::getSubcribleChapter($book->bid, $distribution_channel_id);
- if ($subscribe) {
- return (isset($subscribe->subscribe_chapter_id) && $subscribe->subscribe_chapter_id > 0) ? $subscribe->subscribe_chapter_id : $book->force_subscribe_chapter_seq;
- }
- //默认强关
- return $book->force_subscribe_chapter_seq;
- }
- }
|