Commit ba040fc9 by 连敬荣

报价代码重构

parent 6cfb0f3a
......@@ -353,169 +353,54 @@ class DataController extends Controller
exit();
}
}
public function getList($input = [],$export = 0)
{
$user_id = @$input["user_id"];
$user_name = @$input["user_name"];
public function takeInquiry(Request $request){
$input = $request->input();
$userInfo = $this ->user();
$input['user_id'] = $userInfo['user_id'];//赋值用户信息
$input['user_name'] = $userInfo['user_name'];
$input['email'] = $userInfo['email'];
$id = $input['id'];
$rqpConn = DB::connection('rfq');
$list = $rqpConn->table('inquiry as a')
->join('inquiry_items as b', 'a.id', '=', 'b.inquiry_id')
->select(DB::Raw("lie_a.inquiry_sn,lie_a.currency,lie_a.status as status_a,lie_a.user_name,lie_a.create_name,lie_b.*"))
->where(function ($query) use ($input) {
if (@$input["types"] == 5){
$query->where('a.status', 0);
}else{
$query->whereIn('a.status', [-1,1]);
}
foreach ($input as $k => $v) {
$v = trim($v);
if (empty($v)) {
continue;
}
switch ($k) {
case "inquiry_sn":
$query->whereRaw('lie_a.'.$k.' like "%' . $v . '%" ');
break;
case "inquiry_id":
$query->where('a.id', '=', $v);
break;
case "goods_name":
case "brand_name":
$query->whereRaw('lie_b.'.$k.' like "%' . $v . '%" ');
break;
case "customer_name":
$query->whereRaw('lie_a.user_name like "' . $v . '%" ');
break;
case "status":
$query->whereRaw('lie_b.status in ('.rtrim($v,",").')');
break;
case "create_uid":
$query->where('a.create_uid', '=', $v);
break;
case "assign_type":
$query->where('b.assign_type', '=', $v);
break;
case "start_time":
$query->where('b.create_time', '>=', strtotime($v));
break;
case "end_time":
$query->where('b.create_time', '<=', strtotime($v) );
break;
}
}
});
#不同类别查询
switch (@$input["types"]) {
case "1": //我的询价
$list = $list->where('a.create_uid', $user_id);
break;
case "2": //我的已关闭询价
$list = $list->where('a.create_uid', $user_id)->where("b.status", -1);
case "3": //所有询价
$perm = new PermController;
$role = $perm->getUserRole($user_id, $user_name); // 用户角色
switch ($role) {
case 2: // 销售查看下级
$sub_sale_ids = $perm->getSubSaleId($user_id);
$list = $list->whereIn('a.create_uid', $sub_sale_ids)->whereIn('a.status', [-1, 1]);
break;
case 3: // 销售查看自己
$list = $list->where('a.create_uid', $user_id)->whereIn('a.status', [-1, 1]);
break;
}
break;
}
$page = isset($input['p']) ? $input['p'] : $input['page'];
#排序
if (@$input["inquiry_number_sort"]){
$list = $list->orderBy('b.inquiry_number', $input["inquiry_number_sort"]);
}else if (@$input["create_time_sort"]){
$list = $list->orderBy('b.create_time', $input["create_time_sort"]);
}else{
$list = $list->orderBy('b.id', "desc");
}
$list = $list->paginate(@$input['limit'] ? $input["limit"] : 10, ['*'], 'p', @$page ? $page : 1)->toArray();
if (!$list) return [20001, '没有数据'];
$QuoteModel = new QuoteModel();
$InquiryItemsAssignModel = new InquiryItemsAssignModel();
if (!$id){
Export (ApiCode::API_CODE_PARAM_REQUIRED, '参数缺失');exit();
}
$BestGoodsModel = new BestGoodsModel();
try {
// $this->where('id', $id)->update(['assign_type' => 2]);
$Redis = \RedisDB::connection();
foreach ($list['data'] as $k => &$v) {
$inquiry_items_id = $v["id"]; #明细id
//报价
$v['status_val'] = InquiryMap::$status[$v["status"]];
if ($v["status_val"] == "已报价") {
$count = $QuoteModel->where("inquiry_items_id", $inquiry_items_id)->whereIn("status", QuoteMap::$status_used)->count();
$v['status_val'] = $v['status_val'] . "(" . $count . ")";
}
$InquiryItemsAssignModel = new InquiryItemsAssignModel;
$v['create_time'] = timeToDate($v['create_time']); //创建时间
$map = [];
$map['inquiry_items_id'] = $id;
$map['assign_uid'] = $input['user_id'];
$map['assign_type'] = 2;
$v["customer_name"] = $v['user_name'] ;
$res = $InquiryItemsAssignModel->where($map)->value('id');
if ($res) Export (ApiCode::API_CODE_INQUIRY_HAS_BEEN_TAKEN, '该询价已领取');
#目标价
if (@$input["types"] != 5){
$v['target_price'] = InquiryMap::$currency_sign[$v["currency"]] . $v['target_price']."\t"; // 客户目标报价
}
$InquiryItemsAssignModel->assign($id, $input['user_id']);
#交货日期
$v['delivery_time'] = $v['delivery_time'] > 6 ? ($v['delivery_time']/7).'周' : $v['delivery_time']."天";
#查询所有报价
$v['quote_price'] = "--";
$quote = $QuoteModel->select("status","currency","price_origin","price_rmb")
->where("inquiry_items_id", $v["id"])
->whereIn("status", QuoteMap::$status_used)
->orderby("status","desc")
->orderby("price_rmb","asc")
->first();
if ($quote){
$b = $quote->toArray();
$lowerPrice = $b["currency"] == 1 ? "¥".$b["price_rmb"]:InquiryMap::$currency_sign[$b["currency"]].$b["price_origin"];
$v["quote_price"] = $lowerPrice;
}
// 添加操作日志
$inquiry_items = $this->find($id);
#查询指定采购
$v["assign_name"] = "";
if ($v["assign_type"] == 1){
$assign = $InquiryItemsAssignModel->select(DB::Raw("GROUP_CONCAT(assign_name) assign_name"))->where("inquiry_items_id",$inquiry_items_id)->first();
if ($assign){
$v["assign_name"] = $assign->assign_name;
// 检查询价单状态,如果状态为默认的 待报价 状态,那么更改为 已领取状态
if ($inquiry_items['status'] == InquiryMap::status_ready){
$this->where('id', $id)->update(['status' => InquiryMap::status_fix]);
}
}
$v['inquiry_sn_origin'] = $v["inquiry_sn"];
// 查询历史报价数
$v['history_quote_count'] = $QuoteModel->GetHistoryQuotedCount($v['goods_name']);
// 查询优选匹配数
$v['best_count'] = $BestGoodsModel->getCountByWhere([["goods_name", '=', $v['goods_name']], ["g_status", '=', BestGoodsModel::STATUS_ENABLE]]);
$data = [];
$data['types'] = 1;
$data['relation_id'] = $id;
$data['content'] = '领取询价,商品名称:'.$inquiry_items['goods_name'];
$data['create_uid'] = $input['user_id'];
$data['create_name'] = $input['user_name'];
// 在Redis集合中检查是否有新的报价
if ($export == 0){
$res = $Redis->SISMEMBER('frq_quote_urge', $v['id']);
if ($res) {
$v['inquiry_sn'] = $v['inquiry_sn'] . "<span style='color:#f2f2f2;'>&nbsp;*</span>";
}
\App\Model\OpLogModel::log($data);
} catch (Exception $e) {
Export (ApiCode::API_CODE_TAKE_INQUIRY_ERROR, $e->getMessage());
}
$v['is_quote_val'] = $v['is_quote'] == 1 ? '是' : '否';
}
$data = $list['data'];
if (@$input["is_export"] == 1) { #如果是导出
$data = $this->clearExport($data);
}
return [0, '成功', $data, $list['total']];
Export (ApiCode::API_CODE_SUCCESS, '领取成功,请及时报价');
}
}
......@@ -17,6 +17,7 @@ use App\Model\LieBrandModel;
use App\Model\QuoteModel;
use Illuminate\Http\Request;
use DB;
use RedisDB;
class SearchController extends Controller
{
......@@ -477,6 +478,7 @@ class SearchController extends Controller
}
ExportLayui ($list);
exit();
} else {
$list = $list->paginate($limit, ['*'], 'page', $page)->toArray();
$list['data'] = $quoteModel->handleData($list['data'], $type);
......@@ -517,6 +519,7 @@ class SearchController extends Controller
// return [0, '获取成功', $list['data'], $list['total']];
ExportLayui ([ApiCode::API_CODE_SUCCESS, $msg, $list['data'], $list['total']]);
exit();
}
}
}
\ No newline at end of file
......@@ -14,4 +14,10 @@ interface ApiCode
const API_CODE_DATA_EMPTY = 1003;//数据为空
const API_CODE_NODATA = 20001;//没有数据
const API_CODE_PARAM_REQUIRED = -1;//参数缺失
const API_CODE_INQUIRY_HAS_BEEN_TAKEN = -1;//询价已被领取
const API_CODE_TAKE_INQUIRY_ERROR = -1;//领取询价失败
}
\ No newline at end of file
......@@ -10,4 +10,5 @@ Route::Post('/ApiEditInquiry','DataController@creatInquiry');//新增询价;
Route::Post('/ApiUpdateOneItems','DataController@editInquiryItemDetail');//修改单条明细记录;
Route::Get('/ApiInquiryList','SearchController@getInquiryList');//询价列表;
Route::Post('/ApiInquiryListPool','SearchController@getInquiryListPool');//询价池;
Route::Post('/ApiQuoteList','SearchController@getQuoteList');//报价列表;
\ No newline at end of file
Route::Post('/ApiQuoteList','SearchController@getQuoteList');//报价列表;
Route::Post('/api/ApiTakeInquiry','DataController@takeInquiry');//领取询价;
\ 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