基于iOS的帮帮软件

帮帮软件手机移动端和后台构成,使用iOS进行移动端开发,用户可通过手机移动端发布自己的需求:代取快递、代购配送、悬赏任务以及拼车拼团,除了可以充当订单发布者以外,还可以通过身份验证之后成为接单者来赚取小费,移动端可显示从后台接收到的订单列表,以便接单者筛选。用户可以通过订单模块实时查看订单完成进度,也可以在订单页面取消订单。用户可以在个人中心页面更改个人信息、绑定的手机号,也可以向后台反馈或打电话咨询。后端采用的是LeanCloud提供的一站式云端服务负责管理所有的用户信息、接收用户通过移动端发布的订单,将订单进行分类并分配独立的id号,存入数据库,然后再将分类好的订单通过接口发送给移动端;后台还会获取用户接收的订单,并实时更新订单的进度状态,最后反馈给移动端。

1573921626(1).jpg


本软件使用模块化设计思想,将功能分为对应的五大模块:

1)登录模块:两种登录方式,注册或未注册用户都可以使用手机号快捷登录,未注册手机将会自动注册;仅限注册用户使用的账号密码登录。

2)寻找模块:用于发布订单,订单类型分为四种:代取快递,代购配送,悬赏任务,拼车拼团。

3)发现模块:用于接取订单,订单类型与寻找模块一样也分为四种类型。

4)订单模块:用于追踪已经发布的订单和已经接取的订单进度,还可以查看历史订单。

5)个人中心模块:用于管理用户个人信息。

订单发布功能

订单发布功能实现思路如下。

viewDidLoad()方法加载UI,本模块的视图是使用一个UIScrollViewUIScrollView上并存四个UIView,每个UIView对应一种订单类型,每个UIView上都包含了数个UILalbeUIButton等基础控件。

通过点击不同的订单类型按钮调用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("提交订单失败") }

    }

1573921679(1).jpg

接单功能

接单功能实现思路如下。

    viewDidLoad()方法加载UI,本模块的视图是使用一个UIScrollViewUIScrollView上并存四个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("请求失败") }

    }

1573921709(1).jpg

订单功能

 查看功能实现思路如下。

    viewDidLoad()方法加载UI,本模块的视图是使用一个UIScrollViewUIScrollView上并存四个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)

        }

    }

1573921738(1).jpg


  • 微信
  • 赶快加我聊天吧
  • 开发交流群
  • 海纳百川,大家来水
  • weinxin
微义工作室

发表评论 取消回复