用basecontroller来当做基类,所有的controller都继承它,并且在里面直接弄好log4j以及objectMapper,方便以后的每一次操作,并且直接在里面注入需要的service,方便了代码的编写
@RestController
public class BaseController {
public Logger logger = LoggerFactory.getLogger(this.getClass().getName());
public ObjectMapper objectMapper = new ObjectMapper().setSerializationInclusion(JsonInclude.Include.NON_NULL);
public String url;
@Autowired
public PromotorHouseResourceManageService promotorHouseResourceManageService;
@Autowired
public HomeStayOrderService homeStayOrderService;
@Autowired
public HomeStayPaymentService homeStayPaymentService;
@Autowired
public MetroLineService metroLineService;
@Autowired
public MarketOrganizationService marketOrganizationService;
@Autowired
public IntermediaryMarketPromotorRatioService intermediaryMarketPromotorRatioService;
@Autowired
public HomeStayOrderRenterService homeStayOrderRenterService;
@Autowired
public HomeStayOrderMiddleManService homeStayOrderMiddleManService;
@Autowired
public HomeStayOrderLandlordService homeStayOrderLandlordService;
/**
* 参数检查
*
* @param o
* @param ii
*/
public void check(ParamObject o, int ii) {
Map<String, String> map = null;
try {
String value = objectMapper.writeValueAsString(o);
map = objectMapper.readValue(value, new TypeReference<Map<String, String>>() {
});
} catch (IOException e) {
logger.error("json转换错误", e);
}
for (int i = 1; i < ii + 1; i++) {
if (Objects.requireNonNull(map).get("param" + i) == null) {
throw new BizException("参数param + i + 为空!");
}
}
}
}
正式的controller里面,所传的参数如果比较简单都用一个paramObject对象来接受,定义param0是具体的url,也就是所有的controller都可以写在一个大的controller里面,不用多次复制粘贴代码根据传的参数param0来确定执行的方法.
正式类的controller:
@RestController
public class HomeStayController extends BaseController {
@PostMapping("/homeStay")
public Object homeStay(ParamObject params) {
boolean o = false;
try {
url = Optional.ofNullable(params.getParam0()).orElseThrow(() -> new BizException("系统错误"));
logger.info("request-" + url + "-param-" + objectMapper.writeValueAsString(params));
Object result = null;
switch (url) {
//返回已出租的房源的时间段
case "1":
result = homeStayService.getRentedDateList(params);
break;
//创建民宿订单功能
case "2":
result = homeStayOrderService.createHomeStayOrder(params);
break;
case "3":
break;
case "4":
break;
case "5":
break;
case "6":
break;
case "7":
break;
default:
result = "error:404,参数param0不正确,请填写正确的url地址!";
break;
}
if (o) {
logger.info("success-" + url + "-result-" + objectMapper.writeValueAsString(result));
}
return Result.createSuccess("ok", result);
} catch (BizException e) {
logger.error("fail-" + url + "-result-" + e.getMessage(), e);
return Result.createBizError(-1001, e.getMessage());
} catch (Exception e) {
logger.error("error-" + url + "-result-" + e.getMessage(), e);
logger.error(e.getMessage(), e);
return Result.createError();
}
}
}