提交 f470d559 authored 作者: 梁业锦's avatar 梁业锦 💬

Merge remote-tracking branch 'origin/master'

...@@ -65,7 +65,9 @@ public class ThirdPartyController { ...@@ -65,7 +65,9 @@ public class ThirdPartyController {
} }
/** /**
* 根据订单号获取详细订单数据 * 根据订单号获取详细订单数据2
*
*
*/ */
@ApiOperation(value = "根据订单号获取详细订单数据") @ApiOperation(value = "根据订单号获取详细订单数据")
@GetMapping(value ="/order/detail/{orderId}") @GetMapping(value ="/order/detail/{orderId}")
...@@ -73,18 +75,20 @@ public class ThirdPartyController { ...@@ -73,18 +75,20 @@ public class ThirdPartyController {
return tbCfOrderService.getOrderDetailThird(orderId); return tbCfOrderService.getOrderDetailThird(orderId);
} }
/** /**
* 获取用户列表 * 根据userId获取用户信息
* @return
*/ */
@ApiOperation(value = "获取用户列表") @ApiOperation(value = "获取用户列表")
@GetMapping(value ="/user") @GetMapping(value ="/user/{userId}")
public Result getAllUser( @ApiParam(value = "页数") @RequestParam(required = false) Integer pageNum, public Result getAllUser(@PathVariable("userId")String userId) {
@ApiParam(value ="每页大小 默认100") @RequestParam(required = false) Integer pageSize) { return tbCfUserInfoService.queryUserByUserId(userId);
if (pageNum == null) {
pageNum = 1;
} }
if (pageSize == null) { /**
pageSize = 100; * 获取报关品名
} */
return tbCfUserInfoService.queryUserList(pageNum,pageSize); @ApiOperation(value = "获取报关品名")
@GetMapping(value ="/description/{descriptionId}")
public Result getDescriptionList(@PathVariable("descriptionId")String descriptionId) {
return tbCfOrderService.getDescriptionById(descriptionId);
} }
} }
...@@ -36,14 +36,14 @@ public class FlutterWaveController { ...@@ -36,14 +36,14 @@ public class FlutterWaveController {
/** /**
* 验证付款 * 验证付款
* *
* @param txref * @param
* @param orderId * @param orderId
* @return * @return
*/ */
@PostMapping("/verifyPay") @PostMapping("/verifyPay")
public Result verifyPay(@ApiParam("交易唯一标识") @RequestParam("txref") String txref, @ApiParam("订单ID") @RequestParam("orderId") String orderId) { public Result verifyPay(@ApiParam("订单ID") @RequestParam("orderId") String orderId) {
return flutterWaveService.verifyPay(txref, orderId); return flutterWaveService.verifyPay(orderId);
} }
...@@ -57,10 +57,10 @@ public class FlutterWaveController { ...@@ -57,10 +57,10 @@ public class FlutterWaveController {
public Result refund(@RequestBody FlutterWaveCard flutterWaveCard) { public Result refund(@RequestBody FlutterWaveCard flutterWaveCard) {
return flutterWaveService.refund(flutterWaveCard); return flutterWaveService.refund(flutterWaveCard);
} }
//
// @GetMapping("/queryPayParams") @GetMapping("/queryParams")
// public Result queryPayParams(@ApiParam("用户ID") @RequestParam("userId") String userId) { public Result queryParams(@ApiParam("用户ID") @RequestParam("userId") String userId) {
//
// return flutterWaveService.queryParams(userId);
// } }
} }
package com.diaoyun.zion.chinafrica.dao; package com.diaoyun.zion.chinafrica.dao;
import com.diaoyun.zion.chinafrica.entity.TbCfExpressTemplateEntity; import com.diaoyun.zion.chinafrica.entity.TbCfExpressTemplateEntity;
import com.diaoyun.zion.chinafrica.vo.ExpressTemplateVo;
import com.diaoyun.zion.master.dao.BaseDao; import com.diaoyun.zion.master.dao.BaseDao;
import java.util.List;
/** /**
* 运费模板Dao * 运费模板Dao
* *
...@@ -11,4 +14,7 @@ import com.diaoyun.zion.master.dao.BaseDao; ...@@ -11,4 +14,7 @@ import com.diaoyun.zion.master.dao.BaseDao;
*/ */
public interface TbCfExpressTemplateDao extends BaseDao<TbCfExpressTemplateEntity> { public interface TbCfExpressTemplateDao extends BaseDao<TbCfExpressTemplateEntity> {
List<TbCfExpressTemplateEntity> getDescriptionList();
ExpressTemplateVo getDescriptionById(String descriptionId);
} }
...@@ -13,10 +13,14 @@ import java.util.List; ...@@ -13,10 +13,14 @@ import java.util.List;
*/ */
public interface TbCfItemOrderRDao extends BaseDao<TbCfItemOrderREntity> { public interface TbCfItemOrderRDao extends BaseDao<TbCfItemOrderREntity> {
TbCfItemOrderREntity queryByTitle(String itemTitle);
/** /**
* 批量保存 * 批量保存
* @param itemOrderRList * @param itemOrderRList
* @return * @return
*/ */
int saveBatch(List<TbCfItemOrderREntity> itemOrderRList); int saveBatch(List<TbCfItemOrderREntity> itemOrderRList);
int updates(TbCfItemOrderREntity itemOrderR);
} }
...@@ -5,8 +5,6 @@ import com.diaoyun.zion.chinafrica.entity.TbCfUserInfoEntity; ...@@ -5,8 +5,6 @@ import com.diaoyun.zion.chinafrica.entity.TbCfUserInfoEntity;
import com.diaoyun.zion.chinafrica.vo.TbCfUserVo; import com.diaoyun.zion.chinafrica.vo.TbCfUserVo;
import com.diaoyun.zion.master.dao.BaseDao; import com.diaoyun.zion.master.dao.BaseDao;
import java.util.List;
/** /**
* 用户表Dao * 用户表Dao
* *
...@@ -60,8 +58,8 @@ public interface TbCfUserInfoDao extends BaseDao<TbCfUserInfoEntity> { ...@@ -60,8 +58,8 @@ public interface TbCfUserInfoDao extends BaseDao<TbCfUserInfoEntity> {
TbCfUserInfoEntity findByEmail(String email); TbCfUserInfoEntity findByEmail(String email);
/** /**
* 提供给第三方的用户列表 * 根据userID获取用户信息
* @return * @return
*/ */
List<TbCfUserVo> queryUserList(); TbCfUserVo queryUserByUserId(String userId);
} }
package com.diaoyun.zion.chinafrica.entity;
import java.util.List;
/**
* @Auther: wudepeng
* @Date: 2019/11/28
* @Description:ǰ֧
*/
public class FlutterKey {
private String public_key;
private List<TbCfUserInfoEntity> userInfo;
public String getPublic_key() {
return public_key;
}
public void setPublic_key(String public_key) {
this.public_key = public_key;
}
public List<TbCfUserInfoEntity> getUserInfo() {
return userInfo;
}
public void setUserInfo(List<TbCfUserInfoEntity> userInfo) {
this.userInfo = userInfo;
}
}
...@@ -30,6 +30,14 @@ public class TbCfItemOrderREntity implements Serializable { ...@@ -30,6 +30,14 @@ public class TbCfItemOrderREntity implements Serializable {
*/ */
private Integer enableFlag; private Integer enableFlag;
private Integer orderStatus;
private Integer deliveryFlag;
private Date deliveryTime;
private Date closeTime;
private Date updateTime;
/** /**
* 设置:记录表 * 设置:记录表
*/ */
...@@ -82,4 +90,44 @@ public class TbCfItemOrderREntity implements Serializable { ...@@ -82,4 +90,44 @@ public class TbCfItemOrderREntity implements Serializable {
public Integer getEnableFlag() { public Integer getEnableFlag() {
return enableFlag; return enableFlag;
} }
public Integer getOrderStatus() {
return orderStatus;
}
public void setOrderStatus(Integer orderStatus) {
this.orderStatus = orderStatus;
}
public Integer getDeliveryFlag() {
return deliveryFlag;
}
public void setDeliveryFlag(Integer deliveryFlag) {
this.deliveryFlag = deliveryFlag;
}
public Date getDeliveryTime() {
return deliveryTime;
}
public void setDeliveryTime(Date deliveryTime) {
this.deliveryTime = deliveryTime;
}
public Date getCloseTime() {
return closeTime;
}
public void setCloseTime(Date closeTime) {
this.closeTime = closeTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
} }
package com.diaoyun.zion.chinafrica.entity; package com.diaoyun.zion.chinafrica.entity;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
/** /**
...@@ -40,11 +39,18 @@ public class TbCfItemShippedEntity implements Serializable { ...@@ -40,11 +39,18 @@ public class TbCfItemShippedEntity implements Serializable {
* 商品ID * 商品ID
*/ */
private String itemId; private String itemId;
/**
* 商品ID
*/
private String itemNum;
/**
* 国家
*/
private String country;
/** /**
* 商品品名 * 商品品名
*/ */
private String descripitionName; private String descripitionId;
public static long getSerialVersionUID() { public static long getSerialVersionUID() {
return serialVersionUID; return serialVersionUID;
...@@ -58,12 +64,12 @@ public class TbCfItemShippedEntity implements Serializable { ...@@ -58,12 +64,12 @@ public class TbCfItemShippedEntity implements Serializable {
this.itemId = itemId; this.itemId = itemId;
} }
public String getDescripitionName() { public String getDescripitionId() {
return descripitionName; return descripitionId;
} }
public void setDescripitionName(String descripitionName) { public void setDescripitionId(String descripitionId) {
this.descripitionName = descripitionName; this.descripitionId = descripitionId;
} }
/** /**
...@@ -111,4 +117,20 @@ public class TbCfItemShippedEntity implements Serializable { ...@@ -111,4 +117,20 @@ public class TbCfItemShippedEntity implements Serializable {
public void setExpressId(String expressId) { public void setExpressId(String expressId) {
this.expressId = expressId; this.expressId = expressId;
} }
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public String getItemNum() {
return itemNum;
}
public void setItemNum(String itemNum) {
this.itemNum = itemNum;
}
} }
...@@ -13,7 +13,10 @@ import java.util.Date; ...@@ -13,7 +13,10 @@ import java.util.Date;
*/ */
public class TbCfOrderEntity implements Serializable { public class TbCfOrderEntity implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/**
* 订单id
*/
private String ordersId;
/** /**
* 订单id * 订单id
*/ */
...@@ -496,4 +499,12 @@ public class TbCfOrderEntity implements Serializable { ...@@ -496,4 +499,12 @@ public class TbCfOrderEntity implements Serializable {
public void setEnableFlag(Integer enableFlag) { public void setEnableFlag(Integer enableFlag) {
this.enableFlag = enableFlag; this.enableFlag = enableFlag;
} }
public String getOrdersId() {
return ordersId;
}
public void setOrdersId(String ordersId) {
this.ordersId = ordersId;
}
} }
...@@ -15,7 +15,11 @@ import java.io.IOException; ...@@ -15,7 +15,11 @@ import java.io.IOException;
* @Description: * @Description:
*/ */
public interface FlutterWaveService { public interface FlutterWaveService {
public Result payForOrder(String orderId, FlutterWaveCard flutterWaveCard); Result payForOrder(String orderId, FlutterWaveCard flutterWaveCard);
Result verifyPay(String txref,String orderId);
public Result refund(FlutterWaveCard flutterWaveCard); Result verifyPay(String orderId);
Result refund(FlutterWaveCard flutterWaveCard);
Result queryParams(String userId);
} }
...@@ -169,4 +169,6 @@ public interface TbCfOrderService { ...@@ -169,4 +169,6 @@ public interface TbCfOrderService {
*/ */
Result getOrderDetail(String orderId); Result getOrderDetail(String orderId);
Result getDescriptionById(String descriptionId);
} }
...@@ -177,5 +177,5 @@ public interface TbCfUserInfoService { ...@@ -177,5 +177,5 @@ public interface TbCfUserInfoService {
boolean checkUserByNick(String name); boolean checkUserByNick(String name);
Result queryUserList(Integer pageNum, Integer pageSize); Result queryUserByUserId(String userId);
} }
...@@ -3,13 +3,14 @@ package com.diaoyun.zion.chinafrica.service.impl; ...@@ -3,13 +3,14 @@ package com.diaoyun.zion.chinafrica.service.impl;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.diaoyun.zion.chinafrica.constant.KeyConstant; import com.diaoyun.zion.chinafrica.constant.KeyConstant;
import com.diaoyun.zion.chinafrica.dao.TbCfFinanceDao; import com.diaoyun.zion.chinafrica.dao.TbCfFinanceDao;
import com.diaoyun.zion.chinafrica.dao.TbCfItemOrderRDao;
import com.diaoyun.zion.chinafrica.dao.TbCfOrderDao; import com.diaoyun.zion.chinafrica.dao.TbCfOrderDao;
import com.diaoyun.zion.chinafrica.dao.TbCfToiCouponDao; import com.diaoyun.zion.chinafrica.dao.TbCfToiCouponDao;
import com.diaoyun.zion.chinafrica.entity.TbCfFinanceEntity; import com.diaoyun.zion.chinafrica.entity.*;
import com.diaoyun.zion.chinafrica.entity.TbCfOrderEntity;
import com.diaoyun.zion.chinafrica.enums.DeliveryStatusEnum; import com.diaoyun.zion.chinafrica.enums.DeliveryStatusEnum;
import com.diaoyun.zion.chinafrica.enums.OrderStatusEnum; import com.diaoyun.zion.chinafrica.enums.OrderStatusEnum;
import com.diaoyun.zion.chinafrica.service.FlutterWaveService; import com.diaoyun.zion.chinafrica.service.FlutterWaveService;
import com.diaoyun.zion.chinafrica.service.TbCfUserInfoService;
import com.diaoyun.zion.chinafrica.vo.FlutterWaveCard; import com.diaoyun.zion.chinafrica.vo.FlutterWaveCard;
import com.diaoyun.zion.chinafrica.vo.TbCfFinanceVo; import com.diaoyun.zion.chinafrica.vo.TbCfFinanceVo;
import com.diaoyun.zion.chinafrica.vo.TbCfOrderVo; import com.diaoyun.zion.chinafrica.vo.TbCfOrderVo;
...@@ -33,9 +34,7 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -33,9 +34,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.io.IOException; import java.io.IOException;
import java.util.Date; import java.util.*;
import java.util.HashMap;
import java.util.Map;
/** /**
* @Auther: wudepeng * @Auther: wudepeng
...@@ -50,7 +49,12 @@ public class FlutterWaveServiceImpl implements FlutterWaveService { ...@@ -50,7 +49,12 @@ public class FlutterWaveServiceImpl implements FlutterWaveService {
@Autowired @Autowired
private TbCfOrderDao tbCfOrderDao; private TbCfOrderDao tbCfOrderDao;
@Autowired @Autowired
private TbCfToiCouponDao TbCfToiCouponDao; private TbCfToiCouponDao tbCfToiCouponDao;
@Autowired
private TbCfItemOrderRDao tbCfItemOrderRDao;
@Autowired
private TbCfUserInfoService tbCfUserInfoService;
@Autowired @Autowired
private DomainProperties domainProperties; private DomainProperties domainProperties;
@Resource @Resource
...@@ -62,7 +66,8 @@ public class FlutterWaveServiceImpl implements FlutterWaveService { ...@@ -62,7 +66,8 @@ public class FlutterWaveServiceImpl implements FlutterWaveService {
//校验API //校验API
private String VERIFY_PAY_URL = "https://api.ravepay.co/flwv3-pug/getpaidx/api/v2/verify"; private String VERIFY_PAY_URL = "https://api.ravepay.co/flwv3-pug/getpaidx/api/v2/verify";
//测试API
//private String VERIFY_PAY_URL = "https://ravesandboxapi.flutterwave.com/flwv3-pug/getpaidx/api/v2/verify";
/** /**
* 使用卡号支付(预支付) * 使用卡号支付(预支付)
...@@ -97,7 +102,7 @@ public class FlutterWaveServiceImpl implements FlutterWaveService { ...@@ -97,7 +102,7 @@ public class FlutterWaveServiceImpl implements FlutterWaveService {
.setExpiryyear(flutterWaveCard.getYear()) .setExpiryyear(flutterWaveCard.getYear())
.setExpirymonth(flutterWaveCard.getMonth()) .setExpirymonth(flutterWaveCard.getMonth())
.setEmail(flutterWaveCard.getEmail()) .setEmail(flutterWaveCard.getEmail())
.setTxRef("Afri-shop" + new Date().getTime()); .setTxRef(orderId);
JSONObject chargevisa = ch.chargeVisaAndIntl(); JSONObject chargevisa = ch.chargeVisaAndIntl();
result.setData(chargevisa); result.setData(chargevisa);
} catch (Exception e) { } catch (Exception e) {
...@@ -115,17 +120,16 @@ public class FlutterWaveServiceImpl implements FlutterWaveService { ...@@ -115,17 +120,16 @@ public class FlutterWaveServiceImpl implements FlutterWaveService {
/** /**
* 校验支付 * 校验支付
* *
* @param txref
* @param orderId * @param orderId
* @return * @return
*/ */
@Override @Override
public Result verifyPay(String txref, String orderId) { public Result verifyPay(String orderId) {
Result result = new Result(); Result result = new Result();
try { try {
TbCfOrderVo tbCfOrderVo = (TbCfOrderVo) orderRedisCache.get(KeyConstant.ORDER_DET + orderId); TbCfOrderVo tbCfOrderVo = (TbCfOrderVo) orderRedisCache.get(KeyConstant.ORDER_DET + orderId);
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("txref", txref); map.put("txref", orderId);
map.put("SECKEY", domainProperties.getProperty("flutterwave.secret.key")); map.put("SECKEY", domainProperties.getProperty("flutterwave.secret.key"));
String data = HttpClientUtil.sendPostWithBodyParameter(VERIFY_PAY_URL, map); String data = HttpClientUtil.sendPostWithBodyParameter(VERIFY_PAY_URL, map);
com.alibaba.fastjson.JSONObject object = JSON.parseObject(data); com.alibaba.fastjson.JSONObject object = JSON.parseObject(data);
...@@ -139,25 +143,25 @@ public class FlutterWaveServiceImpl implements FlutterWaveService { ...@@ -139,25 +143,25 @@ public class FlutterWaveServiceImpl implements FlutterWaveService {
if (tbCfOrderVo != null) { if (tbCfOrderVo != null) {
changeOrderState(paymentid, tbCfOrderVo); changeOrderState(paymentid, tbCfOrderVo);
//修改优惠券状态 //修改优惠券状态
if (tbCfOrderVo.getCouponId() != null && "20".equals(tbCfOrderVo.getOrderStatus())) { if (tbCfOrderVo.getCouponId() != null && OrderStatusEnum.PAID.getValue().equals(tbCfOrderVo.getOrderStatus())) {
TbCfToiCouponDao.changeCoupnStatus(tbCfOrderVo.getUserId(), tbCfOrderVo.getCouponId()); tbCfToiCouponDao.changeCoupnStatus(tbCfOrderVo.getUserId(), tbCfOrderVo.getCouponId());
} }
//生成支付流水 //生成支付流水
TbCfFinanceEntity finance = createFinance(paymentid, authurl, tbCfOrderVo); TbCfFinanceEntity finance = createFinance(paymentid, authurl, tbCfOrderVo);
TbCfFinanceVo tbCfFinanceVo = new TbCfFinanceVo(); TbCfFinanceVo tbCfFinanceVo = new TbCfFinanceVo();
BeanUtils.copyProperties(finance, tbCfFinanceVo); BeanUtils.copyProperties(finance, tbCfFinanceVo);
logger.info(tbCfOrderVo.getUserName() + ":Pay for success! The order number is:" + tbCfOrderVo.getOrderId());
//清空订单 //清空订单
removeRedisCache(tbCfOrderVo); removeRedisCache(tbCfOrderVo);
} }
result.setData(JSON.parseObject(data)); result.setData(JSON.parseObject(data));
result.setCode(ResultCodeEnum.SUCCESS.getCode()).setMessage("payment success!"); result.setCode(ResultCodeEnum.SUCCESS.getCode()).setMessage("payment success!");
logger.info("payment success! The flutterwave txref is:" + txref); logger.info(tbCfOrderVo.getUserName() + ":Pay for success! The order number is:" + tbCfOrderVo.getOrderId());
} else { } else {
result.setData(JSON.parseObject(data)); result.setData(JSON.parseObject(data));
//支付失败 //支付失败
result.setCode(ResultCodeEnum.ORDER_PAY_ERROR.getCode()).setMessage("payment failure!"); result.setCode(ResultCodeEnum.ORDER_PAY_ERROR.getCode()).setMessage("payment failure!");
logger.error("payment failure! The flutterwave txref is:" + txref); logger.error(tbCfOrderVo.getUserName() + ":Pay for success! The order number is:" + tbCfOrderVo.getOrderId());
} }
} catch (Exception e) { } catch (Exception e) {
result.setCode(ResultCodeEnum.VALIDATE_ERROR.getCode()).setMessage(e.getMessage()); result.setCode(ResultCodeEnum.VALIDATE_ERROR.getCode()).setMessage(e.getMessage());
...@@ -203,6 +207,20 @@ public class FlutterWaveServiceImpl implements FlutterWaveService { ...@@ -203,6 +207,20 @@ public class FlutterWaveServiceImpl implements FlutterWaveService {
return result; return result;
} }
@Override
public Result queryParams(String userId) {
Result result = new Result();
List<TbCfUserInfoEntity> list = new ArrayList<>();
FlutterKey key = new FlutterKey();
String public_key = domainProperties.getProperty("flutterwave.public.key");
TbCfUserInfoEntity userInfo = tbCfUserInfoService.queryObject(userId);
list.add(userInfo);
key.setPublic_key(public_key);
key.setUserInfo(list);
result.setData(key).setMessage(ResultCodeEnum.SUCCESS.getDesc());
return result;
}
/** /**
* 清空订单缓存 * 清空订单缓存
...@@ -227,13 +245,18 @@ public class FlutterWaveServiceImpl implements FlutterWaveService { ...@@ -227,13 +245,18 @@ public class FlutterWaveServiceImpl implements FlutterWaveService {
*/ */
private void changeOrderState(String payId, TbCfOrderVo oldOrder) { private void changeOrderState(String payId, TbCfOrderVo oldOrder) {
//更改订单状态 //更改订单状态
TbCfItemOrderREntity itemOrderR = new TbCfItemOrderREntity();
itemOrderR.setOrderId(oldOrder.getOrderId());
itemOrderR.setUpdateTime(new Date());
itemOrderR.setOrderStatus(OrderStatusEnum.PAID.getValue());
itemOrderR.setDeliveryFlag(DeliveryStatusEnum.PROCESSING.getValue());
tbCfItemOrderRDao.updates(itemOrderR);
TbCfOrderEntity tbCfOrder = new TbCfOrderEntity(); TbCfOrderEntity tbCfOrder = new TbCfOrderEntity();
tbCfOrder.setOrderId(oldOrder.getOrderId()); tbCfOrder.setOrderId(oldOrder.getOrderId());
tbCfOrder.setUpdateTime(new Date()); tbCfOrder.setUpdateTime(new Date());
tbCfOrder.setDealTime(new Date()); tbCfOrder.setDealTime(new Date());
tbCfOrder.setOrderStatus(OrderStatusEnum.PAID.getValue());
tbCfOrder.setDeliveryFlag(DeliveryStatusEnum.PROCESSING.getValue());
tbCfOrder.setPayId(payId); tbCfOrder.setPayId(payId);
tbCfOrder.setOrderStatus(OrderStatusEnum.PAID.getValue());
tbCfOrder.setPayStatus(OrderStatusEnum.PAID.getValue()); tbCfOrder.setPayStatus(OrderStatusEnum.PAID.getValue());
tbCfOrderDao.update(tbCfOrder); tbCfOrderDao.update(tbCfOrder);
} }
......
package com.diaoyun.zion.chinafrica.service.impl; package com.diaoyun.zion.chinafrica.service.impl;
import com.diaoyun.zion.chinafrica.constant.KeyConstant; import com.diaoyun.zion.chinafrica.constant.KeyConstant;
import com.diaoyun.zion.chinafrica.dao.TbCfFinanceDao; import com.diaoyun.zion.chinafrica.dao.*;
import com.diaoyun.zion.chinafrica.dao.TbCfIssueCouponDao;
import com.diaoyun.zion.chinafrica.dao.TbCfOrderDao;
import com.diaoyun.zion.chinafrica.dao.TbCfToiCouponDao;
import com.diaoyun.zion.chinafrica.entity.TbCfFinanceEntity; import com.diaoyun.zion.chinafrica.entity.TbCfFinanceEntity;
import com.diaoyun.zion.chinafrica.entity.TbCfItemOrderREntity;
import com.diaoyun.zion.chinafrica.entity.TbCfOrderEntity; import com.diaoyun.zion.chinafrica.entity.TbCfOrderEntity;
import com.diaoyun.zion.chinafrica.enums.DeliveryStatusEnum; import com.diaoyun.zion.chinafrica.enums.DeliveryStatusEnum;
import com.diaoyun.zion.chinafrica.enums.OrderStatusEnum; import com.diaoyun.zion.chinafrica.enums.OrderStatusEnum;
...@@ -57,7 +55,8 @@ public class PayPalServiceImpl implements PayPalService { ...@@ -57,7 +55,8 @@ public class PayPalServiceImpl implements PayPalService {
private TbCfIssueCouponDao tbCfIssueCouponDao; private TbCfIssueCouponDao tbCfIssueCouponDao;
@Autowired @Autowired
private TbCfToiCouponDao tbCfToiCouponDao; private TbCfToiCouponDao tbCfToiCouponDao;
@Autowired
private TbCfItemOrderRDao tbCfItemOrderRDao;
private String ORDER_ID = ""; private String ORDER_ID = "";
@Override @Override
...@@ -215,13 +214,18 @@ public class PayPalServiceImpl implements PayPalService { ...@@ -215,13 +214,18 @@ public class PayPalServiceImpl implements PayPalService {
*/ */
private void changeOrderState(String payId, TbCfOrderVo oldOrder) { private void changeOrderState(String payId, TbCfOrderVo oldOrder) {
//更改订单状态 //更改订单状态
TbCfItemOrderREntity itemOrderR = new TbCfItemOrderREntity();
itemOrderR.setOrderId(oldOrder.getOrderId());
itemOrderR.setUpdateTime(new Date());
itemOrderR.setOrderStatus(OrderStatusEnum.PAID.getValue());
itemOrderR.setDeliveryFlag(DeliveryStatusEnum.PROCESSING.getValue());
tbCfItemOrderRDao.updates(itemOrderR);
TbCfOrderEntity tbCfOrder = new TbCfOrderEntity(); TbCfOrderEntity tbCfOrder = new TbCfOrderEntity();
tbCfOrder.setOrderId(oldOrder.getOrderId()); tbCfOrder.setOrderId(oldOrder.getOrderId());
tbCfOrder.setUpdateTime(new Date()); tbCfOrder.setUpdateTime(new Date());
tbCfOrder.setDealTime(new Date()); tbCfOrder.setDealTime(new Date());
tbCfOrder.setOrderStatus(OrderStatusEnum.PAID.getValue());
tbCfOrder.setDeliveryFlag(DeliveryStatusEnum.PROCESSING.getValue());
tbCfOrder.setPayId(payId); tbCfOrder.setPayId(payId);
tbCfOrder.setOrderStatus(OrderStatusEnum.PAID.getValue());
tbCfOrder.setPayStatus(OrderStatusEnum.PAID.getValue()); tbCfOrder.setPayStatus(OrderStatusEnum.PAID.getValue());
tbCfOrderDao.update(tbCfOrder); tbCfOrderDao.update(tbCfOrder);
} }
......
...@@ -46,6 +46,7 @@ public class TbCfItemDetailServiceImpl implements TbCfItemDetailService { ...@@ -46,6 +46,7 @@ public class TbCfItemDetailServiceImpl implements TbCfItemDetailService {
@Autowired @Autowired
private TbCfExpTemKeywordDao tbCfExpTemKeywordDao; private TbCfExpTemKeywordDao tbCfExpTemKeywordDao;
@Resource(name="redisTokenManager") @Resource(name="redisTokenManager")
private TokenManager tokenManager; private TokenManager tokenManager;
...@@ -191,7 +192,7 @@ public class TbCfItemDetailServiceImpl implements TbCfItemDetailService { ...@@ -191,7 +192,7 @@ public class TbCfItemDetailServiceImpl implements TbCfItemDetailService {
if ("0".equals(tbCfExpressTemplateList.size())) { if ("0".equals(tbCfExpressTemplateList.size())) {
String[] split = keyword.split(""); String[] split = keyword.split("");
for (int i = 0; i < split.length; i++) { for (int i = 0; i < split.length; i++) {
if(i+1<split.length){ if(i+1<=split.length){
List<TbCfExpressTemplateEntity> tbCfExpressTemplateLists = tbCfExpTemKeywordDao.getTemplateByKeyword(split[i]+split[i+1]); List<TbCfExpressTemplateEntity> tbCfExpressTemplateLists = tbCfExpTemKeywordDao.getTemplateByKeyword(split[i]+split[i+1]);
totalTemplateSet.addAll(tbCfExpressTemplateLists); totalTemplateSet.addAll(tbCfExpressTemplateLists);
} }
......
...@@ -7,10 +7,7 @@ import com.diaoyun.zion.chinafrica.entity.*; ...@@ -7,10 +7,7 @@ import com.diaoyun.zion.chinafrica.entity.*;
import com.diaoyun.zion.chinafrica.enums.DeliveryStatusEnum; import com.diaoyun.zion.chinafrica.enums.DeliveryStatusEnum;
import com.diaoyun.zion.chinafrica.enums.OrderStatusEnum; import com.diaoyun.zion.chinafrica.enums.OrderStatusEnum;
import com.diaoyun.zion.chinafrica.service.*; import com.diaoyun.zion.chinafrica.service.*;
import com.diaoyun.zion.chinafrica.vo.TbCfCartItemDetailVo; import com.diaoyun.zion.chinafrica.vo.*;
import com.diaoyun.zion.chinafrica.vo.TbCfFinanceVo;
import com.diaoyun.zion.chinafrica.vo.TbCfOrderVo;
import com.diaoyun.zion.chinafrica.vo.TbCfUserInfoVo;
import com.diaoyun.zion.master.base.Result; import com.diaoyun.zion.master.base.Result;
import com.diaoyun.zion.master.base.StateConstant; import com.diaoyun.zion.master.base.StateConstant;
import com.diaoyun.zion.master.common.RedisCache; import com.diaoyun.zion.master.common.RedisCache;
...@@ -189,6 +186,17 @@ public class TbCfOrderServiceImpl implements TbCfOrderService { ...@@ -189,6 +186,17 @@ public class TbCfOrderServiceImpl implements TbCfOrderService {
} else { } else {
//获取下单的订单数据 //获取下单的订单数据
TbCfOrderVo definiteOrder = ensureOrder(tbCfUserInfoVo, pageOrder, tbCfCartItemDetailList, toitableId); TbCfOrderVo definiteOrder = ensureOrder(tbCfUserInfoVo, pageOrder, tbCfCartItemDetailList, toitableId);
for( TbCfCartItemDetailVo itemList: tbCfCartItemDetailList ){
TbCfItemOrderREntity tbCfItemOrderREntity=new TbCfItemOrderREntity();
tbCfItemOrderREntity.setOrderItemId(IdUtil.createIdbyUUID());
tbCfItemOrderREntity.setOrderId(definiteOrder.getOrderId());
tbCfItemOrderREntity.setItemId(itemList.getItemId());
tbCfItemOrderREntity.setEnableFlag(StateConstant.VALID);
tbCfItemOrderREntity.setDeliveryFlag(DeliveryStatusEnum.PROCESSING.getValue());
tbCfItemOrderREntity.setOrderStatus(OrderStatusEnum.PENDING_PAY.getValue());
tbCfItemOrderREntity.setUpdateTime(new Date());
tbCfItemOrderRDao.save(tbCfItemOrderREntity);
}
//持久化订单数据 //持久化订单数据
TbCfOrderEntity tbCfOrderEntity = new TbCfOrderEntity(); TbCfOrderEntity tbCfOrderEntity = new TbCfOrderEntity();
BeanUtils.copyProperties(definiteOrder, tbCfOrderEntity); BeanUtils.copyProperties(definiteOrder, tbCfOrderEntity);
...@@ -198,7 +206,6 @@ public class TbCfOrderServiceImpl implements TbCfOrderService { ...@@ -198,7 +206,6 @@ public class TbCfOrderServiceImpl implements TbCfOrderService {
afterPlaceOrder(tbCfOrderEntity.getOrderId(), tbCfCartItemDetailList, definiteOrder); afterPlaceOrder(tbCfOrderEntity.getOrderId(), tbCfCartItemDetailList, definiteOrder);
result.setData(definiteOrder).setMessage(ResultCodeEnum.SUCCESS.getDesc()); result.setData(definiteOrder).setMessage(ResultCodeEnum.SUCCESS.getDesc());
} }
return result; return result;
} }
...@@ -247,16 +254,16 @@ public class TbCfOrderServiceImpl implements TbCfOrderService { ...@@ -247,16 +254,16 @@ public class TbCfOrderServiceImpl implements TbCfOrderService {
@Override @Override
public void cancelOrder(String orderId, String userId, String couponId) { public void cancelOrder(String orderId, String userId, String couponId) {
//更改订单状态 //更改订单状态
TbCfOrderEntity tbCfOrder = new TbCfOrderEntity(); TbCfItemOrderREntity tbCfItemOrderREntity = new TbCfItemOrderREntity();
tbCfOrder.setOrderId(orderId); tbCfItemOrderREntity.setOrderId(orderId);
tbCfOrder.setUpdateTime(new Date()); tbCfItemOrderREntity.setOrderStatus(OrderStatusEnum.CLOSE.getValue());
tbCfOrder.setCloseTime(new Date()); tbCfItemOrderREntity.setUpdateTime(new Date());
tbCfOrder.setOrderStatus(OrderStatusEnum.CLOSE.getValue()); tbCfItemOrderREntity.setCloseTime(new Date());
tbCfOrderDao.update(tbCfOrder); tbCfItemOrderRDao.update(tbCfItemOrderREntity);
//优惠券不为空,则设置状态 //优惠券不为空,则设置状态
if (StringUtils.isNotBlank(userId) && StringUtils.isNotBlank(couponId)) { if (StringUtils.isNotBlank(userId) && StringUtils.isNotBlank(couponId)) {
//更新领取记录已领取 //更新领取记录已领取
tbCfTakeCouponDao.updateEnableFlag(userId, couponId, StateConstant.VALID);//int res = tbCfToiCouponDao.updateEnableFlag(userId, couponId, StateConstant.VALID);//int res =
} }
} }
...@@ -285,7 +292,7 @@ public class TbCfOrderServiceImpl implements TbCfOrderService { ...@@ -285,7 +292,7 @@ public class TbCfOrderServiceImpl implements TbCfOrderService {
//更改订单状态 //更改订单状态
changeOrderState(charge.getId(), tbCfOrderVo); changeOrderState(charge.getId(), tbCfOrderVo);
//修改使用的优惠券的状态 //修改使用的优惠券的状态
if (tbCfOrderVo.getOrderStatus() == 20) { if (tbCfOrderVo.getCouponId() != null && "20".equals(tbCfOrderVo.getOrderStatus())) {
tbCfToiCouponDao.changeCoupnStatus(tbCfOrderVo.getUserId(), tbCfOrderVo.getCouponId()); tbCfToiCouponDao.changeCoupnStatus(tbCfOrderVo.getUserId(), tbCfOrderVo.getCouponId());
} }
//生成流水记录 //生成流水记录
...@@ -369,6 +376,10 @@ public class TbCfOrderServiceImpl implements TbCfOrderService { ...@@ -369,6 +376,10 @@ public class TbCfOrderServiceImpl implements TbCfOrderService {
Date beginDate = new Date(beginTime * 1000); Date beginDate = new Date(beginTime * 1000);
Date endDate = new Date(endTime * 1000); Date endDate = new Date(endTime * 1000);
List<TbCfItemShippedEntity> orderList = tbCfOrderDao.getDeliveryList(beginDate, endDate); List<TbCfItemShippedEntity> orderList = tbCfOrderDao.getDeliveryList(beginDate, endDate);
// TODO 暂设为赞比亚
for(TbCfItemShippedEntity list:orderList ){
list.setCountry("赞比亚");
}
PageInfo<TbCfItemShippedEntity> pageInfo = new PageInfo<>(orderList); PageInfo<TbCfItemShippedEntity> pageInfo = new PageInfo<>(orderList);
result.setData(pageInfo); result.setData(pageInfo);
} }
...@@ -404,7 +415,6 @@ public class TbCfOrderServiceImpl implements TbCfOrderService { ...@@ -404,7 +415,6 @@ public class TbCfOrderServiceImpl implements TbCfOrderService {
result.setData(orderEntity); result.setData(orderEntity);
return result; return result;
} }
@Override @Override
public Result deleteOrder(String orderId) { public Result deleteOrder(String orderId) {
Result result = new Result(); Result result = new Result();
...@@ -442,6 +452,21 @@ public class TbCfOrderServiceImpl implements TbCfOrderService { ...@@ -442,6 +452,21 @@ public class TbCfOrderServiceImpl implements TbCfOrderService {
return result; return result;
} }
@Override
public Result getDescriptionById(String descriptionId) {
Result<ExpressTemplateVo> result = new Result<>();
ExpressTemplateVo tbCfExpressTemplateEntity= new ExpressTemplateVo();
ExpressTemplateVo expressTemplate=tbCfExpressTemplateDao.getDescriptionById(descriptionId);
tbCfExpressTemplateEntity.setDescriptionId(expressTemplate.getDescriptionId());
tbCfExpressTemplateEntity.setDescriptionName(expressTemplate.getDescriptionName());
tbCfExpressTemplateEntity.setExpressFee(expressTemplate.getExpressFee());
tbCfExpressTemplateEntity.setCountryCode(expressTemplate.getCountryCode());
tbCfExpressTemplateEntity.setCreateTime(expressTemplate.getCreateTime());
result.setData(tbCfExpressTemplateEntity);
return result;
}
/** /**
* 记录财务流水 * 记录财务流水
* *
...@@ -471,16 +496,24 @@ public class TbCfOrderServiceImpl implements TbCfOrderService { ...@@ -471,16 +496,24 @@ public class TbCfOrderServiceImpl implements TbCfOrderService {
*/ */
private void changeOrderState(String payId, TbCfOrderVo oldOrder) { private void changeOrderState(String payId, TbCfOrderVo oldOrder) {
//更改订单状态 //更改订单状态
List<TbCfCartItemDetailVo> itemDetailList = oldOrder.getItemDetailList();
for(TbCfCartItemDetailVo itemList:itemDetailList){
TbCfOrderEntity tbCfOrder = new TbCfOrderEntity(); TbCfOrderEntity tbCfOrder = new TbCfOrderEntity();
TbCfItemOrderREntity itemOrderR= new TbCfItemOrderREntity();
itemOrderR.setOrderId(oldOrder.getOrderId());
itemOrderR.setItemId(itemList.getItemId());
itemOrderR.setUpdateTime(new Date());
itemOrderR.setOrderStatus(OrderStatusEnum.PAID.getValue());
itemOrderR.setDeliveryFlag(DeliveryStatusEnum.PROCESSING.getValue());
tbCfItemOrderRDao.update(itemOrderR);
tbCfOrder.setOrderId(oldOrder.getOrderId()); tbCfOrder.setOrderId(oldOrder.getOrderId());
tbCfOrder.setUpdateTime(new Date());
tbCfOrder.setDealTime(new Date()); tbCfOrder.setDealTime(new Date());
tbCfOrder.setOrderStatus(OrderStatusEnum.PAID.getValue());
tbCfOrder.setDeliveryFlag(DeliveryStatusEnum.PROCESSING.getValue());
tbCfOrder.setPayId(payId); tbCfOrder.setPayId(payId);
tbCfOrder.setOrderStatus(OrderStatusEnum.PAID.getValue());
tbCfOrder.setPayStatus(OrderStatusEnum.PAID.getValue()); tbCfOrder.setPayStatus(OrderStatusEnum.PAID.getValue());
tbCfOrderDao.update(tbCfOrder); tbCfOrderDao.update(tbCfOrder);
} }
}
/** /**
...@@ -513,13 +546,11 @@ public class TbCfOrderServiceImpl implements TbCfOrderService { ...@@ -513,13 +546,11 @@ public class TbCfOrderServiceImpl implements TbCfOrderService {
deleteItemFromCart(tbCfCartItemDetailList); deleteItemFromCart(tbCfCartItemDetailList);
//将商品id加入订单中,查询订单中的商品 //将商品id加入订单中,查询订单中的商品
addItemOrderRecord(orderId, tbCfCartItemDetailList); updateItemOrderRecord(orderId, tbCfCartItemDetailList);
//使用优惠券 //使用优惠券
if (StringUtils.isNotBlank(definiteOrder.getCouponId())) { if (StringUtils.isNotBlank(definiteOrder.getCouponId())) {
couponUse(definiteOrder.getUserId(), definiteOrder.getCouponId()); couponUse(definiteOrder.getUserId(), definiteOrder.getCouponId());
} }
//把订单放redis中,过期则取消订单 RedisKeyExpirationListener接收 //把订单放redis中,过期则取消订单 RedisKeyExpirationListener接收
long timeout = 1800; long timeout = 1800;
String timeoutStr = domainProperties.getProperty("redis.order.expiredTime"); String timeoutStr = domainProperties.getProperty("redis.order.expiredTime");
...@@ -537,6 +568,19 @@ public class TbCfOrderServiceImpl implements TbCfOrderService { ...@@ -537,6 +568,19 @@ public class TbCfOrderServiceImpl implements TbCfOrderService {
} }
private void updateItemOrderRecord(String orderId, List<TbCfCartItemDetailVo> tbCfCartItemDetailList) {
for (TbCfCartItemDetailVo tbCfCartItemDetailVo : tbCfCartItemDetailList) {
TbCfItemOrderREntity tbCfItemOrderR = new TbCfItemOrderREntity();
tbCfItemOrderR.setEnableFlag(StateConstant.VALID);
tbCfItemOrderR.setItemId(tbCfCartItemDetailVo.getItemId());
tbCfItemOrderR.setOrderId(orderId);
tbCfItemOrderR.setUpdateTime(new Date());
tbCfItemOrderR.setOrderStatus(OrderStatusEnum.PAID.getValue());
tbCfItemOrderR.setDeliveryFlag(DeliveryStatusEnum.PROCESSING.getValue());
tbCfItemOrderRDao.update(tbCfItemOrderR);
}
}
/** /**
* 使用优惠券 * 使用优惠券
* *
...@@ -567,7 +611,7 @@ public class TbCfOrderServiceImpl implements TbCfOrderService { ...@@ -567,7 +611,7 @@ public class TbCfOrderServiceImpl implements TbCfOrderService {
* @param orderId * @param orderId
* @param tbCfCartItemDetailList * @param tbCfCartItemDetailList
*/ */
private void addItemOrderRecord(String orderId, List<TbCfCartItemDetailVo> tbCfCartItemDetailList) { /* private void addItemOrderRecord(String orderId, List<TbCfCartItemDetailVo> tbCfCartItemDetailList) {
List<TbCfItemOrderREntity> itemOrderRList = new ArrayList<>(); List<TbCfItemOrderREntity> itemOrderRList = new ArrayList<>();
for (TbCfCartItemDetailVo tbCfCartItemDetailVo : tbCfCartItemDetailList) { for (TbCfCartItemDetailVo tbCfCartItemDetailVo : tbCfCartItemDetailList) {
TbCfItemOrderREntity tbCfItemOrderR = new TbCfItemOrderREntity(); TbCfItemOrderREntity tbCfItemOrderR = new TbCfItemOrderREntity();
...@@ -575,11 +619,14 @@ public class TbCfOrderServiceImpl implements TbCfOrderService { ...@@ -575,11 +619,14 @@ public class TbCfOrderServiceImpl implements TbCfOrderService {
tbCfItemOrderR.setEnableFlag(StateConstant.VALID); tbCfItemOrderR.setEnableFlag(StateConstant.VALID);
tbCfItemOrderR.setItemId(tbCfCartItemDetailVo.getItemId()); tbCfItemOrderR.setItemId(tbCfCartItemDetailVo.getItemId());
tbCfItemOrderR.setOrderId(orderId); tbCfItemOrderR.setOrderId(orderId);
tbCfItemOrderR.setUpdateTime(new Date());
tbCfItemOrderR.setOrderStatus(OrderStatusEnum.PAID.getValue());
tbCfItemOrderR.setDeliveryFlag(DeliveryStatusEnum.PROCESSING.getValue());
itemOrderRList.add(tbCfItemOrderR); itemOrderRList.add(tbCfItemOrderR);
} }
//int res = //int res =
tbCfItemOrderRDao.saveBatch(itemOrderRList); tbCfItemOrderRDao.saveBatch(itemOrderRList);
} }*/
/** /**
* 将商品从购物车删除(伪删除) * 将商品从购物车删除(伪删除)
...@@ -640,11 +687,9 @@ public class TbCfOrderServiceImpl implements TbCfOrderService { ...@@ -640,11 +687,9 @@ public class TbCfOrderServiceImpl implements TbCfOrderService {
definiteOrder.setDeliveryName(tbCfAddressEntity.getDeliveryName()); definiteOrder.setDeliveryName(tbCfAddressEntity.getDeliveryName());
definiteOrder.setDeliveryPhone(tbCfAddressEntity.getPhone()); definiteOrder.setDeliveryPhone(tbCfAddressEntity.getPhone());
///////////////////////////////地址 END////////////////////////////// ///////////////////////////////地址 END//////////////////////////////
definiteOrder.setDeliveryFlag(DeliveryStatusEnum.PROCESSING.getValue());
definiteOrder.setOrderId(IdUtil.createIdbyUUID()); definiteOrder.setOrderId(IdUtil.createIdbyUUID());
definiteOrder.setOrderNo(IdUtil.createLongIdByDate()); definiteOrder.setOrderNo(IdUtil.createLongIdByDate());
definiteOrder.setOrderTime(new Date()); definiteOrder.setOrderTime(new Date());
definiteOrder.setOrderStatus(OrderStatusEnum.PENDING_PAY.getValue());
definiteOrder.setUserId(tbCfUserInfoVo.getUserId()); definiteOrder.setUserId(tbCfUserInfoVo.getUserId());
definiteOrder.setUserName(tbCfUserInfoVo.getNick()); definiteOrder.setUserName(tbCfUserInfoVo.getNick());
definiteOrder.setPayStatus(OrderStatusEnum.PENDING_PAY.getValue()); definiteOrder.setPayStatus(OrderStatusEnum.PENDING_PAY.getValue());
...@@ -670,7 +715,14 @@ public class TbCfOrderServiceImpl implements TbCfOrderService { ...@@ -670,7 +715,14 @@ public class TbCfOrderServiceImpl implements TbCfOrderService {
itemsPrice = itemsPrice.add(itemSourcePrice.multiply(itemNum)); itemsPrice = itemsPrice.add(itemSourcePrice.multiply(itemNum));
//计算运费 //计算运费
BigDecimal expressCost = getExpressTemplate(tbCfCartItemDetailVo.getItemCategory()); BigDecimal expressCost = getExpressTemplate(tbCfCartItemDetailVo.getItemCategory());
//expressCost = expressCost.multiply(itemNum);
if("1".equals(itemNum)){
expressCost = expressCost.multiply(itemNum); expressCost = expressCost.multiply(itemNum);
}else{
BigDecimal a= BigDecimal.valueOf(1);
BigDecimal dj = expressCost.multiply(itemNum.subtract(a));
expressCost =(dj.divide(BigDecimal.valueOf(2),0,BigDecimal.ROUND_UNNECESSARY)).add(expressCost);
}
totalExpressCost = totalExpressCost.add(expressCost); totalExpressCost = totalExpressCost.add(expressCost);
} }
//计算手续费 //计算手续费
......
...@@ -27,7 +27,6 @@ import com.diaoyun.zion.master.util.EmailHelper; ...@@ -27,7 +27,6 @@ import com.diaoyun.zion.master.util.EmailHelper;
import com.diaoyun.zion.master.util.IdUtil; import com.diaoyun.zion.master.util.IdUtil;
import com.diaoyun.zion.master.util.RandomCodeHelper; import com.diaoyun.zion.master.util.RandomCodeHelper;
import com.diaoyun.zion.master.util.SMSUtil; import com.diaoyun.zion.master.util.SMSUtil;
import com.github.pagehelper.PageInfo;
import freemarker.template.TemplateException; import freemarker.template.TemplateException;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.mail.EmailException; import org.apache.commons.mail.EmailException;
...@@ -51,8 +50,6 @@ import java.util.Date; ...@@ -51,8 +50,6 @@ import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import static com.github.pagehelper.page.PageMethod.startPage;
/** /**
* 用户表Service实现类 * 用户表Service实现类
* *
...@@ -537,12 +534,19 @@ public class TbCfUserInfoServiceImpl implements TbCfUserInfoService { ...@@ -537,12 +534,19 @@ public class TbCfUserInfoServiceImpl implements TbCfUserInfoService {
} }
@Override @Override
public Result queryUserList(Integer pageNum, Integer pageSize) { public Result queryUserByUserId(String userId) {
Result result = new Result<>(); Result<TbCfUserVo> result = new Result<>();
startPage(pageNum, pageSize); TbCfUserVo tbCfUserVo=new TbCfUserVo();
List<TbCfUserVo> userList = tbCfUserInfoDao.queryUserList(); TbCfUserVo user=tbCfUserInfoDao.queryUserByUserId(userId);
PageInfo<TbCfUserVo> pageInfo = new PageInfo<>(userList); tbCfUserVo.setUserId(user.getUserId());
result.setData(pageInfo); tbCfUserVo.setUserNo(user.getUserNo());
tbCfUserVo.setUserName(user.getUserName());
tbCfUserVo.setPhone(user.getPhone());
tbCfUserVo.setLastLoginTime(user.getLastLoginTime());
tbCfUserVo.setDefaultAddressId(user.getDefaultAddressId());
tbCfUserVo.setDefaultAddressName(user.getDefaultAddressName());
tbCfUserVo.setEnableFlag(user.getEnableFlag());
result.setData(tbCfUserVo);
return result; return result;
} }
......
package com.diaoyun.zion.chinafrica.vo;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
public class ExpressTemplateVo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 模板id
*/
private String descriptionId;
/**
* 模板标题
*/
private String descriptionName;
/**
* 快递费
*/
private BigDecimal expressFee;
/**
* 国家编号
*/
private String countryCode;
/**
* 创建日期
*/
private Date createTime;
public String getDescriptionId() {
return descriptionId;
}
public void setDescriptionId(String descriptionId) {
this.descriptionId = descriptionId;
}
public String getDescriptionName() {
return descriptionName;
}
public void setDescriptionName(String descriptionName) {
this.descriptionName = descriptionName;
}
public BigDecimal getExpressFee() {
return expressFee;
}
public void setExpressFee(BigDecimal expressFee) {
this.expressFee = expressFee;
}
public String getCountryCode() {
return countryCode;
}
public void setCountryCode(String countryCode) {
this.countryCode = countryCode;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
}
...@@ -18,7 +18,7 @@ import java.util.Date; ...@@ -18,7 +18,7 @@ import java.util.Date;
public class TbCfCartItemDetailVo implements Serializable { public class TbCfCartItemDetailVo implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
* 购物车记录id * 记录id
*/ */
@ApiModelProperty("订单记录id") @ApiModelProperty("订单记录id")
private String ordersId; private String ordersId;
......
...@@ -23,7 +23,6 @@ ...@@ -23,7 +23,6 @@
from tb_cf_cart_record_r from tb_cf_cart_record_r
where cart_record_id = #{id} where cart_record_id = #{id}
</select> </select>
<select id="queryList" resultType="com.diaoyun.zion.chinafrica.entity.TbCfCartRecordREntity"> <select id="queryList" resultType="com.diaoyun.zion.chinafrica.entity.TbCfCartRecordREntity">
select select
`cart_record_id`, `cart_record_id`,
......
...@@ -97,5 +97,15 @@ ...@@ -97,5 +97,15 @@
#{templateId} #{templateId}
</foreach> </foreach>
</delete> </delete>
<select id="getDescriptionById" resultType="com.diaoyun.zion.chinafrica.vo.ExpressTemplateVo">
select
t.template_id descriptionId,
t.template_title descriptionName,
t.item_category_id,
t.express_fee,
t.country_code,
t.create_time
from tb_cf_express_template t
where t.template_id = #{descriptionId}
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -39,7 +39,25 @@ ...@@ -39,7 +39,25 @@
from tb_cf_item_detail from tb_cf_item_detail
where item_id = #{id} where item_id = #{id}
</select> </select>
<select id="queryByTitle" resultType="com.diaoyun.zion.chinafrica.vo.TbCfItemDetailVo">
select
`item_id`,
`source_item_id`,
`station_id`,
`station_type`,
`item_title`,
`item_num`,
`item_img`,
`item_price`,
`item_category`,
`item_sku`,
`shop_id`,
`shop_name`,
`shop_url`,
`create_time`
from tb_cf_item_detail
where item_title = #{itemTitle}
</select>
<select id="queryList" resultType="com.diaoyun.zion.chinafrica.entity.TbCfItemDetailEntity"> <select id="queryList" resultType="com.diaoyun.zion.chinafrica.entity.TbCfItemDetailEntity">
select select
`item_id`, `item_id`,
......
...@@ -8,6 +8,11 @@ ...@@ -8,6 +8,11 @@
<result property="itemId" column="item_id"/> <result property="itemId" column="item_id"/>
<result property="orderId" column="order_id"/> <result property="orderId" column="order_id"/>
<result property="enableFlag" column="enable_flag"/> <result property="enableFlag" column="enable_flag"/>
<result property="orderStatus" column="order_status"/>
<result property="deliveryFlag" column="delivery_flag"/>
<result property="deliveryTime" column="delivery_time"/>
<result property="closeTime" column="close_time"/>
<result property="updateTime" column="update_time"/>
</resultMap> </resultMap>
<select id="queryObject" resultType="com.diaoyun.zion.chinafrica.entity.TbCfItemOrderREntity"> <select id="queryObject" resultType="com.diaoyun.zion.chinafrica.entity.TbCfItemOrderREntity">
...@@ -15,7 +20,12 @@ ...@@ -15,7 +20,12 @@
`order_item_id`, `order_item_id`,
`item_id`, `item_id`,
`order_id`, `order_id`,
`enable_flag` `enable_flag`,
`order_status`,
`delivery_flag`,
`delivery_time`,
`close_time`,
`update_time`
from tb_cf_item_order_r from tb_cf_item_order_r
where order_item_id = #{id} where order_item_id = #{id}
</select> </select>
...@@ -25,7 +35,12 @@ ...@@ -25,7 +35,12 @@
`order_item_id`, `order_item_id`,
`item_id`, `item_id`,
`order_id`, `order_id`,
`enable_flag` `enable_flag`,
`order_status`,
`delivery_flag`,
`delivery_time`,
`close_time`,
`update_time`
from tb_cf_item_order_r from tb_cf_item_order_r
WHERE 1=1 WHERE 1=1
<if test="name != null and name.trim() != ''"> <if test="name != null and name.trim() != ''">
...@@ -57,12 +72,22 @@ ...@@ -57,12 +72,22 @@
`order_item_id`, `order_item_id`,
`item_id`, `item_id`,
`order_id`, `order_id`,
`enable_flag`) `enable_flag`,
`order_status`,
`delivery_flag`,
`delivery_time`,
`close_time`,
`update_time`)
values( values(
#{orderItemId}, #{orderItemId},
#{itemId}, #{itemId},
#{orderId}, #{orderId},
#{enableFlag}) #{enableFlag},
#{orderStatus},
#{deliveryFlag},
#{deliveryTime},
#{closeTime},
#{updateTime})
</insert> </insert>
<update id="update" parameterType="com.diaoyun.zion.chinafrica.entity.TbCfItemOrderREntity"> <update id="update" parameterType="com.diaoyun.zion.chinafrica.entity.TbCfItemOrderREntity">
...@@ -70,11 +95,30 @@ ...@@ -70,11 +95,30 @@
<set> <set>
<if test="itemId != null">`item_id` = #{itemId}, </if> <if test="itemId != null">`item_id` = #{itemId}, </if>
<if test="orderId != null">`order_id` = #{orderId}, </if> <if test="orderId != null">`order_id` = #{orderId}, </if>
<if test="enableFlag != null">`enable_flag` = #{enableFlag}</if> <if test="enableFlag != null">`enable_flag` = #{enableFlag},</if>
<if test="orderStatus != null">`order_status` = #{orderStatus},</if>
<if test="deliveryFlag != null">`delivery_flag`= #{deliveryFlag},</if>
<if test="deliveryTime != null">`delivery_time`= #{deliveryTime},</if>
<if test="closeTime != null">`close_time`= #{closeTime},</if>
<if test="updateTime != null">`update_time` = #{updateTime}</if>
</set> </set>
where order_item_id = #{orderItemId} where order_item_id = #{orderItemId}
</update> </update>
<update id="updates" parameterType="com.diaoyun.zion.chinafrica.entity.TbCfItemOrderREntity">
update tb_cf_item_order_r
<set>
<if test="itemId != null">`item_id` = #{itemId}, </if>
<if test="enableFlag != null">`enable_flag` = #{enableFlag},</if>
<if test="orderStatus != null">`order_status` = #{orderStatus},</if>
<if test="deliveryFlag != null">`delivery_flag`= #{deliveryFlag},</if>
<if test="deliveryTime != null">`delivery_time`= #{deliveryTime},</if>
<if test="closeTime != null">`close_time`= #{closeTime},</if>
<if test="updateTime != null">`update_time` = #{updateTime}</if>
</set>
where order_id = #{orderId}
</update>
<delete id="delete"> <delete id="delete">
delete from tb_cf_item_order_r where order_item_id = #{value} delete from tb_cf_item_order_r where order_item_id = #{value}
</delete> </delete>
...@@ -92,14 +136,24 @@ ...@@ -92,14 +136,24 @@
`order_item_id`, `order_item_id`,
`item_id`, `item_id`,
`order_id`, `order_id`,
`enable_flag`) `enable_flag`,
`order_status`,
`delivery_flag`,
`delivery_time`,
`close_time`,
`update_time`)
values values
<foreach collection="list" item="item" index="index" separator=","> <foreach collection="list" item="item" index="index" separator=",">
( (
#{item.orderItemId}, #{item.orderItemId},
#{item.itemId}, #{item.itemId},
#{item.orderId}, #{item.orderId},
#{item.enableFlag} #{item.enableFlag},
#{item.orderStatus},
#{item.deliveryFlag},
#{item.deliveryTime},
#{item.closeTime},
#{item.updateTime}
) )
</foreach> </foreach>
......
...@@ -279,7 +279,7 @@ ...@@ -279,7 +279,7 @@
t1.item_title, t1.item_title,
t1.item_num, t1.item_num,
t1.item_price, t1.item_price,
t1.item_category, t5.template_id descripitionId,
t5.template_title descripitionName t5.template_title descripitionName
FROM FROM
tb_cf_item_detail t1 tb_cf_item_detail t1
...@@ -288,11 +288,13 @@ ...@@ -288,11 +288,13 @@
LEFT JOIN tb_cf_platform_order t4 on t3.order_id=t4.order_id LEFT JOIN tb_cf_platform_order t4 on t3.order_id=t4.order_id
LEFT JOIN tb_cf_express_template t5 on t5.template_id=t4.descripition_id LEFT JOIN tb_cf_express_template t5 on t5.template_id=t4.descripition_id
WHERE WHERE
t2.enable_flag = 1 and t2.order_item_id=#{order_id} t2.enable_flag = 1 and t2.order_item_id=#{orderId}
</select> </select>
<!--获取付款订单--> <!--获取付款订单-->
<select id="getOrderListByTime" resultType="com.diaoyun.zion.chinafrica.entity.TbCfOrderEntity"> <select id="getOrderListByTime" resultType="com.diaoyun.zion.chinafrica.entity.TbCfOrderEntity">
select o.user_id,r.order_item_id order_id,o.deal_time from tb_cf_order o left join tb_cf_item_order_r r on r.order_id=o.order_id where pay_status=20 and o.enable_flag=1 select o.user_id,r.order_item_id order_id,o.deal_time
from tb_cf_order o left join tb_cf_item_order_r r on r.order_id=o.order_id
where pay_status=20 and r.enable_flag=1
and deal_time <![CDATA[ >= ]]> #{beginDate} and deal_time <![CDATA[ < ]]> #{endDate} and deal_time <![CDATA[ >= ]]> #{beginDate} and deal_time <![CDATA[ < ]]> #{endDate}
</select> </select>
...@@ -302,16 +304,18 @@ ...@@ -302,16 +304,18 @@
o.user_id, o.user_id,
r.order_item_id order_id, r.order_item_id order_id,
p.create_time deliveryTime, p.create_time deliveryTime,
a.address_country_name countryName,
o.delivery_address, o.delivery_address,
p.p_express_number expressId, p.p_express_number expressId,
i.item_id itemId, i.item_id itemId,
e.template_title descripitionName i.item_num,
p.descripition_id
from tb_cf_order o from tb_cf_order o
LEFT JOIN tb_cf_platform_order p on o.order_id=p.order_id LEFT JOIN tb_cf_platform_order p on o.order_id=p.order_id
left join tb_cf_item_order_r r on r.order_id=o.order_id left join tb_cf_item_order_r r on r.order_id=o.order_id
LEFT JOIN tb_cf_item_detail i on r.item_id=i.item_id LEFT JOIN tb_cf_item_detail i on r.item_id=i.item_id
LEFT JOIN tb_cf_express_template e on e.template_id=p.descripition_id LEFT JOIN tb_cf_address a on a.user_id=o.user_id
where o.delivery_flag=20 and o.enable_flag=1 where r.delivery_flag=10 and r.enable_flag=1
and p.create_time <![CDATA[ >= ]]> #{beginDate} and p.create_time <![CDATA[ < ]]> #{endDate} and p.create_time <![CDATA[ >= ]]> #{beginDate} and p.create_time <![CDATA[ < ]]> #{endDate}
</select> </select>
......
...@@ -53,20 +53,7 @@ ...@@ -53,20 +53,7 @@
from tb_cf_user_info from tb_cf_user_info
where user_id = #{id} where user_id = #{id}
</select> </select>
<!--提供给第三方的接口查询用户列表 -->
<select id="queryUserList" resultType="com.diaoyun.zion.chinafrica.vo.TbCfUserVo">
select
u.user_id,
u.user_no,
u.nick user_name,
u.phone,
u.last_login_time,
a.address_id defaultAddressId,
a.address_detail defaultAddressName,
u.enable_flag
from tb_cf_user_info u left join tb_cf_address a on u.user_id=a.user_id
WHERE 1=1
</select>
<select id="queryList" resultType="com.diaoyun.zion.chinafrica.entity.TbCfUserInfoEntity"> <select id="queryList" resultType="com.diaoyun.zion.chinafrica.entity.TbCfUserInfoEntity">
select select
`user_id`, `user_id`,
...@@ -229,5 +216,18 @@ ...@@ -229,5 +216,18 @@
<update id="updatePassWord"> <update id="updatePassWord">
update tb_cf_user_info set password=#{newPassword} where user_id=#{userId} update tb_cf_user_info set password=#{newPassword} where user_id=#{userId}
</update> </update>
<!--提供给第三方的 ,根据userId,查找需要的信息-->
<select id="queryUserByUserId" resultType="com.diaoyun.zion.chinafrica.vo.TbCfUserVo">
select
u.user_id,
u.user_no,
u.nick user_name,
u.phone,
u.last_login_time,
a.address_id defaultAddressId,
a.address_detail defaultAddressName,
u.enable_flag
from tb_cf_user_info u left join tb_cf_address a on u.user_id=a.user_id
WHERE 1=1 and u.user_id=#{userId}
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -80,19 +80,7 @@ public class PayTest { ...@@ -80,19 +80,7 @@ public class PayTest {
} }
} }
@Test
public void testJson() {
String str = "{\"products\":[{\"id\":4286830706785,\"title\":\"Black sneakers\",\"body_html\":\"\",\"vendor\":\"东泽阿玛尼\",\"product_type\":\"Men\",\"created_at\":\"2019-10-18T17:00:05+08:00\",\"handle\":\"black-sneakers\",\"updated_at\":\"2019-10-21T10:02:50+08:00\",\"published_at\":\"2019-10-18T16:56:43+08:00\",\"template_suffix\":null,\"tags\":\"Men Casual shoes\",\"published_scope\":\"web\",\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/Product\\/4286830706785\",\"variants\":[{\"id\":30880643776609,\"product_id\":4286830706785,\"title\":\"38\",\"price\":\"23.99\",\"sku\":\"\",\"position\":1,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"38\",\"option2\":null,\"option3\":null,\"created_at\":\"2019-10-18T17:00:06+08:00\",\"updated_at\":\"2019-10-21T10:02:49+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":0,\"image_id\":null,\"weight\":0.0,\"weight_unit\":\"kg\",\"inventory_item_id\":32293977129057,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30880643776609\"},{\"id\":30880643809377,\"product_id\":4286830706785,\"title\":\"39\",\"price\":\"23.99\",\"sku\":\"\",\"position\":2,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"39\",\"option2\":null,\"option3\":null,\"created_at\":\"2019-10-18T17:00:06+08:00\",\"updated_at\":\"2019-10-21T10:02:50+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":0,\"image_id\":null,\"weight\":0.0,\"weight_unit\":\"kg\",\"inventory_item_id\":32293977161825,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30880643809377\"},{\"id\":30880643842145,\"product_id\":4286830706785,\"title\":\"40\",\"price\":\"23.99\",\"sku\":\"\",\"position\":3,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"40\",\"option2\":null,\"option3\":null,\"created_at\":\"2019-10-18T17:00:06+08:00\",\"updated_at\":\"2019-10-21T10:02:50+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":0,\"image_id\":null,\"weight\":0.0,\"weight_unit\":\"kg\",\"inventory_item_id\":32293977194593,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30880643842145\"},{\"id\":30880643874913,\"product_id\":4286830706785,\"title\":\"41\",\"price\":\"23.99\",\"sku\":\"\",\"position\":4,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"41\",\"option2\":null,\"option3\":null,\"created_at\":\"2019-10-18T17:00:06+08:00\",\"updated_at\":\"2019-10-21T10:02:50+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":0,\"image_id\":null,\"weight\":0.0,\"weight_unit\":\"kg\",\"inventory_item_id\":32293977227361,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30880643874913\"},{\"id\":30880643907681,\"product_id\":4286830706785,\"title\":\"42\",\"price\":\"23.99\",\"sku\":\"\",\"position\":5,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"42\",\"option2\":null,\"option3\":null,\"created_at\":\"2019-10-18T17:00:06+08:00\",\"updated_at\":\"2019-10-21T10:02:50+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":0,\"image_id\":null,\"weight\":0.0,\"weight_unit\":\"kg\",\"inventory_item_id\":32293977260129,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30880643907681\"},{\"id\":30880643940449,\"product_id\":4286830706785,\"title\":\"43\",\"price\":\"23.99\",\"sku\":\"\",\"position\":6,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"43\",\"option2\":null,\"option3\":null,\"created_at\":\"2019-10-18T17:00:06+08:00\",\"updated_at\":\"2019-10-21T10:02:50+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":0,\"image_id\":null,\"weight\":0.0,\"weight_unit\":\"kg\",\"inventory_item_id\":32293977292897,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30880643940449\"}],\"options\":[{\"id\":5574305546337,\"product_id\":4286830706785,\"name\":\"Size\",\"position\":1,\"values\":[\"38\",\"39\",\"40\",\"41\",\"42\",\"43\"]}],\"images\":[{\"id\":13214913626209,\"product_id\":4286830706785,\"position\":1,\"created_at\":\"2019-10-18T17:00:11+08:00\",\"updated_at\":\"2019-10-18T17:00:11+08:00\",\"alt\":null,\"width\":1440,\"height\":1080,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/5f719703b7f164a66222139f208632e.jpg?v=1571389211\",\"variant_ids\":[],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13214913626209\"},{\"id\":13214914674785,\"product_id\":4286830706785,\"position\":2,\"created_at\":\"2019-10-18T17:00:16+08:00\",\"updated_at\":\"2019-10-18T17:00:16+08:00\",\"alt\":null,\"width\":1440,\"height\":1080,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/900cb5c599ac1e15346ae87cd49655b.jpg?v=1571389216\",\"variant_ids\":[],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13214914674785\"},{\"id\":13214916313185,\"product_id\":4286830706785,\"position\":3,\"created_at\":\"2019-10-18T17:00:21+08:00\",\"updated_at\":\"2019-10-18T17:00:21+08:00\",\"alt\":null,\"width\":1440,\"height\":1080,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/c5b1036cfa690e2c3643df504f0761d.jpg?v=1571389221\",\"variant_ids\":[],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13214916313185\"}],\"image\":{\"id\":13214913626209,\"product_id\":4286830706785,\"position\":1,\"created_at\":\"2019-10-18T17:00:11+08:00\",\"updated_at\":\"2019-10-18T17:00:11+08:00\",\"alt\":null,\"width\":1440,\"height\":1080,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/5f719703b7f164a66222139f208632e.jpg?v=1571389211\",\"variant_ids\":[],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13214913626209\"}},{\"id\":4286850072673,\"title\":\"Black sneakers\",\"body_html\":\"\",\"vendor\":\"东泽阿玛尼\",\"product_type\":\"Men\",\"created_at\":\"2019-10-18T17:06:00+08:00\",\"handle\":\"black-sneakers-1\",\"updated_at\":\"2019-10-21T10:03:32+08:00\",\"published_at\":\"2019-10-18T17:03:28+08:00\",\"template_suffix\":null,\"tags\":\"Men Casual shoes\",\"published_scope\":\"web\",\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/Product\\/4286850072673\",\"variants\":[{\"id\":30880695222369,\"product_id\":4286850072673,\"title\":\"38\",\"price\":\"23.99\",\"sku\":\"\",\"position\":1,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"38\",\"option2\":null,\"option3\":null,\"created_at\":\"2019-10-18T17:06:00+08:00\",\"updated_at\":\"2019-10-21T10:03:31+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":500,\"image_id\":null,\"weight\":0.5,\"weight_unit\":\"kg\",\"inventory_item_id\":32294038798433,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30880695222369\"},{\"id\":30880695255137,\"product_id\":4286850072673,\"title\":\"39\",\"price\":\"23.99\",\"sku\":\"\",\"position\":2,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"39\",\"option2\":null,\"option3\":null,\"created_at\":\"2019-10-18T17:06:00+08:00\",\"updated_at\":\"2019-10-21T10:03:31+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":500,\"image_id\":null,\"weight\":0.5,\"weight_unit\":\"kg\",\"inventory_item_id\":32294038831201,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30880695255137\"},{\"id\":30880695287905,\"product_id\":4286850072673,\"title\":\"40\",\"price\":\"23.99\",\"sku\":\"\",\"position\":3,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"40\",\"option2\":null,\"option3\":null,\"created_at\":\"2019-10-18T17:06:00+08:00\",\"updated_at\":\"2019-10-21T10:03:31+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":500,\"image_id\":null,\"weight\":0.5,\"weight_unit\":\"kg\",\"inventory_item_id\":32294038863969,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30880695287905\"},{\"id\":30880695320673,\"product_id\":4286850072673,\"title\":\"41\",\"price\":\"23.99\",\"sku\":\"\",\"position\":4,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"41\",\"option2\":null,\"option3\":null,\"created_at\":\"2019-10-18T17:06:00+08:00\",\"updated_at\":\"2019-10-21T10:03:32+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":500,\"image_id\":null,\"weight\":0.5,\"weight_unit\":\"kg\",\"inventory_item_id\":32294038896737,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30880695320673\"},{\"id\":30880695353441,\"product_id\":4286850072673,\"title\":\"42\",\"price\":\"23.99\",\"sku\":\"\",\"position\":5,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"42\",\"option2\":null,\"option3\":null,\"created_at\":\"2019-10-18T17:06:00+08:00\",\"updated_at\":\"2019-10-21T10:03:32+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":500,\"image_id\":null,\"weight\":0.5,\"weight_unit\":\"kg\",\"inventory_item_id\":32294038929505,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30880695353441\"},{\"id\":30880695386209,\"product_id\":4286850072673,\"title\":\"43\",\"price\":\"23.99\",\"sku\":\"\",\"position\":6,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"43\",\"option2\":null,\"option3\":null,\"created_at\":\"2019-10-18T17:06:00+08:00\",\"updated_at\":\"2019-10-21T10:03:32+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":500,\"image_id\":null,\"weight\":0.5,\"weight_unit\":\"kg\",\"inventory_item_id\":32294038962273,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30880695386209\"}],\"options\":[{\"id\":5574329106529,\"product_id\":4286850072673,\"name\":\"Size\",\"position\":1,\"values\":[\"38\",\"39\",\"40\",\"41\",\"42\",\"43\"]}],\"images\":[{\"id\":13214976573537,\"product_id\":4286850072673,\"position\":1,\"created_at\":\"2019-10-18T17:06:06+08:00\",\"updated_at\":\"2019-10-18T17:06:06+08:00\",\"alt\":null,\"width\":1440,\"height\":1080,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/3e7e86d5ca21ed1a0dfa157bd1dc335.jpg?v=1571389566\",\"variant_ids\":[],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13214976573537\"},{\"id\":13214978670689,\"product_id\":4286850072673,\"position\":2,\"created_at\":\"2019-10-18T17:06:12+08:00\",\"updated_at\":\"2019-10-18T17:06:12+08:00\",\"alt\":null,\"width\":1440,\"height\":1080,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/0146f58ea73d83a98e69beaca19691f.jpg?v=1571389572\",\"variant_ids\":[],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13214978670689\"},{\"id\":13214981062753,\"product_id\":4286850072673,\"position\":3,\"created_at\":\"2019-10-18T17:06:18+08:00\",\"updated_at\":\"2019-10-18T17:06:18+08:00\",\"alt\":null,\"width\":1440,\"height\":1080,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/9215dc2a747da1d27f5f90d871631d0.jpg?v=1571389578\",\"variant_ids\":[],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13214981062753\"}],\"image\":{\"id\":13214976573537,\"product_id\":4286850072673,\"position\":1,\"created_at\":\"2019-10-18T17:06:06+08:00\",\"updated_at\":\"2019-10-18T17:06:06+08:00\",\"alt\":null,\"width\":1440,\"height\":1080,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/3e7e86d5ca21ed1a0dfa157bd1dc335.jpg?v=1571389566\",\"variant_ids\":[],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13214976573537\"}},{\"id\":4286861181025,\"title\":\"Black sneakers\",\"body_html\":\"\",\"vendor\":\"东泽阿玛尼\",\"product_type\":\"Men\",\"created_at\":\"2019-10-18T17:15:04+08:00\",\"handle\":\"black-sneakers-2\",\"updated_at\":\"2019-10-21T10:04:12+08:00\",\"published_at\":\"2019-10-18T17:09:01+08:00\",\"template_suffix\":null,\"tags\":\"Men Casual shoes\",\"published_scope\":\"web\",\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/Product\\/4286861181025\",\"variants\":[{\"id\":30880773636193,\"product_id\":4286861181025,\"title\":\"38\",\"price\":\"23.99\",\"sku\":\"\",\"position\":1,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"38\",\"option2\":null,\"option3\":null,\"created_at\":\"2019-10-18T17:15:05+08:00\",\"updated_at\":\"2019-10-21T10:04:11+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":500,\"image_id\":null,\"weight\":0.5,\"weight_unit\":\"kg\",\"inventory_item_id\":32294132383841,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30880773636193\"},{\"id\":30880773668961,\"product_id\":4286861181025,\"title\":\"39\",\"price\":\"23.99\",\"sku\":\"\",\"position\":2,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"39\",\"option2\":null,\"option3\":null,\"created_at\":\"2019-10-18T17:15:05+08:00\",\"updated_at\":\"2019-10-21T10:04:12+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":500,\"image_id\":null,\"weight\":0.5,\"weight_unit\":\"kg\",\"inventory_item_id\":32294132416609,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30880773668961\"},{\"id\":30880773701729,\"product_id\":4286861181025,\"title\":\"40\",\"price\":\"23.99\",\"sku\":\"\",\"position\":3,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"40\",\"option2\":null,\"option3\":null,\"created_at\":\"2019-10-18T17:15:05+08:00\",\"updated_at\":\"2019-10-21T10:04:12+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":500,\"image_id\":null,\"weight\":0.5,\"weight_unit\":\"kg\",\"inventory_item_id\":32294132449377,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30880773701729\"},{\"id\":30880773734497,\"product_id\":4286861181025,\"title\":\"41\",\"price\":\"23.99\",\"sku\":\"\",\"position\":4,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"41\",\"option2\":null,\"option3\":null,\"created_at\":\"2019-10-18T17:15:05+08:00\",\"updated_at\":\"2019-10-21T10:04:12+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":500,\"image_id\":null,\"weight\":0.5,\"weight_unit\":\"kg\",\"inventory_item_id\":32294132482145,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30880773734497\"},{\"id\":30880773767265,\"product_id\":4286861181025,\"title\":\"42\",\"price\":\"23.99\",\"sku\":\"\",\"position\":5,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"42\",\"option2\":null,\"option3\":null,\"created_at\":\"2019-10-18T17:15:05+08:00\",\"updated_at\":\"2019-10-21T10:04:12+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":500,\"image_id\":null,\"weight\":0.5,\"weight_unit\":\"kg\",\"inventory_item_id\":32294132514913,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30880773767265\"},{\"id\":30880773800033,\"product_id\":4286861181025,\"title\":\"43\",\"price\":\"23.99\",\"sku\":\"\",\"position\":6,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"43\",\"option2\":null,\"option3\":null,\"created_at\":\"2019-10-18T17:15:05+08:00\",\"updated_at\":\"2019-10-21T10:04:12+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":500,\"image_id\":null,\"weight\":0.5,\"weight_unit\":\"kg\",\"inventory_item_id\":32294132547681,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30880773800033\"}],\"options\":[{\"id\":5574346702945,\"product_id\":4286861181025,\"name\":\"Size\",\"position\":1,\"values\":[\"38\",\"39\",\"40\",\"41\",\"42\",\"43\"]}],\"images\":[{\"id\":13215065407585,\"product_id\":4286861181025,\"position\":1,\"created_at\":\"2019-10-18T17:15:11+08:00\",\"updated_at\":\"2019-10-18T17:15:11+08:00\",\"alt\":null,\"width\":1440,\"height\":1080,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/fe750728c67c923913c82951879771a.jpg?v=1571390111\",\"variant_ids\":[],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13215065407585\"},{\"id\":13215066030177,\"product_id\":4286861181025,\"position\":2,\"created_at\":\"2019-10-18T17:15:17+08:00\",\"updated_at\":\"2019-10-18T17:15:17+08:00\",\"alt\":null,\"width\":1440,\"height\":1080,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/4b7db43122cab7f3c17d5a51f3d0c90.jpg?v=1571390117\",\"variant_ids\":[],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13215066030177\"}],\"image\":{\"id\":13215065407585,\"product_id\":4286861181025,\"position\":1,\"created_at\":\"2019-10-18T17:15:11+08:00\",\"updated_at\":\"2019-10-18T17:15:11+08:00\",\"alt\":null,\"width\":1440,\"height\":1080,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/fe750728c67c923913c82951879771a.jpg?v=1571390111\",\"variant_ids\":[],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13215065407585\"}},{\"id\":4349270261857,\"title\":\"Business backpack\",\"body_html\":\"\\u003cp\\u003e19inch\\u003cbr\\u003ewith anti-theft lock,data cable, earphone cable\\u003c\\/p\\u003e\\n\\u003cp\\u003e\\u003cimg src=\\\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/files\\/1_5c401c93-71f5-4f28-8ed5-f729e8a83136.jpg?v=1573127093\\\" alt=\\\"\\\"\\u003e\\u003c\\/p\\u003e\\n\\u003cp\\u003e\\u003cimg src=\\\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/files\\/2_85ec3edb-a21d-49a3-966d-59acfba3d2c4.jpg?v=1573127115\\\" alt=\\\"\\\"\\u003e\\u003c\\/p\\u003e\\n\\u003cp\\u003e\\u003cimg src=\\\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/files\\/3_6919f3ee-b411-46d3-8336-14958a8cc750.jpg?v=1573127135\\\" alt=\\\"\\\"\\u003e\\u003c\\/p\\u003e\\n\\u003cp\\u003e\\u003cimg src=\\\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/files\\/5_1b4ef049-d976-4c12-b29f-e34f460fbb6f.jpg?v=1573127151\\\" alt=\\\"\\\"\\u003e\\u003c\\/p\\u003e\\n\\u003cp\\u003e\\u003cimg src=\\\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/files\\/10_7449a129-19e4-4e8e-94c6-2fd37d0782e0.jpg?v=1573127176\\\" alt=\\\"\\\"\\u003e\\u003c\\/p\\u003e\\n\\u003cp\\u003e\\u003cimg src=\\\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/files\\/12_a76a7c2b-e786-4bc2-b8bb-b5cc12aad0c5.jpg?v=1573127200\\\" alt=\\\"\\\"\\u003e\\u003c\\/p\\u003e\\n\\u003cp\\u003e\\u003cimg src=\\\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/files\\/13_e13b7cc0-f970-49ca-bfa6-047129e99623.jpg?v=1573127221\\\" alt=\\\"\\\"\\u003e\\u003c\\/p\\u003e\",\"vendor\":\"飚王\",\"product_type\":\"Men\",\"created_at\":\"2019-11-07T19:48:13+08:00\",\"handle\":\"business-backpack-1\",\"updated_at\":\"2019-11-08T09:47:00+08:00\",\"published_at\":\"2019-11-07T10:01:15+08:00\",\"template_suffix\":\"\",\"tags\":\"Men bag\",\"published_scope\":\"web\",\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/Product\\/4349270261857\",\"variants\":[{\"id\":31158183985249,\"product_id\":4349270261857,\"title\":\"Default Title\",\"price\":\"18.99\",\"sku\":\"2901\",\"position\":1,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"Default Title\",\"option2\":null,\"option3\":null,\"created_at\":\"2019-11-07T19:48:14+08:00\",\"updated_at\":\"2019-11-08T09:47:00+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":500,\"image_id\":null,\"weight\":0.5,\"weight_unit\":\"kg\",\"inventory_item_id\":32663248011361,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/31158183985249\"}],\"options\":[{\"id\":5648098394209,\"product_id\":4349270261857,\"name\":\"Title\",\"position\":1,\"values\":[\"Default Title\"]}],\"images\":[{\"id\":13458829508705,\"product_id\":4349270261857,\"position\":1,\"created_at\":\"2019-11-07T19:48:13+08:00\",\"updated_at\":\"2019-11-07T19:48:13+08:00\",\"alt\":null,\"width\":1000,\"height\":1500,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/6_dfe60f51-65f7-4b68-b6a0-cc35deeee15e.jpg?v=1573127293\",\"variant_ids\":[],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13458829508705\"},{\"id\":13458829541473,\"product_id\":4349270261857,\"position\":2,\"created_at\":\"2019-11-07T19:48:13+08:00\",\"updated_at\":\"2019-11-07T19:48:13+08:00\",\"alt\":null,\"width\":1000,\"height\":1500,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/7_4653c1d7-0852-4b2f-9407-2622f5387914.jpg?v=1573127293\",\"variant_ids\":[],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13458829541473\"},{\"id\":13458829574241,\"product_id\":4349270261857,\"position\":3,\"created_at\":\"2019-11-07T19:48:13+08:00\",\"updated_at\":\"2019-11-07T19:48:13+08:00\",\"alt\":null,\"width\":1000,\"height\":1500,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/8_a309cdcf-171e-4f9d-9c48-f051df43e0e0.jpg?v=1573127293\",\"variant_ids\":[],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13458829574241\"},{\"id\":13458829607009,\"product_id\":4349270261857,\"position\":4,\"created_at\":\"2019-11-07T19:48:13+08:00\",\"updated_at\":\"2019-11-07T19:48:13+08:00\",\"alt\":null,\"width\":1000,\"height\":1500,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/9_116c60b8-3d19-40b4-8876-4ae5cb33a9b8.jpg?v=1573127293\",\"variant_ids\":[],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13458829607009\"},{\"id\":13458829639777,\"product_id\":4349270261857,\"position\":5,\"created_at\":\"2019-11-07T19:48:13+08:00\",\"updated_at\":\"2019-11-07T19:48:13+08:00\",\"alt\":null,\"width\":1000,\"height\":1500,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/34.jpg?v=1573127293\",\"variant_ids\":[],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13458829639777\"}],\"image\":{\"id\":13458829508705,\"product_id\":4349270261857,\"position\":1,\"created_at\":\"2019-11-07T19:48:13+08:00\",\"updated_at\":\"2019-11-07T19:48:13+08:00\",\"alt\":null,\"width\":1000,\"height\":1500,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/6_dfe60f51-65f7-4b68-b6a0-cc35deeee15e.jpg?v=1573127293\",\"variant_ids\":[],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13458829508705\"}},{\"id\":4348835201121,\"title\":\"Business travel backpack 19inch\",\"body_html\":\"\",\"vendor\":\"飚王\",\"product_type\":\"Men\",\"created_at\":\"2019-11-07T16:32:22+08:00\",\"handle\":\"business-travel-backpack-19inch\",\"updated_at\":\"2019-11-07T16:32:56+08:00\",\"published_at\":\"2019-11-07T10:01:15+08:00\",\"template_suffix\":\"\",\"tags\":\"Men bag\",\"published_scope\":\"web\",\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/Product\\/4348835201121\",\"variants\":[{\"id\":31154822185057,\"product_id\":4348835201121,\"title\":\"Black\",\"price\":\"13.99\",\"sku\":\"2504\",\"position\":1,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"Black\",\"option2\":null,\"option3\":null,\"created_at\":\"2019-11-07T16:32:23+08:00\",\"updated_at\":\"2019-11-07T16:32:56+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":500,\"image_id\":13455752986721,\"weight\":0.5,\"weight_unit\":\"kg\",\"inventory_item_id\":32659781976161,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/31154822185057\"},{\"id\":31154822217825,\"product_id\":4348835201121,\"title\":\"Brown\",\"price\":\"13.99\",\"sku\":\"2504\",\"position\":2,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"Brown\",\"option2\":null,\"option3\":null,\"created_at\":\"2019-11-07T16:32:23+08:00\",\"updated_at\":\"2019-11-07T16:32:56+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":500,\"image_id\":13455752953953,\"weight\":0.5,\"weight_unit\":\"kg\",\"inventory_item_id\":32659782008929,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/31154822217825\"},{\"id\":31154822250593,\"product_id\":4348835201121,\"title\":\"Blue\",\"price\":\"13.99\",\"sku\":\"2504\",\"position\":3,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"Blue\",\"option2\":null,\"option3\":null,\"created_at\":\"2019-11-07T16:32:23+08:00\",\"updated_at\":\"2019-11-07T16:32:56+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":500,\"image_id\":13455753019489,\"weight\":0.5,\"weight_unit\":\"kg\",\"inventory_item_id\":32659782041697,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/31154822250593\"}],\"options\":[{\"id\":5647465971809,\"product_id\":4348835201121,\"name\":\"Color\",\"position\":1,\"values\":[\"Black\",\"Brown\",\"Blue\"]}],\"images\":[{\"id\":13455752953953,\"product_id\":4348835201121,\"position\":1,\"created_at\":\"2019-11-07T16:32:23+08:00\",\"updated_at\":\"2019-11-07T16:32:23+08:00\",\"alt\":null,\"width\":366,\"height\":460,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/2504-a.png?v=1573115543\",\"variant_ids\":[31154822217825],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13455752953953\"},{\"id\":13455752986721,\"product_id\":4348835201121,\"position\":2,\"created_at\":\"2019-11-07T16:32:23+08:00\",\"updated_at\":\"2019-11-07T16:32:23+08:00\",\"alt\":null,\"width\":372,\"height\":490,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/2504-b.png?v=1573115543\",\"variant_ids\":[31154822185057],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13455752986721\"},{\"id\":13455753019489,\"product_id\":4348835201121,\"position\":3,\"created_at\":\"2019-11-07T16:32:23+08:00\",\"updated_at\":\"2019-11-07T16:32:23+08:00\",\"alt\":null,\"width\":388,\"height\":480,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/2504-c.png?v=1573115543\",\"variant_ids\":[31154822250593],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13455753019489\"}],\"image\":{\"id\":13455752953953,\"product_id\":4348835201121,\"position\":1,\"created_at\":\"2019-11-07T16:32:23+08:00\",\"updated_at\":\"2019-11-07T16:32:23+08:00\",\"alt\":null,\"width\":366,\"height\":460,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/2504-a.png?v=1573115543\",\"variant_ids\":[31154822217825],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13455752953953\"}},{\"id\":4348704096353,\"title\":\"Business waterproof backpack 19inch\",\"body_html\":\"\",\"vendor\":\"飚王\",\"product_type\":\"Men\",\"created_at\":\"2019-11-07T15:44:55+08:00\",\"handle\":\"business-waterproof-backpack-19inch\",\"updated_at\":\"2019-11-07T15:45:51+08:00\",\"published_at\":\"2019-11-07T10:01:15+08:00\",\"template_suffix\":\"\",\"tags\":\"Men bag\",\"published_scope\":\"web\",\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/Product\\/4348704096353\",\"variants\":[{\"id\":31153831936097,\"product_id\":4348704096353,\"title\":\"Black\",\"price\":\"9.99\",\"sku\":\"1326\",\"position\":1,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"Black\",\"option2\":null,\"option3\":null,\"created_at\":\"2019-11-07T15:44:55+08:00\",\"updated_at\":\"2019-11-07T15:45:51+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":500,\"image_id\":13454840266849,\"weight\":0.5,\"weight_unit\":\"kg\",\"inventory_item_id\":32658762661985,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/31153831936097\"},{\"id\":31153831968865,\"product_id\":4348704096353,\"title\":\"Brown\",\"price\":\"9.99\",\"sku\":\"1326\",\"position\":2,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"Brown\",\"option2\":null,\"option3\":null,\"created_at\":\"2019-11-07T15:44:55+08:00\",\"updated_at\":\"2019-11-07T15:45:51+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":500,\"image_id\":13454840135777,\"weight\":0.5,\"weight_unit\":\"kg\",\"inventory_item_id\":32658762694753,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/31153831968865\"},{\"id\":31153832001633,\"product_id\":4348704096353,\"title\":\"Purple\",\"price\":\"9.99\",\"sku\":\"1326\",\"position\":3,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"Purple\",\"option2\":null,\"option3\":null,\"created_at\":\"2019-11-07T15:44:55+08:00\",\"updated_at\":\"2019-11-07T15:45:51+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":500,\"image_id\":13454840234081,\"weight\":0.5,\"weight_unit\":\"kg\",\"inventory_item_id\":32658762727521,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/31153832001633\"},{\"id\":31153832034401,\"product_id\":4348704096353,\"title\":\"Red\",\"price\":\"9.99\",\"sku\":\"1326\",\"position\":4,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"Red\",\"option2\":null,\"option3\":null,\"created_at\":\"2019-11-07T15:44:55+08:00\",\"updated_at\":\"2019-11-07T15:45:51+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":500,\"image_id\":13454840299617,\"weight\":0.5,\"weight_unit\":\"kg\",\"inventory_item_id\":32658762760289,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/31153832034401\"},{\"id\":31153832067169,\"product_id\":4348704096353,\"title\":\"Blue\",\"price\":\"9.99\",\"sku\":\"1326\",\"position\":5,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"Blue\",\"option2\":null,\"option3\":null,\"created_at\":\"2019-11-07T15:44:55+08:00\",\"updated_at\":\"2019-11-07T15:45:51+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":500,\"image_id\":13454840201313,\"weight\":0.5,\"weight_unit\":\"kg\",\"inventory_item_id\":32658762793057,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/31153832067169\"}],\"options\":[{\"id\":5647279849569,\"product_id\":4348704096353,\"name\":\"Color\",\"position\":1,\"values\":[\"Black\",\"Brown\",\"Purple\",\"Red\",\"Blue\"]}],\"images\":[{\"id\":13454840135777,\"product_id\":4348704096353,\"position\":1,\"created_at\":\"2019-11-07T15:44:55+08:00\",\"updated_at\":\"2019-11-07T15:44:55+08:00\",\"alt\":null,\"width\":1000,\"height\":1500,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/1_29052936-614a-4235-adf4-187c4ab1ae2e.jpg?v=1573112695\",\"variant_ids\":[31153831968865],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13454840135777\"},{\"id\":13454840201313,\"product_id\":4348704096353,\"position\":2,\"created_at\":\"2019-11-07T15:44:55+08:00\",\"updated_at\":\"2019-11-07T15:44:55+08:00\",\"alt\":null,\"width\":1000,\"height\":1500,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/2_d443d5de-120c-42d8-a773-7a487b670eac.jpg?v=1573112695\",\"variant_ids\":[31153832067169],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13454840201313\"},{\"id\":13454840234081,\"product_id\":4348704096353,\"position\":3,\"created_at\":\"2019-11-07T15:44:55+08:00\",\"updated_at\":\"2019-11-07T15:44:55+08:00\",\"alt\":null,\"width\":1000,\"height\":1500,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/3_76ce9f3f-6a31-4fb3-a6ad-240c2a84c5b7.jpg?v=1573112695\",\"variant_ids\":[31153832001633],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13454840234081\"},{\"id\":13454840266849,\"product_id\":4348704096353,\"position\":4,\"created_at\":\"2019-11-07T15:44:55+08:00\",\"updated_at\":\"2019-11-07T15:44:55+08:00\",\"alt\":null,\"width\":1000,\"height\":1500,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/4_419fb16d-c57d-436d-81e6-b73c31f38570.jpg?v=1573112695\",\"variant_ids\":[31153831936097],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13454840266849\"},{\"id\":13454840299617,\"product_id\":4348704096353,\"position\":5,\"created_at\":\"2019-11-07T15:44:55+08:00\",\"updated_at\":\"2019-11-07T15:44:55+08:00\",\"alt\":null,\"width\":1000,\"height\":1500,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/5_2b290c08-336b-4b5f-8dd1-fe5499f60c21.jpg?v=1573112695\",\"variant_ids\":[31153832034401],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13454840299617\"}],\"image\":{\"id\":13454840135777,\"product_id\":4348704096353,\"position\":1,\"created_at\":\"2019-11-07T15:44:55+08:00\",\"updated_at\":\"2019-11-07T15:44:55+08:00\",\"alt\":null,\"width\":1000,\"height\":1500,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/1_29052936-614a-4235-adf4-187c4ab1ae2e.jpg?v=1573112695\",\"variant_ids\":[31153831968865],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13454840135777\"}},{\"id\":4286874058849,\"title\":\"Canvas shoe\",\"body_html\":\"\",\"vendor\":\"东泽阿玛尼\",\"product_type\":\"Men\",\"created_at\":\"2019-10-18T17:29:12+08:00\",\"handle\":\"canvas-shoe\",\"updated_at\":\"2019-10-18T17:29:45+08:00\",\"published_at\":\"2019-10-18T17:25:37+08:00\",\"template_suffix\":null,\"tags\":\"Men Casual shoes\",\"published_scope\":\"web\",\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/Product\\/4286874058849\",\"variants\":[{\"id\":30880829440097,\"product_id\":4286874058849,\"title\":\"38 \\/ black\",\"price\":\"33.99\",\"sku\":\"\",\"position\":1,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"38\",\"option2\":\"black\",\"option3\":null,\"created_at\":\"2019-10-18T17:29:13+08:00\",\"updated_at\":\"2019-10-18T17:29:45+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":400,\"image_id\":null,\"weight\":0.4,\"weight_unit\":\"kg\",\"inventory_item_id\":32294213681249,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30880829440097\"},{\"id\":30880829472865,\"product_id\":4286874058849,\"title\":\"38 \\/ white\",\"price\":\"33.99\",\"sku\":\"\",\"position\":2,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"38\",\"option2\":\"white\",\"option3\":null,\"created_at\":\"2019-10-18T17:29:13+08:00\",\"updated_at\":\"2019-10-18T17:29:45+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":400,\"image_id\":null,\"weight\":0.4,\"weight_unit\":\"kg\",\"inventory_item_id\":32294213714017,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30880829472865\"},{\"id\":30880829505633,\"product_id\":4286874058849,\"title\":\"39 \\/ black\",\"price\":\"33.99\",\"sku\":\"\",\"position\":3,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"39\",\"option2\":\"black\",\"option3\":null,\"created_at\":\"2019-10-18T17:29:13+08:00\",\"updated_at\":\"2019-10-18T17:29:45+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":400,\"image_id\":null,\"weight\":0.4,\"weight_unit\":\"kg\",\"inventory_item_id\":32294213746785,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30880829505633\"},{\"id\":30880829538401,\"product_id\":4286874058849,\"title\":\"39 \\/ white\",\"price\":\"33.99\",\"sku\":\"\",\"position\":4,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"39\",\"option2\":\"white\",\"option3\":null,\"created_at\":\"2019-10-18T17:29:13+08:00\",\"updated_at\":\"2019-10-18T17:29:45+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":400,\"image_id\":null,\"weight\":0.4,\"weight_unit\":\"kg\",\"inventory_item_id\":32294213779553,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30880829538401\"},{\"id\":30880829571169,\"product_id\":4286874058849,\"title\":\"40 \\/ black\",\"price\":\"33.99\",\"sku\":\"\",\"position\":5,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"40\",\"option2\":\"black\",\"option3\":null,\"created_at\":\"2019-10-18T17:29:13+08:00\",\"updated_at\":\"2019-10-18T17:29:45+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":400,\"image_id\":null,\"weight\":0.4,\"weight_unit\":\"kg\",\"inventory_item_id\":32294213812321,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30880829571169\"},{\"id\":30880829603937,\"product_id\":4286874058849,\"title\":\"40 \\/ white\",\"price\":\"33.99\",\"sku\":\"\",\"position\":6,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"40\",\"option2\":\"white\",\"option3\":null,\"created_at\":\"2019-10-18T17:29:13+08:00\",\"updated_at\":\"2019-10-18T17:29:45+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":400,\"image_id\":null,\"weight\":0.4,\"weight_unit\":\"kg\",\"inventory_item_id\":32294213845089,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30880829603937\"},{\"id\":30880829636705,\"product_id\":4286874058849,\"title\":\"41 \\/ black\",\"price\":\"33.99\",\"sku\":\"\",\"position\":7,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"41\",\"option2\":\"black\",\"option3\":null,\"created_at\":\"2019-10-18T17:29:13+08:00\",\"updated_at\":\"2019-10-18T17:29:45+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":400,\"image_id\":null,\"weight\":0.4,\"weight_unit\":\"kg\",\"inventory_item_id\":32294213877857,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30880829636705\"},{\"id\":30880829669473,\"product_id\":4286874058849,\"title\":\"41 \\/ white\",\"price\":\"33.99\",\"sku\":\"\",\"position\":8,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"41\",\"option2\":\"white\",\"option3\":null,\"created_at\":\"2019-10-18T17:29:13+08:00\",\"updated_at\":\"2019-10-18T17:29:45+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":400,\"image_id\":null,\"weight\":0.4,\"weight_unit\":\"kg\",\"inventory_item_id\":32294213910625,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30880829669473\"},{\"id\":30880829702241,\"product_id\":4286874058849,\"title\":\"42 \\/ black\",\"price\":\"33.99\",\"sku\":\"\",\"position\":9,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"42\",\"option2\":\"black\",\"option3\":null,\"created_at\":\"2019-10-18T17:29:13+08:00\",\"updated_at\":\"2019-10-18T17:29:45+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":400,\"image_id\":null,\"weight\":0.4,\"weight_unit\":\"kg\",\"inventory_item_id\":32294213943393,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30880829702241\"},{\"id\":30880829735009,\"product_id\":4286874058849,\"title\":\"42 \\/ white\",\"price\":\"33.99\",\"sku\":\"\",\"position\":10,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"42\",\"option2\":\"white\",\"option3\":null,\"created_at\":\"2019-10-18T17:29:13+08:00\",\"updated_at\":\"2019-10-18T17:29:45+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":400,\"image_id\":null,\"weight\":0.4,\"weight_unit\":\"kg\",\"inventory_item_id\":32294213976161,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30880829735009\"},{\"id\":30880829767777,\"product_id\":4286874058849,\"title\":\"43 \\/ black\",\"price\":\"33.99\",\"sku\":\"\",\"position\":11,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"43\",\"option2\":\"black\",\"option3\":null,\"created_at\":\"2019-10-18T17:29:13+08:00\",\"updated_at\":\"2019-10-18T17:29:45+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":400,\"image_id\":null,\"weight\":0.4,\"weight_unit\":\"kg\",\"inventory_item_id\":32294214008929,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30880829767777\"},{\"id\":30880829800545,\"product_id\":4286874058849,\"title\":\"43 \\/ white\",\"price\":\"33.99\",\"sku\":\"\",\"position\":12,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"43\",\"option2\":\"white\",\"option3\":null,\"created_at\":\"2019-10-18T17:29:13+08:00\",\"updated_at\":\"2019-10-18T17:29:45+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":400,\"image_id\":null,\"weight\":0.4,\"weight_unit\":\"kg\",\"inventory_item_id\":32294214041697,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30880829800545\"}],\"options\":[{\"id\":5574363676769,\"product_id\":4286874058849,\"name\":\"Size\",\"position\":1,\"values\":[\"38\",\"39\",\"40\",\"41\",\"42\",\"43\"]},{\"id\":5574363709537,\"product_id\":4286874058849,\"name\":\"Color\",\"position\":2,\"values\":[\"black\",\"white\"]}],\"images\":[{\"id\":13215206506593,\"product_id\":4286874058849,\"position\":1,\"created_at\":\"2019-10-18T17:29:20+08:00\",\"updated_at\":\"2019-10-18T17:29:20+08:00\",\"alt\":null,\"width\":1440,\"height\":1080,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/0ad9310e94cb73c4fa398de7533626b.jpg?v=1571390960\",\"variant_ids\":[],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13215206506593\"},{\"id\":13215207784545,\"product_id\":4286874058849,\"position\":2,\"created_at\":\"2019-10-18T17:29:25+08:00\",\"updated_at\":\"2019-10-18T17:29:25+08:00\",\"alt\":null,\"width\":1440,\"height\":1080,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/5bb6f757f2d3c9a5b7d9ee61caf39b5.jpg?v=1571390965\",\"variant_ids\":[],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13215207784545\"},{\"id\":13215208505441,\"product_id\":4286874058849,\"position\":3,\"created_at\":\"2019-10-18T17:29:29+08:00\",\"updated_at\":\"2019-10-18T17:29:29+08:00\",\"alt\":null,\"width\":1440,\"height\":1080,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/478d5dbe96a1ad4be12526fd47c05ef.jpg?v=1571390969\",\"variant_ids\":[],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13215208505441\"}],\"image\":{\"id\":13215206506593,\"product_id\":4286874058849,\"position\":1,\"created_at\":\"2019-10-18T17:29:20+08:00\",\"updated_at\":\"2019-10-18T17:29:20+08:00\",\"alt\":null,\"width\":1440,\"height\":1080,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/0ad9310e94cb73c4fa398de7533626b.jpg?v=1571390960\",\"variant_ids\":[],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13215206506593\"}},{\"id\":4286953193569,\"title\":\"Canvas shoe\",\"body_html\":\"\",\"vendor\":\"东泽阿玛尼\",\"product_type\":\"Men\",\"created_at\":\"2019-10-18T18:38:59+08:00\",\"handle\":\"canvas-shoe-1\",\"updated_at\":\"2019-10-22T15:53:39+08:00\",\"published_at\":\"2019-10-18T18:36:07+08:00\",\"template_suffix\":\"\",\"tags\":\"Men Casual shoes\",\"published_scope\":\"web\",\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/Product\\/4286953193569\",\"variants\":[{\"id\":30881283735649,\"product_id\":4286953193569,\"title\":\"38 \\/ black\",\"price\":\"41.99\",\"sku\":\"\",\"position\":1,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"38\",\"option2\":\"black\",\"option3\":null,\"created_at\":\"2019-10-18T18:39:01+08:00\",\"updated_at\":\"2019-10-22T15:53:39+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":500,\"image_id\":13215997886561,\"weight\":0.5,\"weight_unit\":\"kg\",\"inventory_item_id\":32294741016673,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30881283735649\"},{\"id\":30881283768417,\"product_id\":4286953193569,\"title\":\"38 \\/ white\",\"price\":\"41.99\",\"sku\":\"\",\"position\":2,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"38\",\"option2\":\"white\",\"option3\":null,\"created_at\":\"2019-10-18T18:39:01+08:00\",\"updated_at\":\"2019-10-22T15:53:39+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":500,\"image_id\":13215998345313,\"weight\":0.5,\"weight_unit\":\"kg\",\"inventory_item_id\":32294741049441,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30881283768417\"},{\"id\":30881283801185,\"product_id\":4286953193569,\"title\":\"39 \\/ black\",\"price\":\"41.99\",\"sku\":\"\",\"position\":3,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"39\",\"option2\":\"black\",\"option3\":null,\"created_at\":\"2019-10-18T18:39:01+08:00\",\"updated_at\":\"2019-10-22T15:53:39+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":500,\"image_id\":13215997886561,\"weight\":0.5,\"weight_unit\":\"kg\",\"inventory_item_id\":32294741082209,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30881283801185\"},{\"id\":30881283833953,\"product_id\":4286953193569,\"title\":\"39 \\/ white\",\"price\":\"41.99\",\"sku\":\"\",\"position\":4,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"39\",\"option2\":\"white\",\"option3\":null,\"created_at\":\"2019-10-18T18:39:01+08:00\",\"updated_at\":\"2019-10-22T15:53:39+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":500,\"image_id\":13215998345313,\"weight\":0.5,\"weight_unit\":\"kg\",\"inventory_item_id\":32294741114977,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30881283833953\"},{\"id\":30881283866721,\"product_id\":4286953193569,\"title\":\"40 \\/ black\",\"price\":\"41.99\",\"sku\":\"\",\"position\":5,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"40\",\"option2\":\"black\",\"option3\":null,\"created_at\":\"2019-10-18T18:39:01+08:00\",\"updated_at\":\"2019-10-22T15:53:39+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":500,\"image_id\":13215997886561,\"weight\":0.5,\"weight_unit\":\"kg\",\"inventory_item_id\":32294741147745,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30881283866721\"},{\"id\":30881283899489,\"product_id\":4286953193569,\"title\":\"40 \\/ white\",\"price\":\"41.99\",\"sku\":\"\",\"position\":6,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"40\",\"option2\":\"white\",\"option3\":null,\"created_at\":\"2019-10-18T18:39:01+08:00\",\"updated_at\":\"2019-10-22T15:53:39+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":500,\"image_id\":13215998345313,\"weight\":0.5,\"weight_unit\":\"kg\",\"inventory_item_id\":32294741180513,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30881283899489\"},{\"id\":30881283932257,\"product_id\":4286953193569,\"title\":\"41 \\/ black\",\"price\":\"41.99\",\"sku\":\"\",\"position\":7,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"41\",\"option2\":\"black\",\"option3\":null,\"created_at\":\"2019-10-18T18:39:01+08:00\",\"updated_at\":\"2019-10-22T15:53:39+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":500,\"image_id\":13215997886561,\"weight\":0.5,\"weight_unit\":\"kg\",\"inventory_item_id\":32294741213281,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30881283932257\"},{\"id\":30881283965025,\"product_id\":4286953193569,\"title\":\"41 \\/ white\",\"price\":\"41.99\",\"sku\":\"\",\"position\":8,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"41\",\"option2\":\"white\",\"option3\":null,\"created_at\":\"2019-10-18T18:39:01+08:00\",\"updated_at\":\"2019-10-22T15:53:39+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":500,\"image_id\":13215998345313,\"weight\":0.5,\"weight_unit\":\"kg\",\"inventory_item_id\":32294741246049,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30881283965025\"},{\"id\":30881283997793,\"product_id\":4286953193569,\"title\":\"42 \\/ black\",\"price\":\"41.99\",\"sku\":\"\",\"position\":9,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"42\",\"option2\":\"black\",\"option3\":null,\"created_at\":\"2019-10-18T18:39:01+08:00\",\"updated_at\":\"2019-10-22T15:53:39+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":500,\"image_id\":13215997886561,\"weight\":0.5,\"weight_unit\":\"kg\",\"inventory_item_id\":32294741278817,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30881283997793\"},{\"id\":30881284030561,\"product_id\":4286953193569,\"title\":\"42 \\/ white\",\"price\":\"41.99\",\"sku\":\"\",\"position\":10,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"42\",\"option2\":\"white\",\"option3\":null,\"created_at\":\"2019-10-18T18:39:01+08:00\",\"updated_at\":\"2019-10-22T15:53:39+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":500,\"image_id\":13215998345313,\"weight\":0.5,\"weight_unit\":\"kg\",\"inventory_item_id\":32294741311585,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30881284030561\"},{\"id\":30881284063329,\"product_id\":4286953193569,\"title\":\"43 \\/ black\",\"price\":\"41.99\",\"sku\":\"\",\"position\":11,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"43\",\"option2\":\"black\",\"option3\":null,\"created_at\":\"2019-10-18T18:39:01+08:00\",\"updated_at\":\"2019-10-22T15:53:39+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":500,\"image_id\":13215997886561,\"weight\":0.5,\"weight_unit\":\"kg\",\"inventory_item_id\":32294741344353,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30881284063329\"},{\"id\":30881284096097,\"product_id\":4286953193569,\"title\":\"43 \\/ white\",\"price\":\"41.99\",\"sku\":\"\",\"position\":12,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"43\",\"option2\":\"white\",\"option3\":null,\"created_at\":\"2019-10-18T18:39:01+08:00\",\"updated_at\":\"2019-10-22T15:53:39+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":500,\"image_id\":13215998345313,\"weight\":0.5,\"weight_unit\":\"kg\",\"inventory_item_id\":32294741377121,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/30881284096097\"}],\"options\":[{\"id\":5574469025889,\"product_id\":4286953193569,\"name\":\"Size\",\"position\":1,\"values\":[\"38\",\"39\",\"40\",\"41\",\"42\",\"43\"]},{\"id\":5574469058657,\"product_id\":4286953193569,\"name\":\"Color\",\"position\":2,\"values\":[\"black\",\"white\"]}],\"images\":[{\"id\":13215984484449,\"product_id\":4286953193569,\"position\":1,\"created_at\":\"2019-10-18T18:39:09+08:00\",\"updated_at\":\"2019-10-18T18:39:09+08:00\",\"alt\":null,\"width\":1440,\"height\":1080,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/2dcb422829101504cdb999dc1ed8c8a.jpg?v=1571395149\",\"variant_ids\":[],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13215984484449\"},{\"id\":13215997886561,\"product_id\":4286953193569,\"position\":2,\"created_at\":\"2019-10-18T18:39:19+08:00\",\"updated_at\":\"2019-10-18T18:39:19+08:00\",\"alt\":null,\"width\":1440,\"height\":1080,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/557d316ed87650e182e49875602fc5f.jpg?v=1571395159\",\"variant_ids\":[30881283735649,30881283801185,30881283866721,30881283932257,30881283997793,30881284063329],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13215997886561\"},{\"id\":13215998345313,\"product_id\":4286953193569,\"position\":3,\"created_at\":\"2019-10-18T18:39:25+08:00\",\"updated_at\":\"2019-10-18T18:39:25+08:00\",\"alt\":null,\"width\":1440,\"height\":1080,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/7503883ee319a7be99546c5aa65c311.jpg?v=1571395165\",\"variant_ids\":[30881283768417,30881283833953,30881283899489,30881283965025,30881284030561,30881284096097],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13215998345313\"},{\"id\":13215998771297,\"product_id\":4286953193569,\"position\":4,\"created_at\":\"2019-10-18T18:39:30+08:00\",\"updated_at\":\"2019-10-18T18:39:30+08:00\",\"alt\":null,\"width\":1440,\"height\":1080,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/e248d04b310e4b5a4ce181ab30455ad.jpg?v=1571395170\",\"variant_ids\":[],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13215998771297\"}],\"image\":{\"id\":13215984484449,\"product_id\":4286953193569,\"position\":1,\"created_at\":\"2019-10-18T18:39:09+08:00\",\"updated_at\":\"2019-10-18T18:39:09+08:00\",\"alt\":null,\"width\":1440,\"height\":1080,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/2dcb422829101504cdb999dc1ed8c8a.jpg?v=1571395149\",\"variant_ids\":[],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13215984484449\"}},{\"id\":4349192241249,\"title\":\"Casual backpack\",\"body_html\":\"\\u003cp\\u003e\\u003cimg src=\\\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/files\\/1_8fba92b6-699a-45cb-85b3-dd364cb5331d.jpg?v=1573124380\\\" alt=\\\"\\\"\\u003e\\u003c\\/p\\u003e\\n\\u003cp\\u003e\\u003cimg src=\\\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/files\\/2_03f39935-a1ac-4c2c-809a-1ed0e1d3c144.jpg?v=1573124399\\\" alt=\\\"\\\"\\u003e\\u003c\\/p\\u003e\\n\\u003cp\\u003e\\u003cimg src=\\\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/files\\/3_f53492f6-4942-4c6a-8a59-5111f3c6e498.jpg?v=1573124419\\\" alt=\\\"\\\"\\u003e\\u003c\\/p\\u003e\\n\\u003cp\\u003e\\u003cimg src=\\\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/files\\/6_1cd0f64b-c090-46cf-b578-976b38958fea.jpg?v=1573124440\\\" alt=\\\"\\\"\\u003e\\u003c\\/p\\u003e\\n\\u003cp\\u003e\\u003cimg src=\\\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/files\\/9_2157211c-8806-43a3-a4f3-b5bc9bcad594.jpg?v=1573124467\\\" alt=\\\"\\\"\\u003e\\u003c\\/p\\u003e\\n\\u003cp\\u003e\\u003cimg src=\\\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/files\\/8_6875b9b4-38b5-40e8-b79b-666eab264100.jpg?v=1573124487\\\" alt=\\\"\\\"\\u003e\\u003c\\/p\\u003e\",\"vendor\":\"飚王\",\"product_type\":\"Men\",\"created_at\":\"2019-11-07T19:05:28+08:00\",\"handle\":\"casual-backpack-1\",\"updated_at\":\"2019-11-07T19:06:05+08:00\",\"published_at\":\"2019-11-07T10:01:15+08:00\",\"template_suffix\":\"\",\"tags\":\"\",\"published_scope\":\"web\",\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/Product\\/4349192241249\",\"variants\":[{\"id\":31157653766241,\"product_id\":4349192241249,\"title\":\"Black\",\"price\":\"11.99\",\"sku\":\"3005\",\"position\":1,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"Black\",\"option2\":null,\"option3\":null,\"created_at\":\"2019-11-07T19:05:29+08:00\",\"updated_at\":\"2019-11-07T19:06:05+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":500,\"image_id\":13458253381729,\"weight\":0.5,\"weight_unit\":\"kg\",\"inventory_item_id\":32662697214049,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/31157653766241\"},{\"id\":31157653799009,\"product_id\":4349192241249,\"title\":\"Brown\",\"price\":\"11.99\",\"sku\":\"3005\",\"position\":2,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"Brown\",\"option2\":null,\"option3\":null,\"created_at\":\"2019-11-07T19:05:29+08:00\",\"updated_at\":\"2019-11-07T19:06:05+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":500,\"image_id\":13458253611105,\"weight\":0.5,\"weight_unit\":\"kg\",\"inventory_item_id\":32662697246817,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/31157653799009\"},{\"id\":31157653831777,\"product_id\":4349192241249,\"title\":\"Orange\",\"price\":\"11.99\",\"sku\":\"3005\",\"position\":3,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"Orange\",\"option2\":null,\"option3\":null,\"created_at\":\"2019-11-07T19:05:29+08:00\",\"updated_at\":\"2019-11-07T19:06:05+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":500,\"image_id\":13458253709409,\"weight\":0.5,\"weight_unit\":\"kg\",\"inventory_item_id\":32662697312353,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/31157653831777\"}],\"options\":[{\"id\":5647979380833,\"product_id\":4349192241249,\"name\":\"Color\",\"position\":1,\"values\":[\"Black\",\"Brown\",\"Orange\"]}],\"images\":[{\"id\":13458253381729,\"product_id\":4349192241249,\"position\":1,\"created_at\":\"2019-11-07T19:05:28+08:00\",\"updated_at\":\"2019-11-07T19:05:28+08:00\",\"alt\":null,\"width\":1000,\"height\":667,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/16_43458f22-10f3-4eb6-8bfd-c0a693499ca1.jpg?v=1573124728\",\"variant_ids\":[31157653766241],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13458253381729\"},{\"id\":13458253480033,\"product_id\":4349192241249,\"position\":2,\"created_at\":\"2019-11-07T19:05:28+08:00\",\"updated_at\":\"2019-11-07T19:05:28+08:00\",\"alt\":null,\"width\":1000,\"height\":667,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/12_39e415a4-f5d4-40e9-bb6f-4cc550b23f80.jpg?v=1573124728\",\"variant_ids\":[],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13458253480033\"},{\"id\":13458253545569,\"product_id\":4349192241249,\"position\":3,\"created_at\":\"2019-11-07T19:05:28+08:00\",\"updated_at\":\"2019-11-07T19:05:28+08:00\",\"alt\":null,\"width\":1000,\"height\":667,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/14_bf427421-98cd-4b63-a951-060dd2ec8479.jpg?v=1573124728\",\"variant_ids\":[],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13458253545569\"},{\"id\":13458253578337,\"product_id\":4349192241249,\"position\":4,\"created_at\":\"2019-11-07T19:05:28+08:00\",\"updated_at\":\"2019-11-07T19:05:28+08:00\",\"alt\":null,\"width\":1000,\"height\":667,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/17_da1464fa-7d2f-4e40-a555-9b3f6f9df88f.jpg?v=1573124728\",\"variant_ids\":[],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13458253578337\"},{\"id\":13458253611105,\"product_id\":4349192241249,\"position\":5,\"created_at\":\"2019-11-07T19:05:29+08:00\",\"updated_at\":\"2019-11-07T19:05:29+08:00\",\"alt\":null,\"width\":1000,\"height\":666,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/18_44ff9997-e6a7-4fa4-b915-fb8211ad08cd.jpg?v=1573124729\",\"variant_ids\":[31157653799009],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13458253611105\"},{\"id\":13458253643873,\"product_id\":4349192241249,\"position\":6,\"created_at\":\"2019-11-07T19:05:29+08:00\",\"updated_at\":\"2019-11-07T19:05:29+08:00\",\"alt\":null,\"width\":1000,\"height\":667,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/19_b4e3b22c-f19e-4901-aacd-22b68cb7ae4e.jpg?v=1573124729\",\"variant_ids\":[],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13458253643873\"},{\"id\":13458253709409,\"product_id\":4349192241249,\"position\":7,\"created_at\":\"2019-11-07T19:05:29+08:00\",\"updated_at\":\"2019-11-07T19:05:29+08:00\",\"alt\":null,\"width\":1000,\"height\":667,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/20_e8610108-64b7-4b74-a278-0d895259be34.jpg?v=1573124729\",\"variant_ids\":[31157653831777],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13458253709409\"},{\"id\":13458253742177,\"product_id\":4349192241249,\"position\":8,\"created_at\":\"2019-11-07T19:05:29+08:00\",\"updated_at\":\"2019-11-07T19:05:29+08:00\",\"alt\":null,\"width\":1000,\"height\":667,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/11_b2dfc2c0-c669-46d8-9b64-a0b2170b1713.jpg?v=1573124729\",\"variant_ids\":[],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13458253742177\"}],\"image\":{\"id\":13458253381729,\"product_id\":4349192241249,\"position\":1,\"created_at\":\"2019-11-07T19:05:28+08:00\",\"updated_at\":\"2019-11-07T19:05:28+08:00\",\"alt\":null,\"width\":1000,\"height\":667,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/16_43458f22-10f3-4eb6-8bfd-c0a693499ca1.jpg?v=1573124728\",\"variant_ids\":[31157653766241],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13458253381729\"}},{\"id\":4348777857121,\"title\":\"Casual backpack 19inch\",\"body_html\":\"\",\"vendor\":\"飚王\",\"product_type\":\"Men\",\"created_at\":\"2019-11-07T16:07:56+08:00\",\"handle\":\"casual-backpack\",\"updated_at\":\"2019-11-07T16:08:38+08:00\",\"published_at\":\"2019-11-07T10:01:15+08:00\",\"template_suffix\":\"\",\"tags\":\"Men bag\",\"published_scope\":\"web\",\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/Product\\/4348777857121\",\"variants\":[{\"id\":31154294653025,\"product_id\":4348777857121,\"title\":\"Black\",\"price\":\"13.99\",\"sku\":\"2501\",\"position\":1,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"Black\",\"option2\":null,\"option3\":null,\"created_at\":\"2019-11-07T16:07:56+08:00\",\"updated_at\":\"2019-11-07T16:08:20+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":500,\"image_id\":13455266087009,\"weight\":0.5,\"weight_unit\":\"kg\",\"inventory_item_id\":32659236880481,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/31154294653025\"},{\"id\":31154294685793,\"product_id\":4348777857121,\"title\":\"Brown\",\"price\":\"13.99\",\"sku\":\"2501\",\"position\":2,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"Brown\",\"option2\":null,\"option3\":null,\"created_at\":\"2019-11-07T16:07:56+08:00\",\"updated_at\":\"2019-11-07T16:08:20+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":500,\"image_id\":13455266054241,\"weight\":0.5,\"weight_unit\":\"kg\",\"inventory_item_id\":32659236913249,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/31154294685793\"},{\"id\":31154294718561,\"product_id\":4348777857121,\"title\":\"Blue\",\"price\":\"13.99\",\"sku\":\"2501\",\"position\":3,\"inventory_policy\":\"deny\",\"compare_at_price\":null,\"fulfillment_service\":\"manual\",\"inventory_management\":\"shopify\",\"option1\":\"Blue\",\"option2\":null,\"option3\":null,\"created_at\":\"2019-11-07T16:07:56+08:00\",\"updated_at\":\"2019-11-07T16:08:20+08:00\",\"taxable\":true,\"barcode\":\"\",\"grams\":500,\"image_id\":13455266119777,\"weight\":0.5,\"weight_unit\":\"kg\",\"inventory_item_id\":32659236946017,\"inventory_quantity\":50,\"old_inventory_quantity\":50,\"requires_shipping\":true,\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductVariant\\/31154294718561\"}],\"options\":[{\"id\":5647379365985,\"product_id\":4348777857121,\"name\":\"Color\",\"position\":1,\"values\":[\"Black\",\"Brown\",\"Blue\"]}],\"images\":[{\"id\":13455266054241,\"product_id\":4348777857121,\"position\":1,\"created_at\":\"2019-11-07T16:07:56+08:00\",\"updated_at\":\"2019-11-07T16:07:56+08:00\",\"alt\":null,\"width\":3542,\"height\":5313,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/BW-2501.jpg?v=1573114076\",\"variant_ids\":[31154294685793],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13455266054241\"},{\"id\":13455266087009,\"product_id\":4348777857121,\"position\":2,\"created_at\":\"2019-11-07T16:07:56+08:00\",\"updated_at\":\"2019-11-07T16:07:56+08:00\",\"alt\":null,\"width\":401,\"height\":509,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/2501-a.png?v=1573114076\",\"variant_ids\":[31154294653025],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13455266087009\"},{\"id\":13455266119777,\"product_id\":4348777857121,\"position\":3,\"created_at\":\"2019-11-07T16:07:56+08:00\",\"updated_at\":\"2019-11-07T16:07:56+08:00\",\"alt\":null,\"width\":392,\"height\":487,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/2501-b.png?v=1573114076\",\"variant_ids\":[31154294718561],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13455266119777\"}],\"image\":{\"id\":13455266054241,\"product_id\":4348777857121,\"position\":1,\"created_at\":\"2019-11-07T16:07:56+08:00\",\"updated_at\":\"2019-11-07T16:07:56+08:00\",\"alt\":null,\"width\":3542,\"height\":5313,\"src\":\"https:\\/\\/cdn.shopify.com\\/s\\/files\\/1\\/0079\\/8330\\/0705\\/products\\/BW-2501.jpg?v=1573114076\",\"variant_ids\":[31154294685793],\"admin_graphql_api_id\":\"gid:\\/\\/shopify\\/ProductImage\\/13455266054241\"}}]}\n";
List list = new ArrayList();
com.alibaba.fastjson.JSONObject object = JSON.parseObject(str);
com.alibaba.fastjson.JSONArray products = object.getJSONArray("products");
for (int i = 0; i < products.size(); i++) {
com.alibaba.fastjson.JSONObject jsonObject = products.getJSONObject(i);
list.add(jsonObject);
}
List<String> strings = ListUtil.pageBySubList(list, 1, 10);
System.out.println(strings);
}
public static List<String> pageBySubList(List list, int pagesize, int currentPage) { public static List<String> pageBySubList(List list, int pagesize, int currentPage) {
int totalcount = list.size(); int totalcount = list.size();
......
...@@ -417,7 +417,7 @@ public class ZionApplicationTests { ...@@ -417,7 +417,7 @@ public class ZionApplicationTests {
@Test @Test
public void testDate() throws ParseException { public void testDate() throws ParseException {
String res = "2019-10-2 10:04:59"; String res = "2019-12-10 10:04:59";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = simpleDateFormat.parse(res); Date date = simpleDateFormat.parse(res);
long it = date.getTime(); long it = date.getTime();
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论