购物车实现收货地址查询功能级联动效果展⽰: 前端使⽤了elementui
数据库查询语句 t_province为省 t_city为市 t_area为县
SELECT code_p code,name,'0' pcode,'1' type FROM t_province
UNION ALL
SELECT code_c code,name,code_p pcode,'2' type FROM t_city
UNION ALL
SELECT code_a code,name,code_c pcode,'3' type FROM t_area
package sult;
public enum ResultCode {
SUCCESS(200,"操作成功"),
ERROR(500,"操作失败"),
USERNAME_PASSWORD_ISNULL(1001,"⽤户名或密码为空"), USER_NOEXIST(1002,"⽤户不存在"),
PASSWORD_ERROR(1003,"密码错误"),
TOKEN_ERROR(1004,"⾝份过期,请重新登录"),
NO_PERMISSION(403,"没有权限访问该⽅法"),
PHONE_NULL(1005,"⼿机号为空"),
GET_CODE_ERROR(1006,"获取验证码失败"),
PHONE_CODE_ISBULL(1007,"⼿机号码或验证码不能为空"), CODE_ERROR(1008,"验证码错误"),
PHONE_CODE_TIMEOUT(1009,"⼿机号码不正确或验证码过期"), LOGIN_ERROR(1010,"登录失败请重新登录")
;
private Integer code;
private String msg;
ResultCode(Integer code, String msg){
this.msg = msg;
}
public Integer getCode(){
return code;
}
public void tCode(Integer code){
}
public String getMsg(){
return msg;
}
public void tMsg(String msg){
this.msg = msg;
}
}
创建统⼀返回值类:
package sult;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ResultObj {
// 状态码
private Integer code;
// 信息
private String msg;
// 数据
private Object data;
public ResultObj(Integer code, String msg){
this.msg = msg;
}
public static ResultObj success(){
return new ResultObj(Code(), Msg());
}
public static ResultObj success(Object data){
return new ResultObj(Code(), Msg(), data); }
public static ResultObj error(ResultCode resultCode){
return new Code(), Msg(),null);
}
}
会员收货地址表前端控制器
```java
package com.ller;
import com.del.MemberReceiveAddress;
import com.jq.address.rvice.MemberReceiveAddressService;
import sult.ResultObj;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
/**
* <p>
* 会员收货地址表前端控制器
* </p>
*
* @author jq
* @since 2021-04-14
*/
@RestController
@RequestMapping("/address")
public class MemberReceiveAddressController {
@Autowired
private MemberReceiveAddressService addressService;
//查询所有地区数据递归
@GetMapping
public ResultObj queryAddressList(){
List<Map<String,Object>> addressList=addressService.queryAddressList();
return ResultObj.success(addressList);
}
}
package com.jq.address.rvice.impl;
import com.del.MemberReceiveAddress;
import com.jq.address.mapper.MemberReceiveAddressMapper;
import com.jq.address.rvice.MemberReceiveAddressService;
import sion.rvice.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* <p>
* 会员收货地址表服务实现类
* </p>
*
* @author jq
* @since 2021-04-14
*/
@Service
public class MemberReceiveAddressServiceImpl extends ServiceImpl<MemberReceiveAddressMapper, MemberReceiveAddress>implements MemberRe ceiveAddressService {
@Resource
private MemberReceiveAddressMapper memberReceiveAddressMapper;
@Override
public List<Map<String, Object>>queryAddressList(){
List<Map<String,Object>> addressList=memberReceiveAddressMapper.queryAddressList();
List<Map<String,Object>> treeList=getTree("0",addressList);
return treeList;
}
//递归循环查询数据
private List<Map<String, Object>>getTree(String pid, List<Map<String, Object>> addressList){
List<Map<String,Object>>list=new ArrayList<>();
addressList.forEach(address ->{
Map<String,Object>map=null;
/
/⼀级
if(pid.("pcode"))){
map=new HashMap<>();
map.put("value",("name"));
map.put("label",("name"));
//⼆级节点
if(!"3".("type"))){
map.put("children",getTree((String) ("code"),addressList));
}
}
if(map!=null){
list.add(map);
}
});
return list;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-////DTD Mapper 3.0//EN""/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.jq.address.mapper.MemberReceiveAddressMapper">
<lect id="queryAddressList" resultType="java.util.Map">
SELECT code_p code,name,'0' pcode,'1' type FROM t_province
UNION ALL
SELECT code_c code,name,code_p pcode,'2' type FROM t_city
UNION ALL
SELECT code_a code,name,code_c pcode,'3' type FROM t_area
</lect>
</mapper>