From 65948198a6dc5e808440ac6874db6df8aab6d9ab Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期一, 23 十二月 2024 09:15:54 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 manage/src/main/java/com/jilongda/manage/controller/TAppUserController.java          |   90 ++
 manage/src/main/java/com/jilongda/manage/vo/TLensGoodsDetailVO.java                  |   21 
 manage/src/main/java/com/jilongda/manage/model/TInventory.java                       |    2 
 manage/src/main/java/com/jilongda/manage/utils/QRCodeUtil.java                       |   50 +
 manage/src/main/java/com/jilongda/manage/mapper/TCouponMapper.java                   |   10 
 manage/src/main/java/com/jilongda/manage/dto/GetCurrentByParamLens.java              |   24 
 manage/src/main/java/com/jilongda/manage/mapper/TLensGoodsMapper.java                |   28 
 manage/src/main/java/com/jilongda/manage/service/TInventoryService.java              |    5 
 manage/src/main/java/com/jilongda/manage/model/TCouponReceive.java                   |    5 
 manage/src/main/java/com/jilongda/manage/controller/TWarehousingController.java      |  208 +++++
 manage/src/main/java/com/jilongda/manage/vo/TInventoryInfoVO.java                    |   21 
 manage/src/main/java/com/jilongda/manage/mapper/TInventoryMapper.java                |    9 
 manage/src/main/java/com/jilongda/manage/model/TInventoryFrameDetail.java            |    2 
 manage/src/main/java/com/jilongda/manage/service/impl/TAppUserServiceImpl.java       |   24 
 manage/src/main/java/com/jilongda/manage/service/impl/TLensSeriesServiceImpl.java    |    9 
 applet/src/main/java/com/jilongda/applet/model/TAppUser.java                         |    4 
 manage/src/main/java/com/jilongda/manage/vo/TInventoryVO.java                        |   14 
 manage/src/main/resources/mapping/TFrameGoods.xml                                    |   52 +
 manage/src/main/java/com/jilongda/manage/query/TInventoryQuery.java                  |   23 
 manage/src/main/java/com/jilongda/manage/mapper/TCouponReceiveMapper.java            |   11 
 manage/src/main/java/com/jilongda/manage/dto/GetCurrentByParam.java                  |   23 
 common/src/main/java/com/jilongda/common/pojo/BaseModel.java                         |    2 
 manage/src/main/java/com/jilongda/manage/query/TCouponQuery.java                     |   17 
 manage/src/main/java/com/jilongda/manage/service/TAppUserService.java                |    4 
 manage/src/main/java/com/jilongda/manage/service/impl/TCouponServiceImpl.java        |   50 +
 manage/src/main/resources/mapping/TCouponReceiveMapper.xml                           |    7 
 manage/src/main/java/com/jilongda/manage/vo/TLensGoodsVO.java                        |   27 
 manage/src/main/java/com/jilongda/manage/service/TCouponReceiveService.java          |    5 
 manage/src/main/resources/mapping/TCouponMapper.xml                                  |   14 
 manage/src/main/java/com/jilongda/manage/query/TOptometryQuery.java                  |    2 
 manage/src/main/java/com/jilongda/manage/service/TCouponService.java                 |    4 
 manage/src/main/resources/mapping/TOptometristMapper.xml                             |    3 
 manage/src/main/java/com/jilongda/manage/service/TLensGoodsService.java              |   23 
 manage/src/main/java/com/jilongda/manage/service/impl/TLensGoodsServiceImpl.java     |   49 +
 manage/src/main/resources/mapping/TAppUserMapper.xml                                 |   19 
 manage/src/main/java/com/jilongda/manage/vo/TCouponInfoVO.java                       |   21 
 manage/src/main/java/com/jilongda/manage/service/impl/TInventoryServiceImpl.java     |   14 
 manage/src/main/java/com/jilongda/manage/vo/TAppUserVO.java                          |   28 
 manage/src/main/java/com/jilongda/manage/model/TCoupon.java                          |   11 
 manage/src/main/java/com/jilongda/manage/vo/TFrameGoodsVO.java                       |   33 +
 manage/src/main/java/com/jilongda/manage/mapper/TAppUserMapper.java                  |    8 
 manage/src/main/resources/mapping/TLineUpMapper.xml                                  |    2 
 manage/src/main/java/com/jilongda/manage/model/TAppUser.java                         |   10 
 manage/src/main/java/com/jilongda/manage/model/TLensGoods.java                       |   55 +
 manage/src/main/java/com/jilongda/manage/service/impl/TFrameGoodsServiceImpl.java    |   54 +
 manage/src/main/java/com/jilongda/manage/vo/TLensSeriesVO.java                       |    2 
 manage/src/main/java/com/jilongda/manage/vo/TWarehousingLensVO.java                  |    4 
 manage/src/main/resources/mapping/TLensGoods.xml                                     |   44 +
 manage/src/main/java/com/jilongda/manage/query/TFrameGoodsQuery.java                 |   34 +
 manage/src/main/java/com/jilongda/manage/service/TFrameGoodsService.java             |   24 
 manage/src/main/java/com/jilongda/manage/vo/TCouponVO.java                           |   25 
 optometry/src/main/java/com/jilongda/optometry/model/TAppUser.java                   |    3 
 manage/pom.xml                                                                       |   15 
 manage/src/main/java/com/jilongda/manage/dto/FrameInventoryDTO.java                  |   20 
 manage/src/main/java/com/jilongda/manage/controller/TInventoryController.java        |  153 ++++
 manage/src/main/java/com/jilongda/manage/mapper/TFrameGoodsMapper.java               |   29 
 manage/src/main/java/com/jilongda/manage/controller/TLensSeriesController.java       |   57 +
 manage/src/main/java/com/jilongda/manage/query/TAppUserQuery.java                    |   27 
 manage/src/main/resources/mapping/TInventoryMapper.xml                               |   23 
 manage/src/main/java/com/jilongda/manage/controller/TCouponController.java           |  148 ++++
 manage/src/main/java/com/jilongda/manage/vo/TAppUserCouponVO.java                    |   23 
 manage/src/main/java/com/jilongda/manage/query/TAppUserCouponQuery.java              |   20 
 manage/src/main/java/com/jilongda/manage/query/TLensGoodsQuery.java                  |   28 
 manage/src/main/java/com/jilongda/manage/service/impl/TCouponReceiveServiceImpl.java |   41 +
 manage/src/main/java/com/jilongda/manage/model/TFrameGoods.java                      |   45 +
 65 files changed, 1,823 insertions(+), 39 deletions(-)

diff --git a/applet/src/main/java/com/jilongda/applet/model/TAppUser.java b/applet/src/main/java/com/jilongda/applet/model/TAppUser.java
index e9fb36b..48e0bf6 100644
--- a/applet/src/main/java/com/jilongda/applet/model/TAppUser.java
+++ b/applet/src/main/java/com/jilongda/applet/model/TAppUser.java
@@ -57,9 +57,7 @@
     @TableField("gender")
     private Integer gender;
 
-    @ApiModelProperty(value = "注册时间")
-    @TableField("registerTime")
-    private LocalDateTime registerTime;
+
 
     @ApiModelProperty(value = "状态 1=启用 0=禁用")
     @TableField("status")
diff --git a/common/src/main/java/com/jilongda/common/pojo/BaseModel.java b/common/src/main/java/com/jilongda/common/pojo/BaseModel.java
index 8e038b8..39d85f6 100644
--- a/common/src/main/java/com/jilongda/common/pojo/BaseModel.java
+++ b/common/src/main/java/com/jilongda/common/pojo/BaseModel.java
@@ -32,7 +32,7 @@
     /**
      * 新增执行
      */
-    @ApiModelProperty(value = "记录创建人,前端忽略")
+    @ApiModelProperty(value = "记录创建人(操作人),前端忽略")
     @TableField(value = "createBy", fill = FieldFill.INSERT)
     private String createBy;
 
diff --git a/manage/pom.xml b/manage/pom.xml
index 1989622..bfe00e3 100644
--- a/manage/pom.xml
+++ b/manage/pom.xml
@@ -18,6 +18,21 @@
 
     <dependencies>
         <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-test</artifactId>
+            <version>5.3.9</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.zxing</groupId>
+            <artifactId>core</artifactId>
+            <version>3.4.1</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.zxing</groupId>
+            <artifactId>javase</artifactId>
+            <version>3.4.1</version>
+        </dependency>
+        <dependency>
             <groupId>com</groupId>
             <artifactId>common</artifactId>
             <version>0.0.1-SNAPSHOT</version>
diff --git a/manage/src/main/java/com/jilongda/manage/controller/TAppUserController.java b/manage/src/main/java/com/jilongda/manage/controller/TAppUserController.java
index 366dd41..262af59 100644
--- a/manage/src/main/java/com/jilongda/manage/controller/TAppUserController.java
+++ b/manage/src/main/java/com/jilongda/manage/controller/TAppUserController.java
@@ -1,9 +1,31 @@
 package com.jilongda.manage.controller;
 
 
-import org.springframework.web.bind.annotation.RequestMapping;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.jilongda.common.basic.ApiResult;
+import com.jilongda.common.basic.PageInfo;
+import com.jilongda.manage.model.TAppUser;
+import com.jilongda.manage.model.TCouponReceive;
+import com.jilongda.manage.model.TOptometry;
+import com.jilongda.manage.model.TOrder;
+import com.jilongda.manage.query.TAppUserCouponQuery;
+import com.jilongda.manage.query.TAppUserQuery;
+import com.jilongda.manage.query.TOptometristQuery;
+import com.jilongda.manage.service.TAppUserService;
+import com.jilongda.manage.service.TCouponReceiveService;
+import com.jilongda.manage.service.TOptometryService;
+import com.jilongda.manage.service.TOrderService;
+import com.jilongda.manage.vo.TAppUserCouponVO;
+import com.jilongda.manage.vo.TAppUserVO;
+import com.jilongda.manage.vo.TOptometristVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.BeanUtils;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.*;
 
-import org.springframework.web.bind.annotation.RestController;
+import javax.annotation.Resource;
+import java.math.BigDecimal;
 
 /**
  * <p>
@@ -14,8 +36,72 @@
  * @since 2024-12-09
  */
 @RestController
+@Api(tags = "用户管理")
 @RequestMapping("/t-app-user")
 public class TAppUserController {
 
+    @Resource
+    private TAppUserService appUserService;
+    @Resource
+    private TOrderService orderService;
+    @Resource
+    private TOptometryService tOptometryService;
+    @Resource
+    private TCouponReceiveService couponReceiveService;
+    @ApiOperation(value = "用户列表")
+    @PostMapping(value = "/pageList")
+    public ApiResult<PageInfo<TAppUserVO>> pageList(@RequestBody TAppUserQuery query) {
+        if (StringUtils.hasLength(query.getStartTime())){
+            query.setStartTime(query.getStartTime()+" 00:00:00");
+            query.setEndTime(query.getEndTime()+" 23:59:59");
+        }
+        PageInfo<TAppUserVO> appUserVOPageInfo = appUserService.pageList(query);
+        return ApiResult.success(appUserVOPageInfo);
+    }
+    @ApiOperation(value = "启用/禁用")
+    @GetMapping(value = "/updateState")
+    public ApiResult updateState(Integer id) {
+        TAppUser byId = appUserService.getById(id);
+        if (byId.getStatus()==1){
+            byId.setStatus(2);
+        }else{
+            byId.setStatus(1);
+        }
+        appUserService.updateById(byId);
+        return ApiResult.success();
+    }
+    @ApiOperation(value = "用户详情")
+    @GetMapping(value = "/getDetailById")
+    public ApiResult<TAppUserVO> getDetailById(Integer id) {
+        TAppUser byId = appUserService.getById(id);
+        TAppUserVO tAppUserVO = new TAppUserVO();
+        BeanUtils.copyProperties(byId, tAppUserVO);
+        // 查询消费次数
+        long l = orderService.count(new LambdaQueryWrapper<TOrder>()
+                .eq(TOrder::getUserId, tAppUserVO.getId()));
+        tAppUserVO.setSalesCount((int) l);
+        // 查询验光次数
+        int size = tOptometryService.lambdaQuery().eq(TOptometry::getUserId, tAppUserVO.getId())
+                .eq(TOptometry::getStatus, 3).list().size();
+        tAppUserVO.setOptometryCount(size);
+        // 查询最后消费时间
+        tAppUserVO.setSalesTime(orderService.lambdaQuery().eq(TOrder::getUserId, tAppUserVO.getId())
+                .orderByDesc(TOrder::getCreateTime).last("limit 1").one().getCreateTime());
+        // 查询最后验光时间
+        tAppUserVO.setOptometryTime(tOptometryService.lambdaQuery().eq(TOptometry::getUserId, tAppUserVO.getId())
+                .eq(TOptometry::getStatus, 3).orderByDesc(TOptometry::getCreateTime).last("limit 1").one().getCreateTime());
+        // 查询订单总额
+        BigDecimal reduce = orderService.lambdaQuery().eq(TOrder::getUserId, byId.getId()).list().stream().map(TOrder::getPayMoney)
+                .reduce(BigDecimal.ZERO, BigDecimal::add);
+        tAppUserVO.setSalesAmount(reduce);
+
+        return ApiResult.success(tAppUserVO);
+    }
+    @ApiOperation(value = "用户详情-查看优惠券")
+    @GetMapping(value = "/getCouponDetailById")
+    public ApiResult<PageInfo<TAppUserCouponVO>> getCouponDetailById(@RequestBody TAppUserCouponQuery query) {
+        PageInfo<TAppUserCouponVO> appUserVOPageInfo = couponReceiveService.pageList(query);
+        return ApiResult.success(appUserVOPageInfo);
+    }
 }
 
diff --git a/manage/src/main/java/com/jilongda/manage/controller/TCouponController.java b/manage/src/main/java/com/jilongda/manage/controller/TCouponController.java
index 026a948..920f049 100644
--- a/manage/src/main/java/com/jilongda/manage/controller/TCouponController.java
+++ b/manage/src/main/java/com/jilongda/manage/controller/TCouponController.java
@@ -1,9 +1,49 @@
 package com.jilongda.manage.controller;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.jilongda.common.basic.ApiResult;
