pull/1/head
wangtongzhou 2019-06-01 18:20:00 +08:00
commit fe2305df17
158 changed files with 10975 additions and 3 deletions

View File

@ -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

View File

@ -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': '',

View File

@ -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,
};
}
},
};

View File

@ -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 <img width={120} src={val} />;},
},
{
title: '',
dataIndex: 'status',
render(val) {return <span>{status[val]}</span>;},
},
{
title: '',
dataIndex: 'createTime',
render: val => <span>{moment(val).format('YYYY-MM-DD')}</span>,
},
{
title: '',
width: 200,
render: (text, record) => {
const statusText = record.status === 1 ? '' : '';
return (
<Fragment>
<a onClick={() => handleModalVisible(true, 'update', record)}></a>
<Divider type="vertical"/>
<a className={styles.tableDelete} onClick={() => handleStatus(record)}>{statusText}</a>
<Divider type="vertical"/>
<a className={styles.tableDelete} onClick={() => handleDelete(record)}></a>
</Fragment>
);
},
},
];
return (
<div>
<Table
columns={columns}
dataSource={dataSource}
rowKey="id"
pagination={pagination}
onChange={onPageChange}
loading={loading} />
</div>
)
}
// 新建 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 (
<Modal
destroyOnClose
title={title}
visible={modalVisible}
onOk={okHandle}
okText={okText}
onCancel={() => handleModalVisible()}
>
<Spin spinning={loading}>
<FormItem labelCol={{ span: 5 }} wrapperCol={{ span: 15 }} label="品牌名称">
{form.getFieldDecorator('name', {
rules: [{ required: true, message: '', min: 2 }],
initialValue: formVals.name,
})(<Input placeholder="请输入" />)}
</FormItem>
<FormItem labelCol={{ span: 5 }} wrapperCol={{ span: 15 }} label="描述">
{form.getFieldDecorator('description', {
rules: [{ required: true, message: '' }],
initialValue: formVals.description,
})(<Input.TextArea placeholder="请输入" />)}
</FormItem>
</Spin>
</Modal>
);
});
// 搜索表单
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 (
<Form onSubmit={handleSubmit} layout="inline">
<Row gutter={{ md: 8, lg: 24, xl: 48 }}>
<Col md={8} sm={24}>
<FormItem label="品牌名称">
{getFieldDecorator('name')(<Input placeholder="请输入" />)}
</FormItem>
</Col>
<Col md={8} sm={24}>
<FormItem label="品牌描述">
{getFieldDecorator('description')(<Input placeholder="请输入" />)}
</FormItem>
</Col>
<Col md={8} sm={24}>
<span className={styles.submitButtons}>
<Button type="primary" htmlType="submit">
</Button>
<Button style={{ marginLeft: 8 }} onClick={handleReset}>
</Button>
</span>
</Col>
</Row>
</Form>
);
});
// 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 (
<PageHeaderWrapper>
<Card bordered={false}>
<div className={styles.tableList}>
<div className={styles.tableListOperator}>
<Button icon="plus" type="primary" onClick={() => this.handleModalVisible(true, 'add', {})} >
</Button>
</div>
</div>
<SearchForm {...searchFormProps} />
<List {...listProps} />
</Card>
<AddOrUpdateForm {...addOrUpdateFormProps} />
</PageHeaderWrapper>
);
}
}
export default ProductBrandList;

View File

@ -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'
});
}

View File

@ -88,6 +88,12 @@
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>

View File

@ -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());
}
}

View File

@ -0,0 +1,6 @@
swagger:
enable: true
title: 订单子系统
description: 订单子系统
version: 1.0.0
base-package: cn.iocoder.mall.pay.application.controller

View File

@ -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

View File

