From 73a42608c3e813f5adcd4b6e0946d5b689112ee8 Mon Sep 17 00:00:00 2001 From: xyiege Date: Mon, 19 Sep 2022 13:02:18 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=89=8B=E5=8A=A8=E7=BB=B4?= =?UTF-8?q?=E6=8A=A4=E5=95=86=E5=93=81=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../szwh/controller/api/GoodsController.java | 24 +++- .../cn/chjyj/szwh/service/GoodsService.java | 9 ++ .../szwh/service/impl/GoodsServiceImpl.java | 123 ++++++++++++++++++ 3 files changed, 152 insertions(+), 4 deletions(-) diff --git a/src/main/java/cn/chjyj/szwh/controller/api/GoodsController.java b/src/main/java/cn/chjyj/szwh/controller/api/GoodsController.java index 8e0a4c8..a54f127 100644 --- a/src/main/java/cn/chjyj/szwh/controller/api/GoodsController.java +++ b/src/main/java/cn/chjyj/szwh/controller/api/GoodsController.java @@ -1,13 +1,12 @@ package cn.chjyj.szwh.controller.api; import cn.chjyj.szwh.controller.BaseController; +import cn.chjyj.szwh.service.GoodsService; import com.alibaba.fastjson2.JSONObject; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; /** * API端产品信息 @@ -17,6 +16,9 @@ import org.springframework.web.bind.annotation.RestController; public class GoodsController extends BaseController { private static Log log = LogFactory.getLog(GoodsController.class); + @Autowired + private GoodsService goodsService; + /** * 添加到购物车 * only support POST method @@ -37,4 +39,18 @@ public class GoodsController extends BaseController { jsonObject.put("msg","成功"); return jsonObject; } + + /** + * 手工导入商品信息 + * post 方式提价 + * @return + */ + @PostMapping("/manuimport") + public JSONObject manuImport(@RequestBody String jsonStr){ + JSONObject request =JSONObject.parseObject(jsonStr); + int icount = goodsService.manuImportGoods(request); + jsonObject.put("count",icount); + jsonObject.put("msg","成功"); + return jsonObject; + } } diff --git a/src/main/java/cn/chjyj/szwh/service/GoodsService.java b/src/main/java/cn/chjyj/szwh/service/GoodsService.java index 61d17ad..a9b979e 100644 --- a/src/main/java/cn/chjyj/szwh/service/GoodsService.java +++ b/src/main/java/cn/chjyj/szwh/service/GoodsService.java @@ -1,7 +1,9 @@ package cn.chjyj.szwh.service; import cn.chjyj.szwh.bean.Goods; +import com.alibaba.fastjson2.JSONObject; +import javax.xml.bind.util.JAXBSource; import java.util.List; import java.util.Map; @@ -86,4 +88,11 @@ public interface GoodsService { * @return */ int ranksort(String goodsIsli,int type); + + /** + * 手工导入商品信息 + * @param json + * @return + */ + int manuImportGoods(JSONObject jsonObject); } diff --git a/src/main/java/cn/chjyj/szwh/service/impl/GoodsServiceImpl.java b/src/main/java/cn/chjyj/szwh/service/impl/GoodsServiceImpl.java index 891f5c8..e88a9b1 100644 --- a/src/main/java/cn/chjyj/szwh/service/impl/GoodsServiceImpl.java +++ b/src/main/java/cn/chjyj/szwh/service/impl/GoodsServiceImpl.java @@ -144,6 +144,7 @@ public class GoodsServiceImpl implements GoodsService { String cstart = sdjson.getString("contractualPeriodStart"); String curTime = new SimpleDateFormat("HH:mm:ss").format(new Date()); String ncstart = cstart + " " + curTime; + // String cend = nsdjson.getString("contractualPeriodEnd"); String ncend = cend + " 23:59:59"; @@ -554,4 +555,126 @@ public class GoodsServiceImpl implements GoodsService { } return ret; } + + /** + * 手动导入商品信息 + * @param jsonObject + * @return + */ + @Override + public int manuImportGoods(JSONObject jsonObject) { + // 日期时间格式 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + int count = 0; //统计更新数量 + String host = ProperUtils.getSzwhProp("ENTRUST_URL"); + //创建签名 + String sign = SignUtils.createSign("entrust"); + // 请求头 + Map hmap = new HashMap(); + hmap.put("entrust_token", sign); + + // 产品详情地址 + String gdurl = host + "/consign/exchange/v1/selectEntrustDetails"; + // 循环查询商品的详情 + if(jsonObject!=null && jsonObject.containsKey("data") ) { + // json的data节点 + JSONArray jsonArray = jsonObject.getJSONArray("data"); + for (int i = 0; i < jsonArray.size(); i++) { + // 获取到sourceData字段信息 + JSONObject sdjson = (JSONObject) jsonArray.get(i); + String nsdstr = sdjson.getString("sourceData"); + if (nsdstr == null) { + continue; + } else { + JSONObject nsdjson = JSONObject.parseObject(nsdstr); + // 从sourcedata节点中提取商品唯一编号 + String goodsId = nsdjson.getString("identifier"); + // 以identifier为主键查询详情 + String gdetailUrl = gdurl + "/" + goodsId; + // 请求商品的详情 + JSONObject gdJson = RequestUtils.GetData(gdetailUrl, hmap,true); + log.info(goodsId + "详情:" + gdJson); + //处理返回的结果 + //JSONArray gdArr = gdJson.getJSONArray("data"); + // 如果goods表中存在记录,不进行操作 + Goods tgoods = goodsMapper.getGoodsByIsli(goodsId); + if (tgoods != null) { + continue; + } + // add goodsSource,循环插入 商品资源 +// for (int x = 0; x < gdArr.size(); x++) { + // 从里面取出数据 + JSONObject gditem = gdJson.getJSONObject("data"); + // 商品详情json非空时候 + if(gditem!=null){ + GoodsSource goodsSource = ApiGoodsUtils.jsonToGoodsSource(gditem, goodsId); + goodsSourceMapper.add(goodsSource); + } +// } + // insertGoodsDetail + GoodsDetail goodsDetail = ApiGoodsUtils.jsonToGoodsDetail(nsdjson, sdjson); + // 返回商品详情 + int gdid = goodsDetailMapper.addGoodsDetail(goodsDetail); + + //抽取target 字段中的json,转为jsonobject + JSONObject targetJson = sdjson.getJSONObject("targetData"); + //处理状态 + int istatus = 0; + if (sdjson.getInteger("status") == 1 || sdjson.getInteger("status") == 4 || + sdjson.getInteger("status") == 5) { + istatus = 1; + } else if (sdjson.getInteger("status") == 2) { + istatus = 2; + } else { + istatus = 4; + } + Goods goods = new Goods(); + //商品起止时间 + String cstart = sdjson.getString("contractualPeriodStart"); + String curTime = new SimpleDateFormat("HH:mm:ss").format(new Date()); + String ncstart = cstart + " " + curTime; + //转换为date + String cend = nsdjson.getString("contractualPeriodEnd"); + String ncend = cend + " 23:59:59"; + try { + //起止时间转为timestamp + SimpleDateFormat tsdf = new SimpleDateFormat("yyyyMMddHHmmss"); + //开始 + Timestamp ncst = new Timestamp(tsdf.parse(ncstart).getTime()); + //截至 + Timestamp ncet = new Timestamp(tsdf.parse(ncend).getTime()); + goods.setContractualStartTime(ncst); + goods.setContractualtimeEndTime(ncet); + }catch (Exception ex){ + // do nothing + } + goods.setGoodsDetailId(goodsDetail.getId()); + goods.setContractStatus(nsdjson.getInteger("contractStatus")); + goods.setGoodsStatus(istatus); + goods.setOldStatus(0); // 默认为0 + goods.setEntrustStatus(sdjson.getInteger("status")); + // + goods.setUserIslicode(targetJson.getString("identifier")); + goods.setUsername(targetJson.getString("titleName")); + goods.setIsLicode(sdjson.getString("isliCode")); + goods.setGoodsIslicode(nsdjson.getString("identifier")); + goods.setRecommendSort(1); // 默认排序1 + // 添加,返回当前的编号 + int ret_gid = goodsMapper.addGoods(goods); + //添加操作日志 + OperationLog oplog = new OperationLog(); + oplog.setLogid(goods.getId()); + String nowStr = sdf.format(new Date()); + String message = nowStr + " 发布标的成功"; + oplog.setMessage(message); + oplog.setType("goods"); + // 日志入库 + operationLogMapper.addLog(oplog); + } + // 计算器增加1 + count++; + } + } + return count; + } }