+import com.jilongda.common.basic.PageInfo;
+import com.jilongda.common.utils.UUIDUtil;
+import com.jilongda.manage.dto.TModelDTO;
+import com.jilongda.manage.model.TAppUser;
+import com.jilongda.manage.model.TCoupon;
+import com.jilongda.manage.model.TCouponReceive;
+import com.jilongda.manage.model.TModel;
+import com.jilongda.manage.query.TAppUserQuery;
+import com.jilongda.manage.query.TCouponQuery;
+import com.jilongda.manage.service.TAppUserService;
+import com.jilongda.manage.service.TCouponReceiveService;
+import com.jilongda.manage.service.TCouponService;
+import com.jilongda.manage.utils.QRCodeUtil;
+import com.jilongda.manage.vo.TAppUserVO;
+import com.jilongda.manage.vo.TCouponInfoVO;
+import com.jilongda.manage.vo.TCouponVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.tomcat.util.http.fileupload.ByteArrayOutputStream;
+import org.springframework.beans.BeanUtils;
+import org.springframework.core.io.ByteArrayResource;
+import org.springframework.mock.web.MockMultipartFile;
+import org.springframework.util.StringUtils;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.imageio.ImageIO;
+import java.awt.image.BufferedImage;
+import java.io.IOException;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -14,8 +54,116 @@
  * @since 2024-12-09
  */
 @RestController
+@Api(tags = "优惠券管理")
 @RequestMapping("/t-coupon")
 public class TCouponController {
+    @Resource
+    private TCouponService couponService;
+    @Resource
+    private TCouponReceiveService couponReceiveService;
+    @Resource
+    private TAppUserService appUserService;
+    @ApiOperation(value = "优惠券列表")
+    @PostMapping(value = "/pageList")
+    public ApiResult<PageInfo<TCouponVO>> pageList(@RequestBody TCouponQuery query) {
+        PageInfo<TCouponVO> appUserVOPageInfo = couponService.pageList(query);
+        return ApiResult.success(appUserVOPageInfo);
+    }
+    @ApiOperation(value = "添加优惠券")
+    @PostMapping(value = "/add")
+    public ApiResult<String> add( @RequestBody TCoupon dto) throws Exception {
+        couponService.save(dto);
+        switch (dto.getType()){
+            case 2:
+                // 全局发放
+                List<Integer> collect = appUserService.lambdaQuery().list().stream()
+                        .map(TAppUser::getId).collect(Collectors.toList());
+                List<TCouponReceive> tCouponReceives = new ArrayList<>();
+                for (Integer i : collect) {
+                    TCouponReceive tCouponReceive = new TCouponReceive();
+                    tCouponReceive.setCouponId(dto.getId());
+                    tCouponReceive.setUserId(i);
+                    tCouponReceive.setType(2);
+                    tCouponReceive.setAmount(dto.getAmount());
+                    tCouponReceive.setStoreId(dto.getStoreId());
+                    if (dto.getTime()!=0){
+                        tCouponReceive.setEndTime(LocalDateTime.now().plusDays(dto.getTime()));
+                    }
+                    tCouponReceive.setAmountCondition(dto.getAmountCondition());
+                    tCouponReceive.setStatus(1);
+                    tCouponReceives.add(tCouponReceive);
+                }
+                couponReceiveService.saveBatch(tCouponReceives);
+                break;
+            case 3:
+                List<TCouponReceive> tCouponReceives1 = new ArrayList<>();
 
+                for (Integer userId : dto.getUserIds()) {
+                    TCouponReceive tCouponReceive = new TCouponReceive();
+                    tCouponReceive.setCouponId(dto.getId());
+                    tCouponReceive.setUserId(userId);
+                    tCouponReceive.setType(2);
+                    tCouponReceive.setAmount(dto.getAmount());
+                    tCouponReceive.setStoreId(dto.getStoreId());
+                    if (dto.getTime()!=0){
+                        tCouponReceive.setEndTime(LocalDateTime.now().plusDays(dto.getTime()));
+                    }
+                    tCouponReceive.setAmountCondition(dto.getAmountCondition());
+                    tCouponReceive.setStatus(1);
+                    tCouponReceives1.add(tCouponReceive);
+                }
+                couponReceiveService.saveBatch(tCouponReceives1);
+                break;
+            case 4:
+                String code = "{\"id\": "+dto.getId()+ "}";
+                BufferedImage blueImage = QRCodeUtil.createImage(code);
+                MultipartFile blueFile = convert(blueImage, new Date().getTime() + UUIDUtil.getRandomCode(3) + ".PNG");
+                // todo 没有云存储
+//                String s = OssUploadUtil.ossUpload("img/", blueFile);
+                break;
+        }
+        return ApiResult.success();
+    }
+    @ApiOperation(value = "修改优惠券")
+    @PostMapping(value = "/update")
+    public ApiResult<String> update( @RequestBody TCoupon dto) throws Exception {
+        couponService.updateById(dto);
+        return ApiResult.success();
+    }
+    @ApiOperation(value = "优惠券详情")
+    @PostMapping(value = "/getDetail")
+    public ApiResult<TCouponInfoVO> getDetail(Integer id) {
+        TCouponInfoVO tCouponInfoVO = new TCouponInfoVO();
+        TCoupon byId = couponService.getById(id);
+        BeanUtils.copyProperties(byId, tCouponInfoVO);
+        int size = couponReceiveService.list(new LambdaQueryWrapper<TCouponReceive>()
+                .eq(TCouponReceive::getCouponId, id)).size();
+        tCouponInfoVO.setGrantCout(size);
+        int size1 = couponReceiveService.list(new LambdaQueryWrapper<TCouponReceive>()
+                .eq(TCouponReceive::getCouponId, id)
+                .eq(TCouponReceive::getStatus, 2)).size();
+        tCouponInfoVO.setUseCount(size1);
+
+        return ApiResult.success(tCouponInfoVO);
+    }
+    public static MultipartFile convert(BufferedImage bufferedImage, String fileName) throws IOException {
+        // 将 BufferedImage 转换为字节数组
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        ImageIO.write(bufferedImage, "png", baos);
+        byte[] bytes = baos.toByteArray();
+
+        // 创建 ByteArrayResource
+        ByteArrayResource resource = new ByteArrayResource(bytes);
+
+        // 创建 MockMultipartFile
+        MockMultipartFile multipartFile = new MockMultipartFile(
+                "file",
+                fileName,
+                "image/png",
+                resource.getInputStream()
+        );
+
+        return multipartFile;
+    }
 }
 
diff --git a/manage/src/main/java/com/jilongda/manage/controller/TInventoryController.java b/manage/src/main/java/com/jilongda/manage/controller/TInventoryController.java
index db4c761..57ddd4c 100644
--- a/manage/src/main/java/com/jilongda/manage/controller/TInventoryController.java
+++ b/manage/src/main/java/com/jilongda/manage/controller/TInventoryController.java
@@ -1,9 +1,29 @@
 package com.jilongda.manage.controller;
 
 
-import org.springframework.web.bind.annotation.RequestMapping;
+import com.jilongda.common.basic.ApiResult;
+import com.jilongda.common.basic.PageInfo;
+import com.jilongda.manage.dto.FrameInventoryDTO;
+import com.jilongda.manage.dto.GetCurrentByParam;
+import com.jilongda.manage.dto.GetCurrentByParamLens;
+import com.jilongda.manage.model.*;
+import com.jilongda.manage.query.TFrameGoodsQuery;
+import com.jilongda.manage.query.TInventoryQuery;
+import com.jilongda.manage.service.*;
+import com.jilongda.manage.utils.LoginInfoUtil;
+import com.jilongda.manage.vo.TFrameGoodsVO;
+import com.jilongda.manage.vo.TInventoryInfoVO;
+import com.jilongda.manage.vo.TInventoryVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.models.auth.In;
+import org.springframework.beans.BeanUtils;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.*;
 
-import org.springframework.web.bind.annotation.RestController;
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -14,8 +34,137 @@
  * @since 2024-12-09
  */
 @RestController
+@Api(tags = "盘点管理")
 @RequestMapping("/t-inventory")
 public class TInventoryController {
 
+    @Resource
+    private TInventoryService inventoryService;
+    @Resource
+    private TInventoryFrameDetailService inventoryFrameDetailService;
+    @Resource
+    private TInventoryLensDetailService inventoryLensDetailService;
+    @Resource
+    private LoginInfoUtil loginInfoUtil;
+    @Resource
+    private TFrameGoodsService frameGoodsService;
+    @Resource
+    private TLensGoodsService lensGoodsService;
+    @Resource
+    private TLensSeriesService lensSeriesService;
+    @Resource
+    private TModelService modelService;
+    @Resource
+    private TStoreService storeService;
+    @ApiOperation(value = "盘点分页列表")
+    @PostMapping(value = "/pageList")
+    public ApiResult<PageInfo<TInventoryVO>> pageList(@RequestBody TInventoryQuery query) {
+        if (StringUtils.hasLength(query.getStartTime())){
+            query.setStartTime(query.getStartTime()+" 00:00:00");
+            query.setEndTime(query.getEndTime()+" 23:59:59");
+        }
+        return ApiResult.success(inventoryService.pageList(query));
+    }
+    @ApiOperation(value = "镜架添加盘点")
+    @PostMapping(value = "/addFrameInventory")
+    public ApiResult<PageInfo<TInventoryVO>> addFrameInventory(@RequestBody TInventoryQuery query) {
+        if (StringUtils.hasLength(query.getStartTime())){
+            query.setStartTime(query.getStartTime()+" 00:00:00");
+            query.setEndTime(query.getEndTime()+" 23:59:59");
+        }
+        return ApiResult.success(inventoryService.pageList(query));
+    }
+    @ApiOperation(value = "镜片添加盘点")
+    @PostMapping(value = "/addLensInventory")
+    public ApiResult addLensInventory(@RequestBody FrameInventoryDTO query) {
+        TInventory tInventory = new TInventory();
+        BeanUtils.copyProperties(query, tInventory);
+        inventoryService.save(tInventory);
+        for (TInventoryFrameDetail tInventoryFrameDetail : query.getList()) {
+            tInventoryFrameDetail.setInventoryId(tInventory.getId());
+        }
+        inventoryFrameDetailService.saveBatch(query.getList());
+        return ApiResult.success();
+    }
+
+    @ApiOperation(value = "镜架-根据品牌id查询对应库存")
+    @PostMapping(value = "/getCountByBrandId")
+    public ApiResult getCountByBrandId(Integer id) {
+        List<Integer> collect = modelService.lambdaQuery().eq(TModel::getBrandId, id)
+                .list().stream().map(TModel::getId).distinct().collect(Collectors.toList());
+        if (collect.isEmpty())collect.add(-1);
+        List<TFrameGoods> list = frameGoodsService.lambdaQuery().in(TFrameGoods::getModelId, collect).list();
+        if (list.isEmpty())return ApiResult.success("0");
+        int i = 0;
+        for (TFrameGoods tFrameGoods : list) {
+            i+=tFrameGoods.getTotal();
+        }
+        return ApiResult.success(i);
+    }
+    @ApiOperation(value = "镜架-根据材质id查询对应库存")
+    @PostMapping(value = "/getCountByMaterialId")
+    public ApiResult getCountByMaterialId(Integer id) {
+        List<Integer> collect = modelService.lambdaQuery().eq(TModel::getMaterialId, id)
+                .list().stream().map(TModel::getId).distinct().collect(Collectors.toList());
+        if (collect.isEmpty())collect.add(-1);
+        List<TFrameGoods> list = frameGoodsService.lambdaQuery().in(TFrameGoods::getModelId, collect).list();
+        if (list.isEmpty())return ApiResult.success("0");
+        int i = 0;
+        for (TFrameGoods tFrameGoods : list) {
+            i+=tFrameGoods.getTotal();
+        }
+        return ApiResult.success(i);
+    }
+    @ApiOperation(value = "镜架-根据品牌id、型号名称、色号名称、材质id查询当前库存")
+    @PostMapping(value = "/getCurrentByParamFrame")
+    public ApiResult<Integer> getCurrentByParamFrame(@RequestBody GetCurrentByParam getCurrentByParam) {
+        // 根据型号名称 查询型号列表ids
+        List<Integer> collect = modelService.lambdaQuery().eq(TModel::getName, getCurrentByParam.getModel())
+                .eq(TModel::getColor,getCurrentByParam.getColor())
+                .eq(TModel::getMaterialId,getCurrentByParam.getMaterialId())
+                .eq(TModel::getBrandId,getCurrentByParam.getBrandId())
+                .list().stream().map(TModel::getId).collect(Collectors.toList());
+        TFrameGoods one = frameGoodsService.lambdaQuery().in(TFrameGoods::getModelId, collect)
+                .eq(TFrameGoods::getColor, getCurrentByParam.getColor()).one();
+        if (one!=null){
+            return ApiResult.success(one.getTotal());
+
+        }
+        return ApiResult.success(0);
+    }
+    @ApiOperation(value = "镜片-根据品牌id、型号名称、色号名称、材质id查询当前库存")
+    @PostMapping(value = "/getCurrentByParamLens")
+    public ApiResult<Integer> getCurrentByParamLens(@RequestBody GetCurrentByParamLens dto) {
+        TLensGoods one = lensGoodsService.lambdaQuery().in(TLensGoods::getSeriesId, dto.getSeriesId())
+                .eq(dto.getLensType()!=null,TLensGoods::getLensType, dto.getLensType())
+                .eq(dto.getRefractiveIndex()!=null,TLensGoods::getRefractiveIndex, dto.getRefractiveIndex())
+                .eq(dto.getBallMirror()!=null,TLensGoods::getBallMirror, dto.getBallMirror())
+                .eq(dto.getColumnMirror()!=null,TLensGoods::getColumnMirror, dto.getColumnMirror())
+                .one();
+        if (one!=null){
+            return ApiResult.success(one.getTotal());
+        }
+        return ApiResult.success(0);
+    }
+    @ApiOperation(value = "查看详情")
+    @GetMapping(value = "/getDetailById")
+    public ApiResult<TInventoryInfoVO> getDetailById(Integer id) {
+        TInventoryInfoVO tInventoryInfoVO = new TInventoryInfoVO();
+
+        TInventory byId = inventoryService.getById(id);
+        switch (byId.getType()){
+            case 1:
+                List<TInventoryFrameDetail> list = inventoryFrameDetailService.lambdaQuery().eq(TInventoryFrameDetail::getInventoryId, id).list();
+                tInventoryInfoVO.setFrameList(list);
+                break;
+            case 2:
+                List<TInventoryLensDetail> list2 = inventoryLensDetailService.lambdaQuery().eq(TInventoryLensDetail::getInventoryId, id).list();
+                tInventoryInfoVO.setLensList(list2);
+                break;
+        }
+        TStore byId1 = storeService.getById(byId.getStoreId());
+        if (byId1!=null)tInventoryInfoVO.setStore(byId1.getName());
+        return ApiResult.success(tInventoryInfoVO);
+    }
 }
 
