提交 052fc02f 编写于 作者: rushui.chen's avatar rushui.chen

20190911 退出登录获取随机token

上级 03bb4100
流水线 #14347 已失败 于阶段
in 0 second
package com.pica.cloud.account.account.server.controller;
import com.pica.cloud.account.account.server.entity.AccountUser;
import com.pica.cloud.account.account.server.entity.Doctor;
import com.pica.cloud.account.account.server.enums.AccountExceptionEnum;
import com.pica.cloud.account.account.server.exception.AccountException;
import com.pica.cloud.account.account.server.service.DoctorService;
import com.pica.cloud.foundation.entity.PicaResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* Created on 2019/9/10 18:51
* author:crs
* Description:云鹊医 获取用户信息资源
*/
@Api(description = "云鹊医用户信息信息资源")
@RestController
@RequestMapping("/doctor")
public class DoctorController extends AccountBaseController {
@Autowired
private DoctorService doctorService;
@ApiOperation("获取医生信息用接口")
@GetMapping(value = "/info", produces = "application/json;charset=utf-8")
public PicaResponse<Doctor> getDoctorInfo() {
AccountUser accountUser = null;
try {
accountUser = super.getAccountUser();
} catch (Exception e) {
e.printStackTrace();
throw new AccountException(AccountExceptionEnum.PICA_LOGIN_AGAIN);
}
Integer userId = accountUser.getId();
Doctor doctorInfo = doctorService.getDoctorInfo(userId);
return PicaResponse.toResponse(doctorInfo);
}
@ApiOperation("修改医生信息接口")
@PutMapping(value = "/info", produces = "application/json;charset=utf-8")
public PicaResponse modifyDoctorInfo(@RequestBody Doctor doctor) {
AccountUser accountUser = null;
try {
accountUser = super.getAccountUser();
} catch (Exception e) {
e.printStackTrace();
throw new AccountException(AccountExceptionEnum.PICA_LOGIN_AGAIN);
}
Integer userId = accountUser.getId();
doctor.setId(userId);
doctorService.modifyDoctorInfo(doctor);
return PicaResponse.toResponse();
}
//TODO: 2019/9/11 doctor服务已经有这两个接口了 暂时不需要提供
}
package com.pica.cloud.account.account.server.controller;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RestController;
/**
* Created on 2019/9/10 18:51
* author:crs
* Description:云鹊医 获取用户信息资源
*/
@Api(description = "云鹊医用户信息信息资源")
@RestController
public class DoctorInfoController {
//获取用户信息接口
//修改用户信息接口
}
......@@ -3,13 +3,17 @@ package com.pica.cloud.account.account.server.controller;
import com.pica.cloud.account.account.server.entity.EncryptEntity;
import com.pica.cloud.account.account.server.entity.LogLoginEntity;
import com.pica.cloud.account.account.server.enums.AccountExceptionEnum;
import com.pica.cloud.account.account.server.enums.AccountTypeEnum;
import com.pica.cloud.account.account.server.exception.AccountException;
import com.pica.cloud.account.account.server.log.AccountLogEntityUtils;
import com.pica.cloud.account.account.server.log.AccountLogUtils;
import com.pica.cloud.account.account.server.req.BaseRequest;
import com.pica.cloud.account.account.server.service.LoginService;
import com.pica.cloud.account.account.server.service.TokenService;
import com.pica.cloud.account.account.server.util.AccountUtils;
import com.pica.cloud.account.account.server.util.CryptoUtil;
import com.pica.cloud.foundation.entity.PicaException;
import com.pica.cloud.foundation.entity.PicaResponse;
import com.pica.cloud.foundation.redis.ICacheClient;
import io.swagger.annotations.Api;
......@@ -22,6 +26,8 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
@Api(description = "登录资源")
@RestController
public class LoginController extends AccountBaseController {
......@@ -39,6 +45,9 @@ public class LoginController extends AccountBaseController {
@Autowired
private AccountUtils accountUtils;
@Autowired
private TokenService tokenService;
/**
* 密码登录接口
*
......@@ -127,9 +136,8 @@ public class LoginController extends AccountBaseController {
return PicaResponse.toResponse();
}
/**
* 退出登录接口
* 退出登录接口,返回一个随机token
*
* @return
*/
......@@ -139,15 +147,16 @@ public class LoginController extends AccountBaseController {
//只有在登录状态下才能调用此接口;
String token = super.getToken();
if (StringUtils.isNotEmpty(token)) {
Integer id = super.getAcctId();
redisClient.deleteToken(token);
Map<String, Object> headersMap = super.getHeaders();
String newToken = tokenService.getToken(headersMap);
//记录登录日志
LogLoginEntity entity = AccountLogEntityUtils.getLogLoginEntity(id, super.getProductType(), super.getSourceType(),
LogLoginEntity entity = AccountLogEntityUtils.getLogLoginEntity(super.getAcctId(), super.getProductType(), super.getSourceType(),
AccountTypeEnum.LOGIN_OUT.getCode(), super.getIpAddr(), AccountTypeEnum.LOGIN_STATUS_SUCCESS.getCode(), AccountTypeEnum.LOG_TYPE_LOGIN.getCode());
picaLogUtils.info(entity);
if (redisClient.deleteToken(token)) {
return PicaResponse.toResponse();
}
return PicaResponse.toResponse(newToken);
} else {
throw new AccountException(AccountExceptionEnum.PICA_LOGIN_AGAIN);
}
return PicaResponse.toResponse();
}
}
package com.pica.cloud.account.account.server.controller;
import com.aliyun.oss.common.utils.DateUtil;
import com.pica.cloud.account.account.server.entity.AccountUser;
import com.pica.cloud.account.account.server.entity.AccountPatientInfoEntity;
import com.pica.cloud.account.account.server.entity.AccountUser;
import com.pica.cloud.account.account.server.entity.EncryptEntity;
import com.pica.cloud.account.account.server.req.PatientReq;
import com.pica.cloud.account.account.server.service.PatientInfoService;
import com.pica.cloud.account.account.server.util.CryptoUtil;
import com.pica.cloud.foundation.entity.PicaResponse;
import com.pica.cloud.foundation.utils.utils.StringUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.beanutils.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.Date;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@Api(description = "云鹊健康用户信息信息资源")
@RestController
......@@ -28,8 +23,6 @@ public class PatientInfoController extends AccountBaseController {
@Autowired
private PatientInfoService patientInfoService;
/**
* 获取用户信息接口
*
......
package com.pica.cloud.account.account.server.controller;
import com.pica.cloud.account.account.server.constants.Constants;
import com.pica.cloud.account.account.server.service.TokenService;
import com.pica.cloud.foundation.entity.PicaResponse;
import com.pica.cloud.foundation.redis.ICacheClient;
import com.pica.cloud.foundation.utils.entity.PicaUser;
import com.pica.cloud.foundation.utils.utils.CommonUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
import java.util.Map;
import java.util.UUID;
import static com.pica.cloud.foundation.utils.utils.json.Object2Map.objectToMapString;
/**
* Created on 2019/9/10 9:35
......@@ -29,36 +20,14 @@ import static com.pica.cloud.foundation.utils.utils.json.Object2Map.objectToMapS
public class TokenController extends AccountBaseController {
@Autowired
@Qualifier("cacheMigrateClient")
private ICacheClient redisClient;
private TokenService tokenService;
@ApiOperation(value = "获取token接口")
@GetMapping(value = "/token")
public PicaResponse<String> getRandomToken() {
Map<String, Object> headersMap = super.getHeaders();
String mobile = new StringBuilder("9").append(CommonUtil.getRandom(10)).toString();
headersMap.put(Constants.HEADER_MOBILE, mobile);
if (!CollectionUtils.isEmpty(headersMap)) {
PicaUser picaUser = new PicaUser();
picaUser.setCreated_time(new Date());
picaUser.setMobile((String) headersMap.get(Constants.HEADER_MOBILE));
picaUser.setName(Constants.HEADER_USER_TYPE);
picaUser.setId(0);
picaUser.setBrowser_ver((String) headersMap.get(Constants.HEADER_BROWSER));
picaUser.setOs_name((String) headersMap.get(Constants.HEADER_OPERATOR_SYSTEM));
picaUser.setTerminal_type((String) headersMap.get(Constants.HEADER_TERMINAL_TYPE));
picaUser.setIp_addr((String) headersMap.get(Constants.HEADER_IP));
try {
Map<String, String> map = objectToMapString(Constants.TIME_FORMAT, picaUser, new String[0]);
map.put(Constants.HEADER_SYS_CODE, Constants.HEADER_SYS_SOURCE);
map.put(Constants.HEADER_GUEST_ID, UUID.randomUUID().toString().replace("-", "").toUpperCase());
String token = redisClient.saveToken(map, 21600);
return PicaResponse.toResponse(token);
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
String token = tokenService.getToken(headersMap);
return PicaResponse.toResponse(token);
}
}
package com.pica.cloud.account.account.server.mapper;
import com.pica.cloud.account.account.server.entity.DoctorEntity;
/**
* Created on 2019/9/10 17:48
* author:crs
* Description:查询医生信息
*/
public interface DoctorInfoMapper {
import com.pica.cloud.account.account.server.entity.Doctor;
import com.pica.cloud.account.account.server.entity.DoctorEntity;
public interface DoctorMapper {
/**
* 获取医生信息
*
......@@ -26,5 +22,31 @@ public interface DoctorInfoMapper {
*/
Long selectUserIdByAcctId(Integer acctId);
/**
* 通过id获取医生信息
*
* @param id
* @return
*/
Doctor selectByPrimaryKey(Integer id);
/**
* 更新医生信息
*
* @param record
* @return
*/
int updateByPrimaryKeySelective(Doctor record);
int deleteByPrimaryKey(Integer id);
int insert(Doctor record);
int insertSelective(Doctor record);
int updateByPrimaryKey(Doctor record);
}
}
\ No newline at end of file
package com.pica.cloud.account.account.server.service;
import com.pica.cloud.account.account.server.entity.Doctor;
/**
* Created on 2019/9/11 11:01
* author:crs
* Description:医生信息接口
*/
public interface DoctorService {
/**
* 获取用户信息
*
* @param id 用户id
* @return
*/
Doctor getDoctorInfo(Integer id);
/**
* 修改医生信息
*
* @param doctor 待修改数据
*/
void modifyDoctorInfo(Doctor doctor);
}
package com.pica.cloud.account.account.server.service;
import java.util.Map;
/**
* Created on 2019/9/11 11:52
* author:crs
* Description:获取随机token
*/
public interface TokenService {
String getToken(Map<String, Object> map);
}
package com.pica.cloud.account.account.server.service.impl;
import com.pica.cloud.account.account.server.entity.Doctor;
import com.pica.cloud.account.account.server.mapper.DoctorMapper;
import com.pica.cloud.account.account.server.service.DoctorService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
/**
* Created on 2019/9/11 11:02
* author:crs
* Description:医生相关Service
*/
@Service
public class DoctorServiceImpl implements DoctorService {
@Autowired
private DoctorMapper doctorMapper;
@Override
public Doctor getDoctorInfo(Integer id) {
return doctorMapper.selectByPrimaryKey(id);
}
@Override
public void modifyDoctorInfo(Doctor doctor) {
doctor.setModifyTime(new Date());
doctorMapper.insertSelective(doctor);
}
}
......@@ -56,7 +56,7 @@ public class LoginServiceImpl implements LoginService {
private RegisterService registerService;
@Autowired
private DoctorInfoMapper doctorInfoMapper;
private DoctorMapper doctorInfoMapper;
@Autowired
private AccountUtils accountUtils;
......
package com.pica.cloud.account.account.server.service.impl;
import com.pica.cloud.account.account.server.constants.Constants;
import com.pica.cloud.account.account.server.service.TokenService;
import com.pica.cloud.foundation.entity.PicaResponse;
import com.pica.cloud.foundation.redis.ICacheClient;
import com.pica.cloud.foundation.utils.entity.PicaUser;
import com.pica.cloud.foundation.utils.utils.CommonUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.Date;
import java.util.Map;
import java.util.UUID;
import static com.pica.cloud.foundation.utils.utils.json.Object2Map.objectToMapString;
/**
* Created on 2019/9/11 13:10
* author:crs
* Description:获取随机token
*/
@Service
public class TokenServiceImpl implements TokenService {
@Autowired
@Qualifier("cacheMigrateClient")
private ICacheClient redisClient;
@Override
public String getToken(Map<String, Object> headersMap) {
String mobile = new StringBuilder("9").append(CommonUtil.getRandom(10)).toString();
headersMap.put(Constants.HEADER_MOBILE, mobile);
if (!CollectionUtils.isEmpty(headersMap)) {
PicaUser picaUser = new PicaUser();
picaUser.setCreated_time(new Date());
picaUser.setMobile((String) headersMap.get(Constants.HEADER_MOBILE));
picaUser.setName(Constants.HEADER_USER_TYPE);
picaUser.setId(0);
picaUser.setBrowser_ver((String) headersMap.get(Constants.HEADER_BROWSER));
picaUser.setOs_name((String) headersMap.get(Constants.HEADER_OPERATOR_SYSTEM));
picaUser.setTerminal_type((String) headersMap.get(Constants.HEADER_TERMINAL_TYPE));
picaUser.setIp_addr((String) headersMap.get(Constants.HEADER_IP));
try {
Map<String, String> map = objectToMapString(Constants.TIME_FORMAT, picaUser, new String[0]);
map.put(Constants.HEADER_SYS_CODE, Constants.HEADER_SYS_SOURCE);
map.put(Constants.HEADER_GUEST_ID, UUID.randomUUID().toString().replace("-", "").toUpperCase());
String token = redisClient.saveToken(map, 21600);
return token;
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
}
......@@ -5,7 +5,7 @@ import com.pica.cloud.account.account.server.entity.AccountPatientInfoEntity;
import com.pica.cloud.account.account.server.enums.AccountExceptionEnum;
import com.pica.cloud.account.account.server.enums.AccountTypeEnum;
import com.pica.cloud.account.account.server.mapper.AccountPatientInfoMapper;
import com.pica.cloud.account.account.server.mapper.DoctorInfoMapper;
import com.pica.cloud.account.account.server.mapper.DoctorMapper;
import com.pica.cloud.account.account.server.req.BaseRequest;
import com.pica.cloud.foundation.entity.PicaException;
import com.pica.cloud.foundation.entity.PicaResultCode;
......@@ -31,7 +31,7 @@ public class AccountUtils {
private AccountPatientInfoMapper accountPatientInfoMapper;
@Autowired
private DoctorInfoMapper doctorInfoMapper;
private DoctorMapper doctorInfoMapper;
private static final String AUTH_CODE_PREFIX = "authCode-";
......
......@@ -51,7 +51,7 @@ public class CryptoUtil {
/**
* 解密数据
*
* @param encryptEntity
* @param encryptEntity·
* @return
* @throws Exception
*/
......
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.pica.cloud.account.account.server.mapper.DoctorInfoMapper">
<!--根据手机号获取数据-->
<select id="getDoctorInfoByMobile" resultType="com.pica.cloud.account.account.server.entity.DoctorEntity"
parameterType="java.lang.String">
SELECT aa.id, aa.sex, aa.unionid, aa.name, aa.mobile_phone, aa.status, aa.type, aa.hospital_id, aa.department_id,
aa.title_id, ifnull(bb.name,aa.hospital) as hospital,
ifnull(pde.name,aa.department) as department, ifnull(pt.name,aa.title) as title, aa.cert_image_url,
aa.avatar_image_url, aa.auth_time, aa.invite_start_time, aa.honor, aa.skills, aa.thumb_up_num, aa.email,
aa.qrcode, aa.nickname, aa.personal_sign, aa.delete_flag, aa.creat_id, aa.creat_time, aa.modify_id,
aa.modify_time, aa.praise_num, aa.password, aa.info, aa.rank, aa.province, aa.city, aa.county,
aa.province_name, aa.city_name, aa.county_name,
aa.invite_code, aa.gaoxueya_password, aa.sms_send_num, aa.total_sms_send_num, aa.entire_flag, aa.doctor_project_type,
aa.administer_title_id, aa.administer_title,
pded.school_name, pded.major_id, pded.major_name, pded.education_id, pded.education_name, pded.year
FROM
p_doctor aa
left join
p_hospital bb
on aa.hospital_id = bb.id and bb.delete_flag=1
left join
p_title pt
on aa.title_id = pt.title_id
left join
p_department pde
on aa.department_id = pde.id
left join
p_doctor_education pded
on pded.doctor_id = aa.id
where aa.mobile_phone = #{mobile}
and aa.delete_flag = 1
limit 0,1
</select>
<!--通过账户id查询用户信息-->
<select id="selectUserIdByAcctId" parameterType="java.lang.Integer">
SELECT id
FROM p_doctor
where acct_id = #{acctId}
and delete_flag = 1
</select>
</mapper>
\ No newline at end of file
此差异已折叠。
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册