diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxCUserBasicInfoController.java b/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxCUserBasicInfoController.java index a92f77ab4..315bab67b 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxCUserBasicInfoController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxCUserBasicInfoController.java @@ -56,6 +56,9 @@ public class WxCUserBasicInfoController extends BaseController { @Autowired private WxCUserBasicInfoService wxCUserBasicInfoService; + @Autowired + private WxCUserBasicChildService wxCUserBasicChildService; + @Autowired private WxCUserTagsService wxCUserTagsService; @@ -104,6 +107,14 @@ public class WxCUserBasicInfoController extends BaseController { } } + private void setUserChildren(WxCUserBasicInfo info) { + WxCUserBasicChild uChild = new WxCUserBasicChild(); + uChild.setTenantId(info.getFinalTenantId()); + uChild.setCUserId(info.getId()); + info.setChildrenList(wxCUserBasicChildService.findList(uChild)); + + } + private void setUserInfoTag(WxCUserBasicInfo info) { if (info.getTagId() != null) { @@ -247,6 +258,7 @@ public class WxCUserBasicInfoController extends BaseController { setUserInfoTag(info); setUserInfoLevel(info); setUserInfoCar(info); + setUserChildren(info); return new ResultData(info); } diff --git a/mallinkAdmin/src/main/resources/db/migration/V202012300001__wx_tag.sql b/mallinkAdmin/src/main/resources/db/migration/V202012300001__wx_tag.sql new file mode 100644 index 000000000..070e98e9b --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V202012300001__wx_tag.sql @@ -0,0 +1,8 @@ +INSERT INTO `wx_tags_type`(`id`, `name`, `group_id`, `group_name`, `flag`) VALUES (29, '子女', 2, '生活属性', 0); + +INSERT INTO `wx_tags`(`id`, `name`, `group_id`, `group_name`, `type_id`, `type_name`) VALUES (166, '婴儿', 2, '生活属性', 29, '子女'); +INSERT INTO `wx_tags`(`id`, `name`, `group_id`, `group_name`, `type_id`, `type_name`) VALUES (167, '幼儿', 2, '生活属性', 29, '子女'); +INSERT INTO `wx_tags`(`id`, `name`, `group_id`, `group_name`, `type_id`, `type_name`) VALUES (168, '学龄前', 2, '生活属性', 29, '子女'); +INSERT INTO `wx_tags`(`id`, `name`, `group_id`, `group_name`, `type_id`, `type_name`) VALUES (169, '学龄初', 2, '生活属性', 29, '子女'); +INSERT INTO `wx_tags`(`id`, `name`, `group_id`, `group_name`, `type_id`, `type_name`) VALUES (170, '学龄中', 2, '生活属性', 29, '子女'); +INSERT INTO `wx_tags`(`id`, `name`, `group_id`, `group_name`, `type_id`, `type_name`) VALUES (171, '学龄晚', 2, '生活属性', 29, '子女'); diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCuserFloatingLayerController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCuserFloatingLayerController.java index 88b4c7c03..3f46ef31f 100755 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCuserFloatingLayerController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCuserFloatingLayerController.java @@ -28,7 +28,7 @@ public class WxCuserFloatingLayerController extends BaseController { @Autowired WxCuserFloatingLayerService wxCuserFloatingLayerService; - @AuthIgnore +// @AuthIgnore @ApiOperation("获取浮层") @GetMapping("/getFloatingLayer") @ApiImplicitParams({ diff --git a/mallinkService/src/main/java/com/iformall/config/BaseMyBatisConfiguration.java b/mallinkService/src/main/java/com/iformall/config/BaseMyBatisConfiguration.java index 2ef8b97e2..64c5ee0ec 100644 --- a/mallinkService/src/main/java/com/iformall/config/BaseMyBatisConfiguration.java +++ b/mallinkService/src/main/java/com/iformall/config/BaseMyBatisConfiguration.java @@ -47,8 +47,7 @@ public class BaseMyBatisConfiguration { wxCouponrSharding.setCount(100); wxCouponrSharding.setRule(EnumShardingRule.HASH.getCode()); shardingList.add(wxCouponrSharding); - - + ShardingSphere wxCouponrMerchantSharding = new ShardingSphere(); wxCouponrMerchantSharding.setColumn("tenant_id"); wxCouponrMerchantSharding.setTableName("wx_coupon_merchant"); @@ -76,6 +75,13 @@ public class BaseMyBatisConfiguration { basicInfoSharding.setCount(100); basicInfoSharding.setRule(EnumShardingRule.HASH.getCode()); shardingList.add(basicInfoSharding); + + ShardingSphere wxbasicChildSharding = new ShardingSphere(); + wxbasicChildSharding.setColumn("tenant_id"); + wxbasicChildSharding.setTableName("wx_c_user_basic_child"); + wxbasicChildSharding.setCount(100); + wxbasicChildSharding.setRule(EnumShardingRule.HASH.getCode()); + shardingList.add(wxbasicChildSharding); ShardingSphere wxOrderSharding = new ShardingSphere(); wxOrderSharding.setColumn("tenant_id"); diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCUserBasicInfo.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCUserBasicInfo.java index 472bd2b8b..f72f07bac 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCUserBasicInfo.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCUserBasicInfo.java @@ -127,6 +127,9 @@ public class WxCUserBasicInfo extends TenantEntityWithoutFinalTenantId { private String tagNames; + @TableField(exist = false) + private List childrenList; + @TableField(exist = false) private String tagIds; diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumTag.java b/mallinkService/src/main/java/com/iformall/enums/EnumTag.java index 07fb22417..312f4b61c 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumTag.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumTag.java @@ -204,6 +204,13 @@ public enum EnumTag { ID_164(164L, EnumTagType.ID_28, "鞋尺码"), ID_165(165L, EnumTagType.ID_28, "鞋尺码"), + ID_166(166L, EnumTagType.ID_29, "婴儿"), + ID_167(167L, EnumTagType.ID_29, "幼儿"), + ID_168(168L, EnumTagType.ID_29, "学龄前"), + ID_169(169L, EnumTagType.ID_29, "学龄初"), + ID_170(170L, EnumTagType.ID_29, "学龄中"), + ID_171(171L, EnumTagType.ID_29, "学龄晚"), + ID_1000(1000L, EnumTagType.ID_50,"一天以内"), ID_1001(1001L, EnumTagType.ID_50,"一周以内"), ID_1002(1002L, EnumTagType.ID_50,"一月以内"), diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumTagType.java b/mallinkService/src/main/java/com/iformall/enums/EnumTagType.java index e14d37011..5e29be998 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumTagType.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumTagType.java @@ -35,6 +35,8 @@ public enum EnumTagType { ID_27(27L, EnumTagTypeFlag.FLAG_SINGLE, EnumTagGroup.ID_1, "服饰尺码"), ID_28(28L, EnumTagTypeFlag.FLAG_SINGLE, EnumTagGroup.ID_1, "鞋尺码"), + ID_29(29L, EnumTagTypeFlag.FLAG_NORMAL, EnumTagGroup.ID_2, "子女"), + ID_0(0L, EnumTagTypeFlag.FLAG_SINGLE, EnumTagGroup.ID_10, "会员手机"), ID_50(50L, EnumTagTypeFlag.FLAG_SINGLE, EnumTagGroup.ID_10, "会员会龄"), ID_51(51L, EnumTagTypeFlag.FLAG_SINGLE, EnumTagGroup.ID_10, "会员等级"), diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCUserBasicChildMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCUserBasicChildMapper.java index 1bf3edfc1..31a42e63d 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCUserBasicChildMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCUserBasicChildMapper.java @@ -8,7 +8,7 @@ import java.util.List; public interface WxCUserBasicChildMapper extends CommonMapper{ - List findList(WxCUserBasicChild record); + List findList(WxCUserBasicChild record); int updDelById(WxCUserBasicChild record); diff --git a/mallinkService/src/main/java/com/iformall/service/WxCUserBasicChildService.java b/mallinkService/src/main/java/com/iformall/service/WxCUserBasicChildService.java index 05eab8269..e6967e686 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCUserBasicChildService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCUserBasicChildService.java @@ -8,7 +8,7 @@ public interface WxCUserBasicChildService { PageInfo listAsPage(WxCUserBasicChild record, Integer pageIndex, Integer pageSize); - List findList(WxCUserBasicChild record); + List findList(WxCUserBasicChild record); WxCUserBasicChild saveOrUpdate(WxCUserBasicChild record); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicChildServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicChildServiceImpl.java index fb41382e1..000fa7302 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicChildServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicChildServiceImpl.java @@ -28,7 +28,7 @@ public class WxCUserBasicChildServiceImpl implements WxCUserBasicChildService { } @Override - public List findList(WxCUserBasicChild record) { + public List findList(WxCUserBasicChild record) { return wxCUserBasicChildMapper.findList(record); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserTagsServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserTagsServiceImpl.java index 14877221b..a3180479b 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserTagsServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserTagsServiceImpl.java @@ -13,6 +13,7 @@ import com.iformall.enums.*; import com.iformall.mapper.*; import com.iformall.service.WxCUserTagsService; import com.iformall.service.WxTagsService; +import com.iformall.utils.DateUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -32,6 +33,9 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { @Autowired WxCUserBasicInfoMapper wxCUserBasicInfoMapper; + @Autowired + WxCUserBasicChildMapper wxCUserBasicChildMapper; + @Autowired WxCouponOrderMapper wxCouponOrderMapper; @@ -161,6 +165,50 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { return wxTagsMapper.findList(wxTags); } + //按type 替换 + private List assign(WxCUserBasicInfo user, List enumTags, EnumTagType type){ + if(user == null){ + return null; + } + WxCUserTags record = new WxCUserTags(); + record.setUserId(user.getId()); + record.setTenantId(user.getFinalTenantId()); + List cUserTagsList = wxCUserTagsMapper.findList(record); + List tagIdList; + if(cUserTagsList != null && cUserTagsList.size() > 0){ + record.setId(cUserTagsList.get(0).getId()); + record.setTags(cUserTagsList.get(0).getTags()); + } + String tags = record.getTags(); + if (tags == null){ + tagIdList = new ArrayList(); + }else{ + tagIdList = JSON.parseArray(tags, Long.class); + } + Iterator it = tagIdList.iterator(); + while(it.hasNext()){ + Long id = it.next(); + if(null != id && null != EnumTag.getEnum(id) && EnumTag.getEnum(id).getCode() == type.getCode()){ + it.remove(); + } + } + if(enumTags != null && enumTags.size() > 0){ + for (EnumTag enumTag:enumTags) { + tagIdList.add(enumTag.getCode()); + } + } + record.setTags(JSON.toJSONString(tagIdList)); + saveOrUpdate(record); + + if (user.getTagId() == null || !user.getTagId().equals(record.getId())) { + user.setTagId(record.getId()); + wxCUserBasicInfoMapper.updateById(user); + } + WxTags wxTags = new WxTags(); + wxTags.setIds(tagIdList); + return wxTagsMapper.findList(wxTags); + } + //去标 private List resign(WxCUserBasicInfo user, EnumTag tag){ if (tag == null || user == null) @@ -593,6 +641,54 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { return resList; } + private List assignTypeId29(WxCUserBasicInfo user) { + List resList = null; + WxCUserBasicChild uChild = new WxCUserBasicChild(); + uChild.setTenantId(user.getFinalTenantId()); + uChild.setCUserId(user.getId()); + List list = wxCUserBasicChildMapper.findList(uChild); + if(list != null && list.size() > 0){ + List tags = new ArrayList<>(); + for (WxCUserBasicChild child:list) { + if(child.getBirthdate() != null){ + Calendar cal = Calendar.getInstance(); + if (cal.after(child.getBirthdate())) { + int age = DateUtils.getAge(child.getBirthdate()); + if(age < 1){ + if(!tags.contains(EnumTag.ID_166)){ + tags.add(EnumTag.ID_166); + } + }else if(age >= 1 && age < 3){ + if(!tags.contains(EnumTag.ID_167)){ + tags.add(EnumTag.ID_167); + } + }else if(age >= 3 && age < 6){ + if(!tags.contains(EnumTag.ID_168)){ + tags.add(EnumTag.ID_168); + } + }else if(age >= 6 && age < 12){ + if(!tags.contains(EnumTag.ID_169)){ + tags.add(EnumTag.ID_169); + } + }else if(age >= 12 && age < 15){ + if(!tags.contains(EnumTag.ID_170)){ + tags.add(EnumTag.ID_170); + } + }else if(age >= 15 && age < 18){ + if(!tags.contains(EnumTag.ID_171)){ + tags.add(EnumTag.ID_171); + } + } + } + } + } + resList = assign(user,tags,EnumTagType.ID_29); + }else{ + resList = assign(user,null,EnumTagType.ID_29); + } + return resList; + } + //打标接口 @Override public List assignTags(List tagIdList, WxCUserBasicInfo user) { @@ -638,6 +734,7 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { //学历 resList = assignTypeId6(user, param.getEducation()); } + resList = assignTypeId29(user); } } break; @@ -730,6 +827,8 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { //学历 resList = assignTypeId6(user, user.getEducation()); } + + resList = assignTypeId29(user); //消费类别 resList = assignTypeId14(user,tenantEntity); diff --git a/mallinkService/src/main/java/com/iformall/utils/DateUtils.java b/mallinkService/src/main/java/com/iformall/utils/DateUtils.java index e3810038f..5bc1e01e2 100755 --- a/mallinkService/src/main/java/com/iformall/utils/DateUtils.java +++ b/mallinkService/src/main/java/com/iformall/utils/DateUtils.java @@ -1258,4 +1258,34 @@ public class DateUtils { System.out.println(next); } */ + + + /** + * 获取多少岁 + * @param birthDay + * @return + * @throws Exception + */ + public static int getAge(Date birthDay){ + Calendar cal = Calendar.getInstance(); + if (cal.before(birthDay)) { //出生日期晚于当前时间,无法计算 + throw new IllegalArgumentException( + "The birthDay is before Now.It's unbelievable!"); + } + int yearNow = cal.get(Calendar.YEAR); //当前年份 + int monthNow = cal.get(Calendar.MONTH); //当前月份 + int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH); //当前日期 + cal.setTime(birthDay); + int yearBirth = cal.get(Calendar.YEAR); + int monthBirth = cal.get(Calendar.MONTH); + int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH); + int age = yearNow - yearBirth; //计算整岁数 + if (monthNow <= monthBirth) { + if (monthNow == monthBirth) { + if (dayOfMonthNow < dayOfMonthBirth) age--;//当前日期在生日之前,年龄减一 + }else{ + age--;//当前月份在生日之前,年龄减一 + } + } return age; + } }