diff --git a/manage/src/main/java/com/jilongda/manage/controller/TLensSeriesController.java b/manage/src/main/java/com/jilongda/manage/controller/TLensSeriesController.java
index a5c7a3e..992f4bd 100644
--- a/manage/src/main/java/com/jilongda/manage/controller/TLensSeriesController.java
+++ b/manage/src/main/java/com/jilongda/manage/controller/TLensSeriesController.java
@@ -1,6 +1,8 @@
 package com.jilongda.manage.controller;
 
 
+import com.alibaba.fastjson.JSONObject;
+import com.google.gson.JsonArray;
 import com.jilongda.common.basic.ApiResult;
 import com.jilongda.common.basic.PageInfo;
 import com.jilongda.manage.model.TLensSeries;
@@ -15,6 +17,9 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * <p>
@@ -69,5 +74,57 @@
         lensSeriesService.updateById(byId);
         return ApiResult.success();
     }
+    @ApiOperation(value = "通过品牌id查询镜片系列列表")
+    @GetMapping(value = "/seriesList")
+    public ApiResult<List<TLensSeries>> seriesList(Integer brandId) {
+        return ApiResult.success(lensSeriesService.lambdaQuery().eq(TLensSeries::getBrandId,brandId).list());
+    }
+    @ApiOperation(value = "通过系列id查询球/非球 返回参数1为球 2非球 3双飞")
+    @GetMapping(value = "/lensTypeList")
+    public ApiResult<List<Integer>> lensTypeList(Integer id) {
+        TLensSeries byId = lensSeriesService.getById(id);
+        List<Integer> integers = new ArrayList<>();
+        if (StringUtils.hasLength(byId.getSphere())){
+            integers.add(1);
+        }
+        if (StringUtils.hasLength(byId.getAsphericSurface())){
+            integers.add(2);
+        }
+        if (StringUtils.hasLength(byId.getDoubleNon())){
+            integers.add(3);
+        }
+        return ApiResult.success(integers);
+    }
+    @ApiOperation(value = "根据系列id + 球/非球查询折射率列表 球/非球入参数1为球 2非球 3双飞")
+    @GetMapping(value = "/refractiveIndexList")
+    public ApiResult<List<String>> refractiveIndexList(Integer id, Integer lensType) {
+        TLensSeries byId = lensSeriesService.getById(id);
+        if (lensType==1){
+            String sphere = byId.getSphere();
+            // 将字符串化为jsonArray
+            if (StringUtils.hasLength(sphere)) {
+                JSONObject.parseArray(sphere);
+            } else {
+                return ApiResult.success(new ArrayList<String>());
+            }
+        }
+        if (lensType==2){
+            String asphericSurface = byId.getAsphericSurface();
+            if (StringUtils.hasLength(asphericSurface)) {
+                JSONObject.parseArray(asphericSurface);
+            } else {
+                return ApiResult.success(new ArrayList<String>());
+            }
+        }
+        if (lensType==3){
+            String doubleNon = byId.getDoubleNon();
+            if (StringUtils.hasLength(doubleNon)) {
+                JSONObject.parseArray(doubleNon);
+            } else {
+                return ApiResult.success(new ArrayList<String>());
+            }
+        }
+        return ApiResult.success(new ArrayList<String>());
+    }
 }
 
diff --git a/manage/src/main/java/com/jilongda/manage/controller/TWarehousingController.java b/manage/src/main/java/com/jilongda/manage/controller/TWarehousingController.java
index bba637a..0945238 100644
--- a/manage/src/main/java/com/jilongda/manage/controller/TWarehousingController.java
+++ b/manage/src/main/java/com/jilongda/manage/controller/TWarehousingController.java
@@ -8,20 +8,17 @@
 import com.jilongda.common.enums.WarehousingTypeEnum;
 import com.jilongda.common.security.JwtTokenUtils;
 import com.jilongda.common.utils.CodeGenerateUtils;
+import com.jilongda.manage.dto.GetCurrentByParam;
+import com.jilongda.manage.dto.GetCurrentByParamLens;
 import com.jilongda.manage.dto.TWarehousingDTO;
 import com.jilongda.manage.dto.TWarehousingLensDTO;
-import com.jilongda.manage.model.TFrameWarehousingDetail;
-import com.jilongda.manage.model.TLensWarehousingDetail;
-import com.jilongda.manage.model.TWarehousing;
+import com.jilongda.manage.model.*;
+import com.jilongda.manage.query.TFrameGoodsQuery;
+import com.jilongda.manage.query.TLensGoodsQuery;
 import com.jilongda.manage.query.TWarehousingDetailLensQuery;
 import com.jilongda.manage.query.TWarehousingDetailQuery;
-import com.jilongda.manage.service.TFrameWarehousingDetailService;
-import com.jilongda.manage.service.TLensWarehousingDetailService;
-import com.jilongda.manage.service.TWarehousingService;
-import com.jilongda.manage.vo.TFrameWarehousingDetailVO;
-import com.jilongda.manage.vo.TLensWarehousingDetailVO;
-import com.jilongda.manage.vo.TWarehousingLensVO;
-import com.jilongda.manage.vo.TWarehousingVO;
+import com.jilongda.manage.service.*;
+import com.jilongda.manage.vo.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.BeanUtils;
@@ -30,7 +27,9 @@
 import org.springframework.web.bind.annotation.*;
 
 import java.time.LocalDateTime;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -51,7 +50,62 @@
     private TFrameWarehousingDetailService frameWarehousingDetailService;
     @Autowired
     private TLensWarehousingDetailService lensWarehousingDetailService;
+    @Autowired
+    private TFrameGoodsService frameGoodsService;
+    @Autowired
+    private TLensGoodsService lensGoodsService;
+    @Autowired
+    private TModelService modelService;
+    @Autowired
+    private TLensSeriesService lensSeriesService;
+    @Autowired
+    private TStoreService storeService;
+    @Autowired
+    private TBrandService brandService;
+    /**
+     * 通过型号查询色号列表
+     */
+    @ApiOperation(value = "镜架-根据品牌id、型号名称、色号名称查询当前库存")
+    @PostMapping(value = "/getCurrentByParamFrame")
+    public ApiResult<Integer> getCurrentByParamFrame(@RequestBody GetCurrentByParam getCurrentByParam) {
+        // 根据型号名称 查询型号列表ids
+        List<Integer> collect = modelService.lambdaQuery().eq(TModel::getName, getCurrentByParam.getModel())
+                .eq(TModel::getMaterialId,getCurrentByParam.getMaterialId())
+                .eq(TModel::getColor,getCurrentByParam.getColor())
+                .eq(TModel::getBrandId,getCurrentByParam.getBrandId())
+                .list().stream().map(TModel::getId).collect(Collectors.toList());
+        TFrameGoods one = frameGoodsService.lambdaQuery().in(TFrameGoods::getModelId, collect)
+                .eq(TFrameGoods::getColor, getCurrentByParam.getColor()).one();
+        if (one!=null){
+            return ApiResult.success(one.getTotal());
 
+        }
+        return ApiResult.success(0);
+    }
+    @ApiOperation(value = "镜片-根据品牌id、型号名称、色号名称、材质id查询当前库存")
+    @PostMapping(value = "/getCurrentByParamLens")
+    public ApiResult<Integer> getCurrentByParamLens(@RequestBody GetCurrentByParamLens dto) {
+        TLensGoods one = lensGoodsService.lambdaQuery().in(TLensGoods::getSeriesId, dto.getSeriesId())
+                .eq(dto.getLensType()!=null,TLensGoods::getLensType, dto.getLensType())
+                .eq(dto.getRefractiveIndex()!=null,TLensGoods::getRefractiveIndex, dto.getRefractiveIndex())
+                .eq(dto.getBallMirror()!=null,TLensGoods::getBallMirror, dto.getBallMirror())
+                .eq(dto.getColumnMirror()!=null,TLensGoods::getColumnMirror, dto.getColumnMirror())
+                .one();
+        if (one!=null){
+            return ApiResult.success(one.getTotal());
+        }
+        return ApiResult.success(0);
+    }
+    @ApiOperation(value = "镜架库存分页列表")
+    @PostMapping(value = "/frameReceiptList")
+    public ApiResult<PageInfo<TFrameGoodsVO>> frameReceiptList(@RequestBody TFrameGoodsQuery query) {
+        return ApiResult.success(frameGoodsService.lensReceiptList(query));
+    }
+    @ApiOperation(value = "镜片库存分页列表")
+    @PostMapping(value = "/lensReceiptList")
+    public ApiResult<PageInfo<TLensGoodsVO>> lensReceiptList(@RequestBody TLensGoodsQuery query) {
+        return ApiResult.success(lensGoodsService.lensReceiptList(query));
+    }
     /**
      * 出入库单列表
      */
@@ -78,11 +132,38 @@
     /**
      * 库存明细记录列表
      */
-    @ApiOperation(value = "镜片库存明细记录列表")
+    @ApiOperation(value = "镜片库存明细记录列表--库存详情")
     @PostMapping(value = "/detailLensList")
-    public ApiResult<PageInfo<TLensWarehousingDetailVO>> detailLensList(@RequestBody TWarehousingDetailLensQuery query) {
-        PageInfo<TLensWarehousingDetailVO> frameWarehousingDetailVOPageInfo = warehousingService.detailListLens(query);
-        return ApiResult.success(frameWarehousingDetailVOPageInfo);
+    public ApiResult<TLensGoodsDetailVO> detailLensList(Integer id) {
+        TLensGoodsDetailVO tLensGoodsDetailVO = new TLensGoodsDetailVO();
+        TLensGoods byId = lensGoodsService.getById(id);
+        TStore byId1 = storeService.getById(byId.getStoreId());
+        if (byId1!=null){
+            tLensGoodsDetailVO.setStoreName(byId1.getName());
+        }
+        TLensSeries byId2 = lensSeriesService.getById(byId.getSeriesId());
+        if (byId2!=null){
+            Integer brandId = byId2.getBrandId();
+            TBrand byId3 = brandService.getById(brandId);
+            String t1 = "";
+            switch (byId.getLensType()){
+                case 1:
+                    t1="球面";
+                    break;
+                case 2:
+                    t1="非球面";
+                    break;
+                case 3:
+                    t1="双非";
+                    break;
+            }
+            tLensGoodsDetailVO.setTitle(byId3.getName()+byId2.getName()+t1+" "+byId.getRefractiveIndex());
+        }
+        // 查询这个商品的库存明细
+        List<TLensWarehousingDetail> list = lensWarehousingDetailService.lambdaQuery().eq(TLensWarehousingDetail::getSeriesId, byId.getSeriesId())
+                .eq(TLensWarehousingDetail::getRefractiveIndex, byId.getRefractiveIndex()).list();
+        tLensGoodsDetailVO.setList(list);
+        return ApiResult.success(tLensGoodsDetailVO);
     }
 
     /**
@@ -90,7 +171,7 @@
      */
     @ApiOperation(value = "添加镜架出库,入库,作废,退货")
     @PostMapping(value = "/outBound")
-    public ApiResult<Integer> outBound(@Validated @RequestBody TWarehousingDTO dto) {
+    public ApiResult outBound(@Validated @RequestBody TWarehousingDTO dto) {
         // 获取当前用户
         String username = JwtTokenUtils.getUsername();
         dto.setCreateBy(username);
@@ -104,7 +185,48 @@
             detail.setWarehousingId(dto.getId());
             detail.setCode(WarehousingConstant.OUT_BOUND+CodeGenerateUtils.generateVolumeSn());
         });
+        if (dto.getStatus()==1||dto.getStatus()==3){
+            List<TFrameGoods> list1 = new ArrayList<>();
+            for (TFrameWarehousingDetail frameWarehousingDetail : frameWarehousingDetails) {
+                TFrameGoods one = frameGoodsService.lambdaQuery().eq(TFrameGoods::getModelId, frameWarehousingDetail.getModelId())
+                        .eq(TFrameGoods::getColor, frameWarehousingDetail.getColor()).one();
+                if (one!=null){
+                    if (one.getTotal()-frameWarehousingDetail.getTotal()<0){
+                        return ApiResult.failed("库存不足");
+                    }
+                    // 增加对应库存
+                    one.setTotal(one.getTotal()-frameWarehousingDetail.getTotal());
+                    list1.add(one);
+                }
+            }
+            if (!list1.isEmpty())frameGoodsService.updateBatchById(list1);
+        }
         frameWarehousingDetailService.saveBatch(frameWarehousingDetails);
+
+        if (dto.getStatus()==2 || dto.getStatus()==4){
+            List<TFrameGoods> list1 = new ArrayList<>();
+            List<TFrameGoods> list2 = new ArrayList<>();
+            for (TFrameWarehousingDetail frameWarehousingDetail : frameWarehousingDetails) {
+                TFrameGoods one = frameGoodsService.lambdaQuery().eq(TFrameGoods::getModelId, frameWarehousingDetail.getModelId())
+                        .eq(TFrameGoods::getColor, frameWarehousingDetail.getColor()).one();
+                if (one!=null){
+                    // 增加对应库存
+                    one.setTotal(one.getTotal()+frameWarehousingDetail.getTotal());
+                    list1.add(one);
+                }else {
+                    // 新增
+                    TFrameGoods tFrameGoods = new TFrameGoods();
+                    tFrameGoods.setColor(frameWarehousingDetail.getColor());
+                    tFrameGoods.setTotal(frameWarehousingDetail.getTotal());
+                    tFrameGoods.setModelId(frameWarehousingDetail.getModelId());
+                    tFrameGoods.setStoreId(dto.getStoreId());
+                    list2.add(tFrameGoods);
+                }
+            }
+            if (!list1.isEmpty())frameGoodsService.updateBatchById(list1);
+            if (!list2.isEmpty())frameGoodsService.saveBatch(list2);
+        }
+
         return ApiResult.success(dto.getId());
     }
     /**
@@ -112,7 +234,7 @@
      */
     @ApiOperation(value = "添加镜片出库,入库,作废,退货")
     @PostMapping(value = "/outBoundLens")
-    public ApiResult<String> outBoundLens(@Validated @RequestBody TWarehousingLensDTO dto) {
+    public ApiResult outBoundLens(@Validated @RequestBody TWarehousingLensDTO dto) {
         // 获取当前用户
         String username = JwtTokenUtils.getUsername();
         dto.setCreateBy(username);
@@ -125,8 +247,60 @@
             detail.setWarehousingId(dto.getId());
             detail.setCode(WarehousingConstant.OUT_BOUND+CodeGenerateUtils.generateVolumeSn());
         });
