| @@ -3,9 +3,7 @@ package com.iformall.douyin.web.api.impl; | |||
| import com.alibaba.fastjson.JSONArray; | |||
| import com.alibaba.fastjson.JSONObject; | |||
| import com.alibaba.fastjson.TypeReference; | |||
| import com.google.gson.Gson; | |||
| import com.google.gson.GsonBuilder; | |||
| import com.google.gson.JsonObject; | |||
| import com.google.gson.*; | |||
| import com.iformall.douyin.web.api.*; | |||
| import com.iformall.douyin.web.bean.*; | |||
| import lombok.AllArgsConstructor; | |||
| @@ -37,17 +35,19 @@ public class TtWebGoodsServiceImpl implements TtWebGoodsService { | |||
| param += "&account_id=" + account_id; | |||
| } | |||
| String result = this.service.execute(getExecutor, apiUrl, param); | |||
| JsonObject asJsonObject = GSON.toJsonTree(result).getAsJsonObject(); | |||
| JsonObject data = asJsonObject.getAsJsonObject("data"); | |||
| int error_code = data.get("error_code").getAsInt(); | |||
| if(error_code == 0){ | |||
| List<GoodsCategory> list = GSON.fromJson(asJsonObject.getAsJsonArray("category_list"), | |||
| new TypeReference<List<GoodsCategory>>() {}.getType()); | |||
| return list; | |||
| }else{ | |||
| String description = data.get("description").getAsString(); | |||
| throw new WxErrorException(WxError.builder().errorCode(error_code).errorMsg(description).build()); | |||
| } | |||
| JsonObject jsonObject = GSON.fromJson(result, JsonObject.class); | |||
| // JsonElement jsonElement = GSON.toJsonTree(result); | |||
| // JsonObject asJsonObject = null; | |||
| // if(jsonElement.isJsonPrimitive()){ | |||
| // asJsonObject = jsonElement.getAsJsonPrimitive().getAsJsonObject(); | |||
| // }else{ | |||
| // asJsonObject = jsonElement.getAsJsonObject(); | |||
| // } | |||
| JsonArray category_list = jsonObject.getAsJsonArray("category_list"); | |||
| List<GoodsCategory> list = GSON.fromJson(category_list, | |||
| new TypeReference<List<GoodsCategory>>() {}.getType()); | |||
| return list; | |||
| } | |||
| @Override | |||
| @@ -0,0 +1,59 @@ | |||
| package com.iformall.enums; | |||
| public enum EnumGoodsCategoryRate { | |||
| /** | |||
| * 类目费率 | |||
| * 1000000美食2.50% | |||
| * 8000000住宿4.50% | |||
| * 18000000游玩2.00% | |||
| * 4000000休闲娱乐3.50% | |||
| * 17000000丽人3.50% | |||
| * 22000000结婚8.00% | |||
| * 21000000亲子4.50% | |||
| * 7000000教育培训4.50% | |||
| * 其他3.50% | |||
| */ | |||
| OTHER(0, "其他",350), | |||
| FINE_FOOD(1000000, "美食",250), | |||
| GET_ACCOMMODATION(8000000, "住宿",450), | |||
| PLAY(18000000, "游玩",200), | |||
| RECREATION_ENTERTAINMENT(4000000, "休闲娱乐",350), | |||
| BEAUTY(17000000, "丽人",350), | |||
| MARRY(22000000, "结婚",800), | |||
| PARENTING(21000000, "亲子",450), | |||
| EDUCATION(7000000, "教育培训",450), | |||
| ; | |||
| public static EnumGoodsCategoryRate getEnum(Integer code) { | |||
| for (EnumGoodsCategoryRate value : values()) { | |||
| if (value.getCode().equals(code)) { | |||
| return value; | |||
| } | |||
| } | |||
| return null; | |||
| } | |||
| private Integer code; | |||
| private String message; | |||
| private Integer rate; | |||
| EnumGoodsCategoryRate(Integer code, String message,Integer rate) { | |||
| this.code = code; | |||
| this.message = message; | |||
| this.rate = rate; | |||
| } | |||
| public Integer getCode() { | |||
| return code; | |||
| } | |||
| public String getMessage() { | |||
| return message; | |||
| } | |||
| public Integer getRate() { | |||
| return rate; | |||
| } | |||
| } | |||
| @@ -9,6 +9,7 @@ import com.iformall.douyin.web.api.TtWebService; | |||
| import com.iformall.douyin.web.bean.GoodsCategory; | |||
| import com.iformall.douyin.web.bean.GoodsTemplateGet; | |||
| import com.iformall.enums.EnumCouponValidType; | |||
| import com.iformall.enums.EnumGoodsCategoryRate; | |||
| import com.iformall.enums.EnumYesOrNo; | |||
| import com.iformall.mapper.TtGoodsCategoryMapper; | |||
| import com.iformall.service.TtGoodsCategoryService; | |||
| @@ -471,7 +472,7 @@ public class TtGoodsCategoryServiceImpl implements TtGoodsCategoryService { | |||
| @Override | |||
| public void syncGet() { | |||
| TtWebService ttWebService = ttMerchantPoiService.getTtWebService(null); | |||
| handSyncCategory(ttWebService,0,new Date()); | |||
| handSyncCategory(ttWebService,0,null,new Date()); | |||
| } | |||
| /** | |||
| @@ -480,7 +481,7 @@ public class TtGoodsCategoryServiceImpl implements TtGoodsCategoryService { | |||
| * @param category_id | |||
| * @param now | |||
| */ | |||
| private void handSyncCategory(TtWebService ttWebService,Integer category_id,Date now){ | |||
| private void handSyncCategory(TtWebService ttWebService,Integer category_id,EnumGoodsCategoryRate categoryRate,Date now){ | |||
| try { | |||
| List<GoodsCategory> goodsCategories = ttWebService.getGoodsService().categoryGet(category_id, null); | |||
| if(goodsCategories != null){ | |||
| @@ -488,12 +489,21 @@ public class TtGoodsCategoryServiceImpl implements TtGoodsCategoryService { | |||
| record.setParentId(category_id); | |||
| List<Integer> listAll = ttGoodsCategoryMapper.findIdAll(record); | |||
| for (GoodsCategory gc:goodsCategories) { | |||
| if(category_id.intValue() == 0){ | |||
| categoryRate = EnumGoodsCategoryRate.getEnum(gc.getCategoryId()); | |||
| if(categoryRate == null){ | |||
| categoryRate = EnumGoodsCategoryRate.OTHER; | |||
| } | |||
| } | |||
| TtGoodsCategory updgc = new TtGoodsCategory(); | |||
| updgc.setId(gc.getCategoryId()); | |||
| updgc.setLevel(gc.getLevel()); | |||
| updgc.setName(gc.getName()); | |||
| updgc.setParentId(gc.getParentId()); | |||
| updgc.setEnable(gc.getEnable()?EnumYesOrNo.YES.getCode():EnumYesOrNo.NO.getCode()); | |||
| updgc.setIsLeaf(gc.getEnable()?EnumYesOrNo.YES.getCode():EnumYesOrNo.NO.getCode()); | |||
| updgc.setServiceFee(categoryRate.getRate()); | |||
| updgc.setIsDel(EnumYesOrNo.NO.getCode()); | |||
| updgc.setUpdateDate(now); | |||
| if(listAll.contains(gc.getCategoryId())){ | |||
| @@ -504,7 +514,7 @@ public class TtGoodsCategoryServiceImpl implements TtGoodsCategoryService { | |||
| ttGoodsCategoryMapper.insert(updgc); | |||
| } | |||
| if(!gc.getIsLeaf()){ | |||
| handSyncCategory(ttWebService,gc.getCategoryId(),now); | |||
| handSyncCategory(ttWebService,gc.getCategoryId(),categoryRate,now); | |||
| } | |||
| } | |||
| updateDelByIds(listAll,now); | |||