| @@ -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"); | |||
| @@ -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; | |||
| @@ -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") | |||
| @@ -42,6 +42,8 @@ public interface WxCUserMapper extends CommonMapper<WxCUser, Long> { | |||
| String findOpenId(@Param("userId")Long userId, @Param("tenantId")String tenantId); | |||
| Long findCuserId(@Param("userId")Long userId, @Param("tenantId")String tenantId); | |||
| List<String> findTokenList(@Param("id")Long id,@Param("userId")Long userId, @Param("tenantId")String tenantId); | |||
| List<UserStructureVo> findCountData(WxCUserBasicInfoDto dto); | |||
| @@ -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); | |||
| } | |||
| @@ -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<MemberCardResult.CommonField> 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<MemberCardResult.CommonField> 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()); | |||
| } | |||
| @@ -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<WxMemberCard> 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); | |||
| } | |||
| } | |||
| @@ -450,10 +450,14 @@ | |||
| <!-- union_id = IF(union_id is null ,null,CONCAT(union_id,"_del"))--> | |||
| <select id="findOpenIdList" parameterType="hashmap" resultType="String" > | |||
| <select id="findOpenId" parameterType="hashmap" resultType="String" > | |||
| select open_id from wx_c_user where user_id=#{userId} and tenant_id = #{tenantId} | |||
| </select> | |||
| <select id="findCuserId" parameterType="hashmap" resultType="String" > | |||
| select id from wx_c_user where user_id=#{userId} and tenant_id = #{tenantId} | |||
| </select> | |||
| <update id="updateAuthorizeStateByOpenId" parameterType="com.iformall.domain.po.WxCUser"> | |||
| update wx_c_user | |||
| set `authorize_state` = #{authorizeState} | |||
| @@ -27,6 +27,7 @@ | |||
| <result column="guide" jdbcType="VARCHAR" property="guide"/> | |||
| <result column="update_date" jdbcType="TIMESTAMP" property="updateDate"/> | |||
| <result column="create_date" jdbcType="TIMESTAMP" property="createDate"/> | |||
| <result column="cuser_id" jdbcType="VARCHAR" property="cuserId"/> | |||
| <result column="user_id" jdbcType="BIGINT" property="userId"/> | |||
| </resultMap> | |||
| @@ -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` | |||
| </sql> | |||
| <sql id="dynamicWhereConditions"> | |||
| @@ -83,6 +84,10 @@ | |||
| and `user_card_status` = #{userCardStatus} | |||
| </if> | |||
| <if test=" null != cuserId "> | |||
| and `cuser_id` = #{cuserId} | |||
| </if> | |||
| <if test=" null != userId "> | |||
| and `user_id` = #{userId} | |||
| </if> | |||