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 implements UsersService { @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; } }