| | |
| | | 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 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.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; |
| | | } |
| | | AjaxResult res = new AjaxResult(); |
| | | 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); |
| | | } |
| | | |
| | | 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 && "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); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | } |