jyy
2021-03-17 f86c8e49cf1f953843d5b436469d298fb69f3629
新增查询申请条件接口
1 files modified
237 ■■■■■ changed files
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxUserAction.java 237 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxUserAction.java
@@ -1,5 +1,6 @@
package com.matrix.system.shopXcx.api.action;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.matrix.biz.bean.BizUser;
import com.matrix.biz.service.BizUserService;
import com.matrix.component.redis.RedisUserLoginUtils;
@@ -9,8 +10,14 @@
import com.matrix.core.tools.LogUtil;
import com.matrix.core.tools.StringUtils;
import com.matrix.core.web.BaseAction;
import com.matrix.system.common.bean.BusParameterSettings;
import com.matrix.system.common.constance.AppConstance;
import com.matrix.system.common.dao.BusParameterSettingsDao;
import com.matrix.system.common.interceptor.HostInterceptor;
import com.matrix.system.fenxiao.constant.FenxiaoSettingConstant;
import com.matrix.system.fenxiao.dao.ShopSalesmanApplyDao;
import com.matrix.system.fenxiao.entity.ShopSalesmanApply;
import com.matrix.system.fenxiao.service.ShopSalesmanApplyService;
import com.matrix.system.shopXcx.api.WeChatApiTools;
import net.sf.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
@@ -25,134 +32,154 @@
import java.util.Date;
/**
 * @description (用户表)
 * @author jyy
 * @description (用户表)
 * @date 2019-05-31 10:03
 */
@Controller
@RequestMapping(value = "wxapi/user")
public class WxUserAction extends BaseAction {
    @Autowired
    private BizUserService bizUserService;
    @Autowired
    private BizUserService bizUserService;
    @Autowired
    private ShopSalesmanApplyService shopSalesmanApplyService;
    @Autowired
    BusParameterSettingsDao busParameterSettingsDao;
    @Autowired
    private RedisUserLoginUtils redisUserLoginUtils;
    @Autowired
    ShopSalesmanApplyDao salesmanApplyDao;
    @Autowired
    WeChatApiTools weChatApiTools;
    @Autowired
    private RedisUserLoginUtils redisUserLoginUtils;
    @Autowired
    private WeixinServiceUtil weixinServiceUtil;
    @Value("${debug}")
    private String isDebug;
    @Autowired
    WeChatApiTools weChatApiTools;
    @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
    /**
     * 小程序登录
     *
     * @param code
     * @return
     * @throws Exception
     * @author JIANGYOUYAO
     * @email 935090232@qq.com
     * @date 2018年5月23日
     */
    @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, HostInterceptor.getCompanyId());
            String reslutData = HttpCurlUtil.sendGetHttp(requrl, null);
            JSONObject json = JSONObject.fromObject(reslutData);
            LogUtil.debug("微信登录获取到登录信息={}", json);
        AjaxResult res = new AjaxResult();
        LogUtil.info("code:{}" + code);
        if (StringUtils.isNotBlank(code)) {
            String requrl = weChatApiTools.getXcxLoginUrl(code, HostInterceptor.getCompanyId());
            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;
            }
            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.setIsSales(BizUser.NOT_SALES);
                    bizUser.setOpenId(openId);
                    bizUser.setLastLoginTime(new Date());
                    bizUser.setUserType(AppConstance.USER_TYPE_CUSTOMER);
                    bizUser.setCompanyId(HostInterceptor.getCompanyId());
                    bizUserService.add(bizUser);
            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.setIsSales(BizUser.NOT_SALES);
                    bizUser.setOpenId(openId);
                    bizUser.setLastLoginTime(new Date());
                    bizUser.setUserType(AppConstance.USER_TYPE_CUSTOMER);
                    bizUser.setCompanyId(HostInterceptor.getCompanyId());
                    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;
    }
                } 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
    /**
     * 查询用户信息
     */
    @RequestMapping(value = "/findUserInfo")
    public @ResponseBody
    AjaxResult findUserInfo() {
        BizUser loginUser = redisUserLoginUtils.getLoginUser(BizUser.class);
        String openId = loginUser.getOpenId();
        BizUser bizUser = bizUserService.findByOpenId(openId);
        AjaxResult res = new AjaxResult();
        res.putInMap("userInfo", bizUser);
        res.setStatus(AjaxResult.STATUS_SUCCESS);
        return res;
    }
        BizUser loginUser = redisUserLoginUtils.getLoginUser(BizUser.class);
        String openId = loginUser.getOpenId();
        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
    /**
     * 接收用户信息
     */
    @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));
    }
        BizUser loginUser = redisUserLoginUtils.getLoginUser(BizUser.class);
        bizUser.setUserId(loginUser.getUserId());
        // TODO 赋值操作
        int i = bizUserService.saveUserInfo(bizUser);
        //查询是否需要自动成为分销员
        if ((loginUser.getIsSales() == null || loginUser.getIsSales() == 2)
                && StringUtils.isNotBlank(loginUser.getNickName())) {//目前还不是分销员
            BusParameterSettings fxSwith = busParameterSettingsDao.selectCompanyParamByCode(FenxiaoSettingConstant.FX_SWITCH, HostInterceptor.getCompanyId());
            if (fxSwith.getParamValue().equals("1")) {//开启分销
                BusParameterSettings applyCondition = busParameterSettingsDao.selectCompanyParamByCode(FenxiaoSettingConstant.FX_APPLY_CONDITION, loginUser.getCompanyId());
                if (applyCondition.getParamValue().equals(FenxiaoSettingConstant.FX_APPLY_CONDITION_WTJ)) {//无条件可称为分销员
                    QueryWrapper<ShopSalesmanApply> queryWrapper = new QueryWrapper<>();
                    queryWrapper.eq("user_id", loginUser.getOpenId());
                    queryWrapper.eq("apply_status", ShopSalesmanApply.APPLY_STATUS_DSH);
                    ShopSalesmanApply shopSalesmanApply = salesmanApplyDao.selectOne(queryWrapper);
                    if (shopSalesmanApply == null) {//没有待审核记录
                        shopSalesmanApplyService.applyToBeAnSalesman(loginUser.getOpenId(), null, null, 2);
                    }
                }
            }
        }
        if (i == 0) {
            return new AjaxResult(AjaxResult.STATUS_FAIL, "更新失败");
        }
        return new AjaxResult(AjaxResult.STATUS_SUCCESS, Collections.singletonList(bizUser));
    }
}