From bbe0a2fd03063316e50cf141986bda984599bbda Mon Sep 17 00:00:00 2001 From: 935090232@qq.com <ak473600000> Date: Tue, 22 Feb 2022 23:41:42 +0800 Subject: [PATCH] Merge branch 'developer' --- zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxUserAction.java | 309 +++++++++++++++++++++++++++++++++------------------ 1 files changed, 199 insertions(+), 110 deletions(-) diff --git a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxUserAction.java b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxUserAction.java index 7a523f3..e07d511 100644 --- a/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxUserAction.java +++ b/zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxUserAction.java @@ -1,158 +1,247 @@ package com.matrix.system.shopXcx.api.action; -import com.matrix.biz.bean.BizUser; -import com.matrix.biz.service.BizUserService; -import com.matrix.component.redis.RedisUserLoginUtils; +import cn.hutool.core.bean.BeanUtil; +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.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 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.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.*; import java.util.Collections; -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 SysVipInfoService sysVipInfoService; + @Autowired + private SysVipInfoDao sysVipInfoDao; - @Autowired - private RedisUserLoginUtils redisUserLoginUtils; + @Autowired + private ShopSalesmanApplyService shopSalesmanApplyService; + @Autowired + BusParameterSettingsDao busParameterSettingsDao; + @Autowired + private UserCacheManager userCacheManager; + @Autowired + ShopSalesmanApplyDao salesmanApplyDao; - @Autowired - WeChatApiTools weChatApiTools; + @Autowired + WeChatApiTools weChatApiTools; + @Autowired + private ScoreVipDetailDao scoreVipDetailDao; + @Autowired + private MoneyCardUseDao moneyCardUseDao; - @Autowired - private WeixinServiceUtil weixinServiceUtil; + @Autowired + ShopCouponRecordDao shopCouponRecordDao; - @Value("${debug}") - private String isDebug; + @Autowired + ActivitySignReceiveRecordDao activitySignReceiveRecordDao; + @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); + // 查询用户是否存在 + 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 { - 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 { + 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; + } - /** - * 查询用户信息 - */ - @RequestMapping(value = "/findUserInfo") - public @ResponseBody + + @Autowired + ShopSalesmanGradeDao shopSalesmanGradeDao; + + /** + * 查询用户信息 + */ + @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; - } + SysVipInfo loginUser = userCacheManager.getLoginUser(); + SysVipInfo sysVipInfo = sysVipInfoService.findById(loginUser.getId()); + sysVipInfo.setPointAll(scoreVipDetailDao.selectUserTotalScore(loginUser.getId())); + sysVipInfo.setBalance(moneyCardUseDao.selectVipCardTotalMoney(loginUser.getId())); + 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); + } - /** - * 接收用户信息 - */ - @RequestMapping(value = "/saveUserInfo") - public @ResponseBody - AjaxResult saveUserInfo(@RequestBody BizUser bizUser) { + /** + * 接收用户信息 + */ + @PostMapping(value = "/saveUserInfo") + public @ResponseBody + AjaxResult saveUserInfo(@RequestBody XcxUserSaveUserInfoDto xcxUserSaveUserInfoDto) { - BizUser loginUser = redisUserLoginUtils.getLoginUser(BizUser.class); - bizUser.setUserId(loginUser.getUserId()); - // TODO 赋值操作 - int i = bizUserService.saveUserInfo(bizUser); + SysVipInfo loginUser = userCacheManager.getLoginUser(); + SysVipInfo sysVipInfo = new SysVipInfo(); + sysVipInfo.setId(loginUser.getId()); - if (i == 0) { - return new AjaxResult(AjaxResult.STATUS_FAIL, "更新失败"); - } - return new AjaxResult(AjaxResult.STATUS_SUCCESS, Collections.singletonList(bizUser)); - } + 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 && fxSwith.getParamValue().equals("1")) {//开启分销 + 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); + } + } + } + } + } } \ No newline at end of file -- Gitblit v1.9.1