+        if (dto.getStatus()==1||dto.getStatus()==3){
+            List<TLensGoods> list1 = new ArrayList<>();
+            for (TLensWarehousingDetail frameWarehousingDetail : frameWarehousingDetails) {
+                TLensGoods one = lensGoodsService.lambdaQuery().eq(TLensGoods::getSeriesId, frameWarehousingDetail.getSeriesId())
+                        .eq(TLensGoods::getRefractiveIndex, frameWarehousingDetail.getRefractiveIndex())
+                        .eq(TLensGoods::getLensType, frameWarehousingDetail.getType())
+                        .eq(TLensGoods::getBallMirror, frameWarehousingDetail.getBallMirror())
+                        .eq(TLensGoods::getColumnMirror, frameWarehousingDetail.getColumnMirror())
+                        .one();
+                if (one!=null){
+                    if (one.getTotal()-frameWarehousingDetail.getTotal()<0){
+                        return ApiResult.failed("库存不足");
+                    }
+                    // 减少对应库存
+                    one.setTotal(one.getTotal()-frameWarehousingDetail.getTotal());
+                    list1.add(one);
+                }
+            }
+            if (!list1.isEmpty())lensGoodsService.updateBatchById(list1);
+        }
         lensWarehousingDetailService.saveBatch(frameWarehousingDetails);
-        return ApiResult.success();
+
+        if (dto.getStatus()==2 || dto.getStatus()==4){
+            List<TLensGoods> list1 = new ArrayList<>();
+            List<TLensGoods> list2 = new ArrayList<>();
+            for (TLensWarehousingDetail frameWarehousingDetail : frameWarehousingDetails) {
+                TLensGoods one = lensGoodsService.lambdaQuery().eq(TLensGoods::getSeriesId, frameWarehousingDetail.getSeriesId())
+                        .eq(TLensGoods::getRefractiveIndex, frameWarehousingDetail.getRefractiveIndex())
+                        .eq(TLensGoods::getBallMirror, frameWarehousingDetail.getBallMirror())
+                        .eq(TLensGoods::getLensType, frameWarehousingDetail.getType())
+
+                        .eq(TLensGoods::getColumnMirror, frameWarehousingDetail.getColumnMirror())
+                        .one();
+                if (one!=null){
+                    // 增加对应库存
+                    one.setTotal(one.getTotal()+frameWarehousingDetail.getTotal());
+                    list1.add(one);
+                }else {
+                    // 新增
+                    TLensGoods tFrameGoods = new TLensGoods();
+                    tFrameGoods.setLensType(frameWarehousingDetail.getType());
+                    tFrameGoods.setSeriesId(frameWarehousingDetail.getSeriesId());
+                    tFrameGoods.setBallMirror(frameWarehousingDetail.getBallMirror());
+                    tFrameGoods.setColumnMirror(frameWarehousingDetail.getColumnMirror());
+                    tFrameGoods.setRefractiveIndex(frameWarehousingDetail.getRefractiveIndex());
+                    tFrameGoods.setTotal(frameWarehousingDetail.getTotal());
+                    tFrameGoods.setStoreId(dto.getStoreId());
+                    list2.add(tFrameGoods);
+                }
+            }
+            if (!list1.isEmpty())lensGoodsService.updateBatchById(list1);
+            if (!list2.isEmpty())lensGoodsService.saveBatch(list2);
+        }
+        return ApiResult.success(dto.getId());
     }
 
     /**
diff --git a/manage/src/main/java/com/jilongda/manage/dto/FrameInventoryDTO.java b/manage/src/main/java/com/jilongda/manage/dto/FrameInventoryDTO.java
new file mode 100644
index 0000000..ff1de09
--- /dev/null
+++ b/manage/src/main/java/com/jilongda/manage/dto/FrameInventoryDTO.java
@@ -0,0 +1,20 @@
+package com.jilongda.manage.dto;
+
+import com.jilongda.manage.model.TInventory;
+import com.jilongda.manage.model.TInventoryFrameDetail;
+import com.jilongda.manage.model.TModel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+@Data
+@ApiModel(value = "镜架型号DTO")
+public class FrameInventoryDTO extends TInventory {
+
+    @ApiModelProperty(value = "镜架明细")
+    private List<TInventoryFrameDetail> list;
+
+}
diff --git a/manage/src/main/java/com/jilongda/manage/dto/GetCurrentByParam.java b/manage/src/main/java/com/jilongda/manage/dto/GetCurrentByParam.java
new file mode 100644
index 0000000..44e2873
--- /dev/null
+++ b/manage/src/main/java/com/jilongda/manage/dto/GetCurrentByParam.java
@@ -0,0 +1,23 @@
+package com.jilongda.manage.dto;
+
+import com.jilongda.manage.model.TModel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+@Data
+@ApiModel(value = "镜架查询当前库存DTO")
+public class GetCurrentByParam {
+    @ApiModelProperty(value = "镜架型号名称")
+    private String model;
+    @ApiModelProperty(value = "色号")
+    private String color;
+    @ApiModelProperty(value = "品牌id")
+    private Integer brandId;
+    @ApiModelProperty(value = "材质id")
+    private Integer materialId;
+
+}
diff --git a/manage/src/main/java/com/jilongda/manage/dto/GetCurrentByParamLens.java b/manage/src/main/java/com/jilongda/manage/dto/GetCurrentByParamLens.java
new file mode 100644
index 0000000..dde83f5
--- /dev/null
+++ b/manage/src/main/java/com/jilongda/manage/dto/GetCurrentByParamLens.java
@@ -0,0 +1,24 @@
+package com.jilongda.manage.dto;
+
+import com.jilongda.manage.model.TModel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "镜片查询当前库存DTO")
+public class GetCurrentByParamLens {
+    @ApiModelProperty(value = "系列id")
+    private Integer seriesId;
+    @ApiModelProperty(value = "1球2非球3双非")
+    private Integer lensType;
+    @ApiModelProperty(value = "品牌id")
+    private Integer brandId;
+    @ApiModelProperty(value = "折射率")
+    private String refractiveIndex;
+    @ApiModelProperty(value = "球镜")
+    private String ballMirror;
+    @ApiModelProperty(value = "柱镜")
+    private String columnMirror;
+
+}
diff --git a/manage/src/main/java/com/jilongda/manage/mapper/TAppUserMapper.java b/manage/src/main/java/com/jilongda/manage/mapper/TAppUserMapper.java
index 48912d1..5b9a2df 100644
--- a/manage/src/main/java/com/jilongda/manage/mapper/TAppUserMapper.java
+++ b/manage/src/main/java/com/jilongda/manage/mapper/TAppUserMapper.java
@@ -1,7 +1,13 @@
 package com.jilongda.manage.mapper;
 
+import com.jilongda.common.basic.PageInfo;
 import com.jilongda.manage.model.TAppUser;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jilongda.manage.query.TAppUserQuery;
+import com.jilongda.manage.vo.TAppUserVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +19,6 @@
  */
 public interface TAppUserMapper extends BaseMapper<TAppUser> {
 
+    List<TAppUserVO> pageList(@Param("query")TAppUserQuery query, @Param("pageInfo")PageInfo<TAppUserVO> pageInfo);
+
 }
diff --git a/manage/src/main/java/com/jilongda/manage/mapper/TCouponMapper.java b/manage/src/main/java/com/jilongda/manage/mapper/TCouponMapper.java
index e8185ff..b5136e6 100644
--- a/manage/src/main/java/com/jilongda/manage/mapper/TCouponMapper.java
+++ b/manage/src/main/java/com/jilongda/manage/mapper/TCouponMapper.java
@@ -1,7 +1,15 @@
 package com.jilongda.manage.mapper;
 
+import com.jilongda.common.basic.PageInfo;
 import com.jilongda.manage.model.TCoupon;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jilongda.manage.query.TAppUserQuery;
+import com.jilongda.manage.query.TCouponQuery;
+import com.jilongda.manage.vo.TAppUserVO;
+import com.jilongda.manage.vo.TCouponVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +21,6 @@
  */
 public interface TCouponMapper extends BaseMapper<TCoupon> {
 
+    List<TCouponVO> pageList(@Param("query")TCouponQuery query,@Param("pageInfo") PageInfo<TCouponVO> pageInfo);
+
 }
diff --git a/manage/src/main/java/com/jilongda/manage/mapper/TCouponReceiveMapper.java b/manage/src/main/java/com/jilongda/manage/mapper/TCouponReceiveMapper.java
index d4661fb..ba0e4db 100644
--- a/manage/src/main/java/com/jilongda/manage/mapper/TCouponReceiveMapper.java
+++ b/manage/src/main/java/com/jilongda/manage/mapper/TCouponReceiveMapper.java
@@ -1,7 +1,15 @@
 package com.jilongda.manage.mapper;
 
+import com.jilongda.common.basic.PageInfo;
 import com.jilongda.manage.model.TCouponReceive;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jilongda.manage.query.TAppUserCouponQuery;
+import com.jilongda.manage.query.TAppUserQuery;
+import com.jilongda.manage.vo.TAppUserCouponVO;
+import com.jilongda.manage.vo.TAppUserVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +21,7 @@
  */
 public interface TCouponReceiveMapper extends BaseMapper<TCouponReceive> {
 
+    List<TAppUserCouponVO> pageList(@Param("query")TAppUserCouponQuery query, @Param("pageInfo")PageInfo<TAppUserCouponVO> pageInfo);
+
+
 }
diff --git a/manage/src/main/java/com/jilongda/manage/mapper/TFrameGoodsMapper.java b/manage/src/main/java/com/jilongda/manage/mapper/TFrameGoodsMapper.java
new file mode 100644
index 0000000..8b530cb
--- /dev/null
+++ b/manage/src/main/java/com/jilongda/manage/mapper/TFrameGoodsMapper.java
@@ -0,0 +1,29 @@
+package com.jilongda.manage.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jilongda.common.basic.PageInfo;
+import com.jilongda.manage.model.TAppUser;
+import com.jilongda.manage.model.TFrameGoods;
+import com.jilongda.manage.query.TAppUserQuery;
+import com.jilongda.manage.query.TFrameGoodsQuery;
+import com.jilongda.manage.query.TOptometryQuery;
+import com.jilongda.manage.vo.TAppUserVO;
+import com.jilongda.manage.vo.TFrameGoodsVO;
+import com.jilongda.manage.vo.TOptometryVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 用户表 Mapper 接口
+ * </p>
+ *
+ * @author 无关风月
+ * @since 2024-12-09
+ */
+public interface TFrameGoodsMapper extends BaseMapper<TFrameGoods> {
+
+
+    List<TFrameGoodsVO> lensReceiptList(@Param("query")TFrameGoodsQuery query, @Param("pageInfo")PageInfo<TFrameGoodsVO> pageInfo);
+}
diff --git a/manage/src/main/java/com/jilongda/manage/mapper/TInventoryMapper.java b/manage/src/main/java/com/jilongda/manage/mapper/TInventoryMapper.java
index 6eec37f..c85a43a 100644
--- a/manage/src/main/java/com/jilongda/manage/mapper/TInventoryMapper.java
+++ b/manage/src/main/java/com/jilongda/manage/mapper/TInventoryMapper.java
@@ -1,7 +1,15 @@
 package com.jilongda.manage.mapper;
 
+import com.jilongda.common.basic.PageInfo;
 import com.jilongda.manage.model.TInventory;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jilongda.manage.query.TInventoryQuery;
+import com.jilongda.manage.query.TLensGoodsQuery;
+import com.jilongda.manage.vo.TInventoryVO;
+import com.jilongda.manage.vo.TLensGoodsVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +21,5 @@
  */
 public interface TInventoryMapper extends BaseMapper<TInventory> {
 
+    List<TInventoryVO> pageList(@Param("query")TInventoryQuery query, @Param("pageInfo")PageInfo<TInventoryVO> pageInfo);
 }
diff --git a/manage/src/main/java/com/jilongda/manage/mapper/TLensGoodsMapper.java b/manage/src/main/java/com/jilongda/manage/mapper/TLensGoodsMapper.java
new file mode 100644
index 0000000..e3e9175
--- /dev/null
+++ b/manage/src/main/java/com/jilongda/manage/mapper/TLensGoodsMapper.java
@@ -0,0 +1,28 @@
+package com.jilongda.manage.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jilongda.common.basic.PageInfo;
+import com.jilongda.manage.model.TFrameGoods;
+import com.jilongda.manage.model.TLensGoods;
+import com.jilongda.manage.query.TFrameGoodsQuery;
+import com.jilongda.manage.query.TLensGoodsQuery;
+import com.jilongda.manage.vo.TFrameGoodsVO;
+import com.jilongda.manage.vo.TLensGoodsVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 用户表 Mapper 接口
+ * </p>
+ *
+ * @author 无关风月
+ * @since 2024-12-09
+ */
+public interface TLensGoodsMapper extends BaseMapper<TLensGoods> {
+
+
+    List<TLensGoodsVO> lensReceiptList(@Param("query")TLensGoodsQuery query,  @Param("pageInfo")PageInfo<TLensGoodsVO> pageInfo);
+
+}
diff --git a/manage/src/main/java/com/jilongda/manage/model/TAppUser.java b/manage/src/main/java/com/jilongda/manage/model/TAppUser.java
index 01b5596..65575c2 100644
--- a/manage/src/main/java/com/jilongda/manage/model/TAppUser.java
+++ b/manage/src/main/java/com/jilongda/manage/model/TAppUser.java
@@ -55,10 +55,14 @@
     @ApiModelProperty(value = "性别1男2女3保密")
     @TableField("gender")
     private Integer gender;
+    @ApiModelProperty(value = "状态 1=启用 0=禁用")
+    @TableField("status")
+    private Integer status;
+    @ApiModelProperty(value = "头像")
+    @TableField("avatar")
+    private String avatar;
 
-    @ApiModelProperty(value = "注册时间")
-    @TableField("registerTime")
-    private LocalDateTime registerTime;
+
 
 
 }
diff --git a/manage/src/main/java/com/jilongda/manage/model/TCoupon.java b/manage/src/main/java/com/jilongda/manage/model/TCoupon.java
index d3296f8..80f4f3e 100644
--- a/manage/src/main/java/com/jilongda/manage/model/TCoupon.java
+++ b/manage/src/main/java/com/jilongda/manage/model/TCoupon.java
@@ -7,6 +7,7 @@
 import java.time.LocalDateTime;
 import com.baomidou.mybatisplus.annotation.TableField;
 import java.io.Serializable;
+import java.util.List;
 
 import com.jilongda.common.pojo.BaseModel;
 import io.swagger.annotations.ApiModel;
@@ -46,11 +47,11 @@
     @TableField("amount")
     private BigDecimal amount;
 
