基于iOS的帮帮软件
帮帮软件由手机移动端和后台构成,使用iOS进行移动端开发,用户可通过手机移动端发布自己的需求:代取快递、代购配送、悬赏任务以及拼车拼团,除了可以充当订单发布者以外,还可以通过身份验证之后成为接单者来赚取小费,移动端可显示从后台接收到的订单列表,以便接单者筛选。用户可以通过订单模块实时查看订单完成进度,也可以在订单页面取消订单。用户可以在个人中心页面更改个人信息、绑定的手机号,也可以向后台反馈或打电话咨询。后端采用的是LeanCloud提供的一站式云端服务,负责管理所有的用户信息、接收用户通过移动端发布的订单,将订单进行分类并分配独立的id号,存入数据库,然后再将分类好的订单通过接口发送给移动端;后台还会获取用户接收的订单,并实时更新订单的进度状态,最后反馈给移动端。
本软件使用模块化设计思想,将功能分为对应的五大模块:
(1)登录模块:两种登录方式,注册或未注册用户都可以使用手机号快捷登录,未注册手机将会自动注册;仅限注册用户使用的账号密码登录。
(2)寻找模块:用于发布订单,订单类型分为四种:代取快递,代购配送,悬赏任务,拼车拼团。
(3)发现模块:用于接取订单,订单类型与寻找模块一样也分为四种类型。
(4)订单模块:用于追踪已经发布的订单和已经接取的订单进度,还可以查看历史订单。
(5)个人中心模块:用于管理用户个人信息。
订单发布功能
订单发布功能实现思路如下。
viewDidLoad()方法加载UI,本模块的视图是使用一个UIScrollView,UIScrollView上并存四个UIView,每个UIView对应一种订单类型,每个UIView上都包含了数个UILalbe、UIButton等基础控件。
通过点击不同的订单类型按钮调用scroll()方法切换到不同的订单类型页面。所有的订单都是通过confirm()方法提交订单到后台,confirm()方法在执行之处会对订单做一次检测,若订单信息不够完整则会做出相应的提示。
提交订单部分代码如下。
let object = AVObject(className: "Order")
object.setObject(params.value(forKey:
"userid"), forKey: "userid")
object.setObject(params.value(forKey:
"runnerid"), forKey: "runnerid")
object.setObject(params.value(forKey: "type"),
forKey: "type")
object.setObject(params.value(forKey:
"status"), forKey: "status")
object.saveInBackground { (success, error) in
if success{ completion() }
else { failed("提交订单失败") }
}
接单功能
接单功能实现思路如下。
viewDidLoad()方法加载UI,本模块的视图是使用一个UIScrollView,UIScrollView上并存四个UITableView,每个UITableView对应一种订单类型列表。refresh()方法用于重新从后台获取订单列表并刷新对应的列表,每个UITableView都绑定了refresh()方法,每个UITableView也都被添加了下拉刷新的手势,下拉刷新手势也会调用refresh()方法。App每次显示页面之前都会调用viewWillAppear()方法,而viewWillAppear()方法被执行时也会调用refresh()方法刷新列表。用户可以通过点击UITableViewCell上的接单按钮来触发fetchOrder()方法来向后台发送接单请求。
部分代码如下。
let order = AVObject(className:
"Order", objectId: id)
order.setObject(status, forKey:
"status")
order.setObject(LoginReturnModel.uid,
forKey: "runnerid")
order.saveInBackground {
(success, error) in
if success{ completion() }
else { failed("请求失败") }
}
订单功能
查看功能实现思路如下。 viewDidLoad()方法加载UI,本模块的视图是使用一个UIScrollView,UIScrollView上并存四个UITableView,前两个UITableView对应的是用户发布和接过的订单,后两个UITableView对应的是已经完成或取消的用户接取过的订单。refresh()方法用于从后台重新获取订单信息并刷新列表,只有前两个UITabelView绑定了此方法,后两个UITabelView的数据都是从本地获取。通过点击UITableViewCell上的查看详情按钮来触发showOrderDetail()方法来跳转到订单详情页面,跳转页面的同时会把订单状态传到订单详情页面,订单详情页面会根据订单状态做出相应布局。 部分代码如下。 let query = AVQuery(className: "Order") query.whereKey("userid", equalTo:
LoginReturnModel.uid) query.whereKey("status",
notEqualTo: 200) query.findObjectsInBackground { (results,
error) in guard let objects = results else{ failed("请求失败") return } if objects.isEmpty { completion( [] ) } else { let models = objects.map{ return
OrderModel(by: $0 as! AVObject)}.filter{ !$0.confirms.contains(LoginReturnModel.uid) } completion(models) } }
- 微信
- 赶快加我聊天吧
- 开发交流群
- 海纳百川,大家来水