diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/WechatAppletController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/WechatAppletController.java
new file mode 100644
index 000000000..afa4fc614
--- /dev/null
+++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/WechatAppletController.java
@@ -0,0 +1,160 @@
+package com.stdiet.web.controller.custom;
+
+import com.itextpdf.io.util.DateTimeUtil;
+import com.stdiet.common.core.controller.BaseController;
+import com.stdiet.common.core.domain.AjaxResult;
+import com.stdiet.common.core.page.TableDataInfo;
+import com.stdiet.common.utils.StringUtils;
+import com.stdiet.common.utils.oss.AliyunOSSUtils;
+import com.stdiet.common.utils.sign.AesUtils;
+import com.stdiet.custom.domain.*;
+import com.stdiet.custom.dto.response.CustomerCaseResponse;
+import com.stdiet.custom.page.WxLogInfo;
+import com.stdiet.custom.service.ISysCustomerCaseService;
+import com.stdiet.custom.service.ISysOrderService;
+import com.stdiet.custom.service.ISysWxUserInfoService;
+import com.stdiet.custom.service.ISysWxUserLogService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 微信小程序统一Controller
+ */
+@RestController
+@RequestMapping("/wx/applet")
+public class WechatAppletController extends BaseController {
+
+
+    @Autowired
+    private ISysCustomerCaseService sysCustomerCaseService;
+
+    @Autowired
+    private ISysWxUserLogService sysWxUserLogService;
+
+    @Autowired
+    private ISysWxUserInfoService sysWxUserInfoService;
+
+    @Autowired
+    private ISysOrderService sysOrderService;
+
+    /**
+     * 查询微信小程序中展示的客户案例
+     */
+    @GetMapping("/caseList")
+    public TableDataInfo caseList(SysCustomerCase sysCustomerCase)
+    {
+        startPage();
+        sysCustomerCase.setKeywordArray(StringUtils.isNotEmpty(sysCustomerCase.getKeyword()) ? sysCustomerCase.getKeyword().split(",") : null);
+        List<CustomerCaseResponse> list = sysCustomerCaseService.getWxCustomerCaseList(sysCustomerCase);
+        //处理ID加密
+        dealIdEnc(list);
+        return getDataTable(list);
+    }
+
+    /**
+     * 查询客户案例文件列表
+     */
+    @GetMapping("/getFileByCaseId")
+    public AjaxResult getFileByCaseId(@RequestParam("caseId")String caseId)
+    {
+        Long id = StringUtils.isNotEmpty(caseId) ? Long.parseLong(AesUtils.decrypt(caseId, null)) : null;
+        CustomerCaseResponse customerCaseResponse = new CustomerCaseResponse();
+        customerCaseResponse.setId(caseId);
+        if(id != null){
+            List<SysCustomerCaseFile> list = sysCustomerCaseService.getFileListByCaseId(id);
+            List<String> fileUrl = new ArrayList<>();
+            for (SysCustomerCaseFile caseFile : list) {
+                fileUrl.add(caseFile.getFileUrl());
+            }
+            List<String> downUrlList = AliyunOSSUtils.generatePresignedUrl(fileUrl);
+            customerCaseResponse.setFileList(downUrlList);
+        }else{
+            customerCaseResponse.setFileList(new ArrayList<>());
+        }
+        return AjaxResult.success(customerCaseResponse);
+    }
+
+    /**
+     * 同步客户信息,返回订单数量
+     * @param sysWxUserInfo
+     * @return
+     */
+    @PostMapping("/synchroCustomerInfo")
+    public AjaxResult synchroCustomerInfo(@RequestBody SysWxUserInfo sysWxUserInfo) {
+        if(StringUtils.isEmpty(sysWxUserInfo.getOpenid()) || StringUtils.isEmpty(sysWxUserInfo.getPhone())){
+            return AjaxResult.error("手机号为空");
+        }
+        // 查询微信用户
+        SysWxUserInfo userInfo = sysWxUserInfoService.selectSysWxUserInfoById(sysWxUserInfo.getOpenid());
+        if(userInfo != null){
+            //更新数据
+            sysWxUserInfoService.updateSysWxUserInfo(sysWxUserInfo);
+        }else{
+            sysWxUserInfoService.insertSysWxUserInfo(sysWxUserInfo);
+        }
+        //查询是否下单
+        SysCustomer param = new SysCustomer();
+        param.setPhone(sysWxUserInfo.getPhone());
+        int orderCount = sysOrderService.getOrderCountByCustomer(param);
+        //返回订单数量
+        return AjaxResult.success(orderCount);
+    }
+
+    /**
+     * 微信小程序获取客户打卡记录
+     * @param sysWxUserLog
+     * @return
+     */
+    @GetMapping(value = "/getPunchLogs")
+    public TableDataInfo getPunchLogs(SysWxUserLog sysWxUserLog) {
+        startPage();
+        List<WxLogInfo> list = sysWxUserLogService.selectWxLogInfoList(sysWxUserLog);
+        return getDataTable(list);
+    }
+
+    /**
+     * 今日是否打卡
+     * @param openid
+     * @return
+     */
+    @GetMapping(value = "/checkNowPunchLog/{openid}")
+    public AjaxResult checkNowPunchLog(@PathVariable String openid) {
+        int count = StringUtils.isEmpty(openid) ? 0 : sysWxUserLogService.checkWxLogInfoCount(openid);
+        return AjaxResult.success(count);
+    }
+
+    /**
+     * 微信小程序打卡
+     * @param sysWxUserLog
+     * @return
+     */
+    @PostMapping(value = "/addPunchLog")
+    public AjaxResult addPunchLog(@RequestBody SysWxUserLog sysWxUserLog) {
+        // 查询微信用户
+        SysWxUserInfo userInfo = StringUtils.isEmpty(sysWxUserLog.getOpenid()) ? null : sysWxUserInfoService.selectSysWxUserInfoById(sysWxUserLog.getOpenid());
+        if (userInfo == null) {
+            return AjaxResult.error("不存在客户");
+        }
+        //查询今日是否已打卡
+        int count = sysWxUserLogService.checkWxLogInfoCount(sysWxUserLog.getOpenid());
+        if(count > 0){
+            return AjaxResult.error("今日已打卡,不可重复打卡");
+        }
+        sysWxUserLog.setLogTime(DateTimeUtil.getCurrentTimeDate());
+        return toAjax(sysWxUserLogService.insertSysWxUserLog(sysWxUserLog));
+    }
+
+    /**
+     * 处理返回值的ID加密
+     * @param list
+     * @return
+     */
+    private void dealIdEnc(List<CustomerCaseResponse> list){
+        for (CustomerCaseResponse cus : list) {
+            cus.setId(AesUtils.encrypt(cus.getId()+"", null));
+        }
+    }
+}
diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysOrderMapper.java b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysOrderMapper.java
index e23a0259e..8662f4b91 100644
--- a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysOrderMapper.java
+++ b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysOrderMapper.java
@@ -5,6 +5,7 @@ import java.util.List;
 
 import com.stdiet.custom.domain.SysCommision;
 import com.stdiet.custom.domain.SysCommissionDayDetail;
