Commit 37406929 by 连敬荣

代码重构

parent 7986dcf2
......@@ -9,6 +9,7 @@ use App\map\QuoteMap;
use App\Model\BestGoodsModel;
use App\Model\InquiryItemsAssignModel;
use App\Model\InquiryItemsModel;
use App\Model\InquiryItemsUrgeModel;
use App\Model\InquiryModel;
use App\Model\LieBrandModel;
use App\Model\QuoteModel;
......@@ -215,8 +216,153 @@ class SearchController extends Controller
}
$data = $list['data'];
if (@$input["is_export"] == 1) { #如果是导出
$data = $this->clearExport($data);
$data = (new InquiryModel())->clearExport($data);
}
return [ApiCode::API_CODE_SUCCESS, '成功', $data, $list['total']];
}
public function getInquiryListPool(Request $request){
$input = $request->input();
$userInfo = $this->user();
ExportLayui($this->getListPool($input,$userInfo));
}
protected function getListPool($input = [],$userInfo)
{
$user_id = @$userInfo["user_id"];
$user_name = @$userInfo["email"];
$rqpConn = DB::connection('rfq');
// type值存在,1-报价管理询价池,2-已领取的询价,3-指定/领取的当前用户最新询价8条,4-指定/领取的当前用户最新催价8条
$type = isset($input['type']) ? $input['type'] : 0;
$list = $rqpConn->table('inquiry as a')->join('inquiry_items as b', 'a.id', '=', 'b.inquiry_id');
if ($type == 1) {
$list = $list->leftJoin('inquiry_items_assign as c', 'b.id', '=', 'c.inquiry_items_id');
} else if ($type == 2) {
$list = $list->join('inquiry_items_assign as c', 'b.id', '=', 'c.inquiry_items_id')->where('c.assign_uid', $user_id);
} else if ($type == 3) {
$list = $list->join('inquiry_items_assign as c', 'b.id', '=', 'c.inquiry_items_id')
->where('c.assign_uid', $user_id)
->where('b.status', 1); // 待报价
} else if ($type == 4) {
$list = $list->join('inquiry_items_assign as c', 'b.id', '=', 'c.inquiry_items_id')
->join('inquiry_items_urge as u', 'b.id', '=', 'u.inquiry_items_id')
->where('c.assign_uid', $user_id);
}
$list = $list->select(DB::Raw("lie_a.inquiry_sn,lie_a.currency,lie_a.status as status_a,lie_a.user_name,lie_a.com_name,lie_a.create_name,lie_a.create_time as inquiry_ctime, lie_a.remark as inquiry_remark, lie_b.*, lie_c.id as c_id, lie_c.assign_type as c_assign_type"))
->where(function ($query) use ($input, $type, $user_id) {
foreach ($input as $k => $v) {
$v = trim($v);
if (empty($v)) {
continue;
}
switch ($k) {
case "inquiry_sn":
$query->where('a.inquiry_sn', '=', $v);
break;
case "goods_name":
case "brand_name":
$query->whereRaw('lie_b.' . $k . ' like "' . $v . '%"');
break;
case "status":
$query->where('b.status', '=', $v);
break;
case "create_uid":
$query->where('a.create_uid', '=', $v);
break;
case "assign_type":
$query->where('c.assign_type', '=', $v);
break;
case "start_time":
$query->where('a.create_time', '>=', strtotime($v));
break;
case "end_time":
$query->where('a.create_time', '<=', strtotime($v) + 86399);
break;
}
}
/**
* 询价池展示条件:
* 1. 询价单启用状态;
* 2. 询价明细需过滤无需报价、已关闭、已确认和被指定的类型
* 3. 询价明细分配表需过滤当前用户或不存在的(未指定或领取的)
*/
if ($type == 1) {
$query->where('a.status', 1)
->whereNotIn('b.status', [-1, 5])
->where('b.assign_type', 2)
->whereRaw('(lie_c.assign_uid != '.$user_id.' or lie_c.assign_uid is NULL)');
// $time = time() - 7200; // 待报价的询价两小时后在询价池展示
// $query->WhereRaw('((lie_c.assign_type=2 and lie_c.assign_uid <> '.$user_id.') or (lie_c.assign_type=1 and lie_b.status=1 and lie_b.create_time < ' . $time . '))');
} else {
$query->whereIn('a.status', [-1, 1]);
}
});
if ($type == 1 || $type == 4) { // 多条重复催价情况下去重
$list = $list->groupBy('b.id');
}
// dump($list->getBindings());
// dump($list->toSql());
// $tmp = str_replace('?', '"'.'%s'.'"', $list->toSql());
// $tmp = vsprintf($tmp, $list->getBindings());
// echo $tmp;
// exit;
$page = isset($input['p']) ? $input['p'] : $input['page'];
$list = $list->orderBy('b.id', 'desc')->paginate(@$input['limit'] ? $input["limit"] : 10, ['*'], 'p', @$page ? $page : 1)->toArray();
if (!$list) return [20001, '没有数据'];
$QuoteModel = new QuoteModel();
$InquiryItemsUrgeModel = new InquiryItemsUrgeModel;
$InquiryItemsAssignModel = new InquiryItemsAssignModel;
foreach ($list['data'] as $k => &$v) {
//报价
$v['status_val'] = InquiryMap::$status[$v["status"]];
if ($v["status_val"] == "已报价") {
$count = $QuoteModel->where('inquiry_items_id', $v['id'])->whereIn("status", QuoteMap::$status_used)->count();
$v['status_val'] = $v['status_val'] . "(" . $count . ")";
}
$v["customer_name"] = $v['com_name'] == "" ? $v['user_name'] : $v['com_name'];
$v['create_time'] = timeToDate($v['create_time']); //创建时间
$currency_sign = InquiryMap::$currency_sign[$v["currency"]];
$v['target_price'] = $currency_sign . $v['target_price']; // 客户目标报价
if ($type == 2) { // 已领取的询价列表
$v['assign_type_val'] = $v['c_assign_type'] == 1 ? '指定' : '领取'; // 指定/领取
$price_field = $v['currency'] == 1 ? 'price_rmb' : 'price_origin';
$quote = $QuoteModel->where(['inquiry_items_id' => $v['id'], 'create_uid' => $user_id])->orderBy('id', 'desc')->first();
// 我的报价
$v['self_quote'] = $quote ? $currency_sign . $quote[$price_field] . '(' . array_get(Config('quote.quote_status'), $quote['status'], '') . ')' : '---';
// 在Redis集合中检查用户是否被催报价
$res = RedisDB::sIsMember('frq_inquiry_items_urge', $v['id'] . '-' . $user_id);
$v["inquiry_sn_origin"] = $v['inquiry_sn'];
if ($res) {
$urge = $InquiryItemsUrgeModel->getLastInfo($v['id']);
$v['inquiry_sn'] = $v['inquiry_sn'] . "<span style='color:#ff0000;'>(催)</span>";
}
}
$v['assign_count'] = $InquiryItemsAssignModel->GetAssignCountByInquiryId($v['id']);
$v['delivery_time'] = $v['delivery_time'] > 6 ? ($v['delivery_time']/7).'周' : $v['delivery_time']."天";
}
return [ApiCode::API_CODE_SUCCESS, '成功', $list['data'], $list['total']];
}
}
\ No newline at end of file
......@@ -8,4 +8,5 @@ Route::Post('/ApiCreateOneItems','DataController@createInquiryItemsDetail');//
Route::Post('/ApiDeleteInquiryItems','DataController@deleteInquiryItemsDetail');//删除询价明细;
Route::Post('/ApiEditInquiry','DataController@creatInquiry');//新增询价;
Route::Post('/ApiUpdateOneItems','DataController@editInquiryItemDetail');//修改单条明细记录;
Route::Get('/ApiInquiryList','SearchController@getInquiryList');//询价列表;
\ No newline at end of file
Route::Get('/ApiInquiryList','SearchController@getInquiryList');//询价列表;
Route::Post('/ApiInquiryListPool','SearchController@getInquiryListPool');//询价池;
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment