diff --git a/admin-web/config/router.config.js b/admin-web/config/router.config.js
index 027f60080..c4225a313 100644
--- a/admin-web/config/router.config.js
+++ b/admin-web/config/router.config.js
@@ -115,6 +115,11 @@ export default [
name: 'product-category-list',
component: './Product/ProductCategoryList',
},
+ {
+ path: '/product/product-brand-list',
+ name: 'product-brand-list',
+ component: './Product/ProductBrandList',
+ },
],
},
// promotion
diff --git a/admin-web/src/locales/zh-CN/menu.js b/admin-web/src/locales/zh-CN/menu.js
index 6c8c93050..cfc3478a3 100644
--- a/admin-web/src/locales/zh-CN/menu.js
+++ b/admin-web/src/locales/zh-CN/menu.js
@@ -50,6 +50,7 @@ export default {
'menu.product.product-spu-add': '商品添加',
'menu.product.product-spu-update': '商品编辑',
'menu.product.product-category-list': '商品分类',
+ 'menu.product.product-brand-list': '商品品牌',
// 订单
'menu.order': '订单管理',
'menu.order.order-list': '订单管理',
diff --git a/admin-web/src/models/product/productBrandList.js b/admin-web/src/models/product/productBrandList.js
new file mode 100644
index 000000000..fdac47337
--- /dev/null
+++ b/admin-web/src/models/product/productBrandList.js
@@ -0,0 +1,130 @@
+import { message } from 'antd';
+import { productBrandPage} from '../../services/product';
+import {routerRedux} from "dva/router";
+import PaginationHelper from '../../../helpers/PaginationHelper';
+
+const SEARCH_PARAMS_DEFAULT = {
+ name: '',
+ status: 1,
+ cid: undefined,
+};
+
+export default {
+ namespace: 'productBrandList',
+
+ state: {
+ // 分页列表相关
+ list: [],
+ listLoading: false,
+ pagination: PaginationHelper.defaultPaginationConfig,
+ searchParams: SEARCH_PARAMS_DEFAULT,
+
+ // 添加 or 修改表单相关
+ // modalVisible: false,
+ // modalType: undefined, // 'add' or 'update' 表单
+ formVals: {}, // 当前表单值
+ // modalLoading: false,
+
+
+ sortModalVisible: false, // 修改排序弹窗
+ sortModalLoading: false, // 修改排序的加载
+ },
+
+ effects: {
+ // *updateStatus({ payload }, { call, put }) {
+ // const { callback, body } = payload;
+ // const response = yield call(productCategoryUpdateStatus, body);
+ // if (callback) {
+ // callback(response);
+ // }
+ // yield put({
+ // type: 'tree',
+ // payload: {},
+ // });
+ // },
+ // *delete({ payload }, { call, put }) {
+ // const response = yield call(productCategoryDelete, payload);
+ // message.info('删除成功!');
+ // yield put({
+ // type: 'tree',
+ // payload: {},
+ // });
+ // },
+ *redirectToAdd({ payload }, { call, put }) {
+ // const { callback, body } = payload;
+ yield put(routerRedux.replace('/product/product-spu-add'));
+ },
+ *redirectToUpdate({ payload }, { call, put }) {
+ // const { callback, body } = payload;
+ yield put(routerRedux.replace('/product/product-spu-update?id=' + payload));
+ },
+ *page({ payload }, { call, put }) {
+ // const { queryParams } = payload;
+ // const response = yield call(productSpuPage, payload);
+ // message.info('查询成功!');
+ // yield put({
+ // type: 'treeSuccess',
+ // payload: {
+ // list: response.data,
+ // },
+ // });
+
+ // 显示加载中
+ yield put({
+ type: 'changeListLoading',
+ payload: true,
+ });
+
+ // 请求
+ const response = yield call(productBrandPage, payload);
+ // 响应
+ yield put({
+ type: 'add',
+ payload: {
+ list: response.data.brands,
+ pagination: PaginationHelper.formatPagination(response.data, payload),
+ searchParams: {
+ name: payload.name,
+ status: payload.status,
+ cid: payload.cid,
+ }
+ },
+ });
+
+ // 隐藏加载中
+ yield put({
+ type: 'changeListLoading',
+ payload: false,
+ });
+ },
+ },
+
+ reducers: {
+ treeSuccess(state, { payload }) {
+ return {
+ ...state,
+ ...payload,
+ };
+ },
+ // 修改加载中的状态
+ changeSortModalLoading(state, { payload }) {
+ return {
+ ...state,
+ sortModalLoading: payload,
+ };
+ },
+ changeListLoading(state, { payload }) {
+ return {
+ ...state,
+ listLoading: payload,
+ };
+ },
+ // 设置所有属性
+ add(state, { payload }) {
+ return {
+ ...state,
+ ...payload,
+ };
+ }
+ },
+};
diff --git a/admin-web/src/pages/Product/ProductBrandList.js b/admin-web/src/pages/Product/ProductBrandList.js
new file mode 100644
index 000000000..11fb120c6
--- /dev/null
+++ b/admin-web/src/pages/Product/ProductBrandList.js
@@ -0,0 +1,357 @@
+/* eslint-disable */
+
+import React, { PureComponent, Fragment } from 'react';
+import { connect } from 'dva';
+import moment from 'moment';
+import {
+ Card,
+ Form,
+ Input,
+ Row,
+ Col,
+ Button,
+ Modal,
+ message,
+ Table,
+ Divider,
+ Tree,
+ Tabs,
+ TreeSelect,
+ Spin,
+ InputNumber
+} from 'antd';
+import PageHeaderWrapper from '@/components/PageHeaderWrapper';
+
+import styles from './ProductSpuList.less';
+import PaginationHelper from "../../../helpers/PaginationHelper";
+import PicturesWall from "../../components/Image/PicturesWall";
+
+const FormItem = Form.Item;
+
+const status = ['未知', '开启', '禁用'];
+// 列表
+function List({ dataSource, loading, pagination, searchParams, dispatch,
+ categoryTree,handleModalVisible}) {
+
+
+ function onPageChange(page) { // 翻页
+ dispatch({
+ type: 'productBrandList/page',
+ payload: {
+ pageNo: page.current,
+ pageSize: page.pageSize,
+ ...searchParams
+ }
+ })
+ }
+
+
+ const columns = [
+ {
+ title: '品牌名称',
+ dataIndex: 'name',
+ },
+ {
+ title: '品牌描述',
+ dataIndex: 'description'
+ },
+ {
+ title: '品牌图片',
+ dataIndex: 'picUrl',
+ render(val) {return ;},
+ },
+ {
+ title: '状态',
+ dataIndex: 'status',
+ render(val) {return {status[val]};},
+ },
+ {
+ title: '创建时间',
+ dataIndex: 'createTime',
+ render: val => {moment(val).format('YYYY-MM-DD')},
+ },
+ {
+ title: '操作',
+ width: 200,
+ render: (text, record) => {
+ const statusText = record.status === 1 ? '禁用' : '开启';
+ return (
+
+ handleModalVisible(true, 'update', record)}>编辑
+
+ handleStatus(record)}>{statusText}
+
+ handleDelete(record)}>删除
+
+ );
+ },
+ },
+];
+
+
+ return (
+
+)
+}
+
+// 新建 form 表单
+ const AddOrUpdateForm = Form.create()(props => {
+ const { dispatch, loading, modalVisible, form, handleModalVisible, modalType, categoryTree, formVals } = props;
+ let picturesWall = null;
+
+ const okHandle = () => {
+ form.validateFields((err, fields) => {
+ if (err) return;
+ if (modalType === 'add') {
+ dispatch({
+ type: 'productBrandList/add',
+ payload: {
+ body: {
+ ...fields,
+ picUrl: picturesWall ? picturesWall.getUrl() : undefined,
+ },
+ callback: () => {
+ // 清空表单
+ form.resetFields();
+ // 提示
+ message.success('新建成功');
+ // 关闭弹窗
+ handleModalVisible();
+ },
+ },
+ });
+ } else {
+ dispatch({
+ type: 'productCategoryList/update',
+ payload: {
+ body: {
+ ...formVals,
+ ...fields,
+ picUrl: picturesWall ? picturesWall.getUrl() : undefined,
+ },
+ callback: () => {
+ // 清空表单
+ form.resetFields();
+ // 提示
+ message.success('编辑成功');
+ // 关闭弹窗
+ handleModalVisible();
+ },
+ },
+ });
+ }
+ });
+ };
+
+
+ const title = modalType === 'add' ? '新建品牌' : '编辑品牌';
+ const okText = modalType === 'add' ? '新建' : '编辑';
+ return (
+ handleModalVisible()}
+>
+
+
+ {form.getFieldDecorator('name', {
+ rules: [{ required: true, message: '请输入品牌名称!', min: 2 }],
+ initialValue: formVals.name,
+ })()}
+
+
+
+ {form.getFieldDecorator('description', {
+ rules: [{ required: true, message: '请输入描述!' }],
+ initialValue: formVals.description,
+ })()}
+
+
+
+);
+});
+
+// 搜索表单
+const SearchForm = Form.create()(props => {
+ const {
+ form,
+ form: { getFieldDecorator },
+ dispatch,
+ searchParams,
+ categoryTree,
+ } = props;
+
+function search() {
+ dispatch({
+ type: 'productBrandList/page',
+ payload: {
+ ...PaginationHelper.defaultPayload,
+ ...searchParams,
+ ...form.getFieldsValue(),
+}
+})
+}
+
+// 提交搜索
+function handleSubmit(e) {
+ // 阻止默认事件
+ e.preventDefault();
+ // 提交搜索
+ search();
+}
+
+// 重置搜索
+function handleReset() {
+ // 重置表单
+ form.resetFields();
+ // 执行搜索
+ search();
+}
+
+
+
+
+return (
+
+);
+});
+
+
+
+
+// productSpuList
+@connect(({ productBrandList}) => ({
+ ...productBrandList
+}))
+
+@Form.create()
+class ProductBrandList extends PureComponent {
+ state = {
+ modalVisible: false,
+ modalType: 'add', //add update
+ initValues: {},
+ roleAssignVisible: false,
+ roleAssignRecord: {},
+ };
+
+ componentDidMount() {
+ const { dispatch } = this.props;
+ // 查询初始数据
+ dispatch({
+ type: 'productBrandList/page',
+ payload: {
+ ...PaginationHelper.defaultPayload,
+ },
+ });
+ }
+
+
+
+ handleModalVisible = (modalVisible, modalType, record) => {
+ const { dispatch } = this.props;
+ dispatch({
+ type: 'productBrandList/add',
+ payload: {
+ modalVisible,
+ modalType,
+ formVals: record || {}
+ },
+ });
+ };
+
+
+render() {
+ const { dispatch,
+ list, listLoading, searchParams, pagination,
+ categoryTree, modalType,formVals,
+ modalVisible,modalLoading} = this.props;
+
+ // 列表属性
+ const listProps = {
+ dataSource: list,
+ pagination,
+ searchParams,
+ dispatch,
+ categoryTree,
+ loading: listLoading,
+ handleModalVisible: this.handleModalVisible, // Function
+ };
+
+ // 搜索表单属性
+ const searchFormProps = {
+ dispatch,
+ categoryTree,
+ searchParams,
+ };
+
+ // 添加 or 编辑表单属性
+ const addOrUpdateFormProps = {
+ modalVisible,
+ modalType,
+ formVals,
+ dispatch,
+ loading: modalLoading,
+ categoryTree: list,
+ handleModalVisible: this.handleModalVisible, // Function
+ };
+
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+);
+}
+}
+
+export default ProductBrandList;
diff --git a/admin-web/src/services/product.js b/admin-web/src/services/product.js
index b34721d9b..a8929dd4e 100644
--- a/admin-web/src/services/product.js
+++ b/admin-web/src/services/product.js
@@ -92,8 +92,36 @@ export async function productAttrTree(params) {
}
export async function productAttrValueAdd(params) {
- return request(`/product-api/admins//attr_value/add?${stringify(params)}`, {
+ return request(`/product-api/admins/attr_value/add?${stringify(params)}`, {
method: 'POST',
body: {},
});
}
+
+ // product brand 2019-05-31
+
+export async function productBrandAdd(params) {
+ return request(`/product-api/admins/brand/add?${stringify(params)}`, {
+ method: 'POST',
+ body: {},
+ });
+}
+
+export async function productBrandUpdate(params) {
+ return request(`/product-api/admins/brand/update?${stringify(params)}`, {
+ method: 'POST',
+ body: {},
+ });
+}
+
+export async function productBrandGet(params) {
+ return request(`/product-api/admins/brand/get?${stringify(params)}`, {
+ method: 'GET'
+ });
+}
+
+export async function productBrandPage(params) {
+ return request(`/product-api/admins/brand/page?${stringify(params)}`, {
+ method: 'GET'
+ });
+}
diff --git a/common/common-framework/pom.xml b/common/common-framework/pom.xml
index 674893bf9..20d58b283 100644
--- a/common/common-framework/pom.xml
+++ b/common/common-framework/pom.xml
@@ -88,6 +88,12 @@
com.fasterxml.jackson.core
jackson-databind
+
+ junit
+ junit
+ 4.8.1
+ test
+
diff --git a/common/common-framework/src/test/java/cn/iocoder/common/framework/util/DateUtilTest.java b/common/common-framework/src/test/java/cn/iocoder/common/framework/util/DateUtilTest.java
new file mode 100644
index 000000000..4302d1eb1
--- /dev/null
+++ b/common/common-framework/src/test/java/cn/iocoder/common/framework/util/DateUtilTest.java
@@ -0,0 +1,56 @@
+package cn.iocoder.common.framework.util;
+
+import org.junit.Assert;
+import org.junit.Test;
+import java.util.Date;
+import java.util.GregorianCalendar;
+
+public class DateUtilTest {
+
+ @Test
+ public void testAddDate() {
+ Assert.assertNull(DateUtil.addDate(0, 0));
+ Assert.assertEquals(new Date(1_778_410_800_000L), DateUtil.addDate(
+ new Date(1_515_585_600_000L), 2, 100));
+ }
+
+ @Test
+ public void testFormat() {
+ Assert.assertEquals("", DateUtil.format(null, null));
+ Assert.assertEquals("2018-01-10:12:00:00", DateUtil.format(
+ new Date(1_515_585_600_000L), "yyyy-MM-dd:HH:mm:ss"));
+ }
+
+ @Test
+ public void testGetDayBegin() {
+ Assert.assertNull(DateUtil.getDayBegin(null));
+ Assert.assertEquals(new Date(1_515_542_400_000L),
+ DateUtil.getDayBegin(new Date(1_515_585_600_000L)));
+ }
+
+ @Test
+ public void testGetDayEnd() {
+ Assert.assertNull(DateUtil.getDayEnd(null));
+ Assert.assertEquals(new Date(1_515_628_799_999L), DateUtil.getDayEnd(
+ new Date(1_515_585_600_000L)));
+ }
+
+ @Test
+ public void testIsBetween() {
+ Assert.assertTrue(DateUtil.isBetween(DateUtil.getDayBegin(),
+ DateUtil.getDayEnd()));
+ Assert.assertFalse(DateUtil.isBetween(
+ DateUtil.getDayBegin(new Date(0L)),
+ DateUtil.getDayEnd(new Date(100_000L))));
+ }
+
+ @Test
+ public void testSetCalender() {
+ final GregorianCalendar calendar = new GregorianCalendar();
+ DateUtil.setCalender(calendar, 2, 30, 50, 0);
+
+ Assert.assertEquals(2, calendar.getTime().getHours());
+ Assert.assertEquals(30, calendar.getTime().getMinutes());
+ Assert.assertEquals(50, calendar.getTime().getSeconds());
+ }
+}
diff --git a/order/order-application/target/classes/application-test.yaml b/order/order-application/target/classes/application-test.yaml
new file mode 100644
index 000000000..ff9f80fd8
--- /dev/null
+++ b/order/order-application/target/classes/application-test.yaml
@@ -0,0 +1,6 @@
+swagger:
+ enable: true
+ title: 订单子系统
+ description: 订单子系统
+ version: 1.0.0
+ base-package: cn.iocoder.mall.pay.application.controller
diff --git a/order/order-application/target/classes/application.yaml b/order/order-application/target/classes/application.yaml
new file mode 100644
index 000000000..f8614c729
--- /dev/null
+++ b/order/order-application/target/classes/application.yaml
@@ -0,0 +1,28 @@
+spring:
+ application:
+ name: order-application
+ cloud:
+ sentinel:
+ transport:
+ port: 8719
+ dashboard: localhost:12088
+ metric:
+ charset: UTF-8
+ eager: false
+
+# server
+server:
+ port: 18088
+ servlet:
+ context-path: /order-api/
+
+swagger:
+ enable: false
+
+management:
+ endpoints:
+ web:
+ exposure:
+ include: health,info,env,metrics,prometheus
+ metrics:
+ enabled: true
diff --git a/order/order-application/target/generated-sources/annotations/cn/iocoder/mall/order/application/convert/CartConvertImpl.java b/order/order-application/target/generated-sources/annotations/cn/iocoder/mall/order/application/convert/CartConvertImpl.java
new file mode 100644
index 000000000..c19707569
--- /dev/null
+++ b/order/order-application/target/generated-sources/annotations/cn/iocoder/mall/order/application/convert/CartConvertImpl.java
@@ -0,0 +1,270 @@
+package cn.iocoder.mall.order.application.convert;
+
+import cn.iocoder.mall.order.api.bo.CalcOrderPriceBO;
+import cn.iocoder.mall.order.api.bo.CalcOrderPriceBO.Item;
+import cn.iocoder.mall.order.api.bo.CalcOrderPriceBO.ItemGroup;
+import cn.iocoder.mall.order.api.bo.CalcSkuPriceBO;
+import cn.iocoder.mall.order.application.vo.UsersCalcSkuPriceVO;
+import cn.iocoder.mall.order.application.vo.UsersCartDetailVO;
+import cn.iocoder.mall.order.application.vo.UsersOrderConfirmCreateVO;
+import cn.iocoder.mall.order.application.vo.UsersOrderConfirmCreateVO.Fee;
+import cn.iocoder.mall.order.application.vo.UsersOrderConfirmCreateVO.Sku;
+import cn.iocoder.mall.order.application.vo.UsersOrderConfirmCreateVO.Spu;
+import cn.iocoder.mall.product.api.bo.ProductAttrAndValuePairBO;
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.Generated;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2019-05-24T11:47:18+0800",
+ comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_121 (Oracle Corporation)"
+)
+public class CartConvertImpl implements CartConvert {
+
+ @Override
+ public UsersOrderConfirmCreateVO convert(CalcOrderPriceBO calcOrderPriceBO) {
+ if ( calcOrderPriceBO == null ) {
+ return null;
+ }
+
+ UsersOrderConfirmCreateVO usersOrderConfirmCreateVO = new UsersOrderConfirmCreateVO();
+
+ usersOrderConfirmCreateVO.setItemGroups( itemGroupListToItemGroupList( calcOrderPriceBO.getItemGroups() ) );
+ usersOrderConfirmCreateVO.setFee( feeToFee( calcOrderPriceBO.getFee() ) );
+ usersOrderConfirmCreateVO.setCouponCardDiscountTotal( calcOrderPriceBO.getCouponCardDiscountTotal() );
+
+ return usersOrderConfirmCreateVO;
+ }
+
+ @Override
+ public UsersCartDetailVO convert2(CalcOrderPriceBO calcOrderPriceBO) {
+ if ( calcOrderPriceBO == null ) {
+ return null;
+ }
+
+ UsersCartDetailVO usersCartDetailVO = new UsersCartDetailVO();
+
+ usersCartDetailVO.setItemGroups( itemGroupListToItemGroupList1( calcOrderPriceBO.getItemGroups() ) );
+ usersCartDetailVO.setFee( feeToFee1( calcOrderPriceBO.getFee() ) );
+
+ return usersCartDetailVO;
+ }
+
+ @Override
+ public UsersCalcSkuPriceVO convert2(CalcSkuPriceBO calcSkuPriceBO) {
+ if ( calcSkuPriceBO == null ) {
+ return null;
+ }
+
+ UsersCalcSkuPriceVO usersCalcSkuPriceVO = new UsersCalcSkuPriceVO();
+
+ usersCalcSkuPriceVO.setFullPrivilege( calcSkuPriceBO.getFullPrivilege() );
+ usersCalcSkuPriceVO.setTimeLimitedDiscount( calcSkuPriceBO.getTimeLimitedDiscount() );
+ usersCalcSkuPriceVO.setOriginalPrice( calcSkuPriceBO.getOriginalPrice() );
+ usersCalcSkuPriceVO.setBuyPrice( calcSkuPriceBO.getBuyPrice() );
+
+ return usersCalcSkuPriceVO;
+ }
+
+ protected Spu spuToSpu(cn.iocoder.mall.product.api.bo.ProductSkuDetailBO.Spu spu) {
+ if ( spu == null ) {
+ return null;
+ }
+
+ Spu spu1 = new Spu();
+
+ spu1.setId( spu.getId() );
+ spu1.setName( spu.getName() );
+ spu1.setCid( spu.getCid() );
+ List list = spu.getPicUrls();
+ if ( list != null ) {
+ spu1.setPicUrls( new ArrayList( list ) );
+ }
+
+ return spu1;
+ }
+
+ protected Sku itemToSku(Item item) {
+ if ( item == null ) {
+ return null;
+ }
+
+ Sku sku = new Sku();
+
+ sku.setId( item.getId() );
+ sku.setSpu( spuToSpu( item.getSpu() ) );
+ sku.setPicURL( item.getPicURL() );
+ List list = item.getAttrs();
+ if ( list != null ) {
+ sku.setAttrs( new ArrayList( list ) );
+ }
+ sku.setPrice( item.getPrice() );
+ sku.setQuantity( item.getQuantity() );
+ sku.setBuyQuantity( item.getBuyQuantity() );
+ sku.setOriginPrice( item.getOriginPrice() );
+ sku.setBuyPrice( item.getBuyPrice() );
+ sku.setPresentPrice( item.getPresentPrice() );
+ sku.setBuyTotal( item.getBuyTotal() );
+ sku.setDiscountTotal( item.getDiscountTotal() );
+ sku.setPresentTotal( item.getPresentTotal() );
+
+ return sku;
+ }
+
+ protected List itemListToSkuList(List- list) {
+ if ( list == null ) {
+ return null;
+ }
+
+ List list1 = new ArrayList( list.size() );
+ for ( Item item : list ) {
+ list1.add( itemToSku( item ) );
+ }
+
+ return list1;
+ }
+
+ protected cn.iocoder.mall.order.application.vo.UsersOrderConfirmCreateVO.ItemGroup itemGroupToItemGroup(ItemGroup itemGroup) {
+ if ( itemGroup == null ) {
+ return null;
+ }
+
+ cn.iocoder.mall.order.application.vo.UsersOrderConfirmCreateVO.ItemGroup itemGroup1 = new cn.iocoder.mall.order.application.vo.UsersOrderConfirmCreateVO.ItemGroup();
+
+ itemGroup1.setActivity( itemGroup.getActivity() );
+ itemGroup1.setItems( itemListToSkuList( itemGroup.getItems() ) );
+
+ return itemGroup1;
+ }
+
+ protected List itemGroupListToItemGroupList(List list) {
+ if ( list == null ) {
+ return null;
+ }
+
+ List list1 = new ArrayList( list.size() );
+ for ( ItemGroup itemGroup : list ) {
+ list1.add( itemGroupToItemGroup( itemGroup ) );
+ }
+
+ return list1;
+ }
+
+ protected Fee feeToFee(cn.iocoder.mall.order.api.bo.CalcOrderPriceBO.Fee fee) {
+ if ( fee == null ) {
+ return null;
+ }
+
+ Fee fee1 = new Fee();
+
+ fee1.setBuyTotal( fee.getBuyTotal() );
+ fee1.setDiscountTotal( fee.getDiscountTotal() );
+ fee1.setPostageTotal( fee.getPostageTotal() );
+ fee1.setPresentTotal( fee.getPresentTotal() );
+
+ return fee1;
+ }
+
+ protected cn.iocoder.mall.order.application.vo.UsersCartDetailVO.Spu spuToSpu1(cn.iocoder.mall.product.api.bo.ProductSkuDetailBO.Spu spu) {
+ if ( spu == null ) {
+ return null;
+ }
+
+ cn.iocoder.mall.order.application.vo.UsersCartDetailVO.Spu spu1 = new cn.iocoder.mall.order.application.vo.UsersCartDetailVO.Spu();
+
+ spu1.setId( spu.getId() );
+ spu1.setName( spu.getName() );
+ spu1.setCid( spu.getCid() );
+ List list = spu.getPicUrls();
+ if ( list != null ) {
+ spu1.setPicUrls( new ArrayList( list ) );
+ }
+
+ return spu1;
+ }
+
+ protected cn.iocoder.mall.order.application.vo.UsersCartDetailVO.Sku itemToSku1(Item item) {
+ if ( item == null ) {
+ return null;
+ }
+
+ cn.iocoder.mall.order.application.vo.UsersCartDetailVO.Sku sku = new cn.iocoder.mall.order.application.vo.UsersCartDetailVO.Sku();
+
+ sku.setId( item.getId() );
+ sku.setSpu( spuToSpu1( item.getSpu() ) );
+ sku.setPicURL( item.getPicURL() );
+ List list = item.getAttrs();
+ if ( list != null ) {
+ sku.setAttrs( new ArrayList( list ) );
+ }
+ sku.setPrice( item.getPrice() );
+ sku.setQuantity( item.getQuantity() );
+ sku.setBuyQuantity( item.getBuyQuantity() );
+ sku.setSelected( item.getSelected() );
+ sku.setActivity( item.getActivity() );
+ sku.setOriginPrice( item.getOriginPrice() );
+ sku.setBuyPrice( item.getBuyPrice() );
+ sku.setPresentPrice( item.getPresentPrice() );
+ sku.setBuyTotal( item.getBuyTotal() );
+ sku.setDiscountTotal( item.getDiscountTotal() );
+ sku.setPresentTotal( item.getPresentTotal() );
+
+ return sku;
+ }
+
+ protected List itemListToSkuList1(List
- list) {
+ if ( list == null ) {
+ return null;
+ }
+
+ List list1 = new ArrayList( list.size() );
+ for ( Item item : list ) {
+ list1.add( itemToSku1( item ) );
+ }
+
+ return list1;
+ }
+
+ protected cn.iocoder.mall.order.application.vo.UsersCartDetailVO.ItemGroup itemGroupToItemGroup1(ItemGroup itemGroup) {
+ if ( itemGroup == null ) {
+ return null;
+ }
+
+ cn.iocoder.mall.order.application.vo.UsersCartDetailVO.ItemGroup itemGroup1 = new cn.iocoder.mall.order.application.vo.UsersCartDetailVO.ItemGroup();
+
+ itemGroup1.setActivity( itemGroup.getActivity() );
+ itemGroup1.setActivityDiscountTotal( itemGroup.getActivityDiscountTotal() );
+ itemGroup1.setItems( itemListToSkuList1( itemGroup.getItems() ) );
+
+ return itemGroup1;
+ }
+
+ protected List itemGroupListToItemGroupList1(List list) {
+ if ( list == null ) {
+ return null;
+ }
+
+ List list1 = new ArrayList( list.size() );
+ for ( ItemGroup itemGroup : list ) {
+ list1.add( itemGroupToItemGroup1( itemGroup ) );
+ }
+
+ return list1;
+ }
+
+ protected cn.iocoder.mall.order.application.vo.UsersCartDetailVO.Fee feeToFee1(cn.iocoder.mall.order.api.bo.CalcOrderPriceBO.Fee fee) {
+ if ( fee == null ) {
+ return null;
+ }
+
+ cn.iocoder.mall.order.application.vo.UsersCartDetailVO.Fee fee1 = new cn.iocoder.mall.order.application.vo.UsersCartDetailVO.Fee();
+
+ fee1.setBuyTotal( fee.getBuyTotal() );
+ fee1.setDiscountTotal( fee.getDiscountTotal() );
+ fee1.setPostageTotal( fee.getPostageTotal() );
+ fee1.setPresentTotal( fee.getPresentTotal() );
+
+ return fee1;
+ }
+}
diff --git a/order/order-application/target/generated-sources/annotations/cn/iocoder/mall/order/application/convert/OrderConvertAPPImpl.java b/order/order-application/target/generated-sources/annotations/cn/iocoder/mall/order/application/convert/OrderConvertAPPImpl.java
new file mode 100644
index 000000000..f073f8879
--- /dev/null
+++ b/order/order-application/target/generated-sources/annotations/cn/iocoder/mall/order/application/convert/OrderConvertAPPImpl.java
@@ -0,0 +1,149 @@
+package cn.iocoder.mall.order.application.convert;
+
+import cn.iocoder.mall.order.api.bo.CartItemBO;
+import cn.iocoder.mall.order.api.dto.OrderCreateDTO;
+import cn.iocoder.mall.order.api.dto.OrderCreateDTO.OrderItem;
+import cn.iocoder.mall.order.api.dto.OrderItemUpdateDTO;
+import cn.iocoder.mall.order.api.dto.OrderLogisticsUpdateDTO;
+import cn.iocoder.mall.order.api.dto.OrderQueryDTO;
+import cn.iocoder.mall.order.application.po.admin.OrderItemUpdatePO;
+import cn.iocoder.mall.order.application.po.admin.OrderLogisticsPO;
+import cn.iocoder.mall.order.application.po.admin.OrderPageQueryPO;
+import cn.iocoder.mall.order.application.po.user.OrderCreatePO;
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.Generated;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2019-05-24T11:47:18+0800",
+ comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_121 (Oracle Corporation)"
+)
+public class OrderConvertAPPImpl implements OrderConvertAPP {
+
+ @Override
+ public OrderQueryDTO convert(OrderPageQueryPO orderPageQueryVO) {
+ if ( orderPageQueryVO == null ) {
+ return null;
+ }
+
+ OrderQueryDTO orderQueryDTO = new OrderQueryDTO();
+
+ orderQueryDTO.setId( orderPageQueryVO.getId() );
+ orderQueryDTO.setOrderNo( orderPageQueryVO.getOrderNo() );
+ orderQueryDTO.setUserId( orderPageQueryVO.getUserId() );
+ orderQueryDTO.setStartPaymentTime( orderPageQueryVO.getStartPaymentTime() );
+ orderQueryDTO.setEndPaymentTime( orderPageQueryVO.getEndPaymentTime() );
+ orderQueryDTO.setStartCreateTime( orderPageQueryVO.getStartCreateTime() );
+ orderQueryDTO.setEndCreateTime( orderPageQueryVO.getEndCreateTime() );
+ orderQueryDTO.setDeleted( orderPageQueryVO.getDeleted() );
+ orderQueryDTO.setStatus( orderPageQueryVO.getStatus() );
+ orderQueryDTO.setPageNo( orderPageQueryVO.getPageNo() );
+ orderQueryDTO.setPageSize( orderPageQueryVO.getPageSize() );
+
+ return orderQueryDTO;
+ }
+
+ @Override
+ public OrderLogisticsUpdateDTO convert(OrderLogisticsPO orderLogisticsVO) {
+ if ( orderLogisticsVO == null ) {
+ return null;
+ }
+
+ OrderLogisticsUpdateDTO orderLogisticsUpdateDTO = new OrderLogisticsUpdateDTO();
+
+ orderLogisticsUpdateDTO.setId( orderLogisticsVO.getId() );
+ orderLogisticsUpdateDTO.setAreaNo( orderLogisticsVO.getAreaNo() );
+ orderLogisticsUpdateDTO.setName( orderLogisticsVO.getName() );
+ orderLogisticsUpdateDTO.setMobile( orderLogisticsVO.getMobile() );
+ orderLogisticsUpdateDTO.setAddress( orderLogisticsVO.getAddress() );
+ orderLogisticsUpdateDTO.setLogisticsNo( orderLogisticsVO.getLogisticsNo() );
+
+ return orderLogisticsUpdateDTO;
+ }
+
+ @Override
+ public OrderItemUpdateDTO convert(OrderItemUpdatePO orderItemUpdateVO) {
+ if ( orderItemUpdateVO == null ) {
+ return null;
+ }
+
+ OrderItemUpdateDTO orderItemUpdateDTO = new OrderItemUpdateDTO();
+
+ orderItemUpdateDTO.setId( orderItemUpdateVO.getId() );
+ orderItemUpdateDTO.setSkuId( orderItemUpdateVO.getSkuId() );
+ orderItemUpdateDTO.setQuantity( orderItemUpdateVO.getQuantity() );
+ orderItemUpdateDTO.setPrice( orderItemUpdateVO.getPrice() );
+
+ return orderItemUpdateDTO;
+ }
+
+ @Override
+ public OrderCreateDTO convert(OrderCreatePO orderCreatePO) {
+ if ( orderCreatePO == null ) {
+ return null;
+ }
+
+ OrderCreateDTO orderCreateDTO = new OrderCreateDTO();
+
+ orderCreateDTO.setUserAddressId( orderCreatePO.getUserAddressId() );
+ orderCreateDTO.setCouponCardId( orderCreatePO.getCouponCardId() );
+ orderCreateDTO.setRemark( orderCreatePO.getRemark() );
+ orderCreateDTO.setOrderItems( orderItemListToOrderItemList( orderCreatePO.getOrderItems() ) );
+
+ return orderCreateDTO;
+ }
+
+ @Override
+ public List convert(List cartItems) {
+ if ( cartItems == null ) {
+ return null;
+ }
+
+ List list = new ArrayList( cartItems.size() );
+ for ( CartItemBO cartItemBO : cartItems ) {
+ list.add( cartItemBOToOrderItem( cartItemBO ) );
+ }
+
+ return list;
+ }
+
+ protected OrderItem orderItemToOrderItem(cn.iocoder.mall.order.application.po.user.OrderCreatePO.OrderItem orderItem) {
+ if ( orderItem == null ) {
+ return null;
+ }
+
+ OrderItem orderItem1 = new OrderItem();
+
+ orderItem1.setSkuId( orderItem.getSkuId() );
+ orderItem1.setQuantity( orderItem.getQuantity() );
+
+ return orderItem1;
+ }
+
+ protected List orderItemListToOrderItemList(List list) {
+ if ( list == null ) {
+ return null;
+ }
+
+ List list1 = new ArrayList( list.size() );
+ for ( cn.iocoder.mall.order.application.po.user.OrderCreatePO.OrderItem orderItem : list ) {
+ list1.add( orderItemToOrderItem( orderItem ) );
+ }
+
+ return list1;
+ }
+
+ protected OrderItem cartItemBOToOrderItem(CartItemBO cartItemBO) {
+ if ( cartItemBO == null ) {
+ return null;
+ }
+
+ OrderItem orderItem = new OrderItem();
+
+ orderItem.setSkuId( cartItemBO.getSkuId() );
+ orderItem.setQuantity( cartItemBO.getQuantity() );
+
+ return orderItem;
+ }
+}
diff --git a/order/order-application/target/generated-sources/annotations/cn/iocoder/mall/order/application/convert/OrderDeliveryConvertImpl.java b/order/order-application/target/generated-sources/annotations/cn/iocoder/mall/order/application/convert/OrderDeliveryConvertImpl.java
new file mode 100644
index 000000000..5fc1fd1e5
--- /dev/null
+++ b/order/order-application/target/generated-sources/annotations/cn/iocoder/mall/order/application/convert/OrderDeliveryConvertImpl.java
@@ -0,0 +1,34 @@
+package cn.iocoder.mall.order.application.convert;
+
+import cn.iocoder.mall.order.api.dto.OrderDeliveryDTO;
+import cn.iocoder.mall.order.application.po.admin.OrderDeliverPO;
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.Generated;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2019-05-24T11:47:18+0800",
+ comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_121 (Oracle Corporation)"
+)
+public class OrderDeliveryConvertImpl implements OrderDeliveryConvert {
+
+ @Override
+ public OrderDeliveryDTO convert(OrderDeliverPO orderDeliverPO) {
+ if ( orderDeliverPO == null ) {
+ return null;
+ }
+
+ OrderDeliveryDTO orderDeliveryDTO = new OrderDeliveryDTO();
+
+ orderDeliveryDTO.setOrderId( orderDeliverPO.getOrderId() );
+ orderDeliveryDTO.setLogistics( orderDeliverPO.getLogistics() );
+ orderDeliveryDTO.setLogisticsNo( orderDeliverPO.getLogisticsNo() );
+ List list = orderDeliverPO.getOrderItemIds();
+ if ( list != null ) {
+ orderDeliveryDTO.setOrderItemIds( new ArrayList( list ) );
+ }
+
+ return orderDeliveryDTO;
+ }
+}
diff --git a/order/order-application/target/generated-sources/annotations/cn/iocoder/mall/order/application/convert/OrderReturnConvertImpl.java b/order/order-application/target/generated-sources/annotations/cn/iocoder/mall/order/application/convert/OrderReturnConvertImpl.java
new file mode 100644
index 000000000..5b3d2788a
--- /dev/null
+++ b/order/order-application/target/generated-sources/annotations/cn/iocoder/mall/order/application/convert/OrderReturnConvertImpl.java
@@ -0,0 +1,51 @@
+package cn.iocoder.mall.order.application.convert;
+
+import cn.iocoder.mall.order.api.dto.OrderReturnApplyDTO;
+import cn.iocoder.mall.order.api.dto.OrderReturnQueryDTO;
+import cn.iocoder.mall.order.application.po.admin.OrderReturnQueryPO;
+import cn.iocoder.mall.order.application.po.user.OrderReturnApplyPO;
+import javax.annotation.Generated;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2019-05-24T11:47:18+0800",
+ comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_121 (Oracle Corporation)"
+)
+public class OrderReturnConvertImpl implements OrderReturnConvert {
+
+ @Override
+ public OrderReturnApplyDTO convert(OrderReturnApplyPO orderReturnApplyPO) {
+ if ( orderReturnApplyPO == null ) {
+ return null;
+ }
+
+ OrderReturnApplyDTO orderReturnApplyDTO = new OrderReturnApplyDTO();
+
+ orderReturnApplyDTO.setOrderId( orderReturnApplyPO.getOrderId() );
+ orderReturnApplyDTO.setReason( orderReturnApplyPO.getReason() );
+ orderReturnApplyDTO.setDescribe( orderReturnApplyPO.getDescribe() );
+ orderReturnApplyDTO.setReturnType( orderReturnApplyPO.getReturnType() );
+
+ return orderReturnApplyDTO;
+ }
+
+ @Override
+ public OrderReturnQueryDTO convert(OrderReturnQueryPO orderReturnQueryPO) {
+ if ( orderReturnQueryPO == null ) {
+ return null;
+ }
+
+ OrderReturnQueryDTO orderReturnQueryDTO = new OrderReturnQueryDTO();
+
+ orderReturnQueryDTO.setOrderId( orderReturnQueryPO.getOrderId() );
+ orderReturnQueryDTO.setOrderNo( orderReturnQueryPO.getOrderNo() );
+ orderReturnQueryDTO.setServiceNumber( orderReturnQueryPO.getServiceNumber() );
+ orderReturnQueryDTO.setStartCreateTime( orderReturnQueryPO.getStartCreateTime() );
+ orderReturnQueryDTO.setEndCreateTime( orderReturnQueryPO.getEndCreateTime() );
+ orderReturnQueryDTO.setStatus( orderReturnQueryPO.getStatus() );
+ orderReturnQueryDTO.setIndex( orderReturnQueryPO.getIndex() );
+ orderReturnQueryDTO.setPageSize( orderReturnQueryPO.getPageSize() );
+
+ return orderReturnQueryDTO;
+ }
+}
diff --git a/order/order-service-impl/target/classes/config/application-test.yaml b/order/order-service-impl/target/classes/config/application-test.yaml
new file mode 100644
index 000000000..268e6407b
--- /dev/null
+++ b/order/order-service-impl/target/classes/config/application-test.yaml
@@ -0,0 +1,7 @@
+spring:
+ # datasource
+ datasource:
+ url: jdbc:mysql://192.168.88.14:3306/mall_order?useSSL=false&useUnicode=true&characterEncoding=UTF-8
+ driver-class-name: com.mysql.jdbc.Driver
+ username: root
+ password: ${MALL_MYSQL_PASSWORD}
diff --git a/order/order-service-impl/target/classes/config/application.yaml b/order/order-service-impl/target/classes/config/application.yaml
new file mode 100644
index 000000000..27d4bc238
--- /dev/null
+++ b/order/order-service-impl/target/classes/config/application.yaml
@@ -0,0 +1,76 @@
+spring:
+ # datasource
+ datasource:
+ url: jdbc:mysql://180.167.213.26:13306/mall_order?useSSL=false&useUnicode=true&characterEncoding=UTF-8
+ driver-class-name: com.mysql.jdbc.Driver
+ username: root
+ password: ${MALL_MYSQL_PASSWORD}
+
+# mybatis
+#mybatis:
+# config-location: classpath:mybatis-config.xml
+# mapper-locations: classpath:mapper/*.xml
+# type-aliases-package: cn.iocoder.mall.order.biz.dataobject
+#
+# mybatis-plus
+mybatis-plus:
+ configuration:
+ map-underscore-to-camel-case: true # 虽然默认为 true ,但是还是显示去指定下。
+ global-config:
+ db-config:
+ id-type: auto
+ mapper-locations: classpath*:mapper/*.xml
+ type-aliases-package: cn.iocoder.mall.order.biz.dataobject
+
+# dubbo
+dubbo:
+ application:
+ name: order-service
+ registry:
+ address: zookeeper://127.0.0.1:2181
+ protocol:
+ port: -1
+ name: dubbo
+ scan:
+ base-packages: cn.iocoder.mall.order.biz.service
+ provider:
+ filter: -exception
+ CartService:
+ version: 1.0.0
+ OrderService:
+ version: 1.0.0
+ OrderReturnService:
+ version: 1.0.0
+ OrderLogisticsService:
+ version: 1.0.0
+<<<<<<< Updated upstream
+ OrderCommentService:
+ version: 1.0.0
+=======
+>>>>>>> Stashed changes
+ consumer:
+ timeout: 120000 # 设置长一点,方便调试代码
+ ProductSpuService:
+ version: 1.0.0
+ PromotionActivityService:
+ version: 1.0.0
+ CouponService:
+ version: 1.0.0
+ PayRefundService:
+ version: 1.0.0
+ UserAddressService:
+ version: 1.0.0
+ PayTransactionService:
+ version: 1.0.0
+ DataDictService:
+ version: 1.0.0
+
+# logging
+logging:
+ level:
+ # dao 开启 debug 模式 mybatis 输入 sql
+ cn.iocoder.mall.order.biz.dao: debug
+
+# seata
+seata:
+ tx-service-group: my_test_tx_group
diff --git a/order/order-service-impl/target/classes/file.conf b/order/order-service-impl/target/classes/file.conf
new file mode 100644
index 000000000..8b60b29c3
--- /dev/null
+++ b/order/order-service-impl/target/classes/file.conf
@@ -0,0 +1,69 @@
+transport {
+ # tcp udt unix-domain-socket
+ type = "TCP"
+ #NIO NATIVE
+ server = "NIO"
+ #enable heartbeat
+ heartbeat = true
+ #thread factory for netty
+ thread-factory {
+ boss-thread-prefix = "NettyBoss"
+ worker-thread-prefix = "NettyServerNIOWorker"
+ server-executor-thread-prefix = "NettyServerBizHandler"
+ share-boss-worker = false
+ client-selector-thread-prefix = "NettyClientSelector"
+ client-selector-thread-size = 1
+ client-worker-thread-prefix = "NettyClientWorkerThread"
+ # netty boss thread size,will not be used for UDT
+ boss-thread-size = 1
+ #auto default pin or 8
+ worker-thread-size = 8
+ }
+}
+
+service {
+ #vgroup->rgroup
+ vgroup_mapping.my_test_tx_group = "default"
+ #only support single node
+ default.grouplist = "180.167.213.26:8091"
+ #degrade current not support
+ enableDegrade = false
+ #disable
+ disable = false
+}
+
+client {
+ async.commit.buffer.limit = 10000
+ lock {
+ retry.internal = 10
+ retry.times = 30
+ }
+}
+## transaction log store
+store {
+ ## store mode: file、db
+ mode = "file"
+
+ ## file store
+ file {
+ dir = "file_store/data"
+
+ # branch session size , if exceeded first try compress lockkey, still exceeded throws exceptions
+ max-branch-session-size = 16384
+ # globe session size , if exceeded throws exceptions
+ max-global-session-size = 512
+ # file buffer size , if exceeded allocate new buffer
+ file-write-buffer-cache-size = 16384
+ # when recover batch read size
+ session.reload.read_size = 100
+ }
+
+ ## database store
+ db {
+ driver_class = ""
+ url = ""
+ user = ""
+ password = ""
+ }
+}
+
diff --git a/order/order-service-impl/target/classes/mapper/CartMapper.xml b/order/order-service-impl/target/classes/mapper/CartMapper.xml
new file mode 100644
index 000000000..7d9a28f38
--- /dev/null
+++ b/order/order-service-impl/target/classes/mapper/CartMapper.xml
@@ -0,0 +1,129 @@
+
+
+
+
+
+ id, status, delete_time, selected, user_id,
+ spu_id, sku_id, quantity, order_id, order_create_time,
+ create_time
+
+
+
+
+
+
+
+
+
+
+
+
+
+ INSERT INTO cart_item (
+ status, delete_time, selected, user_id,
+ spu_id, sku_id, quantity, order_id, order_create_time,
+ create_time
+ ) VALUES (
+ #{status}, #{deleteTime}, #{selected}, #{userId},
+ #{spuId}, #{skuId}, #{quantity}, #{orderId}, #{orderCreateTime},
+ #{createTime}
+ )
+
+
+
+ UPDATE cart_item
+
+
+ status = #{status},
+
+
+ delete_time = #{deleteTime},
+
+
+ selected = #{selected},
+
+
+ quantity = #{quantity},
+
+
+ order_id = #{orderId},
+
+
+ order_create_time = #{orderCreateTime},
+
+
+ price = #{price},
+
+
+ quantity = #{quantity},
+
+
+ WHERE id = #{id}
+
+
+
+ UPDATE cart_item
+ SET quantity = quantity + #{quantityIncr}
+ WHERE id = #{id}
+
+
+
+ UPDATE cart_item
+
+
+ selected = #{selected},
+
+
+ status = #{status},
+
+
+ WHERE user_id = #{userId}
+ AND sku_id IN
+
+ #{skuId}
+
+ -- AND deleted = 0
+
+
+
diff --git a/order/order-service-impl/target/classes/mapper/OrderCancelMapper.xml b/order/order-service-impl/target/classes/mapper/OrderCancelMapper.xml
new file mode 100644
index 000000000..cb7faca20
--- /dev/null
+++ b/order/order-service-impl/target/classes/mapper/OrderCancelMapper.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+ id, order_id, order_no, reason, other_reason,
+ create_time, update_time
+
+
+
+
+ INSERT INTO `order_cancel` (
+ order_id, order_no, reason, other_reason,
+ create_time, update_time
+ ) VALUES (
+ #{orderId}, #{orderNo}, #{reason}, #{otherReason},
+ #{createTime}, #{updateTime}
+ )
+
+
diff --git a/order/order-service-impl/target/classes/mapper/OrderCommentMapper.xml b/order/order-service-impl/target/classes/mapper/OrderCommentMapper.xml
new file mode 100644
index 000000000..9d96f35ac
--- /dev/null
+++ b/order/order-service-impl/target/classes/mapper/OrderCommentMapper.xml
@@ -0,0 +1,52 @@
+
+
+
+
+
+ id,order_id,order_no,product_spu_id,product_spu_name,product_sku_id,product_sku_attrs,product_sku_price,product_sku_pic_url,
+ user_id,user_avatar,user_nick_name,star,product_description_star,logistics_star,merchant_star,replay_count,like_count,comment_content,
+ comment_pics,create_time,update_time
+
+
+
+
+ INSERT INTO order_comment(order_id,order_no,product_spu_id,product_spu_name,product_sku_id,
+ product_sku_attrs,product_sku_price,product_sku_pic_url,user_id,user_avatar,user_nick_name,star,
+ product_description_star,logistics_star,merchant_star,comment_content,comment_pics,create_time,update_time)
+ VALUES (#{orderId},#{orderNo},#{productSpuId},#{productSpuName},#{productSkuId},#{productSkuAttrs},
+ #{productSkuPrice},#{productSkuPicUrl},#{userId},#{userAvatar},#{userNickName},#{star},
+ #{productDescriptionStar},#{logisticsStar},#{merchantStar},#{commentContent},#{commentPics},#{createTime}, #{updateTime});
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/order/order-service-impl/target/classes/mapper/OrderCommentReplayMapper.xml b/order/order-service-impl/target/classes/mapper/OrderCommentReplayMapper.xml
new file mode 100644
index 000000000..997bd4b52
--- /dev/null
+++ b/order/order-service-impl/target/classes/mapper/OrderCommentReplayMapper.xml
@@ -0,0 +1,67 @@
+
+
+
+
+
+ id,comment_id,reply_type,parent_id,parent_user_id,parent_user_nick_name,parent_user_avatar,reply_content,
+ reply_user_id,reply_user_nick_name,reply_user_avatar,user_type,reply_like_count,create_time,update_time
+
+
+
+
+<<<<<<< Updated upstream
+ INSERT INTO order_comment_replay(comment_id,reply_type,parent_id,parent_user_id,parent_user_nick_name,parent_user_avatar,reply_content,reply_user_id
+=======
+ INSERT INTO `order_comment_replay`(comment_id,reply_type,parent_id,parent_user_id,parent_user_nick_name,parent_user_avatar,reply_content,reply_user_id
+>>>>>>> Stashed changes
+ reply_user_nick_name,reply_user_avatar,user_type,create_time,update_time)
+ VALUES (#{commentId},#{replyType},#{parentId},#{parentUserId},#{parentUserNickName},#{parentUserAvatar},#{replyContent},#{replyUserId},
+ #{replyUserNickName},#{replyUserAvatar},#{userType},#{createTime},#{updateTime})
+
+
+
+
+
+
+
+
+
+
+
+<<<<<<< Updated upstream
+
+
+
+
+=======
+>>>>>>> Stashed changes
+
diff --git a/order/order-service-impl/target/classes/mapper/OrderItemMapper.xml b/order/order-service-impl/target/classes/mapper/OrderItemMapper.xml
new file mode 100644
index 000000000..593332489
--- /dev/null
+++ b/order/order-service-impl/target/classes/mapper/OrderItemMapper.xml
@@ -0,0 +1,172 @@
+
+
+
+
+
+ id, order_id, order_no, sku_id, sku_name, sku_image, order_logistics_id,
+ quantity, origin_price, buy_price, present_price, buy_total, discount_total, present_total,
+ payment_time, delivery_time, receiver_time, closing_time,
+ has_return_exchange, delivery_type, status,
+ create_time, update_time, deleted
+
+
+
+
+ INSERT INTO `order_item` (
+ order_id, order_no, sku_id, sku_name, sku_image, order_logistics_id,
+ quantity, origin_price, buy_price, present_price, buy_total, discount_total, present_total,
+ payment_time, delivery_time, receiver_time, closing_time,
+ has_return_exchange, delivery_type, status,
+ create_time, update_time, deleted
+ ) VALUES
+
+ (#{item.orderId}, #{item.orderNo}, #{item.skuId}, #{item.skuName}, #{item.skuImage}, #{item.orderLogisticsId},
+ #{item.quantity}, #{item.originPrice}, #{item.buyPrice}, #{item.presentPrice}, #{item.buyTotal}, #{item.discountTotal}, #{item.presentTotal},
+ #{item.paymentTime}, #{item.deliveryTime}, #{item.receiverTime}, #{item.closingTime},
+ #{item.hasReturnExchange}, #{item.deliveryType}, #{item.status},
+ #{item.createTime}, #{item.updateTime}, #{item.deleted})
+
+
+
+
+
+
+
+ , order_id = #{orderItemDO.orderId}
+
+
+ , order_no = #{orderItemDO.orderNo}
+
+
+ , order_logistics_id = #{orderItemDO.orderLogisticsId}
+
+
+ , sku_id = #{orderItemDO.skuId}
+
+
+ , sku_name = #{orderItemDO.skuName}
+
+
+ , sku_image = #{orderItemDO.skuImage}
+
+
+ , quantity = #{orderItemDO.quantity}
+
+
+
+
+
+
+
+
+
+
+ , payment_time = #{orderItemDO.paymentTime}
+
+
+ , delivery_time = #{orderItemDO.deliveryTime}
+
+
+ , receiver_time = #{orderItemDO.receiverTime}
+
+
+ , closing_time = #{orderItemDO.closingTime}
+
+
+
+ , has_return_exchange = #{orderItemDO.hasReturnExchange}
+
+
+ , status = #{orderItemDO.status}
+
+
+ , delivery_type = #{orderItemDO.deliveryType}
+
+
+ , `deleted` = #{orderItemDO.deleted}
+
+
+ , create_time = #{orderItemDO.createTime}
+
+
+ , update_time = #{orderItemDO.updateTime}
+
+
+
+
+
+
+ UPDATE `order_item`
+
+ WHERE id = #{orderItemDO.id}
+
+
+
+
+ UPDATE `order_item`
+
+ WHERE id IN
+
+ #{id}
+
+
+
+
+
+ UPDATE `order_item`
+
+ WHERE order_id = #{orderId}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/order/order-service-impl/target/classes/mapper/OrderLogisticsDetailMapper.xml b/order/order-service-impl/target/classes/mapper/OrderLogisticsDetailMapper.xml
new file mode 100644
index 000000000..34db79843
--- /dev/null
+++ b/order/order-service-impl/target/classes/mapper/OrderLogisticsDetailMapper.xml
@@ -0,0 +1,76 @@
+
+
+
+
+
+ id,
+ order_logistics_id,
+ logistics_time,
+ logistics_information,
+ create_time,
+ update_time
+
+
+
+
+ INSERT INTO cart_item (order_logistics_id, logistics_time, logistics_information,
+ create_time, update_time)
+ VALUES (#{orderLogisticsId}, #{logisticsTime}, #{logisticsInformation},
+ #{createTime}, #{updateTime})
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/order/order-service-impl/target/classes/mapper/OrderLogisticsMapper.xml b/order/order-service-impl/target/classes/mapper/OrderLogisticsMapper.xml
new file mode 100644
index 000000000..84de53114
--- /dev/null
+++ b/order/order-service-impl/target/classes/mapper/OrderLogisticsMapper.xml
@@ -0,0 +1,80 @@
+
+
+
+
+
+ id, area_no, `name`, mobile, address, logistics, logistics_no, create_time, update_time
+
+
+
+
+ INSERT INTO `order_logistics` (
+ area_no, `name`, mobile, address, logistics, logistics_no, create_time, update_time
+ ) VALUES (
+ #{areaNo}, #{name}, #{mobile}, #{address},
+ #{logistics}, #{logisticsNo}, #{createTime}, #{updateTime}
+ )
+
+
+
+
+
+
+ , area_no = #{areaNo}
+
+
+ , `name` = #{name}
+
+
+ , mobile = #{mobile}
+
+
+ , address = #{address}
+
+
+ , logistics = #{logistics}
+
+
+ , logistics_no = #{logisticsNo}
+
+
+
+
+
+
+ UPDATE `order_logistics`
+
+ WHERE id = #{id}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/order/order-service-impl/target/classes/mapper/OrderMapper.xml b/order/order-service-impl/target/classes/mapper/OrderMapper.xml
new file mode 100644
index 000000000..5bc328e25
--- /dev/null
+++ b/order/order-service-impl/target/classes/mapper/OrderMapper.xml
@@ -0,0 +1,141 @@
+
+
+
+
+
+ id, user_id, order_no, buy_price, discount_price, logistics_price, present_price, pay_amount,
+ payment_time, delivery_time, receiver_time, closing_time,
+ has_return_exchange,
+ status, remark, create_time, update_time, `deleted`
+
+
+
+
+
+ , order_no = #{orderNo}
+
+
+ , buy_price = #{buyPrice}
+
+
+ , discount_price = #{discountPrice}
+
+
+ , logistics_price = #{logisticsPrice}
+
+
+ , logistics_price = #{logisticsPrice}
+
+
+ , present_price = #{presentPrice}
+
+
+ , pay_amount = #{payAmount}
+
+
+ , delivery_time = #{deliveryTime}
+
+
+ , payment_time = #{paymentTime}
+
+
+ , receiver_time = #{receiverTime}
+
+
+ , closing_time = #{closingTime}
+
+
+ , has_return_exchange = #{hasReturnExchange}
+
+
+
+ , status = #{status}
+
+
+ , remark = #{remark}
+
+
+ , `deleted` = #{deleted}
+
+
+ , create_time = #{createTime}
+
+
+ , update_time = #{updateTime}
+
+
+
+
+
+ UPDATE `orders`
+
+ WHERE id = #{id}
+
+
+
+ UPDATE `orders`
+
+
+ , pay_amount = #{updateObj.payAmount}
+
+
+ , payment_time = #{updateObj.paymentTime}
+
+
+ , status = #{updateObj.status}
+
+
+ WHERE id = #{id}
+ AND status = #{status}
+
+
+
+
+
+
+ AND `status` = #{status}
+
+
+ AND `user_id` = #{userId}
+
+
+ AND `id` = #{id}
+
+
+ AND `order_no` = #{orderNo}
+
+
+ AND `has_return_exchange` = #{hasReturnExchange}
+
+
+ AND `create_time` >= #{startCreateTime}
+ AND `create_time` <= #{endCreateTime}
+
+
+
+
+
+
+
+
+
diff --git a/order/order-service-impl/target/classes/mapper/OrderRecipientMapper.xml b/order/order-service-impl/target/classes/mapper/OrderRecipientMapper.xml
new file mode 100644
index 000000000..77c893b0b
--- /dev/null
+++ b/order/order-service-impl/target/classes/mapper/OrderRecipientMapper.xml
@@ -0,0 +1,46 @@
+
+
+
+
+
+ id, order_id, `area_no`, `name`, mobile, address, `type`,
+ create_time, update_time
+
+
+
+
+ INSERT INTO `order_recipient` (
+ order_id, `area_no`, `name`, mobile, address,
+ `type`, create_time, update_time
+ ) VALUES (
+ #{orderId}, #{areaNo}, #{name}, #{mobile}, #{address},
+ #{type}, #{createTime,jdbcType=TIMESTAMP} , #{updateTime}
+ )
+
+
+
+
+
+
+
+
+
diff --git a/order/order-service-impl/target/classes/mapper/OrderReturnMapper.xml b/order/order-service-impl/target/classes/mapper/OrderReturnMapper.xml
new file mode 100644
index 000000000..a397240f5
--- /dev/null
+++ b/order/order-service-impl/target/classes/mapper/OrderReturnMapper.xml
@@ -0,0 +1,165 @@
+
+
+
+
+
+ id,
+ service_number,
+ order_id,
+ order_no,
+ order_logistics_id,
+ refund_price,
+ reason,
+ `describe`,
+ approval_time,
+ refuse_time,
+ logistics_time,
+ receiver_time,
+ closing_time,
+ service_type,
+ status,
+ create_time,
+ update_time
+
+
+
+
+ INSERT INTO `order_return` (
+ service_number, order_id, order_no, order_logistics_id,
+ refund_price, reason, `describe`,
+ approval_time, refuse_time, logistics_time, receiver_time, closing_time,
+ service_type, status,
+ create_time, update_time)
+ VALUES (
+ #{serviceNumber}, #{orderId}, #{orderNo}, #{orderLogisticsId},
+ ${refundPrice}, #{reason}, #{describe},
+ #{approvalTime}, #{refuse_time}, #{logisticsTime}, #{receiverTime}, #{closingTime},
+ #{serviceType}, #{status}, #{createTime}, #{updateTime})
+
+
+
+
+
+
+ , order_logistics_id = #{orderLogisticsId}
+
+
+ , refund_price = #{refundPrice}
+
+
+ , reason = #{reason}
+
+
+ , `describe` = #{describe}
+
+
+ , approval_time = #{approvalTime}
+
+
+ , refuse_time = #{refuseTime}
+
+
+ , logistics_time = #{logisticsTime}
+
+
+ , receiver_time = #{receiverTime}
+
+
+ , closing_time = #{closingTime}
+
+
+ , service_type = #{serviceType}
+
+
+ , status = #{status}
+
+
+ , create_time = #{createTime}
+
+
+ , update_time = #{updateTime}
+
+
+
+
+
+
+ UPDATE `order_return`
+
+ WHERE id = #{id}
+
+
+
+
+
+
+
+
+ AND status = #{status}
+
+
+ AND service_number = #{serviceNumber}
+
+
+ AND order_id = #{orderId}
+
+
+ AND order_no = #{orderNo}
+
+
+ AND create_time >= #{startCreateTime}
+ AND create_time <= #{endCreateTime}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/order/order-service-impl/target/classes/registry.conf b/order/order-service-impl/target/classes/registry.conf
new file mode 100644
index 000000000..f73989514
--- /dev/null
+++ b/order/order-service-impl/target/classes/registry.conf
@@ -0,0 +1,14 @@
+registry {
+ type = "file"
+
+ file {
+ name = "file.conf"
+ }
+
+ zk {
+ cluster = "default"
+ serverAddr = "192.168.88.10:2181"
+ session.timeout = 6000
+ connect.timeout = 2000
+ }
+}
diff --git a/order/order-service-impl/target/classes/sql/mall_order.sql b/order/order-service-impl/target/classes/sql/mall_order.sql
new file mode 100644
index 000000000..4683263a8
--- /dev/null
+++ b/order/order-service-impl/target/classes/sql/mall_order.sql
@@ -0,0 +1,121 @@
+DROP TABLE `order`;
+DROP TABLE `order_item`;
+DROP TABLE `order_exchange`;
+DROP TABLE `order_return`;
+DROP TABLE `order_logistics`;
+DROP TABLE `order_logistics_detail`;
+
+CREATE TABLE `order` (
+`id` int NOT NULL AUTO_INCREMENT COMMENT 'Id,自增长',
+`order_logistics_id` int NOT NULL COMMENT '物流id',
+`order_no` varchar(50) NOT NULL COMMENT '订单单号',
+`price` int(10) NULL COMMENT '金额(分)',
+`payment_time` datetime NULL COMMENT '付款时间',
+`delivery_time` datetime NULL COMMENT '发货时间',
+`receiver_time` datetime NULL COMMENT '收货时间',
+`closing_time` datetime NULL COMMENT '成交时间',
+`has_return_exchange` smallint NULL COMMENT '是否退换货',
+`remark` varchar(255) NULL COMMENT '备注',
+`status` smallint(2) NULL COMMENT '状态(如果有多个商品分开发货需要全部商品发完才会改变状态) 0、待付款 1、待发货 2、待收货 3、已完成 4、已关闭',
+`create_time` datetime NULL COMMENT '订单创建时间',
+`update_time` datetime NULL COMMENT '更新时间',
+`deleted` smallint NULL COMMENT '删除状态',
+PRIMARY KEY (`id`)
+);
+CREATE TABLE `order_item` (
+`id` int NOT NULL AUTO_INCREMENT COMMENT 'id自增长',
+`order_id` int NOT NULL COMMENT '订单编号',
+`order_no` varchar(50) NOT NULL COMMENT '订单号',
+`sku_id` int NOT NULL COMMENT '商品编号',
+`quantity` int(3) NOT NULL COMMENT '商品数量',
+`price` int(255) NOT NULL COMMENT '金额',
+`payment_time` datetime NULL COMMENT '付款时间',
+`delivery_time` datetime NULL COMMENT '发货时间',
+`receiver_time` datetime NULL COMMENT '收货时间',
+`closing_time` datetime NULL,
+`has_return_exchange` int NULL COMMENT '是否退换货',
+`create_time` datetime NULL COMMENT '创建时间',
+`update_time` datetime NULL COMMENT '更新时间',
+`status` smallint(2) NOT NULL COMMENT '状态:0、代发货 1、已发货 2、已收货 20、换货中 21、换货成功 40、退货中 41、已退货',
+`delete` smallint(2) NOT NULL COMMENT '删除状态',
+PRIMARY KEY (`id`)
+);
+
+CREATE TABLE `order_exchange` (
+`id` int(11) NOT NULL AUTO_INCREMENT,
+`order_id` int(11) NOT NULL,
+`order_no` varchar(50) NOT NULL,
+`sku_id` int(11) NOT NULL,
+`exchange_sku_id` int(11) NOT NULL COMMENT '换货商品id',
+`exchange_order_logistics_id` int(11) NOT NULL COMMENT '换货物流id',
+`receiver_order_logistics_id` int(11) NOT NULL COMMENT '收件地址',
+`order_reason_id` int(11) NULL COMMENT '换货原因',
+`reason` varchar(255) NULL COMMENT '换货原因 (其他的时候)',
+`payment_time` datetime NULL COMMENT '付款时间',
+`delivery_time` datetime NULL COMMENT '发货时间',
+`receiver_time` datetime NULL COMMENT '收货时间',
+`closing_time` datetime NULL COMMENT '成交时间',
+`create_time` datetime NULL COMMENT '创建时间',
+`update_time` datetime NULL COMMENT '更新时间',
+`delete` smallint(2) NULL COMMENT '删除状态',
+`order_type` int(2) NULL COMMENT '订单类型 0、为 Order 订单 1、为 OrderItem 订单',
+`status` int(2) NULL COMMENT '状态 申请换货、申请成功、申请失败、换货中、换货成功',
+PRIMARY KEY (`id`)
+);
+
+
+CREATE TABLE `order_return` (
+`id` int NOT NULL AUTO_INCREMENT COMMENT 'id自增长',
+`order_id` int NOT NULL COMMENT '订单编号',
+`order_no` varchar(50) NOT NULL COMMENT '订单号',
+`sku_id` int NOT NULL COMMENT '商品编号',
+`order_item_id` int(11) NOT NULL COMMENT '订单item id',
+`order_logistics_id` int(11) NOT NULL COMMENT '物流 id',
+
+`order_reason_id` int(11) NULL COMMENT '退货原因',
+`reason` varchar(255) NULL COMMENT '换货原因 (其他的时候)',
+`create_time` datetime NULL COMMENT '创建时间',
+`approval_time` datetime NULL COMMENT '同意时间',
+`logistics_time` datetime NULL COMMENT '物流时间(填写物流单号时间)',
+`receiver_time` datetime NULL COMMENT '收货时间',
+`closing_time` datetime NULL COMMENT '成交时间',
+`order_type` int(2) NULL COMMENT '订单类型 0、为 Order 订单 1、为 OrderItem 订单',
+
+`update_time` datetime NULL COMMENT '更新时间',
+`delete` smallint(2) NULL COMMENT '删除状态',
+`status` int(2) NULL COMMENT '状态 申请换货、申请成功、申请失败、退货中、退货成功',
+PRIMARY KEY (`id`)
+);
+
+
+CREATE TABLE `order_logistics` (
+`id` int NOT NULL AUTO_INCREMENT COMMENT 'id自增长',
+`area_no` int NOT NULL COMMENT '订单编号',
+`name` VARCHAR(20) NOT NULL COMMENT '名称',
+`mobile` VARCHAR(20) NOT NULL COMMENT '手机号',
+`address` VARCHAR(255) NOT NULL COMMENT '详细地址',
+`logistics_no` VARCHAR(20) NOT NULL COMMENT '物流单号',
+PRIMARY KEY (`id`)
+);
+
+
+CREATE TABLE `order_logistics_detail` (
+`id` int NOT NULL AUTO_INCREMENT COMMENT 'id自增长',
+`order_logistics_id` int NOT NULL COMMENT '物流编号',
+`logistics_time` datetime NOT NULL COMMENT '物流时间',
+`logistics_information` VARCHAR(20) NOT NULL COMMENT '物流信息',
+PRIMARY KEY (`id`)
+);
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/order/order-service-impl/target/generated-sources/annotations/cn/iocoder/mall/order/biz/convert/CartConvertImpl.java b/order/order-service-impl/target/generated-sources/annotations/cn/iocoder/mall/order/biz/convert/CartConvertImpl.java
new file mode 100644
index 000000000..c09d2245e
--- /dev/null
+++ b/order/order-service-impl/target/generated-sources/annotations/cn/iocoder/mall/order/biz/convert/CartConvertImpl.java
@@ -0,0 +1,74 @@
+package cn.iocoder.mall.order.biz.convert;
+
+import cn.iocoder.mall.order.api.bo.CalcOrderPriceBO.Item;
+import cn.iocoder.mall.order.api.bo.CartItemBO;
+import cn.iocoder.mall.order.biz.dataobject.CartItemDO;
+import cn.iocoder.mall.product.api.bo.ProductAttrAndValuePairBO;
+import cn.iocoder.mall.product.api.bo.ProductSkuDetailBO;
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.Generated;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2019-05-24T11:39:07+0800",
+ comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_121 (Oracle Corporation)"
+)
+public class CartConvertImpl implements CartConvert {
+
+ @Override
+ public Item convert(ProductSkuDetailBO sku) {
+ if ( sku == null ) {
+ return null;
+ }
+
+ Item item = new Item();
+
+ item.setId( sku.getId() );
+ item.setSpu( sku.getSpu() );
+ item.setPicURL( sku.getPicURL() );
+ List list = sku.getAttrs();
+ if ( list != null ) {
+ item.setAttrs( new ArrayList( list ) );
+ }
+ item.setPrice( sku.getPrice() );
+ item.setQuantity( sku.getQuantity() );
+
+ return item;
+ }
+
+ @Override
+ public List convert(List items) {
+ if ( items == null ) {
+ return null;
+ }
+
+ List list = new ArrayList( items.size() );
+ for ( CartItemDO cartItemDO : items ) {
+ list.add( cartItemDOToCartItemBO( cartItemDO ) );
+ }
+
+ return list;
+ }
+
+ protected CartItemBO cartItemDOToCartItemBO(CartItemDO cartItemDO) {
+ if ( cartItemDO == null ) {
+ return null;
+ }
+
+ CartItemBO cartItemBO = new CartItemBO();
+
+ cartItemBO.setId( cartItemDO.getId() );
+ cartItemBO.setStatus( cartItemDO.getStatus() );
+ cartItemBO.setSelected( cartItemDO.getSelected() );
+ cartItemBO.setUserId( cartItemDO.getUserId() );
+ cartItemBO.setSpuId( cartItemDO.getSpuId() );
+ cartItemBO.setSkuId( cartItemDO.getSkuId() );
+ cartItemBO.setQuantity( cartItemDO.getQuantity() );
+ cartItemBO.setOrderId( cartItemDO.getOrderId() );
+ cartItemBO.setOrderCreateTime( cartItemDO.getOrderCreateTime() );
+ cartItemBO.setCreateTime( cartItemDO.getCreateTime() );
+
+ return cartItemBO;
+ }
+}
diff --git a/order/order-service-impl/target/generated-sources/annotations/cn/iocoder/mall/order/biz/convert/OrderCommentConvertImpl.java b/order/order-service-impl/target/generated-sources/annotations/cn/iocoder/mall/order/biz/convert/OrderCommentConvertImpl.java
new file mode 100644
index 000000000..1acba28ab
--- /dev/null
+++ b/order/order-service-impl/target/generated-sources/annotations/cn/iocoder/mall/order/biz/convert/OrderCommentConvertImpl.java
@@ -0,0 +1,92 @@
+package cn.iocoder.mall.order.biz.convert;
+
+import cn.iocoder.mall.order.api.bo.OrderCommentCreateBO;
+import cn.iocoder.mall.order.api.bo.OrderCommentPageBO.OrderCommentItem;
+import cn.iocoder.mall.order.api.dto.OrderCommentCreateDTO;
+import cn.iocoder.mall.order.biz.dataobject.OrderCommentDO;
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.Generated;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2019-05-31T18:14:19+0800",
+ comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_121 (Oracle Corporation)"
+)
+public class OrderCommentConvertImpl implements OrderCommentConvert {
+
+ @Override
+ public OrderCommentDO convert(OrderCommentCreateDTO orderCommentCreateDTO) {
+ if ( orderCommentCreateDTO == null ) {
+ return null;
+ }
+
+ OrderCommentDO orderCommentDO = new OrderCommentDO();
+
+ orderCommentDO.setOrderId( orderCommentCreateDTO.getOrderId() );
+ orderCommentDO.setOrderNo( orderCommentCreateDTO.getOrderNo() );
+ orderCommentDO.setProductSpuId( orderCommentCreateDTO.getProductSpuId() );
+ orderCommentDO.setProductSpuName( orderCommentCreateDTO.getProductSpuName() );
+ orderCommentDO.setProductSkuId( orderCommentCreateDTO.getProductSkuId() );
+ orderCommentDO.setProductSkuAttrs( orderCommentCreateDTO.getProductSkuAttrs() );
+ orderCommentDO.setProductSkuPrice( orderCommentCreateDTO.getProductSkuPrice() );
+ orderCommentDO.setProductSkuPicUrl( orderCommentCreateDTO.getProductSkuPicUrl() );
+ orderCommentDO.setUserId( orderCommentCreateDTO.getUserId() );
+ orderCommentDO.setUserAvatar( orderCommentCreateDTO.getUserAvatar() );
+ orderCommentDO.setUserNickName( orderCommentCreateDTO.getUserNickName() );
+ orderCommentDO.setStar( orderCommentCreateDTO.getStar() );
+ orderCommentDO.setProductDescriptionStar( orderCommentCreateDTO.getProductDescriptionStar() );
+ orderCommentDO.setLogisticsStar( orderCommentCreateDTO.getLogisticsStar() );
+ orderCommentDO.setMerchantStar( orderCommentCreateDTO.getMerchantStar() );
+ orderCommentDO.setCommentContent( orderCommentCreateDTO.getCommentContent() );
+ orderCommentDO.setCommentPics( orderCommentCreateDTO.getCommentPics() );
+
+ return orderCommentDO;
+ }
+
+ @Override
+ public OrderCommentCreateBO convert(OrderCommentDO orderCommentDO) {
+ if ( orderCommentDO == null ) {
+ return null;
+ }
+
+ OrderCommentCreateBO orderCommentCreateBO = new OrderCommentCreateBO();
+
+ orderCommentCreateBO.setId( orderCommentDO.getId() );
+
+ return orderCommentCreateBO;
+ }
+
+ @Override
+ public List convert(List orderCommentDOList) {
+ if ( orderCommentDOList == null ) {
+ return null;
+ }
+
+ List list = new ArrayList( orderCommentDOList.size() );
+ for ( OrderCommentDO orderCommentDO : orderCommentDOList ) {
+ list.add( orderCommentDOToOrderCommentItem( orderCommentDO ) );
+ }
+
+ return list;
+ }
+
+ protected OrderCommentItem orderCommentDOToOrderCommentItem(OrderCommentDO orderCommentDO) {
+ if ( orderCommentDO == null ) {
+ return null;
+ }
+
+ OrderCommentItem orderCommentItem = new OrderCommentItem();
+
+ orderCommentItem.setId( orderCommentDO.getId() );
+ orderCommentItem.setUserAvatar( orderCommentDO.getUserAvatar() );
+ orderCommentItem.setUserNickName( orderCommentDO.getUserNickName() );
+ orderCommentItem.setStar( orderCommentDO.getStar() );
+ orderCommentItem.setCommentContent( orderCommentDO.getCommentContent() );
+ orderCommentItem.setCommentPics( orderCommentDO.getCommentPics() );
+ orderCommentItem.setReplayCount( orderCommentDO.getReplayCount() );
+ orderCommentItem.setCreateTime( orderCommentDO.getCreateTime() );
+
+ return orderCommentItem;
+ }
+}
diff --git a/order/order-service-impl/target/generated-sources/annotations/cn/iocoder/mall/order/biz/convert/OrderConvertImpl.java b/order/order-service-impl/target/generated-sources/annotations/cn/iocoder/mall/order/biz/convert/OrderConvertImpl.java
new file mode 100644
index 000000000..2c418655c
--- /dev/null
+++ b/order/order-service-impl/target/generated-sources/annotations/cn/iocoder/mall/order/biz/convert/OrderConvertImpl.java
@@ -0,0 +1,82 @@
+package cn.iocoder.mall.order.biz.convert;
+
+import cn.iocoder.mall.order.api.bo.OrderBO;
+import cn.iocoder.mall.order.api.bo.OrderInfoBO;
+import cn.iocoder.mall.order.biz.dataobject.OrderDO;
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.Generated;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2019-05-24T11:39:07+0800",
+ comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_121 (Oracle Corporation)"
+)
+public class OrderConvertImpl implements OrderConvert {
+
+ @Override
+ public List convertPageBO(List orderDOList) {
+ if ( orderDOList == null ) {
+ return null;
+ }
+
+ List list = new ArrayList( orderDOList.size() );
+ for ( OrderDO orderDO : orderDOList ) {
+ list.add( orderDOToOrderBO( orderDO ) );
+ }
+
+ return list;
+ }
+
+ @Override
+ public OrderInfoBO convert(OrderDO orderDO) {
+ if ( orderDO == null ) {
+ return null;
+ }
+
+ OrderInfoBO orderInfoBO = new OrderInfoBO();
+
+ orderInfoBO.setId( orderDO.getId() );
+ orderInfoBO.setOrderNo( orderDO.getOrderNo() );
+ orderInfoBO.setBuyPrice( orderDO.getBuyPrice() );
+ orderInfoBO.setDiscountPrice( orderDO.getDiscountPrice() );
+ orderInfoBO.setLogisticsPrice( orderDO.getLogisticsPrice() );
+ orderInfoBO.setPresentPrice( orderDO.getPresentPrice() );
+ orderInfoBO.setPayAmount( orderDO.getPayAmount() );
+ orderInfoBO.setPaymentTime( orderDO.getPaymentTime() );
+ orderInfoBO.setDeliveryTime( orderDO.getDeliveryTime() );
+ orderInfoBO.setReceiverTime( orderDO.getReceiverTime() );
+ orderInfoBO.setClosingTime( orderDO.getClosingTime() );
+ orderInfoBO.setHasReturnExchange( orderDO.getHasReturnExchange() );
+ orderInfoBO.setStatus( orderDO.getStatus() );
+ orderInfoBO.setRemark( orderDO.getRemark() );
+
+ return orderInfoBO;
+ }
+
+ protected OrderBO orderDOToOrderBO(OrderDO orderDO) {
+ if ( orderDO == null ) {
+ return null;
+ }
+
+ OrderBO orderBO = new OrderBO();
+
+ orderBO.setId( orderDO.getId() );
+ orderBO.setUserId( orderDO.getUserId() );
+ orderBO.setOrderNo( orderDO.getOrderNo() );
+ orderBO.setBuyPrice( orderDO.getBuyPrice() );
+ orderBO.setDiscountPrice( orderDO.getDiscountPrice() );
+ orderBO.setLogisticsPrice( orderDO.getLogisticsPrice() );
+ orderBO.setPresentPrice( orderDO.getPresentPrice() );
+ orderBO.setPayAmount( orderDO.getPayAmount() );
+ orderBO.setPaymentTime( orderDO.getPaymentTime() );
+ orderBO.setDeliveryTime( orderDO.getDeliveryTime() );
+ orderBO.setReceiverTime( orderDO.getReceiverTime() );
+ orderBO.setClosingTime( orderDO.getClosingTime() );
+ orderBO.setHasReturnExchange( orderDO.getHasReturnExchange() );
+ orderBO.setStatus( orderDO.getStatus() );
+ orderBO.setRemark( orderDO.getRemark() );
+
+ return orderBO;
+ }
+}
diff --git a/order/order-service-impl/target/generated-sources/annotations/cn/iocoder/mall/order/biz/convert/OrderItemConvertImpl.java b/order/order-service-impl/target/generated-sources/annotations/cn/iocoder/mall/order/biz/convert/OrderItemConvertImpl.java
new file mode 100644
index 000000000..0d259e035
--- /dev/null
+++ b/order/order-service-impl/target/generated-sources/annotations/cn/iocoder/mall/order/biz/convert/OrderItemConvertImpl.java
@@ -0,0 +1,156 @@
+package cn.iocoder.mall.order.biz.convert;
+
+import cn.iocoder.mall.order.api.bo.OrderItemBO;
+import cn.iocoder.mall.order.api.dto.OrderCreateDTO.OrderItem;
+import cn.iocoder.mall.order.api.dto.OrderItemUpdateDTO;
+import cn.iocoder.mall.order.biz.dataobject.OrderItemDO;
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.Generated;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2019-05-24T11:39:07+0800",
+ comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_121 (Oracle Corporation)"
+)
+public class OrderItemConvertImpl implements OrderItemConvert {
+
+ @Override
+ public OrderItemDO convert(OrderItemUpdateDTO orderItemUpdateDTO) {
+ if ( orderItemUpdateDTO == null ) {
+ return null;
+ }
+
+ OrderItemDO orderItemDO = new OrderItemDO();
+
+ orderItemDO.setId( orderItemUpdateDTO.getId() );
+ orderItemDO.setSkuId( orderItemUpdateDTO.getSkuId() );
+ orderItemDO.setQuantity( orderItemUpdateDTO.getQuantity() );
+
+ return orderItemDO;
+ }
+
+ @Override
+ public List convertOrderItemBO(List orderItemDOList) {
+ if ( orderItemDOList == null ) {
+ return null;
+ }
+
+ List list = new ArrayList( orderItemDOList.size() );
+ for ( OrderItemDO orderItemDO : orderItemDOList ) {
+ list.add( orderItemDOToOrderItemBO( orderItemDO ) );
+ }
+
+ return list;
+ }
+
+ @Override
+ public List convert(List orderCreateItemDTOList) {
+ if ( orderCreateItemDTOList == null ) {
+ return null;
+ }
+
+ List list = new ArrayList( orderCreateItemDTOList.size() );
+ for ( OrderItem orderItem : orderCreateItemDTOList ) {
+ list.add( orderItemToOrderItemDO( orderItem ) );
+ }
+
+ return list;
+ }
+
+ @Override
+ public List convertOrderItemDO(List orderItemDOList) {
+ if ( orderItemDOList == null ) {
+ return null;
+ }
+
+ List list = new ArrayList( orderItemDOList.size() );
+ for ( OrderItemDO orderItemDO : orderItemDOList ) {
+ list.add( orderItemDOToOrderItemBO( orderItemDO ) );
+ }
+
+ return list;
+ }
+
+ @Override
+ public List convertOrderInfoWithOrderItem(List orderItemDOList) {
+ if ( orderItemDOList == null ) {
+ return null;
+ }
+
+ List list = new ArrayList( orderItemDOList.size() );
+ for ( OrderItemDO orderItemDO : orderItemDOList ) {
+ list.add( orderItemDOToOrderItem( orderItemDO ) );
+ }
+
+ return list;
+ }
+
+ protected OrderItemBO orderItemDOToOrderItemBO(OrderItemDO orderItemDO) {
+ if ( orderItemDO == null ) {
+ return null;
+ }
+
+ OrderItemBO orderItemBO = new OrderItemBO();
+
+ orderItemBO.setId( orderItemDO.getId() );
+ orderItemBO.setOrderId( orderItemDO.getOrderId() );
+ orderItemBO.setOrderNo( orderItemDO.getOrderNo() );
+ orderItemBO.setSkuId( orderItemDO.getSkuId() );
+ orderItemBO.setSkuName( orderItemDO.getSkuName() );
+ orderItemBO.setSkuImage( orderItemDO.getSkuImage() );
+ orderItemBO.setQuantity( orderItemDO.getQuantity() );
+ orderItemBO.setOriginPrice( orderItemDO.getOriginPrice() );
+ orderItemBO.setBuyPrice( orderItemDO.getBuyPrice() );
+ orderItemBO.setPresentPrice( orderItemDO.getPresentPrice() );
+ orderItemBO.setBuyTotal( orderItemDO.getBuyTotal() );
+ orderItemBO.setDiscountTotal( orderItemDO.getDiscountTotal() );
+ orderItemBO.setPresentTotal( orderItemDO.getPresentTotal() );
+ orderItemBO.setPaymentTime( orderItemDO.getPaymentTime() );
+ orderItemBO.setDeliveryTime( orderItemDO.getDeliveryTime() );
+ orderItemBO.setReceiverTime( orderItemDO.getReceiverTime() );
+ orderItemBO.setClosingTime( orderItemDO.getClosingTime() );
+ orderItemBO.setHasReturnExchange( orderItemDO.getHasReturnExchange() );
+ orderItemBO.setDeliveryType( orderItemDO.getDeliveryType() );
+ orderItemBO.setStatus( orderItemDO.getStatus() );
+ orderItemBO.setCreateTime( orderItemDO.getCreateTime() );
+ orderItemBO.setUpdateTime( orderItemDO.getUpdateTime() );
+ orderItemBO.setDeleted( orderItemDO.getDeleted() );
+
+ return orderItemBO;
+ }
+
+ protected OrderItemDO orderItemToOrderItemDO(OrderItem orderItem) {
+ if ( orderItem == null ) {
+ return null;
+ }
+
+ OrderItemDO orderItemDO = new OrderItemDO();
+
+ orderItemDO.setSkuId( orderItem.getSkuId() );
+ orderItemDO.setQuantity( orderItem.getQuantity() );
+
+ return orderItemDO;
+ }
+
+ protected cn.iocoder.mall.order.api.bo.OrderInfoBO.OrderItem orderItemDOToOrderItem(OrderItemDO orderItemDO) {
+ if ( orderItemDO == null ) {
+ return null;
+ }
+
+ cn.iocoder.mall.order.api.bo.OrderInfoBO.OrderItem orderItem = new cn.iocoder.mall.order.api.bo.OrderInfoBO.OrderItem();
+
+ orderItem.setSkuId( orderItemDO.getSkuId() );
+ orderItem.setSkuName( orderItemDO.getSkuName() );
+ orderItem.setSkuImage( orderItemDO.getSkuImage() );
+ orderItem.setQuantity( orderItemDO.getQuantity() );
+ orderItem.setOriginPrice( orderItemDO.getOriginPrice() );
+ orderItem.setBuyPrice( orderItemDO.getBuyPrice() );
+ orderItem.setPresentPrice( orderItemDO.getPresentPrice() );
+ orderItem.setBuyTotal( orderItemDO.getBuyTotal() );
+ orderItem.setDiscountTotal( orderItemDO.getDiscountTotal() );
+ orderItem.setPresentTotal( orderItemDO.getPresentTotal() );
+
+ return orderItem;
+ }
+}
diff --git a/order/order-service-impl/target/generated-sources/annotations/cn/iocoder/mall/order/biz/convert/OrderLogisticsConvertImpl.java b/order/order-service-impl/target/generated-sources/annotations/cn/iocoder/mall/order/biz/convert/OrderLogisticsConvertImpl.java
new file mode 100644
index 000000000..348987050
--- /dev/null
+++ b/order/order-service-impl/target/generated-sources/annotations/cn/iocoder/mall/order/biz/convert/OrderLogisticsConvertImpl.java
@@ -0,0 +1,217 @@
+package cn.iocoder.mall.order.biz.convert;
+
+import cn.iocoder.mall.order.api.bo.OrderLastLogisticsInfoBO;
+import cn.iocoder.mall.order.api.bo.OrderLogisticsInfoBO;
+import cn.iocoder.mall.order.api.bo.OrderLogisticsInfoWithOrderBO.Logistics;
+import cn.iocoder.mall.order.api.bo.OrderLogisticsInfoWithOrderBO.LogisticsDetail;
+import cn.iocoder.mall.order.api.dto.OrderDeliveryDTO;
+import cn.iocoder.mall.order.api.dto.OrderLogisticsUpdateDTO;
+import cn.iocoder.mall.order.biz.dataobject.OrderLogisticsDO;
+import cn.iocoder.mall.order.biz.dataobject.OrderLogisticsDetailDO;
+import cn.iocoder.mall.order.biz.dataobject.OrderRecipientDO;
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.Generated;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2019-05-24T11:39:07+0800",
+ comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_121 (Oracle Corporation)"
+)
+public class OrderLogisticsConvertImpl implements OrderLogisticsConvert {
+
+ @Override
+ public OrderLogisticsDO convert(OrderDeliveryDTO orderDelivery) {
+ if ( orderDelivery == null ) {
+ return null;
+ }
+
+ OrderLogisticsDO orderLogisticsDO = new OrderLogisticsDO();
+
+ orderLogisticsDO.setLogistics( orderDelivery.getLogistics() );
+ orderLogisticsDO.setLogisticsNo( orderDelivery.getLogisticsNo() );
+
+ return orderLogisticsDO;
+ }
+
+ @Override
+ public OrderLogisticsDO convert(OrderLogisticsUpdateDTO orderLogisticsDTO) {
+ if ( orderLogisticsDTO == null ) {
+ return null;
+ }
+
+ OrderLogisticsDO orderLogisticsDO = new OrderLogisticsDO();
+
+ orderLogisticsDO.setId( orderLogisticsDTO.getId() );
+ orderLogisticsDO.setAreaNo( orderLogisticsDTO.getAreaNo() );
+ orderLogisticsDO.setName( orderLogisticsDTO.getName() );
+ orderLogisticsDO.setMobile( orderLogisticsDTO.getMobile() );
+ orderLogisticsDO.setAddress( orderLogisticsDTO.getAddress() );
+ orderLogisticsDO.setLogisticsNo( orderLogisticsDTO.getLogisticsNo() );
+
+ return orderLogisticsDO;
+ }
+
+ @Override
+ public OrderLogisticsDO convert(OrderRecipientDO orderRecipientDO) {
+ if ( orderRecipientDO == null ) {
+ return null;
+ }
+
+ OrderLogisticsDO orderLogisticsDO = new OrderLogisticsDO();
+
+ orderLogisticsDO.setCreateTime( orderRecipientDO.getCreateTime() );
+ orderLogisticsDO.setUpdateTime( orderRecipientDO.getUpdateTime() );
+ orderLogisticsDO.setId( orderRecipientDO.getId() );
+ orderLogisticsDO.setAreaNo( orderRecipientDO.getAreaNo() );
+ orderLogisticsDO.setName( orderRecipientDO.getName() );
+ orderLogisticsDO.setMobile( orderRecipientDO.getMobile() );
+ orderLogisticsDO.setAddress( orderRecipientDO.getAddress() );
+
+ return orderLogisticsDO;
+ }
+
+ @Override
+ public List convertLogistics(List orderLogisticsDOList) {
+ if ( orderLogisticsDOList == null ) {
+ return null;
+ }
+
+ List list = new ArrayList( orderLogisticsDOList.size() );
+ for ( OrderLogisticsDO orderLogisticsDO : orderLogisticsDOList ) {
+ list.add( orderLogisticsDOToLogistics( orderLogisticsDO ) );
+ }
+
+ return list;
+ }
+
+ @Override
+ public List convertLogisticsDetail(List orderLogisticsDOList) {
+ if ( orderLogisticsDOList == null ) {
+ return null;
+ }
+
+ List list = new ArrayList( orderLogisticsDOList.size() );
+ for ( OrderLogisticsDetailDO orderLogisticsDetailDO : orderLogisticsDOList ) {
+ list.add( orderLogisticsDetailDOToLogisticsDetail( orderLogisticsDetailDO ) );
+ }
+
+ return list;
+ }
+
+ @Override
+ public OrderLogisticsInfoBO convert(OrderLogisticsDO orderLogisticsDO) {
+ if ( orderLogisticsDO == null ) {
+ return null;
+ }
+
+ OrderLogisticsInfoBO orderLogisticsInfoBO = new OrderLogisticsInfoBO();
+
+ orderLogisticsInfoBO.setId( orderLogisticsDO.getId() );
+ orderLogisticsInfoBO.setAreaNo( orderLogisticsDO.getAreaNo() );
+ orderLogisticsInfoBO.setName( orderLogisticsDO.getName() );
+ orderLogisticsInfoBO.setMobile( orderLogisticsDO.getMobile() );
+ orderLogisticsInfoBO.setAddress( orderLogisticsDO.getAddress() );
+ orderLogisticsInfoBO.setLogistics( orderLogisticsDO.getLogistics() );
+ orderLogisticsInfoBO.setLogisticsNo( orderLogisticsDO.getLogisticsNo() );
+
+ return orderLogisticsInfoBO;
+ }
+
+ @Override
+ public List convert(List orderLogisticsDetailDOList) {
+ if ( orderLogisticsDetailDOList == null ) {
+ return null;
+ }
+
+ List list = new ArrayList( orderLogisticsDetailDOList.size() );
+ for ( OrderLogisticsDetailDO orderLogisticsDetailDO : orderLogisticsDetailDOList ) {
+ list.add( orderLogisticsDetailDOToLogisticsDetail1( orderLogisticsDetailDO ) );
+ }
+
+ return list;
+ }
+
+ @Override
+ public OrderLastLogisticsInfoBO convertOrderLastLogisticsInfoBO(OrderLogisticsDO orderLogisticsDO) {
+ if ( orderLogisticsDO == null ) {
+ return null;
+ }
+
+ OrderLastLogisticsInfoBO orderLastLogisticsInfoBO = new OrderLastLogisticsInfoBO();
+
+ orderLastLogisticsInfoBO.setId( orderLogisticsDO.getId() );
+ orderLastLogisticsInfoBO.setAreaNo( orderLogisticsDO.getAreaNo() );
+ orderLastLogisticsInfoBO.setName( orderLogisticsDO.getName() );
+ orderLastLogisticsInfoBO.setMobile( orderLogisticsDO.getMobile() );
+ orderLastLogisticsInfoBO.setAddress( orderLogisticsDO.getAddress() );
+ orderLastLogisticsInfoBO.setLogistics( orderLogisticsDO.getLogistics() );
+ orderLastLogisticsInfoBO.setLogisticsNo( orderLogisticsDO.getLogisticsNo() );
+
+ return orderLastLogisticsInfoBO;
+ }
+
+ @Override
+ public cn.iocoder.mall.order.api.bo.OrderLastLogisticsInfoBO.LogisticsDetail convertLastLogisticsDetail(OrderLogisticsDetailDO orderLogisticsDetailDO) {
+ if ( orderLogisticsDetailDO == null ) {
+ return null;
+ }
+
+ cn.iocoder.mall.order.api.bo.OrderLastLogisticsInfoBO.LogisticsDetail logisticsDetail = new cn.iocoder.mall.order.api.bo.OrderLastLogisticsInfoBO.LogisticsDetail();
+
+ logisticsDetail.setId( orderLogisticsDetailDO.getId() );
+ logisticsDetail.setOrderLogisticsId( orderLogisticsDetailDO.getOrderLogisticsId() );
+ logisticsDetail.setLogisticsTime( orderLogisticsDetailDO.getLogisticsTime() );
+ logisticsDetail.setLogisticsInformation( orderLogisticsDetailDO.getLogisticsInformation() );
+
+ return logisticsDetail;
+ }
+
+ protected Logistics orderLogisticsDOToLogistics(OrderLogisticsDO orderLogisticsDO) {
+ if ( orderLogisticsDO == null ) {
+ return null;
+ }
+
+ Logistics logistics = new Logistics();
+
+ logistics.setId( orderLogisticsDO.getId() );
+ logistics.setAreaNo( orderLogisticsDO.getAreaNo() );
+ logistics.setName( orderLogisticsDO.getName() );
+ logistics.setMobile( orderLogisticsDO.getMobile() );
+ logistics.setAddress( orderLogisticsDO.getAddress() );
+ logistics.setLogistics( orderLogisticsDO.getLogistics() );
+ logistics.setLogisticsNo( orderLogisticsDO.getLogisticsNo() );
+
+ return logistics;
+ }
+
+ protected LogisticsDetail orderLogisticsDetailDOToLogisticsDetail(OrderLogisticsDetailDO orderLogisticsDetailDO) {
+ if ( orderLogisticsDetailDO == null ) {
+ return null;
+ }
+
+ LogisticsDetail logisticsDetail = new LogisticsDetail();
+
+ logisticsDetail.setId( orderLogisticsDetailDO.getId() );
+ logisticsDetail.setOrderLogisticsId( orderLogisticsDetailDO.getOrderLogisticsId() );
+ logisticsDetail.setLogisticsTime( orderLogisticsDetailDO.getLogisticsTime() );
+ logisticsDetail.setLogisticsInformation( orderLogisticsDetailDO.getLogisticsInformation() );
+
+ return logisticsDetail;
+ }
+
+ protected cn.iocoder.mall.order.api.bo.OrderLogisticsInfoBO.LogisticsDetail orderLogisticsDetailDOToLogisticsDetail1(OrderLogisticsDetailDO orderLogisticsDetailDO) {
+ if ( orderLogisticsDetailDO == null ) {
+ return null;
+ }
+
+ cn.iocoder.mall.order.api.bo.OrderLogisticsInfoBO.LogisticsDetail logisticsDetail = new cn.iocoder.mall.order.api.bo.OrderLogisticsInfoBO.LogisticsDetail();
+
+ logisticsDetail.setId( orderLogisticsDetailDO.getId() );
+ logisticsDetail.setOrderLogisticsId( orderLogisticsDetailDO.getOrderLogisticsId() );
+ logisticsDetail.setLogisticsTime( orderLogisticsDetailDO.getLogisticsTime() );
+ logisticsDetail.setLogisticsInformation( orderLogisticsDetailDO.getLogisticsInformation() );
+
+ return logisticsDetail;
+ }
+}
diff --git a/order/order-service-impl/target/generated-sources/annotations/cn/iocoder/mall/order/biz/convert/OrderLogisticsDetailConvertImpl.java b/order/order-service-impl/target/generated-sources/annotations/cn/iocoder/mall/order/biz/convert/OrderLogisticsDetailConvertImpl.java
new file mode 100644
index 000000000..fcc602bb3
--- /dev/null
+++ b/order/order-service-impl/target/generated-sources/annotations/cn/iocoder/mall/order/biz/convert/OrderLogisticsDetailConvertImpl.java
@@ -0,0 +1,29 @@
+package cn.iocoder.mall.order.biz.convert;
+
+import cn.iocoder.mall.order.api.bo.OrderInfoBO.LogisticsDetail;
+import cn.iocoder.mall.order.biz.dataobject.OrderLogisticsDetailDO;
+import javax.annotation.Generated;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2019-05-24T11:39:07+0800",
+ comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_121 (Oracle Corporation)"
+)
+public class OrderLogisticsDetailConvertImpl implements OrderLogisticsDetailConvert {
+
+ @Override
+ public LogisticsDetail convertLogisticsDetail(OrderLogisticsDetailDO orderLogisticsDetailDO) {
+ if ( orderLogisticsDetailDO == null ) {
+ return null;
+ }
+
+ LogisticsDetail logisticsDetail = new LogisticsDetail();
+
+ logisticsDetail.setId( orderLogisticsDetailDO.getId() );
+ logisticsDetail.setOrderLogisticsId( orderLogisticsDetailDO.getOrderLogisticsId() );
+ logisticsDetail.setLogisticsTime( orderLogisticsDetailDO.getLogisticsTime() );
+ logisticsDetail.setLogisticsInformation( orderLogisticsDetailDO.getLogisticsInformation() );
+
+ return logisticsDetail;
+ }
+}
diff --git a/order/order-service-impl/target/generated-sources/annotations/cn/iocoder/mall/order/biz/convert/OrderRecipientConvertImpl.java b/order/order-service-impl/target/generated-sources/annotations/cn/iocoder/mall/order/biz/convert/OrderRecipientConvertImpl.java
new file mode 100644
index 000000000..e568b5e53
--- /dev/null
+++ b/order/order-service-impl/target/generated-sources/annotations/cn/iocoder/mall/order/biz/convert/OrderRecipientConvertImpl.java
@@ -0,0 +1,100 @@
+package cn.iocoder.mall.order.biz.convert;
+
+import cn.iocoder.mall.order.api.bo.OrderInfoBO.Recipient;
+import cn.iocoder.mall.order.api.bo.OrderRecipientBO;
+import cn.iocoder.mall.order.api.dto.OrderCreateDTO;
+import cn.iocoder.mall.order.biz.dataobject.OrderRecipientDO;
+import cn.iocoder.mall.user.api.bo.UserAddressBO;
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.Generated;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2019-05-24T11:39:07+0800",
+ comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_121 (Oracle Corporation)"
+)
+public class OrderRecipientConvertImpl implements OrderRecipientConvert {
+
+ @Override
+ public OrderRecipientDO convert(OrderCreateDTO orderCreateDTO) {
+ if ( orderCreateDTO == null ) {
+ return null;
+ }
+
+ OrderRecipientDO orderRecipientDO = new OrderRecipientDO();
+
+ return orderRecipientDO;
+ }
+
+ @Override
+ public OrderRecipientDO convert(UserAddressBO userAddressBO) {
+ if ( userAddressBO == null ) {
+ return null;
+ }
+
+ OrderRecipientDO orderRecipientDO = new OrderRecipientDO();
+
+ orderRecipientDO.setId( userAddressBO.getId() );
+ orderRecipientDO.setAreaNo( userAddressBO.getAreaNo() );
+ orderRecipientDO.setName( userAddressBO.getName() );
+ orderRecipientDO.setMobile( userAddressBO.getMobile() );
+ orderRecipientDO.setAddress( userAddressBO.getAddress() );
+
+ return orderRecipientDO;
+ }
+
+ @Override
+ public OrderRecipientBO convert(OrderRecipientDO orderRecipientDO) {
+ if ( orderRecipientDO == null ) {
+ return null;
+ }
+
+ OrderRecipientBO orderRecipientBO = new OrderRecipientBO();
+
+ orderRecipientBO.setCreateTime( orderRecipientDO.getCreateTime() );
+ orderRecipientBO.setUpdateTime( orderRecipientDO.getUpdateTime() );
+ orderRecipientBO.setId( orderRecipientDO.getId() );
+ orderRecipientBO.setOrderId( orderRecipientDO.getOrderId() );
+ orderRecipientBO.setAreaNo( orderRecipientDO.getAreaNo() );
+ orderRecipientBO.setName( orderRecipientDO.getName() );
+ orderRecipientBO.setMobile( orderRecipientDO.getMobile() );
+ orderRecipientBO.setType( orderRecipientDO.getType() );
+ orderRecipientBO.setAddress( orderRecipientDO.getAddress() );
+
+ return orderRecipientBO;
+ }
+
+ @Override
+ public List convert(List orderRecipientDOList) {
+ if ( orderRecipientDOList == null ) {
+ return null;
+ }
+
+ List list = new ArrayList( orderRecipientDOList.size() );
+ for ( OrderRecipientDO orderRecipientDO : orderRecipientDOList ) {
+ list.add( convert( orderRecipientDO ) );
+ }
+
+ return list;
+ }
+
+ @Override
+ public Recipient convertOrderInfoRecipient(OrderRecipientDO orderRecipientDO) {
+ if ( orderRecipientDO == null ) {
+ return null;
+ }
+
+ Recipient recipient = new Recipient();
+
+ recipient.setId( orderRecipientDO.getId() );
+ recipient.setOrderId( orderRecipientDO.getOrderId() );
+ recipient.setAreaNo( orderRecipientDO.getAreaNo() );
+ recipient.setName( orderRecipientDO.getName() );
+ recipient.setMobile( orderRecipientDO.getMobile() );
+ recipient.setType( orderRecipientDO.getType() );
+ recipient.setAddress( orderRecipientDO.getAddress() );
+
+ return recipient;
+ }
+}
diff --git a/order/order-service-impl/target/generated-sources/annotations/cn/iocoder/mall/order/biz/convert/OrderReturnConvertImpl.java b/order/order-service-impl/target/generated-sources/annotations/cn/iocoder/mall/order/biz/convert/OrderReturnConvertImpl.java
new file mode 100644
index 000000000..c5dcbd583
--- /dev/null
+++ b/order/order-service-impl/target/generated-sources/annotations/cn/iocoder/mall/order/biz/convert/OrderReturnConvertImpl.java
@@ -0,0 +1,145 @@
+package cn.iocoder.mall.order.biz.convert;
+
+import cn.iocoder.mall.order.api.bo.OrderReturnInfoBO.OrderItem;
+import cn.iocoder.mall.order.api.bo.OrderReturnInfoBO.ReturnInfo;
+import cn.iocoder.mall.order.api.bo.OrderReturnListBO.OrderReturn;
+import cn.iocoder.mall.order.api.dto.OrderReturnApplyDTO;
+import cn.iocoder.mall.order.api.dto.OrderReturnCreateDTO;
+import cn.iocoder.mall.order.biz.dataobject.OrderItemDO;
+import cn.iocoder.mall.order.biz.dataobject.OrderReturnDO;
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.Generated;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2019-05-24T11:39:07+0800",
+ comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_121 (Oracle Corporation)"
+)
+public class OrderReturnConvertImpl implements OrderReturnConvert {
+
+ @Override
+ public OrderReturnDO convert(OrderReturnCreateDTO orderReturnCreate) {
+ if ( orderReturnCreate == null ) {
+ return null;
+ }
+
+ OrderReturnDO orderReturnDO = new OrderReturnDO();
+
+ orderReturnDO.setOrderId( orderReturnCreate.getOrderId() );
+
+ return orderReturnDO;
+ }
+
+ @Override
+ public OrderReturnDO convert(OrderReturnApplyDTO orderReturnApplyDTO) {
+ if ( orderReturnApplyDTO == null ) {
+ return null;
+ }
+
+ OrderReturnDO orderReturnDO = new OrderReturnDO();
+
+ orderReturnDO.setOrderId( orderReturnApplyDTO.getOrderId() );
+ orderReturnDO.setReason( orderReturnApplyDTO.getReason() );
+ orderReturnDO.setDescribe( orderReturnApplyDTO.getDescribe() );
+
+ return orderReturnDO;
+ }
+
+ @Override
+ public ReturnInfo convert(OrderReturnDO orderReturnDO) {
+ if ( orderReturnDO == null ) {
+ return null;
+ }
+
+ ReturnInfo returnInfo = new ReturnInfo();
+
+ returnInfo.setId( orderReturnDO.getId() );
+ returnInfo.setServiceNumber( orderReturnDO.getServiceNumber() );
+ returnInfo.setOrderId( orderReturnDO.getOrderId() );
+ returnInfo.setOrderNo( orderReturnDO.getOrderNo() );
+ returnInfo.setOrderLogisticsId( orderReturnDO.getOrderLogisticsId() );
+ returnInfo.setRefundPrice( orderReturnDO.getRefundPrice() );
+ returnInfo.setReason( orderReturnDO.getReason() );
+ returnInfo.setDescribe( orderReturnDO.getDescribe() );
+ returnInfo.setApprovalTime( orderReturnDO.getApprovalTime() );
+ returnInfo.setLogisticsTime( orderReturnDO.getLogisticsTime() );
+ returnInfo.setReceiverTime( orderReturnDO.getReceiverTime() );
+ returnInfo.setClosingTime( orderReturnDO.getClosingTime() );
+ returnInfo.setServiceType( orderReturnDO.getServiceType() );
+ returnInfo.setStatus( orderReturnDO.getStatus() );
+
+ return returnInfo;
+ }
+
+ @Override
+ public List convert(List orderItemDOList) {
+ if ( orderItemDOList == null ) {
+ return null;
+ }
+
+ List list = new ArrayList( orderItemDOList.size() );
+ for ( OrderItemDO orderItemDO : orderItemDOList ) {
+ list.add( orderItemDOToOrderItem( orderItemDO ) );
+ }
+
+ return list;
+ }
+
+ @Override
+ public List convertListBO(List orderReturnDOList) {
+ if ( orderReturnDOList == null ) {
+ return null;
+ }
+
+ List list = new ArrayList( orderReturnDOList.size() );
+ for ( OrderReturnDO orderReturnDO : orderReturnDOList ) {
+ list.add( orderReturnDOToOrderReturn( orderReturnDO ) );
+ }
+
+ return list;
+ }
+
+ protected OrderItem orderItemDOToOrderItem(OrderItemDO orderItemDO) {
+ if ( orderItemDO == null ) {
+ return null;
+ }
+
+ OrderItem orderItem = new OrderItem();
+
+ orderItem.setSkuId( orderItemDO.getSkuId() );
+ orderItem.setSkuName( orderItemDO.getSkuName() );
+ orderItem.setSkuImage( orderItemDO.getSkuImage() );
+ orderItem.setQuantity( orderItemDO.getQuantity() );
+ orderItem.setPresentTotal( orderItemDO.getPresentTotal() );
+
+ return orderItem;
+ }
+
+ protected OrderReturn orderReturnDOToOrderReturn(OrderReturnDO orderReturnDO) {
+ if ( orderReturnDO == null ) {
+ return null;
+ }
+
+ OrderReturn orderReturn = new OrderReturn();
+
+ orderReturn.setId( orderReturnDO.getId() );
+ orderReturn.setServiceNumber( orderReturnDO.getServiceNumber() );
+ orderReturn.setOrderId( orderReturnDO.getOrderId() );
+ orderReturn.setOrderNo( orderReturnDO.getOrderNo() );
+ orderReturn.setOrderLogisticsId( orderReturnDO.getOrderLogisticsId() );
+ orderReturn.setRefundPrice( orderReturnDO.getRefundPrice() );
+ orderReturn.setReason( orderReturnDO.getReason() );
+ orderReturn.setDescribe( orderReturnDO.getDescribe() );
+ orderReturn.setApprovalTime( orderReturnDO.getApprovalTime() );
+ orderReturn.setLogisticsTime( orderReturnDO.getLogisticsTime() );
+ orderReturn.setReceiverTime( orderReturnDO.getReceiverTime() );
+ orderReturn.setClosingTime( orderReturnDO.getClosingTime() );
+ orderReturn.setServiceType( orderReturnDO.getServiceType() );
+ orderReturn.setStatus( orderReturnDO.getStatus() );
+ orderReturn.setCreateTime( orderReturnDO.getCreateTime() );
+ orderReturn.setUpdateTime( orderReturnDO.getUpdateTime() );
+
+ return orderReturn;
+ }
+}
diff --git a/pay/pay-application/target/classes/application-test.yaml b/pay/pay-application/target/classes/application-test.yaml
new file mode 100644
index 000000000..fe7f43541
--- /dev/null
+++ b/pay/pay-application/target/classes/application-test.yaml
@@ -0,0 +1,6 @@
+swagger:
+ enable: true
+ title: 支付子系统
+ description: 支付子系统
+ version: 1.0.0
+ base-package: cn.iocoder.mall.pay.application.controller
diff --git a/pay/pay-application/target/classes/application.yaml b/pay/pay-application/target/classes/application.yaml
new file mode 100644
index 000000000..3e2704368
--- /dev/null
+++ b/pay/pay-application/target/classes/application.yaml
@@ -0,0 +1,28 @@
+spring:
+ application:
+ name: pay-application
+ cloud:
+ sentinel:
+ transport:
+ port: 8719
+ dashboard: localhost:12088
+ metric:
+ charset: UTF-8
+ eager: false
+
+# server
+server:
+ port: 18084
+ servlet:
+ context-path: /pay-api/
+
+swagger:
+ enable: false
+
+management:
+ endpoints:
+ web:
+ exposure:
+ include: health,info,env,metrics,prometheus
+ metrics:
+ enabled: true
diff --git a/pay/pay-application/target/generated-sources/annotations/cn/iocoder/mall/pay/application/convert/PayRefundConvertImpl.java b/pay/pay-application/target/generated-sources/annotations/cn/iocoder/mall/pay/application/convert/PayRefundConvertImpl.java
new file mode 100644
index 000000000..e6311c992
--- /dev/null
+++ b/pay/pay-application/target/generated-sources/annotations/cn/iocoder/mall/pay/application/convert/PayRefundConvertImpl.java
@@ -0,0 +1,57 @@
+package cn.iocoder.mall.pay.application.convert;
+
+import cn.iocoder.mall.pay.api.bo.refund.PayRefundBO;
+import cn.iocoder.mall.pay.application.vo.admins.AdminsPayRefundDetailVO;
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.Generated;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2019-05-24T11:47:14+0800",
+ comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_121 (Oracle Corporation)"
+)
+public class PayRefundConvertImpl implements PayRefundConvert {
+
+ @Override
+ public List convertList(List refunds) {
+ if ( refunds == null ) {
+ return null;
+ }
+
+ List list = new ArrayList( refunds.size() );
+ for ( PayRefundBO payRefundBO : refunds ) {
+ list.add( payRefundBOToAdminsPayRefundDetailVO( payRefundBO ) );
+ }
+
+ return list;
+ }
+
+ protected AdminsPayRefundDetailVO payRefundBOToAdminsPayRefundDetailVO(PayRefundBO payRefundBO) {
+ if ( payRefundBO == null ) {
+ return null;
+ }
+
+ AdminsPayRefundDetailVO adminsPayRefundDetailVO = new AdminsPayRefundDetailVO();
+
+ adminsPayRefundDetailVO.setId( payRefundBO.getId() );
+ adminsPayRefundDetailVO.setTransactionId( payRefundBO.getTransactionId() );
+ adminsPayRefundDetailVO.setRefundCode( payRefundBO.getRefundCode() );
+ adminsPayRefundDetailVO.setAppId( payRefundBO.getAppId() );
+ adminsPayRefundDetailVO.setOrderId( payRefundBO.getOrderId() );
+ adminsPayRefundDetailVO.setCreateIp( payRefundBO.getCreateIp() );
+ adminsPayRefundDetailVO.setOrderDescription( payRefundBO.getOrderDescription() );
+ adminsPayRefundDetailVO.setPrice( payRefundBO.getPrice() );
+ adminsPayRefundDetailVO.setStatus( payRefundBO.getStatus() );
+ adminsPayRefundDetailVO.setFinishTime( payRefundBO.getFinishTime() );
+ adminsPayRefundDetailVO.setNotifyUrl( payRefundBO.getNotifyUrl() );
+ adminsPayRefundDetailVO.setExtensionData( payRefundBO.getExtensionData() );
+ adminsPayRefundDetailVO.setRefundChannel( payRefundBO.getRefundChannel() );
+ adminsPayRefundDetailVO.setRefundTime( payRefundBO.getRefundTime() );
+ adminsPayRefundDetailVO.setNotifyTime( payRefundBO.getNotifyTime() );
+ adminsPayRefundDetailVO.setTradeNo( payRefundBO.getTradeNo() );
+ adminsPayRefundDetailVO.setCreateTime( payRefundBO.getCreateTime() );
+
+ return adminsPayRefundDetailVO;
+ }
+}
diff --git a/pay/pay-service-impl/target/classes/config/application-test.yaml b/pay/pay-service-impl/target/classes/config/application-test.yaml
new file mode 100644
index 000000000..de4b20659
--- /dev/null
+++ b/pay/pay-service-impl/target/classes/config/application-test.yaml
@@ -0,0 +1,26 @@
+spring:
+ # datasource
+ datasource:
+ url: jdbc:mysql://192.168.88.14:3306/mall_pay?useSSL=false&useUnicode=true&characterEncoding=UTF-8
+ driver-class-name: com.mysql.jdbc.Driver
+ username: root
+ password: ${MALL_MYSQL_PASSWORD}
+
+# xxl-job
+xxl:
+ job:
+ admin:
+ addresses: http://127.0.0.1:18079/
+ executor:
+ appname: pay-job-executor
+ ip:
+ port: 0
+ logpath: /Users/yunai/logs/xxl-job/
+ logretentiondays: 1
+ accessToken:
+
+# rocketmq
+rocketmq:
+ name-server: 192.168.88.14:9876
+ producer:
+ group: pay-producer-group
diff --git a/pay/pay-service-impl/target/classes/config/application.properties b/pay/pay-service-impl/target/classes/config/application.properties
new file mode 100644
index 000000000..125191e02
--- /dev/null
+++ b/pay/pay-service-impl/target/classes/config/application.properties
@@ -0,0 +1 @@
+##################### 业务模块 #####################
\ No newline at end of file
diff --git a/pay/pay-service-impl/target/classes/config/application.yaml b/pay/pay-service-impl/target/classes/config/application.yaml
new file mode 100644
index 000000000..c32231710
--- /dev/null
+++ b/pay/pay-service-impl/target/classes/config/application.yaml
@@ -0,0 +1,41 @@
+spring:
+ # datasource
+ datasource:
+ url: jdbc:mysql://180.167.213.26:13306/mall_pay?useSSL=false&useUnicode=true&characterEncoding=UTF-8
+ driver-class-name: com.mysql.jdbc.Driver
+ username: root
+ password: ${MALL_MYSQL_PASSWORD}
+
+# mybatis
+mybatis-plus:
+ config-location: classpath:mybatis-config.xml
+ mapper-locations: classpath:mapper/*.xml
+ type-aliases-package: cn.iocoder.mall.pay.biz.dataobject
+
+# dubbo
+dubbo:
+ application:
+ name: pay-service
+ registry:
+ address: zookeeper://127.0.0.1:2181
+ protocol:
+ port: -1
+ name: dubbo
+ scan:
+ base-packages: cn.iocoder.mall.pay.biz.service
+ provider:
+ filter: -exception
+ PayTransactionService:
+ version: 1.0.0
+ PayRefundService:
+ version: 1.0.0
+
+# rocketmq
+rocketmq:
+ name-server: 127.0.0.1:9876
+ producer:
+ group: pay-producer-group
+
+# seata
+seata:
+ tx-service-group: my_test_tx_group
diff --git a/pay/pay-service-impl/target/classes/file.conf b/pay/pay-service-impl/target/classes/file.conf
new file mode 100644
index 000000000..8b60b29c3
--- /dev/null
+++ b/pay/pay-service-impl/target/classes/file.conf
@@ -0,0 +1,69 @@
+transport {
+ # tcp udt unix-domain-socket
+ type = "TCP"
+ #NIO NATIVE
+ server = "NIO"
+ #enable heartbeat
+ heartbeat = true
+ #thread factory for netty
+ thread-factory {
+ boss-thread-prefix = "NettyBoss"
+ worker-thread-prefix = "NettyServerNIOWorker"
+ server-executor-thread-prefix = "NettyServerBizHandler"
+ share-boss-worker = false
+ client-selector-thread-prefix = "NettyClientSelector"
+ client-selector-thread-size = 1
+ client-worker-thread-prefix = "NettyClientWorkerThread"
+ # netty boss thread size,will not be used for UDT
+ boss-thread-size = 1
+ #auto default pin or 8
+ worker-thread-size = 8
+ }
+}
+
+service {
+ #vgroup->rgroup
+ vgroup_mapping.my_test_tx_group = "default"
+ #only support single node
+ default.grouplist = "180.167.213.26:8091"
+ #degrade current not support
+ enableDegrade = false
+ #disable
+ disable = false
+}
+
+client {
+ async.commit.buffer.limit = 10000
+ lock {
+ retry.internal = 10
+ retry.times = 30
+ }
+}
+## transaction log store
+store {
+ ## store mode: file、db
+ mode = "file"
+
+ ## file store
+ file {
+ dir = "file_store/data"
+
+ # branch session size , if exceeded first try compress lockkey, still exceeded throws exceptions
+ max-branch-session-size = 16384
+ # globe session size , if exceeded throws exceptions
+ max-global-session-size = 512
+ # file buffer size , if exceeded allocate new buffer
+ file-write-buffer-cache-size = 16384
+ # when recover batch read size
+ session.reload.read_size = 100
+ }
+
+ ## database store
+ db {
+ driver_class = ""
+ url = ""
+ user = ""
+ password = ""
+ }
+}
+
diff --git a/pay/pay-service-impl/target/classes/mapper/PayAppMapper.xml b/pay/pay-service-impl/target/classes/mapper/PayAppMapper.xml
new file mode 100644
index 000000000..b01ab537e
--- /dev/null
+++ b/pay/pay-service-impl/target/classes/mapper/PayAppMapper.xml
@@ -0,0 +1,37 @@
+
+
+
+
+
+ id, name, notify_url, refund_notify_url, status, create_time
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pay/pay-service-impl/target/classes/mapper/PayNotifyLogMapper.xml b/pay/pay-service-impl/target/classes/mapper/PayNotifyLogMapper.xml
new file mode 100644
index 000000000..bb0600627
--- /dev/null
+++ b/pay/pay-service-impl/target/classes/mapper/PayNotifyLogMapper.xml
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+ INSERT INTO notify_log (
+ notify_id, request, response, status
+ ) VALUES (
+ #{notifyId}, #{request}, #{response}, #{status}
+ )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pay/pay-service-impl/target/classes/mapper/PayNotifyTaskMapper.xml b/pay/pay-service-impl/target/classes/mapper/PayNotifyTaskMapper.xml
new file mode 100644
index 000000000..89e5b4282
--- /dev/null
+++ b/pay/pay-service-impl/target/classes/mapper/PayNotifyTaskMapper.xml
@@ -0,0 +1,61 @@
+
+
+
+
+
+ id, app_id, type,
+ status, next_notify_time, last_execute_time, notify_times, max_notify_times,
+ create_time
+
+
+
+
+
+
+
+
+ INSERT INTO notify_task (
+ app_id, type,
+ status, next_notify_time, notify_times, max_notify_times,
+ `transaction`, refund
+ ) VALUES (
+ #{appId}, #{type},
+ #{status}, #{nextNotifyTime}, #{notifyTimes}, #{maxNotifyTimes},
+ #{transaction, typeHandler=cn.iocoder.common.framework.mybatis.JSONTypeHandler},
+ #{refund, typeHandler=cn.iocoder.common.framework.mybatis.JSONTypeHandler}
+ )
+
+
+
+ UPDATE notify_task
+
+
+ , status = #{status}
+
+
+ , next_notify_time = #{nextNotifyTime}
+
+
+ , last_execute_time = #{lastExecuteTime}
+
+
+ , notify_times = #{notifyTimes}
+
+
+ WHERE id = #{id}
+
+
+
+
+
diff --git a/pay/pay-service-impl/target/classes/mapper/PayRefundMapper.xml b/pay/pay-service-impl/target/classes/mapper/PayRefundMapper.xml
new file mode 100644
index 000000000..38e75b4e7
--- /dev/null
+++ b/pay/pay-service-impl/target/classes/mapper/PayRefundMapper.xml
@@ -0,0 +1,122 @@
+
+
+
+
+
+ id, transaction_id, refund_code, app_id, create_ip, order_id,
+ order_description, price, status,
+ finish_time, notify_url, extension_data, refund_channel, refund_time, notify_time,
+ trade_no, create_time
+
+
+
+ INSERT INTO refund (
+ transaction_id, refund_code, app_id, create_ip, order_id,
+ order_description, price, status,
+ finish_time, notify_url, extension_data, refund_channel, refund_time, notify_time,
+ trade_no, create_time
+ ) VALUES (
+ #{transactionId}, #{refundCode}, #{appId}, #{createIp}, #{orderId},
+ #{orderDescription}, #{price}, #{status},
+ #{finishTime}, #{notifyUrl}, #{extensionData}, #{refundChannel}, #{refundTime}, #{notifyTime},
+ #{tradeNo}, #{createTime}
+ )
+
+
+
+ UPDATE refund
+
+
+ , status = #{entity.status}
+
+
+ , finish_time = #{entity.finishTime}
+
+
+ , extension_data = #{entity.extensionData}
+
+
+ , refund_time = #{entity.refundTime}
+
+
+ , notify_time = #{entity.notifyTime}
+
+
+ , trade_no = #{entity.tradeNo}
+
+
+ WHERE id = #{entity.id}
+
+ AND status = #{whereStatus}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pay/pay-service-impl/target/classes/mapper/PayTransactionExtensionMapper.xml b/pay/pay-service-impl/target/classes/mapper/PayTransactionExtensionMapper.xml
new file mode 100644
index 000000000..489f98e12
--- /dev/null
+++ b/pay/pay-service-impl/target/classes/mapper/PayTransactionExtensionMapper.xml
@@ -0,0 +1,51 @@
+
+
+
+
+
+ id, transaction_id, pay_channel, transaction_code, extension_data,
+ create_ip, status, create_time
+
+
+
+ INSERT INTO transaction_extension (
+ transaction_id, pay_channel, transaction_code, extension_data,
+ create_ip, status
+ ) VALUES (
+ #{transactionId}, #{payChannel}, #{transactionCode}, #{extensionData},
+ #{createIp}, #{status}
+ )
+
+
+
+ UPDATE transaction_extension
+
+
+ , extension_data = #{entity.extensionData}
+
+
+ , status = #{entity.status}
+
+
+ WHERE id = #{entity.id}
+
+ AND status = #{whereStatus}
+
+
+
+
+
+
+
+
diff --git a/pay/pay-service-impl/target/classes/mapper/PayTransactionMapper.xml b/pay/pay-service-impl/target/classes/mapper/PayTransactionMapper.xml
new file mode 100644
index 000000000..0ed1bf802
--- /dev/null
+++ b/pay/pay-service-impl/target/classes/mapper/PayTransactionMapper.xml
@@ -0,0 +1,159 @@
+
+
+
+
+
+ id, app_id, create_ip, order_id, order_subject,
+ order_description, order_memo, price, status, expire_time,
+ finish_time, notify_url, extension_id, pay_channel, payment_time,
+ notify_time, trade_no, refund_total, create_time
+
+
+
+ INSERT INTO transaction (
+ app_id, create_ip, order_id, order_subject,
+ order_description, order_memo, price, status, expire_time,
+ finish_time, notify_url, extension_id, pay_channel, payment_time,
+ notify_time, trade_no, create_time
+ ) VALUES (
+ #{appId}, #{createIp}, #{orderId}, #{orderSubject},
+ #{orderDescription}, #{orderMemo}, #{price}, #{status}, #{expireTime},
+ #{finishTime}, #{notifyUrl}, #{extensionId}, #{payChannel}, #{paymentTime},
+ #{notifyTime}, #{tradeNo}, #{createTime}
+ )
+
+
+
+ UPDATE transaction
+
+
+ , status = #{entity.status}
+
+
+ , extension_id = #{entity.extensionId}
+
+
+ , pay_channel = #{entity.payChannel}
+
+
+ , payment_time = #{entity.paymentTime}
+
+
+ , finish_time = #{entity.finishTime}
+
+
+ , notify_time = #{entity.notifyTime}
+
+
+ , trade_no = #{entity.tradeNo}
+
+
+ WHERE id = #{entity.id}
+
+ AND status = #{whereStatus}
+
+
+
+
+ UPDATE `transaction`
+ SET refund_total = refund_total + ${refundTotalIncr}
+ WHERE price >= refund_total + ${refundTotalIncr}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pay/pay-service-impl/target/classes/mybatis-config.xml b/pay/pay-service-impl/target/classes/mybatis-config.xml
new file mode 100644
index 000000000..7f604cc7e
--- /dev/null
+++ b/pay/pay-service-impl/target/classes/mybatis-config.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pay/pay-service-impl/target/classes/registry.conf b/pay/pay-service-impl/target/classes/registry.conf
new file mode 100644
index 000000000..f73989514
--- /dev/null
+++ b/pay/pay-service-impl/target/classes/registry.conf
@@ -0,0 +1,14 @@
+registry {
+ type = "file"
+
+ file {
+ name = "file.conf"
+ }
+
+ zk {
+ cluster = "default"
+ serverAddr = "192.168.88.10:2181"
+ session.timeout = 6000
+ connect.timeout = 2000
+ }
+}
diff --git a/pay/pay-service-impl/target/generated-sources/annotations/cn/iocoder/mall/pay/biz/convert/PayNotifyConvertImpl.java b/pay/pay-service-impl/target/generated-sources/annotations/cn/iocoder/mall/pay/biz/convert/PayNotifyConvertImpl.java
new file mode 100644
index 000000000..dba5e3482
--- /dev/null
+++ b/pay/pay-service-impl/target/generated-sources/annotations/cn/iocoder/mall/pay/biz/convert/PayNotifyConvertImpl.java
@@ -0,0 +1,128 @@
+package cn.iocoder.mall.pay.biz.convert;
+
+import cn.iocoder.mall.pay.api.message.PayRefundSuccessMessage;
+import cn.iocoder.mall.pay.api.message.PayTransactionSuccessMessage;
+import cn.iocoder.mall.pay.biz.dataobject.PayNotifyTaskDO;
+import cn.iocoder.mall.pay.biz.dataobject.PayNotifyTaskDO.Refund;
+import cn.iocoder.mall.pay.biz.dataobject.PayNotifyTaskDO.Transaction;
+import javax.annotation.Generated;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2019-05-24T11:39:00+0800",
+ comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_121 (Oracle Corporation)"
+)
+public class PayNotifyConvertImpl implements PayNotifyConvert {
+
+ @Override
+ public PayTransactionSuccessMessage convertTransaction(PayNotifyTaskDO payTransactionNotifyTaskDO) {
+ if ( payTransactionNotifyTaskDO == null ) {
+ return null;
+ }
+
+ PayTransactionSuccessMessage payTransactionSuccessMessage = new PayTransactionSuccessMessage();
+
+ payTransactionSuccessMessage.setOrderId( payTransactionNotifyTaskDOTransactionOrderId( payTransactionNotifyTaskDO ) );
+ payTransactionSuccessMessage.setTransactionId( payTransactionNotifyTaskDOTransactionTransactionId( payTransactionNotifyTaskDO ) );
+ payTransactionSuccessMessage.setId( payTransactionNotifyTaskDO.getId() );
+ payTransactionSuccessMessage.setAppId( payTransactionNotifyTaskDO.getAppId() );
+ payTransactionSuccessMessage.setNotifyTimes( payTransactionNotifyTaskDO.getNotifyTimes() );
+ payTransactionSuccessMessage.setNotifyUrl( payTransactionNotifyTaskDO.getNotifyUrl() );
+
+ return payTransactionSuccessMessage;
+ }
+
+ @Override
+ public PayRefundSuccessMessage convertRefund(PayNotifyTaskDO payTransactionNotifyTaskDO) {
+ if ( payTransactionNotifyTaskDO == null ) {
+ return null;
+ }
+
+ PayRefundSuccessMessage payRefundSuccessMessage = new PayRefundSuccessMessage();
+
+ payRefundSuccessMessage.setOrderId( payTransactionNotifyTaskDORefundOrderId( payTransactionNotifyTaskDO ) );
+ payRefundSuccessMessage.setTransactionId( payTransactionNotifyTaskDORefundTransactionId( payTransactionNotifyTaskDO ) );
+ payRefundSuccessMessage.setRefundId( payTransactionNotifyTaskDORefundRefundId( payTransactionNotifyTaskDO ) );
+ payRefundSuccessMessage.setId( payTransactionNotifyTaskDO.getId() );
+ payRefundSuccessMessage.setAppId( payTransactionNotifyTaskDO.getAppId() );
+ payRefundSuccessMessage.setNotifyTimes( payTransactionNotifyTaskDO.getNotifyTimes() );
+ payRefundSuccessMessage.setNotifyUrl( payTransactionNotifyTaskDO.getNotifyUrl() );
+
+ return payRefundSuccessMessage;
+ }
+
+ private String payTransactionNotifyTaskDOTransactionOrderId(PayNotifyTaskDO payNotifyTaskDO) {
+ if ( payNotifyTaskDO == null ) {
+ return null;
+ }
+ Transaction transaction = payNotifyTaskDO.getTransaction();
+ if ( transaction == null ) {
+ return null;
+ }
+ String orderId = transaction.getOrderId();
+ if ( orderId == null ) {
+ return null;
+ }
+ return orderId;
+ }
+
+ private Integer payTransactionNotifyTaskDOTransactionTransactionId(PayNotifyTaskDO payNotifyTaskDO) {
+ if ( payNotifyTaskDO == null ) {
+ return null;
+ }
+ Transaction transaction = payNotifyTaskDO.getTransaction();
+ if ( transaction == null ) {
+ return null;
+ }
+ Integer transactionId = transaction.getTransactionId();
+ if ( transactionId == null ) {
+ return null;
+ }
+ return transactionId;
+ }
+
+ private String payTransactionNotifyTaskDORefundOrderId(PayNotifyTaskDO payNotifyTaskDO) {
+ if ( payNotifyTaskDO == null ) {
+ return null;
+ }
+ Refund refund = payNotifyTaskDO.getRefund();
+ if ( refund == null ) {
+ return null;
+ }
+ String orderId = refund.getOrderId();
+ if ( orderId == null ) {
+ return null;
+ }
+ return orderId;
+ }
+
+ private Integer payTransactionNotifyTaskDORefundTransactionId(PayNotifyTaskDO payNotifyTaskDO) {
+ if ( payNotifyTaskDO == null ) {
+ return null;
+ }
+ Refund refund = payNotifyTaskDO.getRefund();
+ if ( refund == null ) {
+ return null;
+ }
+ Integer transactionId = refund.getTransactionId();
+ if ( transactionId == null ) {
+ return null;
+ }
+ return transactionId;
+ }
+
+ private Integer payTransactionNotifyTaskDORefundRefundId(PayNotifyTaskDO payNotifyTaskDO) {
+ if ( payNotifyTaskDO == null ) {
+ return null;
+ }
+ Refund refund = payNotifyTaskDO.getRefund();
+ if ( refund == null ) {
+ return null;
+ }
+ Integer refundId = refund.getRefundId();
+ if ( refundId == null ) {
+ return null;
+ }
+ return refundId;
+ }
+}
diff --git a/pay/pay-service-impl/target/generated-sources/annotations/cn/iocoder/mall/pay/biz/convert/PayRefundConvertImpl.java b/pay/pay-service-impl/target/generated-sources/annotations/cn/iocoder/mall/pay/biz/convert/PayRefundConvertImpl.java
new file mode 100644
index 000000000..94f5fa173
--- /dev/null
+++ b/pay/pay-service-impl/target/generated-sources/annotations/cn/iocoder/mall/pay/biz/convert/PayRefundConvertImpl.java
@@ -0,0 +1,76 @@
+package cn.iocoder.mall.pay.biz.convert;
+
+import cn.iocoder.mall.pay.api.bo.refund.PayRefundBO;
+import cn.iocoder.mall.pay.api.dto.refund.PayRefundSubmitDTO;
+import cn.iocoder.mall.pay.biz.dataobject.PayRefundDO;
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.Generated;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2019-05-24T11:39:00+0800",
+ comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_121 (Oracle Corporation)"
+)
+public class PayRefundConvertImpl implements PayRefundConvert {
+
+ @Override
+ public PayRefundDO convert(PayRefundSubmitDTO payRefundSubmitDTO) {
+ if ( payRefundSubmitDTO == null ) {
+ return null;
+ }
+
+ PayRefundDO payRefundDO = new PayRefundDO();
+
+ payRefundDO.setAppId( payRefundSubmitDTO.getAppId() );
+ payRefundDO.setOrderId( payRefundSubmitDTO.getOrderId() );
+ payRefundDO.setCreateIp( payRefundSubmitDTO.getCreateIp() );
+ payRefundDO.setOrderDescription( payRefundSubmitDTO.getOrderDescription() );
+ payRefundDO.setPrice( payRefundSubmitDTO.getPrice() );
+
+ return payRefundDO;
+ }
+
+ @Override
+ public PayRefundBO convert(PayRefundDO refund) {
+ if ( refund == null ) {
+ return null;
+ }
+
+ PayRefundBO payRefundBO = new PayRefundBO();
+
+ payRefundBO.setId( refund.getId() );
+ payRefundBO.setTransactionId( refund.getTransactionId() );
+ payRefundBO.setRefundCode( refund.getRefundCode() );
+ payRefundBO.setAppId( refund.getAppId() );
+ payRefundBO.setOrderId( refund.getOrderId() );
+ payRefundBO.setCreateIp( refund.getCreateIp() );
+ payRefundBO.setOrderDescription( refund.getOrderDescription() );
+ payRefundBO.setPrice( refund.getPrice() );
+ payRefundBO.setStatus( refund.getStatus() );
+ payRefundBO.setFinishTime( refund.getFinishTime() );
+ payRefundBO.setNotifyUrl( refund.getNotifyUrl() );
+ payRefundBO.setExtensionData( refund.getExtensionData() );
+ payRefundBO.setRefundChannel( refund.getRefundChannel() );
+ payRefundBO.setRefundTime( refund.getRefundTime() );
+ payRefundBO.setNotifyTime( refund.getNotifyTime() );
+ payRefundBO.setTradeNo( refund.getTradeNo() );
+ payRefundBO.setCreateTime( refund.getCreateTime() );
+
+ return payRefundBO;
+ }
+
+ @Override
+ public List convertList(List refunds) {
+ if ( refunds == null ) {
+ return null;
+ }
+
+ List list = new ArrayList( refunds.size() );
+ for ( PayRefundDO payRefundDO : refunds ) {
+ list.add( convert( payRefundDO ) );
+ }
+
+ return list;
+ }
+}
diff --git a/pay/pay-service-impl/target/generated-sources/annotations/cn/iocoder/mall/pay/biz/convert/PayTransactionConvertImpl.java b/pay/pay-service-impl/target/generated-sources/annotations/cn/iocoder/mall/pay/biz/convert/PayTransactionConvertImpl.java
new file mode 100644
index 000000000..e5ec3a2b7
--- /dev/null
+++ b/pay/pay-service-impl/target/generated-sources/annotations/cn/iocoder/mall/pay/biz/convert/PayTransactionConvertImpl.java
@@ -0,0 +1,96 @@
+package cn.iocoder.mall.pay.biz.convert;
+
+import cn.iocoder.mall.pay.api.bo.transaction.PayTransactionBO;
+import cn.iocoder.mall.pay.api.dto.transaction.PayTransactionCreateDTO;
+import cn.iocoder.mall.pay.api.dto.transaction.PayTransactionSubmitDTO;
+import cn.iocoder.mall.pay.biz.dataobject.PayTransactionDO;
+import cn.iocoder.mall.pay.biz.dataobject.PayTransactionExtensionDO;
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.Generated;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2019-05-24T11:39:00+0800",
+ comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_121 (Oracle Corporation)"
+)
+public class PayTransactionConvertImpl implements PayTransactionConvert {
+
+ @Override
+ public PayTransactionDO convert(PayTransactionCreateDTO payTransactionCreateDTO) {
+ if ( payTransactionCreateDTO == null ) {
+ return null;
+ }
+
+ PayTransactionDO payTransactionDO = new PayTransactionDO();
+
+ payTransactionDO.setAppId( payTransactionCreateDTO.getAppId() );
+ payTransactionDO.setOrderId( payTransactionCreateDTO.getOrderId() );
+ payTransactionDO.setCreateIp( payTransactionCreateDTO.getCreateIp() );
+ payTransactionDO.setOrderSubject( payTransactionCreateDTO.getOrderSubject() );
+ payTransactionDO.setOrderDescription( payTransactionCreateDTO.getOrderDescription() );
+ payTransactionDO.setOrderMemo( payTransactionCreateDTO.getOrderMemo() );
+ payTransactionDO.setPrice( payTransactionCreateDTO.getPrice() );
+ payTransactionDO.setExpireTime( payTransactionCreateDTO.getExpireTime() );
+
+ return payTransactionDO;
+ }
+
+ @Override
+ public PayTransactionBO convert(PayTransactionDO payTransactionDO) {
+ if ( payTransactionDO == null ) {
+ return null;
+ }
+
+ PayTransactionBO payTransactionBO = new PayTransactionBO();
+
+ payTransactionBO.setId( payTransactionDO.getId() );
+ payTransactionBO.setAppId( payTransactionDO.getAppId() );
+ payTransactionBO.setCreateIp( payTransactionDO.getCreateIp() );
+ payTransactionBO.setOrderId( payTransactionDO.getOrderId() );
+ payTransactionBO.setOrderSubject( payTransactionDO.getOrderSubject() );
+ payTransactionBO.setOrderDescription( payTransactionDO.getOrderDescription() );
+ payTransactionBO.setOrderMemo( payTransactionDO.getOrderMemo() );
+ payTransactionBO.setPrice( payTransactionDO.getPrice() );
+ payTransactionBO.setStatus( payTransactionDO.getStatus() );
+ payTransactionBO.setExpireTime( payTransactionDO.getExpireTime() );
+ payTransactionBO.setFinishTime( payTransactionDO.getFinishTime() );
+ payTransactionBO.setExtensionId( payTransactionDO.getExtensionId() );
+ payTransactionBO.setPayChannel( payTransactionDO.getPayChannel() );
+ payTransactionBO.setPaymentTime( payTransactionDO.getPaymentTime() );
+ payTransactionBO.setNotifyTime( payTransactionDO.getNotifyTime() );
+ payTransactionBO.setTradeNo( payTransactionDO.getTradeNo() );
+ payTransactionBO.setCreateTime( payTransactionDO.getCreateTime() );
+ payTransactionBO.setRefundTotal( payTransactionDO.getRefundTotal() );
+
+ return payTransactionBO;
+ }
+
+ @Override
+ public List convertList(List list) {
+ if ( list == null ) {
+ return null;
+ }
+
+ List list1 = new ArrayList( list.size() );
+ for ( PayTransactionDO payTransactionDO : list ) {
+ list1.add( convert( payTransactionDO ) );
+ }
+
+ return list1;
+ }
+
+ @Override
+ public PayTransactionExtensionDO convert(PayTransactionSubmitDTO payTransactionSubmitDTO) {
+ if ( payTransactionSubmitDTO == null ) {
+ return null;
+ }
+
+ PayTransactionExtensionDO payTransactionExtensionDO = new PayTransactionExtensionDO();
+
+ payTransactionExtensionDO.setPayChannel( payTransactionSubmitDTO.getPayChannel() );
+ payTransactionExtensionDO.setCreateIp( payTransactionSubmitDTO.getCreateIp() );
+
+ return payTransactionExtensionDO;
+ }
+}
diff --git a/product/product-application/src/main/java/cn/iocoder/mall/product/application/controller/admins/AdminsProductBrandController.java b/product/product-application/src/main/java/cn/iocoder/mall/product/application/controller/admins/AdminsProductBrandController.java
new file mode 100644
index 000000000..0fbda1c4c
--- /dev/null
+++ b/product/product-application/src/main/java/cn/iocoder/mall/product/application/controller/admins/AdminsProductBrandController.java
@@ -0,0 +1,113 @@
+package cn.iocoder.mall.product.application.controller.admins;
+
+import cn.iocoder.common.framework.vo.CommonResult;
+import cn.iocoder.mall.admin.sdk.context.AdminSecurityContextHolder;
+import cn.iocoder.mall.product.api.ProductBrandService;
+import cn.iocoder.mall.product.api.bo.ProductBrandBO;
+import cn.iocoder.mall.product.api.bo.ProductBrangPageBO;
+import cn.iocoder.mall.product.api.dto.ProductBrandAddDTO;
+import cn.iocoder.mall.product.api.dto.ProductBrandPageDTO;
+import cn.iocoder.mall.product.api.dto.ProductBrandUpdateDTO;
+import cn.iocoder.mall.product.application.convert.ProductBrandConvert;
+import cn.iocoder.mall.product.application.vo.admins.AdminsProductBrandVO;
+import cn.iocoder.mall.product.application.vo.admins.AdminsProductBrangPageVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.apache.dubbo.config.annotation.Reference;
+import org.springframework.web.bind.annotation.*;
+
+import static cn.iocoder.common.framework.vo.CommonResult.success;
+
+@RestController
+@RequestMapping("admins/brand")
+@Api("商品品牌")
+public class AdminsProductBrandController {
+
+ @Reference(validation = "true", version = "${dubbo.provider.ProductBrandService.version}")
+ private ProductBrandService productBrandService;
+
+ @PostMapping("/add")
+ @ApiOperation("创建品牌")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "name", value = "品牌名称", required = true, example = "安踏"),
+ @ApiImplicitParam(name = "description", value = "品牌描述", required = true, example = "安踏拖鞋"),
+ @ApiImplicitParam(name = "picUrl", value = "品牌图片", required = true, example = "http://www.iocoder.cn"),
+ @ApiImplicitParam(name = "status", value = "状态 1开启 2禁用", required = true, example = "1")
+ })
+ public CommonResult add(@RequestParam("name") String name,
+ @RequestParam("description") String description,
+ @RequestParam("picUrl") String picUrl,
+ @RequestParam("status") Integer status) {
+ // 创建 ProductBrandAddDTO 对象
+ ProductBrandAddDTO productBrandAddDTO = new ProductBrandAddDTO().setName(name).setDescription(description)
+ .setPicUrl(picUrl).setStatus(status);
+ // 保存商品
+ ProductBrandBO result = productBrandService.addProductBrand(AdminSecurityContextHolder.getContext().getAdminId(), productBrandAddDTO);
+ // 返回结果
+ return success(ProductBrandConvert.INSTANCE.convert(result));
+ }
+
+ @PostMapping("/update")
+ @ApiOperation("更新商品")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "id", value = "品牌主键", required = true, example = "1"),
+ @ApiImplicitParam(name = "name", value = "品牌名称", required = true, example = "安踏"),
+ @ApiImplicitParam(name = "description", value = "品牌描述", required = true, example = "安踏拖鞋"),
+ @ApiImplicitParam(name = "picUrl", value = "品牌图片", required = true, example = "http://www.iocoder.cn"),
+ @ApiImplicitParam(name = "status", value = "状态 1开启 2禁用", required = true, example = "1")
+ })
+ public CommonResult update(@RequestParam("id") Integer id,
+ @RequestParam("name") String name,
+ @RequestParam("description") String description,
+ @RequestParam("picUrl") String picUrl,
+ @RequestParam("status") Integer status) {
+ // 创建 productBrandUpdateDTO 对象
+ ProductBrandUpdateDTO productBrandUpdateDTO = new ProductBrandUpdateDTO().setId(id).setName(name).setDescription(description)
+ .setPicUrl(picUrl).setStatus(status);
+ // 更新商品
+ productBrandService.updateProductBrand(AdminSecurityContextHolder.getContext().getAdminId(), productBrandUpdateDTO);
+ return success(true);
+ }
+
+ @GetMapping("/get")
+ @ApiOperation("获取品牌")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "id", value = "品牌主键", required = true, example = "1")
+ })
+ public CommonResult add(@RequestParam("id") Integer id) {
+ // 保存商品
+ ProductBrandBO result = productBrandService.getProductBrand(id);
+ // 返回结果
+ return success(ProductBrandConvert.INSTANCE.convert(result));
+ }
+
+ @GetMapping("/page")
+ @ApiOperation("获得品牌分页")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "name", value = "品牌名称", required = true, example = "安踏"),
+ @ApiImplicitParam(name = "description", value = "品牌描述", required = true, example = "安踏拖鞋"),
+ @ApiImplicitParam(name = "status", value = "状态 1开启 2禁用", required = true, example = "1"),
+ @ApiImplicitParam(name = "pageNo", value = "页码", required = true, example = "1"),
+ @ApiImplicitParam(name = "pageSize", value = "页面大小", required = true, example = "10")
+ })
+ public CommonResult attrPage(@RequestParam(value = "name", required = false) String name,
+ @RequestParam(value = "description", required = false) String description,
+ @RequestParam(value = "status", required = false) Integer status,
+ @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
+ @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
+ // 创建 ProductAttrPageDTO 对象
+ ProductBrandPageDTO productBrandPageDTO = new ProductBrandPageDTO().setName(name)
+ .setDescription(description)
+ .setStatus(status)
+ .setPageNo(pageNo)
+ .setPageSize(pageSize);
+ // 查询分页
+ ProductBrangPageBO result = productBrandService.getProductBrandPage(productBrandPageDTO);
+ // 返回结果
+ return success(ProductBrandConvert.INSTANCE.convert(result));
+ }
+
+
+}
diff --git a/product/product-application/src/main/java/cn/iocoder/mall/product/application/convert/ProductBrandConvert.java b/product/product-application/src/main/java/cn/iocoder/mall/product/application/convert/ProductBrandConvert.java
new file mode 100644
index 000000000..365f01ff9
--- /dev/null
+++ b/product/product-application/src/main/java/cn/iocoder/mall/product/application/convert/ProductBrandConvert.java
@@ -0,0 +1,22 @@
+package cn.iocoder.mall.product.application.convert;
+
+import cn.iocoder.mall.product.api.bo.ProductBrandBO;
+import cn.iocoder.mall.product.api.bo.ProductBrangPageBO;
+import cn.iocoder.mall.product.application.vo.admins.AdminsProductBrandVO;
+import cn.iocoder.mall.product.application.vo.admins.AdminsProductBrangPageVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mappings;
+import org.mapstruct.factory.Mappers;
+
+@Mapper
+public interface ProductBrandConvert {
+
+ ProductBrandConvert INSTANCE = Mappers.getMapper(ProductBrandConvert.class);
+
+ @Mappings({})
+ AdminsProductBrandVO convert(ProductBrandBO result);
+
+ @Mappings({})
+ AdminsProductBrangPageVO convert(ProductBrangPageBO result);
+
+}
diff --git a/product/product-application/src/main/java/cn/iocoder/mall/product/application/vo/admins/AdminsProductBrandVO.java b/product/product-application/src/main/java/cn/iocoder/mall/product/application/vo/admins/AdminsProductBrandVO.java
new file mode 100644
index 000000000..3f2a8521a
--- /dev/null
+++ b/product/product-application/src/main/java/cn/iocoder/mall/product/application/vo/admins/AdminsProductBrandVO.java
@@ -0,0 +1,38 @@
+package cn.iocoder.mall.product.application.vo.admins;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * 商品品牌 VO
+ */
+
+@ApiModel(value = "商品品牌 VO")
+@Data
+@Accessors(chain = true)
+public class AdminsProductBrandVO {
+
+ /**
+ * 品牌编号
+ */
+ @ApiModelProperty(value = "品牌编号", required = true, example = "1")
+ private Integer id;
+
+
+ @ApiModelProperty(value = "名称", required = true, example = "安踏")
+ private String name;
+
+
+ @ApiModelProperty(value = "描述", required = true, example = "安踏拖鞋")
+ private String description;
+
+
+ @ApiModelProperty(value = "图片地址", required = true, example = "http://www.iocoder.cn")
+ private String picUrl;
+
+ @ApiModelProperty(value = "状态 1-开启 2-禁用", required = true, example = "1")
+ private Integer status;
+
+}
diff --git a/product/product-application/src/main/java/cn/iocoder/mall/product/application/vo/admins/AdminsProductBrangPageVO.java b/product/product-application/src/main/java/cn/iocoder/mall/product/application/vo/admins/AdminsProductBrangPageVO.java
new file mode 100644
index 000000000..266d28427
--- /dev/null
+++ b/product/product-application/src/main/java/cn/iocoder/mall/product/application/vo/admins/AdminsProductBrangPageVO.java
@@ -0,0 +1,25 @@
+package cn.iocoder.mall.product.application.vo.admins;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+/**
+ * 商品品牌分页 BO
+ */
+@ApiModel("商品品牌分页")
+@Data
+@Accessors(chain = true)
+public class AdminsProductBrangPageVO {
+
+ @ApiModelProperty(value = "品牌数组", required = true)
+ private List brands;
+
+
+ @ApiModelProperty(value = "总数", required = true)
+ private Integer count;
+
+}
diff --git a/product/product-application/src/main/resources/application.yaml b/product/product-application/src/main/resources/application.yaml
index 759bb545a..c5072a5ec 100644
--- a/product/product-application/src/main/resources/application.yaml
+++ b/product/product-application/src/main/resources/application.yaml
@@ -16,8 +16,6 @@ server:
servlet:
context-path: /product-api/
-swagger:
- enable: false
management:
@@ -27,3 +25,10 @@ management:
include: health,info,env,metrics,prometheus
metrics:
enabled: true
+
+swagger:
+ enable: true
+ title: 商品子系统
+ description: 商品子系统
+ version: 1.0.0
+ base-package: cn.iocoder.mall.product.application.controller
\ No newline at end of file
diff --git a/product/product-application/target/classes/application-test.yaml b/product/product-application/target/classes/application-test.yaml
new file mode 100644
index 000000000..22be4ba61
--- /dev/null
+++ b/product/product-application/target/classes/application-test.yaml
@@ -0,0 +1,6 @@
+swagger:
+ enable: true
+ title: 商品子系统
+ description: 商品子系统
+ version: 1.0.0
+ base-package: cn.iocoder.mall.product.application.controller
diff --git a/product/product-application/target/classes/application.yaml b/product/product-application/target/classes/application.yaml
new file mode 100644
index 000000000..c5072a5ec
--- /dev/null
+++ b/product/product-application/target/classes/application.yaml
@@ -0,0 +1,34 @@
+spring:
+ application:
+ name: product-application
+ cloud:
+ sentinel:
+ transport:
+ port: 8719
+ dashboard: localhost:12088
+ metric:
+ charset: UTF-8
+ eager: false
+
+# server
+server:
+ port: 18081
+ servlet:
+ context-path: /product-api/
+
+
+
+management:
+ endpoints:
+ web:
+ exposure:
+ include: health,info,env,metrics,prometheus
+ metrics:
+ enabled: true
+
+swagger:
+ enable: true
+ title: 商品子系统
+ description: 商品子系统
+ version: 1.0.0
+ base-package: cn.iocoder.mall.product.application.controller
\ No newline at end of file
diff --git a/product/product-application/target/generated-sources/annotations/cn/iocoder/mall/product/application/convert/ProductAttrConvertImpl.java b/product/product-application/target/generated-sources/annotations/cn/iocoder/mall/product/application/convert/ProductAttrConvertImpl.java
new file mode 100644
index 000000000..9d8feeb1d
--- /dev/null
+++ b/product/product-application/target/generated-sources/annotations/cn/iocoder/mall/product/application/convert/ProductAttrConvertImpl.java
@@ -0,0 +1,185 @@
+package cn.iocoder.mall.product.application.convert;
+
+import cn.iocoder.mall.product.api.bo.ProductAttrBO;
+import cn.iocoder.mall.product.api.bo.ProductAttrDetailBO;
+import cn.iocoder.mall.product.api.bo.ProductAttrPageBO;
+import cn.iocoder.mall.product.api.bo.ProductAttrSimpleBO;
+import cn.iocoder.mall.product.api.bo.ProductAttrValueBO;
+import cn.iocoder.mall.product.api.bo.ProductAttrValueDetailBO;
+import cn.iocoder.mall.product.api.bo.ProductAttrValueSimpleBO;
+import cn.iocoder.mall.product.application.vo.admins.AdminsProductAttrDetailVO;
+import cn.iocoder.mall.product.application.vo.admins.AdminsProductAttrPageVO;
+import cn.iocoder.mall.product.application.vo.admins.AdminsProductAttrSimpleVO;
+import cn.iocoder.mall.product.application.vo.admins.AdminsProductAttrVO;
+import cn.iocoder.mall.product.application.vo.admins.AdminsProductAttrValueDetailVO;
+import cn.iocoder.mall.product.application.vo.admins.AdminsProductAttrValueSimpleVO;
+import cn.iocoder.mall.product.application.vo.admins.AdminsProductAttrValueVO;
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.Generated;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2019-05-24T11:47:10+0800",
+ comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_121 (Oracle Corporation)"
+)
+public class ProductAttrConvertImpl implements ProductAttrConvert {
+
+ @Override
+ public AdminsProductAttrPageVO convert2(ProductAttrPageBO result) {
+ if ( result == null ) {
+ return null;
+ }
+
+ AdminsProductAttrPageVO adminsProductAttrPageVO = new AdminsProductAttrPageVO();
+
+ adminsProductAttrPageVO.setAttrs( productAttrDetailBOListToAdminsProductAttrDetailVOList( result.getAttrs() ) );
+ adminsProductAttrPageVO.setCount( result.getCount() );
+
+ return adminsProductAttrPageVO;
+ }
+
+ @Override
+ public List convert(List result) {
+ if ( result == null ) {
+ return null;
+ }
+
+ List list = new ArrayList( result.size() );
+ for ( ProductAttrSimpleBO productAttrSimpleBO : result ) {
+ list.add( productAttrSimpleBOToAdminsProductAttrSimpleVO( productAttrSimpleBO ) );
+ }
+
+ return list;
+ }
+
+ @Override
+ public AdminsProductAttrVO convert3(ProductAttrBO productAttrBO) {
+ if ( productAttrBO == null ) {
+ return null;
+ }
+
+ AdminsProductAttrVO adminsProductAttrVO = new AdminsProductAttrVO();
+
+ adminsProductAttrVO.setId( productAttrBO.getId() );
+ adminsProductAttrVO.setName( productAttrBO.getName() );
+ adminsProductAttrVO.setStatus( productAttrBO.getStatus() );
+ adminsProductAttrVO.setCreateTime( productAttrBO.getCreateTime() );
+
+ return adminsProductAttrVO;
+ }
+
+ @Override
+ public AdminsProductAttrValueVO convert4(ProductAttrValueBO productAttrValueBO) {
+ if ( productAttrValueBO == null ) {
+ return null;
+ }
+
+ AdminsProductAttrValueVO adminsProductAttrValueVO = new AdminsProductAttrValueVO();
+
+ adminsProductAttrValueVO.setId( productAttrValueBO.getId() );
+ adminsProductAttrValueVO.setAttrId( productAttrValueBO.getAttrId() );
+ adminsProductAttrValueVO.setName( productAttrValueBO.getName() );
+ adminsProductAttrValueVO.setStatus( productAttrValueBO.getStatus() );
+ adminsProductAttrValueVO.setCreateTime( productAttrValueBO.getCreateTime() );
+
+ return adminsProductAttrValueVO;
+ }
+
+ protected AdminsProductAttrValueDetailVO productAttrValueDetailBOToAdminsProductAttrValueDetailVO(ProductAttrValueDetailBO productAttrValueDetailBO) {
+ if ( productAttrValueDetailBO == null ) {
+ return null;
+ }
+
+ AdminsProductAttrValueDetailVO adminsProductAttrValueDetailVO = new AdminsProductAttrValueDetailVO();
+
+ adminsProductAttrValueDetailVO.setId( productAttrValueDetailBO.getId() );
+ adminsProductAttrValueDetailVO.setName( productAttrValueDetailBO.getName() );
+ adminsProductAttrValueDetailVO.setStatus( productAttrValueDetailBO.getStatus() );
+ adminsProductAttrValueDetailVO.setCreateTime( productAttrValueDetailBO.getCreateTime() );
+
+ return adminsProductAttrValueDetailVO;
+ }
+
+ protected List productAttrValueDetailBOListToAdminsProductAttrValueDetailVOList(List list) {
+ if ( list == null ) {
+ return null;
+ }
+
+ List list1 = new ArrayList( list.size() );
+ for ( ProductAttrValueDetailBO productAttrValueDetailBO : list ) {
+ list1.add( productAttrValueDetailBOToAdminsProductAttrValueDetailVO( productAttrValueDetailBO ) );
+ }
+
+ return list1;
+ }
+
+ protected AdminsProductAttrDetailVO productAttrDetailBOToAdminsProductAttrDetailVO(ProductAttrDetailBO productAttrDetailBO) {
+ if ( productAttrDetailBO == null ) {
+ return null;
+ }
+
+ AdminsProductAttrDetailVO adminsProductAttrDetailVO = new AdminsProductAttrDetailVO();
+
+ adminsProductAttrDetailVO.setId( productAttrDetailBO.getId() );
+ adminsProductAttrDetailVO.setName( productAttrDetailBO.getName() );
+ adminsProductAttrDetailVO.setStatus( productAttrDetailBO.getStatus() );
+ adminsProductAttrDetailVO.setCreateTime( productAttrDetailBO.getCreateTime() );
+ adminsProductAttrDetailVO.setValues( productAttrValueDetailBOListToAdminsProductAttrValueDetailVOList( productAttrDetailBO.getValues() ) );
+
+ return adminsProductAttrDetailVO;
+ }
+
+ protected List productAttrDetailBOListToAdminsProductAttrDetailVOList(List list) {
+ if ( list == null ) {
+ return null;
+ }
+
+ List list1 = new ArrayList( list.size() );
+ for ( ProductAttrDetailBO productAttrDetailBO : list ) {
+ list1.add( productAttrDetailBOToAdminsProductAttrDetailVO( productAttrDetailBO ) );
+ }
+
+ return list1;
+ }
+
+ protected AdminsProductAttrValueSimpleVO productAttrValueSimpleBOToAdminsProductAttrValueSimpleVO(ProductAttrValueSimpleBO productAttrValueSimpleBO) {
+ if ( productAttrValueSimpleBO == null ) {
+ return null;
+ }
+
+ AdminsProductAttrValueSimpleVO adminsProductAttrValueSimpleVO = new AdminsProductAttrValueSimpleVO();
+
+ adminsProductAttrValueSimpleVO.setId( productAttrValueSimpleBO.getId() );
+ adminsProductAttrValueSimpleVO.setName( productAttrValueSimpleBO.getName() );
+
+ return adminsProductAttrValueSimpleVO;
+ }
+
+ protected List productAttrValueSimpleBOListToAdminsProductAttrValueSimpleVOList(List list) {
+ if ( list == null ) {
+ return null;
+ }
+
+ List list1 = new ArrayList( list.size() );
+ for ( ProductAttrValueSimpleBO productAttrValueSimpleBO : list ) {
+ list1.add( productAttrValueSimpleBOToAdminsProductAttrValueSimpleVO( productAttrValueSimpleBO ) );
+ }
+
+ return list1;
+ }
+
+ protected AdminsProductAttrSimpleVO productAttrSimpleBOToAdminsProductAttrSimpleVO(ProductAttrSimpleBO productAttrSimpleBO) {
+ if ( productAttrSimpleBO == null ) {
+ return null;
+ }
+
+ AdminsProductAttrSimpleVO adminsProductAttrSimpleVO = new AdminsProductAttrSimpleVO();
+
+ adminsProductAttrSimpleVO.setId( productAttrSimpleBO.getId() );
+ adminsProductAttrSimpleVO.setName( productAttrSimpleBO.getName() );
+ adminsProductAttrSimpleVO.setValues( productAttrValueSimpleBOListToAdminsProductAttrValueSimpleVOList( productAttrSimpleBO.getValues() ) );
+
+ return adminsProductAttrSimpleVO;
+ }
+}
diff --git a/product/product-application/target/generated-sources/annotations/cn/iocoder/mall/product/application/convert/ProductBrandConvertImpl.java b/product/product-application/target/generated-sources/annotations/cn/iocoder/mall/product/application/convert/ProductBrandConvertImpl.java
new file mode 100644
index 000000000..657253b5b
--- /dev/null
+++ b/product/product-application/target/generated-sources/annotations/cn/iocoder/mall/product/application/convert/ProductBrandConvertImpl.java
@@ -0,0 +1,61 @@
+package cn.iocoder.mall.product.application.convert;
+
+import cn.iocoder.mall.product.api.bo.ProductBrandBO;
+import cn.iocoder.mall.product.api.bo.ProductBrangPageBO;
+import cn.iocoder.mall.product.application.vo.admins.AdminsProductBrandVO;
+import cn.iocoder.mall.product.application.vo.admins.AdminsProductBrangPageVO;
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.Generated;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2019-05-31T18:12:33+0800",
+ comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_121 (Oracle Corporation)"
+)
+public class ProductBrandConvertImpl implements ProductBrandConvert {
+
+ @Override
+ public AdminsProductBrandVO convert(ProductBrandBO result) {
+ if ( result == null ) {
+ return null;
+ }
+
+ AdminsProductBrandVO adminsProductBrandVO = new AdminsProductBrandVO();
+
+ adminsProductBrandVO.setId( result.getId() );
+ adminsProductBrandVO.setName( result.getName() );
+ adminsProductBrandVO.setDescription( result.getDescription() );
+ adminsProductBrandVO.setPicUrl( result.getPicUrl() );
+ adminsProductBrandVO.setStatus( result.getStatus() );
+
+ return adminsProductBrandVO;
+ }
+
+ @Override
+ public AdminsProductBrangPageVO convert(ProductBrangPageBO result) {
+ if ( result == null ) {
+ return null;
+ }
+
+ AdminsProductBrangPageVO adminsProductBrangPageVO = new AdminsProductBrangPageVO();
+
+ adminsProductBrangPageVO.setBrands( productBrandBOListToAdminsProductBrandVOList( result.getBrands() ) );
+ adminsProductBrangPageVO.setCount( result.getCount() );
+
+ return adminsProductBrangPageVO;
+ }
+
+ protected List productBrandBOListToAdminsProductBrandVOList(List list) {
+ if ( list == null ) {
+ return null;
+ }
+
+ List list1 = new ArrayList( list.size() );
+ for ( ProductBrandBO productBrandBO : list ) {
+ list1.add( convert( productBrandBO ) );
+ }
+
+ return list1;
+ }
+}
diff --git a/product/product-application/target/generated-sources/annotations/cn/iocoder/mall/product/application/convert/ProductCategoryConvert$AdminsImpl.java b/product/product-application/target/generated-sources/annotations/cn/iocoder/mall/product/application/convert/ProductCategoryConvert$AdminsImpl.java
new file mode 100644
index 000000000..50f540da3
--- /dev/null
+++ b/product/product-application/target/generated-sources/annotations/cn/iocoder/mall/product/application/convert/ProductCategoryConvert$AdminsImpl.java
@@ -0,0 +1,55 @@
+package cn.iocoder.mall.product.application.convert;
+
+import cn.iocoder.mall.product.api.bo.ProductCategoryBO;
+import cn.iocoder.mall.product.application.convert.ProductCategoryConvert.Admins;
+import cn.iocoder.mall.product.application.vo.admins.AdminsProductCategoryTreeNodeVO;
+import cn.iocoder.mall.product.application.vo.admins.AdminsProductCategoryVO;
+import javax.annotation.Generated;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2019-05-24T11:47:09+0800",
+ comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_121 (Oracle Corporation)"
+)
+public class ProductCategoryConvert$AdminsImpl implements Admins {
+
+ @Override
+ public AdminsProductCategoryTreeNodeVO convert(ProductCategoryBO category) {
+ if ( category == null ) {
+ return null;
+ }
+
+ AdminsProductCategoryTreeNodeVO adminsProductCategoryTreeNodeVO = new AdminsProductCategoryTreeNodeVO();
+
+ adminsProductCategoryTreeNodeVO.setId( category.getId() );
+ adminsProductCategoryTreeNodeVO.setPid( category.getPid() );
+ adminsProductCategoryTreeNodeVO.setName( category.getName() );
+ adminsProductCategoryTreeNodeVO.setDescription( category.getDescription() );
+ adminsProductCategoryTreeNodeVO.setPicUrl( category.getPicUrl() );
+ adminsProductCategoryTreeNodeVO.setSort( category.getSort() );
+ adminsProductCategoryTreeNodeVO.setStatus( category.getStatus() );
+ adminsProductCategoryTreeNodeVO.setCreateTime( category.getCreateTime() );
+
+ return adminsProductCategoryTreeNodeVO;
+ }
+
+ @Override
+ public AdminsProductCategoryVO convert2(ProductCategoryBO result) {
+ if ( result == null ) {
+ return null;
+ }
+
+ AdminsProductCategoryVO adminsProductCategoryVO = new AdminsProductCategoryVO();
+
+ adminsProductCategoryVO.setId( result.getId() );
+ adminsProductCategoryVO.setPid( result.getPid() );
+ adminsProductCategoryVO.setName( result.getName() );
+ adminsProductCategoryVO.setDescription( result.getDescription() );
+ adminsProductCategoryVO.setPicUrl( result.getPicUrl() );
+ adminsProductCategoryVO.setSort( result.getSort() );
+ adminsProductCategoryVO.setStatus( result.getStatus() );
+ adminsProductCategoryVO.setCreateTime( result.getCreateTime() );
+
+ return adminsProductCategoryVO;
+ }
+}
diff --git a/product/product-application/target/generated-sources/annotations/cn/iocoder/mall/product/application/convert/ProductCategoryConvert$UsersImpl.java b/product/product-application/target/generated-sources/annotations/cn/iocoder/mall/product/application/convert/ProductCategoryConvert$UsersImpl.java
new file mode 100644
index 000000000..fd064f598
--- /dev/null
+++ b/product/product-application/target/generated-sources/annotations/cn/iocoder/mall/product/application/convert/ProductCategoryConvert$UsersImpl.java
@@ -0,0 +1,45 @@
+package cn.iocoder.mall.product.application.convert;
+
+import cn.iocoder.mall.product.api.bo.ProductCategoryBO;
+import cn.iocoder.mall.product.application.convert.ProductCategoryConvert.Users;
+import cn.iocoder.mall.product.application.vo.users.UsersProductCategoryVO;
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.Generated;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2019-05-24T11:47:10+0800",
+ comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_121 (Oracle Corporation)"
+)
+public class ProductCategoryConvert$UsersImpl implements Users {
+
+ @Override
+ public UsersProductCategoryVO convertToVO(ProductCategoryBO category) {
+ if ( category == null ) {
+ return null;
+ }
+
+ UsersProductCategoryVO usersProductCategoryVO = new UsersProductCategoryVO();
+
+ usersProductCategoryVO.setId( category.getId() );
+ usersProductCategoryVO.setName( category.getName() );
+ usersProductCategoryVO.setPicUrl( category.getPicUrl() );
+
+ return usersProductCategoryVO;
+ }
+
+ @Override
+ public List convertToVO(List categoryList) {
+ if ( categoryList == null ) {
+ return null;
+ }
+
+ List list = new ArrayList( categoryList.size() );
+ for ( ProductCategoryBO productCategoryBO : categoryList ) {
+ list.add( convertToVO( productCategoryBO ) );
+ }
+
+ return list;
+ }
+}
diff --git a/product/product-application/target/generated-sources/annotations/cn/iocoder/mall/product/application/convert/ProductSpuConvertImpl.java b/product/product-application/target/generated-sources/annotations/cn/iocoder/mall/product/application/convert/ProductSpuConvertImpl.java
new file mode 100644
index 000000000..29876703a
--- /dev/null
+++ b/product/product-application/target/generated-sources/annotations/cn/iocoder/mall/product/application/convert/ProductSpuConvertImpl.java
@@ -0,0 +1,251 @@
+package cn.iocoder.mall.product.application.convert;
+
+import cn.iocoder.mall.product.api.bo.ProductAttrAndValuePairBO;
+import cn.iocoder.mall.product.api.bo.ProductSpuBO;
+import cn.iocoder.mall.product.api.bo.ProductSpuDetailBO;
+import cn.iocoder.mall.product.api.bo.ProductSpuDetailBO.Sku;
+import cn.iocoder.mall.product.api.bo.ProductSpuPageBO;
+import cn.iocoder.mall.product.application.vo.admins.AdminsProductAttrAndValuePairVO;
+import cn.iocoder.mall.product.application.vo.admins.AdminsProductSkuDetailVO;
+import cn.iocoder.mall.product.application.vo.admins.AdminsProductSpuDetailVO;
+import cn.iocoder.mall.product.application.vo.admins.AdminsProductSpuPageVO;
+import cn.iocoder.mall.product.application.vo.admins.AdminsProductSpuVO;
+import cn.iocoder.mall.product.application.vo.users.UsersProductAttrAndValuePairVO;
+import cn.iocoder.mall.product.application.vo.users.UsersProductSkuDetailVO;
+import cn.iocoder.mall.product.application.vo.users.UsersProductSpuDetailVO;
+import cn.iocoder.mall.product.application.vo.users.UsersProductSpuPageVO;
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.Generated;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2019-05-24T11:47:09+0800",
+ comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_121 (Oracle Corporation)"
+)
+public class ProductSpuConvertImpl implements ProductSpuConvert {
+
+ @Override
+ public AdminsProductSpuDetailVO convert(ProductSpuDetailBO productSpuDetailBO) {
+ if ( productSpuDetailBO == null ) {
+ return null;
+ }
+
+ AdminsProductSpuDetailVO adminsProductSpuDetailVO = new AdminsProductSpuDetailVO();
+
+ adminsProductSpuDetailVO.setId( productSpuDetailBO.getId() );
+ adminsProductSpuDetailVO.setName( productSpuDetailBO.getName() );
+ adminsProductSpuDetailVO.setSellPoint( productSpuDetailBO.getSellPoint() );
+ adminsProductSpuDetailVO.setDescription( productSpuDetailBO.getDescription() );
+ adminsProductSpuDetailVO.setCid( productSpuDetailBO.getCid() );
+ List list = productSpuDetailBO.getPicUrls();
+ if ( list != null ) {
+ adminsProductSpuDetailVO.setPicUrls( new ArrayList( list ) );
+ }
+ adminsProductSpuDetailVO.setVisible( productSpuDetailBO.getVisible() );
+ adminsProductSpuDetailVO.setSort( productSpuDetailBO.getSort() );
+ adminsProductSpuDetailVO.setSkus( skuListToAdminsProductSkuDetailVOList( productSpuDetailBO.getSkus() ) );
+
+ return adminsProductSpuDetailVO;
+ }
+
+ @Override
+ public AdminsProductSpuPageVO convert2(ProductSpuPageBO result) {
+ if ( result == null ) {
+ return null;
+ }
+
+ AdminsProductSpuPageVO adminsProductSpuPageVO = new AdminsProductSpuPageVO();
+
+ adminsProductSpuPageVO.setList( convert3( result.getList() ) );
+ adminsProductSpuPageVO.setTotal( result.getTotal() );
+
+ return adminsProductSpuPageVO;
+ }
+
+ @Override
+ public List convert3(List result) {
+ if ( result == null ) {
+ return null;
+ }
+
+ List list = new ArrayList( result.size() );
+ for ( ProductSpuBO productSpuBO : result ) {
+ list.add( productSpuBOToAdminsProductSpuVO( productSpuBO ) );
+ }
+
+ return list;
+ }
+
+ @Override
+ public UsersProductSpuPageVO convert3(ProductSpuPageBO result) {
+ if ( result == null ) {
+ return null;
+ }
+
+ UsersProductSpuPageVO usersProductSpuPageVO = new UsersProductSpuPageVO();
+
+ return usersProductSpuPageVO;
+ }
+
+ @Override
+ public UsersProductSpuDetailVO convert4(ProductSpuDetailBO result) {
+ if ( result == null ) {
+ return null;
+ }
+
+ UsersProductSpuDetailVO usersProductSpuDetailVO = new UsersProductSpuDetailVO();
+
+ usersProductSpuDetailVO.setId( result.getId() );
+ usersProductSpuDetailVO.setName( result.getName() );
+ usersProductSpuDetailVO.setSellPoint( result.getSellPoint() );
+ usersProductSpuDetailVO.setDescription( result.getDescription() );
+ usersProductSpuDetailVO.setCid( result.getCid() );
+ List list = result.getPicUrls();
+ if ( list != null ) {
+ usersProductSpuDetailVO.setPicUrls( new ArrayList( list ) );
+ }
+ usersProductSpuDetailVO.setSkus( skuListToUsersProductSkuDetailVOList( result.getSkus() ) );
+
+ return usersProductSpuDetailVO;
+ }
+
+ protected AdminsProductAttrAndValuePairVO productAttrAndValuePairBOToAdminsProductAttrAndValuePairVO(ProductAttrAndValuePairBO productAttrAndValuePairBO) {
+ if ( productAttrAndValuePairBO == null ) {
+ return null;
+ }
+
+ AdminsProductAttrAndValuePairVO adminsProductAttrAndValuePairVO = new AdminsProductAttrAndValuePairVO();
+
+ adminsProductAttrAndValuePairVO.setAttrId( productAttrAndValuePairBO.getAttrId() );
+ adminsProductAttrAndValuePairVO.setAttrName( productAttrAndValuePairBO.getAttrName() );
+ adminsProductAttrAndValuePairVO.setAttrValueId( productAttrAndValuePairBO.getAttrValueId() );
+ adminsProductAttrAndValuePairVO.setAttrValueName( productAttrAndValuePairBO.getAttrValueName() );
+
+ return adminsProductAttrAndValuePairVO;
+ }
+
+ protected List productAttrAndValuePairBOListToAdminsProductAttrAndValuePairVOList(List list) {
+ if ( list == null ) {
+ return null;
+ }
+
+ List list1 = new ArrayList( list.size() );
+ for ( ProductAttrAndValuePairBO productAttrAndValuePairBO : list ) {
+ list1.add( productAttrAndValuePairBOToAdminsProductAttrAndValuePairVO( productAttrAndValuePairBO ) );
+ }
+
+ return list1;
+ }
+
+ protected AdminsProductSkuDetailVO skuToAdminsProductSkuDetailVO(Sku sku) {
+ if ( sku == null ) {
+ return null;
+ }
+
+ AdminsProductSkuDetailVO adminsProductSkuDetailVO = new AdminsProductSkuDetailVO();
+
+ adminsProductSkuDetailVO.setId( sku.getId() );
+ adminsProductSkuDetailVO.setSpuId( sku.getSpuId() );
+ adminsProductSkuDetailVO.setPicURL( sku.getPicURL() );
+ adminsProductSkuDetailVO.setAttrs( productAttrAndValuePairBOListToAdminsProductAttrAndValuePairVOList( sku.getAttrs() ) );
+ adminsProductSkuDetailVO.setPrice( sku.getPrice() );
+ adminsProductSkuDetailVO.setQuantity( sku.getQuantity() );
+
+ return adminsProductSkuDetailVO;
+ }
+
+ protected List skuListToAdminsProductSkuDetailVOList(List list) {
+ if ( list == null ) {
+ return null;
+ }
+
+ List list1 = new ArrayList( list.size() );
+ for ( Sku sku : list ) {
+ list1.add( skuToAdminsProductSkuDetailVO( sku ) );
+ }
+
+ return list1;
+ }
+
+ protected AdminsProductSpuVO productSpuBOToAdminsProductSpuVO(ProductSpuBO productSpuBO) {
+ if ( productSpuBO == null ) {
+ return null;
+ }
+
+ AdminsProductSpuVO adminsProductSpuVO = new AdminsProductSpuVO();
+
+ adminsProductSpuVO.setId( productSpuBO.getId() );
+ adminsProductSpuVO.setName( productSpuBO.getName() );
+ adminsProductSpuVO.setSellPoint( productSpuBO.getSellPoint() );
+ adminsProductSpuVO.setDescription( productSpuBO.getDescription() );
+ adminsProductSpuVO.setCid( productSpuBO.getCid() );
+ List list = productSpuBO.getPicUrls();
+ if ( list != null ) {
+ adminsProductSpuVO.setPicUrls( new ArrayList( list ) );
+ }
+ adminsProductSpuVO.setQuantity( productSpuBO.getQuantity() );
+ adminsProductSpuVO.setVisible( productSpuBO.getVisible() );
+ adminsProductSpuVO.setSort( productSpuBO.getSort() );
+
+ return adminsProductSpuVO;
+ }
+
+ protected UsersProductAttrAndValuePairVO productAttrAndValuePairBOToUsersProductAttrAndValuePairVO(ProductAttrAndValuePairBO productAttrAndValuePairBO) {
+ if ( productAttrAndValuePairBO == null ) {
+ return null;
+ }
+
+ UsersProductAttrAndValuePairVO usersProductAttrAndValuePairVO = new UsersProductAttrAndValuePairVO();
+
+ usersProductAttrAndValuePairVO.setAttrId( productAttrAndValuePairBO.getAttrId() );
+ usersProductAttrAndValuePairVO.setAttrName( productAttrAndValuePairBO.getAttrName() );
+ usersProductAttrAndValuePairVO.setAttrValueId( productAttrAndValuePairBO.getAttrValueId() );
+ usersProductAttrAndValuePairVO.setAttrValueName( productAttrAndValuePairBO.getAttrValueName() );
+
+ return usersProductAttrAndValuePairVO;
+ }
+
+ protected List productAttrAndValuePairBOListToUsersProductAttrAndValuePairVOList(List list) {
+ if ( list == null ) {
+ return null;
+ }
+
+ List list1 = new ArrayList( list.size() );
+ for ( ProductAttrAndValuePairBO productAttrAndValuePairBO : list ) {
+ list1.add( productAttrAndValuePairBOToUsersProductAttrAndValuePairVO( productAttrAndValuePairBO ) );
+ }
+
+ return list1;
+ }
+
+ protected UsersProductSkuDetailVO skuToUsersProductSkuDetailVO(Sku sku) {
+ if ( sku == null ) {
+ return null;
+ }
+
+ UsersProductSkuDetailVO usersProductSkuDetailVO = new UsersProductSkuDetailVO();
+
+ usersProductSkuDetailVO.setId( sku.getId() );
+ usersProductSkuDetailVO.setSpuId( sku.getSpuId() );
+ usersProductSkuDetailVO.setPicURL( sku.getPicURL() );
+ usersProductSkuDetailVO.setAttrs( productAttrAndValuePairBOListToUsersProductAttrAndValuePairVOList( sku.getAttrs() ) );
+ usersProductSkuDetailVO.setPrice( sku.getPrice() );
+ usersProductSkuDetailVO.setQuantity( sku.getQuantity() );
+
+ return usersProductSkuDetailVO;
+ }
+
+ protected List skuListToUsersProductSkuDetailVOList(List list) {
+ if ( list == null ) {
+ return null;
+ }
+
+ List list1 = new ArrayList( list.size() );
+ for ( Sku sku : list ) {
+ list1.add( skuToUsersProductSkuDetailVO( sku ) );
+ }
+
+ return list1;
+ }
+}
diff --git a/product/product-service-api/src/main/java/cn/iocoder/mall/product/api/ProductBrandService.java b/product/product-service-api/src/main/java/cn/iocoder/mall/product/api/ProductBrandService.java
new file mode 100644
index 000000000..bab3463d7
--- /dev/null
+++ b/product/product-service-api/src/main/java/cn/iocoder/mall/product/api/ProductBrandService.java
@@ -0,0 +1,40 @@
+package cn.iocoder.mall.product.api;
+
+import cn.iocoder.mall.product.api.bo.ProductBrandBO;
+import cn.iocoder.mall.product.api.bo.ProductBrangPageBO;
+import cn.iocoder.mall.product.api.dto.ProductBrandAddDTO;
+import cn.iocoder.mall.product.api.dto.ProductBrandPageDTO;
+import cn.iocoder.mall.product.api.dto.ProductBrandUpdateDTO;
+
+public interface ProductBrandService {
+
+ /**
+ * 获取品牌分页数据
+ * @param productBrandPageDTO 翻页参数
+ * @return
+ */
+ ProductBrangPageBO getProductBrandPage(ProductBrandPageDTO productBrandPageDTO);
+
+ /**
+ * 获取品牌明细
+ * @param id 主键
+ * @return
+ */
+ ProductBrandBO getProductBrand(Integer id);
+
+ /**
+ * 添加品牌
+ * @param productBrandAddDTO 添加参数
+ * @return
+ */
+ ProductBrandBO addProductBrand(Integer adminId, ProductBrandAddDTO productBrandAddDTO);
+
+ /**
+ * 更新品牌
+ * @param productBrandUpdateDTO 更新参数
+ * @return
+ */
+ Boolean updateProductBrand(Integer adminId, ProductBrandUpdateDTO productBrandUpdateDTO);
+
+
+}
diff --git a/product/product-service-api/src/main/java/cn/iocoder/mall/product/api/bo/ProductBrandBO.java b/product/product-service-api/src/main/java/cn/iocoder/mall/product/api/bo/ProductBrandBO.java
new file mode 100644
index 000000000..691fb005e
--- /dev/null
+++ b/product/product-service-api/src/main/java/cn/iocoder/mall/product/api/bo/ProductBrandBO.java
@@ -0,0 +1,42 @@
+package cn.iocoder.mall.product.api.bo;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 商品品牌 VO
+ */
+@Data
+@Accessors(chain = true)
+public class ProductBrandBO implements Serializable {
+
+ /**
+ * 规格编号
+ */
+ private Integer id;
+ /**
+ * 名称
+ */
+ private String name;
+
+ /**
+ * 描述
+ */
+ private String description;
+
+ /**
+ * 图片地址
+ */
+ private String picUrl;
+
+ /**
+ * 状态
+ *
+ * 1-开启
+ * 2-禁用
+ */
+ private Integer status;
+
+}
diff --git a/product/product-service-api/src/main/java/cn/iocoder/mall/product/api/bo/ProductBrangPageBO.java b/product/product-service-api/src/main/java/cn/iocoder/mall/product/api/bo/ProductBrangPageBO.java
new file mode 100644
index 000000000..98c0e84ab
--- /dev/null
+++ b/product/product-service-api/src/main/java/cn/iocoder/mall/product/api/bo/ProductBrangPageBO.java
@@ -0,0 +1,25 @@
+package cn.iocoder.mall.product.api.bo;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 商品品牌分页 BO
+ */
+@Data
+@Accessors(chain = true)
+public class ProductBrangPageBO implements Serializable {
+
+ /**
+ * 品牌数组
+ */
+ private List brands;
+ /**
+ * 总数
+ */
+ private Integer count;
+
+}
diff --git a/product/product-service-api/src/main/java/cn/iocoder/mall/product/api/constant/ProductErrorCodeEnum.java b/product/product-service-api/src/main/java/cn/iocoder/mall/product/api/constant/ProductErrorCodeEnum.java
index f1d914f87..e753d0ca9 100644
--- a/product/product-service-api/src/main/java/cn/iocoder/mall/product/api/constant/ProductErrorCodeEnum.java
+++ b/product/product-service-api/src/main/java/cn/iocoder/mall/product/api/constant/ProductErrorCodeEnum.java
@@ -30,6 +30,9 @@ public enum ProductErrorCodeEnum {
PRODUCT_ATTR_STATUS_EQUALS(1003003003, "商品规格已经是该状态"),
PRODUCT_ATTR_VALUE_EXISTS(1003003004, "商品规格值已经存在"),
PRODUCT_ATTR_VALUE_STATUS_EQUALS(1003003005, "商品规格值已经是该状态"),
+
+ // ========== PRODUCT BRAND模块 ==========
+ PRODUCT_BRAND_EXIST(1003004000, "品牌值已经存在"),
;
private final int code;
diff --git a/product/product-service-api/src/main/java/cn/iocoder/mall/product/api/dto/ProductBrandAddDTO.java b/product/product-service-api/src/main/java/cn/iocoder/mall/product/api/dto/ProductBrandAddDTO.java
new file mode 100644
index 000000000..4a9c7e9cc
--- /dev/null
+++ b/product/product-service-api/src/main/java/cn/iocoder/mall/product/api/dto/ProductBrandAddDTO.java
@@ -0,0 +1,43 @@
+package cn.iocoder.mall.product.api.dto;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+
+/**
+ * Product 品牌添加 DTO
+ */
+@Data
+@Accessors(chain = true)
+public class ProductBrandAddDTO {
+
+ /**
+ * 名称
+ */
+ @NotEmpty(message = "品牌名不能为空")
+ private String name;
+
+ /**
+ * 描述
+ */
+ @NotEmpty(message = "品牌描述不能为空")
+ private String description;
+
+ /**
+ * 图片地址
+ */
+ @NotEmpty(message = "品牌图片地址不能为空")
+ private String picUrl;
+
+ /**
+ * 状态
+ *
+ * 1-开启
+ * 2-禁用
+ */
+ @NotNull(message = "品牌状态不能为空")
+ private Integer status;
+
+}
diff --git a/product/product-service-api/src/main/java/cn/iocoder/mall/product/api/dto/ProductBrandPageDTO.java b/product/product-service-api/src/main/java/cn/iocoder/mall/product/api/dto/ProductBrandPageDTO.java
new file mode 100644
index 000000000..5d5c0b442
--- /dev/null
+++ b/product/product-service-api/src/main/java/cn/iocoder/mall/product/api/dto/ProductBrandPageDTO.java
@@ -0,0 +1,36 @@
+package cn.iocoder.mall.product.api.dto;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * 商品品牌分页 DTO
+ */
+@Data
+@Accessors(chain = true)
+public class ProductBrandPageDTO {
+
+ /**
+ * 名称
+ */
+ private String name;
+
+ /**
+ * 描述
+ */
+ private String description;
+
+ /**
+ * 状态 1-开启 2-禁用
+ */
+ private Integer status;
+
+ @NotNull(message = "页码不能为空")
+ private Integer pageNo;
+
+ @NotNull(message = "每页条数不能为空")
+ private Integer pageSize;
+
+}
diff --git a/product/product-service-api/src/main/java/cn/iocoder/mall/product/api/dto/ProductBrandUpdateDTO.java b/product/product-service-api/src/main/java/cn/iocoder/mall/product/api/dto/ProductBrandUpdateDTO.java
new file mode 100644
index 000000000..ec29bfa5d
--- /dev/null
+++ b/product/product-service-api/src/main/java/cn/iocoder/mall/product/api/dto/ProductBrandUpdateDTO.java
@@ -0,0 +1,49 @@
+package cn.iocoder.mall.product.api.dto;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+
+/**
+ * Product 品牌添加 DTO
+ */
+@Data
+@Accessors(chain = true)
+public class ProductBrandUpdateDTO {
+
+ /**
+ * 主键
+ */
+ @NotNull(message = "品牌主键不能为空")
+ private Integer id;
+
+ /**
+ * 名称
+ */
+ @NotEmpty(message = "品牌名不能为空")
+ private String name;
+
+ /**
+ * 描述
+ */
+ @NotEmpty(message = "品牌描述不能为空")
+ private String description;
+
+ /**
+ * 图片地址
+ */
+ @NotEmpty(message = "品牌图片地址不能为空")
+ private String picUrl;
+
+ /**
+ * 状态
+ *
+ * 1-开启
+ * 2-禁用
+ */
+ @NotNull(message = "品牌状态不能为空")
+ private Integer status;
+
+}
diff --git a/product/product-service-impl/src/main/java/cn/iocoder/mall/product/convert/ProductBrandConvert.java b/product/product-service-impl/src/main/java/cn/iocoder/mall/product/convert/ProductBrandConvert.java
new file mode 100644
index 000000000..9e442ef48
--- /dev/null
+++ b/product/product-service-impl/src/main/java/cn/iocoder/mall/product/convert/ProductBrandConvert.java
@@ -0,0 +1,30 @@
+package cn.iocoder.mall.product.convert;
+
+import cn.iocoder.mall.product.api.bo.ProductBrandBO;
+import cn.iocoder.mall.product.api.dto.ProductBrandAddDTO;
+import cn.iocoder.mall.product.api.dto.ProductBrandUpdateDTO;
+import cn.iocoder.mall.product.dataobject.ProductBrandDO;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mappings;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+@Mapper
+public interface ProductBrandConvert {
+
+ ProductBrandConvert INSTANCE = Mappers.getMapper(ProductBrandConvert.class);
+
+ @Mappings({})
+ List convert(List brands);
+
+ @Mappings({})
+ ProductBrandBO convert(ProductBrandDO brand);
+
+ @Mappings({})
+ ProductBrandDO convert(ProductBrandUpdateDTO brand);
+
+ @Mappings({})
+ ProductBrandDO convert(ProductBrandAddDTO brand);
+
+}
\ No newline at end of file
diff --git a/product/product-service-impl/src/main/java/cn/iocoder/mall/product/dao/ProductBrandMapper.java b/product/product-service-impl/src/main/java/cn/iocoder/mall/product/dao/ProductBrandMapper.java
new file mode 100644
index 000000000..23947c6b1
--- /dev/null
+++ b/product/product-service-impl/src/main/java/cn/iocoder/mall/product/dao/ProductBrandMapper.java
@@ -0,0 +1,65 @@
+package cn.iocoder.mall.product.dao;
+
+import cn.iocoder.mall.product.dataobject.ProductBrandDO;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface ProductBrandMapper {
+
+ /**
+ * 根据 id 获取数据
+ * @param id
+ * @return
+ */
+ ProductBrandDO selectById(@Param("id") Integer id);
+
+ /**
+ * 根据 name 获取数据
+ * @param name
+ * @return
+ */
+ ProductBrandDO selectByName(@Param("name") String name);
+
+
+ /**
+ * 分页查询
+ * @param name 名称
+ * @param description 描述
+ * @param status 状态 1开启 2禁用
+ * @param offset 偏移量
+ * @param limit 数量
+ * @return
+ */
+ List selectListByParams(@Param("name") String name,
+ @Param("description") String description,
+ @Param("status") Integer status,
+ @Param("offset") Integer offset,
+ @Param("limit") Integer limit);
+
+ /**
+ * 分页数量统计
+ * @param name 名称
+ * @param description 描述
+ * @param status 状态 1开启 2禁用
+ * @return
+ */
+ Integer selectListCountByParams(@Param("name") String name,
+ @Param("description") String description,
+ @Param("status") Integer status);
+
+ /**
+ * 新增数据
+ * @param productBrandDO
+ */
+ void insert(ProductBrandDO productBrandDO);
+
+ /**
+ * 更新数据
+ * @param productBrandDO
+ */
+ void update(ProductBrandDO productBrandDO);
+
+}
\ No newline at end of file
diff --git a/product/product-service-impl/src/main/java/cn/iocoder/mall/product/dataobject/ProductBrandDO.java b/product/product-service-impl/src/main/java/cn/iocoder/mall/product/dataobject/ProductBrandDO.java
new file mode 100644
index 000000000..a90effe17
--- /dev/null
+++ b/product/product-service-impl/src/main/java/cn/iocoder/mall/product/dataobject/ProductBrandDO.java
@@ -0,0 +1,41 @@
+package cn.iocoder.mall.product.dataobject;
+
+import cn.iocoder.common.framework.dataobject.DeletableDO;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * Product 品牌
+ */
+@Data
+@Accessors(chain = true)
+public class ProductBrandDO extends DeletableDO {
+
+ /**
+ * 规格编号
+ */
+ private Integer id;
+ /**
+ * 名称
+ */
+ private String name;
+
+ /**
+ * 描述
+ */
+ private String description;
+
+ /**
+ * 图片地址
+ */
+ private String picUrl;
+
+ /**
+ * 状态
+ *
+ * 1-开启
+ * 2-禁用
+ */
+ private Integer status;
+
+}
diff --git a/product/product-service-impl/src/main/java/cn/iocoder/mall/product/service/ProductBrandServiceImpl.java b/product/product-service-impl/src/main/java/cn/iocoder/mall/product/service/ProductBrandServiceImpl.java
new file mode 100644
index 000000000..1135c2101
--- /dev/null
+++ b/product/product-service-impl/src/main/java/cn/iocoder/mall/product/service/ProductBrandServiceImpl.java
@@ -0,0 +1,95 @@
+package cn.iocoder.mall.product.service;
+
+import cn.iocoder.common.framework.util.ServiceExceptionUtil;
+import cn.iocoder.mall.product.api.ProductBrandService;
+import cn.iocoder.mall.product.api.bo.ProductBrandBO;
+import cn.iocoder.mall.product.api.bo.ProductBrangPageBO;
+import cn.iocoder.mall.product.api.constant.ProductErrorCodeEnum;
+import cn.iocoder.mall.product.api.dto.ProductBrandAddDTO;
+import cn.iocoder.mall.product.api.dto.ProductBrandPageDTO;
+import cn.iocoder.mall.product.api.dto.ProductBrandUpdateDTO;
+import cn.iocoder.mall.product.convert.ProductBrandConvert;
+import cn.iocoder.mall.product.dao.ProductBrandMapper;
+import cn.iocoder.mall.product.dataobject.ProductBrandDO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * 商品规格 Service 实现类
+ *
+ * @see ProductBrandDO
+ */
+@Service
+@org.apache.dubbo.config.annotation.Service(validation = "true", version = "${dubbo.provider.ProductBrandService.version}")
+public class ProductBrandServiceImpl implements ProductBrandService {
+
+ @Autowired
+ private ProductBrandMapper productBrandMapper;
+
+ /**
+ * 获取品牌分页数据
+ * @param productBrandPageDTO 分页参数
+ * @return
+ */
+ @Override
+ public ProductBrangPageBO getProductBrandPage(ProductBrandPageDTO productBrandPageDTO) {
+ ProductBrangPageBO productBrangPageBO = new ProductBrangPageBO();
+ // 查询分页数据
+ int offset = (productBrandPageDTO.getPageNo() - 1) * productBrandPageDTO.getPageSize();
+ productBrangPageBO.setBrands(
+ ProductBrandConvert.INSTANCE.convert(
+ productBrandMapper.selectListByParams(productBrandPageDTO.getName(),
+ productBrandPageDTO.getDescription(),
+ productBrandPageDTO.getStatus(),
+ offset, productBrandPageDTO.getPageSize())));
+ // 查询分页总数
+ productBrangPageBO.setCount(productBrandMapper.selectListCountByParams(productBrandPageDTO.getName(),
+ productBrandPageDTO.getDescription(),
+ productBrandPageDTO.getStatus()));
+ return productBrangPageBO;
+ }
+
+ /**
+ * 获取品牌明细
+ * @param id 主键
+ * @return
+ */
+ @Override
+ public ProductBrandBO getProductBrand(Integer id) {
+ ProductBrandBO productBrandBO = new ProductBrandBO();
+ productBrandBO = ProductBrandConvert.INSTANCE.convert(productBrandMapper.selectById(id));
+ return productBrandBO;
+ }
+
+ /**
+ * 添加品牌
+ * @param adminId
+ * @param productBrandAddDTO 添加参数
+ * @return
+ */
+ @Override
+ public ProductBrandBO addProductBrand(Integer adminId, ProductBrandAddDTO productBrandAddDTO) {
+ // 校验品牌名不重复
+ if (productBrandMapper.selectByName(productBrandAddDTO.getName()) != null) {
+ throw ServiceExceptionUtil.exception(ProductErrorCodeEnum.PRODUCT_BRAND_EXIST.getCode());
+ }
+ ProductBrandDO productBrandDO = new ProductBrandDO();
+ productBrandDO = ProductBrandConvert.INSTANCE.convert(productBrandAddDTO);
+ productBrandMapper.insert(productBrandDO);
+ return ProductBrandConvert.INSTANCE.convert(productBrandDO);
+ }
+
+ /**
+ * 更新品牌
+ * @param adminId
+ * @param productBrandUpdateDTO 更新参数
+ * @return
+ */
+ @Override
+ public Boolean updateProductBrand(Integer adminId, ProductBrandUpdateDTO productBrandUpdateDTO) {
+ ProductBrandDO productBrandDO = new ProductBrandDO();
+ productBrandDO = ProductBrandConvert.INSTANCE.convert(productBrandUpdateDTO);
+ productBrandMapper.update(productBrandDO);
+ return true;
+ }
+}
diff --git a/product/product-service-impl/src/main/resources/config/application.yaml b/product/product-service-impl/src/main/resources/config/application.yaml
index e4814b7bd..65c2ec48a 100644
--- a/product/product-service-impl/src/main/resources/config/application.yaml
+++ b/product/product-service-impl/src/main/resources/config/application.yaml
@@ -31,6 +31,8 @@ dubbo:
version: 1.0.0
ProductSpuService:
version: 1.0.0
+ ProductBrandService:
+ version: 1.0.0
OAuth2Service:
version: 1.0.0
diff --git a/product/product-service-impl/src/main/resources/mapper/ProductBrandMapper.xml b/product/product-service-impl/src/main/resources/mapper/ProductBrandMapper.xml
new file mode 100644
index 000000000..b20d6b3a4
--- /dev/null
+++ b/product/product-service-impl/src/main/resources/mapper/ProductBrandMapper.xml
@@ -0,0 +1,95 @@
+
+
+
+
+
+ id, name, description, pic_url, status, create_time
+
+
+
+
+
+
+
+
+ INSERT INTO product_brand (
+ name, description, pic_url, status, create_time, deleted
+ ) VALUES (
+ #{name}, #{description}, #{picUrl}, #{status}, #{createTime}, #{deleted}
+ )
+
+
+
+ UPDATE product_brand
+
+
+ name = #{name},
+
+
+ description = #{description},
+
+
+ pic_url = #{picUrl},
+
+
+ status = #{status},
+
+
+ deleted = #{deleted}
+
+
+ WHERE id = #{id}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/product/product-service-impl/target/classes/config/application-test.yaml b/product/product-service-impl/target/classes/config/application-test.yaml
new file mode 100644
index 000000000..d5d5c6689
--- /dev/null
+++ b/product/product-service-impl/target/classes/config/application-test.yaml
@@ -0,0 +1,13 @@
+spring:
+ # datasource
+ datasource:
+ url: jdbc:mysql://192.168.88.14:3306/mall_product?useSSL=false&useUnicode=true&characterEncoding=UTF-8
+ driver-class-name: com.mysql.jdbc.Driver
+ username: root
+ password: ${MALL_MYSQL_PASSWORD}
+
+# rocketmq
+rocketmq:
+ name-server: 192.168.88.14:9876
+ producer:
+ group: product-producer-group
diff --git a/product/product-service-impl/target/classes/config/application.yaml b/product/product-service-impl/target/classes/config/application.yaml
new file mode 100644
index 000000000..65c2ec48a
--- /dev/null
+++ b/product/product-service-impl/target/classes/config/application.yaml
@@ -0,0 +1,47 @@
+spring:
+ # datasource
+ datasource:
+ url: jdbc:mysql://180.167.213.26:13306/mall_product?useSSL=false&useUnicode=true&characterEncoding=UTF-8
+ driver-class-name: com.mysql.jdbc.Driver
+ username: root
+ password: ${MALL_MYSQL_PASSWORD}
+
+# mybatis
+mybatis-plus:
+ config-location: classpath:mybatis-config.xml
+ mapper-locations: classpath:mapper/*.xml
+ type-aliases-package: cn.iocoder.mall.product.dataobject
+
+# dubbo
+dubbo:
+ application:
+ name: product-service
+ registry:
+ address: zookeeper://127.0.0.1:2181
+ protocol:
+ port: -1
+ name: dubbo
+ scan:
+ base-packages: cn.iocoder.mall.product.service
+ provider:
+ filter: -exception
+ ProductAttrService:
+ version: 1.0.0
+ ProductCategoryService:
+ version: 1.0.0
+ ProductSpuService:
+ version: 1.0.0
+ ProductBrandService:
+ version: 1.0.0
+ OAuth2Service:
+ version: 1.0.0
+
+# rocketmq
+rocketmq:
+ name-server: 127.0.0.1:9876
+ producer:
+ group: product-producer-group
+
+# seata
+seata:
+ tx-service-group: my_test_tx_group
diff --git a/product/product-service-impl/target/classes/file.conf b/product/product-service-impl/target/classes/file.conf
new file mode 100644
index 000000000..8b60b29c3
--- /dev/null
+++ b/product/product-service-impl/target/classes/file.conf
@@ -0,0 +1,69 @@
+transport {
+ # tcp udt unix-domain-socket
+ type = "TCP"
+ #NIO NATIVE
+ server = "NIO"
+ #enable heartbeat
+ heartbeat = true
+ #thread factory for netty
+ thread-factory {
+ boss-thread-prefix = "NettyBoss"
+ worker-thread-prefix = "NettyServerNIOWorker"
+ server-executor-thread-prefix = "NettyServerBizHandler"
+ share-boss-worker = false
+ client-selector-thread-prefix = "NettyClientSelector"
+ client-selector-thread-size = 1
+ client-worker-thread-prefix = "NettyClientWorkerThread"
+ # netty boss thread size,will not be used for UDT
+ boss-thread-size = 1
+ #auto default pin or 8
+ worker-thread-size = 8
+ }
+}
+
+service {
+ #vgroup->rgroup
+ vgroup_mapping.my_test_tx_group = "default"
+ #only support single node
+ default.grouplist = "180.167.213.26:8091"
+ #degrade current not support
+ enableDegrade = false
+ #disable
+ disable = false
+}
+
+client {
+ async.commit.buffer.limit = 10000
+ lock {
+ retry.internal = 10
+ retry.times = 30
+ }
+}
+## transaction log store
+store {
+ ## store mode: file、db
+ mode = "file"
+
+ ## file store
+ file {
+ dir = "file_store/data"
+
+ # branch session size , if exceeded first try compress lockkey, still exceeded throws exceptions
+ max-branch-session-size = 16384
+ # globe session size , if exceeded throws exceptions
+ max-global-session-size = 512
+ # file buffer size , if exceeded allocate new buffer
+ file-write-buffer-cache-size = 16384
+ # when recover batch read size
+ session.reload.read_size = 100
+ }
+
+ ## database store
+ db {
+ driver_class = ""
+ url = ""
+ user = ""
+ password = ""
+ }
+}
+
diff --git a/product/product-service-impl/target/classes/mapper/ProductAttrMapper.xml b/product/product-service-impl/target/classes/mapper/ProductAttrMapper.xml
new file mode 100644
index 000000000..374c138b9
--- /dev/null
+++ b/product/product-service-impl/target/classes/mapper/ProductAttrMapper.xml
@@ -0,0 +1,105 @@
+
+
+
+
+
+ id, name, status, create_time
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ INSERT INTO product_attr (
+ name, status, create_time, deleted
+ ) VALUES (
+ #{name}, #{status}, #{createTime}, #{deleted}
+ )
+
+
+
+ UPDATE product_attr
+
+
+ name = #{name},
+
+
+ status = #{status},
+
+
+ deleted = #{deleted}
+
+
+ WHERE id = #{id}
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/product/product-service-impl/target/classes/mapper/ProductAttrValueMapper.xml b/product/product-service-impl/target/classes/mapper/ProductAttrValueMapper.xml
new file mode 100644
index 000000000..17ad319f8
--- /dev/null
+++ b/product/product-service-impl/target/classes/mapper/ProductAttrValueMapper.xml
@@ -0,0 +1,130 @@
+
+
+
+
+
+ id, attr_id, name, status, create_time
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ INSERT INTO product_attr_value (
+ attr_id, name, status, create_time, deleted
+ ) VALUES (
+ #{attrId}, #{name}, #{status}, #{createTime}, #{deleted}
+ )
+
+
+
+ UPDATE product_attr_value
+
+
+ name = #{name},
+
+
+ status = #{status},
+
+
+ deleted = #{deleted}
+
+
+ WHERE id = #{id}
+
+
+
+
\ No newline at end of file
diff --git a/product/product-service-impl/target/classes/mapper/ProductBrandMapper.xml b/product/product-service-impl/target/classes/mapper/ProductBrandMapper.xml
new file mode 100644
index 000000000..b20d6b3a4
--- /dev/null
+++ b/product/product-service-impl/target/classes/mapper/ProductBrandMapper.xml
@@ -0,0 +1,95 @@
+
+
+
+
+
+ id, name, description, pic_url, status, create_time
+
+
+
+
+
+
+
+
+ INSERT INTO product_brand (
+ name, description, pic_url, status, create_time, deleted
+ ) VALUES (
+ #{name}, #{description}, #{picUrl}, #{status}, #{createTime}, #{deleted}
+ )
+
+
+
+ UPDATE product_brand
+
+
+ name = #{name},
+
+
+ description = #{description},
+
+
+ pic_url = #{picUrl},
+
+
+ status = #{status},
+
+
+ deleted = #{deleted}
+
+
+ WHERE id = #{id}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/product/product-service-impl/target/classes/mapper/ProductCategoryMapper.xml b/product/product-service-impl/target/classes/mapper/ProductCategoryMapper.xml
new file mode 100644
index 000000000..47e484d97
--- /dev/null
+++ b/product/product-service-impl/target/classes/mapper/ProductCategoryMapper.xml
@@ -0,0 +1,84 @@
+
+
+
+
+
+ id, pid, name, description, pic_url,
+ sort, status, create_time
+
+
+
+
+
+
+
+
+
+
+
+ INSERT INTO product_category (
+ pid, name, description, pic_url, sort,
+ status, create_time, deleted
+ ) VALUES (
+ #{pid}, #{name}, #{description}, #{picUrl}, #{sort},
+ #{status}, #{createTime}, #{deleted}
+ )
+
+
+
+ UPDATE product_category
+
+
+ pid = #{pid},
+
+
+ name = #{name},
+
+
+ description = #{description},
+
+
+ pic_url = #{picUrl},
+
+
+ sort = #{sort},
+
+
+ status = #{status},
+
+
+ deleted = #{deleted}
+
+
+ WHERE id = #{id}
+
+
+
diff --git a/product/product-service-impl/target/classes/mapper/ProductSkuMapper.xml b/product/product-service-impl/target/classes/mapper/ProductSkuMapper.xml
new file mode 100644
index 000000000..2d6c96448
--- /dev/null
+++ b/product/product-service-impl/target/classes/mapper/ProductSkuMapper.xml
@@ -0,0 +1,87 @@
+
+
+
+
+
+ id, spu_id, status, pic_url, attrs,
+ price, quantity, create_time
+
+
+
+
+
+
+
+ INSERT INTO product_sku (
+ spu_id, status, pic_url, attrs, price,
+ quantity, deleted, create_time
+ ) VALUES
+
+ (#{productSkuDO.spuId}, #{productSkuDO.status}, #{productSkuDO.picUrl}, #{productSkuDO.attrs}, #{productSkuDO.price},
+ #{productSkuDO.quantity}, #{productSkuDO.deleted}, #{productSkuDO.createTime}
+ )
+
+
+
+
+
+
+ UPDATE product_sku
+
+
+ spu_id = #{spuId},
+
+
+ status = #{status},
+
+
+ pic_url = #{picUrl},
+
+
+ attrs = #{attrs},
+
+
+ price = #{price},
+
+
+ quantity = #{quantity},
+
+
+ deleted = #{deleted}
+
+
+ WHERE id = #{id}
+
+
+
+ UPDATE product_sku
+ SET deleted = 1
+ WHERE id IN
+
+ #{id}
+
+
+
+
diff --git a/product/product-service-impl/target/classes/mapper/ProductSpuMapper.xml b/product/product-service-impl/target/classes/mapper/ProductSpuMapper.xml
new file mode 100644
index 000000000..2cc42f204
--- /dev/null
+++ b/product/product-service-impl/target/classes/mapper/ProductSpuMapper.xml
@@ -0,0 +1,145 @@
+
+
+
+
+
+ id, name, sell_point, description, cid,
+ pic_urls, visible, sort, price, quantity,
+ create_time
+
+
+
+
+
+
+
+
+
+ INSERT INTO product_spu (
+ name, sell_point, description, cid, pic_urls,
+ visible, sort, price, quantity,
+ deleted, create_time
+ ) VALUES (
+ #{name}, #{sellPoint}, #{description}, #{cid}, #{picUrls},
+ #{visible}, #{sort}, #{price}, #{quantity},
+ #{deleted}, #{createTime}
+ )
+
+
+
+ UPDATE product_spu
+
+
+ name = #{name},
+
+
+ sell_point = #{sellPoint},
+
+
+ description = #{description},
+
+
+ cid = #{cid},
+
+
+ pic_urls = #{picUrls},
+
+
+ visible = #{visible},
+
+
+ price = #{price},
+
+
+ quantity = #{quantity},
+
+
+ sort = #{sort},
+
+
+ deleted = #{deleted}
+
+
+ WHERE id = #{id}
+
+
+
+
+
+
+
diff --git a/product/product-service-impl/target/classes/mybatis-config.xml b/product/product-service-impl/target/classes/mybatis-config.xml
new file mode 100644
index 000000000..7f604cc7e
--- /dev/null
+++ b/product/product-service-impl/target/classes/mybatis-config.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/product/product-service-impl/target/classes/registry.conf b/product/product-service-impl/target/classes/registry.conf
new file mode 100644
index 000000000..f73989514
--- /dev/null
+++ b/product/product-service-impl/target/classes/registry.conf
@@ -0,0 +1,14 @@
+registry {
+ type = "file"
+
+ file {
+ name = "file.conf"
+ }
+
+ zk {
+ cluster = "default"
+ serverAddr = "192.168.88.10:2181"
+ session.timeout = 6000
+ connect.timeout = 2000
+ }
+}
diff --git a/product/product-service-impl/target/generated-sources/annotations/cn/iocoder/mall/product/convert/ProductAttrConvertImpl.java b/product/product-service-impl/target/generated-sources/annotations/cn/iocoder/mall/product/convert/ProductAttrConvertImpl.java
new file mode 100644
index 000000000..39e3e66cf
--- /dev/null
+++ b/product/product-service-impl/target/generated-sources/annotations/cn/iocoder/mall/product/convert/ProductAttrConvertImpl.java
@@ -0,0 +1,227 @@
+package cn.iocoder.mall.product.convert;
+
+import cn.iocoder.mall.product.api.bo.ProductAttrBO;
+import cn.iocoder.mall.product.api.bo.ProductAttrDetailBO;
+import cn.iocoder.mall.product.api.bo.ProductAttrSimpleBO;
+import cn.iocoder.mall.product.api.bo.ProductAttrValueBO;
+import cn.iocoder.mall.product.api.bo.ProductAttrValueDetailBO;
+import cn.iocoder.mall.product.api.bo.ProductAttrValueSimpleBO;
+import cn.iocoder.mall.product.api.dto.ProductAttrAddDTO;
+import cn.iocoder.mall.product.api.dto.ProductAttrUpdateDTO;
+import cn.iocoder.mall.product.api.dto.ProductAttrValueAddDTO;
+import cn.iocoder.mall.product.api.dto.ProductAttrValueUpdateDTO;
+import cn.iocoder.mall.product.dataobject.ProductAttrDO;
+import cn.iocoder.mall.product.dataobject.ProductAttrValueDO;
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.Generated;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2019-05-24T11:38:56+0800",
+ comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_121 (Oracle Corporation)"
+)
+public class ProductAttrConvertImpl implements ProductAttrConvert {
+
+ @Override
+ public List convert(List attrs) {
+ if ( attrs == null ) {
+ return null;
+ }
+
+ List list = new ArrayList( attrs.size() );
+ for ( ProductAttrDO productAttrDO : attrs ) {
+ list.add( productAttrDOToProductAttrDetailBO( productAttrDO ) );
+ }
+
+ return list;
+ }
+
+ @Override
+ public ProductAttrValueDetailBO convert(ProductAttrValueDO value) {
+ if ( value == null ) {
+ return null;
+ }
+
+ ProductAttrValueDetailBO productAttrValueDetailBO = new ProductAttrValueDetailBO();
+
+ productAttrValueDetailBO.setId( value.getId() );
+ productAttrValueDetailBO.setName( value.getName() );
+ productAttrValueDetailBO.setStatus( value.getStatus() );
+ productAttrValueDetailBO.setCreateTime( value.getCreateTime() );
+
+ return productAttrValueDetailBO;
+ }
+
+ @Override
+ public List convert2(List values) {
+ if ( values == null ) {
+ return null;
+ }
+
+ List list = new ArrayList( values.size() );
+ for ( ProductAttrValueDO productAttrValueDO : values ) {
+ list.add( convert( productAttrValueDO ) );
+ }
+
+ return list;
+ }
+
+ @Override
+ public List convert3(List attrs) {
+ if ( attrs == null ) {
+ return null;
+ }
+
+ List list = new ArrayList( attrs.size() );
+ for ( ProductAttrDO productAttrDO : attrs ) {
+ list.add( productAttrDOToProductAttrSimpleBO( productAttrDO ) );
+ }
+
+ return list;
+ }
+
+ @Override
+ public ProductAttrValueSimpleBO convert3(ProductAttrValueDO value) {
+ if ( value == null ) {
+ return null;
+ }
+
+ ProductAttrValueSimpleBO productAttrValueSimpleBO = new ProductAttrValueSimpleBO();
+
+ productAttrValueSimpleBO.setId( value.getId() );
+ productAttrValueSimpleBO.setName( value.getName() );
+
+ return productAttrValueSimpleBO;
+ }
+
+ @Override
+ public List convert4(List values) {
+ if ( values == null ) {
+ return null;
+ }
+
+ List list = new ArrayList( values.size() );
+ for ( ProductAttrValueDO productAttrValueDO : values ) {
+ list.add( convert3( productAttrValueDO ) );
+ }
+
+ return list;
+ }
+
+ @Override
+ public ProductAttrDO convert(ProductAttrAddDTO productAttrAddDTO) {
+ if ( productAttrAddDTO == null ) {
+ return null;
+ }
+
+ ProductAttrDO productAttrDO = new ProductAttrDO();
+
+ productAttrDO.setName( productAttrAddDTO.getName() );
+
+ return productAttrDO;
+ }
+
+ @Override
+ public ProductAttrDO convert(ProductAttrUpdateDTO productAttrUpdateDTO) {
+ if ( productAttrUpdateDTO == null ) {
+ return null;
+ }
+
+ ProductAttrDO productAttrDO = new ProductAttrDO();
+
+ productAttrDO.setId( productAttrUpdateDTO.getId() );
+ productAttrDO.setName( productAttrUpdateDTO.getName() );
+
+ return productAttrDO;
+ }
+
+ @Override
+ public ProductAttrValueDO convert(ProductAttrValueAddDTO productAttrValueAddDTO) {
+ if ( productAttrValueAddDTO == null ) {
+ return null;
+ }
+
+ ProductAttrValueDO productAttrValueDO = new ProductAttrValueDO();
+
+ productAttrValueDO.setAttrId( productAttrValueAddDTO.getAttrId() );
+ productAttrValueDO.setName( productAttrValueAddDTO.getName() );
+
+ return productAttrValueDO;
+ }
+
+ @Override
+ public ProductAttrValueDO convert(ProductAttrValueUpdateDTO productAttrValueUpdateDTO) {
+ if ( productAttrValueUpdateDTO == null ) {
+ return null;
+ }
+
+ ProductAttrValueDO productAttrValueDO = new ProductAttrValueDO();
+
+ productAttrValueDO.setId( productAttrValueUpdateDTO.getId() );
+ productAttrValueDO.setName( productAttrValueUpdateDTO.getName() );
+
+ return productAttrValueDO;
+ }
+
+ @Override
+ public ProductAttrBO convert(ProductAttrDO productAttrDO) {
+ if ( productAttrDO == null ) {
+ return null;
+ }
+
+ ProductAttrBO productAttrBO = new ProductAttrBO();
+
+ productAttrBO.setId( productAttrDO.getId() );
+ productAttrBO.setName( productAttrDO.getName() );
+ productAttrBO.setStatus( productAttrDO.getStatus() );
+ productAttrBO.setCreateTime( productAttrDO.getCreateTime() );
+
+ return productAttrBO;
+ }
+
+ @Override
+ public ProductAttrValueBO convert2(ProductAttrValueDO productAttrValueDO) {
+ if ( productAttrValueDO == null ) {
+ return null;
+ }
+
+ ProductAttrValueBO productAttrValueBO = new ProductAttrValueBO();
+
+ productAttrValueBO.setId( productAttrValueDO.getId() );
+ productAttrValueBO.setAttrId( productAttrValueDO.getAttrId() );
+ productAttrValueBO.setName( productAttrValueDO.getName() );
+ productAttrValueBO.setStatus( productAttrValueDO.getStatus() );
+ productAttrValueBO.setCreateTime( productAttrValueDO.getCreateTime() );
+
+ return productAttrValueBO;
+ }
+
+ protected ProductAttrDetailBO productAttrDOToProductAttrDetailBO(ProductAttrDO productAttrDO) {
+ if ( productAttrDO == null ) {
+ return null;
+ }
+
+ ProductAttrDetailBO productAttrDetailBO = new ProductAttrDetailBO();
+
+ productAttrDetailBO.setId( productAttrDO.getId() );
+ productAttrDetailBO.setName( productAttrDO.getName() );
+ productAttrDetailBO.setStatus( productAttrDO.getStatus() );
+ productAttrDetailBO.setCreateTime( productAttrDO.getCreateTime() );
+
+ return productAttrDetailBO;
+ }
+
+ protected ProductAttrSimpleBO productAttrDOToProductAttrSimpleBO(ProductAttrDO productAttrDO) {
+ if ( productAttrDO == null ) {
+ return null;
+ }
+
+ ProductAttrSimpleBO productAttrSimpleBO = new ProductAttrSimpleBO();
+
+ productAttrSimpleBO.setId( productAttrDO.getId() );
+ productAttrSimpleBO.setName( productAttrDO.getName() );
+
+ return productAttrSimpleBO;
+ }
+}
diff --git a/product/product-service-impl/target/generated-sources/annotations/cn/iocoder/mall/product/convert/ProductBrandConvertImpl.java b/product/product-service-impl/target/generated-sources/annotations/cn/iocoder/mall/product/convert/ProductBrandConvertImpl.java
new file mode 100644
index 000000000..b57c7d87d
--- /dev/null
+++ b/product/product-service-impl/target/generated-sources/annotations/cn/iocoder/mall/product/convert/ProductBrandConvertImpl.java
@@ -0,0 +1,81 @@
+package cn.iocoder.mall.product.convert;
+
+import cn.iocoder.mall.product.api.bo.ProductBrandBO;
+import cn.iocoder.mall.product.api.dto.ProductBrandAddDTO;
+import cn.iocoder.mall.product.api.dto.ProductBrandUpdateDTO;
+import cn.iocoder.mall.product.dataobject.ProductBrandDO;
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.Generated;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2019-05-31T18:12:30+0800",
+ comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_121 (Oracle Corporation)"
+)
+public class ProductBrandConvertImpl implements ProductBrandConvert {
+
+ @Override
+ public List convert(List brands) {
+ if ( brands == null ) {
+ return null;
+ }
+
+ List list = new ArrayList( brands.size() );
+ for ( ProductBrandDO productBrandDO : brands ) {
+ list.add( convert( productBrandDO ) );
+ }
+
+ return list;
+ }
+
+ @Override
+ public ProductBrandBO convert(ProductBrandDO brand) {
+ if ( brand == null ) {
+ return null;
+ }
+
+ ProductBrandBO productBrandBO = new ProductBrandBO();
+
+ productBrandBO.setId( brand.getId() );
+ productBrandBO.setName( brand.getName() );
+ productBrandBO.setDescription( brand.getDescription() );
+ productBrandBO.setPicUrl( brand.getPicUrl() );
+ productBrandBO.setStatus( brand.getStatus() );
+
+ return productBrandBO;
+ }
+
+ @Override
+ public ProductBrandDO convert(ProductBrandUpdateDTO brand) {
+ if ( brand == null ) {
+ return null;
+ }
+
+ ProductBrandDO productBrandDO = new ProductBrandDO();
+
+ productBrandDO.setId( brand.getId() );
+ productBrandDO.setName( brand.getName() );
+ productBrandDO.setDescription( brand.getDescription() );
+ productBrandDO.setPicUrl( brand.getPicUrl() );
+ productBrandDO.setStatus( brand.getStatus() );
+
+ return productBrandDO;
+ }
+
+ @Override
+ public ProductBrandDO convert(ProductBrandAddDTO brand) {
+ if ( brand == null ) {
+ return null;
+ }
+
+ ProductBrandDO productBrandDO = new ProductBrandDO();
+
+ productBrandDO.setName( brand.getName() );
+ productBrandDO.setDescription( brand.getDescription() );
+ productBrandDO.setPicUrl( brand.getPicUrl() );
+ productBrandDO.setStatus( brand.getStatus() );
+
+ return productBrandDO;
+ }
+}
diff --git a/product/product-service-impl/target/generated-sources/annotations/cn/iocoder/mall/product/convert/ProductCategoryConvertImpl.java b/product/product-service-impl/target/generated-sources/annotations/cn/iocoder/mall/product/convert/ProductCategoryConvertImpl.java
new file mode 100644
index 000000000..1cbc54c34
--- /dev/null
+++ b/product/product-service-impl/target/generated-sources/annotations/cn/iocoder/mall/product/convert/ProductCategoryConvertImpl.java
@@ -0,0 +1,86 @@
+package cn.iocoder.mall.product.convert;
+
+import cn.iocoder.mall.product.api.bo.ProductCategoryBO;
+import cn.iocoder.mall.product.api.dto.ProductCategoryAddDTO;
+import cn.iocoder.mall.product.api.dto.ProductCategoryUpdateDTO;
+import cn.iocoder.mall.product.dataobject.ProductCategoryDO;
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.Generated;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2019-05-24T11:38:55+0800",
+ comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_121 (Oracle Corporation)"
+)
+public class ProductCategoryConvertImpl implements ProductCategoryConvert {
+
+ @Override
+ public ProductCategoryBO convertToBO(ProductCategoryDO category) {
+ if ( category == null ) {
+ return null;
+ }
+
+ ProductCategoryBO productCategoryBO = new ProductCategoryBO();
+
+ productCategoryBO.setId( category.getId() );
+ productCategoryBO.setPid( category.getPid() );
+ productCategoryBO.setName( category.getName() );
+ productCategoryBO.setDescription( category.getDescription() );
+ productCategoryBO.setPicUrl( category.getPicUrl() );
+ productCategoryBO.setSort( category.getSort() );
+ productCategoryBO.setStatus( category.getStatus() );
+ productCategoryBO.setCreateTime( category.getCreateTime() );
+
+ return productCategoryBO;
+ }
+
+ @Override
+ public List convertToBO(List categoryList) {
+ if ( categoryList == null ) {
+ return null;
+ }
+
+ List list = new ArrayList( categoryList.size() );
+ for ( ProductCategoryDO productCategoryDO : categoryList ) {
+ list.add( convertToBO( productCategoryDO ) );
+ }
+
+ return list;
+ }
+
+ @Override
+ public ProductCategoryDO convert(ProductCategoryAddDTO productCategoryAddDTO) {
+ if ( productCategoryAddDTO == null ) {
+ return null;
+ }
+
+ ProductCategoryDO productCategoryDO = new ProductCategoryDO();
+
+ productCategoryDO.setPid( productCategoryAddDTO.getPid() );
+ productCategoryDO.setName( productCategoryAddDTO.getName() );
+ productCategoryDO.setDescription( productCategoryAddDTO.getDescription() );
+ productCategoryDO.setPicUrl( productCategoryAddDTO.getPicUrl() );
+ productCategoryDO.setSort( productCategoryAddDTO.getSort() );
+
+ return productCategoryDO;
+ }
+
+ @Override
+ public ProductCategoryDO convert(ProductCategoryUpdateDTO productCategoryUpdateDTO) {
+ if ( productCategoryUpdateDTO == null ) {
+ return null;
+ }
+
+ ProductCategoryDO productCategoryDO = new ProductCategoryDO();
+
+ productCategoryDO.setId( productCategoryUpdateDTO.getId() );
+ productCategoryDO.setPid( productCategoryUpdateDTO.getPid() );
+ productCategoryDO.setName( productCategoryUpdateDTO.getName() );
+ productCategoryDO.setDescription( productCategoryUpdateDTO.getDescription() );
+ productCategoryDO.setPicUrl( productCategoryUpdateDTO.getPicUrl() );
+ productCategoryDO.setSort( productCategoryUpdateDTO.getSort() );
+
+ return productCategoryDO;
+ }
+}
diff --git a/product/product-service-impl/target/generated-sources/annotations/cn/iocoder/mall/product/convert/ProductSpuConvertImpl.java b/product/product-service-impl/target/generated-sources/annotations/cn/iocoder/mall/product/convert/ProductSpuConvertImpl.java
new file mode 100644
index 000000000..5aee1852b
--- /dev/null
+++ b/product/product-service-impl/target/generated-sources/annotations/cn/iocoder/mall/product/convert/ProductSpuConvertImpl.java
@@ -0,0 +1,218 @@
+package cn.iocoder.mall.product.convert;
+
+import cn.iocoder.mall.product.api.bo.ProductSkuBO;
+import cn.iocoder.mall.product.api.bo.ProductSkuDetailBO;
+import cn.iocoder.mall.product.api.bo.ProductSkuDetailBO.Spu;
+import cn.iocoder.mall.product.api.bo.ProductSpuBO;
+import cn.iocoder.mall.product.api.bo.ProductSpuDetailBO;
+import cn.iocoder.mall.product.api.bo.ProductSpuDetailBO.Sku;
+import cn.iocoder.mall.product.api.dto.ProductSkuAddOrUpdateDTO;
+import cn.iocoder.mall.product.api.dto.ProductSpuAddDTO;
+import cn.iocoder.mall.product.api.dto.ProductSpuUpdateDTO;
+import cn.iocoder.mall.product.dataobject.ProductSkuDO;
+import cn.iocoder.mall.product.dataobject.ProductSpuDO;
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.Generated;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2019-05-24T11:38:56+0800",
+ comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_121 (Oracle Corporation)"
+)
+public class ProductSpuConvertImpl implements ProductSpuConvert {
+
+ @Override
+ public ProductSpuBO convert(ProductSpuDO spu) {
+ if ( spu == null ) {
+ return null;
+ }
+
+ ProductSpuBO productSpuBO = new ProductSpuBO();
+
+ productSpuBO.setPicUrls( translatePicUrlsFromString( spu.getPicUrls() ) );
+ productSpuBO.setId( spu.getId() );
+ productSpuBO.setName( spu.getName() );
+ productSpuBO.setSellPoint( spu.getSellPoint() );
+ productSpuBO.setDescription( spu.getDescription() );
+ productSpuBO.setCid( spu.getCid() );
+ productSpuBO.setVisible( spu.getVisible() );
+ productSpuBO.setSort( spu.getSort() );
+ productSpuBO.setPrice( spu.getPrice() );
+ productSpuBO.setQuantity( spu.getQuantity() );
+
+ return productSpuBO;
+ }
+
+ @Override
+ public List convert(List spus) {
+ if ( spus == null ) {
+ return null;
+ }
+
+ List list = new ArrayList( spus.size() );
+ for ( ProductSpuDO productSpuDO : spus ) {
+ list.add( convert( productSpuDO ) );
+ }
+
+ return list;
+ }
+
+ @Override
+ public ProductSpuDO convert(ProductSpuAddDTO productSpuAddDTO) {
+ if ( productSpuAddDTO == null ) {
+ return null;
+ }
+
+ ProductSpuDO productSpuDO = new ProductSpuDO();
+
+ productSpuDO.setName( productSpuAddDTO.getName() );
+ productSpuDO.setSellPoint( productSpuAddDTO.getSellPoint() );
+ productSpuDO.setDescription( productSpuAddDTO.getDescription() );
+ productSpuDO.setCid( productSpuAddDTO.getCid() );
+ productSpuDO.setVisible( productSpuAddDTO.getVisible() );
+
+ return productSpuDO;
+ }
+
+ @Override
+ public ProductSkuDO convert(ProductSkuAddOrUpdateDTO productSkuAddDTO) {
+ if ( productSkuAddDTO == null ) {
+ return null;
+ }
+
+ ProductSkuDO productSkuDO = new ProductSkuDO();
+
+ productSkuDO.setPrice( productSkuAddDTO.getPrice() );
+ productSkuDO.setQuantity( productSkuAddDTO.getQuantity() );
+
+ return productSkuDO;
+ }
+
+ @Override
+ public ProductSpuDO convert(ProductSpuUpdateDTO productSpuUpdateDTO) {
+ if ( productSpuUpdateDTO == null ) {
+ return null;
+ }
+
+ ProductSpuDO productSpuDO = new ProductSpuDO();
+
+ productSpuDO.setId( productSpuUpdateDTO.getId() );
+ productSpuDO.setName( productSpuUpdateDTO.getName() );
+ productSpuDO.setSellPoint( productSpuUpdateDTO.getSellPoint() );
+ productSpuDO.setDescription( productSpuUpdateDTO.getDescription() );
+ productSpuDO.setCid( productSpuUpdateDTO.getCid() );
+ productSpuDO.setVisible( productSpuUpdateDTO.getVisible() );
+
+ return productSpuDO;
+ }
+
+ @Override
+ public ProductSpuDetailBO convert(ProductSpuBO spu) {
+ if ( spu == null ) {
+ return null;
+ }
+
+ ProductSpuDetailBO productSpuDetailBO = new ProductSpuDetailBO();
+
+ productSpuDetailBO.setId( spu.getId() );
+ productSpuDetailBO.setName( spu.getName() );
+ productSpuDetailBO.setSellPoint( spu.getSellPoint() );
+ productSpuDetailBO.setDescription( spu.getDescription() );
+ productSpuDetailBO.setCid( spu.getCid() );
+ List list = spu.getPicUrls();
+ if ( list != null ) {
+ productSpuDetailBO.setPicUrls( new ArrayList( list ) );
+ }
+ productSpuDetailBO.setVisible( spu.getVisible() );
+ productSpuDetailBO.setSort( spu.getSort() );
+
+ return productSpuDetailBO;
+ }
+
+ @Override
+ public ProductSpuDetailBO convert2(ProductSpuDO spu) {
+ if ( spu == null ) {
+ return null;
+ }
+
+ ProductSpuDetailBO productSpuDetailBO = new ProductSpuDetailBO();
+
+ productSpuDetailBO.setId( spu.getId() );
+ productSpuDetailBO.setName( spu.getName() );
+ productSpuDetailBO.setSellPoint( spu.getSellPoint() );
+ productSpuDetailBO.setDescription( spu.getDescription() );
+ productSpuDetailBO.setCid( spu.getCid() );
+ productSpuDetailBO.setVisible( spu.getVisible() );
+ productSpuDetailBO.setSort( spu.getSort() );
+
+ return productSpuDetailBO;
+ }
+
+ @Override
+ public Spu convert3(ProductSpuDO spu) {
+ if ( spu == null ) {
+ return null;
+ }
+
+ Spu spu1 = new Spu();
+
+ spu1.setId( spu.getId() );
+ spu1.setName( spu.getName() );
+ spu1.setSellPoint( spu.getSellPoint() );
+ spu1.setDescription( spu.getDescription() );
+ spu1.setCid( spu.getCid() );
+ spu1.setVisible( spu.getVisible() );
+ spu1.setSort( spu.getSort() );
+
+ return spu1;
+ }
+
+ @Override
+ public Sku convert2(ProductSkuDO sku) {
+ if ( sku == null ) {
+ return null;
+ }
+
+ Sku sku1 = new Sku();
+
+ sku1.setId( sku.getId() );
+ sku1.setSpuId( sku.getSpuId() );
+ sku1.setPrice( sku.getPrice() );
+ sku1.setQuantity( sku.getQuantity() );
+
+ return sku1;
+ }
+
+ @Override
+ public ProductSkuDetailBO convert3(ProductSkuDO sku) {
+ if ( sku == null ) {
+ return null;
+ }
+
+ ProductSkuDetailBO productSkuDetailBO = new ProductSkuDetailBO();
+
+ productSkuDetailBO.setId( sku.getId() );
+ productSkuDetailBO.setPrice( sku.getPrice() );
+ productSkuDetailBO.setQuantity( sku.getQuantity() );
+
+ return productSkuDetailBO;
+ }
+
+ @Override
+ public ProductSkuBO convert4(ProductSkuDO sku) {
+ if ( sku == null ) {
+ return null;
+ }
+
+ ProductSkuBO productSkuBO = new ProductSkuBO();
+
+ productSkuBO.setId( sku.getId() );
+ productSkuBO.setSpuId( sku.getSpuId() );
+ productSkuBO.setStatus( sku.getStatus() );
+ productSkuBO.setPrice( sku.getPrice() );
+ productSkuBO.setQuantity( sku.getQuantity() );
+
+ return productSkuBO;
+ }
+}
diff --git a/promotion/promotion-application/target/classes/application-test.yaml b/promotion/promotion-application/target/classes/application-test.yaml
new file mode 100644
index 000000000..96b1b5566
--- /dev/null
+++ b/promotion/promotion-application/target/classes/application-test.yaml
@@ -0,0 +1,6 @@
+swagger:
+ enable: false
+ title: 营销子系统
+ description: 营销子系统
+ version: 1.0.0
+ base-package: cn.iocoder.mall.promotion.application.controller
diff --git a/promotion/promotion-application/target/classes/application.yaml b/promotion/promotion-application/target/classes/application.yaml
new file mode 100644
index 000000000..d388f4a8f
--- /dev/null
+++ b/promotion/promotion-application/target/classes/application.yaml
@@ -0,0 +1,29 @@
+spring:
+ application:
+ name: promotion-application
+ cloud:
+ sentinel:
+ transport:
+ port: 8719
+ dashboard: localhost:12088
+ metric:
+ charset: UTF-8
+ eager: false
+
+# server
+server:
+ port: 18085
+ servlet:
+ context-path: /promotion-api/
+
+swagger:
+ enable: false
+
+
+management:
+ endpoints:
+ web:
+ exposure:
+ include: health,info,env,metrics,prometheus
+ metrics:
+ enabled: true
diff --git a/promotion/promotion-application/target/generated-sources/annotations/cn/iocoder/mall/promotion/application/convert/BannerConvert$AdminsImpl.java b/promotion/promotion-application/target/generated-sources/annotations/cn/iocoder/mall/promotion/application/convert/BannerConvert$AdminsImpl.java
new file mode 100644
index 000000000..bfac21df2
--- /dev/null
+++ b/promotion/promotion-application/target/generated-sources/annotations/cn/iocoder/mall/promotion/application/convert/BannerConvert$AdminsImpl.java
@@ -0,0 +1,65 @@
+package cn.iocoder.mall.promotion.application.convert;
+
+import cn.iocoder.mall.promotion.api.bo.BannerBO;
+import cn.iocoder.mall.promotion.api.bo.BannerPageBO;
+import cn.iocoder.mall.promotion.application.convert.BannerConvert.Admins;
+import cn.iocoder.mall.promotion.application.vo.admins.AdminsBannerPageVO;
+import cn.iocoder.mall.promotion.application.vo.admins.AdminsBannerVO;
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.Generated;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2019-05-24T11:39:16+0800",
+ comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_121 (Oracle Corporation)"
+)
+public class BannerConvert$AdminsImpl implements Admins {
+
+ @Override
+ public AdminsBannerVO convert(BannerBO bannerBO) {
+ if ( bannerBO == null ) {
+ return null;
+ }
+
+ AdminsBannerVO adminsBannerVO = new AdminsBannerVO();
+
+ adminsBannerVO.setId( bannerBO.getId() );
+ adminsBannerVO.setTitle( bannerBO.getTitle() );
+ adminsBannerVO.setUrl( bannerBO.getUrl() );
+ adminsBannerVO.setPicUrl( bannerBO.getPicUrl() );
+ adminsBannerVO.setSort( bannerBO.getSort() );
+ adminsBannerVO.setStatus( bannerBO.getStatus() );
+ adminsBannerVO.setMemo( bannerBO.getMemo() );
+ adminsBannerVO.setCreateTime( bannerBO.getCreateTime() );
+
+ return adminsBannerVO;
+ }
+
+ @Override
+ public AdminsBannerPageVO convert3(BannerPageBO bannerPageBO) {
+ if ( bannerPageBO == null ) {
+ return null;
+ }
+
+ AdminsBannerPageVO adminsBannerPageVO = new AdminsBannerPageVO();
+
+ adminsBannerPageVO.setList( bannerBOListToAdminsBannerVOList( bannerPageBO.getList() ) );
+ adminsBannerPageVO.setTotal( bannerPageBO.getTotal() );
+
+ return adminsBannerPageVO;
+ }
+
+ protected List bannerBOListToAdminsBannerVOList(List list) {
+ if ( list == null ) {
+ return null;
+ }
+
+ List list1 = new ArrayList( list.size() );
+ for ( BannerBO bannerBO : list ) {
+ list1.add( convert( bannerBO ) );
+ }
+
+ return list1;
+ }
+}
diff --git a/promotion/promotion-application/target/generated-sources/annotations/cn/iocoder/mall/promotion/application/convert/BannerConvert$UsersImpl.java b/promotion/promotion-application/target/generated-sources/annotations/cn/iocoder/mall/promotion/application/convert/BannerConvert$UsersImpl.java
new file mode 100644
index 000000000..a6f766ed8
--- /dev/null
+++ b/promotion/promotion-application/target/generated-sources/annotations/cn/iocoder/mall/promotion/application/convert/BannerConvert$UsersImpl.java
@@ -0,0 +1,43 @@
+package cn.iocoder.mall.promotion.application.convert;
+
+import cn.iocoder.mall.promotion.api.bo.BannerBO;
+import cn.iocoder.mall.promotion.application.convert.BannerConvert.Users;
+import cn.iocoder.mall.promotion.application.vo.users.UsersBannerVO;
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.Generated;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2019-05-24T11:39:15+0800",
+ comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_121 (Oracle Corporation)"
+)
+public class BannerConvert$UsersImpl implements Users {
+
+ @Override
+ public List convertList(List banners) {
+ if ( banners == null ) {
+ return null;
+ }
+
+ List list = new ArrayList( banners.size() );
+ for ( BannerBO bannerBO : banners ) {
+ list.add( bannerBOToUsersBannerVO( bannerBO ) );
+ }
+
+ return list;
+ }
+
+ protected UsersBannerVO bannerBOToUsersBannerVO(BannerBO bannerBO) {
+ if ( bannerBO == null ) {
+ return null;
+ }
+
+ UsersBannerVO usersBannerVO = new UsersBannerVO();
+
+ usersBannerVO.setUrl( bannerBO.getUrl() );
+ usersBannerVO.setPicUrl( bannerBO.getPicUrl() );
+
+ return usersBannerVO;
+ }
+}
diff --git a/promotion/promotion-application/target/generated-sources/annotations/cn/iocoder/mall/promotion/application/convert/CouponCardConvertImpl.java b/promotion/promotion-application/target/generated-sources/annotations/cn/iocoder/mall/promotion/application/convert/CouponCardConvertImpl.java
new file mode 100644
index 000000000..c08c9df5f
--- /dev/null
+++ b/promotion/promotion-application/target/generated-sources/annotations/cn/iocoder/mall/promotion/application/convert/CouponCardConvertImpl.java
@@ -0,0 +1,67 @@
+package cn.iocoder.mall.promotion.application.convert;
+
+import cn.iocoder.mall.promotion.api.bo.CouponCardBO;
+import cn.iocoder.mall.promotion.api.bo.CouponCardPageBO;
+import cn.iocoder.mall.promotion.application.vo.users.UsersCouponCardPageVO;
+import cn.iocoder.mall.promotion.application.vo.users.UsersCouponCardVO;
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.Generated;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2019-05-24T11:39:15+0800",
+ comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_121 (Oracle Corporation)"
+)
+public class CouponCardConvertImpl implements CouponCardConvert {
+
+ @Override
+ public UsersCouponCardVO convert(CouponCardBO result) {
+ if ( result == null ) {
+ return null;
+ }
+
+ UsersCouponCardVO usersCouponCardVO = new UsersCouponCardVO();
+
+ usersCouponCardVO.setId( result.getId() );
+ usersCouponCardVO.setTemplateId( result.getTemplateId() );
+ usersCouponCardVO.setTitle( result.getTitle() );
+ usersCouponCardVO.setStatus( result.getStatus() );
+ usersCouponCardVO.setPriceAvailable( result.getPriceAvailable() );
+ usersCouponCardVO.setValidStartTime( result.getValidStartTime() );
+ usersCouponCardVO.setValidEndTime( result.getValidEndTime() );
+ usersCouponCardVO.setPreferentialType( result.getPreferentialType() );
+ usersCouponCardVO.setPercentOff( result.getPercentOff() );
+ usersCouponCardVO.setPriceOff( result.getPriceOff() );
+ usersCouponCardVO.setDiscountPriceLimit( result.getDiscountPriceLimit() );
+
+ return usersCouponCardVO;
+ }
+
+ @Override
+ public UsersCouponCardPageVO convert2(CouponCardPageBO result) {
+ if ( result == null ) {
+ return null;
+ }
+
+ UsersCouponCardPageVO usersCouponCardPageVO = new UsersCouponCardPageVO();
+
+ usersCouponCardPageVO.setList( couponCardBOListToUsersCouponCardVOList( result.getList() ) );
+ usersCouponCardPageVO.setTotal( result.getTotal() );
+
+ return usersCouponCardPageVO;
+ }
+
+ protected List couponCardBOListToUsersCouponCardVOList(List list) {
+ if ( list == null ) {
+ return null;
+ }
+
+ List list1 = new ArrayList( list.size() );
+ for ( CouponCardBO couponCardBO : list ) {
+ list1.add( convert( couponCardBO ) );
+ }
+
+ return list1;
+ }
+}
diff --git a/promotion/promotion-application/target/generated-sources/annotations/cn/iocoder/mall/promotion/application/convert/CouponTemplateConvert$AdminsImpl.java b/promotion/promotion-application/target/generated-sources/annotations/cn/iocoder/mall/promotion/application/convert/CouponTemplateConvert$AdminsImpl.java
new file mode 100644
index 000000000..738f566c4
--- /dev/null
+++ b/promotion/promotion-application/target/generated-sources/annotations/cn/iocoder/mall/promotion/application/convert/CouponTemplateConvert$AdminsImpl.java
@@ -0,0 +1,80 @@
+package cn.iocoder.mall.promotion.application.convert;
+
+import cn.iocoder.mall.promotion.api.bo.CouponTemplateBO;
+import cn.iocoder.mall.promotion.api.bo.CouponTemplatePageBO;
+import cn.iocoder.mall.promotion.application.convert.CouponTemplateConvert.Admins;
+import cn.iocoder.mall.promotion.application.vo.admins.AdminsCouponTemplatePageVO;
+import cn.iocoder.mall.promotion.application.vo.admins.AdminsCouponTemplateVO;
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.Generated;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2019-05-24T11:39:15+0800",
+ comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_121 (Oracle Corporation)"
+)
+public class CouponTemplateConvert$AdminsImpl implements Admins {
+
+ @Override
+ public AdminsCouponTemplateVO convert(CouponTemplateBO template) {
+ if ( template == null ) {
+ return null;
+ }
+
+ AdminsCouponTemplateVO adminsCouponTemplateVO = new AdminsCouponTemplateVO();
+
+ adminsCouponTemplateVO.setId( template.getId() );
+ adminsCouponTemplateVO.setTitle( template.getTitle() );
+ adminsCouponTemplateVO.setDescription( template.getDescription() );
+ adminsCouponTemplateVO.setType( template.getType() );
+ adminsCouponTemplateVO.setCodeType( template.getCodeType() );
+ adminsCouponTemplateVO.setStatus( template.getStatus() );
+ adminsCouponTemplateVO.setQuota( template.getQuota() );
+ adminsCouponTemplateVO.setTotal( template.getTotal() );
+ adminsCouponTemplateVO.setPriceAvailable( template.getPriceAvailable() );
+ adminsCouponTemplateVO.setRangeType( template.getRangeType() );
+ adminsCouponTemplateVO.setRangeValues( template.getRangeValues() );
+ adminsCouponTemplateVO.setDateType( template.getDateType() );
+ adminsCouponTemplateVO.setValidStartTime( template.getValidStartTime() );
+ adminsCouponTemplateVO.setValidEndTime( template.getValidEndTime() );
+ adminsCouponTemplateVO.setFixedStartTerm( template.getFixedStartTerm() );
+ adminsCouponTemplateVO.setFixedEndTerm( template.getFixedEndTerm() );
+ adminsCouponTemplateVO.setPreferentialType( template.getPreferentialType() );
+ adminsCouponTemplateVO.setPercentOff( template.getPercentOff() );
+ adminsCouponTemplateVO.setPriceOff( template.getPriceOff() );
+ adminsCouponTemplateVO.setDiscountPriceLimit( template.getDiscountPriceLimit() );
+ adminsCouponTemplateVO.setStatFetchNum( template.getStatFetchNum() );
+ adminsCouponTemplateVO.setCreateTime( template.getCreateTime() );
+
+ return adminsCouponTemplateVO;
+ }
+
+ @Override
+ public AdminsCouponTemplatePageVO convertPage(CouponTemplatePageBO result) {
+ if ( result == null ) {
+ return null;
+ }
+
+ AdminsCouponTemplatePageVO adminsCouponTemplatePageVO = new AdminsCouponTemplatePageVO();
+
+ adminsCouponTemplatePageVO.setList( convertList( result.getList() ) );
+ adminsCouponTemplatePageVO.setTotal( result.getTotal() );
+
+ return adminsCouponTemplatePageVO;
+ }
+
+ @Override
+ public List convertList(List templates) {
+ if ( templates == null ) {
+ return null;
+ }
+
+ List list = new ArrayList( templates.size() );
+ for ( CouponTemplateBO couponTemplateBO : templates ) {
+ list.add( convert( couponTemplateBO ) );
+ }
+
+ return list;
+ }
+}
diff --git a/promotion/promotion-application/target/generated-sources/annotations/cn/iocoder/mall/promotion/application/convert/CouponTemplateConvert$UsersImpl.java b/promotion/promotion-application/target/generated-sources/annotations/cn/iocoder/mall/promotion/application/convert/CouponTemplateConvert$UsersImpl.java
new file mode 100644
index 000000000..9f2f640fc
--- /dev/null
+++ b/promotion/promotion-application/target/generated-sources/annotations/cn/iocoder/mall/promotion/application/convert/CouponTemplateConvert$UsersImpl.java
@@ -0,0 +1,41 @@
+package cn.iocoder.mall.promotion.application.convert;
+
+import cn.iocoder.mall.promotion.api.bo.CouponTemplateBO;
+import cn.iocoder.mall.promotion.application.convert.CouponTemplateConvert.Users;
+import cn.iocoder.mall.promotion.application.vo.users.UsersCouponTemplateVO;
+import javax.annotation.Generated;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2019-05-24T11:39:15+0800",
+ comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_121 (Oracle Corporation)"
+)
+public class CouponTemplateConvert$UsersImpl implements Users {
+
+ @Override
+ public UsersCouponTemplateVO convert2(CouponTemplateBO template) {
+ if ( template == null ) {
+ return null;
+ }
+
+ UsersCouponTemplateVO usersCouponTemplateVO = new UsersCouponTemplateVO();
+
+ usersCouponTemplateVO.setId( template.getId() );
+ usersCouponTemplateVO.setTitle( template.getTitle() );
+ usersCouponTemplateVO.setStatus( template.getStatus() );
+ usersCouponTemplateVO.setPriceAvailable( template.getPriceAvailable() );
+ usersCouponTemplateVO.setRangeType( template.getRangeType() );
+ usersCouponTemplateVO.setRangeValues( template.getRangeValues() );
+ usersCouponTemplateVO.setDateType( template.getDateType() );
+ usersCouponTemplateVO.setValidStartTime( template.getValidStartTime() );
+ usersCouponTemplateVO.setValidEndTime( template.getValidEndTime() );
+ usersCouponTemplateVO.setFixedStartTerm( template.getFixedStartTerm() );
+ usersCouponTemplateVO.setFixedEndTerm( template.getFixedEndTerm() );
+ usersCouponTemplateVO.setPreferentialType( template.getPreferentialType() );
+ usersCouponTemplateVO.setPercentOff( template.getPercentOff() );
+ usersCouponTemplateVO.setPriceOff( template.getPriceOff() );
+ usersCouponTemplateVO.setDiscountPriceLimit( template.getDiscountPriceLimit() );
+
+ return usersCouponTemplateVO;
+ }
+}
diff --git a/promotion/promotion-application/target/generated-sources/annotations/cn/iocoder/mall/promotion/application/convert/CouponTemplateConvertImpl.java b/promotion/promotion-application/target/generated-sources/annotations/cn/iocoder/mall/promotion/application/convert/CouponTemplateConvertImpl.java
new file mode 100644
index 000000000..af26ec501
--- /dev/null
+++ b/promotion/promotion-application/target/generated-sources/annotations/cn/iocoder/mall/promotion/application/convert/CouponTemplateConvertImpl.java
@@ -0,0 +1,11 @@
+package cn.iocoder.mall.promotion.application.convert;
+
+import javax.annotation.Generated;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2019-05-24T11:39:15+0800",
+ comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_121 (Oracle Corporation)"
+)
+public class CouponTemplateConvertImpl implements CouponTemplateConvert {
+}
diff --git a/promotion/promotion-application/target/generated-sources/annotations/cn/iocoder/mall/promotion/application/convert/ProductRecommendConvertImpl.java b/promotion/promotion-application/target/generated-sources/annotations/cn/iocoder/mall/promotion/application/convert/ProductRecommendConvertImpl.java
new file mode 100644
index 000000000..17630b9f3
--- /dev/null
+++ b/promotion/promotion-application/target/generated-sources/annotations/cn/iocoder/mall/promotion/application/convert/ProductRecommendConvertImpl.java
@@ -0,0 +1,85 @@
+package cn.iocoder.mall.promotion.application.convert;
+
+import cn.iocoder.mall.product.api.bo.ProductSpuBO;
+import cn.iocoder.mall.promotion.api.bo.ProductRecommendBO;
+import cn.iocoder.mall.promotion.api.bo.ProductRecommendPageBO;
+import cn.iocoder.mall.promotion.application.vo.admins.AdminsProductRecommendPageVO;
+import cn.iocoder.mall.promotion.application.vo.admins.AdminsProductRecommendVO;
+import cn.iocoder.mall.promotion.application.vo.users.UsersProductRecommendVO;
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.Generated;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2019-05-24T11:39:16+0800",
+ comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_121 (Oracle Corporation)"
+)
+public class ProductRecommendConvertImpl implements ProductRecommendConvert {
+
+ @Override
+ public AdminsProductRecommendVO convert(ProductRecommendBO bannerBO) {
+ if ( bannerBO == null ) {
+ return null;
+ }
+
+ AdminsProductRecommendVO adminsProductRecommendVO = new AdminsProductRecommendVO();
+
+ adminsProductRecommendVO.setId( bannerBO.getId() );
+ adminsProductRecommendVO.setType( bannerBO.getType() );
+ adminsProductRecommendVO.setProductSpuId( bannerBO.getProductSpuId() );
+ adminsProductRecommendVO.setSort( bannerBO.getSort() );
+ adminsProductRecommendVO.setStatus( bannerBO.getStatus() );
+ adminsProductRecommendVO.setMemo( bannerBO.getMemo() );
+ adminsProductRecommendVO.setCreateTime( bannerBO.getCreateTime() );
+
+ return adminsProductRecommendVO;
+ }
+
+ @Override
+ public AdminsProductRecommendPageVO convert(ProductRecommendPageBO result) {
+ if ( result == null ) {
+ return null;
+ }
+
+ AdminsProductRecommendPageVO adminsProductRecommendPageVO = new AdminsProductRecommendPageVO();
+
+ adminsProductRecommendPageVO.setList( productRecommendBOListToAdminsProductRecommendVOList( result.getList() ) );
+ adminsProductRecommendPageVO.setTotal( result.getTotal() );
+
+ return adminsProductRecommendPageVO;
+ }
+
+ @Override
+ public UsersProductRecommendVO convert(ProductSpuBO productSpu) {
+ if ( productSpu == null ) {
+ return null;
+ }
+
+ UsersProductRecommendVO usersProductRecommendVO = new UsersProductRecommendVO();
+
+ usersProductRecommendVO.setId( productSpu.getId() );
+ usersProductRecommendVO.setName( productSpu.getName() );
+ usersProductRecommendVO.setSellPoint( productSpu.getSellPoint() );
+ List list = productSpu.getPicUrls();
+ if ( list != null ) {
+ usersProductRecommendVO.setPicUrls( new ArrayList( list ) );
+ }
+ usersProductRecommendVO.setPrice( productSpu.getPrice() );
+
+ return usersProductRecommendVO;
+ }
+
+ protected List productRecommendBOListToAdminsProductRecommendVOList(List list) {
+ if ( list == null ) {
+ return null;
+ }
+
+ List list1 = new ArrayList( list.size() );
+ for ( ProductRecommendBO productRecommendBO : list ) {
+ list1.add( convert( productRecommendBO ) );
+ }
+
+ return list1;
+ }
+}
diff --git a/promotion/promotion-service-impl/target/classes/config/application-test.yaml b/promotion/promotion-service-impl/target/classes/config/application-test.yaml
new file mode 100644
index 000000000..2abf34582
--- /dev/null
+++ b/promotion/promotion-service-impl/target/classes/config/application-test.yaml
@@ -0,0 +1,7 @@
+spring:
+ # datasource
+ datasource:
+ url: jdbc:mysql://192.168.88.14:3306/mall_promotion?useSSL=false&useUnicode=true&characterEncoding=UTF-8
+ driver-class-name: com.mysql.jdbc.Driver
+ username: root
+ password: ${MALL_MYSQL_PASSWORD}
diff --git a/promotion/promotion-service-impl/target/classes/config/application.yaml b/promotion/promotion-service-impl/target/classes/config/application.yaml
new file mode 100644
index 000000000..396478d09
--- /dev/null
+++ b/promotion/promotion-service-impl/target/classes/config/application.yaml
@@ -0,0 +1,54 @@
+spring:
+ # datasource
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ url: jdbc:mysql://180.167.213.26:13306/mall_promotion?useSSL=false&useUnicode=true&characterEncoding=UTF-8
+ driver-class-name: com.mysql.jdbc.Driver
+ username: root
+ password: ${MALL_MYSQL_PASSWORD}
+ # TODO 芋艿, 后续优化下 druid 参数
+ druid:
+ initial-size: 5
+ max-active: 5
+ max-wait: 10000
+
+# mybatis-plus
+mybatis-plus:
+ configuration:
+ map-underscore-to-camel-case: true # 虽然默认为 true ,但是还是显示去指定下。
+ global-config:
+ db-config:
+ id-type: auto
+ mapper-locations: classpath*:mapper/*.xml
+ type-aliases-package: cn.iocoder.mall.promotion.biz.dataobject
+
+# dubbo
+dubbo:
+ application:
+ name: promotion-service
+ registry:
+ address: zookeeper://127.0.0.1:2181
+ protocol:
+ port: -1
+ name: dubbo
+ scan:
+ base-packages: cn.iocoder.mall.promotion.biz.service
+ consumer:
+ ProductSpuService:
+ version: 1.0.0
+ provider:
+ filter: -exception
+ BannerService:
+ version: 1.0.0
+ CouponService:
+ version: 1.0.0
+ ProductRecommendService:
+ version: 1.0.0
+ PromotionActivityService:
+ version: 1.0.0
+
+
+# logging
+logging:
+ level:
+ cn.iocoder.mall.promotion.dao: debug
diff --git a/promotion/promotion-service-impl/target/classes/file.conf b/promotion/promotion-service-impl/target/classes/file.conf
new file mode 100644
index 000000000..8b60b29c3
--- /dev/null
+++ b/promotion/promotion-service-impl/target/classes/file.conf
@@ -0,0 +1,69 @@
+transport {
+ # tcp udt unix-domain-socket
+ type = "TCP"
+ #NIO NATIVE
+ server = "NIO"
+ #enable heartbeat
+ heartbeat = true
+ #thread factory for netty
+ thread-factory {
+ boss-thread-prefix = "NettyBoss"
+ worker-thread-prefix = "NettyServerNIOWorker"
+ server-executor-thread-prefix = "NettyServerBizHandler"
+ share-boss-worker = false
+ client-selector-thread-prefix = "NettyClientSelector"
+ client-selector-thread-size = 1
+ client-worker-thread-prefix = "NettyClientWorkerThread"
+ # netty boss thread size,will not be used for UDT
+ boss-thread-size = 1
+ #auto default pin or 8
+ worker-thread-size = 8
+ }
+}
+
+service {
+ #vgroup->rgroup
+ vgroup_mapping.my_test_tx_group = "default"
+ #only support single node
+ default.grouplist = "180.167.213.26:8091"
+ #degrade current not support
+ enableDegrade = false
+ #disable
+ disable = false
+}
+
+client {
+ async.commit.buffer.limit = 10000
+ lock {
+ retry.internal = 10
+ retry.times = 30
+ }
+}
+## transaction log store
+store {
+ ## store mode: file、db
+ mode = "file"
+
+ ## file store
+ file {
+ dir = "file_store/data"
+
+ # branch session size , if exceeded first try compress lockkey, still exceeded throws exceptions
+ max-branch-session-size = 16384
+ # globe session size , if exceeded throws exceptions
+ max-global-session-size = 512
+ # file buffer size , if exceeded allocate new buffer
+ file-write-buffer-cache-size = 16384
+ # when recover batch read size
+ session.reload.read_size = 100
+ }
+
+ ## database store
+ db {
+ driver_class = ""
+ url = ""
+ user = ""
+ password = ""
+ }
+}
+
diff --git a/promotion/promotion-service-impl/target/classes/mapper/BannerMapper.xml b/promotion/promotion-service-impl/target/classes/mapper/BannerMapper.xml
new file mode 100644
index 000000000..0eb135dc0
--- /dev/null
+++ b/promotion/promotion-service-impl/target/classes/mapper/BannerMapper.xml
@@ -0,0 +1,110 @@
+
+
+
+
+
+ id, title, url, pic_url, sort,
+ status, memo, create_time
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ INSERT INTO banner (
+ title, url, pic_url, sort, status,
+ memo, create_time, deleted
+ ) VALUES (
+ #{title}, #{url}, #{picUrl}, #{sort}, #{status},
+ #{memo}, #{createTime}, #{deleted}
+ )
+
+
+
+ UPDATE banner
+
+
+ title = #{title},
+
+
+ url = #{url},
+
+
+ pic_url = #{picUrl} ,
+
+
+ sort = #{sort},
+
+
+ status = #{status},
+
+
+ memo = #{memo},
+
+
+ deleted = #{deleted}
+
+
+ WHERE id = #{id}
+
+
+
\ No newline at end of file
diff --git a/promotion/promotion-service-impl/target/classes/mapper/CouponCardMapper.xml b/promotion/promotion-service-impl/target/classes/mapper/CouponCardMapper.xml
new file mode 100644
index 000000000..1bde18757
--- /dev/null
+++ b/promotion/promotion-service-impl/target/classes/mapper/CouponCardMapper.xml
@@ -0,0 +1,134 @@
+
+
+
+
+
+ id, template_id, title, status, user_id, take_type,
+ price_available, valid_start_time, valid_end_time, preferential_type, percent_off, price_off,
+ discount_price_limit, used_time,
+ create_time
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ INSERT INTO coupon_card (
+ template_id, title, status, user_id, take_type,
+ price_available, valid_start_time, valid_end_time, preferential_type, percent_off, price_off,
+ discount_price_limit, used_time,
+ create_time
+ ) VALUES (
+ #{templateId}, #{title}, #{status}, #{userId}, #{takeType},
+ #{priceAvailable}, #{validStartTime}, #{validEndTime}, #{preferentialType}, #{percentOff}, #{priceOff},
+ #{discountPriceLimit}, #{usedTime},
+ #{createTime}
+ )
+
+
+
+ UPDATE coupon_card
+
+
+ status = #{status},
+
+
+ used_time = #{usedTime},
+
+
+ WHERE id = #{id}
+
+
+
+ UPDATE coupon_card
+
+
+ status = #{updateObj.status},
+
+
+ used_time = #{updateObj.usedTime},
+
+
+ WHERE id = #{id}
+ AND status = #{status}
+
+
+
diff --git a/promotion/promotion-service-impl/target/classes/mapper/CouponTemplateMapper.xml b/promotion/promotion-service-impl/target/classes/mapper/CouponTemplateMapper.xml
new file mode 100644
index 000000000..4e2c9c294
--- /dev/null
+++ b/promotion/promotion-service-impl/target/classes/mapper/CouponTemplateMapper.xml
@@ -0,0 +1,169 @@
+
+
+
+
+
+ id, title, description, type, code_type,
+ status, quota, total, price_available, range_type,
+ range_values, date_type, valid_start_time, valid_end_time, fixed_start_term, fixed_end_term,
+ preferential_type, percent_off, price_off, discount_price_limit, stat_fetch_num,
+ create_time
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ INSERT INTO coupon_template (
+ title, description, type, code_type,
+ status, quota, total, price_available, range_type,
+ range_values, date_type, valid_start_time, valid_end_time, fixed_start_term, fixed_end_term,
+ preferential_type, percent_off, price_off, discount_price_limit, stat_fetch_num,
+ create_time
+ ) VALUES (
+ #{title}, #{description}, #{type}, #{codeType},
+ #{status}, #{quota}, #{total}, #{priceAvailable}, #{rangeType},
+ #{rangeValues}, #{dateType}, #{validStartTime}, #{validEndTime}, #{fixedStartTerm}, #{fixedEndTerm}
+ #{preferentialType}, #{percentOff}, #{priceOff}, #{discountPriceLimit}, #{statFetchNum},
+ #{createTime}
+ )
+
+
+
+ UPDATE coupon_template
+
+
+ title = #{title},
+
+
+ description = #{description},
+
+
+ status = #{status},
+
+
+ quota = #{quota},
+
+
+ total = #{total},
+
+
+ price_available = #{priceAvailable},
+
+
+ range_type = #{rangeType},
+
+
+ range_values = #{rangeValues},
+
+
+ date_type = #{dateType},
+
+
+ valid_start_time = #{validStartTime},
+
+
+ valid_end_time = #{validEndTime},
+
+
+ fixed_start_term = #{fixedStartTerm},
+
+
+ fixed_end_term = #{fixedEndTerm},
+
+
+ preferential_type = #{preferentialType},
+
+
+ percent_off = #{percentOff},
+
+
+ price_off = #{priceOff},
+
+
+ discount_price_limit = #{discountPriceLimit},
+
+
+ WHERE id = #{id}
+
+
+
+ UPDATE coupon_template
+ SET stat_fetch_Num = stat_fetch_Num + 1
+ WHERE id = #{id}
+ AND total > stat_fetch_Num
+
+
+
diff --git a/promotion/promotion-service-impl/target/classes/mapper/ProductRecommendMapper.xml b/promotion/promotion-service-impl/target/classes/mapper/ProductRecommendMapper.xml
new file mode 100644
index 000000000..7632b2579
--- /dev/null
+++ b/promotion/promotion-service-impl/target/classes/mapper/ProductRecommendMapper.xml
@@ -0,0 +1,125 @@
+
+
+
+
+
+ id, type, product_spu_id, sort,
+ status, memo, create_time
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ INSERT INTO product_recommend (
+ type, product_spu_id, sort, status, memo,
+ create_time, deleted
+ ) VALUES (
+ #{type}, #{productSpuId}, #{sort}, #{status}, #{memo},
+ #{createTime}, #{deleted}
+ )
+
+
+
+ UPDATE product_recommend
+
+
+ type = #{type},
+
+
+ product_spu_id = #{productSpuId},
+
+
+ sort = #{sort},
+
+
+ status = #{status},
+
+
+ memo = #{memo},
+
+
+ deleted = #{deleted}
+
+
+ WHERE id = #{id}
+
+
+
\ No newline at end of file
diff --git a/promotion/promotion-service-impl/target/classes/mapper/PromotionActivityMapper.xml b/promotion/promotion-service-impl/target/classes/mapper/PromotionActivityMapper.xml
new file mode 100644
index 000000000..4518b97f1
--- /dev/null
+++ b/promotion/promotion-service-impl/target/classes/mapper/PromotionActivityMapper.xml
@@ -0,0 +1,135 @@
+
+
+
+
+
+ id, title, activity_type, status, start_time,
+ end_time, invalid_time, delete_time, time_limited_discount, full_privilege,
+ create_time, update_time
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ INSERT INTO promotion_activity (
+ title, activity_type, status, start_time,
+ end_time, invalid_time, delete_time,
+ time_limited_discount,
+ full_privilege,
+ create_time
+ ) VALUES (
+ #{title}, #{activityType}, #{status}, #{startTime},
+ #{endTime}, #{invalidTime}, #{deleteTime},
+ #{timeLimitedDiscount, typeHandler=cn.iocoder.common.framework.mybatis.JSONTypeHandler},
+ #{fullPrivilege, typeHandler=cn.iocoder.common.framework.mybatis.JSONTypeHandler},
+ #{createTime}
+ )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/promotion/promotion-service-impl/target/classes/registry.conf b/promotion/promotion-service-impl/target/classes/registry.conf
new file mode 100644
index 000000000..f73989514
--- /dev/null
+++ b/promotion/promotion-service-impl/target/classes/registry.conf
@@ -0,0 +1,14 @@
+registry {
+ type = "file"
+
+ file {
+ name = "file.conf"
+ }
+
+ zk {
+ cluster = "default"
+ serverAddr = "192.168.88.10:2181"
+ session.timeout = 6000
+ connect.timeout = 2000
+ }
+}
diff --git a/promotion/promotion-service-impl/target/generated-sources/annotations/cn/iocoder/mall/promotion/biz/convert/BannerConvertImpl.java b/promotion/promotion-service-impl/target/generated-sources/annotations/cn/iocoder/mall/promotion/biz/convert/BannerConvertImpl.java
new file mode 100644
index 000000000..95bc28738
--- /dev/null
+++ b/promotion/promotion-service-impl/target/generated-sources/annotations/cn/iocoder/mall/promotion/biz/convert/BannerConvertImpl.java
@@ -0,0 +1,86 @@
+package cn.iocoder.mall.promotion.biz.convert;
+
+import cn.iocoder.mall.promotion.api.bo.BannerBO;
+import cn.iocoder.mall.promotion.api.dto.BannerAddDTO;
+import cn.iocoder.mall.promotion.api.dto.BannerUpdateDTO;
+import cn.iocoder.mall.promotion.biz.dataobject.BannerDO;
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.Generated;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2019-05-24T11:38:52+0800",
+ comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_121 (Oracle Corporation)"
+)
+public class BannerConvertImpl implements BannerConvert {
+
+ @Override
+ public BannerBO convertToBO(BannerDO banner) {
+ if ( banner == null ) {
+ return null;
+ }
+
+ BannerBO bannerBO = new BannerBO();
+
+ bannerBO.setId( banner.getId() );
+ bannerBO.setTitle( banner.getTitle() );
+ bannerBO.setUrl( banner.getUrl() );
+ bannerBO.setPicUrl( banner.getPicUrl() );
+ bannerBO.setSort( banner.getSort() );
+ bannerBO.setStatus( banner.getStatus() );
+ bannerBO.setMemo( banner.getMemo() );
+ bannerBO.setCreateTime( banner.getCreateTime() );
+
+ return bannerBO;
+ }
+
+ @Override
+ public List convertToBO(List bannerList) {
+ if ( bannerList == null ) {
+ return null;
+ }
+
+ List list = new ArrayList( bannerList.size() );
+ for ( BannerDO bannerDO : bannerList ) {
+ list.add( convertToBO( bannerDO ) );
+ }
+
+ return list;
+ }
+
+ @Override
+ public BannerDO convert(BannerAddDTO bannerAddDTO) {
+ if ( bannerAddDTO == null ) {
+ return null;
+ }
+
+ BannerDO bannerDO = new BannerDO();
+
+ bannerDO.setTitle( bannerAddDTO.getTitle() );
+ bannerDO.setUrl( bannerAddDTO.getUrl() );
+ bannerDO.setPicUrl( bannerAddDTO.getPicUrl() );
+ bannerDO.setSort( bannerAddDTO.getSort() );
+ bannerDO.setMemo( bannerAddDTO.getMemo() );
+
+ return bannerDO;
+ }
+
+ @Override
+ public BannerDO convert(BannerUpdateDTO bannerUpdateDTO) {
+ if ( bannerUpdateDTO == null ) {
+ return null;
+ }
+
+ BannerDO bannerDO = new BannerDO();
+
+ bannerDO.setId( bannerUpdateDTO.getId() );
+ bannerDO.setTitle( bannerUpdateDTO.getTitle() );
+ bannerDO.setUrl( bannerUpdateDTO.getUrl() );
+ bannerDO.setPicUrl( bannerUpdateDTO.getPicUrl() );
+ bannerDO.setSort( bannerUpdateDTO.getSort() );
+ bannerDO.setMemo( bannerUpdateDTO.getMemo() );
+
+ return bannerDO;
+ }
+}
diff --git a/promotion/promotion-service-impl/target/generated-sources/annotations/cn/iocoder/mall/promotion/biz/convert/CouponCardConvertImpl.java b/promotion/promotion-service-impl/target/generated-sources/annotations/cn/iocoder/mall/promotion/biz/convert/CouponCardConvertImpl.java
new file mode 100644
index 000000000..fb71cf655
--- /dev/null
+++ b/promotion/promotion-service-impl/target/generated-sources/annotations/cn/iocoder/mall/promotion/biz/convert/CouponCardConvertImpl.java
@@ -0,0 +1,114 @@
+package cn.iocoder.mall.promotion.biz.convert;
+
+import cn.iocoder.mall.promotion.api.bo.CouponCardAvailableBO;
+import cn.iocoder.mall.promotion.api.bo.CouponCardBO;
+import cn.iocoder.mall.promotion.api.bo.CouponCardDetailBO;
+import cn.iocoder.mall.promotion.biz.dataobject.CouponCardDO;
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.Generated;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2019-05-24T11:38:52+0800",
+ comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_121 (Oracle Corporation)"
+)
+public class CouponCardConvertImpl implements CouponCardConvert {
+
+ @Override
+ public List convertToBO(List cardList) {
+ if ( cardList == null ) {
+ return null;
+ }
+
+ List list = new ArrayList( cardList.size() );
+ for ( CouponCardDO couponCardDO : cardList ) {
+ list.add( convert( couponCardDO ) );
+ }
+
+ return list;
+ }
+
+ @Override
+ public CouponCardBO convert(CouponCardDO card) {
+ if ( card == null ) {
+ return null;
+ }
+
+ CouponCardBO couponCardBO = new CouponCardBO();
+
+ couponCardBO.setId( card.getId() );
+ couponCardBO.setTemplateId( card.getTemplateId() );
+ couponCardBO.setTitle( card.getTitle() );
+ couponCardBO.setStatus( card.getStatus() );
+ couponCardBO.setUserId( card.getUserId() );
+ couponCardBO.setTakeType( card.getTakeType() );
+ couponCardBO.setPriceAvailable( card.getPriceAvailable() );
+ couponCardBO.setValidStartTime( card.getValidStartTime() );
+ couponCardBO.setValidEndTime( card.getValidEndTime() );
+ couponCardBO.setPreferentialType( card.getPreferentialType() );
+ couponCardBO.setPercentOff( card.getPercentOff() );
+ couponCardBO.setPriceOff( card.getPriceOff() );
+ couponCardBO.setDiscountPriceLimit( card.getDiscountPriceLimit() );
+ couponCardBO.setUsedTime( card.getUsedTime() );
+ couponCardBO.setCreateTime( card.getCreateTime() );
+
+ return couponCardBO;
+ }
+
+ @Override
+ public CouponCardDetailBO convert2(CouponCardDO card) {
+ if ( card == null ) {
+ return null;
+ }
+
+ CouponCardDetailBO couponCardDetailBO = new CouponCardDetailBO();
+
+ couponCardDetailBO.setId( card.getId() );
+ couponCardDetailBO.setTemplateId( card.getTemplateId() );
+ couponCardDetailBO.setTitle( card.getTitle() );
+ couponCardDetailBO.setStatus( card.getStatus() );
+ couponCardDetailBO.setUserId( card.getUserId() );
+ couponCardDetailBO.setTakeType( card.getTakeType() );
+ couponCardDetailBO.setPriceAvailable( card.getPriceAvailable() );
+ couponCardDetailBO.setValidStartTime( card.getValidStartTime() );
+ couponCardDetailBO.setValidEndTime( card.getValidEndTime() );
+ couponCardDetailBO.setPreferentialType( card.getPreferentialType() );
+ couponCardDetailBO.setPercentOff( card.getPercentOff() );
+ couponCardDetailBO.setPriceOff( card.getPriceOff() );
+ couponCardDetailBO.setDiscountPriceLimit( card.getDiscountPriceLimit() );
+ couponCardDetailBO.setUsedTime( card.getUsedTime() );
+ couponCardDetailBO.setCreateTime( card.getCreateTime() );
+
+ return couponCardDetailBO;
+ }
+
+ @Override
+ public CouponCardAvailableBO convert2(CouponCardDO card, boolean x) {
+ if ( card == null ) {
+ return null;
+ }
+
+ CouponCardAvailableBO couponCardAvailableBO = new CouponCardAvailableBO();
+
+ if ( card != null ) {
+ couponCardAvailableBO.setId( card.getId() );
+ couponCardAvailableBO.setTemplateId( card.getTemplateId() );
+ couponCardAvailableBO.setTitle( card.getTitle() );
+ couponCardAvailableBO.setStatus( card.getStatus() );
+ couponCardAvailableBO.setUserId( card.getUserId() );
+ couponCardAvailableBO.setTakeType( card.getTakeType() );
+ couponCardAvailableBO.setPriceAvailable( card.getPriceAvailable() );
+ couponCardAvailableBO.setValidStartTime( card.getValidStartTime() );
+ couponCardAvailableBO.setValidEndTime( card.getValidEndTime() );
+ couponCardAvailableBO.setPreferentialType( card.getPreferentialType() );
+ couponCardAvailableBO.setPercentOff( card.getPercentOff() );
+ couponCardAvailableBO.setPriceOff( card.getPriceOff() );
+ couponCardAvailableBO.setDiscountPriceLimit( card.getDiscountPriceLimit() );
+ couponCardAvailableBO.setUsedTime( card.getUsedTime() );
+ couponCardAvailableBO.setCreateTime( card.getCreateTime() );
+ }
+
+ return couponCardAvailableBO;
+ }
+}
diff --git a/promotion/promotion-service-impl/target/generated-sources/annotations/cn/iocoder/mall/promotion/biz/convert/CouponTemplateConvertImpl.java b/promotion/promotion-service-impl/target/generated-sources/annotations/cn/iocoder/mall/promotion/biz/convert/CouponTemplateConvertImpl.java
new file mode 100644
index 000000000..91e53f6c8
--- /dev/null
+++ b/promotion/promotion-service-impl/target/generated-sources/annotations/cn/iocoder/mall/promotion/biz/convert/CouponTemplateConvertImpl.java
@@ -0,0 +1,135 @@
+package cn.iocoder.mall.promotion.biz.convert;
+
+import cn.iocoder.mall.promotion.api.bo.CouponTemplateBO;
+import cn.iocoder.mall.promotion.api.dto.CouponCardTemplateAddDTO;
+import cn.iocoder.mall.promotion.api.dto.CouponCardTemplateUpdateDTO;
+import cn.iocoder.mall.promotion.api.dto.CouponCodeTemplateAddDTO;
+import cn.iocoder.mall.promotion.api.dto.CouponCodeTemplateUpdateDTO;
+import cn.iocoder.mall.promotion.biz.dataobject.CouponTemplateDO;
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.Generated;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2019-05-24T11:38:52+0800",
+ comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_121 (Oracle Corporation)"
+)
+public class CouponTemplateConvertImpl implements CouponTemplateConvert {
+
+ @Override
+ public List convertToBO(List templateList) {
+ if ( templateList == null ) {
+ return null;
+ }
+
+ List list = new ArrayList( templateList.size() );
+ for ( CouponTemplateDO couponTemplateDO : templateList ) {
+ list.add( convert( couponTemplateDO ) );
+ }
+
+ return list;
+ }
+
+ @Override
+ public CouponTemplateDO convert(CouponCodeTemplateUpdateDTO template) {
+ if ( template == null ) {
+ return null;
+ }
+
+ CouponTemplateDO couponTemplateDO = new CouponTemplateDO();
+
+ return couponTemplateDO;
+ }
+
+ @Override
+ public CouponTemplateDO convert(CouponCardTemplateAddDTO template) {
+ if ( template == null ) {
+ return null;
+ }
+
+ CouponTemplateDO couponTemplateDO = new CouponTemplateDO();
+
+ couponTemplateDO.setTitle( template.getTitle() );
+ couponTemplateDO.setDescription( template.getDescription() );
+ couponTemplateDO.setQuota( template.getQuota() );
+ couponTemplateDO.setTotal( template.getTotal() );
+ couponTemplateDO.setPriceAvailable( template.getPriceAvailable() );
+ couponTemplateDO.setRangeType( template.getRangeType() );
+ couponTemplateDO.setRangeValues( template.getRangeValues() );
+ couponTemplateDO.setDateType( template.getDateType() );
+ couponTemplateDO.setValidStartTime( template.getValidStartTime() );
+ couponTemplateDO.setValidEndTime( template.getValidEndTime() );
+ couponTemplateDO.setFixedEndTerm( template.getFixedEndTerm() );
+ couponTemplateDO.setPreferentialType( template.getPreferentialType() );
+ couponTemplateDO.setPercentOff( template.getPercentOff() );
+ couponTemplateDO.setPriceOff( template.getPriceOff() );
+ couponTemplateDO.setDiscountPriceLimit( template.getDiscountPriceLimit() );
+
+ return couponTemplateDO;
+ }
+
+ @Override
+ public CouponTemplateDO convert(CouponCardTemplateUpdateDTO template) {
+ if ( template == null ) {
+ return null;
+ }
+
+ CouponTemplateDO couponTemplateDO = new CouponTemplateDO();
+
+ couponTemplateDO.setId( template.getId() );
+ couponTemplateDO.setTitle( template.getTitle() );
+ couponTemplateDO.setDescription( template.getDescription() );
+ couponTemplateDO.setQuota( template.getQuota() );
+ couponTemplateDO.setTotal( template.getTotal() );
+ couponTemplateDO.setRangeType( template.getRangeType() );
+ couponTemplateDO.setRangeValues( template.getRangeValues() );
+
+ return couponTemplateDO;
+ }
+
+ @Override
+ public CouponTemplateDO convert(CouponCodeTemplateAddDTO template) {
+ if ( template == null ) {
+ return null;
+ }
+
+ CouponTemplateDO couponTemplateDO = new CouponTemplateDO();
+
+ return couponTemplateDO;
+ }
+
+ @Override
+ public CouponTemplateBO convert(CouponTemplateDO template) {
+ if ( template == null ) {
+ return null;
+ }
+
+ CouponTemplateBO couponTemplateBO = new CouponTemplateBO();
+
+ couponTemplateBO.setId( template.getId() );
+ couponTemplateBO.setTitle( template.getTitle() );
+ couponTemplateBO.setDescription( template.getDescription() );
+ couponTemplateBO.setType( template.getType() );
+ couponTemplateBO.setCodeType( template.getCodeType() );
+ couponTemplateBO.setStatus( template.getStatus() );
+ couponTemplateBO.setQuota( template.getQuota() );
+ couponTemplateBO.setTotal( template.getTotal() );
+ couponTemplateBO.setPriceAvailable( template.getPriceAvailable() );
+ couponTemplateBO.setRangeType( template.getRangeType() );
+ couponTemplateBO.setRangeValues( template.getRangeValues() );
+ couponTemplateBO.setDateType( template.getDateType() );
+ couponTemplateBO.setValidStartTime( template.getValidStartTime() );
+ couponTemplateBO.setValidEndTime( template.getValidEndTime() );
+ couponTemplateBO.setFixedStartTerm( template.getFixedStartTerm() );
+ couponTemplateBO.setFixedEndTerm( template.getFixedEndTerm() );
+ couponTemplateBO.setPreferentialType( template.getPreferentialType() );
+ couponTemplateBO.setPercentOff( template.getPercentOff() );
+ couponTemplateBO.setPriceOff( template.getPriceOff() );
+ couponTemplateBO.setDiscountPriceLimit( template.getDiscountPriceLimit() );
+ couponTemplateBO.setStatFetchNum( template.getStatFetchNum() );
+ couponTemplateBO.setCreateTime( template.getCreateTime() );
+
+ return couponTemplateBO;
+ }
+}
diff --git a/promotion/promotion-service-impl/target/generated-sources/annotations/cn/iocoder/mall/promotion/biz/convert/ProductRecommendConvertImpl.java b/promotion/promotion-service-impl/target/generated-sources/annotations/cn/iocoder/mall/promotion/biz/convert/ProductRecommendConvertImpl.java
new file mode 100644
index 000000000..9afaf0360
--- /dev/null
+++ b/promotion/promotion-service-impl/target/generated-sources/annotations/cn/iocoder/mall/promotion/biz/convert/ProductRecommendConvertImpl.java
@@ -0,0 +1,83 @@
+package cn.iocoder.mall.promotion.biz.convert;
+
+import cn.iocoder.mall.promotion.api.bo.ProductRecommendBO;
+import cn.iocoder.mall.promotion.api.dto.ProductRecommendAddDTO;
+import cn.iocoder.mall.promotion.api.dto.ProductRecommendUpdateDTO;
+import cn.iocoder.mall.promotion.biz.dataobject.ProductRecommendDO;
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.Generated;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2019-05-24T11:38:52+0800",
+ comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_121 (Oracle Corporation)"
+)
+public class ProductRecommendConvertImpl implements ProductRecommendConvert {
+
+ @Override
+ public ProductRecommendBO convertToBO(ProductRecommendDO recommend) {
+ if ( recommend == null ) {
+ return null;
+ }
+
+ ProductRecommendBO productRecommendBO = new ProductRecommendBO();
+
+ productRecommendBO.setId( recommend.getId() );
+ productRecommendBO.setType( recommend.getType() );
+ productRecommendBO.setProductSpuId( recommend.getProductSpuId() );
+ productRecommendBO.setSort( recommend.getSort() );
+ productRecommendBO.setStatus( recommend.getStatus() );
+ productRecommendBO.setMemo( recommend.getMemo() );
+ productRecommendBO.setCreateTime( recommend.getCreateTime() );
+
+ return productRecommendBO;
+ }
+
+ @Override
+ public List convertToBO(List recommendList) {
+ if ( recommendList == null ) {
+ return null;
+ }
+
+ List list = new ArrayList( recommendList.size() );
+ for ( ProductRecommendDO productRecommendDO : recommendList ) {
+ list.add( convertToBO( productRecommendDO ) );
+ }
+
+ return list;
+ }
+
+ @Override
+ public ProductRecommendDO convert(ProductRecommendAddDTO recommendAddDTO) {
+ if ( recommendAddDTO == null ) {
+ return null;
+ }
+
+ ProductRecommendDO productRecommendDO = new ProductRecommendDO();
+
+ productRecommendDO.setType( recommendAddDTO.getType() );
+ productRecommendDO.setProductSpuId( recommendAddDTO.getProductSpuId() );
+ productRecommendDO.setSort( recommendAddDTO.getSort() );
+ productRecommendDO.setMemo( recommendAddDTO.getMemo() );
+
+ return productRecommendDO;
+ }
+
+ @Override
+ public ProductRecommendDO convert(ProductRecommendUpdateDTO recommendUpdateDTO) {
+ if ( recommendUpdateDTO == null ) {
+ return null;
+ }
+
+ ProductRecommendDO productRecommendDO = new ProductRecommendDO();
+
+ productRecommendDO.setId( recommendUpdateDTO.getId() );
+ productRecommendDO.setType( recommendUpdateDTO.getType() );
+ productRecommendDO.setProductSpuId( recommendUpdateDTO.getProductSpuId() );
+ productRecommendDO.setSort( recommendUpdateDTO.getSort() );
+ productRecommendDO.setMemo( recommendUpdateDTO.getMemo() );
+
+ return productRecommendDO;
+ }
+}
diff --git a/promotion/promotion-service-impl/target/generated-sources/annotations/cn/iocoder/mall/promotion/biz/convert/PromotionActivityConvertImpl.java b/promotion/promotion-service-impl/target/generated-sources/annotations/cn/iocoder/mall/promotion/biz/convert/PromotionActivityConvertImpl.java
new file mode 100644
index 000000000..995e203b0
--- /dev/null
+++ b/promotion/promotion-service-impl/target/generated-sources/annotations/cn/iocoder/mall/promotion/biz/convert/PromotionActivityConvertImpl.java
@@ -0,0 +1,139 @@
+package cn.iocoder.mall.promotion.biz.convert;
+
+import cn.iocoder.mall.promotion.api.bo.PromotionActivityBO;
+import cn.iocoder.mall.promotion.api.bo.PromotionActivityBO.FullPrivilege.Privilege;
+import cn.iocoder.mall.promotion.api.bo.PromotionActivityBO.TimeLimitedDiscount;
+import cn.iocoder.mall.promotion.biz.dataobject.PromotionActivityDO;
+import cn.iocoder.mall.promotion.biz.dataobject.PromotionActivityDO.FullPrivilege;
+import cn.iocoder.mall.promotion.biz.dataobject.PromotionActivityDO.TimeLimitedDiscount.Item;
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.Generated;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2019-05-24T11:38:52+0800",
+ comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_121 (Oracle Corporation)"
+)
+public class PromotionActivityConvertImpl implements PromotionActivityConvert {
+
+ @Override
+ public PromotionActivityBO convertToBO(PromotionActivityDO activity) {
+ if ( activity == null ) {
+ return null;
+ }
+
+ PromotionActivityBO promotionActivityBO = new PromotionActivityBO();
+
+ promotionActivityBO.setId( activity.getId() );
+ promotionActivityBO.setTitle( activity.getTitle() );
+ promotionActivityBO.setActivityType( activity.getActivityType() );
+ promotionActivityBO.setStatus( activity.getStatus() );
+ promotionActivityBO.setStartTime( activity.getStartTime() );
+ promotionActivityBO.setEndTime( activity.getEndTime() );
+ promotionActivityBO.setTimeLimitedDiscount( timeLimitedDiscountToTimeLimitedDiscount( activity.getTimeLimitedDiscount() ) );
+ promotionActivityBO.setFullPrivilege( fullPrivilegeToFullPrivilege( activity.getFullPrivilege() ) );
+
+ return promotionActivityBO;
+ }
+
+ @Override
+ public List convertToBO(List activityList) {
+ if ( activityList == null ) {
+ return null;
+ }
+
+ List list = new ArrayList( activityList.size() );
+ for ( PromotionActivityDO promotionActivityDO : activityList ) {
+ list.add( convertToBO( promotionActivityDO ) );
+ }
+
+ return list;
+ }
+
+ protected cn.iocoder.mall.promotion.api.bo.PromotionActivityBO.TimeLimitedDiscount.Item itemToItem(Item item) {
+ if ( item == null ) {
+ return null;
+ }
+
+ cn.iocoder.mall.promotion.api.bo.PromotionActivityBO.TimeLimitedDiscount.Item item1 = new cn.iocoder.mall.promotion.api.bo.PromotionActivityBO.TimeLimitedDiscount.Item();
+
+ item1.setSpuId( item.getSpuId() );
+ item1.setPreferentialType( item.getPreferentialType() );
+ item1.setPreferentialValue( item.getPreferentialValue() );
+
+ return item1;
+ }
+
+ protected List itemListToItemList(List
- list) {
+ if ( list == null ) {
+ return null;
+ }
+
+ List list1 = new ArrayList( list.size() );
+ for ( Item item : list ) {
+ list1.add( itemToItem( item ) );
+ }
+
+ return list1;
+ }
+
+ protected TimeLimitedDiscount timeLimitedDiscountToTimeLimitedDiscount(cn.iocoder.mall.promotion.biz.dataobject.PromotionActivityDO.TimeLimitedDiscount timeLimitedDiscount) {
+ if ( timeLimitedDiscount == null ) {
+ return null;
+ }
+
+ TimeLimitedDiscount timeLimitedDiscount1 = new TimeLimitedDiscount();
+
+ timeLimitedDiscount1.setQuota( timeLimitedDiscount.getQuota() );
+ timeLimitedDiscount1.setItems( itemListToItemList( timeLimitedDiscount.getItems() ) );
+
+ return timeLimitedDiscount1;
+ }
+
+ protected Privilege privilegeToPrivilege(cn.iocoder.mall.promotion.biz.dataobject.PromotionActivityDO.FullPrivilege.Privilege privilege) {
+ if ( privilege == null ) {
+ return null;
+ }
+
+ Privilege privilege1 = new Privilege();
+
+ privilege1.setMeetType( privilege.getMeetType() );
+ privilege1.setMeetValue( privilege.getMeetValue() );
+ privilege1.setPreferentialType( privilege.getPreferentialType() );
+ privilege1.setPreferentialValue( privilege.getPreferentialValue() );
+
+ return privilege1;
+ }
+
+ protected List privilegeListToPrivilegeList(List list) {
+ if ( list == null ) {
+ return null;
+ }
+
+ List list1 = new ArrayList( list.size() );
+ for ( cn.iocoder.mall.promotion.biz.dataobject.PromotionActivityDO.FullPrivilege.Privilege privilege : list ) {
+ list1.add( privilegeToPrivilege( privilege ) );
+ }
+
+ return list1;
+ }
+
+ protected cn.iocoder.mall.promotion.api.bo.PromotionActivityBO.FullPrivilege fullPrivilegeToFullPrivilege(FullPrivilege fullPrivilege) {
+ if ( fullPrivilege == null ) {
+ return null;
+ }
+
+ cn.iocoder.mall.promotion.api.bo.PromotionActivityBO.FullPrivilege fullPrivilege1 = new cn.iocoder.mall.promotion.api.bo.PromotionActivityBO.FullPrivilege();
+
+ fullPrivilege1.setRangeType( fullPrivilege.getRangeType() );
+ List list = fullPrivilege.getRangeValues();
+ if ( list != null ) {
+ fullPrivilege1.setRangeValues( new ArrayList( list ) );
+ }
+ fullPrivilege1.setCycled( fullPrivilege.getCycled() );
+ fullPrivilege1.setPrivileges( privilegeListToPrivilegeList( fullPrivilege.getPrivileges() ) );
+
+ return fullPrivilege1;
+ }
+}
diff --git a/search/search-application/target/classes/application-test.yaml b/search/search-application/target/classes/application-test.yaml
new file mode 100644
index 000000000..e3581327f
--- /dev/null
+++ b/search/search-application/target/classes/application-test.yaml
@@ -0,0 +1,6 @@
+swagger:
+ enable: true
+ title: 搜索子系统
+ description: 搜索子系统
+ version: 1.0.0
+ base-package: cn.iocoder.mall.search.application.controller
diff --git a/search/search-application/target/classes/application.yaml b/search/search-application/target/classes/application.yaml
new file mode 100644
index 000000000..9f54ec3e5
--- /dev/null
+++ b/search/search-application/target/classes/application.yaml
@@ -0,0 +1,29 @@
+spring:
+ application:
+ name: search-application
+ cloud:
+ sentinel:
+ transport:
+ port: 8719
+ dashboard: localhost:12088
+ metric:
+ charset: UTF-8
+ eager: false
+
+# server
+server:
+ port: 18086
+ servlet:
+ context-path: /search-api/
+
+swagger:
+ enable: false
+
+
+management:
+ endpoints:
+ web:
+ exposure:
+ include: health,info,env,metrics,prometheus
+ metrics:
+ enabled: true
diff --git a/search/search-service-impl/target/classes/config/application-test.yaml b/search/search-service-impl/target/classes/config/application-test.yaml
new file mode 100644
index 000000000..5e48f70bf
--- /dev/null
+++ b/search/search-service-impl/target/classes/config/application-test.yaml
@@ -0,0 +1,14 @@
+# es
+spring:
+ data:
+ elasticsearch:
+ cluster-name: elasticsearch
+ cluster-nodes: 192.168.88.14:9300
+ repositories:
+ enable: true
+
+# rocketmq
+rocketmq:
+ name-server: 192.168.88.14:9876
+ producer:
+ group: search-producer-group
diff --git a/search/search-service-impl/target/classes/config/application.yaml b/search/search-service-impl/target/classes/config/application.yaml
new file mode 100644
index 000000000..e58d6f5fe
--- /dev/null
+++ b/search/search-service-impl/target/classes/config/application.yaml
@@ -0,0 +1,37 @@
+# es
+spring:
+ data:
+ elasticsearch:
+ cluster-name: elasticsearch
+ cluster-nodes: 180.167.213.26:9300
+ repositories:
+ enable: true
+
+# dubbo
+dubbo:
+ application:
+ name: search-service
+ registry:
+ address: zookeeper://127.0.0.1:2181
+ protocol:
+ port: -1
+ name: dubbo
+ scan:
+ base-packages: cn.iocoder.mall.search.biz.service
+ provider:
+ filter: -exception
+ ProductSearchService:
+ version: 1.0.0
+ consumer:
+ ProductSpuService:
+ version: 1.0.0
+ ProductCategoryService:
+ version: 1.0.0
+ CartService:
+ version: 1.0.0
+
+# rocketmq
+rocketmq:
+ name-server: 127.0.0.1:9876
+ producer:
+ group: search-producer-group
diff --git a/search/search-service-impl/target/generated-sources/annotations/cn/iocoder/mall/search/biz/convert/ProductSearchConvertImpl.java b/search/search-service-impl/target/generated-sources/annotations/cn/iocoder/mall/search/biz/convert/ProductSearchConvertImpl.java
new file mode 100644
index 000000000..a8d07df70
--- /dev/null
+++ b/search/search-service-impl/target/generated-sources/annotations/cn/iocoder/mall/search/biz/convert/ProductSearchConvertImpl.java
@@ -0,0 +1,83 @@
+package cn.iocoder.mall.search.biz.convert;
+
+import cn.iocoder.mall.product.api.bo.ProductSpuDetailBO;
+import cn.iocoder.mall.search.api.bo.ProductBO;
+import cn.iocoder.mall.search.biz.dataobject.ESProductDO;
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.Generated;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2019-05-24T11:39:12+0800",
+ comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_121 (Oracle Corporation)"
+)
+public class ProductSearchConvertImpl implements ProductSearchConvert {
+
+ @Override
+ public ESProductDO convert(ProductSpuDetailBO spu) {
+ if ( spu == null ) {
+ return null;
+ }
+
+ ESProductDO eSProductDO = new ESProductDO();
+
+ eSProductDO.setId( spu.getId() );
+ eSProductDO.setName( spu.getName() );
+ eSProductDO.setSellPoint( spu.getSellPoint() );
+ eSProductDO.setDescription( spu.getDescription() );
+ eSProductDO.setCid( spu.getCid() );
+ eSProductDO.setCategoryName( spu.getCategoryName() );
+ List list = spu.getPicUrls();
+ if ( list != null ) {
+ eSProductDO.setPicUrls( new ArrayList( list ) );
+ }
+ eSProductDO.setVisible( spu.getVisible() );
+ eSProductDO.setSort( spu.getSort() );
+
+ return eSProductDO;
+ }
+
+ @Override
+ public List convert(List list) {
+ if ( list == null ) {
+ return null;
+ }
+
+ List list1 = new ArrayList( list.size() );
+ for ( ESProductDO eSProductDO : list ) {
+ list1.add( eSProductDOToProductBO( eSProductDO ) );
+ }
+
+ return list1;
+ }
+
+ protected ProductBO eSProductDOToProductBO(ESProductDO eSProductDO) {
+ if ( eSProductDO == null ) {
+ return null;
+ }
+
+ ProductBO productBO = new ProductBO();
+
+ productBO.setId( eSProductDO.getId() );
+ productBO.setName( eSProductDO.getName() );
+ productBO.setSellPoint( eSProductDO.getSellPoint() );
+ productBO.setDescription( eSProductDO.getDescription() );
+ productBO.setCid( eSProductDO.getCid() );
+ productBO.setCategoryName( eSProductDO.getCategoryName() );
+ List list = eSProductDO.getPicUrls();
+ if ( list != null ) {
+ productBO.setPicUrls( new ArrayList( list ) );
+ }
+ productBO.setVisible( eSProductDO.getVisible() );
+ productBO.setSort( eSProductDO.getSort() );
+ productBO.setOriginalPrice( eSProductDO.getOriginalPrice() );
+ productBO.setBuyPrice( eSProductDO.getBuyPrice() );
+ productBO.setQuantity( eSProductDO.getQuantity() );
+ productBO.setPromotionActivityId( eSProductDO.getPromotionActivityId() );
+ productBO.setPromotionActivityTitle( eSProductDO.getPromotionActivityTitle() );
+ productBO.setPromotionActivityType( eSProductDO.getPromotionActivityType() );
+
+ return productBO;
+ }
+}
diff --git a/system/system-application/target/classes/application-test.yaml b/system/system-application/target/classes/application-test.yaml
new file mode 100644
index 000000000..58f89a7cc
--- /dev/null
+++ b/system/system-application/target/classes/application-test.yaml
@@ -0,0 +1,18 @@
+spring:
+ boot:
+ admin:
+ client:
+ enabled: false # 暂时不用了
+ url: http://127.0.0.1:18097
+
+
+#management:
+# endpoints:
+# web:
+# exposure:
+# include: "*"
+# server:
+# port: 19083 # 配置独立端口。而该端口,不使用 nginx 对外暴露,从而不配置安全认证。也就是说,内网环境可访问,外网环境不可访问。当然,这么做的前提是,认为内网安全。
+
+swagger:
+ enable: true # 暂时不去掉
diff --git a/system/system-application/target/classes/application.yaml b/system/system-application/target/classes/application.yaml
new file mode 100644
index 000000000..4e8c8a8b1
--- /dev/null
+++ b/system/system-application/target/classes/application.yaml
@@ -0,0 +1,42 @@
+spring:
+ application:
+ name: admin-application
+ cloud:
+ sentinel:
+ transport:
+ port: 8719
+ dashboard: localhost:12088
+ metric:
+ charset: UTF-8
+ eager: false
+
+# server
+server:
+ port: 18083
+ servlet:
+ context-path: /admin-api/
+
+admins:
+ security:
+ ignore_urls: /admin-api/admins/passport/login, /admin-api/admins/file/get_qiniu_token
+
+# qiniu
+qiniu:
+ access-key: YldfyUC7OewoWM63TPYTairqnq8GMJvNek9EGoID
+ secret-key: zZ7Q8wwZRyaklVvkyLmVydA4WygOBqtc_gTYzalS
+ bucket: onemall
+
+swagger:
+ enable: true # 暂时不去掉
+ title: 管理员子系统
+ description: 管理员子系统
+ version: 1.0.0
+ base-package: cn.iocoder.mall.admin.application.controller
+
+management:
+ endpoints:
+ web:
+ exposure:
+ include: health,info,env,metrics,prometheus
+ metrics:
+ enabled: true
diff --git a/system/system-application/target/generated-sources/annotations/cn/iocoder/mall/admin/application/convert/AdminConvertImpl.java b/system/system-application/target/generated-sources/annotations/cn/iocoder/mall/admin/application/convert/AdminConvertImpl.java
new file mode 100644
index 000000000..3d45b22b3
--- /dev/null
+++ b/system/system-application/target/generated-sources/annotations/cn/iocoder/mall/admin/application/convert/AdminConvertImpl.java
@@ -0,0 +1,155 @@
+package cn.iocoder.mall.admin.application.convert;
+
+import cn.iocoder.common.framework.vo.CommonResult;
+import cn.iocoder.common.framework.vo.PageResult;
+import cn.iocoder.mall.admin.api.bo.admin.AdminBO;
+import cn.iocoder.mall.admin.api.bo.role.RoleBO;
+import cn.iocoder.mall.admin.application.vo.admin.AdminInfoVO;
+import cn.iocoder.mall.admin.application.vo.admin.AdminRoleVO;
+import cn.iocoder.mall.admin.application.vo.admin.AdminVO;
+import cn.iocoder.mall.admin.application.vo.admin.AdminVO.Role;
+import cn.iocoder.mall.admin.sdk.context.AdminSecurityContext;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import javax.annotation.Generated;
+
+@Generated(
+ value = "org.mapstruct.ap.MappingProcessor",
+ date = "2019-05-31T18:11:49+0800",
+ comments = "version: 1.3.0.Final, compiler: javac, environment: Java 1.8.0_121 (Oracle Corporation)"
+)
+public class AdminConvertImpl implements AdminConvert {
+
+ @Override
+ public AdminInfoVO convert(AdminSecurityContext adminSecurityContext) {
+ if ( adminSecurityContext == null ) {
+ return null;
+ }
+
+ AdminInfoVO adminInfoVO = new AdminInfoVO();
+
+ adminInfoVO.setAdminId( adminSecurityContext.getAdminId() );
+ Set set = adminSecurityContext.getRoleIds();
+ if ( set != null ) {
+ adminInfoVO.setRoleIds( new HashSet( set ) );
+ }
+
+ return adminInfoVO;
+ }
+
+ @Override
+ public AdminVO convert(AdminBO adminBO) {
+ if ( adminBO == null ) {
+ return null;
+ }
+
+ AdminVO adminVO = new AdminVO();
+
+ adminVO.setId( adminBO.getId() );
+ adminVO.setUsername( adminBO.getUsername() );
+ adminVO.setNickname( adminBO.getNickname() );
+ adminVO.setStatus( adminBO.getStatus() );
+ adminVO.setCreateTime( adminBO.getCreateTime() );
+
+ return adminVO;
+ }
+
+ @Override
+ public CommonResult convert2(CommonResult result) {
+ if ( result == null ) {
+ return null;
+ }
+
+ CommonResult