| @@ -10,3 +10,9 @@ INSERT INTO `mallink`.`wx_tags_type`(`id`, `name`, `group_id`, `group_name`, `fl | |||
| INSERT INTO `mallink`.`wx_tags`(`id`, `name`, `group_id`, `group_name`, `type_id`, `type_name`) VALUES (176, '运动频率低', 4, '行为偏好', 31, '运动频率'); | |||
| INSERT INTO `mallink`.`wx_tags`(`id`, `name`, `group_id`, `group_name`, `type_id`, `type_name`) VALUES (177, '运动频率中', 4, '行为偏好', 31, '运动频率'); | |||
| INSERT INTO `mallink`.`wx_tags`(`id`, `name`, `group_id`, `group_name`, `type_id`, `type_name`) VALUES (178, '运动频率高', 4, '行为偏好', 31, '运动频率'); | |||
| INSERT INTO `mallink`.`wx_tags_type`(`id`, `name`, `group_id`, `group_name`, `flag`) VALUES (32, '购买力', 4, '行为偏好', 1); | |||
| INSERT INTO `mallink`.`wx_tags`(`id`, `name`, `group_id`, `group_name`, `type_id`, `type_name`) VALUES (179, '购买力弱', 4, '行为偏好', 32, '购买力'); | |||
| INSERT INTO `mallink`.`wx_tags`(`id`, `name`, `group_id`, `group_name`, `type_id`, `type_name`) VALUES (180, '购买力中', 4, '行为偏好', 32, '购买力'); | |||
| INSERT INTO `mallink`.`wx_tags`(`id`, `name`, `group_id`, `group_name`, `type_id`, `type_name`) VALUES (181, '购买力强', 4, '行为偏好', 32, '购买力'); | |||
| @@ -0,0 +1,46 @@ | |||
| /* | |||
| Navicat Premium Data Transfer | |||
| Source Server : 101.200.130.134 | |||
| Source Server Type : MySQL | |||
| Source Server Version : 50728 | |||
| Source Host : 101.200.130.134:3306 | |||
| Source Schema : mallink | |||
| Target Server Type : MySQL | |||
| Target Server Version : 50728 | |||
| File Encoding : 65001 | |||
| Date: 20/08/2021 15:37:07 | |||
| */ | |||
| SET NAMES utf8mb4; | |||
| SET FOREIGN_KEY_CHECKS = 0; | |||
| -- ---------------------------- | |||
| -- Table structure for jm_sport_order | |||
| -- ---------------------------- | |||
| DROP TABLE IF EXISTS `jm_sport_order`; | |||
| CREATE TABLE `jm_sport_order` ( | |||
| `id` bigint(20) NOT NULL COMMENT '主键ID', | |||
| `order_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, | |||
| `tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', | |||
| `parent_tenant_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '父租户ID', | |||
| `user_phone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, | |||
| `user_id` bigint(20) DEFAULT NULL COMMENT 'c端用户id', | |||
| `product_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, | |||
| `num` int(11) DEFAULT NULL COMMENT '数量', | |||
| `price` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '支付金额', | |||
| `payment` int(11) NOT NULL COMMENT '分', | |||
| `payment_time` datetime(0) DEFAULT NULL COMMENT '支付时间', | |||
| `pay_way` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '支付途径', | |||
| `gym_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '消费的场馆', | |||
| `create_date` datetime(0) NOT NULL COMMENT '创建时间', | |||
| `update_date` datetime(0) NOT NULL COMMENT '更新时间', | |||
| PRIMARY KEY (`id`) USING BTREE, | |||
| UNIQUE INDEX `id_UNIQUE`(`id`) USING BTREE, | |||
| UNIQUE INDEX `order_id`(`order_id`) USING BTREE, | |||
| INDEX `idx_user`(`user_id`) USING BTREE COMMENT '订单索引-用户' | |||
| ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '订单正反向交易各产生一个单独订单,用order_number保持正反向交易一致。' ROW_FORMAT = Dynamic; | |||
| SET FOREIGN_KEY_CHECKS = 1; | |||
| @@ -16,6 +16,8 @@ import org.springframework.web.bind.annotation.RequestMapping; | |||
| import org.springframework.web.bind.annotation.ResponseBody; | |||
| import org.springframework.web.bind.annotation.RestController; | |||
| import java.io.IOException; | |||
| import java.math.BigDecimal; | |||
| import java.math.RoundingMode; | |||
| import java.text.SimpleDateFormat; | |||
| import java.util.Date; | |||
| import java.util.Locale; | |||
| @@ -137,6 +139,12 @@ public class JinMaoController extends BaseController { | |||
| logger.info("dfh order:"+param); | |||
| try { | |||
| String price = param.get("price")==null?"":param.get("price").toString(); | |||
| Integer payment = 0; | |||
| if(StringUtils.isNotBlank(price)) { | |||
| payment = new BigDecimal(price) | |||
| .multiply(new BigDecimal(100)) | |||
| .intValue(); | |||
| } | |||
| Integer num = param.get("num")==null?1:Integer.parseInt(param.get("num").toString()); | |||
| String userPhone = param.get("userPhone")==null?"":param.get("userPhone").toString(); | |||
| String gymName = param.get("gymName")==null?"":param.get("gymName").toString(); | |||
| @@ -162,6 +170,7 @@ public class JinMaoController extends BaseController { | |||
| order.setProductName(productName); | |||
| order.setNum(num); | |||
| order.setPrice(price); | |||
| order.setPayment(payment); | |||
| order.setPaymentTime(paymentTime); | |||
| order.setPayWay(payWay); | |||
| order.setGymName(gymName); | |||
| @@ -28,6 +28,8 @@ public class JmSportOrder extends TenantEntity { | |||
| @io.swagger.annotations.ApiModelProperty(value="支付金额",name="price") | |||
| private String price; | |||
| private Integer payment;//分 | |||
| @io.swagger.annotations.ApiModelProperty(value="支付时间",name="paymentTime") | |||
| private Date paymentTime; | |||
| @@ -220,6 +220,10 @@ public enum EnumTag { | |||
| ID_177(177L, EnumTagType.ID_31,"运动频率中"), | |||
| ID_178(178L, EnumTagType.ID_31,"运动频率高"), | |||
| ID_179(179L, EnumTagType.ID_32,"购买力低"), | |||
| ID_180(180L, EnumTagType.ID_32,"购买力中"), | |||
| ID_181(181L, EnumTagType.ID_32,"购买力强"), | |||
| ID_1000(1000L, EnumTagType.ID_50,"一天以内"), | |||
| ID_1001(1001L, EnumTagType.ID_50,"一周以内"), | |||
| ID_1002(1002L, EnumTagType.ID_50,"一月以内"), | |||
| @@ -44,6 +44,8 @@ public enum EnumTagType { | |||
| ID_31(31L, EnumTagTypeFlag.FLAG_SINGLE, EnumTagGroup.ID_4, "运动频率"), | |||
| ID_32(32L, EnumTagTypeFlag.FLAG_SINGLE, EnumTagGroup.ID_4, "购买力"), | |||
| 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, "会员等级"), | |||
| @@ -11,4 +11,5 @@ public interface JmSportOrderMapper extends CommonMapper<JmSportOrder, Long> { | |||
| Integer findCount(JmSportOrder record); | |||
| Integer findAvgPayment(JmSportOrder jmSportOrder); | |||
| } | |||
| @@ -735,18 +735,42 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { | |||
| 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/4) | |||
| if (verifiedRate > 1F/10) | |||
| resList = assign(user, EnumTag.ID_178); | |||
| else if (verifiedRate > 1F/7) | |||
| else if (verifiedRate > 1F/20) | |||
| resList = assign(user, EnumTag.ID_177); | |||
| else if (verifiedRate > 1F/30) | |||
| 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) { | |||
| @@ -947,7 +971,10 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { | |||
| WxCUserBasicInfo param = (WxCUserBasicInfo) obj; | |||
| WxCUserBasicInfo user = wxCUserBasicInfoMapper.selectById(param.getId(),param.getFinalTenantId()); | |||
| if (user != null) { | |||
| //运动频次 | |||
| resList = assignTypeId31(user,tenantEntity); | |||
| //购买力 | |||
| resList = assignTypeId32(user,tenantEntity); | |||
| } | |||
| } | |||
| break; | |||
| @@ -12,6 +12,7 @@ | |||
| <result column="num" jdbcType="INTEGER" property="num"/> | |||
| <result column="price" jdbcType="VARCHAR" property="price"/> | |||
| <result column="payment" jdbcType="INTEGER" property="payment"/> | |||
| <result column="payment_time" jdbcType="TIMESTAMP" property="paymentTime"/> | |||
| <result column="pay_way" jdbcType="VARCHAR" property="payWay"/> | |||
| @@ -23,7 +24,7 @@ | |||
| <sql id="allColumns"> | |||
| `id`,`order_id`,`tenant_id`,`parent_tenant_id`,`user_phone`,`user_id`, | |||
| `product_name`,`num`,`price`,`payment_time`,`pay_way`, | |||
| `product_name`,`num`,`price`,`payment`,`payment_time`,`pay_way`, | |||
| `gym_name`, | |||
| `create_date`,`update_date` | |||
| </sql> | |||
| @@ -99,6 +100,36 @@ | |||
| <if test=" null != userId "> | |||
| and `user_id` = #{userId} | |||
| </if> | |||
| <if test="startDate != null"> | |||
| and `payment_time` >= #{startDate} | |||
| </if> | |||
| <if test="endDate != null"> | |||
| and `payment_time` <= #{endDate} | |||
| </if> | |||
| </select> | |||
| <select id="findAvgPayment" parameterType="com.iformall.domain.po.JmSportOrder" resultType="Integer"> | |||
| select TRUNCATE(Avg(payment),0) | |||
| from jm_sport_order | |||
| where 1 = 1 | |||
| <if test=" null != tenantId and '' != tenantId"> | |||
| and `tenant_id` = #{tenantId} | |||
| </if> | |||
| <if test=" null != parentTenantId and '' != parentTenantId"> | |||
| and `parent_tenant_id` = #{parentTenantId} | |||
| </if> | |||
| <if test=" null != userId "> | |||
| and `user_id` = #{userId} | |||
| </if> | |||
| <if test="startDate != null"> | |||
| and `payment_time` >= #{startDate} | |||
| </if> | |||
| <if test="endDate != null"> | |||
| and `payment_time` <= #{endDate} | |||
| </if> | |||
| </select> | |||
| </mapper> | |||