pdd-api
This commit is contained in:
parent
fd5f786c58
commit
57c788daa3
|
|
@ -17,10 +17,10 @@ import org.springframework.web.bind.annotation.RestController;
|
|||
@RestController
|
||||
public class HomeController {
|
||||
@GetMapping("/")
|
||||
public String home(){
|
||||
public String home() {
|
||||
//设置appKey和appSecret,全局设置一次
|
||||
String appkey = "7005157746437834253";
|
||||
String appSecret = "8104c8b8-9085-4a80-9248-629759b4f1a3";
|
||||
String appkey = "7005157746437834253";
|
||||
String appSecret = "8104c8b8-9085-4a80-9248-629759b4f1a3";
|
||||
appkey = "7344938657423296019";
|
||||
appSecret = "4e704882-832a-42e5-845f-6af991ce0ce2";
|
||||
GlobalConfig.initAppKey(appkey);
|
||||
|
|
@ -28,7 +28,9 @@ public class HomeController {
|
|||
//获取access_token方法
|
||||
AccessToken accessToken = AccessTokenBuilder.build(90158786L); //入参为shopId 4463798L
|
||||
|
||||
|
||||
if ("50002".equals(accessToken.getCode())) {
|
||||
return accessToken.getSubMsg();
|
||||
}
|
||||
|
||||
OrderSearchListRequest request = new OrderSearchListRequest();
|
||||
OrderSearchListParam param = request.getParam();
|
||||
|
|
|
|||
|
|
@ -0,0 +1,19 @@
|
|||
package com.qihang.pdd.config;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.DbType;
|
||||
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
|
||||
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
|
||||
import org.mybatis.spring.annotation.MapperScan;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@Configuration
|
||||
@MapperScan("com.qihang.pdd.mapper")
|
||||
public class MybatisPlusConfig {
|
||||
@Bean
|
||||
public MybatisPlusInterceptor mybatisPlusInterceptor() {
|
||||
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
|
||||
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); //注意使用哪种数据库
|
||||
return interceptor;
|
||||
}
|
||||
}
|
||||
|
|
@ -16,12 +16,13 @@ import org.slf4j.Logger;
|
|||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@AllArgsConstructor
|
||||
@RequestMapping("/pdd_api")
|
||||
@RequestMapping("/order")
|
||||
@RestController
|
||||
public class AjaxOrderPddController {
|
||||
private static Logger log = LoggerFactory.getLogger(AjaxOrderPddController.class);
|
||||
|
|
@ -41,8 +42,8 @@ public class AjaxOrderPddController {
|
|||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
@RequestMapping(value = "/order/pull_order", method = RequestMethod.GET)
|
||||
public ApiResult<Object> getOrderList(OpenApiRequest reqData)
|
||||
@RequestMapping(value = "/pull_order", method = RequestMethod.POST)
|
||||
public ApiResult<Object> getOrderList(@RequestBody OpenApiRequest reqData)
|
||||
throws Exception {
|
||||
Integer updType = reqData.getUpdType();//更新类型0拉取新订单1更新订单
|
||||
String startDate = reqData.getStartDate();//reqData.getString("startTime");
|
||||
|
|
@ -54,7 +55,7 @@ public class AjaxOrderPddController {
|
|||
if (shop.getType() != EnumShopType.PDD.getIndex()) {
|
||||
return ApiResult.build(HttpStatus.PARAMS_ERROR, "参数错误,店铺不是PDD店铺");
|
||||
}
|
||||
SysPlatform platform = platformService.selectById(EnumShopType.JD.getIndex());
|
||||
SysPlatform platform = platformService.selectById(EnumShopType.PDD.getIndex());
|
||||
|
||||
if(!StringUtils.hasText(platform.getAppKey())) {
|
||||
return ApiResult.build(HttpStatus.PARAMS_ERROR, "平台配置错误,没有找到AppKey");
|
||||
|
|
@ -108,16 +109,16 @@ public class AjaxOrderPddController {
|
|||
if (!StringUtils.isEmpty(startTime_))
|
||||
startTime = DateUtil.dateTimeToStamp(startTime_).longValue();*/
|
||||
|
||||
if (!StringUtils.isEmpty(startDate)) {
|
||||
// 选择了开始日期,从开始时间直接循环更新到结束时间,如果选择的时间大于数据库订单最后的时间,那么就用数据库的订单时间
|
||||
Long startTimeTmp = DateUtil.dateTimeToStamp(startDate).longValue();
|
||||
if (startTimeTmp < startTime)
|
||||
startTime = startTimeTmp;
|
||||
|
||||
// 如果选择的结束时间不为空,就用选择的时间
|
||||
if (!StringUtils.isEmpty(endDate))
|
||||
endTime = DateUtil.dateTimeToStamp(endDate).longValue();
|
||||
}
|
||||
// if (!StringUtils.isEmpty(startDate)) {
|
||||
// // 选择了开始日期,从开始时间直接循环更新到结束时间,如果选择的时间大于数据库订单最后的时间,那么就用数据库的订单时间
|
||||
// Long startTimeTmp = DateUtil.dateTimeToStamp(startDate).longValue();
|
||||
// if (startTimeTmp < startTime)
|
||||
// startTime = startTimeTmp;
|
||||
//
|
||||
// // 如果选择的结束时间不为空,就用选择的时间
|
||||
// if (!StringUtils.isEmpty(endDate))
|
||||
// endTime = DateUtil.dateTimeToStamp(endDate).longValue();
|
||||
// }
|
||||
|
||||
/*
|
||||
* if (StringUtils.isEmpty(startDate)) { //没有选择开始日期 var pullOrderLog =
|
||||
|
|
@ -134,8 +135,7 @@ public class AjaxOrderPddController {
|
|||
long forSize = (kaishidaojiesu % (60 * 60 * 24) == 0) ? kaishidaojiesu / (60 * 60 * 24)
|
||||
: kaishidaojiesu / (60 * 60 * 24) + 1;// 计算需要循环的次数
|
||||
|
||||
log.info("开始循环更新拼多多订单。开始时间:" + DateUtil.unixTimeStampToDate(startTime) + "结束时间:"
|
||||
+ DateUtil.unixTimeStampToDate(endTime) + "总共循环" + forSize);
|
||||
// log.info("开始循环更新拼多多订单。开始时间:" + DateUtil.unixTimeStampToDate(startTime) + "结束时间:" + DateUtil.unixTimeStampToDate(endTime) + "总共循环" + forSize);
|
||||
int updCount = 0;
|
||||
int insertCount = 0;
|
||||
int failCount = 0;
|
||||
|
|
@ -149,11 +149,9 @@ public class AjaxOrderPddController {
|
|||
endTime1 = endTime;
|
||||
int pageIndex = 1;
|
||||
|
||||
result = this.pullPddOrder(appKey, appSercet, accessToken, pageIndex, pageSize, startTime1, endTime1,
|
||||
shopId);
|
||||
result = this.pullPddOrder(params.getAppKey(),params.getAppSecret(), accessToken, pageIndex, pageSize, startTime1, endTime1, shop.getSellerId());
|
||||
pageIndex++;
|
||||
log.info("开始循环" + i + "。开始时间:" + DateUtil.unixTimeStampToDate(startTime1) + "结束时间:"
|
||||
+ DateUtil.unixTimeStampToDate(endTime1) + "。");
|
||||
// log.info("开始循环" + i + "。开始时间:" + DateUtil.unixTimeStampToDate(startTime1) + "结束时间:" + DateUtil.unixTimeStampToDate(endTime1) + "。");
|
||||
// log.info("开始更新第"+pageIndex+"页");
|
||||
if (result.getCode() == 0) {
|
||||
updCount += result.getData().getUpdCount();
|
||||
|
|
@ -161,36 +159,35 @@ public class AjaxOrderPddController {
|
|||
failCount += result.getData().getFailCount();
|
||||
// log.info("查询到数据:"+result.getData().getTotalRecords());
|
||||
} else if (result.getCode() > 0)
|
||||
return new ApiResult<>(result.getCode(), result.getMsg());
|
||||
return ApiResult.build(result.getCode(), result.getMsg());
|
||||
// 计算总页数
|
||||
int totalPage = (result.getData().getTotalRecords() % pageSize == 0)
|
||||
? result.getData().getTotalRecords() / pageSize
|
||||
: (result.getData().getTotalRecords() / pageSize) + 1;
|
||||
log.info("开始循环" + i + "。查询到" + result.getData().getTotalRecords() + "条数据,总共:" + totalPage + "页");
|
||||
while (pageIndex <= totalPage) {
|
||||
|
||||
// log.info("开始更新第"+pageIndex+"页");
|
||||
// log.info("查询到数据:"+result.getData().getTotalRecords());
|
||||
result = this.pullPddOrder(appKey, appSercet, accessToken, pageIndex, pageSize, startTime1,
|
||||
endTime1, shopId);
|
||||
if (result.getCode() == 0) {
|
||||
updCount += result.getData().getUpdCount();
|
||||
insertCount += result.getData().getAddCount();
|
||||
failCount += result.getData().getFailCount();
|
||||
}
|
||||
pageIndex++;
|
||||
}
|
||||
// while (pageIndex <= totalPage) {
|
||||
//
|
||||
// // log.info("开始更新第"+pageIndex+"页");
|
||||
// // log.info("查询到数据:"+result.getData().getTotalRecords());
|
||||
// result = this.pullPddOrder(appKey, appSercet, accessToken, pageIndex, pageSize, startTime1, endTime1, shopId);
|
||||
// if (result.getCode() == 0) {
|
||||
// updCount += result.getData().getUpdCount();
|
||||
// insertCount += result.getData().getAddCount();
|
||||
// failCount += result.getData().getFailCount();
|
||||
// }
|
||||
// pageIndex++;
|
||||
// }
|
||||
// pageIndex = 1;
|
||||
|
||||
}
|
||||
|
||||
ErpSalesPullCountResp resp = new ErpSalesPullCountResp();// 返回结果
|
||||
resp.setStartTime(DateUtil.unixTimeStampToDate(startTime));
|
||||
resp.setEndTime(DateUtil.unixTimeStampToDate(endTime));
|
||||
resp.setAddCount(insertCount);
|
||||
resp.setFailCount(failCount);
|
||||
resp.setUpdCount(updCount);
|
||||
log.info("更新完成,结果:" + JsonUtil.transferToJson(resp));
|
||||
// ErpSalesPullCountResp resp = new ErpSalesPullCountResp();// 返回结果
|
||||
// resp.setStartTime(DateUtil.unixTimeStampToDate(startTime));
|
||||
// resp.setEndTime(DateUtil.unixTimeStampToDate(endTime));
|
||||
// resp.setAddCount(insertCount);
|
||||
// resp.setFailCount(failCount);
|
||||
// resp.setUpdCount(updCount);
|
||||
// log.info("更新完成,结果:" + JsonUtil.transferToJson(resp));
|
||||
/*
|
||||
* try { //添加更新日志 salesOrderService.addErpSalesPullOrderLog(startTime, endTime,
|
||||
* shopId, result.getData().getAddCount(), result.getData().getFailCount(),
|
||||
|
|
@ -198,9 +195,9 @@ public class AjaxOrderPddController {
|
|||
* log.info("添加更新日志错误"); }
|
||||
*/
|
||||
if (result.getCode() == 0)
|
||||
return new ApiResult<>(EnumResultVo.SUCCESS.getIndex(), "SUCCESS", resp);
|
||||
return ApiResult.build(HttpStatus.SUCCESS, "SUCCESS");
|
||||
else
|
||||
return new ApiResult<>(result.getCode(), result.getMsg());
|
||||
return ApiResult.build(result.getCode(), result.getMsg());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -229,17 +226,17 @@ public class AjaxOrderPddController {
|
|||
pddOrderListGetRequest.setPageSize(pageSize);
|
||||
|
||||
ErpSalesPullCountResp resp = new ErpSalesPullCountResp();
|
||||
resp.setStartTime(DateUtil.unixTimeStampToDate(startTime));
|
||||
resp.setEndTime(DateUtil.unixTimeStampToDate(endTime));
|
||||
resp.setStartTime("2024-03-03 00:00:00");
|
||||
resp.setEndTime("2024-03-13 23:00:00");
|
||||
|
||||
Integer addCount = 0, updCount = 0, failCount = 0;
|
||||
log.info("开始更新第" + pageNo + "页。。。。。。。");
|
||||
PddOrderListGetResponse pddOrderListGetResponse = client.syncInvoke(pddOrderListGetRequest, accessToken);
|
||||
if (pddOrderListGetResponse.getErrorResponse() != null) {
|
||||
if (pddOrderListGetResponse.getErrorResponse().getErrorCode().intValue() == 10019) {
|
||||
return new ApiResult<>(EnumResultVo.TokenFail.getIndex(), "Token过期");
|
||||
return ApiResult.build(HttpStatus.UNAUTHORIZED, "Token过期");
|
||||
} else
|
||||
return new ApiResult<>(EnumResultVo.SystemException.getIndex(),
|
||||
return ApiResult.build(HttpStatus.ERROR,
|
||||
"接口调用失败:" + pddOrderListGetResponse.getErrorResponse().getErrorMsg());
|
||||
} else {
|
||||
// 获取到了数据
|
||||
|
|
@ -250,9 +247,9 @@ public class AjaxOrderPddController {
|
|||
// if(item.getOrderSn().equals("210629-025663970220736")){
|
||||
// String s= item.getOrderSn();
|
||||
// }
|
||||
PddOrder pddEntity = new PddOrder();
|
||||
/*PddOrder pddEntity = new PddOrder();
|
||||
|
||||
/*pddEntity.setBuyer_memo(item.getBuyerMemo());
|
||||
pddEntity.setBuyer_memo(item.getBuyerMemo());
|
||||
pddEntity.setCapital_free_discount(item.getCapitalFreeDiscount());
|
||||
pddEntity.setCity(item.getCity());
|
||||
pddEntity.setConfirm_status(item.getConfirmStatus());
|
||||
|
|
@ -339,7 +336,7 @@ public class AjaxOrderPddController {
|
|||
} else
|
||||
resp.setTotalRecords(0);
|
||||
}
|
||||
return new ApiResult<>(EnumResultVo.SUCCESS.getIndex(), "SUCCESS", resp);
|
||||
return ApiResult.build(HttpStatus.SUCCESS, "SUCCESS", resp);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,97 +1,97 @@
|
|||
package com.qihang.pdd.controller;
|
||||
|
||||
|
||||
import com.pdd.pop.sdk.http.PopAccessTokenClient;
|
||||
import com.pdd.pop.sdk.http.token.AccessTokenResponse;
|
||||
import com.qihang.erp.api.service.IShopService;
|
||||
import com.zhijian.core.config.ServerConfig;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.io.IOException;
|
||||
|
||||
@RequestMapping("/pdd_api2")
|
||||
@Controller
|
||||
public class PddOAuthController {
|
||||
@Autowired
|
||||
private IShopService shopService;
|
||||
@Autowired
|
||||
private ServerConfig serverConfig;
|
||||
private static Logger log = LoggerFactory.getLogger(PddOAuthController.class);
|
||||
|
||||
@RequestMapping("/oauth")
|
||||
public String oauth(HttpServletRequest req) {
|
||||
String returnUrl = serverConfig.getUrl() + "/pdd_api/getToken&state="+req.getParameter("shopId");
|
||||
var shop = shopService.selectShopById(Long.parseLong(req.getParameter("shopId")));
|
||||
|
||||
String appKey = shop.getAppkey();
|
||||
String appSercet = shop.getAppSercet();
|
||||
|
||||
String url = "https://mms.pinduoduo.com/open.html?response_type=code&client_id=" + appKey + "&redirect_uri=" + returnUrl;
|
||||
return "redirect:" + url;
|
||||
}
|
||||
|
||||
@RequestMapping("/getToken")
|
||||
public String getToken(HttpServletRequest req) throws IOException, InterruptedException {
|
||||
log.info("/**********获取拼多多授权token*********/");
|
||||
String code = req.getParameter("code");
|
||||
|
||||
Long shopId =Long.parseLong(req.getParameter("state"));
|
||||
var shop = shopService.selectShopById(shopId);
|
||||
String appKey = shop.getAppkey();
|
||||
String appSercet = shop.getAppSercet();
|
||||
PopAccessTokenClient accessTokenClient = new PopAccessTokenClient(appKey, appSercet);
|
||||
|
||||
// 生成AccessToken
|
||||
try {
|
||||
AccessTokenResponse response = accessTokenClient.generate(code);
|
||||
if(response.getErrorResponse()!=null){
|
||||
log.info("/***************获取拼多多授权token错误:"+response.getErrorResponse().getErrorMsg()+"**************/");
|
||||
}else{
|
||||
//保存accessToken
|
||||
System.out.println(shopId +"--token:" + response.getAccessToken()+",thirdId:"+response.getOwnerId()+",shopId:"+shopId);
|
||||
|
||||
shopService.updateSessionKey(shopId,Long.parseLong(response.getOwnerId()),response.getAccessToken());
|
||||
|
||||
// thirdSettingService.updateEntity(shopId, response.getAccessToken(), response.getRefreshToken(), response.getExpiresIn(),response.getOwnerId());
|
||||
return "redirect:/pdd/getTokenSuccess?mallId="+response.getOwnerId();
|
||||
/* String state = req.getParameter("state");
|
||||
if (state.equalsIgnoreCase("GETORDERLIST")) {
|
||||
//获取订单list
|
||||
return "redirect:/shop/shop_list";
|
||||
} else if (state.equalsIgnoreCase("DCGOODSLIST")) {
|
||||
//商品list
|
||||
return "redirect:/goods/pdd_list";
|
||||
}*/
|
||||
}
|
||||
} catch (Exception e) {
|
||||
|
||||
e.printStackTrace();
|
||||
|
||||
}
|
||||
return "redirect:/";
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取授权成功
|
||||
* @param req
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("/getTokenSuccess")
|
||||
public String getTokeSuccess(HttpServletRequest req, @RequestParam Long mallId, Model model){
|
||||
var shop = shopService.selectShopById(mallId);
|
||||
model.addAttribute("shop",shop);
|
||||
model.addAttribute("shopId",shop.getId());
|
||||
return "get_token_success";
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
//package com.qihang.pdd.controller;
|
||||
//
|
||||
//
|
||||
//import com.pdd.pop.sdk.http.PopAccessTokenClient;
|
||||
//import com.pdd.pop.sdk.http.token.AccessTokenResponse;
|
||||
//import com.qihang.erp.api.service.IShopService;
|
||||
//import com.zhijian.core.config.ServerConfig;
|
||||
//import org.slf4j.Logger;
|
||||
//import org.slf4j.LoggerFactory;
|
||||
//import org.springframework.beans.factory.annotation.Autowired;
|
||||
//import org.springframework.stereotype.Controller;
|
||||
//import org.springframework.ui.Model;
|
||||
//import org.springframework.web.bind.annotation.RequestMapping;
|
||||
//import org.springframework.web.bind.annotation.RequestParam;
|
||||
//
|
||||
//import javax.servlet.http.HttpServletRequest;
|
||||
//import java.io.IOException;
|
||||
//
|
||||
//@RequestMapping("/pdd_api2")
|
||||
//@Controller
|
||||
//public class PddOAuthController {
|
||||
// @Autowired
|
||||
// private IShopService shopService;
|
||||
// @Autowired
|
||||
// private ServerConfig serverConfig;
|
||||
// private static Logger log = LoggerFactory.getLogger(PddOAuthController.class);
|
||||
//
|
||||
// @RequestMapping("/oauth")
|
||||
// public String oauth(HttpServletRequest req) {
|
||||
// String returnUrl = serverConfig.getUrl() + "/pdd_api/getToken&state="+req.getParameter("shopId");
|
||||
// var shop = shopService.selectShopById(Long.parseLong(req.getParameter("shopId")));
|
||||
//
|
||||
// String appKey = shop.getAppkey();
|
||||
// String appSercet = shop.getAppSercet();
|
||||
//
|
||||
// String url = "https://mms.pinduoduo.com/open.html?response_type=code&client_id=" + appKey + "&redirect_uri=" + returnUrl;
|
||||
// return "redirect:" + url;
|
||||
// }
|
||||
//
|
||||
// @RequestMapping("/getToken")
|
||||
// public String getToken(HttpServletRequest req) throws IOException, InterruptedException {
|
||||
// log.info("/**********获取拼多多授权token*********/");
|
||||
// String code = req.getParameter("code");
|
||||
//
|
||||
// Long shopId =Long.parseLong(req.getParameter("state"));
|
||||
// var shop = shopService.selectShopById(shopId);
|
||||
// String appKey = shop.getAppkey();
|
||||
// String appSercet = shop.getAppSercet();
|
||||
// PopAccessTokenClient accessTokenClient = new PopAccessTokenClient(appKey, appSercet);
|
||||
//
|
||||
// // 生成AccessToken
|
||||
// try {
|
||||
// AccessTokenResponse response = accessTokenClient.generate(code);
|
||||
// if(response.getErrorResponse()!=null){
|
||||
// log.info("/***************获取拼多多授权token错误:"+response.getErrorResponse().getErrorMsg()+"**************/");
|
||||
// }else{
|
||||
// //保存accessToken
|
||||
// System.out.println(shopId +"--token:" + response.getAccessToken()+",thirdId:"+response.getOwnerId()+",shopId:"+shopId);
|
||||
//
|
||||
// shopService.updateSessionKey(shopId,Long.parseLong(response.getOwnerId()),response.getAccessToken());
|
||||
//
|
||||
//// thirdSettingService.updateEntity(shopId, response.getAccessToken(), response.getRefreshToken(), response.getExpiresIn(),response.getOwnerId());
|
||||
// return "redirect:/pdd/getTokenSuccess?mallId="+response.getOwnerId();
|
||||
///* String state = req.getParameter("state");
|
||||
// if (state.equalsIgnoreCase("GETORDERLIST")) {
|
||||
// //获取订单list
|
||||
// return "redirect:/shop/shop_list";
|
||||
// } else if (state.equalsIgnoreCase("DCGOODSLIST")) {
|
||||
// //商品list
|
||||
// return "redirect:/goods/pdd_list";
|
||||
// }*/
|
||||
// }
|
||||
// } catch (Exception e) {
|
||||
//
|
||||
// e.printStackTrace();
|
||||
//
|
||||
// }
|
||||
// return "redirect:/";
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * 获取授权成功
|
||||
// * @param req
|
||||
// * @param model
|
||||
// * @return
|
||||
// */
|
||||
// @RequestMapping("/getTokenSuccess")
|
||||
// public String getTokeSuccess(HttpServletRequest req, @RequestParam Long mallId, Model model){
|
||||
// var shop = shopService.selectShopById(mallId);
|
||||
// model.addAttribute("shop",shop);
|
||||
// model.addAttribute("shopId",shop.getId());
|
||||
// return "get_token_success";
|
||||
// }
|
||||
//
|
||||
//
|
||||
//
|
||||
//}
|
||||
|
|
|
|||
Loading…
Reference in New Issue