栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

分布式架构搭建拉勾教育PC站-用户模块

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

分布式架构搭建拉勾教育PC站-用户模块

一、环境准备

        1、启动Zookeeper

                进入bin目录

cd  /opt/zookeeper/bin

                启动服务

 ./zkServer.sh start

        2、重启nginx

/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

        3、启动 FastDFS

                启动 FastDFS 的 tracker

/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart

                启动 FastDFS 的 storage

/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart

        4、启动dubbo-admin-master服务终端

                进到注册中心目录

E:dubbodubbo-admin-masterdubbo-admintarget

                启动注册中心

java -jar dubbo-admin-0.0.1-SNAPSHOT.jar

二、服务提供端

        1、User实体类

package entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

import java.util.Date;
import java.io.Serializable;


@Data  //get和set都全部生成了
@AllArgsConstructor //生成全参数的构造方法
@NoArgsConstructor //生成空构造方法
@ToString // 生成toString方法
public class User implements Serializable {
    private static final long serialVersionUID = -16975262897238315L;
    
    private Integer id;
    
    private String name;
    
    private String portrait;
    
    private String phone;
    
    private String password;
    
    private String regIp;
    
    private Object accountNonExpired;
    
    private Object credentialsNonExpired;
    
    private Object accountNonLocked;
    
    private String status;
    
    private Object isDel;
    
    private Date createTime;
    
    private Date updateTime;

}

        2、dao层接口

        UserDao:
package mapper;



import entity.User;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service;


@Service
public interface UserDao {

User login(@Param("phone") String phone,@Param("password") String password);

    
    Integer checkPhone(String phone);

    
    Integer register(@Param("phone") String phone, @Param("password") String password,@Param("nickname") String nickname,@Param("headimg") String headimg);

    
    Integer updateUserInfo(@Param("userid") Integer userid,@Param("headimg") String headimg,@Param("nickname") String nickname);

    
    Integer updatePassword(@Param("userid") Integer userid,@Param("password") String password);

}

        UserDao.xml





    
        
        
        
        
        
        
        
        
        
        
        
        
        
    



        select count(*) from user where phone = #{phone}



        insert  into 'user'
        (`name`,portrait,phone,password,create_time,update_time)
        values
        (#{nickname},#{headimg},#{phone},#{password},sysdate(),sysdate())


    
        update user set name=#{nickname},portrait=#{headimg} where id=#{userid}
    

    
        update user set password=#{password} where id=#{userid}
    



        3、service层接口

        UserService :

package com.lagou.user.service;


import entity.User;
import org.apache.ibatis.annotations.Param;



public interface UserService {

    User login(String phone,String password);

    Integer checkPhone(String phone);

    Integer register(String phone,String password,String nickname,String headimg);

    
    Integer updateUserInfo(Integer userid,String headimg,String nickname);

    
    Integer updatePassword(Integer userid,String password);

}

        UserServiceImpl

package com.lagou.user.service.impl;


import com.alibaba.dubbo.config.annotation.Service;
import com.lagou.user.service.UserService;
import entity.User;
import mapper.UserDao;
import org.springframework.beans.factory.annotation.Autowired;





@Service//暴露服务
public class UserServiceImpl implements UserService {
    @Autowired
    private UserDao userDao;


    public User login(String phone, String password) {
        return userDao.login(phone,password);
    }

    @Override
    public Integer checkPhone(String phone) {
        return userDao.checkPhone(phone);
    }

    @Override
    public Integer register(String phone, String password, String nickname, String headimg) {
        return userDao.register(phone,password,nickname,headimg);
    }

    @Override
    public Integer updateUserInfo(Integer userid, String headimg, String nickname) {
        return userDao.updateUserInfo(userid,headimg,nickname);
    }

    @Override
    public Integer updatePassword(Integer userid, String password) {
        return userDao.updatePassword(userid,password);
    }
}

三、服务消费者

        1、UserService接口

package com.lagou.user.service;

import entity.User;

public interface UserService {

    User login(String phone, String password);

    
    Integer checkPhone(String phone);

    
    Integer register(String phone, String password,String nickname,String headimg);


    
    Integer updateUserInfo(Integer userid,String headimg,String nickname);


    
    Integer updatePassword(Integer userid,String password);
}

         2、UserController 

package com.lagou.user.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import com.lagou.user.service.UserService;
import entity.FileSystem;
import entity.User;
import entity.UserDTO;
import entity.UserVO;
import org.csource.common.MyException;
import org.csource.common.NamevaluePair;
import org.csource.fastdfs.*;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;

import java.io.File;
import java.io.IOException;
import java.util.UUID;

@RestController
@RequestMapping("/user")
public class UserController {

    @Reference//远程消费
    private UserService userService;

    @GetMapping("login")
    public UserDTO login(String phone,String password,String nickname,String headimg){


        UserDTO dto=new UserDTO();
        User user=null;
        System.out.println(phone);
        System.out.println(password);
        // 检测手机号是否注册
        Integer i = userService.checkPhone(phone);
        if(i == 0){
            // 未注册,自动注册并登录
            userService.register(phone, password,nickname,headimg);
            dto.setMessage("手机号尚未注册,系统已帮您自动注册,请牢记密码!");
            user = userService.login(phone, password);
        }else{
            user = userService.login(phone, password);
            if(user == null){
                dto.setState(300); //300表示失败
                dto.setMessage("帐号密码不匹配,登录失败!");
            }else{
                dto.setState(200); //200表示成功
                dto.setMessage("登录成功!");
            }
        }

        dto.setContent(user);
        return dto;
    }


    @PostMapping("/updateUserInfo")
    public UserDTO updateUserInfo(@RequestBody UserVO userVO){
        System.out.println(userVO.getName());
        System.out.println(userVO.getPortrait());
        System.out.println(userVO.getUserid());
        UserDTO dto=new UserDTO();
        Integer integer = userService.updateUserInfo(userVO.getUserid(), userVO.getPortrait(), userVO.getName());
        if (integer==1){
            dto.setState(200);
            dto.setMessage("修改成功");
            dto.setSuccess(true);
        }else {
            dto.setState(300);
            dto.setMessage("修改失败");
            dto.setSuccess(false);
        }
        return dto;
    }
    @PostMapping("/upload")
    public UserDTO upload(MultipartHttpServletRequest request) throws IOException, MyException {
        UserDTO dto=new UserDTO();
        FileSystem fileSystem=new FileSystem();
        //从前端页面获取文件对象
        MultipartFile file=request.getFile("fname");
        // 从文件对象中获取 文件的原始名称
        String originalFilename = file.getOriginalFilename();
        // 通过字符串截取的方式,从文件原始名中获取文件的后缀 1.jpg
        String fileNameSuffix = originalFilename.substring(originalFilename.lastIndexOf(".") + 1);
        // 为了避免文件因为同名而覆盖,生成全新的文件名
        String newFileName = UUID.randomUUID().toString() + "." + fileNameSuffix;
        // 创建web服务器保存文件的目录(预先创建好D:/upload目录,否则系统找不到路径,会抛异常)
        File toSaveFile = new File("D:/upload/" + newFileName);
        // 将路径转换成文件
        file.transferTo(toSaveFile);
        // 获取服务器的绝对路径
        String newFilePath = toSaveFile.getAbsolutePath();
        
        ClientGlobal.initByProperties("config/ fastdfs-client.properties");
        TrackerClient trackerClient = new TrackerClient();
        TrackerServer trackerServer = trackerClient.getConnection();
        StorageServer storageServer = null;
        StorageClient1 client = new StorageClient1(trackerServer, storageServer);
        NamevaluePair[] list = new NamevaluePair[1];
        list[0] = new NamevaluePair("fileName",originalFilename);
        String fileId = client.upload_file1(newFilePath, fileNameSuffix, list);
        trackerServer.close();
        // 封装fileSystem数据对象
        fileSystem.setFileId(fileId);
        fileSystem.setFileName(originalFilename);
        fileSystem.setFilePath(fileId); //已经上传到FastDFS上,通过fileId来访问图片,所以fileId即为文件路径

        dto.setState(200);
        dto.setMessage("图片上传成功");
        dto.setContent(fileSystem);
        return dto;
    }


    @PostMapping("/updatePassword")
    public UserDTO updatePassword(@RequestBody UserVO userVO){
        UserDTO dto=new UserDTO();
        Integer integer = userService.updatePassword(userVO.getUserid(), userVO.getPassword());
        if (integer==1){
            dto.setState(200);
            dto.setMessage("修改成功");
            dto.setSuccess(true);
        }else {
            dto.setState(300);
            dto.setMessage("修改失败");
            dto.setSuccess(false);
        }
        return dto;
    }

}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/322424.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号