applet/src/main/java/com/jilongda/applet/model/TStore.java
@@ -78,4 +78,5 @@ private String img; } applet/src/main/java/com/jilongda/applet/vo/TStoreVO.java
@@ -1,6 +1,12 @@ package com.jilongda.applet.vo; import com.baomidou.mybatisplus.annotation.TableField; import com.jilongda.applet.model.TStore; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class TStoreVO extends TStore { @ApiModelProperty(value = "距离") private String distance; } common/src/main/java/com/jilongda/common/basic/Constant.java
@@ -132,6 +132,7 @@ ,"/pageResetPassword" ,"/t-goods/getConfigById" ,"/sendPassCode" ,"/t-store/pageList" }; /** * 文档相关资源路径 manage/src/main/java/com/jilongda/manage/controller/TCouponController.java
@@ -72,6 +72,7 @@ @ApiOperation(value = "添加优惠券") @PostMapping(value = "/add") public ApiResult<String> add( @RequestBody TCoupon dto) throws Exception { if (dto.getType()==1||dto.getType()==4)dto.setGrantStatus(1); couponService.save(dto); switch (dto.getType()){ case 2: @@ -124,6 +125,14 @@ } return ApiResult.success(); } @ApiOperation(value = "暂停发放 只有type为1和4的时候") @PostMapping(value = "/stop") public ApiResult stop(Integer id) throws Exception { TCoupon byId = couponService.getById(id); byId.setGrantStatus(2); couponService.updateById(byId); return ApiResult.success(); } @ApiOperation(value = "修改优惠券") @PostMapping(value = "/update") public ApiResult<String> update( @RequestBody TCoupon dto) throws Exception { manage/src/main/java/com/jilongda/manage/controller/TOptometristController.java
@@ -45,7 +45,11 @@ .eq(TOptometrist::getStoreId,storeId)); return ApiResult.success(optometristVOPageInfo); } @ApiOperation(value = "验光师详情") @GetMapping(value = "/detail") public ApiResult<TOptometrist> detail(Integer id) { return ApiResult.success(optometristService.getById(id)); } @ApiOperation(value = "验光师添加") @PostMapping(value = "/add") public ApiResult<String> add(@RequestBody TOptometrist dto) { manage/src/main/java/com/jilongda/manage/controller/TTicketController.java
@@ -11,6 +11,7 @@ import com.jilongda.manage.vo.TTicketVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.models.auth.In; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -46,7 +47,11 @@ tTicketService.save(dto); return ApiResult.success(); } @ApiOperation(value = "小票机详情") @GetMapping(value = "/detail") public ApiResult<TTicket> detail(Integer id) { return ApiResult.success(tTicketService.getById(id)); } @ApiOperation(value = "小票机编辑") @PostMapping(value = "/update") public ApiResult<String> update(@RequestBody TTicket dto) { manage/src/main/java/com/jilongda/manage/controller/TWarehousingController.java
@@ -68,7 +68,7 @@ /** * 通过型号查询色号列表 */ @ApiOperation(value = "镜架-根据品牌id、型号名称、色号名称查询当前库存") @ApiOperation(value = "镜架-根据品牌id、型号名称、色号名称、材质id查询当前库存") @PostMapping(value = "/getCurrentByParamFrame") public ApiResult<Integer> getCurrentByParamFrame(@RequestBody GetCurrentByParam getCurrentByParam) { // 根据型号名称 查询型号列表ids @@ -85,7 +85,7 @@ } return ApiResult.success(0); } @ApiOperation(value = "镜片-根据品牌id、型号名称、色号名称、材质id查询当前库存") @ApiOperation(value = "镜片-根据系列id、球/非球、品牌id、折射率、ballMirror、columnMirror查询当前库存") @PostMapping(value = "/getCurrentByParamLens") public ApiResult<Integer> getCurrentByParamLens(@RequestBody GetCurrentByParamLens dto) { TLensGoods one = lensGoodsService.lambdaQuery().in(TLensGoods::getSeriesId, dto.getSeriesId()) @@ -118,6 +118,7 @@ }else { byId.setStatus(1); } lensGoodsService.updateById(byId); return ApiResult.success(); } @ApiOperation(value = "镜架库存分页列表-启用禁用") @@ -129,6 +130,7 @@ }else { byId.setStatus(1); } frameGoodsService.updateById(byId); return ApiResult.success(); } /** manage/src/main/java/com/jilongda/manage/model/TTicket.java
@@ -35,7 +35,7 @@ @ApiModelProperty(value = "小票机名称") @TableField("name") private Integer name; private String name; @ApiModelProperty(value = "类型 1验光单 2加工单") @TableField("type") manage/src/main/java/com/jilongda/manage/service/impl/TOptometristServiceImpl.java
@@ -3,9 +3,11 @@ import com.jilongda.common.basic.PageInfo; import com.jilongda.manage.mapper.TOptometryMapper; import com.jilongda.common.basic.PageInfo; import com.jilongda.manage.mapper.TStoreMapper; import com.jilongda.manage.model.SecFeeItems; import com.jilongda.manage.model.TOptometrist; import com.jilongda.manage.mapper.TOptometristMapper; import com.jilongda.manage.model.TStore; import com.jilongda.manage.query.TOptometryQuery; import com.jilongda.manage.query.TOptometristQuery; import com.jilongda.manage.service.TOptometristService; @@ -47,10 +49,16 @@ return pageInfo; } @Autowired private TStoreMapper storeMapper; @Override public PageInfo<TOptometristVO> pageList1(TOptometristQuery query) { PageInfo<TOptometristVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List<TOptometristVO> list = this.baseMapper.pageList1(query,pageInfo); for (TOptometristVO tOptometristVO : list) { TStore storeVO = storeMapper.selectById(tOptometristVO.getStoreId()); if (storeVO!=null)tOptometristVO.setStoreName(storeVO.getName()); } pageInfo.setRecords(list); return pageInfo; } manage/src/main/java/com/jilongda/manage/service/impl/TTicketServiceImpl.java
@@ -44,7 +44,7 @@ for (TTicketVO tTicketVO : list) { TStore tStore = storeMapper.selectById(tTicketVO.getStoreId()); if(Objects.nonNull(tStore)){ tTicketVO.setStoreName(tTicketVO.getStoreName()); tTicketVO.setStoreName(tStore.getName()); } } pageInfo.setRecords(list); manage/src/main/resources/mapping/TStoreMapper.xml
@@ -25,7 +25,7 @@ <!-- 通用查询结果列 --> <sql id="Base_Column_List"> id, `name`, province, provinceCode, city, cityCode, area, areaCode, address, createTime, updateTime, createBy, updateBy, isDelete, lon, lat, img id, `name`, province, provinceCode, city, cityCode, area, areaCode, address, createTime, updateTime, createBy, updateBy, isDelete, lon, lat, img,status </sql> <select id="pageList" resultType="com.jilongda.manage.vo.TStoreVO"> select <include refid="Base_Column_List"></include> manage/src/main/resources/mapping/TTicketMapper.xml
@@ -20,7 +20,7 @@ <!-- 通用查询结果列 --> <sql id="Base_Column_List"> id, `name`, `type`, storeId, cloudId, secret, createTime, updateTime, createBy, updateBy, isDelete id, `name`, `type`, storeId, cloudId, secret, createTime, updateTime, createBy, updateBy, isDelete,status </sql> <select id="pageList" resultType="com.jilongda.manage.vo.TTicketVO"> select <include refid="Base_Column_List"></include> optometrist/src/main/java/com/jilongda/optometrist/controller/TOptometristController.java
@@ -6,18 +6,24 @@ import com.jilongda.common.basic.PageInfo; import com.jilongda.optometrist.authority.model.SecUser; import com.jilongda.optometrist.authority.service.SecUserService; import com.jilongda.optometrist.model.TOptometrist; import com.jilongda.optometrist.model.*; import com.jilongda.optometrist.query.TOptometristQuery; import com.jilongda.optometrist.query.TicketQuery; import com.jilongda.optometrist.service.TLineUpService; import com.jilongda.optometrist.service.TOptometristService; import com.jilongda.optometrist.service.*; import com.jilongda.optometrist.utils.LoginInfoUtil; import com.jilongda.optometrist.vo.TAddOptometryVO; import com.jilongda.optometrist.vo.TLineUpDetailVO; import com.jilongda.optometrist.vo.TOptometristVO; import com.jilongda.optometrist.vo.TOptometryDetailVO; import com.sun.org.apache.bcel.internal.generic.NEW; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; /** @@ -40,26 +46,135 @@ private LoginInfoUtil loginInfoUtil; @Autowired private SecUserService secUserService; // @ApiOperation(value = "首页") // @PostMapping(value = "/pageList") // public ApiResult<TOptometristVO> pageList() { // Long userId = loginInfoUtil.getUserId(); // // return ApiResult.success(); // } @Autowired private TStoreService storeService; @Autowired private TOptometryService optometryService; @Autowired private TAppUserService appUserService; @Autowired private TOrderService orderService; @Autowired private TOptometryDetailService optometryDetailService; @ApiOperation(value = "首页") @PostMapping(value = "/index") public ApiResult<TOptometristVO> index() { TOptometristVO tOptometristVO = new TOptometristVO(); @ApiOperation(value = "通过门店id查询验光师列表") @PostMapping(value = "/queryListByStoreId") public ApiResult<List<TOptometrist>> queryListByStoreId(@RequestParam Integer storeId) { List<TOptometrist> optometristVOPageInfo = optometristService.list(Wrappers.lambdaQuery(TOptometrist.class) .eq(TOptometrist::getStoreId,storeId)); return ApiResult.success(optometristVOPageInfo); Long userId = loginInfoUtil.getUserId(); SecUser byId = secUserService.getById(userId); TStore byId1 = storeService.getById(byId.getStoreId()); tOptometristVO.setStoreName(byId1.getName()); int size = optometryService.lambdaQuery().eq(TOptometry::getOptometristId, userId) .eq(TOptometry::getStatus, 3).list().size(); tOptometristVO.setOptometryCount(size); // 查询今日的排号列表 List<TLineUp> list = tLineUpService.lambdaQuery().eq(TLineUp::getStoreId, byId.getStoreId()) .ne(TLineUp::getStatus, 3) .ne(TLineUp::getStatus, 5).list(); for (TLineUp tLineUp : list) { LocalDateTime now = LocalDateTime.now(); LocalDateTime createTime = tLineUp.getCreateTime(); long minutesDifference = createTime.until(now, java.time.temporal.ChronoUnit.MINUTES); if (minutesDifference < 0) { minutesDifference = 0; } tLineUp.setWaitTime((int) minutesDifference); } tOptometristVO.setList(list); return ApiResult.success(tOptometristVO); } @ApiOperation(value = "验光师添加") @ApiOperation(value = "预约详情") @GetMapping(value = "/getLineUpDetail") public ApiResult<TLineUpDetailVO> getLineUpDetail(Integer id) { TLineUpDetailVO tLineUpDetailVO = new TLineUpDetailVO(); TLineUp byId = tLineUpService.getById(id); BeanUtils.copyProperties(byId, tLineUpDetailVO); LocalDateTime now = LocalDateTime.now(); LocalDateTime createTime = byId.getCreateTime(); long minutesDifference = createTime.until(now, java.time.temporal.ChronoUnit.MINUTES); if (minutesDifference < 0) { minutesDifference = 0; } tLineUpDetailVO.setWaitTime((int) minutesDifference); if (byId.getUserId()!=null){ TAppUser byId1 = appUserService.getById(byId.getUserId()); if (byId1!=null){ tLineUpDetailVO.setName(byId1.getName()); tLineUpDetailVO.setPhone(byId1.getPhone()); tLineUpDetailVO.setAvatar(byId1.getAvatar()); } // 查询消费次数,验光次数 long l = optometryService.count(Wrappers.<TOptometry>lambdaQuery() .eq(TOptometry::getUserId, byId.getUserId()) .eq(TOptometry::getStatus,3)); tLineUpDetailVO.setOptometryCount((int) l); long count = orderService.count(Wrappers.<TOrder>lambdaQuery() .eq(TOrder::getUserId, byId.getUserId())); tLineUpDetailVO.setSaleCount((int) count); } return ApiResult.success(tLineUpDetailVO); } @ApiOperation(value = "开始验光") @GetMapping(value = "/startOptometry") public ApiResult startOptometry(Integer id) { Long userId = loginInfoUtil.getUserId(); List<TLineUp> list = tLineUpService.lambdaQuery().eq(TLineUp::getStatus, 2) .eq(TLineUp::getOptometristId, userId).list(); if (!list.isEmpty())return ApiResult.failed("当前还有未结束的验光单"); TLineUp lineUp = tLineUpService.getById(id); lineUp.setStatus(2); tLineUpService.updateById(lineUp); return ApiResult.success(); } @ApiOperation(value = "取消排号") @GetMapping(value = "/cancelLineUp") public ApiResult cancelLineUp(Integer id) { TLineUp lineUp = tLineUpService.getById(id); lineUp.setStatus(5); tLineUpService.updateById(lineUp); return ApiResult.success(); } @ApiOperation(value = "填写验光信息完成") @PostMapping(value = "/add") public ApiResult<String> add(@RequestBody TOptometrist dto) { optometristService.save(dto); public ApiResult<String> add(@RequestBody TAddOptometryVO dto) { TLineUp byId = tLineUpService.getById(dto.getId()); TAppUser byId1 = appUserService.getById(byId.getUserId()); TOptometry tOptometry = new TOptometry(); tOptometry.setUserId(byId.getUserId()); tOptometry.setAge(byId.getAge()); tOptometry.setGender(byId.getGender()); if (byId1!=null){ tOptometry.setPhone(byId1.getPhone()); } Long userId = loginInfoUtil.getUserId(); SecUser byId2 = secUserService.getById(userId); tOptometry.setRealName(byId.getUserName()); tOptometry.setOptometristId(userId.intValue()); tOptometry.setStoreId(byId2.getStoreId()); optometryService.save(tOptometry); List<TOptometryDetail> tOptometryDetails = new ArrayList<>(); for (TOptometryDetailVO optometryDetailVO : dto.getOptometryDetailVOS()) { TOptometryDetail tOptometryDetail = new TOptometryDetail(); tOptometryDetail.setType(optometryDetailVO.getType()); tOptometryDetail.setOptometryId(tOptometry.getId()); tOptometryDetail.setBallMirror(optometryDetailVO.getBallMirror()); tOptometryDetail.setColumnMirror(optometryDetailVO.getColumnMirror()); tOptometryDetail.setAxis(optometryDetailVO.getAxis()); tOptometryDetail.setAdd(optometryDetailVO.getAdd()); tOptometryDetail.setPupilHeight(optometryDetailVO.getPupilHeight()); tOptometryDetail.setPupilDistance(optometryDetailVO.getPupilDistance()); tOptometryDetail.setCorrect(optometryDetailVO.getCorrect()); tOptometryDetail.setStoreId(byId2.getStoreId()); tOptometryDetail.setStatus(optometryDetailVO.getStatus()); tOptometryDetails.add(tOptometryDetail); } optometryDetailService.saveBatch(tOptometryDetails); // 验光完成 byId.setStatus(3); tLineUpService.updateById(byId); return ApiResult.success(); } optometrist/src/main/java/com/jilongda/optometrist/model/TLineUp.java
@@ -11,6 +11,9 @@ import lombok.Data; import lombok.EqualsAndHashCode; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; /** * <p> * 排号管理 @@ -34,15 +37,9 @@ @ApiModelProperty(value = "编号") @TableField("code") private String code; @ApiModelProperty(value = "微信名称") @ApiModelProperty(value = "已等待时间xx分钟") @TableField(exist = false) private String name; @ApiModelProperty(value = "手机号") @TableField(exist = false) private String phone; @ApiModelProperty(value = "验光师") @TableField(exist = false) private String optometrist; private Integer waitTime; @ApiModelProperty(value = "用户id") @TableField("userId") @@ -59,5 +56,13 @@ @ApiModelProperty(value = "状态1排队中2验光中3已完成4已过号5已取消") @TableField("status") private Integer status; @ApiModelProperty(value = "姓名") @TableField("userName") private String userName; @ApiModelProperty(value = "1=男 2=女") @TableField("gender") private Integer gender; @ApiModelProperty(value = "年龄") @TableField("age") private Integer age; } optometrist/src/main/java/com/jilongda/optometrist/security/AuthenticationProvider.java
@@ -3,6 +3,7 @@ import com.jilongda.optometrist.security.SecurityUserDetails; import com.jilongda.optometrist.security.SysUserDetailsService; import lombok.extern.slf4j.Slf4j; import org.springframework.security.authentication.*; import org.springframework.security.authentication.dao.DaoAuthenticationProvider; import org.springframework.security.core.Authentication; import org.springframework.security.core.AuthenticationException; optometrist/src/main/java/com/jilongda/optometrist/utils/FileUtils.java
@@ -1,6 +1,7 @@ package com.jilongda.optometrist.utils; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import org.apache.http.*; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.HttpClients; optometrist/src/main/java/com/jilongda/optometrist/vo/TAddOptometryVO.java
New file @@ -0,0 +1,18 @@ package com.jilongda.optometrist.vo; import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; @Data @ApiModel(value = "添加验光单VO") public class TAddOptometryVO { @ApiModelProperty(value = "预约id") private Integer id; @ApiModelProperty(value = "验光单详情") private List<TOptometryDetailVO> optometryDetailVOS; } optometrist/src/main/java/com/jilongda/optometrist/vo/TLineUpDetailVO.java
New file @@ -0,0 +1,32 @@ package com.jilongda.optometrist.vo; import com.jilongda.optometrist.model.TLineUp; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel(value = "预约详情VO") public class TLineUpDetailVO extends TLineUp { @ApiModelProperty(value = "已等待xx分钟") private Integer waitTime; @ApiModelProperty(value = "客户信息-微信名称") private String name; @ApiModelProperty(value = "客户信息-微信绑定电话") private String phone; @ApiModelProperty(value = "客户信息-微信头像") private String avatar; @ApiModelProperty(value = "验光信息-姓名") private String realName; @ApiModelProperty(value = "验光信息-年龄") private Integer age; @ApiModelProperty(value = "验光信息-性别") private Integer gender; @ApiModelProperty(value = "客户信息-消费次数") private Integer saleCount; @ApiModelProperty(value = "客户信息-验光次数") private Integer optometryCount; } optometrist/src/main/java/com/jilongda/optometrist/vo/TLineUpVO.java
New file @@ -0,0 +1,17 @@ package com.jilongda.optometrist.vo; import com.jilongda.optometrist.model.TLineUp; import com.jilongda.optometrist.model.TOptometrist; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel(value = "首页VO") public class TLineUpVO extends TLineUp { @ApiModelProperty(value = "已等待xx分钟") private Integer waitTime; } optometrist/src/main/java/com/jilongda/optometrist/vo/TOptometristVO.java
@@ -1,15 +1,21 @@ package com.jilongda.optometrist.vo; import com.jilongda.optometrist.model.TLineUp; import com.jilongda.optometrist.model.TOptometrist; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; @Data @ApiModel(value = "验光师VO") @ApiModel(value = "首页VO") public class TOptometristVO extends TOptometrist { @ApiModelProperty(value = "门店名称") private String storeName; @ApiModelProperty(value = "今日已验光数量") private Integer optometryCount; @ApiModelProperty(value = "当前预约") private List<TLineUp> list; } optometrist/src/main/java/com/jilongda/optometrist/vo/TOptometryDetailVO.java
New file @@ -0,0 +1,43 @@ package com.jilongda.optometrist.vo; import com.baomidou.mybatisplus.annotation.TableField; import com.jilongda.optometrist.model.TLineUp; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel(value = "验光单详情") public class TOptometryDetailVO { @ApiModelProperty(value = "类型1配镜处方 2完全矫正 3旧镜信息") private Integer type; @ApiModelProperty(value = "球镜") private Double ballMirror; @ApiModelProperty(value = "柱镜") private Double columnMirror; @ApiModelProperty(value = "轴位") private String axis; @ApiModelProperty(value = "add") @TableField("add") private String add; @ApiModelProperty(value = "瞳高") private String pupilHeight; @ApiModelProperty(value = "瞳距") private String pupilDistance; @ApiModelProperty(value = "矫正") private String correct; @ApiModelProperty(value = "左眼右眼 1为L 2为R") @TableField("status") private Integer status; }