diff --git a/mallinkAdmin/src/main/resources/db/migration/V202009211000__集团版数据处理.sql b/mallinkAdmin/src/main/resources/db/migration/V202009211000__集团版数据处理.sql new file mode 100644 index 000000000..c88a8fd9a --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V202009211000__集团版数据处理.sql @@ -0,0 +1,134 @@ +--备份关键表数据, +create table wx_c_user_basic_info_',@dateStr,' like wx_c_user_basic_info; +insert into wx_c_user_basic_info_',@dateStr,' select * from wx_c_user_basic_info; +create table wx_c_user_',@dateStr,' like wx_c_user; +insert into wx_c_user_',@dateStr,' select * from wx_c_user; +create table wx_order_',@dateStr,' like wx_order; +insert into wx_order_',@dateStr,' select * from wx_order; +create table wx_coupon_order_',@dateStr,' like wx_coupon_order; +insert into wx_coupon_order_',@dateStr,' select * from wx_coupon_order; +create table wx_pay_order_',@dateStr,' like wx_pay_order; +insert into wx_pay_order_',@dateStr,' select * from wx_pay_order; +create table wx_refund_order_',@dateStr,' like wx_refund_order; +insert into wx_refund_order_',@dateStr,' select * from wx_refund_order; +create table wx_order_group_',@dateStr,' like wx_order_group; +insert into wx_order_group_',@dateStr,' select * from wx_order_group; +create table wx_order_press_',@dateStr,' like wx_order_press; +insert into wx_order_press_',@dateStr,' select * from wx_order_press; +create table wx_c_user_from_b_',@dateStr,' like wx_c_user_from_b; +insert into wx_c_user_from_b_',@dateStr,' select * from wx_c_user_from_b; +create table wx_activity_join_',@dateStr,' like wx_activity_join; +insert into wx_activity_join_',@dateStr,' select * from wx_activity_join; +create table wx_question_log_',@dateStr,' like wx_question_log; +insert into wx_question_log_',@dateStr,' select * from wx_question_log; +create table wx_game_action_log_',@dateStr,' like wx_game_action_log; +insert into wx_game_action_log_',@dateStr,' select * from wx_game_action_log; +create table wx_credit_history_',@dateStr,' like wx_credit_history; +insert into wx_credit_history_',@dateStr,' select * from wx_credit_history; +create table wx_score_history_',@dateStr,' like wx_score_history; +insert into wx_score_history_',@dateStr,' select * from wx_score_history; +create table wx_card_spend_',@dateStr,' like wx_card_spend; +insert into wx_card_spend_',@dateStr,' select * from wx_card_spend; +create table wx_c_user_tags_',@dateStr,' like wx_c_user_tags; +insert into wx_c_user_tags_',@dateStr,' select * from wx_c_user_tags; + +--所有数据改成集团的数据 118.044s +--groupTenantId 集团tenantId +--tenantIds 子广场,拼接 +--el: call init_after_group('1025', '1008,1020'); +call init_after_group(groupTenantId, tenantIds); + +--合并子广场重复会员 清缓存 +--tenantIds 子广场,拼接 +--el: call move_after_group('1008,1020'); +--call move_after_group(tenantIds); + + +/*备份手机号重复数据**/ +CREATE TABLE wx_c_user_basic_info_1008_1020 LIKE wx_c_user_basic_info; + +INSERT INTO wx_c_user_basic_info_1008_1020 SELECT * FROM wx_c_user_basic_info WHERE final_tenant_id IN ('1008','1020') AND phone IN ( + SELECT phone FROM wx_c_user_basic_info t WHERE `final_tenant_id` IN ('1008','1020') GROUP BY phone HAVING COUNT(1) > 1 +) + + +CREATE TABLE `zz_middle_uu` ( + `datestr` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `new_user_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `old_user_id` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `phone` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `tenant_ids` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `user_ids` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `sum_poins` int(11) DEFAULT NULL, + `sum_credit` int(11) DEFAULT NULL, + `sum_login_count` int(11) DEFAULT NULL, + UNIQUE INDEX `new_user_id`(`new_user_id`) USING BTREE, + UNIQUE INDEX `old_user_id`(`old_user_id`) USING BTREE, + UNIQUE INDEX `001`(`new_user_id`) USING BTREE, + UNIQUE INDEX `002`(`old_user_id`) USING BTREE, + INDEX `new_user_id_2`(`new_user_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; + +/*处理手机号重复的数据**/ +INSERT INTO zz_middle_uu(phone,tenant_ids,user_ids,sum_poins,sum_credit,sum_login_count) SELECT phone,CONCAT(',',GROUP_CONCAT(final_tenant_id),','),GROUP_CONCAT(id),SUM(poins),SUM(credit),SUM(login_count) FROM wx_c_user_basic_info_1008_1020 GROUP BY phone; +--取第一个作为新的user_id +UPDATE zz_middle_uu SET new_user_id = SUBSTRING_INDEX(user_ids,',',1); + +UPDATE zz_middle_uu SET old_user_id = SUBSTRING_INDEX(user_ids,CONCAT(new_user_id,','),-1); + + +--处理重复手机号数据 + UPDATE wx_c_user a LEFT JOIN zz_middle_uu b on a.user_id=b.old_user_id + SET a.token = null,a.expire_time=now(),a.user_id = b.new_user_id WHERE b.new_user_id is not null; + UPDATE wx_activity_join a LEFT JOIN zz_middle_uu b on a.user_id=b.old_user_id + SET a.user_id = b.new_user_id WHERE b.new_user_id is not null; + UPDATE wx_game_action_log a LEFT JOIN zz_middle_uu b on a.user_id=b.old_user_id + SET a.user_id = b.new_user_id WHERE b.new_user_id is not null; + UPDATE wx_order_group a LEFT JOIN zz_middle_uu b on a.user_id=b.old_user_id + SET a.user_id = b.new_user_id WHERE b.new_user_id is not null; + UPDATE wx_order_press a LEFT JOIN zz_middle_uu b on a.user_id=b.old_user_id + SET a.user_id = b.new_user_id WHERE b.new_user_id is not null; + UPDATE wx_question_log a LEFT JOIN zz_middle_uu b on a.user_id=b.old_user_id + SET a.user_id = b.new_user_id WHERE b.new_user_id is not null; + + UPDATE wx_c_user_from_b a LEFT JOIN zz_middle_uu b on a.c_user_id=b.old_user_id + SET a.c_user_id = b.new_user_id WHERE b.new_user_id is not null; + UPDATE wx_coupon_order a LEFT JOIN zz_middle_uu b on a.c_user_id=b.old_user_id + SET a.c_user_id = b.new_user_id WHERE b.new_user_id is not null; + UPDATE wx_credit_history a LEFT JOIN zz_middle_uu b on a.c_user_id=b.old_user_id + SET a.c_user_id = b.new_user_id WHERE b.new_user_id is not null; + UPDATE wx_order a LEFT JOIN zz_middle_uu b on a.c_user_id=b.old_user_id + SET a.c_user_id = b.new_user_id WHERE b.new_user_id is not null; + UPDATE wx_pay_order a LEFT JOIN zz_middle_uu b on a.c_user_id=b.old_user_id + SET a.c_user_id = b.new_user_id WHERE b.new_user_id is not null; + UPDATE wx_refund_order a LEFT JOIN zz_middle_uu b on a.c_user_id=b.old_user_id + SET a.c_user_id = b.new_user_id WHERE b.new_user_id is not null; + UPDATE wx_score_history a LEFT JOIN zz_middle_uu b on a.c_user_id=b.old_user_id + SET a.c_user_id = b.new_user_id WHERE b.new_user_id is not null; + + UPDATE wx_card_spend a LEFT JOIN zz_middle_uu b on a.owner_id=b.old_user_id + SET a.owner_id = b.new_user_id WHERE b.new_user_id is not null; + UPDATE wx_coupon_order a LEFT JOIN zz_middle_uu b on a.owner_id=b.old_user_id + SET a.owner_id = b.new_user_id WHERE b.new_user_id is not null; + + UPDATE wx_credit_history a LEFT JOIN zz_middle_uu b on a.operator_id=b.old_user_id + SET a.operator_id = b.new_user_id WHERE b.new_user_id is not null AND a.operator_type in (1,2); + + + UPDATE wx_c_user_basic_info a LEFT JOIN zz_middle_uu b on a.id = b.new_user_id + SET a.tenant_id = b.tenant_ids,a.poins = b.sum_poins,a.credit = b.sum_credit,a.login_count = b.sum_login_count + WHERE b.new_user_id is not null; + + UPDATE wx_c_user_basic_info a LEFT JOIN zz_middle_uu b on a.id=b.old_user_id + SET a.phone = concat(a.phone,'_del_',@dateStr),a.`status` = 1 WHERE b.old_user_id is not null; + + + + + + +--单独处理 wx_c_user_basic_info,wx_c_user_tags 归属集团 +UPDATE wx_c_user_basic_info SET final_tenant_id = groupTenantId WHERE FIND_IN_SET(final_tenant_id,tenantIds); +UPDATE wx_c_user_tags SET tenant_id = groupTenantId WHERE FIND_IN_SET(tenant_id,tenantIds); + + 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 b2bbc1abc..46bf7c221 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserServiceImpl.java @@ -294,7 +294,7 @@ public class WxCUserServiceImpl implements WxCUserService { cUser.setActiveTime(new Date()); saveOrUpdate(cUser); } - wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_LOGIN, wxCUserBasicInfo); + wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_LOGIN, wxCUser); } // 用户从unionId来的,可能会有重复 if(findByUnionId != null) {