需求按钮状态优化
This commit is contained in:
@@ -58,7 +58,7 @@ class SubscribeMessageService
|
||||
'remark' => '该工单已结算完成',
|
||||
/*
|
||||
订单编号:200912162851392635fdbf4149
|
||||
结算金额:99.9元
|
||||
结算金额:¥99.9
|
||||
结算说明:订单已收货结算完成
|
||||
*/
|
||||
'fields' => ['character_string4', 'amount1', 'thing2'],
|
||||
@@ -231,11 +231,46 @@ class SubscribeMessageService
|
||||
public static function packData($template_id, $values): array
|
||||
{
|
||||
$fields = self::MSG_MAP[$template_id]['fields'] ?? [];
|
||||
$param_data = [];
|
||||
foreach ($fields as $key => $field) {
|
||||
$param_data[$field] = ['value' => $values[$key] ?? ''];
|
||||
$value = $values[$key] ?? '';
|
||||
//微信 amount 类型不带币种符号时会固定展示 5 位小数,如 2.37 显示成 2.37000
|
||||
if (strpos($field, 'amount') === 0) {
|
||||
$value = self::formatAmount($value);
|
||||
}
|
||||
$param_data[$field] = ['value' => $value];
|
||||
}
|
||||
|
||||
return $param_data ?? [];
|
||||
return $param_data;
|
||||
}
|
||||
|
||||
/**
|
||||
* 订阅消息金额:最多两位小数,去掉末尾多余的 0,并加上币种符号。
|
||||
* 微信 amount 类型不带币种符号时会把 2.37 展示成 2.37000。
|
||||
* @param mixed $amount
|
||||
* @return string 如 ¥2.37、¥2.3、¥2
|
||||
*/
|
||||
public static function formatAmount($amount): string
|
||||
{
|
||||
if ($amount === '' || $amount === null || !is_numeric($amount)) {
|
||||
return (string)$amount;
|
||||
}
|
||||
$number = (string)$amount;
|
||||
if (stripos($number, 'e') !== false) {
|
||||
$number = sprintf('%.8F', (float)$amount);
|
||||
}
|
||||
$negative = strncmp($number, '-', 1) === 0;
|
||||
if ($negative) {
|
||||
$number = substr($number, 1);
|
||||
}
|
||||
//先加 0.005 再截到 2 位,等价于四舍五入,避免 bcmath 直接截断
|
||||
$rounded = bcadd($number, '0.005', 2);
|
||||
$rounded = rtrim(rtrim($rounded, '0'), '.');
|
||||
if ($rounded === '') {
|
||||
$rounded = '0';
|
||||
}
|
||||
|
||||
return '¥' . ($negative ? '-' : '') . $rounded;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user