-    @ApiModelProperty(value = "门店id 字段为null表示全部")
+    @ApiModelProperty(value = "门店id 空字符串表示不限门店")
     @TableField("storeId")
-    private Integer storeId;
+    private String storeId;
 
-    @ApiModelProperty(value = "有效期(天)最高365")
+    @ApiModelProperty(value = " 有效期(天)最高365 0表示无期限")
     @TableField("time")
     private Integer time;
 
@@ -62,5 +63,7 @@
     @TableField("grantStatus")
     private Integer grantStatus;
 
-
+    @ApiModelProperty(value = "指定发放时传 用户id集合")
+    @TableField(exist = false)
+    private List<Integer> userIds;
 }
diff --git a/manage/src/main/java/com/jilongda/manage/model/TCouponReceive.java b/manage/src/main/java/com/jilongda/manage/model/TCouponReceive.java
index 8cbcd7f..3355c0c 100644
--- a/manage/src/main/java/com/jilongda/manage/model/TCouponReceive.java
+++ b/manage/src/main/java/com/jilongda/manage/model/TCouponReceive.java
@@ -52,11 +52,14 @@
 
     @ApiModelProperty(value = "门店id 字段为null表示全部")
     @TableField("storeId")
-    private Integer storeId;
+    private String storeId;
 
     @ApiModelProperty(value = "有效期截止日期")
     @TableField("endTime")
     private LocalDateTime endTime;
+    @ApiModelProperty(value = "使用时间")
+    @TableField("useTime")
+    private LocalDateTime useTime;
 
     @ApiModelProperty(value = "优惠条件金额 为0则表示通用券")
     @TableField("amountCondition")
diff --git a/manage/src/main/java/com/jilongda/manage/model/TFrameGoods.java b/manage/src/main/java/com/jilongda/manage/model/TFrameGoods.java
new file mode 100644
index 0000000..7f7f2d6
--- /dev/null
+++ b/manage/src/main/java/com/jilongda/manage/model/TFrameGoods.java
@@ -0,0 +1,45 @@
+package com.jilongda.manage.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jilongda.common.pojo.BaseModel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 用户表
+ * </p>
+ *
+ * @author 无关风月
+ * @since 2024-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("t_frame_goods")
+@ApiModel(value="TFrameGoods对象", description="用户表")
+public class TFrameGoods extends BaseModel {
+    private static final long serialVersionUID = 1L;
+    @ApiModelProperty(value = "主键id")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+    @ApiModelProperty(value = "色号")
+    @TableField("color")
+    private String color;
+    @ApiModelProperty(value = "库存")
+    @TableField("total")
+    private Integer total;
+    @ApiModelProperty(value = "型号id")
+    @TableField("modelId")
+    private Integer modelId;
+    @ApiModelProperty(value = "门店id")
+    @TableField("storeId")
+    private Integer storeId;
+    @ApiModelProperty(value = "1启用2禁用")
+    @TableField("status")
+    private Integer status;
+}
diff --git a/manage/src/main/java/com/jilongda/manage/model/TInventory.java b/manage/src/main/java/com/jilongda/manage/model/TInventory.java
index 214eeae..7c5af5c 100644
--- a/manage/src/main/java/com/jilongda/manage/model/TInventory.java
+++ b/manage/src/main/java/com/jilongda/manage/model/TInventory.java
@@ -33,7 +33,7 @@
     @TableId(value = "id", type = IdType.AUTO)
     private Integer id;
 
-    @ApiModelProperty(value = "1型号2品牌3材质4球/柱镜5折射率6系列")
+    @ApiModelProperty(value = "盘点类型1型号2品牌3材质4球/柱镜5折射率6系列")
     @TableField("status")
     private Integer status;
 
diff --git a/manage/src/main/java/com/jilongda/manage/model/TInventoryFrameDetail.java b/manage/src/main/java/com/jilongda/manage/model/TInventoryFrameDetail.java
index 2235f9d..2830b4d 100644
--- a/manage/src/main/java/com/jilongda/manage/model/TInventoryFrameDetail.java
+++ b/manage/src/main/java/com/jilongda/manage/model/TInventoryFrameDetail.java
@@ -33,7 +33,7 @@
     @TableId(value = "id", type = IdType.AUTO)
     private Integer id;
 
-    @ApiModelProperty(value = "盘点表id")
+    @ApiModelProperty(value = "盘点表id 前端忽略")
     @TableField("inventoryId")
     private Integer inventoryId;
 
diff --git a/manage/src/main/java/com/jilongda/manage/model/TLensGoods.java b/manage/src/main/java/com/jilongda/manage/model/TLensGoods.java
new file mode 100644
index 0000000..cd1c5a8
--- /dev/null
+++ b/manage/src/main/java/com/jilongda/manage/model/TLensGoods.java
@@ -0,0 +1,55 @@
+package com.jilongda.manage.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jilongda.common.pojo.BaseModel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 用户表
+ * </p>
+ *
+ * @author 无关风月
+ * @since 2024-12-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("t_lens_goods")
+@ApiModel(value="TLensGoods对象", description="用户表")
+public class TLensGoods extends BaseModel {
+    private static final long serialVersionUID = 1L;
+    @ApiModelProperty(value = "主键id")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+    @ApiModelProperty(value = "系列id")
+    @TableField("seriesId")
+    private Integer seriesId;
+    @ApiModelProperty(value = "球镜")
+    @TableField("ballMirror")
+    private String ballMirror;
+    @ApiModelProperty(value = "柱镜")
+    @TableField("columnMirror")
+    private String columnMirror;
+    @ApiModelProperty(value = "折射率")
+    @TableField("refractiveIndex")
+    private String refractiveIndex;
+    @ApiModelProperty(value = "库存")
+    @TableField("total")
+    private Integer total;
+    @ApiModelProperty(value = "门店id")
+    @TableField("storeId")
+    private Integer storeId;
+    @ApiModelProperty(value = "1启用2禁用")
+    @TableField("status")
+    private Integer status;
+    @ApiModelProperty(value = "1球2非球3双非")
+    @TableField("lensType")
+    private Integer lensType;
+
+}
diff --git a/manage/src/main/java/com/jilongda/manage/query/TAppUserCouponQuery.java b/manage/src/main/java/com/jilongda/manage/query/TAppUserCouponQuery.java
new file mode 100644
index 0000000..6e8efa3
--- /dev/null
+++ b/manage/src/main/java/com/jilongda/manage/query/TAppUserCouponQuery.java
@@ -0,0 +1,20 @@
+package com.jilongda.manage.query;
+
+import com.jilongda.common.pojo.BasePage;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import io.swagger.models.auth.In;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "用户详情-查看优惠券")
+public class TAppUserCouponQuery extends BasePage {
+
+    @ApiModelProperty(value = "用户id")
+    private Integer id;
+
+
+
+
+
+}
diff --git a/manage/src/main/java/com/jilongda/manage/query/TAppUserQuery.java b/manage/src/main/java/com/jilongda/manage/query/TAppUserQuery.java
new file mode 100644
index 0000000..8c05187
--- /dev/null
+++ b/manage/src/main/java/com/jilongda/manage/query/TAppUserQuery.java
@@ -0,0 +1,27 @@
+package com.jilongda.manage.query;
+
+import com.jilongda.common.pojo.BasePage;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "用户管理查询条件")
+public class TAppUserQuery extends BasePage {
+
+    @ApiModelProperty(value = "微信昵称")
+    private String name;
+
+    @ApiModelProperty(value = "手机号")
+    private String phone;
+    @ApiModelProperty(value = "姓名")
+    private String realName;
+
+    @ApiModelProperty(value = "注册起始时间 例:2022-11-11")
+    private String startTime;
+    @ApiModelProperty(value = "注册结束时间 例:2022-11-11")
+    private String endTime;
+
+
+
+}
diff --git a/manage/src/main/java/com/jilongda/manage/query/TCouponQuery.java b/manage/src/main/java/com/jilongda/manage/query/TCouponQuery.java
new file mode 100644
index 0000000..c7d924b
--- /dev/null
+++ b/manage/src/main/java/com/jilongda/manage/query/TCouponQuery.java
@@ -0,0 +1,17 @@
+package com.jilongda.manage.query;
+
+import com.jilongda.common.pojo.BasePage;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "用户管理查询条件")
+public class TCouponQuery extends BasePage {
+    @ApiModelProperty(value = "优惠券名称")
+    private String name;
+    @ApiModelProperty(value = "发放方式 发放方式 1注册发放 2全局发放 3指定发放 4扫码发放")
+    private String type;
+    @ApiModelProperty(value = "发放状态1发放中 2暂停发放 只有发放方式为1和4的时候存储")
+    private String grantStatus;
+}
diff --git a/manage/src/main/java/com/jilongda/manage/query/TFrameGoodsQuery.java b/manage/src/main/java/com/jilongda/manage/query/TFrameGoodsQuery.java
new file mode 100644
index 0000000..78df898
--- /dev/null
+++ b/manage/src/main/java/com/jilongda/manage/query/TFrameGoodsQuery.java
@@ -0,0 +1,34 @@
+package com.jilongda.manage.query;
+
+import com.jilongda.common.dto.TimeRangePageDTO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "镜架库存Query")
+public class TFrameGoodsQuery extends TimeRangePageDTO {
+
+    @ApiModelProperty(value = "品牌id")
+    private String brandId;
+
+    @ApiModelProperty(value = "供应商")
+    private String supplierId;
+
+    @ApiModelProperty(value = "色号")
+    private String color;
+    @ApiModelProperty(value = "店铺id")
+    private Integer storeId;
+    @ApiModelProperty(value = "镜架型号")
+    private String model;
+    @ApiModelProperty(value = "材质id")
+    private String materialId;
+    @ApiModelProperty(value = "状态1启用 2禁用")
+    private Integer status;
+    @ApiModelProperty(value = "是否低库存 1是2否")
+    private Integer isWarning;
+    @ApiModelProperty(value = "库存起始数量")
+    private Integer startCount;
+    @ApiModelProperty(value = "库存结束数量")
+    private Integer endCount;
+}
diff --git a/manage/src/main/java/com/jilongda/manage/query/TInventoryQuery.java b/manage/src/main/java/com/jilongda/manage/query/TInventoryQuery.java
new file mode 100644
index 0000000..cc6879c
--- /dev/null
+++ b/manage/src/main/java/com/jilongda/manage/query/TInventoryQuery.java
@@ -0,0 +1,23 @@
+package com.jilongda.manage.query;
+
+import com.jilongda.common.dto.TimeRangePageDTO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "盘点Query")
+public class TInventoryQuery extends TimeRangePageDTO {
+    @ApiModelProperty(value = "盘点品类 1镜架2镜片")
+    private Integer type;
+    @ApiModelProperty(value = "盘点类型 1型号2品牌3材质4球/柱镜5折射率6系列 123属于镜架 456属于镜片")
+    private Integer status;
+    @ApiModelProperty(value = "店铺id")
+    private Integer storeId;
+    @ApiModelProperty(value = "操作人")
+    private String createBy;
+    @ApiModelProperty(value = "盘点日期起始时间2022-11-11")
+    private String startTime;
+    @ApiModelProperty(value = "盘点日期结束时间2023-11-11")
+    private String endTime;
+}
diff --git a/manage/src/main/java/com/jilongda/manage/query/TLensGoodsQuery.java b/manage/src/main/java/com/jilongda/manage/query/TLensGoodsQuery.java
new file mode 100644
index 0000000..b72a94d
--- /dev/null
+++ b/manage/src/main/java/com/jilongda/manage/query/TLensGoodsQuery.java
@@ -0,0 +1,28 @@
+package com.jilongda.manage.query;
+
+import com.jilongda.common.dto.TimeRangePageDTO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "镜片库存Query")
+public class TLensGoodsQuery extends TimeRangePageDTO {
+    @ApiModelProperty(value = "品牌id")
+    private String brandId;
+    @ApiModelProperty(value = "系列id")
+    private String seriesId;
+    @ApiModelProperty(value = "1球2非球3双非")
+    private Integer lensType;
+    @ApiModelProperty(value = "店铺id")
+    private Integer storeId;
+    @ApiModelProperty(value = "折射率")
+    private String refractiveIndex;
+    @ApiModelProperty(value = "库存类型 1库存 2非库存")
+    private Integer type;
+    @ApiModelProperty(value = "状态1启用 2禁用")
+    private Integer status;
+    @ApiModelProperty(value = "是否低库存 1是2否")
+    private Integer isWarning;
+
+}
diff --git a/manage/src/main/java/com/jilongda/manage/query/TOptometryQuery.java b/manage/src/main/java/com/jilongda/manage/query/TOptometryQuery.java
index c1d7998..0ee3fff 100644
--- a/manage/src/main/java/com/jilongda/manage/query/TOptometryQuery.java
+++ b/manage/src/main/java/com/jilongda/manage/query/TOptometryQuery.java
@@ -21,6 +21,8 @@
     private Integer storeId;
     @ApiModelProperty(value = "验光师id")
     private Integer optometristId;
+    @ApiModelProperty(value = "用户id")
+    private Integer userId;
     @ApiModelProperty(value = "开始时间 前端忽略")
     private String startTime;
     @ApiModelProperty(value = "结束时间 前端忽略")
diff --git a/manage/src/main/java/com/jilongda/manage/service/TAppUserService.java b/manage/src/main/java/com/jilongda/manage/service/TAppUserService.java
index d50c187..3d97a93 100644
--- a/manage/src/main/java/com/jilongda/manage/service/TAppUserService.java
+++ b/manage/src/main/java/com/jilongda/manage/service/TAppUserService.java
@@ -1,7 +1,10 @@
 package com.jilongda.manage.service;
 
+import com.jilongda.common.basic.PageInfo;
 import com.jilongda.manage.model.TAppUser;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.jilongda.manage.query.TAppUserQuery;
+import com.jilongda.manage.vo.TAppUserVO;
 
 /**
  * <p>
@@ -13,4 +16,5 @@
  */
 public interface TAppUserService extends IService<TAppUser> {
 
+    PageInfo<TAppUserVO> pageList(TAppUserQuery query);
 }
diff --git a/manage/src/main/java/com/jilongda/manage/service/TCouponReceiveService.java b/manage/src/main/java/com/jilongda/manage/service/TCouponReceiveService.java
index 34a6f7d..84c3c0b 100644
--- a/manage/src/main/java/com/jilongda/manage/service/TCouponReceiveService.java
+++ b/manage/src/main/java/com/jilongda/manage/service/TCouponReceiveService.java
@@ -1,7 +1,10 @@
 package com.jilongda.manage.service;
 
+import com.jilongda.common.basic.PageInfo;
 import com.jilongda.manage.model.TCouponReceive;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.jilongda.manage.query.TAppUserCouponQuery;
+import com.jilongda.manage.vo.TAppUserCouponVO;
 
 /**
  * <p>
@@ -13,4 +16,6 @@
  */
 public interface TCouponReceiveService extends IService<TCouponReceive> {
 
+    PageInfo<TAppUserCouponVO> pageList(TAppUserCouponQuery query);
+
 }
diff --git a/manage/src/main/java/com/jilongda/manage/service/TCouponService.java b/manage/src/main/java/com/jilongda/manage/service/TCouponService.java
index 0889bde..33232f6 100644
--- a/manage/src/main/java/com/jilongda/manage/service/TCouponService.java
+++ b/manage/src/main/java/com/jilongda/manage/service/TCouponService.java
@@ -1,7 +1,10 @@
 package com.jilongda.manage.service;
 
+import com.jilongda.common.basic.PageInfo;
 import com.jilongda.manage.model.TCoupon;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.jilongda.manage.query.TCouponQuery;
+import com.jilongda.manage.vo.TCouponVO;
 
 /**
  * <p>
@@ -13,4 +16,5 @@
  */
 public interface TCouponService extends IService<TCoupon> {
 
+    PageInfo<TCouponVO> pageList(TCouponQuery query);
 }
diff --git a/manage/src/main/java/com/jilongda/manage/service/TFrameGoodsService.java b/manage/src/main/java/com/jilongda/manage/service/TFrameGoodsService.java
new file mode 100644
index 0000000..193bd30
--- /dev/null
+++ b/manage/src/main/java/com/jilongda/manage/service/TFrameGoodsService.java
@@ -0,0 +1,24 @@
+package com.jilongda.manage.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jilongda.common.basic.PageInfo;
+import com.jilongda.manage.model.TAppUser;
+import com.jilongda.manage.model.TFrameGoods;
+import com.jilongda.manage.query.TAppUserQuery;
+import com.jilongda.manage.query.TFrameGoodsQuery;
+import com.jilongda.manage.vo.TAppUserVO;
+import com.jilongda.manage.vo.TFrameGoodsVO;
+
+/**
+ * <p>
+ * 用户表 服务类
+ * </p>
+ *
+ * @author 无关风月
+ * @since 2024-12-09
+ */
+public interface TFrameGoodsService extends IService<TFrameGoods> {
+
+    PageInfo<TFrameGoodsVO> lensReceiptList(TFrameGoodsQuery query);
+
+}
diff --git a/manage/src/main/java/com/jilongda/manage/service/TInventoryService.java b/manage/src/main/java/com/jilongda/manage/service/TInventoryService.java
index 0dd5892..35e9501 100644
--- a/manage/src/main/java/com/jilongda/manage/service/TInventoryService.java
+++ b/manage/src/main/java/com/jilongda/manage/service/TInventoryService.java
@@ -1,7 +1,10 @@
 package com.jilongda.manage.service;
 
+import com.jilongda.common.basic.PageInfo;
 import com.jilongda.manage.model.TInventory;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.jilongda.manage.query.TInventoryQuery;
+import com.jilongda.manage.vo.TInventoryVO;
 
 /**
  * <p>
@@ -13,4 +16,6 @@
  */
 public interface TInventoryService extends IService<TInventory> {
 
+    PageInfo<TInventoryVO> pageList(TInventoryQuery query);
+
 }
diff --git a/manage/src/main/java/com/jilongda/manage/service/TLensGoodsService.java b/manage/src/main/java/com/jilongda/manage/service/TLensGoodsService.java
new file mode 100644
index 0000000..a812734
--- /dev/null
+++ b/manage/src/main/java/com/jilongda/manage/service/TLensGoodsService.java
@@ -0,0 +1,23 @@
+package com.jilongda.manage.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jilongda.common.basic.PageInfo;
+import com.jilongda.manage.model.TFrameGoods;
+import com.jilongda.manage.model.TLensGoods;
+import com.jilongda.manage.query.TFrameGoodsQuery;
+import com.jilongda.manage.query.TLensGoodsQuery;
+import com.jilongda.manage.vo.TLensGoodsVO;
+
+/**
+ * <p>
+ * 用户表 服务类
+ * </p>
+ *
+ * @author 无关风月
+ * @since 2024-12-09
+ */
+public interface TLensGoodsService extends IService<TLensGoods> {
+
+    PageInfo<TLensGoodsVO> lensReceiptList(TLensGoodsQuery query);
+
+}
diff --git a/manage/src/main/java/com/jilongda/manage/service/impl/TAppUserServiceImpl.java b/manage/src/main/java/com/jilongda/manage/service/impl/TAppUserServiceImpl.java
index 8f27bda..e99cc85 100644
--- a/manage/src/main/java/com/jilongda/manage/service/impl/TAppUserServiceImpl.java
+++ b/manage/src/main/java/com/jilongda/manage/service/impl/TAppUserServiceImpl.java
@@ -1,10 +1,20 @@
 package com.jilongda.manage.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.jilongda.common.basic.PageInfo;
+import com.jilongda.manage.mapper.TOrderMapper;
 import com.jilongda.manage.model.TAppUser;
 import com.jilongda.manage.mapper.TAppUserMapper;
+import com.jilongda.manage.model.TOrder;
+import com.jilongda.manage.query.TAppUserQuery;
 import com.jilongda.manage.service.TAppUserService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jilongda.manage.vo.TAppUserVO;
+import com.jilongda.manage.vo.TOptometryVO;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+
+import java.util.List;
 
 /**
  * <p>
@@ -17,4 +27,18 @@
 @Service
 public class TAppUserServiceImpl extends ServiceImpl<TAppUserMapper, TAppUser> implements TAppUserService {
 
+    @Autowired
+    private TOrderMapper orderMapper;
+    @Override
+    public PageInfo<TAppUserVO> pageList(TAppUserQuery query) {
+        PageInfo<TAppUserVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
+        List<TAppUserVO> list = this.baseMapper.pageList(query,pageInfo);
+        for (TAppUserVO tAppUserVO : list) {
+            Long l = orderMapper.selectCount(new LambdaQueryWrapper<TOrder>()
+                    .eq(TOrder::getUserId, tAppUserVO.getId()));
+            tAppUserVO.setSalesCount(l.intValue());
+        }
+        pageInfo.setRecords(list);
+        return pageInfo;
+    }
 }
diff --git a/manage/src/main/java/com/jilongda/manage/service/impl/TCouponReceiveServiceImpl.java b/manage/src/main/java/com/jilongda/manage/service/impl/TCouponReceiveServiceImpl.java
index b41fded..4de7cc0 100644
--- a/manage/src/main/java/com/jilongda/manage/service/impl/TCouponReceiveServiceImpl.java
+++ b/manage/src/main/java/com/jilongda/manage/service/impl/TCouponReceiveServiceImpl.java
@@ -1,10 +1,25 @@
 package com.jilongda.manage.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.jilongda.common.basic.PageInfo;
+import com.jilongda.manage.mapper.TCouponMapper;
+import com.jilongda.manage.mapper.TStoreMapper;
 import com.jilongda.manage.model.TCouponReceive;
 import com.jilongda.manage.mapper.TCouponReceiveMapper;
+import com.jilongda.manage.model.TStore;
+import com.jilongda.manage.query.TAppUserCouponQuery;
 import com.jilongda.manage.service.TCouponReceiveService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jilongda.manage.service.TCouponService;
+import com.jilongda.manage.service.TStoreService;
+import com.jilongda.manage.vo.TAppUserCouponVO;
+import com.jilongda.manage.vo.TStoreVO;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+
+import javax.annotation.Resource;
+import java.util.Arrays;
+import java.util.List;
 
 /**
  * <p>
@@ -17,4 +32,30 @@
 @Service
 public class TCouponReceiveServiceImpl extends ServiceImpl<TCouponReceiveMapper, TCouponReceive> implements TCouponReceiveService {
 
+    @Resource
+    private TCouponMapper couponMapper;
+    @Resource
+    private TStoreMapper storeMapper;
+    @Resource
+    private TCouponReceiveMapper couponReceiveMapper;
+    @Override
+    public PageInfo<TAppUserCouponVO> pageList(TAppUserCouponQuery query) {
+        PageInfo<TAppUserCouponVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
+        List<TAppUserCouponVO> list = couponReceiveMapper.pageList(query,pageInfo);
+        for (TAppUserCouponVO tAppUserCouponVO : list) {
+            StringBuilder stringBuilder = new StringBuilder();
+            if (StringUtils.hasLength(tAppUserCouponVO.getStoreId())) {
+                List<TStore> tStores = storeMapper.selectList(new LambdaQueryWrapper<TStore>()
+                        .in(TStore::getId, Arrays.asList(tAppUserCouponVO.getStoreId().split(","))));
+                for (TStore tStoreVO : tStores) {
+                    stringBuilder.append(tStoreVO.getName()).append(",");
+                }
+                tAppUserCouponVO.setStoreName(stringBuilder.substring(0, stringBuilder.length() - 1));
+            } else {
+                tAppUserCouponVO.setStoreName("不限");
+            }
+        }
+        pageInfo.setRecords(list);
+        return pageInfo;
+    }
 }
diff --git a/manage/src/main/java/com/jilongda/manage/service/impl/TCouponServiceImpl.java b/manage/src/main/java/com/jilongda/manage/service/impl/TCouponServiceImpl.java
index c4e2be2..551cb1b 100644
--- a/manage/src/main/java/com/jilongda/manage/service/impl/TCouponServiceImpl.java
+++ b/manage/src/main/java/com/jilongda/manage/service/impl/TCouponServiceImpl.java
@@ -1,10 +1,26 @@
 package com.jilongda.manage.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.jilongda.common.basic.PageInfo;
+import com.jilongda.manage.mapper.TCouponReceiveMapper;
+import com.jilongda.manage.mapper.TStoreMapper;
 import com.jilongda.manage.model.TCoupon;
 import com.jilongda.manage.mapper.TCouponMapper;
+import com.jilongda.manage.model.TCouponReceive;
+import com.jilongda.manage.model.TOrder;
+import com.jilongda.manage.model.TStore;
+import com.jilongda.manage.query.TCouponQuery;
 import com.jilongda.manage.service.TCouponService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jilongda.manage.vo.TAppUserVO;
+import com.jilongda.manage.vo.TCouponVO;
+import org.apache.ibatis.annotations.ResultType;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+
+import javax.annotation.Resource;
+import java.util.Arrays;
+import java.util.List;
 
 /**
  * <p>
@@ -17,4 +33,38 @@
 @Service
 public class TCouponServiceImpl extends ServiceImpl<TCouponMapper, TCoupon> implements TCouponService {
 
+    @Resource
+    private TStoreMapper storeMapper;
+    @Resource
+    private TCouponReceiveMapper couponReceiveMapper;
+    @Override
+    public PageInfo<TCouponVO> pageList(TCouponQuery query) {
+        PageInfo<TCouponVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
+        List<TCouponVO> list = this.baseMapper.pageList(query,pageInfo);
+        StringBuilder stringBuilder = new StringBuilder();
+        for (TCouponVO tAppUserCouponVO : list) {
+            if (StringUtils.hasLength(tAppUserCouponVO.getStoreId())) {
+                List<TStore> tStores = storeMapper.selectList(new LambdaQueryWrapper<TStore>()
+                        .in(TStore::getId, Arrays.asList(tAppUserCouponVO.getStoreId().split(","))));
+                for (TStore tStoreVO : tStores) {
+                    stringBuilder.append(tStoreVO.getName()).append(",");
+                }
+                tAppUserCouponVO.setStoreName(stringBuilder.substring(0, stringBuilder.length() - 1));
+            } else {
+                tAppUserCouponVO.setStoreName("不限");
+            }
+            // 查询发放数量和使用数量
+            int size = couponReceiveMapper.selectList(new LambdaQueryWrapper<TCouponReceive>()
+                    .eq(TCouponReceive::getCouponId, tAppUserCouponVO.getId())).size();
+            tAppUserCouponVO.setGrantCout(size);
+            int size1 = couponReceiveMapper.selectList(new LambdaQueryWrapper<TCouponReceive>()
+                    .eq(TCouponReceive::getCouponId, tAppUserCouponVO.getId())
+                    .eq(TCouponReceive::getStatus, 2)).size();
+            tAppUserCouponVO.setUseCount(size1);
+        }
+
+        pageInfo.setRecords(list);
+        return pageInfo;
+
+    }
 }
diff --git a/manage/src/main/java/com/jilongda/manage/service/impl/TFrameGoodsServiceImpl.java b/manage/src/main/java/com/jilongda/manage/service/impl/TFrameGoodsServiceImpl.java
new file mode 100644
index 0000000..e9c8022
--- /dev/null
+++ b/manage/src/main/java/com/jilongda/manage/service/impl/TFrameGoodsServiceImpl.java
@@ -0,0 +1,54 @@
+package com.jilongda.manage.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jilongda.common.basic.PageInfo;
+import com.jilongda.manage.mapper.SecSettingMapper;
+import com.jilongda.manage.mapper.TAppUserMapper;
+import com.jilongda.manage.mapper.TFrameGoodsMapper;
+import com.jilongda.manage.mapper.TOrderMapper;
+import com.jilongda.manage.model.SecSetting;
+import com.jilongda.manage.model.TAppUser;
+import com.jilongda.manage.model.TFrameGoods;
+import com.jilongda.manage.model.TOrder;
+import com.jilongda.manage.query.TAppUserQuery;
+import com.jilongda.manage.query.TFrameGoodsQuery;
+import com.jilongda.manage.service.TAppUserService;
+import com.jilongda.manage.service.TFrameGoodsService;
+import com.jilongda.manage.vo.TAppUserVO;
+import com.jilongda.manage.vo.TFrameGoodsVO;
+import com.jilongda.manage.vo.TOptometryVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * <p>
+ * 用户表 服务实现类
+ * </p>
+ *
+ * @author 无关风月
+ * @since 2024-12-09
+ */
+@Service
+public class TFrameGoodsServiceImpl extends ServiceImpl<TFrameGoodsMapper, TFrameGoods> implements TFrameGoodsService {
+
+
+    @Resource
+    private SecSettingMapper secSettingMapper;
+    @Override
+    public PageInfo<TFrameGoodsVO> lensReceiptList(TFrameGoodsQuery query) {
+        PageInfo<TFrameGoodsVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
+        List<TFrameGoodsVO> list = this.baseMapper.lensReceiptList(query,pageInfo);
+        SecSetting secSetting = secSettingMapper.selectOne(null);
+        for (TFrameGoodsVO tFrameGoodsVO : list) {
+            if (tFrameGoodsVO.getTotal()<secSetting.getFrameThreshold()){
+                tFrameGoodsVO.setIsWarning(1);
+            }
+        }
+        pageInfo.setRecords(list);
+        return pageInfo;
+    }
+}
diff --git a/manage/src/main/java/com/jilongda/manage/service/impl/TInventoryServiceImpl.java b/manage/src/main/java/com/jilongda/manage/service/impl/TInventoryServiceImpl.java
index b1036d2..2814f7f 100644
--- a/manage/src/main/java/com/jilongda/manage/service/impl/TInventoryServiceImpl.java
+++ b/manage/src/main/java/com/jilongda/manage/service/impl/TInventoryServiceImpl.java
@@ -1,10 +1,17 @@
 package com.jilongda.manage.service.impl;
 
