package com.matrix.system.shopXcx.api;
|
|
import com.alibaba.fastjson.JSON;
|
import com.matrix.biz.bean.BizUser;
|
import com.matrix.biz.dao.BizUserDao;
|
import com.matrix.biz.service.BizUserService;
|
import com.matrix.component.redis.RedisUserLoginUtils;
|
import com.matrix.component.tools.HttpCurlUtil;
|
import com.matrix.component.wechat.externalInterface.weixinUtil.WeixinServiceUtil;
|
import com.matrix.core.pojo.AjaxResult;
|
import com.matrix.core.tools.LogUtil;
|
import com.matrix.core.tools.StringUtils;
|
import com.matrix.core.web.BaseAction;
|
import com.matrix.system.common.constance.AppConstance;
|
import net.sf.json.JSONObject;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
import java.util.Collections;
|
import java.util.Date;
|
|
/**
|
* @description (用户表)
|
* @author jyy
|
* @date 2019-05-31 10:03
|
*/
|
@Controller
|
@RequestMapping(value = "wxapi/user")
|
public class WxUserAction extends BaseAction {
|
|
@Autowired
|
private BizUserService bizUserService;
|
|
|
@Autowired
|
private RedisUserLoginUtils redisUserLoginUtils;
|
@Autowired
|
private BizUserDao bizUserDao;
|
|
|
|
|
|
@Autowired
|
private WeixinServiceUtil weixinServiceUtil;
|
|
@Value("${debug}")
|
private String isDebug;
|
|
/**
|
* 小程序登录
|
*
|
* @author JIANGYOUYAO
|
* @email 935090232@qq.com
|
* @date 2018年5月23日
|
* @param code
|
* @return
|
* @throws Exception
|
*/
|
@RequestMapping(value = "/login/{keys}")
|
public @ResponseBody
|
AjaxResult wxLogin(@PathVariable("keys") String code) throws Exception {
|
AjaxResult res = new AjaxResult();
|
LogUtil.info("code:{}" + code);
|
if (StringUtils.isNotBlank(code)) {
|
String requrl = WeChatApiTools.getXcxLoginUrl(code);
|
String reslutData = HttpCurlUtil.sendGetHttp(requrl, null);
|
JSONObject json = JSONObject.fromObject(reslutData);
|
LogUtil.debug("微信登录获取到登录信息={}", json);
|
|
if(json.containsKey("errcode")){
|
res.setStatus(AjaxResult.STATUS_FAIL);
|
res.setInfo("自动登录失败");
|
LogUtil.debug("微信登录获取到异常信息errcode");
|
return res;
|
}
|
|
String openId = json.getString("openid");
|
String sessionKey = json.getString("session_key");
|
LogUtil.debug("openId={},sessionKey={}", openId, sessionKey);
|
// 查询用户是否存在
|
BizUser bizUser = null;
|
synchronized(this){
|
bizUser = bizUserService.findByOpenId(openId);
|
if (bizUser == null) {
|
// 新增用户
|
bizUser = new BizUser();
|
bizUser.setSessionKey(sessionKey);
|
bizUser.setOpenId(openId);
|
bizUser.setLastLoginTime(new Date());
|
bizUser.setUserType(AppConstance.USER_TYPE_CUSTOMER);
|
bizUserService.add(bizUser);
|
|
} else {
|
bizUser.setSessionKey(sessionKey);
|
bizUser.setLastLoginTime(new Date());
|
// 更新用户sessionKey
|
bizUserService.modifyByModel(bizUser);
|
}
|
}
|
// 存放redis
|
String token = redisUserLoginUtils.saveUserInfo(bizUser);
|
LogUtil.info("用户token={}", token);
|
res.putInMap("token", token);
|
res.putInMap("userInfo", bizUser);
|
res.setStatus(AjaxResult.STATUS_SUCCESS);
|
} else {
|
res.setStatus(AjaxResult.STATUS_FAIL);
|
res.setInfo("自动登录失败");
|
}
|
return res;
|
}
|
|
/**
|
* 查询用户信息
|
*/
|
@RequestMapping(value = "/findUserInfo")
|
public @ResponseBody
|
AjaxResult findUserInfo() {
|
BizUser loginUser = redisUserLoginUtils.getLoginUser(BizUser.class);
|
String openId = loginUser.getOpenId();
|
BizUser bizUser = bizUserService.findByOpenId(openId);
|
|
//处理用户当前所在店铺
|
/*
|
if(bizUser.getStaff()!=null){
|
//当前用户是员工账号
|
bizUser.setBusiness(bussinesssDao.selectById(bizUser.getStaff().getBusinessId()));
|
bizUser.setRole(bizUser.getStaff().getRole());
|
}else{
|
//当前用户是boss账号
|
bizUser.setBusiness(bussinesssDao.findByUserOpenId(bizUser.getOpenId()));
|
bizUser.setRole(AppConstance.User_ROLE_BOSS);
|
}*/
|
|
AjaxResult res = new AjaxResult();
|
res.putInMap("userInfo", bizUser);
|
res.setStatus(AjaxResult.STATUS_SUCCESS);
|
return res;
|
}
|
|
/**
|
* 获取其他用户简化信息
|
* @author JIANGYOUYAO
|
* @email 935090232@qq.com
|
* @date 2018年9月5日
|
* @param openId
|
* @return
|
*/
|
@RequestMapping(value = "/getOtherUserInfo/{openId}")
|
public @ResponseBody
|
AjaxResult getOtherUserInfo(@PathVariable String openId) {
|
BizUser bizUser = bizUserService.findByOpenId(openId);
|
AjaxResult res = new AjaxResult();
|
res.putInMap("userInfo", bizUser);
|
res.setStatus(AjaxResult.STATUS_SUCCESS);
|
return res;
|
}
|
|
|
/**
|
* 接收用户信息
|
*/
|
@RequestMapping(value = "/saveUserInfo")
|
public @ResponseBody
|
AjaxResult saveUserInfo(@RequestBody BizUser bizUser) {
|
|
BizUser loginUser = redisUserLoginUtils.getLoginUser(BizUser.class);
|
bizUser.setUserId(loginUser.getUserId());
|
// TODO 赋值操作
|
int i = bizUserService.saveUserInfo(bizUser);
|
|
if (i == 0) {
|
return new AjaxResult(AjaxResult.STATUS_FAIL, "更新失败");
|
}
|
return new AjaxResult(AjaxResult.STATUS_SUCCESS, Collections.singletonList(bizUser));
|
}
|
|
|
|
|
}
|