commit baad9aee5c9ff8d4947ff24869eaa6e9b1fe7d11 Author: xxaaxx5566 <2719109211@qq.com> Date: Mon Jul 20 13:39:11 2026 +0800 Add common address module diff --git a/sql/common_address.sql b/sql/common_address.sql new file mode 100644 index 0000000..3715389 --- /dev/null +++ b/sql/common_address.sql @@ -0,0 +1,36 @@ +CREATE TABLE IF NOT EXISTS blade_common_address ( + id BIGINT PRIMARY KEY, + address_no VARCHAR(20) NOT NULL COMMENT '地址编号', + address_name VARCHAR(100) NOT NULL COMMENT '地址名称', + address_type VARCHAR(20) NOT NULL COMMENT '地址类型:NORMAL/PORT/RAIL/AIRPORT', + station_code VARCHAR(50) DEFAULT NULL COMMENT '站点编码', + detail_address VARCHAR(255) DEFAULT NULL COMMENT '详细地址', + region_code VARCHAR(50) DEFAULT NULL COMMENT '行政区划编码', + region_name VARCHAR(255) DEFAULT NULL COMMENT '行政区划名称', + province VARCHAR(50) DEFAULT NULL COMMENT '省', + city VARCHAR(50) DEFAULT NULL COMMENT '市', + district VARCHAR(50) DEFAULT NULL COMMENT '区县', + longitude DECIMAL(10,6) DEFAULT NULL COMMENT '经度', + latitude DECIMAL(10,6) DEFAULT NULL COMMENT '纬度', + contact_name VARCHAR(50) DEFAULT NULL COMMENT '联系人', + contact_phone VARCHAR(50) DEFAULT NULL COMMENT '联系方式', + org_id VARCHAR(64) DEFAULT NULL COMMENT '组织ID', + org_name VARCHAR(100) DEFAULT NULL COMMENT '组织名称', + remark VARCHAR(500) DEFAULT NULL COMMENT '备注', + is_deleted TINYINT DEFAULT 0 COMMENT '删除标识', + create_user VARCHAR(64) DEFAULT NULL COMMENT '创建人', + create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + update_user VARCHAR(64) DEFAULT NULL COMMENT '更新人', + update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + UNIQUE KEY uk_common_address_no (address_no), + KEY idx_common_address_org (org_id), + KEY idx_common_address_name (address_name), + KEY idx_common_address_type (address_type) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='常用地址表'; + +INSERT INTO blade_common_address +(id, address_no, address_name, address_type, station_code, detail_address, region_name, province, city, district, longitude, latitude, contact_name, contact_phone, org_name, remark, is_deleted, create_user, create_time, update_user, update_time) +VALUES +(1, 'DZ12345', 'XX园区', 'NORMAL', '/', '广西壮族自治区/南宁市/江南区', '广西壮族自治区/南宁市/江南区', '广西壮族自治区', '南宁市', '江南区', NULL, NULL, NULL, NULL, '桂物物流', NULL, 0, 'admin', '2025-01-01 00:00:00', 'admin', '2025-01-01 00:00:00'), +(2, 'DZ12346', '舟山港', 'PORT', 'CNNGB', '舟山市普陀区沈家门街道港口大道18号', '浙江省/舟山市/普陀区', '浙江省', '舟山市', '普陀区', 122.320000, 29.988000, '张工', '13800138000', '桂物物流', '港口码头', 0, 'admin', '2025-01-01 00:00:00', 'admin', '2025-01-01 00:00:00'), +(3, 'DZ12347', '成都双流机场', 'AIRPORT', 'CTU', '成都市双流区机场路', '四川省/成都市/双流区', '四川省', '成都市', '双流区', 103.956000, 30.578000, '李工', '13900139000', '桂物物流', '空港机场', 0, 'admin', '2025-01-01 00:00:00', 'admin', '2025-01-01 00:00:00'); diff --git a/src/main/java/org/springblade/modules/basic/address/controller/CommonAddressController.java b/src/main/java/org/springblade/modules/basic/address/controller/CommonAddressController.java new file mode 100644 index 0000000..595c6be --- /dev/null +++ b/src/main/java/org/springblade/modules/basic/address/controller/CommonAddressController.java @@ -0,0 +1,55 @@ +package org.springblade.modules.basic.address.controller; + +import com.baomidou.mybatisplus.core.metadata.IPage; +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.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springblade.modules.basic.address.entity.CommonAddress; +import org.springblade.modules.basic.address.entity.CommonAddressQuery; +import org.springblade.modules.basic.address.service.ICommonAddressService; + +import java.util.List; + +@RestController +@RequestMapping("/api/basic/common-address") +public class CommonAddressController { + + private final ICommonAddressService commonAddressService; + + public CommonAddressController(ICommonAddressService commonAddressService) { + this.commonAddressService = commonAddressService; + } + + @GetMapping("/page") + public IPage page(CommonAddressQuery query) { + return commonAddressService.page(query); + } + + @GetMapping("/{id}") + public CommonAddress detail(@PathVariable Long id) { + return commonAddressService.detail(id); + } + + @PostMapping("/save") + public boolean save(@RequestBody CommonAddress address) { + return commonAddressService.saveAddress(address); + } + + @PostMapping("/update") + public boolean update(@RequestBody CommonAddress address) { + return commonAddressService.updateAddress(address); + } + + @PostMapping("/delete") + public boolean delete(@RequestBody List ids) { + return commonAddressService.removeByIds(ids); + } + + @GetMapping("/export") + public List export(CommonAddressQuery query) { + return commonAddressService.listForExport(query); + } +} diff --git a/src/main/java/org/springblade/modules/basic/address/entity/CommonAddress.java b/src/main/java/org/springblade/modules/basic/address/entity/CommonAddress.java new file mode 100644 index 0000000..5888544 --- /dev/null +++ b/src/main/java/org/springblade/modules/basic/address/entity/CommonAddress.java @@ -0,0 +1,63 @@ +package org.springblade.modules.basic.address.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +@TableName("blade_common_address") +public class CommonAddress { + + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + private String addressNo; + + private String addressName; + + private String addressType; + + private String stationCode; + + private String detailAddress; + + private String regionCode; + + private String regionName; + + private String province; + + private String city; + + private String district; + + private BigDecimal longitude; + + private BigDecimal latitude; + + private String contactName; + + private String contactPhone; + + private String orgId; + + private String orgName; + + private String remark; + + @TableLogic + private Integer isDeleted; + + private String createUser; + + private LocalDateTime createTime; + + private String updateUser; + + private LocalDateTime updateTime; +} diff --git a/src/main/java/org/springblade/modules/basic/address/entity/CommonAddressQuery.java b/src/main/java/org/springblade/modules/basic/address/entity/CommonAddressQuery.java new file mode 100644 index 0000000..6125498 --- /dev/null +++ b/src/main/java/org/springblade/modules/basic/address/entity/CommonAddressQuery.java @@ -0,0 +1,15 @@ +package org.springblade.modules.basic.address.entity; + +import lombok.Data; + +import java.util.List; + +@Data +public class CommonAddressQuery extends CommonAddress { + + private Long current = 1L; + + private Long size = 10L; + + private List ids; +} diff --git a/src/main/java/org/springblade/modules/basic/address/mapper/CommonAddressMapper.java b/src/main/java/org/springblade/modules/basic/address/mapper/CommonAddressMapper.java new file mode 100644 index 0000000..f1afb19 --- /dev/null +++ b/src/main/java/org/springblade/modules/basic/address/mapper/CommonAddressMapper.java @@ -0,0 +1,9 @@ +package org.springblade.modules.basic.address.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.springblade.modules.basic.address.entity.CommonAddress; + +@Mapper +public interface CommonAddressMapper extends BaseMapper { +} diff --git a/src/main/java/org/springblade/modules/basic/address/service/ICommonAddressService.java b/src/main/java/org/springblade/modules/basic/address/service/ICommonAddressService.java new file mode 100644 index 0000000..d0264e5 --- /dev/null +++ b/src/main/java/org/springblade/modules/basic/address/service/ICommonAddressService.java @@ -0,0 +1,23 @@ +package org.springblade.modules.basic.address.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import org.springblade.modules.basic.address.entity.CommonAddress; +import org.springblade.modules.basic.address.entity.CommonAddressQuery; + +import java.util.List; + +public interface ICommonAddressService extends IService { + + IPage page(CommonAddressQuery query); + + CommonAddress detail(Long id); + + boolean saveAddress(CommonAddress address); + + boolean updateAddress(CommonAddress address); + + boolean removeByIds(List ids); + + List listForExport(CommonAddressQuery query); +} diff --git a/src/main/java/org/springblade/modules/basic/address/service/impl/CommonAddressServiceImpl.java b/src/main/java/org/springblade/modules/basic/address/service/impl/CommonAddressServiceImpl.java new file mode 100644 index 0000000..87329bb --- /dev/null +++ b/src/main/java/org/springblade/modules/basic/address/service/impl/CommonAddressServiceImpl.java @@ -0,0 +1,106 @@ +package org.springblade.modules.basic.address.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; +import org.springblade.modules.basic.address.entity.CommonAddress; +import org.springblade.modules.basic.address.entity.CommonAddressQuery; +import org.springblade.modules.basic.address.mapper.CommonAddressMapper; +import org.springblade.modules.basic.address.service.ICommonAddressService; + +import java.time.LocalDateTime; +import java.util.List; + +@Service +public class CommonAddressServiceImpl extends ServiceImpl implements ICommonAddressService { + + private static final String NORMAL_TYPE = "NORMAL"; + private static final String NORMAL_STATION_CODE = "/"; + + @Override + public IPage page(CommonAddressQuery query) { + Page page = new Page<>(query.getCurrent(), query.getSize()); + return this.page(page, buildWrapper(query)); + } + + @Override + public CommonAddress detail(Long id) { + return getById(id); + } + + @Override + public boolean saveAddress(CommonAddress address) { + normalize(address); + address.setId(null); + address.setAddressNo(generateAddressNo()); + address.setCreateTime(LocalDateTime.now()); + address.setUpdateTime(LocalDateTime.now()); + if (address.getIsDeleted() == null) { + address.setIsDeleted(0); + } + return save(address); + } + + @Override + public boolean updateAddress(CommonAddress address) { + normalize(address); + address.setUpdateTime(LocalDateTime.now()); + return updateById(address); + } + + public boolean removeByIds(List ids) { + return super.removeByIds(ids); + } + + @Override + public List listForExport(CommonAddressQuery query) { + return list(buildWrapper(query)); + } + + private LambdaQueryWrapper buildWrapper(CommonAddressQuery query) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(StringUtils.hasText(query.getOrgId()), CommonAddress::getOrgId, query.getOrgId()) + .like(StringUtils.hasText(query.getAddressName()), CommonAddress::getAddressName, query.getAddressName()) + .eq(StringUtils.hasText(query.getAddressType()), CommonAddress::getAddressType, query.getAddressType()) + .like(StringUtils.hasText(query.getDetailAddress()), CommonAddress::getDetailAddress, query.getDetailAddress()) + .like(StringUtils.hasText(query.getRegionName()), CommonAddress::getRegionName, query.getRegionName()) + .eq(StringUtils.hasText(query.getStationCode()), CommonAddress::getStationCode, query.getStationCode()) + .like(StringUtils.hasText(query.getContactName()), CommonAddress::getContactName, query.getContactName()) + .like(StringUtils.hasText(query.getContactPhone()), CommonAddress::getContactPhone, query.getContactPhone()) + .orderByDesc(CommonAddress::getUpdateTime); + return wrapper; + } + + private String generateAddressNo() { + CommonAddress latest = lambdaQuery() + .likeRight(CommonAddress::getAddressNo, "DZ") + .orderByDesc(CommonAddress::getAddressNo) + .last("limit 1") + .one(); + long next = 1L; + if (latest != null && StringUtils.hasText(latest.getAddressNo()) && latest.getAddressNo().length() >= 7) { + String digits = latest.getAddressNo().substring(2); + try { + next = Long.parseLong(digits) + 1L; + } catch (NumberFormatException ignored) { + next = 1L; + } + } + return String.format("DZ%05d", next); + } + + private void normalize(CommonAddress address) { + if (address == null) { + return; + } + if (!StringUtils.hasText(address.getAddressType())) { + address.setAddressType(NORMAL_TYPE); + } + if (NORMAL_TYPE.equalsIgnoreCase(address.getAddressType())) { + address.setStationCode(NORMAL_STATION_CODE); + } + } +} diff --git a/src/main/resources/mapper/basic/CommonAddressMapper.xml b/src/main/resources/mapper/basic/CommonAddressMapper.xml new file mode 100644 index 0000000..8f79c58 --- /dev/null +++ b/src/main/resources/mapper/basic/CommonAddressMapper.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +