提交 8f53065c 编写于 作者: rushui.chen's avatar rushui.chen

20190830 微信相关接口

上级 1870db71
流水线 #13835 已失败 于阶段
in 1 second
......@@ -13,6 +13,7 @@ import com.pica.cloud.account.account.server.util.AccountUtils;
import com.pica.cloud.account.account.server.util.CryptoUtil;
import com.pica.cloud.foundation.entity.PicaResponse;
import com.pica.cloud.foundation.redis.ICacheClient;
import com.pica.cloud.foundation.utils.utils.StringUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang.StringUtils;
......@@ -25,7 +26,7 @@ import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
@Api("登录资源")
@Api(description = "登录资源")
@RestController
public class LoginController extends AccountBaseController {
......@@ -80,6 +81,17 @@ public class LoginController extends AccountBaseController {
return PicaResponse.toResponse(json);
}
@ApiOperation("微信登录接口")
@PostMapping(value = "/login/wechat")
public PicaResponse loginByWeChat(@RequestBody EncryptEntity entity) throws Exception {
BaseRequest request = CryptoUtil.decrypt(entity, BaseRequest.class);
request.setProductType(super.getProductType());
request.setSourceType(super.getSourceType());
request.setLoginIp(super.getIpAddr());
String result = loginService.loginByWeChat(request);
return PicaResponse.toResponse(result);
}
/**
* 退出登录接口
*
......@@ -114,4 +126,35 @@ public class LoginController extends AccountBaseController {
}
return null;
}
/**
* 绑定微信接口
*
* @param entity
* @return
* @throws Exception
*/
@ApiOperation("绑定微信接口")
@PostMapping("/login/wechat/bind")
public PicaResponse<String> bindWeChat(@RequestBody EncryptEntity entity) throws Exception {
BaseRequest request = CryptoUtil.decrypt(entity, BaseRequest.class);
String weChatCode = request.getWeChatCode();
request.setProductType(super.getProductType());
// TODO: 2019/8/29 绑定微信接口
return null;
}
@ApiOperation("微信解除绑定接口")
@PostMapping("/login/wechat/unbind")
public PicaResponse unbindWeChat(@RequestBody EncryptEntity entity) throws Exception {
String token = super.getToken();
if (!StringUtil.isEmpty(redisClient.get(token))) {
//说明用户登录状态,//联合登录表中
loginService.unbindWeChat(super.getAcctId());
}
return PicaResponse.toResponse();
}
}
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.EncryptEntity;
import com.pica.cloud.account.account.server.enums.EnumsType;
import com.pica.cloud.account.account.server.enums.ExceptionType;
import com.pica.cloud.account.account.server.req.BaseRequest;
import com.pica.cloud.account.account.server.service.ModifyMobileService;
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.sun.javafx.scene.control.skin.TableHeaderRow;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@Api("修改手机号资源")
@Api(description="修改手机号资源")
@RestController
public class ModifyMobileController extends AccountBaseController {
......@@ -32,21 +27,13 @@ public class ModifyMobileController extends AccountBaseController {
@ApiOperation("修改手机号")
@PostMapping("/mobile/modify")
public PicaResponse modifyMobile(@RequestBody EncryptEntity entity) throws Exception {
Integer acctId = null;
try {
AccountUser accountUser = super.getAccountUser();
acctId = accountUser.getAcctId();
} catch (Exception e) {
e.printStackTrace();
throw new PicaException(ExceptionType.PICA_LOGIN_AGAIN.getCode(), ExceptionType.PICA_LOGIN_AGAIN.getMessage());
}
Integer acctId = super.getAcctId();
BaseRequest request = CryptoUtil.decrypt(entity, BaseRequest.class);
String mobile = request.getMobile();
accountUtils.checkMobilePhone(mobile);
accountUtils.checkAuthCode(mobile, EnumsType.SYSCODE_TYPE_MODIFY_MOBILE.getCode() + "", request.getSysCode());
modifyMobileService.modify(acctId, mobile);
return PicaResponse.toResponse("修改成功");
return PicaResponse.toResponse();
}
}
......@@ -19,7 +19,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Api("密码资源")
@Api(description = "密码资源")
@RestController
@RequestMapping("/password")
public class PasswordController extends AccountBaseController {
......
......@@ -15,7 +15,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Api("注册资源")
@Api(description="注册资源")
@RestController
@RequestMapping("/register")
public class RegisterController extends AccountBaseController {
......
package com.pica.cloud.account.account.server.controller;
import com.pica.cloud.account.account.server.entity.AccountInfoEntity;
import com.pica.cloud.account.account.server.entity.AccountUnionEntity;
import com.pica.cloud.account.account.server.entity.EncryptEntity;
import com.pica.cloud.account.account.server.enums.EnumsType;
import com.pica.cloud.account.account.server.enums.ExceptionType;
import com.pica.cloud.account.account.server.mapper.AccountInfoDetailMapper;
import com.pica.cloud.account.account.server.req.BaseRequest;
import com.pica.cloud.account.account.server.service.AccountUnionService;
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 com.pica.cloud.foundation.utils.utils.CommonUtil;
......@@ -19,7 +24,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Api("短信验证码资源")
@Api(description = "短信验证码资源")
@RestController
@RequestMapping(value = "/authCode")
public class SysCodeController extends AccountBaseController {
......@@ -29,6 +34,9 @@ public class SysCodeController extends AccountBaseController {
@Autowired
private AccountInfoDetailMapper accountInfoDetailMapper;
@Autowired
private AccountUnionService accountUnionService;
@Autowired
@Qualifier("cacheMigrateClient")
private ICacheClient cacheClient;
......@@ -37,13 +45,28 @@ public class SysCodeController extends AccountBaseController {
@ApiOperation("获取短信验证码")
@PostMapping(value = "")
public PicaResponse getSysCode(@RequestBody EncryptEntity entity) throws Exception {
BaseRequest request = CryptoUtil.decrypt(entity,BaseRequest.class);
BaseRequest request = CryptoUtil.decrypt(entity, BaseRequest.class);
request.setFlag(0);
AccountUtils.checkMobilePhone(request.getMobile());
processSysCode(request.getMobile(), request.getFlag());
return PicaResponse.toResponse();
}
@ApiOperation("微信获取验证码")
@PostMapping(value = "/authCode/wechat")
public PicaResponse getWChatSysCode(@RequestBody EncryptEntity entity) throws Exception {
BaseRequest request = CryptoUtil.decrypt(entity, BaseRequest.class);
request.setFlag(EnumsType.SYSCODE_TYPE_WE_CHAT.getCode());
AccountUtils.checkMobilePhone(request.getMobile());
AccountUnionEntity accountUnionEntity = accountUnionService.selectInfoByUnionId(request.getUnionId());
if (accountUnionEntity != null) {
processSysCode(request.getMobile(), request.getFlag());
return PicaResponse.toResponse();
}
throw new PicaException(ExceptionType.PICA_UNBIND_MOBILE.getCode(), ExceptionType.PICA_UNBIND_MOBILE.getMessage());
}
/**
* 验证码发送逻辑
*
......
package com.pica.cloud.account.account.server.controller;
import com.pica.cloud.account.account.server.entity.AccountUserInfoEntity;
import com.pica.cloud.account.account.server.entity.EncryptEntity;
import com.pica.cloud.account.account.server.service.UserInfoService;
import com.pica.cloud.account.account.server.util.CryptoUtil;
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.GetMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
@Api("用户信息资源")
@Api(description = "用户信息资源")
@RestController
public class UserInfoController {
public class UserInfoController extends AccountBaseController {
@Autowired
private UserInfoService userInfoService;
/**
* 获取用户信息接口
*
* @return
*/
@ApiOperation("获取用户信息接口")
@GetMapping(value = "/user/info")
public PicaResponse getUserInfo() {
Integer acctId = super.getAcctId();
AccountUserInfoEntity userInfo = userInfoService.getUserInfo(acctId);
return PicaResponse.toResponse(userInfo);
}
/**
* 修改用户信息接口
*
* @return
*/
@ApiOperation("修改用户信息")
@PutMapping(value = "/user/info")
public PicaResponse putUserInfo(@RequestBody EncryptEntity entity) throws Exception {
Integer acctId = super.getAcctId();
AccountUserInfoEntity request = CryptoUtil.decrypt(entity, AccountUserInfoEntity.class);
request.setAcctId(acctId);
userInfoService.updateUserInfo(request);
return PicaResponse.toResponse();
}
}
package com.pica.cloud.account.account.server.entity;
public class WeChatEntity {
//用户唯一标识
private String openid;
//会话密钥
private String session_key;
//用户在开放平台的唯一标识符,在满足 UnionID 下发条件的情况下会返回,详见 UnionID 机制说明。
private String unionid;
//错误码
private String errcode;
// 错误信息
private String errmsg;
public String getOpenid() {
return openid;
}
public void setOpenid(String openid) {
this.openid = openid;
}
public String getSession_key() {
return session_key;
}
public void setSession_key(String session_key) {
this.session_key = session_key;
}
public String getUnionid() {
return unionid;
}
public void setUnionid(String unionid) {
this.unionid = unionid;
}
public String getErrcode() {
return errcode;
}
public void setErrcode(String errcode) {
this.errcode = errcode;
}
public String getErrmsg() {
return errmsg;
}
public void setErrmsg(String errmsg) {
this.errmsg = errmsg;
}
}
......@@ -36,11 +36,18 @@ public enum EnumsType {
UNION_LOGIN_QQ(2, "QQ"),
union_login_blog(3, "微博"),
//微信绑定状态
BIND_STATUS_SUCCESS(1, "已绑定"),
BIND_STATUS_FAILURE(0, "未绑定"),
//日志类型枚举
LOG_TYPE_LOGIN(1, "登录日志"),
LOG_TYPE_PASSWORD(2, "密码更新日志"),
LOG_TYPE_USER_INFO(3, "用户信息更新日志");
private int code;
private String type;
......
......@@ -14,7 +14,8 @@ public enum ExceptionType {
PICA_IMAGE_PASSWORD_ERROR("216511", "图形验证码错误"),
PICA_LOGIN_AGAIN("216512", "请重新登录"),
PICA_PASSWORD_NULL("216513", "密码不能为空"),
PICA_PASSWORD_EQUAL("216514", "旧密码与新密码不能相同");
PICA_PASSWORD_EQUAL("216514", "旧密码与新密码不能相同"),
PICA_UNBIND_MOBILE("216515", "该手机号未绑定微信");
private String code;
......
......@@ -4,12 +4,13 @@ import org.springframework.stereotype.Component;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
@Component
public class PicaLogUtils {
/**
* 开启一个线程池
* 线程池
*/
ExecutorService executor = Executors.newFixedThreadPool(30);
......
......@@ -12,7 +12,17 @@ public interface AccountUnionMapper {
AccountUnionEntity selectByPrimaryKey(Integer id);
AccountUnionEntity selectByUnionId(String unionId);
int updateByPrimaryKeySelective(AccountUnionEntity record);
int updateByPrimaryKey(AccountUnionEntity record);
/**
* 解除绑定关系
* @param acctId
* @return
*/
int updateUnbindByAcctId(Integer acctId);
}
\ No newline at end of file
......@@ -4,28 +4,37 @@ package com.pica.cloud.account.account.server.mapper;
import com.pica.cloud.account.account.server.entity.AccountUserInfoEntity;
public interface AccountUserInfoMapper {
int deleteByPrimaryKey(Integer id);
int insert(AccountUserInfoEntity record);
int insertSelective(AccountUserInfoEntity record);
/**
* 通过用户id查询用户信息
* 通过userId查询居民信息
*
* @param id
* @return
*/
AccountUserInfoEntity selectByPrimaryKey(Integer id);
/**
* 通过账户id查询用户信息
* 通过账户id查询居民信息
*
* @param acctId
* @return
*/
AccountUserInfoEntity selectByAcctId(Integer acctId);
/**
* 更新居民信息接口
*
* @param record
* @return
*/
int updateByPrimaryKeySelective(AccountUserInfoEntity record);
int updateByPrimaryKey(AccountUserInfoEntity record);
int deleteByPrimaryKey(Integer id);
int insert(AccountUserInfoEntity record);
}
\ No newline at end of file
......@@ -19,6 +19,10 @@ public class BaseRequest {
private int sourceType;
@ApiModelProperty("登录ip")
private String loginIp;
@ApiModelProperty("联合id")
private String unionId;
@ApiModelProperty("微信code")
private String weChatCode;
public Integer getAccId() {
return accId;
......@@ -91,4 +95,20 @@ public class BaseRequest {
public void setLoginIp(String loginIp) {
this.loginIp = loginIp;
}
public String getUnionId() {
return unionId;
}
public void setUnionId(String unionId) {
this.unionId = unionId;
}
public String getWeChatCode() {
return weChatCode;
}
public void setWeChatCode(String weChatCode) {
this.weChatCode = weChatCode;
}
}
package com.pica.cloud.account.account.server.service;
import com.pica.cloud.account.account.server.entity.AccountUnionEntity;
public interface AccountUnionService {
/**
* 通过unionId查询绑定信息
*
* @param unionId
* @return
*/
AccountUnionEntity selectInfoByUnionId(String unionId);
}
......@@ -4,7 +4,7 @@ import com.pica.cloud.account.account.server.req.BaseRequest;
public interface LoginService {
/**
* 密码登功能
* 密码登功能
*
* @param request
* @return
......@@ -18,4 +18,20 @@ public interface LoginService {
* @return
*/
String loginAndRegister(BaseRequest request);
/**
* 微信登录
*
* @param baseRequest
*/
String loginByWeChat(BaseRequest baseRequest);
/**
* 解除绑定
*
* @param acctId
*/
void unbindWeChat(Integer acctId);
}
......@@ -4,5 +4,20 @@ import com.pica.cloud.account.account.server.entity.AccountUserInfoEntity;
public interface UserInfoService {
AccountUserInfoEntity insertUserInfo(AccountUserInfoEntity accountUserInfoEntity);
/**
* 更新用户信息接口
*
* @param accountUserInfoEntity
*/
void updateUserInfo(AccountUserInfoEntity accountUserInfoEntity);
/**
* 获取用户信息接口
*
* @param acctId
* @return
*/
AccountUserInfoEntity getUserInfo(Integer acctId);
}
package com.pica.cloud.account.account.server.service.impl;
import com.pica.cloud.account.account.server.entity.AccountUnionEntity;
import com.pica.cloud.account.account.server.mapper.AccountUnionMapper;
import com.pica.cloud.account.account.server.service.AccountUnionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class AccountUnionServiceImpl implements AccountUnionService {
@Autowired
private AccountUnionMapper accountUnionMapper;
@Override
public AccountUnionEntity selectInfoByUnionId(String unionId) {
return accountUnionMapper.selectByUnionId(unionId);
}
}
package com.pica.cloud.account.account.server.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.pica.cloud.account.account.server.entity.Account;
import com.pica.cloud.account.account.server.entity.AccountInfoEntity;
import com.pica.cloud.account.account.server.entity.AccountUserInfoEntity;
import com.pica.cloud.account.account.server.entity.LogLoginEntity;
import com.pica.cloud.account.account.server.entity.*;
import com.pica.cloud.account.account.server.enums.EnumsType;
import com.pica.cloud.account.account.server.enums.ExceptionType;
import com.pica.cloud.account.account.server.log.PicaLogUtils;
import com.pica.cloud.account.account.server.mapper.AccountInfoDetailMapper;
import com.pica.cloud.account.account.server.mapper.AccountUnionMapper;
import com.pica.cloud.account.account.server.mapper.AccountUserInfoMapper;
import com.pica.cloud.account.account.server.req.AccountReq;
import com.pica.cloud.account.account.server.req.BaseRequest;
......@@ -39,6 +37,8 @@ public class LoginServiceImpl implements LoginService {
@Autowired
private AccountUserInfoMapper accountUserInfoMapper;
@Autowired
private AccountUnionMapper accountUnionMapper;
@Autowired
private PicaLogUtils picaLogUtils;
......@@ -151,6 +151,47 @@ public class LoginServiceImpl implements LoginService {
}
}
@Override
public String loginByWeChat(BaseRequest request) {
//todo:微信登录获取信息
WeChatEntity weChatEntity = null;
String unionId = weChatEntity.getUnionid();
//账号逻辑处理
Date currentTime = new Date();
AccountInfoEntity entity = new AccountInfoEntity();
entity.setCreatedTime(currentTime);
entity.setCreatedId(0);
entity.setModifiedId(0);
entity.setModifiedTime(currentTime);
entity.setRegTime(currentTime);
entity.setDeleteFlag(1);
entity.setSex(0);
entity.setRegisterProduct(request.getProductType());
entity.setRegisterSource(request.getSourceType());
accountInfoDetailMapper.insertSelective(entity);
Integer acctId = entity.getId();
//联合登录逻辑的处理
AccountUnionEntity accountUnionEntity = new AccountUnionEntity();
accountUnionEntity.setAcctId(acctId.longValue());
accountUnionEntity.setCreatedId(acctId);
accountUnionEntity.setModifiedId(acctId);
accountUnionEntity.setUnionId(unionId);
accountUnionEntity.setUnionType(EnumsType.UNION_LOGIN_WE_CHAT.getCode());
accountUnionEntity.setModifiedTime(currentTime);
accountUnionEntity.setCreatedTime(currentTime);
accountUnionMapper.insertSelective(accountUnionEntity);
JSONObject jsonObject = new JSONObject();
jsonObject.put("bindFlag", EnumsType.BIND_STATUS_FAILURE.getCode());
jsonObject.put("unionId", unionId);
return jsonObject.toJSONString();
}
@Override
public void unbindWeChat(Integer acctId) {
accountUnionMapper.updateUnbindByAcctId(acctId);
}
//校验验证码
private void checkAuthCode(AccountReq req) {
String flag = StringUtils.isBlank(req.getFlag()) ? "0" : req.getFlag();
......
package com.pica.cloud.account.account.server.service.impl;
import com.pica.cloud.account.account.server.entity.AccountUserInfoEntity;
import com.pica.cloud.account.account.server.mapper.AccountUserInfoMapper;
import com.pica.cloud.account.account.server.service.UserInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
@Service
public class UserInfoServerImpl implements UserInfoService {
@Autowired
private AccountUserInfoMapper accountUserInfoMapper;
@Override
public AccountUserInfoEntity insertUserInfo(AccountUserInfoEntity accountUserInfoEntity) {
return null;
public void updateUserInfo(AccountUserInfoEntity accountUserInfoEntity) {
accountUserInfoEntity.setModifyTime(new Date());
accountUserInfoEntity.setModifyId(accountUserInfoEntity.getAcctId());
accountUserInfoMapper.updateByPrimaryKeySelective(accountUserInfoEntity);
}
//
@Override
public AccountUserInfoEntity getUserInfo(Integer acctId) {
return accountUserInfoMapper.selectByAcctId(acctId);
}
}
......@@ -55,14 +55,14 @@ public class CryptoUtil {
* @return
* @throws Exception
*/
public static BaseRequest decrypt(EncryptEntity encryptEntity,Class zClass) throws Exception {
public static <T> T decrypt(EncryptEntity encryptEntity, Class<T> zClass) throws Exception {
// TODO: 2019/8/27 : 暂时不处理这一块的逻辑
//获取解密密钥
//String decryptKey = RSAUtil.decrypt(encryptEntity.getKey());
//解密数据
//String content = AESUtil.decrypt(decryptKey, encryptEntity.getContent());
//反序列化成对象
BaseRequest request = (BaseRequest) JSONObject.parseObject(encryptEntity.getContent(),zClass);
T request = JSONObject.parseObject(encryptEntity.getContent(), zClass);
return request;
}
......
package com.pica.cloud.account.account.server.util;
public class PicaAccountException extends RuntimeException {
}
......@@ -41,7 +41,7 @@
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer">
select
<include refid="Base_Column_List"/>
from account_user_info
from p_patient
where id = #{id,jdbcType=INTEGER}
</select>
......@@ -49,17 +49,17 @@
<select id="selectByAcctId" resultMap="BaseResultMap" parameterType="java.lang.Integer">
select
<include refid="Base_Column_List"/>
from account_user_info
from p_patient
where acct_id = #{acctId,jdbcType=INTEGER}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
delete from account_user_info
delete from p_patient
where id = #{id,jdbcType=INTEGER}
</delete>
<insert id="insert" parameterType="com.pica.cloud.account.account.server.entity.AccountUserInfoEntity">
insert into account_user_info (id, acct_id, village_name,
insert into p_patient (id, acct_id, village_name,
village_id, town_name, town_id,
county_name, county_id, city_name,
city_id, province_name, province_id,
......@@ -82,7 +82,7 @@
</insert>
<insert id="insertSelective" parameterType="com.pica.cloud.account.account.server.entity.AccountUserInfoEntity"
useGeneratedKeys="true" keyProperty="id">
insert into account_user_info
insert into p_patient
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
......@@ -264,7 +264,7 @@
</insert>
<update id="updateByPrimaryKeySelective"
parameterType="com.pica.cloud.account.account.server.entity.AccountUserInfoEntity">
update account_user_info
update p_patient
<set>
<if test="acctId != null">
acct_id = #{acctId,jdbcType=INTEGER},
......@@ -354,7 +354,7 @@
where id = #{id,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="com.pica.cloud.account.account.server.entity.AccountUserInfoEntity">
update account_user_info
update p_patient
set acct_id = #{acctId,jdbcType=INTEGER},
village_name = #{villageName,jdbcType=VARCHAR},
village_id = #{villageId,jdbcType=BIGINT},
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册