Pārlūkot izejas kodu

微信注册与登录

jz.kai 1 gadu atpakaļ
vecāks
revīzija
39d99eca0b

+ 2 - 0
common/src/main/java/com/jpsoft/employment/modules/base/dao/RegUserDAO.java

@@ -15,4 +15,6 @@ public interface RegUserDAO {
 	int delete(String id);
 	List<RegUser> list();
 	List<RegUser> search(Map<String, Object> searchParams, List<Sort> sortList);
+	RegUser getByPhone(String phone);
+	RegUser getByOpenId(String openId);
 }

+ 2 - 0
common/src/main/java/com/jpsoft/employment/modules/base/service/RegUserService.java

@@ -14,4 +14,6 @@ public interface RegUserService {
 	int delete(String id);
 	List<RegUser> list();
 	Page<RegUser> pageSearch(Map<String, Object> searchParams, int pageNum, int pageSize, boolean count, List<Sort> sortList);
+	RegUser getByPhone(String phone);
+	RegUser getByOpenId(String openId);
 }

+ 10 - 0
common/src/main/java/com/jpsoft/employment/modules/base/service/impl/RegUserServiceImpl.java

@@ -67,4 +67,14 @@ public class RegUserServiceImpl implements RegUserService {
         
         return page;
 	}
+
+	@Override
+	public RegUser getByPhone(String phone) {
+		return regUserDAO.getByPhone(phone);
+	}
+
+	@Override
+	public RegUser getByOpenId(String openId) {
+		return regUserDAO.getByOpenId(openId);
+	}
 }

+ 6 - 0
common/src/main/resources/mapper/base/RegUser.xml

@@ -89,6 +89,12 @@
 	<select id="list" resultMap="RegUserMap">
 		select * from base_reg_user
 	</select>
+	<select id="getByPhone" parameterType="string" resultMap="RegUserMap">
+		select * from base_reg_user where del_flag = 0 and phone_ = #{0} limit 1
+	</select>
+	<select id="getByOpenId" parameterType="string" resultMap="RegUserMap">
+		select * from base_reg_user where del_flag = 0 and open_id = #{0} limit 1
+	</select>
 	<select id="search" parameterType="hashmap" resultMap="RegUserMap">
 		<![CDATA[
 			select * from base_reg_user

+ 142 - 0
web/src/main/java/com/jpsoft/employment/modules/base/api/RegUserApi.java

@@ -0,0 +1,142 @@
+package com.jpsoft.employment.modules.base.api;
+
+import cn.hutool.core.util.StrUtil;
+import com.github.pagehelper.Page;
+import com.jpsoft.employment.exception.CustomException;
+import com.jpsoft.employment.modules.base.entity.RegUser;
+import com.jpsoft.employment.modules.base.service.RegUserService;
+import com.jpsoft.employment.modules.common.dto.MessageResult;
+import com.jpsoft.employment.modules.common.dto.Sort;
+import com.jpsoft.employment.modules.common.utils.DES3;
+import com.jpsoft.employment.modules.common.utils.JwtUtil;
+import com.jpsoft.employment.modules.common.utils.PojoUtils;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
+import org.joda.time.DateTime;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.*;
+
+@RestController
+@RequestMapping("/base/api/regUser")
+public class RegUserApi {
+    private Logger logger = LoggerFactory.getLogger(getClass());
+
+    @Value("${jwt.secret}")
+    private String jwtSecret;
+
+    @Autowired
+    private RegUserService regUserService;
+
+    @PostMapping("saveRegUser")
+    @ApiOperation(value = "一键注册(公开接口)")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name="nickName", value="昵称", required=false, paramType="query"),
+            @ApiImplicitParam(name="realName", value="真实姓名", required=false, paramType="query"),
+            @ApiImplicitParam(name="phone", value="电话号码", required=true, paramType="query"),
+            @ApiImplicitParam(name="openId", value="openId", required=true, paramType="query"),
+            @ApiImplicitParam(name="headImg", value="头像", required=false, paramType="query"),
+    })
+    public MessageResult<Map> saveRegUser(String nickName, String realName, String phone, String openId, String headImg) {
+        MessageResult<Map> messageResult = new MessageResult<>();
+
+        try {
+            if (StrUtil.isBlank(openId)) {
+                throw new Exception("微信标识不存在");
+            }
+
+            if (StrUtil.isBlank(phone)) {
+                throw new Exception("手机号不能为空");
+            }
+
+            RegUser regUser = null;
+            String token = null;
+            if (StringUtils.isNotEmpty(openId)) {
+                regUser = regUserService.getByPhone(phone);
+
+                if (regUser != null) {
+                    regUser.setOpenId(openId);
+                    regUser.setUpdateBy(regUser.getId());
+                    regUser.setUpdateTime(new Date());
+                    regUserService.update(regUser);
+
+                    token = JwtUtil.createToken(jwtSecret, regUser.getId(), DateTime.now().plusHours(6).toDate());
+                } else {
+                    regUser = new RegUser();
+                    regUser.setId(UUID.randomUUID().toString());
+                    regUser.setNickName(nickName);
+                    regUser.setRealName(realName);
+                    regUser.setPhone(phone);
+                    regUser.setOpenId(openId);
+                    regUser.setHeadImg(headImg);
+                    regUser.setDelFlag(false);
+                    regUser.setCreateBy(regUser.getId());
+                    regUser.setCreateTime(new Date());
+                    regUserService.insert(regUser);
+
+                    token = JwtUtil.createToken(jwtSecret, regUser.getId(), DateTime.now().plusHours(6).toDate());
+                }
+            }
+
+            Map<String, Object> map = new HashMap<>();
+            map.put("token", token);
+            map.put("regUser", regUser);
+
+            messageResult.setData(map);
+            messageResult.setResult(true);
+            messageResult.setCode(200);
+        } catch (Exception ex) {
+            ex.printStackTrace();
+            logger.error(ex.getMessage());
+            messageResult.setCode(400);
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
+
+    @GetMapping("getByOpenId")
+    @ApiOperation(value = "登录(公开接口)")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name="openId", value="openId", required=true, paramType="query"),
+    })
+    public MessageResult<Map> getByOpenId(String openId) {
+        MessageResult<Map> msgResult = new MessageResult<>();
+
+        try {
+            RegUser regUser= regUserService.getByOpenId(openId);
+
+            if (regUser != null) {
+                String token = JwtUtil.createToken(jwtSecret, regUser.getId(), DateTime.now().plusDays(7).toDate());
+
+                Map<String, Object> dataMap = new HashMap<String, Object>();
+                dataMap.put("regUser", regUser);
+                dataMap.put("token", token);
+
+                msgResult.setData(dataMap);
+                msgResult.setResult(true);
+            } else {
+                throw new CustomException("openid不存在");
+            }
+        } catch (Exception ex) {
+            if (ex instanceof CustomException) {
+                logger.error(ex.getMessage());
+            } else {
+                logger.error(ex.getMessage(), ex);
+            }
+
+            msgResult.setMessage(ex.getMessage());
+            msgResult.setResult(false);
+        }
+
+        return msgResult;
+    }
+}