Просмотр исходного кода

//会员卡

release_toaliyun_real
xhxu 3 лет назад
Родитель
Сommit
4e8d2ce675
9 измененных файлов: 100 добавлений и 58 удалений
  1. +13
    -10
      mallinkCallback/src/main/java/com/iformall/controller/callback/WxBusinessOrderController.java
  2. +3
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxMemberCard.java
  3. +2
    -0
      mallinkService/src/main/java/com/iformall/domain/po/msg/AfterAddCreditMsg.java
  4. +2
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxCUserMapper.java
  5. +1
    -1
      mallinkService/src/main/java/com/iformall/service/WxMemberCardService.java
  6. +56
    -42
      mallinkService/src/main/java/com/iformall/service/impl/WxMemberCardServiceImpl.java
  7. +12
    -3
      mallinkService/src/main/java/com/iformall/service/msg/impl/AfterAddCreditMsgServiceImpl.java
  8. +5
    -1
      mallinkService/src/main/resources/mapper/WxCUserMapper.xml
  9. +6
    -1
      mallinkService/src/main/resources/mapper/WxMemberCardMapper.xml

+ 13
- 10
mallinkCallback/src/main/java/com/iformall/controller/callback/WxBusinessOrderController.java Просмотреть файл

@@ -123,22 +123,25 @@ public class WxBusinessOrderController extends BaseController {
memberCard.setCardCode(result.getCode()); memberCard.setCardCode(result.getCode());


if(WxPayConstant.REGISTERED_MODE.equals(result.getAuthType())){ 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"); resultMap.put("code","SUCCESS");
return resultMap; return resultMap;
}else if(WxPayConstant.REGISTERED_AND_AUTHORIZATION_MODE.equals(result.getAuthType())){ }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()); memberCard.setUserCardStatus(EnumMemberCardStatus.EFFECTIVE.getCode());
wxMemberCardService.saveorupdateByCode(memberCard); 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()); wxMemberCardService.sendSyncMemberCardMsg(tenantEntity,memberCard.getCardId(),memberCard.getCardCode());
resultMap.put("code","SUCCESS"); resultMap.put("code","SUCCESS");


+ 3
- 0
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") @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createDate")
private Date createDate; private Date createDate;


@io.swagger.annotations.ApiModelProperty(value="",name="cuserId")
private Long cuserId;

@io.swagger.annotations.ApiModelProperty(value="",name="userId") @io.swagger.annotations.ApiModelProperty(value="",name="userId")
private Long userId; private Long userId;




+ 2
- 0
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; 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") @io.swagger.annotations.ApiModelProperty(value="会员ID",name="basicUserId")
private Long basicUserId; private Long basicUserId;
@io.swagger.annotations.ApiModelProperty(value="积分变动ID",name="creditHistoryId") @io.swagger.annotations.ApiModelProperty(value="积分变动ID",name="creditHistoryId")


+ 2
- 0
mallinkService/src/main/java/com/iformall/mapper/WxCUserMapper.java Просмотреть файл

@@ -42,6 +42,8 @@ public interface WxCUserMapper extends CommonMapper<WxCUser, Long> {


String findOpenId(@Param("userId")Long userId, @Param("tenantId")String tenantId); 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<String> findTokenList(@Param("id")Long id,@Param("userId")Long userId, @Param("tenantId")String tenantId);


List<UserStructureVo> findCountData(WxCUserBasicInfoDto dto); List<UserStructureVo> findCountData(WxCUserBasicInfoDto dto);


+ 1
- 1
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, ResultData syncMemberCardBonus(TenantEntity tenantEntity,String card_id,String code,String markid,
int before_bonus_value,int bonus_value,Boolean need_inform_bonus); 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);


} }

+ 56
- 42
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.service.*;
import com.iformall.utils.DateUtils; import com.iformall.utils.DateUtils;
import com.iformall.utils.MaUtil; import com.iformall.utils.MaUtil;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -89,6 +90,13 @@ public class WxMemberCardServiceImpl implements WxMemberCardService {
} }
record.setUpdateDate(record.getCreateDate()); record.setUpdateDate(record.getCreateDate());
wxMemberCardMapper.insert(record); 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{ }else{
record.setId(id); record.setId(id);
if(record.getUpdateDate() == null){ if(record.getUpdateDate() == null){
@@ -154,51 +162,51 @@ public class WxMemberCardServiceImpl implements WxMemberCardService {
record.setGuide(JSON.toJSONString(memberCard.getGuide())); 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); WxMemberCard old = wxMemberCardMapper.getByCode(record);
if(old == null){
record.setUserId(basicInfo.getId());
}else{
if(old != null){
record.setId(old.getId()); 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); 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(); return new ResultData();
} catch (WxPayException e) { } catch (WxPayException e) {
e.printStackTrace(); e.printStackTrace();
@@ -291,11 +299,17 @@ public class WxMemberCardServiceImpl implements WxMemberCardService {
} }


@Override @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(); AfterAddCreditMsg msg = new AfterAddCreditMsg();
msg.updateTenantInfo(tenantEntity); msg.updateTenantInfo(tenantEntity);
msg.setMsgType(EnumMsgRecordType.AFTER_ADD_CREDIT.getCode()); 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); msg.setCreditHistoryId(creditHistoryId);
mqBaseProducer.sendMessage(msg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); mqBaseProducer.sendMessage(msg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode());
} }


