• 某项目用户修改昵称功能实现及测试


    某某项目用户信息修改功能实现及测试

    写在前面的话:初入贵圈,菜鸟一枚,分享一些想法,共勉,求轻虐。

    需求:通过restclient插件模拟修改用户信息功能,具体行为:先登录获取用户账户token,通过token找到对应用户信息,并修改用户nickname。PS:部分功能已经封装好,这里正在附录展示直接相关部分;

    app:eclipse(项目框架已搭建好),navicat(查看mySQL数据),restclient插件(用于模拟登录)

    Step1: 写代码,如下

    文件:Bumofang/.../MemberController.java

    package com.fh.controller.bmf.app;
    import ...略 下同
    @Controller("AppMemberController")
    @RequestMapping(value = "/app/user")
    public class MemberController extends AppBaseController {
      @RequestMapping(value = { "/update" }, method = {RequestMethod.POST }, produces = {JSON_UTF8})
        @ResponseBody
    /*login*/
    public Object login(@RequestBody Map<String, String> map) throws Exception { String mobile = map.get("mobile"); if(StringUtils.isBlank(mobile)){ return ResponseMessageEnum.ARGUMENT_EXCEPTION.toString(); } PageData pd = new PageData(); pd.put("MOBILE", mobile); pd = memberService.findByMobile(pd); if(pd == null || pd.isEmpty()){ return ResponseMessageEnum.ERROR_LOGIN.toString(); } String userId = pd.getString("ID"); String token = AccessTokenManager.getInstance().putToken(userId); Map<String,Object> tokenMap = new HashMap<String,Object>(); tokenMap.put("token", token); return ResponseMessageEnum.SUCCESS.appendMapToString(tokenMap); }
    /*update 修改用户昵称*/
    public Object update(@RequestBody Map<String, String> map) throws Exception{ //Map<>map方法映射用户输入的信息 
      Object result = getUser();
      
    if(result instanceof ResponseMessageEnum){
        
    return result.toString();
      }
    //通过token获取mySQL里的用户信息,getUser()方法见附录1
      PageData pd = (PageData)result; //将用户数据赋值给pd
      String nickname = map.get("nickname"); //获取restclient插件中update的数据,即{"nickname":"afterTest"}
      pd.put("NICKNAME", nickname); //将{"nickname":"afterTest"}数据传给pd
      try {
       memberService.edit(pd);
    //将pd数据反馈给mySQL数据表
      }

      catch (Exception e) {
        return ResponseMessageEnum.SERVER_SQL_ERROR.toString();
      }
      return ResponseMessageEnum.SUCCESS.appendMapToString(new HashMap<String, Object>());
    //在restclient插件返回{“data":{},"code":200,"msg":"success"},appendMapToString()方法见附录4
    }
    }

    Step2:测试:用restclient插件登录,body参数{"mobile":"15068880000"},返回token值为e59dfcbf7f40662aee9a27f4f0ee8303,如图1,此时对应的mySQL数据如图2

    Step3:测试:用restclient插件模拟update,url:http://localhost:8080/bumofang/app/user/update?token=e59dfcbf7f40662aee9a27f4f0ee8303;body参数{"nickname":"afterTest"},如图3;修改成功后的对应的mySQL数据如图4

    附录1

    文件:Bumofang/.../ AppBaseController.java

    package com.fh.controller.base;
    
    import ...
    
    public class AppBaseController extends BaseController{
    
        @Autowired
    
        protected HttpServletRequest request;
    
        @Resource(name = "memberService")
    
        protected MemberService memberService;
    
        protected Object getUser(){
    
           String token = request.getParameter("token");
    
           if(StringUtils.isBlank(token)){
    
               return ResponseMessageEnum.ARGUMENT_TOKEN_EMPTY;
    
           }  
    
           AccessToken accessToken = AccessTokenManager.getInstance().getToken(token);
    
           if(accessToken == null){
    
               return ResponseMessageEnum.ARGUMENT_TOKEN_INVALID;
    
           }
    
          
    
           String userId = accessToken.getUserId();
    
          
    
           PageData pd = new PageData();
    
           pd.put("ID", userId);
    
           try {
    
               PageData rs = memberService.findById(pd);
    
               if(rs == null || rs.isEmpty()){
    
                  return ResponseMessageEnum.ERROR_USER_NOT_EXIT;
    
               }
    
              
    
               return rs;
    
           } catch (Exception e) {
    
               return ResponseMessageEnum.SERVER_SQL_ERROR;
    
           }
    
          
    
        }
    
     
    
    }

    附录2:

    文件:Bumofang/.../MemberService.java

    package com.fh.service.bmf.member;
    
    @Service("memberService")
    
    public class MemberService { 
    
    public void edit(PageData pd)throws Exception{
    
           dao.update("MemberMapper.edit", pd);  // MemberMapper.edit见附录3
    
        }
    
    }

    附录3::

    文件:Bumofang/.../MemberMapper.xml

    <mapper namespace="MemberMapper">
    
        <!-- 修改 -->
    
        <update id="edit" parameterType="pd">
    
           update  MEMBER
    
               set
    
                  NUMBER = #{NUMBER},
    
                  USERNAME = #{USERNAME},
    
                  PASSWORD = #{PASSWORD},
    
                  NICKNAME = #{NICKNAME},
    
                  AVATAR = #{AVATAR},
    
                  MOBILE = #{MOBILE},
    
                  PROFESSION = #{PROFESSION},
    
                  DEFAULT_AREA = #{DEFAULT_AREA},
    
                  DEFAULT_ADDRESS = #{DEFAULT_ADDRESS},
    
                  REALNAME = #{REALNAME},
    
                  ID_CARD = #{ID_CARD},
    
                  BANK_CARD = #{BANK_CARD},
    
                  STATUS = #{STATUS},
    
                  WECHAT_ID = #{WECHAT_ID},
    
                  QQ_ID = #{QQ_ID},
    
                  WEIBO_ID = #{WEIBO_ID},
    
               ID = ID
    
               where
    
                  ID = #{ID}
    
        </update>
    
    </mapper>

    附录4:

    文件:Bumofang/.../ResponseMessageEnum.java

    package com.fh.common.model;
    
    import ...
    
    public enum ResponseMessageEnum {
    
        public String appendMapToString(Map<String, Object> appendMap) {
    
           Map rsMap = new HashMap();
    
           rsMap.put("data", appendMap);
    
           rsMap.put("code", code);
    
           rsMap.put("msg", this.message);
    
           JSONObject jsonNode = JSONObject.fromObject(rsMap); //将rsMap对象转化为JSON对象,并赋值给jsonNode
    
           return jsonNode.toString(); 
    
        }
    
    }
  • 相关阅读:
    在有跳板机的情况下,SecureCRT自动连接到目标服务器
    JavaScript中使用console调试程序的坑
    Python中docstring文档的写法
    Nginx+uWSGI+Django原理
    uWSGI uwsgi_response_write_body_do(): Connection reset by peer 报错的解决方法
    Python LOGGING使用方法
    Python计算斗牛游戏的概率
    Python垃圾回收机制详解
    PhantomJS实现最简单的模拟登录方案
    如何设置Jquery UI Menu 菜单为横向展示
  • 原文地址:https://www.cnblogs.com/wobuchifanqie/p/6607506.html
Copyright © 2020-2023  润新知