diff --git a/fill-manager/src/main/java/com/mortals/xhx/daemon/task/SyncSiteDeviceTaskImpl.java b/fill-manager/src/main/java/com/mortals/xhx/daemon/task/SyncSiteDeviceTaskImpl.java
index 561bc5dbc1c3d3d8c0d97365caaba124c5ba5238..b852d0dff44447ad781318b631133aee44cb043a 100644
--- a/fill-manager/src/main/java/com/mortals/xhx/daemon/task/SyncSiteDeviceTaskImpl.java
+++ b/fill-manager/src/main/java/com/mortals/xhx/daemon/task/SyncSiteDeviceTaskImpl.java
@@ -56,7 +56,8 @@ public class SyncSiteDeviceTaskImpl implements ITaskExcuteService {
         syncDevice();
 
         log.info("寮€濮嬪悓姝ョ毊鑲ゅ垪琛紒");
-        syncSkin();
+        skinService.syncSkin();
+        //syncSkin();
         log.info("缁撴潫鍚屾鐨偆鍒楄〃锛�");
     }
 
diff --git a/fill-manager/src/main/java/com/mortals/xhx/module/skin/service/SkinService.java b/fill-manager/src/main/java/com/mortals/xhx/module/skin/service/SkinService.java
index 2265713e05f2d5ebc5411654995f0a9698ed34d7..4d318011e87c2baba789c841fe2239be88999361 100644
--- a/fill-manager/src/main/java/com/mortals/xhx/module/skin/service/SkinService.java
+++ b/fill-manager/src/main/java/com/mortals/xhx/module/skin/service/SkinService.java
@@ -11,4 +11,6 @@ import com.mortals.xhx.module.skin.model.SkinEntity;
 */
 public interface SkinService extends ICRUDService<SkinEntity,Long>{
 
+    void syncSkin();
+
 }
\ No newline at end of file
diff --git a/fill-manager/src/main/java/com/mortals/xhx/module/skin/service/impl/SkinServiceImpl.java b/fill-manager/src/main/java/com/mortals/xhx/module/skin/service/impl/SkinServiceImpl.java
index 77c2211e7d46817e325229ef2cb05e77a7fa930a..476b624ccb64c2398129f31faded7ff1eb239fc4 100644
--- a/fill-manager/src/main/java/com/mortals/xhx/module/skin/service/impl/SkinServiceImpl.java
+++ b/fill-manager/src/main/java/com/mortals/xhx/module/skin/service/impl/SkinServiceImpl.java
@@ -1,14 +1,29 @@
 package com.mortals.xhx.module.skin.service.impl;
 
+import cn.hutool.core.util.StrUtil;
+import com.mortals.framework.common.Rest;
 import com.mortals.framework.exception.AppException;
 import com.mortals.framework.model.Context;
 import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
 import com.mortals.xhx.common.code.YesNoEnum;
+import com.mortals.xhx.common.pdu.RespData;
+import com.mortals.xhx.common.pdu.skin.SkinBasePdu;
+import com.mortals.xhx.common.utils.BeanUtil;
+import com.mortals.xhx.feign.skin.ISkinBaseFeign;
 import com.mortals.xhx.module.skin.dao.SkinDao;
 import com.mortals.xhx.module.skin.model.SkinEntity;
+import com.mortals.xhx.module.skin.model.SkinQuery;
 import com.mortals.xhx.module.skin.service.SkinService;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * SkinService
@@ -22,6 +37,9 @@ import org.springframework.stereotype.Service;
 public class SkinServiceImpl extends AbstractCRUDServiceImpl<SkinDao, SkinEntity, Long> implements SkinService {
 
 
+    @Autowired
+    private ISkinBaseFeign skinBaseFeign;
+
     @Override
     protected void updateBefore(SkinEntity entity, Context context) throws AppException {
         super.updateBefore(entity, context);
@@ -37,4 +55,79 @@ public class SkinServiceImpl extends AbstractCRUDServiceImpl<SkinDao, SkinEntity
         }
     }
 
