Commit 89ae3285 authored by jiaorz's avatar jiaorz

Merge branch 'master-order'

parents 52161f5c 2c40773b
package com.xxfc.platform.activity.entity;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.List;
@Data
@Table(name = "activity_product")
public class ActivityProduct {
/**
* 主键
*/
@Id
private Long id;
/**
* 创建时间
*/
@Column(name = "crt_time")
private Long crtTime;
/**
* 更新时间
*/
@Column(name = "upd_time")
private Long updTime;
/**
* 活动名称
*/
private String name;
/**
* 活动开始时间
*/
@Column(name = "start_time")
private Long startTime;
/**
* 活动结束时间
*/
@Column(name = "end_time")
private Long endTime;
/**
* 购买数量限制
*/
@Column(name = "num_limit")
private Integer numLimit;
/**
* 领取人数限制
*/
@Column(name = "has_join_num")
private Integer hasJoinNum;
/**
* 当前状态 1--上架 2--下架
*/
private Boolean status;
/**
* 排序
*/
private Boolean sort;
/**
* 活动图片
*/
private String picture;
/**
* 类型 1--优惠券; 2--
*/
private Boolean type;
/**
* 活动时期类型:0-永久,1-有期限
*/
@Column(name = "time_type")
private Boolean timeType;
@Column(name = "is_del")
private Boolean isDel;
/**
* 规格ID
*/
@Column(name = "specs_id")
private Integer specsId;
/**
* 销量
*/
private Integer sales;
/**
* 库存
*/
private Integer stock;
/**
* 详情介绍
*/
private String detail;
/**
* 说明
*/
private String explainInfo;
@Transient
List<ActivityProductSpecs> list;
}
\ No newline at end of file
package com.xxfc.platform.activity.entity;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;
import java.math.BigDecimal;
@Data
@Table(name = "active_product_specs")
public class ActivityProductSpecs {
/**
* 主键id
*/
@Id
private Long id;
/**
* 商品id
*/
@Column(name = "goods_id")
private Long goodsId;
/**
* 规格编号
*/
private String code;
/**
* 规格图片
*/
@Column(name = "specs_img")
private String specsImg;
/**
* 排序
*/
@Column(name = "specs_seq")
private Integer specsSeq;
/**
* 规格价格
*/
@Column(name = "goods_price")
private BigDecimal goodsPrice;
/**
* 成本价
*/
@Column(name = "specs_cost_price")
private BigDecimal specsCostPrice;
/**
* 创建人ID
*/
@Column(name = "crt_user")
private Long crtUser;
/**
* 创建时间
*/
@Column(name = "crt_time")
private Integer crtTime;
/**
* 更新人id
*/
@Column(name = "upd_user")
private Long updUser;
/**
* 更新时间
*/
@Column(name = "upd_time")
private Integer updTime;
/**
* 是否删除:0-正常;1-删除
*/
@Column(name = "is_del")
private Boolean isDel;
/**
* 销量
*/
private Integer sales;
/**
* 库存
*/
private Integer stock;
/**
* 关联商品ID
*/
@Column(name = "active_id")
private Integer activeId;
/**
* 规格json
*/
@Column(name = "goods_specs")
private String goodsSpecs;
}
\ No newline at end of file
......@@ -4,8 +4,9 @@ import com.github.wxiaoqi.security.admin.dto.UserInfoDTO;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.activity.dto.ActivityListDTO;
import com.xxfc.platform.activity.dto.ActivityPopularizeRelationDTO;
import com.xxfc.platform.activity.entity.ActivityProduct;
import com.xxfc.platform.activity.entity.ActivityProductSpecs;
import com.xxfc.platform.activity.entity.Coupon;
import com.xxfc.platform.activity.entity.IntegralUserTotal;
import com.xxfc.platform.activity.vo.UserCouponVo;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
......@@ -13,7 +14,6 @@ import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
......@@ -86,4 +86,21 @@ public interface ActivityFeign {
@ApiOperation("获取所用优惠卷")
@GetMapping("/coupon/couponsBycouponIds")
List<Coupon> couponsByTickerNoList(@RequestParam(value = "tickerNoList") List<String> tickerNoList);
@RequestMapping(value = "/user/getCoupon", method = RequestMethod.GET)
public ObjectRestResponse getCoupon(@RequestParam("userId")Integer userId, @RequestParam("couponId")Integer couponId);
@GetMapping(value = "/activity/specs/app/unauth/get")
public ObjectRestResponse<ActivityProductSpecs> get(@RequestParam("id") Long id);
@GetMapping(value = "/activity/product/app/unauth/get")
public ObjectRestResponse<ActivityProduct> getOne(@RequestParam("id")Long id);
@PostMapping(value = "/activity/specs/app/unauth/update")
public ObjectRestResponse update(@RequestBody ActivityProductSpecs activityProductSpecs);
@PostMapping(value = "/activity/product/app/unauth/update")
public ObjectRestResponse updateProduct(@RequestBody ActivityProduct activityProduct);
}
package com.xxfc.platform.activity.vo;
import com.xxfc.platform.activity.entity.ActivityProduct;
import com.xxfc.platform.activity.entity.ActivityProductSpecs;
import lombok.Data;
import java.util.List;
@Data
public class ActivityProductVo extends ActivityProduct {
List<ActivityProductSpecs> list;
}
package com.xxfc.platform.activity.biz;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.activity.entity.ActivityProduct;
import com.xxfc.platform.activity.entity.ActivityProductSpecs;
import com.xxfc.platform.activity.mapper.ActivityProductMapper;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import tk.mybatis.mapper.entity.Example;
import java.util.List;
@Service
@Slf4j
@Api("活动商品")
public class ActivityProductBiz extends BaseBiz<ActivityProductMapper, ActivityProduct> {
@Autowired
ActivityProductSpecsBiz activityProductSpecsBiz;
/**
* 添加活动商品
* @param activityProduct
* @return
*/
public ObjectRestResponse add(ActivityProduct activityProduct) {
if (activityProduct == null) {
return ObjectRestResponse.paramIsEmpty();
}
//新增
if (activityProduct.getId() == null) {
insertSelectiveRe(activityProduct);
} else { //修改
ActivityProduct oldValue = getOne(activityProduct.getId());
BeanUtil.copyProperties(activityProduct, oldValue, CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true));
updateSelectiveByIdRe(oldValue);
return ObjectRestResponse.succ(oldValue);
}
return ObjectRestResponse.succ(activityProduct);
}
public ActivityProduct getOne(Long id) {
Example example = new Example(ActivityProduct.class);
example.createCriteria().andEqualTo("id", id).andEqualTo("isDel", false);
ActivityProduct activityProduct = mapper.selectOneByExample(example);
if(activityProduct != null) {
List<ActivityProductSpecs> activityProductSpecs = activityProductSpecsBiz.getAllByActiveId(activityProduct.getId());
activityProduct.setList(activityProductSpecs);
}
return activityProduct;
}
public ObjectRestResponse update(ActivityProduct activityProduct) {
if (activityProduct == null || activityProduct.getId() == null) {
return ObjectRestResponse.paramIsEmpty();
}
ActivityProduct oldValue = selectById(activityProduct.getId());
if (oldValue != null) { //增加销量,减少库存
oldValue.setSales(oldValue.getSales() + activityProduct.getSales());
if (oldValue.getStock() > 0) {
oldValue.setStock(oldValue.getStock() - activityProduct.getSales());
updateSelectiveByIdRe(oldValue);
return ObjectRestResponse.succ(oldValue);
} else {
return ObjectRestResponse.createFailedResult(ResultCode.FAILED_CODE, "库存不足");
}
} else {
return ObjectRestResponse.createFailedResult(ResultCode.FAILED_CODE, "商品不存在!");
}
}
public List<ActivityProduct> getAll() {
Example example = new Example(ActivityProduct.class);
example.createCriteria().andEqualTo("status", true).andEqualTo("isDel", false);
List<ActivityProduct> list = mapper.selectByExample(example);
if (list != null && list.size() > 0) {
list.parallelStream().forEach(activityProduct -> {
List<ActivityProductSpecs> activityProductSpecs = activityProductSpecsBiz.getAllByActiveId(activityProduct.getId());
activityProduct.setList(activityProductSpecs);
});
}
return list;
}
}
package com.xxfc.platform.activity.biz;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.activity.entity.ActivityProductSpecs;
import com.xxfc.platform.activity.mapper.ActivityProductSpecsMapper;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import tk.mybatis.mapper.entity.Example;
import java.util.ArrayList;
import java.util.List;
@Service
@Slf4j
@Api("活动商品规格")
public class ActivityProductSpecsBiz extends BaseBiz<ActivityProductSpecsMapper, ActivityProductSpecs> {
public ObjectRestResponse add(ActivityProductSpecs activityProductSpecs) {
if (activityProductSpecs == null) {
return ObjectRestResponse.paramIsEmpty();
}
if (activityProductSpecs.getId() == null) {
insertSelectiveRe(activityProductSpecs);
} else {
ActivityProductSpecs oldValue = getOne(activityProductSpecs.getId());
BeanUtil.copyProperties(activityProductSpecs, oldValue, CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true));
updateSelectiveByIdRe(oldValue);
return ObjectRestResponse.succ(oldValue);
}
return ObjectRestResponse.succ(activityProductSpecs);
}
public ActivityProductSpecs getOne(Long id) {
Example example = new Example(ActivityProductSpecs.class);
example.createCriteria().andEqualTo("id", id).andEqualTo("isDel", false);
return mapper.selectOneByExample(example);
}
public List<ActivityProductSpecs> getAllByActiveId(Long activeId) {
if (activeId == null) {
return new ArrayList<>();
}
Example example = new Example(ActivityProductSpecs.class);
example.createCriteria().andEqualTo("goodsId", activeId).andEqualTo("isDel", false);
return mapper.selectByExample(example);
}
public ObjectRestResponse update(ActivityProductSpecs activityProductSpecs) {
if (activityProductSpecs == null || activityProductSpecs.getId() == null) {
return ObjectRestResponse.paramIsEmpty();
}
ActivityProductSpecs oldValue = selectById(activityProductSpecs.getId());
if (oldValue != null) { //增加销量,减少库存
if (oldValue.getStock() > 0) {
oldValue.setSales(oldValue.getSales() + activityProductSpecs.getSales());
oldValue.setStock(oldValue.getStock() - activityProductSpecs.getSales());
updateSelectiveByIdRe(oldValue);
return ObjectRestResponse.succ(oldValue);
} else {
return ObjectRestResponse.createFailedResult(ResultCode.FAILED_CODE, "库存不足");
}
} else {
return ObjectRestResponse.createFailedResult(ResultCode.FAILED_CODE, "商品不存在!");
}
}
}
package com.xxfc.platform.activity.mapper;
import com.xxfc.platform.activity.entity.ActivityProduct;
import tk.mybatis.mapper.common.Mapper;
public interface ActivityProductMapper extends Mapper<ActivityProduct> {
}
\ No newline at end of file
package com.xxfc.platform.activity.mapper;
import com.xxfc.platform.activity.entity.ActivityProductSpecs;
import tk.mybatis.mapper.common.Mapper;
public interface ActivityProductSpecsMapper extends Mapper<ActivityProductSpecs> {
}
\ No newline at end of file
package com.xxfc.platform.activity.rest;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.BaseController;
import com.xxfc.platform.activity.biz.ActivityProductBiz;
import com.xxfc.platform.activity.entity.ActivityProduct;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping(value = "/activity/product")
public class ActivityProductController extends BaseController<ActivityProductBiz, ActivityProduct> {
@GetMapping(value = "/app/unauth/getAll")
public ObjectRestResponse getAll() {
return ObjectRestResponse.succ(baseBiz.getAll());
}
@GetMapping(value = "/app/unauth/get")
public ObjectRestResponse<ActivityProduct> getOne(Long id) {
return ObjectRestResponse.succ(baseBiz.getOne(id));
}
@PostMapping(value = "/app/unauth/add")
public ObjectRestResponse add(@RequestBody ActivityProduct activityProduct) {
return baseBiz.add(activityProduct);
}
@PostMapping(value = "/app/unauth/update")
public ObjectRestResponse updateProduct(@RequestBody ActivityProduct activityProduct) {
return baseBiz.update(activityProduct);
}
}
package com.xxfc.platform.activity.rest;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.BaseController;
import com.xxfc.platform.activity.biz.ActivityProductSpecsBiz;
import com.xxfc.platform.activity.entity.ActivityProductSpecs;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping(value = "/activity/specs")
public class ActivityProductSpecsController extends BaseController<ActivityProductSpecsBiz, ActivityProductSpecs> {
@PostMapping(value = "/app/unauth/add")
public ObjectRestResponse add(@RequestBody ActivityProductSpecs activityProductSpecs) {
return baseBiz.add(activityProductSpecs);
}
@GetMapping(value = "/app/unauth/get")
public ObjectRestResponse<ActivityProductSpecs> get(Long id) {
return ObjectRestResponse.succ(baseBiz.getOne(id));
}
@GetMapping(value = "/app/unauth/getAllByActivityId")
public ObjectRestResponse getAllByActiveId(Long activityId) {
return ObjectRestResponse.succ(baseBiz.getAllByActiveId(activityId));
}
@PostMapping(value = "/app/unauth/update")
public ObjectRestResponse update(@RequestBody ActivityProductSpecs activityProductSpecs) {
return baseBiz.update(activityProductSpecs);
}
}
......@@ -3,7 +3,6 @@ package com.xxfc.platform.activity.rest;
import com.github.wxiaoqi.security.admin.dto.UserInfoDTO;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.activity.biz.ActivityUserJoinBiz;
import com.xxfc.platform.activity.biz.UserCouponBiz;
import com.xxfc.platform.activity.vo.UserCouponVo;
......@@ -106,6 +105,12 @@ public class UserCouponController extends ActivityBaseController<UserCouponBiz>
return joinBiz.receiveCoupn(userId);
}
@RequestMapping(value = "/getCoupon", method = RequestMethod.GET)
public ObjectRestResponse getCoupon(Integer userId, Integer couponId) {
return ObjectRestResponse.succ(baseBiz.adminUserLedCoupon(userId, couponId));
}
@ApiOperation("检查用户是否可领取")
@RequestMapping(value = "/coupon/check", method = RequestMethod.GET)
public ObjectRestResponse check() {
......
......@@ -26,6 +26,8 @@
<javaClientGenerator targetPackage="${targetMapperPackage}" targetProject="${targetJavaProject}"
type="XMLMAPPER"/>
<table tableName="ticket_collection_record" domainObjectName="TicketCollectionRecord"></table>
<table tableName="activity_product" domainObjectName="ActivityProduct"></table>
<table tableName="active_product_specs" domainObjectName="ActivityProductSpecs"></table>
</context>
</generatorConfiguration>
\ No newline at end of file
<?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.xxfc.platform.activity.mapper.ActivityProductMapper" >
</mapper>
\ No newline at end of file
<?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.xxfc.platform.activity.mapper.ActivityProductSpecsMapper" >
<resultMap id="BaseResultMap" type="com.xxfc.platform.activity.entity.ActivityProductSpecs" >
<!--
WARNING - @mbg.generated
-->
<id column="id" property="id" jdbcType="BIGINT" />
<result column="goods_id" property="goodsId" jdbcType="BIGINT" />
<result column="code" property="code" jdbcType="VARCHAR" />
<result column="specs_img" property="specsImg" jdbcType="VARCHAR" />
<result column="specs_seq" property="specsSeq" jdbcType="INTEGER" />
<result column="goods_price" property="goodsPrice" jdbcType="DECIMAL" />
<result column="specs_cost_price" property="specsCostPrice" jdbcType="DECIMAL" />
<result column="crt_user" property="crtUser" jdbcType="BIGINT" />
<result column="crt_time" property="crtTime" jdbcType="INTEGER" />
<result column="upd_user" property="updUser" jdbcType="BIGINT" />
<result column="upd_time" property="updTime" jdbcType="INTEGER" />
<result column="is_del" property="isDel" jdbcType="BIT" />
<result column="sales" property="sales" jdbcType="INTEGER" />
<result column="stock" property="stock" jdbcType="INTEGER" />
<result column="active_id" property="activeId" jdbcType="INTEGER" />
<result column="goods_specs" property="goodsSpecs" jdbcType="LONGVARCHAR" />
</resultMap>
</mapper>
\ No newline at end of file
......@@ -13,6 +13,7 @@ public enum ItemTypeEnum {
TOUR_INSURE(203, "旅游保险"),
MEMBER(301, "会员"),
ACCOMPANY(104, "随车物品"),
ACTIVITY(401, "活动订单"),
;
/**
* 编码
......
......@@ -7,6 +7,7 @@ public enum OrderTypeEnum {
RENT_VEHICLE(1, "租车订单"),
TOUR(2, "旅游订单"),
MEMBER(3, "会员订单"),
ACTIVITY(4, "活动订单"),
;
/**
* 编码
......
package com.xxfc.platform.order.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
@Data
@Table(name = "order_active_detail")
public class OrderActiveDetail {
@Id
@GeneratedValue(generator = "JDBC")
@ApiModelProperty("主键")
private Integer id;
@Column(name = "crt_time")
private Date crtTime;
@Column(name = "upd_time")
private Date updTime;
/**
* 订单ID
*/
@Column(name = "order_id")
private Integer orderId;
/**
* 产品ID
*/
@Column(name = "product_id")
private Long productId;
/**
* 产品规格json
*/
@Column(name = "product_specs")
private String productSpecs;
/**
* 购买数量
*/
private Integer number;
/**
* 规格ID
*/
@Column(name = "specs_id")
private Long specsId;
/**
* 产品名称
*/
@Column(name = "product_name")
private String productName;
/**
* 1、优惠券
*/
private Integer type;
}
\ No newline at end of file
package com.xxfc.platform.order.pojo.dto;
import com.github.wxiaoqi.security.common.vo.PageParam;
import lombok.Data;
@Data
public class OrderActiveDto extends PageParam {
private String phone;
private Integer userId;
private Integer type;
private Integer status;
private String startTime;
private String endTime;
private String no;
}
package com.xxfc.platform.order.pojo.dto;
import com.xxfc.platform.order.entity.OrderActiveDetail;
import lombok.Data;
@Data
public class OrderActivityDto extends OrderActiveDetail {
private Integer page;
private Integer limit;
//商品图片
private String picture;
//商品名称
private String name;
//订单号
private String orderNo;
//开始时间
private Long startTime;
//结束时间
private Long endTime;
//手机号
private String mobile;
private Long userId;
//订单状态
private Integer status;
}
package com.xxfc.platform.order.pojo.order;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.OrderActiveDetail;
import com.xxfc.platform.order.entity.OrderItem;
import com.xxfc.platform.order.entity.inter.OrderDetail;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
public class ActivityOrderBO extends OrderActiveDetail implements OrderDetail {
private BaseOrder order;
private AppUserDTO appUserDTO;
/**
* 促成人联系方式
*/
@ApiModelProperty(value = "促成人联系方式")
String facilitatePhone;
/**
* 下单来源,1--app;2--小程序
*/
private Integer orderOrigin;
/**
* 优惠券*
*/
private List<String> tickerNo;
/**
* 订单子项
*/
List<OrderItem> items;
//商品图片
private String picture;
//商品名称
private String name;
}
......@@ -2,15 +2,12 @@ package com.xxfc.platform.order.pojo.order;
import com.xxfc.platform.activity.entity.Coupon;
import com.xxfc.platform.order.entity.*;
import com.xxfc.platform.order.pojo.DetailsOfExpenses;
import com.xxfc.platform.order.pojo.OrderAccompanyDTO;
import com.xxfc.platform.order.pojo.price.RentVehiclePriceVO;
import com.xxfc.platform.vehicle.entity.VehicleUserLicense;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
......@@ -23,6 +20,8 @@ public class OrderListVo extends BaseOrder {
OrderMemberDetail orderMemberDetail;
OrderActiveDetail orderActiveDetail;
List<VehicleUserLicense> vehicleUserLicenses;
private String username;
......
......@@ -18,7 +18,7 @@ public class OrderPageVO extends BaseOrder {
OrderTourDetail orderTourDetail;
OrderMemberDetail orderMemberDetail;
OrderActiveDetail orderActiveDetail;
List<VehicleUserLicense> vehicleUserLicenses;
//更换还车公司记录
......
package com.xxfc.platform.order.pojo.vo;
import com.xxfc.platform.order.entity.OrderActiveDetail;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class OrderActivityVo extends OrderActiveDetail {
private Integer userId;
//姓名
private String realName;
//手机号
private String mobile;
//订单号
private String orderNo;
//下单时间
private Date orderTime;
//订单实际金额
private BigDecimal realAmount;
//单价
private BigDecimal goodsAmount;
private String image;
private Integer status;
}
......@@ -21,6 +21,7 @@ import com.github.wxiaoqi.security.common.util.Query;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.google.common.collect.Lists;
import com.xxfc.platform.activity.entity.ActivityProductSpecs;
import com.xxfc.platform.activity.entity.Coupon;
import com.xxfc.platform.activity.feign.ActivityFeign;
import com.xxfc.platform.order.biz.inner.OrderCalculateBiz;
......@@ -133,6 +134,10 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
@Autowired
OrderCalculateBiz orderCalculateBiz;
@Autowired
OrderActivityDetailBiz orderActivityDetailBiz;
public static final DateTimeFormatter DEFAULT_DATE_TIME_FORMATTER = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
......@@ -691,6 +696,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
OrderRentVehicleDetail orvd = new OrderRentVehicleDetail();
OrderTourDetail otd = new OrderTourDetail();
OrderMemberDetail omd = new OrderMemberDetail();
OrderActiveDetail activeDetail = new OrderActiveDetail();
BaseOrder baseOrder = this.selectOne(new BaseOrder() {{
setNo(orderNo);
}});
......@@ -758,6 +764,23 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
//站点总人数添加
tourFeign.updateTourGoodPersonNum(otd.getVerificationId(), TourFeign.TOTAL_PERSON, otd.getTotalNumber());
} else if(OrderTypeEnum.ACTIVITY.getCode().equals(baseOrder.getType())) { //活动订单回调
updateOrder.setStatus(OrderStatusEnum.ORDER_FINISH.getCode());
activeDetail = orderActivityDetailBiz.getOne(baseOrder.getId());
if (activeDetail != null) {
ActivityProductSpecs activityProductSpecs = activityFeign.get(activeDetail.getSpecsId()).getData();
if (activityProductSpecs != null) {
for (int i =0; i < activeDetail.getNumber(); i++) {
ObjectRestResponse objectRestResponse = activityFeign.getCoupon(baseOrder.getUserId(), activityProductSpecs.getActiveId());
if (objectRestResponse.isRel()) {
log.info("优惠券发送成功:{}, {}, {}", baseOrder.getUserId(), activityProductSpecs.getActiveId(), objectRestResponse.getData());
} else {
log.error("优惠券发送失败:{}, {}", baseOrder.getUserId(), activityProductSpecs.getActiveId());
}
}
}
}
}
try {
......
package com.xxfc.platform.order.biz;
import com.github.wxiaoqi.security.admin.entity.AppUserLogin;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.admin.feign.dto.UserDTO;
import com.github.wxiaoqi.security.admin.feign.rest.UserRestInterface;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.Query;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.order.entity.OrderActiveDetail;
import com.xxfc.platform.order.mapper.OrderActiveDetailMapper;
import com.xxfc.platform.order.pojo.dto.OrderActiveDto;
import com.xxfc.platform.order.pojo.vo.OrderActivityVo;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import tk.mybatis.mapper.entity.Example;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
@Slf4j
@Api("活动订单详情")
public class OrderActivityDetailBiz extends BaseBiz<OrderActiveDetailMapper, OrderActiveDetail> implements UserRestInterface {
@Autowired
UserFeign userFeign;
@Override
public UserFeign getUserFeign() {
return userFeign;
}
public ObjectRestResponse getAll(OrderActiveDto dto) {
//判断token是否存在
UserDTO userDTO = getAdminUserInfo();
if (userDTO == null) {
return ObjectRestResponse.succ(new PageDataVO<>());
}
if (StringUtils.isNotBlank(dto.getPhone())) {
AppUserLogin appUserLogin = userFeign.one(dto.getPhone());
if (appUserLogin != null) {
dto.setUserId(appUserLogin.getId());
}
}
Query query = new Query(dto);
PageDataVO<OrderActivityVo> pageDataVO = PageDataVO.pageInfo(query, () -> mapper.getAllActivityOrder(query.getSuper()));
if (pageDataVO != null && pageDataVO.getData() != null) {
pageDataVO.getData().parallelStream().forEach(orderActivityVo -> {
AppUserDTO appUserVo = userFeign.userDetailById(orderActivityVo.getUserId()).getData();
if (appUserVo != null) {
orderActivityVo.setMobile(appUserVo.getUsername());
orderActivityVo.setRealName(appUserVo.getRealname());
}
});
}
return ObjectRestResponse.succ(pageDataVO);
}
public ObjectRestResponse orderDetail(String no, AppUserDTO appUserDTO) {
if (StringUtils.isBlank(no)) {
return ObjectRestResponse.paramIsEmpty();
}
Map<String, Object> param = new HashMap<>();
param.put("no", no);
param.put("userId", appUserDTO.getUserid());
List<OrderActivityVo> list = mapper.getAllActivityOrder(param);
if (list != null && list.size() > 0) {
return ObjectRestResponse.succ(list.get(0));
}
return ObjectRestResponse.createFailedResult(ResultCode.FAILED_CODE, "订单不存在");
}
public OrderActiveDetail getOne(Integer orderId) {
Example example = new Example(OrderActiveDetail.class);
example.createCriteria().andEqualTo("orderId", orderId);
return mapper.selectOneByExample(example);
}
}
......@@ -3,12 +3,13 @@ package com.xxfc.platform.order.biz.inner;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.activity.entity.ActivityProduct;
import com.xxfc.platform.activity.entity.ActivityProductSpecs;
import com.xxfc.platform.activity.feign.ActivityFeign;
import com.xxfc.platform.order.biz.*;
import com.xxfc.platform.order.contant.enumerate.*;
......@@ -68,6 +69,9 @@ public class OrderCancelBiz {
@Autowired
OrderRentVehicleBiz orderRentVehicleBiz;
@Autowired
OrderActivityDetailBiz orderActivityDetailBiz;
@Autowired
OrderMsgBiz orderMsgBiz;
......@@ -109,6 +113,9 @@ public class OrderCancelBiz {
cancelAble.put(OrderTypeEnum.MEMBER.getCode(), new LinkedList<Integer>(){{
add(OrderStatusEnum.ORDER_UNPAY.getCode());
}});
cancelAble.put(OrderTypeEnum.ACTIVITY.getCode(), new LinkedList<Integer>(){{
add(OrderStatusEnum.ORDER_UNPAY.getCode());
}});
}
/**
......@@ -117,9 +124,11 @@ public class OrderCancelBiz {
*/
@Transactional
public void cancel(BaseOrder baseOrder, BigDecimal changeViolateAmount) {
//三类型订单详情
OrderRentVehicleDetail orvd = new OrderRentVehicleDetail();
OrderTourDetail otd = new OrderTourDetail();
OrderMemberDetail omd = new OrderMemberDetail();
OrderActiveDetail orderActiveDetail = new OrderActiveDetail();
if(cancelAble.get(baseOrder.getType()).contains(baseOrder.getStatus())) {
BaseOrder updateOrder = new BaseOrder(){{
setId(baseOrder.getId());
......@@ -127,7 +136,7 @@ public class OrderCancelBiz {
setCancelReason(baseOrder.getCancelReason());
setVersion(baseOrder.getVersion());
}};
BeanUtils.copyProperties(baseOrderBiz.updateSelectiveByIdReT(updateOrder), baseOrder);;
BeanUtils.copyProperties(baseOrderBiz.updateSelectiveByIdReT(updateOrder), baseOrder);
InProgressVO inProgressVO = null;
OrderAccountDetail oad = new OrderAccountDetail();
......@@ -374,6 +383,24 @@ public class OrderCancelBiz {
//增加库存
tourFeign.stock(otd.getSpePriceId(), otd.getTotalNumber(), TourFeign.STOCK_PLUS);
} else if(OrderTypeEnum.ACTIVITY.getCode().equals(baseOrder.getType())) {//活动订单
orderActiveDetail = orderActivityDetailBiz.getOne(baseOrder.getId());
//增加库存
if(orderActiveDetail != null) {
ActivityProductSpecs activityProductSpecs = activityFeign.get(orderActiveDetail.getSpecsId()).getData();
if (activityProductSpecs != null) {
//修改规格库存
activityProductSpecs.setSales(orderActiveDetail.getNumber());
activityFeign.update(activityProductSpecs);
//修改商品库存
ActivityProduct activityProduct = new ActivityProduct();
activityProduct.setId(activityProductSpecs.getGoodsId());
activityProduct.setSales(orderActiveDetail.getNumber());
activityFeign.updateProduct(activityProduct);
}
}
}
//返还优惠券
......
package com.xxfc.platform.order.mapper;
import com.xxfc.platform.order.entity.OrderActiveDetail;
import com.xxfc.platform.order.pojo.vo.OrderActivityVo;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
import java.util.Map;
public interface OrderActiveDetailMapper extends Mapper<OrderActiveDetail> {
List<OrderActivityVo> getAllActivityOrder(Map<String, Object> param);
}
\ No newline at end of file
......@@ -366,7 +366,7 @@ public class BaseOrderController extends CommonBaseController implements UserRes
*/
private String oneNo;
private Integer status;
//订单用户ID列表
private List<Integer> userIds;
//订单用户大区id列表
......
package com.xxfc.platform.order.rest;
import cn.hutool.core.bean.BeanUtil;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.BaseController;
import com.xxfc.platform.order.biz.OrderActivityDetailBiz;
import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.OrderActiveDetail;
import com.xxfc.platform.order.pojo.dto.OrderActiveDto;
import com.xxfc.platform.order.pojo.dto.OrderActivityDto;
import com.xxfc.platform.order.pojo.order.ActivityOrderBO;
import com.xxfc.platform.order.service.OrderActivityService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
@RestController
@RequestMapping(value = "/order/activity")
public class OrderActivityController extends BaseController<OrderActivityDetailBiz, OrderActiveDetail> {
@Autowired
UserFeign userFeign;
@Autowired
OrderActivityService orderActivityService;
@RequestMapping(value = "add", method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "确认活动订单")
public ObjectRestResponse<BaseOrder> add(@RequestBody OrderActivityDto dto, HttpServletRequest request) {
ActivityOrderBO bo = BeanUtil.toBean(dto, ActivityOrderBO.class);
bo.setAppUserDTO(userFeign.userDetailByToken(request.getHeader("Authorization")).getData());
//查询优惠券
orderActivityService.createOrder(bo);
return ObjectRestResponse.succ(bo.getOrder());
}
@GetMapping(value = "/getAll")
public ObjectRestResponse getAll(OrderActiveDto dto) {
return baseBiz.getAll(dto);
}
@GetMapping(value = "/detail")
public ObjectRestResponse orderDetail(String no) {
return baseBiz.orderDetail(no, userFeign.userDetailByToken(request.getHeader("Authorization")).getData());
}
}
package com.xxfc.platform.order.service;
import cn.hutool.core.bean.BeanUtil;
import com.github.wxiaoqi.security.admin.feign.rest.UserRestInterface;
import com.xxfc.platform.activity.entity.ActivityProduct;
import com.xxfc.platform.activity.entity.ActivityProductSpecs;
import com.xxfc.platform.activity.entity.Coupon;
import com.xxfc.platform.activity.feign.ActivityFeign;
import com.xxfc.platform.order.biz.OrderActivityDetailBiz;
import com.xxfc.platform.order.contant.enumerate.ItemTypeEnum;
import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.entity.OrderItem;
import com.xxfc.platform.order.pojo.order.ActivityOrderBO;
import com.xxfc.platform.order.pojo.price.OrderPriceVO;
import com.xxfc.platform.universal.constant.DictionaryKey;
import com.xxfc.platform.universal.feign.ThirdFeign;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.stream.Collectors;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_TRUE;
import static com.xxfc.platform.universal.constant.DictionaryKey.APP_ORDER;
@Service
@Slf4j
public class OrderActivityService extends AbstractOrderHandle<OrderActivityDetailBiz, ActivityOrderBO> implements UserRestInterface {
@Autowired
ThirdFeign thirdFeign;
@Autowired
ActivityFeign activityFeign;
private static Long autoCancelTime;
@PostConstruct
public void init() {
this.channel = Coupon.CHANNEL_MEMBER;
this.orderTypeEnum = OrderTypeEnum.ACTIVITY;
}
@Override
public void initDetail(ActivityOrderBO bo) {
super.initDetail(bo);
initDictionary();
}
public void initDictionary() {
dictionaryMap = thirdFeign.dictionaryGetAll4Map().getData();
this.autoCancelTime = Long.valueOf(dictionaryMap.get(APP_ORDER + "_" + DictionaryKey.ACT_MEMBER).getDetail());
}
@Override
public void handleDetail(ActivityOrderBO bo) {
//设置订单状态为3
bo.getOrder().setStatus(OrderStatusEnum.ORDER_UNPAY.getCode());
bo.getOrder().setName(bo.getProductName());
bo.getOrder().setPicture(bo.getPicture());
super.handleDetail(bo);
ActivityProductSpecs activityProductSpecs = activityFeign.get(bo.getSpecsId()).getData();
if (activityProductSpecs != null) {
bo.getOrder().setGoodsAmount(activityProductSpecs.getGoodsPrice());
//修改规格库存
if (activityProductSpecs.getStock() > 0) {
activityProductSpecs.setSales(bo.getNumber());
activityFeign.update(activityProductSpecs);
//修改商品库存
ActivityProduct activityProduct = new ActivityProduct();
activityProduct.setId(activityProductSpecs.getGoodsId());
activityProduct.setSales(bo.getNumber());
activityFeign.updateProduct(activityProduct);
}
}
//发送定时取消订单(30分钟)
rabbitProduct.sendDelayMessage(bo.getOrder(), autoCancelTime);
}
@Override
public void handleCalculate(ActivityOrderBO bo) {
OrderPriceVO tpv = calculatePrice(bo);
BeanUtil.copyProperties(tpv, bo.getOrder());
BeanUtil.copyProperties(tpv, bo);
}
@Override
public OrderPriceVO calculatePrice(ActivityOrderBO detail) {
BigDecimal orderAmount = BigDecimal.ZERO;
BigDecimal goodsAmount = BigDecimal.ZERO;
BigDecimal realAmount = BigDecimal.ZERO;
BigDecimal couponAmount = BigDecimal.ZERO;
ActivityProductSpecs activityProductSpecs = activityFeign.get(detail.getSpecsId()).getData();
if (activityProductSpecs != null) {
detail.getOrder().setGoodsAmount(activityProductSpecs.getGoodsPrice());
}
//设置Item
OrderItem memberOrderItem = orderItemBiz.initOrderItem(detail.getOrder().getGoodsAmount(), detail.getNumber(), detail.getName(), Integer.parseInt(detail.getProductId() + ""), ItemTypeEnum.ACTIVITY);
detail.setItems(new ArrayList<OrderItem>());
detail.getItems().add(memberOrderItem);
//商品价格
goodsAmount = goodsAmount.add(memberOrderItem.getCalculateAmount(Boolean.TRUE));
//vehicleAmount 优惠券处理
if (null != detail.getTickerNo() && detail.getTickerNo().size() > 0) {
couponAmount = activityFeign.use(detail.getOrder().getUserId(), detail.getTickerNo(), detail.getOrder().getNo(), channel, goodsAmount, ActivityFeign.TYPE_NO_USE);
if (couponAmount.compareTo(BigDecimal.ZERO) > 0) {
detail.getOrder().setCouponTickerNos(detail.getTickerNo().stream().collect(Collectors.joining(",")));
detail.getOrder().setHasDiscount(SYS_TRUE);
memberOrderItem.handleCouponAmount(couponAmount);
}
}
//订单总价格
orderAmount = orderAmount.add(goodsAmount);
//真实价格
realAmount = realAmount.add(orderAmount).subtract(couponAmount);
//生成订单明细
OrderPriceVO opv = new OrderPriceVO();
opv.setOrderAmount(orderAmount);
opv.setGoodsAmount(goodsAmount);
opv.setRealAmount(realAmount);
opv.setCouponAmount(couponAmount);
return opv;
}
}
......@@ -15,7 +15,7 @@
</plugin>
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://10.5.52.4:3307/xxfc_order?useUnicode=true&amp;characterEncoding=UTF8"
connectionURL="jdbc:mysql://10.5.52.3:3306/xxfc_order?useUnicode=true&amp;characterEncoding=UTF8"
userId="root"
password="sslcloud123*()">
</jdbcConnection>
......@@ -37,6 +37,6 @@
<!-- </table>-->
<!-- <table tableName="branch_company_stock_info" domainObjectName="BranchCompanyStockInfo"></table>-->
<!-- <table tableName="branch_company_stock_apply_info" domainObjectName="BranchCompanyStockApplyInfo"></table>-->
<table tableName="deposit_refund_record" domainObjectName="DepositRefundRecord"></table>
<table tableName="order_active_detail" domainObjectName="OrderActiveDetail"></table>
</context>
</generatorConfiguration>
\ No newline at end of file
......@@ -43,6 +43,12 @@
select="com.xxfc.platform.order.mapper.OrderMemberDetailMapper.selectByPrimaryKey"
javaType="com.xxfc.platform.order.entity.OrderMemberDetail"></association>
</case>
<case value="4" resultType="com.xxfc.platform.order.pojo.order.OrderPageVO">
<association column="detail_id" property="orderActiveDetail"
select="com.xxfc.platform.order.mapper.OrderActiveDetailMapper.selectByPrimaryKey"
javaType="com.xxfc.platform.order.entity.OrderActiveDetail"></association>
</case>
</discriminator>
</resultMap>
......@@ -65,6 +71,12 @@
select="com.xxfc.platform.order.mapper.OrderMemberDetailMapper.selectByPrimaryKey"
javaType="com.xxfc.platform.order.entity.OrderMemberDetail"></association>
</case>
<case value="4" resultType="com.xxfc.platform.order.pojo.order.OrderListVo">
<association column="detail_id" property="orderActiveDetail"
select="com.xxfc.platform.order.mapper.OrderActiveDetailMapper.selectByPrimaryKey"
javaType="com.xxfc.platform.order.entity.OrderActiveDetail"></association>
</case>
</discriminator>
</resultMap>
......
<?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.xxfc.platform.order.mapper.OrderActiveDetailMapper" >
<select id="getAllActivityOrder" resultType="com.xxfc.platform.order.pojo.vo.OrderActivityVo">
select oad.*, bo.picture as image, bo.no as orderNo,bo.user_id, bo.goods_amount, bo.real_amount, bo.`status`, bo.crt_time as orderTime from order_active_detail oad
LEFT JOIN base_order bo on bo.id = oad.order_id
<where>
<if test="no != null and no != ''">
and bo.no = #{no}
</if>
<if test="userId != null and userId > 0">
and bo.user_id = #{userId}
</if>
<if test="type != null and type > 0">
and oad.type = #{type}
</if>
<if test="startTime != null and endTime != null">
and bo.crt_time between #{startTime} and #{endTime}
</if>
<if test="status != null and status > 0">
and bo.status = #{status}
</if>
</where>
order By bo.crt_time DESC
</select>
</mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment