提交附加费配置功能

This commit is contained in:
wuweihua
2026-09-07 16:50:59 +08:00
parent ea2bc6f33e
commit 3994bd7998
13 changed files with 947 additions and 0 deletions
@@ -50,6 +50,18 @@ public class BmsRegionController extends BaseController
return getDataTable(list);
}
/**
* 获取国家下拉选项列表(仅启用状态)
*/
@GetMapping("/optionselect")
public AjaxResult optionselect()
{
BmsRegion query = new BmsRegion();
query.setStatus("0");
List<BmsRegion> list = regionService.selectRegionList(query);
return success(list);
}
/**
* 导出区域列表
*/
@@ -0,0 +1,76 @@
package com.ruoyi.web.controller.price;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.price.domain.PrcSurcharge;
import com.ruoyi.price.service.IPrcSurchargeService;
/**
* 附加费配置
*
* @author ruoyi
*/
@RestController
@RequestMapping("/price/surcharge")
public class SurchargeController extends BaseController
{
@Autowired
private IPrcSurchargeService surchargeService;
@PreAuthorize("@ss.hasPermi('price:surcharge:list')")
@GetMapping("/list")
public TableDataInfo list(PrcSurcharge surcharge)
{
startPage();
List<PrcSurcharge> list = surchargeService.selectPrcSurchargeList(surcharge);
return getDataTable(list);
}
@PreAuthorize("@ss.hasPermi('price:surcharge:query')")
@GetMapping("/{scId}")
public AjaxResult getInfo(@PathVariable Long scId)
{
return success(surchargeService.selectPrcSurchargeById(scId));
}
@PreAuthorize("@ss.hasPermi('price:surcharge:add')")
@Log(title = "附加费配置", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@Validated @RequestBody PrcSurcharge surcharge)
{
surcharge.setCreateBy(getUsername());
return toAjax(surchargeService.insertPrcSurcharge(surcharge));
}
@PreAuthorize("@ss.hasPermi('price:surcharge:edit')")
@Log(title = "附加费配置", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@Validated @RequestBody PrcSurcharge surcharge)
{
surcharge.setUpdateBy(getUsername());
return toAjax(surchargeService.updatePrcSurcharge(surcharge));
}
@PreAuthorize("@ss.hasPermi('price:surcharge:remove')")
@Log(title = "附加费配置", businessType = BusinessType.DELETE)
@DeleteMapping("/{scIds}")
public AjaxResult remove(@PathVariable Long[] scIds)
{
return toAjax(surchargeService.deletePrcSurchargeByIds(scIds));
}
}
@@ -0,0 +1,84 @@
package com.ruoyi.price.domain;
import java.math.BigDecimal;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 附加费配置 prc_surcharge
*
* @author ruoyi
*/
public class PrcSurcharge extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 附加费配置ID */
private Long scId;
/** 附加费名称 */
private String scName;
/** 费用类型(字典 bms_fee_type) */
private String feeType;
/** 计费方式 FIXED固定金额/WEIGHT按重量/RATE按比例 */
private String chargeType;
/** 计费数值 */
private BigDecimal chargeValue;
/** 币种 */
private String currency;
/** 取值方式(字典 bms_round_mode)UP/DOWN/HALF_UP */
private String roundMode;
/** 状态码 on/of */
private String ssCode;
/** 适用国家ISO2(空=全部) */
private String countryCode;
/** 备注 */
private String scNote;
/** 租户ID */
private Long tmsId;
public Long getScId() { return scId; }
public void setScId(Long scId) { this.scId = scId; }
public String getScName() { return scName; }
public void setScName(String scName) { this.scName = scName; }
public String getFeeType() { return feeType; }
public void setFeeType(String feeType) { this.feeType = feeType; }
public String getChargeType() { return chargeType; }
public void setChargeType(String chargeType) { this.chargeType = chargeType; }
public BigDecimal getChargeValue() { return chargeValue; }
public void setChargeValue(BigDecimal chargeValue) { this.chargeValue = chargeValue; }
public String getCurrency() { return currency; }
public void setCurrency(String currency) { this.currency = currency; }
public String getRoundMode() { return roundMode; }
public void setRoundMode(String roundMode) { this.roundMode = roundMode; }
public String getSsCode() { return ssCode; }
public void setSsCode(String ssCode) { this.ssCode = ssCode; }
public String getCountryCode() { return countryCode; }
public void setCountryCode(String countryCode) { this.countryCode = countryCode; }
public String getScNote() { return scNote; }
public void setScNote(String scNote) { this.scNote = scNote; }
public Long getTmsId() { return tmsId; }
public void setTmsId(Long tmsId) { this.tmsId = tmsId; }
@Override
public String toString()
{
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("scId", getScId())
.append("scName", getScName())
.append("feeType", getFeeType())
.append("chargeType", getChargeType())
.append("chargeValue", getChargeValue())
.append("currency", getCurrency())
.append("roundMode", getRoundMode())
.append("ssCode", getSsCode())
.append("countryCode", getCountryCode())
.append("scNote", getScNote())
.append("tmsId", getTmsId())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.toString();
}
}
@@ -0,0 +1,22 @@
package com.ruoyi.price.mapper;
import java.util.List;
import com.ruoyi.price.domain.PrcSurcharge;
/**
* 附加费配置 数据层
*
* @author ruoyi
*/
public interface PrcSurchargeMapper
{
public PrcSurcharge selectPrcSurchargeById(Long scId);
public List<PrcSurcharge> selectPrcSurchargeList(PrcSurcharge surcharge);
public int insertPrcSurcharge(PrcSurcharge surcharge);
public int updatePrcSurcharge(PrcSurcharge surcharge);
public int deletePrcSurchargeByIds(Long[] scIds);
}
@@ -0,0 +1,22 @@
package com.ruoyi.price.service;
import java.util.List;
import com.ruoyi.price.domain.PrcSurcharge;
/**
* 附加费配置 服务层
*
* @author ruoyi
*/
public interface IPrcSurchargeService
{
public PrcSurcharge selectPrcSurchargeById(Long scId);
public List<PrcSurcharge> selectPrcSurchargeList(PrcSurcharge surcharge);
public int insertPrcSurcharge(PrcSurcharge surcharge);
public int updatePrcSurcharge(PrcSurcharge surcharge);
public int deletePrcSurchargeByIds(Long[] scIds);
}
@@ -0,0 +1,86 @@
package com.ruoyi.price.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.price.domain.PrcSurcharge;
import com.ruoyi.price.mapper.PrcSurchargeMapper;
import com.ruoyi.price.service.IPrcSurchargeService;
/**
* 附加费配置 服务层实现
*
* @author ruoyi
*/
@Service
public class PrcSurchargeServiceImpl implements IPrcSurchargeService
{
@Autowired
private PrcSurchargeMapper surchargeMapper;
@Override
public PrcSurcharge selectPrcSurchargeById(Long scId)
{
return surchargeMapper.selectPrcSurchargeById(scId);
}
@Override
public List<PrcSurcharge> selectPrcSurchargeList(PrcSurcharge surcharge)
{
return surchargeMapper.selectPrcSurchargeList(surcharge);
}
@Override
public int insertPrcSurcharge(PrcSurcharge surcharge)
{
validate(surcharge);
if (StringUtils.isEmpty(surcharge.getSsCode()))
{
surcharge.setSsCode("on");
}
if (StringUtils.isEmpty(surcharge.getFeeType()))
{
surcharge.setFeeType("SURCHARGE");
}
if (StringUtils.isEmpty(surcharge.getRoundMode()))
{
surcharge.setRoundMode("HALF_UP");
}
return surchargeMapper.insertPrcSurcharge(surcharge);
}
@Override
public int updatePrcSurcharge(PrcSurcharge surcharge)
{
validate(surcharge);
return surchargeMapper.updatePrcSurcharge(surcharge);
}
@Override
public int deletePrcSurchargeByIds(Long[] scIds)
{
return surchargeMapper.deletePrcSurchargeByIds(scIds);
}
private void validate(PrcSurcharge surcharge)
{
if (StringUtils.isEmpty(surcharge.getScName()))
{
throw new ServiceException("附加费名称不能为空");
}
if (StringUtils.isEmpty(surcharge.getChargeType()))
{
throw new ServiceException("计费方式不能为空");
}
if (surcharge.getChargeValue() == null)
{
throw new ServiceException("计费数值不能为空");
}
if (surcharge.getChargeValue().compareTo(java.math.BigDecimal.ZERO) < 0)
{
throw new ServiceException("计费数值不能为负数");
}
}
}
@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.price.mapper.PrcSurchargeMapper">
<resultMap type="PrcSurcharge" id="PrcSurchargeResult">
<id property="scId" column="sc_id" />
<result property="scName" column="sc_name" />
<result property="feeType" column="fee_type" />
<result property="chargeType" column="charge_type" />
<result property="chargeValue" column="charge_value" />
<result property="currency" column="currency" />
<result property="roundMode" column="round_mode" />
<result property="ssCode" column="ss_code" />
<result property="countryCode" column="country_code" />
<result property="scNote" column="sc_note" />
<result property="tmsId" column="tms_id" />
<result property="createBy" column="created_by" />
<result property="createTime" column="created_at" />
<result property="updateBy" column="updated_by" />
<result property="updateTime" column="updated_at" />
</resultMap>
<sql id="selectPrcSurchargeVo">
select sc_id, sc_name, fee_type, charge_type, charge_value, currency, round_mode, ss_code,
country_code, sc_note, tms_id, created_by, created_at, updated_by, updated_at
from prc_surcharge
</sql>
<select id="selectPrcSurchargeById" parameterType="Long" resultMap="PrcSurchargeResult">
<include refid="selectPrcSurchargeVo"/>
where sc_id = #{scId}
</select>
<select id="selectPrcSurchargeList" parameterType="PrcSurcharge" resultMap="PrcSurchargeResult">
<include refid="selectPrcSurchargeVo"/>
<where>
<if test="scName != null and scName != ''">
AND sc_name like concat('%', #{scName}, '%')
</if>
<if test="feeType != null and feeType != ''">
AND fee_type = #{feeType}
</if>
<if test="chargeType != null and chargeType != ''">
AND charge_type = #{chargeType}
</if>
<if test="roundMode != null and roundMode != ''">
AND round_mode = #{roundMode}
</if>
<if test="ssCode != null and ssCode != ''">
AND ss_code = #{ssCode}
</if>
<if test="countryCode != null and countryCode != ''">
AND country_code = #{countryCode}
</if>
<if test="tmsId != null">
AND tms_id = #{tmsId}
</if>
</where>
order by sc_id desc
</select>
<insert id="insertPrcSurcharge" parameterType="PrcSurcharge" useGeneratedKeys="true" keyProperty="scId">
insert into prc_surcharge (
<if test="scName != null and scName != ''">sc_name,</if>
<if test="feeType != null and feeType != ''">fee_type,</if>
<if test="chargeType != null and chargeType != ''">charge_type,</if>
<if test="chargeValue != null">charge_value,</if>
<if test="currency != null and currency != ''">currency,</if>
<if test="roundMode != null and roundMode != ''">round_mode,</if>
<if test="ssCode != null and ssCode != ''">ss_code,</if>
<if test="countryCode != null">country_code,</if>
<if test="scNote != null">sc_note,</if>
<if test="tmsId != null">tms_id,</if>
<if test="createBy != null and createBy != ''">created_by,</if>
created_at
) values (
<if test="scName != null and scName != ''">#{scName},</if>
<if test="feeType != null and feeType != ''">#{feeType},</if>
<if test="chargeType != null and chargeType != ''">#{chargeType},</if>
<if test="chargeValue != null">#{chargeValue},</if>
<if test="currency != null and currency != ''">#{currency},</if>
<if test="roundMode != null and roundMode != ''">#{roundMode},</if>
<if test="ssCode != null and ssCode != ''">#{ssCode},</if>
<if test="countryCode != null">#{countryCode},</if>
<if test="scNote != null">#{scNote},</if>
<if test="tmsId != null">#{tmsId},</if>
<if test="createBy != null and createBy != ''">#{createBy},</if>
sysdate()
)
</insert>
<update id="updatePrcSurcharge" parameterType="PrcSurcharge">
update prc_surcharge
<set>
<if test="scName != null and scName != ''">sc_name = #{scName},</if>
<if test="feeType != null and feeType != ''">fee_type = #{feeType},</if>
<if test="chargeType != null and chargeType != ''">charge_type = #{chargeType},</if>
<if test="chargeValue != null">charge_value = #{chargeValue},</if>
<if test="currency != null and currency != ''">currency = #{currency},</if>
<if test="roundMode != null and roundMode != ''">round_mode = #{roundMode},</if>
<if test="ssCode != null and ssCode != ''">ss_code = #{ssCode},</if>
country_code = #{countryCode},
<if test="scNote != null">sc_note = #{scNote},</if>
<if test="tmsId != null">tms_id = #{tmsId},</if>
<if test="updateBy != null and updateBy != ''">updated_by = #{updateBy},</if>
updated_at = sysdate()
</set>
where sc_id = #{scId}
</update>
<delete id="deletePrcSurchargeByIds" parameterType="Long">
delete from prc_surcharge where sc_id in
<foreach item="scId" collection="array" open="(" separator="," close=")">
#{scId}
</foreach>
</delete>
</mapper>
@@ -0,0 +1,59 @@
-- ----------------------------
-- BMS 计费字典:计费方式 / 币种
-- charset: utf8mb4
-- 幂等:dict_type 唯一键 + WHERE NOT EXISTS,可重复执行
-- 默认值:计费方式 = FIXED(固定金额),币种 = CNY(人民币)
-- ----------------------------
-- 1) 字典类型
INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
SELECT '计费方式', 'bms_charge_type', '0', 'admin', sysdate(), '计费方式 FIXED固定金额/WEIGHT按重量/RATE按比例'
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'bms_charge_type');
INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
SELECT '币种', 'bms_currency', '0', 'admin', sysdate(), '计费币种'
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'bms_currency');
-- 2) 计费方式字典数据(默认 FIXED 固定金额)
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, is_default, status, create_by, create_time, remark)
SELECT 1, '固定金额(每票)', 'FIXED', 'bms_charge_type', 'Y', '0', 'admin', sysdate(), ''
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'bms_charge_type' AND dict_value = 'FIXED');
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, is_default, status, create_by, create_time, remark)
SELECT 2, '按重量(每KG)', 'WEIGHT', 'bms_charge_type', 'N', '0', 'admin', sysdate(), ''
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'bms_charge_type' AND dict_value = 'WEIGHT');
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, is_default, status, create_by, create_time, remark)
SELECT 3, '按比例(%)', 'RATE', 'bms_charge_type', 'N', '0', 'admin', sysdate(), ''
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'bms_charge_type' AND dict_value = 'RATE');
-- 3) 币种字典数据(默认 CNY 人民币)
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, is_default, status, create_by, create_time, remark)
SELECT 1, '人民币', 'CNY', 'bms_currency', 'Y', '0', 'admin', sysdate(), ''
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'bms_currency' AND dict_value = 'CNY');
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, is_default, status, create_by, create_time, remark)
SELECT 2, '美元', 'USD', 'bms_currency', 'N', '0', 'admin', sysdate(), ''
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'bms_currency' AND dict_value = 'USD');
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, is_default, status, create_by, create_time, remark)
SELECT 3, '欧元', 'EUR', 'bms_currency', 'N', '0', 'admin', sysdate(), ''
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'bms_currency' AND dict_value = 'EUR');
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, is_default, status, create_by, create_time, remark)
SELECT 4, '英镑', 'GBP', 'bms_currency', 'N', '0', 'admin', sysdate(), ''
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'bms_currency' AND dict_value = 'GBP');
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, is_default, status, create_by, create_time, remark)
SELECT 5, '日元', 'JPY', 'bms_currency', 'N', '0', 'admin', sysdate(), ''
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'bms_currency' AND dict_value = 'JPY');
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, is_default, status, create_by, create_time, remark)
SELECT 6, '港币', 'HKD', 'bms_currency', 'N', '0', 'admin', sysdate(), ''
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'bms_currency' AND dict_value = 'HKD');
-- 4) 幂等修正默认值(数据已存在时强制对齐)
UPDATE sys_dict_data SET is_default = 'N' WHERE dict_type = 'bms_charge_type' AND dict_value <> 'FIXED';
UPDATE sys_dict_data SET is_default = 'Y' WHERE dict_type = 'bms_charge_type' AND dict_value = 'FIXED';
UPDATE sys_dict_data SET is_default = 'N' WHERE dict_type = 'bms_currency' AND dict_value <> 'CNY';
UPDATE sys_dict_data SET is_default = 'Y' WHERE dict_type = 'bms_currency' AND dict_value = 'CNY';
+47
View File
@@ -0,0 +1,47 @@
-- ----------------------------
-- BMS 计费字典:取值方式 / 费用类型
-- charset: utf8mb4
-- 幂等:dict_type 唯一键 + WHERE NOT EXISTS,可重复执行
-- 默认值:费用类型 = SURCHARGE(附加费),取值方式 = HALF_UP(四舍五入)
-- ----------------------------
-- 1) 字典类型
INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
SELECT '取值方式', 'bms_round_mode', '0', 'admin', sysdate(), '计费金额取值方式'
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'bms_round_mode');
INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
SELECT '费用类型', 'bms_fee_type', '0', 'admin', sysdate(), '计费费用类型'
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_dict_type WHERE dict_type = 'bms_fee_type');
-- 2) 取值方式字典数据(默认 HALF_UP 四舍五入)
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, is_default, status, create_by, create_time, remark)
SELECT 1, '向上取值', 'UP', 'bms_round_mode', 'N', '0', 'admin', sysdate(), ''
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'bms_round_mode' AND dict_value = 'UP');
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, is_default, status, create_by, create_time, remark)
SELECT 2, '向下取整', 'DOWN', 'bms_round_mode', 'N', '0', 'admin', sysdate(), ''
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'bms_round_mode' AND dict_value = 'DOWN');
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, is_default, status, create_by, create_time, remark)
SELECT 3, '四舍五入', 'HALF_UP', 'bms_round_mode', 'Y', '0', 'admin', sysdate(), ''
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'bms_round_mode' AND dict_value = 'HALF_UP');
-- 3) 费用类型字典数据(默认 SURCHARGE 附加费)
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, is_default, status, create_by, create_time, remark)
SELECT 1, '基础运费', 'BASIC_FREIGHT', 'bms_fee_type', 'N', '0', 'admin', sysdate(), ''
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'bms_fee_type' AND dict_value = 'BASIC_FREIGHT');
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, is_default, status, create_by, create_time, remark)
SELECT 2, '挂号费', 'REGISTRATION_FEE', 'bms_fee_type', 'N', '0', 'admin', sysdate(), ''
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'bms_fee_type' AND dict_value = 'REGISTRATION_FEE');
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, is_default, status, create_by, create_time, remark)
SELECT 3, '附加费', 'SURCHARGE', 'bms_fee_type', 'Y', '0', 'admin', sysdate(), ''
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_dict_data WHERE dict_type = 'bms_fee_type' AND dict_value = 'SURCHARGE');
-- 4) 幂等修正默认值(数据已存在时强制对齐,保证重复执行后默认值仍正确)
UPDATE sys_dict_data SET is_default = 'N' WHERE dict_type = 'bms_round_mode' AND dict_value <> 'HALF_UP';
UPDATE sys_dict_data SET is_default = 'Y' WHERE dict_type = 'bms_round_mode' AND dict_value = 'HALF_UP';
UPDATE sys_dict_data SET is_default = 'N' WHERE dict_type = 'bms_fee_type' AND dict_value <> 'SURCHARGE';
UPDATE sys_dict_data SET is_default = 'Y' WHERE dict_type = 'bms_fee_type' AND dict_value = 'SURCHARGE';
+55
View File
@@ -0,0 +1,55 @@
-- ----------------------------
-- BMS price basic: surcharge config (附加费配置)
-- charset: utf8mb4
-- menu_id: 2115-2119
-- ----------------------------
CREATE TABLE IF NOT EXISTS prc_surcharge (
sc_id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '附加费配置ID',
sc_name VARCHAR(100) NOT NULL COMMENT '附加费名称',
fee_type VARCHAR(30) NOT NULL DEFAULT 'SURCHARGE' COMMENT '费用类型(字典bms_fee_type)',
charge_type VARCHAR(20) NOT NULL COMMENT '计费方式 FIXED固定金额/WEIGHT按重量/RATE按比例',
charge_value DECIMAL(18,6) NOT NULL COMMENT '计费数值',
currency CHAR(3) NOT NULL DEFAULT 'CNY' COMMENT '币种',
round_mode VARCHAR(20) NOT NULL DEFAULT 'HALF_UP' COMMENT '取值方式(字典bms_round_mode)',
ss_code VARCHAR(20) NOT NULL DEFAULT 'on' COMMENT '状态 on/of',
country_code CHAR(2) DEFAULT NULL COMMENT '适用国家ISO2(空=全部)',
sc_note VARCHAR(500) DEFAULT NULL COMMENT '备注',
tms_id BIGINT(20) DEFAULT NULL COMMENT '租户ID',
created_by VARCHAR(64) DEFAULT '' COMMENT '创建人',
created_at DATETIME DEFAULT NULL COMMENT '创建时间',
updated_by VARCHAR(64) DEFAULT '' COMMENT '更新人',
updated_at DATETIME DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (sc_id),
INDEX idx_sc_ss_code (ss_code),
INDEX idx_sc_country (country_code),
INDEX idx_sc_tms_id (tms_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='附加费配置';
-- menus 2115-2119
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
SELECT 2115, N'附加费配置', 2100, 3, 'surcharge', 'price/basic/surcharge/index', '', 'PriceSurcharge', 1, 0, 'C', '0', '0', 'price:surcharge:list', 'money', 'admin', sysdate(), N'附加费配置菜单'
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 2115);
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
SELECT 2116, N'附加费查询', 2115, 1, '', NULL, '', '', 1, 0, 'F', '0', '0', 'price:surcharge:query', '#', 'admin', sysdate(), ''
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 2116);
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
SELECT 2117, N'附加费新增', 2115, 2, '', NULL, '', '', 1, 0, 'F', '0', '0', 'price:surcharge:add', '#', 'admin', sysdate(), ''
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 2117);
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
SELECT 2118, N'附加费修改', 2115, 3, '', NULL, '', '', 1, 0, 'F', '0', '0', 'price:surcharge:edit', '#', 'admin', sysdate(), ''
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 2118);
INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
SELECT 2119, N'附加费删除', 2115, 4, '', NULL, '', '', 1, 0, 'F', '0', '0', 'price:surcharge:remove', '#', 'admin', sysdate(), ''
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 2119);
-- role_id=1 grants
INSERT INTO sys_role_menu (role_id, menu_id) SELECT 1, 2115 FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_role_menu WHERE role_id = 1 AND menu_id = 2115);
INSERT INTO sys_role_menu (role_id, menu_id) SELECT 1, 2116 FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_role_menu WHERE role_id = 1 AND menu_id = 2116);
INSERT INTO sys_role_menu (role_id, menu_id) SELECT 1, 2117 FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_role_menu WHERE role_id = 1 AND menu_id = 2117);
INSERT INTO sys_role_menu (role_id, menu_id) SELECT 1, 2118 FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_role_menu WHERE role_id = 1 AND menu_id = 2118);
INSERT INTO sys_role_menu (role_id, menu_id) SELECT 1, 2119 FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_role_menu WHERE role_id = 1 AND menu_id = 2119);