| @@ -37,7 +37,7 @@ public class WxTagsController extends BaseController { | |||
| @SystemControllerLog(description = "会员管理-标签获取") | |||
| public ResultData getAllList() { | |||
| logger.debug("[" + getIpAddr() + "] WxTagsController::getAllList"); | |||
| return new ResultData(wxTagsService.listAllVo()); | |||
| return new ResultData(wxTagsService.listAllVo(ifParentUpdateTenantInfo())); | |||
| } | |||
| @ApiOperation("查询会员用户人群") | |||
| @@ -231,7 +231,7 @@ public class WxCUserBasicInfoController extends BaseController { | |||
| wxCUserBasicInfo.setFinalTenantId(tenantEntity.getFinalTenantId()); | |||
| wxCUserBasicInfoService.update(wxCUserBasicInfo); | |||
| wxCUserBasicInfo.updateTenantInfo(oldInfo); | |||
| wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_IMPORT, wxCUserBasicInfo,tenantEntity); | |||
| wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_IMPORT, wxCUserBasicInfo,tenantEntity,null); | |||
| return new ResultData(); | |||
| } | |||
| @@ -0,0 +1 @@ | |||
| ALTER TABLE wx_tags ADD COLUMN tenant_id VARCHAR(5) COMMENT '商场专属时填写'; | |||
| @@ -244,7 +244,7 @@ public class WxCUserController extends BaseController { | |||
| //增加积分 | |||
| addCredit(wxCUserBasicInfo, EnumScoreType.COMPLETE_INFO, bUser,wxMerchant); | |||
| } | |||
| wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_IMPORT, wxCUserBasicInfo,bUser); | |||
| wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_IMPORT, wxCUserBasicInfo,bUser,null); | |||
| wxCUserFromB.setBUserId(wxCUserFromBDto.getUserId()); | |||
| wxCUserFromB.setCUserId(wxCUserBasicInfo.getId()); | |||
| wxCUserFromB.setOpenid(wxCUserFromBDto.getOpenid()); | |||
| @@ -89,7 +89,7 @@ public class WxMsgValidationcodeController extends BaseController { | |||
| wxCUserService.saveOrUpdate(user); | |||
| wxCUserService.delForUserIdOnly(user.getId(),user.getUserId(),user.getTenantId()); | |||
| // wxCUserService.assureUserIdOnly(user.getId(),); | |||
| wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_PHONE,user,wxMsgValidationcode); | |||
| wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_PHONE,user,wxMsgValidationcode,null); | |||
| cUserTokenService.removeTokenCache(user.getToken()); | |||
| } | |||
| @@ -628,7 +628,7 @@ public class WxUserGrantController extends BaseController { | |||
| } | |||
| wxCUserService.saveOrUpdate(user); | |||
| wxCUserService.delForUserIdOnly(user.getId(),user.getUserId(),user.getTenantId()); | |||
| wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_PHONE, user,user); | |||
| wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_PHONE, user,user,null); | |||
| } | |||
| removeCacheCUser(); | |||
| @@ -913,7 +913,7 @@ public class WxUserGrantController extends BaseController { | |||
| wxCreditHistory.setOperatorType(EnumUserType.CUSERBASIC.getCode()); | |||
| wxCreditHistory.setOperatorId(memberId); | |||
| wxCreditHistoryService.saveOrUpdate(wxCreditHistory,tenantEntity.getTenantId()); | |||
| wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_IMPORT, record,tenantEntity); | |||
| wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_IMPORT, record,tenantEntity,null); | |||
| removeCacheCUser(); | |||
| } | |||
| @@ -6,6 +6,8 @@ import com.iformall.domain.po.*; | |||
| import com.iformall.domain.po.base.TenantEntity; | |||
| import com.iformall.enums.EnumAssignTagsTrigger; | |||
| import com.iformall.service.*; | |||
| import com.iformall.service.tags.jinmao.JinMaoOrderTagsDeveloper; | |||
| import com.iformall.service.tags.jinmao.JinMaoUserTagsDeveloper; | |||
| import org.apache.commons.lang3.StringUtils; | |||
| import org.slf4j.Logger; | |||
| @@ -48,6 +50,12 @@ public class JinMaoController extends BaseController { | |||
| @Autowired | |||
| private JmSportOrderService jmSportOrderService; | |||
| @Autowired | |||
| private JinMaoOrderTagsDeveloper jinMaoOrderTagsDeveloper; | |||
| @Autowired | |||
| private JinMaoUserTagsDeveloper jinMaoUserTagsDeveloper; | |||
| @@ -109,7 +117,7 @@ public class JinMaoController extends BaseController { | |||
| basicInfo.setAddress(address); | |||
| wxCUserBasicInfoService.registerJinmao(tenantEntity,basicInfo); | |||
| wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_JINMAO_USER, basicInfo,tenantEntity); | |||
| wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_DEV, basicInfo,tenantEntity,jinMaoUserTagsDeveloper); | |||
| }else{ | |||
| logger.error("JinMaoController --dfhUser 手机号为空或格式不正确---phone{}"+phone); | |||
| } | |||
| @@ -176,7 +184,7 @@ public class JinMaoController extends BaseController { | |||
| order.setGymName(gymName); | |||
| jmSportOrderService.saveOrUpdate(order); | |||
| wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_JINMAO_ORDER, basicInfo,tenantEntity); | |||
| wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_DEV, basicInfo,tenantEntity,jinMaoOrderTagsDeveloper); | |||
| }else{ | |||
| logger.error("JinMaoController --dfhOrder--订单手机号为空或者订单号为空-userPhone{}"+userPhone+"-orderId{}"+orderId); | |||
| @@ -63,7 +63,7 @@ public class WxCUserTagsSchedule { | |||
| page = wxCUserBasicInfoService.listAsPage(wxCUserBasicInfo, pageIndex++, pageSize); | |||
| page.getList().stream().forEach(cubi -> { | |||
| try { | |||
| wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_SCAN, new WxCUserBasicTagVo((WxCUserBasicInfo)cubi,mall.getTenantId()),mall); | |||
| wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_SCAN, new WxCUserBasicTagVo((WxCUserBasicInfo)cubi,mall.getTenantId()),mall,null); | |||
| }catch(Exception e) { | |||
| logger.error("wxCUserTagsSchedule error."+cubi.toString(),e); | |||
| } | |||
| @@ -26,7 +26,9 @@ public class WxTags extends BaseEntity { | |||
| private String groupName; | |||
| @io.swagger.annotations.ApiModelProperty(value="二级属性 性别等",name="typeName") | |||
| private String typeName; | |||
| @io.swagger.annotations.ApiModelProperty(value="专属商场标签时填写",name="tenantId") | |||
| private String tenantId; | |||
| @TableField(exist = false) | |||
| protected Long count; | |||
| @@ -14,8 +14,7 @@ public enum EnumAssignTagsTrigger { | |||
| ASSIGN_TAGS_TRIGGER_BUY(5, "购买"), | |||
| ASSIGN_TAGS_TRIGGER_USE(6, "核销"), | |||
| ASSIGN_TAGS_TRIGGER_SCAN(7, "扫描会员列表"), | |||
| ASSIGN_TAGS_TRIGGER_JINMAO_USER(8, "金茂对接会员"), | |||
| ASSIGN_TAGS_TRIGGER_JINMAO_ORDER(9, "金茂对接订单"), | |||
| ASSIGN_TAGS_TRIGGER_DEV (8, "定制标签") | |||
| ; | |||
| public static EnumAssignTagsTrigger getEnum(Integer code) { | |||
| @@ -9,8 +9,11 @@ public enum EnumTagGroup { | |||
| ID_2(2L, "生活属性"), | |||
| ID_3(3L, "消费偏好"), | |||
| ID_4(4L, "行为偏好"), | |||
| ID_8(8L,"商场定制标签"), | |||
| ID_10(10L, "会员动态"), | |||
| ; | |||
| public static EnumTagGroup getEnum(Long code) { | |||
| @@ -42,9 +42,9 @@ public enum EnumTagType { | |||
| ID_30(30L, EnumTagTypeFlag.FLAG_SINGLE, EnumTagGroup.ID_1, "BMI"), | |||
| ID_31(31L, EnumTagTypeFlag.FLAG_SINGLE, EnumTagGroup.ID_4, "运动频率"), | |||
| ID_31(31L, EnumTagTypeFlag.FLAG_SINGLE, EnumTagGroup.ID_8, "运动频率"), | |||
| ID_32(32L, EnumTagTypeFlag.FLAG_SINGLE, EnumTagGroup.ID_4, "购买力"), | |||
| ID_32(32L, EnumTagTypeFlag.FLAG_SINGLE, EnumTagGroup.ID_8, "购买力"), | |||
| ID_0(0L, EnumTagTypeFlag.FLAG_SINGLE, EnumTagGroup.ID_10, "会员手机"), | |||
| ID_50(50L, EnumTagTypeFlag.FLAG_SINGLE, EnumTagGroup.ID_10, "会员会龄"), | |||
| @@ -2,12 +2,12 @@ package com.iformall.mapper; | |||
| import com.iformall.common.CommonMapper; | |||
| import com.iformall.domain.po.WxTags; | |||
| import java.util.List; | |||
| import java.util.Map; | |||
| import org.apache.ibatis.annotations.Param; | |||
| public interface WxTagsMapper extends CommonMapper<WxTags, String> { | |||
| List<WxTags> findList(WxTags wxTags); | |||
| List<WxTags> findListAll(); | |||
| List<WxTags> findListAll(@Param("tenantId") String tenantId); | |||
| } | |||
| @@ -6,6 +6,7 @@ import com.iformall.domain.po.WxCUserTags; | |||
| import com.iformall.domain.po.WxTags; | |||
| import com.iformall.domain.po.base.TenantEntity; | |||
| import com.iformall.enums.EnumAssignTagsTrigger; | |||
| import com.iformall.service.tags.TagsDeveloper; | |||
| import java.util.Date; | |||
| import java.util.List; | |||
| @@ -48,7 +49,7 @@ public interface WxCUserTagsService { | |||
| List<WxTags> assignTags(List<Long> tagIdList,WxCUserBasicInfo user); | |||
| List<WxTags> triggerAssignTags(EnumAssignTagsTrigger trigger, Object obj,TenantEntity tenantEntity); | |||
| List<WxTags> triggerAssignTags(EnumAssignTagsTrigger trigger, Object obj,TenantEntity tenantEntity,TagsDeveloper tagsDeveloper); | |||
| void updateTagByUserId(Long cUserId,TenantEntity tenantinfo, List<Long> tags); | |||
| @@ -3,6 +3,7 @@ package com.iformall.service; | |||
| import java.util.*; | |||
| import com.github.pagehelper.PageInfo; | |||
| import com.iformall.domain.po.WxTags; | |||
| import com.iformall.domain.po.base.TenantEntity; | |||
| import com.iformall.domain.vo.WxTagsGroupVo; | |||
| public interface WxTagsService { | |||
| @@ -41,6 +42,6 @@ public interface WxTagsService { | |||
| List<WxTags> findList(WxTags wxTags); | |||
| List<WxTagsGroupVo> listAllVo(); | |||
| List<WxTagsGroupVo> listAllVo(TenantEntity tenantEntity); | |||
| } | |||
| @@ -236,7 +236,7 @@ public class TtCUserServiceImpl implements TtCUserService { | |||
| basicInfo.setLoginCount(loingcount+1); | |||
| wxCUserBasicInfoService.update(basicInfo); | |||
| wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_LOGIN, user,user); | |||
| wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_LOGIN, user,user,null); | |||
| } | |||
| // WxCUser wxCUser = getById(user.getId(),user.getTenantId()); | |||
| // if (wxCUser != null) { | |||
| @@ -510,7 +510,7 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService,IExc | |||
| types.add(generateType53()); | |||
| types.add(generateType54()); | |||
| filter.setTypes(types); | |||
| List<WxTagsGroupVo> listVo =wxTagsService.listAllVo(); | |||
| List<WxTagsGroupVo> listVo =wxTagsService.listAllVo(tenantEntity); | |||
| listVo.add(0,filter); | |||
| return listVo; | |||
| } | |||
| @@ -1398,7 +1398,7 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService,IExc | |||
| //// | |||
| //// } | |||
| // | |||
| List<WxTags> tagList = wxTagsMapper.findListAll(); | |||
| List<WxTags> tagList = wxTagsMapper.findListAll(tenantInfo.getTenantId()); | |||
| // | |||
| // Map<Long, Integer> finalChaddMap = chaddMap; | |||
| // Map<Long, Integer> finalChlesMap = chlesMap; | |||
| @@ -298,7 +298,7 @@ public class WxCUserServiceImpl implements WxCUserService { | |||
| basicInfo.setLoginCount(loingcount+1); | |||
| wxCUserBasicInfoService.update(basicInfo); | |||
| wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_LOGIN, user,user); | |||
| wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_LOGIN, user,user,null); | |||
| } | |||
| // WxCUser wxCUser = getById(user.getId(),user.getTenantId()); | |||
| // if (wxCUser != null) { | |||
| @@ -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.service.tags.TagsDeveloper; | |||
| import com.iformall.utils.DateUtils; | |||
| import org.apache.commons.lang3.StringUtils; | |||
| import org.slf4j.Logger; | |||
| @@ -42,8 +43,6 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { | |||
| @Autowired | |||
| WxCouponOrderMapper wxCouponOrderMapper; | |||
| @Autowired | |||
| JmSportOrderMapper jmSportOrderMapper; | |||
| @Autowired | |||
| WxCardSpendMapper wxCardSpendMapper; | |||
| @@ -121,7 +120,7 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { | |||
| //**************************************************自动打标逻辑代码 ************************************************************* | |||
| //打标 | |||
| private List<WxTags> assign(WxCUserBasicInfo user, EnumTag tag){ | |||
| protected List<WxTags> assign(WxCUserBasicInfo user, EnumTag tag){ | |||
| if (tag == null || user == null) | |||
| return null; | |||
| WxCUserTags record = new WxCUserTags(); | |||
| @@ -249,7 +248,7 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { | |||
| } | |||
| //类型打标 | |||
| private List<WxTags> assignTypeId1(WxCUserBasicInfo user, Integer sex) { | |||
| protected List<WxTags> assignTypeId1(WxCUserBasicInfo user, Integer sex) { | |||
| List<WxTags> resList = null; | |||
| if (sex.equals(EnumCUserBaseInfoSex.MALE.getCode())) | |||
| resList = assign(user, EnumTag.ID_1); | |||
| @@ -258,7 +257,7 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { | |||
| return resList; | |||
| } | |||
| private List<WxTags> assignTypeId2(WxCUserBasicInfo user, Date date) { | |||
| protected List<WxTags> assignTypeId2(WxCUserBasicInfo user, Date date) { | |||
| List<WxTags> resList = null; | |||
| SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); | |||
| try { | |||
| @@ -278,7 +277,7 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { | |||
| return resList; | |||
| } | |||
| private List<WxTags> assignTypeId3(WxCUserBasicInfo user, Date date) { | |||
| protected List<WxTags> assignTypeId3(WxCUserBasicInfo user, Date date) { | |||
| Calendar cal = Calendar.getInstance(); | |||
| cal.setTime(date); | |||
| int year = cal.get(Calendar.YEAR); | |||
| @@ -301,7 +300,7 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { | |||
| return null; | |||
| } | |||
| private List<WxTags> assignTypeId4(WxCUserBasicInfo user, Date date) { | |||
| protected List<WxTags> assignTypeId4(WxCUserBasicInfo user, Date date) { | |||
| final int[] dayArr = new int[]{ | |||
| 20, 19, 21, 20, | |||
| 21, 22, 23, 23, | |||
| @@ -352,7 +351,7 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { | |||
| return resList; | |||
| } | |||
| private List<WxTags> assignTypeId7(WxCUserBasicInfo user, String phone) { | |||
| protected List<WxTags> assignTypeId7(WxCUserBasicInfo user, String phone) { | |||
| List<WxTags> resList = null; | |||
| /** | |||
| @@ -700,7 +699,7 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { | |||
| } | |||
| return resList; | |||
| } | |||
| private List<WxTags> assignTypeId30(WxCUserBasicInfo user, String h,String w) { | |||
| protected List<WxTags> assignTypeId30(WxCUserBasicInfo user, String h,String w) { | |||
| List<WxTags> resList = null; | |||
| //BMI=体重(kg)/(身高X身高)(㎡) | |||
| // ID_172(172L, EnumTagType.ID_30, "过轻"),//BMI<18.5 | |||
| @@ -722,55 +721,6 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { | |||
| return resList; | |||
| } | |||
| private List<WxTags> assignTypeId31(WxCUserBasicInfo user,TenantEntity tenantEntity) { | |||
| List<WxTags> resList = null; | |||
| Calendar startC = Calendar.getInstance(); | |||
| startC.setTime(new Date()); | |||
| startC.add(Calendar.DAY_OF_YEAR, -30); | |||
| JmSportOrder jmSportOrder = new JmSportOrder(); | |||
| jmSportOrder.setUserId(user.getId()); | |||
| jmSportOrder.setStartDate(startC.getTime()); | |||
| jmSportOrder.setEndDate(new Date()); | |||
| jmSportOrder.updateTenantInfo(tenantEntity); | |||
| int count = jmSportOrderMapper.findCount(jmSportOrder); | |||
| // 平均30天订单数>3 高 | |||
| // 3>平均30天订单数>1.5 中 | |||
| // 1.5>平均30天订单数>0 低 | |||
| float verifiedRate = (float)count/30; | |||
| if (verifiedRate > 1F/10) | |||
| resList = assign(user, EnumTag.ID_178); | |||
| else if (verifiedRate > 1F/20) | |||
| resList = assign(user, EnumTag.ID_177); | |||
| else | |||
| resList = assign(user, EnumTag.ID_176); | |||
| return resList; | |||
| } | |||
| private List<WxTags> assignTypeId32(WxCUserBasicInfo user,TenantEntity tenantEntity) { | |||
| List<WxTags> resList = null; | |||
| JmSportOrder jmSportOrder = new JmSportOrder(); | |||
| jmSportOrder.setUserId(user.getId()); | |||
| jmSportOrder.updateTenantInfo(tenantEntity); | |||
| Integer avgPayment = jmSportOrderMapper.findAvgPayment(jmSportOrder); | |||
| // 30>平均订单金额>50 强购买力 | |||
| // 30>平均订单金额>10 中购买力 | |||
| // 10>平均订单金额>0 弱购买力 | |||
| if(avgPayment != null){ | |||
| if (avgPayment.intValue() >= 30) | |||
| resList = assign(user, EnumTag.ID_181); | |||
| else if (avgPayment.intValue() >= 10) | |||
| resList = assign(user, EnumTag.ID_180); | |||
| else | |||
| resList = assign(user, EnumTag.ID_179); | |||
| } | |||
| return resList; | |||
| } | |||
| //打标接口 | |||
| @Override | |||
| public List<WxTags> assignTags(List<Long> tagIdList, WxCUserBasicInfo user) { | |||
| @@ -783,7 +733,7 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { | |||
| //打标触发 | |||
| @Override | |||
| public List<WxTags> triggerAssignTags(EnumAssignTagsTrigger trigger, Object obj,TenantEntity tenantEntity) { | |||
| public List<WxTags> triggerAssignTags(EnumAssignTagsTrigger trigger, Object obj,TenantEntity tenantEntity,TagsDeveloper developer) { | |||
| if (obj == null) | |||
| return null; | |||
| @@ -941,41 +891,8 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { | |||
| } | |||
| } | |||
| break; | |||
| case ASSIGN_TAGS_TRIGGER_JINMAO_USER: { | |||
| WxCUserBasicInfo param = (WxCUserBasicInfo) obj; | |||
| WxCUserBasicInfo user = wxCUserBasicInfoMapper.selectById(param.getId(),param.getFinalTenantId()); | |||
| if (user != null) { | |||
| if (user.getSex() != null) { | |||
| //性别 | |||
| resList = assignTypeId1(user, user.getSex()); | |||
| } | |||
| if (user.getBirthdate() != null) { | |||
| //X0后 | |||
| resList = assignTypeId2(user, user.getBirthdate()); | |||
| //生肖 | |||
| resList = assignTypeId3(user, user.getBirthdate()); | |||
| //星座 | |||
| resList = assignTypeId4(user, user.getBirthdate()); | |||
| } | |||
| if (user.getPhone() != null) { | |||
| //运营商 | |||
| resList = assignTypeId7(user, user.getPhone()); | |||
| } | |||
| if (StringUtils.isNotBlank(user.getHeight()) && StringUtils.isNotBlank(user.getWeight())){ | |||
| resList = assignTypeId30(user,user.getHeight(),user.getWeight()); | |||
| } | |||
| } | |||
| } | |||
| break; | |||
| case ASSIGN_TAGS_TRIGGER_JINMAO_ORDER: { | |||
| WxCUserBasicInfo param = (WxCUserBasicInfo) obj; | |||
| WxCUserBasicInfo user = wxCUserBasicInfoMapper.selectById(param.getId(),param.getFinalTenantId()); | |||
| if (user != null) { | |||
| //运动频次 | |||
| resList = assignTypeId31(user,tenantEntity); | |||
| //购买力 | |||
| resList = assignTypeId32(user,tenantEntity); | |||
| } | |||
| case ASSIGN_TAGS_TRIGGER_DEV: { | |||
| resList = developer.getTagList(tenantEntity, obj); | |||
| } | |||
| break; | |||
| default: | |||
| @@ -1430,7 +1430,7 @@ public class WxOrderServiceImpl implements WxOrderService { | |||
| */ | |||
| public void actionAfterCouponOrderSuccess(WxOrder updateOrder, WxCoupon coupon, WxCUserBasicInfo user) { | |||
| /// TODO 晚上会定时打一下tag | |||
| wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_BUY, user,updateOrder); | |||
| wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_BUY, user,updateOrder,null); | |||
| // 交易发券 | |||
| try { | |||
| @@ -6,6 +6,7 @@ import com.github.pagehelper.PageInfo; | |||
| import com.iformall.domain.po.WxTags; | |||
| import com.iformall.domain.po.WxTagsGroup; | |||
| import com.iformall.domain.po.WxTagsType; | |||
| import com.iformall.domain.po.base.TenantEntity; | |||
| import com.iformall.domain.vo.WxTagsGroupVo; | |||
| import com.iformall.domain.vo.WxTagsTypeVo; | |||
| import com.iformall.mapper.WxTagsMapper; | |||
| @@ -65,7 +66,7 @@ public class WxTagsServiceImpl implements WxTagsService { | |||
| } | |||
| @Override | |||
| public List<WxTagsGroupVo> listAllVo() { | |||
| public List<WxTagsGroupVo> listAllVo(TenantEntity tenantEntity) { | |||
| List<WxTagsGroupVo> groupVos = new ArrayList<>(); | |||
| List<WxTagsGroup> groups = wxTagsGroupService.findList(null); | |||
| for (WxTagsGroup tg : groups) { | |||
| @@ -85,6 +86,7 @@ public class WxTagsServiceImpl implements WxTagsService { | |||
| WxTags t = new WxTags(); | |||
| t.setTypeId(tt.getId()); | |||
| t.setTenantId(tenantEntity.getTenantId()); | |||
| ttvo.setTags(findList(t)); | |||
| typeVos.add(ttvo); | |||
| } | |||
| @@ -82,7 +82,7 @@ public class ParkHelper { | |||
| wxScoreRulesService.addScore(userCar,EnumScoreType.BIND_CAR, userCar); | |||
| //增加积分 | |||
| addCredit(park, cuUserId); | |||
| wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_CAR,userCar,park); | |||
| wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_CAR,userCar,park,null); | |||
| } | |||
| //-----增加积分start----- | |||
| @@ -0,0 +1,11 @@ | |||
| package com.iformall.service.tags; | |||
| import java.util.List; | |||
| import com.iformall.domain.po.WxTags; | |||
| import com.iformall.domain.po.base.TenantEntity; | |||
| public interface TagsDeveloper { | |||
| List<WxTags> getTagList( TenantEntity tenantEntity,Object obj); | |||
| } | |||
| @@ -0,0 +1,94 @@ | |||
| package com.iformall.service.tags.jinmao; | |||
| import java.util.Calendar; | |||
| import java.util.Date; | |||
| import java.util.List; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.stereotype.Service; | |||
| import com.iformall.domain.po.JmSportOrder; | |||
| import com.iformall.domain.po.WxCUserBasicInfo; | |||
| import com.iformall.domain.po.WxTags; | |||
| import com.iformall.domain.po.base.TenantEntity; | |||
| import com.iformall.enums.EnumTag; | |||
| import com.iformall.mapper.JmSportOrderMapper; | |||
| import com.iformall.mapper.WxCUserBasicInfoMapper; | |||
| import com.iformall.service.impl.WxCUserTagsServiceImpl; | |||
| import com.iformall.service.tags.TagsDeveloper; | |||
| @Service | |||
| public class JinMaoOrderTagsDeveloper extends WxCUserTagsServiceImpl implements TagsDeveloper { | |||
| @Autowired | |||
| private WxCUserBasicInfoMapper wxCUserBasicInfoMapper; | |||
| @Autowired | |||
| JmSportOrderMapper jmSportOrderMapper; | |||
| @Override | |||
| public List<WxTags> getTagList(TenantEntity tenantEntity,Object obj) { | |||
| List<WxTags> resList = null; | |||
| WxCUserBasicInfo param = (WxCUserBasicInfo) obj; | |||
| WxCUserBasicInfo user = wxCUserBasicInfoMapper.selectById(param.getId(),param.getFinalTenantId()); | |||
| if (user != null) { | |||
| //运动频次 | |||
| resList = assignTypeId31(user,tenantEntity); | |||
| //购买力 | |||
| resList = assignTypeId32(user,tenantEntity); | |||
| } | |||
| return resList; | |||
| } | |||
| private List<WxTags> assignTypeId31(WxCUserBasicInfo user,TenantEntity tenantEntity) { | |||
| List<WxTags> resList = null; | |||
| Calendar startC = Calendar.getInstance(); | |||
| startC.setTime(new Date()); | |||
| startC.add(Calendar.DAY_OF_YEAR, -30); | |||
| JmSportOrder jmSportOrder = new JmSportOrder(); | |||
| jmSportOrder.setUserId(user.getId()); | |||
| jmSportOrder.setStartDate(startC.getTime()); | |||
| jmSportOrder.setEndDate(new Date()); | |||
| jmSportOrder.updateTenantInfo(tenantEntity); | |||
| int count = jmSportOrderMapper.findCount(jmSportOrder); | |||
| // 平均30天订单数>3 高 | |||
| // 3>平均30天订单数>1.5 中 | |||
| // 1.5>平均30天订单数>0 低 | |||
| float verifiedRate = (float)count/30; | |||
| if (verifiedRate > 1F/10) | |||
| resList = assign(user, EnumTag.ID_178); | |||
| else if (verifiedRate > 1F/20) | |||
| resList = assign(user, EnumTag.ID_177); | |||
| else | |||
| resList = assign(user, EnumTag.ID_176); | |||
| return resList; | |||
| } | |||
| private List<WxTags> assignTypeId32(WxCUserBasicInfo user,TenantEntity tenantEntity) { | |||
| List<WxTags> resList = null; | |||
| JmSportOrder jmSportOrder = new JmSportOrder(); | |||
| jmSportOrder.setUserId(user.getId()); | |||
| jmSportOrder.updateTenantInfo(tenantEntity); | |||
| Integer avgPayment = jmSportOrderMapper.findAvgPayment(jmSportOrder); | |||
| // 30>平均订单金额>50 强购买力 | |||
| // 30>平均订单金额>10 中购买力 | |||
| // 10>平均订单金额>0 弱购买力 | |||
| if(avgPayment != null){ | |||
| if (avgPayment.intValue() >= 30) | |||
| resList = assign(user, EnumTag.ID_181); | |||
| else if (avgPayment.intValue() >= 10) | |||
| resList = assign(user, EnumTag.ID_180); | |||
| else | |||
| resList = assign(user, EnumTag.ID_179); | |||
| } | |||
| return resList; | |||
| } | |||
| } | |||
| @@ -0,0 +1,53 @@ | |||
| package com.iformall.service.tags.jinmao; | |||
| import java.util.List; | |||
| import org.apache.commons.lang3.StringUtils; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.stereotype.Service; | |||
| import com.iformall.domain.po.WxCUserBasicInfo; | |||
| import com.iformall.domain.po.WxTags; | |||
| import com.iformall.domain.po.base.TenantEntity; | |||
| import com.iformall.mapper.WxCUserBasicInfoMapper; | |||
| import com.iformall.service.impl.WxCUserTagsServiceImpl; | |||
| import com.iformall.service.tags.TagsDeveloper; | |||
| @Service | |||
| public class JinMaoUserTagsDeveloper extends WxCUserTagsServiceImpl implements TagsDeveloper{ | |||
| @Autowired | |||
| private WxCUserBasicInfoMapper wxCUserBasicInfoMapper; | |||
| @Override | |||
| public List<WxTags> getTagList(TenantEntity tenantEntity,Object obj) { | |||
| List<WxTags> resList = null; | |||
| WxCUserBasicInfo param = (WxCUserBasicInfo) obj; | |||
| WxCUserBasicInfo user = wxCUserBasicInfoMapper.selectById(param.getId(),param.getFinalTenantId()); | |||
| if (user != null) { | |||
| if (user.getSex() != null) { | |||
| //性别 | |||
| resList = assignTypeId1(user, user.getSex()); | |||
| } | |||
| if (user.getBirthdate() != null) { | |||
| //X0后 | |||
| resList = assignTypeId2(user, user.getBirthdate()); | |||
| //生肖 | |||
| resList = assignTypeId3(user, user.getBirthdate()); | |||
| //星座 | |||
| resList = assignTypeId4(user, user.getBirthdate()); | |||
| } | |||
| if (user.getPhone() != null) { | |||
| //运营商 | |||
| resList = assignTypeId7(user, user.getPhone()); | |||
| } | |||
| if (StringUtils.isNotBlank(user.getHeight()) && StringUtils.isNotBlank(user.getWeight())){ | |||
| resList = assignTypeId30(user,user.getHeight(),user.getWeight()); | |||
| } | |||
| } | |||
| return resList; | |||
| } | |||
| } | |||
| @@ -8,10 +8,11 @@ | |||
| <result column="group_name" jdbcType="VARCHAR" property="groupName"/> | |||
| <result column="type_id" jdbcType="BIGINT" property="typeId"/> | |||
| <result column="type_name" jdbcType="VARCHAR" property="typeName"/> | |||
| <result column="tenant_id" jdbcType="VARCHAR" property="tenantId"/> | |||
| </resultMap> | |||
| <sql id="allColumns"> | |||
| `id`,`name`,`group_id`,`group_name`,`type_id`,`type_name` | |||
| `id`,`name`,`group_id`,`group_name`,`type_id`,`type_name`,`tenant_id` | |||
| </sql> | |||
| <sql id="allColumnsVo"> | |||
| @@ -44,6 +45,10 @@ | |||
| <if test=" null != typeName "> | |||
| and `type_name` = #{typeName} | |||
| </if> | |||
| <if test=" null != tenantId "> | |||
| and (`tenant_id` = #{tenantId} or tenant_id is null or tenant_id = '') | |||
| </if> | |||
| <if test=" null != ids "> | |||
| and id in | |||
| @@ -61,9 +66,12 @@ | |||
| <include refid="dynamicWhereConditions"/> | |||
| </select> | |||
| <select id="findListAll" resultMap="BaseResultMap"> | |||
| <select id="findListAll" resultMap="BaseResultMap" parameterType="String"> | |||
| select | |||
| <include refid="allColumnsVo"/> | |||
| from wx_tags | |||
| <if test=" null != tenantId "> | |||
| and (`tenant_id` = #{tenantId} or tenant_id is null or tenant_id = '') | |||
| </if> | |||
| </select> | |||
| </mapper> | |||
| @@ -37,7 +37,7 @@ public class WxTagsController extends BaseController { | |||
| @SystemControllerLog(description = "会员管理-标签获取") | |||
| public ResultData getAllList() { | |||
| logger.debug("[" + getIpAddr() + "] WxTagsController::getAllList"); | |||
| return new ResultData(wxTagsService.listAllVo()); | |||
| return new ResultData(wxTagsService.listAllVo(ifParentUpdateTenantInfo())); | |||
| } | |||
| @ApiOperation("查询会员用户人群") | |||