+ 12
- 3
mallinkService/src/main/java/com/iformall/service/msg/impl/AfterAddCreditMsgServiceImpl.java Просмотреть файл

@@ -79,20 +79,29 @@ public class AfterAddCreditMsgServiceImpl implements MsgSendService {
logger.error("未找到商圈配置或商圈版本不支持"); logger.error("未找到商圈配置或商圈版本不支持");
return; return;
} }
if(afterAddCreditMsg.getBasicUserId() != null){
Long cuserId = wxCUserMapper.findCuserId(afterAddCreditMsg.getBasicUserId(), afterAddCreditMsg.getTenantId());
afterAddCreditMsg.setCuserId(cuserId);
}


WxMemberCard memberCardQ = new WxMemberCard(); WxMemberCard memberCardQ = new WxMemberCard();
memberCardQ.updateFinalTenantId(tenantEntity); memberCardQ.updateFinalTenantId(tenantEntity);
memberCardQ.setUserId(afterAddCreditMsg.getBasicUserId());
memberCardQ.setCuserId(afterAddCreditMsg.getCuserId());
memberCardQ.setUserCardStatus(EnumMemberCardStatus.EFFECTIVE.getCode()); memberCardQ.setUserCardStatus(EnumMemberCardStatus.EFFECTIVE.getCode());
List<WxMemberCard> memberCards = wxMemberCardMapper.findList(memberCardQ); List<WxMemberCard> memberCards = wxMemberCardMapper.findList(memberCardQ);
if(memberCards == null || memberCards.isEmpty()){ if(memberCards == null || memberCards.isEmpty()){
logger.error("该用户未授权商圈"+afterAddCreditMsg.getBasicUserId());
logger.error("该用户未授权商圈"+afterAddCreditMsg.getCuserId());
return; return;
} }
String markid = null; String markid = null;
Integer before_bonus_value = 0,bonus_value = 0; Integer before_bonus_value = 0,bonus_value = 0;


if(afterAddCreditMsg.getCreditHistoryId() == null){ 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()); WxCUserBasicInfo basicInfo = wxCUserBasicInfoMapper.selectById(afterAddCreditMsg.getBasicUserId(), tenantEntity.getFinalTenantId());
markid = basicInfo.getId().toString(); markid = basicInfo.getId().toString();
bonus_value = basicInfo.getCredit(); bonus_value = basicInfo.getCredit();
@@ -108,7 +117,7 @@ public class AfterAddCreditMsgServiceImpl implements MsgSendService {
markid = markid + "_" + i; markid = markid + "_" + i;
ResultData resultData = wxMemberCardService.syncMemberCardBonus(tenantEntity, memberCard.getCardId(), memberCard.getCardCode(), markid, ResultData resultData = wxMemberCardService.syncMemberCardBonus(tenantEntity, memberCard.getCardId(), memberCard.getCardCode(), markid,
before_bonus_value, bonus_value, null); before_bonus_value, bonus_value, null);
logger.info(tenantEntity.getTenantId()+"--"+memberCard.getUserId()+"--微信商圈同步会员积分{}"+resultData.message);
logger.info(tenantEntity.getTenantId()+"--"+memberCard.getId()+"--微信商圈同步会员积分{}"+resultData.message);
} }


} }


+ 5
- 1
mallinkService/src/main/resources/mapper/WxCUserMapper.xml Просмотреть файл

@@ -450,10 +450,14 @@
<!-- union_id = IF(union_id is null ,null,CONCAT(union_id,"_del"))--> <!-- 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 open_id from wx_c_user where user_id=#{userId} and tenant_id = #{tenantId}
</select> </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 id="updateAuthorizeStateByOpenId" parameterType="com.iformall.domain.po.WxCUser">
update wx_c_user update wx_c_user
set `authorize_state` = #{authorizeState} set `authorize_state` = #{authorizeState}


+ 6
- 1
mallinkService/src/main/resources/mapper/WxMemberCardMapper.xml Просмотреть файл

@@ -27,6 +27,7 @@
<result column="guide" jdbcType="VARCHAR" property="guide"/> <result column="guide" jdbcType="VARCHAR" property="guide"/>
<result column="update_date" jdbcType="TIMESTAMP" property="updateDate"/> <result column="update_date" jdbcType="TIMESTAMP" property="updateDate"/>
<result column="create_date" jdbcType="TIMESTAMP" property="createDate"/> <result column="create_date" jdbcType="TIMESTAMP" property="createDate"/>
<result column="cuser_id" jdbcType="VARCHAR" property="cuserId"/>
<result column="user_id" jdbcType="BIGINT" property="userId"/> <result column="user_id" jdbcType="BIGINT" property="userId"/>
</resultMap> </resultMap>


@@ -34,7 +35,7 @@
`id`,`tenant_id`,`parent_tenant_id`,`card_id`,`card_code`,`activate_scene`,`outer_str`,`open_id`,`union_id`, `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`, `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`, `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>


<sql id="dynamicWhereConditions"> <sql id="dynamicWhereConditions">
@@ -83,6 +84,10 @@
and `user_card_status` = #{userCardStatus} and `user_card_status` = #{userCardStatus}
</if> </if>


<if test=" null != cuserId ">
and `cuser_id` = #{cuserId}
</if>

<if test=" null != userId "> <if test=" null != userId ">
and `user_id` = #{userId} and `user_id` = #{userId}
</if> </if>


Загрузка…
Отмена
Сохранить