Bladeren bron

iaw 创建订单

master
chenchaod 1 maand geleden
bovenliggende
commit
db95938b36

+ 11
- 8
zhywpt-app-iaw/src/main/java/cn/com/taiji/iaw/api/issue/IssueProductController.java Bestand weergeven

@@ -1,11 +1,14 @@
package cn.com.taiji.iaw.api.issue;

import cn.com.taiji.common.manager.ManagerException;
import cn.com.taiji.common.manager.net.http.ServiceHandleException;
import cn.com.taiji.common.model.dao.Pagination;
import cn.com.taiji.common.web.ApiResponse;
import cn.com.taiji.iaw.api.MyValidController;
import cn.com.taiji.iaw.dto.product.ProductPagReqDTO;
import cn.com.taiji.iaw.manager.product.IssueProductManager;
import cn.com.taiji.iaw.dto.issue.ProductDetailReqDTO;
import cn.com.taiji.iaw.dto.issue.ProductDetailResDTO;
import cn.com.taiji.iaw.dto.issue.ProductPagReqDTO;
import cn.com.taiji.iaw.manager.issue.IssueProductManager;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
@@ -36,12 +39,12 @@ public class IssueProductController extends MyValidController {
return ApiResponse.of(issueProductManager.pageQuery(reqDto));
}

// todo 待完善
// @ApiOperation(value = "产品详情查询")
// @PostMapping(value = "/pageDetail")
// public ApiResponse<Pagination> pageDetail(@Valid @RequestBody ProductPagReqDTO reqDto) throws ServiceHandleException {
// return ApiResponse.of(issueProductManager.pageDetail(reqDto));
// }
@ApiOperation(value = "产品详情查询")
@PostMapping(value = "/pageDetail")
public ApiResponse<ProductDetailResDTO> pageDetail(@Valid @RequestBody ProductDetailReqDTO reqDto) throws ManagerException {
return ApiResponse.of(issueProductManager.pageDetail(reqDto));
}




+ 15
- 7
zhywpt-app-iaw/src/main/java/cn/com/taiji/iaw/api/issue/OrderController.java Bestand weergeven

@@ -43,16 +43,24 @@ public class OrderController extends MyValidController {
return ApiResponse.of(issueOrderManage.aOrderPage(reqDto));
}

// @ApiOperation(value = "1.创建订单")
@ApiOperation(value = "3.创建订单")
@PostMapping(value = "/add")
public ApiResponse<String> processAdd(@Valid @RequestBody OrderCreateReqDTO reqDto) throws ManagerException {
String orderNo = issueOrderManage.add(reqDto);
return ApiResponse.of(orderNo).setMessage("添加成功");
}

// @ApiOperation(value = "4.用户信息上传")
// @PostMapping(value = "/add")
// public ApiResponse<String> processAdd(@Valid @RequestBody OrderCreateReqDTO reqDto) throws ManagerException {
// String orderNo = issueOrderManage.add(reqDto);
// return ApiResponse.of(orderNo).setMessage("添加成功");
// }
//
// @ApiOperation(value = "5.车辆信息上传")
// @PostMapping(value = "/add")
// public ApiResponse<String> processAdd(@Valid @RequestBody OrderCreateReqDTO reqDto) throws ManagerException {
// //从小程序过来的订单,默认邮寄
// if (OrderSourceEnum.WECHAT == reqDto.getOrderSource()) {
// reqDto.setWhetherToMail(true);
// }
// String orderNo = issueOrderManage.add(reqDto);
// CsmsnOrderinfo order = orderinfoRepo.findByOrderNo(resDto.getOrderId());
// issueOrderManager.doTransactionAsync(order);
// return ApiResponse.of(orderNo).setMessage("添加成功");
// }
}

+ 57
- 1
zhywpt-app-iaw/src/main/java/cn/com/taiji/iaw/dto/issue/OrderCreateReqDTO.java Bestand weergeven

@@ -2,23 +2,67 @@ package cn.com.taiji.iaw.dto.issue;

import cn.com.taiji.common.valid.ViolationValidator;
import cn.com.taiji.core.dto.AbstractBizRequestDTO;
import cn.com.taiji.core.entity.dict.basic.PlateColorType;
import cn.com.taiji.core.entity.dict.basic.SourceType;
import cn.com.taiji.core.entity.dict.basic.UserType;
import cn.com.taiji.core.model.comm.protocol.constraint.EnumInteger;
import cn.com.taiji.core.model.comm.protocol.constraint.IntegerConstant;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
* @Author:ChenChao
* @Date:2025/6/14 16:39
* @Filename:OrderCreateReqDTO
* @description:
*/
@ApiModel(value = "发行订单创建请求参数")
@ApiModel(description = "发行订单创建请求参数")
@Data
public class OrderCreateReqDTO extends AbstractBizRequestDTO {

@ApiModelProperty(value = "员工编号")
private String staffId;
@NotNull
@IntegerConstant(values = "1,2")
@ApiModelProperty(value = "发行模式1线上 2线下;小程序传1,App端传2")
private Integer issueType;
@NotBlank
@ApiModelProperty(value = "车牌号码")
private String vehiclePlate;
@NotNull
@EnumInteger(enumClazz = PlateColorType.class)
@ApiModelProperty(value = "车牌颜色")
private Integer vehiclePlateColor;
@NotNull
@IntegerConstant(values = "1,2")
@ApiModelProperty(value = "客货类型 1-客车 2-货车")
private Integer vanType;
@NotNull
@ApiModelProperty(value = "是否需要邮寄,小程序传true,App选择")
private Boolean whetherToMail;
@NotNull
@EnumInteger(enumClazz = UserType.class)
@ApiModelProperty(value = "用户类型 1-个人用户 2-单位用户")
private Integer userType;
@ApiModelProperty(value = "经度")
private Double longitude;
@ApiModelProperty(value = "纬度")
private Double latitude;
@NotBlank
@ApiModelProperty(value = "产品编号")
private String productId;
@ApiModelProperty(value = "收货人")
private String consignee;
@ApiModelProperty(value = "收货人电话")
private String consigneeTel;
@ApiModelProperty(value = "收货所在地区(省、市、区、街道)")
private String region;
@ApiModelProperty(value = "收货详细地址")
private String address;



@@ -27,6 +71,18 @@ public class OrderCreateReqDTO extends AbstractBizRequestDTO {
super.validate(validator);
if (SourceType.SERVICE_HALL.equals(getOrderSource())){
validator.validFieldNotBlank("staffId", staffId);
}else if (SourceType.WECHAT.equals(getOrderSource())){
whetherToMail = true;//小程序默认邮寄
}
if (issueType==2){
validator.validFieldNotNull("longitude", longitude);
validator.validFieldNotNull("latitude", latitude);
}
if (whetherToMail){
validator.validFieldNotBlank("consignee", consignee);
validator.validFieldNotBlank("consigneeTel", consigneeTel);
validator.validFieldNotBlank("region", region);
validator.validFieldNotBlank("address", address);
}
}
}

+ 2
- 0
zhywpt-app-iaw/src/main/java/cn/com/taiji/iaw/dto/issue/OrderMinPageReqDTO.java Bestand weergeven

@@ -1,6 +1,7 @@
package cn.com.taiji.iaw.dto.issue;