@ -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<String> list = spu.getPicUrls();
if ( list != null ) {
spu1.setPicUrls( new ArrayList<String>( 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<ProductAttrAndValuePairBO> list = item.getAttrs();
if ( list != null ) {
sku.setAttrs( new ArrayList<ProductAttrAndValuePairBO>( 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<Sku> itemListToSkuList(List<Item> list) {
if ( list == null ) {
return null;
}
List<Sku> list1 = new ArrayList<Sku>( 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<cn.iocoder.mall.order.application.vo.UsersOrderConfirmCreateVO.ItemGroup> itemGroupListToItemGroupList(List<ItemGroup> list) {
if ( list == null ) {
return null;
}
List<cn.iocoder.mall.order.application.vo.UsersOrderConfirmCreateVO.ItemGroup> list1 = new ArrayList<cn.iocoder.mall.order.application.vo.UsersOrderConfirmCreateVO.ItemGroup>( 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<String> list = spu.getPicUrls();
if ( list != null ) {
spu1.setPicUrls( new ArrayList<String>( 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<ProductAttrAndValuePairBO> list = item.getAttrs();
if ( list != null ) {
sku.setAttrs( new ArrayList<ProductAttrAndValuePairBO>( 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<cn.iocoder.mall.order.application.vo.UsersCartDetailVO.Sku> itemListToSkuList1(List<Item> list) {
if ( list == null ) {
return null;
}
List<cn.iocoder.mall.order.application.vo.UsersCartDetailVO.Sku> list1 = new ArrayList<cn.iocoder.mall.order.application.vo.UsersCartDetailVO.Sku>( 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<cn.iocoder.mall.order.application.vo.UsersCartDetailVO.ItemGroup> itemGroupListToItemGroupList1(List<ItemGroup> list) {
if ( list == null ) {
return null;
}
List<cn.iocoder.mall.order.application.vo.UsersCartDetailVO.ItemGroup> list1 = new ArrayList<cn.iocoder.mall.order.application.vo.UsersCartDetailVO.ItemGroup>( 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;
}
}

View File

@ -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<OrderItem> convert(List<CartItemBO> cartItems) {
if ( cartItems == null ) {
return null;
}
List<OrderItem> list = new ArrayList<OrderItem>( 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<OrderItem> orderItemListToOrderItemList(List<cn.iocoder.mall.order.application.po.user.OrderCreatePO.OrderItem> list) {
if ( list == null ) {
return null;
}
List<OrderItem> list1 = new ArrayList<OrderItem>( 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;
}
}

View File

@ -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<Integer> list = orderDeliverPO.getOrderItemIds();
if ( list != null ) {
orderDeliveryDTO.setOrderItemIds( new ArrayList<Integer>( list ) );
}
return orderDeliveryDTO;
}
}

View File

@ -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;
}
}

View File

@ -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}

View File

@ -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

View File

@ -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 = ""
}
}

View File

@ -0,0 +1,129 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.mall.order.biz.dao.CartMapper">
<sql id="FIELDS">
id, status, delete_time, selected, user_id,
spu_id, sku_id, quantity, order_id, order_create_time,
create_time
</sql>
<select id="selectById" parameterType="Integer" resultType="CartItemDO">
SELECT
<include refid="FIELDS" />
FROM cart_item
WHERE id = #{id}
-- AND deleted = 0
</select>
<select id="selectByIds" resultType="CartItemDO">
SELECT
<include refid="FIELDS" />
FROM cart_item
WHERE id IN
<foreach item="id" collection="ids" separator="," open="(" close=")" index="">
#{id}
</foreach>
-- AND deleted = 0
</select>
<select id="selectByUserIdAndSkuIdAndStatus" resultType="CartItemDO">
SELECT
<include refid="FIELDS" />
FROM cart_item
WHERE user_id = #{userId}
AND sku_id = #{skuId}
AND status = #{status}
-- AND deleted = 0
LIMIT 1
</select>
<select id="selectByUserIdAndStatusAndSelected" resultType="CartItemDO">
SELECT
<include refid="FIELDS" />
FROM cart_item
WHERE user_id = #{userId}
AND status = #{status}
<if test="selected != null">
AND selected = #{selected}
</if>
-- AND deleted = 0
</select>
<select id="selectQuantitySumByUserIdAndStatus" resultType="Integer">
SELECT
SUM(quantity)
FROM cart_item
WHERE user_id = #{userId}
AND status = #{status}
-- AND deleted = 0
</select>
<insert id="insert" parameterType="CartItemDO" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
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}
)
</insert>
<update id="update" parameterType="CartItemDO">
UPDATE cart_item
<set>
<if test="status != null">
status = #{status},
</if>
<if test="deleteTime != null">
delete_time = #{deleteTime},
</if>
<if test="selected != null">
selected = #{selected},
</if>
<if test="quantity != null">
quantity = #{quantity},
</if>
<if test="orderId != null">
order_id = #{orderId},
</if>
<if test="orderCreateTime != null">
order_create_time = #{orderCreateTime},
</if>
<if test="price != null">
price = #{price},
</if>
<if test="quantity != null">
quantity = #{quantity},
</if>
</set>
WHERE id = #{id}
</update>
<update id="updateQuantity" parameterType="CartItemDO">
UPDATE cart_item
SET quantity = quantity + #{quantityIncr}
WHERE id = #{id}
</update>
<update id="updateListByUserIdAndSkuId">
UPDATE cart_item
<set>
<if test="selected != null">
selected = #{selected},
</if>
<if test="status != null">
status = #{status},
</if>
</set>
WHERE user_id = #{userId}
AND sku_id IN
<foreach item="skuId" collection="skuIds" separator="," open="(" close=")" index="">
#{skuId}
</foreach>
-- AND deleted = 0
</update>
</mapper>

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.mall.order.biz.dao.OrderCancelMapper">
<sql id="FIELDS">
id, order_id, order_no, reason, other_reason,
create_time, update_time
</sql>
<!--
插入数据
-->
<insert id="insert" parameterType="OrderCancelDO" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
INSERT INTO `order_cancel` (
order_id, order_no, reason, other_reason,
create_time, update_time
) VALUES (
#{orderId}, #{orderNo}, #{reason}, #{otherReason},
#{createTime}, #{updateTime}
)
</insert>
</mapper>

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.mall.order.biz.dao.OrderCommentMapper">
<sql id="FIELDS">
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
</sql>
<!--插入-->
<insert id="insert" parameterType="OrderCommentDO" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
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});
</insert>
<!--根据 sku id 获取评论总数-->
<select id="selectCommentTotalCountByProductSkuId" parameterType="Integer" resultType="java.lang.Integer">
SELECT
COUNT (*)
FROM order_comment
WHERE
product_sku_id = #{productSkuId}
</select>
<!--分页获取评论分页-->
<select id="selectCommentPage" resultType="cn.iocoder.mall.order.biz.dataobject.OrderCommentDO">
SELECT
<include refid="FIELDS" />
FROM order_comment
WHERE
product_sku_id = #{productSkuId}
ORDER BY create_time DESC
LIMIT ${pageNo * pageSize}, ${pageSize}
</select>
<!--根据评论 id 获取用户详情-->
<select id="selectCommentInfoByCommentId" parameterType="Integer" resultType="cn.iocoder.mall.order.biz.dataobject.OrderCommentDO">
SELECT
<include refid="FIELDS" />
FROM order_comment
WHERE
id = #{id}
ORDER BY create_time DESC
LIMIT ${pageNo * pageSize}, ${pageSize}
</select>
</mapper>

View File

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.mall.order.biz.dao.OrderCommentReplayMapper">
<sql id="FIELDS">
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
</sql>
<!--插入-->
<insert id="insert" parameterType="OrderCommentReplyDO" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
<<<<<<< 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})
</insert>
<!--根据评论 id 和用户类型获取商家回复列表-->
<select id="selectCommentMerchantReplyByCommentId" resultType="cn.iocoder.mall.order.biz.dataobject.OrderCommentReplyDO">
SELECT
<include refid="FIELDS" />
FROM order_comment_replay
WHERE
comment_id = #{commentId}
AND
user_type = #{userType}
ORDER BY create_time DESC
</select>
<!--根据评论 id 和用户类型获取评论总数-->
<select id="selectCommentReplyTotalCountByCommentId" parameterType="Integer" resultType="java.lang.Integer">
SELECT
COUNT (*)
FROM order_comment_replay
WHERE
comment_id = #{commentId}
AND
user_type = #{userType}
</select>
<!--分页用户回复-->
<select id="selectCommentReplyPage" resultType="cn.iocoder.mall.order.biz.dataobject.OrderCommentReplyDO">
SELECT
<include refid="FIELDS" />
FROM order_comment_replay
WHERE
comment_id = #{commentId}
AND
user_type = #{userType}
ORDER BY create_time DESC
LIMIT ${pageNo * pageSize}, ${pageSize}
</select>
<<<<<<< Updated upstream
<!--根据评论 id 查询商家最新的评论列表-->
<select id="selectCommentNewMerchantReplyByCommentIds" resultType="cn.iocoder.mall.order.biz.dataobject.OrderCommentReplyDO">
</select>
=======
>>>>>>> Stashed changes
</mapper>

View File

@ -0,0 +1,172 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.mall.order.biz.dao.OrderItemMapper">
<sql id="FIELDS">
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
</sql>
<!--
插入数据
-->
<insert id="insert" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
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
<foreach collection="list" item="item" separator=",">
(#{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})
</foreach>
</insert>
<!--
更新 - 可更新的字段
-->
<sql id="updateFieldSql" >
<set>
<if test="orderItemDO.orderId != null">
, order_id = #{orderItemDO.orderId}
</if>
<if test="orderItemDO.orderNo != null">
, order_no = #{orderItemDO.orderNo}
</if>
<if test="orderItemDO.orderLogisticsId != null">
, order_logistics_id = #{orderItemDO.orderLogisticsId}
</if>
<if test="orderItemDO.skuId != null">
, sku_id = #{orderItemDO.skuId}
</if>
<if test="orderItemDO.skuName != null">
, sku_name = #{orderItemDO.skuName}
</if>
<if test="orderItemDO.skuImage != null">
, sku_image = #{orderItemDO.skuImage}
</if>
<if test="orderItemDO.quantity != null">
, quantity = #{orderItemDO.quantity}
</if>
<!-- TODO 芋艿 需要改 -->
<!-- <if test="orderItemDO.price != null">-->
<!-- , price = #{orderItemDO.price}-->
<!-- </if>-->
<!-- <if test="orderItemDO.payAmount != null">-->
<!-- , pay_amount = #{orderItemDO.payAmount}-->
<!-- </if>-->
<if test="orderItemDO.paymentTime != null">
, payment_time = #{orderItemDO.paymentTime}
</if>
<if test="orderItemDO.deliveryTime != null">
, delivery_time = #{orderItemDO.deliveryTime}
</if>
<if test="orderItemDO.receiverTime != null">
, receiver_time = #{orderItemDO.receiverTime}
</if>
<if test="orderItemDO.closingTime != null">
, closing_time = #{orderItemDO.closingTime}
</if>
<if test="orderItemDO.hasReturnExchange != null">
, has_return_exchange = #{orderItemDO.hasReturnExchange}
</if>
<if test="orderItemDO.status != null">
, status = #{orderItemDO.status}
</if>
<if test="orderItemDO.deliveryType != null">
, delivery_type = #{orderItemDO.deliveryType}
</if>
<if test="orderItemDO.deleted != null">
, `deleted` = #{orderItemDO.deleted}
</if>
<if test="orderItemDO.createTime != null">
, create_time = #{orderItemDO.createTime}
</if>
<if test="orderItemDO.updateTime != null">
, update_time = #{orderItemDO.updateTime}
</if>
</set>
</sql>
<!--
更新 - 根据 id 更新
-->
<update id="updateById" parameterType="OrderDO">
UPDATE `order_item`
<include refid="updateFieldSql" />
WHERE id = #{orderItemDO.id}
</update>
<!--
更新 - 根据 ids 更新
-->
<update id="updateByIds">
UPDATE `order_item`
<include refid="updateFieldSql" />
WHERE id IN
<foreach collection="ids" item="id" separator="," open="(" close=")">
#{id}
</foreach>
</update>
<!--
更新 - 根据 orderId
-->
<update id="updateByOrderId">
UPDATE `order_item`
<include refid="updateFieldSql" />
WHERE order_id = #{orderId}
</update>
<!--
获取 - 根据 ids 查询
-->
<select id="selectByIds" resultType="cn.iocoder.mall.order.biz.dataobject.OrderItemDO">
SELECT
<include refid="FIELDS" />
FROM order_item
WHERE `id` IN
<foreach collection="ids" item="id" separator="," open="(" close=")">
#{id}
</foreach>
</select>
<!--
查询 - 根据 orderId 下的 item
-->
<select id="selectByDeletedAndOrderId" resultType="cn.iocoder.mall.order.biz.dataobject.OrderItemDO">
SELECT * FROM `order_item`
WHERE 1=1
<if test="deleted != null">
AND deleted = #{deleted}
</if>
<if test="orderId != null">
AND order_id = #{orderId}
</if>
</select>
<!--
查询 - 根据 orderIds 和 status
-->
<select id="selectByDeletedAndOrderIds" resultType="cn.iocoder.mall.order.biz.dataobject.OrderItemDO">
SELECT
<include refid="FIELDS" />
FROM `order_item`
WHERE `deleted` = #{deleted}
AND `order_id`
IN
<foreach collection="orderIds" item="orderId" open="(" close=")" separator=",">
#{orderId}
</foreach>
</select>
</mapper>

View File

@ -0,0 +1,76 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.mall.order.biz.dao.OrderLogisticsDetailMapper">
<sql id="FIELDS">
id,
order_logistics_id,
logistics_time,
logistics_information,
create_time,
update_time
</sql>
<!--
插入
-->
<insert id="insert" parameterType="CartItemDO" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
INSERT INTO cart_item (order_logistics_id, logistics_time, logistics_information,
create_time, update_time)
VALUES (#{orderLogisticsId}, #{logisticsTime}, #{logisticsInformation},
#{createTime}, #{updateTime})
</insert>
<!--
查询 - 根据 物流id
-->
<select id="selectByOrderLogisticsId"
resultType="cn.iocoder.mall.order.biz.dataobject.OrderLogisticsDetailDO">
SELECT
<include refid="FIELDS"/>
FROM order_logistics_detail
WHERE order_logistics_id = #{orderLogisticsId}
</select>
<!--
查询 - 根据 物流ids
-->
<select id="selectByOrderLogisticsIds"
resultType="cn.iocoder.mall.order.biz.dataobject.OrderLogisticsDetailDO">
SELECT
<include refid="FIELDS"/>
FROM order_logistics_detail
WHERE order_logistics_id IN
<foreach collection="orderLogisticsIds" item="orderLogisticsId" separator="," open="(" close=")">
#{orderLogisticsId}
</foreach>
</select>
<!--
查询 - 最新的物流信息
-->
<select id="selectLast" resultType="cn.iocoder.mall.order.biz.dataobject.OrderLogisticsDetailDO">
SELECT
<include refid="FIELDS"/>
FROM order_logistics_detail
WHERE order_logistics_id IN
<foreach collection="orderLogisticsIds" item="orderLogisticsId" separator="," open="(" close=")">
#{orderLogisticsId}
</foreach>
ORDER BY create_time DESC
LIMIT 0, 1
</select>
<!--
查询 - 根据 last 根据物理id
-->
<select id="selectLastByLogisticsId"
resultType="cn.iocoder.mall.order.biz.dataobject.OrderLogisticsDetailDO">
SELECT
<include refid="FIELDS"/>
FROM order_logistics_detail
WHERE order_logistics_id = #{orderLogisticsId}
ORDER BY create_time DESC
LIMIT 1
</select>
</mapper>

View File

@ -0,0 +1,80 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.mall.order.biz.dao.OrderLogisticsMapper">
<sql id="FIELDS">
id, area_no, `name`, mobile, address, logistics, logistics_no, create_time, update_time
</sql>
<!--
插入数据
-->
<insert id="insert" parameterType="OrderLogisticsDO" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
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}
)
</insert>
<!--
可更新字段
-->
<sql id="updateFieldSql" >
<set>
<if test="areaNo != null">
, area_no = #{areaNo}
</if>
<if test="name != null">
, `name` = #{name}
</if>
<if test="mobile != null">
, mobile = #{mobile}
</if>
<if test="address != null">
, address = #{address}
</if>
<if test="logistics != null">
, logistics = #{logistics}
</if>
<if test="logisticsNo != null">
, logistics_no = #{logisticsNo}
</if>
</set>
</sql>
<!--
更新 - 根据id
-->
<update id="updateById">
UPDATE `order_logistics`
<include refid="updateFieldSql" />
WHERE id = #{id}
</update>
<!--
查询 - 根据 ids
-->
<select id="selectByIds" resultType="cn.iocoder.mall.order.biz.dataobject.OrderLogisticsDO">
SELECT
<include refid="FIELDS" />
FROM `order_logistics`
WHERE `id`
IN
<foreach collection="ids" item="id" separator="," open="(" close=")">
#{id}
</foreach>
</select>
<!--
查询 - 根据 ids
-->
<select id="selectById" resultType="cn.iocoder.mall.order.biz.dataobject.OrderLogisticsDO">
SELECT
<include refid="FIELDS" />
FROM `order_logistics`
WHERE `id` = #{id}
LIMIT 1
</select>
</mapper>

View File

@ -0,0 +1,141 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.mall.order.biz.dao.OrderMapper">
<sql id="FIELDS">
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`
</sql>
<sql id="updateFieldSql" >
<set>
<if test="orderNo != null">
, order_no = #{orderNo}
</if>
<if test="buyPrice != null">
, buy_price = #{buyPrice}
</if>
<if test="discountPrice != null">
, discount_price = #{discountPrice}
</if>
<if test="logisticsPrice != null">
, logistics_price = #{logisticsPrice}
</if>
<if test="logisticsPrice != null">
, logistics_price = #{logisticsPrice}
</if>
<if test="presentPrice != null">
, present_price = #{presentPrice}
</if>
<if test="payAmount != null">
, pay_amount = #{payAmount}
</if>
<if test="deliveryTime != null">
, delivery_time = #{deliveryTime}
</if>
<if test="paymentTime != null">
, payment_time = #{paymentTime}
</if>
<if test="receiverTime != null">
, receiver_time = #{receiverTime}
</if>
<if test="closingTime != null">
, closing_time = #{closingTime}
</if>
<if test="hasReturnExchange != null">
, has_return_exchange = #{hasReturnExchange}
</if>
<if test="status != null">
, status = #{status}
</if>
<if test="remark != null">
, remark = #{remark}
</if>
<if test="deleted != null">
, `deleted` = #{deleted}
</if>
<if test="createTime != null">
, create_time = #{createTime}
</if>
<if test="updateTime != null">
, update_time = #{updateTime}
</if>
</set>
</sql>
<update id="updateById" parameterType="OrderDO">
UPDATE `orders`
<include refid="updateFieldSql" />
WHERE id = #{id}
</update>
<update id="updateByIdAndStatus">
UPDATE `orders`
<set>
<if test="updateObj.payAmount != null">
, pay_amount = #{updateObj.payAmount}
</if>
<if test="updateObj.paymentTime != null">
, payment_time = #{updateObj.paymentTime}
</if>
<if test="updateObj.status != null">
, status = #{updateObj.status}
</if>
</set>
WHERE id = #{id}
AND status = #{status}
</update>
<select id="selectById" resultType="cn.iocoder.mall.order.biz.dataobject.OrderDO">
SELECT
<include refid="FIELDS" />
FROM `orders`
WHERE id = #{id}
</select>
<sql id="selectWhere">
<if test="status != null">
AND `status` = #{status}
</if>
<if test="userId != null">
AND `user_id` = #{userId}
</if>
<if test="id != null">
AND `id` = #{id}
</if>
<if test="orderNo != null">
AND `order_no` = #{orderNo}
</if>
<if test="hasReturnExchange != null">
AND `has_return_exchange` = #{hasReturnExchange}
</if>
<if test="startCreateTime != null and endCreateTime != null">
AND `create_time` &gt;= #{startCreateTime}
AND `create_time` &lt;= #{endCreateTime}
</if>
</sql>
<select id="selectPageCount" resultType="java.lang.Integer">
SELECT
COUNT(*)
FROM `orders`
<where>
<include refid="selectWhere" />
</where>
</select>
<select id="selectPage" resultType="cn.iocoder.mall.order.biz.dataobject.OrderDO">
SELECT
<include refid="FIELDS" />
FROM `orders`
<where>
<include refid="selectWhere" />
</where>
LIMIT ${pageNo * pageSize}, ${pageSize}
</select>
</mapper>

View File

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.mall.order.biz.dao.OrderRecipientMapper">
<sql id="FIELDS">
id, order_id, `area_no`, `name`, mobile, address, `type`,
create_time, update_time
</sql>
<!--
插入数据
-->
<insert id="insert" parameterType="OrderRecipientDO" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
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}
)
</insert>
<!--
查询 - 根据 orderId
-->
<select id="selectByOrderId" resultType="cn.iocoder.mall.order.biz.dataobject.OrderRecipientDO">
SELECT
<include refid="FIELDS" />
FROM `order_recipient`
WHERE order_id = #{orderId}
</select>
<!--
查询 - 根据 orderIds
-->
<select id="selectByOrderIds" resultType="cn.iocoder.mall.order.biz.dataobject.OrderRecipientDO">
SELECT
<include refid="FIELDS" />
FROM `order_recipient`
WHERE order_id IN
<foreach collection="orderIds" item="orderId" separator="," open="(" close=")">
#{orderId}
</foreach>
</select>
</mapper>

View File

@ -0,0 +1,165 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.mall.order.biz.dao.OrderReturnMapper">
<sql id="FIELDS">
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
</sql>
<!--
插入数据
-->
<insert id="insert" parameterType="OrderReturnDO" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
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})
</insert>
<!--
更新 - 可更新的字段
-->
<sql id="updateFieldSql">
<set>
<if test="orderLogisticsId != null">
, order_logistics_id = #{orderLogisticsId}
</if>
<if test="refundPrice != null">
, refund_price = #{refundPrice}
</if>
<if test="reason != null">
, reason = #{reason}
</if>
<if test="describe != null">
, `describe` = #{describe}
</if>
<if test="approvalTime != null">
, approval_time = #{approvalTime}
</if>
<if test="refuseTime != null">
, refuse_time = #{refuseTime}
</if>
<if test="logisticsTime != null">
, logistics_time = #{logisticsTime}
</if>
<if test="receiverTime != null">
, receiver_time = #{receiverTime}
</if>
<if test="closingTime != null">
, closing_time = #{closingTime}
</if>
<if test="serviceType != null">
, service_type = #{serviceType}
</if>
<if test="status != null">
, status = #{status}
</if>
<if test="createTime != null">
, create_time = #{createTime}
</if>
<if test="updateTime != null">
, update_time = #{updateTime}
</if>
</set>
</sql>
<!--
更新 - 根据 id 更新
-->
<update id="updateById" parameterType="OrderReturnDO">
UPDATE `order_return`
<include refid="updateFieldSql"/>
WHERE id = #{id}
</update>
<!--
查询 - 根据id 查询
-->
<select id="selectByOrderId" resultType="cn.iocoder.mall.order.biz.dataobject.OrderReturnDO">
SELECT
<include refid="FIELDS"/>
FROM `order_return`
WHERE order_id = #{orderId}
LIMIT 1
</select>
<!--
列表查询 - where
-->
<sql id="selectListWhere">
<if test="status != null">
AND status = #{status}
</if>
<if test="serviceNumber != null">
AND service_number = #{serviceNumber}
</if>
<if test="orderId != null">
AND order_id = #{orderId}
</if>
<if test="orderId != null">
AND order_no = #{orderNo}
</if>
<if test="startCreateTime != null and endCreateTime != null">
AND create_time &gt;= #{startCreateTime}
AND create_time &lt;= #{endCreateTime}
</if>
</sql>
<!--
列表查询 - count
-->
<select id="selectListCount" resultType="java.lang.Integer">
SELECT
COUNT(*)
FROM `order_return`
WHERE 1 = 1
<include refid="selectListWhere" />
</select>
<!--
列表查询 - queryDTO
-->
<select id="selectList" resultType="cn.iocoder.mall.order.biz.dataobject.OrderReturnDO">
SELECT
<include refid="FIELDS"/>
FROM `order_return`
WHERE 1 = 1
<include refid="selectListWhere" />
<bind name="limitIndex" value="pageSize * (index - 1)"/>
LIMIT #{limitIndex}, #{pageSize}
</select>
<!--
查询 - 根据 id 查询
-->
<select id="selectById" resultType="cn.iocoder.mall.order.biz.dataobject.OrderReturnDO">
SELECT
<include refid="FIELDS"/>
FROM `order_return`
WHERE id = #{id}
</select>
</mapper>

View File

@ -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
}
}

View File

@ -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`)
);

View File

@ -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<ProductAttrAndValuePairBO> list = sku.getAttrs();
if ( list != null ) {
item.setAttrs( new ArrayList<ProductAttrAndValuePairBO>( list ) );
}
item.setPrice( sku.getPrice() );
item.setQuantity( sku.getQuantity() );
return item;
}
@Override
public List<CartItemBO> convert(List<CartItemDO> items) {
if ( items == null ) {
return null;
}
List<CartItemBO> list = new ArrayList<CartItemBO>( 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;
}
}

View File

@ -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<OrderCommentItem> convert(List<OrderCommentDO> orderCommentDOList) {
if ( orderCommentDOList == null ) {
return null;
}
List<OrderCommentItem> list = new ArrayList<OrderCommentItem>( 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;
}
}

View File

@ -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<OrderBO> convertPageBO(List<OrderDO> orderDOList) {
if ( orderDOList == null ) {
return null;
}
List<OrderBO> list = new ArrayList<OrderBO>( 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;
}
}

View File

@ -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<OrderItemBO> convertOrderItemBO(List<OrderItemDO> orderItemDOList) {
if ( orderItemDOList == null ) {
return null;
}
List<OrderItemBO> list = new ArrayList<OrderItemBO>( orderItemDOList.size() );
for ( OrderItemDO orderItemDO : orderItemDOList ) {
list.add( orderItemDOToOrderItemBO( orderItemDO ) );
}
return list;
}
@Override
public List<OrderItemDO> convert(List<OrderItem> orderCreateItemDTOList) {
if ( orderCreateItemDTOList == null ) {
return null;
}
List<OrderItemDO> list = new ArrayList<OrderItemDO>( orderCreateItemDTOList.size() );
for ( OrderItem orderItem : orderCreateItemDTOList ) {
list.add( orderItemToOrderItemDO( orderItem ) );
}
return list;
}
@Override
public List<OrderItemBO> convertOrderItemDO(List<OrderItemDO> orderItemDOList) {
if ( orderItemDOList == null ) {
return null;
}
List<OrderItemBO> list = new ArrayList<OrderItemBO>( orderItemDOList.size() );
for ( OrderItemDO orderItemDO : orderItemDOList ) {
list.add( orderItemDOToOrderItemBO( orderItemDO ) );
}
return list;
}
@Override
public List<cn.iocoder.mall.order.api.bo.OrderInfoBO.OrderItem> convertOrderInfoWithOrderItem(List<OrderItemDO> orderItemDOList) {
if ( orderItemDOList == null ) {
return null;
}
List<cn.iocoder.mall.order.api.bo.OrderInfoBO.OrderItem> list = new ArrayList<cn.iocoder.mall.order.api.bo.OrderInfoBO.OrderItem>( 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;
}
}

View File

@ -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<Logistics> convertLogistics(List<OrderLogisticsDO> orderLogisticsDOList) {
if ( orderLogisticsDOList == null ) {
return null;
}
List<Logistics> list = new ArrayList<Logistics>( orderLogisticsDOList.size() );
for ( OrderLogisticsDO orderLogisticsDO : orderLogisticsDOList ) {
list.add( orderLogisticsDOToLogistics( orderLogisticsDO ) );
}
return list;
}
@Override
public List<LogisticsDetail> convertLogisticsDetail(List<OrderLogisticsDetailDO> orderLogisticsDOList) {
if ( orderLogisticsDOList == null ) {
return null;
}
List<LogisticsDetail> list = new ArrayList<LogisticsDetail>( 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<cn.iocoder.mall.order.api.bo.OrderLogisticsInfoBO.LogisticsDetail> convert(List<OrderLogisticsDetailDO> orderLogisticsDetailDOList) {
if ( orderLogisticsDetailDOList == null ) {
return null;
}
List<cn.iocoder.mall.order.api.bo.OrderLogisticsInfoBO.LogisticsDetail> list = new ArrayList<cn.iocoder.mall.order.api.bo.OrderLogisticsInfoBO.LogisticsDetail>( 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;
}
}

View File

@ -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;
}
}

View File

@ -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<OrderRecipientBO> convert(List<OrderRecipientDO> orderRecipientDOList) {
if ( orderRecipientDOList == null ) {
return null;
}
List<OrderRecipientBO> list = new ArrayList<OrderRecipientBO>( 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;
}
}

View File

@ -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<OrderItem> convert(List<OrderItemDO> orderItemDOList) {
if ( orderItemDOList == null ) {
return null;
}
List<OrderItem> list = new ArrayList<OrderItem>( orderItemDOList.size() );
for ( OrderItemDO orderItemDO : orderItemDOList ) {
list.add( orderItemDOToOrderItem( orderItemDO ) );
}
return list;
}
@Override
public List<OrderReturn> convertListBO(List<OrderReturnDO> orderReturnDOList) {
if ( orderReturnDOList == null ) {
return null;
}
List<OrderReturn> list = new ArrayList<OrderReturn>( 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;
}
}

View File

@ -0,0 +1,6 @@
swagger:
enable: true
title: 支付子系统
description: 支付子系统
version: 1.0.0
base-package: cn.iocoder.mall.pay.application.controller

View File

@ -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

View File

@ -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<AdminsPayRefundDetailVO> convertList(List<PayRefundBO> refunds) {
if ( refunds == null ) {
return null;
}
List<AdminsPayRefundDetailVO> list = new ArrayList<AdminsPayRefundDetailVO>( 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;
}
}

View File

@ -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

View File

@ -0,0 +1 @@
##################### 业务模块 #####################

View File

@ -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

View File

@ -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 = ""
}
}

View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.mall.pay.biz.dao.PayAppMapper">
<sql id="FIELDS">
id, name, notify_url, refund_notify_url, status, create_time
</sql>
<!--<insert id="insert" parameterType="RoleDO" useGeneratedKeys="true" keyColumn="id" keyProperty="id">-->
<!--INSERT INTO role (-->
<!--name, create_time, deleted-->
<!--) VALUES (-->
<!--#{name}, #{createTime}, #{deleted}-->
<!--)-->
<!--</insert>-->
<!--<update id="update" parameterType="RoleDO">-->
<!--UPDATE role-->
<!--<set>-->
<!--<if test="name != null">-->
<!--, name = #{name}-->
<!--</if>-->
<!--<if test="deleted != null">-->
<!--, deleted = #{deleted}-->
<!--</if>-->
<!--</set>-->
<!--WHERE id = #{id}-->
<!--</update>-->
<select id="selectById" parameterType="String" resultType="PayAppDO">
SELECT
<include refid="FIELDS"/>
FROM app
WHERE id = #{id}
</select>
</mapper>

View File

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.mall.pay.biz.dao.PayNotifyLogMapper">
<!--<sql id="FIELDS">-->
<!--id, transaction_id, transaction_extension_id, app_id, order_id,-->
<!--status, next_notify_time, last_execute_time, notify_times, max_notify_times,-->
<!--create_time-->
<!--</sql>-->
<insert id="insert" parameterType="PayNotifyLogDO" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
INSERT INTO notify_log (
notify_id, request, response, status
) VALUES (
#{notifyId}, #{request}, #{response}, #{status}
)
</insert>
<!--<update id="update" parameterType="PayTransactionNotifyTaskDO">-->
<!--UPDATE transaction_notify_task-->
<!--<set>-->
<!--<if test="status != null">-->
<!--, status = #{status}-->
<!--</if>-->
<!--<if test="nextNotifyTime != null">-->
<!--, last_notify_time = #{nextNotifyTime}-->
<!--</if>-->
<!--<if test="lastExecuteTime != null">-->
<!--, last_execute_time = #{lastExecuteTime}-->
<!--</if>-->
<!--<if test="notifyTimes != null">-->
<!--, notify_times = #{notifyTimes}-->
<!--</if>-->
<!--</set>-->
<!--WHERE id = #{id}-->
<!--</update>-->
<!--<select id="selectByTransactionCode" parameterType="String" resultType="PayTransactionExtensionDO">-->
<!--SELECT-->
<!--<include refid="FIELDS"/>-->
<!--FROM transaction_extension-->
<!--WHERE transaction_code = #{transactionCode}-->
<!--LIMIT 1-->
<!--</select>-->
</mapper>

View File

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.mall.pay.biz.dao.PayNotifyTaskMapper">
<sql id="FIELDS">
id, app_id, type,
status, next_notify_time, last_execute_time, notify_times, max_notify_times,
create_time
</sql>
<resultMap id="PayNotifyTaskResultMap" type="PayNotifyTaskDO">
<result property="transaction" column="transaction"
javaType="cn.iocoder.mall.pay.biz.dataobject.PayNotifyTaskDO$Transaction"
typeHandler="cn.iocoder.common.framework.mybatis.JSONTypeHandler"/>
<result property="refund" column="refund"
javaType="cn.iocoder.mall.pay.biz.dataobject.PayNotifyTaskDO$Refund"
typeHandler="cn.iocoder.common.framework.mybatis.JSONTypeHandler"/>
</resultMap>
<insert id="insert" parameterType="PayNotifyTaskDO" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
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}
)
</insert>
<update id="update" parameterType="PayNotifyTaskDO">
UPDATE notify_task
<set>
<if test="status != null">
, status = #{status}
</if>
<if test="nextNotifyTime != null">
, next_notify_time = #{nextNotifyTime}
</if>
<if test="lastExecuteTime != null">
, last_execute_time = #{lastExecuteTime}
</if>
<if test="notifyTimes != null">
, notify_times = #{notifyTimes}
</if>
</set>
WHERE id = #{id}
</update>
<select id="selectByNotify" resultMap="PayNotifyTaskResultMap">
SELECT
<include refid="FIELDS"/>
FROM notify_task
WHERE status IN (1, 4, 5)
AND next_notify_time <![CDATA[ <= ]]> NOW()
AND last_execute_time > next_notify_time
</select>
</mapper>