+import com.jilongda.common.basic.PageInfo;
+import com.jilongda.manage.model.SecSetting;
 import com.jilongda.manage.model.TInventory;
 import com.jilongda.manage.mapper.TInventoryMapper;
+import com.jilongda.manage.query.TInventoryQuery;
 import com.jilongda.manage.service.TInventoryService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jilongda.manage.vo.TInventoryVO;
+import com.jilongda.manage.vo.TLensGoodsVO;
 import org.springframework.stereotype.Service;
+
+import java.util.List;
 
 /**
  * <p>
@@ -17,4 +24,11 @@
 @Service
 public class TInventoryServiceImpl extends ServiceImpl<TInventoryMapper, TInventory> implements TInventoryService {
 
+    @Override
+    public PageInfo<TInventoryVO> pageList(TInventoryQuery query) {
+        PageInfo<TInventoryVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
+        List<TInventoryVO> list = this.baseMapper.pageList(query, pageInfo);
+        pageInfo.setRecords(list);
+        return pageInfo;
+    }
 }
diff --git a/manage/src/main/java/com/jilongda/manage/service/impl/TLensGoodsServiceImpl.java b/manage/src/main/java/com/jilongda/manage/service/impl/TLensGoodsServiceImpl.java
new file mode 100644
index 0000000..a790454
--- /dev/null
+++ b/manage/src/main/java/com/jilongda/manage/service/impl/TLensGoodsServiceImpl.java
@@ -0,0 +1,49 @@
+package com.jilongda.manage.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jilongda.common.basic.PageInfo;
+import com.jilongda.manage.mapper.SecSettingMapper;
+import com.jilongda.manage.mapper.TFrameGoodsMapper;
+import com.jilongda.manage.mapper.TLensGoodsMapper;
+import com.jilongda.manage.model.SecSetting;
+import com.jilongda.manage.model.TFrameGoods;
+import com.jilongda.manage.model.TLensGoods;
+import com.jilongda.manage.query.TFrameGoodsQuery;
+import com.jilongda.manage.query.TLensGoodsQuery;
+import com.jilongda.manage.service.TFrameGoodsService;
+import com.jilongda.manage.service.TLensGoodsService;
+import com.jilongda.manage.vo.TFrameGoodsVO;
+import com.jilongda.manage.vo.TLensGoodsVO;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * <p>
+ * 用户表 服务实现类
+ * </p>
+ *
+ * @author 无关风月
+ * @since 2024-12-09
+ */
+@Service
+public class TLensGoodsServiceImpl extends ServiceImpl<TLensGoodsMapper, TLensGoods> implements TLensGoodsService {
+
+
+    @Resource
+    private SecSettingMapper secSettingMapper;
+    @Override
+    public PageInfo<TLensGoodsVO> lensReceiptList(TLensGoodsQuery query) {
+        PageInfo<TLensGoodsVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
+        List<TLensGoodsVO> list = this.baseMapper.lensReceiptList(query, pageInfo);
+        SecSetting secSetting = secSettingMapper.selectOne(null);
+        for (TLensGoodsVO tFrameGoodsVO : list) {
+            if (tFrameGoodsVO.getTotal() < secSetting.getLensThreshold()) {
+                tFrameGoodsVO.setIsWarning(1);
+            }
+        }
+        pageInfo.setRecords(list);
+        return pageInfo;
+    }
+}
diff --git a/manage/src/main/java/com/jilongda/manage/service/impl/TLensSeriesServiceImpl.java b/manage/src/main/java/com/jilongda/manage/service/impl/TLensSeriesServiceImpl.java
index 2f72a63..0b25a2b 100644
--- a/manage/src/main/java/com/jilongda/manage/service/impl/TLensSeriesServiceImpl.java
+++ b/manage/src/main/java/com/jilongda/manage/service/impl/TLensSeriesServiceImpl.java
@@ -1,8 +1,10 @@
 package com.jilongda.manage.service.impl;
 
 import com.jilongda.common.basic.PageInfo;
+import com.jilongda.manage.mapper.TSupplierMapper;
 import com.jilongda.manage.model.TLensSeries;
 import com.jilongda.manage.mapper.TLensSeriesMapper;
+import com.jilongda.manage.model.TSupplier;
 import com.jilongda.manage.query.TLensSeriesQuery;
 import com.jilongda.manage.service.TLensSeriesService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -10,6 +12,7 @@
 import com.jilongda.manage.vo.TOptometristVO;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import java.util.List;
 
 /**
@@ -23,10 +26,16 @@
 @Service
 public class TLensSeriesServiceImpl extends ServiceImpl<TLensSeriesMapper, TLensSeries> implements TLensSeriesService {
 
+    @Resource
+    private TSupplierMapper supplierMapper;
     @Override
     public PageInfo<TLensSeriesVO> pageList(TLensSeriesQuery query) {
         PageInfo<TLensSeriesVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
         List<TLensSeriesVO> list = this.baseMapper.pageList(query,pageInfo);
+        for (TLensSeriesVO tLensSeriesVO : list) {
+            TSupplier tSupplier = supplierMapper.selectById(tLensSeriesVO.getSupplierId());
+            if (tSupplier!=null)tLensSeriesVO.setSupplier(tSupplier.getName());
+        }
         pageInfo.setRecords(list);
         return pageInfo;
     }
diff --git a/manage/src/main/java/com/jilongda/manage/utils/QRCodeUtil.java b/manage/src/main/java/com/jilongda/manage/utils/QRCodeUtil.java
new file mode 100644
index 0000000..f974d39
--- /dev/null
+++ b/manage/src/main/java/com/jilongda/manage/utils/QRCodeUtil.java
@@ -0,0 +1,50 @@
+package com.jilongda.manage.utils;
+
+import com.google.zxing.BarcodeFormat;
+import com.google.zxing.EncodeHintType;
+import com.google.zxing.MultiFormatWriter;
+import com.google.zxing.common.BitMatrix;
+import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
+
+import java.awt.image.BufferedImage;
+import java.util.Hashtable;
+
+/**
+ * @author chengst
+ * @date 2019/11/4
+ **/
+public class QRCodeUtil {
+
+    private final static String CHARSET = "utf-8";
+
+    private final static int QRSIZEE = 300;
+
+    // 二维码颜色
+    private static final int BLACK = 0xFF000000;
+    // 二维码颜色
+    private static final int WHITE = 0xFFFFFFFF;
+
+    public static BufferedImage createImage(String content){
+        Hashtable<EncodeHintType, Object> hints = new Hashtable<EncodeHintType, Object>();
+        hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
+        hints.put(EncodeHintType.CHARACTER_SET, CHARSET);
+        hints.put(EncodeHintType.MARGIN, 1);
+        BitMatrix bitMatrix = null;
+        try {
+            bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, QRSIZEE, QRSIZEE,hints);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        int width = bitMatrix.getWidth();
+        int height = bitMatrix.getHeight();
+        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
+
+        for (int x = 0; x < width; x++) {
+            for (int y = 0; y < height; y++) {
+                image.setRGB(x, y, bitMatrix.get(x, y) ? BLACK : WHITE);
+            }
+        }
+        return image;
+    }
+}
+
diff --git a/manage/src/main/java/com/jilongda/manage/vo/TAppUserCouponVO.java b/manage/src/main/java/com/jilongda/manage/vo/TAppUserCouponVO.java
new file mode 100644
index 0000000..472190b
--- /dev/null
+++ b/manage/src/main/java/com/jilongda/manage/vo/TAppUserCouponVO.java
@@ -0,0 +1,23 @@
+package com.jilongda.manage.vo;
+
+import com.jilongda.manage.model.TAppUser;
+import com.jilongda.manage.model.TCouponReceive;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Data
+@ApiModel(value = "用户VO")
+public class TAppUserCouponVO extends TCouponReceive {
+
+    @ApiModelProperty(value = "优惠券名称")
+    private String couponName;
+    @ApiModelProperty(value = "门店名称")
+    private String storeName;
+
+
+
+}
diff --git a/manage/src/main/java/com/jilongda/manage/vo/TAppUserVO.java b/manage/src/main/java/com/jilongda/manage/vo/TAppUserVO.java
new file mode 100644
index 0000000..c2b5236
--- /dev/null
+++ b/manage/src/main/java/com/jilongda/manage/vo/TAppUserVO.java
@@ -0,0 +1,28 @@
+package com.jilongda.manage.vo;
+
+import com.jilongda.manage.model.TAppUser;
+import com.jilongda.manage.model.TOptometrist;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Data
+@ApiModel(value = "用户VO")
+public class TAppUserVO extends TAppUser {
+
+    @ApiModelProperty(value = "消费次数")
+    private Integer salesCount;
+    @ApiModelProperty(value = "验光次数")
+    private Integer optometryCount;
+    @ApiModelProperty(value = "最后消费时间")
+    private LocalDateTime salesTime;
+    @ApiModelProperty(value = "最后验光时间")
+    private LocalDateTime optometryTime;
+    @ApiModelProperty(value = "消费总金额")
+    private BigDecimal salesAmount;
+
+
+}
diff --git a/manage/src/main/java/com/jilongda/manage/vo/TCouponInfoVO.java b/manage/src/main/java/com/jilongda/manage/vo/TCouponInfoVO.java
new file mode 100644
index 0000000..9d37dea
--- /dev/null
+++ b/manage/src/main/java/com/jilongda/manage/vo/TCouponInfoVO.java
@@ -0,0 +1,21 @@
+package com.jilongda.manage.vo;
+
+import com.jilongda.manage.model.TCoupon;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "优惠券详情VO")
+public class TCouponInfoVO extends TCoupon {
+
+    @ApiModelProperty(value = "门店名称")
+    private String storeName;
+    @ApiModelProperty(value = "领取数量")
+    private Integer grantCout;
+    @ApiModelProperty(value = "使用数量")
+    private Integer useCount;
+
+
+
+}
diff --git a/manage/src/main/java/com/jilongda/manage/vo/TCouponVO.java b/manage/src/main/java/com/jilongda/manage/vo/TCouponVO.java
new file mode 100644
index 0000000..e5d9fe6
--- /dev/null
+++ b/manage/src/main/java/com/jilongda/manage/vo/TCouponVO.java
@@ -0,0 +1,25 @@
+package com.jilongda.manage.vo;
+
+import com.jilongda.manage.model.TAppUser;
+import com.jilongda.manage.model.TCoupon;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Data
+@ApiModel(value = "优惠券VO")
+public class TCouponVO extends TCoupon {
+
+    @ApiModelProperty(value = "门店名称")
+    private String storeName;
+    @ApiModelProperty(value = "发放数量")
+    private Integer grantCout;
+    @ApiModelProperty(value = "使用数量")
+    private Integer useCount;
+
+
+
+}
diff --git a/manage/src/main/java/com/jilongda/manage/vo/TFrameGoodsVO.java b/manage/src/main/java/com/jilongda/manage/vo/TFrameGoodsVO.java
new file mode 100644
index 0000000..8b3eef0
--- /dev/null
+++ b/manage/src/main/java/com/jilongda/manage/vo/TFrameGoodsVO.java
@@ -0,0 +1,33 @@
+package com.jilongda.manage.vo;
+
+import com.jilongda.manage.model.TFrameGoods;
+import com.jilongda.manage.model.TFrameWarehousingDetail;
+import com.jilongda.manage.model.TWarehousing;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel(value = "镜架库存VO")
+public class TFrameGoodsVO extends TFrameGoods {
+
+    @ApiModelProperty(value = "品牌名称")
+    private String brand;
+    @ApiModelProperty(value = "供应商名称")
+    private String supplier;
+    @ApiModelProperty(value = "材质名称")
+    private String material;
+    @ApiModelProperty(value = "型号名称")
+    private String model;
+    @ApiModelProperty(value = "单价/副")
+    private String sales;
+    @ApiModelProperty(value = "成本价/副")
+    private String cost;
+    @ApiModelProperty(value = "店铺名称")
+    private String store;
+    @ApiModelProperty(value = "是否低库存")
+    private Integer isWarning;
+
+}
diff --git a/manage/src/main/java/com/jilongda/manage/vo/TInventoryInfoVO.java b/manage/src/main/java/com/jilongda/manage/vo/TInventoryInfoVO.java
new file mode 100644
index 0000000..30e5424
--- /dev/null
+++ b/manage/src/main/java/com/jilongda/manage/vo/TInventoryInfoVO.java
@@ -0,0 +1,21 @@
+package com.jilongda.manage.vo;
+
+import com.jilongda.manage.model.TInventory;
+import com.jilongda.manage.model.TInventoryFrameDetail;
+import com.jilongda.manage.model.TInventoryLensDetail;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel(value = "盘点详情VO")
+public class TInventoryInfoVO extends TInventory {
+    @ApiModelProperty(value = "店铺名称")
+    private String store;
+    @ApiModelProperty(value = "镜片盘点明细")
+    private List<TInventoryLensDetail> lensList;
+    @ApiModelProperty(value = "镜片盘点明细")
+    private List<TInventoryFrameDetail> frameList;
+}
diff --git a/manage/src/main/java/com/jilongda/manage/vo/TInventoryVO.java b/manage/src/main/java/com/jilongda/manage/vo/TInventoryVO.java
new file mode 100644
index 0000000..8421b57
--- /dev/null
+++ b/manage/src/main/java/com/jilongda/manage/vo/TInventoryVO.java
@@ -0,0 +1,14 @@
+package com.jilongda.manage.vo;
+
+import com.jilongda.manage.model.TFrameGoods;
+import com.jilongda.manage.model.TInventory;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "盘点VO")
+public class TInventoryVO extends TInventory {
+    @ApiModelProperty(value = "店铺名称")
+    private String store;
+}
diff --git a/manage/src/main/java/com/jilongda/manage/vo/TLensGoodsDetailVO.java b/manage/src/main/java/com/jilongda/manage/vo/TLensGoodsDetailVO.java
new file mode 100644
index 0000000..85704fa
--- /dev/null
+++ b/manage/src/main/java/com/jilongda/manage/vo/TLensGoodsDetailVO.java
@@ -0,0 +1,21 @@
+package com.jilongda.manage.vo;
+
+import com.jilongda.manage.model.TLensGoods;
+import com.jilongda.manage.model.TLensWarehousingDetail;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel(value = "镜片库存详情VO")
+public class TLensGoodsDetailVO{
+    @ApiModelProperty(value = "品牌名称+系列名称+球/飞球+折射率")
+    private String title;
+    @ApiModelProperty(value = "门店名称")
+    private String storeName;
+    @ApiModelProperty(value = "库存数据")
+    private List<TLensWarehousingDetail> list;
+
+}
diff --git a/manage/src/main/java/com/jilongda/manage/vo/TLensGoodsVO.java b/manage/src/main/java/com/jilongda/manage/vo/TLensGoodsVO.java
new file mode 100644
index 0000000..8d80a6f
--- /dev/null
+++ b/manage/src/main/java/com/jilongda/manage/vo/TLensGoodsVO.java
@@ -0,0 +1,27 @@
+package com.jilongda.manage.vo;
+
+import com.jilongda.manage.model.TFrameGoods;
+import com.jilongda.manage.model.TLensGoods;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "镜片库存VO")
+public class TLensGoodsVO extends TLensGoods {
+
+    @ApiModelProperty(value = "品牌名称")
+    private String brand;
+    @ApiModelProperty(value = "系列名称")
+    private String series;
+    @ApiModelProperty(value = "单价/片")
+    private String sale;
+    @ApiModelProperty(value = "成本/片")
+    private String cost;
+
+    @ApiModelProperty(value = "库存类型 1库存 2非库存")
+    private Integer type;
+    @ApiModelProperty(value = "是否低库存")
+    private Integer isWarning;
+
+}
diff --git a/manage/src/main/java/com/jilongda/manage/vo/TLensSeriesVO.java b/manage/src/main/java/com/jilongda/manage/vo/TLensSeriesVO.java
index a2654fe..d81cd18 100644
--- a/manage/src/main/java/com/jilongda/manage/vo/TLensSeriesVO.java
+++ b/manage/src/main/java/com/jilongda/manage/vo/TLensSeriesVO.java
@@ -16,5 +16,7 @@
     private String typeName;
     @ApiModelProperty(value = "折射率")
     private String refractiveIndex;
