|
@@ -11,7 +11,6 @@ namespace fcode;
|
|
|
require_once (BASE_ROOT_PATH . '/helper/message/msgutil.php');
|
|
|
require_once (BASE_ROOT_PATH . '/helper/special_helper.php');
|
|
|
|
|
|
-
|
|
|
use StatesHelper;
|
|
|
use Log;
|
|
|
use special_manager;
|
|
@@ -41,13 +40,13 @@ class send_manager
|
|
|
private function init()
|
|
|
{
|
|
|
$this->mNormalGoods = [];
|
|
|
- $this->mGoodsBlock = [];
|
|
|
|
|
|
global $config;
|
|
|
$fcodes_id = $config['autosend_fcodes']['fcodes_spid'];
|
|
|
$blocks = special_manager::instance()->special($fcodes_id,$goods_ids);
|
|
|
|
|
|
$cur_amount = 0;
|
|
|
+ $cur_block = false;
|
|
|
foreach ($blocks as $block)
|
|
|
{
|
|
|
$item_type = $block['item_type'];
|
|
@@ -60,6 +59,7 @@ class send_manager
|
|
|
$amount = intval($item['reserved']);
|
|
|
if($amount > 0) {
|
|
|
$cur_amount = $amount;
|
|
|
+ $cur_block = $block;
|
|
|
}
|
|
|
}
|
|
|
elseif ($item_type == 'home_goods')
|
|
@@ -74,7 +74,7 @@ class send_manager
|
|
|
$goods_id = intval($item['data']);
|
|
|
$batch_code = $item['reserved'];
|
|
|
if($cur_amount > 0 && $goods_id > 0 && empty($batch_code) == false) {
|
|
|
- $this->add($cur_amount,$goods_id,$batch_code);
|
|
|
+ $this->add($cur_amount,$goods_id,$batch_code,$cur_block);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -84,16 +84,15 @@ class send_manager
|
|
|
krsort($this->mNormalGoods);
|
|
|
}
|
|
|
|
|
|
- private function add($amount,$goods_id,$batch_code)
|
|
|
+ private function add($amount,$goods_id,$batch_code,$cur_block)
|
|
|
{
|
|
|
if(array_key_exists($amount,$this->mNormalGoods) == false) {
|
|
|
$this->mNormalGoods[$amount] = [];
|
|
|
}
|
|
|
|
|
|
- $this->mNormalGoods[$amount][] = ['goods_id' => $goods_id,'batch_code' => $batch_code];
|
|
|
+ $this->mNormalGoods[$amount][] = ['goods_id' => $goods_id,'batch_code' => $batch_code,'block' => $cur_block];
|
|
|
}
|
|
|
|
|
|
-
|
|
|
public function fetch($amount,$pay_sn)
|
|
|
{
|
|
|
$normal = $this->fetch_normal($amount,$pay_sn);
|
|
@@ -112,28 +111,35 @@ class send_manager
|
|
|
$amount = intval($amount);
|
|
|
if($amount <= 0) return false;
|
|
|
|
|
|
- $gids = [];
|
|
|
- foreach ($this->mNormalGoods as $key => $goods_ids)
|
|
|
+ $fcode_goods = [];
|
|
|
+ foreach ($this->mNormalGoods as $key => $items)
|
|
|
{
|
|
|
- if(empty($goods_ids)) continue;
|
|
|
-
|
|
|
+ if(empty($items)) continue;
|
|
|
if($key <= $amount)
|
|
|
{
|
|
|
- foreach ($goods_ids as $gid) {
|
|
|
- $gids[] = $gid;
|
|
|
+ foreach ($items as $item) {
|
|
|
+ $fcode_goods[] = $item;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- if(empty($gids)) {
|
|
|
+ if(empty($fcode_goods)) {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
- $result = $this->validate_one($gids,$pay_sn);
|
|
|
+ $result = $this->validate_one($fcode_goods,$pay_sn);
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
- private function validate_one($gids,$pay_sn)
|
|
|
+ private function validate_one($fcode_goods,$pay_sn)
|
|
|
{
|
|
|
+ $gid_codes = [];
|
|
|
+ $gids = [];
|
|
|
+ foreach ($fcode_goods as $item) {
|
|
|
+ $gid = $item['goods_id'];
|
|
|
+ $gids[] = $gid;
|
|
|
+ $gid_codes[$gid] = $item;
|
|
|
+ }
|
|
|
+
|
|
|
$mod_goods = Model('goods');
|
|
|
$goods_list = $mod_goods->getGoodsOnlineList(array('goods_id' => array('in', $gids),'goods_storage' => array('gt',0),'is_fcode' => 1));
|
|
|
if(empty($goods_list)) return false;
|
|
@@ -149,12 +155,12 @@ class send_manager
|
|
|
if(array_key_exists($gid,$all_goods))
|
|
|
{
|
|
|
$goods = $all_goods[$gid];
|
|
|
- $commonid = $goods['goods_commonid'];
|
|
|
|
|
|
- $block = $this->mGoodsBlock[$gid];
|
|
|
- $batch_code = $block['items'][0]['title'];
|
|
|
- $oper = new operator($commonid,$batch_code);
|
|
|
+ $batch_code = $gid_codes[$gid]['batch_code'];
|
|
|
+ $block = $gid_codes[$gid]['block'];
|
|
|
|
|
|
+ $commonid = $goods['goods_commonid'];
|
|
|
+ $oper = new operator($commonid,$batch_code);
|
|
|
if($oper->grabed() == false)
|
|
|
{
|
|
|
$fcode = $oper->lock($pay_sn);
|