Pārlūkot izejas kodu

Merge remote-tracking branch 'origin/master'

yanliming 3 gadi atpakaļ
vecāks
revīzija
8f6d9975fe

+ 1 - 0
common/src/main/java/com/jpsoft/employment/modules/job/dao/JobUserDAO.java

@@ -11,6 +11,7 @@ import java.util.Map;
 public interface JobUserDAO {
 	int insert(JobUser entity);
 	int update(JobUser entity);
+	int clearOpenId(String id);
 	int exist(String id);
 	JobUser get(String id);
     JobUser findByOpenId(String openId);

+ 1 - 0
common/src/main/java/com/jpsoft/employment/modules/job/service/JobUserService.java

@@ -13,6 +13,7 @@ public interface JobUserService {
 	int insert(JobUser model);
 	int update(JobUser model);
 	int delete(String id);
+	int clearOpenId(String id);
     JobUser findByOpenId(String openId);
 	JobUser findByPhone(String phone);
 	List<JobUser> list();

+ 5 - 0
common/src/main/java/com/jpsoft/employment/modules/job/service/impl/JobUserServiceImpl.java

@@ -56,6 +56,11 @@ public class JobUserServiceImpl implements JobUserService {
 		return jobUserDAO.delete(id);
 	}
 
+	@Override
+	public int clearOpenId(String id){
+		return jobUserDAO.clearOpenId(id);
+	}
+
 	@Override
 	public boolean exist(String id) {
 		// TODO Auto-generated method stub

+ 3 - 0
common/src/main/resources/mapper/job/JobUser.xml

@@ -209,4 +209,7 @@
 			${sort.name} ${sort.order}
 		</foreach>
 	</select>
+	<update id="clearOpenId" parameterType="string">
+		update job_jobuser set open_id = null where id_ = #{id}
+	</update>
 </mapper>

+ 115 - 0
web/src/main/java/com/jpsoft/employment/modules/mobile/controller/JobUserApiController.java

@@ -713,4 +713,119 @@ public class JobUserApiController {
         return messageResult;
     }
 
+    @PostMapping("getVerifyCodeByTel")
+    @ApiOperation(value = "根据用户手机号获取短信验证码")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "telephone", value = "电话", required = true, paramType = "query"),
+            @ApiImplicitParam(name = "status", value = "是否需要验证(1需要0不需要)", required = true, paramType = "query"),
+    })
+    public MessageResult<String> getVerifyCodeByTel(
+            @RequestParam(value="telephone",defaultValue="") String telephone,
+            @RequestParam(value="status",defaultValue="0") String status,
+            String token,
+            @RequestAttribute  String subject) {
+        MessageResult<String> messageResult = new MessageResult<>();
+
+        try {
+            JobUser jobUser = jobUserService.get(subject);
+            if (jobUser == null) {
+                throw new Exception("未登录!");
+            }
+
+            if("1".equals(status)) {
+                if (!jobUser.getTel().equals(telephone)) {
+                    throw new Exception("号码不符!");
+                }
+            }
+
+            String key = "SMS_" + jobUser.getTel();
+
+            String verifyCode = (String) valueOperations.get(key);
+
+            if (StringUtils.isEmpty(verifyCode)) {
+                verifyCode = SMSUtil.generateNumberString(6);
+                JSONObject verifyCodeJSON = new JSONObject();
+                verifyCodeJSON.put("code", verifyCode);
+
+                messageResult = SMSUtil.send(telephone, "SMS_49390047", verifyCodeJSON.toString());
+
+                //设置当前用户的验证码,5分钟内有效
+                valueOperations.set(key, verifyCode, 10, TimeUnit.MINUTES);
+            }
+
+            messageResult.setResult(true);
+            messageResult.setCode(200);
+        } catch (Exception ex) {
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
+
+    @PostMapping("validateCodeByTel")
+    @ApiOperation(value = "根据用户手机号验证短信验证码")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "telephone", value = "电话", required = true, paramType = "query"),
+            @ApiImplicitParam(name = "verifyCode", value = "验证码", required = true, paramType = "query"),
+    })
+    public MessageResult<String> validateCodeByTel(
+                                           @RequestParam(value="verifyCode",defaultValue="") String verifyCode,
+                                           String telephone,
+                                           String token,
+                                           @RequestAttribute  String subject) {
+        MessageResult<String> messageResult = new MessageResult<>();
+
+        try {
+            String smsKey = "SMS_" + telephone;
+
+            String beforeVerifyCode = (String) valueOperations.get(smsKey);
+
+            if (StringUtils.isEmpty(beforeVerifyCode)) {
+                throw new Exception("验证码已过期!");
+            }
+
+            if (!beforeVerifyCode.equals(verifyCode)) {
+                throw new Exception("验证码错误!");
+            }
+
+            messageResult.setData("正确");
+            messageResult.setResult(true);
+            messageResult.setCode(200);
+        } catch (Exception ex) {
+            log.error(ex.getMessage());
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
+
+    @PostMapping("logout")
+    @ApiOperation(value = "登出")
+    public MessageResult<String> logout(
+            String token,
+            @RequestAttribute  String subject) {
+        MessageResult<String> messageResult = new MessageResult<>();
+
+        try {
+            int updateCount = jobUserService.clearOpenId(subject);
+            if(updateCount > 0) {
+                messageResult.setData("操作成功");
+                messageResult.setResult(true);
+                messageResult.setCode(200);
+            }else{
+                messageResult.setData("操作失败");
+                messageResult.setResult(false);
+                messageResult.setCode(400);
+            }
+        } catch (Exception ex) {
+            log.error(ex.getMessage());
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
+
 }