From 48d2f9b79a3bc5141d42123f30a62c58a83c12b6 Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 13 Jan 2021 20:04:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E4=BA=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WxUserGrantController.java | 61 +++++++++++++------ .../com/iformall/domain/po/WxCUserFrom.java | 2 + .../domain/po/msg/FmInsideCLoginMsg.java | 11 +--- .../iformall/service/WxCUserFromService.java | 1 + .../com/iformall/service/WxCUserService.java | 3 +- .../service/impl/WxCUserFromServiceImpl.java | 13 ++++ .../service/impl/WxCUserServiceImpl.java | 13 ++-- .../impl/FmInsideCLoginMsgServiceImpl.java | 27 +++++--- 8 files changed, 86 insertions(+), 45 deletions(-) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java index 3d4e32dca..fa05c949f 100755 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java @@ -146,13 +146,43 @@ public class WxUserGrantController extends BaseController { Map resultMap = new HashMap(); + WxCUserFrom wxCUserFrom = new WxCUserFrom(); + String appId = map.get("appId"); String code = map.get("code"); String sceneAddress = map.get("sceneAddress"); String scene = map.get("scene"); + + if (StringUtils.isNotBlank(scene) && + !scene.equals(Constant.UNDEFINED)) { // from pages/index/index onLoad.options.scene + wxCUserFrom.setScene(scene); + } + if (StringUtils.isNotBlank(sceneAddress) && + !sceneAddress.equalsIgnoreCase(Constant.UNDEFINED)) { // from app.js onLaunch.options.scene + wxCUserFrom.setSceneAddress(sceneAddress); + } + String longitude = map.get("longitude"); String latitude = map.get("latitude"); String systemInfo = map.get("systemInfo"); + + try { + String basicUserId = map.get("basicUserId"); + String merchantId = map.get("merchantId"); + if(StringUtils.isNotBlank(basicUserId)){ + wxCUserFrom.setFromType(EnumCUserFrom.FROM_C_USER_BASIC_INFO.getCode()); + wxCUserFrom.setFromId(Long.parseLong(basicUserId)); + }else if(StringUtils.isNotBlank(merchantId)){ + wxCUserFrom.setFromType(EnumCUserFrom.FROM_MERCHANT.getCode()); + wxCUserFrom.setFromId(Long.parseLong(basicUserId)); + }else{ + + } + } catch (NumberFormatException e) { + logger.error("分享参数错误",e); + } + + //登录凭证不能为空 if (StringUtils.isBlank(appId)) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "appId不能为空"); @@ -187,6 +217,7 @@ public class WxUserGrantController extends BaseController { if(wxMall == null){ return new ResultData(ErrorCode.MALL_INFO_NOT_FOUND); } + wxCUserFrom.updateTenantInfo(wxMall); resultMap.put("selectedMall", wxMall.getTenantId()); // 集团版,获取子集团list @@ -272,17 +303,11 @@ public class WxUserGrantController extends BaseController { oldUser.setAppId(appId); oldUser.setOpenId(openId); oldUser.setUnionId(unionId); + if (StringUtils.isNotBlank(wxAuthorizerInfo.getOpenAppid())) { oldUser.setOpenAppId(wxAuthorizerInfo.getOpenAppid()); } - if (StringUtils.isBlank(oldUser.getSceneAddress()) || - oldUser.getSceneAddress().equalsIgnoreCase(Constant.UNDEFINED)) { // from app.js onLaunch.options.scene - oldUser.setSceneAddress(sceneAddress); - } - if (StringUtils.isBlank(oldUser.getScene()) || - oldUser.getScene().equals(Constant.UNDEFINED)) { // from pages/index/index onLoad.options.scene - oldUser.setScene(scene); - } + if (StringUtils.isNotBlank(longitude)) { oldUser.setLongitude(BigDecimal.valueOf(Double.valueOf(longitude))); } @@ -302,8 +327,11 @@ public class WxUserGrantController extends BaseController { request.setAttribute(Constant.LOGIN_USER_KEY, oldUser.getId()); updateCacheCUser(token, oldUser); + // 登录后处理 - wxCUserService.actionMsgAfterLogin(oldUser); + wxCUserFrom.setCUserId(oldUser.getId()); + wxCUserFrom.setIsNewUser(EnumYesOrNo.NO.getCode()); + wxCUserService.actionMsgAfterLogin(wxCUserFrom); } else { // 新用户 @@ -315,14 +343,9 @@ public class WxUserGrantController extends BaseController { resultMap.put("token", token); newUser.setRegisterIp(ipaddress); - if (StringUtils.isNotBlank(sceneAddress) && - !sceneAddress.equalsIgnoreCase(Constant.UNDEFINED)) { // from app.js onLaunch.options.scene - newUser.setSceneAddress(sceneAddress); - } - if (StringUtils.isNotBlank(scene) && - !scene.equals(Constant.UNDEFINED)) { // from pages/index/index onLoad.options.scene - newUser.setScene(scene); - } + newUser.setSceneAddress(wxCUserFrom.getSceneAddress()); + newUser.setScene(wxCUserFrom.getScene()); + newUser.setSessionKey(session_key); if (StringUtils.isNotBlank(longitude)) { newUser.setLongitude(BigDecimal.valueOf(Double.valueOf(longitude))); @@ -343,7 +366,9 @@ public class WxUserGrantController extends BaseController { updateCacheCUser(token, newUser); // 登录后处理 - wxCUserService.actionMsgAfterLogin(newUser); + wxCUserFrom.setCUserId(newUser.getId()); + wxCUserFrom.setIsNewUser(EnumYesOrNo.YES.getCode()); + wxCUserService.actionMsgAfterLogin(wxCUserFrom); } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCUserFrom.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCUserFrom.java index 7680239ac..cbb56e073 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCUserFrom.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCUserFrom.java @@ -20,6 +20,8 @@ import java.util.Date; @EqualsAndHashCode(callSuper = true) public class WxCUserFrom extends TenantEntity { + protected Long id; + @io.swagger.annotations.ApiModelProperty(value="cUserId",name="cUserId") protected Long cUserId; @TableField(exist = false) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/msg/FmInsideCLoginMsg.java b/mallinkService/src/main/java/com/iformall/domain/po/msg/FmInsideCLoginMsg.java index 4f397fbe2..c6b86fe20 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/msg/FmInsideCLoginMsg.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/msg/FmInsideCLoginMsg.java @@ -1,5 +1,6 @@ package com.iformall.domain.po.msg; +import com.iformall.domain.po.WxCUserFrom; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; @@ -11,15 +12,7 @@ public class FmInsideCLoginMsg extends BaseMsg{ private static final long serialVersionUID = 1L; - @io.swagger.annotations.ApiModelProperty(value = "id", name = "id") - private Long id; - - @io.swagger.annotations.ApiModelProperty(value = "租户ID", name = "tenantId") - private String tenantId; - @io.swagger.annotations.ApiModelProperty(value="父租户id",name="parentTenantId") - private String parentTenantId; - @io.swagger.annotations.ApiModelProperty(value = "用户ID", name = "userId") - private Long userId; + private WxCUserFrom wxCUserFrom; } diff --git a/mallinkService/src/main/java/com/iformall/service/WxCUserFromService.java b/mallinkService/src/main/java/com/iformall/service/WxCUserFromService.java index 465776dcb..a76053505 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCUserFromService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCUserFromService.java @@ -16,4 +16,5 @@ public interface WxCUserFromService { PageInfo listAsPage(WxCUserFrom record, Integer pageIndex, Integer pageSize); + void save(WxCUserFrom wxCUserFrom); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxCUserService.java b/mallinkService/src/main/java/com/iformall/service/WxCUserService.java index cbdc2bd04..72a0babec 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCUserService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCUserService.java @@ -4,6 +4,7 @@ import com.github.pagehelper.PageInfo; import com.iformall.domain.dto.WxCUserBasicInfoDto; import com.iformall.domain.po.WxAuthorizerInfo; import com.iformall.domain.po.WxCUser; +import com.iformall.domain.po.WxCUserFrom; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.vo.UserCountVo; import com.iformall.enums.EnumScoreType; @@ -125,7 +126,7 @@ public interface WxCUserService { * 登录后发消息 * @param user */ - void actionMsgAfterLogin(WxCUser user); + void actionMsgAfterLogin(WxCUserFrom wxCUserFrom); /** * 登录后处理 diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserFromServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserFromServiceImpl.java index dd20aef4f..b796a887b 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserFromServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserFromServiceImpl.java @@ -3,6 +3,7 @@ package com.iformall.service.impl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.iformall.common.IdWorker; import com.iformall.domain.po.*; import com.iformall.mapper.*; import com.iformall.service.*; @@ -12,6 +13,8 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Date; + @Service @Slf4j public class WxCUserFromServiceImpl implements WxCUserFromService { @@ -26,4 +29,14 @@ public class WxCUserFromServiceImpl implements WxCUserFromService { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCUserFromMapper.findList(record)); } + @Override + public void save(WxCUserFrom wxCUserFrom) { + final IdWorker idWorker = IdWorker.get(); + wxCUserFrom.setId(idWorker.nextId()); + if(wxCUserFrom.getCreateDate() == null){ + wxCUserFrom.setCreateDate(new Date()); + } + wxCUserFromMapper.insert(wxCUserFrom); + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserServiceImpl.java index b2a67d993..d403931e3 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserServiceImpl.java @@ -5,10 +5,7 @@ import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.iformall.common.IdWorker; import com.iformall.domain.dto.WxCUserBasicInfoDto; -import com.iformall.domain.po.WxAuthorizerInfo; -import com.iformall.domain.po.WxCUser; -import com.iformall.domain.po.WxCUserBasicInfo; -import com.iformall.domain.po.WxCreditHistory; +import com.iformall.domain.po.*; import com.iformall.domain.po.base.BaseCUserEntity; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.msg.FmInsideCLoginMsg; @@ -253,12 +250,12 @@ public class WxCUserServiceImpl implements WxCUserService { } @Override - public void actionMsgAfterLogin(WxCUser user) { + public void actionMsgAfterLogin(WxCUserFrom wxCUserFrom) { + wxCUserFrom.setCreateDate(new Date()); FmInsideCLoginMsg loginMsg = new FmInsideCLoginMsg(); - loginMsg.setId(user.getId()); + loginMsg.updateTenantInfo(wxCUserFrom); loginMsg.setMsgType(EnumMsgRecordType.INSIDE_C_LOGIN.getCode()); - loginMsg.updateTenantInfo(user); - loginMsg.setUserId(user.getUserId()); + loginMsg.setWxCUserFrom(wxCUserFrom); mqBaseProducer.sendMessage(loginMsg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); } diff --git a/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideCLoginMsgServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideCLoginMsgServiceImpl.java index 74e717502..d576815e0 100644 --- a/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideCLoginMsgServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideCLoginMsgServiceImpl.java @@ -8,10 +8,7 @@ import com.iformall.domain.po.msg.FmInsideCouponVerifyMsg; import com.iformall.enums.EnumAssignTagsTrigger; import com.iformall.enums.EnumScoreType; import com.iformall.exception.MallinkException; -import com.iformall.service.WxCUserService; -import com.iformall.service.WxCouponOrderService; -import com.iformall.service.WxMerchantBUserService; -import com.iformall.service.WxScoreRulesService; +import com.iformall.service.*; import com.iformall.service.msg.MsgSendService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -32,14 +29,26 @@ public class FmInsideCLoginMsgServiceImpl implements MsgSendService { @Autowired private WxCUserService userService; + @Autowired + private WxCUserFromService wxCUserFromService; + @Override public void send(BaseMsg baseMsg) throws Exception { FmInsideCLoginMsg msg = (FmInsideCLoginMsg)baseMsg; - WxCUser user = userService.getById(msg.getId(),msg.getTenantId()); - if(user == null) { - logger.error("用户ID未找到: " + msg.getId()); - throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(), "用户ID未找到" + msg.getId()); + + if(msg.getWxCUserFrom() != null && msg.getWxCUserFrom().getCUserId() != null){ + WxCUserFrom wxCUserFrom = msg.getWxCUserFrom(); + Long cUserId = wxCUserFrom.getCUserId(); + WxCUser user = userService.getById(cUserId,msg.getTenantId()); + if(user == null) { + logger.error("用户ID未找到: " + cUserId); + throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(), "用户ID未找到" + cUserId); + } + userService.actionAfterLogin(user); + if(wxCUserFrom.getFromType() != null){ + wxCUserFromService.save(wxCUserFrom); + } } - userService.actionAfterLogin(user); + } }