package com.matrix.system.shopXcx.api.action;
|
|
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.matrix.system.common.constance.AppConstance;
|
import com.matrix.system.common.init.UserCacheManager;
|
import com.matrix.component.tools.HttpCurlUtil;
|
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.activity.dao.ActivitySignReceiveRecordDao;
|
import com.matrix.system.common.bean.BusParameterSettings;
|
import com.matrix.system.common.dao.BusParameterSettingsDao;
|
import com.matrix.system.common.interceptor.HostInterceptor;
|
import com.matrix.system.constance.Dictionary;
|
import com.matrix.system.fenxiao.constant.FenxiaoSettingConstant;
|
import com.matrix.system.fenxiao.dao.ShopSalesmanApplyDao;
|
import com.matrix.system.fenxiao.dao.ShopSalesmanGradeDao;
|
import com.matrix.system.fenxiao.entity.ShopSalesmanApply;
|
import com.matrix.system.fenxiao.entity.ShopSalesmanGrade;
|
import com.matrix.system.fenxiao.service.ShopSalesmanApplyService;
|
import com.matrix.system.hive.bean.SysVipInfo;
|
import com.matrix.system.hive.dao.MoneyCardUseDao;
|
import com.matrix.system.hive.dao.SysVipInfoDao;
|
import com.matrix.system.hive.service.SysVipInfoService;
|
import com.matrix.system.score.dao.ScoreVipDetailDao;
|
import com.matrix.system.shopXcx.api.WeChatApiTools;
|
import com.matrix.system.shopXcx.api.dto.XcxUserSaveUserInfoDto;
|
import com.matrix.system.shopXcx.dao.ShopCouponRecordDao;
|
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.*;
|
|
import java.util.Collections;
|
|
/**
|
* @author jyy
|
* @description (用户表)
|
* @date 2019-05-31 10:03
|
*/
|
@Controller
|
@RequestMapping(value = "wxapi/user")
|
public class WxUserAction extends BaseAction {
|
|
@Autowired
|
private SysVipInfoService sysVipInfoService;
|
|
@Autowired
|
private SysVipInfoDao sysVipInfoDao;
|
|
@Autowired
|
private ShopSalesmanApplyService shopSalesmanApplyService;
|
|
@Autowired
|
BusParameterSettingsDao busParameterSettingsDao;
|
@Autowired
|
private UserCacheManager userCacheManager;
|
@Autowired
|
ShopSalesmanApplyDao salesmanApplyDao;
|
|
@Autowired
|
WeChatApiTools weChatApiTools;
|
|
@Autowired
|
private ScoreVipDetailDao scoreVipDetailDao;
|
|
@Autowired
|
private MoneyCardUseDao moneyCardUseDao;
|
|
@Autowired
|
ShopCouponRecordDao shopCouponRecordDao;
|
|
@Autowired
|
ActivitySignReceiveRecordDao activitySignReceiveRecordDao;
|
@Value("${debug}")
|
private String isDebug;
|
|
/**
|
* 小程序登录
|
*
|
* @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);
|
|
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);
|
// 查询用户是否存在
|
SysVipInfo sysVipInfo = null;
|
synchronized (this) {
|
sysVipInfo = sysVipInfoService.findByOpenId(openId);
|
if (sysVipInfo == null) {
|
// 新增用户
|
sysVipInfo = new SysVipInfo();
|
sysVipInfo.setIsSales(SysVipInfo.NOT_SALES);
|
sysVipInfo.setOpenId(openId);
|
sysVipInfo.setSessionKey(sessionKey);
|
sysVipInfo.setCompanyId(HostInterceptor.getCompanyId());
|
sysVipInfo.setArrivalWay("微商城");
|
sysVipInfo.setVipName("微信用户");
|
sysVipInfo.setVipState(Dictionary.VIP_STATE_HY);
|
sysVipInfo.setVipType(Dictionary.VIP_TYPE_NOCARD);
|
sysVipInfo.setIsDeal(SysVipInfo.UNDEAL_VIP);
|
sysVipInfo.setVipNo(openId);
|
sysVipInfoService.add(sysVipInfo);
|
|
} else {
|
sysVipInfo.setSessionKey(sessionKey);
|
sysVipInfoDao.update(sysVipInfo);
|
}
|
}
|
// 存放redis
|
sysVipInfo.setLevelCard(null);
|
String token = userCacheManager.saveUserInfo(sysVipInfo);
|
LogUtil.info("用户token={}", token);
|
res.putInMap("token", token);
|
res.putInMap("userInfo", sysVipInfo);
|
res.setStatus(AjaxResult.STATUS_SUCCESS);
|
} else {
|
res.setStatus(AjaxResult.STATUS_FAIL);
|
res.setInfo("自动登录失败");
|
}
|
return res;
|
}
|
|
|
@Autowired
|
ShopSalesmanGradeDao shopSalesmanGradeDao;
|
|
/**
|
* 查询用户信息
|
*/
|
@RequestMapping(value = "/findUserInfo")
|
public @ResponseBody
|
AjaxResult findUserInfo() {
|
SysVipInfo loginUser = userCacheManager.getLoginUser();
|
SysVipInfo sysVipInfo = sysVipInfoService.findById(loginUser.getId());
|
|
if (sysVipInfo != null) {
|
if (SysVipInfo.VALID_FLAG_Y == sysVipInfo.getValidFlag()) {
|
sysVipInfo.setBalance(moneyCardUseDao.selectVipCardTotalMoney(loginUser.getId()));
|
sysVipInfo.setPointAll(scoreVipDetailDao.selectUserTotalScore(loginUser.getId()));
|
} else {
|
sysVipInfo.setBalance(0D);
|
sysVipInfo.setPointAll(0);
|
}
|
}
|
|
AjaxResult res = new AjaxResult();
|
res.putInMap("couponCount", shopCouponRecordDao.countUnuseCouponRecord(loginUser.getId()));
|
res.putInMap("prizeCount", activitySignReceiveRecordDao.getSignAwardReceiveCount(loginUser.getId(), loginUser.getCompanyId()));
|
res.putInMap("userInfo", sysVipInfo);
|
//查询会员等级
|
if (sysVipInfo.getSalesmanGrade() != null) {
|
ShopSalesmanGrade shopSalesmanGrade = shopSalesmanGradeDao.selectById(sysVipInfo.getSalesmanGrade());
|
res.putInMap("vipLevel", shopSalesmanGrade.getName());
|
} else if (sysVipInfo.getVipLevel() != null) {
|
res.putInMap("vipLevel", sysVipInfo.getVipLevel().getLevelName());
|
} else {
|
res.putInMap("vipLevel", "初级会员");
|
}
|
res.setStatus(AjaxResult.STATUS_SUCCESS);
|
return res;
|
}
|
|
/**
|
* 根据OpenID查询用户信息
|
*/
|
@GetMapping(value = "/findUserInfo/{openId}")
|
public @ResponseBody
|
AjaxResult findUserInfo(@PathVariable String openId) {
|
SysVipInfo sysVipInfo = sysVipInfoService.findByOpenId(openId);
|
SysVipInfo bizUserQuery = new SysVipInfo();
|
bizUserQuery.setNickName(sysVipInfo.getNickName());
|
bizUserQuery.setAvatarUrl(sysVipInfo.getAvatarUrl());
|
bizUserQuery.setOpenId(openId);
|
return AjaxResult.buildSuccessInstance(bizUserQuery);
|
}
|
|
|
/**
|
* 接收用户信息
|
*/
|
@PostMapping(value = "/saveUserInfo")
|
public @ResponseBody
|
AjaxResult saveUserInfo(@RequestBody XcxUserSaveUserInfoDto xcxUserSaveUserInfoDto) {
|
|
SysVipInfo loginUser = userCacheManager.getLoginUser();
|
SysVipInfo sysVipInfo = new SysVipInfo();
|
sysVipInfo.setId(loginUser.getId());
|
|
BeanUtil.copyProperties(xcxUserSaveUserInfoDto, sysVipInfo);
|
sysVipInfo.setPhone(xcxUserSaveUserInfoDto.getPhoneNumber());
|
if (StringUtils.isBlank(loginUser.getVipName()) || loginUser.getVipName().equals("微信用户")) {
|
sysVipInfo.setVipName(xcxUserSaveUserInfoDto.getNickName());
|
}
|
if (StringUtils.isBlank(loginUser.getSex())) {
|
sysVipInfo.setSex(xcxUserSaveUserInfoDto.getGender() == 1 ? "男" : "女");
|
}
|
|
int i = sysVipInfoDao.update(sysVipInfo);
|
|
checkNeedToBeSalesman(sysVipInfo, loginUser);
|
if (i == 0) {
|
return new AjaxResult(AjaxResult.STATUS_FAIL, "更新失败");
|
}
|
return new AjaxResult(AjaxResult.STATUS_SUCCESS, Collections.singletonList(sysVipInfo));
|
}
|
|
|
void checkNeedToBeSalesman(SysVipInfo sysVipInfo, SysVipInfo loginUser) {
|
//查询是否需要自动成为分销员
|
if ((loginUser.getIsSales() == null || loginUser.getIsSales() == 2)
|
&& StringUtils.isNotBlank(sysVipInfo.getNickName())) {//目前还不是分销员
|
BusParameterSettings fxSwith = busParameterSettingsDao.selectCompanyParamByCode(FenxiaoSettingConstant.FX_SWITCH, HostInterceptor.getCompanyId());
|
if (fxSwith!=null && "1".equals(fxSwith.getParamValue())) {//开启分销
|
BusParameterSettings applyWay = busParameterSettingsDao.selectCompanyParamByCode(FenxiaoSettingConstant.FX_APPLY_WAY, loginUser.getCompanyId());
|
if (applyWay.getParamValue().equals(FenxiaoSettingConstant.FX_APPLY_WAY_AUTO)) {//自动成为分销员
|
QueryWrapper<ShopSalesmanApply> queryWrapper = new QueryWrapper<>();
|
queryWrapper.eq("user_id", loginUser.getId());
|
queryWrapper.eq("apply_status", ShopSalesmanApply.APPLY_STATUS_DSH);
|
ShopSalesmanApply shopSalesmanApply = salesmanApplyDao.selectOne(queryWrapper);
|
if (shopSalesmanApply == null) {//没有待审核记录
|
shopSalesmanApplyService.applyToBeAnSalesman(loginUser.getId(), null, null, 2);
|
}
|
}
|
}
|
}
|
}
|
|
|
}
|