Explorar o código

Merge remote-tracking branch 'origin/master'

yumeng %!s(int64=4) %!d(string=hai) anos
pai
achega
3506aeb726

+ 5 - 4
module-common/src/main/java/cn/com/ctop/common/module/entity/RuleDataTargetKuaishou.java

@@ -1,7 +1,5 @@
 package cn.com.ctop.common.module.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 
 import lombok.Data;
@@ -14,10 +12,11 @@ import lombok.Data;
 public class RuleDataTargetKuaishou {
     
 	/**id*/
-	@TableId(type = IdType.AUTO)
 	private Long id;
 	/**accountId*/
 	private Long accountId;
+	/**planId*/
+	private Long planId;
 	/**unitId*/
 	private Long unitId;
 	/**广告位*/
@@ -35,7 +34,9 @@ public class RuleDataTargetKuaishou {
 	/**智能扩量*/
 	private Integer isOpen;
 	/**过滤已转化人群*/
-	private String filterConvertedLevel;
+	private Integer filterConvertedLevel;
 	/**投放时段*/
 	private String scheduleTime;
+
+	private Integer status;
 }

+ 3 - 3
module-common/src/main/java/cn/com/ctop/common/module/entity/RuleDatePlanKuaishou.java

@@ -1,7 +1,5 @@
 package cn.com.ctop.common.module.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 
 import lombok.Data;
@@ -14,7 +12,6 @@ import lombok.Data;
 public class RuleDatePlanKuaishou {
     
 	/**id*/
-	@TableId(type = IdType.AUTO)
 	private Long id;
 	/**accountId*/
 	private Long accountId;
@@ -24,4 +21,7 @@ public class RuleDatePlanKuaishou {
 	private Long planId;
 	/**planName*/
 	private String planName;
+
+	private Integer status;
+
 }

+ 6 - 6
module-common/src/main/java/cn/com/ctop/common/module/entity/RuleDateUnitKuaishou.java

@@ -1,8 +1,6 @@
 package cn.com.ctop.common.module.entity;
 
 import java.math.BigDecimal;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
@@ -14,12 +12,11 @@ import lombok.Data;
 public class RuleDateUnitKuaishou {
     
 	/**id*/
-	@TableId(type = IdType.AUTO)
 	private Long id;
 	/**accountId*/
 	private Long accountId;
-	/**accountName*/
-	private String accountName;
+    /**planId*/
+    private Long planId;
 	/**unitId*/
 	private Long unitId;
 	/**unitName*/
@@ -27,7 +24,7 @@ public class RuleDateUnitKuaishou {
 	/**消耗*/
 	private BigDecimal charge;
 
-	private Integer convertNum;
+	private Long convertNum;
 
 	private BigDecimal convertCost;
 
@@ -47,4 +44,7 @@ public class RuleDateUnitKuaishou {
 	private Long eventPay;
 	/**付费单价*/
 	private BigDecimal payCost;
+
+    private Integer status;
+
 }

+ 32 - 0
module-job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/handler/RuleKuaiShouDataAccountCleanJob.java

@@ -0,0 +1,32 @@
+package cn.com.ctop.job.kuaishou.handler;
+
+import cn.com.ctop.common.module.entity.CtopOauthToken;
+import cn.com.ctop.common.module.service.ICtopOauthTokenService;
+import cn.com.ctop.kuaishou.modules.report.service.IRuleKuaiShouAccountService;
+import com.xxl.job.core.context.XxlJobHelper;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+@Component
+public class RuleKuaiShouDataAccountCleanJob {
+
+    @Autowired
+    private ICtopOauthTokenService oauthTokenService;
+
+    @Autowired
+    private IRuleKuaiShouAccountService ruleKuaiShouAccountService;
+
+    private ExecutorService executorService = Executors.newFixedThreadPool(10);
+
+    @XxlJob("ruleKuaiShouDataAccountCleanJob")
+    public void execute() throws Exception {
+        XxlJobHelper.log("规则预警账户维度数据开始清洗");
+        List<CtopOauthToken> tokens = oauthTokenService.selectKuaiShouToken();
+        tokens.forEach(token -> executorService.submit(()->ruleKuaiShouAccountService.cleanRuleDataAccount(token.getAccountId())));
+    }
+}

+ 31 - 0
module-job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/handler/RuleKuaiShouDataPlanCleanJob.java

@@ -0,0 +1,31 @@
+package cn.com.ctop.job.kuaishou.handler;
+
+import cn.com.ctop.common.module.entity.CtopOauthToken;
+import cn.com.ctop.common.module.service.ICtopOauthTokenService;
+import cn.com.ctop.kuaishou.modules.report.service.IRuleKuaiShouPlanService;
+import com.xxl.job.core.context.XxlJobHelper;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+@Component
+public class RuleKuaiShouDataPlanCleanJob {
+    @Autowired
+    private ICtopOauthTokenService oauthTokenService;
+
+    @Autowired
+    private IRuleKuaiShouPlanService ruleKuaiShouPlanService;
+
+    private ExecutorService executorService = Executors.newFixedThreadPool(10);
+
+    @XxlJob("ruleKuaiShouDataPlanCleanJob")
+    public void execute() throws Exception {
+        XxlJobHelper.log("规则预警计划维度数据开始清洗");
+        List<CtopOauthToken> tokens = oauthTokenService.selectKuaiShouToken();
+        tokens.forEach(token -> executorService.submit(()->ruleKuaiShouPlanService.cleanRuleDataPlan(token.getAccountId(),1)));
+    }
+}

+ 34 - 0
module-job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/handler/RuleKuaiShouDataTargetCleanJob.java

@@ -0,0 +1,34 @@
+package cn.com.ctop.job.kuaishou.handler;
+
+import cn.com.ctop.common.module.entity.CtopOauthToken;
+import cn.com.ctop.common.module.service.ICtopOauthTokenService;
+import cn.com.ctop.kuaishou.modules.report.service.IRuleKuaiShouPlanService;
+import com.xxl.job.core.context.XxlJobHelper;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import org.jeecg.common.util.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+@Component
+public class RuleKuaiShouDataTargetCleanJob {
+
+    @Autowired
+    private ICtopOauthTokenService oauthTokenService;
+
+    @Autowired
+    private IRuleKuaiShouPlanService ruleKuaiShouPlanService;
+
+    private ExecutorService executorService = Executors.newFixedThreadPool(10);
+
+    @XxlJob("ruleKuaiShouDataTargetCleanJob")
+    public void execute() throws Exception {
+        XxlJobHelper.log("规则预警定向维度数据开始清洗");
+        List<CtopOauthToken> tokens = oauthTokenService.selectKuaiShouToken();
+        tokens.forEach(token -> executorService.submit(() -> ruleKuaiShouPlanService.cleanRuleDataTarget(token.getAccountId(), 1)));
+    }
+
+}

+ 32 - 0
module-job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/handler/RuleKuaiShouDataUnitCleanJob.java

@@ -0,0 +1,32 @@
+package cn.com.ctop.job.kuaishou.handler;
+
+import cn.com.ctop.common.module.entity.CtopOauthToken;
+import cn.com.ctop.common.module.service.ICtopOauthTokenService;
+import cn.com.ctop.kuaishou.modules.report.service.IRuleKuaiShouPlanService;
+import com.xxl.job.core.context.XxlJobHelper;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import org.jeecg.common.util.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+public class RuleKuaiShouDataUnitCleanJob {
+
+    @Autowired
+    private ICtopOauthTokenService oauthTokenService;
+
+    @Autowired
+    private IRuleKuaiShouPlanService ruleKuaiShouPlanService;
+
+    private ExecutorService executorService = Executors.newFixedThreadPool(10);
+
+    @XxlJob("ruleKuaiShouDataUnitCleanJob")
+    public void execute() throws Exception {
+        XxlJobHelper.log("规则预警组维度数据开始清洗");
+        List<CtopOauthToken> tokens = oauthTokenService.selectKuaiShouToken();
+        tokens.forEach(token -> executorService.submit(() -> ruleKuaiShouPlanService.cleanRuleDataUnit(token.getAccountId(), DateUtils.date2Str(), DateUtils.date2Str(), 1)));
+    }
+
+}

+ 2 - 2
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/IRuleKuaiShouPlanService.java

@@ -8,7 +8,7 @@ public interface IRuleKuaiShouPlanService {
     /**
      *  计划
      */
-    void cleanRuleDataPlan(Long accountId,String startDate, String endDate,int page);
+    void cleanRuleDataPlan(Long accountId,int page);
 
     /**
      *  组
@@ -18,6 +18,6 @@ public interface IRuleKuaiShouPlanService {
     /**
      *  定向
      */
-    void cleanRuleDataTarget(Long accountId,String startDate, String endDate,int page);
+    void cleanRuleDataTarget(Long accountId,int page);
 
 }

+ 3 - 1
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaiShouGetAccountFundServiceImpl.java

@@ -53,7 +53,9 @@ public class KuaiShouGetAccountFundServiceImpl implements IKuaiShouGetAccountFun
         if(jsonObject.getInteger("code")!=0){
             XxlJobHelper.log("账户{}获取实时数据失败---{}",advertiserId,jsonObject.getString("message"));
         }else {
-            result= (JSONObject) jsonObject.getJSONObject("data").getJSONArray("details").get(0);
+            if(!jsonObject.getJSONObject("data").getJSONArray("details").isEmpty()){
+                result= (JSONObject) jsonObject.getJSONObject("data").getJSONArray("details").get(0);
+            }
         }
         return result;
     }

+ 4 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/RuleKuaiShouAccountServiceImpl.java

@@ -4,6 +4,7 @@ import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.common.module.entity.RuleDataAccountKuaishou;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 import cn.com.ctop.common.module.service.IRuleDataAccountKuaishouService;
+import cn.com.ctop.common.module.service.IUserAllocationService;
 import cn.com.ctop.kuaishou.modules.report.service.IKuaiShouGetAccountFundService;
 import cn.com.ctop.kuaishou.modules.report.service.IRuleKuaiShouAccountService;
 import com.alibaba.fastjson.JSONObject;
@@ -19,6 +20,8 @@ public class RuleKuaiShouAccountServiceImpl implements IRuleKuaiShouAccountServi
     ICtopOauthTokenService oauthTokenService;
     @Autowired
     IRuleDataAccountKuaishouService ruleDataAccountKuaishouService;
+    @Autowired
+    IUserAllocationService userAllocationService;
 
     @Override
     public void cleanRuleDataAccount(Long accountId) {
@@ -29,6 +32,7 @@ public class RuleKuaiShouAccountServiceImpl implements IRuleKuaiShouAccountServi
             JSONObject fundData=kuaiShouGetAccountFundService.getAccountFundBy(oauthToken,accountId);
             RuleDataAccountKuaishou ruleDataAccount=new RuleDataAccountKuaishou();
             ruleDataAccount.setId(accountId);
+            ruleDataAccount.setAccountName(userAllocationService.getByAccountId(accountId).getAuthName());
             ruleDataAccount.setAccountId(accountId);
             ruleDataAccount.setCost(dataAccount.getBigDecimal("charge"));
             ruleDataAccount.setValidBalance(fundData.getBigDecimal("balance"));

+ 97 - 41
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/RuleKuaiShouPlanServiceImpl.java

@@ -9,15 +9,18 @@ import cn.com.ctop.common.module.service.IRuleDataUnitKuaishouService;
 import cn.com.ctop.common.module.service.IRuleDatePlanKuaishouService;
 import cn.com.ctop.common.module.utils.Check;
 import cn.com.ctop.common.module.utils.HttpUtils;
-import cn.com.ctop.common.module.utils.KuaishouInterfaceConstant;
-import cn.com.ctop.common.module.utils.PropertiesUtils;
+import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouGroup;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouGroupService;
 import cn.com.ctop.kuaishou.modules.report.service.IRuleKuaiShouPlanService;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.xxl.job.core.context.XxlJobHelper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -38,14 +41,15 @@ public class RuleKuaiShouPlanServiceImpl implements IRuleKuaiShouPlanService {
     @Autowired
     IRuleDataUnitKuaishouService unitKuaishouService;
 
+    @Autowired
+    IKuaiShouGroupService kuaiShouGroupService;
+
     @Override
-    public void cleanRuleDataPlan(Long accountId, String startDate, String endDate, int page) {
+    public void cleanRuleDataPlan(Long accountId, int page) {
         JSONObject param = new JSONObject();
         param.put("advertiser_id", accountId);
         param.put("page_size", 500);
         param.put("page", page);
-        param.put("start_date", startDate);
-        param.put("end_date", endDate);
 
         Map<String, String> headers = new HashMap<>();
         headers.put("Access-Token", oauthTokenService.getTokenByAccountId(accountId).getAccessToken());
@@ -67,7 +71,7 @@ public class RuleKuaiShouPlanServiceImpl implements IRuleKuaiShouPlanService {
             return;
         }
         this.insertPlan(accountId, details);
-        cleanRuleDataPlan(accountId, startDate, endDate, page + 1);
+        cleanRuleDataPlan(accountId, page + 1);
     }
 
     @Override
@@ -76,8 +80,8 @@ public class RuleKuaiShouPlanServiceImpl implements IRuleKuaiShouPlanService {
         param.put("advertiser_id", accountId);
         param.put("page_size", 500);
         param.put("page", page);
-        param.put("start_date", startDate);
-        param.put("end_date", endDate);
+        param.put("start_date",startDate);
+        param.put("end_date",endDate);
 
         Map<String, String> headers = new HashMap<>();
         headers.put("Access-Token", oauthTokenService.getTokenByAccountId(accountId).getAccessToken());
@@ -103,20 +107,17 @@ public class RuleKuaiShouPlanServiceImpl implements IRuleKuaiShouPlanService {
     }
 
     @Override
-    public void cleanRuleDataTarget(Long accountId, String startDate, String endDate, int page) {
-        String url = PropertiesUtils.getConfig("kuaishou_api_url") + KuaishouInterfaceConstant.GROUP_LIST;
+    public void cleanRuleDataTarget(Long accountId, int page) {
         JSONObject param = new JSONObject();
         param.put("advertiser_id", accountId);
         param.put("page_size", 500);
         param.put("page", page);
-        param.put("start_date", startDate);
-        param.put("end_date", endDate);
 
         Map<String, String> headers = new HashMap<>();
         headers.put("Access-Token", oauthTokenService.getTokenByAccountId(accountId).getAccessToken());
         headers.put("Content-Type", "application/json");
 
-        String result = HttpUtils.kuaiShouhttpPostRequest(url, param.toJSONString(), headers);
+        String result = HttpUtils.kuaiShouhttpPostRequest("https://ad.e.kuaishou.com/rest/openapi/v1/ad_unit/list", param.toJSONString(), headers);
         JSONObject resultJson = JSONObject.parseObject(result);
         if (Check.isNull(resultJson)) {
             XxlJobHelper.log("获取广告组接口异常,advertiserId:{}", accountId);
@@ -132,7 +133,7 @@ public class RuleKuaiShouPlanServiceImpl implements IRuleKuaiShouPlanService {
             return;
         }
         this.insertTarget(accountId, details);
-        cleanRuleDataTarget(accountId, startDate, endDate, page + 1);
+        cleanRuleDataTarget(accountId, page + 1);
     }
 
     private void insertPlan(Long accountId, JSONArray details) {
@@ -148,30 +149,39 @@ public class RuleKuaiShouPlanServiceImpl implements IRuleKuaiShouPlanService {
                 batch.add(plan);
             }
         });
-        planKuaishouService.saveOrUpdateBatch(batch);
+        if(!batch.isEmpty()) {
+            planKuaishouService.saveOrUpdateBatch(batch);
+        }
     }
 
     private void insertUnit(Long accountId, JSONArray details) {
         List<RuleDateUnitKuaishou> batch = new ArrayList<>();
         details.forEach(detail -> {
             JSONObject unitDetail = (JSONObject) detail;
-            RuleDateUnitKuaishou plan = new RuleDateUnitKuaishou();
-            plan.setId(unitDetail.getLong("unit_id"));
-            plan.setAccountId(accountId);
-            plan.setUnitId(unitDetail.getLong("unit_id"));
-            plan.setUnitName(unitDetail.getString("unit_name"));
-            plan.setCharge(unitDetail.getBigDecimal("charge"));
-/*            plan.setActivation(unitDetail.getBigDecimal("activation"));
-            plan.setActivationCost(unitDetail.getBigDecimal("charge"));
-            plan.setEventRegister(unitDetail.getBigDecimal("charge"));
-            plan.setRegisterCost(unitDetail.getBigDecimal("charge"));
-            plan.setFormCount(unitDetail.getBigDecimal("charge"));
-            plan.setFormCost(unitDetail.getBigDecimal("charge"));
-            plan.setEventPay(unitDetail.getBigDecimal("charge"));
-            plan.setPayCost(unitDetail.getBigDecimal("charge"));*/
-            batch.add(plan);
+            RuleDateUnitKuaishou unit = new RuleDateUnitKuaishou();
+            QueryWrapper<KuaiShouGroup> wrapper=new QueryWrapper<>();
+            wrapper.eq("unit_id",unitDetail.getLong("unit_id"));
+            KuaiShouGroup group = kuaiShouGroupService.getOne(wrapper);
+            if(group!=null){
+                unit.setId(unitDetail.getLong("unit_id"));
+                unit.setAccountId(accountId);
+                unit.setPlanId(unitDetail.getLong("campaign_id"));
+                unit.setUnitId(unitDetail.getLong("unit_id"));
+                unit.setUnitName(unitDetail.getString("unit_name"));
+                unit.setCharge(unitDetail.getBigDecimal("charge"));
+                if(group.getOcpxActionType()!=0){
+                    unit.setConvertNum(handleConvertNum(group.getOcpxActionType(),unitDetail));
+                    if(unit.getConvertNum()!=0){
+                        unit.setConvertCost(unitDetail.getBigDecimal("charge").divide(BigDecimal.valueOf(unit.getConvertNum()), 2, RoundingMode.HALF_UP));
+                    }
+                }
+                batch.add(unit);
+            }
+
         });
-        unitKuaishouService.saveOrUpdateBatch(batch);
+        if(!batch.isEmpty()){
+            unitKuaishouService.saveOrUpdateBatch(batch);
+        }
     }
 
     private void insertTarget(Long accountId, JSONArray details) {
@@ -183,19 +193,65 @@ public class RuleKuaiShouPlanServiceImpl implements IRuleKuaiShouPlanService {
                     unitDetail.getInteger("put_status") == 1) {
                 target.setId(unitDetail.getLong("unit_id"));
                 target.setAccountId(accountId);
+                target.setPlanId(unitDetail.getLong("campaign_id"));
                 target.setUnitId(unitDetail.getLong("unit_id"));
-                target.setSceneId(unitDetail.getJSONArray("scene_id").toString());
-                target.setRegion(unitDetail.getJSONArray("region").toString());
-                target.setGender(unitDetail.getInteger("gender"));
-                target.setPlatformOs(unitDetail.getInteger("platform_os"));
-                target.setDeviceBrand(unitDetail.getJSONArray("device_brand").toString());
-                target.setDevicePrice(unitDetail.getJSONArray("device_price").toString());
-                target.setFilterConvertedLevel(unitDetail.getString("filter_converted_level"));
-                target.setIsOpen(unitDetail.getInteger("is_open"));
-                target.setScheduleTime(unitDetail.getJSONArray("schedule_time").toString());
+                target.setSceneId(unitDetail.getJSONArray("scene_id")==null?"":unitDetail.getJSONArray("scene_id").toString());
+                target.setRegion(unitDetail.getJSONArray("region")==null?"":unitDetail.getJSONArray("region").toString());
+                target.setGender(unitDetail.getInteger("gender")==null?0:unitDetail.getInteger("gender"));
+                target.setPlatformOs(unitDetail.getInteger("platform_os")==null?0:unitDetail.getInteger("platform_os"));
+                target.setDeviceBrand(unitDetail.getJSONArray("device_brand")==null?"":unitDetail.getJSONArray("device_brand").toString());
+                target.setDevicePrice(unitDetail.getJSONArray("device_price")==null?"":unitDetail.getJSONArray("device_price").toString());
+                target.setFilterConvertedLevel(unitDetail.getInteger("filter_converted_level")==null?0:unitDetail.getInteger("filter_converted_level"));
+                target.setIsOpen(unitDetail.getInteger("is_open")==null?0:unitDetail.getInteger("is_open"));
+                target.setScheduleTime(unitDetail.getString("schedule_time")==null?"":unitDetail.getString("schedule_time"));
                 batch.add(target);
             }
         });
-        targetKuaishouService.saveOrUpdateBatch(batch);
+        if (!batch.isEmpty()) {
+            targetKuaishouService.saveOrUpdateBatch(batch);
+        }
+    }
+
+    private Long handleConvertNum(int ocpxActionType,JSONObject detail){
+        Long convertNum=null;
+        switch (ocpxActionType){
+            case 2:
+                convertNum=detail.getLong("submit");
+                break;
+            case 10:
+                convertNum=detail.getLong("show");
+                break;
+            case 11:
+                convertNum=detail.getLong("photo_click");
+                break;
+            case 31:
+                convertNum=detail.getLong("download_completed");
+                break;
+            case 53:
+                convertNum=detail.getLong("event_valid_clues");
+                break;
+            case 180:
+                convertNum=detail.getLong("activation");
+                break;
+            case 190:
+                convertNum=detail.getLong("event_pay");
+                break;
+            case 191:
+                convertNum=detail.getDouble("event_pay_first_day_roi").longValue();
+                break;
+            case 348:
+                convertNum=detail.getLong("event_valid_clues");
+                break;
+            case 383:
+                convertNum=detail.getLong("event_credit_grant_landing_page");
+                break;
+            case 384:
+                convertNum=detail.getLong("event_jin_jian_landing_page");
+                break;
+            case 715:
+                convertNum=detail.getLong("event_add_wechat");
+                break;
+        }
+        return convertNum;
     }
 }