Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
2c5da04cc1
|
|
@ -2,10 +2,24 @@ package com.ghy.web.controller.order;
|
|||
|
||||
import com.ghy.common.core.controller.BaseController;
|
||||
import com.ghy.common.core.domain.AjaxResult;
|
||||
import com.ghy.common.utils.StringUtils;
|
||||
import com.ghy.customer.domain.Customer;
|
||||
import com.ghy.customer.service.CustomerService;
|
||||
import com.ghy.goods.service.GoodsService;
|
||||
import com.ghy.order.domain.OrderMaster;
|
||||
import com.ghy.order.request.AppOrderRequest;
|
||||
import com.ghy.order.service.OrderDetailService;
|
||||
import com.ghy.order.service.OrderMasterService;
|
||||
import com.ghy.payment.service.FinancialDetailService;
|
||||
import com.ghy.payment.service.FinancialMasterService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author clunt
|
||||
* 下单接口
|
||||
|
|
@ -14,19 +28,46 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
|||
@RequestMapping("/order")
|
||||
public class OrderController extends BaseController {
|
||||
|
||||
@PostMapping("/app")
|
||||
public AjaxResult appOrder(){
|
||||
//TODO 校验商品信息(库存)
|
||||
@Autowired
|
||||
private CustomerService customerService;
|
||||
|
||||
//TODO 计算商品费用和运费汇总
|
||||
@Autowired
|
||||
private GoodsService goodsService;
|
||||
|
||||
//TODO 生成主单
|
||||
@Autowired
|
||||
private OrderMasterService orderMasterService;
|
||||
|
||||
@Autowired
|
||||
private OrderDetailService orderDetailService;
|
||||
|
||||
@Autowired
|
||||
private FinancialMasterService financialMasterService;
|
||||
|
||||
@Autowired
|
||||
private FinancialDetailService financialDetailService;
|
||||
|
||||
|
||||
@PostMapping("/server/app")
|
||||
public AjaxResult appOrder(AppOrderRequest appOrderRequest){
|
||||
// 校验用户信息
|
||||
Customer customer = customerService.selectByCustomerId(appOrderRequest.getCustomerId());
|
||||
if(StringUtils.isNull(customer)){
|
||||
return AjaxResult.error("用户不存在!");
|
||||
}
|
||||
// 校验商品信息(库存)
|
||||
boolean flag = goodsService.checkStore(appOrderRequest.getGoodsList());
|
||||
if(!flag){
|
||||
return AjaxResult.error("库存不足!");
|
||||
}
|
||||
// 计算商品费用
|
||||
BigDecimal totalPay = goodsService.calculate(appOrderRequest.getGoodsList());
|
||||
//TODO 生成主单 and 细单
|
||||
OrderMaster orderMaster = orderMasterService.createMasterOrder(appOrderRequest);
|
||||
//TODO 生成细单
|
||||
|
||||
//TODO 生成财务主单
|
||||
|
||||
//TODO 生成财务细单
|
||||
//TODO 生成财务细单(含分销等.)
|
||||
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@ import com.ghy.common.annotation.Excel;
|
|||
import com.ghy.common.core.domain.BaseEntity;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author clunt
|
||||
* 消费者实体
|
||||
|
|
@ -37,5 +39,10 @@ public class Customer extends BaseEntity {
|
|||
@Excel(name = "用户头像", cellType = Excel.ColumnType.STRING)
|
||||
private String customerLogoUrl;
|
||||
|
||||
@Excel(name = "上级分销人", cellType = Excel.ColumnType.NUMERIC)
|
||||
private Long customerPlace;
|
||||
|
||||
@Excel(name = "祖级分销人", cellType = Excel.ColumnType.NUMERIC)
|
||||
private Long parentCustomerPlace;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,34 +0,0 @@
|
|||
package com.ghy.customer.domain;
|
||||
|
||||
import com.ghy.common.annotation.Excel;
|
||||
import com.ghy.common.core.domain.BaseEntity;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author clunt
|
||||
* 用户多级分销,最多不超过3级
|
||||
*/
|
||||
@Data
|
||||
public class CustomerPlace extends BaseEntity {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Excel(name = "分销id", cellType = Excel.ColumnType.NUMERIC)
|
||||
private Long customerPlaceId;
|
||||
|
||||
@Excel(name = "用户id", cellType = Excel.ColumnType.NUMERIC)
|
||||
private Long customerId;
|
||||
|
||||
@Excel(name = "父级id", cellType = Excel.ColumnType.NUMERIC)
|
||||
private Long parentCustomerId;
|
||||
|
||||
@Excel(name = "分销类型", cellType = Excel.ColumnType.STRING)
|
||||
private Integer placeType;
|
||||
|
||||
@Excel(name = "分销比例", cellType = Excel.ColumnType.STRING)
|
||||
private String placeRate;
|
||||
|
||||
@Excel(name = "分销金额", cellType = Excel.ColumnType.STRING)
|
||||
private String placeMoney;
|
||||
|
||||
}
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
package com.ghy.customer.mapper;
|
||||
|
||||
/**
|
||||
* @author clunt
|
||||
* 多级分销接口类
|
||||
*/
|
||||
public interface CustomerPlaceMapper {
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
package com.ghy.customer.service;
|
||||
|
||||
/**
|
||||
* @author clunt
|
||||
* 多级分销
|
||||
*/
|
||||
public interface CustomerPlaceService {
|
||||
|
||||
// 新增分销用户
|
||||
|
||||
// 获取用户分销关系
|
||||
|
||||
// 设置分销比例
|
||||
|
||||
}
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
package com.ghy.customer.service.impl;
|
||||
|
||||
import com.ghy.customer.service.CustomerPlaceService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author clunt
|
||||
* 多级分销实现类
|
||||
*/
|
||||
@Service
|
||||
public class CustomerPlaceServiceImpl implements CustomerPlaceService {
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -5,7 +5,6 @@ import com.ghy.common.exception.ServiceException;
|
|||
import com.ghy.customer.domain.Customer;
|
||||
import com.ghy.customer.mapper.CustomerMapper;
|
||||
import com.ghy.customer.service.CustomerService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
|
@ -18,7 +17,7 @@ import java.util.List;
|
|||
@Service
|
||||
public class CustomerServiceImpl implements CustomerService {
|
||||
|
||||
@Autowired
|
||||
@Resource
|
||||
private CustomerMapper customerMapper;
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -11,6 +11,9 @@
|
|||
<result property="password" column="password" />
|
||||
<result property="status" column="status" />
|
||||
<result property="customerLogoUrl" column="customer_logo_url" />
|
||||
<result property="customerPlace" column="customer_place" />
|
||||
<result property="parentCustomerPlace" column="parent_customer_place" />
|
||||
<result property="customerLogoUrl" column="customer_logo_url" />
|
||||
<result property="createBy" column="create_by" />
|
||||
<result property="createTime" column="create_time" />
|
||||
<result property="updateBy" column="update_by" />
|
||||
|
|
@ -20,7 +23,7 @@
|
|||
|
||||
<sql id="selectCustomer">
|
||||
SELECT customer_id, name, account, phone, open_id, password, status,
|
||||
customer_logo_url, create_by, create_time, remark
|
||||
customer_logo_url, customer_place, parent_customer_place, create_by, create_time, remark
|
||||
FROM customer
|
||||
</sql>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,20 +0,0 @@
|
|||
<?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="com.ghy.customer.mapper.CustomerPlaceMapper">
|
||||
|
||||
<resultMap id="GoodsImgsResult" type="com.ghy.customer.domain.CustomerPlace">
|
||||
<result property="customerPlaceId" column="customer_place_id"/>
|
||||
<result property="customerId" column="customer_id" />
|
||||
<result property="createBy" column="create_by" />
|
||||
<result property="createTime" column="create_time" />
|
||||
<result property="updateBy" column="update_by" />
|
||||
<result property="updateTime" column="update_time" />
|
||||
<result property="remark" column="remark" />
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectCustomerPlace">
|
||||
|
||||
</sql>
|
||||
|
||||
|
||||
</mapper>
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
package com.ghy.goods.mapper;
|
||||
|
||||
import com.ghy.goods.domain.Goods;
|
||||
import com.ghy.goods.request.AppGoodsRequest;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
|
@ -11,6 +12,12 @@ import java.util.List;
|
|||
*/
|
||||
public interface GoodsMapper {
|
||||
|
||||
/**
|
||||
* @param goods 商品信息
|
||||
* @return 校验是否满足库存
|
||||
*/
|
||||
int checkAGoodsStore(AppGoodsRequest goods);
|
||||
|
||||
/**
|
||||
* @param goods 商品属性
|
||||
* @return 成功条数
|
||||
|
|
|
|||
|
|
@ -0,0 +1,21 @@
|
|||
package com.ghy.goods.request;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
|
||||
/**
|
||||
* 小程序下单请求体
|
||||
* @author clunt
|
||||
*/
|
||||
@Data
|
||||
public class AppGoodsRequest {
|
||||
|
||||
// 商品id
|
||||
private Long goodsId;
|
||||
|
||||
// 数量
|
||||
private Integer num;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1,7 +1,9 @@
|
|||
package com.ghy.goods.service;
|
||||
|
||||
import com.ghy.goods.domain.Goods;
|
||||
import com.ghy.goods.request.AppGoodsRequest;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
|
@ -11,6 +13,18 @@ import java.util.List;
|
|||
*/
|
||||
public interface GoodsService {
|
||||
|
||||
/**
|
||||
* @param goodsList 需要校验库存的商品list
|
||||
* @return 校验结果
|
||||
*/
|
||||
boolean checkStore(List<AppGoodsRequest> goodsList);
|
||||
|
||||
/**
|
||||
* @param goodsList 需要校验库存的商品list
|
||||
* @return 商品总价
|
||||
*/
|
||||
BigDecimal calculate(List<AppGoodsRequest> goodsList);
|
||||
|
||||
/**
|
||||
* @param goods 商品属性
|
||||
* @return 成功条数
|
||||
|
|
|
|||
|
|
@ -6,12 +6,14 @@ import com.ghy.common.exception.ServiceException;
|
|||
import com.ghy.common.utils.StringUtils;
|
||||
import com.ghy.goods.domain.Goods;
|
||||
import com.ghy.goods.mapper.GoodsMapper;
|
||||
import com.ghy.goods.request.AppGoodsRequest;
|
||||
import com.ghy.goods.service.GoodsService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
|
@ -25,6 +27,27 @@ public class GoodsServiceImpl implements GoodsService {
|
|||
@Resource
|
||||
private GoodsMapper goodsMapper;
|
||||
|
||||
@Override
|
||||
public boolean checkStore(List<AppGoodsRequest> goodsList) {
|
||||
for (AppGoodsRequest goods : goodsList) {
|
||||
int num = goodsMapper.checkAGoodsStore(goods);
|
||||
if (num == 0) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BigDecimal calculate(List<AppGoodsRequest> goodsList) {
|
||||
BigDecimal totalPay = BigDecimal.ZERO;
|
||||
for (AppGoodsRequest appGoodsRequest : goodsList){
|
||||
Goods goods = goodsMapper.selectById(appGoodsRequest.getGoodsId());
|
||||
totalPay = totalPay.add(goods.getGoodsPrice().multiply(BigDecimal.valueOf(appGoodsRequest.getNum())));
|
||||
}
|
||||
return totalPay;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public int insertGoods(Goods goods) {
|
||||
|
|
|
|||
|
|
@ -30,6 +30,12 @@
|
|||
FROM goods
|
||||
</sql>
|
||||
|
||||
<select id="checkAGoodsStore" parameterType="com.ghy.goods.request.AppGoodsRequest" resultMap="GoodsResult">
|
||||
<include refid="selectGoods" />
|
||||
where goods_id = #{goodsId} and goods_number >= #{num}
|
||||
|
||||
</select>
|
||||
|
||||
<update id="updateGoods" parameterType="com.ghy.goods.domain.Goods">
|
||||
UPDATE goods
|
||||
<set>
|
||||
|
|
|
|||
|
|
@ -23,6 +23,11 @@
|
|||
<artifactId>ghy-common</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.ghy</groupId>
|
||||
<artifactId>ghy-goods</artifactId>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,36 @@
|
|||
package com.ghy.order.request;
|
||||
|
||||
import com.ghy.goods.request.AppGoodsRequest;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 小程序下单请求体
|
||||
* @author clunt
|
||||
*/
|
||||
@Data
|
||||
public class AppOrderRequest {
|
||||
|
||||
// 消费者id
|
||||
private Long customerId;
|
||||
|
||||
// 用于计算价格等
|
||||
private List<AppGoodsRequest> goodsList;
|
||||
|
||||
// 预约上门时间
|
||||
private String serverTime;
|
||||
|
||||
// 地址
|
||||
private Long addressId;
|
||||
|
||||
// 支付方式
|
||||
private Integer payType;
|
||||
|
||||
//是否需要发票
|
||||
private Integer isNeedBill;
|
||||
|
||||
// 备注
|
||||
private String remark;
|
||||
|
||||
}
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
package com.ghy.order.service;
|
||||
|
||||
import com.ghy.order.domain.OrderMaster;
|
||||
import com.ghy.order.request.AppOrderRequest;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
|
@ -11,6 +12,8 @@ import java.util.List;
|
|||
*/
|
||||
public interface OrderMasterService {
|
||||
|
||||
OrderMaster createMasterOrder(AppOrderRequest appOrderRequest);
|
||||
|
||||
/**
|
||||
* @param orderMaster 主订单属性
|
||||
* @return 成功条数
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import com.ghy.common.constant.UserConstants;
|
|||
import com.ghy.common.core.text.Convert;
|
||||
import com.ghy.order.domain.OrderMaster;
|
||||
import com.ghy.order.mapper.OrderMasterMapper;
|
||||
import com.ghy.order.request.AppOrderRequest;
|
||||
import com.ghy.order.service.OrderMasterService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
|
|
@ -21,6 +22,11 @@ public class OrderMasterServiceImpl implements OrderMasterService {
|
|||
@Resource
|
||||
private OrderMasterMapper orderMasterMapper;
|
||||
|
||||
@Override
|
||||
public OrderMaster createMasterOrder(AppOrderRequest appOrderRequest) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int insertOrderMaster(OrderMaster orderMaster) {
|
||||
return orderMasterMapper.insertOrderMaster(orderMaster);
|
||||
|
|
|
|||
Loading…
Reference in New Issue