Commit 20c240f2 authored by 周健威's avatar 周健威

Merge remote-tracking branch 'origin/master'

parents e428cfef 18293d1e
package com.github.wxiaoqi.security.admin.dto;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import java.io.Serializable;
/**
* 用户会员信息
*/
......@@ -80,4 +81,6 @@ public class BaseUserMemberVO implements Serializable {
private Integer discount;
@Column(name = "member_type")
private Integer memberType;
}
......@@ -71,4 +71,7 @@ public class UserMemberDTO {
@Column(name = "member_name")
@ApiModelProperty("会员名")
private String memberName;
@Column(name = "member_type")
private Integer memberType;
}
......@@ -25,6 +25,12 @@ public class UserMemberSaveDTO {
@ApiModelProperty(value = "会员等级")
private Integer memberLevel;
/**
* 会员类型
*/
@ApiModelProperty(value = "会员类型")
private Integer memberType;
/**
* 赠送总天数
*/
......
package com.github.wxiaoqi.security.admin.entity;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.*;
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.io.Serializable;
/**
* 用户会员表
......@@ -141,4 +144,7 @@ public class BaseUserMember implements Serializable {
@Column(name = "member_name")
private String memberName;
@Column(name = "member_type")
private Integer memberType;
}
......@@ -85,6 +85,8 @@ public class AppUserDTO {
private Integer discount;
private Integer memberLevel = 0;
private String memberName;
//会员类型
private Integer memberType;
//图标
private String icon;
private String bigIcon;
......
......@@ -157,6 +157,11 @@ public class AppUserManageVo {
*/
private String memberName;
/**
* 会员类型
*/
private String memberType;
/**
* 头像
*/
......
......@@ -5,7 +5,6 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Column;
import javax.persistence.Table;
import java.io.Serializable;
......@@ -26,6 +25,7 @@ public class BaseUserMemberExportVo implements Serializable {
private String username;
private String memberName;
private Integer memberLevel;
private Integer memberType;
private Integer totalNumber;
private Integer rentFreeDays;
private Integer status;
......
......@@ -3,6 +3,8 @@ package com.github.wxiaoqi.security.admin.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Column;
/**
* 用户会员
......@@ -113,4 +115,6 @@ public class UserMemberVo {
@ApiModelProperty("会员名")
private String memberName;
@Column(name = "member_type")
private Integer memberType;
}
......@@ -4,14 +4,17 @@ import com.ace.cache.annotation.Cache;
import com.ace.cache.annotation.CacheClear;
import com.github.wxiaoqi.security.admin.dto.BaseUserMemberVO;
import com.github.wxiaoqi.security.admin.dto.UserMemberDTO;
import com.github.wxiaoqi.security.admin.entity.BaseUserMember;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberExport;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel;
import com.github.wxiaoqi.security.admin.mapper.BaseUserMemberLevelMapper;
import com.github.wxiaoqi.security.admin.mapper.BaseUserMemberMapper;
import com.github.wxiaoqi.security.admin.vo.AppUserVo;
import com.github.wxiaoqi.security.admin.vo.UserMemberVo;
import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig;
import com.github.wxiaoqi.security.auth.client.jwt.UserAuthUtil;
import com.github.wxiaoqi.security.auth.common.util.jwt.IJWTInfo;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.exception.BaseException;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.beanutils.BeanUtils;
......@@ -19,16 +22,11 @@ import org.apache.commons.collections.CollectionUtils;
import org.springframework.aop.framework.AopContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.github.wxiaoqi.security.admin.entity.BaseUserMember;
import com.github.wxiaoqi.security.admin.mapper.BaseUserMemberMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example;
import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.InvocationTargetException;
import java.util.Collection;
import java.util.List;
import java.util.concurrent.ExecutorService;
......@@ -132,7 +130,7 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper, BaseUserMem
baseUserMember.setBuyCount(userMemberVo.getBuyCount() + buyCount);
baseUserMember.setTotalNumber(totalNumber);
baseUserMember.setRentFreeDays(freeDays);
baseUserMember.setMemberType(2);
getMyBiz().updateSelectiveById(baseUserMember);
}
AppUserVo userVo = detailBiz.getUserInfoById(userId);
......
......@@ -13,13 +13,11 @@ import com.github.wxiaoqi.security.auth.client.jwt.UserAuthUtil;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
......@@ -117,6 +115,7 @@ public class PublicController {
UserMemberVo memberVo=userMemberBiz.getMemberInfoByUserId(userid);
if(memberVo!=null){
BeanUtils.copyProperties(userDTO,memberVo);
userDTO.setMemberType(memberVo.getMemberType());
}
}
AppUserPosition userPosition=positionBiz.selectById(positionId);
......
......@@ -103,7 +103,8 @@
m.rent_free_days AS rentFreeDays,
m.crt_time AS timeOfMembership,
m.recent_recharge AS recentRecharge,
ml. NAME AS memberName,
ml.NAME AS memberName,
m.member_type,
aup. NAME AS `positionName`,
ul.username AS inviter,
IFNULL(pd.realname, pd.nickname) AS nameOfSuperior,
......
......@@ -20,6 +20,7 @@
<result property="updTime" column="upd_time"/>
<result property="isDel" column="is_del"/>
<result property="memberName" column="member_name"/>
<result property="memberType" column="member_type"/>
</resultMap>
<select id="getInfoByUserId" resultMap="baseUserMemberMap">
......@@ -39,7 +40,8 @@
m.valid_time as validTime,
m.member_name as memberName,
m.discount as discount,
ml.name as name
ml.name as name,
m.member_type as memberType
from
base_user_member m
left join
......
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 || activityProduct.getSales() < 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 || activityProductSpecs.getSales() < 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
......@@ -96,7 +96,7 @@
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.0.2</version>
<version>2.1.2</version>
</dependency>
<dependency>
......
......@@ -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
......@@ -41,7 +41,8 @@ public class BgOrderListVo {
private Integer vehicleCode;
private Integer userId;
//押金退还状态
private Integer refundStatus;
//员工身份
private String positionName;
}
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;
}
......@@ -69,6 +69,15 @@ public class BackgroundBaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder>
dto.setEndTime(new Date().getTime());
}
}
if (dto.getStatus()!=null ) {
if (dto.getStatus() == 7) {
dto.setRefundStatus(2);
dto.setStatus(null);
}else if (dto.getStatus() == 8) {
dto.setRefundStatus(3);
dto.setStatus(null);
}
}
Query query = new Query(dto);
PageDataVO pageDataVO = PageDataVO.pageInfo(query, () -> mapper.getAllOrderList(query.getSuper()));
return ObjectRestResponse.succ(pageDataVO);
......
......@@ -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
......@@ -19,11 +19,11 @@ import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.order.biz.*;
import com.xxfc.platform.order.biz.inner.OrderCancelBiz;
import com.xxfc.platform.order.biz.inner.OrderMsgBiz;
import com.xxfc.platform.order.contant.enumerate.*;
import com.xxfc.platform.order.contant.enumerate.CrosstownTypeEnum;
import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.entity.*;
import com.xxfc.platform.order.mqhandler.RabbitProduct;
import com.xxfc.platform.order.pojo.account.OrderAccountDeduction;
import com.xxfc.platform.order.pojo.account.OrderAccountDetail;
import com.xxfc.platform.order.pojo.dto.OrderDTO;
import com.xxfc.platform.order.pojo.mq.OrderMQDTO;
import com.xxfc.platform.order.pojo.order.CancelOrderDTO;
......@@ -58,7 +58,6 @@ import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_FALSE;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_TRUE;
import static com.xxfc.platform.universal.constant.DictionaryKey.APP_ORDER;
......@@ -347,6 +346,8 @@ public class BaseOrderController extends CommonBaseController implements UserRes
private Integer type;
private String phone;
//违章押金退还状态
private Integer refundStatus;
/**
* 后台搜索条件:真实姓名
......@@ -365,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;
}
}
......@@ -54,7 +54,7 @@ import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static com.github.wxiaoqi.security.admin.constant.enumerate.MemberEnum.*;
import static com.github.wxiaoqi.security.admin.constant.enumerate.MemberEnum.NONE;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_FALSE;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_TRUE;
import static com.xxfc.platform.order.contant.enumerate.ItemTypeEnum.ACCOMPANY;
......@@ -88,6 +88,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
@Autowired
ActivityFeign activityFeign;
@PostConstruct
public void init(){
this.channel = Coupon.CHANNEL_RENT;
......@@ -576,6 +577,10 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
rentVehicleBookDTO.setNumberPlate(numberPlate);
rentVehicleBookDTO.setStatus(status);
rentVehicleBookDTO.setUseType(detail.getUseType());
if (detail.getRentFreeDay() > 0) {//使用了免费天数
rentVehicleBookDTO.setMemberUse(detail.getAppUserDTO().getMemberType());
}
if (detail.getAppUserDTO() != null) {
rentVehicleBookDTO.setVehicleUserPhone(detail.getAppUserDTO().getUsername());
rentVehicleBookDTO.setVehicleUsername(detail.getAppUserDTO().getRealname());
......
......@@ -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>
......@@ -252,12 +264,19 @@
<if test="realName != null and realName != ''">
and username like CONCAT ("%", #{realName}, "%")
</if>
<if test="keywords != null and keywords != ''">
and (telephone like CONCAT ("%", #{keywords}, "%") or username like CONCAT ("%", #{keywords}, "%"))
</if>
<if test="userId != null">
and userId = #{userId}
</if>
<if test="status != null">
and status = #{status}
</if>
<if test="refundStatus != null">
and refundStatus = #{refundStatus}
</if>
<if test="type != null">
and type = #{type}
</if>
......
<?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
package com.xxfc.platform.vehicle.constant;
import java.util.HashMap;
import java.util.Map;
public enum VehicleMemberType {
ALL(1,"所有会员"),
PAY(2,"兑换会员"),
EXCHANGE(3,"兑换会员"),
NO(4, "禁用会员")
;
/**
* 编码
*/
private Integer code;
/**
* 类型描述
*/
private String desc;
private static Map<Integer,String> codeAndDesc = new HashMap<Integer, String>();
//Maps.newHashMap();
static{
for(VehicleMsgType constantType : VehicleMsgType.values()){
codeAndDesc.put(constantType.getCode(),constantType.getDesc());
}
}
VehicleMemberType(Integer code, String desc){
this.code=code;
this.desc=desc;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public static Boolean exists(Integer code){
return codeAndDesc.containsKey(code);
}
}
......@@ -195,4 +195,10 @@ public class Vehicle {
* 是否删除;0-正常;1-删除
*/
private Integer isDel;
/**
* 是否能用会员:1、所有会员,2、充值会员,3、兑换会员,4、禁用会员
*/
@Column(name = "member_use")
private Integer memberUse;
}
\ No newline at end of file
......@@ -171,4 +171,7 @@ public class AddOrUpdateVehicleVo {
* 电子保单
*/
private String insurancePDF;
//可用会员类型
private Integer memberUse;
}
\ No newline at end of file
......@@ -104,6 +104,9 @@ public class RentVehicleBookDTO extends PageParam {
@ApiModelProperty("扩展结束时间")
String endDateExtend;
@ApiModelProperty("会员免费类型")
Integer memberUse;
/**
* 用途 1 租车
*/
......
......@@ -181,4 +181,8 @@ public class ResultVehicleVo {
private Date receiveTime;
private Integer modelId;
//可用会员类型
private Integer memberUse;
}
\ No newline at end of file
......@@ -17,6 +17,7 @@ import com.xxfc.platform.vehicle.common.BaseController;
import com.xxfc.platform.vehicle.common.RestResponse;
import com.xxfc.platform.vehicle.constant.BookType;
import com.xxfc.platform.vehicle.constant.VehicleBookRecordStatus;
import com.xxfc.platform.vehicle.constant.VehicleMemberType;
import com.xxfc.platform.vehicle.entity.Vehicle;
import com.xxfc.platform.vehicle.entity.VehicleBookRecord;
import com.xxfc.platform.vehicle.pojo.*;
......@@ -188,10 +189,15 @@ public class RentVehicleController extends BaseController<VehicleBiz> implements
dto.setEndCompanyId(dto.getEndCompanyId());
//查询可车辆信息
PageDataVO<Vehicle> pageDataVO = vehicleBiz.searchUsableVehicle(dto);
if (pageDataVO.getData().size() <= 0) {
if (pageDataVO.getData().size() <= 0 && (dto.getMemberUse() == null || dto.getMemberUse().equals(VehicleMemberType.NO.getCode()))) {
throw new BaseException(ResultCode.NOTEXIST_CODE, new HashSet<String>(){{
add("可用车辆不存在");
}});
} else if (pageDataVO.getData().size() <= 0 && (dto.getMemberUse() == null ||!dto.getMemberUse().equals(VehicleMemberType.NO.getCode()))) {
throw new BaseException(ResultCode.NOTEXIST_CODE, new HashSet<String>(){{
add("仅剩托管车辆,无法使用免费天数,请关闭会员特权");
}});
}
bookVehicleId = pageDataVO.getData().get(0).getId();
}
......
......@@ -70,6 +70,7 @@
v.receive_time,
v.update_time,
v.model_id,
v.member_use,
v.mileage_last_update as mileage,
c.val as useTypeName,
vm.name as vehicleType
......@@ -913,6 +914,9 @@
<!-- ,ifnull(vbi.booked_date,0) as booked_date-->
<!-- </if>-->
<include refid="searchUsableSql"/>
<if test="memberUse != null and memberUse>0">
and (v.member_use = 1 or v.member_use = #{memberUse})
</if>
<if test="lon != null and lat != null">
order by
distance asc
......
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