diff --git a/mallinkCallback/src/main/java/com/iformall/controller/callback/WxBusinessOrderController.java b/mallinkCallback/src/main/java/com/iformall/controller/callback/WxBusinessOrderController.java index 84010a922..e7f183808 100644 --- a/mallinkCallback/src/main/java/com/iformall/controller/callback/WxBusinessOrderController.java +++ b/mallinkCallback/src/main/java/com/iformall/controller/callback/WxBusinessOrderController.java @@ -123,22 +123,25 @@ public class WxBusinessOrderController extends BaseController { memberCard.setCardCode(result.getCode()); if(WxPayConstant.REGISTERED_MODE.equals(result.getAuthType())){ - memberCard.setUserCardStatus(EnumMemberCardStatus.EFFECTIVE.getCode()); - wxMemberCardService.saveorupdateByCode(memberCard); - - wxMemberCardService.sendSyncMemberCardMsg(tenantEntity,memberCard.getCardId(),memberCard.getCardCode()); +// memberCard.setUserCardStatus(EnumMemberCardStatus.EFFECTIVE.getCode()); +// wxMemberCardService.saveorupdateByCode(memberCard); +// +// wxMemberCardService.sendSyncMemberCardMsg(tenantEntity,memberCard.getCardId(),memberCard.getCardCode()); resultMap.put("code","SUCCESS"); return resultMap; }else if(WxPayConstant.REGISTERED_AND_AUTHORIZATION_MODE.equals(result.getAuthType())){ + WxCUser cuser = new WxCUser(); + cuser.updateTenantInfo(tenantEntity); + cuser.setOpenId(result.getOpenid()); + WxCUser byOpenId = wxCUserService.getByOpenId(cuser); + + memberCard.setCuserId(byOpenId.getId()); memberCard.setUserCardStatus(EnumMemberCardStatus.EFFECTIVE.getCode()); wxMemberCardService.saveorupdateByCode(memberCard); - WxCUser updCuser = new WxCUser(); - updCuser.updateTenantInfo(tenantEntity); - updCuser.setOpenId(result.getOpenid()); - updCuser.setAuthorizeState(EnumBusinessCircleAuthorizeState.AUTHORIZED.getCode()); - updCuser.setAuthorizeTime(new Date()); - wxCUserService.updateAuthorizeStateByOpenId(updCuser); + cuser.setAuthorizeState(EnumBusinessCircleAuthorizeState.AUTHORIZED.getCode()); + cuser.setAuthorizeTime(new Date()); + wxCUserService.updateAuthorizeStateByOpenId(cuser); wxMemberCardService.sendSyncMemberCardMsg(tenantEntity,memberCard.getCardId(),memberCard.getCardCode()); resultMap.put("code","SUCCESS"); diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxMemberCard.java b/mallinkService/src/main/java/com/iformall/domain/po/WxMemberCard.java index b342df061..0f9c54c85 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxMemberCard.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxMemberCard.java @@ -84,6 +84,9 @@ public class WxMemberCard extends TenantEntityWithoutFinalTenantId { @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createDate") private Date createDate; + @io.swagger.annotations.ApiModelProperty(value="",name="cuserId") + private Long cuserId; + @io.swagger.annotations.ApiModelProperty(value="",name="userId") private Long userId; diff --git a/mallinkService/src/main/java/com/iformall/domain/po/msg/AfterAddCreditMsg.java b/mallinkService/src/main/java/com/iformall/domain/po/msg/AfterAddCreditMsg.java index 6859b99ae..c8ca841bd 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/msg/AfterAddCreditMsg.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/msg/AfterAddCreditMsg.java @@ -16,6 +16,8 @@ public class AfterAddCreditMsg extends BaseMsg { private static final long serialVersionUID = -1l; + @io.swagger.annotations.ApiModelProperty(value="用户ID",name="cserId") + private Long cuserId; @io.swagger.annotations.ApiModelProperty(value="会员ID",name="basicUserId") private Long basicUserId; @io.swagger.annotations.ApiModelProperty(value="积分变动ID",name="creditHistoryId") diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCUserMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCUserMapper.java index f039caee9..41d3a1c64 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCUserMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCUserMapper.java @@ -42,6 +42,8 @@ public interface WxCUserMapper extends CommonMapper { String findOpenId(@Param("userId")Long userId, @Param("tenantId")String tenantId); + Long findCuserId(@Param("userId")Long userId, @Param("tenantId")String tenantId); + List findTokenList(@Param("id")Long id,@Param("userId")Long userId, @Param("tenantId")String tenantId); List findCountData(WxCUserBasicInfoDto dto); diff --git a/mallinkService/src/main/java/com/iformall/service/WxMemberCardService.java b/mallinkService/src/main/java/com/iformall/service/WxMemberCardService.java index 3ac058092..ff654b318 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxMemberCardService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxMemberCardService.java @@ -45,6 +45,6 @@ public interface WxMemberCardService { ResultData syncMemberCardBonus(TenantEntity tenantEntity,String card_id,String code,String markid, int before_bonus_value,int bonus_value,Boolean need_inform_bonus); - void sendsyncMemberCardBonusMsg(TenantEntity tenantEntity,Long baseUserId,Long creditHistoryId); + void sendsyncMemberCardBonusMsg(TenantEntity tenantEntity,Long cuserId,Long baseUserId,Long creditHistoryId); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMemberCardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMemberCardServiceImpl.java index 0c8b43785..69de04691 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMemberCardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMemberCardServiceImpl.java @@ -24,6 +24,7 @@ import com.iformall.mq.MqBaseProducer; import com.iformall.service.*; import com.iformall.utils.DateUtils; import com.iformall.utils.MaUtil; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -89,6 +90,13 @@ public class WxMemberCardServiceImpl implements WxMemberCardService { } record.setUpdateDate(record.getCreateDate()); wxMemberCardMapper.insert(record); + + if(record.getCuserId() != null){ + TenantEntity tenantEntity = new TenantEntity(); + tenantEntity.setTenantId(record.getTenantId()); + tenantEntity.setParentTenantId(record.getParentTenantId()); + this.sendsyncMemberCardBonusMsg(tenantEntity,record.getCuserId(),null,null); + } }else{ record.setId(id); if(record.getUpdateDate() == null){ @@ -154,51 +162,51 @@ public class WxMemberCardServiceImpl implements WxMemberCardService { record.setGuide(JSON.toJSONString(memberCard.getGuide())); } - MemberCardResult.UserInformation userInformation = memberCard.getUserInformation(); - List commonFieldList = userInformation.getCommonFieldList(); - String phone = null, name = null, avatarUrl = null; - Integer sex = null; - for (MemberCardResult.CommonField commonField:commonFieldList) { - /** - * 平台提供了一些通用的开卡字段供开发者选用 - * USER_FORM_FLAG_MOBILE:手机号 - * USER_FORM_FLAG_SEX:性别 - * USER_FORM_FLAG_NAME:姓名 - * USER_FORM_FLAG_BIRTHDAY:生日 - * USER_FORM_FLAG_ADDRESS:地址 - * USER_FORM_FLAG_EMAIL:邮箱 - * USER_FORM_FLAG_CITY:城市 - */ - if("USER_FORM_FLAG_MOBILE".equals(commonField.getName())){ - phone = commonField.getValue(); - }else if("USER_FORM_FLAG_SEX".equals(commonField.getName())){ - if("男".equals(commonField.getValue())){ - sex = 1; - }else if("女".equals(commonField.getValue())){ - sex = 2; - }else{ - sex = 0; - } - }else if("USER_FORM_FLAG_NAME".equals(commonField.getName())){ - name = commonField.getValue(); - } - } - WxCUserBasicInfo basicInfo = wxCUserBasicInfoService.registerByPhone(tenantEntity, phone, null,name, sex, avatarUrl); +// MemberCardResult.UserInformation userInformation = memberCard.getUserInformation(); +// List commonFieldList = userInformation.getCommonFieldList(); +// String phone = null, name = null, avatarUrl = null; +// Integer sex = null; +// for (MemberCardResult.CommonField commonField:commonFieldList) { +// /** +// * 平台提供了一些通用的开卡字段供开发者选用 +// * USER_FORM_FLAG_MOBILE:手机号 +// * USER_FORM_FLAG_SEX:性别 +// * USER_FORM_FLAG_NAME:姓名 +// * USER_FORM_FLAG_BIRTHDAY:生日 +// * USER_FORM_FLAG_ADDRESS:地址 +// * USER_FORM_FLAG_EMAIL:邮箱 +// * USER_FORM_FLAG_CITY:城市 +// */ +// if("USER_FORM_FLAG_MOBILE".equals(commonField.getName())){ +// phone = commonField.getValue(); +// }else if("USER_FORM_FLAG_SEX".equals(commonField.getName())){ +// if("男".equals(commonField.getValue())){ +// sex = 1; +// }else if("女".equals(commonField.getValue())){ +// sex = 2; +// }else{ +// sex = 0; +// } +// }else if("USER_FORM_FLAG_NAME".equals(commonField.getName())){ +// name = commonField.getValue(); +// } +// } + +// WxCUserBasicInfo basicInfo = wxCUserBasicInfoService.registerByPhone(tenantEntity, phone, null,name, sex, avatarUrl); WxMemberCard old = wxMemberCardMapper.getByCode(record); - if(old == null){ - record.setUserId(basicInfo.getId()); - }else{ + if(old != null){ record.setId(old.getId()); - if(!basicInfo.getId().equals(old.getUserId())){ - record.setUserId(basicInfo.getId());; - } } +// if(basicInfo != null && (old == null || !basicInfo.getId().equals(old.getUserId()))){ +// record.setUserId(basicInfo.getId()); +// } + this.saveorupdate(record); - if(record.getUserId() != null){ - this.sendsyncMemberCardBonusMsg(tenantEntity,record.getUserId(),null); -// this.sendsyncMemberCardLevelMsg(tenantEntity,record.getUserId(),null); - } +// if(record.getUserId() != null){ +// this.sendsyncMemberCardBonusMsg(tenantEntity,record.getUserId(),null); +//// this.sendsyncMemberCardLevelMsg(tenantEntity,record.getUserId(),null); +// } return new ResultData(); } catch (WxPayException e) { e.printStackTrace(); @@ -291,11 +299,17 @@ public class WxMemberCardServiceImpl implements WxMemberCardService { } @Override - public void sendsyncMemberCardBonusMsg(TenantEntity tenantEntity, Long baseUserId, Long creditHistoryId) { + public void sendsyncMemberCardBonusMsg(TenantEntity tenantEntity, Long cuserId, Long baseUserId, Long creditHistoryId) { AfterAddCreditMsg msg = new AfterAddCreditMsg(); msg.updateTenantInfo(tenantEntity); msg.setMsgType(EnumMsgRecordType.AFTER_ADD_CREDIT.getCode()); - msg.setBasicUserId(baseUserId); + if(cuserId != null){ + msg.setCuserId(cuserId); + }else if(baseUserId != null){ + msg.setBasicUserId(baseUserId); + }else { + logger.error("商圈会员积分同步消息发送失败"); + } msg.setCreditHistoryId(creditHistoryId); mqBaseProducer.sendMessage(msg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); } diff --git a/mallinkService/src/main/java/com/iformall/service/msg/impl/AfterAddCreditMsgServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/msg/impl/AfterAddCreditMsgServiceImpl.java index 11cfcb23b..1cac19308 100644 --- a/mallinkService/src/main/java/com/iformall/service/msg/impl/AfterAddCreditMsgServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/msg/impl/AfterAddCreditMsgServiceImpl.java @@ -79,20 +79,29 @@ public class AfterAddCreditMsgServiceImpl implements MsgSendService { logger.error("未找到商圈配置或商圈版本不支持"); return; } + if(afterAddCreditMsg.getBasicUserId() != null){ + Long cuserId = wxCUserMapper.findCuserId(afterAddCreditMsg.getBasicUserId(), afterAddCreditMsg.getTenantId()); + afterAddCreditMsg.setCuserId(cuserId); + } WxMemberCard memberCardQ = new WxMemberCard(); memberCardQ.updateFinalTenantId(tenantEntity); - memberCardQ.setUserId(afterAddCreditMsg.getBasicUserId()); + memberCardQ.setCuserId(afterAddCreditMsg.getCuserId()); memberCardQ.setUserCardStatus(EnumMemberCardStatus.EFFECTIVE.getCode()); List memberCards = wxMemberCardMapper.findList(memberCardQ); if(memberCards == null || memberCards.isEmpty()){ - logger.error("该用户未授权商圈"+afterAddCreditMsg.getBasicUserId()); + logger.error("该用户未授权商圈"+afterAddCreditMsg.getCuserId()); return; } String markid = null; Integer before_bonus_value = 0,bonus_value = 0; if(afterAddCreditMsg.getCreditHistoryId() == null){ + if(afterAddCreditMsg.getBasicUserId() == null){ + WxCUser wxCUser = wxCUserMapper.selectById(afterAddCreditMsg.getCuserId()); + afterAddCreditMsg.setBasicUserId(wxCUser.getUserId()); + } + WxCUserBasicInfo basicInfo = wxCUserBasicInfoMapper.selectById(afterAddCreditMsg.getBasicUserId(), tenantEntity.getFinalTenantId()); markid = basicInfo.getId().toString(); bonus_value = basicInfo.getCredit(); @@ -108,7 +117,7 @@ public class AfterAddCreditMsgServiceImpl implements MsgSendService { markid = markid + "_" + i; ResultData resultData = wxMemberCardService.syncMemberCardBonus(tenantEntity, memberCard.getCardId(), memberCard.getCardCode(), markid, before_bonus_value, bonus_value, null); - logger.info(tenantEntity.getTenantId()+"--"+memberCard.getUserId()+"--微信商圈同步会员积分{}"+resultData.message); + logger.info(tenantEntity.getTenantId()+"--"+memberCard.getId()+"--微信商圈同步会员积分{}"+resultData.message); } } diff --git a/mallinkService/src/main/resources/mapper/WxCUserMapper.xml b/mallinkService/src/main/resources/mapper/WxCUserMapper.xml index a9ab8a339..391265441 100644 --- a/mallinkService/src/main/resources/mapper/WxCUserMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCUserMapper.xml @@ -450,10 +450,14 @@ - select open_id from wx_c_user where user_id=#{userId} and tenant_id = #{tenantId} + + update wx_c_user set `authorize_state` = #{authorizeState} diff --git a/mallinkService/src/main/resources/mapper/WxMemberCardMapper.xml b/mallinkService/src/main/resources/mapper/WxMemberCardMapper.xml index 8aaf17ecb..34f0a269e 100644 --- a/mallinkService/src/main/resources/mapper/WxMemberCardMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxMemberCardMapper.xml @@ -27,6 +27,7 @@ + @@ -34,7 +35,7 @@ `id`,`tenant_id`,`parent_tenant_id`,`card_id`,`card_code`,`activate_scene`,`outer_str`,`open_id`,`union_id`, `membership_number`,`level`,`nickname`,`head_image_url`,`background_picture_url`,`balance`, `user_card_status`,`user_information`,`bonus_value`,`service_modules`,`member_price_word`,`fapiao_jump_word`, - `guide`,`update_date`,`create_date`,`user_id` + `guide`,`update_date`,`create_date`,`cuser_id`,`user_id` @@ -83,6 +84,10 @@ and `user_card_status` = #{userCardStatus} + + and `cuser_id` = #{cuserId} + + and `user_id` = #{userId}