Add common address module
This commit is contained in:
36
sql/common_address.sql
Normal file
36
sql/common_address.sql
Normal file
@@ -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');
|
||||
@@ -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<CommonAddress> 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<Long> ids) {
|
||||
return commonAddressService.removeByIds(ids);
|
||||
}
|
||||
|
||||
@GetMapping("/export")
|
||||
public List<CommonAddress> export(CommonAddressQuery query) {
|
||||
return commonAddressService.listForExport(query);
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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<Long> ids;
|
||||
}
|
||||
@@ -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<CommonAddress> {
|
||||
}
|
||||
@@ -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<CommonAddress> {
|
||||
|
||||
IPage<CommonAddress> page(CommonAddressQuery query);
|
||||
|
||||
CommonAddress detail(Long id);
|
||||
|
||||
boolean saveAddress(CommonAddress address);
|
||||
|
||||
boolean updateAddress(CommonAddress address);
|
||||
|
||||
boolean removeByIds(List<Long> ids);
|
||||
|
||||
List<CommonAddress> listForExport(CommonAddressQuery query);
|
||||
}
|
||||
@@ -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<CommonAddressMapper, CommonAddress> implements ICommonAddressService {
|
||||
|
||||
private static final String NORMAL_TYPE = "NORMAL";
|
||||
private static final String NORMAL_STATION_CODE = "/";
|
||||
|
||||
@Override
|
||||
public IPage<CommonAddress> page(CommonAddressQuery query) {
|
||||
Page<CommonAddress> 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<Long> ids) {
|
||||
return super.removeByIds(ids);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CommonAddress> listForExport(CommonAddressQuery query) {
|
||||
return list(buildWrapper(query));
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<CommonAddress> buildWrapper(CommonAddressQuery query) {
|
||||
LambdaQueryWrapper<CommonAddress> 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
30
src/main/resources/mapper/basic/CommonAddressMapper.xml
Normal file
30
src/main/resources/mapper/basic/CommonAddressMapper.xml
Normal file
@@ -0,0 +1,30 @@
|
||||
<?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="org.springblade.modules.basic.address.mapper.CommonAddressMapper">
|
||||
<resultMap id="commonAddressMap" type="org.springblade.modules.basic.address.entity.CommonAddress">
|
||||
<id column="id" property="id"/>
|
||||
<result column="address_no" property="addressNo"/>
|
||||
<result column="address_name" property="addressName"/>
|
||||
<result column="address_type" property="addressType"/>
|
||||
<result column="station_code" property="stationCode"/>
|
||||
<result column="detail_address" property="detailAddress"/>
|
||||
<result column="region_code" property="regionCode"/>
|
||||
<result column="region_name" property="regionName"/>
|
||||
<result column="province" property="province"/>
|
||||
<result column="city" property="city"/>
|
||||
<result column="district" property="district"/>
|
||||
<result column="longitude" property="longitude"/>
|
||||
<result column="latitude" property="latitude"/>
|
||||
<result column="contact_name" property="contactName"/>
|
||||
<result column="contact_phone" property="contactPhone"/>
|
||||
<result column="org_id" property="orgId"/>
|
||||
<result column="org_name" property="orgName"/>
|
||||
<result column="remark" property="remark"/>
|
||||
<result column="is_deleted" property="isDeleted"/>
|
||||
<result column="create_user" property="createUser"/>
|
||||
<result column="create_time" property="createTime"/>
|
||||
<result column="update_user" property="updateUser"/>
|
||||
<result column="update_time" property="updateTime"/>
|
||||
</resultMap>
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user