+    @ApiModelProperty(value = "供应商名称")
+    private String supplier;
 
 }
diff --git a/manage/src/main/java/com/jilongda/manage/vo/TWarehousingLensVO.java b/manage/src/main/java/com/jilongda/manage/vo/TWarehousingLensVO.java
index 208014c..42acded 100644
--- a/manage/src/main/java/com/jilongda/manage/vo/TWarehousingLensVO.java
+++ b/manage/src/main/java/com/jilongda/manage/vo/TWarehousingLensVO.java
@@ -10,11 +10,13 @@
 import java.util.List;
 
 @Data
-@ApiModel(value = "镜架/镜片出库入库VO")
+@ApiModel(value = "镜片出库入库VO")
 public class TWarehousingLensVO extends TWarehousing {
 
     @ApiModelProperty(value = "出库/入库合计数量")
     private Integer totalNum=0;
+    @ApiModelProperty(value = "门店名称")
+    private String storeName;
 
     @ApiModelProperty(value = "出库/入库明细")
     private List<TLensWarehousingDetail> lensWarehousingDetails;
diff --git a/manage/src/main/resources/mapping/TAppUserMapper.xml b/manage/src/main/resources/mapping/TAppUserMapper.xml
index 0d5dd6b..fe615ff 100644
--- a/manage/src/main/resources/mapping/TAppUserMapper.xml
+++ b/manage/src/main/resources/mapping/TAppUserMapper.xml
@@ -22,5 +22,24 @@
     <sql id="Base_Column_List">
         id, name, phone, realName, age, gender, registerTime, createTime, updateTime, createBy, updateBy, isDelete
     </sql>
+    <select id="pageList" resultType="com.jilongda.manage.vo.TAppUserVO">
+        select * from
+            t_app_user
+        where 1=1
+        <if test="query.name != null and query.name != ''">
+            and name like concat('%',#{query.name},'%')
+        </if>
+        <if test="query.phone != null and query.phone != ''">
+            and phone like concat('%',#{query.phone},'%')
+        </if>
+        <if test="query.realName != null and query.realName != ''">
+            and realName like concat('%',#{query.realName},'%')
+        </if>
+          <if test="query.startTime != null and query.startTime != ''">
+              and (createTime between #{query.startTime} and #{query.endTime})
+        </if>
+        and isDelete =  ${@com.jilongda.common.enums.DisabledEnum@NO.getCode()}
+
+    </select>
 
 </mapper>
diff --git a/manage/src/main/resources/mapping/TCouponMapper.xml b/manage/src/main/resources/mapping/TCouponMapper.xml
index 65ca5d7..47faa83 100644
--- a/manage/src/main/resources/mapping/TCouponMapper.xml
+++ b/manage/src/main/resources/mapping/TCouponMapper.xml
@@ -23,5 +23,19 @@
     <sql id="Base_Column_List">
         id, name, type, amount, storeId, time, amountCondition, createTime, updateTime, createBy, updateBy, isDelete, grantStatus
     </sql>
+    <select id="pageList" resultType="com.jilongda.manage.vo.TCouponVO">
+        select t1.* from
+            t_coupon t1
+        where 1=1
+        <if test="query.name != null and query.name != ''">
+            and t1.name like concat('%',#{query.name},'%')
+        </if>
+        <if test="query.type != null and query.type != ''">
+            and t1.type =#{query.type}
+        </if>
+        <if test="query.grantStatus != null and query.grantStatus != ''">
+            and t1.grantStatus =#{query.grantStatus}
+        </if>
+    </select>
 
 </mapper>
diff --git a/manage/src/main/resources/mapping/TCouponReceiveMapper.xml b/manage/src/main/resources/mapping/TCouponReceiveMapper.xml
index 1962194..b6e84ef 100644
--- a/manage/src/main/resources/mapping/TCouponReceiveMapper.xml
+++ b/manage/src/main/resources/mapping/TCouponReceiveMapper.xml
@@ -24,5 +24,12 @@
     <sql id="Base_Column_List">
         id, couponId, userId, type, amount, storeId, endTime, amountCondition, status, createTime, updateTime, createBy, updateBy, isDelete
     </sql>
+    <select id="pageList" resultType="com.jilongda.manage.vo.TAppUserCouponVO">
+        select t1.* ,t2.name as couponName from
+            t_coupon_receive t1
+        left join t_coupon t2 on t1.couponId = t2.id
+        where t1.userId = #{query.id}
+        and t1.isDelete =  ${@com.jilongda.common.enums.DisabledEnum@NO.getCode()}
+    </select>
 
 </mapper>
diff --git a/manage/src/main/resources/mapping/TFrameGoods.xml b/manage/src/main/resources/mapping/TFrameGoods.xml
new file mode 100644
index 0000000..c2957ae
--- /dev/null
+++ b/manage/src/main/resources/mapping/TFrameGoods.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jilongda.manage.mapper.TFrameGoodsMapper">
+
+
+    <select id="lensReceiptList" resultType="com.jilongda.manage.vo.TFrameGoodsVO">
+        select t1.*,t2.name as model,t5.name as supplier,t3.name as material,t4.name as store,
+               t2.sale as sale,t2.cost as cost,t6.name as brand,t7.frameThreshold
+        from
+            t_frame_goods t1
+        left join t_model t2 on t1.modelId=t2.id
+        left join t_material t3 on t2.materialId = t3.id
+        left join t_store t4 on t1.storeId = t4.id
+        left join t_supplier t5 on t2.supplierId = t5.id
+        left join t_brand t6 on t2.brandId=t6.id
+        left join sec_setting t7 on 1=1
+        where 1=1
+        <if test="query.brandId != null ">
+            and t2.brandId = #{query.brandId}
+        </if>
+        <if test="query.supplierId != null ">
+            and t2.supplierId = #{query.supplierId}
+        </if>
+        <if test="query.color != null and query.color != ''">
+            and t1.color = #{query.color}
+        </if>
+        <if test="query.storeId != null ">
+            and t1.storeId = #{query.storeId}
+        </if>
+        <if test="query.model != null and query.model != ''">
+            and t2.name = #{query.model}
+        </if>
+        <if test="query.materialId != null ">
+            and t2.materialId = #{query.materialId}
+        </if>
+        <if test="query.status != null ">
+            and t1.status = #{query.status}
+        </if>
+        <if test="query.isWarning != null and query.isWarning = 1">
+            and t1.total &lt; t7.frameThreshold
+        </if>
+        <if test="query.isWarning != null and query.isWarning = 2">
+            and t1.total >= t7.frameThreshold
+        </if>
+        <if test="query.startCount != null and query.endCount != null">
+            and t1.total between #{query.startCount} and #{query.endCount}
+        </if>
+        and t1.isDelete =  ${@com.jilongda.common.enums.DisabledEnum@NO.getCode()}
+
+        order by t1.id
+    </select>
+</mapper>
diff --git a/manage/src/main/resources/mapping/TInventoryMapper.xml b/manage/src/main/resources/mapping/TInventoryMapper.xml
index 4654405..07fe3d3 100644
--- a/manage/src/main/resources/mapping/TInventoryMapper.xml
+++ b/manage/src/main/resources/mapping/TInventoryMapper.xml
@@ -20,5 +20,28 @@
     <sql id="Base_Column_List">
         id, status, type, storeId, remark, createTime, updateTime, createBy, updateBy, isDelete
     </sql>
+    <select id="pageList" resultType="com.jilongda.manage.vo.TInventoryVO">
+        select t1.*,t2.name as store from
+            t_inventory t1
+                    left join t_store t2 on t1.storeId = t2.id
+        where 1=1
+        <if test="query.status != null ">
+            and t1.status = #{query.status}
+        </if>
+          <if test="query.createBy != null ">
+            and t1.createBy = #{query.createBy}
+        </if>
+        <if test="query.type != null ">
+            and t1.type = #{query.type}
+        </if>
+        <if test="query.storeId != null ">
+            and t1.storeId = #{query.storeId}
+        </if>
+        <if test="query.startTime != null and query.startTime != ''">
+            and t1.createTime between #{query.startTime} and #{query.endTime}
+        </if>
+        and t1.isDelete =  ${@com.jilongda.common.enums.DisabledEnum@NO.getCode()}
+
+    </select>
 
 </mapper>
diff --git a/manage/src/main/resources/mapping/TLensGoods.xml b/manage/src/main/resources/mapping/TLensGoods.xml
new file mode 100644
index 0000000..3ee1be9
--- /dev/null
+++ b/manage/src/main/resources/mapping/TLensGoods.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jilongda.manage.mapper.TLensGoodsMapper">
+
+
+    <select id="lensReceiptList" resultType="com.jilongda.manage.vo.TLensGoodsVO">
+        select t1.*,t2.name as series,t4.name as store,
+        t2.sale as sale,t2.cost as cost,t6.name as brand,t7.frameThreshold
+        from
+        t_lens_goods t1
+        left join t_lens_series t2 on t1.seriesId=t2.id
+        left join t_store t4 on t1.storeId = t4.id
+        left join t_brand t6 on t2.brandId=t6.id
+        left join sec_setting t7 on 1=1
+        where 1=1
+        <if test="query.brandId != null ">
+            and t2.brandId = #{query.brandId}
+        </if>
+        <if test="query.seriesId != null ">
+            and t2.id = #{query.seriesId}
+        </if>
+        <if test="query.lensType != null ">
+            and t1.lensType = #{query.lensType}
+        </if>
+        <if test="query.storeId != null ">
+            and t1.storeId = #{query.storeId}
+        </if>
+        <if test="query.refractiveIndex != null and query.refractiveIndex != ''">
+            and t1.refractiveIndex = #{query.refractiveIndex}
+        </if>
+        <if test="query.type != null ">
+            and t2.type = #{query.type}
+        </if>
+        <if test="query.isWarning != null and query.isWarning = 1">
+            and t1.total &lt; t7.lensThreshold
+        </if>
+        <if test="query.isWarning != null and query.isWarning = 2">
+            and t1.total >= t7.lensThreshold
+        </if>
+        and t1.isDelete =  ${@com.jilongda.common.enums.DisabledEnum@NO.getCode()}
+
+        order by t1.id
+    </select>
+</mapper>
diff --git a/manage/src/main/resources/mapping/TLineUpMapper.xml b/manage/src/main/resources/mapping/TLineUpMapper.xml
index 0a2778c..3f2d9ef 100644
--- a/manage/src/main/resources/mapping/TLineUpMapper.xml
+++ b/manage/src/main/resources/mapping/TLineUpMapper.xml
@@ -40,6 +40,8 @@
             <if test="query.storeId != null">
                 and s.id = #{query.storeId}
             </if>
+            and t1.isDelete =  ${@com.jilongda.common.enums.DisabledEnum@NO.getCode()}
+
         </where>
         order by t.createTime desc
     </select>
diff --git a/manage/src/main/resources/mapping/TOptometristMapper.xml b/manage/src/main/resources/mapping/TOptometristMapper.xml
index 8381406..cc7051e 100644
--- a/manage/src/main/resources/mapping/TOptometristMapper.xml
+++ b/manage/src/main/resources/mapping/TOptometristMapper.xml
@@ -37,6 +37,9 @@
             <if test="query.name != null and query.name != ''">
                 and t2.`name` like  concat('%',#{query.name},'%')
             </if>
+            <if test="query.userId != null and query.userId != ''">
+                and t2.id like  concat('%',#{query.userId},'%')
+            </if>
             <if test="query.realName != null and query.realName != ''">
                 and t1.`name` like  concat('%',#{query.realName},'%')
             </if>
diff --git a/optometry/src/main/java/com/jilongda/optometry/model/TAppUser.java b/optometry/src/main/java/com/jilongda/optometry/model/TAppUser.java
index 3dd6328..caedc88 100644
--- a/optometry/src/main/java/com/jilongda/optometry/model/TAppUser.java
+++ b/optometry/src/main/java/com/jilongda/optometry/model/TAppUser.java
@@ -53,9 +53,6 @@
     @TableField("gender")
     private Integer gender;
 
-    @ApiModelProperty(value = "注册时间")
-    @TableField("registerTime")
-    private LocalDateTime registerTime;
 
     @ApiModelProperty(value = "创建时间")
     @TableField("createTime")

--
Gitblit v1.7.1