+import com.stdiet.custom.domain.SysCustomer;
 import com.stdiet.custom.domain.SysOrder;
 import com.stdiet.custom.dto.request.SysOrderCommision;
 import org.apache.ibatis.annotations.Param;
@@ -77,4 +78,11 @@ public interface SysOrderMapper
      * @return
      */
     List<SysOrder> selectSimpleOrderMessage(SysCommision sysCommision);
+
+    /**
+     * 查询客户订单数量
+     * @param sysCustomer
+     * @return
+     */
+    int getOrderCountByCustomer(SysCustomer sysCustomer);
 }
\ No newline at end of file
diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysOrderService.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysOrderService.java
index e641dcb76..8daa51afe 100644
--- a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysOrderService.java
+++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysOrderService.java
@@ -3,6 +3,8 @@ package com.stdiet.custom.service;
 import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
+
+import com.stdiet.custom.domain.SysCustomer;
 import com.stdiet.custom.domain.SysOrder;
 
 /**
@@ -75,4 +77,11 @@ public interface ISysOrderService
      * @return
      */
     int updateOrderServerEndDate(Long orderId, boolean updatePlan);
+
+    /**
+     * 查询客户订单数量
+     * @param sysCustomer
+     * @return
+     */
+    int getOrderCountByCustomer(SysCustomer sysCustomer);
 }
\ No newline at end of file
diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysOrderServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysOrderServiceImpl.java
index c822e243c..27c17c8e9 100644
--- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysOrderServiceImpl.java
+++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysOrderServiceImpl.java
@@ -4,6 +4,7 @@ import com.stdiet.common.annotation.Excel;
 import com.stdiet.common.utils.DateUtils;
 import com.stdiet.common.utils.SecurityUtils;
 import com.stdiet.common.utils.StringUtils;
+import com.stdiet.custom.domain.SysCustomer;
 import com.stdiet.custom.domain.SysOrder;
 import com.stdiet.custom.mapper.SysOrderMapper;
 import com.stdiet.custom.service.ISysCommissionDayService;
@@ -326,4 +327,13 @@ public class SysOrderServiceImpl implements ISysOrderService {
         //删除食谱计划
         sysRecipesPlanService.delRecipesPlanByOrderId(orderIds);
     }
+
+    /**
+     * 查询客户订单数量
+     * @param sysCustomer
+     * @return
+     */
+    public int getOrderCountByCustomer(SysCustomer sysCustomer){
+        return sysOrderMapper.getOrderCountByCustomer(sysCustomer);
+    }
 }
\ No newline at end of file
diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysOrderMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysOrderMapper.xml
index dbe0d15f2..dff79ab11 100644
--- a/stdiet-custom/src/main/resources/mapper/custom/SysOrderMapper.xml
+++ b/stdiet-custom/src/main/resources/mapper/custom/SysOrderMapper.xml
@@ -408,4 +408,16 @@
       order by o.order_time desc
     </select>
 
+    <!-- 根据客户信息查询客户的订单列表数量 -->
+    <select id="getOrderCountByCustomer" parameterType="SysCustomer" resultType="int">
+        SELECT count(so.order_id) FROM sys_order so LEFT JOIN sys_customer sc ON sc.id = so.cus_id AND sc.del_flag = 0
+        WHERE so.del_flag = 0
+        <if test="phone != null and phone != ''">
+            and sc.phone = #{phone}
+        </if>
+        <if test="id != null">
+            and sc.id = #{id}
+        </if>
+    </select>
+
 </mapper>
\ No newline at end of file
diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysWxUserLogMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysWxUserLogMapper.xml
index e14a6e8f8..a47b57d33 100644
--- a/stdiet-custom/src/main/resources/mapper/custom/SysWxUserLogMapper.xml
+++ b/stdiet-custom/src/main/resources/mapper/custom/SysWxUserLogMapper.xml
@@ -78,7 +78,7 @@
                 </otherwise>
             </choose>
         </where>
-        order by log_time asc
+        order by log_time desc
     </select>
 
     <select id="selectSysWxUserLogById" parameterType="String" resultMap="SysWxUserLogResult">