From cdc13670fd95f023a04e5d93d89cdfccc0524053 Mon Sep 17 00:00:00 2001 From: pengda <10266652509@qq.com> Date: Wed, 16 Oct 2024 09:38:13 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A1=E9=87=8F=E5=8D=95=E4=BD=8D=E8=BD=AC?= =?UTF-8?q?=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- model/mFormula.php | 47 +++++++++++++++++++++++++++++++++++++---------- 1 file changed, 37 insertions(+), 10 deletions(-) diff --git a/model/mFormula.php b/model/mFormula.php index efe8ad0..83e8370 100644 --- a/model/mFormula.php +++ b/model/mFormula.php @@ -53,6 +53,16 @@ class mFormula extends mBase { $formula_ids = array_column($data, 'id'); $formula_arr = $this->getFormulaHerbData($formula_ids); + $unit_conv = array(); + $user_conv = $this->getUserConvList($uid); + if ($user_conv) { + $conv_ids = array_column($user_conv, 'conv_id'); + if ($conv_ids) { + $unit_conv = $this->getUnitConvByIds($conv_ids); + $unit_conv = array_column($unit_conv, null, 'unit_type'); + } + } + foreach ($data as &$da) { if (isset($formula_arr[$da['id']])) $da['formula'] = $formula_arr[$da['id']]; @@ -63,7 +73,7 @@ class mFormula extends mBase { foreach ($da['formula'] as &$v) { if (isset($original[$v['name']])) { - $num = $this->convByUserChoice($uid, $original[$v['name']]['num']); + $num = $this->convByUserChoice($original[$v['name']]['num'], $unit_conv); if ($num) $v['num'] = $num; $v['num_str'] = $original[$v['name']]['num']; @@ -77,20 +87,19 @@ class mFormula extends mBase { return $data; } - public function convByUserChoice($uid, $num_str) { + public function convByUserChoice($num_str, $unit_conv) { + if (!$unit_conv) return false; + $unit_name = preg_replace('/\d/', '', $num_str); + $unit_type = $GLOBALS['weight_convert_list'][$unit_name]; if (!$unit_type) return false; - - $user_conv = $this->getUserConv($uid, $unit_type); - if (!$user_conv) return false; - - $unit_conv = $this->getUnitConvById($user_conv['conv_id']); - if (!$unit_conv) return false; + if (!isset($unit_conv[$unit_type])) return false; $unit_num = filter_var($num_str, FILTER_SANITIZE_NUMBER_INT); + $conv_num = $unit_conv[$unit_type]['num']; - $num = $unit_num * $unit_conv['num']; + $num = $unit_num * $conv_num; if (!$num) return false; return $num; @@ -287,12 +296,22 @@ class mFormula extends mBase { return $formula; } + $unit_conv = array(); + $user_conv = $this->getUserConvList($uid); + if ($user_conv) { + $conv_ids = array_column($user_conv, 'conv_id'); + if ($conv_ids) { + $unit_conv = $this->getUnitConvByIds($conv_ids); + $unit_conv = array_column($unit_conv, null, 'unit_type'); + } + } + //原方信息 $original = json_decode($original, true); $original = array_column($original, null, 'name'); foreach ($formulaHerb as &$v) { if (isset($original[$v['name']])) { - $num = $this->convByUserChoice($uid, $original[$v['name']]['num']); + $num = $this->convByUserChoice($original[$v['name']]['num'], $unit_conv); if ($num) $v['num'] = $num; $v['num_str'] = $original[$v['name']]['num']; @@ -640,6 +659,10 @@ class mFormula extends mBase { return $this->obj->count($this->collect_log_tbl); } + public function getUnitConvByIds($ids) { + return $this->obj->selectIn($this->unit_conv, array('id' => $ids), array('sql' => '`is_delete`=?', 'vals' => array(0))); + } + public function getUnitConvById($id) { return $this->obj->select($this->unit_conv, array('sql' => '`id`=? and `is_delete`=?', 'vals' => array($id, 0))); } @@ -648,6 +671,10 @@ class mFormula extends mBase { return $this->obj->selectAll($this->unit_conv, array('sql' => '`unit_type`=? and `is_delete`=?', 'vals' => array($unit_type, 0))); } + public function getUserConvList($uid) { + return $this->obj->selectAll($this->user_conv, array('sql' => '`uid`=?', 'vals' => array($uid))); + } + public function getUserConv($uid, $unit_type) { return $this->obj->select($this->user_conv, array('sql' => '`uid`=? and `unit_type`=?', 'vals' => array($uid, $unit_type))); }