每日小记_2019-10-21_day02

今日项目复盘

1.今日所做,完成商城项目的展示收货地址,完善新增收获地址功能
1.1.新增添加省名,市名,区县名,选择后作为数据发送到后端完成数据库信息存入
1.2页面加载完成,下拉选框为—请选择—
1.3添加改变事件,当省市名字发生改变时,区县名刷新,展现当前省所包含市名,区县同理.

业务规划

#1.sql语句
//1.根据上级id查询详细信息,按照下级id排序

select *from t_dict_district where parent=#{parent} order by code;

//2.根据id查询省市区信息

select *from t_dict_district where code=#{code};

#2.配置mapper文件
sdasdasddasdasd在这里插入图片描述
根据 Mapper文件的抽象方法在xml配置文件中配置相应Sql语句

#3.规划业务层IDistrictService接口和实现类IDistrictServiceImpl
根据Mapper中的方法来规划业务层方法

List<District> findByParent(String parent);
District findByCode(String code);

在这里插入图片描述 因根据parent查询结果时返回的集合中,District对象中的id和parent属性没有必要返回给前端页面,所以在此将它设置为null;

#4. 回到之前所写的IAddressService接口中添加新抽象方法 District getByUid(Integer uid) ,此方法是将用户的收货地址查询出来返回给页面.
#4.1 在IAddressServiceImpl中添加 String getDistrict(String code)方法,此方法用于根据code值查询省/市/县名,调用service.getByCode(code)得到District对象,判断此对象是否为null,若为null.返回null,不为null则使用District.getName()方法返回名字!
#4.2重写getUid(Integer uid)方法,并将不需要的值设为null
在这里插入图片描述
#4.3在此前添加收获地址方法中,新增添加省/市/区县名功能,再插入数据前,调用getByCode(Integer code)方法 address.getProvinceCode()/CityCode/AreaCode()传入分别得到省/市/区名,再执行插入操作!
在这里插入图片描述
#5.规划控制器层
#5.1建立新控制器类 DistrictController并添加@RestController注解,@RequestMapping(“district”)注解并自动装配(使用@Autowired)业务层对象service.
#5.2创建新方法getParent(Integer parent)添加@RequestMapping("/")注解,调用service.getByParent(parent)方法,返回查询结果和OK状态描述!
在这里插入图片描述
#5.3新建AddressController并添加RestController注解与@RequestMapping()注解,与上述方法一致.此处需要调用addNew()方法实现插入数据功能和getByUid()方法实现查找用户收货地址.
在这里插入图片描述
#6.来到前端页面,通过AJAX技术实现异步请求!实现前后端数据交互!

<script type="text/javascript">
	//声明全局变量defaultOption为省/市/区县状态栏默认状态
	var defaultOption="<option value='0'>"+"---请选择---"+"</option>";
	$(document).ready(function () {
	//页面加载完成后调用展示省份方法
		showProvinceList();
		//当省份下拉框发生改变时,调用展示城市方法
		$("#province-list").change(function () {
			showCityList();
		});
		//当城市下拉选发生改变时,调用展示区县方法
		$("#city-list").change(function () {
			showAreaList();
		});
		//将默认状态栏显示文本设置到城市框
		$("#city-list").append(defaultOption);
		//将默认状态栏显示文本设置到区县框
		$("#area-list").append(defaultOption);
	});
	//展示省份方法
	function showProvinceList(){
	//设置为请选择状态
		$("#province-list").append(defaultOption);
		$.ajax({
			"url":"/districts/",
			"data":"parent=86",//86为全国所有省份
			"type":"get",
			"dataType":"json",
			"success":function(json) {
				let list=json.data;
				console.log(list.length)
				for (var i = 0; i < list.length; i++) {
					let op="<option value='"+list[i].code+"'>"+list[i].name+"</option>";
					$("#province-list").append(op);
				}
		}
	});
	}
	
	//展示城市列表方法
	function showCityList(){
	//得到省份id
		let provinceCode=$("#province-list").val();
		//清空上一次城市列表
		$("#city-list").empty();
		//重新选定状态
		$("#city-list").append(defaultOption);
		//清空上一次区县列表
		$("#area-list").empty();
		//重新选定状态
		$("#area-list").append(defaultOption);
		//如果id为0,说明没有找到,终止方法
		if(provinceCode==0){
			return;
		}
		
		$.ajax({
			"url":"/districts/",
			"data":"parent="+provinceCode,
			"type":"get",
			"dataType":"json",
			"success":function (json) {
				let list=json.data;
				for (var i = 0; i <list.length ; i++) {
					let op="<option value='"+list[i].code+"'>"+list[i].name+"</option>";
					$("#city-list").append(op);
				}
			}
		});
	}
	
	//展示区县列表方法
	function showAreaList(){
		let cityCode=$("#city-list").val();
		$("#area-list").empty();
		$("#area-list").append(defaultOption);
		if(cityCode==0){
			return;
		}
		$.ajax({
			"url":"/districts/",
			"data":"parent="+cityCode,
			"type":"get",
			"dataType":"json",
			"success":function (json) {
				let list=json.data;
				for (var i = 0; i < list.length; i++) {
					let op="<option value='"+list[i].code+"'>"+list[i].name+"</option>";
					$("#area-list").append(op);
				}
			}
		});

	}
	
	//为添加按钮绑定点击事件,提交数据!
	$("#btn-addnew").click(function() {
		$.ajax({
			"url":"/addresses/addnew",
			"data":$("#form-addnew").serialize(),
			"type":"post",
			"dataType":"json",
			"success":function(json) {
				if (json.state == 200) {
					alert("增加收货地址成功!");
					// 还原表单控件为默认状态
					// $("#form-addnew")[0].reset();
				} else {
					alert("增加收货地址失败!" + json.message + "!");
				}
			},
			"error":function() {
				alert("您的登录信息已经过期!请重新登录!");
				// location.href = "login.html";
			}
		});
	});
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值