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<Map<String, Object>> queryOrderDataList(@RequestBody OrderModel orderModel){
|
Map<String, Object> 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<Map<String, Object>> queryOrderDetailByNo(@RequestBody OrderModel orderModel) {
|
Map<String, Object> 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<Map<String, Object>> queryCuserApiByType(@RequestBody OrderModel orderModel){
|
orderModel.setUserType("2");
|
Map<String, Object> 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<Map<String, Object>> cancelOrderData(@RequestBody OrderModel orderModel){
|
Map<String, Object> 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<Map<String, Object>> updateApirecByOrderId(@RequestBody OrderModel orderModel){
|
Map<String, Object> 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<Map<String, Object>> queryStorageApiList(@RequestBody OrderModel orderModel){
|
Map<String, Object> 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<Map<String, Object>> queryStorageDetailApiList(@RequestBody OrderModel orderModel){
|
Map<String, Object> 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<List<OrderModel>> queryUserInfoByPhone(@RequestBody OrderModel orderModel){
|
List<OrderModel> result = new ArrayList<>();
|
List<UserModel> 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<List<Map<String,Object>>> queryStoreList(){
|
List<Map<String,Object>> 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<String> 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<UserModel> userModelOther = service.queryUserOtherByPhone(orderModel.getMobilePhone());
|
if(null!=userModelOther&&userModelOther.size()>0){
|
return JsonResult.failMessage("该用户存在平台身份,暂不支持下单操作");
|
}
|
List<OrderModel> 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<String> 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<List<SysAddressLevelModel>> queryAdressArea(@RequestBody SysAddressLevelModel addressLevelModel){
|
if(null!=addressLevelModel.getType()&&!"".equals(addressLevelModel.getType())){
|
List<SysAddressLevelModel> list =orderManageService.queryAdressArea(addressLevelModel);
|
return JsonResult.success(list);
|
}else{
|
return JsonResult.failMessage("请传入查询类型");
|
}
|
}
|
}
|