src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java
@@ -25,6 +25,7 @@ registration.excludePathPatterns("/api/news/**"); registration.excludePathPatterns("/api/member/cashOutSetting"); registration.excludePathPatterns("/api/leader/leaderList"); registration.excludePathPatterns("/api/leader/leaderListInFence"); registration.excludePathPatterns("/api/leader/leaderTitle"); registration.excludePathPatterns("/api/xcxPay/wxpayCallback"); registration.excludePathPatterns("/api/xcxPay/rechargeCallBack"); src/main/java/cc/mrbird/febs/mall/controller/ApiMallOrderController.java
@@ -33,6 +33,14 @@ private final IApiMallOrderInfoService mallOrderInfoService; private final IXcxPayService iXcxPayService; @ApiOperation(value = "创建订单--验证收货地址是否在配送范围内 true | false", notes = "创建订单--验证收货地址是否在配送范围内") @PostMapping(value = "/createOrderVerify") public FebsResponse createOrderVerify(@RequestBody ApiCreateOrderVerifyDto apiCreateOrderVerifyDto) { Boolean verifyState = mallOrderInfoService.createOrderVerify(apiCreateOrderVerifyDto); return new FebsResponse().success().data(verifyState); } @ApiOperation(value = "创建订单", notes = "创建订单") @PostMapping(value = "/createOrder") public FebsResponse createOrder(@RequestBody AddOrderDto addOrderDto) { src/main/java/cc/mrbird/febs/mall/controller/ApiMallTeamLeaderController.java
@@ -35,15 +35,28 @@ return iApiMallTeamLeaderService.applyLeader(apiApplayLeaderDto); } /** * 团长列表 */ @ApiOperation(value = "团长列表", notes = "团长列表") @ApiOperation(value = "团长列表(查询当前位置商品配送范围内的所有团长)", notes = "团长列表(查询当前位置商品配送范围内的所有团长)") @ApiResponses({ @ApiResponse(code = 200, message = "success", response = ApiLeaderListVo.class) }) @PostMapping(value = "/leaderList") public FebsResponse leaderList(@RequestBody @Valid ApiLeaderListDto apiLeaderListDto) { return iApiMallTeamLeaderService.findSomeLeaderListInPage(apiLeaderListDto); } /** * 团长列表 */ @ApiOperation(value = "团长列表(查询当前经纬度在团长配送范围内的团长)", notes = "团长列表(查询当前经纬度在团长配送范围内的团长)") @ApiResponses({ @ApiResponse(code = 200, message = "success", response = ApiLeaderListVo.class) }) @PostMapping(value = "/leaderListInFence") public FebsResponse leaderListInFence(@RequestBody @Valid ApiLeaderListDto apiLeaderListDto) { return iApiMallTeamLeaderService.findLeaderListInPage(apiLeaderListDto); } src/main/java/cc/mrbird/febs/mall/dto/ApiCreateOrderVerifyDto.java
New file @@ -0,0 +1,19 @@ package cc.mrbird.febs.mall.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotNull; @Data @ApiModel(value = "ApiCreateOrderVerifyDto", description = "参数接收类") public class ApiCreateOrderVerifyDto { @NotNull(message = "参数不能为空") @ApiModelProperty(value = "地址ID", example = "1") private Long addressId; @ApiModelProperty(value = "提货团长特征码", example = "1") private String takeUniqueCode; } src/main/java/cc/mrbird/febs/mall/dto/ApiLeaderListDto.java
@@ -28,4 +28,7 @@ @NotNull(message = "请选择您的地址") private Double latitude; @ApiModelProperty(hidden = true) private Double rangeSize; } src/main/java/cc/mrbird/febs/mall/service/IApiMallOrderInfoService.java
@@ -39,4 +39,6 @@ FebsResponse applyRefundOrder(ApplyRefundOrderDto applyRefundOrderDto); FebsResponse cancelRefundOrder(Long id); Boolean createOrderVerify(ApiCreateOrderVerifyDto apiCreateOrderVerifyDto); } src/main/java/cc/mrbird/febs/mall/service/IApiMallTeamLeaderService.java
@@ -35,4 +35,6 @@ FebsResponse leaderProfit(); List<ApiOrderProfitVo> findLeaderProfitListInPage(ApiOrderProfitDto apiOrderProfitDto); FebsResponse findSomeLeaderListInPage(ApiLeaderListDto apiLeaderListDto); } src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -8,10 +8,12 @@ import cc.mrbird.febs.mall.conversion.MallGoodsCommentConversion; import cc.mrbird.febs.mall.conversion.MallOrderInfoConversion; import cc.mrbird.febs.mall.conversion.MallOrderRefundConversion; import cc.mrbird.febs.mall.conversion.MallTeamLeaderConversion; import cc.mrbird.febs.mall.dto.*; import cc.mrbird.febs.mall.entity.*; import cc.mrbird.febs.mall.mapper.*; import cc.mrbird.febs.mall.service.*; import cc.mrbird.febs.mall.vo.ApiLeaderListVo; import cc.mrbird.febs.mall.vo.OrderDetailVo; import cc.mrbird.febs.mall.vo.OrderListVo; import cc.mrbird.febs.mall.vo.OrderRefundVo; @@ -27,6 +29,8 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.crypto.SecureUtil; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -843,4 +847,43 @@ return new FebsResponse().success().message("已取消"); } @Override public Boolean createOrderVerify(ApiCreateOrderVerifyDto apiCreateOrderVerifyDto) { Boolean flag = false; Long addressId = apiCreateOrderVerifyDto.getAddressId(); String takeUniqueCode = apiCreateOrderVerifyDto.getTakeUniqueCode(); MallAddressInfo mallAddressInfo = mallAddressInfoMapper.selectById(addressId); if(ObjectUtil.isEmpty(mallAddressInfo)){ return flag; } MallElectronicFence mallElectronicFence = mallElectronicFenceMapper.selectByTeamLeaderCode(takeUniqueCode); if(ObjectUtil.isEmpty(mallElectronicFence)){ return flag; } //{"data":{"count":1,"results":[{"gfid":800899,"gfname":"87053658_fence","in":0}]},"errcode":10000,"errdetail":null,"errmsg":"OK"} String resultsStr = iMallElectronicFenceService.fenceToLocation(mallElectronicFence.getGKey(), mallElectronicFence.getServiceId(), mallAddressInfo.getLongitude() + "," + mallAddressInfo.getLatitude(), mallElectronicFence.getGid()); if("fail".equals(resultsStr)){ return flag; } JSONArray objects = JSONUtil.parseArray(resultsStr); for(Object obj : objects){ //{"gfid":800899,"gfname":"87053658_fence","in":0} JSONObject jsonObject = JSONUtil.parseObj(obj); String gfid = jsonObject.get("gfid").toString(); String in = jsonObject.get("in").toString(); String gfname = jsonObject.get("gfname").toString(); //指定坐标是否在围栏中 //1:在, //0:不在; if("1".equals(in)){ flag = true; } } return flag; } } src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java
@@ -90,7 +90,6 @@ } @Override public FebsResponse findLeaderListInPage(ApiLeaderListDto apiLeaderListDto) { //根据当前位置的经纬度查询在所属配送区域内的团长 @@ -291,6 +290,9 @@ apiLeaderInfoVo.setTownship(mallTeamLeader.getTownship()); apiLeaderInfoVo.setDetailAddress(mallTeamLeader.getDetailAddress()); apiLeaderInfoVo.setAddressArea(mallTeamLeader.getAddressArea()); } if(ObjectUtil.isEmpty(apiLeaderInfoVo)){ return new FebsResponse().success(); } return new FebsResponse().success().data(apiLeaderInfoVo); } @@ -495,4 +497,30 @@ return MallLeaderAchieveConversion.INSTANCE.entitysToVos(mallLeaderAchieves.getRecords()); } @Override public FebsResponse findSomeLeaderListInPage(ApiLeaderListDto apiLeaderListDto) { Page<MallTeamLeader> page = new Page<>(apiLeaderListDto.getPageNum(), apiLeaderListDto.getPageSize()); IPage<MallTeamLeader> mallTeamLeaderIPage = this.baseMapper.selectApiLeaderListInPage(page, apiLeaderListDto); List<ApiLeaderListVo> apiLeaderListVos = new ArrayList<>(); DataDictionaryCustom rangeSwitchDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.RANGE_SWITCH.getType(), DataDictionaryEnum.RANGE_SWITCH.getCode()); if (ObjectUtil.isNotNull(rangeSwitchDic)) { int rangeSwitch = Integer.parseInt(rangeSwitchDic.getValue()); if(1 == rangeSwitch){ DataDictionaryCustom rangeSizeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.RANGE_SIZE.getType(), DataDictionaryEnum.RANGE_SIZE.getCode()); double rangeSize = Double.parseDouble(rangeSizeDic.getValue()); for(MallTeamLeader mallTeamLeader : mallTeamLeaderIPage.getRecords()){ Double distance = mallTeamLeader.getDistance(); if(distance <= rangeSize){ ApiLeaderListVo apiLeaderListVo = MallTeamLeaderConversion.INSTANCE.entityToApiVo(mallTeamLeader); apiLeaderListVos.add(apiLeaderListVo); } } }else{ apiLeaderListVos = MallTeamLeaderConversion.INSTANCE.entitysToVos(mallTeamLeaderIPage.getRecords()); } } return new FebsResponse().success().data(apiLeaderListVos); } }