package com.ibeetl.admin.console.api; import com.ibeetl.admin.console.model.*; import com.ibeetl.admin.console.service.CuserConsoleService; import com.ibeetl.admin.console.service.OrderManageService; import com.ibeetl.admin.console.service.RedisService; import com.ibeetl.admin.console.service.StatisConsoleService; import com.ibeetl.admin.console.util.DateUtil; import com.ibeetl.admin.console.util.DoubleUtil; import com.ibeetl.admin.core.web.JsonResult; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import java.io.UnsupportedEncodingException; import java.text.SimpleDateFormat; import java.util.*; @RestController @Api(value = "订单管理接口类") public class OrderManageApi { private static final String MODEL = "/admin/front/order"; private final Logger log = LoggerFactory.getLogger(this.getClass()); static SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @Value("${jg.appkey}") String JG_APP_KEY; @Value("${jg.secret}") String JG_SECRET; @Autowired RedisService redisService; @Autowired OrderManageService orderManageService; @Autowired CuserConsoleService service; final Base64 base64 = new Base64(); /** * 查询用户订单 * @param orderModel * @return */ @PostMapping(MODEL + "/queryOrderDataList.do") @ResponseBody @ApiOperation(value="订单管理-用户订单", notes="test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType="query", name = "page", value = "页码", required = true, dataType = "int"), @ApiImplicitParam(paramType="query", name = "limit", value = "每页条数", required = true, dataType = "int"), @ApiImplicitParam(paramType="query", name = "startTime", value = "开始时间", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "endTime", value = "结束时间", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "orderStatus", value = "订单状态", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "createType", value = "订单归联类型(下单类型,1是正常下单 2是自助下单 3电话下单)", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "orderId", value = "订单编号", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "nickName", value = "用户昵称(手机号)", required = true, dataType = "String") }) public JsonResult> queryOrderDataList(@RequestBody OrderModel orderModel){ Map result = orderManageService.queryOrderApiList(orderModel); return JsonResult.success(result); } /** * 根据订单好查询订单详细 * @param orderModel * @return */ @PostMapping(MODEL + "/queryOrderDetailByNo.json") @ResponseBody @ApiOperation(value="订单管理-用户订单详情", notes="test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType="query", name = "page", value = "页码", required = true, dataType = "int"), @ApiImplicitParam(paramType="query", name = "limit", value = "每页条数", required = true, dataType = "int"), @ApiImplicitParam(paramType="query", name = "orderId", value = "订单编号", required = true, dataType = "int") }) public JsonResult> queryOrderDetailByNo(@RequestBody OrderModel orderModel) { Map map = orderManageService.queryOrderByOrderno(orderModel); return JsonResult.success(map); } /** * 查询指派员或回收员 * @param orderModel * @return */ @PostMapping(MODEL + "/queryCuserApiByType.json") @ResponseBody @ApiOperation(value="订单管理-指派工作人员", notes="test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType="query", name = "page", value = "页码", required = true, dataType = "int"), @ApiImplicitParam(paramType="query", name = "limit", value = "每页条数", required = true, dataType = "int"), @ApiImplicitParam(paramType="query", name = "orderId", value = "订单编号", required = true, dataType = "int"), @ApiImplicitParam(paramType="query", name = "name", value = "条件", required = true, dataType = "int") }) public JsonResult> queryCuserApiByType(@RequestBody OrderModel orderModel){ orderModel.setUserType("2"); Map map = orderManageService.queryCuserApiByType(orderModel); map.put("orderId",orderModel.getOrderId()); return JsonResult.success(map); } /** * 取消订单 * @param orderModel * @return */ @PostMapping(MODEL + "/cancelOrderData.json") @ResponseBody @ApiOperation(value="订单管理-确定弹窗", notes="test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType="query", name = "orderId", value = "订单编号", required = true, dataType = "int"), @ApiImplicitParam(paramType="query", name = "userId", value = "用户Id", required = true, dataType = "int"), @ApiImplicitParam(paramType="query", name = "cancelReasonName", value = "订单取消原因", required = true, dataType = "String") }) public JsonResult> cancelOrderData(@RequestBody OrderModel orderModel){ Map map = orderManageService.cancelOrderData(orderModel); return JsonResult.success(map); } /** * 重新指派 * @param orderModel * @return */ @PostMapping(MODEL + "/updateApirecByOrderId.json") @ResponseBody @ApiOperation(value="订单管理-重新指派", notes="test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType="query", name = "orderId", value = "订单编号", required = true, dataType = "int"), @ApiImplicitParam(paramType="query", name = "userId", value = "用户Id", required = true, dataType = "int"), }) public JsonResult> updateApirecByOrderId(@RequestBody OrderModel orderModel){ Map map = orderManageService.updateApirecByOrderId(orderModel,JG_APP_KEY,JG_SECRET); if(Integer.parseInt(map.get("code").toString())==0){ return JsonResult.success(map); }else{ return JsonResult.failMessage(map.get("msg").toString()); } } /** * 入库订单 * @param orderModel * @return */ @PostMapping(MODEL + "/queryStorageApiList.do") @ResponseBody @ApiOperation(value="订单管理-(待)入库订单", notes="test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType="query", name = "page", value = "页码", required = true, dataType = "int"), @ApiImplicitParam(paramType="query", name = "limit", value = "每页条数", required = true, dataType = "int"), @ApiImplicitParam(paramType="query", name = "startTime", value = "开始时间", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "endTime", value = "结束时间", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "name", value = "姓名(手机号,入库单编号)", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "storageStatus", value = "入库类型(0:已入库,1:入库中)", required = true, dataType = "String") }) public JsonResult> queryStorageApiList(@RequestBody OrderModel orderModel){ Map map = orderManageService.queryStorageApiList(orderModel); return JsonResult.success(map); } /** * 入库订单明细 * @param orderModel * @return */ @PostMapping(MODEL + "/queryStorageDetailApiList.json") @ResponseBody @ApiOperation(value="订单管理-入库订单明细", notes="test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType="query", name = "page", value = "页码", required = true, dataType = "int"), @ApiImplicitParam(paramType="query", name = "limit", value = "每页条数", required = true, dataType = "int"), @ApiImplicitParam(paramType="query", name = "orderType", value = "列表类型(0:订单列表 1:品类重量)", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "storageId", value = "入库单号", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "storageStatus", value = "入库类型(0:已入库,1:入库中)", required = true, dataType = "String") }) public JsonResult> queryStorageDetailApiList(@RequestBody OrderModel orderModel){ Map map = orderManageService.queryStorageDetailApiList(orderModel); return JsonResult.success(map); } @PostMapping(MODEL + "/queryUserInfoByPhone.json") @ResponseBody @ApiOperation(value="订单管理-查询有电话下单的用户", notes="test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", name = "mobilePhone", value = "手机号", required = true, dataType = "String") }) public JsonResult> queryUserInfoByPhone(@RequestBody OrderModel orderModel){ List result = new ArrayList<>(); List userModelList = service.queryUserByPhoneNormal(orderModel.getMobilePhone(),"3"); if(null!=userModelList&&userModelList.size()>0){ for (UserModel model:userModelList) { OrderModel orderModel1 = new OrderModel(); orderModel1.setUserId(model.getUserId()); if(!StringUtils.isEmpty(model.getNickName())){ try { orderModel1.setNickName(new String(base64.decode(model.getNickName()), "UTF-8")); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } UserAddressModel paramUserAddress = new UserAddressModel(); paramUserAddress.setUserId(model.getUserId()); paramUserAddress.setMobilePhone(model.getMobilePhone()); UserAddressModel addressModels = service.queryUserAddressInfo(model.getUserId(),model.getMobilePhone()); if(null!=addressModels){ orderModel1.setProvinceId(addressModels.getProvinceId()); orderModel1.setCityId(addressModels.getCityId()); orderModel1.setTownshipId(addressModels.getTownshipId()); orderModel1.setProvinceName(service.queryAreaName("1",addressModels.getProvinceId())); orderModel1.setCityName(service.queryAreaName("2",addressModels.getCityId())); orderModel1.setTownshipName(service.queryAreaName("3",addressModels.getTownshipId())); orderModel1.setAddressArea(addressModels.getAddressArea()); orderModel1.setDetailAddress(addressModels.getDetailAddress()); orderModel1.setLongitude(addressModels.getLongitude()); orderModel1.setLatitude(addressModels.getLatitude()); orderModel1.setMobilePhone(model.getMobilePhone()); orderModel1.setUserId(model.getUserId()); } } result.add(orderModel1); } } return JsonResult.success(result); } @PostMapping(MODEL + "/queryStoreList.json") @ResponseBody @ApiOperation(value="订单管理-查询所有门店", notes="test: 仅0有正确返回") public JsonResult>> queryStoreList(){ List> list = service.queryStoreList(); return JsonResult.success(list); } @PostMapping(MODEL + "/addOrderByPhone.json") @ResponseBody @ApiOperation(value="订单管理-添加订单", notes="test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType="query", name = "mobilePhone", value = "手机号", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "nickName", value = "用户昵称", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "type", value = "回收方式(0:上门回收 1:送货到店)", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "provinceId", value = "省", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "cityId", value = "市", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "townshipId", value = "区", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "addressArea", value = "区域名称", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "detailAddress", value = "详细地址", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "longitude", value = "经度", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "latitude", value = "纬度", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "reserveDay", value = "预约日期", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "reserveDate", value = "预约时间", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "itemIds", value = "物品类型id(多个用逗号隔开)", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "remark", value = "留言备注", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "storeId", value = "门店Id", required = true, dataType = "String") }) public JsonResult addOrderByPhone(@RequestBody OrderModel orderModel){ //1:电话下单必须为非注册用户 普通 if(!DoubleUtil.isMobile(orderModel.getMobilePhone())){ return JsonResult.failMessage("用户手机号不正确!"); } String isNomal = "0"; orderModel.setAddressArea(orderModel.getProvinceId()+orderModel.getCityId()+orderModel.getTownshipId()+orderModel.getDetailAddress()); String userType = "1"; UserModel userModel = service.queryCuserByUsertype(orderModel.getMobilePhone(), userType,null); if(userModel != null){ isNomal="1"; } List userModelOther = service.queryUserOtherByPhone(orderModel.getMobilePhone()); if(null!=userModelOther&&userModelOther.size()>0){ return JsonResult.failMessage("该用户存在平台身份,暂不支持下单操作"); } List orderModelList= service.queryOrderByPhone(orderModel.getMobilePhone()); if(null!=orderModelList&&orderModelList.size()>0){ return JsonResult.failMessage("该用户有未完成订单,不能重复下单"); } //必须传入经纬度 if(null!=orderModel.getLongitude()&&!"".equals(orderModel.getLongitude())){ System.out.println("经纬度=="+orderModel.getLongitude()); }else{ return JsonResult.failMessage("地图指定异常!"); } if(null!=orderModel.getLatitude()&&!"".equals(orderModel.getLatitude())){ System.out.println("经纬度=="+orderModel.getLatitude()); }else{ return JsonResult.failMessage("地图指定异常!"); } //下单是否超出范围 //String townIds = service.queryConfigByTagCodeOne("ORDER_REGION"); String partnerId=null; List keys =service.queryElectricTownIds(partnerId); //预约时间是否大于当前时间 String reTime = orderModel.getReserveDay()+" "+orderModel.getReserveDate()+":00"; log.info("传入的订单预约时间为 ===="+reTime); String now = sdf1.format(new Date()); if(DateUtil.checkBig(reTime,now)>=2){ return JsonResult.failMessage("预约时间不能小于当前时间!"); } userModel = service.insertUserInfo(orderModel,JG_APP_KEY,JG_SECRET,keys,isNomal); if(null!=userModel){ return JsonResult.success("下单成功!"); }else{ return JsonResult.failMessage("下单失败,订单超出范围!"); } } @PostMapping(MODEL + "/queryAdressArea.json") @ResponseBody @ApiOperation(value="订单管理-添加订单", notes="test: 仅0有正确返回") @ApiImplicitParams({ @ApiImplicitParam(paramType="query", name = "type", value = "查询类型(0:省份,1:对应的城市,2:城市对应的区)", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "level1Id", value = "省Id", required = true, dataType = "String"), @ApiImplicitParam(paramType="query", name = "level2Id", value = "市Id", required = true, dataType = "String") }) public JsonResult> queryAdressArea(@RequestBody SysAddressLevelModel addressLevelModel){ if(null!=addressLevelModel.getType()&&!"".equals(addressLevelModel.getType())){ List list =orderManageService.queryAdressArea(addressLevelModel); return JsonResult.success(list); }else{ return JsonResult.failMessage("请传入查询类型"); } } }