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

Merge remote-tracking branch 'origin/master'

......@@ -21,9 +21,9 @@ import org.springframework.web.bind.annotation.*;
@RequestMapping("/chinafrica/api")
public class ThirdPartyController {
private static Logger logger= LoggerFactory.getLogger(ThirdPartyController.class);
private static Logger logger= LoggerFactory.getLogger(ThirdPartyController.class);
@Autowired
@Autowired
private TbCfOrderService tbCfOrderService;
@Autowired
private TbCfUserInfoService tbCfUserInfoService;
......@@ -46,7 +46,7 @@ public class ThirdPartyController {
return tbCfOrderService.getOrderListByTime(beginTime,endTime,pageNum,pageSize);
}
/**
/**
*获取某段时间已发货订单数据
*/
@ApiOperation(value = "获取某段时间已发货订单数据")
......@@ -65,7 +65,9 @@ public class ThirdPartyController {
}
/**
* 根据订单号获取详细订单数据
* 根据订单号获取详细订单数据2
*
*
*/
@ApiOperation(value = "根据订单号获取详细订单数据")
@GetMapping(value ="/order/detail/{orderId}")
......@@ -73,18 +75,20 @@ public class ThirdPartyController {
return tbCfOrderService.getOrderDetailThird(orderId);
}
/**
* 获取用户列表
* 根据userId获取用户信息
* @return
*/
@ApiOperation(value = "获取用户列表")
@GetMapping(value ="/user")
public Result getAllUser( @ApiParam(value = "页数") @RequestParam(required = false) Integer pageNum,
@ApiParam(value ="每页大小 默认100") @RequestParam(required = false) Integer pageSize) {
if (pageNum == null) {
pageNum = 1;
}
if (pageSize == null) {
pageSize = 100;
}
return tbCfUserInfoService.queryUserList(pageNum,pageSize);
@GetMapping(value ="/user/{userId}")
public Result getAllUser(@PathVariable("userId")String userId) {
return tbCfUserInfoService.queryUserByUserId(userId);
}
/**
* 获取报关品名
*/
@ApiOperation(value = "获取报关品名")
@GetMapping(value ="/description/{descriptionId}")
public Result getDescriptionList(@PathVariable("descriptionId")String descriptionId) {
return tbCfOrderService.getDescriptionById(descriptionId);
}
}
......@@ -36,14 +36,14 @@ public class FlutterWaveController {
/**
* 验证付款
*
* @param txref
* @param
* @param orderId
* @return
*/
@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 {
public Result refund(@RequestBody FlutterWaveCard flutterWaveCard) {
return flutterWaveService.refund(flutterWaveCard);
}
//
// @GetMapping("/queryPayParams")
// public Result queryPayParams(@ApiParam("用户ID") @RequestParam("userId") String userId) {
//
//
// }
@GetMapping("/queryParams")
public Result queryParams(@ApiParam("用户ID") @RequestParam("userId") String userId) {
return flutterWaveService.queryParams(userId);
}
}
package com.diaoyun.zion.chinafrica.dao;
import com.diaoyun.zion.chinafrica.entity.TbCfExpressTemplateEntity;
import com.diaoyun.zion.chinafrica.vo.ExpressTemplateVo;
import com.diaoyun.zion.master.dao.BaseDao;
import java.util.List;
/**
* 运费模板Dao
*
......@@ -11,4 +14,7 @@ import com.diaoyun.zion.master.dao.BaseDao;
*/
public interface TbCfExpressTemplateDao extends BaseDao<TbCfExpressTemplateEntity> {
List<TbCfExpressTemplateEntity> getDescriptionList();
ExpressTemplateVo getDescriptionById(String descriptionId);
}
......@@ -13,10 +13,14 @@ import java.util.List;
*/
public interface TbCfItemOrderRDao extends BaseDao<TbCfItemOrderREntity> {
TbCfItemOrderREntity queryByTitle(String itemTitle);
/**
* 批量保存
* @param itemOrderRList
* @return
*/
int saveBatch(List<TbCfItemOrderREntity> itemOrderRList);
int updates(TbCfItemOrderREntity itemOrderR);
}
......@@ -5,8 +5,6 @@ import com.diaoyun.zion.chinafrica.entity.TbCfUserInfoEntity;
import com.diaoyun.zion.chinafrica.vo.TbCfUserVo;
import com.diaoyun.zion.master.dao.BaseDao;
import java.util.List;
/**
* 用户表Dao
*
......@@ -60,8 +58,8 @@ public interface TbCfUserInfoDao extends BaseDao<TbCfUserInfoEntity> {
TbCfUserInfoEntity findByEmail(String email);
/**
* 提供给第三方的用户列表
* 根据userID获取用户信息
* @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 {
*/
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 {
public Integer getEnableFlag() {
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;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
......@@ -40,11 +39,18 @@ public class TbCfItemShippedEntity implements Serializable {
* 商品ID
*/
private String itemId;
/**
* 商品ID
*/
private String itemNum;
/**
* 国家
*/
private String country;
/**
* 商品品名
*/
private String descripitionName;
private String descripitionId;
public static long getSerialVersionUID() {
return serialVersionUID;
......@@ -58,12 +64,12 @@ public class TbCfItemShippedEntity implements Serializable {
this.itemId = itemId;
}
public String getDescripitionName() {
return descripitionName;
public String getDescripitionId() {
return descripitionId;
}
public void setDescripitionName(String descripitionName) {
this.descripitionName = descripitionName;
public void setDescripitionId(String descripitionId) {
this.descripitionId = descripitionId;
}
/**
......@@ -111,4 +117,20 @@ public class TbCfItemShippedEntity implements Serializable {
public void setExpressId(String 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;
*/
public class TbCfOrderEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 订单id
*/
private String ordersId;
/**
* 订单id
*/
......@@ -496,4 +499,12 @@ public class TbCfOrderEntity implements Serializable {
public void setEnableFlag(Integer 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;
* @Description:
*/
public interface FlutterWaveService {
public Result payForOrder(String orderId, FlutterWaveCard flutterWaveCard);
Result verifyPay(String txref,String orderId);
public Result refund(FlutterWaveCard flutterWaveCard);
Result payForOrder(String orderId, FlutterWaveCard flutterWaveCard);
Result verifyPay(String orderId);
Result refund(FlutterWaveCard flutterWaveCard);
Result queryParams(String userId);
}
......@@ -95,7 +95,7 @@ public interface TbCfOrderService {
* @param orderStatus 订单状态 OrderStatusEnum
* @return
*/
Result getUserOrderList(Integer pageNum, Integer pageSize,Integer orderStatus) throws InterruptedException;
Result getUserOrderList(Integer pageNum, Integer pageSize,Integer orderStatus) throws InterruptedException;
/**
* 取消订单
......@@ -169,4 +169,6 @@ public interface TbCfOrderService {
*/
Result getOrderDetail(String orderId);
Result getDescriptionById(String descriptionId);
}
......@@ -81,7 +81,7 @@ public interface TbCfUserInfoService {
* 发送注册验证码
* @param email
* @return
*/
*/
Integer sendRegisterIdentifyCode(String email,String nick) throws EmailException, TemplateException, IOException;
/**
......@@ -177,5 +177,5 @@ public interface TbCfUserInfoService {
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;
import com.alibaba.fastjson.JSON;
import com.diaoyun.zion.chinafrica.constant.KeyConstant;
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.TbCfToiCouponDao;
import com.diaoyun.zion.chinafrica.entity.TbCfFinanceEntity;
import com.diaoyun.zion.chinafrica.entity.TbCfOrderEntity;
import com.diaoyun.zion.chinafrica.entity.*;
import com.diaoyun.zion.chinafrica.enums.DeliveryStatusEnum;
import com.diaoyun.zion.chinafrica.enums.OrderStatusEnum;
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.TbCfFinanceVo;
import com.diaoyun.zion.chinafrica.vo.TbCfOrderVo;
......@@ -33,9 +34,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.*;
/**
* @Auther: wudepeng
......@@ -50,7 +49,12 @@ public class FlutterWaveServiceImpl implements FlutterWaveService {
@Autowired
private TbCfOrderDao tbCfOrderDao;
@Autowired
private TbCfToiCouponDao TbCfToiCouponDao;
private TbCfToiCouponDao tbCfToiCouponDao;
@Autowired
private TbCfItemOrderRDao tbCfItemOrderRDao;
@Autowired
private TbCfUserInfoService tbCfUserInfoService;
@Autowired
private DomainProperties domainProperties;
@Resource
......@@ -62,7 +66,8 @@ public class FlutterWaveServiceImpl implements FlutterWaveService {
//校验API
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 {
.setExpiryyear(flutterWaveCard.getYear())
.setExpirymonth(flutterWaveCard.getMonth())
.setEmail(flutterWaveCard.getEmail())
.setTxRef("Afri-shop" + new Date().getTime());
.setTxRef(orderId);
JSONObject chargevisa = ch.chargeVisaAndIntl();
result.setData(chargevisa);
} catch (Exception e) {
......@@ -115,17 +120,16 @@ public class FlutterWaveServiceImpl implements FlutterWaveService {
/**
* 校验支付
*
* @param txref
* @param orderId
* @return
*/
@Override
public Result verifyPay(String txref, String orderId) {
public Result verifyPay(String orderId) {
Result result = new Result();
try {
TbCfOrderVo tbCfOrderVo = (TbCfOrderVo) orderRedisCache.get(KeyConstant.ORDER_DET + orderId);
Map<String, Object> map = new HashMap<>();
map.put("txref", txref);
map.put("txref", orderId);
map.put("SECKEY", domainProperties.getProperty("flutterwave.secret.key"));
String data = HttpClientUtil.sendPostWithBodyParameter(VERIFY_PAY_URL, map);
com.alibaba.fastjson.JSONObject object = JSON.parseObject(data);
......@@ -139,25 +143,25 @@ public class FlutterWaveServiceImpl implements FlutterWaveService {
if (tbCfOrderVo != null) {
changeOrderState(paymentid, tbCfOrderVo);
//修改优惠券状态
if (tbCfOrderVo.getCouponId() != null && "20".equals(tbCfOrderVo.getOrderStatus())) {
TbCfToiCouponDao.changeCoupnStatus(tbCfOrderVo.getUserId(), tbCfOrderVo.getCouponId());
if (tbCfOrderVo.getCouponId() != null && OrderStatusEnum.PAID.getValue().equals(tbCfOrderVo.getOrderStatus())) {
tbCfToiCouponDao.changeCoupnStatus(tbCfOrderVo.getUserId(), tbCfOrderVo.getCouponId());
}
//生成支付流水
TbCfFinanceEntity finance = createFinance(paymentid, authurl, tbCfOrderVo);
TbCfFinanceVo tbCfFinanceVo = new TbCfFinanceVo();
BeanUtils.copyProperties(finance, tbCfFinanceVo);
logger.info(tbCfOrderVo.getUserName() + ":Pay for success! The order number is:" + tbCfOrderVo.getOrderId());
//清空订单
removeRedisCache(tbCfOrderVo);
}
result.setData(JSON.parseObject(data));
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 {
result.setData(JSON.parseObject(data));
//支付失败
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) {
result.setCode(ResultCodeEnum.VALIDATE_ERROR.getCode()).setMessage(e.getMessage());
......@@ -203,6 +207,20 @@ public class FlutterWaveServiceImpl implements FlutterWaveService {
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 {
*/
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();
tbCfOrder.setOrderId(oldOrder.getOrderId());
tbCfOrder.setUpdateTime(new Date());
tbCfOrder.setDealTime(new Date());
tbCfOrder.setOrderStatus(OrderStatusEnum.PAID.getValue());
tbCfOrder.setDeliveryFlag(DeliveryStatusEnum.PROCESSING.getValue());
tbCfOrder.setPayId(payId);
tbCfOrder.setOrderStatus(OrderStatusEnum.PAID.getValue());
tbCfOrder.setPayStatus(OrderStatusEnum.PAID.getValue());
tbCfOrderDao.update(tbCfOrder);
}
......
package com.diaoyun.zion.chinafrica.service.impl;
import com.diaoyun.zion.chinafrica.constant.KeyConstant;
import com.diaoyun.zion.chinafrica.dao.TbCfFinanceDao;
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.dao.*;
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.enums.DeliveryStatusEnum;
import com.diaoyun.zion.chinafrica.enums.OrderStatusEnum;
......@@ -57,7 +55,8 @@ public class PayPalServiceImpl implements PayPalService {
private TbCfIssueCouponDao tbCfIssueCouponDao;
@Autowired
private TbCfToiCouponDao tbCfToiCouponDao;
@Autowired
private TbCfItemOrderRDao tbCfItemOrderRDao;
private String ORDER_ID = "";
@Override
......@@ -215,13 +214,18 @@ public class PayPalServiceImpl implements PayPalService {
*/
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();
tbCfOrder.setOrderId(oldOrder.getOrderId());
tbCfOrder.setUpdateTime(new Date());
tbCfOrder.setDealTime(new Date());
tbCfOrder.setOrderStatus(OrderStatusEnum.PAID.getValue());
tbCfOrder.setDeliveryFlag(DeliveryStatusEnum.PROCESSING.getValue());
tbCfOrder.setPayId(payId);
tbCfOrder.setOrderStatus(OrderStatusEnum.PAID.getValue());
tbCfOrder.setPayStatus(OrderStatusEnum.PAID.getValue());
tbCfOrderDao.update(tbCfOrder);
}
......
......@@ -46,6 +46,7 @@ public class TbCfItemDetailServiceImpl implements TbCfItemDetailService {
@Autowired
private TbCfExpTemKeywordDao tbCfExpTemKeywordDao;
@Resource(name="redisTokenManager")
private TokenManager tokenManager;
......@@ -191,7 +192,7 @@ public class TbCfItemDetailServiceImpl implements TbCfItemDetailService {
if ("0".equals(tbCfExpressTemplateList.size())) {
String[] split = keyword.split("");
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]);
totalTemplateSet.addAll(tbCfExpressTemplateLists);
}
......
......@@ -7,10 +7,7 @@ import com.diaoyun.zion.chinafrica.entity.*;
import com.diaoyun.zion.chinafrica.enums.DeliveryStatusEnum;
import com.diaoyun.zion.chinafrica.enums.OrderStatusEnum;
import com.diaoyun.zion.chinafrica.service.*;
import com.diaoyun.zion.chinafrica.vo.TbCfCartItemDetailVo;
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.chinafrica.vo.*;
import com.diaoyun.zion.master.base.Result;
import com.diaoyun.zion.master.base.StateConstant;
import com.diaoyun.zion.master.common.RedisCache;
......@@ -189,6 +186,17 @@ public class TbCfOrderServiceImpl implements TbCfOrderService {
} else {
//获取下单的订单数据
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();
BeanUtils.copyProperties(definiteOrder, tbCfOrderEntity);
......@@ -198,7 +206,6 @@ public class TbCfOrderServiceImpl implements TbCfOrderService {
afterPlaceOrder(tbCfOrderEntity.getOrderId(), tbCfCartItemDetailList, definiteOrder);
result.setData(definiteOrder).setMessage(ResultCodeEnum.SUCCESS.getDesc());
}
return result;
}
......@@ -247,16 +254,16 @@ public class TbCfOrderServiceImpl implements TbCfOrderService {
@Override
public void cancelOrder(String orderId, String userId, String couponId) {
//更改订单状态
TbCfOrderEntity tbCfOrder = new TbCfOrderEntity();
tbCfOrder.setOrderId(orderId);
tbCfOrder.setUpdateTime(new Date());
tbCfOrder.setCloseTime(new Date());
tbCfOrder.setOrderStatus(OrderStatusEnum.CLOSE.getValue());
tbCfOrderDao.update(tbCfOrder);
TbCfItemOrderREntity tbCfItemOrderREntity = new TbCfItemOrderREntity();
tbCfItemOrderREntity.setOrderId(orderId);
tbCfItemOrderREntity.setOrderStatus(OrderStatusEnum.CLOSE.getValue());
tbCfItemOrderREntity.setUpdateTime(new Date());
tbCfItemOrderREntity.setCloseTime(new Date());
tbCfItemOrderRDao.update(tbCfItemOrderREntity);
//优惠券不为空,则设置状态
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 {
//更改订单状态
changeOrderState(charge.getId(), tbCfOrderVo);
//修改使用的优惠券的状态
if (tbCfOrderVo.getOrderStatus() == 20) {
if (tbCfOrderVo.getCouponId() != null && "20".equals(tbCfOrderVo.getOrderStatus())) {
tbCfToiCouponDao.changeCoupnStatus(tbCfOrderVo.getUserId(), tbCfOrderVo.getCouponId());
}
//生成流水记录
......@@ -369,6 +376,10 @@ public class TbCfOrderServiceImpl implements TbCfOrderService {
Date beginDate = new Date(beginTime * 1000);
Date endDate = new Date(endTime * 1000);
List<TbCfItemShippedEntity> orderList = tbCfOrderDao.getDeliveryList(beginDate, endDate);
// TODO 暂设为赞比亚
for(TbCfItemShippedEntity list:orderList ){
list.setCountry("赞比亚");
}
PageInfo<TbCfItemShippedEntity> pageInfo = new PageInfo<>(orderList);
result.setData(pageInfo);
}
......@@ -404,7 +415,6 @@ public class TbCfOrderServiceImpl implements TbCfOrderService {
result.setData(orderEntity);
return result;
}
@Override
public Result deleteOrder(String orderId) {
Result result = new Result();
......@@ -442,6 +452,21 @@ public class TbCfOrderServiceImpl implements TbCfOrderService {
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,15 +496,23 @@ public class TbCfOrderServiceImpl implements TbCfOrderService {
*/
private void changeOrderState(String payId, TbCfOrderVo oldOrder) {
//更改订单状态
TbCfOrderEntity tbCfOrder = new TbCfOrderEntity();
tbCfOrder.setOrderId(oldOrder.getOrderId());
tbCfOrder.setUpdateTime(new Date());
tbCfOrder.setDealTime(new Date());
tbCfOrder.setOrderStatus(OrderStatusEnum.PAID.getValue());
tbCfOrder.setDeliveryFlag(DeliveryStatusEnum.PROCESSING.getValue());
tbCfOrder.setPayId(payId);
tbCfOrder.setPayStatus(OrderStatusEnum.PAID.getValue());
tbCfOrderDao.update(tbCfOrder);
List<TbCfCartItemDetailVo> itemDetailList = oldOrder.getItemDetailList();
for(TbCfCartItemDetailVo itemList:itemDetailList){
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.setDealTime(new Date());
tbCfOrder.setPayId(payId);
tbCfOrder.setOrderStatus(OrderStatusEnum.PAID.getValue());
tbCfOrder.setPayStatus(OrderStatusEnum.PAID.getValue());
tbCfOrderDao.update(tbCfOrder);
}
}
......@@ -513,13 +546,11 @@ public class TbCfOrderServiceImpl implements TbCfOrderService {
deleteItemFromCart(tbCfCartItemDetailList);
//将商品id加入订单中,查询订单中的商品
addItemOrderRecord(orderId, tbCfCartItemDetailList);
updateItemOrderRecord(orderId, tbCfCartItemDetailList);
//使用优惠券
if (StringUtils.isNotBlank(definiteOrder.getCouponId())) {
couponUse(definiteOrder.getUserId(), definiteOrder.getCouponId());
}
//把订单放redis中,过期则取消订单 RedisKeyExpirationListener接收
long timeout = 1800;
String timeoutStr = domainProperties.getProperty("redis.order.expiredTime");
......@@ -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 {
* @param orderId
* @param tbCfCartItemDetailList
*/
private void addItemOrderRecord(String orderId, List<TbCfCartItemDetailVo> tbCfCartItemDetailList) {
/* private void addItemOrderRecord(String orderId, List<TbCfCartItemDetailVo> tbCfCartItemDetailList) {
List<TbCfItemOrderREntity> itemOrderRList = new ArrayList<>();
for (TbCfCartItemDetailVo tbCfCartItemDetailVo : tbCfCartItemDetailList) {
TbCfItemOrderREntity tbCfItemOrderR = new TbCfItemOrderREntity();
......@@ -575,11 +619,14 @@ public class TbCfOrderServiceImpl implements TbCfOrderService {
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());
itemOrderRList.add(tbCfItemOrderR);
}
//int res =
tbCfItemOrderRDao.saveBatch(itemOrderRList);
}
}*/
/**
* 将商品从购物车删除(伪删除)
......@@ -640,11 +687,9 @@ public class TbCfOrderServiceImpl implements TbCfOrderService {
definiteOrder.setDeliveryName(tbCfAddressEntity.getDeliveryName());
definiteOrder.setDeliveryPhone(tbCfAddressEntity.getPhone());
///////////////////////////////地址 END//////////////////////////////
definiteOrder.setDeliveryFlag(DeliveryStatusEnum.PROCESSING.getValue());
definiteOrder.setOrderId(IdUtil.createIdbyUUID());
definiteOrder.setOrderNo(IdUtil.createLongIdByDate());
definiteOrder.setOrderTime(new Date());
definiteOrder.setOrderStatus(OrderStatusEnum.PENDING_PAY.getValue());
definiteOrder.setUserId(tbCfUserInfoVo.getUserId());
definiteOrder.setUserName(tbCfUserInfoVo.getNick());
definiteOrder.setPayStatus(OrderStatusEnum.PENDING_PAY.getValue());
......@@ -670,7 +715,14 @@ public class TbCfOrderServiceImpl implements TbCfOrderService {
itemsPrice = itemsPrice.add(itemSourcePrice.multiply(itemNum));
//计算运费
BigDecimal expressCost = getExpressTemplate(tbCfCartItemDetailVo.getItemCategory());
expressCost = expressCost.multiply(itemNum);
//expressCost = expressCost.multiply(itemNum);
if("1".equals(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);
}
//计算手续费
......
......@@ -27,7 +27,6 @@ import com.diaoyun.zion.master.util.EmailHelper;
import com.diaoyun.zion.master.util.IdUtil;
import com.diaoyun.zion.master.util.RandomCodeHelper;
import com.diaoyun.zion.master.util.SMSUtil;
import com.github.pagehelper.PageInfo;
import freemarker.template.TemplateException;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.mail.EmailException;
......@@ -51,8 +50,6 @@ import java.util.Date;
import java.util.List;
import java.util.Map;
import static com.github.pagehelper.page.PageMethod.startPage;
/**
* 用户表Service实现类
*
......@@ -537,12 +534,19 @@ public class TbCfUserInfoServiceImpl implements TbCfUserInfoService {
}
@Override
public Result queryUserList(Integer pageNum, Integer pageSize) {
Result result = new Result<>();
startPage(pageNum, pageSize);
List<TbCfUserVo> userList = tbCfUserInfoDao.queryUserList();
PageInfo<TbCfUserVo> pageInfo = new PageInfo<>(userList);
result.setData(pageInfo);
public Result queryUserByUserId(String userId) {
Result<TbCfUserVo> result = new Result<>();
TbCfUserVo tbCfUserVo=new TbCfUserVo();
TbCfUserVo user=tbCfUserInfoDao.queryUserByUserId(userId);
tbCfUserVo.setUserId(user.getUserId());
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;
}
......
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;
public class TbCfCartItemDetailVo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 购物车记录id
* 记录id
*/
@ApiModelProperty("订单记录id")
private String ordersId;
......
......@@ -3,14 +3,14 @@
<mapper namespace="com.diaoyun.zion.chinafrica.dao.TbCfCartRecordRDao">
<resultMap type="com.diaoyun.zion.chinafrica.entity.TbCfCartRecordREntity" id="tbCfCartRecordRMap">
<result property="cartRecordId" column="cart_record_id"/>
<result property="itemId" column="item_id"/>
<result property="userId" column="user_id"/>
<result property="checkFlag" column="check_flag"/>
<result property="enableFlag" column="enable_flag"/>
<result property="createTime" column="create_time"/>
</resultMap>
<resultMap type="com.diaoyun.zion.chinafrica.entity.TbCfCartRecordREntity" id="tbCfCartRecordRMap">
<result property="cartRecordId" column="cart_record_id"/>
<result property="itemId" column="item_id"/>
<result property="userId" column="user_id"/>
<result property="checkFlag" column="check_flag"/>
<result property="enableFlag" column="enable_flag"/>
<result property="createTime" column="create_time"/>
</resultMap>
<select id="queryObject" resultType="com.diaoyun.zion.chinafrica.entity.TbCfCartRecordREntity">
select
......@@ -23,41 +23,40 @@
from tb_cf_cart_record_r
where cart_record_id = #{id}
</select>
<select id="queryList" resultType="com.diaoyun.zion.chinafrica.entity.TbCfCartRecordREntity">
select
`cart_record_id`,
`item_id`,
`user_id`,
`check_flag`,
`enable_flag`,
`create_time`
`cart_record_id`,
`item_id`,
`user_id`,
`check_flag`,
`enable_flag`,
`create_time`
from tb_cf_cart_record_r
WHERE 1=1
<if test="name != null and name.trim() != ''">
AND name LIKE concat('%',#{name},'%')
</if>
<choose>
<when test="sidx != null and sidx.trim() != ''">
order by ${sidx} ${order}
</when>
<choose>
<when test="sidx != null and sidx.trim() != ''">
order by ${sidx} ${order}
</when>
<otherwise>
order by cart_record_id desc
order by cart_record_id desc
</otherwise>
</choose>
</choose>
<if test="offset != null and limit != null">
limit #{offset}, #{limit}
</if>
</select>
<select id="queryTotal" resultType="int">
<select id="queryTotal" resultType="int">
select count(*) from tb_cf_cart_record_r
WHERE 1=1
<if test="name != null and name.trim() != ''">
AND name LIKE concat('%',#{name},'%')
</if>
<if test="name != null and name.trim() != ''">
AND name LIKE concat('%',#{name},'%')
</if>
</select>
<insert id="save" parameterType="com.diaoyun.zion.chinafrica.entity.TbCfCartRecordREntity">
insert into tb_cf_cart_record_r(
`cart_record_id`,
......@@ -74,9 +73,9 @@
#{enableFlag},
#{createTime})
</insert>
<update id="update" parameterType="com.diaoyun.zion.chinafrica.entity.TbCfCartRecordREntity">
update tb_cf_cart_record_r
update tb_cf_cart_record_r
<set>
<if test="itemId != null">`item_id` = #{itemId}, </if>
<if test="userId != null">`user_id` = #{userId}, </if>
......@@ -85,19 +84,19 @@
</set>
where cart_record_id = #{cartRecordId}
</update>
<delete id="delete">
delete from tb_cf_cart_record_r where cart_record_id = #{value}
</delete>
<delete id="deleteBatch">
delete from tb_cf_cart_record_r where cart_record_id in
delete from tb_cf_cart_record_r where cart_record_id in
<foreach item="cartRecordId" collection="array" open="(" separator="," close=")">
#{cartRecordId}
</foreach>
</delete>
<!--伪删除-->
<!--伪删除-->
<delete id="deleteItems">
update tb_cf_cart_record_r set enable_flag=0 where cart_record_id in
<foreach item="cartRecordId" collection="array" open="(" separator="," close=")">
......
......@@ -3,14 +3,14 @@
<mapper namespace="com.diaoyun.zion.chinafrica.dao.TbCfExpressTemplateDao">
<resultMap type="com.diaoyun.zion.chinafrica.entity.TbCfExpressTemplateEntity" id="tbCfExpressTemplateMap">
<result property="templateId" column="template_id"/>
<result property="templateTitle" column="template_title"/>
<result property="itemCategoryId" column="item_category_id"/>
<result property="expressFee" column="express_fee"/>
<result property="countryCode" column="country_code"/>
<result property="createTime" column="create_time"/>
</resultMap>
<resultMap type="com.diaoyun.zion.chinafrica.entity.TbCfExpressTemplateEntity" id="tbCfExpressTemplateMap">
<result property="templateId" column="template_id"/>
<result property="templateTitle" column="template_title"/>
<result property="itemCategoryId" column="item_category_id"/>
<result property="expressFee" column="express_fee"/>
<result property="countryCode" column="country_code"/>
<result property="createTime" column="create_time"/>
</resultMap>
<select id="queryObject" resultType="com.diaoyun.zion.chinafrica.entity.TbCfExpressTemplateEntity">
select
......@@ -26,38 +26,38 @@
<select id="queryList" resultType="com.diaoyun.zion.chinafrica.entity.TbCfExpressTemplateEntity">
select
`template_id`,
`template_title`,
`item_category_id`,
`express_fee`,
`country_code`,
`create_time`
`template_id`,
`template_title`,
`item_category_id`,
`express_fee`,
`country_code`,
`create_time`
from tb_cf_express_template
WHERE 1=1
<if test="name != null and name.trim() != ''">
AND name LIKE concat('%',#{name},'%')
</if>
<choose>
<when test="sidx != null and sidx.trim() != ''">
order by ${sidx} ${order}
</when>
<choose>
<when test="sidx != null and sidx.trim() != ''">
order by ${sidx} ${order}
</when>
<otherwise>
order by template_id desc
order by template_id desc
</otherwise>
</choose>
</choose>
<if test="offset != null and limit != null">
limit #{offset}, #{limit}
</if>
</select>
<select id="queryTotal" resultType="int">
<select id="queryTotal" resultType="int">
select count(*) from tb_cf_express_template
WHERE 1=1
<if test="name != null and name.trim() != ''">
AND name LIKE concat('%',#{name},'%')
</if>
<if test="name != null and name.trim() != ''">
AND name LIKE concat('%',#{name},'%')
</if>
</select>
<insert id="save" parameterType="com.diaoyun.zion.chinafrica.entity.TbCfExpressTemplateEntity">
insert into tb_cf_express_template(
`template_id`,
......@@ -74,9 +74,9 @@
#{countryCode},
#{createTime})
</insert>
<update id="update" parameterType="com.diaoyun.zion.chinafrica.entity.TbCfExpressTemplateEntity">
update tb_cf_express_template
update tb_cf_express_template
<set>
<if test="templateTitle != null">`template_title` = #{templateTitle}, </if>
<if test="itemCategoryId != null">`item_category_id` = #{itemCategoryId}, </if>
......@@ -86,16 +86,26 @@
</set>
where template_id = #{templateId}
</update>
<delete id="delete">
delete from tb_cf_express_template where template_id = #{value}
</delete>
<delete id="deleteBatch">
delete from tb_cf_express_template where template_id in
delete from tb_cf_express_template where template_id in
<foreach item="templateId" collection="array" open="(" separator="," close=")">
#{templateId}
</foreach>
</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>
\ No newline at end of file
......@@ -3,22 +3,22 @@
<mapper namespace="com.diaoyun.zion.chinafrica.dao.TbCfItemDetailDao">
<resultMap type="com.diaoyun.zion.chinafrica.entity.TbCfItemDetailEntity" id="tbCfItemDetailMap">
<result property="itemId" column="item_id"/>
<result property="sourceItemId" column="source_item_id"/>
<result property="stationId" column="station_id"/>
<result property="stationType" column="station_type"/>
<result property="itemTitle" column="item_title"/>
<result property="itemNum" column="item_num"/>
<result property="itemImg" column="item_img"/>
<result property="itemPrice" column="item_price"/>
<result property="itemCategory" column="item_category"/>
<result property="itemSku" column="item_sku"/>
<result property="shopId" column="shop_id"/>
<result property="shopName" column="shop_name"/>
<result property="shopUrl" column="shop_url"/>
<result property="createTime" column="create_time"/>
</resultMap>
<resultMap type="com.diaoyun.zion.chinafrica.entity.TbCfItemDetailEntity" id="tbCfItemDetailMap">
<result property="itemId" column="item_id"/>
<result property="sourceItemId" column="source_item_id"/>
<result property="stationId" column="station_id"/>
<result property="stationType" column="station_type"/>
<result property="itemTitle" column="item_title"/>
<result property="itemNum" column="item_num"/>
<result property="itemImg" column="item_img"/>
<result property="itemPrice" column="item_price"/>
<result property="itemCategory" column="item_category"/>
<result property="itemSku" column="item_sku"/>
<result property="shopId" column="shop_id"/>
<result property="shopName" column="shop_name"/>
<result property="shopUrl" column="shop_url"/>
<result property="createTime" column="create_time"/>
</resultMap>
<select id="queryObject" resultType="com.diaoyun.zion.chinafrica.entity.TbCfItemDetailEntity">
select
......@@ -39,47 +39,65 @@
from tb_cf_item_detail
where item_id = #{id}
</select>
<select id="queryList" resultType="com.diaoyun.zion.chinafrica.entity.TbCfItemDetailEntity">
<select id="queryByTitle" resultType="com.diaoyun.zion.chinafrica.vo.TbCfItemDetailVo">
select
`item_id`,
`item_id`,
`source_item_id`,
`station_id`,
`station_type`,
`item_title`,
`item_num`,
`item_img`,
`item_price`,
`item_category`,
`item_sku`,
`station_id`,
`station_type`,
`item_title`,
`item_num`,
`item_img`,
`item_price`,
`item_category`,
`item_sku`,
`shop_id`,
`shop_name`,
`shop_url`,
`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
`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 1=1
<if test="name != null and name.trim() != ''">
AND name LIKE concat('%',#{name},'%')
</if>
<choose>
<when test="sidx != null and sidx.trim() != ''">
order by ${sidx} ${order}
</when>
<choose>
<when test="sidx != null and sidx.trim() != ''">
order by ${sidx} ${order}
</when>
<otherwise>
order by item_id desc
order by item_id desc
</otherwise>
</choose>
</choose>
<if test="offset != null and limit != null">
limit #{offset}, #{limit}
</if>
</select>
<select id="queryTotal" resultType="int">
<select id="queryTotal" resultType="int">
select count(*) from tb_cf_item_detail
WHERE 1=1
<if test="name != null and name.trim() != ''">
AND name LIKE concat('%',#{name},'%')
</if>
<if test="name != null and name.trim() != ''">
AND name LIKE concat('%',#{name},'%')
</if>
</select>
<insert id="save" parameterType="com.diaoyun.zion.chinafrica.entity.TbCfItemDetailEntity">
insert into tb_cf_item_detail(
......@@ -113,9 +131,9 @@
#{shopUrl},
#{createTime})
</insert>
<update id="update" parameterType="com.diaoyun.zion.chinafrica.entity.TbCfItemDetailEntity">
update tb_cf_item_detail
update tb_cf_item_detail
<set>
<if test="sourceItemId != null">`source_item_id` = #{sourceItemId}, </if>
<if test="stationId != null">`station_id` = #{stationId}, </if>
......@@ -133,27 +151,27 @@
</set>
where item_id = #{itemId}
</update>
<delete id="delete">
delete from tb_cf_item_detail where item_id = #{value}
</delete>
<delete id="deleteBatch">
delete from tb_cf_item_detail where item_id in
delete from tb_cf_item_detail where item_id in
<foreach item="itemId" collection="array" open="(" separator="," close=")">
#{itemId}
</foreach>
</delete>
<!--获取用户购物车内商品-->
<!--获取用户购物车内商品-->
<select id="getCartItemList" resultType="com.diaoyun.zion.chinafrica.vo.TbCfCartItemDetailVo">
select t1.cart_record_id,t1.check_flag,t2.* from tb_cf_cart_record_r t1,tb_cf_item_detail t2 where t1.item_id=t2.item_id
and t1.user_id=#{userId}
<if test="checkFlag != null"> and t1.check_flag = #{checkFlag}</if>
and t1.enable_flag=1 order by t2.create_time desc
</select>
select t1.cart_record_id,t1.check_flag,t2.* from tb_cf_cart_record_r t1,tb_cf_item_detail t2 where t1.item_id=t2.item_id
and t1.user_id=#{userId}
<if test="checkFlag != null"> and t1.check_flag = #{checkFlag}</if>
and t1.enable_flag=1 order by t2.create_time desc
</select>
<!--改变购物车的商品勾选状态-->
<!--改变购物车的商品勾选状态-->
<update id="changeItemState">
update tb_cf_cart_record_r set check_flag=#{checkFlag} where cart_record_id=#{cartRecordId}
</update>
......
......@@ -3,106 +3,160 @@
<mapper namespace="com.diaoyun.zion.chinafrica.dao.TbCfItemOrderRDao">
<resultMap type="com.diaoyun.zion.chinafrica.entity.TbCfItemOrderREntity" id="tbCfItemOrderRMap">
<result property="orderItemId" column="order_item_id"/>
<result property="itemId" column="item_id"/>
<result property="orderId" column="order_id"/>
<result property="enableFlag" column="enable_flag"/>
</resultMap>
<resultMap type="com.diaoyun.zion.chinafrica.entity.TbCfItemOrderREntity" id="tbCfItemOrderRMap">
<result property="orderItemId" column="order_item_id"/>
<result property="itemId" column="item_id"/>
<result property="orderId" column="order_id"/>
<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>
<select id="queryObject" resultType="com.diaoyun.zion.chinafrica.entity.TbCfItemOrderREntity">
select
`order_item_id`,
`item_id`,
`order_id`,
`enable_flag`
`enable_flag`,
`order_status`,
`delivery_flag`,
`delivery_time`,
`close_time`,
`update_time`
from tb_cf_item_order_r
where order_item_id = #{id}
</select>
<select id="queryList" resultType="com.diaoyun.zion.chinafrica.entity.TbCfItemOrderREntity">
select
`order_item_id`,
`item_id`,
`order_id`,
`enable_flag`
`order_item_id`,
`item_id`,
`order_id`,
`enable_flag`,
`order_status`,
`delivery_flag`,
`delivery_time`,
`close_time`,
`update_time`
from tb_cf_item_order_r
WHERE 1=1
<if test="name != null and name.trim() != ''">
AND name LIKE concat('%',#{name},'%')
</if>
<choose>
<when test="sidx != null and sidx.trim() != ''">
order by ${sidx} ${order}
</when>
<choose>
<when test="sidx != null and sidx.trim() != ''">
order by ${sidx} ${order}
</when>
<otherwise>
order by order_item_id desc
order by order_item_id desc
</otherwise>
</choose>
</choose>
<if test="offset != null and limit != null">
limit #{offset}, #{limit}
</if>
</select>
<select id="queryTotal" resultType="int">
<select id="queryTotal" resultType="int">
select count(*) from tb_cf_item_order_r
WHERE 1=1
<if test="name != null and name.trim() != ''">
AND name LIKE concat('%',#{name},'%')
</if>
<if test="name != null and name.trim() != ''">
AND name LIKE concat('%',#{name},'%')
</if>
</select>
<insert id="save" parameterType="com.diaoyun.zion.chinafrica.entity.TbCfItemOrderREntity">
insert into tb_cf_item_order_r(
`order_item_id`,
`item_id`,
`order_id`,
`enable_flag`)
`enable_flag`,
`order_status`,
`delivery_flag`,
`delivery_time`,
`close_time`,
`update_time`)
values(
#{orderItemId},
#{itemId},
#{orderId},
#{enableFlag})
#{enableFlag},
#{orderStatus},
#{deliveryFlag},
#{deliveryTime},
#{closeTime},
#{updateTime})
</insert>
<update id="update" parameterType="com.diaoyun.zion.chinafrica.entity.TbCfItemOrderREntity">
update tb_cf_item_order_r
update tb_cf_item_order_r
<set>
<if test="itemId != null">`item_id` = #{itemId}, </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>
where order_item_id = #{orderItemId}
</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 from tb_cf_item_order_r where order_item_id = #{value}
</delete>
<delete id="deleteBatch">
delete from tb_cf_item_order_r where order_item_id in
delete from tb_cf_item_order_r where order_item_id in
<foreach item="orderItemId" collection="array" open="(" separator="," close=")">
#{orderItemId}
</foreach>
</delete>
<!--批量保存-->
<!--批量保存-->
<insert id="saveBatch" parameterType="com.diaoyun.zion.chinafrica.entity.TbCfItemOrderREntity">
insert into tb_cf_item_order_r(
`order_item_id`,
`item_id`,
`order_id`,
`enable_flag`)
values
<foreach collection="list" item="item" index="index" separator=",">
(
#{item.orderItemId},
#{item.itemId},
#{item.orderId},
#{item.enableFlag}
)
</foreach>
insert into tb_cf_item_order_r(
`order_item_id`,
`item_id`,
`order_id`,
`enable_flag`,
`order_status`,
`delivery_flag`,
`delivery_time`,
`close_time`,
`update_time`)
values
<foreach collection="list" item="item" index="index" separator=",">
(
#{item.orderItemId},
#{item.itemId},
#{item.orderId},
#{item.enableFlag},
#{item.orderStatus},
#{item.deliveryFlag},
#{item.deliveryTime},
#{item.closeTime},
#{item.updateTime}
)
</foreach>
</insert>
</insert>
</mapper>
\ No newline at end of file
......@@ -3,37 +3,37 @@
<mapper namespace="com.diaoyun.zion.chinafrica.dao.TbCfOrderDao">
<resultMap type="com.diaoyun.zion.chinafrica.entity.TbCfOrderEntity" id="tbCfOrderMap">
<result property="orderId" column="order_id"/>
<result property="orderNo" column="order_no"/>
<result property="orderName" column="order_name"/>
<result property="orderTime" column="order_time"/>
<result property="updateTime" column="update_time"/>
<result property="dealTime" column="deal_time"/>
<result property="closeTime" column="close_time"/>
<result property="orderStatus" column="order_status"/>
<result property="userId" column="user_id"/>
<result property="userName" column="user_name"/>
<result property="deliveryAddressId" column="delivery_address_id"/>
<result property="deliveryAddress" column="delivery_address"/>
<result property="deliveryName" column="delivery_name"/>
<result property="deliveryPhone" column="delivery_phone"/>
<result property="itemsPrice" column="items_price"/>
<result property="totalPrice" column="total_price"/>
<result property="realityPay" column="reality_pay"/>
<result property="deliveryFlag" column="delivery_flag"/>
<result property="deliveryTime" column="delivery_time"/>
<result property="expressCost" column="express_cost"/>
<result property="couponId" column="coupon_id"/>
<result property="couponTitle" column="coupon_title"/>
<result property="couponPrice" column="coupon_price"/>
<result property="fee" column="fee"/>
<result property="tax" column="tax"/>
<result property="payId" column="pay_id"/>
<result property="payStatus" column="pay_status"/>
<result property="enableFlag" column="enable_flag"/>
<resultMap type="com.diaoyun.zion.chinafrica.entity.TbCfOrderEntity" id="tbCfOrderMap">
<result property="orderId" column="order_id"/>
<result property="orderNo" column="order_no"/>
<result property="orderName" column="order_name"/>
<result property="orderTime" column="order_time"/>
<result property="updateTime" column="update_time"/>
<result property="dealTime" column="deal_time"/>
<result property="closeTime" column="close_time"/>
<result property="orderStatus" column="order_status"/>
<result property="userId" column="user_id"/>
<result property="userName" column="user_name"/>
<result property="deliveryAddressId" column="delivery_address_id"/>
<result property="deliveryAddress" column="delivery_address"/>
<result property="deliveryName" column="delivery_name"/>
<result property="deliveryPhone" column="delivery_phone"/>
<result property="itemsPrice" column="items_price"/>
<result property="totalPrice" column="total_price"/>
<result property="realityPay" column="reality_pay"/>
<result property="deliveryFlag" column="delivery_flag"/>
<result property="deliveryTime" column="delivery_time"/>
<result property="expressCost" column="express_cost"/>
<result property="couponId" column="coupon_id"/>
<result property="couponTitle" column="coupon_title"/>
<result property="couponPrice" column="coupon_price"/>
<result property="fee" column="fee"/>
<result property="tax" column="tax"/>
<result property="payId" column="pay_id"/>
<result property="payStatus" column="pay_status"/>
<result property="enableFlag" column="enable_flag"/>
<result property="descripitionName" column="descripition_name"></result>
</resultMap>
</resultMap>
<select id="queryObject" resultType="com.diaoyun.zion.chinafrica.entity.TbCfOrderEntity">
select
......@@ -82,34 +82,34 @@
</select>
<select id="queryList" resultType="com.diaoyun.zion.chinafrica.entity.TbCfOrderEntity">
select
`order_id`,
`order_no`,
`order_name`,
`order_time`,
`update_time`,
`deal_time`,
`close_time`,
`order_status`,
`user_id`,
`user_name`,
`delivery_address_id`,
`delivery_address`,
`delivery_name`,
`delivery_phone`,
`items_price`,
`total_price`,
`reality_pay`,
`delivery_flag`,
`delivery_time`,
`express_cost`,
`coupon_id`,
`coupon_title`,
`coupon_price`,
`fee`,
`tax`,
`pay_id`,
`pay_status`,
`enable_flag`,
`order_id`,
`order_no`,
`order_name`,
`order_time`,
`update_time`,
`deal_time`,
`close_time`,
`order_status`,
`user_id`,
`user_name`,
`delivery_address_id`,
`delivery_address`,
`delivery_name`,
`delivery_phone`,
`items_price`,
`total_price`,
`reality_pay`,
`delivery_flag`,
`delivery_time`,
`express_cost`,
`coupon_id`,
`coupon_title`,
`coupon_price`,
`fee`,
`tax`,
`pay_id`,
`pay_status`,
`enable_flag`,
`descripition_name`
from tb_cf_order
WHERE 1=1
......@@ -117,27 +117,27 @@
AND name LIKE concat('%',#{name},'%')
</if>
<choose>
<when test="sidx != null and sidx.trim() != ''">
order by ${sidx} ${order}
</when>
<choose>
<when test="sidx != null and sidx.trim() != ''">
order by ${sidx} ${order}
</when>
<otherwise>
order by order_id desc
order by order_id desc
</otherwise>
</choose>
</choose>
<if test="offset != null and limit != null">
limit #{offset}, #{limit}
</if>
</select>
<select id="queryTotal" resultType="int">
<select id="queryTotal" resultType="int">
select count(*) from tb_cf_order
WHERE 1=1
<if test="name != null and name.trim() != ''">
AND name LIKE concat('%',#{name},'%')
</if>
<if test="name != null and name.trim() != ''">
AND name LIKE concat('%',#{name},'%')
</if>
</select>
<select id="queryCouponPrice" resultType="com.diaoyun.zion.chinafrica.entity.TbCfCouponEntity">
<select id="queryCouponPrice" resultType="com.diaoyun.zion.chinafrica.entity.TbCfCouponEntity">
select t2.* from tb_cf_toicoupon t1 left join tb_cf_coupon t2 on t2.coupon_id=t1.coupon_id where t1.toitable_id=#{toitableId}
</select>
<insert id="save" parameterType="com.diaoyun.zion.chinafrica.entity.TbCfOrderEntity">
......@@ -202,9 +202,9 @@
#{enableFlag},
#{descripitionName})
</insert>
<update id="update" parameterType="com.diaoyun.zion.chinafrica.entity.TbCfOrderEntity">
update tb_cf_order
update tb_cf_order
<set>
<if test="orderNo != null">`order_no` = #{orderNo}, </if>
<if test="orderName != null">`order_name` = #{orderName}, </if>
......@@ -241,25 +241,25 @@
<delete id="delete">
delete from tb_cf_order where order_id = #{value}
</delete>
<delete id="deleteBatch">
delete from tb_cf_order where order_id in
delete from tb_cf_order where order_id in
<foreach item="orderId" collection="array" open="(" separator="," close=")">
#{orderId}
</foreach>
</delete>
<!--获取用户订单数据-->
<!--获取用户订单数据-->
<select id="getUserOrderList" resultType="com.diaoyun.zion.chinafrica.entity.TbCfOrderEntity">
select * from tb_cf_order where user_id=#{userId} and enable_flag=1
select * from tb_cf_order where user_id=#{userId} and enable_flag=1
<if test="orderStatus != null"> and order_status = #{orderStatus} </if>
order by order_time desc
</select>
<select id="getOrdersId" resultType="String">
order by order_time desc
</select>
<select id="getOrdersId" resultType="String">
select r.order_item_id ordersId from tb_cf_item_order_r r where r.order_id=#{orderId} and r.item_id=#{itemId}
</select>
<!--根据订单id,获取订单内商品详情-->
<select id="getOrderItemList" resultType="com.diaoyun.zion.chinafrica.entity.TbCfItemDetailEntity">
<!--根据订单id,获取订单内商品详情-->
<select id="getOrderItemList" resultType="com.diaoyun.zion.chinafrica.entity.TbCfItemDetailEntity">
SELECT
t1.*,
t5.template_title descripitionName
......@@ -279,7 +279,7 @@
t1.item_title,
t1.item_num,
t1.item_price,
t1.item_category,
t5.template_id descripitionId,
t5.template_title descripitionName
FROM
tb_cf_item_detail t1
......@@ -288,11 +288,13 @@
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
WHERE
t2.enable_flag = 1 and t2.order_item_id=#{order_id}
t2.enable_flag = 1 and t2.order_item_id=#{orderId}
</select>
<!--获取付款订单-->
<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}
</select>
......@@ -302,16 +304,18 @@
o.user_id,
r.order_item_id order_id,
p.create_time deliveryTime,
a.address_country_name countryName,
o.delivery_address,
p.p_express_number expressId,
i.item_id itemId,
e.template_title descripitionName
i.item_num,
p.descripition_id
from tb_cf_order o
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_detail i on r.item_id=i.item_id
LEFT JOIN tb_cf_express_template e on e.template_id=p.descripition_id
where o.delivery_flag=20 and o.enable_flag=1
LEFT JOIN tb_cf_address a on a.user_id=o.user_id
where r.delivery_flag=10 and r.enable_flag=1
and p.create_time <![CDATA[ >= ]]> #{beginDate} and p.create_time <![CDATA[ < ]]> #{endDate}
</select>
......
......@@ -53,20 +53,7 @@
from tb_cf_user_info
where user_id = #{id}
</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
`user_id`,
......@@ -229,5 +216,18 @@
<update id="updatePassWord">
update tb_cf_user_info set password=#{newPassword} where user_id=#{userId}
</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>
\ No newline at end of file
......@@ -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) {
int totalcount = list.size();
......
......@@ -417,7 +417,7 @@ public class ZionApplicationTests {
@Test
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");
Date date = simpleDateFormat.parse(res);
long it = date.getTime();
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论