diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponController.java index 3fa83d463..d2edad140 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponController.java @@ -27,32 +27,6 @@ public class WxCouponController extends BaseController { @Autowired private WxCouponService wxCouponService; - @ApiOperation("根据id(coupon)查询接口") - @GetMapping("/detailC") - @ApiImplicitParams({ - @ApiImplicitParam(name = "couponId", value = "couponChannelId", dataType = "String", paramType = "query", required = true)}) - public ResultData detail(String couponId) { - if (StringUtils.isBlank(couponId)) { - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "couponChannelId为空"); - } - Long couponIdL = 0L; - try { - couponIdL = Long.valueOf(couponId); - } catch (NumberFormatException e) { - logger.error("id转换失败" + couponId); - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "couponChannelId转换失败" + couponId); - } - WxCoupon wxCoupon = new WxCoupon(); - wxCoupon.setId(couponIdL); - wxCoupon.setTenantId(getTenantId()); - WxCouponCVo wxCouponCVo = wxCouponService.selectDetailForCUser(wxCoupon); - if (wxCouponCVo == null) - return new ResultData(ErrorCode.COUPON_IS_EMPTY); - - return new ResultData(wxCouponCVo); - - } - @ApiOperation("根据id(couponChannel)查询接口") @GetMapping("/detail") diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java index 231d5e5ff..d73e62dfd 100755 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java @@ -134,7 +134,7 @@ public class WxUserGrantController extends BaseController { JSONObject extraInfo = new JSONObject(); extraInfo.put("systemInfo",JSONObject.parseObject(systemInfo)); - user.setExtraInfo(extraInfo.toJSONString()); + user1.setExtraInfo(extraInfo.toJSONString()); wxCUserService.saveOrUpdate(user1); diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java index 1ab47eadd..222299818 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java @@ -71,4 +71,15 @@ public interface WxCouponOrderMapper extends CommonMapper { List queryForSceneRepotyHistoryVerified(HashMap params); + + /** + * 查询用户核销/领券数 + * @param cUserId + * @param startTime + * @param endTime + * @return + */ + int findOrderedCountForCUser(@Param("cUserId")Long cUserId,@Param("startTime") Date startTime,@Param("endTime")Date endTime); + int findVerifiedCountForCUser(@Param("cUserId")Long cUserId,@Param("startTime") Date startTime,@Param("endTime")Date endTime); + } 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 c67bccc71..66a194b36 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserTagsServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserTagsServiceImpl.java @@ -5,12 +5,13 @@ import java.util.*; import java.util.regex.Pattern; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.iformall.domain.po.*; import com.iformall.enums.EnumAssignTagsTrigger; import com.iformall.enums.EnumCUserBaseInfoSex; import com.iformall.enums.EnumTag; import com.iformall.enums.EnumTagType; -import com.iformall.mapper.WxCUserBasicInfoMapper; +import com.iformall.mapper.*; import com.iformall.service.WxCUserBasicInfoService; import com.iformall.service.WxTagsService; import org.slf4j.Logger; @@ -22,9 +23,6 @@ import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.iformall.common.IdWorker; import com.iformall.domain.vo.WxChooseTagVo; -import com.iformall.mapper.WxCUserMapper; -import com.iformall.mapper.WxCUserTagsMapper; -import com.iformall.mapper.WxTagsMapper; import com.iformall.service.WxCUserTagsService; @Service @@ -40,6 +38,10 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { @Autowired WxCUserBasicInfoService wxCUserBasicInfoService; + @Autowired + WxCouponOrderMapper wxCouponOrderMapper; + + @Autowired WxCUserMapper wxCUserMapper; @@ -315,10 +317,125 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { return resList; } + private List assignTypeId9(WxCUserBasicInfo user, String extraInfo) { + List resList = null; + JSONObject extraInfoJson = JSONObject.parseObject(extraInfo); + if (extraInfoJson == null) return null; + JSONObject systemInfoJson = extraInfoJson.getJSONObject("systemInfo"); + if (systemInfoJson == null) return null; + String brand = extraInfoJson.getString("brand"); + if(brand == null) return null; + brand = brand.toUpperCase(); + if (brand.equals("IPHONE")) + resList = assign(user, EnumTag.ID_49); + else if (brand.equals("HUAWEI")) + resList = assign(user, EnumTag.ID_50); + else if (brand.equals("VIVO") || brand.toUpperCase().equals("OPPO")) + resList = assign(user, EnumTag.ID_51); + else if (brand.equals("SAMSUNG")) + resList = assign(user, EnumTag.ID_52); + else if (brand.equals("XIAOMI")) + resList = assign(user, EnumTag.ID_53); + else + resList = assign(user, EnumTag.ID_54); + return resList; + } + private List assignTypeId11(WxCUserBasicInfo user) { return assign(user, EnumTag.ID_58); } + private List assignTypeId21(WxCUserBasicInfo user, WxCUser param) { + List resList = null; + int days = (int) ((new Date().getTime() - param.getCreateDate().getTime()) / (1000*3600*24)); + + float loginRate = (float)param.getLoginCount()/days; + if (loginRate > 1F/4) + resList = assign(user, EnumTag.ID_109); + else if (loginRate > 1F/7) + resList = assign(user, EnumTag.ID_108); + else if (loginRate > 1F/30) + resList = assign(user, EnumTag.ID_107); + return resList; + } + + private List assignTypeId18(WxCUserBasicInfo user, WxCUser param) { + List resList = null; + + int workDayCount = 0; + int workNightCount = 0; + int WeekendDayCount = 0; + int WeekendNightCount = 0; + + Calendar endC = Calendar.getInstance(); + Calendar startC = Calendar.getInstance(); + Date endTime = new Date(); + Date startTime = new Date(); + endC.setTime(endTime); + startC.setTime(startTime); + + endC.set(Calendar.HOUR_OF_DAY, 18); + startC.set(Calendar.HOUR_OF_DAY, 6); + + for (int ago = 0; ago > -30 ; ago-- ) { + if (endC.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY + && endC.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY) { + workDayCount += wxCouponOrderMapper.findVerifiedCountForCUser(param.getId(),startTime,endTime); + } else { + WeekendDayCount += wxCouponOrderMapper.findVerifiedCountForCUser(param.getId(),startTime,endTime); + } + + endC.add(Calendar.DAY_OF_YEAR, -1); + + if (endC.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY + && endC.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY) { + workNightCount += wxCouponOrderMapper.findVerifiedCountForCUser(param.getId(),startTime,endTime); + } else { + WeekendNightCount += wxCouponOrderMapper.findVerifiedCountForCUser(param.getId(),startTime,endTime); + } + + startC.add(Calendar.DAY_OF_YEAR, -1); + } + + if (workDayCount > WeekendDayCount + && workDayCount > workNightCount + && workDayCount > WeekendNightCount) + resList = assign(user, EnumTag.ID_97); + else if (workNightCount > workDayCount + && workNightCount > WeekendDayCount + && workNightCount > WeekendNightCount) + resList = assign(user, EnumTag.ID_98); + else if (WeekendDayCount > workDayCount + && WeekendDayCount > workNightCount + && WeekendDayCount > WeekendNightCount) + resList = assign(user, EnumTag.ID_99); + else if (WeekendNightCount > workDayCount + && WeekendNightCount > workNightCount + && WeekendNightCount > WeekendDayCount) + resList = assign(user, EnumTag.ID_100); + return resList; + } + + private List assignTypeId22(WxCUserBasicInfo user, WxCUser param) { + List resList = null; + Calendar c = Calendar.getInstance(); + Date endTime = new Date(); + c.setTime(endTime); + c.add(Calendar.DAY_OF_YEAR, -30); + Date startTime = c.getTime(); + int count = wxCouponOrderMapper.findVerifiedCountForCUser(param.getId(),startTime,endTime); + + float verifiedRate = (float)count/30; + if (verifiedRate > 1F/4) + resList = assign(user, EnumTag.ID_112); + else if (verifiedRate > 1F/7) + resList = assign(user, EnumTag.ID_111); + else if (verifiedRate > 1F/30) + resList = assign(user, EnumTag.ID_110); + + return resList; + } + //@Override private List triggerAssignTags(EnumAssignTagsTrigger trigger, Object obj) { @@ -332,41 +449,27 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { WxCUserBasicInfo param = (WxCUserBasicInfo) obj; WxCUserBasicInfo user = wxCUserBasicInfoService.getById(param.getId()); if (user != null) { - - //性别 if (param.getSex() != null) { + //性别 resList = assignTypeId1(user, param.getSex()); } - - //X0后 if (param.getBirthdate() != null) { + //X0后 resList = assignTypeId2(user, param.getBirthdate()); - } - - //生肖 - if (param.getBirthdate() != null) { + //生肖 resList = assignTypeId3(user, param.getBirthdate()); - } - - //星座 - if (param.getBirthdate() != null) { resList = assignTypeId4(user, param.getBirthdate()); } - - //来源 if (param.getPhone() != null) { + //来源 resList = assignTypeId5(user, false); + //运营商 + resList = assignTypeId7(user, param.getPhone()); } - - //学历 if (param.getEducation() != null) { + //学历 resList = assignTypeId6(user, param.getEducation()); } - - //运营商 - if (param.getPhone() != null) { - resList = assignTypeId7(user, param.getPhone()); - } } } break; @@ -374,6 +477,7 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { WxCUserCar param = (WxCUserCar) obj; WxCUserBasicInfo user = wxCUserBasicInfoService.getById(param.getCUserId()); if (user != null) { + //车 resList = assignTypeId11(user); } } @@ -382,20 +486,26 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { WxCUser param = (WxCUser) obj; WxCUserBasicInfo user = wxCUserBasicInfoService.getById(param.getId()); if (user != null) { - //来源 if (param.getPhone() != null) { + //来源 resList = assignTypeId5(user, true); - } - - //运营商 - if (param.getPhone() != null) { + //运营商 resList = assignTypeId7(user, param.getPhone()); } } } break; - case ASSIGN_TAGS_TRIGGER_BUY: - break; + case ASSIGN_TAGS_TRIGGER_BUY:{ + WxCUser param = (WxCUser) obj; + WxCUserBasicInfo user = wxCUserBasicInfoService.getById(param.getId()); + if (user != null) { + //消费时段 + resList = assignTypeId18(user, param); + //消费频度 + resList = assignTypeId22(user, param); + } + } + break; case ASSIGN_TAGS_TRIGGER_USE: break; @@ -403,10 +513,17 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { WxCUser param = (WxCUser) obj; WxCUserBasicInfo user = wxCUserBasicInfoService.getById(param.getId()); if (user != null) { - if (param.getGender() != null) { + //性别 resList = assignTypeId1(user, param.getGender()); } + if (param.getExtraInfo() != null) { + //手机 + resList = assignTypeId9(user, param.getExtraInfo()); + } + //活跃 + resList = assignTypeId21(user, param); + } } break; diff --git a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml index 336504abd..3766ecfb5 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml @@ -585,4 +585,20 @@ group by xTime + + + + + \ No newline at end of file