项目二总结

一 项目概述
    宠物乐园这个项目是基于o2o模式开发的一个项目,该项目以宠物为核心,为用户提供宠物寻主,宠物领养,以及购买服务和商品等功能,是一个综合性开放平台。它主要有组织机构,用户,宠物,订单,支付等模块。平台除了提供针对普通用户的基本需求功能,支持商家入驻,合作加盟,扩展线下门店渠道。我们开发这个项目使用的是前后端分离模式开发,前端使用的是vue技术栈,后台使用的是springboot+ssm,项目部署使用的是docker技术。提供基于restful的架构风格的业务接口。 二 负责模块概述
    1.宠物模块
    (1)寻主消息
    用户因为各种原因不想继续抚养自己的宠物。通过系统的寻主功能发布通告,平台根据用户所填写的地址推算离用户最近的线下门店,通过继承百度地图,系统将用户输入的地址转化为经纬度,再通过经纬度计算哪一家店铺离用户地址最近,将寻主信息推送给该门店,让店铺相关工作人员处理寻主消息。
    我们设计了三个表:宠物表,宠物类型表,宠物详情表,
    在这里插入图片描述
 

public void publish(SearchMasterMsg masterMsg,Long loginInfoId) {

    // 获取对应的user     写一个工具类,获取登录人信息的
    User user = userMapper.loadByLoginInfoId(loginInfoId);
    masterMsg.setUser_id(user.getId());
    // 通过百度地图,添加地址
    // 获取地址,把地址转成 经纬度
    Point point = DistanceUtil.getPoint(masterMsg.getAddress());
    // 获取所有的shop
    List<Shop> shops = shopMapper.loadAll();
    // 获取最近的店铺
    Shop shop = DistanceUtil.getNearestShop(point, shops);
    masterMsg.setShop_id(shop.getId());
    // 保存信息了。
    masterMsgMapper.save(masterMsg);
}


(3) 宠物领养
当用户在访问平台时,会查询数据库并以缩略图的形式展示宠物信息,用户可以点击图片来了解宠物详情,宠物详情界面展示了宠物的基本信息、价格以及宠物描述。管理员可以修改宠物的上下架状态,平台将状态为上架的展示在页面,用户可以在宠物详情页中选择领养该宠物,领养成功后绑定领养用户, 修改宠物状态,创建领养订单。

@Override
public PageList<SearchMasterMsg> processed(SearchMasterMsgQuery query, Long id) {

        query.setState(1);
        //根据loginId查询emp,是否有shopId
        Employee employee= employeeMapper.findByLoginId(id);
        if(employee.getShop_id()!=null){
            query.setShop_id(employee.getShop_id());
        }
        return super.queryData(query);
    }


@Override
public PageList<SearchMasterMsg> pending(SearchMasterMsgQuery query, Long id) {
    query.setState(0);
    //根据loginId查询emp,是否有shopId
    Employee employee= employeeMapper.findByLoginId(id);
    if(employee.getShop_id()!=null){
        query.setShop_id(employee.getShop_id());
    }
    return super.queryData(query);
}
@Transactional
@Override
public void handle(Pet pet, Long id) {
    //更新状态 state=1
    pet.setState(1);
    masterMsgMapper.updateStateByMsgId(pet.getSearch_master_msg_id());
    //保存t_pet
    petMapper.save(pet);
    //保存t_petdetail
    PetDetail detail = pet.getDetail();
    if(detail!=null){
        detail.setPet_id(pet.getId());
        petDetailMapper.save(detail);
    }
}

2.用户模块
(1) 用户注册
注册方式为手机号注册,当用户输入手机号并点击发送验证码时,后台会生成一个随机字符串也就是验证码设置一个过期时间存入redis,并设置一分钟的重发时间,当用户在一分钟后过期时间内点击重新发送,会将过期时间重置(验证码不重置)。将这个验证码通过短信的方式发送给用户,当用户输入验证码进行登录时,后台会将这个验证码与存入redis中的随机字符串进行比对,当没有过期并且相同时,注册成功并跳转页面;没有过期并且不相同时,系统提示验证码输入错误。
(2) 用户登录:
账号登录:用户和管理员登录是同一个接口,通过前端传过来的type判断是用户还是管理员,然后跳转不同的页面。用户是一张表,管理员是一张表,然后我们还做了一个登录表,登录表里面是所有用户和管理员的登录账号和密码,因为管理员也可以登录我们的网站享受服务,所以有可能一个手机或邮箱既是用户又是管理员。为了区分这种登录账号到底是要登录到后台还是网站,所以我们登录表里面有一个type字段,区分该账号到底是用户还是管理员。登录成功,用uuid生成了一个随机数,将该随机数作为key,用户信息作为value存入redis,然后传到前端,前台取名为token会将它放到localStorage里面,并且我们在每次发起请求到后台时,都会在请求头中放入该token,在后台的拦截器中,我们会获取每一个请求的token,如果没有token或者通过该token在redis中没有获取到相应的用户信息,我们都认为它没有登录,然后返回前台,否则就放行该请求。除了登录和注册接口,其他的会被拦截。
三方登录(微信二维码登录):用户点击微信登录后,向微信官方发送一个请求,微信收到请求后返回一个二维码,用户扫描二维码点击确认以后,跳转到后台,后台根据前台传入的openid查找用户,后台判断是否已经绑定,如果绑定直接免密登录,没有绑定则跳转到绑定界面登录,绑定接口判断用户存不存在,存在就绑定,不存在就新建一个User绑定

 

用户地址管理:因为同一个用户存在使用多个地址的情况,所以我们创建了一个表来存储用户的地址信息。表中user_id = user表的id crud

个人总结:

这是一个非常具有挑战性的项目,我们第一次做基于springboot的前后端分离全栈项目,里面运用了很多现在使用非常广泛的技术:
前端使用了Vue技术栈: nodejs npm webpack 路由 elmentui
后端的技术更多FastDFS,Redis,Springboot,短信消息,百度地图,微信三方登录
而部署则是用到了docker容器引擎,它的功能比起传统虚拟机来说强大了不少,在部署阶段使用了nginx解决跨域问题。
在这个项目中,我们学习了这些技术,但运用的不是很熟练,后续还是需要多加练习,加强业务能力
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值