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") 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; 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> 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); } } 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; } } 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); } } 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>()); } } 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()); } /** manage/src/main/java/com/jilongda/manage/dto/FrameInventoryDTO.java
New file @@ -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; } manage/src/main/java/com/jilongda/manage/dto/GetCurrentByParam.java
New file @@ -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; } manage/src/main/java/com/jilongda/manage/dto/GetCurrentByParamLens.java
New file @@ -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; } 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); } 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); } 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); } manage/src/main/java/com/jilongda/manage/mapper/TFrameGoodsMapper.java
New file @@ -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); } 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); } manage/src/main/java/com/jilongda/manage/mapper/TLensGoodsMapper.java
New file @@ -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); } 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; } 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; } 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") manage/src/main/java/com/jilongda/manage/model/TFrameGoods.java
New file @@ -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; } 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; 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; manage/src/main/java/com/jilongda/manage/model/TLensGoods.java
New file @@ -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; } manage/src/main/java/com/jilongda/manage/query/TAppUserCouponQuery.java
New file @@ -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; } manage/src/main/java/com/jilongda/manage/query/TAppUserQuery.java
New file @@ -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; } manage/src/main/java/com/jilongda/manage/query/TCouponQuery.java
New file @@ -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; } manage/src/main/java/com/jilongda/manage/query/TFrameGoodsQuery.java
New file @@ -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; } manage/src/main/java/com/jilongda/manage/query/TInventoryQuery.java
New file @@ -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; } manage/src/main/java/com/jilongda/manage/query/TLensGoodsQuery.java
New file @@ -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; } 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 = "结束时间 前端忽略") 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); } 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); } 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); } manage/src/main/java/com/jilongda/manage/service/TFrameGoodsService.java
New file @@ -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); } 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); } manage/src/main/java/com/jilongda/manage/service/TLensGoodsService.java
New file @@ -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); } 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; } } 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; } } 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; } } manage/src/main/java/com/jilongda/manage/service/impl/TFrameGoodsServiceImpl.java
New file @@ -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; } } 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; } } manage/src/main/java/com/jilongda/manage/service/impl/TLensGoodsServiceImpl.java
New file @@ -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; } } 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; } manage/src/main/java/com/jilongda/manage/utils/QRCodeUtil.java
New file @@ -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; } } manage/src/main/java/com/jilongda/manage/vo/TAppUserCouponVO.java
New file @@ -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; } manage/src/main/java/com/jilongda/manage/vo/TAppUserVO.java
New file @@ -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; } manage/src/main/java/com/jilongda/manage/vo/TCouponInfoVO.java
New file @@ -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; } manage/src/main/java/com/jilongda/manage/vo/TCouponVO.java
New file @@ -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; } manage/src/main/java/com/jilongda/manage/vo/TFrameGoodsVO.java
New file @@ -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; } manage/src/main/java/com/jilongda/manage/vo/TInventoryInfoVO.java
New file @@ -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; } manage/src/main/java/com/jilongda/manage/vo/TInventoryVO.java
New file @@ -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; } manage/src/main/java/com/jilongda/manage/vo/TLensGoodsDetailVO.java
New file @@ -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; } manage/src/main/java/com/jilongda/manage/vo/TLensGoodsVO.java
New file @@ -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; } 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; } 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; 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> 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> 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> manage/src/main/resources/mapping/TFrameGoods.xml
New file @@ -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 < 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> 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> manage/src/main/resources/mapping/TLensGoods.xml
New file @@ -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 < 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> 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> 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> 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")