+
+
+    @Override
+    public void syncSkin() {
+        SkinBasePdu skinBasePdu = new SkinBasePdu();
+        skinBasePdu.setProductName("鏍疯〃鏈�");
+        skinBasePdu.setSize(-1);
+
+        Rest<RespData<List<SkinBasePdu>>> skinBaseRest = skinBaseFeign.list(skinBasePdu);
+        if (skinBaseRest.getCode() == YesNoEnum.YES.getValue()) {
+            List<SkinBasePdu> skinBasePduList = skinBaseRest.getData().getData();
+            log.info("鏍疯〃鏈虹毊鑲ゆ€绘暟閲忥細{}", skinBasePduList.size());
+            if (!ObjectUtils.isEmpty(skinBasePduList)) {
+                List<SkinEntity> newSkinList = skinBasePduList.stream().map(newSkin -> {
+                    SkinEntity skinEntity = new SkinEntity();
+                    skinEntity.initAttrValue();
+                    //瀛樼浉瀵瑰湴鍧€
+                    newSkin.setCssFilePath("/"+ StrUtil.subAfter(newSkin.getCssFilePath(), "/", true));
+                    newSkin.setPreviewImagePath("/"+StrUtil.subAfter(newSkin.getPreviewImagePath(), "/", true));
+                    BeanUtils.copyProperties(newSkin, skinEntity, BeanUtil.getNullPropertyNames(newSkin));
+                    return skinEntity;
+                }).collect(Collectors.toList());
+
+                List<SkinEntity> oldSkinList = this.find(new SkinQuery());
+                Map<Long, SkinEntity> oldSkinMap = oldSkinList.stream().collect(Collectors.toMap(x -> x.getId(), y -> y, (o, n) -> n));
+                Map<Long, SkinEntity> newSkinMap = newSkinList.stream().collect(Collectors.toMap(x -> x.getId(), y -> y, (o, n) -> n));
+
+                List<SkinEntity> updateSkinLsit = newSkinList.stream().map(item -> {
+                    if (oldSkinMap.containsKey(item.getId())) {
+                        item.setUsed(oldSkinMap.get(item.getId()).getUsed());
+                        item.setUpdateTime(new Date());
+                        return item;
+                    }
+                    return null;
+                }).filter(f -> f != null).collect(Collectors.toList());
+
+                List<SkinEntity> saveSkinList = newSkinList.stream().map(item -> {
+                    if (!oldSkinMap.containsKey(item.getId())) {
+                        item.setCreateUserId(1L);
+                        item.setCreateUserName("绯荤粺绠$悊鍛�");
+                        item.setCreateTime(new Date());
+                        return item;
+                    }
+                    return null;
+                }).filter(f -> f != null).collect(Collectors.toList());
+
+
+                //鍋氬樊闆�
+                List<Long> delSkinList = oldSkinList.stream().map(item -> {
+                    if (!newSkinMap.containsKey(item.getId())) {
+                        return item.getId();
+                    }
+                    return null;
+                }).filter(f -> f != null).collect(Collectors.toList());
+
+
+//                if (!ObjectUtils.isEmpty(updateSkinLsit)) {
+//                    log.info("鐨偆鏇存柊锛宻ize:{}", updateSkinLsit.size());
+//                    skinService.update(updateSkinLsit);
+//                }
+
+                if (!ObjectUtils.isEmpty(saveSkinList)) {
+                    log.info("鐨偆鏂板锛宻ize:{}", saveSkinList.size());
+                    this.save(saveSkinList);
+                }
+
+                if (!ObjectUtils.isEmpty(delSkinList)) {
+                    log.info("鐨偆鍒犻櫎锛宻ize:{}", delSkinList.size());
+                    this.remove(delSkinList, null);
+                }
+
+            }
+        }
+    }
+
 }
\ No newline at end of file
diff --git a/fill-manager/src/main/java/com/mortals/xhx/module/skin/web/SkinController.java b/fill-manager/src/main/java/com/mortals/xhx/module/skin/web/SkinController.java
index 4da7ac1b54dcecfd4f2f6870aa83aaf19e504772..5d6c78db6e69e872457b2e1db754f582251e4af0 100644
--- a/fill-manager/src/main/java/com/mortals/xhx/module/skin/web/SkinController.java
+++ b/fill-manager/src/main/java/com/mortals/xhx/module/skin/web/SkinController.java
@@ -1,6 +1,7 @@
 package com.mortals.xhx.module.skin.web;
 
 import com.alibaba.fastjson.JSON;
+import com.mortals.framework.annotation.UnAuth;
 import com.mortals.framework.common.Rest;
 import com.mortals.framework.exception.AppException;
 import com.mortals.framework.model.Context;
@@ -12,6 +13,7 @@ import com.mortals.xhx.module.skin.model.SkinEntity;
 import com.mortals.xhx.module.skin.service.SkinService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -61,4 +63,13 @@ public class SkinController extends BaseCRUDJsonBodyMappingController<SkinServic
 
         return super.saveAfter(entity, model, context);
     }
+
+
+    @PostMapping({"refreshSkin"})
+    @UnAuth
+    public Rest<Object> refreshSkin() {
+        log.info("鍒锋柊鐨偆");
+        this.service.syncSkin();
+        return Rest.ok("鐨偆鍒锋柊鎿嶄綔鎴愬姛");
+    }
 }
\ No newline at end of file