parent
f6322db398
commit
1c66e38246
|
|
@ -0,0 +1,31 @@
|
|||
package com.xjs.business.api;
|
||||
|
||||
import com.ruoyi.common.core.constant.ServiceNameConstants;
|
||||
import com.ruoyi.common.core.domain.R;
|
||||
import com.xjs.business.api.domain.Area;
|
||||
import com.xjs.business.api.factory.RemoteAreaFactory;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 调用openapi服务AreaController feign
|
||||
*
|
||||
* @author xiejs
|
||||
* @since 2022-03-23
|
||||
*/
|
||||
@FeignClient(contextId = "remoteAreaFeign",
|
||||
value = ServiceNameConstants.BUSINESS_OPENAPI_SERVICE,
|
||||
fallbackFactory = RemoteAreaFactory.class)
|
||||
public interface RemoteAreaFeign {
|
||||
|
||||
@GetMapping("/area/getProvinceAreaForRPC")
|
||||
R<List<Area>> getProvinceAreaForRPC();
|
||||
|
||||
|
||||
@GetMapping("/area/getAreaByParentIdForRPC/{pid}")
|
||||
R<List<Area>> getAreaByParentIdForRPC(@PathVariable("pid") Long pid);
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
package com.xjs.business.api.domain;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 区域编码实体类
|
||||
*
|
||||
* @author xiejs
|
||||
* @since 2022-03-22
|
||||
*/
|
||||
@Data
|
||||
public class Area implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 父id
|
||||
*/
|
||||
private Long parentId;
|
||||
|
||||
/**
|
||||
* 城市编码
|
||||
*/
|
||||
private String citycode;
|
||||
|
||||
/**
|
||||
* 区域编码
|
||||
*/
|
||||
private String adcode;
|
||||
|
||||
/**
|
||||
* 行政区名称
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 区域中心点
|
||||
*/
|
||||
private String center;
|
||||
|
||||
/**
|
||||
* 行政区划级别
|
||||
* <br>
|
||||
* country:国家
|
||||
* <br>
|
||||
* province:省份(直辖市会在province和city显示)
|
||||
* <br>
|
||||
* city:市(直辖市会在province和city显示)
|
||||
* <br>
|
||||
* district:区县
|
||||
* <br>
|
||||
* street:街道
|
||||
*/
|
||||
private String level;
|
||||
|
||||
/**
|
||||
* 嵌套自身
|
||||
*/
|
||||
private List<Area> districts;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
package com.xjs.business.api.factory;
|
||||
|
||||
import com.ruoyi.common.core.domain.R;
|
||||
import com.xjs.business.api.RemoteAreaFeign;
|
||||
import com.xjs.business.api.domain.Area;
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
import org.springframework.cloud.openfeign.FallbackFactory;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* RemoteAreaFeign降级
|
||||
*
|
||||
* @author xiejs
|
||||
* @since 2022-03-23
|
||||
*/
|
||||
@Component
|
||||
@Log4j2
|
||||
public class RemoteAreaFactory implements FallbackFactory<RemoteAreaFeign> {
|
||||
@Override
|
||||
public RemoteAreaFeign create(Throwable cause) {
|
||||
return new RemoteAreaFeign() {
|
||||
@Override
|
||||
public R<List<Area>> getProvinceAreaForRPC() {
|
||||
log.error("API模块获取区域信息降级" + cause.getMessage());
|
||||
return R.fail("API模块获取区域信息降级");
|
||||
}
|
||||
|
||||
@Override
|
||||
public R<List<Area>> getAreaByParentIdForRPC(Long pid) {
|
||||
log.error("API模块根据id获取区域信息降级" + cause.getMessage());
|
||||
return R.fail("API模块根据id获取区域信息降级");
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
@ -44,5 +44,20 @@ export function editWareInfo(data) {
|
|||
})
|
||||
}
|
||||
|
||||
// 获取所有省级区域
|
||||
export function getProvinceArea(data) {
|
||||
return request({
|
||||
url: `/mall-ware/ware/wareinfo/getProvinceArea`,
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
// 根据父ID获取区域
|
||||
export function getAreaByParentId(pid) {
|
||||
return request({
|
||||
url: `/mall-ware/ware/wareinfo/getAreaByParentId/${pid}`,
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
<template>
|
||||
<el-dialog
|
||||
width="500px"
|
||||
@close="closeDialog"
|
||||
:title="!dataForm.id ? '新增' : '修改'"
|
||||
:close-on-click-modal="false"
|
||||
:visible.sync="visible">
|
||||
|
|
@ -9,11 +10,22 @@
|
|||
<el-form-item label="仓库名" prop="name">
|
||||
<el-input v-model="dataForm.name" placeholder="仓库名"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="仓库地址" prop="address">
|
||||
<el-input v-model="dataForm.address" placeholder="仓库地址"></el-input>
|
||||
<el-form-item label="仓库地址" prop="cascaderValue" v-if="!dataForm.id">
|
||||
<el-cascader
|
||||
ref="cascader"
|
||||
style="width: 380px"
|
||||
:props="props"
|
||||
v-model="dataForm.cascaderValue"
|
||||
:options="areaList"
|
||||
@change="handleChange"
|
||||
></el-cascader>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="详细地址" prop="detailAddress">
|
||||
<el-input v-model="dataForm.detailAddress" placeholder="详细地址"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="区域编码" prop="areacode">
|
||||
<el-input v-model.number="dataForm.areacode" placeholder="区域编码"></el-input>
|
||||
<el-input v-model.number="dataForm.areacode" :disabled="!dataForm.id" placeholder="区域编码"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
|
|
@ -21,10 +33,11 @@
|
|||
<el-button type="primary" @click="dataFormSubmit()">确定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {editWareInfo, getWareInfo, saveWareInfo} from "@/api/mall/ware/ware-info";
|
||||
import {editWareInfo, getAreaByParentId, getProvinceArea, getWareInfo, saveWareInfo} from "@/api/mall/ware/ware-info";
|
||||
|
||||
export default {
|
||||
name: "Ware-info-add-update",
|
||||
|
|
@ -34,26 +47,91 @@ export default {
|
|||
dataForm: {
|
||||
name: '',
|
||||
address: '',
|
||||
areacode: ''
|
||||
areacode: null,
|
||||
detailAddress: '',
|
||||
cascaderValue: [],
|
||||
},
|
||||
|
||||
|
||||
dataRule: {
|
||||
name: [
|
||||
{required: true, message: '仓库名不能为空', trigger: 'blur'},
|
||||
{ min: 1, max: 20, message: '长度在 1 到 20 个字符', trigger: 'blur' }
|
||||
{min: 1, max: 20, message: '长度在 1 到 20 个字符', trigger: 'blur'}
|
||||
],
|
||||
address: [
|
||||
detailAddress: [
|
||||
{required: true, message: '详细地址不能为空', trigger: 'blur'},
|
||||
{min: 1, max: 100, message: '长度在 1 到 100 个字符', trigger: 'blur'}
|
||||
],
|
||||
cascaderValue:[
|
||||
{required: true, message: '仓库地址不能为空', trigger: 'blur'},
|
||||
{ min: 1, max: 100, message: '长度在 1 到 100 个字符', trigger: 'blur' }
|
||||
],
|
||||
areacode: [
|
||||
{required: true, message: '区域编码不能为空', trigger: 'blur'},
|
||||
{type: 'number',min: 100000, max: 999999, message: '区域编码为数字且为6位', trigger: 'blur'}
|
||||
{type: 'number', min: 100000, max: 999999, message: '区域编码为数字且为6位', trigger: 'blur'}
|
||||
]
|
||||
},
|
||||
|
||||
areaList: [],
|
||||
|
||||
|
||||
props: {
|
||||
value: "name",
|
||||
label: "name",
|
||||
children: "districts",
|
||||
lazy: true,
|
||||
lazyLoad: this.lazyLoad
|
||||
}
|
||||
|
||||
}
|
||||
},
|
||||
|
||||
computed: {
|
||||
appendAddress: function () {
|
||||
let cascaderAddress = ''
|
||||
this.dataForm.cascaderValue.forEach(a => {
|
||||
if (cascaderAddress === '') {
|
||||
cascaderAddress = cascaderAddress + a;
|
||||
} else {
|
||||
cascaderAddress = cascaderAddress + " " + a;
|
||||
}
|
||||
})
|
||||
cascaderAddress = cascaderAddress + "-" + this.dataForm.detailAddress
|
||||
return cascaderAddress
|
||||
},
|
||||
},
|
||||
|
||||
created() {
|
||||
this.getProvinceArea()
|
||||
},
|
||||
|
||||
methods: {
|
||||
lazyLoad(node, resolve) {
|
||||
var that = this
|
||||
|
||||
setTimeout(() => {
|
||||
if (node.level === 1 || node.level === 2 || node.level === 3) {
|
||||
getAreaByParentId(node.data.id).then(res => {
|
||||
if (node.level === 3) {
|
||||
res.data.forEach(a => {
|
||||
a.leaf = true
|
||||
});
|
||||
//获取areacode值
|
||||
that.dataForm.areacode = parseInt(node.data.adcode)
|
||||
}
|
||||
resolve(res.data);
|
||||
})
|
||||
}
|
||||
}, 200);
|
||||
},
|
||||
|
||||
|
||||
//获取级联数据
|
||||
getProvinceArea() {
|
||||
getProvinceArea().then(res => {
|
||||
this.areaList = res.data
|
||||
})
|
||||
},
|
||||
|
||||
init(id) {
|
||||
this.dataForm.id = id
|
||||
this.visible = true
|
||||
|
|
@ -61,7 +139,16 @@ export default {
|
|||
this.$refs['dataForm'].resetFields()
|
||||
if (this.dataForm.id) {
|
||||
getWareInfo(this.dataForm.id).then(res => {
|
||||
this.dataForm = res.wareInfo
|
||||
//必须单独赋值,否则下面的赋值无效
|
||||
this.dataForm.name = res.wareInfo.name
|
||||
this.dataForm.address = res.wareInfo.address
|
||||
this.dataForm.areacode = res.wareInfo.areacode
|
||||
|
||||
//回显级联选择器的值
|
||||
let split = this.dataForm.address.split("-");
|
||||
this.dataForm.detailAddress = this.dataForm.address
|
||||
|
||||
this.dataForm.cascaderValue = split[0].split(" ")
|
||||
})
|
||||
}
|
||||
})
|
||||
|
|
@ -72,12 +159,14 @@ export default {
|
|||
this.$refs['dataForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
if (!this.dataForm.id) {
|
||||
this.dataForm.address = this.appendAddress
|
||||
saveWareInfo(this.dataForm).then(res => {
|
||||
this.$modal.notifySuccess("添加成功")
|
||||
this.visible = false
|
||||
this.$emit('refreshDataList')
|
||||
})
|
||||
} else {
|
||||
this.dataForm.address = this.dataForm.detailAddress
|
||||
editWareInfo(this.dataForm).then(res => {
|
||||
this.$modal.notifySuccess("修改成功")
|
||||
this.visible = false
|
||||
|
|
@ -88,6 +177,21 @@ export default {
|
|||
})
|
||||
},
|
||||
|
||||
//可以不需要,因为最后一级的adcode全是一样的
|
||||
handleChange(data) {
|
||||
let nodes = this.$refs.cascader.getCheckedNodes()[0];
|
||||
this.dataForm.areacode = parseInt(nodes.data.adcode)
|
||||
},
|
||||
|
||||
closeDialog() {
|
||||
this.dataForm = {
|
||||
name: '',
|
||||
address: '',
|
||||
areacode: null,
|
||||
detailAddress: '',
|
||||
cascaderValue: [],
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.xjs.area.controller;
|
||||
|
||||
import com.ruoyi.common.core.domain.R;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||
import com.xjs.area.domain.Area;
|
||||
|
|
@ -58,4 +59,20 @@ public class AreaController extends MyBaseController<Area> {
|
|||
}
|
||||
|
||||
|
||||
//--------------------------------------远程调用------------------------------------------
|
||||
@GetMapping("getProvinceAreaForRPC")
|
||||
@ApiOperation("获取所有省级区域ForRPC")
|
||||
public R<List<Area>> getProvinceAreaForRPC() {
|
||||
List<Area> areaList = areaService.getProvinceArea();
|
||||
return R.ok(areaList);
|
||||
}
|
||||
|
||||
@GetMapping("getAreaByParentIdForRPC/{pid}")
|
||||
@ApiOperation("根据父ID获取区域ForRPC")
|
||||
public R<List<Area>> getAreaByParentIdForRPC(@PathVariable Long pid) {
|
||||
List<Area> areaList = areaService.getAreaByParentId(pid);
|
||||
return R.ok(areaList);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,10 @@
|
|||
package com.xjs.mall.ware.controller;
|
||||
|
||||
import com.xjs.business.api.domain.Area;
|
||||
import com.xjs.mall.other.R;
|
||||
import com.xjs.mall.ware.entity.WareInfoEntity;
|
||||
import com.xjs.mall.ware.service.WareInfoService;
|
||||
import com.xjs.utils.PageUtils;
|
||||
import com.xjs.mall.other.R;
|
||||
import com.xjs.validation.group.AddGroup;
|
||||
import com.xjs.validation.group.UpdateGroup;
|
||||
import com.xjs.web.MyBaseController;
|
||||
|
|
@ -14,6 +15,7 @@ import org.springframework.validation.annotation.Validated;
|
|||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
|
|
@ -31,6 +33,20 @@ public class WareInfoController extends MyBaseController<WareInfoEntity> {
|
|||
@Autowired
|
||||
private WareInfoService wareInfoService;
|
||||
|
||||
@GetMapping("getProvinceArea")
|
||||
@ApiOperation("获取所有省级区域")
|
||||
public R getProvinceArea() {
|
||||
List<Area> areaList = wareInfoService.getProvinceArea();
|
||||
return R.ok().put("data", areaList);
|
||||
}
|
||||
|
||||
@GetMapping("getAreaByParentId/{pid}")
|
||||
@ApiOperation("根据父ID获取区域")
|
||||
public R getAreaByParentId(@PathVariable Long pid) {
|
||||
List<Area> areaList = wareInfoService.getAreaByParentId(pid);
|
||||
return R.ok().put("data", areaList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 列表
|
||||
*/
|
||||
|
|
@ -88,4 +104,6 @@ public class WareInfoController extends MyBaseController<WareInfoEntity> {
|
|||
return R.ok();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,11 @@
|
|||
package com.xjs.mall.ware.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.xjs.business.api.domain.Area;
|
||||
import com.xjs.mall.ware.entity.WareInfoEntity;
|
||||
import com.xjs.utils.PageUtils;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
|
|
@ -16,5 +18,18 @@ import java.util.Map;
|
|||
public interface WareInfoService extends IService<WareInfoEntity> {
|
||||
|
||||
PageUtils queryPage(Map<String, Object> params);
|
||||
|
||||
/**
|
||||
* 获取所有省级区域
|
||||
* @return list
|
||||
*/
|
||||
List<Area> getProvinceArea();
|
||||
|
||||
/**
|
||||
* 根据父ID获取区域
|
||||
* @param pid 父id
|
||||
* @return list
|
||||
*/
|
||||
List<Area> getAreaByParentId(Long pid);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,11 @@ package com.xjs.mall.ware.service.impl;
|
|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.ruoyi.common.core.constant.HttpStatus;
|
||||
import com.ruoyi.common.core.domain.R;
|
||||
import com.ruoyi.common.core.utils.StringUtils;
|
||||
import com.xjs.business.api.RemoteAreaFeign;
|
||||
import com.xjs.business.api.domain.Area;
|
||||
import com.xjs.mall.ware.dao.WareInfoDao;
|
||||
import com.xjs.mall.ware.entity.WareInfoEntity;
|
||||
import com.xjs.mall.ware.service.WareInfoService;
|
||||
|
|
@ -11,12 +15,18 @@ import com.xjs.utils.PageUtils;
|
|||
import com.xjs.utils.Query;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
@Service("wareInfoService")
|
||||
public class WareInfoServiceImpl extends ServiceImpl<WareInfoDao, WareInfoEntity> implements WareInfoService {
|
||||
|
||||
@Resource
|
||||
private RemoteAreaFeign remoteAreaFeign;
|
||||
|
||||
@Override
|
||||
public PageUtils queryPage(Map<String, Object> params) {
|
||||
String key = (String) params.get(Query.KEY_NAME);
|
||||
|
|
@ -34,4 +44,22 @@ public class WareInfoServiceImpl extends ServiceImpl<WareInfoDao, WareInfoEntity
|
|||
return new PageUtils(page);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Area> getProvinceArea() {
|
||||
R<List<Area>> r = remoteAreaFeign.getProvinceAreaForRPC();
|
||||
if (r.getCode() == HttpStatus.SUCCESS) {
|
||||
return r.getData();
|
||||
}
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Area> getAreaByParentId(Long pid) {
|
||||
R<List<Area>> r = remoteAreaFeign.getAreaByParentIdForRPC(pid);
|
||||
if (r.getCode() == HttpStatus.SUCCESS) {
|
||||
return r.getData();
|
||||
}
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue