zoukankan      html  css  js  c++  java
  • 「小程序JAVA实战」小程序开发注册用户的接口(33)

    转自:https://idig8.com/2018/08/30/xiaochengxujavashizhanxiaochengxukaifazhuceyonghudejiekou33/

    从用户注册接口开始。源码:https://github.com/limingios/wxProgram.git 中的wx-springboot

    工具类

    • 返回统一工具类JSONResult 放入common工程中
    package com.idig8.utils;
    
    /**
     * @Description: 自定义响应数据结构
     *              这个类是提供给门户,ios,安卓,微信商城用的
     *              门户接受此类数据后需要使用本类的方法转换成对于的数据类型格式(类,或者list)
     *              其他自行处理
     *              200:表示成功
     *              500:表示错误,错误信息在msg字段中
     *              501:bean验证错误,不管多少个错误都以map形式返回
     *              502:拦截器拦截到用户token出错
     *              555:异常抛出信息
     */
    public class JSONResult {
    
        // 响应业务状态
        private Integer status;
    
        // 响应消息
        private String msg;
    
        // 响应中的数据
        private Object data;
    
        private String ok;  // 不使用
    
        public static JSONResult build(Integer status, String msg, Object data) {
            return new JSONResult(status, msg, data);
        }
    
        public static JSONResult ok(Object data) {
            return new JSONResult(data);
        }
    
        public static JSONResult ok() {
            return new JSONResult(null);
        }
    
        public static JSONResult errorMsg(String msg) {
            return new JSONResult(500, msg, null);
        }
    
        public static JSONResult errorMap(Object data) {
            return new JSONResult(501, "error", data);
        }
    
        public static JSONResult errorTokenMsg(String msg) {
            return new JSONResult(502, msg, null);
        }
    
        public static JSONResult errorException(String msg) {
            return new JSONResult(555, msg, null);
        }
    
        public JSONResult() {
    
        }
    
        public JSONResult(Integer status, String msg, Object data) {
            this.status = status;
            this.msg = msg;
            this.data = data;
        }
    
        public JSONResult(Object data) {
            this.status = 200;
            this.msg = "OK";
            this.data = data;
        }
    
        public Boolean isOK() {
            return this.status == 200;
        }
    
        public Integer getStatus() {
            return status;
        }
    
        public void setStatus(Integer status) {
            this.status = status;
        }
    
        public String getMsg() {
            return msg;
        }
    
        public void setMsg(String msg) {
            this.msg = msg;
        }
    
        public Object getData() {
            return data;
        }
    
        public void setData(Object data) {
            this.data = data;
        }
    
        public String getOk() {
            return ok;
        }
    
        public void setOk(String ok) {
            this.ok = ok;
        }
    
    }
    
    ````
    
    * 加密类MD5Utils放入common工程中
    ``` java
    package com.idig8.utils;
    
    import java.security.MessageDigest;
    
    import org.apache.commons.codec.binary.Base64;
    
    public class MD5Utils {
    
        /**
         * @Description: 对字符串进行md5加密
         */
        public static String getMD5Str(String strValue) throws Exception {
            MessageDigest md5 = MessageDigest.getInstance("MD5");
            String newstr = Base64.encodeBase64String(md5.digest(strValue.getBytes()));
            return newstr;
        }
    
        public static void main(String[] args) {
            try {
                String md5 = getMD5Str("idig8");
                System.out.println(md5);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    
    
    • org包下面的放入common工程中,主要里面有个Sid的自动生成Id的工具

    service里面增加service

    UserService.java

    package com.idig8.service;
    
    import com.idig8.pojo.Users;
    
    public interface UserService {
    
        /**
         * 判断用户名是否存在
         * @param username
         * @return
         */
        public boolean queryUsernameIsExist(String username);
    
        /**
         * 保存用户
         * @param user
         * @return
         */
        public void saveUser(Users user);
    
    }
    
    

    UserServiceImpl.java

    package com.idig8.service;
    
    import org.n3r.idworker.Sid;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.transaction.annotation.Propagation;
    import org.springframework.transaction.annotation.Transactional;
    
    import com.idig8.mapper.UsersMapper;
    import com.idig8.pojo.Users;
    
    public class UserServiceImpl implements UserService {
    
        @Autowired
        private UsersMapper usersMapper;
    
        @Autowired
        private Sid sid;
    
        @Transactional(propagation =Propagation.SUPPORTS)
        @Override
        public boolean queryUsernameIsExist(String username) {
            Users user = new Users();
            user.setUsername(username);
            Users result = usersMapper.selectOne(user);
            return result==null? false:true;
        }
    
        @Transactional(propagation =Propagation.REQUIRED)
        @Override
        public void saveUser(Users user) {
            String userId =sid.nextShort();
            user.setId(userId);
            usersMapper.insert(user);
        }
    
    }
    
    

    api里面增加controller

    RegistLoginController

    package com.idig8.controller;
    
    import org.apache.commons.lang3.StringUtils;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.RestController;
    
    import com.github.pagehelper.util.StringUtil;
    import com.idig8.pojo.Users;
    import com.idig8.service.UserService;
    import com.idig8.utils.JSONResult;
    import com.idig8.utils.MD5Utils;
    
    @RestController
    public class RegistLoginController {
    
        @Autowired
        private UserService userService;
    
        @PostMapping("/regist")
        public JSONResult regist(@RequestBody Users user) {
            //1.判断用户名和密码不能为空
            if(StringUtils.isBlank(user.getUsername())||StringUtils.isBlank(user.getPassword())) {
                return JSONResult.errorMsg("用户名或密码不能为空");
            }
    
            //2.判断用户名是否存在
            boolean usernameIsExist = userService.queryUsernameIsExist(user.getUsername());
            if(!usernameIsExist) {
                user.setNickname(user.getUsername());
                try {
                    user.setPassword(MD5Utils.getMD5Str(user.getPassword()));
                } catch (Exception e) {
    
                    return JSONResult.errorMsg(e.getMessage());
                }
                user.setFollowCounts(0);
                user.setReceiveLikeCounts(0);
                user.setFansCounts(0);
                userService.saveUser(user);
            }else {
                return JSONResult.errorMsg("用户名或已经存在,请更换在试试!");
            }
    
    
    
            return JSONResult.ok();
        }
    }
    
    

    PS:基本的流程就是先确定业务逻辑,开发service类,开发controller类,common里面都是一些工具。下次说说swagger的使用。

  • 相关阅读:
    解决:oracle+myBatis ResultMap 类型为 map 时返回结果中存在 timestamp 时使用 jackson 转 json 报错
    jackson @ResponseBody 处理日期类型的字段
    spring 中 InitializingBean 接口使用理解
    idea 中如何生成类图
    阿里云centOS 重启后 重启应用步骤
    日期类型 通过JOSN.stringify 后时间倒退8小时问题
    centOS7 下 安装mysql8.x
    Linux下卸载mysql8.x版本
    服务器上 MySql 8.0.16创建远程连接账号、获取初始密码、修改密码、重启命令等
    vue中读取excel中数据
  • 原文地址:https://www.cnblogs.com/sharpest/p/10293907.html
Copyright © 2011-2022 走看看