├── README.md
├── src
└── main
│ └── java
│ └── cn
│ └── iocoder
│ └── doraemon
│ ├── scrmgroup
│ ├── users
│ │ ├── package-info.java
│ │ └── entity
│ │ │ └── User.java
│ ├── tags
│ │ └── UserWeiXinFollowerTag.java
│ ├── cards
│ │ ├── entity
│ │ │ ├── SCRMCardCustomer.java
│ │ │ └── SCRMCard.java
│ │ ├── SCRMCardCustomerAPI.java
│ │ └── SCRMCardAPI.java
│ ├── weixin
│ │ ├── entity
│ │ │ └── UserWeiXinFollower.java
│ │ └── UserWeiXinAPI.java
│ └── customer
│ │ ├── entity
│ │ └── ScrmCustomer.java
│ │ └── ScrmCustomerAPI.java
│ ├── umpgroup
│ ├── package-info.java
│ ├── coupon
│ │ ├── entity
│ │ │ ├── CouponFetchLog.java
│ │ │ ├── CouponVerifyLog.java
│ │ │ ├── Coupon.java
│ │ │ └── CouponGroup.java
│ │ ├── CouponGroupAPI.java
│ │ ├── CouponCardAPI.java
│ │ ├── CouponCodeAPI.java
│ │ └── CouponConsumeAPI.java
│ ├── present
│ │ ├── package-info.java
│ │ ├── PresentAPI.java
│ │ └── entity
│ │ │ ├── PresentGivingRecord.java
│ │ │ └── Present.java
│ ├── bale
│ │ ├── package-info.java
│ │ └── entity
│ │ │ └── BaleActivity.java
│ ├── limitdiscount
│ │ ├── package-info.java
│ │ └── entity
│ │ │ └── LimitDiscountActivity.java
│ ├── meetreduce
│ │ ├── package-info.java
│ │ └── entity
│ │ │ └── MeetReduceActivity.java
│ └── packagebuy
│ │ ├── package-info.java
│ │ └── entity
│ │ └── PackageBuyActivity.java
│ ├── itemgroup
│ ├── snapshot
│ │ ├── package-info.java
│ │ └── entity
│ │ │ ├── ItemContentSnapshot.java
│ │ │ ├── ItemSkuSnapshot.java
│ │ │ └── ItemSnapshot.java
│ ├── item
│ │ ├── entity
│ │ │ ├── vo
│ │ │ │ ├── AbstractItemTemplateElementVO.java
│ │ │ │ ├── ItemTemplateStoreElementVO.java
│ │ │ │ ├── ItemTemplateSearchElementVO.java
│ │ │ │ ├── ItemTemplateNoticeElementVO.java
│ │ │ │ ├── ItemTemplateWhiteElementVO.java
│ │ │ │ ├── ItemTemplateComponentElementVO.java
│ │ │ │ ├── ItemTemplateRichTextElementVO.java
│ │ │ │ ├── ItemTemplateLineElementVO.java
│ │ │ │ ├── ItemTemplateAudioElementVO.java
│ │ │ │ ├── ItemTemplateGoodsTagListElementVO.java
│ │ │ │ ├── ItemTemplateLinkElementVO.java
│ │ │ │ ├── ItemTemplateTextNavElementVO.java
│ │ │ │ ├── ItemTemplateImageNavElementVO.java
│ │ │ │ ├── ItemTemplateGoodsElementVO.java
│ │ │ │ ├── ItemTemplateGoodsTagsElementVO.java
│ │ │ │ ├── ItemTemplateGoodsListElementVO.java
│ │ │ │ ├── ItemTemplateImageAdElementVO.java
│ │ │ │ ├── ItemTemplateShowCaseElementVO.java
│ │ │ │ ├── ItemTemplateTitleElementVO.java
│ │ │ │ └── ItemTemplateCubeElementVO.java
│ │ │ ├── ItemHotel.java
│ │ │ ├── ItemFenxiao.java
│ │ │ ├── ItemSkuProperty.java
│ │ │ ├── ItemPurchaseRight.java
│ │ │ ├── ItemSkuPropertyKeyReference.java
│ │ │ ├── ItemEtd.java
│ │ │ ├── ItemSkuPropertyValueReference.java
│ │ │ ├── ItemContent.java
│ │ │ ├── ItemSku.java
│ │ │ ├── ItemTemplate.java
│ │ │ └── Item.java
│ │ ├── ItemTemplateAPI.java
│ │ ├── ItemSkuAPI.java
│ │ └── ItemAPI.java
│ └── category
│ │ ├── ItemCategoryAPI.java
│ │ ├── entity
│ │ ├── ItemTagReference.java
│ │ └── ItemTag.java
│ │ └── ItemTagAPI.java
│ ├── paygroup
│ └── package-info.java
│ ├── tradegroup
│ ├── delivery
│ │ ├── entity
│ │ │ ├── Express.java
│ │ │ ├── TradeDeliveryExpressOrder.java
│ │ │ ├── TradeDeliverySetting.java
│ │ │ ├── ExpressOrder.java
│ │ │ ├── TradeDeliveryExpressTemplate.java
│ │ │ ├── TradeDeliverySelfFetchAddress.java
│ │ │ ├── TradeDeliveryLocalConfig.java
│ │ │ └── youzan_express.json
│ │ ├── TradeDeliveryLocalConfigAPI.java
│ │ ├── TradeDeliverySettingAPI.java
│ │ ├── ExpressAPI.java
│ │ ├── TradeDeliveryExpressOrderAPI.java
│ │ ├── TradeDeliveryExpressTemplateAPI.java
│ │ └── TradeDeliveryOnlineAPI.java
│ ├── trade
│ │ ├── entity
│ │ │ ├── TradeAdjustFee.java
│ │ │ ├── TradeSelfFetch.java
│ │ │ ├── TradeOrder.java
│ │ │ └── Trade.java
│ │ └── TradeAPI.java
│ ├── code
│ │ └── TradeCodeAPI.java
│ ├── refund
│ │ ├── entity
│ │ │ ├── TradeRefundDelivery.java
│ │ │ ├── TradeRefundMessage.java
│ │ │ └── TradeRefund.java
│ │ └── TradeRefundAPI.java
│ └── cart
│ │ ├── entity
│ │ └── TradeCartItem.java
│ │ └── TradeCartAPI.java
│ ├── commongroup
│ ├── entity
│ │ └── CommonRegion.java
│ └── CommonRegoinAPI.java
│ └── shopgroup
│ ├── shop
│ ├── entity
│ │ └── Shop.java
│ └── ShopAPI.java
│ └── address
│ ├── entity
│ └── ShopAddress.java
│ └── ShopAddressAPI.java
├── .gitignore
├── pom.xml
└── libs
└── README.md
/README.md:
--------------------------------------------------------------------------------
1 | # doraemon-entity
2 | 哆啦A梦
3 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/scrmgroup/users/package-info.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.scrmgroup.users;
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/umpgroup/package-info.java:
--------------------------------------------------------------------------------
1 | /**
2 | * 营销模块组
3 | */
4 | package cn.iocoder.doraemon.umpgroup;
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/snapshot/package-info.java:
--------------------------------------------------------------------------------
1 | /**
2 | * 商品快照
3 | *
4 | * 每次商品添加或者修改发生变更时,记录商品快照。
5 | */
6 | package cn.iocoder.doraemon.itemgroup.snapshot;
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/paygroup/package-info.java:
--------------------------------------------------------------------------------
1 | /**
2 | * 支付中心
3 | *
4 | * https://www.youzanyun.com/apilist/list/group_pay/union_pay
5 | */
6 | package cn.iocoder.doraemon.paygroup;
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/umpgroup/coupon/entity/CouponFetchLog.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.umpgroup.coupon.entity;
2 |
3 | // TODO 6016
4 | public class CouponFetchLog {
5 | }
6 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/umpgroup/present/package-info.java:
--------------------------------------------------------------------------------
1 | /**
2 | * https://help.youzan.com/qa#/menu/2190/detail/930?_k=ui5n0v
3 | */
4 | package cn.iocoder.doraemon.umpgroup.present;
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/umpgroup/bale/package-info.java:
--------------------------------------------------------------------------------
1 | /**
2 | * 打包一口价
3 | * https://help.youzan.com/qa#/menu/2201/detail/1014?_k=8hrcbn
4 | */
5 | package cn.iocoder.doraemon.umpgroup.bale;
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/umpgroup/limitdiscount/package-info.java:
--------------------------------------------------------------------------------
1 | /**
2 | * https://help.youzan.com/qa#/menu/2189/detail/919?_k=dj3ksq
3 | */
4 | package cn.iocoder.doraemon.umpgroup.limitdiscount;
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/umpgroup/meetreduce/package-info.java:
--------------------------------------------------------------------------------
1 | /**
2 | * 满减送
3 | * https://help.youzan.com/qa#/menu/2186/detail/325?_k=yodxoi
4 | */
5 | package cn.iocoder.doraemon.umpgroup.meetreduce;
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/umpgroup/packagebuy/package-info.java:
--------------------------------------------------------------------------------
1 | /**
2 | * 优惠套餐
3 | * https://help.youzan.com/qa#/menu/2200/detail/1013?_k=0ugnpm
4 | */
5 | package cn.iocoder.doraemon.umpgroup.packagebuy;
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/scrmgroup/users/entity/User.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.scrmgroup.users.entity;
2 |
3 | public class User {
4 |
5 | /**
6 | * 用户编号
7 | */
8 | private Integer id;
9 | /**
10 | * 手机号
11 | */
12 | private String mobile;
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/item/entity/vo/AbstractItemTemplateElementVO.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.item.entity.vo;
2 |
3 | /**
4 | * 商品页面模板元素 VO 抽象类
5 | */
6 | public abstract class AbstractItemTemplateElementVO {
7 |
8 | /**
9 | * 类型
10 | */
11 | private String type;
12 |
13 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/scrmgroup/tags/UserWeiXinFollowerTag.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.scrmgroup.tags;
2 |
3 | // todo 芋艿,缺关联表
4 | public class UserWeiXinFollowerTag {
5 |
6 | /**
7 | * 标签ID
8 | */
9 | private Integer id;
10 | /**
11 | * 标签名
12 | */
13 | private String name;
14 |
15 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/item/entity/vo/ItemTemplateStoreElementVO.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.item.entity.vo;
2 |
3 | /**
4 | * 商品页面模板进入店铺元素 VO
5 | */
6 | public class ItemTemplateStoreElementVO extends AbstractItemTemplateElementVO {
7 |
8 | private static final String TYPE = "store";
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Compiled class file
2 | *.class
3 |
4 | # Log file
5 | *.log
6 |
7 | # BlueJ files
8 | *.ctxt
9 |
10 | # Mobile Tools for Java (J2ME)
11 | .mtj.tmp/
12 |
13 | # Package Files #
14 | *.jar
15 | *.war
16 | *.ear
17 | *.zip
18 | *.tar.gz
19 | *.rar
20 |
21 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
22 | hs_err_pid*
23 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/item/entity/vo/ItemTemplateSearchElementVO.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.item.entity.vo;
2 |
3 | /**
4 | * 商品页面模板搜索商品元素 VO
5 | */
6 | public class ItemTemplateSearchElementVO {
7 |
8 | private static final String TYPE = "search";
9 |
10 | /**
11 | * 背景色
12 | */
13 | private String color;
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/item/entity/vo/ItemTemplateNoticeElementVO.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.item.entity.vo;
2 |
3 | /**
4 | * 商品页面模板通知元素 VO
5 | */
6 | public class ItemTemplateNoticeElementVO extends AbstractItemTemplateElementVO {
7 |
8 | private static final String TYPE = "notice";
9 |
10 | /**
11 | * 内容
12 | */
13 | private String content;
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/item/entity/vo/ItemTemplateWhiteElementVO.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.item.entity.vo;
2 |
3 | /**
4 | * 商品页面模板辅助空白元素 VO
5 | */
6 | public class ItemTemplateWhiteElementVO extends AbstractItemTemplateElementVO {
7 |
8 | private static final String TYPE = "while";
9 |
10 | /**
11 | * 空白高度,单位:像素
12 | */
13 | private Integer height;
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/item/entity/ItemHotel.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.item.entity;
2 |
3 | public class ItemHotel {
4 |
5 | /**
6 | * Item 编号
7 | *
8 | * {@link Item#id}
9 | */
10 | private Integer id;
11 | /**
12 | * 客服电话区号
13 | */
14 | private String serviceTelCode;
15 | /**
16 | * 客服电话
17 | */
18 | private String serviceTel;
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/tradegroup/delivery/entity/Express.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.tradegroup.delivery.entity;
2 |
3 | /**
4 | * 快递公司,例如圆通,申通等等。
5 | */
6 | public class Express {
7 |
8 | /**
9 | * 编号
10 | */
11 | private Integer id;
12 | /**
13 | * 名字
14 | */
15 | private String name;
16 | /**
17 | * 是否展示
18 | *
19 | * 1-展示
20 | * 0-隐藏
21 | */
22 | private Integer display;
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/item/entity/ItemFenxiao.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.item.entity;
2 |
3 | /**
4 | * Item 分销扩展信息
5 | */
6 | public class ItemFenxiao {
7 |
8 | /**
9 | * Item 编号
10 | *
11 | * {@link Item#id}
12 | */
13 | private Integer id;
14 | /**
15 | * 供货店铺Id
16 | */
17 | private Integer supplierShopId;
18 | /**
19 | * 供货商品Id
20 | */
21 | private Integer supplierItemId;
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/item/entity/ItemSkuProperty.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.item.entity;
2 |
3 | import java.util.Date;
4 |
5 | /**
6 | * Item SKU 规格属性
7 | */
8 | public class ItemSkuProperty {
9 |
10 | /**
11 | * 属性编号
12 | */
13 | private Integer id;
14 | /**
15 | * 属性文本
16 | */
17 | private String name;
18 | /**
19 | * 添加时间
20 | */
21 | private Date addTime;
22 |
23 | // todo 芋艿,默认类型
24 |
25 | }
--------------------------------------------------------------------------------
/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 4.0.0
6 |
7 | cn.iocoder
8 | doraemon-entity
9 | pom
10 | 0.1024-SNAPSHOT
11 |
12 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/item/entity/vo/ItemTemplateComponentElementVO.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.item.entity.vo;
2 |
3 | /**
4 | * 商品页面模板自定义模块元素 VO
5 | */
6 | public class ItemTemplateComponentElementVO {
7 |
8 | private static final String TYPE = "component";
9 |
10 | /**
11 | * 自定义组件编号
12 | */
13 | private Integer id;
14 | /**
15 | * 标题
16 | */
17 | private String title;
18 | /**
19 | * 链接
20 | */
21 | private String link;
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/tradegroup/trade/entity/TradeAdjustFee.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.tradegroup.trade.entity;
2 |
3 | import java.util.Date;
4 |
5 | /**
6 | * 交易改价信息
7 | */
8 | public class TradeAdjustFee {
9 |
10 | /**
11 | * 交易编号 {@link Trade#id}
12 | */
13 | private Integer id;
14 | /**
15 | * 涨减价格
16 | */
17 | private Integer payChange;
18 | /**
19 | * 运费调价差值
20 | */
21 | private Integer postChange;
22 | /**
23 | * 更新时间
24 | */
25 | private Date updateTime;
26 |
27 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/item/entity/vo/ItemTemplateRichTextElementVO.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.item.entity.vo;
2 |
3 | /**
4 | * 商品页面模板富文本元素 VO
5 | */
6 | public class ItemTemplateRichTextElementVO extends AbstractItemTemplateElementVO {
7 |
8 | private static final String TYPE = "rich_text";
9 |
10 | /**
11 | * 是否全屏
12 | */
13 | private Boolean fullscreen;
14 | /**
15 | * 富文本
16 | */
17 | private String content;
18 | /**
19 | * 背景色
20 | */
21 | private String color;
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/category/ItemCategoryAPI.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.category;
2 |
3 | import com.youzan.open.sdk.gen.v3_0_0.model.YouzanItemcategoriesGetResult;
4 |
5 | import java.util.List;
6 |
7 | /**
8 | * 商品类目 API
9 | */
10 | public interface ItemCategoryAPI {
11 |
12 | /**
13 | * 获取商品类目列表
14 | *
15 | * https://www.youzanyun.com/apilist/detail/group_item/item_category/youzan.itemcategories.get
16 | *
17 | * @return 商品类目列表
18 | */
19 | List list();
20 |
21 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/item/entity/ItemPurchaseRight.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.item.entity;
2 |
3 | /**
4 | * Item 购买权限拓展信息
5 | */
6 | public class ItemPurchaseRight {
7 |
8 | /**
9 | * Item 编号
10 | *
11 | * {@link Item#id}
12 | */
13 | private Integer id;
14 | /**
15 | * 允许购买的粉丝标签用,号分隔
16 | *
17 | * 数组,以逗号分隔
18 | */
19 | private String umpTags;
20 | /**
21 | * 允许购买的粉丝等级,用逗号分隔
22 | */
23 | private String umpLevels;
24 | /**
25 | * 每人限购多少件。0代表无限购,默认为0
26 | */
27 | private Integer buyQuota;
28 |
29 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/item/entity/ItemSkuPropertyKeyReference.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.item.entity;
2 |
3 | import java.util.Date;
4 |
5 | /**
6 | * Item SKU 规格名引用。用于和店铺关联,不同店铺有不同的规格名引用数据。
7 | */
8 | public class ItemSkuPropertyKeyReference {
9 |
10 | /**
11 | * 编号
12 | */
13 | private Integer id;
14 | /**
15 | * 店铺编号
16 | */
17 | private Integer shopId;
18 | /**
19 | * 属性键编号
20 | *
21 | * {@link ItemSkuProperty#id}
22 | */
23 | private Integer keyId;
24 | /**
25 | * 添加时间
26 | */
27 | private Date addTime;
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/item/entity/vo/ItemTemplateLineElementVO.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.item.entity.vo;
2 |
3 | /**
4 | * 商品页面模板辅助线元素 VO
5 | */
6 | public class ItemTemplateLineElementVO extends AbstractItemTemplateElementVO {
7 |
8 | private static final String TYPE = "line";
9 |
10 | /**
11 | * 背景色
12 | */
13 | private String color;
14 | /**
15 | * 样式
16 | *
17 | * solid 实线
18 | * dashed 虚线
19 | * dotted 点线
20 | */
21 | private String lineType;
22 | /**
23 | * 是否左右留白
24 | */
25 | private Boolean hasPadding;
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/commongroup/entity/CommonRegion.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.commongroup.entity;
2 |
3 | /**
4 | * 地区
5 | */
6 | public class CommonRegion {
7 |
8 | /**
9 | * 地区编号
10 | */
11 | private Integer id;
12 | /**
13 | * 名字
14 | */
15 | private String name;
16 | /**
17 | * 级别
18 | *
19 | * 1-国家
20 | * 2-省份
21 | * 3-城市
22 | * 4-区县
23 | * 5-街道
24 | */
25 | private Integer level;
26 | /**
27 | * 父地区编号
28 | */
29 | private Integer parentId;
30 | /**
31 | * 拼音
32 | */
33 | private String pinyin;
34 |
35 | }
36 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/item/entity/ItemEtd.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.item.entity;
2 |
3 | import java.util.Date;
4 |
5 | /**
6 | * Item 预售扩展信息
7 | */
8 | public class ItemEtd {
9 |
10 | /**
11 | * Item 编号
12 | *
13 | * {@link Item#id}
14 | */
15 | private Integer id;
16 | /**
17 | * 发货类型
18 | *
19 | * 0 - xxx 时间开始发货
20 | * 1 - 付款 n 天后发货。
21 | */
22 | private Integer etdType;
23 | /**
24 | * 预计发货开始时间, 字符串格式的时间,格式如:2018-01-01
25 | */
26 | private Date etdStartDate;
27 | /**
28 | * 付款成功 后发货天数, 默认0
29 | */
30 | private Integer etdDays;
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/category/entity/ItemTagReference.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.category.entity;
2 |
3 | import java.util.Date;
4 |
5 | /**
6 | * Item 分组引用。一个商品可以有多个商品分组。
7 | */
8 | public class ItemTagReference {
9 |
10 | /**
11 | * 店铺编号
12 | */
13 | private Integer shopId;
14 | /**
15 | * 商品编号
16 | */
17 | private Integer itemId;
18 | /**
19 | * 商品分组编号
20 | */
21 | private Integer tagId;
22 | /**
23 | * 状态
24 | *
25 | * 1-正常
26 | * 2-删除
27 | */
28 | private Integer status;
29 | /**
30 | * 添加时间
31 | */
32 | private Date addTime;
33 |
34 | }
35 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/item/ItemTemplateAPI.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.item;
2 |
3 | import com.youzan.open.sdk.gen.v3_0_0.model.YouzanItemTemplateListSearchResult;
4 |
5 | public interface ItemTemplateAPI {
6 |
7 | // 添加模板
8 |
9 | // 修改模板
10 |
11 | // 删除模板
12 |
13 | // 获得单条模板
14 |
15 | /**
16 | * 查询店铺下所有的详情模板列表
17 | *
18 | * https://open.youzan.com/api/oauthentry/youzan.item.template.list/3.0.0/search
19 | *
20 | * @param pageNo 页码
21 | * @param pageSize 每页大小
22 | * @return 商品详情模板( ItemDetailTempOpenModel )数组
23 | */
24 | YouzanItemTemplateListSearchResult search(Integer pageNo, Integer pageSize);
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/shopgroup/shop/entity/Shop.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.shopgroup.shop.entity;
2 |
3 | import java.util.Date;
4 |
5 | public class Shop {
6 |
7 | /**
8 | * 店铺编号
9 | */
10 | private Integer id;
11 | /**
12 | * 店铺LOGO资源地址
13 | */
14 | private String logo;
15 | /**
16 | * 店铺简介
17 | */
18 | private String intro;
19 | /**
20 | * 创建时间
21 | */
22 | private Date createTime;
23 | /**
24 | * 更新时间
25 | */
26 | private Date updateTime;
27 |
28 | // todo https://www.youzan.com/v2/setting/store/index#index
29 | // todo 店铺状态
30 | // todo 主题信息认证
31 | // todo 店铺认证
32 | // todo 联系手机号
33 | // todo 联系人QQ
34 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/snapshot/entity/ItemContentSnapshot.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.snapshot.entity;
2 |
3 | import java.util.Date;
4 |
5 | /**
6 | * 商品详情,对应 {@link cn.iocoder.doraemon.itemgroup.item.entity.ItemContent} 实体。
7 | */
8 | public class ItemContentSnapshot {
9 |
10 | /**
11 | * 快照编号 {@link ItemSnapshot#id}
12 | */
13 | private Integer id;
14 | /**
15 | * 商品编号
16 | *
17 | * {@link cn.iocoder.doraemon.itemgroup.item.entity.Item#id}
18 | */
19 | private Integer itemId;
20 | private String desc;
21 | private Integer templateId;
22 | private String data;
23 | /**
24 | * 快照时间
25 | */
26 | private Date createTime;
27 |
28 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/commongroup/CommonRegoinAPI.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.commongroup;
2 |
3 | import com.youzan.open.sdk.gen.v3_0_0.model.YouzanRegionsGetResult;
4 |
5 | import java.util.List;
6 |
7 | /**
8 | * 地区 API
9 | */
10 | public interface CommonRegoinAPI {
11 |
12 | /**
13 | * 获取区域地名列表信息
14 | *
15 | * https://www.youzanyun.com/apilist/detail/group_trade/logistics/youzan.regions.get
16 | *
17 | * @param id 区域ID
18 | * @param parentId 区域父级ID
19 | * @param level 要获取的区域等级
20 | * @param fields 需要返回的区域地名对象字段
21 | * @return 区域地名列表信息
22 | */
23 | List gets(Integer id, Integer parentId, Integer level, String[] fields);
24 |
25 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/scrmgroup/cards/entity/SCRMCardCustomer.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.scrmgroup.cards.entity;
2 |
3 | public class SCRMCardCustomer {
4 |
5 | /**
6 | * 用户会员卡编号
7 | */
8 | private String id;
9 | /**
10 | * 会员卡标识
11 | */
12 | private String cardAlias;
13 | /**
14 | * 粉丝类型
15 | *
16 | * 1:自有粉丝
17 | */
18 | private Integer fansType;
19 | /**
20 | *【三选一】三方用户ID
21 | */
22 | private String openUserId;
23 | /**
24 | * 【三选一】手机号
25 | */
26 | private String mobile;
27 | /**
28 | * 【三选一】粉丝编号
29 | */
30 | private Integer fansId;
31 |
32 | // todo 芋艿,有效期开始时间,有效期过期时间
33 | // todo 芋艿,授权时间
34 | // todo 芋艿,授权结束时间
35 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/item/entity/ItemSkuPropertyValueReference.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.item.entity;
2 |
3 | import java.util.Date;
4 |
5 | /**
6 | * Item SKU 规格值引用。用于和店铺关联,不同店铺有不同的规格值引用数据。
7 | */
8 | public class ItemSkuPropertyValueReference {
9 |
10 | /**
11 | * 编号
12 | */
13 | private Integer id;
14 | /**
15 | * 店铺编号
16 | */
17 | private Integer shopId;
18 | /**
19 | * 关联编号
20 | *
21 | * {@link ItemSkuPropertyKeyReference#id}
22 | */
23 | private Integer referenceId;
24 | /**
25 | * 属性键编号
26 | *
27 | * {@link ItemSkuProperty#id}
28 | */
29 | private Integer keyId;
30 | /**
31 | * 属性值编号
32 | *
33 | * {@link ItemSkuProperty#id}
34 | */
35 | private Integer valueId;
36 | /**
37 | * 添加时间
38 | */
39 | private Date addTime;
40 |
41 | }
42 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/tradegroup/delivery/TradeDeliveryLocalConfigAPI.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.tradegroup.delivery;
2 |
3 | import com.youzan.open.sdk.gen.v3_0_0.model.YouzanLogisticsLocalGetResult;
4 | import com.youzan.open.sdk.gen.v3_0_0.model.YouzanLogisticsLocalSetParams;
5 |
6 | /**
7 | * 交易发货同城配送配置 API
8 | */
9 | public interface TradeDeliveryLocalConfigAPI {
10 |
11 | /**
12 | * 读取商家同城配置的信息
13 | *
14 | * https://www.youzanyun.com/apilist/detail/group_trade/logistics/youzan.logistics.local.get
15 | *
16 | * @return 交易发货同城配送配置
17 | */
18 | YouzanLogisticsLocalGetResult get();
19 |
20 | /**
21 | * 设置商家同城配置的信息
22 | *
23 | * https://www.youzanyun.com/apilist/detail/group_trade/logistics/youzan.logistics.local.set
24 | *
25 | * @param params 更新的信息参数
26 | * @return 是否成功
27 | */
28 | Boolean update(YouzanLogisticsLocalSetParams params);
29 |
30 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/tradegroup/code/TradeCodeAPI.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.tradegroup.code;
2 |
3 | /**
4 | * 交易核销 API
5 | */
6 | public interface TradeCodeAPI {
7 |
8 | /**
9 | * 用于核销到店自提订单
10 | *
11 | * https://www.youzanyun.com/apilist/detail/group_trade/trade_virtual/youzan.trade.selffetchcode.apply
12 | *
13 | * @param extraInfo 核销人(开发者根据自己业务规则传,一般为网点号或手机号)
14 | * @param code 消费者端的到店自提订单提货码
15 | * @return 是否成功
16 | */
17 | Boolean applySelfFetch(String extraInfo, String code);
18 |
19 | // TODO 电子卡券整单核销 https://www.youzanyun.com/apilist/detail/group_trade/trade_virtual/youzan.trade.virtualticket.verifycode
20 | // TODO 电子卡券单个码券核销 https://www.youzanyun.com/apilist/detail/group_trade/trade_virtual/youzan.trade.virtualticket.verifyticket
21 |
22 |
23 | // TODO 使用购买虚拟商品获得的码 https://www.youzanyun.com/apilist/detail/group_trade/trade_virtual/youzan.trade.virtualcode.apply
24 |
25 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/tradegroup/delivery/entity/TradeDeliveryExpressOrder.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.tradegroup.delivery.entity;
2 |
3 | import java.util.Date;
4 |
5 | /**
6 | * 交易发货快递订单
7 | */
8 | public class TradeDeliveryExpressOrder {
9 |
10 | /**
11 | * 交易编号 {@link cn.iocoder.doraemon.tradegroup.trade.entity.Trade#id}
12 | */
13 | private String tid;
14 | /**
15 | * 交易明细编号 {@link cn.iocoder.doraemon.tradegroup.trade.entity.TradeOrder#id}
16 | */
17 | private Long oid;
18 | /**
19 | * 快递单号
20 | */
21 | private String nu;
22 | /**
23 | * 快递公司编号
24 | */
25 | private Integer expressId;
26 | /**
27 | * 状态
28 | *
29 | * 1-正常
30 | * 2-删除
31 | */
32 | private Integer status;
33 | /**
34 | * 发货时间
35 | */
36 | private Date createTime;
37 | /**
38 | * 删除时间
39 | */
40 | private Date deleteTime;
41 |
42 | }
43 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/tradegroup/delivery/entity/TradeDeliverySetting.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.tradegroup.delivery.entity;
2 |
3 | import java.util.Date;
4 |
5 | /**
6 | * 交易发货设置
7 | */
8 | public class TradeDeliverySetting {
9 |
10 | /**
11 | * 店铺编号 {@link cn.iocoder.doraemon.shopgroup.shop.entity.Shop#id}
12 | */
13 | private Integer id;
14 | /**
15 | * 更新时间
16 | */
17 | private Date updateTime;
18 | /**
19 | * 是否开通快递发货功能
20 | */
21 | private Boolean isExpress;
22 | /**
23 | * 计费方式
24 | *
25 | * 0-按商品累加运费
26 | * 1-组合运费(推荐使用)
27 | *
28 | * https://bbs.youzan.com/forum.php?mod=viewthread&tid=602557
29 | */
30 | private Integer calcType;
31 | /**
32 | * 是否支持同城
33 | */
34 | private Boolean isLocal;
35 | /**
36 | * 是否支持同城定时达
37 | */
38 | private Boolean isLocalInTime;
39 | /**
40 | * 是否支持自提
41 | */
42 | private Boolean isSelf;
43 |
44 | }
45 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/tradegroup/delivery/TradeDeliverySettingAPI.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.tradegroup.delivery;
2 |
3 | import com.youzan.open.sdk.gen.v3_0_0.model.YouzanLogisticsSettingGetResult;
4 |
5 | /**
6 | * 交易发货设置 API
7 | */
8 | public interface TradeDeliverySettingAPI {
9 |
10 | /**
11 | * 获得交易发货设置
12 | *
13 | * https://open.youzan.com/api/oauthentry/youzan.logistics.setting/3.0.0/get
14 | *
15 | * @return 交易发货设置
16 | */
17 | YouzanLogisticsSettingGetResult get();
18 |
19 | /**
20 | * 设置开关配置
21 | *
22 | * https://www.youzanyun.com/apilist/detail/group_trade/logistics/youzan.logistics.setting.update
23 | *
24 | * @param shopId 店铺编号
25 | * @param isExpress 是否支持快递
26 | * @param calcType 计费类型
27 | * @param isLocal 是否支持同城
28 | * @param isSelf 是否支持自提
29 | * @return 是否成功
30 | */
31 | Boolean update(Integer shopId, Boolean isExpress, Integer calcType, Boolean isLocal, Boolean isSelf);
32 |
33 | }
34 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/tradegroup/delivery/ExpressAPI.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.tradegroup.delivery;
2 |
3 | import com.youzan.open.sdk.gen.v3_0_0.model.YouzanLogisticsExpressGetResult;
4 | import com.youzan.open.sdk.gen.v3_0_0.model.YouzanLogisticsGoodsexpressGetResult;
5 |
6 | import java.util.List;
7 |
8 | /**
9 | * 快递 API
10 | */
11 | public interface ExpressAPI {
12 |
13 | /**
14 | * 获取快递公司的列表
15 | *
16 | * https://www.youzanyun.com/apilist/detail/group_trade/logistics/youzan.logistics.express.get
17 | *
18 | * @return 所有物流公司地址
19 | */
20 | List gets();
21 |
22 | /**
23 | * 获取物流快递信息
24 | *
25 | * https://www.youzanyun.com/apilist/detail/group_trade/logistics/youzan.logistics.goodsexpress.get
26 | *
27 | * @param expressNo 物流单号
28 | * @param expressId 快递公司id
29 | * @return 物流快递信息
30 | */
31 | YouzanLogisticsGoodsexpressGetResult getOrder(String expressNo, Integer expressId);
32 |
33 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/item/entity/vo/ItemTemplateAudioElementVO.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.item.entity.vo;
2 |
3 | /**
4 | * 商品页面模板语音元素 VO
5 | */
6 | public class ItemTemplateAudioElementVO extends AbstractItemTemplateElementVO {
7 |
8 | private static final String TYPE = "audio";
9 |
10 | /**
11 | * 样式
12 | *
13 | * 0-模仿微信对话样式
14 | * 1-简易音乐播放器
15 | */
16 | private Integer style;
17 | /**
18 | * 语音
19 | */
20 | private String audio;
21 | /**
22 | * 气泡头像
23 | */
24 | private String avatar;
25 | /**
26 | * 气泡位置
27 | *
28 | * 0-居左
29 | * 1-居右
30 | */
31 | private Integer bubble;
32 | /**
33 | * 是否循环
34 | *
35 | * 0-否
36 | * 1-是
37 | */
38 | private Integer loop;
39 | /**
40 | * 播放
41 | *
42 | * 0-暂停后再恢复播放时,从头开始
43 | * 1-暂停后再恢复播放时,从暂停位置开始
44 | */
45 | private Integer reload;
46 | /**
47 | * 标题
48 | */
49 | private String title;
50 |
51 | }
52 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/item/entity/vo/ItemTemplateGoodsTagListElementVO.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.item.entity.vo;
2 |
3 | /**
4 | * 商品页面模板商品分组元素 VO 的第一种
5 | */
6 | public class ItemTemplateGoodsTagListElementVO {
7 |
8 | /**
9 | * 商品列表元素的选项 VO
10 | */
11 | public static class GoodsTagElementVO extends AbstractItemTemplateElementVO {
12 |
13 | private static final String TYPE = "tag";
14 |
15 | /**
16 | * 商品分组编号
17 | */
18 | private Integer id;
19 | /**
20 | * 商品分组标题
21 | */
22 | private String title;
23 | /**
24 | * 商品分组访问地址
25 | */
26 | private String url;
27 | /**
28 | * 展示商品分组的商品数量
29 | */
30 | private Integer goodsNumber;
31 |
32 | // 其他商品分组相关冗余字段
33 | }
34 |
35 | private static final String TYPE = "tag_list";
36 |
37 | /**
38 | * 商品分组数组
39 | *
40 | * JSON 格式,数组,每个元素为 {@link GoodsTagElementVO}
41 | */
42 | private String goods;
43 |
44 | }
45 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/item/entity/ItemContent.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.item.entity;
2 |
3 | import cn.iocoder.doraemon.itemgroup.item.entity.vo.AbstractItemTemplateElementVO;
4 |
5 | /**
6 | * 商品详情
7 | */
8 | public class ItemContent {
9 |
10 | /**
11 | * 配置元素 VO
12 | */
13 | public static class ConfigElementVO extends AbstractItemTemplateElementVO {
14 |
15 | private static final String TYPE = "config";
16 |
17 | /**
18 | * 商品描述
19 | */
20 | private String content;
21 |
22 | }
23 |
24 | /**
25 | * Item 编号
26 | *
27 | * {@link Item#id}
28 | */
29 | private Integer id;
30 | /**
31 | * 商品描述。
32 | *
33 | * 字数要大于5个字符,小于25000个字符 ,受违禁词控制
34 | */
35 | private String desc;
36 | /**
37 | * 商品页模板编号
38 | */
39 | private Integer templateId;
40 | /**
41 | * 模板元素数组
42 | *
43 | * JSON 格式,数组,每个元素为 {@link cn.iocoder.doraemon.itemgroup.item.entity.vo.AbstractItemTemplateElementVO} 的实现类字符串
44 | */
45 | private String data;
46 |
47 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/umpgroup/present/PresentAPI.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.umpgroup.present;
2 |
3 | import com.youzan.open.sdk.gen.v3_0_0.model.YouzanUmpPresentGiveResult;
4 | import com.youzan.open.sdk.gen.v3_0_0.model.YouzanUmpPresentsOngoingAllResult;
5 |
6 | import java.util.List;
7 |
8 | /**
9 | * 赠品 API
10 | */
11 | public interface PresentAPI {
12 |
13 | /**
14 | * 获取所有进行中的赠品列表
15 | *
16 | * https://www.youzanyun.com/apilist/detail/group_ump/coupon_advanced/youzan.ump.presents.ongoing.all
17 | *
18 | * @param fields 需要返回的赠品对象字段。可选值:赠品结构体中所有字段均可返回;多个字段用“,”分隔。如果为空则返回所有
19 | * @return 赠品列表
20 | */
21 | List ongoingList(String... fields);
22 |
23 | /**
24 | * 给用户赠送赠品
25 | *
26 | * https://www.youzanyun.com/apilist/detail/group_ump/coupon_advanced/youzan.ump.present.give
27 | *
28 | * @param fansId 微信粉丝ID
29 | * @param buyerId 有赞手机注册用户ID
30 | * @param presentId 赠品编号
31 | * @return 赠送结果
32 | */
33 | YouzanUmpPresentGiveResult give(Integer fansId, Integer buyerId, Integer presentId);
34 |
35 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/item/entity/vo/ItemTemplateLinkElementVO.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.item.entity.vo;
2 |
3 | /**
4 | * 商品页面模板关联链接元素 VO
5 | */
6 | public class ItemTemplateLinkElementVO extends AbstractItemTemplateElementVO {
7 |
8 | /**
9 | * 选项 VO
10 | */
11 | public static class SelectionVO {
12 |
13 | /**
14 | * 类型
15 | *
16 | * source_selection :微页面分类 / 商品标签
17 | * link_selection :外链
18 | */
19 | private String type;
20 |
21 | /**
22 | * 来源类型
23 | */
24 | private String sourceType;
25 | /**
26 | * 来源编号
27 | */
28 | private Integer sourceId;
29 | /**
30 | * 来源标题
31 | */
32 | private String sourceTitle;
33 | /**
34 | * 来源链接
35 | */
36 | private String sourceURL;
37 | /**
38 | * 展示来源记录数量,例如,展示商品数量
39 | */
40 | private Integer number;
41 | }
42 |
43 | private static final String TYPE = "link";
44 |
45 | /**
46 | * 选项元素数组
47 | *
48 | * JSON 格式,数组,每个元素为 {@link SelectionVO}
49 | */
50 | private String subEntrys;
51 |
52 | }
53 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/snapshot/entity/ItemSkuSnapshot.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.snapshot.entity;
2 |
3 | import java.util.Date;
4 |
5 | /**
6 | * 商品 SKU 快照,对应 {@link cn.iocoder.doraemon.itemgroup.item.entity.ItemSku} 实体
7 | */
8 | public class ItemSkuSnapshot {
9 |
10 | /**
11 | * 商品快照编号 {@link ItemSnapshot#id}
12 | */
13 | private Integer snapshotId;
14 | private String uniqueCode;
15 | private Integer skuId;
16 | private Integer itemId;
17 | private Integer shopId;
18 |
19 | // private Integer status; // 无需状态,因为 sku 变更后,会产生新的 ItemSnapshot
20 |
21 | private String imageURL;
22 | private String properties;
23 | private Integer price;
24 | private String itemNo;
25 | /**
26 | * 库存数量
27 | *
28 | *【不影响 {@link ItemSnapshot#id}】的计算
29 | */
30 | private Integer quantity;
31 | /**
32 | * 商品在付款减库存的状态下,该Sku上未付款的订单数量
33 | *
34 | * 【不影响 {@link ItemSnapshot#id}】的计算
35 | */
36 | private Integer withHoldQuantity;
37 | /**
38 | * 销量
39 | *
40 | * 【不影响 {@link ItemSnapshot#id}】的计算
41 | */
42 | private Integer soldNum;
43 | /**
44 | * 快照时间
45 | */
46 | private Date createTime;
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/scrmgroup/weixin/entity/UserWeiXinFollower.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.scrmgroup.weixin.entity;
2 |
3 | public class UserWeiXinFollower {
4 |
5 | /**
6 | * 粉丝编号
7 | */
8 | private Integer id;
9 | /**
10 | * 微信粉丝用户的 openid
11 | */
12 | private String openId;
13 |
14 |
15 | // todo 芋艿,微信粉丝用户ID https://www.youzanyun.com/apilist/structparam/response/CrmWeixinFans
16 | private Integer userId;
17 |
18 | /**
19 | * 微信粉丝用户的昵称
20 | */
21 | private String nick;
22 | /**
23 | * 微信粉丝用户的头像Url
24 | */
25 | private String avatar;
26 | /**
27 | * 性别。
28 | *
29 | * 可选值:m(男),f(女)。
30 | * 未知则为空
31 | */
32 | private String sex;
33 | /**
34 | * 省份
35 | */
36 | private String province;
37 | /**
38 | * 城市
39 | */
40 | private String city;
41 | /**
42 | * 是否关注
43 | */
44 | private Boolean isFollow;
45 |
46 | // todo 芋艿,当前积分
47 | private Integer points;
48 |
49 | // todo 芋艿,成交订单笔数
50 | private Integer tradedNum;
51 |
52 | // todo 芋艿,成交订单总额。单位:元 double => int
53 | private Double tradedMoney;
54 |
55 | // todo 芋艿,CrmUserTag[]
56 |
57 | // todo 芋艿,CrmFansLevel
58 |
59 | }
60 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/scrmgroup/customer/entity/ScrmCustomer.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.scrmgroup.customer.entity;
2 |
3 | import cn.iocoder.doraemon.scrmgroup.users.entity.User;
4 | import com.youzan.open.sdk.gen.v3_1_0.model.YouzanScrmCustomerGetResult;
5 |
6 | import java.util.Date;
7 |
8 | public class ScrmCustomer {
9 |
10 | /**
11 | * 用户ID
12 | * {@link User}
13 | */
14 | private Long userId;
15 | /**
16 | * 店铺编号
17 | */
18 | private Integer kdtId;
19 | /**
20 | * 姓名
21 | */
22 | private String name;
23 | /**
24 | * 手机号
25 | */
26 | private String mobile;
27 | /**
28 | * 头像
29 | */
30 | private String avatar;
31 | /**
32 | * 性别。
33 | *
34 | * 0:未知;
35 | * 1:男;
36 | * 2:女
37 | */
38 | private Integer gender;
39 | /**
40 | * 生日
41 | */
42 | private Date birthday;
43 | /**
44 | * 是否为会员
45 | */
46 | private Boolean isMember;
47 | // TODO 芋艿,等待拆分
48 | /**
49 | * 联系地址
50 | */
51 | private YouzanScrmCustomerGetResult.ContactAddress contactAddress;
52 |
53 | // TODO openid
54 | // TODO accountType
55 | // TODO 或者有个 account 表?
56 |
57 | // todo 芋艿,来源
58 | // TODO
59 |
60 |
61 |
62 | }
63 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/tradegroup/delivery/TradeDeliveryExpressOrderAPI.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.tradegroup.delivery;
2 |
3 | import com.youzan.open.sdk.gen.v3_0_0.model.YouzanLogisticsExpressbyordernoSearchResult;
4 | import com.youzan.open.sdk.gen.v3_0_0.model.YouzanLogisticsGoodsexpressGetResult;
5 |
6 | import java.util.List;
7 |
8 | /**
9 | * 交易发货快递订单 API
10 | */
11 | public interface TradeDeliveryExpressOrderAPI {
12 |
13 | /**
14 | * 通过交易号获取所有包裹信息
15 | *
16 | * https://www.youzanyun.com/apilist/detail/group_trade/logistics/youzan.logistics.expressbyorderno.search
17 | *
18 | * @param tid 交易号
19 | * @return 物流详情列表
20 | */
21 | List search(String tid);
22 |
23 | /**
24 | * 通过交易明细(交易订单)编号获取包裹信息
25 | *
26 | * https://www.youzanyun.com/apilist/detail/group_trade/logistics/youzan.logistics.expressbyorderno.get
27 | *
28 | * 注意,这个 API 笔者做了调整。
29 | * 如果传递 tid ,那么和 {@link #search(String)} 又重复了
30 | * 并且,返回的只有单条包裹信息,但是一个交易下可以有多个包裹信息。
31 | * 因此,笔者觉得应该是根据交易明细(交易订单)编号查询。
32 | *
33 | * @param oid 交易明细(交易订单)编号
34 | * @return 物流详情
35 | */
36 | YouzanLogisticsGoodsexpressGetResult get(String oid);
37 |
38 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/shopgroup/address/entity/ShopAddress.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.shopgroup.address.entity;
2 |
3 | import java.util.Date;
4 |
5 | public class ShopAddress {
6 |
7 | /**
8 | * 地址编号
9 | */
10 | private Integer id;
11 | /**
12 | * 店铺编号
13 | */
14 | private Integer shopId;
15 | /**
16 | * 手机
17 | */
18 | private String mobile;
19 | /**
20 | * 联系人
21 | */
22 | private String contactName;
23 | /**
24 | * 地区id
25 | */
26 | private Integer regionId;
27 | /**
28 | * 详细地址
29 | */
30 | private String address;
31 | /**
32 | * 是否退货地址
33 | */
34 | private Boolean isReturn;
35 | /**
36 | * 是否默认退货地址
37 | */
38 | private Boolean isReturnDefault;
39 | /**
40 | * 是否发票地址
41 | */
42 | private Boolean isInvoice;
43 | /**
44 | * 是否默认发票地址
45 | */
46 | private Boolean isInvoiceDefault;
47 | /**
48 | * 状态
49 | *
50 | * 1:正常
51 | * 2:删除
52 | */
53 | private Integer status;
54 | /**
55 | * 创建时间
56 | */
57 | private Date createTime;
58 | /**
59 | * 删除时间
60 | */
61 | private Date deleteTime;
62 | /**
63 | * 更新时间
64 | */
65 | private Date updateTime;
66 | }
67 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/tradegroup/refund/entity/TradeRefundDelivery.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.tradegroup.refund.entity;
2 |
3 | /**
4 | * 交易退款维权的退货物流信息
5 | */
6 | public class TradeRefundDelivery {
7 |
8 | /**
9 | * 退款编号 {@link TradeRefund#id}
10 | */
11 | private String id;
12 | /**
13 | * 店铺编号 {@link cn.iocoder.doraemon.shopgroup.shop.entity.Shop#id}
14 | */
15 | private Integer shopId;
16 | /**
17 | * 物流公司编号 {@link cn.iocoder.doraemon.tradegroup.delivery.entity.Express#id}
18 | */
19 | private Integer expressId;
20 | /**
21 | * 物流运单编号
22 | */
23 | private String nu;
24 | /**
25 | * 收件人(卖家)名
26 | */
27 | private String receiverName;
28 | /**
29 | * 收件人(卖家)手机号
30 | */
31 | private String receiverMobile;
32 | /**
33 | * 收件人(卖家)座机
34 | */
35 | private String receiverTelephone;
36 | /**
37 | * 收件人(卖家)收获地区编号
38 | */
39 | private Integer receiverRegionId;
40 | /**
41 | * 收件人(卖家)收获地址
42 | */
43 | private String receiverAddress;
44 | /**
45 | * 发件人(买家)手机号
46 | */
47 | private String senderMobile;
48 | /**
49 | * 发货备注
50 | */
51 | private String desc;
52 | /**
53 | * 图片举证数组,以逗号分隔
54 | */
55 | private String images;
56 |
57 | }
58 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/tradegroup/delivery/entity/ExpressOrder.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.tradegroup.delivery.entity;
2 |
3 | import java.util.Date;
4 |
5 | /**
6 | * 快递订单
7 | */
8 | public class ExpressOrder {
9 |
10 | /**
11 | * 事件
12 | */
13 | public static class Event {
14 |
15 | /**
16 | * 时间
17 | */
18 | private Date time;
19 | /**
20 | * 状态
21 | *
22 | * 与 {@link ExpressOrder#status} 一致
23 | */
24 | private Integer status;
25 | /**
26 | * 上下文
27 | *
28 | * 例如,到达:上海静安区公司宝山服务部 由 已签收 签收 || 到达:浙江杭州余杭区良渚公司 已揽件
29 | */
30 | private String context;
31 |
32 | }
33 |
34 | /**
35 | * 快递单号
36 | */
37 | private String nu;
38 | /**
39 | * 快递公司编号 {@link Express#id}
40 | */
41 | private Integer expressId;
42 | /**
43 | * 创建时间
44 | */
45 | private Date createdTime;
46 | /**
47 | * 快递状态
48 | *
49 | * 0:在途,即货物处于运输过程中;
50 | * 1:揽件,货物已由快递公司揽收并且产生了第一条跟踪信息;
51 | * 2:疑难,货物寄送过程出了问题;
52 | * 3:签收,收件人已签收;
53 | * 4:退签,即货物由于用户拒签、超区等原因退回,而且发件人已经签收;
54 | * 5:派件,即快递正在进行同城派件;
55 | * 6:退回,货物正处于退回发件人的途中;
56 | */
57 | private Integer status;
58 | /**
59 | * 过程事件数据
60 | *
61 | * 使用 JSON 将 {@link Event}数组 格式化成字符串
62 | */
63 | private String data;
64 |
65 | }
66 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/tradegroup/trade/entity/TradeSelfFetch.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.tradegroup.trade.entity;
2 |
3 | import java.util.Date;
4 |
5 | /**
6 | * 交易上门自提信息
7 | */
8 | public class TradeSelfFetch {
9 |
10 | /**
11 | * 交易编号 {@link Trade#id}
12 | */
13 | private String id;
14 | /**
15 | * 店铺编号 {@link cn.iocoder.doraemon.shopgroup.shop.entity.Shop#id}
16 | */
17 | private Integer shopId;
18 | /**
19 | * 自提人的手机
20 | */
21 | private String fetcherMobile;
22 | /**
23 | * 自提人的名字
24 | */
25 | private String fetcherName;
26 | /**
27 | * 自提开始时间
28 | *
29 | * 当为空时,任意时间都可自提。
30 | */
31 | private Date fetchStartTime;
32 | /**
33 | * 自提结束时间
34 | *
35 | * 当为空时,任意时间都可自提。
36 | */
37 | private Date fetchEndTime;
38 | /**
39 | * 自提提货码,例如 5508 8906 062
40 | */
41 | private String fetchCode;
42 | /**
43 | * 上门自提点的编号 {@link cn.iocoder.doraemon.tradegroup.delivery.entity.TradeDeliverySelfFetchAddress#id}
44 | */
45 | private Integer fetchAddressId;
46 | /**
47 | * 上门自提点的地区编号
48 | *
49 | * 冗余,避免删除
50 | */
51 | private Integer fetchRegionId;
52 | /**
53 | * 上门自提点的地址
54 | *
55 | * 冗余,避免修改
56 | */
57 | private String fetchAddress;
58 | /**
59 | * 上门自提点的联系电话
60 | *
61 | * 冗余,避免修改
62 | */
63 | private String fetchPhone;
64 |
65 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/tradegroup/delivery/TradeDeliveryExpressTemplateAPI.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.tradegroup.delivery;
2 |
3 | import com.youzan.open.sdk.gen.v3_0_0.model.YouzanLogisticsTemplateSearchResult;
4 |
5 | import java.util.List;
6 |
7 | /**
8 | * 交易发货快递运费模板 API
9 | */
10 | public interface TradeDeliveryExpressTemplateAPI {
11 |
12 | /**
13 | * 获取店铺所有物流模板列表
14 | *
15 | * https://open.youzan.com/api/oauthentry/youzan.logistics.template/3.0.0/search
16 | *
17 | * @param pageNo 页码
18 | * @param pageSize 分页值,默认20
19 | * @return 店铺全部物流模板
20 | */
21 | List search(Integer pageNo, Integer pageSize);
22 |
23 | /**
24 | * 创建物流模板
25 | *
26 | * https://www.youzanyun.com/apilist/detail/group_trade/logistics/youzan.logistics.template.create
27 | *
28 | * @param name 模板名称
29 | * @param payType 付费类型
30 | * @param valuationType 计算类型
31 | * @param valuationRules 运费规则 json格式,转换成 List
32 | */
33 | void create(String name, Integer payType, Integer valuationType, String valuationRules);
34 |
35 | // update 接口,操作界面有,API 暂未提供。胖友自行 YY 。
36 |
37 | /**
38 | * 删除模板
39 | *
40 | * https://www.youzanyun.com/apilist/detail/group_trade/logistics/youzan.logistics.template.delete
41 | *
42 | * @param templateId 模板id
43 | * @return 是否成功
44 | */
45 | Boolean delete(Integer templateId);
46 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/umpgroup/present/entity/PresentGivingRecord.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.umpgroup.present.entity;
2 |
3 | import java.util.Date;
4 |
5 | /**
6 | * 赠品赠送记录
7 | */
8 | public class PresentGivingRecord {
9 |
10 | /**
11 | * 记录编号,自增唯一
12 | */
13 | private Integer id;
14 | /**
15 | * 店铺编号
16 | */
17 | private Integer shopId;
18 | /**
19 | * 赠品编号
20 | */
21 | private Integer presentId;
22 | /**
23 | * 赠品名
24 | */
25 | private String presentName;
26 | /**
27 | * 商品编号
28 | */
29 | private Integer itemId;
30 | /**
31 | * 商品标题
32 | */
33 | private Integer itemTitle;
34 | /**
35 | * 活动编号
36 | */
37 | private Integer activityId;
38 | /**
39 | * 活动类型
40 | *
41 | * 【下面枚举的值不一定正确,形式是这样的形式】
42 | * 1-满减/送活动
43 | * 2-刮刮卡活动
44 | */
45 | private Integer activityType;
46 | /**
47 | * 交易编号 {@link cn.iocoder.doraemon.tradegroup.trade.entity.Trade#id}
48 | */
49 | private Integer tid;
50 | /**
51 | * 买家编号
52 | */
53 | private Integer buyerId;
54 | /**
55 | * 状态
56 | *
57 | * 1-待领取
58 | * 2-已领取
59 | * 3-已过期
60 | */
61 | private Integer status;
62 | /**
63 | * 创建时间(赠送时间)
64 | */
65 | private Date createTime;
66 | /**
67 | * 领取过期时间
68 | */
69 | private Date expireTime;
70 | /**
71 | * 领取时间
72 | */
73 | private Date receiveTime;
74 |
75 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/item/entity/ItemSku.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.item.entity;
2 |
3 | import java.util.Date;
4 |
5 | public class ItemSku {
6 |
7 | /**
8 | * 唯一编码,店铺Id 和 商品skuId 组合
9 | *
10 | * 分销场景下,skuId 多个店铺相同,uniqueCode 不同
11 | */
12 | private String uniqueCode;
13 | /**
14 | * sku 编号
15 | *
16 | * 非唯一
17 | */
18 | private Integer skuId;
19 | /**
20 | * 商品编号
21 | */
22 | private Integer itemId;
23 | /**
24 | * 店铺编号
25 | */
26 | private Integer shopId;
27 | /**
28 | * 状态
29 | *
30 | * 1-正常
31 | * 2-删除
32 | */
33 | private Integer status;
34 | /**
35 | * 图片地址
36 | */
37 | private String imageURL;
38 | /**
39 | * 商品规格
40 | *
41 | * 格式:kid[0]-vid[0],kid[1]-vid[1]...kid[n]-vid[n]
42 | * 例如:20000-3275069,1753146-3485013
43 | */
44 | private String properties;
45 | /**
46 | * 价格,单位分
47 | */
48 | private Integer price;
49 | /**
50 | * 商品货号(商家为商品设置的外部编号)
51 | */
52 | private String itemNo;
53 | /**
54 | * 库存数量
55 | */
56 | private Integer quantity;
57 | /**
58 | * 商品在付款减库存的状态下,该Sku上未付款的订单数量
59 | */
60 | private Integer withHoldQuantity;
61 | /**
62 | * 销量
63 | */
64 | private Integer soldNum;
65 | /**
66 | * 创建时间
67 | */
68 | private Date createTime;
69 | /**
70 | * 更新时间
71 | */
72 | private Date updateTime;
73 |
74 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/item/entity/vo/ItemTemplateTextNavElementVO.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.item.entity.vo;
2 |
3 | /**
4 | * 商品页面模板文本导航元素 VO
5 | */
6 | public class ItemTemplateTextNavElementVO extends AbstractItemTemplateElementVO {
7 |
8 | /**
9 | * 商品页面模板文本导航元素的选项 VO
10 | */
11 | public static class SelectionElementVO extends AbstractItemTemplateElementVO {
12 |
13 | private static final String TYPE = "text_nav_selection";
14 |
15 | // === 标题 ===
16 | /**
17 | * 标题
18 | */
19 | private String title;
20 |
21 | // === 链接 ===
22 | /**
23 | * 链接类型
24 | */
25 | private String linkType;
26 | /**
27 | * 链接地址
28 | */
29 | private String linkURL;
30 | /**
31 | * 链接标题
32 | *
33 | * 例如链接类型为 goods ,对应商品标题
34 | */
35 | private String linkTitle;
36 | /**
37 | * 链接编号
38 | *
39 | * 例如链接类型为 goods ,对应商品编号
40 | */
41 | private String linkId;
42 | /**
43 | * 链接别名
44 | *
45 | * 例如链接类型为 goods ,对应商品别名
46 | */
47 | private String alias;
48 |
49 | }
50 |
51 | private static final String TYPE = "text_nav";
52 |
53 | /**
54 | * 展示方式
55 | *
56 | * 0-默认(目前就这一种)
57 | */
58 | private Integer showMethod;
59 | /**
60 | * 选项元素数组
61 | *
62 | * JSON 格式,数组,每个元素为 {@link SelectionElementVO}
63 | */
64 | private String subEntrys;
65 |
66 | }
67 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/umpgroup/present/entity/Present.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.umpgroup.present.entity;
2 |
3 | import java.util.Date;
4 |
5 | /**
6 | * 赠品
7 | */
8 | public class Present {
9 |
10 | /**
11 | * 编号,自增唯一
12 | */
13 | private Integer id;
14 | /**
15 | * 店铺编号
16 | */
17 | private Integer shopId;
18 | /**
19 | * 名称
20 | */
21 | private String name;
22 | /**
23 | * 创建时间
24 | */
25 | private Date createTime;
26 | /**
27 | * 更新时间
28 | */
29 | private Date updateTime;
30 | /**
31 | * 状态
32 | *
33 | * 1-未开始
34 | * 2-进行中
35 | * 3-已结束
36 | * 4-已删除
37 | */
38 | private Integer status;
39 | /**
40 | * 结束类型
41 | *
42 | * 1-活动到期
43 | * 2-手动删除
44 | * 3-手动失效
45 | */
46 | private Integer endType;
47 | /**
48 | * 活动到期时间
49 | */
50 | private Date expireTime;
51 | /**
52 | * 设置为失效时间
53 | */
54 | private Date invalidTime;
55 | /**
56 | * 删除时间
57 | */
58 | private Date deleteTime;
59 | /**
60 | * 开始时间
61 | */
62 | private Date startTime;
63 | /**
64 | * 结束时间
65 | */
66 | private Date endTime;
67 | /**
68 | * 领取有效期,单位:天。
69 | */
70 | private Integer expirationDays;
71 | /**
72 | * 领取限制
73 | */
74 | private Integer limit;
75 | /**
76 | * 商品编号
77 | */
78 | private Integer itemId;
79 | /**
80 | * 当前赠送数量
81 | */
82 | private Integer givingNum;
83 | /**
84 | * 当前领取数量
85 | */
86 | private Integer receiveNum;
87 |
88 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/tradegroup/refund/entity/TradeRefundMessage.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.tradegroup.refund.entity;
2 |
3 | import java.util.Date;
4 |
5 | /**
6 | * 交易退款维权的协商记录
7 | */
8 | public class TradeRefundMessage {
9 |
10 | /**
11 | * 明细
12 | */
13 | public static class Detail {
14 |
15 | /**
16 | * 标题
17 | */
18 | private String title;
19 | /**
20 | * 内容
21 | */
22 | private String content;
23 |
24 | }
25 |
26 | /**
27 | * 记录编号,唯一。
28 | */
29 | private Integer id;
30 | /**
31 | * 退款编号 {@link TradeRefund#id}
32 | */
33 | private String refundId;
34 | /**
35 | * 店铺编号 {@link cn.iocoder.doraemon.shopgroup.shop.entity.Shop#id}
36 | */
37 | private Integer shopId;
38 | /**
39 | * 发起角色
40 | *
41 | * 1 - 系统
42 | * 2 - 买家
43 | * 3 - 商家
44 | * 4 - 客服
45 | */
46 | private Integer ownerRole;
47 | /**
48 | * 具体操作
49 | *
50 | * 例如:
51 | * 250 - 同意退款给买家,本次维权结束
52 | * 206 - 已退货,等待商家确认收货
53 | * 205 - 已同意退款申请,等待买家退货
54 | * 201 - 发起了退款申请,等待商家处理
55 | */
56 | private Integer op;
57 | /**
58 | * 操作前状态
59 | */
60 | private Integer beforeStatus;
61 | /**
62 | * 操作后状态
63 | */
64 | private String afterStatus;
65 | /**
66 | * 明细数组字符串
67 | *
68 | * JSON 格式,数组,每个元素为 {@link Detail}
69 | */
70 | private String details;
71 | /**
72 | * 图片地址数组字符串
73 | */
74 | private String picURLs;
75 | /**
76 | * 创建时间
77 | */
78 | private Date createTime;
79 |
80 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/umpgroup/bale/entity/BaleActivity.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.umpgroup.bale.entity;
2 |
3 | import java.util.Date;
4 |
5 | /**
6 | * 打包一口价活动
7 | */
8 | public class BaleActivity {
9 |
10 | /**
11 | * 编号,自增唯一
12 | */
13 | private Integer id;
14 | /**
15 | * 店铺编号
16 | */
17 | private Integer shopId;
18 | /**
19 | * 名称
20 | */
21 | private String name;
22 | /**
23 | * 创建时间
24 | */
25 | private Date createTime;
26 | /**
27 | * 更新时间
28 | */
29 | private Date updateTime;
30 | /**
31 | * 状态
32 | *
33 | * 1-未开始
34 | * 2-进行中
35 | * 3-已结束
36 | * 4-已删除
37 | */
38 | private Integer status;
39 | /**
40 | * 结束类型
41 | *
42 | * 1-活动到期
43 | * 2-手动删除
44 | * 3-手动失效
45 | */
46 | private Integer endType;
47 | /**
48 | * 活动到期时间
49 | */
50 | private Date expireTime;
51 | /**
52 | * 设置为失效时间
53 | */
54 | private Date invalidTime;
55 | /**
56 | * 删除时间
57 | */
58 | private Date deleteTime;
59 | /**
60 | * 开始时间
61 | */
62 | private Date startTime;
63 | /**
64 | * 结束时间
65 | */
66 | private Date endTime;
67 | /**
68 | * 打包价格,单位:分
69 | */
70 | private Integer balePrice;
71 | /**
72 | * 任选件数
73 | */
74 | private Integer baleNum;
75 | /**
76 | * 优惠是否叠加
77 | *
78 | * 可与优惠券、优惠码、满减、支付有礼、订单返现促销活动进行优惠叠加
79 | */
80 | private Boolean isPreferentialOverlay;
81 | /**
82 | * 指定可用商品列表,使用逗号分隔商品编号 {@link cn.iocoder.doraemon.itemgroup.item.entity.Item#id}
83 | */
84 | private String items;
85 |
86 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/umpgroup/coupon/entity/CouponVerifyLog.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.umpgroup.coupon.entity;
2 |
3 | import java.util.Date;
4 |
5 | /**
6 | * 优惠券(码)核销记录
7 | */
8 | public class CouponVerifyLog {
9 |
10 | /**
11 | * 记录编号,唯一自增
12 | */
13 | private Integer id;
14 | /**
15 | * 店铺编号
16 | */
17 | private Integer shopId;
18 | /**
19 | * 创建时间(验证时间)
20 | */
21 | private Date createTime;
22 | /**
23 | * 类型
24 | *
25 | * 1-优惠劵
26 | * 2-优惠码
27 | */
28 | private Integer type;
29 | /**
30 | * 优惠劵(码)分组编号,{@link CouponGroup#id}
31 | */
32 | private Integer couponGroupId;
33 | /**
34 | * 标题
35 | */
36 | private String title;
37 | /**
38 | * 使用说明
39 | */
40 | private String descrption;
41 | /**
42 | * 优惠劵(码)编号,{@link Coupon#id}
43 | */
44 | private Integer couponId;
45 | /**
46 | * 核销码
47 | */
48 | private String verifyCode;
49 | /**
50 | * 验证方式
51 | *
52 | * 1-扫码
53 | * 2-手动输入
54 | */
55 | private Integer verifyType;
56 | /**
57 | * 验证管理员编号
58 | */
59 | private Integer adminId;
60 | /**
61 | * 是否设置满多少金额可用,单位:分
62 | *
63 | * 0-不限制
64 | * 大于0-多少金额可用
65 | */
66 | private Integer condition;
67 | /**
68 | * 优惠类型
69 | *
70 | * 1-代金卷
71 | * 2-折扣卷
72 | */
73 | private Integer preferentialType;
74 | /**
75 | * 折扣
76 | */
77 | private Double discount;
78 | /**
79 | * 优惠金额,单位:分
80 | */
81 | private Integer value;
82 | /**
83 | * 使用订单号
84 | */
85 | private String usedInTid;
86 |
87 | }
88 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/umpgroup/coupon/CouponGroupAPI.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.umpgroup.coupon;
2 |
3 | import cn.iocoder.doraemon.umpgroup.coupon.entity.CouponGroup;
4 | import com.youzan.open.sdk.gen.v3_0_0.model.YouzanUmpCouponSearchResult;
5 | import com.youzan.open.sdk.gen.v3_0_0.model.YouzanUmpCouponsUnfinishedSearchResult;
6 |
7 | import java.util.List;
8 |
9 | /**
10 | * 优惠劵(码)组 API
11 | */
12 | public interface CouponGroupAPI {
13 |
14 | /**
15 | * (分页查询)查询优惠券(码)组列表
16 | *
17 | * https://www.youzanyun.com/apilist/detail/group_ump/coupon/youzan.ump.coupon.search
18 | *
19 | * @param groupType 类型 PROMOCARD 优惠券,PROMOCODE 优惠码
20 | * @param status 状态 FUTURE 未开始 ,END 已结束,ON 进行中 (默认查所有状态)
21 | * @param pageNo 第几页
22 | * @param pageSize 每页数量
23 | * @return 优惠券(码)组列表 {@link cn.iocoder.doraemon.umpgroup.coupon.entity.CouponGroup}
24 | */
25 | YouzanUmpCouponSearchResult search(String groupType, String status, Integer pageNo, Integer pageSize);
26 |
27 | /**
28 | * 获取所有未结束的优惠活动列表(包含未开始的、进行中的)
29 | *
30 | * https://www.youzanyun.com/apilist/detail/group_ump/coupon/youzan.ump.coupons.unfinished.search
31 | *
32 | * @param fields 需要返回的优惠对象字段。可选值:优惠结构体中所有字段均可返回;多个字段用“,”分隔。如果为空则返回所有
33 | * @return 未结束的优惠券(码)组列表 {@link cn.iocoder.doraemon.umpgroup.coupon.entity.CouponGroup}
34 | */
35 | List unfinishedSearch(String... fields);
36 |
37 | /**
38 | * 获取优惠券(码)组详情
39 | *
40 | * https://www.youzanyun.com/apilist/detail/group_ump/coupon/youzan.ump.coupon.detail.get
41 | *
42 | * @param id 优惠券(码)组编号
43 | * @return 优惠券(码)组 {@link cn.iocoder.doraemon.umpgroup.coupon.entity.CouponGroup}
44 | */
45 | List get(Integer id);
46 |
47 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/shopgroup/address/ShopAddressAPI.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.shopgroup.address;
2 |
3 | import com.youzan.open.sdk.gen.v3_0_0.model.*;
4 |
5 | public interface ShopAddressAPI {
6 |
7 | /**
8 | * 店铺地址库新建一个地址
9 | *
10 | * https://www.youzanyun.com/apilist/detail/group_shop/shop/youzan.shop.address.create
11 | *
12 | * @param params 参数
13 | * @return 响应 {
14 | * is_success: // 是否成功
15 | * id: // 新增的地址id
16 | * }
17 | */
18 | YouzanShopAddressCreateResult create(YouzanShopAddressCreateParams params);
19 |
20 | /**
21 | * 店铺地址库更新一个地址
22 | *
23 | * https://www.youzanyun.com/apilist/detail/group_shop/shop/youzan.shop.address.update
24 | *
25 | * @param params 参数
26 | * @return 是否成功
27 | */
28 | Boolean update(YouzanShopAddressUpdateParams params);
29 |
30 | /**
31 | * 店铺地址库删除一个地址
32 | *
33 | * https://open.youzan.com/api/oauthentry/youzan.shop.address/3.0.0/delete
34 | *
35 | * @param id 地址id
36 | * @return 是否成功
37 | */
38 | Boolean delete(Integer id);
39 |
40 | /**
41 | * 店铺地址库获取所有地址
42 | *
43 | * https://www.youzanyun.com/apilist/detail/group_shop/shop/youzan.shop.address.list
44 | *
45 | * @param type 地址类型
46 | * return(退货地址)
47 | * invoice(发票地址)
48 | * @return 响应 {
49 | * total: // 地址总数
50 | * list: // 地址列表
51 | * }
52 | */
53 | YouzanShopAddressListResult list(String type);
54 |
55 | /**
56 | * 店铺地址库获取一个地址
57 | *
58 | * https://www.youzanyun.com/apilist/detail/group_shop/shop/youzan.shop.address.get
59 | *
60 | * @param id 地址id
61 | * @return 地址明细
62 | */
63 | YouzanShopAddressGetResult get(Integer id);
64 |
65 | }
66 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/item/ItemSkuAPI.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.item;
2 |
3 | import com.youzan.open.sdk.gen.v3_0_0.model.YouzanItemQuantityUpdateResult;
4 | import com.youzan.open.sdk.gen.v3_0_0.model.YouzanSkusCustomGetResult;
5 |
6 | import java.util.List;
7 |
8 | // TODO 芋艿,https://open.youzan.com/api/oauthentry/youzan.item.sku/3.0.0/get 不存在
9 | public interface ItemSkuAPI {
10 |
11 | /**
12 | * 跟据商家编码(商家为sku设置的外部编号)获取商品sku.
13 | *
14 | * https://www.youzanyun.com/apilist/detail/group_item/item/youzan.skus.custom.get
15 | *
16 | * importance 注意,如果一个item_no对应多个sku会返回所有符合条件的sku
17 | *
18 | * @param itemId 商品Id
19 | * @param itemNo 商家编码(商家为Sku设置的外部编号)
20 | * @return 商品sku 数组
21 | */
22 | List customGet(Integer itemId, String itemNo);
23 |
24 | /**
25 | * 更新SKU
26 | *
27 | * https://www.youzanyun.com/apilist/detail/group_item/item/youzan.item.sku.update
28 | *
29 | * @param itemId sku id
30 | * @param skuId 商品数字编号
31 | * @param quantity sku库存数量
32 | * @param price sku销售价格,单位:分
33 | * @param itemNo 商家编码(商家为sku设置外部编号)
34 | * @return 是否成功; 成功:true
35 | */
36 | Boolean update(Integer itemId, Integer skuId, Integer quantity, Integer price, String itemNo);
37 |
38 | /**
39 | * 支持全量或增量方式更新SKU库存
40 | *
41 | * https://www.youzanyun.com/apilist/detail/group_item/item/youzan.item.quantity.update
42 | *
43 | * @param type 库存更新方式
44 | * 0 - 全量更新(默认)
45 | * 1 - 增量更新
46 | * @param itemId sku id
47 | * @param skuId 商品数字编号
48 | * @param quantity sku库存数量
49 | * @return 是否成功; 成功:true
50 | */
51 | YouzanItemQuantityUpdateResult updateQuantity(Integer type, Integer itemId, Integer skuId, Integer quantity);
52 |
53 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/tradegroup/delivery/TradeDeliveryOnlineAPI.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.tradegroup.delivery;
2 |
3 | /**
4 | * 交易发货核心 API
5 | */
6 | public interface TradeDeliveryOnlineAPI {
7 |
8 | /**
9 | * 运费计算
10 | *
11 | * https://www.youzanyun.com/apilist/detail/group_trade/logistics/youzan.logistics.fee.get
12 | *
13 | * @param tid 交易编号
14 | * @param itemParamList 交易商品列表,例如 [{"amount":1,"itemId":1,"itemType":0,"skuId":1,"supplyKdtId":0,"templateId":1,"unifiedPostage":1}]
15 | * @param provinceName 省份名
16 | * @param cityName 城市名
17 | * @param countyName 地区名
18 | * @return 运费。单位:分
19 | */
20 | int getFee(String tid, String itemParamList, String provinceName, String cityName, String countyName);
21 |
22 | /**
23 | * 卖家确认发货
24 | * 确认发货的目的是让交易流程继续走下去,确认发货后交易状态会由【买家已付款】变为【卖家已发货】
25 | *
26 | * https://www.youzanyun.com/apilist/detail/group_trade/logistics/youzan.logistics.online.confirm
27 | *
28 | * @param tid 交易编号
29 | * @param outerTid 外部交易编号
30 | * @param oids 交易明细编号数组。如果需要拆单发货,使用该字段指定要发货的商品交易明细编号,多个明细编号用半角逗号“,”分隔; 不需要拆单发货,则该字段不传或值为空;
31 | * @param isNoExpress 发货是否无需物流。如果无需物流,不需要传递 nu / expressId 参数
32 | * @param nu 快递单号(具体一个物流公司的真实快递单号)
33 | * @param expressId 物流公司编号
34 | * @param issue 配送期次,周期购订单专用,例如:1,表示配送第1期
35 | * @return 是否成功
36 | */
37 | Boolean confirm(String tid, String outerTid, String[] oids, Boolean isNoExpress, String nu, Integer expressId, Integer issue);
38 |
39 | /**
40 | * 卖家标记签收
41 | * 标记签收的目的是让交易流程继续走下去,标记签收后交易状态会由【卖家已发货】变为【买家已签收】,通常到店自提的订单需要卖家做标记签收操作
42 | *
43 | * https://www.youzanyun.com/apilist/detail/group_trade/logistics/youzan.logistics.online.marksign
44 | *
45 | * @param tid 交易编号
46 | * @return 是否成功
47 | */
48 | Boolean markSign(String tid);
49 |
50 | }
51 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/item/entity/vo/ItemTemplateImageNavElementVO.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.item.entity.vo;
2 |
3 | /**
4 | * 商品页面模板图片导航元素 VO
5 | */
6 | public class ItemTemplateImageNavElementVO {
7 |
8 | /**
9 | * 商品页面模板图片导航元素的选项 VO
10 | */
11 | public static class SelectionElementVO extends AbstractItemTemplateElementVO {
12 |
13 | private static final String TYPE = "nav_selection";
14 |
15 | // === 图片 ===
16 | /**
17 | * 图片编号
18 | */
19 | private Integer imageId;
20 | /**
21 | * 图片地址
22 | */
23 | private String imageURL;
24 | /**
25 | * 图片缩略地址
26 | */
27 | private String imageThumbURL;
28 | /**
29 | * 图片高度
30 | */
31 | private Integer imageWidth;
32 | /**
33 | * 图片宽度
34 | */
35 | private Integer imageHeight;
36 |
37 | // === 标题 ===
38 | /**
39 | * 标题
40 | */
41 | private String title;
42 |
43 | // === 链接 ===
44 | /**
45 | * 链接类型
46 | */
47 | private String linkType;
48 | /**
49 | * 链接地址
50 | */
51 | private String linkURL;
52 | /**
53 | * 链接标题
54 | *
55 | * 例如链接类型为 goods ,对应商品标题
56 | */
57 | private String linkTitle;
58 | /**
59 | * 链接编号
60 | *
61 | * 例如链接类型为 goods ,对应商品编号
62 | */
63 | private String linkId;
64 | /**
65 | * 链接别名
66 | *
67 | * 例如链接类型为 goods ,对应商品别名
68 | */
69 | private String alias;
70 |
71 | }
72 |
73 | private static final String TYPE = "nav";
74 |
75 | /**
76 | * 选项元素数组
77 | *
78 | * JSON 格式,数组,每个元素为 {@link ItemTemplateTextNavElementVO.SelectionElementVO} 的实现类字符串
79 | */
80 | private String subEntrys;
81 |
82 | }
83 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/item/entity/vo/ItemTemplateGoodsElementVO.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.item.entity.vo;
2 |
3 | /**
4 | * 商品页面模板商品元素 VO
5 | */
6 | public class ItemTemplateGoodsElementVO extends AbstractItemTemplateElementVO {
7 |
8 | /**
9 | * 商品
10 | */
11 | public static class Goods {
12 |
13 | /**
14 | * 商品编号 {@link cn.iocoder.doraemon.itemgroup.item.entity.Item#id}
15 | */
16 | private Integer id;
17 | /**
18 | * 商品别名 {@link cn.iocoder.doraemon.itemgroup.item.entity.Item#alias}
19 | */
20 | private String alias;
21 |
22 | // 其他商品相关冗余字段
23 | }
24 |
25 | private static final String TYPE = "goods";
26 |
27 | /**
28 | * 列表样式
29 | *
30 | * 0-大图
31 | * 1-小图
32 | * 2-一大两小
33 | * 3-详细列表
34 | */
35 | private Integer size;
36 | /**
37 | * 商品样式
38 | *
39 | * 0-卡片样式
40 | * 1-瀑布流
41 | * 2-极简样式
42 | * 3-促销
43 | */
44 | private Integer sizeType;
45 | /**
46 | * 是否显示购买按钮
47 | *
48 | * 0-不显示
49 | * 1-显示
50 | */
51 | private Integer buyBtn;
52 | /**
53 | * 显示购买按钮的样式
54 | *
55 | * 1-样式1
56 | * 2-样式2
57 | * 3-样式3
58 | * 4-样式4
59 | */
60 | private Integer buyBtnType;
61 | /**
62 | * 是否显示商品标题
63 | *
64 | * 0-不显示
65 | * 1-显示
66 | */
67 | private Integer title;
68 | /**
69 | * 是否显示商品简介
70 | *
71 | * 0-不显示
72 | * 1-显示
73 | */
74 | private Integer showSubTitle;
75 | /**
76 | * 是否显示商品价格
77 | *
78 | * 0-不显示
79 | * 1-显示
80 | */
81 | private Integer price;
82 | /**
83 | * 商品数组
84 | *
85 | * JSON 格式,数组,每个元素为 {@link Goods}
86 | */
87 | private String goods;
88 |
89 | // private Integer showWishBtn; 0 暂时没找到对应的选项
90 | //
91 | // private Integer wishBtnType; 1 暂时没找到对应的选项
92 |
93 |
94 | }
95 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/item/entity/vo/ItemTemplateGoodsTagsElementVO.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.item.entity.vo;
2 |
3 | /**
4 | * 商品页面模板商品分组元素 VO 的第二种
5 | */
6 | public class ItemTemplateGoodsTagsElementVO extends AbstractItemTemplateElementVO {
7 |
8 | /**
9 | * 商品分组元素的选项 VO
10 | */
11 | public static class GoodsTagElementVO extends AbstractItemTemplateElementVO {
12 |
13 | private static final String TYPE = "tag";
14 |
15 | /**
16 | * 商品分组编号
17 | */
18 | private Integer id;
19 | /**
20 | * 商品分组标题
21 | */
22 | private String title;
23 | /**
24 | * 商品分组访问地址
25 | */
26 | private String url;
27 |
28 | // 其他商品分组相关冗余字段
29 | }
30 |
31 | private static final String TYPE = "tags";
32 |
33 | /**
34 | * 列表样式
35 | *
36 | * 0-大图
37 | * 1-小图
38 | * 2-一大两小
39 | * 3-详细列表
40 | */
41 | private Integer size;
42 | /**
43 | * 商品样式
44 | *
45 | * 0-卡片样式
46 | * 1-瀑布流
47 | * 2-极简样式
48 | * 3-促销
49 | */
50 | private Integer sizeType;
51 | /**
52 | * 是否显示购买按钮
53 | *
54 | * 0-不显示
55 | * 1-显示
56 | */
57 | private Integer buyBtn;
58 | /**
59 | * 显示购买按钮的样式
60 | *
61 | * 1-样式1
62 | * 2-样式2
63 | * 3-样式3
64 | * 4-样式4
65 | */
66 | private Integer buyBtnType;
67 | /**
68 | * 是否显示商品标题
69 | *
70 | * 0-不显示
71 | * 1-显示
72 | */
73 | private Integer title;
74 | /**
75 | * 是否显示商品简介
76 | *
77 | * 0-不显示
78 | * 1-显示
79 | */
80 | private Integer showSubTitle;
81 | /**
82 | * 是否显示商品价格
83 | *
84 | * 0-不显示
85 | * 1-显示
86 | */
87 | private Integer price;
88 | /**
89 | * 商品分组数组
90 | *
91 | * JSON 格式,数组,每个元素为 {@link GoodsTagElementVO}
92 | */
93 | private String goods;
94 |
95 | }
96 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/umpgroup/coupon/CouponCardAPI.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.umpgroup.coupon;
2 |
3 | import cn.iocoder.doraemon.umpgroup.coupon.entity.Coupon;
4 | import cn.iocoder.doraemon.umpgroup.coupon.entity.CouponGroup;
5 | import com.youzan.open.sdk.gen.v3_0_0.model.YouzanUmpPromocardAddResult;
6 | import com.youzan.open.sdk.gen.v3_0_0.model.YouzanUmpPromocodeAddParams;
7 |
8 | import java.util.List;
9 |
10 | /**
11 | * 优惠劵 API
12 | */
13 | public interface CouponCardAPI {
14 |
15 | /**
16 | * 创建优惠劵。
17 | *
18 | * 生成 {@link CouponGroup} 和 {@link Coupon}
19 | *
20 | * https://www.youzanyun.com/apilist/detail/group_ump/coupon/youzan.ump.promocard.add
21 | *
22 | * @param params 优惠劵参数
23 | * @return 优惠劵信息 {@link cn.iocoder.doraemon.umpgroup.coupon.entity.Coupon}
24 | */
25 | YouzanUmpPromocardAddResult.UmpPromotionCard add(YouzanUmpPromocodeAddParams params);
26 |
27 | /**
28 | * 查询买家优惠劵列表
29 | *
30 | * https://www.youzanyun.com/apilist/detail/group_ump/coupon/youzan.ump.promocard.buyer.search
31 | *
32 | * @param fansType 粉丝类型(自有粉丝: fans_type = 1)
33 | * @param fansId 【三选一】粉丝ID,与 fans_type 同时出现,如果没有写0 mobile/fans_id/open_user_id 三选一传入
34 | * @param openUserId 【三选一】三方用户ID mobile/fans_id/open_user_id 三选一传入
35 | * @param mobile 【三选一】手机号,如果没有则写 0 mobile/fans_id/open_user_id 三选一传入
36 | * @param status 状态。VALID 有效(未使用) USED 已使用 INVALID 已失效
37 | * @return 优惠劵列表 {@link cn.iocoder.doraemon.umpgroup.coupon.entity.Coupon}
38 | */
39 | List searchByBuyer(Integer fansType, Integer fansId, String openUserId, String mobile, String status);
40 |
41 | /**
42 | * 获取优惠劵详情
43 | *
44 | * https://www.youzanyun.com/apilist/detail/group_ump/coupon/youzan.ump.promocard.detail.get
45 | *
46 | * @param id 优惠劵编号
47 | * @return 优惠劵 {@link cn.iocoder.doraemon.umpgroup.coupon.entity.Coupon}
48 | */
49 | Coupon get(Integer id);
50 |
51 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/umpgroup/coupon/CouponCodeAPI.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.umpgroup.coupon;
2 |
3 | import cn.iocoder.doraemon.umpgroup.coupon.entity.Coupon;
4 | import cn.iocoder.doraemon.umpgroup.coupon.entity.CouponGroup;
5 | import com.youzan.open.sdk.gen.v3_0_0.model.YouzanUmpPromocodeAddParams;
6 | import com.youzan.open.sdk.gen.v3_0_0.model.YouzanUmpPromocodeAddResult;
7 |
8 | import java.util.List;
9 |
10 | /**
11 | * 优惠码 API
12 | */
13 | public interface CouponCodeAPI {
14 |
15 | /**
16 | * 创建优惠码。
17 | *
18 | * 生成 {@link CouponGroup} 和 {@link Coupon}
19 | *
20 | * https://www.youzanyun.com/apilist/detail/group_ump/coupon/youzan.ump.promocode.add
21 | *
22 | * @param params 优惠码参数
23 | * @return 优惠码信息 {@link cn.iocoder.doraemon.umpgroup.coupon.entity.Coupon}
24 | */
25 | YouzanUmpPromocodeAddResult.UmpPromotionCode add(YouzanUmpPromocodeAddParams params);
26 |
27 | /**
28 | * 查询买家优惠码列表
29 | *
30 | * https://www.youzanyun.com/apilist/detail/group_ump/coupon/youzan.ump.promocode.buyer.search
31 | *
32 | * @param fansType 粉丝类型(自有粉丝: fans_type = 1)
33 | * @param fansId 【三选一】粉丝ID,与 fans_type 同时出现,如果没有写0 mobile/fans_id/open_user_id 三选一传入
34 | * @param openUserId 【三选一】三方用户ID mobile/fans_id/open_user_id 三选一传入
35 | * @param mobile 【三选一】手机号,如果没有则写 0 mobile/fans_id/open_user_id 三选一传入
36 | * @param status 状态。VALID 有效(未使用) USED 已使用 INVALID 已失效
37 | * @return 优惠码列表 {@link cn.iocoder.doraemon.umpgroup.coupon.entity.Coupon}
38 | */
39 | List searchByBuyer(Integer fansType, Integer fansId, String openUserId, String mobile, String status);
40 |
41 | /**
42 | * 获取优惠码详情
43 | *
44 | * https://www.youzanyun.com/apilist/detail/group_ump/coupon/youzan.ump.promocode.detail.get
45 | *
46 | * @param id 优惠码编号
47 | * @return 优惠码 {@link cn.iocoder.doraemon.umpgroup.coupon.entity.Coupon}
48 | */
49 | Coupon get(Integer id);
50 |
51 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/shopgroup/shop/ShopAPI.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.shopgroup.shop;
2 |
3 | import com.youzan.open.sdk.gen.v3_0_0.model.YouzanShopBasicGetResult;
4 | import com.youzan.open.sdk.gen.v3_0_0.model.YouzanShopGetResult;
5 | import com.youzan.open.sdk.gen.v3_0_0.model.YouzanShopStatusGetResult;
6 |
7 | public interface ShopAPI {
8 |
9 | /**
10 | * 创建店铺
11 | *
12 | * https://www.youzanyun.com/apilist/detail/group_shop/shop_advanced/youzan.shop.create
13 | *
14 | * @param name 店铺名字
15 | * @param logo 店铺LOGO资源地址
16 | * @param intro 店铺简介
17 | * @return 店铺编号
18 | */
19 | Integer create(String name, String logo, String intro);
20 |
21 | /**
22 | * 更新店铺信息
23 | *
24 | * https://www.youzanyun.com/apilist/detail/group_shop/shop_advanced/youzan.shop.update
25 | *
26 | * @param id 店铺编号
27 | * @param name 店铺名字
28 | * @param logo 店铺LOGO资源地址
29 | * @param intro 店铺简介
30 | * @return 是否成功
31 | */
32 | Boolean update(Integer id, String name, String logo, String intro);
33 |
34 | /**
35 | * 获取店铺基础信息
36 | *
37 | * https://open.youzan.com/api/oauthentry/youzan.shop/3.0.0/get
38 | *
39 | * @param id 店铺编号
40 | * @return 店铺基础信息
41 | */
42 | YouzanShopGetResult get(Integer id);
43 |
44 | /**
45 | * 获取店铺基本信息
46 | *
47 | * https://www.youzanyun.com/apilist/detail/group_shop/shop/youzan.shop.basic.get
48 | *
49 | * @param id 店铺编号
50 | * @return 获取店铺基本信息。相比 {@link #get(Integer)} 接口,多了 physical_url 和 cert_type 返回值
51 | */
52 | YouzanShopBasicGetResult getBasic(Integer id);
53 |
54 | /**
55 | * 获取店铺状态信息
56 | *
57 | * https://www.youzanyun.com/apilist/detail/group_shop/shop/youzan.shop.status.get
58 | *
59 | * @param id 店铺编号
60 | * @param fields 需要返回的店铺状态信息对象字段
61 | * @return 店铺状态信息
62 | */
63 | YouzanShopStatusGetResult.AccountShopStatus getStatus(Integer id, String[] fields);
64 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/snapshot/entity/ItemSnapshot.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.snapshot.entity;
2 |
3 | import java.util.Date;
4 |
5 | /**
6 | * 商品快照,对应 {@link cn.iocoder.doraemon.itemgroup.item.entity.Item} 实体
7 | */
8 | public class ItemSnapshot {
9 |
10 | /**
11 | * 快照编号
12 | */
13 | private String id;
14 | /**
15 | * 商品编号 {@link cn.iocoder.doraemon.itemgroup.item.entity.Item#id}
16 | */
17 | private Integer itemId;
18 | private String alias;
19 | /**
20 | * 是否当前商品正在使用的快照。
21 | */
22 | private Boolean isNewest;
23 | /**
24 | * 快照时间
25 | */
26 | private Date createTime;
27 |
28 | // ========== 基本信息 BEGIN ==========
29 |
30 | private String title;
31 | private String summary;
32 | private Integer cid;
33 | private String picURLs;
34 | private Integer itemType;
35 | private Integer goodsType;
36 |
37 | // ========== 基本信息 END ==========
38 |
39 | // ========== 价格库存 BEGIN ==========
40 |
41 | private Integer price;
42 | private Double itemWeight;
43 | private String itemNo;
44 | /**
45 | * 总库存
46 | *
47 | * 【不影响 {@link #id}】的计算
48 | */
49 | private Integer quantity;
50 | /**
51 | * 总销量
52 | *
53 | * 【不影响 {@link #id}】的计算
54 | */
55 | private Integer soldNum;
56 | private Integer hideStock;
57 | private Double originPrice;
58 | private Integer joinLevelDiscount;
59 |
60 | // ========== 价格库存 END ==========
61 |
62 | // ========== 运费信息 BEGIN ==========
63 | private Integer postType;
64 | private Integer postFee;
65 | private Integer deliveryTemplateId;
66 | // ========== 运费信息 END ==========
67 |
68 | // ========== 其他信息 BEGIN ==========
69 |
70 | private Boolean isListing;
71 | private Integer order;
72 | private Date autoListingTime;
73 | private Boolean isLock;
74 | private String messages;
75 |
76 | // ========== 其他信息 END ==========
77 |
78 | private Boolean etdStatus;
79 | private Boolean purchaseRightStatus;
80 |
81 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/umpgroup/packagebuy/entity/PackageBuyActivity.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.umpgroup.packagebuy.entity;
2 |
3 | import java.util.Date;
4 | import java.util.List;
5 |
6 | /**
7 | * 优惠套餐活动
8 | */
9 | public class PackageBuyActivity {
10 |
11 | /**
12 | * 商品 VO
13 | */
14 | public static class ItemVO {
15 |
16 | /**
17 | * 商品编号
18 | */
19 | private Integer itemId;
20 | /**
21 | * 商品 SKU 编号数组
22 | */
23 | private List skuIds;
24 |
25 | }
26 |
27 | /**
28 | * 编号,自增唯一
29 | */
30 | private Integer id;
31 | /**
32 | * 店铺编号
33 | */
34 | private Integer shopId;
35 | /**
36 | * 名称
37 | */
38 | private String title;
39 | /**
40 | * 创建时间
41 | */
42 | private Date createTime;
43 | /**
44 | * 更新时间
45 | */
46 | private Date updateTime;
47 | /**
48 | * 状态
49 | *
50 | * 1-未开始
51 | * 2-进行中
52 | * 3-已结束
53 | * 4-已删除
54 | */
55 | private Integer status;
56 | /**
57 | * 结束类型
58 | *
59 | * 1-活动到期
60 | * 2-手动删除
61 | */
62 | private Integer endType;
63 | /**
64 | * 活动到期时间
65 | */
66 | private Date expireTime;
67 | /**
68 | * 删除时间
69 | */
70 | private Date deleteTime;
71 | /**
72 | * 开始时间
73 | */
74 | private Date startTime;
75 | /**
76 | * 结束时间
77 | */
78 | private Date endTime;
79 | /**
80 | * 套餐价格,单位:分
81 | */
82 | private Integer price;
83 | /**
84 | * 商品原价最小值,单位:分
85 | */
86 | private Integer originPriceMin;
87 | /**
88 | * 商品原价最大值,单位:分
89 | */
90 | private Integer originPriceMax;
91 | /**
92 | * 商品数组
93 | *
94 | * JSON 格式,数组,每个元素为 {@link ItemVO}
95 | */
96 | private String items;
97 | /**
98 | * 优惠价格展示
99 | *
100 | * false-买家浏览商品详情页时,不能看到套餐优惠价格
101 | * true-买家浏览商品详情页时,可以看到套餐优惠价格
102 | */
103 | private Boolean isShowPreference;
104 |
105 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/category/ItemTagAPI.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.category;
2 |
3 | import com.youzan.open.sdk.gen.v3_0_0.model.YouzanItemcategoriesTagAddResult;
4 | import com.youzan.open.sdk.gen.v3_0_0.model.YouzanItemcategoriesTaglistSearchResult;
5 | import com.youzan.open.sdk.gen.v3_0_0.model.YouzanItemcategoriesTagsGetResult;
6 |
7 | import java.util.List;
8 |
9 | /**
10 | * 商品分组 API
11 | */
12 | public interface ItemTagAPI {
13 |
14 | // 获得单条商品分组
15 |
16 | /**
17 | * 分页获取商品分组列表
18 | *
19 | * https://www.youzanyun.com/apilist/detail/group_item/item_category/youzan.itemcategories.taglist.search
20 | *
21 | * @param orderBy 排序方式。格式为column:asc/desc,column可选值:created 创建时间
22 | * @param pageNo 页码
23 | * @param pageSize 每页条数
24 | * @return 分组列表
25 | */
26 | YouzanItemcategoriesTaglistSearchResult search(String orderBy, Integer pageNo, Integer pageSize);
27 |
28 | /**
29 | * 根据是否排序查询商品分组列表
30 | *
31 | * https://www.youzanyun.com/apilist/detail/group_item/item_category/youzan.itemcategories.tags.get
32 | *
33 | * @param isSort 是否排序
34 | * @return 分组列表信息
35 | */
36 | List list(Boolean isSort);
37 |
38 | /**
39 | * 新增一个商品分组
40 | *
41 | * https://www.youzanyun.com/apilist/detail/group_item/item_category/youzan.itemcategories.tag.add
42 | *
43 | * @param name 商品分组的名称
44 | * @return 商品分组信息
45 | */
46 | YouzanItemcategoriesTagAddResult add(String name);
47 |
48 | /**
49 | * 更新一个商品分组名
50 | *
51 | * https://www.youzanyun.com/apilist/detail/group_item/item_category/youzan.itemcategories.tag.update
52 | *
53 | * @param tagId 商品分组编号
54 | * @param name 商品分组的名称
55 | * @return 是否成功
56 | */
57 | Boolean update(String tagId, String name);
58 |
59 | /**
60 | * 删除一个商品分组
61 | *
62 | * https://www.youzanyun.com/apilist/detail/group_item/item_category/youzan.itemcategories.tag.delete
63 | *
64 | * @param tagId 商品分组编号
65 | * @return 是否成功
66 | */
67 | Boolean delete(String tagId);
68 |
69 | }
70 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/tradegroup/cart/entity/TradeCartItem.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.tradegroup.cart.entity;
2 |
3 | import java.util.Date;
4 |
5 | /**
6 | * 购物车的商品信息
7 | */
8 | public class TradeCartItem {
9 |
10 | // ========= 基础字段 BEGIN =========
11 |
12 | /**
13 | * 编号,唯一自增。
14 | */
15 | private Integer id;
16 | /**
17 | * 店铺编号
18 | */
19 | private Integer shopId;
20 | /**
21 | * 状态
22 | *
23 | * 1-正常
24 | * 2-主动删除
25 | * 3-下单删除
26 | */
27 | private Integer status;
28 | /**
29 | * 商品放入购物车时间
30 | */
31 | private Date createTime;
32 | /**
33 | * 商品在购物车中的更新时间
34 | */
35 | private Date updateTime;
36 | /**
37 | * 商品在购物车中的删除时间
38 | */
39 | private Date deleteTime;
40 |
41 | // ========= 基础字段 END =========
42 |
43 | // ========= 买家信息 BEGIN =========
44 |
45 | /**
46 | * 买家编号
47 | */
48 | private Integer buyerId;
49 | /**
50 | * 会话 key
51 | */
52 | private String nobody;
53 |
54 | // ========= 买家信息 END =========
55 |
56 | // ========= 商品信息 BEGIN =========
57 |
58 | /**
59 | * 商品编号
60 | */
61 | private Integer itemId;
62 | /**
63 | * 商品 SKU 编号
64 | */
65 | private Integer skuId;
66 | /**
67 | * 商品购买数量
68 | */
69 | private Integer num;
70 | /**
71 | * 交易明细中买家留言的数据结构 {@link cn.iocoder.doraemon.itemgroup.item.entity.Item#messages}
72 | */
73 | private String buyerMessages;
74 |
75 | // ========= 商品信息 END =========
76 |
77 | // ========= 交易信息 BEGIN =========
78 |
79 | /**
80 | * 订单编号
81 | */
82 | private String tid;
83 | /**
84 | * 下单时间
85 | */
86 | private Date buyTime;
87 |
88 | // ========= 交易信息 BEGIN =========
89 |
90 | // ========= 优惠信息 BEGIN =========
91 |
92 | /**
93 | * 商品营销活动编号
94 | */
95 | private Integer activityId;
96 | /**
97 | * 商品营销活动类型
98 | */
99 | private Integer activityType;
100 |
101 | // ========= 优惠信息 END =========
102 |
103 | }
104 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/item/entity/vo/ItemTemplateGoodsListElementVO.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.item.entity.vo;
2 |
3 | /**
4 | * 商品页面模板商品列表元素 VO
5 | */
6 | public class ItemTemplateGoodsListElementVO extends AbstractItemTemplateElementVO {
7 |
8 | /**
9 | * 商品列表元素的选项 VO
10 | */
11 | public static class GoodsTagElementVO extends AbstractItemTemplateElementVO {
12 |
13 | private static final String TYPE = "tag";
14 |
15 | /**
16 | * 商品分组编号
17 | */
18 | private Integer id;
19 | /**
20 | * 商品分组标题
21 | */
22 | private String title;
23 | /**
24 | * 商品分组访问地址
25 | */
26 | private String url;
27 |
28 | // 其他商品分组相关冗余字段
29 | }
30 |
31 | private static final String TYPE = "goods_list";
32 |
33 | /**
34 | * 展示商品分组的商品数量
35 | */
36 | private Integer goodsNumberType;
37 | /**
38 | * 列表样式
39 | *
40 | * 0-大图
41 | * 1-小图
42 | * 2-一大两小
43 | * 3-详细列表
44 | */
45 | private Integer size;
46 | /**
47 | * 商品样式
48 | *
49 | * 0-卡片样式
50 | * 1-瀑布流
51 | * 2-极简样式
52 | * 3-促销
53 | */
54 | private Integer sizeType;
55 | /**
56 | * 是否显示购买按钮
57 | *
58 | * 0-不显示
59 | * 1-显示
60 | */
61 | private Integer buyBtn;
62 | /**
63 | * 显示购买按钮的样式
64 | *
65 | * 1-样式1
66 | * 2-样式2
67 | * 3-样式3
68 | * 4-样式4
69 | */
70 | private Integer buyBtnType;
71 | /**
72 | * 是否显示商品标题
73 | *
74 | * 0-不显示
75 | * 1-显示
76 | */
77 | private Integer title;
78 | /**
79 | * 是否显示商品简介
80 | *
81 | * 0-不显示
82 | * 1-显示
83 | */
84 | private Integer showSubTitle;
85 | /**
86 | * 是否显示商品价格
87 | *
88 | * 0-不显示
89 | * 1-显示
90 | */
91 | private Integer price;
92 | /**
93 | * 商品分组数组
94 | *
95 | * JSON 格式,数组,每个元素为 {@link GoodsTagElementVO}
96 | */
97 | private String goods;
98 |
99 | // private Integer showWishBtn; 0 暂时没找到对应的选项
100 | //
101 | // private Integer wishBtnType; 1 暂时没找到对应的选项
102 |
103 |
104 | }
105 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/scrmgroup/customer/ScrmCustomerAPI.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.scrmgroup.customer;
2 |
3 | import com.youzan.open.sdk.gen.v3_0_0.model.YouzanUserBasicGetResult;
4 | import com.youzan.open.sdk.gen.v3_1_0.model.YouzanScrmCustomerGetResult;
5 |
6 | public interface ScrmCustomerAPI {
7 |
8 | class Account {
9 | /**
10 | * 帐号ID
11 | */
12 | private String accountId;
13 | /**
14 | * 帐号类型。目前支持以下选项(只支持传一种):
15 | *
16 | * FansID:自有粉丝ID
17 | * Mobile:手机号
18 | * YouZanAccount:有赞账号
19 | *
20 | * 本质上,Mobile = YouZanAccount 等价
21 | */
22 | private String accountType;
23 | }
24 |
25 | /**
26 | * 获取用户详情
27 | *
28 | * https://www.youzanyun.com/apilist/detail/group_scrm/user/youzan.scrm.customer.get
29 | *
30 | * @param account 用户帐号信息
31 | * @return 客户详情
32 | */
33 | YouzanScrmCustomerGetResult get(Account account);
34 |
35 | /**
36 | * 获取用户简要信息
37 | *
38 | * https://www.youzanyun.com/apilist/detail/group_scrm/user/youzan.user.basic.get
39 | *
40 | * TODO:参数,等待开发完成,提供 Demo
41 | *
42 | * @return 用户简要信息
43 | */
44 | YouzanUserBasicGetResult get();
45 |
46 | /**
47 | * 客户创建接口
48 | *
49 | * https://www.youzanyun.com/apilist/detail/group_scrm/user/youzan.scrm.customer.create
50 | *
51 | * @param mobile 手机号
52 | * @param customerCreate 创建客户所需信息 JSON {
53 | * birthday: // 生日
54 | * gender: // 性别
55 | * name: // 姓名
56 | * contact_address: // 地址 JSON 结构
57 | * }
58 | * @return 用户帐号信息
59 | */
60 | Account create(String mobile, String customerCreate);
61 |
62 | /**
63 | * 客户更新接口
64 | *
65 | * @param account 用户帐号信息
66 | * @param customerUpdate JSON {
67 | * birthday: // 生日
68 | * gender: // 性别
69 | * name: // 姓名
70 | * contact_address: // 地址 JSON 结构
71 | * }
72 | * @return 是否更新成功
73 | */
74 | Boolean update(Account account, String customerUpdate);
75 |
76 | }
77 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/item/entity/ItemTemplate.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.item.entity;
2 |
3 | import cn.iocoder.doraemon.itemgroup.item.entity.vo.AbstractItemTemplateElementVO;
4 |
5 | import java.util.Date;
6 |
7 | /**
8 | * 商品页面模板
9 | *
10 | * 如何使用商品页模版:https://help.youzan.com/qa#/menu/2111/detail/859?_k=w4e8zz
11 | */
12 | public class ItemTemplate {
13 |
14 | /**
15 | * 配置元素 VO
16 | */
17 | public static class ConfigElementVO extends AbstractItemTemplateElementVO {
18 |
19 | private static final String TYPE = "config";
20 |
21 | /**
22 | * 标题
23 | */
24 | private String title;
25 | /**
26 | * 模板样式
27 | *
28 | * 0-普通版
29 | * 1-普通简洁版
30 | */
31 | private Integer templateStyle;
32 |
33 | }
34 |
35 | /**
36 | * 商品详情区元素 VO
37 | */
38 | public static class GoodsTemplateSplitElementVO extends AbstractItemTemplateElementVO {
39 |
40 | private static final String TYPE = "goods_template_split";
41 |
42 | }
43 |
44 | /**
45 | * 编号 —— 普通版(内置)
46 | */
47 | private static final Integer ID_STYLE_1 = - 1;
48 | /**
49 | * 编号 —— 普通简洁版(内置)
50 | */
51 | private static final Integer ID_SYTLE_2 = -2;
52 |
53 | /**
54 | * 模板编号
55 | */
56 | private Integer id;
57 | /**
58 | * 别名
59 | *
60 | * 系统生成,作为唯一标识。例如,2fpa62tbmsl9h
61 | */
62 | private String alias;
63 | /**
64 | * 店铺编号
65 | */
66 | private Integer shopId;
67 | /**
68 | * 标题
69 | */
70 | private String title;
71 | /**
72 | * 是否展示
73 | */
74 | private Boolean isDisplay;
75 | /**
76 | * 状态
77 | *
78 | * 1-正常
79 | * 2-删除
80 | */
81 | private Integer status;
82 | /**
83 | * 模板元素数组
84 | *
85 | * JSON 格式,数组,每个元素为 {@link cn.iocoder.doraemon.itemgroup.item.entity.vo.AbstractItemTemplateElementVO} 的实现类字符串
86 | */
87 | private String data;
88 | /**
89 | * 添加时间
90 | */
91 | private Date addTime;
92 | /**
93 | * 最后更新时间
94 | */
95 | private Date updateTime;
96 | /**
97 | * 删除时间
98 | */
99 | private Date deleteTime;
100 |
101 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/tradegroup/delivery/entity/TradeDeliveryExpressTemplate.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.tradegroup.delivery.entity;
2 |
3 | import java.util.Date;
4 | import java.util.List;
5 |
6 | /**
7 | * 交易发货快递运费模板
8 | */
9 | public class TradeDeliveryExpressTemplate {
10 |
11 | /**
12 | * 运费规范
13 | */
14 | public static class ValueRule {
15 |
16 | /**
17 | * 地区编号数组
18 | */
19 | private List regions;
20 | /**
21 | * 首件数量,单位根据 {@link #valuationType}
22 | */
23 | private Integer firstAmount;
24 | /**
25 | * 首件运费,单位:分
26 | */
27 | private Integer firstFee;
28 | /**
29 | * 续件数量,单位根据 {@link #valuationType}
30 | */
31 | private Integer additionalAmount;
32 | /**
33 | * 续件运费,单位:分
34 | */
35 | private Integer additionalFee;
36 |
37 | }
38 |
39 | /**
40 | * 模板编号
41 | */
42 | private Integer id;
43 | /**
44 | * 店铺编号
45 | */
46 | private Integer shopId;
47 | /**
48 | * 模板名称
49 | */
50 | private String name;
51 | /**
52 | * 状态
53 | *
54 | * 1-正常
55 | * 2-删除
56 | */
57 | private Integer status;
58 | /**
59 | * 当前使用次数
60 | *
61 | * 当使用次数大于零,不能删除
62 | */
63 | private Integer useCount;
64 | /**
65 | * 付费类型
66 | *
67 | * 1-买家付费
68 | * 2-卖家付费
69 | */
70 | private Integer payType;
71 | /**
72 | * 是否包邮
73 | *
74 | * 0-否
75 | * 1-是
76 | * 2-部分
77 | */
78 | private Integer freeType;
79 | /**
80 | * 复制于哪个模板的编号
81 | */
82 | private Integer copyOfTemplateId;
83 | /**
84 | * 计算类型
85 | *
86 | * 1-按件
87 | * 2-按重量
88 | * 3-按体积
89 | */
90 | private Integer valuationType;
91 | /**
92 | * 运费规则数组
93 | *
94 | * 使用 JSON 将 {@link ValueRule}数组 格式化成字符串
95 | */
96 | private String valuationRules;
97 | /**
98 | * 创建时间
99 | */
100 | private Date createTime;
101 | /**
102 | * 更新时间
103 | */
104 | private Date updateTime;
105 | /**
106 | * 删除时间
107 | */
108 | private Integer deleteTime;
109 |
110 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/item/entity/vo/ItemTemplateImageAdElementVO.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.item.entity.vo;
2 |
3 | /**
4 | * 商品页面模板图片广告元素 VO
5 | */
6 | public class ItemTemplateImageAdElementVO extends AbstractItemTemplateElementVO {
7 |
8 | /**
9 | * 商品页面模板图片广告元素的选项 VO
10 | */
11 | public static class SelectionElementVO extends AbstractItemTemplateElementVO {
12 |
13 | private static final String TYPE = "image_ad_selection";
14 |
15 | // === 图片 ===
16 | /**
17 | * 图片编号
18 | */
19 | private Integer imageId;
20 | /**
21 | * 图片地址
22 | */
23 | private String imageURL;
24 | /**
25 | * 图片缩略地址
26 | */
27 | private String imageThumbURL;
28 | /**
29 | * 图片高度
30 | */
31 | private Integer imageWidth;
32 | /**
33 | * 图片宽度
34 | */
35 | private Integer imageHeight;
36 |
37 | // === 标题 ===
38 | /**
39 | * 标题
40 | */
41 | private String title;
42 |
43 | // === 链接 ===
44 | /**
45 | * 链接类型
46 | */
47 | private String linkType;
48 | /**
49 | * 链接地址
50 | */
51 | private String linkURL;
52 | /**
53 | * 链接标题
54 | *
55 | * 例如链接类型为 goods ,对应商品标题
56 | */
57 | private String linkTitle;
58 | /**
59 | * 链接编号
60 | *
61 | * 例如链接类型为 goods ,对应商品编号
62 | */
63 | private String linkId;
64 | /**
65 | * 链接别名
66 | *
67 | * 例如链接类型为 goods ,对应商品别名
68 | */
69 | private String alias;
70 |
71 | }
72 |
73 | private static final String TYPE = "image_ad";
74 |
75 | /**
76 | * 显示方式
77 | *
78 | * 0-折叠轮播
79 | * 1-分开显示
80 | */
81 | private Integer showMethod;
82 | /**
83 | * 显示大小
84 | *
85 | * 0-大图
86 | * 1-小图
87 | */
88 | private Integer size;
89 | /**
90 | * 元素高度
91 | */
92 | private Integer height;
93 | /**
94 | * 选项元素数组
95 | *
96 | * JSON 格式,数组,每个元素为 {@link SelectionElementVO}
97 | */
98 | private String subEntrys;
99 |
100 | }
101 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/scrmgroup/cards/entity/SCRMCard.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.scrmgroup.cards.entity;
2 |
3 | import java.util.Date;
4 |
5 | /**
6 | * 会员卡
7 | */
8 | public class SCRMCard {
9 |
10 | /**
11 | * 商家会员卡的唯一标识
12 | *
13 | * 例如,https://kdt.im/-28bKh
14 | */
15 | private String alias;
16 | /**
17 | * 会员卡名,卡名不允许重复,最大字符:9
18 | */
19 | private String name;
20 | /**
21 | * 会员卡状态
22 | *
23 | * 1:正常;
24 | * 2:已禁用;
25 | * 3:已删除
26 | */
27 | private Integer status;
28 | /**
29 | * 发卡链接
30 | */
31 | private String url;
32 | /**
33 | * 激活方式
34 | *
35 | * 0:不需要激活;
36 | * 1:仅需手机激活;
37 | * 2:手机+填写资料
38 | */
39 | private Integer activateMode;
40 | /**
41 | * 卡的类型
42 | *
43 | * 1:无门槛卡, (默认值)
44 | * 2:规则卡;
45 | */
46 | private Integer type;
47 | /**
48 | * 规则卡的等级,当card_type为2时必填
49 | */
50 | private Integer level;
51 | /**
52 | * 卡背景颜色
53 | */
54 | private String colorCode;
55 | /**
56 | * 使用须知
57 | */
58 | private String description;
59 |
60 | // todo 芋艿,grant_condition
61 | // todo 芋艿,rights CardRight[]
62 |
63 | /**
64 | * 是否允许微信端分享 ,默认允许
65 | */
66 | private Boolean isAllowShare;
67 | /**
68 | * 客服电话
69 | */
70 | private String servicePhone;
71 | /**
72 | * 微信卡包的同步设置范围选择:0-3,
73 | *
74 | * 0:不同步;
75 | * 1:基于卡号核销;
76 | * 2:基于卡号和条形码核销;
77 | * 3:基于卡号和二维码核销
78 | */
79 | private Integer syncWeixinMode;
80 | /**
81 | * 同步微信卡状态,
82 | *
83 | * 1:不同步;
84 | * 2:审核中;
85 | * 3:通过;
86 | * 4:失败
87 | */
88 | private Integer syncWeixinStatus;
89 | /**
90 | * 生效方式类型,
91 | *
92 | * 1:从领取开始无期限;
93 | * 2:从固定时刻开始,到固定时刻结束;
94 | * 3:从领取开始,持续一段时长(termDays)
95 | */
96 | private Integer termType;
97 | /**
98 | * 生效持续天数,term_type为3时必传
99 | */
100 | private Integer termDays;
101 | /**
102 | * 生效开始时间
103 | */
104 | private Date termStartTime;
105 | /***
106 | * 生效结束时间
107 | */
108 | private Date termEndTime;
109 | /**
110 | * 失效后,默认转变的会员卡,默认不转变
111 | */
112 | // todo 芋艿,干啥的
113 | private String termToCardAlias;
114 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/umpgroup/coupon/entity/Coupon.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.umpgroup.coupon.entity;
2 |
3 | import java.util.Date;
4 |
5 | public class Coupon {
6 |
7 | // ========== 基本信息 BEGIN ==========
8 | /**
9 | * 卡券ID
10 | */
11 | private Integer id;
12 | /**
13 | * 店铺编号
14 | */
15 | private Integer shopId;
16 | /**
17 | * 类型
18 | *
19 | * 1-优惠劵
20 | * 2-优惠码
21 | */
22 | private Integer type;
23 | /**
24 | * 优惠劵(码)分组编号,{@link CouponGroup#id}
25 | */
26 | private Integer couponGroupId;
27 | /**
28 | * 核销码
29 | */
30 | private String verifyCode;
31 | /**
32 | * 创建时间
33 | */
34 | private Date createTime;
35 | /**
36 | * 优惠码状态
37 | *
38 | * 1-生效中
39 | * 2-已失效
40 | * 3-已过期
41 | * 4-已删除
42 | * 5-已使用
43 | */
44 | private Integer status;
45 |
46 | // ========== 基本信息 END ==========
47 |
48 | // ========== 领取情况 BEGIN ==========
49 | /**
50 | * 是否领取
51 | */
52 | private Boolean isTake;
53 | /**
54 | * 领取用户编号
55 | */
56 | private Integer userId;
57 | /**
58 | * 领取时间
59 | */
60 | private Date takeTime;
61 | // ========== 领取情况 END ==========
62 |
63 | // ========== 使用规则 BEGIN ==========
64 | /**
65 | * 固定日期-生效开始时间
66 | */
67 | private Date validStartTime;
68 | /**
69 | * 固定日期-生效结束时间
70 | */
71 | private Date validEndTime;
72 | // ========== 使用规则 END ==========
73 |
74 | // ========== 使用效果 BEGIN ==========
75 | /**
76 | * 优惠类型
77 | *
78 | * 1-代金卷
79 | * 2-折扣卷 【优惠劵独有】
80 | */
81 | private Integer preferentialType;
82 | /**
83 | * 折扣
84 | */
85 | private Double discount;
86 | /**
87 | * 优惠金额,单位:分。
88 | */
89 | private Integer value;
90 | // ========== 使用效果 END ==========
91 |
92 | // ========== 使用情况 BEGIN ==========
93 | /**
94 | * 是否使用
95 | */
96 | private Boolean isUsed;
97 | /**
98 | * 使用订单号
99 | */
100 | private String usedInTid;
101 | /**
102 | * 订单中优惠面值,单位:分
103 | */
104 | private Integer usedValue;
105 | /**
106 | * 使用时间
107 | */
108 | private Date usedTime;
109 | // ========== 使用情况 END ==========
110 |
111 | }
112 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/item/entity/vo/ItemTemplateShowCaseElementVO.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.item.entity.vo;
2 |
3 | /**
4 | * 商品页面模板橱窗元素 VO
5 | */
6 | public class ItemTemplateShowCaseElementVO {
7 |
8 | /**
9 | * 商品页面模板图片广告元素的选项 VO
10 | */
11 | public static class SelectionElementVO extends AbstractItemTemplateElementVO {
12 |
13 | private static final String TYPE = "image_ad_selection";
14 |
15 | // === 图片 ===
16 | /**
17 | * 图片编号
18 | */
19 | private Integer imageId;
20 | /**
21 | * 图片地址
22 | */
23 | private String imageURL;
24 | /**
25 | * 图片缩略地址
26 | */
27 | private String imageThumbURL;
28 | /**
29 | * 图片高度
30 | */
31 | private Integer imageWidth;
32 | /**
33 | * 图片宽度
34 | */
35 | private Integer imageHeight;
36 |
37 | // === 标题 ===
38 | /**
39 | * 标题
40 | */
41 | private String title;
42 |
43 | // === 链接 ===
44 | /**
45 | * 链接类型
46 | */
47 | private String linkType;
48 | /**
49 | * 链接地址
50 | */
51 | private String linkURL;
52 | /**
53 | * 链接标题
54 | *
55 | * 例如链接类型为 goods ,对应商品标题
56 | */
57 | private String linkTitle;
58 | /**
59 | * 链接编号
60 | *
61 | * 例如链接类型为 goods ,对应商品编号
62 | */
63 | private String linkId;
64 | /**
65 | * 链接别名
66 | *
67 | * 例如链接类型为 goods ,对应商品别名
68 | */
69 | private String alias;
70 |
71 | }
72 |
73 | private static final String TYPE = "showcase";
74 |
75 | /**
76 | * 橱窗标题名
77 | */
78 | private String title;
79 | /**
80 | * 显示方式
81 | *
82 | * 0-保留
83 | * 1-三列
84 | */
85 | private Integer mode;
86 | /**
87 | * 图片间隙
88 | *
89 | * 0-保留
90 | * 1-消除
91 | */
92 | private Integer withoutSpace;
93 | /**
94 | * 内容区标题
95 | */
96 | private String bodyTitle;
97 | /**
98 | * 内容区说明
99 | */
100 | private String bodyDesc;
101 | /**
102 | * 选项元素数组
103 | *
104 | * JSON 格式,数组,每个元素为 {@link SelectionElementVO}
105 | */
106 | private String subEntrys;
107 |
108 | }
109 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/scrmgroup/cards/SCRMCardCustomerAPI.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.scrmgroup.cards;
2 |
3 | import com.youzan.open.sdk.gen.v3_0_0.model.YouzanScrmCustomerCardGrantResult;
4 | import com.youzan.open.sdk.gen.v3_0_0.model.YouzanScrmCustomerInfoGetResult;
5 | import com.youzan.open.sdk.gen.v3_0_0.model.YouzanScrmCustomerSearchResult;
6 |
7 | public interface SCRMCardCustomerAPI {
8 |
9 | /**
10 | * 给用户发放会员卡
11 | *
12 | * https://www.youzanyun.com/apilist/detail/group_scrm/crm_advanced/youzan.scrm.customer.card.grant
13 | *
14 | * @param fansType 粉丝类型(自有粉丝: fans_type = 1)
15 | * @param fansId 【三选一】粉丝ID,与 fans_type 同时出现,如果没有写0 mobile/fans_id/open_user_id 三选一传入
16 | * @param openUserId 【三选一】三方用户ID mobile/fans_id/open_user_id 三选一传入
17 | * @param mobile 【三选一】手机号,如果没有则写 0 mobile/fans_id/open_user_id 三选一传入
18 | * @param cardAlias 商家会员卡的唯一标识
19 | * @return 结果 {
20 | * isSuccess: // 是否成功
21 | * cardNo : // 用户会员卡号
22 | * }
23 | */
24 | YouzanScrmCustomerCardGrantResult grant(Integer fansType, Integer fansId, String openUserId, String mobile, String cardAlias);
25 |
26 | /**
27 | * 删除用户的会员卡
28 | *
29 | * https://www.youzanyun.com/apilist/detail/group_scrm/crm_advanced/youzan.scrm.customer.card.delete
30 | *
31 | * @param fansType 粉丝类型(自有粉丝: fans_type = 1)
32 | * @param fansId 【三选一】粉丝ID,与 fans_type 同时出现,如果没有写0 mobile/fans_id/open_user_id 三选一传入
33 | * @param openUserId 【三选一】三方用户ID mobile/fans_id/open_user_id 三选一传入
34 | * @param mobile 【三选一】手机号,如果没有则写 0 mobile/fans_id/open_user_id 三选一传入
35 | * @param cardNo 用户会员卡号,没有则写'',与card_alias任选其一,优先级高于card_alias
36 | * @param cardAlias 商家会员卡唯一标识,没有则写'',与card_no任选其一,优先级低于card_no
37 | * @return 是否成功
38 | */
39 | Boolean delete(Integer fansType, Integer fansId, String openUserId, String mobile, String cardNo, String cardAlias);
40 |
41 | /**
42 | * 通过用户会员卡号获取会员信息
43 | *
44 | * https://www.youzanyun.com/apilist/detail/group_scrm/crm_advanced/youzan.scrm.customer.info.get
45 | *
46 | * @param id 用户会员卡卡号
47 | * @return 用户会员卡信息
48 | */
49 | YouzanScrmCustomerInfoGetResult get(String id);
50 |
51 | /**
52 | * 会员卡对应的会员列表
53 | *
54 | * https://www.youzanyun.com/apilist/detail/group_scrm/crm_advanced/youzan.scrm.customer.search
55 | *
56 | * @param cardAlias 商家会员卡的唯一标识
57 | * @param page 每页默认20条,最大支持50页
58 | * @return 会员列表
59 | */
60 | YouzanScrmCustomerSearchResult search(String cardAlias, Integer page);
61 |
62 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/scrmgroup/cards/SCRMCardAPI.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.scrmgroup.cards;
2 |
3 | import com.youzan.open.sdk.gen.v3_0_0.model.*;
4 |
5 | public interface SCRMCardAPI {
6 |
7 | /**
8 | * 创建会员卡
9 | *
10 | * https://www.youzanyun.com/apilist/detail/group_scrm/crm_advanced/youzan.scrm.card.create
11 | *
12 | * @param cardCreate 创建会员卡所需的会员卡信息 https://www.youzanyun.com/apilist/structparam/request/CardCreate
13 | * @return 会员卡信息
14 | */
15 | YouzanScrmCardCreateResult create(YouzanScrmCardCreateParams cardCreate);
16 |
17 | /**
18 | * 更新会员卡
19 | *
20 | * https://www.youzanyun.com/apilist/detail/group_scrm/crm_advanced/youzan.scrm.card.update
21 | *
22 | * @param cardUpdate 编辑会员卡所需的会员卡信息 https://www.youzanyun.com/apilist/structparam/request/CardUpdate
23 | * @return 操作结果
24 | */
25 | Boolean update(YouzanScrmCardUpdateParams cardUpdate);
26 |
27 | /**
28 | * 商家删除会员卡
29 | *
30 | * https://www.youzanyun.com/apilist/detail/group_scrm/crm_advanced/youzan.scrm.card.delete
31 | *
32 | * @param alias 商家会员卡的唯一标识
33 | * @return 是否成功
34 | */
35 | Boolean delete(String alias);
36 |
37 | /**
38 | * 商家禁用会员卡
39 | *
40 | * https://www.youzanyun.com/apilist/detail/group_scrm/crm_advanced/youzan.scrm.card.disable
41 | *
42 | * @param alias 商家会员卡的唯一标识
43 | * @return 是否成功
44 | */
45 | Boolean disable(String alias);
46 |
47 | /**
48 | * 商家启用会员卡
49 | *
50 | * https://www.youzanyun.com/apilist/detail/group_scrm/crm_advanced/youzan.scrm.card.enable
51 | *
52 | * @param alias 商家会员卡的唯一标识
53 | * @return 是否成功
54 | */
55 | Boolean enable(String alias);
56 |
57 | /**
58 | * 获取会员卡链接
59 | *
60 | * https://www.youzanyun.com/apilist/detail/group_scrm/crm_advanced/youzan.scrm.card.url.get
61 | *
62 | * @param alias 商家会员卡的唯一标识
63 | * @return 会员卡发卡链接
64 | */
65 | String getURL(String alias);
66 |
67 | /**
68 | * 通过卡id获取卡详情
69 | *
70 | * https://www.youzanyun.com/apilist/detail/group_scrm/crm_advanced/youzan.scrm.card.get
71 | *
72 | * @param alias 商家会员卡的唯一标识
73 | * @return 会员卡信息
74 | */
75 | YouzanScrmCardGetResult get(String alias);
76 |
77 | /**
78 | * 获取商家会员卡列表
79 | *
80 | * https://www.youzanyun.com/apilist/detail/group_scrm/crm_advanced/youzan.scrm.card.list
81 | *
82 | * @param page 页码
83 | * @return 商家会员卡列表
84 | */
85 | YouzanScrmCardListResult list(Integer page);
86 |
87 | // todo 芋艿,到底要不要完整名,字段
88 | }
89 |
90 |
91 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/umpgroup/coupon/CouponConsumeAPI.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.umpgroup.coupon;
2 |
3 | import com.youzan.open.sdk.gen.v3_0_0.model.YouzanUmpCouponConsumeFetchlogsGetResult;
4 | import com.youzan.open.sdk.gen.v3_0_0.model.YouzanUmpCouponConsumeGetResult;
5 | import com.youzan.open.sdk.gen.v3_0_0.model.YouzanUmpCouponConsumeVerifylogsGetResult;
6 | import com.youzan.open.sdk.gen.v3_0_0.model.YouzanUmpCouponTakeResult;
7 |
8 | import java.util.Date;
9 |
10 | /**
11 | * 优惠劵(码)使用 API
12 | */
13 | public interface CouponConsumeAPI {
14 |
15 | /**
16 | * 发放优惠券优惠码
17 | *
18 | * https://www.youzanyun.com/apilist/detail/group_ump/coupon/youzan.ump.coupon.take
19 | *
20 | * @param fansType 粉丝类型(自有粉丝: fans_type = 1)
21 | * @param fansId 【三选一】粉丝ID,与 fans_type 同时出现,如果没有写0 mobile/fans_id/open_user_id 三选一传入
22 | * @param openUserId 【三选一】三方用户ID mobile/fans_id/open_user_id 三选一传入
23 | * @param mobile 【三选一】手机号,如果没有则写 0 mobile/fans_id/open_user_id 三选一传入
24 | * @param id 优惠券(码)组编号
25 | * @return 发放优惠劵结果 {@link cn.iocoder.doraemon.umpgroup.coupon.entity.Coupon}
26 | */
27 | YouzanUmpCouponTakeResult take(Integer fansType, Integer fansId, String openUserId, String mobile, Integer id);
28 |
29 | /**
30 | * 对优惠券/优惠码进行核销操作
31 | *
32 | * https://www.youzanyun.com/apilist/detail/group_ump/coupon/youzan.ump.coupon.consume.verify
33 | *
34 | * @param code 买家端的优惠券/优惠码核销码
35 | * @return 是否成功
36 | */
37 | Boolean verify(String code);
38 |
39 | /**
40 | * 根据核销码获取优惠券/优惠码
41 | *
42 | * https://www.youzanyun.com/apilist/detail/group_ump/coupon/youzan.ump.coupon.consume.get
43 | *
44 | * @param code 买家端的优惠券/优惠码核销码
45 | * @return 核销结构 {@link cn.iocoder.doraemon.umpgroup.coupon.entity.Coupon}
46 | */
47 | YouzanUmpCouponConsumeGetResult get(String code);
48 |
49 | /**
50 | * 获取优惠券/优惠码领取记录
51 | *
52 | * https://www.youzanyun.com/apilist/detail/group_ump/coupon/youzan.ump.coupon.consume.fetchlogs.get
53 | *
54 | * @param groupId 优惠劵(码)分组编号
55 | * @param startTakeTime 领取时间(开始时间)
56 | * @param endTakeTime 领取时间(结束时间)
57 | * @param pageNo 页码
58 | * @param pageSize 每页数量
59 | * @return 领取记录分页 + 领取总数
60 | */
61 | YouzanUmpCouponConsumeFetchlogsGetResult getFetchLogs(Integer groupId, Date startTakeTime, Date endTakeTime,
62 | Integer pageNo, Integer pageSize);
63 |
64 | /**
65 | * 获取优惠券/优惠码核销记录
66 | *
67 | * https://www.youzanyun.com/apilist/detail/group_ump/coupon/youzan.ump.coupon.consume.verifylogs.get
68 | *
69 | * @param type 类型(优惠劵/优惠码)
70 | * @param pageNo 页码
71 | * @param pageSize 每页数量
72 | * @return 验证记录分页
73 | */
74 | YouzanUmpCouponConsumeVerifylogsGetResult getVerifyLogs(Integer type, Integer pageNo, Integer pageSize);
75 |
76 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/tradegroup/delivery/entity/TradeDeliverySelfFetchAddress.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.tradegroup.delivery.entity;
2 |
3 | import java.util.Date;
4 | import java.util.List;
5 |
6 | /**
7 | * 交易买家上门自提点
8 | */
9 | public class TradeDeliverySelfFetchAddress {
10 |
11 | /**
12 | * 时间范围
13 | */
14 | public static class DateRange {
15 |
16 | /**
17 | * 开始时间。
18 | *
19 | * 格式为 HHdd ,例如 0730
20 | */
21 | private Integer openTime;
22 | /**
23 | * 结束时间。
24 | *
25 | * 格式为 HHdd ,例如 2300
26 | */
27 | private Integer closeTime;
28 | /**
29 | * 周几集合
30 | *
31 | * x 为 周x ,例如,1 = 周一 。
32 | */
33 | private List weekdays;
34 |
35 | }
36 |
37 | /**
38 | * 自提点编号
39 | */
40 | private Integer id;
41 | /**
42 | * 店铺编号 {@link cn.iocoder.doraemon.shopgroup.shop.entity.Shop#id}
43 | */
44 | private Integer shopId;
45 | /**
46 | * 自提点名
47 | */
48 | private String name;
49 | /**
50 | * 商家推荐(描述)
51 | */
52 | private String description;
53 | /**
54 | * 自提点照片数组,以逗号分隔。
55 | */
56 | private String images;
57 | /**
58 | * 联系电话 - 区号
59 | */
60 | private String phone1;
61 | /**
62 | * 联系电话 - 电话或手机
63 | */
64 | private String phone2;
65 | /**
66 | * 状态
67 | *
68 | * 1-正常
69 | * 2-删除
70 | */
71 | private Integer status;
72 | /**
73 | * 创建时间
74 | */
75 | private Date createTime;
76 | /**
77 | * 更新时间
78 | */
79 | private Date updateTime;
80 | /**
81 | * 删除时间
82 | */
83 | private Date deleteTime;
84 |
85 | // ========== 地点相关 BEGIN ==========
86 | /**
87 | * 地点编号 {@link cn.iocoder.doraemon.commongroup.entity.CommonRegion#id}
88 | *
89 | * 最细维度
90 | */
91 | private Integer regionId;
92 | /**
93 | * 地址
94 | */
95 | private String address;
96 | /**
97 | * 经度
98 | */
99 | private Double lng;
100 | /**
101 | * 纬度
102 | */
103 | private Double lat;
104 |
105 | // ========== 地点相关 END ==========
106 |
107 | /**
108 | * 是否作为门店接待
109 | */
110 | private Boolean isStore;
111 | /**
112 | * 接待时间集合
113 | *
114 | * 使用 JSON 将 {@link DateRange}数组 格式化成字符串
115 | */
116 | private String businessHoursAdvanceds;
117 | /**
118 | * 是否需要买家选择自提时间
119 | *
120 | * true 勾选后,买家下单选择上门自提,必须选择自提时间,卖家需要按约定时间备货。
121 | * false 不勾选,将会提示买家尽快到店自提
122 | */
123 | private Boolean isOptionalSelfFetchTime;
124 | /**
125 | * 自提时间集合
126 | *
127 | * 使用 JSON 将 {@link DateRange}数组 格式化成字符串
128 | */
129 | private String offlineBusinessHours;
130 |
131 | }
132 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/tradegroup/refund/entity/TradeRefund.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.tradegroup.refund.entity;
2 |
3 | import java.util.Date;
4 |
5 | /**
6 | * 交易退款维权
7 | */
8 | public class TradeRefund {
9 |
10 | /**
11 | * 编号
12 | *
13 | * 唯一
14 | */
15 | private String id;
16 | /**
17 | * 店铺编号 {@link cn.iocoder.doraemon.shopgroup.shop.entity.Shop#id}
18 | */
19 | private Integer shopId;
20 | /**
21 | * 交易编号 {@link cn.iocoder.doraemon.tradegroup.trade.entity.Trade#id}
22 | */
23 | private String tid;
24 | /**
25 | * 交易明细编号 {@link cn.iocoder.doraemon.tradegroup.trade.entity.TradeOrder#id}
26 | */
27 | private String oid;
28 | /**
29 | * 商品编号 {@link cn.iocoder.doraemon.tradegroup.trade.entity.TradeOrder#itemId}
30 | */
31 | private Integer itemId;
32 | /**
33 | * 退款状态
34 | *
35 | * 1 - WAIT_SELLER_AGREE - 买家已经申请退款,等待卖家同意
36 | * 2 - WAIT_BUYER_RETURN_GOODS - 卖家已经同意退款,等待买家退货
37 | * 3 - WAIT_SELLER_CONFIRM_GOODS - 买家已经退货,等待卖家确认收货
38 | * 4 - SELLER_REFUSE_BUYER - 卖家拒绝退款
39 | * 5 - SELLER_REFUSE_CONFIRM_GOODS - 卖家不同意,未收到货
40 | * 10 - CLOSED - 退款关闭
41 | * 20 - SUCCESS - 退款成功
42 | */
43 | private Integer status;
44 | /**
45 | * 客满介入状态
46 | *
47 | * 1 - 客满未介入
48 | * 2 - 客满介入中
49 | */
50 | private Integer csStatus;
51 | /**
52 | * 是否退货
53 | *
54 | * false - 仅退款
55 | * true - 退货退款
56 | */
57 | private Boolean returnItem;
58 | /**
59 | * 买家退款申请说明
60 | */
61 | private String desc;
62 | /**
63 | * 是否签收货物
64 | *
65 | * false - 否
66 | * true - 是
67 | */
68 | private Boolean signed;
69 | /**
70 | * 仅退款-未收到货申请原因
71 | * 11(质量问题)
72 | * 12(拍错/多拍/不喜欢)
73 | * 3(商品描述不符)
74 | * 14(假货), 15(商家发错货)
75 | * 16(商品破损/少件)
76 | * 17(其他)
77 | * 仅退款-已收到货申
78 | * 51(多买/买错/不想要)
79 | * 52(快递无记录)
80 | * 53(少货/空包裹)
81 | * 54(未按约定时间发货)
82 | * 55(快递一直未送达)
83 | * 56(其他)
84 | * 退货退款-申请原因
85 | * 101(商品破损/少件)
86 | * 102(商家发错货)
87 | * 103(商品描述不符)
88 | * 104(拍错/多拍/不喜欢)
89 | * 105(质量问题)
90 | * 107(其他)
91 | */
92 | private Integer reasonType;
93 | /**
94 | * 申请退款的金额,单位:分。
95 | */
96 | private Integer refundFee;
97 | /**
98 | * 申请退款人的手机号码
99 | */
100 | private String mobile;
101 | /**
102 | * 图片举证数组,以逗号分隔
103 | */
104 | private String images;
105 | /**
106 | * 退款申请时间
107 | */
108 | private Date createTime;
109 | /**
110 | * 退款申请修改时间
111 | */
112 | private Date updateTime;
113 | /**
114 | * 乐观锁版本号
115 | *
116 | * 解决并发修改,防止数据不一致。
117 | */
118 | private Long version;
119 |
120 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/umpgroup/limitdiscount/entity/LimitDiscountActivity.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.umpgroup.limitdiscount.entity;
2 |
3 | import java.util.Date;
4 |
5 | /**
6 | * 限制折扣活动
7 | */
8 | public class LimitDiscountActivity {
9 |
10 | /**
11 | * 商品 VO
12 | */
13 | public static class ItemVO {
14 |
15 | /**
16 | * 商品编号
17 | */
18 | private Integer itemId;
19 | /**
20 | * 打折方式
21 | *
22 | * 2-打折
23 | * 3-减价
24 | */
25 | private Integer discountType;
26 | /**
27 | * 当【打折】时,折扣,百分比。例如:75 折为 75 。
28 | * 当【减价】时,价格,单位:分。例如:8 分为 8 。
29 | */
30 | private Integer discountValue;
31 |
32 | }
33 |
34 | /**
35 | * 编号,自增唯一
36 | */
37 | private Integer id;
38 | /**
39 | * 店铺编号
40 | */
41 | private Integer shopId;
42 | /**
43 | * 名称
44 | */
45 | private String name;
46 | /**
47 | * 描述,2 到 5 字。
48 | */
49 | private String description;
50 | /**
51 | * 创建时间
52 | */
53 | private Date createTime;
54 | /**
55 | * 更新时间
56 | */
57 | private Date updateTime;
58 | /**
59 | * 状态
60 | *
61 | * 1-未开始
62 | * 2-进行中
63 | * 3-已结束
64 | * 4-已删除
65 | */
66 | private Integer status;
67 | /**
68 | * 结束类型
69 | *
70 | * 1-活动到期
71 | * 2-手动删除
72 | * 3-手动失效
73 | */
74 | private Integer endType;
75 | /**
76 | * 活动到期时间
77 | */
78 | private Date expireTime;
79 | /**
80 | * 设置为失效时间
81 | */
82 | private Date invalidTime;
83 | /**
84 | * 删除时间
85 | */
86 | private Date deleteTime;
87 | /**
88 | * 开始时间
89 | */
90 | private Date startTime;
91 | /**
92 | * 结束时间
93 | */
94 | private Date endTime;
95 | /**
96 | * 周期类型
97 | *
98 | * 0-none,无
99 | * 1-daily,每天
100 | * 2-monthly,每月
101 | * 3-weekly,每周
102 | */
103 | private Integer periodType;
104 | /**
105 | * 周期开始时间,例如:0000
106 | *
107 | * 适用:所有周期类型
108 | */
109 | private Integer periodStartTime;
110 | /**
111 | * 周期结束时间,例如:2359
112 | *
113 | * 适用:所有周期类型
114 | */
115 | private Integer periodStartEnd;
116 | /**
117 | * 周期每月几号
118 | *
119 | * 适用:每月
120 | */
121 | private Integer periodMonthDay;
122 | /**
123 | * 每周几集合,通过字节位存储周几
124 | *
125 | * 适用:每周
126 | */
127 | private Integer periodWeekdays;
128 | /**
129 | * 限购设置类型
130 | *
131 | * 0-不限购
132 | * 1-每人每种商品限购件数
133 | * 2-每人每种商品前件数享受折扣
134 | */
135 | private Integer quotaType;
136 | /**
137 | * 限购数量,根据 {@link #quotaType} 限制。
138 | */
139 | private Integer quota;
140 | /**
141 | * 抹零方式
142 | *
143 | * 1-不抹零
144 | * 2-抹去角和分
145 | * 3-抹去分
146 | */
147 | private Integer earseType;
148 | /**
149 | * 商品数组
150 | *
151 | * JSON 格式,数组,每个元素为 {@link ItemVO}
152 | */
153 | private String items;
154 |
155 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/item/entity/vo/ItemTemplateTitleElementVO.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.item.entity.vo;
2 |
3 | import java.util.Date;
4 |
5 | /**
6 | * 商品页面模板标题元素 VO
7 | */
8 | public class ItemTemplateTitleElementVO extends AbstractItemTemplateElementVO {
9 |
10 | /**
11 | * 商品页面模板标题元素的选项 VO
12 | */
13 | public static class SelectionElementVO extends AbstractItemTemplateElementVO {
14 |
15 | private static final String TYPE = "title_nav_selection";
16 |
17 | // === 标题 ===
18 | /**
19 | * 标题
20 | */
21 | private String title;
22 |
23 | // === 链接 ===
24 | /**
25 | * 链接类型
26 | */
27 | private String linkType;
28 | /**
29 | * 链接地址
30 | */
31 | private String linkURL;
32 | /**
33 | * 链接标题
34 | *
35 | * 例如链接类型为 goods ,对应商品标题
36 | */
37 | private String linkTitle;
38 | /**
39 | * 链接编号
40 | *
41 | * 例如链接类型为 goods ,对应商品编号
42 | */
43 | private String linkId;
44 | /**
45 | * 链接别名
46 | *
47 | * 例如链接类型为 goods ,对应商品别名
48 | */
49 | private String alias;
50 |
51 | }
52 |
53 | /**
54 | * wx 链接,当 {@link #wxTitleLinkType} 为其他链接类型时使用
55 | */
56 | public static class WxLinkVO {
57 |
58 | // === 链接 ===
59 | /**
60 | * 链接类型
61 | */
62 | private String linkType;
63 | /**
64 | * 链接地址
65 | */
66 | private String linkURL;
67 | /**
68 | * 链接标题
69 | *
70 | * 例如链接类型为 goods ,对应商品标题
71 | */
72 | private String linkTitle;
73 | /**
74 | * 链接编号
75 | *
76 | * 例如链接类型为 goods ,对应商品编号
77 | */
78 | private String linkId;
79 |
80 | }
81 |
82 | private static final String TYPE = "title";
83 |
84 | /**
85 | * 标题模板
86 | *
87 | * 1-传统样式
88 | * 使用 {@link #subEntrys} 字段
89 | * 2-模仿微信图文页样式
90 | * 使用 "wx_" 前缀的字段们
91 | */
92 | private Integer titleTemplate;
93 | /**
94 | * 标题名
95 | */
96 | private String title;
97 | /**
98 | * 副标题
99 | */
100 | private String subTitile;
101 | /**
102 | * 展示方式
103 | *
104 | * 0-居左显示
105 | * 1-居中显示
106 | * 2-居右显示
107 | */
108 | private Integer showMethod;
109 | /**
110 | * 背景色
111 | */
112 | private String color;
113 | /**
114 | * 选项元素数组
115 | *
116 | * JSON 格式,数组,每个元素为 {@link SelectionElementVO}
117 | */
118 | private String subEntrys;
119 | /**
120 | * wx 作者
121 | */
122 | private String wxTitleAuthor;
123 | /**
124 | * wx 日期
125 | */
126 | private Date wxTitleDate;
127 | /**
128 | * wx 链接标题
129 | */
130 | private String wxTitleLink;
131 | /**
132 | * wx 标题链接类型
133 | *
134 | * 0-引导关注
135 | * 1-其他链接
136 | */
137 | private Integer wxTitleLinkType;
138 | /**
139 | * wx 链接
140 | */
141 | private WxLinkVO wxLink;
142 |
143 | }
144 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/umpgroup/meetreduce/entity/MeetReduceActivity.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.umpgroup.meetreduce.entity;
2 |
3 | import java.util.Date;
4 |
5 | /**
6 | * 满减送活动
7 | */
8 | public class MeetReduceActivity {
9 |
10 | /**
11 | * 优惠 VO
12 | */
13 | public static class PreferentialVO {
14 |
15 | /**
16 | * 满足金额,单位:分
17 | */
18 | private Integer meet;
19 | /**
20 | * 是否减现金,和 {@link #isDiscountRequired} 互斥
21 | */
22 | private Boolean isCashRequired;
23 | /**
24 | * 减现金,单位:分
25 | */
26 | private Integer cash;
27 | /**
28 | * 是否打折,和 {@link #isCashRequired} 互斥
29 | */
30 | private Boolean isDiscountRequired;
31 | /**
32 | * 折扣,百分比。例如:75 折为 75 。
33 | */
34 | private Integer discount;
35 | /**
36 | * 是否包邮
37 | */
38 | private Boolean isPostage;
39 | /**
40 | * 是否送积分
41 | */
42 | private Boolean isScoreRequired;
43 | /**
44 | * 积分
45 | */
46 | private Integer score;
47 | /**
48 | * 是否送优惠劵(码)
49 | */
50 | private Boolean isCouponRequired;
51 | /**
52 | * 优惠劵(码)分组编号
53 | */
54 | private Integer couponGroupId;
55 | /**
56 | * 优惠劵(码)数量
57 | */
58 | private Integer couponNum;
59 | /**
60 | * 是否送赠品
61 | */
62 | private Boolean isPresentRequired;
63 | /**
64 | * 赠品编号
65 | */
66 | private Integer presentId;
67 |
68 | }
69 |
70 | /**
71 | * 编号,自增唯一
72 | */
73 | private Integer id;
74 | /**
75 | * 店铺编号
76 | */
77 | private Integer shopId;
78 | /**
79 | * 名称
80 | */
81 | private String name;
82 | /**
83 | * 创建时间
84 | */
85 | private Date createTime;
86 | /**
87 | * 更新时间
88 | */
89 | private Date updateTime;
90 | /**
91 | * 状态
92 | *
93 | * 1-未开始
94 | * 2-进行中
95 | * 3-已结束
96 | * 4-已删除
97 | */
98 | private Integer status;
99 | /**
100 | * 结束类型
101 | *
102 | * 1-活动到期
103 | * 2-手动删除
104 | * 3-手动失效
105 | */
106 | private Integer endType;
107 | /**
108 | * 活动到期时间
109 | */
110 | private Date expireTime;
111 | /**
112 | * 设置为失效时间
113 | */
114 | private Date invalidTime;
115 | /**
116 | * 删除时间
117 | */
118 | private Date deleteTime;
119 | /**
120 | * 开始时间
121 | */
122 | private Date startTime;
123 | /**
124 | * 结束时间
125 | */
126 | private Date endTime;
127 | /**
128 | * 优惠数组
129 | *
130 | * JSON 格式,数组,每个元素为 {@link PreferentialVO}
131 | */
132 | private String preferentials;
133 | /**
134 | * 可用范围的类型
135 | *
136 | * 1-部分(ALL):全部商品可用
137 | * 2-全部(PART):部分商品可用,或指定商品可用
138 | */
139 | private Integer rangeType;
140 | /**
141 | * 指定可用商品列表,使用逗号分隔商品编号 {@link cn.iocoder.doraemon.itemgroup.item.entity.Item#id}
142 | */
143 | private String rangeValues;
144 |
145 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/tradegroup/cart/TradeCartAPI.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.tradegroup.cart;
2 |
3 | import com.youzan.open.sdk.gen.v3_0_0.model.YouzanTradeCartListResult;
4 |
5 | import java.util.List;
6 |
7 | /**
8 | * 购物车 API
9 | */
10 | public interface TradeCartAPI {
11 |
12 | /**
13 | * 添加商品至购物车
14 | *
15 | * https://www.youzanyun.com/apilist/detail/group_buyer/buyer_cart/youzan.trade.cart.add
16 | *
17 | * @param buyerId 买家编号
18 | * @param nobody 会话 key
19 | * @param shopId 店铺编号
20 | * @param itemId 商品编号
21 | * @param skuId 商品 SKU 编号
22 | * @param num 商品数量
23 | * @param message 购买留言
24 | * @param activityId 商品营销活动编号
25 | * @param activityType 商品营销活动类型
26 | * @param activityAlias TODO 商品活动别名
27 | * @param bizTracePointExt TODO 扩展字段
28 | * @return 是否成功
29 | */
30 | Boolean add(Integer buyerId, String nobody, Integer shopId,
31 | Integer itemId, Integer skuId, Integer num, String message,
32 | Integer activityId, Integer activityType, String activityAlias,
33 | String bizTracePointExt);
34 |
35 | /**
36 | * 购物车更新商品数量
37 | *
38 | * https://www.youzanyun.com/apilist/detail/group_buyer/buyer_cart/youzan.trade.cart.update
39 | *
40 | * @param buyerId 买家编号
41 | * @param nobody 会话 key
42 | * @param shopId 店铺编号
43 | * @param itemId 商品编号
44 | * @param skuId 商品 SKU 编号
45 | * @param num 商品数量
46 | * @return 是否成功
47 | */
48 | Boolean update(Integer buyerId, String nobody, Integer shopId,
49 | Integer itemId, Integer skuId, Integer num);
50 |
51 | /**
52 | * 购物车删除商品
53 | *
54 | * https://www.youzanyun.com/apilist/detail/group_buyer/buyer_cart/youzan.trade.cart.delete
55 | *
56 | * @param buyerId 买家编号
57 | * @param nobody 会话 key
58 | * @param shopId 店铺编号
59 | * @param itemList 商品列表信息 [{
60 | * itemId: // 商品编号
61 | * skuId: // 商品 SKU 编号
62 | * }]
63 | * @return 是否成功
64 | */
65 | Boolean delete(Integer buyerId, String nobody, Integer shopId, String itemList);
66 |
67 | /**
68 | * 清空购物车
69 | *
70 | * https://www.youzanyun.com/apilist/detail/group_buyer/buyer_cart/youzan.trade.cart.empty
71 | *
72 | * @param buyerId 买家编号
73 | * @param nobody 会话 key
74 | * @param shopId 店铺编号
75 | * @return 是否成功
76 | */
77 | Boolean deleteAll(Integer buyerId, String nobody, Integer shopId);
78 |
79 | /**
80 | * 查询用户在购物车中的商品数量
81 | *
82 | * https://www.youzanyun.com/apilist/detail/group_buyer/buyer_cart/youzan.trade.cart.count
83 | *
84 | * @param buyerId 买家编号
85 | * @param nobody 会话 key
86 | * @param shopId 店铺编号
87 | * @return 商品数量
88 | */
89 | Integer count(Integer buyerId, String nobody, Integer shopId);
90 |
91 | /**
92 | * 显示买家购物车中的商品列表
93 | *
94 | * https://www.youzanyun.com/apilist/detail/group_buyer/buyer_cart/youzan.trade.cart.list
95 | *
96 | * @param buyerId 买家编号
97 | * @param nobody 会话 key
98 | * @param shopId 店铺编号
99 | * @return 购物车中商品列表信息
100 | */
101 | List list(Integer buyerId, String nobody, Integer shopId);
102 |
103 | }
104 |
105 | // TODO 芋艿,多网点的影响。
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/tradegroup/trade/entity/TradeOrder.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.tradegroup.trade.entity;
2 |
3 | /**
4 | * 交易明细。
5 | *
6 | * 交易下的每种商品生成一条交易明细记录。
7 | */
8 | public class TradeOrder {
9 |
10 | // ========= 基础字段 BEGIN =========
11 |
12 | /**
13 | * 交易明细编号。
14 | */
15 | private Long id;
16 | /**
17 | * 交易编号。{@link Trade#id}
18 | */
19 | private String tid;
20 | /**
21 | * 店铺编号
22 | */
23 | private Integer shopId;
24 | /**
25 | * 交易明细主状态
26 | *
27 | * {@link Trade#status} 一致
28 | */
29 | private Integer status;
30 |
31 | // ========= 基础字段 END =========
32 |
33 | // ========= 商品信息 BEGIN =========
34 |
35 | /**
36 | * 商品编号
37 | */
38 | private Integer itemId;
39 | /**
40 | * 商品标题
41 | */
42 | private String title;
43 | /**
44 | * 商品主图片地址
45 | */
46 | private String picPath;
47 | /**
48 | * 商品类型。
49 | *
50 | * 0:自营;
51 | * 10:分销商品;
52 | */
53 | private Long goodsType;
54 | /**
55 | * 商品类型 {@link cn.iocoder.doraemon.itemgroup.item.entity.Item#itemType}
56 | */
57 | private Integer itemType;
58 | /**
59 | * Sku 编号
60 | */
61 | private Integer skuId;
62 | /**
63 | * SKU的值,即:商品的规格。如:机身颜色:黑色;手机套餐:官方标配
64 | */
65 | private String skuPropertiesName;
66 | /**
67 | * 商品价格。单位:分
68 | */
69 | private Integer price;
70 | /**
71 | * 商品购买数量
72 | */
73 | private Integer num;
74 | /**
75 | * 交易明细中买家留言的数据结构 {@link cn.iocoder.doraemon.itemgroup.item.entity.Item#messages}
76 | */
77 | private String buyerMessages;
78 | /**
79 | * 商品快照编号 {@link cn.iocoder.doraemon.itemgroup.snapshot.entity.ItemSnapshot#id}
80 | */
81 | private String snapshotId;
82 |
83 | // ========= 商品信息 END =========
84 |
85 | // ======= 物流信息 BEGIN =======
86 |
87 | /**
88 | * 是否允许发货
89 | */
90 | private Boolean allowSend;
91 | /**
92 | * 是否已经发货
93 | */
94 | private Boolean isSend;
95 |
96 | // ======= 物流信息 END =======
97 |
98 | // ========= 退款维权 BEGIN =========
99 |
100 | /**
101 | * 商品退款状态
102 | *
103 | * 0 - 无退款
104 | * 1 - 部分退款
105 | * 11 - 全部退款
106 | */
107 | private Integer refundStatus;
108 | /**
109 | * 退款id
110 | */
111 | private String refundId;
112 |
113 | // ========= 退款维权 END =========
114 |
115 | // ========= 价格信息 BEGIN =========
116 |
117 | /**
118 | * 商品总价(商品价格乘以数量的总金额)。单位:分
119 | */
120 | private Integer totalFee;
121 | /**
122 | * 交易明细内的优惠金额。单位:分
123 | */
124 | private Integer discountFee;
125 | /**
126 | * 实付金额。单位:分
127 | */
128 | private Integer payment;
129 | /**
130 | * 退款金额。单位:分
131 | */
132 | private Float refundedFee;
133 |
134 | // ========= 价格信息 END =========
135 |
136 | // ========= 优惠信息 BEGIN =========
137 |
138 | /**
139 | * 是否赠品
140 | *
141 | * true 赠品商品
142 | * false 普通商品
143 | */
144 | private Boolean isPresent;
145 | // /**
146 | // * 交易明细中的优惠信息的数据结构
147 | // */
148 | // private YouzanTradeGetResult.TradeOrderPromotion[] orderPromotionDetails;
149 |
150 | // ========= 优惠信息 END =========
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 | // TODO 芋艿,等分销
159 | // @JsonProperty(value = "fenxiao_price")
160 | // /**
161 | // * 商品在分销商那边的出售价格。精确到2位小数;单位:元。如果是采购单才有值,否则值为 0
162 | // */
163 | // private Float fenxiaoPrice;
164 | // /**
165 | // * 商品在分销商那边的实付金额。精确到2位小数;单位:元。如果是采购单才有值,否则值为 0
166 | // */
167 | // private Float fenxiaoPayment;
168 | }
169 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/item/entity/vo/ItemTemplateCubeElementVO.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.item.entity.vo;
2 |
3 | /**
4 | * 商品页面模板魔方元素 VO
5 | */
6 | public class ItemTemplateCubeElementVO extends AbstractItemTemplateElementVO {
7 |
8 | /**
9 | * 商品页面模板魔方元素的选项 VO
10 | */
11 | public static class SelectionElementVO extends AbstractItemTemplateElementVO {
12 |
13 | private static final String TYPE = "cube_selection";
14 |
15 | // === 坐标 ===
16 | /**
17 | * x 坐标
18 | */
19 | private Integer x;
20 | /**
21 | * y 坐标
22 | */
23 | private Integer y;
24 | /**
25 | * 宽
26 | */
27 | private Integer width;
28 | /**
29 | * 高
30 | */
31 | private Integer height;
32 |
33 | // === 图片 ===
34 | /**
35 | * 图片编号
36 | */
37 | private Integer imageId;
38 | /**
39 | * 图片地址
40 | */
41 | private String imageURL;
42 | /**
43 | * 图片缩略地址
44 | */
45 | private String imageThumbURL;
46 | /**
47 | * 图片高度
48 | */
49 | private Integer imageWidth;
50 | /**
51 | * 图片宽度
52 | */
53 | private Integer imageHeight;
54 |
55 | // === 标题 ===
56 | /**
57 | * 标题
58 | */
59 | private String title;
60 |
61 | // === 链接 ===
62 | /**
63 | * 链接类型
64 | */
65 | private String linkType;
66 | /**
67 | * 链接地址
68 | */
69 | private String linkURL;
70 | /**
71 | * 链接标题
72 | *
73 | * 例如链接类型为 goods ,对应商品标题
74 | */
75 | private String linkTitle;
76 | /**
77 | * 链接编号
78 | *
79 | * 例如链接类型为 goods ,对应商品编号
80 | */
81 | private String linkId;
82 | /**
83 | * 链接别名
84 | *
85 | * 例如链接类型为 goods ,对应商品别名
86 | */
87 | private String alias;
88 |
89 | }
90 |
91 | private static final String TYPE = "cube2";
92 |
93 | /**
94 | * 魔方高度
95 | */
96 | private Integer layoutHeight;
97 | /**
98 | * 魔方宽度
99 | */
100 | private Integer layoutWidth;
101 | /**
102 | * 选项元素数组
103 | *
104 | * JSON 格式,数组,每个元素为 {@link SelectionElementVO}
105 | */
106 | private String subEntrys;
107 | /**
108 | * 生成的魔方的 HTML 内容
109 | *
110 | * 例如:
111 | *
112 | *
113 | *
114 | * |
115 | *
116 | *
117 | * |
118 | *
119 | *
120 | * |
121 | *
122 | *
123 | * |
|
124 | *
125 | *
126 | * |
127 | * |
128 | * | |
129 | *
130 | */
131 | private String tableContent;
132 |
133 | }
134 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/category/entity/ItemTag.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.category.entity;
2 |
3 | import cn.iocoder.doraemon.itemgroup.item.entity.vo.AbstractItemTemplateElementVO;
4 |
5 | import java.util.Date;
6 |
7 | /**
8 | * Item 分组
9 | */
10 | public class ItemTag {
11 |
12 | /**
13 | * 配置元素 VO
14 | */
15 | public static class ConfigElementVO extends AbstractItemTemplateElementVO {
16 |
17 | private static final String TYPE = "config";
18 |
19 | /**
20 | * 分组标题
21 | */
22 | private String title;
23 | /**
24 | * 是否页面上显示商品分组名称
25 | *
26 | * 0-不显示
27 | * 1-显示
28 | */
29 | private Integer showTagTitle;
30 | /**
31 | * 第一优先级
32 | *
33 | * 0-序号越大越靠前
34 | * 3-最热的排在前面
35 | */
36 | private Integer firstPriority;
37 | /**
38 | * 第二优先级
39 | *
40 | * 1-创建时间越晚越靠前
41 | * 2-创建时间越早越靠前
42 | * 3-最热的排在前面
43 | */
44 | private Integer secondPriority;
45 | /**
46 | * 富文本编辑器
47 | */
48 | private String content;
49 | /**
50 | * 列表样式
51 | *
52 | * 0-大图
53 | * 1-小图
54 | * 2-一大两小
55 | * 3-详细列表
56 | */
57 | private Integer size;
58 | /**
59 | * 商品样式
60 | *
61 | * 0-卡片样式
62 | * 1-瀑布流
63 | * 2-极简样式
64 | * 3-促销
65 | */
66 | private Integer sizeType;
67 | /**
68 | * 是否显示购买按钮
69 | *
70 | * 0-不显示
71 | * 1-显示
72 | */
73 | private Integer buyBtn;
74 | /**
75 | * 显示购买按钮的样式
76 | *
77 | * 1-样式1
78 | * 2-样式2
79 | * 3-样式3
80 | * 4-样式4
81 | */
82 | private Integer buyBtnType;
83 | /**
84 | * 显示购物车图标
85 | *
86 | * 0-不显示
87 | * 1-显示
88 | */
89 | private Integer cart;
90 | /**
91 | * 是否显示商品标题
92 | *
93 | * 0-不显示
94 | * 1-显示
95 | */
96 | private Integer showTitle;
97 | /**
98 | * 是否显示商品简介
99 | *
100 | * 0-不显示
101 | * 1-显示
102 | */
103 | private Integer showSubTitle;
104 | /**
105 | * 是否显示商品价格
106 | *
107 | * 0-不显示
108 | * 1-显示
109 | */
110 | private Integer price;
111 |
112 | }
113 |
114 | /**
115 | * 编号,自增
116 | */
117 | private Integer id;
118 | /**
119 | * 别名
120 | *
121 | * 系统生成,作为唯一标识。例如,2fpa62tbmsl9h
122 | */
123 | private String alias;
124 | /**
125 | * 店铺编号
126 | */
127 | private Integer shopId;
128 | /**
129 | * 名称
130 | */
131 | private String title;
132 | /**
133 | * 状态
134 | * 1-正常
135 | * 2-删除
136 | */
137 | private Integer status;
138 | /**
139 | * 默认类型
140 | *
141 | * 0-商家自定义
142 | * 1-其他
143 | * 2-最新商品 https://help.youzan.com/qa#/menu/2149/detail/1185?_k=825jlx
144 | * 3-最热商品 https://help.youzan.com/qa#/menu/2149/detail/1185?_k=825jlx
145 | * 4-列表中隐藏
146 | */
147 | private Integer isDefault;
148 | /**
149 | * 商品数量
150 | */
151 | private Integer itemCount;
152 | /**
153 | * 模板元素数组
154 | *
155 | * JSON 格式,数组,每个元素为 {@link cn.iocoder.doraemon.itemgroup.item.entity.vo.AbstractItemTemplateElementVO} 的实现类字符串
156 | */
157 | private String data;
158 | /**
159 | * 创建时间
160 | */
161 | private Date createTime;
162 | /**
163 | * 更新时间
164 | */
165 | private Date updateTime;
166 | /**
167 | * 删除时间
168 | */
169 | private Date deleteTime;
170 |
171 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/tradegroup/delivery/entity/TradeDeliveryLocalConfig.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.tradegroup.delivery.entity;
2 |
3 | import java.util.Date;
4 | import java.util.List;
5 |
6 | /**
7 | * 交易发货同城配送配置
8 | */
9 | public class TradeDeliveryLocalConfig {
10 |
11 | /**
12 | * 配送区域设置
13 | */
14 | public static class AreaModel {
15 |
16 | /**
17 | * 半径区域,以某个坐标点为中心的圆。
18 | */
19 | public static class CircleAreaModel {
20 |
21 | /**
22 | * 经度
23 | */
24 | private Double lng;
25 | /**
26 | * 纬度
27 | */
28 | private Double lat;
29 | /**
30 | * 半径
31 | */
32 | private Integer scope;
33 |
34 | }
35 |
36 | /**
37 | * 形成自定义形状的坐标点。
38 | */
39 | public static class PointModel {
40 |
41 | /**
42 | * 经度
43 | */
44 | private Double lng;
45 | /**
46 | * 纬度
47 | */
48 | private Double lat;
49 |
50 | }
51 |
52 | /**
53 | * 类型
54 | *
55 | * 1-半径园 {@link CircleAreaModel}
56 | * 2-自定义形状 {@link PointModel}
57 | * 3-简易版
58 | */
59 | private Integer type;
60 | /**
61 | * 起步价。单位:分。
62 | *
63 | * 起送价:是优惠券/码和满减优惠抵扣前的商品金额,运费不计入起送价。
64 | */
65 | private Integer startFee;
66 | /**
67 | * 配送价。单位:分。
68 | */
69 | private Integer fixedFee;
70 |
71 | // ======== 类型【1】BEGIN ========
72 | /**
73 | * 半径区域,以某个坐标点为中心。
74 | */
75 | private CircleAreaModel circleAreaModel;
76 | // ======== 类型【1】END ========
77 |
78 | // ======== 类型【2】BEGIN ========
79 | /**
80 | * 构成自定义形状的坐标点集合。
81 | *
82 | * 实际该字段包在 polygon_area_model 里,此处笔者为了减少嵌套层级。胖友实际在用,建议还是套在 polygon_area_model 里。
83 | */
84 | private List pointModels;
85 | // ======== 类型【1】END ========
86 |
87 | // ======== 类型【3】BEGIN ========
88 | /**
89 | * 配送范围介绍
90 | */
91 | private String desc;
92 | /**
93 | * 配送范围图片
94 | */
95 | private String attachPic;
96 | // ======== 类型【3】END ========
97 | }
98 |
99 | /**
100 | * 时间范围
101 | */
102 | public static class DateRange {
103 |
104 | /**
105 | * 开始时间。
106 | *
107 | * 格式为 HHdd ,例如 0730
108 | */
109 | private Integer openTime;
110 | /**
111 | * 结束时间。
112 | *
113 | * 格式为 HHdd ,例如 2300
114 | */
115 | private Integer closeTime;
116 | /**
117 | * 周期集合。
118 | *
119 | * 注意,通过位进行存储。
120 | */
121 | private Integer weekdays;
122 |
123 | }
124 |
125 | /**
126 | * 店铺编号 {@link cn.iocoder.doraemon.shopgroup.shop.entity.Shop#id}
127 | */
128 | private Integer id;
129 | /**
130 | * 创建时间
131 | */
132 | private Date createTime;
133 | /**
134 | * 更新时间
135 | */
136 | private Date updateTime;
137 | /**
138 | * 配送区域类型
139 | *
140 | * 1- 简易版。
141 | * 没有超区校校验,适合配送范围内地图信息不完善的地区,如新开发区、欠发达地区等。
142 | * 2- 不同区域不同配送费。
143 | */
144 | private Integer editionType;
145 | /**
146 | * 配送区域设置数组
147 | *
148 | * 使用 JSON 将 {@link AreaModel}数组 格式化成字符串
149 | */
150 | private String areaModels;
151 | /**
152 | * 是否开启定时达
153 | */
154 | private Boolean isInTime;
155 | /**
156 | * 配送时间集合
157 | *
158 | * 使用 JSON 将 {@link DateRange}数组 格式化成字符串
159 | */
160 | private String timeBuckets;
161 | /**
162 | * 时段细分类型
163 | *
164 | * 1-天
165 | * 2-上午下午晚上(12:00和18:00为分界点)
166 | * 3-小时
167 | * 4-半小时
168 | */
169 | private Integer timeSpanType;
170 | /**
171 | * 最小可预约时间提前时间,单位:{@link #aheadMinType}
172 | */
173 | private Integer aheadMin;
174 | /**
175 | * 最小可预约时间提前时间单位
176 | *
177 | * 0-无需提前
178 | * 1-天(为自然天,如:提前1天,则不管是凌晨1点还是晚上23点,都只能下明天以后的订单)
179 | * 2-小时
180 | * 3-分钟
181 | */
182 | private Integer aheadMinType;
183 | /**
184 | * 最大可预约时间提前时间,单位:天。
185 | *
186 | * 其中,0 为仅限冬天。
187 | */
188 | private Integer aheadMax;
189 |
190 | }
191 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/item/entity/Item.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.item.entity;
2 |
3 | import java.util.Date;
4 |
5 | /**
6 | * 商品
7 | */
8 | public class Item {
9 |
10 | /**
11 | * 编号
12 | */
13 | private Integer id;
14 | /**
15 | * 别名
16 | *
17 | * 系统生成,作为唯一标识。例如,2fpa62tbmsl9h
18 | */
19 | private String alias;
20 | /**
21 | * 店铺编号
22 | */
23 | private Integer shopId;
24 | /**
25 | * 创建时间
26 | */
27 | private Date createTime;
28 | /**
29 | * 更新时间
30 | */
31 | private Date updateTime;
32 | /**
33 | * 状态
34 | *
35 | * 1-正常
36 | * 2-删除
37 | */
38 | private Integer status;
39 |
40 | // ========== 基本信息 BEGIN ==========
41 |
42 | /**
43 | * 商品标题
44 | *
45 | * 不能超过100字,受违禁词控制
46 | */
47 | private String title;
48 | /**
49 | * 副标题,分享链接时显示
50 | */
51 | private String summary;
52 | /**
53 | * 商品分类的叶子类目编号
54 | *
55 | * 有赞——店铺主营类目和商品类目对应表:https://bbs.youzan.com/forum.php?mod=viewthread&tid=25252
56 | */
57 | private Integer cid;
58 | /**
59 | * 商品主图地址
60 | *
61 | * 数组,以逗号分隔
62 | *
63 | * 建议尺寸:800*800像素,你可以拖拽图片调整顺序,最多上传15张
64 | */
65 | private String picURLs;
66 | /**
67 | * 商品类型
68 | *
69 | * 0:普通商品(物流发货)
70 | * 3:UMP降价拍
71 | * 5:外卖商品
72 | * 10:分销商品
73 | * 20:会员卡商品
74 | * 21:礼品卡商品
75 | * 22:团购券
76 | * 25:批发商品
77 | * 30:收银台商品
78 | * 31:知识付费商品
79 | * 35:酒店商品(无需物流)
80 | * 40:美业商品
81 | * 60:虚拟商品(无需物流)
82 | * 61:电子卡券(无需物流)
83 | */
84 | private Integer itemType;
85 | /**
86 | * 商品类型
87 | *
88 | * 0:自营商品
89 | * 10:分销商品
90 | */
91 | private Integer goodsType;
92 |
93 | // ========== 基本信息 END ==========
94 |
95 | // ========== 价格库存 BEGIN ==========
96 |
97 | /**
98 | * 价格,单位分
99 | */
100 | private Integer price;
101 | /**
102 | * 商品重量,没有SKU时用
103 | */
104 | private Double itemWeight;
105 | /**
106 | * 商品货号(商家为商品设置的外部编号)
107 | */
108 | private String itemNo;
109 | /**
110 | * 总库存
111 | *
112 | * 基于 sku 的库存数量累加
113 | */
114 | private Integer quantity;
115 | /**
116 | * 总销量
117 | */
118 | private Integer soldNum;
119 | /**
120 | * 是否隐藏商品库存。在商品展示时不显示商品的库存。
121 | *
122 | * 0 - 显示库存(默认)
123 | * 1 - 不显示库存
124 | */
125 | private Integer hideStock;
126 | /**
127 | * 商品划线价格,可以自定义。例如 促销价:888
128 | *
129 | * 商品没有优惠的情况下,划线价在商品详情会以划线形式显示。
130 | */
131 | private Integer originPrice;
132 | /**
133 | * 是否参加会员折扣。
134 | *
135 | * 1 - 参加会员折扣(默认)
136 | * 0 - 不参加会员折扣
137 | */
138 | private Integer joinLevelDiscount;
139 |
140 | // ========== 价格库存 END ==========
141 |
142 | // ========== 运费信息 BEGIN ==========
143 | /**
144 | * 运费类型
145 | *
146 | * 1-统一运费
147 | * 2-运费模板
148 | */
149 | private Integer postType;
150 | /**
151 | * 运费,单位分
152 | */
153 | private Integer postFee;
154 | /**
155 | * 运费模版id
156 | */
157 | private Integer deliveryTemplateId;
158 | // ========== 运费信息 END ==========
159 |
160 | // ========== 其他信息 BEGIN ==========
161 |
162 | /**
163 | * 是否上架商品。
164 | *
165 | * true 为已上架
166 | * false 为已下架
167 | */
168 | private Boolean isListing;
169 | /**
170 | * 排序字段
171 | */
172 | private Integer order;
173 | /**
174 | * 开始出售时间。
175 | *
176 | * 没设置则为空
177 | */
178 | private Date autoListingTime;
179 | /**
180 | * 商品是否锁定。TODO 芋艿,哪里使用
181 | *
182 | * true 为已锁定
183 | * false 为未锁定
184 | */
185 | private Boolean isLock;
186 | /**
187 | * 留言表单数组配置
188 | *
189 | * JSON 字符串 [{
190 | * name: // 表单名,String
191 | * required: // 是否必填,Integer,1-必填;0-选填
192 | * type: // 表单类型,String,枚举:文本格式/数字格式/邮件/日期/时间/身份证号/图片
193 | * multiple: // 是否多行,Integer,1-多行,0-单行
194 | * datetime:// 是否包含日期,用于 `type=时间`
195 | * }]
196 | */
197 | private String messages;
198 |
199 | // ========== 其他信息 END ==========
200 |
201 | /**
202 | * 商品快照编号 {@link cn.iocoder.doraemon.itemgroup.snapshot.entity.ItemSnapshot#id}
203 | */
204 | private String snapshotId;
205 | /**
206 | * 是否有预售
207 | */
208 | private Boolean etdStatus;
209 | /**
210 | * 是否设置商品购买权限
211 | */
212 | private Boolean purchaseRightStatus;
213 |
214 |
215 |
216 | // TODO 跳转到其他网站购买
217 |
218 | // TODO 芋艿,ItemVirtualOpenModel
219 | }
220 | // TODO points_price
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/tradegroup/trade/TradeAPI.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.tradegroup.trade;
2 |
3 | import com.youzan.open.sdk.gen.v3_0_0.model.*;
4 |
5 | /**
6 | * 交易 API
7 | */
8 | public interface TradeAPI {
9 |
10 | // ======== 买家 BEGIN ========
11 |
12 | /**
13 | * 下单入口,获得结算页链接
14 | *
15 | * https://www.youzanyun.com/apilist/detail/group_buyer/buyer_bill/youzan.trade.bill.good.url.get
16 | *
17 | * @param params 单商品相关参数
18 | * @return 结算页链接
19 | */
20 | YouzanTradeBillGoodUrlGetResult getBillItemURL(YouzanTradeBillGoodUrlGetParams params);
21 |
22 | /**
23 | * 多商品下单入口,获得结算页链接
24 | *
25 | * https://www.youzanyun.com/apilist/detail/group_buyer/buyer_bill/youzan.trade.bill.goods.url.get
26 | *
27 | * @param params 多商品相关参数
28 | * @return 结算页链接
29 | */
30 | YouzanTradeBillGoodsUrlGetResult getBillItemsURL(YouzanTradeBillGoodsUrlGetParams params);
31 |
32 | /**
33 | * 买家取消订单
34 | *
35 | * @param tid 交易编号
36 | * @return 是否成功
37 | */
38 | Boolean updateClose(String tid);
39 |
40 | /**
41 | * 订单延长收货接口
42 | *
43 | * https://www.youzanyun.com/apilist/detail/group_buyer/buyer_trade/youzan.trade.later.receive.update
44 | *
45 | * @param tid 交易编号
46 | * @return 是否成功
47 | */
48 | Boolean updateReciveLater(String tid);
49 |
50 | /**
51 | * 买家确认收货接口
52 | *
53 | * https://www.youzanyun.com/apilist/detail/group_buyer/buyer_trade/youzan.trade.confirm.receive.update
54 | *
55 | * @param tid 交易编号
56 | * @return 是否成功
57 | */
58 | Boolean updateReciveConfirm(String tid);
59 |
60 | // ======== 卖家 BEGIN ========
61 |
62 | /**
63 | * 订单标星接口
64 | *
65 | * https://www.youzanyun.com/apilist/detail/group_trade/trade/youzan.trade.get
66 | *
67 | * @param tid 交易订单号
68 | * @param withChilds 是否需要获取子订单。例如送礼订单,会存在子订单。
69 | * @param subTradePageNo 指定获取子交易的第几页,不传则获取全部
70 | * @param subTradePageSize 指定获取子交易的第几页,不传则获取全部
71 | * @param fields 指到需要返回的交易对象字段,如tid,title,receiver_city等
72 | * @return 交易详情
73 | */
74 | YouzanTradeGetResult get(String tid, Boolean withChilds,
75 | Integer subTradePageNo, Integer subTradePageSize, String[] fields);
76 |
77 | /**
78 | * 查询卖家已卖出的交易列表
79 | *
80 | * https://www.youzanyun.com/apilist/detail/group_trade/trade/youzan.trades.sold.get
81 | *
82 | * @param params 筛选参数
83 | * @return 交易列表
84 | */
85 | YouzanTradesSoldGetResult list(YouzanTradesSoldGetParams params);
86 |
87 | /**
88 | * 订单标星接口
89 | *
90 | * https://www.youzanyun.com/apilist/detail/group_trade/trade/youzan.trade.star.update
91 | *
92 | * @param tid 交易编号
93 | * @param star 等级 1-5
94 | * @return 是否成功
95 | */
96 | Boolean updateStar(String tid, Integer star);
97 |
98 | /**
99 | * 增加/修改订单备注
100 | *
101 | * https://www.youzanyun.com/apilist/detail/group_trade/trade/youzan.trade.memo.update
102 | *
103 | * @param tid 交易编号
104 | * @param memo 订单备注
105 | * @param star 等级 1-5
106 | * @return 是否成功
107 | */
108 | Boolean updateMemo(String tid, String memo, Integer star);
109 |
110 | /**
111 | * 【卖家使用】买家下单后未支付的情况下卖家关闭订单,在买家付款后该接口失效
112 | *
113 | * https://open.youzan.com/api/oauthentry/youzan.trade/3.0.0/close
114 | *
115 | * @param tid 交易编号
116 | * @param closeType 订单备注
117 | * @param closeReason 等级 1-5
118 | * @return 是否成功
119 | */
120 | Boolean updateClose(String tid, Integer closeType, Integer closeReason);
121 |
122 | /**
123 | * 订单改价
124 | *
125 | * https://www.youzanyun.com/apilist/detail/group_trade/trade/youzan.trade.price.update
126 | *
127 | * @param tid 交易编号
128 | * @param priceChange 价格增减(单位:分)
129 | * @param postFee 邮费价格(单位:分)
130 | * @param isAllowPreference 改价后允许是否允许买家再使用其他优惠。TODO 芋艿,目前暂未找到该参数的场景
131 | * @return 是否成功
132 | */
133 | Boolean updatePrice(String tid, Integer priceChange, Integer postFee, Boolean isAllowPreference);
134 |
135 | /**
136 | * 根据第三方的ua和user_id获取交易订单列表
137 | *
138 | * https://open.youzan.com/api/oauthentry/youzan.trades.sold.outer/3.0.0/get
139 | *
140 | * @param params 筛选参数。三方用户 user_id 必填
141 | * @return 交易列表
142 | */
143 | YouzanTradesSoldOuterGetResult listByOutUserId(YouzanTradesSoldOuterGetParams params);
144 |
145 | // TODO 芋艿,获取电子卡券信息 https://www.youzanyun.com/apilist/detail/group_trade/trade/youzan.trade.virtualticket.get
146 |
147 | // TODO 芋艿,获取到店自提订单信息 https://www.youzanyun.com/apilist/detail/group_trade/trade/youzan.trade.selffetchcode.get
148 |
149 | // TODO 芋艿,微信支付-自有订单标记退款 https://www.youzanyun.com/apilist/detail/group_trade/trade/youzan.trade.sign.item.close
150 |
151 | }
152 |
--------------------------------------------------------------------------------
/libs/README.md:
--------------------------------------------------------------------------------
1 | ## 介绍
2 | + 有赞开放平台Java版本的SDK,v2.0.2
3 |
4 | ## 版本历史
5 | + 1.0.0-beta 第一个测试版
6 | + 1.0.1-beta 修复多个bug测试版
7 | + 2.0.0 全新版,更加完善的调用,不向前兼容老版本
8 | + 2.0.1 增加非模型化调用execute方法,兼容2.0.0版本
9 | + 2.0.2 增加获取token的操作,向下兼容2.0.x版本
10 |
11 | ## 设计思想
12 | + 所有的开放平台接口均实现了模型化(除非常久远的历史接口)
13 | + 所有的接口遵循API、Params和Result模式,即API、入参和出参,API上绑定params后交由client执行后返回result,例如:youzan.item.create 3.0.0这个API,API模型为YouzanItemCreate(放在了v3_0_0包下),入参为YouzanItemCreateParams,出参为YouzanItemCreateResult
14 | + 2.0.1版本后增加非模型化调用,但核心思想仍然是将用户参数转为模型调用
15 |
16 | ## 环境
17 |
18 | ```
19 | jre(Java运行时环境) >= 6(强烈建议使用jre 7+)
20 | 三方库依赖: guava 19.0、apache http client 4.5.2等
21 | ```
22 |
23 | ## 常见问题
24 | + 引用jar后出现"No Such Method"或"No Class Def Found Error"异常串,说明jar包冲突了,请自行google解决
25 |
26 | ## 使用
27 | ### 1. 解压缩zip文件,获得一个jar包和sources.jar文件
28 | + jar包是核心逻辑实现的包
29 | + sources是源码文件,可以引用到项目中查看该jar对应的源码
30 |
31 | ### 2. 引用包
32 | #### 2.1 方法1: 手动引用jar到项目(可以将sources.jar文件附带上,便于查看源码)
33 | #### 2.2 方法2: 本地mvn install到local仓库,并在pom中引用该依赖
34 | #### 2.3 方法3:将该jar发布到自己公司仓库,并在pom中依赖
35 |
36 | ## 如何使用?(参考demo.java)
37 | ### 调用kdt.item.add接口
38 |
39 | ```
40 | YZClient client = new DefaultYZClient(new Token("$token"));
41 |
42 | YouzanItemCreateParams youzanItemCreateParams = new YouzanItemCreateParams();
43 | youzanItemCreateParams.setTitle("XXX");//商品名
44 | youzanItemCreateParams.setPrice(258.0f); //价格
45 | youzanItemCreateParams.setPostFee(0.0f); //运费
46 | youzanItemCreateParams.setQuantity("58");
47 | youzanItemCreateParams.setOuterId("119149");
48 | youzanItemCreateParams.setSkuOuterIds("001,002,003,004,005,006");
49 | youzanItemCreateParams.setSkuPrices("258.00,258.00,258.00,258.00,258.00,258.00");
50 | youzanItemCreateParams.setSkuProperties("颜色:黑色;规格:L,颜色:黑色;规格:XL,颜色:黑色;规格:XXL,颜色:浅蓝色;规格:L,颜色:浅蓝色;规格:XL,颜色:浅蓝色;规格:XXL");
51 | youzanItemCreateParams.setSkuQuantities("58,74,7,114,60,55");
52 | youzanItemCreateParams.setHideQuantity(1L);
53 | youzanItemCreateParams.setBuyQuota(20L);
54 | youzanItemCreateParams.setCid(6000000L);
55 | youzanItemCreateParams.setIsVirtual(0L);
56 | youzanItemCreateParams.setOriginPrice("");
57 |
58 | youzanItemCreateParams.setDesc("desc");
59 |
60 | ByteWrapper[] byteWrappersAdd = new ByteWrapper[1];
61 | ByteWrapper byteWrapper = new ByteWrapper("/Users/xx/Desktop/thumb_up_normal.png");
62 | byteWrappersAdd[1] = byteWrapper;
63 |
64 | youzanItemCreateParams.setImages(byteWrappersAdd);
65 |
66 | YouzanItemCreate youzanItemCreate = new YouzanItemCreate(youzanItemCreateParams);
67 | YouzanItemCreateResult result = client.invoke(youzanItemCreate);
68 |
69 | assertTrue(result.getItem().getTitle().equals(youzanItemCreateParams.getTitle()));
70 |
71 | ```
72 |
73 | ### 调用kdt.shop.basic.get接口
74 |
75 | ```
76 | YZClient client = new DefaultYZClient(new Sign("$app_id", "$app_secret"));
77 | YouzanShopBasicGetParams youzanShopBasicGetParams = new YouzanShopBasicGetParams();
78 | YouzanShopBasicGet youzanShopBasicGet = new YouzanShopBasicGet(youzanShopBasicGetParams);
79 | YouzanShopBasicGetResult youzanShopBasicGetResult = client.invoke(youzanShopBasicGet);
80 | assertEquals(youzanShopBasicGetResult.getName(), "我的店铺");
81 | ```
82 |
83 | ### 非模型化调用方式
84 | ```
85 | Map params = Maps.newHashMap();
86 | params.put("title", "测试添加商品201888");
87 | params.put("price", 200);
88 | params.put("post_fee", 11);
89 |
90 | Multimap fileParams = ArrayListMultimap.create();
91 | fileParams.put("images[]", new ByteWrapper("/Users/xx/Desktop/thumb_up_normal.png"));
92 | // youzan.item.create已经改版,目前不支持直接传图片,详情参考有赞云API文档进行调用,这里只是演示怎么传参
93 | String result = client.execute("youzan.item.create", "3.0.0", "POST", params, fileParams);
94 | // String result = client.execute("youzan.items.onsale.get", "3.0.0", "GET", null, null);
95 |
96 | System.out.println(result);
97 | ```
98 |
99 | ### 获取工具型token
100 | ```
101 | // 先获取到code
102 | AuthorizationCode authorizationCode = (AuthorizationCode) OAuthFactory.create(OAuthType.TOOL_TOKEN, new OAuthContext("clientId", "clientSecret", "redirectUrl", null, null));
103 | authorizationCode.getCode();
104 |
105 | // 再获取token
106 | OAuth oauth = OAuthFactory.create(OAuthType.TOOL_TOKEN, new OAuthContext("clientId", "clientSecret", "redirectUrl", null, "code"));
107 | System.out.println(JsonUtils.toJson(oauth.getToken()));
108 | ```
109 |
110 | ### 根据refresh token获取token
111 | ```
112 | OAuth oauth = OAuthFactory.create(OAuthType.TOOL_REFRESH_TOKEN, new OAuthContext("clientId", "clientSecret", "refreshToken"));
113 | System.out.println(JsonUtils.toJson(oauth.getToken()));
114 | ```
115 |
116 | ### 获取自用型token
117 | ```
118 | OAuth oauth = OAuthFactory.create(OAuthType.SELF, new OAuthContext("clientId", "clientSecret", 111L));
119 | System.out.println(JsonUtils.toJson(oauth.getToken()));
120 | ```
121 |
122 | ### 获取平台型token
123 | ```
124 | OAuth oauth = OAuthFactory.create(OAuthType.PLATFORM, new OAuthContext("clientId", "clientSecret", 111L));
125 | System.out.println(JsonUtils.toJson(oauth.getToken()));
126 | ```
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/itemgroup/item/ItemAPI.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.itemgroup.item;
2 |
3 | import com.youzan.open.sdk.gen.v3_0_0.api.YouzanItemsCustomGet;
4 | import com.youzan.open.sdk.gen.v3_0_0.model.*;
5 |
6 |
7 | public interface ItemAPI {
8 |
9 | /**
10 | * 新增商品
11 | *
12 | * https://www.youzanyun.com/apilist/detail/group_item/item/youzan.item.create
13 | *
14 | * @param params 新增商品的信息
15 | * @return 创建成功后的商品详情
16 | */
17 | YouzanItemCreateResult.ItemDetailOpenModel create(YouzanItemCreateParams params);
18 |
19 | /**
20 | * 更新商品
21 | *
22 | * https://www.youzanyun.com/apilist/detail/group_item/item/youzan.item.update
23 | *
24 | * @param params 更新商品的信息
25 | * @return {
26 | * item_id: // 被更新的商品id
27 | * is_success: // 是否操作成功,成功为true
28 | * }
29 | */
30 | YouzanItemUpdateResult update(YouzanItemUpdateParams params);
31 |
32 | /**
33 | * 批量上架商品
34 | *
35 | * https://open.youzan.com/api/oauthentry/youzan.items.update/3.0.0/listing
36 | *
37 | * @param itemIds 商品数字编号数组
38 | * @return 是否成功
39 | */
40 | Boolean updateListing(Integer[] itemIds);
41 |
42 | /**
43 | * 批量下架商品
44 | *
45 | * https://open.youzan.com/api/oauthentry/youzan.items.update/3.0.0/listing
46 | *
47 | * @param itemIds 商品数字编号数组
48 | * @return 是否成功
49 | */
50 | Boolean updatedeListing(Integer[] itemIds);
51 |
52 | /**
53 | * 上架商品
54 | *
55 | * https://open.youzan.com/api/oauthentry/youzan.item.update/3.0.0/listing
56 | *
57 | * @param itemId 商品数字编号
58 | * @return 是否成功
59 | */
60 | Boolean updateListing(Integer itemId);
61 |
62 | /**
63 | * 下架商品
64 | *
65 | * https://www.youzanyun.com/apilist/detail/group_item/item/youzan.item.update.delisting
66 | *
67 | * @param itemId 商品数字编号
68 | * @return 是否成功
69 | */
70 | Boolean updateDelisting(Integer itemId);
71 |
72 | /**
73 | * 根据商品Id删除商品
74 | *
75 | * https://www.youzanyun.com/apilist/detail/group_item/item/youzan.item.delete
76 | *
77 | * @param itemId 商品Id
78 | * @return {
79 | * item_id: // 被删除的商品id
80 | * is_success: // 是否操作成功,成功为true
81 | * }
82 | */
83 | YouzanItemDeleteResult delete(Integer itemId);
84 |
85 | /**
86 | * 获取单个商品信息
87 | *
88 | * @param itemId 商品Id
89 | * @param alias 商品别名
90 | * @return 商品信息
91 | */
92 | YouzanItemGetResult.ItemDetailOpenModel get(Integer itemId, String alias);
93 |
94 | /**
95 | * 根据商家编码查询商品
96 | *
97 | * https://www.youzanyun.com/apilist/detail/group_item/item/youzan.items.custom.get
98 | *
99 | * @param itemNo 商家编码
100 | * @return {
101 | * items: // ItemListOpenModel[],搜索到的商品列表
102 | * count:// 商品总数量
103 | * }
104 | */
105 | YouzanItemsCustomGet get(String itemNo);
106 |
107 | /**
108 | * 分页查询商品标准列表,主要是根据商品类型和商品编码
109 | *
110 | * @param itemType 商品类型
111 | * @param codes 商品编码列表,必传。TODO 芋艿,一直搜不出数据啊!!
112 | * @return {
113 | * count: // 查询到的商品标准数量
114 | * item_standards: // ItemStandardOpenModel[] 查询到的商品标准列表
115 | * }
116 | */
117 | YouzanItemStandardSearchResult search(Integer itemType, String[] codes);
118 |
119 | /**
120 | * 获取仓库中的商品列表
121 | *
122 | * https://www.youzanyun.com/apilist/detail/group_item/item/youzan.items.inventory.get
123 | *
124 | * @param updateTimeStart 商品起始更新时间,单位ms
125 | * @param updateTimeEnd 商品终止更新时间,单位ms
126 | * @param tagId 商品标签的ID
127 | * @param q 搜索字段。搜索商品的title
128 | * @param banner
129 | * @param orderBy 排序方式。格式为column:asc/desc,目前排序字段:
130 | * 1.创建时间:created_time,
131 | * 2.更新时间:update_time,
132 | * 3.价格:price,
133 | * 4.销量:sold_num
134 | * @param pageNo 页码
135 | * @param pageSize 每页条数,最大支持300
136 | * @return {
137 | * count: // 搜索到的商品数量
138 | * items: // ItemListOpenModel[] 搜索到的商品列表
139 | * }
140 | */
141 | YouzanItemsInventoryGetResult inventoryGets(Long updateTimeStart, Long updateTimeEnd, Integer tagId,
142 | String q, String banner, String orderBy,
143 | Integer pageNo, Integer pageSize);
144 |
145 | /**
146 | * 获取出售中的商品列表
147 | *
148 | * https://www.youzanyun.com/apilist/detail/group_item/item/youzan.items.onsale.get
149 | *
150 | * @param updateTimeStart 商品起始更新时间,单位ms
151 | * @param updateTimeEnd 商品终止更新时间,单位ms
152 | * @param tagId 商品标签的ID
153 | * @param q 搜索字段。搜索商品的title
154 | * @param orderBy 排序方式。格式为column:asc/desc,目前排序字段:
155 | * 1.创建时间:created_time,
156 | * 2.更新时间:update_time,
157 | * 3.价格:price,
158 | * 4.销量:sold_num
159 | * @param pageNo 页码
160 | * @param pageSize 每页条数,最大支持300
161 | * @return {
162 | * count: // 搜索到的商品数量
163 | * items: // ItemListOpenModel[] 搜索到的商品列表
164 | * }
165 | */
166 | YouzanItemsOnsaleGetResult onlineGets(Long updateTimeStart, Long updateTimeEnd, Integer tagId,
167 | String q, String orderBy,
168 | Integer pageNo, Integer pageSize);
169 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/scrmgroup/weixin/UserWeiXinAPI.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.scrmgroup.weixin;
2 |
3 | import com.youzan.open.sdk.gen.v3_0_0.model.*;
4 |
5 | import java.util.Date;
6 | import java.util.List;
7 |
8 | public interface UserWeiXinAPI {
9 |
10 | /**
11 | * 使用手机号获取用户openId
12 | *
13 | * https://www.youzanyun.com/apilist/detail/group_scrm/user/youzan.user.weixin.openid.get
14 | *
15 | * @param mobile 手机号
16 | * @param countryCode 手机号国际码
17 | * @return 用户 openId
18 | */
19 | String openIdGet(String mobile, String countryCode);
20 |
21 | /**
22 | * 根据微信粉丝用户的 openid 或 fans_id 获取用户信息
23 | *
24 | * https://www.youzanyun.com/apilist/detail/group_scrm/user/youzan.users.weixin.follower.get
25 | *
26 | * @param weixinOpenid 微信粉丝用户的openid
27 | * @param fansId 微信粉丝用户ID。 调用时,参数 weixin_openid 和 fans_id 选其一即可
28 | * @param fields 需要返回的微信粉丝对象字段,如nick,avatar等。
29 | * 可选值:CrmWeixinFans微信粉丝结构体中所有字段均可返回;多个字段用“,”分隔。
30 | * 如果为空则返回所有
31 | * @return 微信粉丝用户信息
32 | * // todo 芋艿,fans_id 和 user_id 的关系
33 | */
34 | YouzanUsersWeixinFollowerGetResult.CrmWeixinFans followerGet(String weixinOpenid, Integer fansId, String[] fields);
35 |
36 | /**
37 | * 根据多个微信粉丝用户的 openid 或 user_id 获取用户信息
38 | *
39 | * https://www.youzanyun.com/apilist/detail/group_scrm/user/youzan.users.weixin.follower.gets
40 | *
41 | * @param weixinOpenids 微信粉丝用户的openid,多个用逗号分隔
42 | * @param fansIds 微信粉丝用户ID,多个用逗号分隔。调用时,参数 weixin_openids 和 fans_ids 选其一即可
43 | * @param pageNo 页码
44 | * @param pageSize 每页条数,默认值:40,最大值:500
45 | * @param fields 需要返回的微信粉丝对象字段,如nick,avatar等。
46 | * 可选值:CrmWeixinFans微信粉丝结构体中所有字段均可返回;多个字段用“,”分隔。
47 | * 如果为空则返回所有
48 | * @return 微信粉丝用户信息列表
49 | */
50 | List followerGets(String[] weixinOpenids, Integer[] fansIds, Integer pageNo, Integer pageSize, String[] fields);
51 |
52 | /**
53 | * 查询微信粉丝用户信息
54 | *
55 | * https://www.youzanyun.com/apilist/detail/group_scrm/user/youzan.users.weixin.followers.info.search
56 | *
57 | * 与该接口相同:https://www.youzanyun.com/apilist/detail/group_scrm/user/youzan.users.weixin.followers.get 【即将废弃】
58 | *
59 | * @param startFollow 关注的起始时间。
60 | * 查询在该时间之后(包含该时间)关注的粉丝,不能为空。格式可为“20170101”或“2017-01-01 12:00:00"
61 | * @param endFollow 关注的结束时间。
62 | * 查询在该时间之前关注的粉丝,不能为空,查询时间间隔不能超过一天,格式同start_follow
63 | * @param onlyFollow 是否仅拉取关注的粉丝。
64 | * 1:仅拉取已关注的粉丝
65 | * 0:拉取已关注和已跑路粉丝
66 | * @param pageNo 页码
67 | * @param pageSize 每页条数,默认值:40,最大值:500
68 | * @param fields 需要返回的微信粉丝对象字段,如nick,avatar等。
69 | * 可选值:CrmWeixinFans微信粉丝结构体中所有字段均可返回;多个字段用“,”分隔。
70 | * 如果为空则返回所有
71 | * @return {
72 | * total_results: // 搜索到的微信粉丝用户总数
73 | * users: // 【CrmWeixinFans】 搜索到的微信粉丝用户列表
74 | * }
75 | */
76 | YouzanUsersWeixinFollowersInfoSearchResult followerSearch(Date startFollow, Date endFollow, Integer onlyFollow, Integer pageNo, Integer pageSize, String[] fields);
77 |
78 | /**
79 | * 不受关注时间限制,按照粉丝编码正序查询
80 | *
81 | * https://www.youzanyun.com/apilist/detail/group_scrm/user/youzan.users.weixin.followers.info.pull
82 | *
83 | * 与该接口相同:https://open.youzan.com/api/oauthentry/youzan.users.weixin.followers/3.0.0/pull 【即将废弃】
84 | *
85 | * @param afterFansId 用于拉取该粉丝编码之后的查询条件。
86 | * 第一次查询可传入0,之后每次查询可传入上次查询里返回的last_fans_id,直到返回结果里的has_next为false
87 | * @param pageSize 每页条数,默认值:40,最大值:500
88 | * @param fields 需要返回的微信粉丝对象字段,如nick,avatar等。
89 | * 可选值:CrmWeixinFans微信粉丝结构体中所有字段均可返回;多个字段用“,”分隔。
90 | * 如果为空则返回所有
91 | * @return {
92 | * users: // 搜索到的微信粉丝用户列表
93 | * has_next: // 是否有下一页数据
94 | * last_fans_id: // 当前列表中最后一个粉丝编码
95 | * }
96 | */
97 | YouzanUsersWeixinFollowersInfoPullResult followerPull(Integer afterFansId, Integer pageSize, String[] fields);
98 |
99 | // todo 芋艿,标签相关,可能要调整下
100 |
101 | /**
102 | * 获取单个粉丝标签集合
103 | *
104 | * https://www.youzanyun.com/apilist/detail/group_scrm/user/youzan.users.weixin.follower.tags.get
105 | *
106 | * @param weixinOpenid 微信粉丝用户的openid
107 | * @param fansId 微信粉丝用户ID。 调用时,参数 weixin_openid 和 fans_id 选其一即可
108 | * @return 该粉丝的标签集合
109 | */
110 | List tagGet(String weixinOpenid, Integer fansId);
111 |
112 | /**
113 | * 根据微信粉丝用户的 openid 或 user_id 绑定对应的标签
114 | *
115 | * https://www.youzanyun.com/apilist/detail/group_scrm/user/youzan.users.weixin.follower.tags.add
116 | *
117 | * @param weixinOpenid 微信粉丝用户的openid
118 | * @param fansId 微信粉丝用户ID。 调用时,参数 weixin_openid 和 fans_id 选其一即可
119 | * @param tags 标签名,多个标签名用“,”分隔
120 | * @param fields 需要返回的微信粉丝对象字段,如nick,avatar等。
121 | * 可选值:CrmWeixinFans微信粉丝结构体中所有字段均可返回;多个字段用“,”分隔。
122 | * 如果为空则返回所有
123 | * @return 微信粉丝用户信息
124 | * // todo 很奇怪!?为啥要返回
125 | */
126 | YouzanUsersWeixinFollowerTagsAddResult.CrmWeixinFans tagAdd(String weixinOpenid, Integer fansId, String[] tags, String[] fields);
127 |
128 | /**
129 | * 根据微信粉丝用户的 openid 或 user_id 删除对应的标签 一次删除的标签数量不能大于20
130 | *
131 | * https://www.youzanyun.com/apilist/detail/group_scrm/user/youzan.users.weixin.follower.tags.delete
132 | *
133 | * @param weixinOpenid 微信粉丝用户的openid
134 | * @param fansId 微信粉丝用户ID。 调用时,参数 weixin_openid 和 fans_id 选其一即可
135 | * @param tags 标签名,多个标签名用“,”分隔
136 | * @return 删除是否成功
137 | */
138 | Boolean tagDelete(String weixinOpenid, Integer fansId, String[] tags);
139 | }
140 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/umpgroup/coupon/entity/CouponGroup.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.umpgroup.coupon.entity;
2 |
3 | import java.util.Date;
4 |
5 | /**
6 | * 优惠劵(码)组。当用户领取时,会生成 {@link Coupon} 优惠劵(码)。
7 | */
8 | public class CouponGroup {
9 |
10 | // ========== 基本信息 BEGIN ==========
11 | /**
12 | * 编号,自增唯一。
13 | */
14 | private Integer id;
15 | /**
16 | * 店铺编号
17 | */
18 | private Integer shopId;
19 | /**
20 | * 别名
21 | *
22 | * 系统生成,作为唯一标识。例如,2fpa62tbmsl9h
23 | * 可以用于生成优惠券(码)领取链接,例如,https://wap.youzan.com/v2/showcase/coupon/fetch?alias=17xcvjbd8
24 | */
25 | private String alias;
26 | /**
27 | * 标题
28 | */
29 | private String title;
30 | /**
31 | * 使用说明
32 | */
33 | private String description;
34 | /**
35 | * 类型
36 | *
37 | * 1-优惠劵
38 | * 2-优惠码
39 | */
40 | private Integer type;
41 | /**
42 | * 创建时间
43 | */
44 | private Date createTime;
45 | /**
46 | * 更新时间
47 | */
48 | private Date updateTime;
49 | /**
50 | * 优惠码状态
51 | *
52 | * 1-生效中
53 | * 2-已失效
54 | * 3-已过期
55 | * 4-已删除
56 | *
57 | * 当优惠劵(码)有效时,可以手动操作,设置成无效。
58 | */
59 | private Integer status;
60 | /**
61 | * 是否可分享领取链接
62 | */
63 | private Boolean isShare;
64 | /**
65 | * 设置为失效时间
66 | */
67 | private Date invalidTime;
68 | /**
69 | * 删除时间
70 | */
71 | private Date deleteTime;
72 |
73 | // ========== 基本信息 END ==========
74 |
75 | // ========== 码信息 BEGIN ==========
76 | /**
77 | * 码类型
78 | *
79 | * 1-一卡一码(UNIQUE)
80 | * 2-通用码(GENERAL)
81 | *
82 | * 【优惠码独有】
83 | */
84 | private Integer codeType;
85 | /**
86 | * 优惠码
87 | *
88 | * 【优惠码独有】
89 | */
90 | private String code;
91 | // ========== 码信息 END ==========
92 |
93 | // ========== 领取规则 BEGIN ==========
94 | /**
95 | * 是否限制领用者的等级
96 | *
97 | * 0-不限制
98 | * 大于0-领用者必须是这个等级编号
99 | *
100 | * 【优惠劵独有】
101 | */
102 | private Integer needUserLevel;
103 | /**
104 | * 每人限领个数
105 | *
106 | * 0-则表示不限制
107 | */
108 | private Integer quota;
109 | /**
110 | * 剩余可用库存
111 | */
112 | private Integer stock;
113 | /**
114 | * 总库存
115 | */
116 | private Integer total;
117 | /**
118 | * 领取优惠券要给用户打上的标签的列表,使用逗号分隔标签编号
119 | */
120 | private String markTags;
121 | // ========== 领取规则 END ==========
122 |
123 | // ========== 使用规则 BEGIN ==========
124 | /**
125 | * 是否仅原价购买商品时可用
126 | *
127 | * true-是
128 | * false-否
129 | */
130 | private Boolean isForbidPreference;
131 | /**
132 | * 是否设置满多少金额可用,单位:分
133 | *
134 | * 0-不限制
135 | * 大于0-多少金额可用
136 | */
137 | private Integer condition;
138 | /**
139 | * 可用范围的类型
140 | *
141 | * 1-部分(ALL):全部商品可用
142 | * 2-全部(PART):部分商品可用,或指定商品可用
143 | */
144 | private Integer rangeType;
145 | /**
146 | * 指定可用商品列表,使用逗号分隔商品编号 {@link cn.iocoder.doraemon.itemgroup.item.entity.Item#id}
147 | */
148 | private String rangeValues;
149 | /**
150 | * 生效日期类型
151 | *
152 | * 1-固定日期
153 | * 2-领取日期:领到券 {@link #fixedBeginTerm} 日开始 N 天内有效
154 | */
155 | private Integer dateType;
156 | /**
157 | * 固定日期-生效开始时间
158 | */
159 | private Date validStartTime;
160 | /**
161 | * 固定日期-生效结束时间
162 | */
163 | private Date validEndTime;
164 | /**
165 | * 领取日期-开始天数
166 | *
167 | * 例如,0-当天;1-次天
168 | */
169 | private Integer fixedBeginTerm;
170 | /**
171 | * 领取日期-结束天数
172 | */
173 | private Integer fixedTerm;
174 | /**
175 | * 是否到期前4天发送提醒
176 | *
177 | * true-发送
178 | * false-不发送
179 | */
180 | private Boolean expireNotice;
181 | // ========== 使用规则 END ==========
182 |
183 | // ========== 使用效果 BEGIN ==========
184 | /**
185 | * 优惠类型
186 | *
187 | * 1-代金卷
188 | * 2-折扣卷 【优惠劵独有】
189 | */
190 | private Integer preferentialType;
191 | /**
192 | * 折扣。例如,80% 为 80。
193 | *
194 | *【优惠劵独有】
195 | */
196 | private Integer discount;
197 | /**
198 | * 是否是随机优惠券
199 | *
200 | * true-随机
201 | * false-不随机
202 | *
203 | * 【优惠劵独有】
204 | */
205 | private Boolean isRandom;
206 | /**
207 | * 优惠金额,单位:分
208 | *
209 | * 当 {@link #isRandom} 为 true 时,代表随机优惠金额的下限
210 | */
211 | private Integer value;
212 | /**
213 | * 优惠金额上限
214 | *
215 | * 【优惠劵独有】
216 | */
217 | private Integer valueRandomTo;
218 | // ========== 使用效果 END ==========
219 |
220 | // ========== 统计信息 BEGIN ==========
221 | /**
222 | * 领取优惠券的人数
223 | */
224 | private Integer statFetchUserNum;
225 | /**
226 | * 领取优惠券的次数
227 | */
228 | private Integer statFetchNum;
229 | /**
230 | * 使用优惠券的次数
231 | */
232 | private Integer statUseNum;
233 | // ========== 统计信息 END ==========
234 |
235 | // ========== 微信卡卷 BEGIN ==========
236 | /**
237 | * 是否同步微信卡券
238 | *
239 | * true-是
240 | * false-否
241 | */
242 | private Boolean isSyncWeixin;
243 | /**
244 | * 同步微信卡券,选择的卡券颜色的值。
245 | *
246 | * 例如,Color10
247 | */
248 | private String weixinColor;
249 | /**
250 | * 同步微信卡券,选择的卡券颜色的RGB值
251 | *
252 | * 例如,#ffaaff
253 | */
254 | private String weixinColorRGB;
255 | /**
256 | * 同步微信卡券,卡券的标题
257 | */
258 | private String weixinTitle;
259 | /**
260 | * 同步微信卡券,卡券的副标题
261 | */
262 | private String weixinSubTitle;
263 | /**
264 | * 同步微信卡券,卡券的客服电话
265 | */
266 | private String servicePhone;
267 | /**
268 | * 同步微信卡券,设置是否可以转赠
269 | *
270 | * true-可以
271 | * false-不可以
272 | */
273 | private Boolean canGiveFriend;
274 | // ========== 微信卡卷 END ==========
275 |
276 | }
277 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/tradegroup/refund/TradeRefundAPI.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.tradegroup.refund;
2 |
3 | import cn.iocoder.doraemon.tradegroup.refund.entity.TradeRefund;
4 | import com.youzan.open.sdk.gen.v3_0_0.model.*;
5 |
6 | import java.util.List;
7 |
8 | /**
9 | * 退款维权 API
10 | */
11 | public interface TradeRefundAPI {
12 |
13 | // ======== 退款(买家) BEGIN ========
14 |
15 | /**
16 | * 退款申请条件信息获取
17 | *
18 | * https://www.youzanyun.com/apilist/detail/group_buyer/buyer_refund/youzan.trade.refund.condition.get
19 | *
20 | * @param tid 交易编号
21 | * @param oid 交易明细编号
22 | * @return 退款条件信息
23 | */
24 | YouzanTradeRefundConditionGetResult getCondition(String tid, Integer oid);
25 |
26 | /**
27 | * 买家申请退款
28 | *
29 | * https://www.youzanyun.com/apilist/detail/group_buyer/buyer_refund/youzan.trade.refund.apply
30 | *
31 | * 注意:实际从有赞商城页面看到,还有两个字段:
32 | * 1. 选择退货是,有字段【是否收到货物】
33 | * 2. 图片举证数组
34 | *
35 | * @param tid 交易编号
36 | * @param oid 交易明细编号
37 | * @param refundFee 退款金额
38 | * @param returnItem 是否退货 false(仅退款) true(退货退款)
39 | * @param mobile 手机号
40 | * @param reason 退款原因,原因列表地址:https://www.youzanyun.com/docs/guide/faq/699
41 | * @param desc 退款说明,备注
42 | * @return 是否成功
43 | */
44 | YouzanTradeRefundApplyResult apply(String tid, String oid, Integer refundFee, Boolean returnItem, String mobile,
45 | Integer reason, String desc);
46 |
47 | /**
48 | * 买家修改申请
49 | *
50 | * https://www.youzanyun.com/apilist/detail/group_buyer/buyer_refund/youzan.trade.refund.modify
51 | *
52 | * @param refundId 退款ID
53 | * @param version 版本号,见 {@link TradeRefund#version}
54 | * @param refundFee 退款金额
55 | * @param returnItem 是否退货 false(仅退款) true(退货退款)
56 | * @param reason 退款原因,原因列表地址:https://www.youzanyun.com/docs/guide/faq/699
57 | * @param desc 退款说明,备注
58 | * @return 是否成功
59 | */
60 | YouzanTradeRefundModifyResult modify(String refundId, Integer version, Integer refundFee, Boolean returnItem,
61 | Integer reason, String desc);
62 |
63 | /**
64 | * 买家撤销退款申请
65 | *
66 | * https://www.youzanyun.com/apilist/detail/group_buyer/buyer_refund/youzan.trade.refund.close
67 | *
68 | * @param refundId 退款ID
69 | * @param version 版本号,见 {@link TradeRefund#version}
70 | * @return 是否成功
71 | */
72 | Boolean close(String refundId, Integer version);
73 |
74 | /**
75 | * 买家申请客服介入
76 | *
77 | * https://www.youzanyun.com/apilist/detail/group_buyer/buyer_refund/youzan.trade.refund.intervene
78 | *
79 | * @param refundId 退款ID
80 | * @param version 版本号,见 {@link TradeRefund#version}
81 | * @param remark 申请理由
82 | * @return 是否成功
83 | */
84 | Boolean intervene(String refundId, Integer version, String remark);
85 |
86 | // ======== 退款(卖家) BEGIN ========
87 |
88 | /**
89 | * 商家同意退款
90 | *
91 | * https://www.youzanyun.com/apilist/detail/group_trade/trade_advanced/youzan.trade.refund.agree
92 | *
93 | * @param refundId 退款ID
94 | * @param version 版本号,见 {@link TradeRefund#version}
95 | * @return 是否成功
96 | */
97 | Boolean agress(String refundId, Integer version);
98 |
99 | /**
100 | * 商家拒绝退款
101 | *
102 | * https://www.youzanyun.com/apilist/detail/group_trade/trade_advanced/youzan.trade.refund.refuse
103 | *
104 | * @param refundId 退款ID
105 | * @param version 版本号,见 {@link TradeRefund#version}
106 | * @return 是否成功
107 | */
108 | Boolean refuse(String refundId, Integer version);
109 |
110 | /**
111 | * 查看退款详情
112 | *
113 | * https://www.youzanyun.com/apilist/detail/group_trade/trade_advanced/youzan.trade.refund.get
114 | *
115 | * @param refundId efundId 退款ID
116 | * @return 退款详情
117 | */
118 | YouzanTradeRefundGetResult get(String refundId);
119 |
120 | // ======== 退货(买家) BEGIN ========
121 |
122 | /**
123 | * 上传退货物流信息
124 | *
125 | * https://www.youzanyun.com/apilist/detail/group_buyer/buyer_refund/youzan.trade.returngoods.fill
126 | *
127 | * @param refundId 退款ID
128 | * @param version 版本号,见 {@link TradeRefund#version}
129 | * @param expressId 物流公司编号
130 | * @param nu 物流运单号
131 | * @return 是否成功
132 | */
133 | Boolean fillItem(String refundId, Integer version, Integer expressId, String nu);
134 |
135 | // ======== 退货(卖家) BEGIN ========
136 |
137 | /**
138 | * 商家同意退货
139 | *
140 | * https://www.youzanyun.com/apilist/detail/group_trade/trade_advanced/youzan.trade.returngoods.agree
141 | *
142 | * @param refundId 退款编号
143 | * @param version 版本号,见 {@link TradeRefund#version}
144 | * @param name 收件人(卖家)名
145 | * @param mobile 收件人(卖家)手机号
146 | * @param tel 收件人(卖家)座机
147 | * @param regionId 收件人(卖家)收获地区编号
148 | * @param address 收件人(卖家)收获地址
149 | * @param remark 说明
150 | * @return 是否成功
151 | */
152 | YouzanTradeRefundAgreeResult agree(String refundId, Integer version, String name, String mobile, String tel,
153 | Integer regionId, String address, String remark);
154 |
155 | /**
156 | * 商家拒绝退货
157 | *
158 | * https://www.youzanyun.com/apilist/detail/group_trade/trade_advanced/youzan.trade.returngoods.refuse
159 | *
160 | * @param refundId 退款编号
161 | * @param version 版本号,见 {@link TradeRefund#version}
162 | * @param remark 说明
163 | * @return 是否成功
164 | */
165 | YouzanTradeRefundRefuseResult refuse(String refundId, Integer version, String remark);
166 |
167 | // ======== 消息(卖家) BEGIN ========
168 |
169 | /**
170 | * 查看退款操作信息数组
171 | *
172 | * https://www.youzanyun.com/apilist/detail/group_trade/trade_advanced/youzan.trade.refund.messages.get
173 | *
174 | * @param refundId 退款编号
175 | * @return 退款操作信息数组
176 | */
177 | List messageGets(String refundId);
178 |
179 | }
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/tradegroup/trade/entity/Trade.java:
--------------------------------------------------------------------------------
1 | package cn.iocoder.doraemon.tradegroup.trade.entity;
2 |
3 | import java.util.Date;
4 |
5 | /**
6 | * 交易
7 | */
8 | public class Trade {
9 |
10 | // ========= 基础字段 BEGIN =========
11 |
12 | /**
13 | * 交易编号
14 | *
15 | * 唯一,例如:E20180125232933007700006
16 | */
17 | private String id;
18 | /**
19 | * 店铺编号
20 | */
21 | private Integer shopId;
22 | /**
23 | * 交易类型
24 | *
25 | * 0:FIXED (一口价)
26 | * 1:GIFT (送礼) // TODO 子订单
27 | * 2:BULK_PURCHASE(来自分销商的采购)
28 | * 3:PRESENT (赠品领取)
29 | * 4:GROUP (拼团订单)
30 | * 5:PIFA (批发订单)
31 | * 6:COD (货到付款)
32 | * 7:PEER (代付)
33 | * 8:QRCODE(扫码商家二维码直接支付的交易)
34 | * 9:QRCODE_3RD(线下收银台二维码交易)
35 | */
36 | private Integer type;
37 | /**
38 | * 交易主状态。
39 | *
40 | * TODO 芋艿:TRADE_NO_CREATE_PAY (没有创建支付交易)
41 | * 3:WAIT_BUYER_PAY (等待买家付款)
42 | * TODO 芋艿:WAIT_PAY_RETURN (等待支付确认)
43 | * TODO 芋艿:WAIT_GROUP(等待成团,即:买家已付款,等待成团)
44 | * 5:WAIT_SELLER_SEND_GOODS (等待卖家发货,即:买家已付款)
45 | * 6:WAIT_BUYER_CONFIRM_GOODS (等待买家确认收货,即:卖家已发货)
46 | * 100:TRADE_BUYER_SIGNED (买家已签收,即:交易已完成)
47 | * 99:TRADE_CLOSED (付款以后用户退款成功或者付款超时或商家取消,即:交易已关闭)
48 | */
49 | private Integer status;
50 | /**
51 | * 交易创建时间
52 | */
53 | private Date createTime;
54 | /**
55 | * 交易更新时间。
56 | *
57 | * 当交易的:状态改变、备注更改、星标更改 等情况下都会刷新更新时间
58 | */
59 | private Date updateTime;
60 | /**
61 | * 关闭类型
62 | *
63 | * 1-超时未支付
64 | * 2-退款关闭
65 | * 4-买家取消
66 | * 15-已通过货到付款交易
67 | * ... 可能还有其他关闭原因
68 | */
69 | private Integer closeType;
70 | /**
71 | * 关闭时间
72 | */
73 | private Date closeTime;
74 |
75 | // ========= 基础字段 END =========
76 |
77 | // ========= 买家信息 BEGIN =========
78 | /**
79 | * 买家用户编号
80 | */
81 | private Integer buyerId;
82 | // @JsonProperty(value = "fans_info")
83 | // /**
84 | // * 用户信息
85 | // */
86 | // private YouzanTradeGetResult.FansInfo fansInfo;
87 | // /**
88 | // * 三方APP用户id
89 | // */
90 | // private String outerUserId;
91 | /**
92 | * 买家购买附言
93 | */
94 | private String buyerMessage;
95 |
96 | // ========= 买家信息 END =========
97 |
98 | // ========= 收货人 && 物流信息 BEGIN =========
99 | /**
100 | * 收货人的地址编号
101 | *
102 | * 当无需物流时,该字段为零
103 | */
104 | private Integer receiverAddressId;
105 | /**
106 | * 收货人的姓名
107 | */
108 | private String receiverName;
109 | /**
110 | * 收货人的地区编号
111 | */
112 | private Integer receiverPlace;
113 | /**
114 | * 收货人的详细地址
115 | */
116 | private String receiverAddress;
117 | /**
118 | * 收货人的邮编
119 | */
120 | private String receiverZip;
121 | /**
122 | * 创建交易时的物流方式。
123 | *
124 | * 取值范围:
125 | * 1:express(快递)
126 | * 2:fetch(到店自提)
127 | * 3:local(同城配送)
128 | */
129 | private Integer shippingType;
130 | /**
131 | * 卖家发货时间
132 | */
133 | private Date consignTime;
134 | /**
135 | * 买家签收时间
136 | */
137 | private Date signTime;
138 | /**
139 | * 收货地址的纬度
140 | */
141 | private Double receiverLat;
142 | /**
143 | * 收货地址的经度
144 | */
145 | private Double receiverLng;
146 | /**
147 | * 同城送订单送达开始时间
148 | */
149 | private Date deliveryStartTime;
150 | /**
151 | * 同城送订单送达结束时间
152 | */
153 | private Date deliveryEndTime;
154 |
155 | // ========= 收货人信息 END =========
156 |
157 | // ========= 卖家信息 BEGIN =========
158 | /**
159 | * 卖家对该交易的备注
160 | */
161 | private String tradeMemo;
162 | /**
163 | * 卖家备注星标。
164 | *
165 | * 取值范围 1、2、3、4、5;
166 | * 如果为0,表示没有备注星标
167 | */
168 | private Integer sellerFlag;
169 | // ========= 卖家信息 END =========
170 |
171 | // ========= 商品信息 BEGIN =========
172 | /**
173 | * 商品购买数量。
174 | *
175 | * 当一个 trade 对应多个 order 的时候,值为所有商品购买数量之和
176 | */
177 | private Integer num;
178 | /**
179 | * 商品购买种类
180 | *
181 | * 当一个 trade 对应多个 order 的时候,值为 order 的数量
182 | */
183 | private Integer kind;
184 | /**
185 | * 商品数字编号。
186 | *
187 | * 当一个trade对应多个order的时候,值为第一个交易明细中的商品的编号
188 | */
189 | private Integer itemId;
190 | /**
191 | * 商品价格,单位:分。
192 | *
193 | * 当一个trade对应多个order的时候,值为第一个交易明细中的商品的价格
194 | */
195 | private Integer price;
196 | /**
197 | * 商品主图片地址。
198 | *
199 | * 当一个trade对应多个order的时候,值为第一个交易明细中的商品的图片地址
200 | */
201 | private String picPath;
202 | /**
203 | * 交易标题。
204 | *
205 | * 以首个商品标题作为此标题的值
206 | */
207 | private String title;
208 | // ========= 商品信息 END =========
209 |
210 | // ========= 退款维权 BEGIN =========
211 | /**
212 | * 交易维权状态。
213 | *
214 | * 0 无维权,
215 | * 1 顾客发起维权,
216 | * 2 顾客拒绝商家的处理结果,
217 | * 3 顾客接受商家的处理结果,
218 | * 9 商家正在处理;
219 | *
220 | * 101 维权处理中,
221 | * 110 维权结束;
222 | *
223 | * 备注:1到10的状态码是微信维权状态码,100以上的状态码是有赞维权状态码
224 | */
225 | private Integer feedback;
226 | /**
227 | * 处于交易维权状态的订单数
228 | */
229 | private Integer feedbackNum;
230 | /**
231 | * 退款状态。
232 | *
233 | * 0 - NO_REFUND(无退款)
234 | * 1 - PARTIAL_REFUNDING(部分退款中)
235 | * 2 - PARTIAL_REFUNDED(已部分退款)
236 | * 3 - PARTIAL_REFUND_FAILED(部分退款失败)
237 | * 11 - FULL_REFUNDING(全额退款中)
238 | * 12 - FULL_REFUNDED(已全额退款)
239 | * 13 - FULL_REFUND_FAILED(全额退款失败)
240 | */
241 | private Integer refundStatus;
242 | // ========= 退款维权 END =========
243 |
244 | // ========= 支付信息 BEGIN =========
245 | /**
246 | * 买家付款时间
247 | */
248 | private Date payTime;
249 | /**
250 | * 支付类型。
251 | *
252 | * 取值范围:
253 | * 1-WEIXIN (微信自有支付)
254 | * 2-WEIXIN_DAIXIAO (微信代销支付)
255 | * 3-ALIPAY (支付宝支付)
256 | * 4-BANKCARDPAY (银行卡支付)
257 | * 5-PEERPAY (代付)
258 | * 6-CODPAY (货到付款)
259 | * 7-BAIDUPAY (百度钱包支付)
260 | * 8-PRESENTTAKE (直接领取赠品)
261 | * 9-COUPONPAY(优惠券/码全额抵扣)
262 | * 10-BULKPURCHASE(来自分销商的采购)
263 | * 11-MERGEDPAY (合并付货款)
264 | * 12-ECARD(有赞E卡支付)
265 | * 13-PREPAIDCARD (储值卡支付)
266 | * 14-MARKPAY (标记支付)
267 | * 15-OFCASH (现金支付)
268 | */
269 | private Integer payType;
270 | /**
271 | * 外部交易编号。
272 | *
273 | * 比如,如果支付方式是微信支付,就是财付通的交易单号
274 | */
275 | private String outerTid;
276 | /**
277 | * 支付流水号(支付单号)
278 | */
279 | private String transactionTid;
280 | // ========= 支付信息 END =========
281 |
282 | // ========= 优惠信息 BEGIN =========
283 |
284 | // @JsonProperty(value = "coupon_details")
285 | // /**
286 | // * 订单中使用到的卡券的数据结构
287 | // */
288 | // private YouzanTradeGetResult.UmpTradeCoupon[] couponDetails;
289 | // @JsonProperty(value = "promotion_details")
290 | // /**
291 | // * 订单中使用到的优惠活动的数据结构
292 | // */
293 | // private YouzanTradeGetResult.TradePromotion[] promotionDetails;
294 |
295 | // ========= 优惠信息 END =========
296 |
297 | // ========= 价格信息 BEGIN =========
298 | /**
299 | * 商品总价(商品价格乘以数量的总金额)。单位:分
300 | */
301 | private Integer totalFee;
302 | /**
303 | * 运费。单位:分
304 | */
305 | private Integer postFee;
306 | /**
307 | * 交易优惠金额(不包含交易明细中的优惠金额)。单位:分
308 | *
309 | * 【不包括】例如,购买的商品参加限制折扣活动 https://help.youzan.com/qa#/menu/2189/detail/919?_k=00rukd
310 | * 【包括】】另外,购买的商品使用优惠劵 https://help.youzan.com/qa#/menu/2185/detail/915?_k=lih1k9
311 | */
312 | private Integer discountFee;
313 | /**
314 | * 实付金额。单位:分
315 | */
316 | private Integer payment;
317 | /**
318 | * 交易完成后退款的金额。单位:分
319 | */
320 | private Integer refundedFee;
321 | // ========= 价格信息 END =========
322 |
323 |
324 | // /**
325 | // * 到店自提详情
326 | // */
327 | // private YouzanTradeGetResult.TradeFetch fetchDetail;
328 |
329 |
330 | // /**
331 | // * 发票抬头
332 | // */
333 | // private String invoiceTitle;
334 |
335 |
336 |
337 |
338 | // /**
339 | // * 交易明细数据结构
340 | // */
341 | // private YouzanTradeGetResult.TradeOrderV2[] orders;
342 | // @JsonProperty(value = "fetch_detail")
343 |
344 |
345 |
346 | // @JsonProperty(value = "hotel_info")
347 | // /**
348 | // * 酒店入住信息
349 | // */
350 | // private YouzanTradeGetResult.HotelInfo hotelInfo;
351 |
352 |
353 | // @JsonProperty(value = "sub_trades")
354 | // /**
355 | // * 交易数据结构
356 | // */
357 | // private YouzanTradeGetResult.TradeDetailV2[] subTrades;
358 | // @JsonProperty(value = "relation_type")
359 | // /** TODO 芋艿,等分销
360 | // * 分销/采购单:source:采购单;fenxiao:分销单 空串则为非分销/采购单
361 | // */
362 | // private String relationType;
363 | // @JsonProperty(value = "relations")
364 | // /**
365 | // * relation_type返回source时,为分销订单号列表
366 | // 返回fenxiao时,为供应商订单号列表
367 | // 返回空时,列表返回空
368 | // */
369 | // private String[] relations;
370 | // @JsonProperty(value = "out_trade_no")
371 | // /**
372 | // * 代付订单外部交易号列表,非代付订单类型返回空
373 | // */
374 | // private String[] outTradeNo;
375 | // @JsonProperty(value = "profit")
376 | // /**
377 | // * 利润(分销订单特有)。格式:5.20;单位:元;精确到:分
378 | // */
379 | // private Float profit;
380 | // @JsonProperty(value = "handled")
381 | // /**
382 | // * 结算状态(分销订单特有)。1:已结算,0:未结算
383 | // */
384 | // private Long handled;
385 | // @JsonProperty(value = "outer_user_id")
386 |
387 |
388 | // @JsonProperty(value = "shop_id")
389 | // /**
390 | // * 多门店订单的门店id 非多门店订单则默认为0
391 | // */
392 | // private Long shopId;
393 | // @JsonProperty(value = "offline_id")
394 | // /**
395 | // * 表示线下网点id,包含自提点和门店
396 | // */
397 | // private Long offlineId;
398 | // @JsonProperty(value = "points_price")
399 | // /**
400 | // * 积分兑换订单,数值代表消耗的积分 非积分兑换订单默认为0
401 | // */
402 | // private Long pointsPrice;
403 | // @JsonProperty(value = "tuan_no")
404 | // /**
405 | // * 拼团订单对应的团编号
406 | // */
407 | // private String tuanNo;
408 | // @JsonProperty(value = "is_tuan_head")
409 | // /**
410 | // * 是否为团长订单 1 团长订单 0 非拼团订单 或 非团长订单
411 | // */
412 | // private Long isTuanHead;
413 | // @JsonProperty(value = "qr_id")
414 | // /**
415 | // * 收银台订单的二维码id号
416 | // */
417 | // private Long qrId;
418 |
419 |
420 |
421 | // @JsonProperty(value = "id_card_number")
422 | // /**
423 | // * 海淘订单身份证信息
424 | // */
425 | // private String idCardNumber;
426 | // @JsonProperty(value = "period_order_detail")
427 | // /**
428 | // * 周期购信息
429 | // */
430 | // private YouzanTradeGetResult.TradePeriodBuy periodOrderDetail;
431 |
432 |
433 |
434 | // @JsonProperty(value = "box_price")
435 |
436 | // /**
437 | // * 餐盒费
438 | // */
439 | // private Float boxPrice;
440 | // @JsonProperty(value = "invoice_title")
441 |
442 | }
443 |
--------------------------------------------------------------------------------
/src/main/java/cn/iocoder/doraemon/tradegroup/delivery/entity/youzan_express.json:
--------------------------------------------------------------------------------
1 | {
2 | "response": {
3 | "allExpress": [
4 | {
5 | "display": 1,
6 | "name": "申通快递",
7 | "id": 1
8 | },
9 | {
10 | "display": 1,
11 | "name": "圆通速递",
12 | "id": 2
13 | },
14 | {
15 | "display": 1,
16 | "name": "中通快递",
17 | "id": 3
18 | },
19 | {
20 | "display": 1,
21 | "name": "韵达快递",
22 | "id": 4
23 | },
24 | {
25 | "display": 1,
26 | "name": "天天快递",
27 | "id": 5
28 | },
29 | {
30 | "display": 1,
31 | "name": "百世快递",
32 | "id": 6
33 | },
34 | {
35 | "display": 1,
36 | "name": "顺丰速运",
37 | "id": 7
38 | },
39 | {
40 | "display": 1,
41 | "name": "邮政快递包裹",
42 | "id": 8
43 | },
44 | {
45 | "display": 0,
46 | "name": "EMS经济快递",
47 | "id": 10
48 | },
49 | {
50 | "display": 1,
51 | "name": "EMS",
52 | "id": 11
53 | },
54 | {
55 | "display": 0,
56 | "name": "邮政平邮",
57 | "id": 12
58 | },
59 | {
60 | "display": 0,
61 | "name": "德邦快递",
62 | "id": 13
63 | },
64 | {
65 | "display": 1,
66 | "name": "联昊通",
67 | "id": 16
68 | },
69 | {
70 | "display": 1,
71 | "name": "全峰快递",
72 | "id": 17
73 | },
74 | {
75 | "display": 1,
76 | "name": "全一快递",
77 | "id": 18
78 | },
79 | {
80 | "display": 1,
81 | "name": "城市100",
82 | "id": 19
83 | },
84 | {
85 | "display": 1,
86 | "name": "汇强快递",
87 | "id": 20
88 | },
89 | {
90 | "display": 1,
91 | "name": "广东EMS",
92 | "id": 21
93 | },
94 | {
95 | "display": 1,
96 | "name": "速尔",
97 | "id": 22
98 | },
99 | {
100 | "display": 1,
101 | "name": "飞康达速运",
102 | "id": 23
103 | },
104 | {
105 | "display": 1,
106 | "name": "宅急送",
107 | "id": 25
108 | },
109 | {
110 | "display": 1,
111 | "name": "联邦快递",
112 | "id": 27
113 | },
114 | {
115 | "display": 1,
116 | "name": "德邦物流",
117 | "id": 28
118 | },
119 | {
120 | "display": 1,
121 | "name": "中铁快运",
122 | "id": 30
123 | },
124 | {
125 | "display": 1,
126 | "name": "信丰物流",
127 | "id": 31
128 | },
129 | {
130 | "display": 1,
131 | "name": "龙邦速递",
132 | "id": 32
133 | },
134 | {
135 | "display": 1,
136 | "name": "天地华宇",
137 | "id": 33
138 | },
139 | {
140 | "display": 1,
141 | "name": "快捷速递",
142 | "id": 34
143 | },
144 | {
145 | "display": 1,
146 | "name": "新邦物流",
147 | "id": 36
148 | },
149 | {
150 | "display": 1,
151 | "name": "能达速递",
152 | "id": 37
153 | },
154 | {
155 | "display": 1,
156 | "name": "优速快递",
157 | "id": 38
158 | },
159 | {
160 | "display": 1,
161 | "name": "国通快递",
162 | "id": 40
163 | },
164 | {
165 | "display": 1,
166 | "name": "其他",
167 | "id": 41
168 | },
169 | {
170 | "display": 0,
171 | "name": "顺丰快递",
172 | "id": 42
173 | },
174 | {
175 | "display": 1,
176 | "name": "AAE",
177 | "id": 43
178 | },
179 | {
180 | "display": 1,
181 | "name": "安信达",
182 | "id": 44
183 | },
184 | {
185 | "display": 1,
186 | "name": "百福东方",
187 | "id": 45
188 | },
189 | {
190 | "display": 1,
191 | "name": "BHT",
192 | "id": 46
193 | },
194 | {
195 | "display": 1,
196 | "name": "邦送物流",
197 | "id": 47
198 | },
199 | {
200 | "display": 1,
201 | "name": "传喜物流",
202 | "id": 48
203 | },
204 | {
205 | "display": 1,
206 | "name": "大田物流",
207 | "id": 49
208 | },
209 | {
210 | "display": 1,
211 | "name": "D速快递",
212 | "id": 50
213 | },
214 | {
215 | "display": 1,
216 | "name": "递四方",
217 | "id": 51
218 | },
219 | {
220 | "display": 0,
221 | "name": "飞康达物流",
222 | "id": 52
223 | },
224 | {
225 | "display": 1,
226 | "name": "飞快达",
227 | "id": 53
228 | },
229 | {
230 | "display": 1,
231 | "name": "如风达",
232 | "id": 54
233 | },
234 | {
235 | "display": 1,
236 | "name": "风行天下",
237 | "id": 55
238 | },
239 | {
240 | "display": 1,
241 | "name": "飞豹快递",
242 | "id": 56
243 | },
244 | {
245 | "display": 1,
246 | "name": "港中能达",
247 | "id": 57
248 | },
249 | {
250 | "display": 1,
251 | "name": "广东邮政",
252 | "id": 58
253 | },
254 | {
255 | "display": 1,
256 | "name": "共速达",
257 | "id": 59
258 | },
259 | {
260 | "display": 1,
261 | "name": "汇通快运",
262 | "id": 60
263 | },
264 | {
265 | "display": 0,
266 | "name": "华宇物流",
267 | "id": 61
268 | },
269 | {
270 | "display": 1,
271 | "name": "恒路物流",
272 | "id": 62
273 | },
274 | {
275 | "display": 1,
276 | "name": "华夏龙",
277 | "id": 63
278 | },
279 | {
280 | "display": 1,
281 | "name": "海航天天",
282 | "id": 64
283 | },
284 | {
285 | "display": 1,
286 | "name": "海盟速递",
287 | "id": 65
288 | },
289 | {
290 | "display": 1,
291 | "name": "华企快运",
292 | "id": 66
293 | },
294 | {
295 | "display": 1,
296 | "name": "山东海红",
297 | "id": 67
298 | },
299 | {
300 | "display": 1,
301 | "name": "佳吉物流",
302 | "id": 68
303 | },
304 | {
305 | "display": 1,
306 | "name": "佳怡物流",
307 | "id": 69
308 | },
309 | {
310 | "display": 1,
311 | "name": "加运美",
312 | "id": 70
313 | },
314 | {
315 | "display": 1,
316 | "name": "京广速递",
317 | "id": 71
318 | },
319 | {
320 | "display": 1,
321 | "name": "急先达",
322 | "id": 72
323 | },
324 | {
325 | "display": 1,
326 | "name": "晋越快递",
327 | "id": 73
328 | },
329 | {
330 | "display": 1,
331 | "name": "捷特快递",
332 | "id": 74
333 | },
334 | {
335 | "display": 1,
336 | "name": "金大物流",
337 | "id": 75
338 | },
339 | {
340 | "display": 1,
341 | "name": "嘉里大通",
342 | "id": 76
343 | },
344 | {
345 | "display": 1,
346 | "name": "康力物流",
347 | "id": 77
348 | },
349 | {
350 | "display": 1,
351 | "name": "跨越物流",
352 | "id": 78
353 | },
354 | {
355 | "display": 1,
356 | "name": "龙邦物流",
357 | "id": 79
358 | },
359 | {
360 | "display": 1,
361 | "name": "蓝镖快递",
362 | "id": 80
363 | },
364 | {
365 | "display": 1,
366 | "name": "隆浪快递",
367 | "id": 81
368 | },
369 | {
370 | "display": 1,
371 | "name": "门对门",
372 | "id": 82
373 | },
374 | {
375 | "display": 1,
376 | "name": "明亮物流",
377 | "id": 83
378 | },
379 | {
380 | "display": 1,
381 | "name": "全晨快递",
382 | "id": 84
383 | },
384 | {
385 | "display": 1,
386 | "name": "全际通",
387 | "id": 85
388 | },
389 | {
390 | "display": 1,
391 | "name": "全日通",
392 | "id": 86
393 | },
394 | {
395 | "display": 0,
396 | "name": "如风达快递",
397 | "id": 87
398 | },
399 | {
400 | "display": 1,
401 | "name": "三态速递",
402 | "id": 88
403 | },
404 | {
405 | "display": 1,
406 | "name": "盛辉物流",
407 | "id": 89
408 | },
409 | {
410 | "display": 0,
411 | "name": "速尔物流",
412 | "id": 90
413 | },
414 | {
415 | "display": 1,
416 | "name": "盛丰物流",
417 | "id": 91
418 | },
419 | {
420 | "display": 1,
421 | "name": "上大物流",
422 | "id": 92
423 | },
424 | {
425 | "display": 1,
426 | "name": "赛澳递",
427 | "id": 94
428 | },
429 | {
430 | "display": 1,
431 | "name": "圣安物流",
432 | "id": 95
433 | },
434 | {
435 | "display": 1,
436 | "name": "穗佳物流",
437 | "id": 96
438 | },
439 | {
440 | "display": 1,
441 | "name": "优速物流",
442 | "id": 97
443 | },
444 | {
445 | "display": 1,
446 | "name": "万家物流",
447 | "id": 98
448 | },
449 | {
450 | "display": 1,
451 | "name": "万象物流",
452 | "id": 99
453 | },
454 | {
455 | "display": 1,
456 | "name": "新蛋奥硕物流",
457 | "id": 100
458 | },
459 | {
460 | "display": 1,
461 | "name": "香港邮政",
462 | "id": 101
463 | },
464 | {
465 | "display": 1,
466 | "name": "运通快递",
467 | "id": 102
468 | },
469 | {
470 | "display": 1,
471 | "name": "远成物流",
472 | "id": 103
473 | },
474 | {
475 | "display": 1,
476 | "name": "亚风速递",
477 | "id": 104
478 | },
479 | {
480 | "display": 1,
481 | "name": "一邦速递",
482 | "id": 105
483 | },
484 | {
485 | "display": 1,
486 | "name": "源伟丰快递",
487 | "id": 106
488 | },
489 | {
490 | "display": 1,
491 | "name": "元智捷诚",
492 | "id": 107
493 | },
494 | {
495 | "display": 1,
496 | "name": "越丰物流",
497 | "id": 108
498 | },
499 | {
500 | "display": 1,
501 | "name": "源安达",
502 | "id": 109
503 | },
504 | {
505 | "display": 1,
506 | "name": "原飞航",
507 | "id": 110
508 | },
509 | {
510 | "display": 1,
511 | "name": "忠信达快递",
512 | "id": 111
513 | },
514 | {
515 | "display": 1,
516 | "name": "芝麻开门",
517 | "id": 112
518 | },
519 | {
520 | "display": 1,
521 | "name": "银捷速递",
522 | "id": 113
523 | },
524 | {
525 | "display": 1,
526 | "name": "中邮物流",
527 | "id": 114
528 | },
529 | {
530 | "display": 1,
531 | "name": "中速快件",
532 | "id": 115
533 | },
534 | {
535 | "display": 1,
536 | "name": "中天万运",
537 | "id": 116
538 | },
539 | {
540 | "display": 1,
541 | "name": "河北建华",
542 | "id": 117
543 | },
544 | {
545 | "display": 1,
546 | "name": "乐捷递",
547 | "id": 118
548 | },
549 | {
550 | "display": 1,
551 | "name": "立即送",
552 | "id": 119
553 | },
554 | {
555 | "display": 1,
556 | "name": "通和天下",
557 | "id": 120
558 | },
559 | {
560 | "display": 1,
561 | "name": "微特派",
562 | "id": 121
563 | },
564 | {
565 | "display": 1,
566 | "name": "一统飞鸿",
567 | "id": 122
568 | },
569 | {
570 | "display": 1,
571 | "name": "郑州建华",
572 | "id": 123
573 | },
574 | {
575 | "display": 1,
576 | "name": "山西红马甲",
577 | "id": 125
578 | },
579 | {
580 | "display": 1,
581 | "name": "陕西黄马甲",
582 | "id": 126
583 | },
584 | {
585 | "display": 1,
586 | "name": "快速递",
587 | "id": 127
588 | },
589 | {
590 | "display": 1,
591 | "name": "安能物流",
592 | "id": 128
593 | },
594 | {
595 | "display": 1,
596 | "name": "新顺丰",
597 | "id": 129
598 | },
599 | {
600 | "display": 1,
601 | "name": "钱报速运",
602 | "id": 130
603 | },
604 | {
605 | "display": 1,
606 | "name": "日日顺",
607 | "id": 131
608 | },
609 | {
610 | "display": 1,
611 | "name": "神盾快运",
612 | "id": 132
613 | },
614 | {
615 | "display": 1,
616 | "name": "京华亿家",
617 | "id": 133
618 | },
619 | {
620 | "display": 1,
621 | "name": "南方传媒物流",
622 | "id": 134
623 | },
624 | {
625 | "display": 1,
626 | "name": "成都商报物流",
627 | "id": 135
628 | },
629 | {
630 | "display": 1,
631 | "name": "冻到家物流",
632 | "id": 136
633 | },
634 | {
635 | "display": 1,
636 | "name": "亚马逊物流",
637 | "id": 137
638 | },
639 | {
640 | "display": 1,
641 | "name": "京东快递",
642 | "id": 138
643 | },
644 | {
645 | "display": 1,
646 | "name": "e邮宝",
647 | "id": 139
648 | },
649 | {
650 | "display": 1,
651 | "name": "思迈",
652 | "id": 140
653 | },
654 | {
655 | "display": 1,
656 | "name": "UPS",
657 | "id": 141
658 | },
659 | {
660 | "display": 1,
661 | "name": "南京100",
662 | "id": 142
663 | },
664 | {
665 | "display": 1,
666 | "name": "民航快递",
667 | "id": 143
668 | },
669 | {
670 | "display": 1,
671 | "name": "贝海国际速递",
672 | "id": 144
673 | },
674 | {
675 | "display": 1,
676 | "name": "CJ物流",
677 | "id": 145
678 | },
679 | {
680 | "display": 1,
681 | "name": "央广购物",
682 | "id": 146
683 | },
684 | {
685 | "display": 1,
686 | "name": "易时联国际速递",
687 | "id": 147
688 | },
689 | {
690 | "display": 1,
691 | "name": "风先生",
692 | "id": 148
693 | },
694 | {
695 | "display": 1,
696 | "name": "耀启物流",
697 | "id": 149
698 | },
699 | {
700 | "display": 1,
701 | "name": "内蒙EMS",
702 | "id": 150
703 | },
704 | {
705 | "display": 1,
706 | "name": "小红帽",
707 | "id": 151
708 | },
709 | {
710 | "display": 1,
711 | "name": "PCA",
712 | "id": 152
713 | },
714 | {
715 | "display": 1,
716 | "name": "诚义物流",
717 | "id": 153
718 | },
719 | {
720 | "display": 1,
721 | "name": "秦远国际物流",
722 | "id": 154
723 | },
724 | {
725 | "display": 1,
726 | "name": "万家康快递",
727 | "id": 155
728 | },
729 | {
730 | "display": 1,
731 | "name": "澳邮中国快运",
732 | "id": 156
733 | },
734 | {
735 | "display": 1,
736 | "name": "一号线国际速递",
737 | "id": 157
738 | },
739 | {
740 | "display": 1,
741 | "name": "EWE国际物流",
742 | "id": 158
743 | },
744 | {
745 | "display": 1,
746 | "name": "爱送配送",
747 | "id": 159
748 | },
749 | {
750 | "display": 1,
751 | "name": "POSTNZ",
752 | "id": 160
753 | },
754 | {
755 | "display": 1,
756 | "name": "FASTGO",
757 | "id": 161
758 | },
759 | {
760 | "display": 1,
761 | "name": "天越物流",
762 | "id": 162
763 | },
764 | {
765 | "display": 1,
766 | "name": "德中物流",
767 | "id": 163
768 | },
769 | {
770 | "display": 1,
771 | "name": "行必达",
772 | "id": 164
773 | },
774 | {
775 | "display": 1,
776 | "name": "EFS快递",
777 | "id": 165
778 | },
779 | {
780 | "display": 1,
781 | "name": "中邮速递",
782 | "id": 166
783 | },
784 | {
785 | "display": 1,
786 | "name": "一号仓",
787 | "id": 167
788 | },
789 | {
790 | "display": 1,
791 | "name": "速通达跨境物流",
792 | "id": 168
793 | },
794 | {
795 | "display": 1,
796 | "name": "五亨国际",
797 | "id": 170
798 | },
799 | {
800 | "display": 1,
801 | "name": "迅物流",
802 | "id": 171
803 | },
804 | {
805 | "display": 1,
806 | "name": "中环国际_澳洲",
807 | "id": 172
808 | },
809 | {
810 | "display": 1,
811 | "name": "美仓快递",
812 | "id": 173
813 | },
814 | {
815 | "display": 1,
816 | "name": "澳通速递",
817 | "id": 174
818 | },
819 | {
820 | "display": 1,
821 | "name": "济南猎豹速递",
822 | "id": 175
823 | },
824 | {
825 | "display": 1,
826 | "name": "澳运速递",
827 | "id": 176
828 | },
829 | {
830 | "display": 1,
831 | "name": "优达生鲜",
832 | "id": 177
833 | },
834 | {
835 | "display": 1,
836 | "name": "P2UEXPRESS",
837 | "id": 178
838 | },
839 | {
840 | "display": 1,
841 | "name": "黑猫宅急便",
842 | "id": 179
843 | },
844 | {
845 | "display": 1,
846 | "name": "快客快运",
847 | "id": 180
848 | },
849 | {
850 | "display": 1,
851 | "name": "当当物流",
852 | "id": 181
853 | },
854 | {
855 | "display": 1,
856 | "name": "百世快运",
857 | "id": 182
858 | },
859 | {
860 | "display": 1,
861 | "name": "艾瑞斯远",
862 | "id": 183
863 | },
864 | {
865 | "display": 1,
866 | "name": "PCAExpress",
867 | "id": 184
868 | },
869 | {
870 | "display": 1,
871 | "name": "斑马物联网",
872 | "id": 186
873 | },
874 | {
875 | "display": 1,
876 | "name": "泛捷国际速运",
877 | "id": 187
878 | },
879 | {
880 | "display": 1,
881 | "name": "黄马甲快递",
882 | "id": 188
883 | },
884 | {
885 | "display": 1,
886 | "name": "蓝天快递",
887 | "id": 189
888 | },
889 | {
890 | "display": 1,
891 | "name": "银河物流",
892 | "id": 190
893 | },
894 | {
895 | "display": 1,
896 | "name": "海龟国际速运",
897 | "id": 191
898 | },
899 | {
900 | "display": 1,
901 | "name": "申通国际",
902 | "id": 192
903 | },
904 | {
905 | "display": 1,
906 | "name": "安鲜达",
907 | "id": 193
908 | },
909 | {
910 | "display": 1,
911 | "name": "闪送",
912 | "id": 194
913 | },
914 | {
915 | "display": 1,
916 | "name": "我的物流",
917 | "id": 195
918 | },
919 | {
920 | "display": 1,
921 | "name": "黑狗快递",
922 | "id": 196
923 | },
924 | {
925 | "display": 1,
926 | "name": "富腾达快递",
927 | "id": 197
928 | },
929 | {
930 | "display": 1,
931 | "name": "程光快递",
932 | "id": 198
933 | },
934 | {
935 | "display": 1,
936 | "name": "吉祥邮",
937 | "id": 199
938 | },
939 | {
940 | "display": 1,
941 | "name": "天时海淘转运",
942 | "id": 200
943 | },
944 | {
945 | "display": 1,
946 | "name": "澳大利亚AOL快递",
947 | "id": 201
948 | },
949 | {
950 | "display": 1,
951 | "name": "亿翔快递",
952 | "id": 202
953 | },
954 | {
955 | "display": 1,
956 | "name": "中澳国际物流",
957 | "id": 203
958 | },
959 | {
960 | "display": 1,
961 | "name": "全速快递",
962 | "id": 204
963 | },
964 | {
965 | "display": 1,
966 | "name": "极客快递",
967 | "id": 205
968 | },
969 | {
970 | "display": 1,
971 | "name": "金岸物流",
972 | "id": 206
973 | },
974 | {
975 | "display": 1,
976 | "name": "中联速运",
977 | "id": 207
978 | },
979 | {
980 | "display": 1,
981 | "name": "e邮客",
982 | "id": 208
983 | },
984 | {
985 | "display": 1,
986 | "name": "天马迅达",
987 | "id": 209
988 | },
989 | {
990 | "display": 1,
991 | "name": "DHL",
992 | "id": 220
993 | },
994 | {
995 | "display": 1,
996 | "name": "中铁物流",
997 | "id": 221
998 | },
999 | {
1000 | "display": 1,
1001 | "name": "美淘优递",
1002 | "id": 222
1003 | },
1004 | {
1005 | "display": 1,
1006 | "name": "澳速物流",
1007 | "id": 223
1008 | },
1009 | {
1010 | "display": 1,
1011 | "name": "转运中国",
1012 | "id": 224
1013 | },
1014 | {
1015 | "display": 1,
1016 | "name": "安能快递",
1017 | "id": 225
1018 | },
1019 | {
1020 | "display": 1,
1021 | "name": "华美国际快递",
1022 | "id": 226
1023 | },
1024 | {
1025 | "display": 1,
1026 | "name": "佳慧尔快递",
1027 | "id": 227
1028 | },
1029 | {
1030 | "display": 1,
1031 | "name": "西邮寄",
1032 | "id": 228
1033 | },
1034 | {
1035 | "display": 1,
1036 | "name": "九曳供应链",
1037 | "id": 229
1038 | },
1039 | {
1040 | "display": 1,
1041 | "name": "速必达希杰物流",
1042 | "id": 230
1043 | },
1044 | {
1045 | "display": 1,
1046 | "name": "盛辉物流",
1047 | "id": 231
1048 | },
1049 | {
1050 | "display": 1,
1051 | "name": "虎跃快运",
1052 | "id": 232
1053 | },
1054 | {
1055 | "display": 1,
1056 | "name": "品骏快递",
1057 | "id": 233
1058 | },
1059 | {
1060 | "display": 1,
1061 | "name": "狂派速递",
1062 | "id": 234
1063 | },
1064 | {
1065 | "display": 1,
1066 | "name": "永利八达通",
1067 | "id": 235
1068 | },
1069 | {
1070 | "display": 1,
1071 | "name": "特急送",
1072 | "id": 236
1073 | },
1074 | {
1075 | "display": 1,
1076 | "name": "捷安达国际速递",
1077 | "id": 237
1078 | },
1079 | {
1080 | "display": 1,
1081 | "name": "C&C全球快递",
1082 | "id": 238
1083 | },
1084 | {
1085 | "display": 1,
1086 | "name": "全时达快递",
1087 | "id": 239
1088 | },
1089 | {
1090 | "display": 1,
1091 | "name": "香港萬威",
1092 | "id": 240
1093 | },
1094 | {
1095 | "display": 1,
1096 | "name": "小蜜蜂邮包",
1097 | "id": 241
1098 | },
1099 | {
1100 | "display": 1,
1101 | "name": "长江国际速递",
1102 | "id": 242
1103 | },
1104 | {
1105 | "display": 1,
1106 | "name": "环球速运",
1107 | "id": 243
1108 | },
1109 | {
1110 | "display": 1,
1111 | "name": "笨鸟国际",
1112 | "id": 244
1113 | },
1114 | {
1115 | "display": 1,
1116 | "name": "澳洲极地快递",
1117 | "id": 245
1118 | },
1119 | {
1120 | "display": 1,
1121 | "name": "汇通天下",
1122 | "id": 246
1123 | },
1124 | {
1125 | "display": 1,
1126 | "name": "晟邦物流",
1127 | "id": 247
1128 | },
1129 | {
1130 | "display": 1,
1131 | "name": "速购速递",
1132 | "id": 248
1133 | },
1134 | {
1135 | "display": 1,
1136 | "name": "易客满",
1137 | "id": 249
1138 | },
1139 | {
1140 | "display": 1,
1141 | "name": "中通快运",
1142 | "id": 250
1143 | },
1144 | {
1145 | "display": 1,
1146 | "name": "方舟国际速递",
1147 | "id": 251
1148 | },
1149 | {
1150 | "display": 1,
1151 | "name": "新西兰邮政",
1152 | "id": 252
1153 | },
1154 | {
1155 | "display": 1,
1156 | "name": "壹米滴答",
1157 | "id": 253
1158 | },
1159 | {
1160 | "display": 1,
1161 | "name": "金社裕农物流",
1162 | "id": 254
1163 | },
1164 | {
1165 | "display": 1,
1166 | "name": "安世通",
1167 | "id": 255
1168 | }
1169 | ]
1170 | }
1171 | }
1172 |
--------------------------------------------------------------------------------