import cn.com.taiji.core.dto.AbstractBizPageRequestDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
@@ -15,6 +16,7 @@ import javax.validation.constraints.NotNull;
*/
@Getter
@Setter
@ApiModel(description = "小程序订单分页查询参数")
public class OrderMinPageReqDTO extends AbstractBizPageRequestDTO {

@NotNull

+ 23
- 0
zhywpt-app-iaw/src/main/java/cn/com/taiji/iaw/dto/issue/ProductDetailReqDTO.java Bestand weergeven

@@ -0,0 +1,23 @@
package cn.com.taiji.iaw.dto.issue;

import cn.com.taiji.core.dto.AbstractBizRequestDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotBlank;

/**
* @Author:ChenChao
* @Date:2025/6/17 10:36
* @Filename:ProductDetailReqDTO
* @description:
*/
@ApiModel(description = "产品详情查询请求")
@Data
public class ProductDetailReqDTO extends AbstractBizRequestDTO {

@ApiModelProperty(value = "产品编号",required = true)
@NotBlank
private String releaseId;
}

+ 48
- 0
zhywpt-app-iaw/src/main/java/cn/com/taiji/iaw/dto/issue/ProductDetailResDTO.java Bestand weergeven

@@ -0,0 +1,48 @@
package cn.com.taiji.iaw.dto.issue;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.List;

/**
* @Author:ChenChao
* @Date:2025/6/17 10:38
* @Filename:ProductDetailResDTO
* @description:
*/
@Data
@ApiModel(description = "产品详情查询响应")
public class ProductDetailResDTO {

@ApiModelProperty(value = "单项/批量权益编号")
private String equityId;

@ApiModelProperty(value = "权益类产品名称")
private String productName;

@ApiModelProperty(value = "权益类产品内容简介")
private String productIntro;

@ApiModelProperty(value = "优惠售价")
private Long discountPrice;

@ApiModelProperty(value = "原价")
private Long originalPrice;

@ApiModelProperty(value = "总成本")
private Long totalCost;

// /** 单项权益列表 */
// private List<EquityAllVo> children;
//
// @ApiModelProperty(value = "该项权益是否被点击(1是;0否)")
// private Integer isClick;
//
// @ApiModelProperty(value = "不能被选择的原因")
// private String noClickCase;

@ApiModelProperty(value = "权益标签")
private List<String> labels;
}

zhywpt-app-iaw/src/main/java/cn/com/taiji/iaw/dto/product/ProductPagReqDTO.java → zhywpt-app-iaw/src/main/java/cn/com/taiji/iaw/dto/issue/ProductPagReqDTO.java Bestand weergeven

@@ -1,4 +1,4 @@
package cn.com.taiji.iaw.dto.product;
package cn.com.taiji.iaw.dto.issue;

import cn.com.taiji.common.valid.ViolationValidator;
import cn.com.taiji.core.dto.AbstractBizPageRequestDTO;
@@ -16,7 +16,7 @@ import javax.validation.constraints.NotNull;
* @Filename:ProductPagReqDTO
* @description:
*/
@ApiModel(value = "产品分页查询请求对象")
@ApiModel(description = "产品分页查询请求对象")
@Getter
@Setter
public class ProductPagReqDTO extends AbstractBizPageRequestDTO {

+ 20
- 1
zhywpt-app-iaw/src/main/java/cn/com/taiji/iaw/manager/issue/IssueOrderManageImpl.java Bestand weergeven

@@ -4,6 +4,7 @@ package cn.com.taiji.iaw.manager.issue;
import cn.com.taiji.common.manager.ManagerException;
import cn.com.taiji.common.manager.net.http.ServiceHandleException;
import cn.com.taiji.common.model.dao.Pagination;
import cn.com.taiji.core.entity.dict.basic.SourceType;
import cn.com.taiji.core.entity.user.Staff;
import cn.com.taiji.core.model.comm.protocol.ias.order.OrderInitRequest;
import cn.com.taiji.core.model.comm.protocol.ias.order.OrderInitResponse;
@@ -51,7 +52,25 @@ public class IssueOrderManageImpl extends AbstractCommManager implements IssueOr

@Override
public String add(OrderCreateReqDTO reqDto) throws ManagerException {
OrderInitRequest request = new OrderInitRequest();
OrderInitRequest request = copyProperties(reqDto, new OrderInitRequest());

if (SourceType.WECHAT == reqDto.getOrderSource()){
request.setAgentId("52010106004");
request.setChannelId("5201010200601130001");
request.setOpenId(findOpenIdByToken(reqDto.getAccessToken()));
}
if (SourceType.SERVICE_HALL == reqDto.getOrderSource()){
Staff staff = staffRepo.findByStaffId(reqDto.getStaffId());
request.setAgentId(staff.getAgencyId());
request.setChannelId(staff.getServiceHallId());
request.setStaffNum(reqDto.getStaffId());
}
if (SourceType.ALI == reqDto.getOrderSource()){
request.setAgentId("52010106004");
request.setChannelId("5201010600401140003");
request.setOpenId(findOpenIdByToken(reqDto.getAccessToken()));
}
request.setSourceType(reqDto.getOrderSource());
OrderInitResponse response = jsonPostRepeat(request);
return response.getOrderNo();
}

zhywpt-app-iaw/src/main/java/cn/com/taiji/iaw/manager/product/IssueProductManager.java → zhywpt-app-iaw/src/main/java/cn/com/taiji/iaw/manager/issue/IssueProductManager.java Bestand weergeven

@@ -1,8 +1,11 @@
package cn.com.taiji.iaw.manager.product;
package cn.com.taiji.iaw.manager.issue;

import cn.com.taiji.common.manager.ManagerException;
import cn.com.taiji.common.manager.net.http.ServiceHandleException;
import cn.com.taiji.common.model.dao.Pagination;
import cn.com.taiji.iaw.dto.product.ProductPagReqDTO;
import cn.com.taiji.iaw.dto.issue.ProductDetailReqDTO;
import cn.com.taiji.iaw.dto.issue.ProductDetailResDTO;
import cn.com.taiji.iaw.dto.issue.ProductPagReqDTO;

/**
* @Author:ChenChao
@@ -12,4 +15,6 @@ import cn.com.taiji.iaw.dto.product.ProductPagReqDTO;
*/
public interface IssueProductManager {
Pagination pageQuery(ProductPagReqDTO reqDto) throws ServiceHandleException;

ProductDetailResDTO pageDetail(ProductDetailReqDTO reqDto) throws ManagerException;
}

+ 102
- 0
zhywpt-app-iaw/src/main/java/cn/com/taiji/iaw/manager/issue/IssueProductManagerImpl.java Bestand weergeven

@@ -0,0 +1,102 @@
package cn.com.taiji.iaw.manager.issue;

import cn.com.taiji.common.manager.ManagerException;
import cn.com.taiji.common.manager.net.http.ServiceHandleException;
import cn.com.taiji.common.model.dao.Pagination;
import cn.com.taiji.core.entity.dict.basic.SourceType;
import cn.com.taiji.core.entity.issue.IssueMultipleEquity;
import cn.com.taiji.core.entity.issue.IssueProduct;
import cn.com.taiji.core.entity.issue.IssueSingleEquity;
import cn.com.taiji.core.repo.jpa.issue.IssueMultipleEquityRepo;
import cn.com.taiji.core.repo.jpa.issue.IssueProductPromotionRepo;
import cn.com.taiji.core.repo.jpa.issue.IssueProductRepo;
import cn.com.taiji.core.repo.jpa.issue.IssueSingleEquityRepo;
import cn.com.taiji.iaw.dto.issue.ProductDetailReqDTO;
import cn.com.taiji.iaw.dto.issue.ProductDetailResDTO;
import cn.com.taiji.iaw.dto.issue.ProductPagReqDTO;
import cn.com.taiji.iaw.manager.AbstractCommManager;
import cn.com.taiji.iaw.repo.jpa.request.issue.ProductPageRequest;
import cn.hutool.core.util.StrUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

/**
* @Author:ChenChao
* @Date:2025/6/14 20:37
* @Filename:IssueProductManagerImpl
* @description: 产品实现类
*/
@Service
public class IssueProductManagerImpl extends AbstractCommManager implements IssueProductManager {

@Autowired
private IssueProductRepo issueProductRepo;

@Autowired
private IssueProductPromotionRepo issueProductPromotionRepo;

@Autowired
private IssueMultipleEquityRepo issueMultipleEquityRepo;

@Autowired
private IssueSingleEquityRepo issueSingleEquityRepo;
@Override
public Pagination pageQuery(ProductPagReqDTO reqDto) throws ServiceHandleException {
reqDto.validate();
ProductPageRequest request = copyProperties(reqDto, new ProductPageRequest());
String agencyId = "";
if (SourceType.WECHAT.equals(reqDto.getOrderSource())){
agencyId = "52010106004";//黔通渠道渠道
request.setPromotionMode(1);
}else if (SourceType.SERVICE_HALL.equals(reqDto.getOrderSource())){
agencyId = findAgencyIdByToken(reqDto.getAccessToken());
request.setPromotionMode(2);
}
//找出启用状态的推广产品
List<String> releaseIds = issueProductPromotionRepo.findReleaseIds("%"+agencyId+"%", LocalDateTime.now());
request.setOrderSource(reqDto.getOrderSource());
request.setReleaseIdList(releaseIds);
return issueProductRepo.page(request);
}

@Override
public ProductDetailResDTO pageDetail(ProductDetailReqDTO reqDto) throws ManagerException {
IssueProduct product = issueProductRepo.findByReleaseId(reqDto.getReleaseId());
if (product == null) throw new ManagerException("订单不存在");

ProductDetailResDTO resDTO = new ProductDetailResDTO();
if (hasText(product.getEquityServicesId())) {
if (product.getEquityServicesId().endsWith("M")) {
//组合权益
IssueMultipleEquity multipleEquity = issueMultipleEquityRepo.findByMultipleEquityId(product.getEquityServicesId());
resDTO.setEquityId(multipleEquity.getMultipleEquityId());
resDTO.setProductName(multipleEquity.getEquityName());
resDTO.setProductIntro(multipleEquity.getProductIntro());
resDTO.setDiscountPrice(multipleEquity.getDiscountPrice());
resDTO.setOriginalPrice(multipleEquity.getOriginalPrice());
resDTO.setTotalCost(multipleEquity.getTotalCost());
}else if (product.getEquityServicesId().endsWith("S")){
//单一权益
IssueSingleEquity singleEquity = issueSingleEquityRepo.findBySingleEquityId(product.getEquityServicesId());
resDTO.setEquityId(singleEquity.getSingleEquityId());
resDTO.setProductName(singleEquity.getEquityName());
resDTO.setProductIntro(singleEquity.getProductIntro());
resDTO.setDiscountPrice(singleEquity.getDiscountPrice());
resDTO.setOriginalPrice(singleEquity.getOriginalPrice());
resDTO.setTotalCost(singleEquity.getTotalCost());
//标签
if (singleEquity.getLabel()!=null){
List<String> labels = Arrays.stream(singleEquity.getLabel().split(StrUtil.COMMA)).collect(Collectors.toList());
resDTO.setLabels(labels);
}
}
}

return resDTO;
}
}

+ 0
- 46
zhywpt-app-iaw/src/main/java/cn/com/taiji/iaw/manager/product/IssueProductManagerImpl.java Bestand weergeven

@@ -1,46 +0,0 @@
package cn.com.taiji.iaw.manager.product;

import cn.com.taiji.common.manager.net.http.ServiceHandleException;
import cn.com.taiji.common.model.dao.Pagination;
import cn.com.taiji.core.entity.dict.basic.SourceType;
import cn.com.taiji.core.repo.jpa.issue.IssueProductPromotionRepo;
import cn.com.taiji.core.repo.jpa.issue.IssueProductRepo;
import cn.com.taiji.iaw.dto.product.ProductPagReqDTO;
import cn.com.taiji.iaw.manager.AbstractCommManager;
import cn.com.taiji.iaw.repo.jpa.request.issue.ProductPageRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.List;

/**
* @Author:ChenChao
* @Date:2025/6/14 20:37
* @Filename:IssueProductManagerImpl
* @description:
*/
@Service
public class IssueProductManagerImpl extends AbstractCommManager implements IssueProductManager{

@Autowired
private IssueProductRepo issueProductRepo;

@Autowired
private IssueProductPromotionRepo issueProductPromotionRepo;
@Override
public Pagination pageQuery(ProductPagReqDTO reqDto) throws ServiceHandleException {
reqDto.validate();
ProductPageRequest request = copyProperties(reqDto, new ProductPageRequest());
String agencyId = "";
if (SourceType.WECHAT.equals(reqDto.getOrderSource())){
agencyId = "52010106004";//黔通渠道渠道
}else if (SourceType.SERVICE_HALL.equals(reqDto.getOrderSource())){
agencyId = findAgencyIdByToken(reqDto.getAccessToken());
}
List<String> releaseIds = issueProductPromotionRepo.findReleaseIds("%"+agencyId+"%", LocalDateTime.now());
request.setOrderSource(reqDto.getOrderSource());
request.setReleaseIdList(releaseIds);
return issueProductRepo.page(request);
}
}

+ 2
- 0
zhywpt-app-iaw/src/main/java/cn/com/taiji/iaw/repo/jpa/request/issue/ProductPageRequest.java Bestand weergeven

@@ -28,6 +28,7 @@ public class ProductPageRequest extends JpaPageableDataRequest<IssueProduct> {
private Integer userType;
@ApiModelProperty(value = "客货类型")
private Integer vanType;
private Integer promotionMode;//推广模式 1:线上,2:线下
private List<String> releaseIdList;//产品编号

public ProductPageRequest() {
@@ -42,6 +43,7 @@ public class ProductPageRequest extends JpaPageableDataRequest<IssueProduct> {
hql.append(" and (customerType = :userType or customerType = 3)", userType);
hql.append(" and vanType like :vanType", like(vanType.toString()));
hql.append(" and extensionTool like :orderSource", like(orderSource.name()));
hql.append(" and promotionMode = :promotionMode", promotionMode);
hql.append(" and releaseId in :releaseIdList", releaseIdList);
return hql;
}

+ 2
- 2
zhywpt-app-iaw/src/main/resources/bootstrap.yml Bestand weergeven

@@ -1,6 +1,6 @@
spring:
application:
name: iaw
name: local-iaw
mvc:
locale: zh_CN
messages:
@@ -46,4 +46,4 @@ app:
# 自定义服务地址map,key为服务名、value为服务地址。如果配置了服务地址,接口调用时请求到该地址,如果没配置,默认请求到gateway
serviceAddr:
sample: http://127.0.0.1:8086
issues: http://127.0.0.1:9071
# issues: http://127.0.0.1:9071

Laden…
Annuleren
Opslaan