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)); 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
  
 | 
} 
 |