|
|
|
|
package com.jingcheng.template.service.impl;
|
|
|
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
|
import com.jingcheng.template.constants.Constants;
|
|
|
|
|
import com.jingcheng.template.mapper.*;
|
|
|
|
|
import com.jingcheng.template.model.*;
|
|
|
|
|
import com.jingcheng.template.service.UsersService;
|
|
|
|
|
import com.jingcheng.template.util.*;
|
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
|
import org.apache.shiro.SecurityUtils;
|
|
|
|
|
import org.apache.shiro.subject.Subject;
|
|
|
|
|
import org.slf4j.Logger;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
|
import java.util.Date;
|
|
|
|
|
import java.util.UUID;
|
|
|
|
|
|
|
|
|
|
@Service("usersService")
|
|
|
|
|
@Transactional
|
|
|
|
|
public class UsersServiceImpl extends BaseServiceImpl<UsersMapper, Users> implements UsersService<Users> {
|
|
|
|
|
@Resource
|
|
|
|
|
UsersMapper usersMapper;
|
|
|
|
|
@Value("${weixin.accessTokenUrl}")
|
|
|
|
|
private String accessTokenUrl;
|
|
|
|
|
@Value("${weixin.appId}")
|
|
|
|
|
private String appId;
|
|
|
|
|
@Value("${weixin.appSecret}")
|
|
|
|
|
private String appSecret;
|
|
|
|
|
@Value("${weixin.getWxUserInfoUrl}")
|
|
|
|
|
private String getWxUserInfoUrl;
|
|
|
|
|
|
|
|
|
|
Logger logger = LogUtils.getBussinessLogger();
|
|
|
|
|
public Users selectByUserNoOrOpenId(String key) {
|
|
|
|
|
Users caseUser = new Users();
|
|
|
|
|
caseUser.setUserNo(key);
|
|
|
|
|
caseUser = usersMapper.selectOne(caseUser);
|
|
|
|
|
if (null == caseUser) {
|
|
|
|
|
caseUser = new Users();
|
|
|
|
|
caseUser.setOpenId(key);
|
|
|
|
|
caseUser = usersMapper.selectOne(caseUser);
|
|
|
|
|
}
|
|
|
|
|
return caseUser;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public Users findByNo(String userNo) {
|
|
|
|
|
Users users = new Users();
|
|
|
|
|
users.setUserNo(userNo);
|
|
|
|
|
return usersMapper.selectOne(users);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public Users currentUser() {
|
|
|
|
|
|
|
|
|
|
Subject subject = SecurityUtils.getSubject();
|
|
|
|
|
String key = JWTUtil.getKey(subject.getPrincipal().toString());
|
|
|
|
|
Users caseUser = selectByUserNoOrOpenId(key);
|
|
|
|
|
return caseUser;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 通过token获取当前用户
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public AjaxResult getUsersByToken(HttpServletRequest request){
|
|
|
|
|
AjaxResult ajaxResult = new AjaxResult();
|
|
|
|
|
String token = request.getHeader("Authorization");
|
|
|
|
|
String user_no = JWTUtil.getKey(token);
|
|
|
|
|
if (StringUtils.isBlank(user_no)){
|
|
|
|
|
ajaxResult.setRetcode(AjaxResult.FAILED);
|
|
|
|
|
ajaxResult.setRetmsg("token过期或者为空");
|
|
|
|
|
return ajaxResult;
|
|
|
|
|
}
|
|
|
|
|
Users user = new Users();
|
|
|
|
|
user.setUserNo(user_no);
|
|
|
|
|
user.setState(1);
|
|
|
|
|
Users users = usersMapper.selectOne(user);
|
|
|
|
|
if(users == null){
|
|
|
|
|
ajaxResult.setRetcode(AjaxResult.FAILED);
|
|
|
|
|
ajaxResult.setRetmsg("未找到该用户");
|
|
|
|
|
return ajaxResult;
|
|
|
|
|
}
|
|
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
|
|
jsonObject.put("users",users);
|
|
|
|
|
ajaxResult.setRetcode(AjaxResult.SUCCESS);
|
|
|
|
|
ajaxResult.setRetmsg("SUCCESS");
|
|
|
|
|
ajaxResult.setData(jsonObject);
|
|
|
|
|
return ajaxResult;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 注册/修改用户 (pc mobile俩用)
|
|
|
|
|
* @param ajaxRequest
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public AjaxResult registUsers(AjaxRequest ajaxRequest,HttpServletRequest httpServletRequest) {
|
|
|
|
|
AjaxResult ajaxResult = new AjaxResult();
|
|
|
|
|
JSONObject data = ajaxRequest.getData();
|
|
|
|
|
|
|
|
|
|
ajaxResult.setRetmsg("SUCCESS");
|
|
|
|
|
ajaxResult.setRetcode(AjaxResult.SUCCESS);
|
|
|
|
|
return ajaxResult;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public AjaxResult getUsersByUsersId(AjaxRequest ajaxRequest) {
|
|
|
|
|
AjaxResult ajaxResult = new AjaxResult();
|
|
|
|
|
JSONObject data = ajaxRequest.getData();
|
|
|
|
|
return ajaxResult;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public AjaxResult registWxUser(String code) {
|
|
|
|
|
AjaxResult ajaxResult = new AjaxResult();
|
|
|
|
|
String getAccessTokenUrl = accessTokenUrl + appId + "&secret=" + appSecret +
|
|
|
|
|
"&code=" + code + "&grant_type=authorization_code";
|
|
|
|
|
String accessTokenResult = HttpRequestUtils.sendGet(getAccessTokenUrl);
|
|
|
|
|
String openId = JSON.parseObject(accessTokenResult).getString("openid");
|
|
|
|
|
|
|
|
|
|
String accessToken = JSON.parseObject(accessTokenResult).getString("access_token");
|
|
|
|
|
String getUserInfoUrl = getWxUserInfoUrl + accessToken + "&openid=" + openId + "&lang=zh_CN";
|
|
|
|
|
String userInfo = HttpRequestUtils.sendGet(getUserInfoUrl);
|
|
|
|
|
String nickName = JSON.parseObject(userInfo).getString("nickname");
|
|
|
|
|
Integer subscribe = JSON.parseObject(userInfo).getInteger("subscribe");
|
|
|
|
|
String headimgurl = JSON.parseObject(userInfo).getString("headimgurl");
|
|
|
|
|
Integer sex = JSON.parseObject(userInfo).getInteger("sex");
|
|
|
|
|
Users findUsers = new Users();
|
|
|
|
|
findUsers.setOpenId(openId);
|
|
|
|
|
findUsers.setState(Constants.STATE_VALID);
|
|
|
|
|
Users users = usersMapper.selectOne(findUsers);
|
|
|
|
|
String usersId ;
|
|
|
|
|
if (null == users){
|
|
|
|
|
Users newUsers = new Users();
|
|
|
|
|
newUsers.setOpenId(openId);
|
|
|
|
|
newUsers.setNickName(nickName);
|
|
|
|
|
newUsers.setHeadImgUrl(headimgurl);
|
|
|
|
|
newUsers.setUserId(UUID.randomUUID().toString());
|
|
|
|
|
newUsers.setSex(sex);
|
|
|
|
|
newUsers.setState(Constants.STATE_VALID);
|
|
|
|
|
newUsers.setCreateDateTime(new Date());
|
|
|
|
|
newUsers.setUpdateDateTime(new Date());
|
|
|
|
|
usersMapper.insert(newUsers);
|
|
|
|
|
usersId = newUsers.getUserId();
|
|
|
|
|
}else {
|
|
|
|
|
users.setNickName(nickName);
|
|
|
|
|
users.setUpdateDateTime(new Date());
|
|
|
|
|
users.setSex(sex);
|
|
|
|
|
users.setHeadImgUrl(headimgurl);
|
|
|
|
|
usersMapper.updateByPrimaryKeySelective(users);
|
|
|
|
|
usersId = users.getUserId();
|
|
|
|
|
}
|
|
|
|
|
JSONObject userJson = new JSONObject();
|
|
|
|
|
userJson.put("usersId",usersId);
|
|
|
|
|
userJson.put("openId",openId);
|
|
|
|
|
userJson.put("subscribe",subscribe);
|
|
|
|
|
userJson.put("nickname",nickName);
|
|
|
|
|
userJson.put("headimgurl",headimgurl);
|
|
|
|
|
userJson.put("sex",sex);
|
|
|
|
|
ajaxResult.setData(userJson);
|
|
|
|
|
ajaxResult.setRetcode(AjaxResult.SUCCESS);
|
|
|
|
|
return ajaxResult;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|