用户模块

用户注册

请参

        private String account;
	private String pwd;
	private String name;
	private String wxId;
	@ApiModelProperty(notes="1=买家注册,2=卖家注册")
	private Integer type;

思路: 根据account 查询是否存在;

        不存在就注册.

        存在就返回登录;

这里要注意的是:pwd 加密;

用户登录

请参

/**
	 * Description 用户登录
	 * @author zhaozheng
	 * @Date 2018年12月10日
	 * @param request
	 * @param httpServletRequest
	 * @return ApiResponse
	 */
	@ApiOperation(value = "user_login")
	@RequestMapping(value = "/user/login", method = RequestMethod.POST)
	public ApiResponse user(@RequestBody HashMap<String, Object> request,
			HttpServletRequest httpServletRequest) {
			String account=(String) request.get("account");
			String password=(String) request.get("password");
		return userService.user(account,password);
	}
/**
service 层 
*/
@Override
	public ApiResponse user(String account, String password) {
		
		if (UserFacade.checkUserExist(account, password)) {
			return new ApiResponse(CodeEnum.SUCCESS);
		}
		return new ApiResponse(CodeEnum.FAILED);
	}

/**
facade 层
*/
@Override
	public Boolean checkUserExist(String account, String pwd) {
		Query query=new Query();
		query.addCriteria(Criteria.where("account").is(account).and("pwd").is(pwd));
//mongoTemplate exists方法判断是否存在查询条件的值.存在返回 true 不存在返回false. 此处利用枚举值来管理table名称;
		return mongoTemplate.exists(query, CollectionNameEnum.USER_TABLE.getName());
	}

思路: 根据传入 账号和密码 去数据库查询验证.

成功-->返回token,

不存在-->发挥code码提示

 

用户修改个人资料

请参

/*controller 层 */
@ApiOperation(value = "user_update pwd or name")
	@RequestMapping(value = "/user/{user_id}/update", method = RequestMethod.POST)
	public ApiResponse user(@PathVariable(value = "user_id") String userId, @RequestBody RegisterParam request,
			HttpServletRequest httpServletRequest) {

		return userService.user(userId, request);
	}

/*service 层 */
@Override
	public ApiResponse user(String userId, RegisterParam request) {
		Optional<RegisterParam> optional = Optional.ofNullable(request);
//jdk1.8新特性 Optional 优化的避免空指针异常.
		Optional<String> name = optional.map(user -> user.getName());
		Optional<String> pwd = optional.map(user -> user.getPwd());
		Query query = new Query();
		query.addCriteria(new Criteria().where("_id").is(userId));
		Update update = new Update();
//根据判断 传入name 是否为null 判断是否要更新.
		if (name.isPresent()) {
			update.set("name", request.getName());
		}
//根据判断 传入pwd 是否为null 判断是否要更新.
		if (pwd.isPresent()) {
			update.set("pwd", request.getPwd());
		}
		String collectionName = "wx_user";
//mongoTemplate 的update 方法有很多. 这里使用updateFirst 来更新第一个(如果存在多个的话.)
		UpdateResult result = mongoTemplate.updateFirst(query, update, collectionName);
//UpdateResult 是更新后的返回对象, 其中参数modifyCount 表示更新了几个. 如果大于0 表示更新成功.
		return new ApiResponse(CodeEnum.SUCCESS, result);
	}

/*facade 层 */

思路: 根据 user_id 来判断是否存在用户.

存在-->更新资料

不存在--->返回code码提示信息

这里需要注意的是: 验证用户是否存在,数据量过大(百万/千万)的情况下,再去查询数据库是比较非常耗时的. 所以这里后期会用到

redis缓存中间件,还有Bloom Filter(布隆过滤器).bloom filter文章链接: (判断一个元素在亿级数据中是否存在 )

来优化这里用户登录;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值