Browse Source

计量单位转换

pull/18/head
pengda 7 months ago
parent
commit
cdc13670fd
  1. 47
      model/mFormula.php

47
model/mFormula.php

@ -53,6 +53,16 @@ class mFormula extends mBase {
$formula_ids = array_column($data, 'id'); $formula_ids = array_column($data, 'id');
$formula_arr = $this->getFormulaHerbData($formula_ids); $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) { foreach ($data as &$da) {
if (isset($formula_arr[$da['id']])) $da['formula'] = $formula_arr[$da['id']]; 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) { foreach ($da['formula'] as &$v) {
if (isset($original[$v['name']])) { 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; if ($num) $v['num'] = $num;
$v['num_str'] = $original[$v['name']]['num']; $v['num_str'] = $original[$v['name']]['num'];
@ -77,20 +87,19 @@ class mFormula extends mBase {
return $data; 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_name = preg_replace('/\d/', '', $num_str);
$unit_type = $GLOBALS['weight_convert_list'][$unit_name]; $unit_type = $GLOBALS['weight_convert_list'][$unit_name];
if (!$unit_type) return false; if (!$unit_type) return false;
if (!isset($unit_conv[$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;
$unit_num = filter_var($num_str, FILTER_SANITIZE_NUMBER_INT); $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; if (!$num) return false;
return $num; return $num;
@ -287,12 +296,22 @@ class mFormula extends mBase {
return $formula; 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 = json_decode($original, true);
$original = array_column($original, null, 'name'); $original = array_column($original, null, 'name');
foreach ($formulaHerb as &$v) { foreach ($formulaHerb as &$v) {
if (isset($original[$v['name']])) { 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; if ($num) $v['num'] = $num;
$v['num_str'] = $original[$v['name']]['num']; $v['num_str'] = $original[$v['name']]['num'];
@ -640,6 +659,10 @@ class mFormula extends mBase {
return $this->obj->count($this->collect_log_tbl); 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) { public function getUnitConvById($id) {
return $this->obj->select($this->unit_conv, array('sql' => '`id`=? and `is_delete`=?', 'vals' => array($id, 0))); 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))); 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) { public function getUserConv($uid, $unit_type) {
return $this->obj->select($this->user_conv, array('sql' => '`uid`=? and `unit_type`=?', 'vals' => array($uid, $unit_type))); return $this->obj->select($this->user_conv, array('sql' => '`uid`=? and `unit_type`=?', 'vals' => array($uid, $unit_type)));
} }

Loading…
Cancel
Save