@@ -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)); | |||
} | |||
@@ -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("添加成功"); | |||
// } | |||
} |
@@ -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); | |||
} | |||
} | |||
} |
@@ -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 |
@@ -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; | |||
} |
@@ -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; | |||
} |
@@ -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 { |
@@ -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(); | |||
} |
@@ -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; | |||
} |
@@ -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; | |||
} | |||
} |
@@ -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); | |||
} | |||
} |
@@ -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; | |||
} |
@@ -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 |