View File

@ -0,0 +1,122 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.mall.pay.biz.dao.PayRefundMapper">
<sql id="FIELDS">
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
</sql>
<insert id="insert" parameterType="PayRefundDO" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
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}
)
</insert>
<update id="update">
UPDATE refund
<set>
<if test="entity.status != null">
, status = #{entity.status}
</if>
<if test="entity.finishTime != null">
, finish_time = #{entity.finishTime}
</if>
<if test="entity.extensionData != null">
, extension_data = #{entity.extensionData}
</if>
<if test="entity.refundTime != null">
, refund_time = #{entity.refundTime}
</if>
<if test="entity.notifyTime != null">
, notify_time = #{entity.notifyTime}
</if>
<if test="entity.tradeNo != null">
, trade_no = #{entity.tradeNo}
</if>
</set>
WHERE id = #{entity.id}
<if test="whereStatus != null">
AND status = #{whereStatus}
</if>
</update>
<select id="selectByRefundCode" parameterType="String" resultType="PayRefundDO">
SELECT
<include refid="FIELDS"/>
FROM refund
WHERE refund_code = #{refundCode}
LIMIT 1
</select>
<select id="selectById" parameterType="Integer" resultType="PayRefundDO">
SELECT
<include refid="FIELDS"/>
FROM refund
WHERE id = #{id}
</select>
<select id="selectListByPage" resultType="PayRefundDO">
SELECT
<include refid="FIELDS"/>
FROM refund
<where>
<if test="createBeginTime != null">
AND create_time >= #{createBeginTime}
</if>
<if test="createEndTime != null">
AND #{createEndTime} >= create_time
</if>
<if test="finishBeginTime != null">
AND finish_time >= #{finishBeginTime}
</if>
<if test="finishEndTime != null">
AND #{finishEndTime} >= finish_time
</if>
<if test="status != null">
AND status = #{status}
</if>
<if test="payChannel != null">
AND pay_channel = #{payChannel}
</if>
</where>
LIMIT #{offset}, #{limit}
</select>
<select id="selectCountByPage" resultType="Integer">
SELECT
COUNT(1)
FROM refund
<where>
<if test="createBeginTime != null">
AND create_time >= #{createBeginTime}
</if>
<if test="createEndTime != null">
AND #{createEndTime} >= create_time
</if>
<if test="finishBeginTime != null">
AND finish_time >= #{finishBeginTime}
</if>
<if test="finishEndTime != null">
AND #{finishEndTime} >= finish_time
</if>
<if test="status != null">
AND status = #{status}
</if>
<if test="payChannel != null">
AND pay_channel = #{payChannel}
</if>
</where>
</select>
</mapper>

