|
@@ -722,6 +722,10 @@ class Sale extends BaseController
|
|
|
$feedbackid = Db::name("project_plan_rela")->where(["planNo"=>$planNo,"is_del"=>0])->column("feedback_id");
|
|
|
if($feedbackid==false){
|
|
|
return error_show(1004,"未找到方案反馈信息");
|
|
|
+ }
|
|
|
+ $project = Db::name("project")->where(["projectNo"=>$plan['projectNo'],"is_del"=>0])->find();
|
|
|
+ if($project==false){
|
|
|
+ return error_show(1004,"未找到方案信息");
|
|
|
}
|
|
|
$arrtime=isset($this->post['arrtime'])&&$this->post['arrtime']!="" ?$this->post['arrtime']:"";
|
|
|
if($arrtime==""){
|
|
@@ -731,24 +735,379 @@ class Sale extends BaseController
|
|
|
if($planinfo==""){
|
|
|
return error_show(1002, "参数planinfo不能为空");
|
|
|
}
|
|
|
-
|
|
|
- foreach ($planinfo as $value){
|
|
|
- $feedback = Db::name("project_plan")->where(["pgNo"=>$value['pgNo'],"projectNo"=>$plan['project'],"is_del"=>0])->find();
|
|
|
- if($feedback==false){
|
|
|
- return error_show(1002, "反馈数据未找到");
|
|
|
- }
|
|
|
- if($feedback['data_source']==1){
|
|
|
- $feed=$this->project_good($feedback);
|
|
|
+ $token=isset($this->post['token'])&&$this->post['token']!=""? trim($this->post['token']):"";
|
|
|
+ if($token==""){
|
|
|
+ return error_show(102, "参数token不能为空");
|
|
|
+ }
|
|
|
+ $apply_id = GetUserInfo($token);
|
|
|
+ if (empty($apply_id) || $apply_id['code'] != 0) {
|
|
|
+ return error_show(102, "申请人数据不存在");
|
|
|
+ }
|
|
|
+ $rm = isset($apply_id["data"]['id']) ? $apply_id["data"]['id'] : "";
|
|
|
+ $ri = isset($apply_id["data"]['nickname']) ? $apply_id["data"]['nickname'] : "";
|
|
|
+ Db::startTrans();
|
|
|
+ try {
|
|
|
+ foreach ($planinfo as $value){
|
|
|
+ $good=[];
|
|
|
+ $feedback = Db::name("project_feedback")->where(["pgNo"=>$value['pgNo'],"projectNo"=>$plan['projectNo'], "is_del"=>0])->find();
|
|
|
+ if($feedback==false){
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1002, "反馈数据未找到");
|
|
|
+ }
|
|
|
+ $good['spuCode'] = $feedback['spuCode'];
|
|
|
+ $good['skuCode'] = $feedback['skuCode'];
|
|
|
+ $good['good_num'] = $value['good_num'];
|
|
|
+ $good['sendtype'] = $value['sendtype'];
|
|
|
+ $good['sale_price']=$feedback['sale_price'];
|
|
|
+ $good['companyNo']=$project['companyNo'];
|
|
|
+ $good['customerNo']=$project['khNo'];
|
|
|
+ $good['pgNo']=$feedback['pgNo'];
|
|
|
+ $good['arrtime']=$arrtime;
|
|
|
+ $good['apply_id']=$rm;
|
|
|
+ $good['apply_name']=$ri;
|
|
|
+ $good['sendtype']=$value['sendtype'];
|
|
|
+
|
|
|
+ if($value['sendtype']==1){
|
|
|
+ if(!isset($value['addrlist'])||empty($value['addrlist'])){
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1002, "订单地址不能为空");
|
|
|
+ }
|
|
|
+ $good['addrlist'] = $value['addrlist'];
|
|
|
+ }
|
|
|
+ if($feedback['data_source']==1){
|
|
|
+ $feed=$this->project_good($good);
|
|
|
+ }else{
|
|
|
+ $feed=$this->project_zx($good);
|
|
|
+ }
|
|
|
if($feed==false){
|
|
|
+ Db::rollback();
|
|
|
return error_show(1002, "咨询订单生成失败");
|
|
|
}
|
|
|
+ $feedback['status']=2;
|
|
|
+ $feedback['updatetime']=date("Y-m-d H:i:s");
|
|
|
+ $fed =Db::name("project_feedback")->save($feedback);
|
|
|
+ if($fed==false){
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1002, "项目订单生成失败");
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
+ Db::commit();
|
|
|
+ return app_show(0, "咨询订单生成成功");
|
|
|
+ }catch (\Exception $e){
|
|
|
+ Db::rollback();
|
|
|
+ return error_show(1002, $e->getMessage());
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|
|
|
- public function project_zx($data){}
|
|
|
- public function project_good($data){}
|
|
|
+ public function project_zx($data){
|
|
|
+ $goodinfo = Db::name("consult_bids")->where(["spuCode"=>$data['spuCode'],"is_del"=>0])->find();
|
|
|
+ if($goodinfo==false){
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ $orderCode=makeNo("QR");
|
|
|
+ $cgd=[
|
|
|
+ "supplierNo"=>$goodinfo['supplierNo'],
|
|
|
+ "companyNo"=>$data['companyNo'],
|
|
|
+ "spuCode"=>$data['spuCode'],
|
|
|
+ "skuCode"=>"",
|
|
|
+ "orderCode"=>$orderCode,
|
|
|
+ "good_name"=>$goodinfo['good_name'],
|
|
|
+ "sale_price"=>$data['sale_price'],
|
|
|
+ "total_fee"=>$goodinfo['total_fee'],
|
|
|
+ "pakge_fee"=>$goodinfo['pakge_fee'],
|
|
|
+ "cert_fee"=>$goodinfo['cert_fee'],
|
|
|
+ "open_fee"=>$goodinfo['open_fee'],
|
|
|
+ "cost_fee"=>$goodinfo['cost_fee'],
|
|
|
+ "mark_fee"=>$goodinfo['mark_fee'],
|
|
|
+ "demo_fee"=>$goodinfo['demo_fee'],
|
|
|
+ "good_num"=>$data['good_num'],
|
|
|
+ "good_type"=>1,
|
|
|
+ "order_type"=>4,
|
|
|
+ ];
|
|
|
+ $datas=[
|
|
|
+ "orderCode"=>$orderCode,
|
|
|
+ "good_code"=>$data['spuCode'],
|
|
|
+ "skuCode"=>"",
|
|
|
+ "customer_code"=>$data['khNo'],
|
|
|
+ "good_name"=>isset($goodinfo['good_name'])&&$goodinfo['good_name']!==''?$goodinfo['good_name']:'',
|
|
|
+ "good_num"=>$data['good_num'],
|
|
|
+ "cat_id"=>$goodinfo['cat_id'],
|
|
|
+ "apply_id"=>$data['rm'],
|
|
|
+ "apply_name"=>$data['ri'],
|
|
|
+ "origin_price"=>$goodinfo['nake_fee'],
|
|
|
+ "sale_price"=>$data['sale_price'],
|
|
|
+ "post_fee"=>0,
|
|
|
+ "status"=>0,
|
|
|
+ "send_num"=>0,
|
|
|
+ "wsend_num"=>$data['good_num'],
|
|
|
+ "send_status"=>1,
|
|
|
+ "good_type"=>1,
|
|
|
+ "send_type"=>$data['sendtype'],
|
|
|
+ "supplierNo"=>$data['companyNo'],
|
|
|
+ "is_del"=>0,
|
|
|
+ "zxNo"=>$data["pgNo"],
|
|
|
+ "platform_order"=>"",
|
|
|
+ "platform_id"=>0,
|
|
|
+ "remark"=>"",
|
|
|
+ "is_stock"=>$goodinfo['is_stock'],
|
|
|
+ "is_activity"=>0,
|
|
|
+ "proof_id"=>0,
|
|
|
+ "order_type"=>4,
|
|
|
+ "addtime"=>date("Y-m-d H:i:s"),
|
|
|
+ "updatetime"=>date("Y-m-d H:i:s"),
|
|
|
+ 'total_price'=>round($data['sale_price']*$data['good_num'],2),
|
|
|
+ ];
|
|
|
+ $datainfo = Db::name('sale')->insert($datas, true);
|
|
|
+ if($datainfo>0){
|
|
|
+ $bol = $this->createCgd($cgd);
|
|
|
+ if ($bol == false) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ $goodinfo['status']=6;
|
|
|
+ $goodinfo['updatetime']=date("Y-m-d H:i:s");
|
|
|
+ $sa=Db::name("consult_bids")->save($goodinfo);
|
|
|
+ if($sa==false){
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if ($data['sendtype']==1&&!empty($data['addrlist'])) {
|
|
|
+ $order = Db::name("order_num")->where(["orderCode" => $orderCode, "status" => 1])->where([["wsend_num", ">=", 0]])
|
|
|
+ ->find();
|
|
|
+ if ($order == false) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ foreach ($data['addrlist'] as $value) {
|
|
|
+ $temp = [];
|
|
|
+ $addrs = [];
|
|
|
+ if ($value['addr_code'] !== '' && is_array($value['addr_code'])) {
|
|
|
+ $addrs['provice_code'] = $value['addr_code'][0];
|
|
|
+ $addrs['city_code'] = $value['addr_code'][1];
|
|
|
+ $addrs['area_code'] = $value['addr_code'][2];
|
|
|
+ $addr = json_encode($addrs);
|
|
|
+ } else {
|
|
|
+ $addr = isset($value['addr_code']) ? $value['addr_code'] : '';
|
|
|
+ }
|
|
|
+ $temp['orderCode'] = $orderCode;
|
|
|
+ $temp['contactor'] = $value['contactor'];
|
|
|
+ $temp['mobile'] = $value['mobile'];
|
|
|
+ $temp['addr'] = $value['addr'];
|
|
|
+ $temp['addr_code'] = $addr;
|
|
|
+ $temp['customer_code'] = $data['khNo'];
|
|
|
+ $temp['receipt_quantity'] = $value['receipt_quantity'];
|
|
|
+ $temp['post_fee'] = 0;
|
|
|
+ $temp['is_del'] = 0;
|
|
|
+ $temp['addtime'] = date("Y-m-d H:i:s");
|
|
|
+ $temp['updatetime'] = date("Y-m-d H:i:s");
|
|
|
+ $temp['arrive_time'] = $data['arrtime'];
|
|
|
+ $vmp = Db::name('order_addr')->insert($temp, true);
|
|
|
+ if ($vmp > 0) {
|
|
|
+ $outCode = makeNo("CK");
|
|
|
+ $out = [
|
|
|
+ "orderCode" => $orderCode,
|
|
|
+ "outCode" => $outCode,
|
|
|
+ "apply_id"=>$data['rm'],
|
|
|
+ "apply_name"=>$data['ri'],
|
|
|
+ "addrid" => $vmp,
|
|
|
+ "post_name" => "",
|
|
|
+ "post_code" => "",
|
|
|
+ "post_fee" => 0,
|
|
|
+ "sendtime" => date("Y-m-d H:i:s"),
|
|
|
+ "send_num" => $value['receipt_quantity'],
|
|
|
+ "check_num" => 0,
|
|
|
+ "error_num" => 0,
|
|
|
+ "wsm_code" => "",
|
|
|
+ "order_type" => 4,
|
|
|
+ "status" => 0,
|
|
|
+ "addtime" => date("Y-m-d H:i:s"),
|
|
|
+ "updatetime" => date("Y-m-d H:i:s")
|
|
|
+ ];
|
|
|
+ $ou = Db::name("order_out")->insert($out);
|
|
|
+ if ($ou == false) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ $order['send_num'] += $value['receipt_quantity'];
|
|
|
+ $order['wsend_num'] -= $value['receipt_quantity'];
|
|
|
+ if ($order['wsend_num'] < 0) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ $ups = Db::name("order_num")->save($order);
|
|
|
+ if ($ups) {
|
|
|
+ $tep = [
|
|
|
+ "cgdNo" => $order['cgdNo'],
|
|
|
+ "outCode" => $outCode,
|
|
|
+ "send_num" => $value['receipt_quantity'],
|
|
|
+ "status" => 1,
|
|
|
+ "addtime" => date("Y-m-d H:i:s"),
|
|
|
+ "updatetime" => date("Y-m-d H:i:s")
|
|
|
+ ];
|
|
|
+ $sen = Db::name("order_send")->save($tep);
|
|
|
+ if ($sen == false) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ public function project_good($data){
|
|
|
+ $good=Db::name('good')->alias("a")->leftJoin("good_platform b","a.spuCode=b.spuCode")->where(["b
|
|
|
+ .skuCode"=>$data['skuCode'],"a.is_del"=>0,"b.is_del"=>0])->find();
|
|
|
+ if($good==false){
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ $orderCode=makeNo("QR");
|
|
|
+ $datas=[
|
|
|
+ "orderCode"=>$orderCode,
|
|
|
+ "good_code"=>$data['spuCode'],
|
|
|
+ "skuCode"=>$data['skuCode'],
|
|
|
+ "customer_code"=>$data['khNo'],
|
|
|
+ "good_name"=>isset($good['good_name'])&&$good['good_name']!==''?$good['good_name']:'',
|
|
|
+ "good_num"=>$data['good_num'],
|
|
|
+ "cat_id"=>$good['cat_id'],
|
|
|
+ "apply_id"=>$data['rm'],
|
|
|
+ "apply_name"=>$data['ri'],
|
|
|
+ "origin_price"=>$good['nake_fee'],
|
|
|
+ "sale_price"=>$data['sale_price'],
|
|
|
+ "post_fee"=>0,
|
|
|
+ "status"=>0,
|
|
|
+ "send_num"=>0,
|
|
|
+ "wsend_num"=>$data['good_num'],
|
|
|
+ "send_status"=>1,
|
|
|
+ "good_type"=>1,
|
|
|
+ "send_type"=>$data['sendtype'],
|
|
|
+ "supplierNo"=>$data['companyNo'],
|
|
|
+ "is_del"=>0,
|
|
|
+ "zxNo"=>$data["pgNo"],
|
|
|
+ "platform_order"=>"",
|
|
|
+ "platform_id"=>0,
|
|
|
+ "remark"=>"",
|
|
|
+ "is_stock"=>$good['is_stock'],
|
|
|
+ "is_activity"=>0,
|
|
|
+ "proof_id"=>0,
|
|
|
+ "order_type"=>$good['is_stock']==1?2:4,
|
|
|
+ "addtime"=>date("Y-m-d H:i:s"),
|
|
|
+ "updatetime"=>date("Y-m-d H:i:s"),
|
|
|
+ 'total_price'=>round($data['sale_price']*$data['good_num'],2),
|
|
|
+ ];
|
|
|
+ $datainfo = Db::name('sale')->insert($datas, true);
|
|
|
+ if($datainfo>0) {
|
|
|
+ $cgd=[
|
|
|
+ "supplierNo"=>$good['supplierNo'],
|
|
|
+ "companyNo"=>$data['companyNo'],
|
|
|
+ "orderCode"=>$orderCode,
|
|
|
+ "spuCode"=>$good['spuCode'],
|
|
|
+ "skuCode"=>$good['skuCode'],
|
|
|
+ "good_name"=>$good['good_name'],
|
|
|
+ "sale_price"=>$good['sale_price'],
|
|
|
+ "total_fee"=>$good['total_fee'],
|
|
|
+ "pakge_fee"=>$good['packing_fee'],
|
|
|
+ "cert_fee"=>$good['cert_fee'],
|
|
|
+ "open_fee"=>$good['open_fee'],
|
|
|
+ "cost_fee"=>$good['cost_fee'],
|
|
|
+ "mark_fee"=>$good['mark_fee'],
|
|
|
+ "demo_fee"=>$good['demo_fee'],
|
|
|
+ "good_num"=>$data['good_num'],
|
|
|
+ "good_type"=>1,
|
|
|
+ "order_type"=>2,
|
|
|
+ ];
|
|
|
+ if($good['is_stock']==0) {
|
|
|
+ $bol = $this->createCgd($cgd);
|
|
|
+ if ($bol == false) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if ($data['sendtype']==1&&!empty($data['addrlist'])) {
|
|
|
+ $order = Db::name("order_num")->where(["orderCode" => $orderCode, "status" => 1])->where([["wsend_num", ">=", 0]])
|
|
|
+ ->find();
|
|
|
+ if ($order == false) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ foreach ($data['addrlist'] as $value) {
|
|
|
+ $temp = [];
|
|
|
+ $addrs = [];
|
|
|
+ if ($value['addr_code'] !== '' && is_array($value['addr_code'])) {
|
|
|
+ $addrs['provice_code'] = $value['addr_code'][0];
|
|
|
+ $addrs['city_code'] = $value['addr_code'][1];
|
|
|
+ $addrs['area_code'] = $value['addr_code'][2];
|
|
|
+ $addr = json_encode($addrs);
|
|
|
+ } else {
|
|
|
+ $addr = isset($value['addr_code']) ? $value['addr_code'] : '';
|
|
|
+ }
|
|
|
+ $temp['orderCode'] = $orderCode;
|
|
|
+ $temp['contactor'] = $value['contactor'];
|
|
|
+ $temp['mobile'] = $value['mobile'];
|
|
|
+ $temp['addr'] = $value['addr'];
|
|
|
+ $temp['addr_code'] = $addr;
|
|
|
+ $temp['customer_code'] = $data['khNo'];
|
|
|
+ $temp['receipt_quantity'] = $value['receipt_quantity'];
|
|
|
+ $temp['post_fee'] = 0;
|
|
|
+ $temp['is_del'] = 0;
|
|
|
+ $temp['addtime'] = date("Y-m-d H:i:s");
|
|
|
+ $temp['updatetime'] = date("Y-m-d H:i:s");
|
|
|
+ $temp['arrive_time'] = $data['arrtime'];
|
|
|
+ $vmp = Db::name('order_addr')->insert($temp, true);
|
|
|
+ if ($vmp > 0) {
|
|
|
+ if($good['is_stock']!=1){
|
|
|
+ $outCode = makeNo("CK");
|
|
|
+ $out = [
|
|
|
+ "orderCode" => $orderCode,
|
|
|
+ "outCode" => $outCode,
|
|
|
+ "apply_id"=>$data['rm'],
|
|
|
+ "apply_name"=>$data['ri'],
|
|
|
+ "addrid" => $vmp,
|
|
|
+ "post_name" => "",
|
|
|
+ "post_code" => "",
|
|
|
+ "post_fee" => 0,
|
|
|
+ "sendtime" => date("Y-m-d H:i:s"),
|
|
|
+ "send_num" => $value['receipt_quantity'],
|
|
|
+ "check_num" => 0,
|
|
|
+ "error_num" => 0,
|
|
|
+ "wsm_code" => "",
|
|
|
+ "order_type" => 4,
|
|
|
+ "status" => 0,
|
|
|
+ "addtime" => date("Y-m-d H:i:s"),
|
|
|
+ "updatetime" => date("Y-m-d H:i:s")
|
|
|
+ ];
|
|
|
+ $ou = Db::name("order_out")->insert($out);
|
|
|
+ if ($ou == false) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ $order['send_num'] += $value['receipt_quantity'];
|
|
|
+ $order['wsend_num'] -= $value['receipt_quantity'];
|
|
|
+ if ($order['wsend_num'] < 0) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ $ups = Db::name("order_num")->save($order);
|
|
|
+ if ($ups) {
|
|
|
+ $tep = [
|
|
|
+ "cgdNo" => $order['cgdNo'],
|
|
|
+ "outCode" => $outCode,
|
|
|
+ "send_num" => $value['receipt_quantity'],
|
|
|
+ "status" => 1,
|
|
|
+ "addtime" => date("Y-m-d H:i:s"),
|
|
|
+ "updatetime" => date("Y-m-d H:i:s")
|
|
|
+ ];
|
|
|
+ $sen = Db::name("order_send")->save($tep);
|
|
|
+ if ($sen == false) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return true;
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|