houweiyu 4 лет назад
Родитель
Сommit
d27e1caf29

+ 15 - 0
dinner-core/src/main/java/com/fdage/base/entity/TmUser.java

@@ -68,5 +68,20 @@ public class TmUser implements Serializable {
     @ApiModelProperty(value = "是否删除: 0->未删除; 1->已删除")
     private Integer isDelete;
 
+    @ApiModelProperty(value = "注册时间")
+    private LocalDateTime registerTime;
+
+    @ApiModelProperty(value = "上次登录时间")
+    private LocalDateTime lastLoginTime;
+
+    @ApiModelProperty(value = "上次登录IP")
+    private String lastLoginIp;
+
+    @ApiModelProperty(value = "昵称")
+    private String nickname;
+
+
+    @ApiModelProperty(value = "城市")
+    private String city;
 
 }

+ 15 - 0
dinner-core/src/main/java/com/fdage/base/service/impl/TmUserServiceImpl.java

@@ -1,9 +1,11 @@
 package com.fdage.base.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.fdage.base.entity.TmUser;
 import com.fdage.base.dao.TmUserDao;
 import com.fdage.base.service.ITmUserService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
 /**
@@ -17,4 +19,17 @@ import org.springframework.stereotype.Service;
 @Service
 public class TmUserServiceImpl extends ServiceImpl<TmUserDao, TmUser> implements ITmUserService {
 
+
+    public TmUser getByOpenId(String openId){
+        if(StringUtils.isBlank(openId)){
+            return null;
+        }
+        LambdaQueryWrapper<TmUser> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(TmUser::getWxOpenId , openId);
+        lambdaQueryWrapper.eq(TmUser::getIsDelete , 0);
+        lambdaQueryWrapper.last("limit 1");
+        return getBaseMapper().selectOne(lambdaQueryWrapper);
+    }
+
+
 }

+ 41 - 6
dinner-core/src/main/java/com/fdage/controller/app/AppAuthController.java

@@ -3,10 +3,16 @@ package com.fdage.controller.app;
 import com.alibaba.fastjson.JSONObject;
 import com.fdage.base.dto.FullUserInfo;
 import com.fdage.base.dto.UserInfo;
+import com.fdage.base.entity.TmUser;
+import com.fdage.base.enums.IdPreEnum;
 import com.fdage.base.utils.ApiUserUtils;
 import com.fdage.base.utils.DataUtils;
+import com.fdage.base.utils.JwtUtil;
 import com.fdage.controller.BaseController;
 import fdage.back.sdk.base.entity.Result;
+import fdage.back.sdk.base.enums.ResultCodeEnum;
+import fdage.back.sdk.base.exception.CommonBaseException;
+import fdage.back.sdk.base.uuid.SnowFlakeUUidUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.log4j.Log4j2;
@@ -15,6 +21,7 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.time.LocalDateTime;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -64,14 +71,42 @@ public class AppAuthController extends BaseController {
         if (!fullUserInfo.getSignature().equals(sha1)) {
             return Result.failure("登录失败");
         }
+        String wxOpenId = sessionData.getString("openid");
         //1、新增或者更新用户数据
+        TmUser dbUser = tmUserService.getByOpenId(wxOpenId);
+        if(null == dbUser){
+            //新增用户,自动注册用户数据
+            dbUser = new TmUser();
+            dbUser.setCreateTime(LocalDateTime.now());
+            dbUser.setUpdateTime(LocalDateTime.now());
+            dbUser.setIsDelete(0);
+            dbUser.setAvatar(userInfo.getAvatarUrl());
+            dbUser.setGender(userInfo.getGender());
+            dbUser.setCity(userInfo.getCity());
+            dbUser.setNickname(userInfo.getNickName());
+            dbUser.setRegisterTime(LocalDateTime.now());
+            dbUser.setUserName(userInfo.getNickName());
+            dbUser.setWxTitle(userInfo.getNickName());
+            dbUser.setWxOpenId(wxOpenId);
+            dbUser.setWxAvatar(userInfo.getAvatarUrl());
+            dbUser.setId(SnowFlakeUUidUtils.generaUUid(null , null , IdPreEnum.USER_PRE.getPre()));
+            if(!tmUserService.save(dbUser)){
+                throw new CommonBaseException(ResultCodeEnum.D101 , "建立用户信息失败导致登录失败");
+            }
+        }else{
+            //需要更新登录ip吗?
+            dbUser.setLastLoginIp(getClientIp());
+            dbUser.setLastLoginTime(LocalDateTime.now());
+            dbUser.setUpdateTime(LocalDateTime.now());
+            tmUserService.updateById(dbUser);
+        }
+        //2、生成token返回给小程序,token有效期为1天
+        String token = JwtUtil.createJWT(86400000 , dbUser.getId());
 
+        //3、返回店铺列表给前端 TODO:要这么做吗?还是直接调用获取列表接口即可
 
-        //2、生成token返回给小程序
-
-
-        //3、返回店铺列表给前端?
-
-        return Result.success();
+        Map<String , Object> resultMap = new HashMap<>();
+        resultMap.put("token" , token);
+        return Result.success(resultMap);
     }
 }