View File

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.mall.pay.biz.dao.PayTransactionExtensionMapper">
<sql id="FIELDS">
id, transaction_id, pay_channel, transaction_code, extension_data,
create_ip, status, create_time
</sql>
<insert id="insert" parameterType="PayTransactionExtensionDO" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
INSERT INTO transaction_extension (
transaction_id, pay_channel, transaction_code, extension_data,
create_ip, status
) VALUES (
#{transactionId}, #{payChannel}, #{transactionCode}, #{extensionData},
#{createIp}, #{status}
)
</insert>
<update id="update">
UPDATE transaction_extension
<set>
<if test="entity.extensionData != null">
, extension_data = #{entity.extensionData}
</if>
<if test="entity.status != null">
, status = #{entity.status}
</if>
</set>
WHERE id = #{entity.id}
<if test="whereStatus != null">
AND status = #{whereStatus}
</if>
</update>
<select id="selectByTransactionCode" parameterType="String" resultType="PayTransactionExtensionDO">
SELECT
<include refid="FIELDS"/>
FROM transaction_extension
WHERE transaction_code = #{transactionCode}
LIMIT 1
</select>
<select id="selectById" parameterType="Integer" resultType="PayTransactionExtensionDO">
SELECT
<include refid="FIELDS"/>
FROM transaction_extension
WHERE id = #{id}
</select>
</mapper>

