目录
一、需求二、数据表设计三、代码1、数据2、添加3、修改4、删除5、tips
一、需求
1、网上商城,收货地址是必不可少的,这里大概写一下用PHP实现收货地址的添加、修改、删除 2、Tips,主要处理收货地址是否是默认地址,默认地址规则如下
一个用户只能有1个默认地址如果用户只有1个地址,则设置该地址为默认地址
二、数据表设计
CREATE TABLE `address
` (
`id
` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键自增',
`userId
` int(11) NOT NULL DEFAULT '0' COMMENT '用户ID',
`provinceId
` int(11) NOT NULL DEFAULT '0' COMMENT '省ID',
`cityId
` int(11) NOT NULL DEFAULT '0' COMMENT '城市ID',
`districtId
` int(11) NOT NULL DEFAULT '0' COMMENT '区ID',
`name
` varchar(50) NOT NULL DEFAULT '' COMMENT '收货人姓名',
`tag
` enum('家','公司','学校') NOT NULL DEFAULT '家' COMMENT '标签 不能为空',
`mobile
` varchar(50) NOT NULL DEFAULT '' COMMENT '手机号',
`remark
` varchar(255) NOT NULL DEFAULT '' COMMENT '详细地址(最少5个字符)',
`isDefault
` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否是默认地址 1是 0否 默认否',
`createTime
` int(10) NOT NULL DEFAULT '0' COMMENT '创建时间',
`updateTime
` int(10) NOT NULL DEFAULT '0' COMMENT '更新时间',
`createUser
` int(11) NOT NULL DEFAULT '0' COMMENT '创建人',
PRIMARY KEY (`id
`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
;
三、代码
1、数据
$data = [
'userId' => '用户ID',
'provinceId' => '省ID',
'cityId' => '市ID',
'districtId' => '区ID',
'name' => '收货人姓名',
'mobile' => '收货人手机号',
'tag' => '标签',
'remark' => '详细地址',
'isDefault' => '是否是默认地址'
];
2、添加
public function insert($data) {
$userId = $data['userId'];
$addressDao = new AddressDao();
$result = $addressDao->queryAll(['userId' => $userId]);
if (empty($result)) {
$data['isDefault'] = 1;
}
if (isset($data['isDefault']) && $data['isDefault'] && !empty($result)) {
$addressDao->updateByQuery(['isDefault' => 0], ['userId' => $userId]);
}
return $addressDao->insert($data);
}
3、修改
public function update($data) {
$addressDao = new AddressDao();
if (isset($data['isDefault']) && $data['isDefault']) {
$addressDao->updateByQuery(['isDefault' => 0], ['userId' => $data['userId']]);
}
return $addressDao->update($data);
}
4、删除
public function del($param){
$userId = $param['userId'];
$ids = explode(',', $param['id']);
$data = [
'id' => ['in', $ids],
'is_deleted' => 1
];
$addressDao = new AddressDao();
$res = $addressDao->update($data);
if ($res) {
$result = $addressDao->queryAll(['userId' => $userId]);
if (count($result) == 1) {
$addressDao->update(['isDefault' => 1, 'id' => $result[0]['id']]);
}
}
return $res;
}
5、tips
用户ID:userId 可以根据当前登录用户的token直接获取,我这里方便演示就直接写死在$data里面了