|
|
|
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.text.SimpleDateFormat;
|
|
|
|
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.getOpenIdUrl}")
|
|
|
|
private String getOpenIdUrl;
|
|
|
|
@Value("${weixin.appId}")
|
|
|
|
private String appId;
|
|
|
|
@Value("${weixin.appSecret}")
|
|
|
|
private String appSecret;
|
|
|
|
@Value("${weixin.getSubscribeUrl}")
|
|
|
|
private String getSubscribeUrl;
|
|
|
|
@Value("${weixin.getUserInfoUrl}")
|
|
|
|
private String getUserInfoUrl;
|
|
|
|
@Resource
|
|
|
|
private WechatConfigMapper wechatConfigMapper;
|
|
|
|
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 openIdUrl = getOpenIdUrl + appId + "&secret=" + appSecret +
|
|
|
|
"&code=" + code + "&grant_type=authorization_code";
|
|
|
|
String openIdResult = HttpRequestUtils.sendGet(openIdUrl);
|
|
|
|
String openId = JSON.parseObject(openIdResult).getString("openid");
|
|
|
|
String userAccessToken = JSON.parseObject(openIdResult).getString("access_token");
|
|
|
|
// String userInfoUrl = getUserInfoUrl + userAccessToken + "&openid=" + openId + "&lang=zh_CN";
|
|
|
|
// String userInfoResult = HttpRequestUtils.sendGet(userInfoUrl);
|
|
|
|
//获取基础token
|
|
|
|
WechatConfig wechatConfig = wechatConfigMapper.selectByPrimaryKey(1L);
|
|
|
|
String accessToken = wechatConfig.getAccessToken();
|
|
|
|
String subscribeUrl = getSubscribeUrl + accessToken + "&openid=" + openId + "&lang=zh_CN";
|
|
|
|
String subscribeResult = HttpRequestUtils.sendGet(subscribeUrl);
|
|
|
|
Integer subscribe = JSON.parseObject(subscribeResult).getInteger("subscribe");
|
|
|
|
// String nickName = JSON.parseObject(userInfoResult).getString("nickname");
|
|
|
|
// String headimgurl = JSON.parseObject(userInfoResult).getString("headimgurl");
|
|
|
|
// Integer sex = JSON.parseObject(userInfoResult).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.setChances(3);
|
|
|
|
newUsers.setShareTimes(0);
|
|
|
|
newUsers.setDayShareTimes(0);
|
|
|
|
// 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;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void chancesTask() {
|
|
|
|
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
|
logger.info(simpleDateFormat.format(new Date())+ "刷新用户chances");
|
|
|
|
usersMapper.updateChancesTask();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|