View File

@ -0,0 +1,159 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.mall.pay.biz.dao.PayTransactionMapper">
<sql id="FIELDS">
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
</sql>
<insert id="insert" parameterType="PayTransactionDO" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
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}
)
</insert>
<update id="update">
UPDATE transaction
<set>
<if test="entity.status != null">
, status = #{entity.status}
</if>
<if test="entity.extensionId != null">
, extension_id = #{entity.extensionId}
</if>
<if test="entity.payChannel != null">
, pay_channel = #{entity.payChannel}
</if>
<if test="entity.paymentTime != null">
, payment_time = #{entity.paymentTime}
</if>
<if test="entity.finishTime != null">
, finish_time = #{entity.finishTime}
</if>
<if test="entity.notifyTime != null">
, notify_time = #{entity.notifyTime}
</if>
<if test="entity.tradeNo != null">
, trade_no = #{entity.tradeNo}
</if>
</set>
WHERE id = #{entity.id}
<if test="whereStatus != null">
AND status = #{whereStatus}
</if>
</update>
<update id="updateForRefundTotal">
UPDATE `transaction`
SET refund_total = refund_total + ${refundTotalIncr}
WHERE price >= refund_total + ${refundTotalIncr}
</update>
<select id="selectByAppIdAndOrderId" resultType="PayTransactionDO">
SELECT
<include refid="FIELDS"/>
FROM transaction
WHERE app_id = #{appId}
AND order_id = #{orderId}
</select>
<select id="selectById" parameterType="Integer" resultType="PayTransactionDO">
SELECT
<include refid="FIELDS"/>
FROM transaction
WHERE id = #{id}
</select>
<select id="selectListByIds" resultType="PayTransactionDO">
SELECT
<include refid="FIELDS" />
FROM transaction
WHERE id IN
<foreach item="id" collection="ids" separator="," open="(" close=")" index="">
#{id}
</foreach>
</select>
<select id="selectListByPage" resultType="PayTransactionDO">
SELECT
<include refid="FIELDS"/>
FROM transaction
<where>
<if test="createBeginTime != null">
AND create_time >= #{createBeginTime}
</if>
<if test="createEndTime != null">
AND #{createEndTime} >= create_time
</if>
<if test="paymentBeginTime != null">
AND payment_time >= #{paymentBeginTime}
</if>
<if test="paymentEndTime != null">
AND #{paymentEndTime} >= payment_time
</if>
<if test="status != null">
AND status = #{status}
</if>
<if test="hasRefund == true">
AND refund_total > 0
</if>
<if test="hasRefund == false">
AND refund_total = 0
</if>
<if test="payChannel != null">
AND pay_channel = #{payChannel}
</if>
<if test="orderSubject != null">
order_subject LIKE "%"#{orderSubject}"%"
</if>
</where>
LIMIT #{offset}, #{limit}
</select>
<select id="selectCountByPage" resultType="Integer">
SELECT
COUNT(1)
FROM transaction
<where>
<if test="createBeginTime != null">
AND create_time >= #{createBeginTime}
</if>
<if test="createEndTime != null">
AND #{createEndTime} >= create_time
</if>
<if test="paymentBeginTime != null">
AND payment_time >= #{paymentBeginTime}
</if>
<if test="paymentEndTime != null">
AND #{paymentEndTime} >= payment_time
</if>
<if test="status != null">
AND status = #{status}
</if>
<if test="hasRefund == true">
AND refund_total > 0
</if>
<if test="hasRefund == false">
AND refund_total = 0
</if>
<if test="payChannel != null">
AND pay_channel = #{payChannel}
</if>
<if test="orderSubject != null">
order_subject LIKE "%"#{orderSubject}"%"
</if>
</where>
</select>
</mapper>

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<!-- 使用驼峰命名法转换字段。 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<typeAliases>
<typeAlias alias="Integer" type="java.lang.Integer"/>
<typeAlias alias="Long" type="java.lang.Long"/>
<typeAlias alias="HashMap" type="java.util.HashMap"/>
<typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap"/>
<typeAlias alias="ArrayList" type="java.util.ArrayList"/>
<typeAlias alias="LinkedList" type="java.util.LinkedList"/>
</typeAliases>
</configuration>

