| | |
| | | import com.dsh.account.model.QueryDataFee; |
| | | import com.dsh.account.model.Student; |
| | | import com.dsh.account.model.StudentVo; |
| | | import com.dsh.account.model.updateTimeDto; |
| | | import com.dsh.account.service.*; |
| | | import com.dsh.account.util.ResultUtil; |
| | | import com.dsh.account.util.TokenUtil; |
| | |
| | | studentService.updateById(student); |
| | | |
| | | } |
| | | @ResponseBody |
| | | @PostMapping("/student/getById") |
| | | public Date getById(@RequestBody Integer tStudentId) { |
| | | return studentService.getById(tStudentId).getValidity(); |
| | | |
| | | } |
| | | @ResponseBody |
| | | @PostMapping("/student/update1") |
| | | public void update(@RequestBody updateTimeDto updateTimeDto) { |
| | | |
| | | TStudent student = new TStudent(); |
| | | student.setId(updateTimeDto.getTStudentId()); |
| | | student.setValidity(updateTimeDto.getDate()); |
| | | studentService.updateById(student); |
| | | } |
| | | |
| | | |
| | | @ResponseBody |
| | |
| | | private String storeImg; |
| | | |
| | | @ApiModelProperty(value = "门店距离当前位置") |
| | | private String distance; |
| | | private double distance; |
| | | |
| | | @ApiModelProperty(value = "门店名称") |
| | | private String storeName; |
New file |
| | |
| | | package com.dsh.account.model; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Data; |
| | | import lombok.NoArgsConstructor; |
| | | |
| | | import java.util.Date; |
| | | @Data |
| | | @AllArgsConstructor |
| | | @NoArgsConstructor |
| | | public class updateTimeDto { |
| | | @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
| | | private Date date; |
| | | private Integer tStudentId; |
| | | } |
| | |
| | | case 1: |
| | | coupon.setIntegral(BigDecimal.valueOf(dataVo.getRequiredPoints())); |
| | | break; |
| | | |
| | | case 2: |
| | | coupon.setIntegral(BigDecimal.valueOf(dataVo.getRequiredPoints())); |
| | | coupon.setCash(dataVo.getRequiredCash()); |
| | | break; |
| | | case 3: |
| | | coupon.setCash(dataVo.getRequiredCash()); |
| | | break; |
| | |
| | | @Autowired |
| | | private PointsMerchandiseStoreService pointsMerchandiseStoreService; |
| | | |
| | | |
| | | @Autowired |
| | | private CouponStoreService couponStoreService; |
| | | |
| | | @ResponseBody |
| | | @PostMapping("/base/pointMerchars/convertGoods") |
| | | public List<IntegralCommodity> getConvertibleGoods(@RequestBody Location location) throws Exception { |
| | |
| | | } |
| | | } |
| | | |
| | | List<CouponStore> storeId = couponStoreService.list(new QueryWrapper<CouponStore>().eq("storeId", s.getId())); |
| | | List<Integer> storeCoupons = new ArrayList<>(); |
| | | for (CouponStore couponStore : storeId) { |
| | | storeCoupons.add(couponStore.getCouponId()); |
| | | } |
| | | List<Coupon> list = couponService.list(new QueryWrapper<Coupon>().in("id", storeCoupons).eq("state", 1).gt("endTime", new Date()).last("ORDER BY insertTime desc")); |
| | | if (!list.isEmpty()){ |
| | | for (Coupon coupon : list) { |
| | | IntegralCommodity integralCommodity = new IntegralCommodity(); |
| | | integralCommodity.setCommodityId(coupon.getId()); |
| | | integralCommodity.setCommodityImg(coupon.getCover()); |
| | | integralCommodity.setCommodityName(coupon.getName()); |
| | | integralCommodity.setCommodityPrice(coupon.getIntegral()); |
| | | integralCommodity.setGoodsType(coupon.getType()); |
| | | // integralCommodity.setSort(coupon.getSort()); |
| | | commodity.add(integralCommodity); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | System.out.println(commodity); |
| | |
| | | import com.dsh.course.util.*; |
| | | import com.fasterxml.jackson.core.JsonProcessingException; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import com.obs.services.internal.ServiceException; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | | import io.swagger.annotations.ApiImplicitParams; |
| | |
| | | |
| | | @ResponseBody |
| | | @PostMapping("/coursePackagePayment/consumeCourse") |
| | | public ResultUtil consumeCourse(@RequestBody Integer coursePackagePaymentId) { |
| | | public Integer consumeCourse(@RequestBody Integer coursePackagePaymentId) { |
| | | CoursePackageOrderStudent coursePackageOrderStudent = orderStudentService.getById(coursePackagePaymentId); |
| | | |
| | | TCoursePackage coursePackage = coursePackageService.getById(coursePackageOrderStudent.getCoursePackageId()); |
| | | |
| | | if (coursePackageOrderStudent.getLaveClassHours()<coursePackage.getNeedNum()){ |
| | | return ResultUtil.error("当前学员课时数不足"); |
| | | return 1; |
| | | } |
| | | coursePackageOrderStudent.setLaveClassHours(coursePackageOrderStudent.getLaveClassHours()-coursePackage.getNeedNum()); |
| | | orderStudentService.updateById(coursePackageOrderStudent); |
| | |
| | | courseCounsum.setInsertTime(new Date()); |
| | | courseCounsum.setReason("补课"); |
| | | courseCounsumService.save(courseCounsum); |
| | | return ResultUtil.success("补课成功"); |
| | | return 2; |
| | | } |
| | | |
| | | |
| | |
| | | detailsListVo.setIsType(list4.get(0).getType()); |
| | | |
| | | for (CoursePackageStudent coursePackageStudent : list4) { |
| | | CoursePackageScheduling coursePackageScheduling = coursePackageSchedulingMapper.selectById(coursePackageStudent.getCoursePackageSchedulingId()); |
| | | if (coursePackageScheduling.getStatus()==4){ |
| | | detailsListVo.setIsType(3); |
| | | } |
| | | |
| | | Integer signInOrNot1 = coursePackageStudent.getSignInOrNot(); |
| | | detailsListVo.setType(1); |
| | | |
| | |
| | | detailsListVo.setType(3); |
| | | } |
| | | detailsListVo.setIsType(coursePackageStudent.getType()); |
| | | CoursePackageScheduling coursePackageScheduling = coursePackageSchedulingMapper.selectById(coursePackageStudent.getCoursePackageSchedulingId()); |
| | | Date classDate = coursePackageScheduling.getClassDate(); |
| | | Date endDate = coursePackageScheduling.getEndDate(); |
| | | SimpleDateFormat sdf = new SimpleDateFormat("HH:mm"); |
| | |
| | | System.out.println("==========getClassList===tStudentId====" + tStudentId); |
| | | List<ClassListDto> listDtos = studentService.getClassList(tStudentId); |
| | | for (ClassListDto dto : listDtos) { |
| | | if (dto.getClassType()!=2) { |
| | | dto.setHasClassHours(dto.getTotalClassHours() - dto.getLaveClassHours()); |
| | | } |
| | | } |
| | | System.out.println("======listDtos======" + listDtos); |
| | | return listDtos; |
| | | |
| | |
| | | void updateSignInOrNotById(@Param("id") Long id); |
| | | |
| | | |
| | | List<ClassListDto> getHoliList(@Param("tStudentId")Integer tStudentId); |
| | | } |
| | |
| | | String weekOfDate = DateTimeHelper.getWeekOfDate(new Date()); |
| | | // if (integerList.contains(weekOfDate)) { |
| | | String dat = simpleDateFormat.format(byId.getClassDate()) + " " + dateString1.substring(11); |
| | | String ed = simpleDateFormat.format(byId.getEndDate()) + " " + dateString2.substring(11); |
| | | |
| | | Date start = null; |
| | | Date end = null; |
| | | try { |
| | | start = format.parse(dat); |
| | | end = format.parse(ed); |
| | | } catch (ParseException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | |
| | | CancelledClasses cancelledClasses = cacMapper.selectOne(new QueryWrapper<CancelledClasses>() |
| | | .eq("coursePackageSchedulingId", byId.getId()).last("limit 1")); |
| | | // else { |
| | | // Date now = new Date(); |
| | | // if (now.after(byId.getClassDate()) && now.before(byId.getEndDate())) { |
| | | // recordVo.setStatus(2); |
| | | // } else { |
| | | // recordVo.setStatus(3); |
| | | // |
| | | // } |
| | | // } |
| | | |
| | | //已取消 |
| | | if (byId.getStatus() == 4) { |
| | | recordVo.setStatus(4); |
| | | } else if (coursePackageStudent.getSignInOrNot() == 2) { |
| | | //已请假 |
| | | recordVo.setStatus(5); |
| | | } else if (start.after(new Date())) { |
| | | //待上课 |
| | | recordVo.setStatus(1); |
| | | } |
| | | else { |
| | | CancelledClasses cancelledClasses = cacMapper.selectOne(new QueryWrapper<CancelledClasses>() |
| | | .eq("coursePackageSchedulingId", byId.getId()).last("limit 1")); |
| | | if (ToolUtil.isNotEmpty(cancelledClasses)) { |
| | | }else if (ToolUtil.isNotEmpty(cancelledClasses)) { |
| | | recordVo.setStatus(3); |
| | | // 消课 到课状态0 旷课 |
| | | if (coursePackageStudent.getSignInOrNot() == 0) { |
| | | recordVo.setStatus(6); |
| | | } |
| | | |
| | | } else { |
| | | Date now = new Date(); |
| | | if (now.after(byId.getClassDate()) && now.before(byId.getEndDate())) { |
| | | }else if (new Date().after(start)&&new Date().before(end)){ |
| | | recordVo.setStatus(2); |
| | | } else { |
| | | recordVo.setStatus(3); |
| | | |
| | | }else if (start.after(new Date())) { |
| | | //待上课 |
| | | recordVo.setStatus(1); |
| | | } |
| | | } |
| | | else { |
| | | // CancelledClasses cancelledClasses = cacMapper.selectOne(new QueryWrapper<CancelledClasses>() |
| | | // .eq("coursePackageSchedulingId", byId.getId()).last("limit 1")); |
| | | // if (ToolUtil.isNotEmpty(cancelledClasses)) { |
| | | // recordVo.setStatus(3); |
| | | // // 消课 到课状态0 旷课 |
| | | // if (coursePackageStudent.getSignInOrNot() == 0) { |
| | | // recordVo.setStatus(6); |
| | | // } |
| | | // |
| | | // } else { |
| | | // Date now = new Date(); |
| | | // if (now.after(byId.getClassDate()) && now.before(byId.getEndDate())) { |
| | | // recordVo.setStatus(2); |
| | | // } else { |
| | | // recordVo.setStatus(3); |
| | | // |
| | | // } |
| | | // } |
| | | } |
| | | // } else { |
| | | // recordVo.setStatus(1); |
| | |
| | | |
| | | @Override |
| | | public List<ClassListDto> getClassList(Integer tStudentId) { |
| | | return this.baseMapper.getClassList(tStudentId); |
| | | List<ClassListDto> classList = this.baseMapper.getClassList(tStudentId); |
| | | List<ClassListDto> holiList = this.baseMapper.getHoliList(tStudentId); |
| | | classList.addAll(holiList); |
| | | |
| | | return classList; |
| | | } |
| | | |
| | | @Override |
| | |
| | | } |
| | | Store store = storeClient.queryStoreById(coursePackage.getStoreId()); |
| | | response.setStoreName(store.getName()); |
| | | response.setStoreAddress(store.getAddress()); |
| | | |
| | | if (ToolUtil.isNotEmpty(lon) && ToolUtil.isNotEmpty(lat)) { |
| | | Map<String, Double> distance = GeodesyUtil.getDistance(lon + "," + lat, store.getLon() + "," + store.getLat()); |
New file |
| | |
| | | package com.dsh.course.util.httpClinet; |
| | | |
| | | /** |
| | | * 定义统一返回对象 |
| | | */ |
| | | public class ResultUtil<T> { |
| | | |
| | | public static final Integer SUCCESS = 200; |
| | | |
| | | public static final Integer PARAM_ERROR = 300; |
| | | |
| | | public static final Integer RUNTIME_ERROR = 400; |
| | | |
| | | public static final Integer ERROR = 500; |
| | | |
| | | public static final String Token = "Token失效"; |
| | | |
| | | private Integer status;//状态码 |
| | | |
| | | private Integer code;//备用状态码 |
| | | |
| | | private String msg;//返回说明 |
| | | |
| | | private T data;//返回数据 |
| | | |
| | | private String str;//存储单个字符串值 |
| | | |
| | | |
| | | public Integer getStatus() { |
| | | return status; |
| | | } |
| | | |
| | | public String getMsg() { |
| | | return msg; |
| | | } |
| | | |
| | | public T getData() { |
| | | return data; |
| | | } |
| | | |
| | | public String getStr() { |
| | | return str; |
| | | } |
| | | |
| | | public Integer getCode() { |
| | | return code; |
| | | } |
| | | |
| | | public ResultUtil(Integer status, Integer code, String msg) { |
| | | this.status = status; |
| | | this.code = code; |
| | | this.msg = msg; |
| | | } |
| | | |
| | | private ResultUtil(Integer status, Integer code, String msg, T data) { |
| | | this.status = status; |
| | | this.code = code; |
| | | this.msg = msg; |
| | | this.data = data; |
| | | } |
| | | |
| | | public ResultUtil(Integer status, Integer code, String msg, T data, String str) { |
| | | this.status = status; |
| | | this.code = code; |
| | | this.msg = msg; |
| | | this.data = data; |
| | | this.str = str; |
| | | } |
| | | |
| | | private ResultUtil(Integer status, Integer code, String msg, String str) { |
| | | this.status = status; |
| | | this.code = code; |
| | | this.msg = msg; |
| | | this.str = str; |
| | | } |
| | | |
| | | |
| | | public static <T> ResultUtil<T> getResult(Integer status, Integer code, String msg){ |
| | | return new ResultUtil<>(status, code, msg); |
| | | } |
| | | |
| | | public static <T> ResultUtil<T> getResult(Integer status, Integer code, String msg, T data){ |
| | | return new ResultUtil<>(status, code, msg, data); |
| | | } |
| | | |
| | | public static <T> ResultUtil<T> getResult(Integer status, Integer code, String msg, T data, String str){ |
| | | return new ResultUtil<>(status, code, msg, data, str); |
| | | } |
| | | |
| | | /** |
| | | * 错误信息 |
| | | * @return |
| | | */ |
| | | public static ResultUtil error(String mag){ |
| | | return ResultUtil.getResult(ResultUtil.ERROR, ResultUtil.ERROR, mag); |
| | | } |
| | | |
| | | /** |
| | | * 错误信息 |
| | | * @return |
| | | */ |
| | | public static <T> ResultUtil <T> error(String mag, T obj){ |
| | | return ResultUtil.getResult(ResultUtil.ERROR, ResultUtil.ERROR, mag, obj); |
| | | } |
| | | |
| | | /** |
| | | * token失效 |
| | | * @return |
| | | */ |
| | | public static ResultUtil tokenErr(){ |
| | | return ResultUtil.getResult(ResultUtil.ERROR, ResultUtil.ERROR, ResultUtil.Token); |
| | | } |
| | | |
| | | /** |
| | | * token失效 |
| | | * @return |
| | | */ |
| | | public static ResultUtil tokenErr(String msg){ |
| | | return ResultUtil.getResult(ResultUtil.ERROR, ResultUtil.ERROR, msg); |
| | | } |
| | | |
| | | /** |
| | | * 参数异常 |
| | | * @return |
| | | */ |
| | | public static ResultUtil paranErr(){ |
| | | return ResultUtil.getResult(ResultUtil.PARAM_ERROR, ResultUtil.PARAM_ERROR, "参数异常"); |
| | | } |
| | | |
| | | /** |
| | | * 参数异常 |
| | | * @return |
| | | */ |
| | | public static <T> ResultUtil<T> paranErr(T data){ |
| | | return ResultUtil.getResult(ResultUtil.PARAM_ERROR, ResultUtil.PARAM_ERROR, "参数异常", data); |
| | | } |
| | | |
| | | /** |
| | | * 运行异常 |
| | | * @return |
| | | */ |
| | | public static ResultUtil runErr(){ |
| | | return ResultUtil.getResult(ResultUtil.RUNTIME_ERROR, ResultUtil.RUNTIME_ERROR, "服务器运行异常"); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 运行异常 |
| | | * @return |
| | | */ |
| | | public static <T>ResultUtil<T> runErr(T data){ |
| | | return ResultUtil.getResult(ResultUtil.RUNTIME_ERROR, ResultUtil.RUNTIME_ERROR, "服务器运行异常", data); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 返回成功 |
| | | * @param |
| | | * @return |
| | | */ |
| | | public static ResultUtil success(){ |
| | | return ResultUtil.getResult(ResultUtil.SUCCESS, ResultUtil.SUCCESS, "成功"); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 返回成功 |
| | | * @param data |
| | | * @param <T> |
| | | * @return |
| | | */ |
| | | public static <T> ResultUtil<T> success(T data){ |
| | | return ResultUtil.getResult(ResultUtil.SUCCESS, ResultUtil.SUCCESS, "成功", data); |
| | | } |
| | | |
| | | /** |
| | | * 返回成功 |
| | | * @param data |
| | | * @param str |
| | | * @param <T> |
| | | * @return |
| | | */ |
| | | public static <T> ResultUtil<T> success(T data, String str){ |
| | | return ResultUtil.getResult(ResultUtil.SUCCESS, ResultUtil.SUCCESS, "成功", data, str); |
| | | } |
| | | |
| | | public static <T> ResultUtil<T> success(String msg, T data){ |
| | | return ResultUtil.getResult(ResultUtil.SUCCESS, ResultUtil.SUCCESS, msg, data); |
| | | } |
| | | |
| | | public static <T> ResultUtil<T> success(String msg, T data, String str){ |
| | | return ResultUtil.getResult(ResultUtil.SUCCESS, ResultUtil.SUCCESS, msg, data, str); |
| | | } |
| | | |
| | | } |
| | |
| | | FROM t_course_package_payment py |
| | | where py.studentId = #{tStudentId} |
| | | </select> |
| | | <select id="getHoliList" resultType="com.dsh.course.entity.dto.ClassListDto"> |
| | | select |
| | | od.id,od.insertTime as insertTime, cp.name as className,cp.type as classType |
| | | from t_course_package_order od |
| | | left join t_course_package cp on od.coursePackageId = cp.id |
| | | |
| | | WHERE od.payStatus = 2 and cp.type = 2 |
| | | |
| | | |
| | | |
| | | </select> |
| | | </mapper> |
| | |
| | | package com.dsh.course.dto; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Data; |
| | | import lombok.NoArgsConstructor; |
| | | |
| | | import java.util.Date; |
| | | @Data |
| | | @AllArgsConstructor |
| | | @NoArgsConstructor |
| | | public class updateTimeDto { |
| | | @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
| | | private Date date; |
| | | private Integer tStudentId; |
| | | } |
| | |
| | | package com.dsh.course.feignClient.account; |
| | | |
| | | import com.dsh.course.dto.CreateHistoryDto; |
| | | import com.dsh.course.dto.GetHistoryDto; |
| | | import com.dsh.course.dto.StudentSearch; |
| | | import com.dsh.course.dto.TStudentDto; |
| | | import com.dsh.course.dto.*; |
| | | import com.dsh.course.feignClient.account.model.QueryAppUser; |
| | | import com.dsh.course.feignClient.account.model.QueryAppUserVO; |
| | | import com.dsh.course.feignClient.account.model.QueryByNamePhone; |
| | |
| | | import org.springframework.cloud.openfeign.FeignClient; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | |
| | | |
| | | @PostMapping("/student/frozen") |
| | | void frozen(@RequestBody TStudent student); |
| | | @PostMapping("/student/getById") |
| | | Date getById(@RequestBody Integer tStudentId); |
| | | @PostMapping("/student/update1") |
| | | void update(@RequestBody updateTimeDto updateTimeDto); |
| | | } |
| | |
| | | |
| | | |
| | | @PostMapping("/coursePackagePayment/consumeCourse") |
| | | ResultUtil consumeCourse(@RequestBody Integer coursePackagePaymentId); |
| | | Integer consumeCourse(@RequestBody Integer coursePackagePaymentId); |
| | | |
| | | @PostMapping("/coursePackagePayment/queryCoursePackagePaymentById1") |
| | | CoursePackageOrderStudent queryCoursePackagePaymentById1(@RequestParam("id")Long id); |
New file |
| | |
| | | package com.dsh.course.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | |
| | | import com.dsh.course.entity.SiteLock; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @author zhibing.pu |
| | | * @Date 2023/7/18 14:43 |
| | | */ |
| | | public interface SiteLockMapper extends BaseMapper<SiteLock> { |
| | | |
| | | } |
| | |
| | | ListQuery listQuery = new ListQuery(page.getSize(),page.getCurrent(),provinceCode,cityCode,eventName,time,state,registerCondition,ids,UserExt.getUser().getObjectType()); |
| | | Page<Competition> competitions = competitionClient.list(listQuery); |
| | | List<Competition> records = new ArrayList<>(); |
| | | // for (Competition competition : competitions.getRecords()) { |
| | | //// if (competition.getStatus()==4){ |
| | | //// continue; |
| | | //// } |
| | | // |
| | | // // 当前时间小于开始时间 |
| | | // if (competition.getStartTime().after(new Date())){ |
| | | // competition.setStatus(1); |
| | | // } |
| | | // if (competition.getStartTime().before(new Date())){ |
| | | // |
| | | // |
| | | // if (competition.getEndTime().after(new Date())){ |
| | | // competition.setStatus(2); |
| | | // }else{ |
| | | // competition.setStatus(3); |
| | | // } |
| | | // } |
| | | // if (competition.getStatus()!=state && state != null){ |
| | | // }else{ |
| | | // records.add(competition); |
| | | // } |
| | | // for (TStore tStore : list) { |
| | | // String[] split = competition.getStoreId().split(","); |
| | | // for (String s : split) { |
| | | // if(s.equals(String.valueOf(tStore.getId()))){ |
| | | // if (competition.getStoreName()==null){ |
| | | // competition.setStoreName(tStore.getName()); |
| | | // }else { |
| | | // competition.setStoreName(competition.getStoreName()+","+tStore.getName()); |
| | | // } |
| | | // } |
| | | // } |
| | | // } |
| | | // } |
| | | for (Competition competition : competitions.getRecords()) { |
| | | if (competition.getStatus()==4){ |
| | | continue; |
| | | } |
| | | |
| | | // 当前时间小于开始时间 |
| | | if (competition.getStartTime().after(new Date())){ |
| | | competition.setStatus(1); |
| | | } |
| | | if (competition.getStartTime().before(new Date())){ |
| | | |
| | | |
| | | if (competition.getEndTime().after(new Date())){ |
| | | competition.setStatus(2); |
| | | }else{ |
| | | competition.setStatus(3); |
| | | } |
| | | } |
| | | if (competition.getStatus()!=state && state != null){ |
| | | }else{ |
| | | records.add(competition); |
| | | } |
| | | for (TStore tStore : list) { |
| | | String[] split = competition.getStoreId().split(","); |
| | | for (String s : split) { |
| | | if(s.equals(String.valueOf(tStore.getId()))){ |
| | | if (competition.getStoreName()==null){ |
| | | competition.setStoreName(tStore.getName()); |
| | | }else { |
| | | competition.setStoreName(competition.getStoreName()+","+tStore.getName()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | competitions.setRecords(records); |
| | | System.err.println(competitions.getRecords()); |
| | | return super.packForBT(competitions); |
| | |
| | | import com.dsh.guns.modular.system.util.DateComparisonExample; |
| | | import com.dsh.guns.modular.system.util.HttpRequestUtil; |
| | | import com.dsh.guns.modular.system.util.ResultUtil; |
| | | |
| | | import com.dsh.course.entity.SiteLock; |
| | | import org.json.JSONObject; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Controller; |
| | |
| | | |
| | | |
| | | |
| | | @Autowired |
| | | private ISiteLockService siteLockService; |
| | | |
| | | |
| | | @RequestMapping("/yuyuetimes/{id}") |
| | | @ResponseBody |
| | | public List<OrderDto> yuyuetimes(@PathVariable("id") Integer id,String date,String siteName,String halfName) { |
| | | System.out.println("=======date======"+date); |
| | | // System.out.println("=======date======"+date); |
| | | // |
| | | // List<String> strings = new ArrayList<>(); |
| | | // |
| | | //// List<SiteBooking> siteBookings = siteClient.listBooks(id); |
| | | // List<SiteBooking> siteBookings = iSiteBookingService.list(new QueryWrapper<SiteBooking>() |
| | | // .eq("siteId", id).like("times",date)); |
| | | //System.out.println("=======siteBookings======"+siteBookings); |
| | | // for (SiteBooking siteBooking : siteBookings) { |
| | | // String[] split = siteBooking.getTimes().split(";"); |
| | | // for (String s : split) { |
| | | // |
| | | // String convertedValue = s.substring(11); |
| | | // strings.add(convertedValue); |
| | | // } |
| | | // |
| | | // } |
| | | // System.out.println("======strings======="+strings); |
| | | // |
| | | // List<OrderDto> timeRanges = new ArrayList<>(); |
| | | // |
| | | // Site site = siteClient.listById(id); |
| | | //System.out.println("================"+site); |
| | | // String appointmentStartTime = site.getAppointmentStartTime(); |
| | | // String appointmentEndTime = site.getAppointmentEndTime(); |
| | | // |
| | | // String currentTime = appointmentStartTime; |
| | | // while (currentTime.compareTo(appointmentEndTime) < 0){ |
| | | // String nextTime = null; |
| | | // if("智慧场地".equals(site.getTypeName())){ |
| | | // nextTime=getNextTimeOne(currentTime); |
| | | // }else { |
| | | // nextTime= getNextTime(currentTime); |
| | | // } |
| | | // |
| | | // String timeRange = currentTime + "-" + nextTime; |
| | | // OrderDto orderDto = new OrderDto(); |
| | | // orderDto.setTime(timeRange); |
| | | // |
| | | // LocalTime currentTime1 = LocalTime.now(); |
| | | // LocalTime targetTime = LocalTime.parse(currentTime); |
| | | // |
| | | // boolean hasExceeded = currentTime1.isAfter(targetTime); |
| | | // if (hasExceeded){ |
| | | // orderDto.setState(0); |
| | | // } |
| | | // if (strings.contains(timeRange)){ |
| | | // orderDto.setState(0); |
| | | // } |
| | | // |
| | | // |
| | | // timeRanges.add(orderDto); |
| | | // currentTime = nextTime; |
| | | // } |
| | | // System.out.println("-------------"+timeRanges); |
| | | // |
| | | // return timeRanges; |
| | | |
| | | |
| | | |
| | | |
| | | System.out.println("=======date======" + date); |
| | | List<String> strings = new ArrayList<>(); |
| | | |
| | | // List<SiteBooking> siteBookings = siteClient.listBooks(id); |
| | | List<SiteBooking> siteBookings = iSiteBookingService.list(new QueryWrapper<SiteBooking>() |
| | | .eq("siteId", id).like("times",date)); |
| | | List<SiteBooking> siteBookings = iSiteBookingService.list(new QueryWrapper<SiteBooking>().eq("siteId", id).ne("status", 5).eq("nextName", siteName).like("times", date)); |
| | | |
| | | if (siteName == null || siteName.equals("")) { |
| | | siteBookings = iSiteBookingService.list(new QueryWrapper<SiteBooking>().eq("siteId", id).ne("status", 5).like("times", date)); |
| | | } |
| | | |
| | | |
| | | System.out.println("=======siteBookings======"+siteBookings); |
| | | for (SiteBooking siteBooking : siteBookings) { |
| | | String[] split = siteBooking.getTimes().split(";"); |
| | | for (String s : split) { |
| | | |
| | | |
| | | String[] split = siteBooking.getTimes().split(";"); |
| | | |
| | | if (siteBooking.getIsHalf() == 2) { |
| | | for (String s : split) { |
| | | String convertedValue = s.substring(11); |
| | | strings.add(convertedValue); |
| | | } |
| | | } else { |
| | | if (halfName == null) { |
| | | for (String s : split) { |
| | | String convertedValue = s.substring(11); |
| | | strings.add(convertedValue); |
| | | } |
| | | } |
| | | |
| | | if (siteBooking.getHalfName().equals(halfName)) { |
| | | for (String s : split) { |
| | | String convertedValue = s.substring(11); |
| | | strings.add(convertedValue); |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | System.out.println("======strings======="+strings); |
| | | |
| | | |
| | | List<OrderDto> timeRanges = new ArrayList<>(); |
| | | |
| | | Site site = siteClient.listById(id); |
| | | |
| | | TSite site = siteService.getById(id); |
| | | System.out.println("================"+site); |
| | | String appointmentStartTime = site.getAppointmentStartTime(); |
| | | String appointmentEndTime = site.getAppointmentEndTime(); |
| | |
| | | nextTime= getNextTime(currentTime); |
| | | } |
| | | |
| | | |
| | | String timeRange = currentTime + "-" + nextTime; |
| | | OrderDto orderDto = new OrderDto(); |
| | | orderDto.setTime(timeRange); |
| | |
| | | LocalTime targetTime = LocalTime.parse(currentTime); |
| | | |
| | | boolean hasExceeded = currentTime1.isAfter(targetTime); |
| | | if (hasExceeded){ |
| | | // if (hasExceeded){ |
| | | // orderDto.setSelectable(0); |
| | | // } |
| | | if (strings.contains(timeRange)) { |
| | | |
| | | orderDto.setState(0); |
| | | } else { |
| | | |
| | | String stime = date + " " + currentTime; |
| | | String etime = date + " " + nextTime; |
| | | orderDto.setState(1); |
| | | // 查出lock |
| | | List<SiteLock> list = siteLockService.list(new LambdaQueryWrapper<SiteLock>().eq(SiteLock::getSiteId, id)); |
| | | for (SiteLock siteLock : list) { |
| | | boolean stringDateBetween = DateComparisonExample.isStringDateBetween(stime + " - " + etime, siteLock.getStartTime(), siteLock.getEndTime()); |
| | | if (stringDateBetween) { |
| | | orderDto.setState(0); |
| | | } |
| | | if (strings.contains(timeRange)){ |
| | | if (DateComparisonExample.isStringWithinTimeRange(stime, siteLock.getStartTime(), siteLock.getEndTime())) { |
| | | orderDto.setState(0); |
| | | } |
| | | if (DateComparisonExample.isStringWithinTimeRange(etime, siteLock.getStartTime(), siteLock.getEndTime())) { |
| | | orderDto.setState(0); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | System.out.println("-------------"+timeRanges); |
| | | |
| | | return timeRanges; |
| | | |
| | | |
| | | |
| | | |
| | |
| | | |
| | | model.addAttribute("item", tStudentDto); |
| | | if (tStudentDto.getLateralSurface()!=null&&!tStudentDto.equals("")) { |
| | | String[] pics = tStudentDto.getLateralSurface().split(";"); |
| | | model.addAttribute("pic1", pics[0]); |
| | | System.out.println("=====pic1==" + pics[0]); |
| | | if (pics.length > 1) { |
| | | model.addAttribute("pic2", pics[1]); |
| | | System.out.println("=====pic2==" + pics[1]); |
| | | } |
| | | if (pics.length > 2) { |
| | | model.addAttribute("pic3", pics[2]); |
| | | System.out.println("=====pic3==" + pics[2]); |
| | | } |
| | | // String[] pics = tStudentDto.getLateralSurface().split(";"); |
| | | // model.addAttribute("pic1", pics[0]); |
| | | // System.out.println("=====pic1==" + pics[0]); |
| | | // if (pics.length > 1) { |
| | | // model.addAttribute("pic2", pics[1]); |
| | | // System.out.println("=====pic2==" + pics[1]); |
| | | // } |
| | | // if (pics.length > 2) { |
| | | // model.addAttribute("pic3", pics[2]); |
| | | // System.out.println("=====pic3==" + pics[2]); |
| | | // } |
| | | model.addAttribute("images",tStudentDto.getLateralSurface()); |
| | | } |
| | | |
| | | |
| | |
| | | @RequestMapping("/getUseTime/{tStudentId}") |
| | | @ResponseBody |
| | | public ResultUtil getMax(@PathVariable("tStudentId") Integer tStudentId) { |
| | | Date useTime = courseStuddentClient.getUseTime(tStudentId); |
| | | Date vali = studentClient.getById(tStudentId); |
| | | |
| | | // Date useTime = courseStuddentClient.getUseTime(tStudentId); |
| | | Map<String, Date> map = new HashMap<>(); |
| | | map.put("useTime",useTime); |
| | | map.put("useTime",vali); |
| | | |
| | | return new ResultUtil<>(0,0,null,map,null); |
| | | } |
| | |
| | | // 需要过滤体验课 |
| | | List<ClassListDto> classListDtos = courseStuddentClient.listClass(tStudentId); |
| | | for (ClassListDto classListDto : classListDtos) { |
| | | classListDto.setHasClassHours(classListDto.getTotalClassHours()-classListDto.getLaveClassHours()); |
| | | if (classListDto.getClassType()==2){ |
| | | classListDto.setTotalClassHours(null); |
| | | classListDto.setHasClassHours(null); |
| | | classListDto.setLaveClassHours(null); |
| | | continue; |
| | | } |
| | | classListDto.setHasClassHours(classListDto.getTotalClassHours()-classListDto.getLaveClassHours()); |
| | | |
| | | } |
| | | Map<String,List<ClassListDto>> map = new HashMap<>(); |
| | | map.put("items",classListDtos); |
| | |
| | | @ResponseBody |
| | | |
| | | public ResultUtil update(@RequestBody TStudent tStudent) { |
| | | String lateralSurface = tStudent.getImage1()+";"+tStudent.getImage2()+";"+tStudent.getImage3(); |
| | | List<String> strings = new ArrayList<>(); |
| | | if (!tStudent.getImage1().isEmpty()){ |
| | | strings.add(tStudent.getImage1()); |
| | | } |
| | | if (!tStudent.getImage2().isEmpty()){ |
| | | strings.add(tStudent.getImage2()); |
| | | } |
| | | if (!tStudent.getImage3().isEmpty()){ |
| | | strings.add(tStudent.getImage3()); |
| | | } |
| | | String result = String.join(";", strings); |
| | | |
| | | System.out.println("=======lateralSurface======>?"+lateralSurface); |
| | | tStudent.setLateralSurface(lateralSurface); |
| | | System.out.println("学员体测表的值"+lateralSurface); |
| | | |
| | | // |
| | | // String lateralSurface = tStudent.getImage1()+";"+tStudent.getImage2()+";"+tStudent.getImage3(); |
| | | // |
| | | // System.out.println("=======lateralSurface======>?"+lateralSurface); |
| | | tStudent.setLateralSurface(result); |
| | | System.out.println("学员体测表的值"+result); |
| | | itStudentService.update(tStudent); |
| | | // appUserClient.updateStudent(tStudent); |
| | | return new ResultUtil(0,0,"编辑成功"); |
| | |
| | | |
| | | updateTimeDto updateTimeDto =new updateTimeDto(date1,id); |
| | | System.out.println("======updateTimeDto=====>"+updateTimeDto); |
| | | courseStuddentClient.updateUseDate(updateTimeDto); |
| | | // courseStuddentClient.updateUseDate(updateTimeDto); |
| | | |
| | | studentClient.update(updateTimeDto); |
| | | |
| | | |
| | | CreateHistoryDto historyDto = new CreateHistoryDto(); |
New file |
| | |
| | | package com.dsh.guns.modular.system.service; |
| | | |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.dsh.course.entity.SiteLock; |
| | | |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @author zhibing.pu |
| | | * @Date 2023/7/18 14:44 |
| | | */ |
| | | public interface ISiteLockService extends IService<SiteLock> { |
| | | |
| | | |
| | | } |
| | |
| | | */ |
| | | @Override |
| | | public ResultUtil makeUpMissedLessons(Integer coursePackagePaymentId){ |
| | | ResultUtil resultUtil = coursePackagePaymentClient.consumeCourse(coursePackagePaymentId); |
| | | // System.out.println("=========coursePackagePayment=====>"+coursePackagePayment); |
| | | // if(coursePackagePayment.getStatus() == 2){ |
| | | // return ResultUtil.error("该学员已退课"); |
| | | // try { |
| | | Integer is = coursePackagePaymentClient.consumeCourse(coursePackagePaymentId); |
| | | if (is==1){ |
| | | return ResultUtil.error("课时数不足"); |
| | | }else { |
| | | return ResultUtil.success("补课成功"); |
| | | } |
| | | // return resultUtil; |
| | | // return ResultUtil.success("补课成功"); |
| | | // }catch (Exception e){ |
| | | // return ResultUtil.success("课时数不足"); |
| | | // |
| | | // } |
| | | // if(coursePackagePayment.getAbsencesNumber() == 0){ |
| | | // return ResultUtil.error("当前不需要补课"); |
| | | // } |
| | | // coursePackagePayment.setAbsencesNumber(coursePackagePayment.getAbsencesNumber() - 1); |
| | | // coursePackagePaymentClient.editCoursePackagePayment(coursePackagePayment); |
| | | return resultUtil; |
| | | |
| | | // return resultUtil; |
| | | } |
| | | |
| | | |
New file |
| | |
| | | package com.dsh.guns.modular.system.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | |
| | | import com.dsh.course.entity.SiteLock; |
| | | import com.dsh.course.mapper.SiteLockMapper; |
| | | import com.dsh.guns.modular.system.service.ISiteLockService; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @author zhibing.pu |
| | | * @Date 2023/7/18 14:45 |
| | | */ |
| | | @Service |
| | | public class SiteLockServiceImpl extends ServiceImpl<SiteLockMapper, SiteLock> implements ISiteLockService { |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | |
| | | <input class="itemInput" type="password" name="password" id="password" placeholder="请输入密码" required="" value=""> |
| | | </div> |
| | | |
| | | <div class="form-group" style="float: left;"> |
| | | <div class="col-sm-8" style="padding-left: 0px; padding-right: 0px;"> |
| | | <input class="form-control" type="text" name="kaptcha" placeholder="验证码" required=""> |
| | | </div> |
| | | <div class="col-sm-4" style="padding-left: 0px; padding-right: 0px;"> |
| | | <img src="${ctxPath}/kaptcha" id="kaptcha" width="90px" height="34px"/> |
| | | </div> |
| | | |
| | | </div> |
| | | <h4 style="color: #0e9aef;text-align: right" onclick="updatePassword1()">修改密码</h4> |
| | | <!-- <div class="form-group" style="float: left;">--> |
| | | <!-- <div class="col-sm-8" style="padding-left: 0px; padding-right: 0px;">--> |
| | | <!-- <input class="form-control" type="text" name="kaptcha" placeholder="验证码" required="">--> |
| | | <!-- </div>--> |
| | | <!-- <div class="col-sm-4" style="padding-left: 0px; padding-right: 0px;">--> |
| | | <!-- <img src="${ctxPath}/kaptcha" id="kaptcha" width="90px" height="34px"/>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- <h4 style="color: #0e9aef;text-align: right" onclick="updatePassword1()">修改密码</h4>--> |
| | | <button onclick="login()" class="btn full-width m-b" style="background-color: #0573EA;color: white;">登 录</button> |
| | | <button type="submit" id="submit" style="display: none;"></button> |
| | | </p> |
| | |
| | | "value":"" |
| | | }, |
| | | { |
| | | "type": "input-text", |
| | | "label": "SUTU名称", |
| | | "name": "sutuName", |
| | | "id": "u:a4dbdeb9165e", |
| | | "mode": "inline", |
| | | "size": "sm", |
| | | "horizontal": { |
| | | "leftFixed": "sm" |
| | | }, |
| | | "value": "", |
| | | "required": true |
| | | , |
| | | "value":"" |
| | | }, |
| | | { |
| | | "type": "button", |
| | | "label": "按钮", |
| | | "onEvent": { |
| | |
| | | , |
| | | "value":`${game.red}` |
| | | }, |
| | | { |
| | | "type": "input-text", |
| | | "label": "SUTU名称", |
| | | "name": "sutuName", |
| | | "id": "u:a4dbdeb9165e", |
| | | "mode": "inline", |
| | | "size": "sm", |
| | | "horizontal": { |
| | | "leftFixed": "sm" |
| | | }, |
| | | "value": "", |
| | | "required": true |
| | | , |
| | | "value":`${game.sutuId}` |
| | | }, |
| | | |
| | | { |
| | | "type": "button", |
| | | "label": "按钮", |
| | |
| | | "id": "u:8224ab367da8" |
| | | }, |
| | | { |
| | | "type": "input-image", |
| | | "id": "u:53e0d6a37b69", |
| | | "label": "", |
| | | "name": "image1", |
| | | "autoUpload": true, |
| | | "proxy": true, |
| | | "uploadType": "fileReceptor", |
| | | "imageClassName": "r w-full", |
| | | "receiver": { |
| | | "url": "/mgr/uploadImgAmis", |
| | | "method": "post" |
| | | "type": "images", |
| | | "id": "u:76216a114f2c", |
| | | "name": "images", |
| | | "value":`${images}`, |
| | | "delimiter":";" |
| | | }, |
| | | "accept": ".jpeg, .jpg, .png, .gif", |
| | | "multiple": false, |
| | | "hideUploadButton": false, |
| | | "fixedSize": false, |
| | | "mode": "inline", |
| | | "value":`${pic1!}`, |
| | | "disabled": true, |
| | | }, |
| | | { |
| | | "type": "input-image", |
| | | "id": "u:53e0d6a37b69", |
| | | "label": "", |
| | | "name": "image2", |
| | | "autoUpload": true, |
| | | "proxy": true, |
| | | "uploadType": "fileReceptor", |
| | | "imageClassName": "r w-full", |
| | | "receiver": { |
| | | "url": "/mgr/uploadImg", |
| | | "method": "post" |
| | | }, |
| | | "accept": ".jpeg, .jpg, .png, .gif", |
| | | "multiple": false, |
| | | "hideUploadButton": false, |
| | | "fixedSize": false, |
| | | "mode": "inline", |
| | | "value":`${pic2!}`, |
| | | "disabled": true, |
| | | }, |
| | | { |
| | | "type": "input-image", |
| | | "id": "u:53e0d6a37b69", |
| | | "label": "", |
| | | "name": "image3", |
| | | "autoUpload": true, |
| | | "proxy": true, |
| | | "uploadType": "fileReceptor", |
| | | "imageClassName": "r w-full", |
| | | "receiver": { |
| | | "url": "/mgr/uploadImg", |
| | | "method": "post" |
| | | }, |
| | | "accept": ".jpeg, .jpg, .png, .gif", |
| | | "multiple": false, |
| | | "hideUploadButton": false, |
| | | "fixedSize": false, |
| | | "mode": "inline", |
| | | "value":`${pic3!}`, |
| | | "disabled": true, |
| | | }, |
| | | // { |
| | | // "type": "input-image", |
| | | // "id": "u:53e0d6a37b69", |
| | | // "label": "", |
| | | // "name": "image1", |
| | | // "autoUpload": true, |
| | | // "proxy": true, |
| | | // "uploadType": "fileReceptor", |
| | | // "imageClassName": "r w-full", |
| | | // "receiver": { |
| | | // "url": "/mgr/uploadImgAmis", |
| | | // "method": "post" |
| | | // }, |
| | | // "accept": ".jpeg, .jpg, .png, .gif", |
| | | // "multiple": false, |
| | | // "hideUploadButton": false, |
| | | // "fixedSize": false, |
| | | // "mode": "inline", |
| | | // "value":`${pic1!}`, |
| | | // "disabled": true, |
| | | // }, |
| | | // { |
| | | // "type": "input-image", |
| | | // "id": "u:53e0d6a37b69", |
| | | // "label": "", |
| | | // "name": "image2", |
| | | // "autoUpload": true, |
| | | // "proxy": true, |
| | | // "uploadType": "fileReceptor", |
| | | // "imageClassName": "r w-full", |
| | | // "receiver": { |
| | | // "url": "/mgr/uploadImg", |
| | | // "method": "post" |
| | | // }, |
| | | // "accept": ".jpeg, .jpg, .png, .gif", |
| | | // "multiple": false, |
| | | // "hideUploadButton": false, |
| | | // "fixedSize": false, |
| | | // "mode": "inline", |
| | | // "value":`${pic2!}`, |
| | | // "disabled": true, |
| | | // }, |
| | | // { |
| | | // "type": "input-image", |
| | | // "id": "u:53e0d6a37b69", |
| | | // "label": "", |
| | | // "name": "image3", |
| | | // "autoUpload": true, |
| | | // "proxy": true, |
| | | // "uploadType": "fileReceptor", |
| | | // "imageClassName": "r w-full", |
| | | // "receiver": { |
| | | // "url": "/mgr/uploadImg", |
| | | // "method": "post" |
| | | // }, |
| | | // "accept": ".jpeg, .jpg, .png, .gif", |
| | | // "multiple": false, |
| | | // "hideUploadButton": false, |
| | | // "fixedSize": false, |
| | | // "mode": "inline", |
| | | // "value":`${pic3!}`, |
| | | // "disabled": true, |
| | | // }, |
| | | { |
| | | "type": "divider", |
| | | "id": "u:c8ddd15c688d" |
| | |
| | | } |
| | | let div_array = $('#cancelClasses').find('div'); |
| | | let str = ''; |
| | | for (let i = 0; i < div_array.length; i++) { |
| | | for (let i = 1; i < div_array.length; i++) { |
| | | let v = $($(div_array[i]).find('img')[0]).attr('src'); |
| | | str += v + ";"; |
| | | } |
| | |
| | | for (Store store : storeList) { |
| | | String storeLon = store.getLon(); |
| | | String storeLat = store.getLat(); |
| | | String result = storeLon + "," + storeLat; |
| | | String distanceTOKilometer = gdMapGeocodingUtil.getDistanceTOKilometer(current, result); |
| | | // String result = storeLon + "," + storeLat; |
| | | // String distanceTOKilometer = gdMapGeocodingUtil.getDistanceTOKilometer(current, result); |
| | | long l = 0; |
| | | // try { |
| | | // l = Long.parseLong(distanceTOKilometer); |
| | |
| | | info.setStoreId(store.getId()); |
| | | info.setStoreName(store.getName()); |
| | | info.setStoreImg(store.getCoverDrawing()); |
| | | info.setDistance((long) Double.parseDouble(distanceTOKilometer)); |
| | | // info.setDistance( Double.parseDouble(distanceTOKilometer)); |
| | | |
| | | Map<String, Double> distance = GeodesyUtil.getDistance(list.getLongitude() + "," + list.getLatitude(), storeLon + "," + storeLat); |
| | | double wgs84 = new BigDecimal(distance.get("WGS84")).divide(new BigDecimal(1000)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); |
| | | info.setDistance(wgs84); |
| | | |
| | | |
| | | String str = store.getAddress(); |
| | |
| | | private String storeImg; |
| | | |
| | | @ApiModelProperty(value = "门店距离当前位置") |
| | | private long distance; |
| | | private double distance; |
| | | |
| | | @ApiModelProperty(value = "门店名称") |
| | | private String storeName; |