View File

@ -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
}
}

View File

@ -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;
}
}

View File

@ -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<PayRefundBO> convertList(List<PayRefundDO> refunds) {
if ( refunds == null ) {
return null;
}
List<PayRefundBO> list = new ArrayList<PayRefundBO>( refunds.size() );
for ( PayRefundDO payRefundDO : refunds ) {
list.add( convert( payRefundDO ) );
}
return list;
}
}

View File

@ -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<PayTransactionBO> convertList(List<PayTransactionDO> list) {
if ( list == null ) {
return null;
}
List<PayTransactionBO> list1 = new ArrayList<PayTransactionBO>( 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;
}
}

View File

@ -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<AdminsProductBrandVO> 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<Boolean> 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<AdminsProductBrandVO> 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<AdminsProductBrangPageVO> 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));
}
}

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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<AdminsProductBrandVO> brands;
@ApiModelProperty(value = "总数", required = true)
private Integer count;
}

View File

@ -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

View File

@ -0,0 +1,6 @@
swagger:
enable: true
title: 商品子系统
description: 商品子系统
version: 1.0.0
base-package: cn.iocoder.mall.product.application.controller

View File

@ -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

View File

@ -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<AdminsProductAttrSimpleVO> convert(List<ProductAttrSimpleBO> result) {
if ( result == null ) {
return null;
}
List<AdminsProductAttrSimpleVO> list = new ArrayList<AdminsProductAttrSimpleVO>( 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<AdminsProductAttrValueDetailVO> productAttrValueDetailBOListToAdminsProductAttrValueDetailVOList(List<ProductAttrValueDetailBO> list) {
if ( list == null ) {
return null;
}
List<AdminsProductAttrValueDetailVO> list1 = new ArrayList<AdminsProductAttrValueDetailVO>( 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<AdminsProductAttrDetailVO> productAttrDetailBOListToAdminsProductAttrDetailVOList(List<ProductAttrDetailBO> list) {
if ( list == null ) {
return null;
}
List<AdminsProductAttrDetailVO> list1 = new ArrayList<AdminsProductAttrDetailVO>( 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<AdminsProductAttrValueSimpleVO> productAttrValueSimpleBOListToAdminsProductAttrValueSimpleVOList(List<ProductAttrValueSimpleBO> list) {
if ( list == null ) {
return null;
}
List<AdminsProductAttrValueSimpleVO> list1 = new ArrayList<AdminsProductAttrValueSimpleVO>( 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;
}
}

View File

@ -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<AdminsProductBrandVO> productBrandBOListToAdminsProductBrandVOList(List<ProductBrandBO> list) {
if ( list == null ) {
return null;
}
List<AdminsProductBrandVO> list1 = new ArrayList<AdminsProductBrandVO>( list.size() );
for ( ProductBrandBO productBrandBO : list ) {
list1.add( convert( productBrandBO ) );
}
return list1;
}
}

View File

@ -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;
}
}

View File

@ -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<UsersProductCategoryVO> convertToVO(List<ProductCategoryBO> categoryList) {
if ( categoryList == null ) {
return null;
}
List<UsersProductCategoryVO> list = new ArrayList<UsersProductCategoryVO>( categoryList.size() );
for ( ProductCategoryBO productCategoryBO : categoryList ) {
list.add( convertToVO( productCategoryBO ) );
}
return list;
}
}

View File

@ -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<String> list = productSpuDetailBO.getPicUrls();
if ( list != null ) {
adminsProductSpuDetailVO.setPicUrls( new ArrayList<String>( 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<AdminsProductSpuVO> convert3(List<ProductSpuBO> result) {
if ( result == null ) {
return null;
}
List<AdminsProductSpuVO> list = new ArrayList<AdminsProductSpuVO>( 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<String> list = result.getPicUrls();
if ( list != null ) {
usersProductSpuDetailVO.setPicUrls( new ArrayList<String>( 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<AdminsProductAttrAndValuePairVO> productAttrAndValuePairBOListToAdminsProductAttrAndValuePairVOList(List<ProductAttrAndValuePairBO> list) {
if ( list == null ) {
return null;
}
List<AdminsProductAttrAndValuePairVO> list1 = new ArrayList<AdminsProductAttrAndValuePairVO>( 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<AdminsProductSkuDetailVO> skuListToAdminsProductSkuDetailVOList(List<Sku> list) {
if ( list == null ) {
return null;
}
List<AdminsProductSkuDetailVO> list1 = new ArrayList<AdminsProductSkuDetailVO>( 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<String> list = productSpuBO.getPicUrls();
if ( list != null ) {
adminsProductSpuVO.setPicUrls( new ArrayList<String>( 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<UsersProductAttrAndValuePairVO> productAttrAndValuePairBOListToUsersProductAttrAndValuePairVOList(List<ProductAttrAndValuePairBO> list) {
if ( list == null ) {
return null;
}
List<UsersProductAttrAndValuePairVO> list1 = new ArrayList<UsersProductAttrAndValuePairVO>( 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<UsersProductSkuDetailVO> skuListToUsersProductSkuDetailVOList(List<Sku> list) {
if ( list == null ) {
return null;
}
List<UsersProductSkuDetailVO> list1 = new ArrayList<UsersProductSkuDetailVO>( list.size() );
for ( Sku sku : list ) {
list1.add( skuToUsersProductSkuDetailVO( sku ) );
}
return list1;
}
}

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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<ProductBrandBO> brands;
/**
*
*/
private Integer count;
}

View File

@ -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;

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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<ProductBrandBO> convert(List<ProductBrandDO> brands);
@Mappings({})
ProductBrandBO convert(ProductBrandDO brand);
@Mappings({})
ProductBrandDO convert(ProductBrandUpdateDTO brand);
@Mappings({})
ProductBrandDO convert(ProductBrandAddDTO brand);
}

View File

@ -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<ProductBrandDO> 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);
}

View File

@ -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;
}

View File

@ -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;
}
}

View File

@ -31,6 +31,8 @@ dubbo:
version: 1.0.0
ProductSpuService:
version: 1.0.0
ProductBrandService:
version: 1.0.0
OAuth2Service:
version: 1.0.0

View File

@ -0,0 +1,95 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.iocoder.mall.product.dao.ProductBrandMapper">
<sql id="FIELDS">
id, name, description, pic_url, status, create_time
</sql>
<select id="selectById" parameterType="Integer" resultType="ProductBrandDO">
SELECT
<include refid="FIELDS" />
FROM product_brand
WHERE id = #{id}
AND deleted = 0
</select>
<select id="selectByName" parameterType="String" resultType="ProductBrandDO">
SELECT
<include refid="FIELDS" />
FROM product_brand
WHERE name = #{name}
AND deleted = 0
</select>
<insert id="insert" parameterType="ProductBrandDO" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
INSERT INTO product_brand (
name, description, pic_url, status, create_time, deleted
) VALUES (
#{name}, #{description}, #{picUrl}, #{status}, #{createTime}, #{deleted}
)
</insert>
<update id="update" parameterType="ProductBrandDO">
UPDATE product_brand
<set>
<if test="name != null">
name = #{name},
</if>
<if test="description != null">
description = #{description},
</if>
<if test="picUrl != null">
pic_url = #{picUrl},
</if>
<if test="status != null">
status = #{status},
</if>
<if test="deleted != null">
deleted = #{deleted}
</if>
</set>
WHERE id = #{id}
</update>
<select id="selectListByParams" resultType="ProductBrandDO">
SELECT
<include refid="FIELDS" />
FROM product_brand
<where>
deleted = 0
<if test="name != null">
AND name LIKE "%"#{name}"%"
</if>
<if test="description != null">
AND description LIKE "%"#{description}"%"
</if>
<if test="status != null">
AND status = #{status}
</if>
</where>
LIMIT #{offset}, #{limit}
</select>
<select id="selectListCountByParams" resultType="Integer">
SELECT
COUNT(1)
FROM product_brand
<where>
deleted = 0
<if test="name != null">
AND name LIKE "%"#{name}"%"
</if>
<if test="description != null">
AND description LIKE "%"#{description}"%"
</if>
<if test="status != null">
AND status = #{status}
</if>
</where>
</select>
</mapper>

View File

@ -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

View File

@ -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

View File

@ -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 = ""
}
}

View File

@ -0,0 +1,105 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.iocoder.mall.product.dao.ProductAttrMapper">
<sql id="FIELDS">
id, name, status, create_time
</sql>
<!--<select id="selectList" resultType="ProductCategoryDO">-->
<!--SELECT-->
<!--<include refid="FIELDS" />-->
<!--FROM product_category-->
<!--WHERE deleted = 0-->
<!--</select>-->
<select id="selectById" parameterType="Integer" resultType="ProductAttrDO">
SELECT
<include refid="FIELDS" />
FROM product_attr
WHERE id = #{id}
AND deleted = 0
</select>
<select id="selectByName" parameterType="String" resultType="ProductAttrDO">
SELECT
<include refid="FIELDS" />
FROM product_attr
WHERE name = #{name}
AND deleted = 0
LIMIT 1
</select>
<insert id="insert" parameterType="ProductAttrDO" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
INSERT INTO product_attr (
name, status, create_time, deleted
) VALUES (
#{name}, #{status}, #{createTime}, #{deleted}
)
</insert>
<update id="update" parameterType="ProductAttrDO">
UPDATE product_attr
<set>
<if test="name != null">
name = #{name},
</if>
<if test="status != null">
status = #{status},
</if>
<if test="deleted != null">
deleted = #{deleted}
</if>
</set>
WHERE id = #{id}
</update>
<select id="selectListByIds" resultType="ProductAttrDO">
SELECT
<include refid="FIELDS" />
FROM product_attr
WHERE id IN
<foreach item="id" collection="ids" separator="," open="(" close=")" index="">
#{id}
</foreach>
AND deleted = 0
</select>
<select id="selectListByNameLike" resultType="ProductAttrDO">
SELECT
<include refid="FIELDS" />
FROM product_attr
<where>
<if test="name != null">
name LIKE "%"#{name}"%"
</if>
AND deleted = 0
</where>
LIMIT #{offset}, #{limit}
</select>
<select id="selectCountByNameLike" resultType="Integer">
SELECT
COUNT(1)
FROM product_attr
<where>
<if test="name != null">
name LIKE "%"#{name}"%"
</if>
AND deleted = 0
</where>
</select>
<select id="selectListByStatus" parameterType="Integer" resultType="ProductAttrDO">
SELECT
<include refid="FIELDS" />
FROM product_attr
<where>
<if test="status != null">
status = #{status}
</if>
AND deleted = 0
</where>
</select>
</mapper>

View File

@ -0,0 +1,130 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.iocoder.mall.product.dao.ProductAttrValueMapper">
<sql id="FIELDS">
id, attr_id, name, status, create_time
</sql>
<!--<select id="selectList" resultType="ProductCategoryDO">-->
<!--SELECT-->
<!--<include refid="FIELDS" />-->
<!--FROM product_category-->
<!--WHERE deleted = 0-->
<!--</select>-->
<select id="selectById" parameterType="Integer" resultType="ProductAttrValueDO">
SELECT
<include refid="FIELDS" />
FROM product_attr_value
WHERE id = #{id}
AND deleted = 0
</select>
<!--<insert id="insert" parameterType="ProductCategoryDO" useGeneratedKeys="true" keyColumn="id" keyProperty="id">-->
<!--INSERT INTO product_category (-->
<!--pid, name, description, pic_url, sort,-->
<!--status, create_time, deleted-->
<!--) VALUES (-->
<!--#{pid}, #{name}, #{description}, #{picUrl}, #{sort},-->
<!--#{status}, #{createTime}, #{deleted}-->
<!--)-->
<!--</insert>-->
<!--<update id="update" parameterType="ProductCategoryDO">-->
<!--UPDATE product_category-->
<!--<set>-->
<!--<if test="pid != null">-->
<!--pid = #{pid},-->
<!--</if>-->
<!--<if test="name != null">-->
<!--name = #{name},-->
<!--</if>-->
<!--<if test="description != null">-->
<!--description = #{description},-->
<!--</if>-->
<!--<if test="picUrl != null">-->
<!--pic_url = #{picUrl},-->
<!--</if>-->
<!--<if test="sort != null">-->
<!--sort = #{sort},-->
<!--</if>-->
<!--<if test="status != null">-->
<!--status = #{status},-->
<!--</if>-->
<!--<if test="deleted != null">-->
<!--deleted = #{deleted}-->
<!--</if>-->
<!--</set>-->
<!--WHERE id = #{id}-->
<!--</update>-->
<select id="selectListByIds" resultType="ProductAttrValueDO">
SELECT
<include refid="FIELDS" />
FROM product_attr_value
WHERE id IN
<foreach item="id" collection="ids" separator="," open="(" close=")" index="">
#{id}
</foreach>
AND deleted = 0
</select>
<select id="selectListByAttrIds" resultType="ProductAttrValueDO">
SELECT
<include refid="FIELDS" />
FROM product_attr_value
WHERE attr_id IN
<foreach item="attrId" collection="attrIds" separator="," open="(" close=")" index="">
#{attrId}
</foreach>
AND deleted = 0
</select>
<select id="selectListByStatus" resultType="ProductAttrValueDO">
SELECT
<include refid="FIELDS" />
FROM product_attr_value
<where>
<if test="status != null">
status = #{status}
</if>
AND deleted = 0
</where>
</select>
<select id="selectByAttrIdAndName" resultType="ProductAttrValueDO">
SELECT
<include refid="FIELDS" />
FROM product_attr_value
WHERE name = #{name}
AND deleted = 0
LIMIT 1
</select>
<insert id="insert" parameterType="ProductAttrValueDO" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
INSERT INTO product_attr_value (
attr_id, name, status, create_time, deleted
) VALUES (
#{attrId}, #{name}, #{status}, #{createTime}, #{deleted}
)
</insert>
<update id="update" parameterType="ProductAttrValueDO">
UPDATE product_attr_value
<set>
<if test="name != null">
name = #{name},
</if>
<if test="status != null">
status = #{status},
</if>
<if test="deleted != null">
deleted = #{deleted}
</if>
</set>
WHERE id = #{id}
</update>
</mapper>

View File

@ -0,0 +1,95 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.iocoder.mall.product.dao.ProductBrandMapper">
<sql id="FIELDS">
id, name, description, pic_url, status, create_time
</sql>
<select id="selectById" parameterType="Integer" resultType="ProductBrandDO">
SELECT
<include refid="FIELDS" />
FROM product_brand
WHERE id = #{id}
AND deleted = 0
</select>
<select id="selectByName" parameterType="String" resultType="ProductBrandDO">
SELECT
<include refid="FIELDS" />
FROM product_brand
WHERE name = #{name}
AND deleted = 0
</select>
<insert id="insert" parameterType="ProductBrandDO" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
INSERT INTO product_brand (
name, description, pic_url, status, create_time, deleted
) VALUES (
#{name}, #{description}, #{picUrl}, #{status}, #{createTime}, #{deleted}
)
</insert>
<update id="update" parameterType="ProductBrandDO">
UPDATE product_brand
<set>
<if test="name != null">
name = #{name},
</if>
<if test="description != null">
description = #{description},
</if>
<if test="picUrl != null">
pic_url = #{picUrl},
</if>
<if test="status != null">
status = #{status},
</if>
<if test="deleted != null">
deleted = #{deleted}
</if>
</set>
WHERE id = #{id}
</update>
<select id="selectListByParams" resultType="ProductBrandDO">
SELECT
<include refid="FIELDS" />
FROM product_brand
<where>
deleted = 0
<if test="name != null">
AND name LIKE "%"#{name}"%"
</if>
<if test="description != null">
AND description LIKE "%"#{description}"%"
</if>
<if test="status != null">
AND status = #{status}
</if>
</where>
LIMIT #{offset}, #{limit}
</select>
<select id="selectListCountByParams" resultType="Integer">
SELECT
COUNT(1)
FROM product_brand
<where>
deleted = 0
<if test="name != null">
AND name LIKE "%"#{name}"%"
</if>
<if test="description != null">
AND description LIKE "%"#{description}"%"
</if>
<if test="status != null">
AND status = #{status}
</if>
</where>
</select>
</mapper>

View File

@ -0,0 +1,84 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.iocoder.mall.product.dao.ProductCategoryMapper">
<sql id="FIELDS">
id, pid, name, description, pic_url,
sort, status, create_time
</sql>
<select id="selectListByPidAndStatusOrderBySort" resultType="ProductCategoryDO">
SELECT
<include refid="FIELDS" />
FROM product_category
WHERE pid = #{pid}
AND status = #{status}
AND deleted = 0
ORDER BY sort ASC
</select>
<select id="selectList" resultType="ProductCategoryDO">
SELECT
<include refid="FIELDS" />
FROM product_category
WHERE deleted = 0
</select>
<select id="selectById" parameterType="Integer" resultType="ProductCategoryDO">
SELECT
<include refid="FIELDS" />
FROM product_category
WHERE id = #{id}
AND deleted = 0
</select>
<select id="selectByIds" resultType="ProductCategoryDO">
SELECT
<include refid="FIELDS" />
FROM product_category
WHERE id IN
<foreach collection="ids" item="id" separator="," open="(" close=")">
#{id}
</foreach>
AND deleted = 0
</select>
<insert id="insert" parameterType="ProductCategoryDO" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
INSERT INTO product_category (
pid, name, description, pic_url, sort,
status, create_time, deleted
) VALUES (
#{pid}, #{name}, #{description}, #{picUrl}, #{sort},
#{status}, #{createTime}, #{deleted}
)
</insert>
<update id="update" parameterType="ProductCategoryDO">
UPDATE product_category
<set>
<if test="pid != null">
pid = #{pid},
</if>
<if test="name != null">
name = #{name},
</if>
<if test="description != null">
description = #{description},
</if>
<if test="picUrl != null">
pic_url = #{picUrl},
</if>
<if test="sort != null">
sort = #{sort},
</if>
<if test="status != null">
status = #{status},
</if>
<if test="deleted != null">
deleted = #{deleted}
</if>
</set>
WHERE id = #{id}
</update>
</mapper>

View File

@ -0,0 +1,87 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.mall.product.dao.ProductSkuMapper">
<sql id="FIELDS">
id, spu_id, status, pic_url, attrs,
price, quantity, create_time
</sql>
<select id="selectById" parameterType="Integer" resultType="ProductSkuDO">
SELECT
<include refid="FIELDS" />
FROM product_sku
WHERE id = #{id}
AND deleted = 0
</select>
<select id="selectByIds" resultType="ProductSkuDO">
SELECT
<include refid="FIELDS" />
FROM product_sku
WHERE id IN
<foreach item="id" collection="ids" separator="," open="(" close=")" index="">
#{id}
</foreach>
AND deleted = 0
</select>
<insert id="insertList" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
INSERT INTO product_sku (
spu_id, status, pic_url, attrs, price,
quantity, deleted, create_time
) VALUES
<foreach collection="productSkuDOs" item="productSkuDO" separator=",">
(#{productSkuDO.spuId}, #{productSkuDO.status}, #{productSkuDO.picUrl}, #{productSkuDO.attrs}, #{productSkuDO.price},
#{productSkuDO.quantity}, #{productSkuDO.deleted}, #{productSkuDO.createTime}
)
</foreach>
</insert>
<select id="selectListBySpuIdAndStatus" resultType="ProductSkuDO">
SELECT
<include refid="FIELDS" />
FROM product_sku
WHERE spu_id = #{spuId}
AND status = #{status}
AND deleted = 0
</select>
<update id="update" parameterType="ProductSpuDO">
UPDATE product_sku
<set>
<if test="spuId != null">
spu_id = #{spuId},
</if>
<if test="status != null">
status = #{status},
</if>
<if test="picUrl != null">
pic_url = #{picUrl},
</if>
<if test="attrs != null">
attrs = #{attrs},
</if>
<if test="price != null">
price = #{price},
</if>
<if test="quantity != null">
quantity = #{quantity},
</if>
<if test="deleted != null">
deleted = #{deleted}
</if>
</set>
WHERE id = #{id}
</update>
<update id="updateToDeleted" parameterType="Integer">
UPDATE product_sku
SET deleted = 1
WHERE id IN
<foreach item="id" collection="ids" separator="," open="(" close=")" index="">
#{id}
</foreach>
</update>
</mapper>

View File

@ -0,0 +1,145 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.mall.product.dao.ProductSpuMapper">
<sql id="FIELDS">
id, name, sell_point, description, cid,
pic_urls, visible, sort, price, quantity,
create_time
</sql>
<select id="selectById" parameterType="Integer" resultType="ProductSpuDO">
SELECT
<include refid="FIELDS" />
FROM product_spu
WHERE id = #{id}
AND deleted = 0
</select>
<select id="selectByIds" resultType="ProductSpuDO">
SELECT
<include refid="FIELDS" />
FROM product_spu
WHERE id IN
<foreach item="id" collection="ids" separator="," open="(" close=")" index="">
#{id}
</foreach>
AND deleted = 0
</select>
<select id="selectIdListByIdGt" parameterType="Integer" resultType="Integer">
SELECT
<include refid="FIELDS" />
FROM product_spu
<where>
<if test="id != null">
id > #{id}
</if>
AND deleted = 0
</where>
ORDER BY id ASC
LIMIT #{limit}
</select>
<insert id="insert" parameterType="ProductSpuDO" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
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}
)
</insert>
<update id="update" parameterType="ProductSpuDO">
UPDATE product_spu
<set>
<if test="name != null">
name = #{name},
</if>
<if test="sellPoint != null">
sell_point = #{sellPoint},
</if>
<if test="description != null">
description = #{description},
</if>
<if test="cid != null">
cid = #{cid},
</if>
<if test="picUrls != null">
pic_urls = #{picUrls},
</if>
<if test="visible != null">
visible = #{visible},
</if>
<if test="price != null">
price = #{price},
</if>
<if test="quantity != null">
quantity = #{quantity},
</if>
<if test="sort != null">
sort = #{sort},
</if>
<if test="deleted != null">
deleted = #{deleted}
</if>
</set>
WHERE id = #{id}
</update>
<select id="selectListByNameLikeOrderBySortAsc" resultType="ProductSpuDO">
SELECT
<include refid="FIELDS" />
FROM product_spu
<where>
<if test="name != null">
name LIKE "%"#{name}"%"
</if>
<if test="cid != null">
AND cid = #{cid}
</if>
<if test="visible != null">
AND visible = #{visible}
</if>
<if test="hasQuantity == true">
AND quantity > 0
</if>
<if test="hasQuantity == false">
AND quantity = 0
</if>
AND deleted = 0
</where>
ORDER BY sort ASC
<if test="offset != null and limit != null">
LIMIT #{offset}, #{limit}
</if>
</select>
<select id="selectCountByNameLike" resultType="Integer">
SELECT
COUNT(1)
FROM product_spu
<where>
<if test="name != null">
name LIKE "%"#{name}"%"
</if>
<if test="cid != null">
AND cid = #{cid}
</if>
<if test="visible != null">
AND visible = #{visible}
</if>
<if test="hasQuantity == true">
AND quantity > 0
</if>
<if test="hasQuantity == false">
AND quantity = 0
</if>
AND deleted = 0
</where>
</select>
</mapper>

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<!-- 使用驼峰命名法转换字段。 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<typeAliases>
<typeAlias alias="Integer" type="java.lang.Integer"/>
<typeAlias alias="Long" type="java.lang.Long"/>
<typeAlias alias="HashMap" type="java.util.HashMap"/>
<typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap"/>
<typeAlias alias="ArrayList" type="java.util.ArrayList"/>
<typeAlias alias="LinkedList" type="java.util.LinkedList"/>
</typeAliases>
</configuration>

View File

@ -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
}
}

View File

@ -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<ProductAttrDetailBO> convert(List<ProductAttrDO> attrs) {
if ( attrs == null ) {
return null;
}
List<ProductAttrDetailBO> list = new ArrayList<ProductAttrDetailBO>( 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<ProductAttrValueDetailBO> convert2(List<ProductAttrValueDO> values) {
if ( values == null ) {
return null;
}
List<ProductAttrValueDetailBO> list = new ArrayList<ProductAttrValueDetailBO>( values.size() );
for ( ProductAttrValueDO productAttrValueDO : values ) {
list.add( convert( productAttrValueDO ) );
}
return list;
}
@Override
public List<ProductAttrSimpleBO> convert3(List<ProductAttrDO> attrs) {
if ( attrs == null ) {
return null;
}
List<ProductAttrSimpleBO> list = new ArrayList<ProductAttrSimpleBO>( 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<ProductAttrValueSimpleBO> convert4(List<ProductAttrValueDO> values) {
if ( values == null ) {
return null;
}
List<ProductAttrValueSimpleBO> list = new ArrayList<ProductAttrValueSimpleBO>( 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;
}
}

View File

@ -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<ProductBrandBO> convert(List<ProductBrandDO> brands) {
if ( brands == null ) {
return null;
}
List<ProductBrandBO> list = new ArrayList<ProductBrandBO>( 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;
}
}

View File

@ -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<ProductCategoryBO> convertToBO(List<ProductCategoryDO> categoryList) {
if ( categoryList == null ) {
return null;
}
List<ProductCategoryBO> list = new ArrayList<ProductCategoryBO>( 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;
}
}

View File

@ -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<ProductSpuBO> convert(List<ProductSpuDO> spus) {
if ( spus == null ) {
return null;
}
List<ProductSpuBO> list = new ArrayList<ProductSpuBO>( 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<String> list = spu.getPicUrls();
if ( list != null ) {
productSpuDetailBO.setPicUrls( new ArrayList<String>( 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;
}
}

View File

@ -0,0 +1,6 @@
swagger:
enable: false
title: 营销子系统
description: 营销子系统
version: 1.0.0
base-package: cn.iocoder.mall.promotion.application.controller

View File

@ -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

View File

@ -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<AdminsBannerVO> bannerBOListToAdminsBannerVOList(List<BannerBO> list) {
if ( list == null ) {
return null;
}
List<AdminsBannerVO> list1 = new ArrayList<AdminsBannerVO>( list.size() );
for ( BannerBO bannerBO : list ) {
list1.add( convert( bannerBO ) );
}
return list1;
}
}

View File

@ -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<UsersBannerVO> convertList(List<BannerBO> banners) {
if ( banners == null ) {
return null;
}
List<UsersBannerVO> list = new ArrayList<UsersBannerVO>( 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;
}
}

View File

@ -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<UsersCouponCardVO> couponCardBOListToUsersCouponCardVOList(List<CouponCardBO> list) {
if ( list == null ) {
return null;
}
List<UsersCouponCardVO> list1 = new ArrayList<UsersCouponCardVO>( list.size() );
for ( CouponCardBO couponCardBO : list ) {
list1.add( convert( couponCardBO ) );
}
return list1;
}
}

View File

@ -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<AdminsCouponTemplateVO> convertList(List<CouponTemplateBO> templates) {
if ( templates == null ) {
return null;
}
List<AdminsCouponTemplateVO> list = new ArrayList<AdminsCouponTemplateVO>( templates.size() );
for ( CouponTemplateBO couponTemplateBO : templates ) {
list.add( convert( couponTemplateBO ) );
}
return list;
}
}

Some files were not shown because too many files have changed in this diff Show More