提交 53644573 authored 作者: liruixin's avatar liruixin

Merge branch 'v5.7_break_contract_reverse_20231020' into v6.3_small_version_20231102

# Conflicts: # performance-api/src/main/java/com/clx/performance/feign/PerformanceFeign.java # performance-web/src/main/java/com/clx/performance/dao/OrderChildDao.java # performance-web/src/main/java/com/clx/performance/dao/OrderGoodsDao.java # performance-web/src/main/java/com/clx/performance/mapper/OrderChildMapper.java
package com.clx.performance.constant;
public class ActionConstants {
public static final String CLX_PAYMENT_PAY = "clx.payment.pay";
}
package com.clx.performance.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
import java.util.Objects;
import java.util.Optional;
public enum CancelOrderEnum {
;
@Getter
@AllArgsConstructor
public enum Type {
NOT_CHILD(1, "违约无运单"),
NOT_TRANSPORTED(2, "取消未拉运吨数"),
NOT_ARRIVE(3, "取消未到达货源地"),
;
private final Integer code;
private final String name;
public static Optional<Type> getByCode(Integer code) {
return Arrays.stream(values()).filter(e -> Objects.equals(e.getCode(), code)).findFirst();
}
}
}
...@@ -33,6 +33,7 @@ public enum OrderChildEnum { ...@@ -33,6 +33,7 @@ public enum OrderChildEnum {
DRIVER_CANCEL(110, "司机取消"), DRIVER_CANCEL(110, "司机取消"),
PLATFORM_CANCEL(111, "承运取消"), PLATFORM_CANCEL(111, "承运取消"),
OWNER_CANCEL(112, "货主取消"), OWNER_CANCEL(112, "货主取消"),
ARTIFICIAL_CANCEL(113, "客服取消"),
// //
// OWNER_CONFIRM(50, "货主确认车辆"),//货主确认车辆 // OWNER_CONFIRM(50, "货主确认车辆"),//货主确认车辆
...@@ -77,11 +78,11 @@ public enum OrderChildEnum { ...@@ -77,11 +78,11 @@ public enum OrderChildEnum {
; ;
private final int code; private final Integer code;
private final String name; private final String name;
public static Optional<Status> getByCode(int code) { public static Optional<Status> getByCode(Integer code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst(); return Arrays.stream(values()).filter(e -> e.code.equals(code)).findFirst();
} }
} }
...@@ -125,7 +126,8 @@ public enum OrderChildEnum { ...@@ -125,7 +126,8 @@ public enum OrderChildEnum {
public static final List<Integer> CANCEL_lIST = Arrays.asList( public static final List<Integer> CANCEL_lIST = Arrays.asList(
Status.DRIVER_CANCEL.getCode(), Status.DRIVER_CANCEL.getCode(),
Status.PLATFORM_CANCEL.getCode(), Status.PLATFORM_CANCEL.getCode(),
Status.OWNER_CANCEL.getCode() Status.OWNER_CANCEL.getCode(),
Status.ARTIFICIAL_CANCEL.getCode()
); );
......
...@@ -56,6 +56,7 @@ public enum OrderChildLogEnum { ...@@ -56,6 +56,7 @@ public enum OrderChildLogEnum {
OWNER(1, "货主"), OWNER(1, "货主"),
PLATFORM(2, "承运"), PLATFORM(2, "承运"),
DRIVER(3, "司机"), DRIVER(3, "司机"),
ARTIFICIAL(4, "客服"),
; ;
......
...@@ -4,9 +4,7 @@ import lombok.AllArgsConstructor; ...@@ -4,9 +4,7 @@ import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
import java.util.Arrays; import java.util.Arrays;
import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;
public enum OrderGoodsTruckBindEnum { public enum OrderGoodsTruckBindEnum {
; ;
...@@ -15,11 +13,12 @@ public enum OrderGoodsTruckBindEnum { ...@@ -15,11 +13,12 @@ public enum OrderGoodsTruckBindEnum {
@AllArgsConstructor @AllArgsConstructor
public enum Status { public enum Status {
SUCCESS(1, "正常"), NORMAL(1, "正常"),
CANCEL(2, "取消"), CANCEL(2, "取消"),
GET(3, "已接单"), GET(3, "已接单"),
EXPIRE(4, "已失效") EXPIRE(4, "已失效"),
SUCCESS(5, "结束")
; ;
......
...@@ -55,7 +55,27 @@ public enum OwnerAccountEnum { ...@@ -55,7 +55,27 @@ public enum OwnerAccountEnum {
; ;
private final Integer code; private final Integer code;
private final String msg; private final String msg;
public String getMsg() {
return this.msg;
}
public Integer getCode() {
return this.code;
}
}
@Getter
@AllArgsConstructor
public enum OrderChildTypeStatus {
ORDINARY(1, "普通单"),
NETWORK(2, "网运单"),
;
private final Integer code;
private final String msg;
public Integer getCode() {
return this.code;
}
} }
@Getter @Getter
......
...@@ -84,6 +84,8 @@ public enum PerformanceResultEnum implements ResultEnum { ...@@ -84,6 +84,8 @@ public enum PerformanceResultEnum implements ResultEnum {
SETTLEMENT_NO_FOUND(1401, "结算单不存在"), SETTLEMENT_NO_FOUND(1401, "结算单不存在"),
MONEY_NO_SAME(1501, "货主提现金额和平台支付金额不一致"), MONEY_NO_SAME(1501, "货主提现金额和平台支付金额不一致"),
ORDER_GOODS_WEIGHT_NOT_HAVE(1601, "货单可拉运吨数不足"),
ORDER_GOODS_STATUS_NOT_GET(1602, "当前货单已关闭不可继续提取")
; ;
private final int code; private final int code;
private final String msg; private final String msg;
......
package com.clx.performance.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum ThirdRequestStatusEnum {
HAVING(0, "请求中"),
SUCCESS(1, "成功"),
FAIL(2, "失败"),
;
private final int code;
private final String mark;
}
package com.clx.performance.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum ThirdRequestTypeEnum {
SEND(1, "发送请求"),
RECEIVE(2, "接收请求"),
;
private final int code;
private final String msg;
}
package com.clx.performance.enums.integral;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
import java.util.List;
public enum IntegralRecordEnum {
;
@Getter
@AllArgsConstructor
public enum Type{
SYSTEM(1, "系统"),
PROTECTION(2, "保护分"),
PROTECTION_CANCEL(3, "保护分取消"),
SETTLEMENT(4, "结算分"),
BASE(5, "基础分"),
ORDER_CHILD_COMPLETE(11, "运单完成"),
ORDER_CHILD_COMPLETE_NUM(12, "运单完成数量"),
ORDER_CHILD_COMPLETE_WATER(13, "流水单"),
ORDER_CHILD_COMPLETE_SUPPORT(14, "支援单"),
ORDER_CHILD_COMPLETE_TIMEOUT(15, "运单完成超时"),
ORDER_CHILD_CANCEL(21, "运单取消"),
ORDER_CHILD_CANCEL_TIMEOUT(22, "运单取消超时"),
ORDER_CHILD_PLATFORM_CANCEL(23, "平台取消"),
ORDER_CHILD_PLATFORM_COMPENSATION(25, "平台补偿"),
REPORT_TRUCK_INFO(50, "提交基础信息"),
REPORT_REFUEL(51, "油表上报"),
REPORT_TRAFFIC(52, "上报交通拥堵"),
REPORT_SEND_ADDRESS_WAIT(53, "上报货源地需要排队"),
REPORT_SEND_ADDRESS_NO_WAIT(54, "上报货源地无需排队"),
REPORT_RECEIVE_ADDRESS_WAIT(55, "上报目的地需要排队"),
REPORT_RECEIVE_ADDRESS_NO_WAIT(56, "上报目的地无需排队"),
REPORT_QUALITY(57, "上报煤炭质量问题"),
REPORT_ABNORMAL(58, "上报拉运异常问题"),
;
private Integer value;
private String msg;
}
// 取消
public static final List<Integer> DRIVER_REPORT_lIST = Arrays.asList(
Type.REPORT_TRUCK_INFO.value,
Type.REPORT_REFUEL.value,
Type.REPORT_TRAFFIC.value,
Type.REPORT_SEND_ADDRESS_WAIT.value,
Type.REPORT_SEND_ADDRESS_NO_WAIT.value,
Type.REPORT_RECEIVE_ADDRESS_WAIT.value,
Type.REPORT_RECEIVE_ADDRESS_NO_WAIT.value,
Type.REPORT_QUALITY.value,
Type.REPORT_ABNORMAL.value
);
// 取消
public static final List<Integer> PLATFORM_CANCEL_lIST = Arrays.asList(
Type.REPORT_TRUCK_INFO.value,
Type.REPORT_REFUEL.value,
Type.REPORT_TRAFFIC.value,
Type.REPORT_SEND_ADDRESS_WAIT.value,
Type.REPORT_SEND_ADDRESS_NO_WAIT.value,
Type.REPORT_RECEIVE_ADDRESS_WAIT.value,
Type.REPORT_RECEIVE_ADDRESS_NO_WAIT.value,
Type.REPORT_QUALITY.value,
Type.REPORT_ABNORMAL.value
);
}
...@@ -6,6 +6,7 @@ import com.clx.performance.param.pc.owner.FrozenAccountParam; ...@@ -6,6 +6,7 @@ import com.clx.performance.param.pc.owner.FrozenAccountParam;
import com.clx.performance.param.pc.owner.ThawAccountParam; import com.clx.performance.param.pc.owner.ThawAccountParam;
import com.clx.performance.param.pc.owner.UpdateStatusParam; import com.clx.performance.param.pc.owner.UpdateStatusParam;
import com.clx.performance.vo.feign.OrderGoodsFeignVO; import com.clx.performance.vo.feign.OrderGoodsFeignVO;
import com.clx.performance.vo.pc.OwnerAccountAllVO;
import com.msl.common.result.Result; import com.msl.common.result.Result;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
...@@ -87,4 +88,7 @@ public interface PerformanceFeign { ...@@ -87,4 +88,7 @@ public interface PerformanceFeign {
@GetMapping(value = {"clx-performance/feign/orderGoods/updateSystemAddressId"}) @GetMapping(value = {"clx-performance/feign/orderGoods/updateSystemAddressId"})
Result<Boolean> updateSystemAddressId(@RequestParam("ownerAddressId") Integer ownerAddressId,@RequestParam("systemAddressId") Integer systemAddressId); Result<Boolean> updateSystemAddressId(@RequestParam("ownerAddressId") Integer ownerAddressId,@RequestParam("systemAddressId") Integer systemAddressId);
@GetMapping(value = {"clx-performance/feign/owner/accountInfo"})
Result<OwnerAccountAllVO> accountInfo(@RequestParam Long userNo);
} }
package com.clx.performance.param.pay;
import com.msl.common.enums.ResultEnum;
/**
*
* @author xujianke
* @date 2017年6月01日
* @description
*/
public class NotifyString extends PayResult<String> {
/** 支付操作 参考<MessageTypeEnum> */
private Integer action;
/** 交易单号 */
private String orderNo;
/** 支付请求唯一ID */
private String uuid;
/** 出错时的交易单元编号 */
private String errorNo;
public NotifyString(){
super();
}
public NotifyString(PayResult<String> ret){
this.setCode(ret.getCode());
this.setMsg(ret.getMsg());
this.setData(ret.getData());
}
public NotifyString(ResultEnum e) {
super(e);
}
public String getOrderNo() {
return orderNo;
}
public void setOrderNo(String orderNo) {
this.orderNo = orderNo;
}
public String getUuid() {
return uuid;
}
public void setUuid(String uuid) {
this.uuid = uuid;
}
public Integer getAction() {
return action;
}
public void setAction(Integer action) {
this.action = action;
}
public String getErrorNo() {
return errorNo;
}
public void setErrorNo(String errorNo) {
this.errorNo = errorNo;
}
@Override
public String toString() {
return "NotifyString [action=" + action + ", orderNo=" + orderNo + ", uuid=" + uuid
+ ", errorNo=" + errorNo + ", toString()=" + super.toString() + "]";
}
}
package com.clx.performance.param.pay;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.msl.common.enums.ResultEnum;
/**
*
* 类: Result
* 描述:接口返回结果类
* @author wangjf
* 时间:2017年3月23日下午3:46:50
* 版本:v1.0
* 修改人:wangjf
*/
public class PayResult<T> {
private Integer code; // 返回结果代码,0为成功
/**
* 返回结果代码
* 0为成功 ,其他代码请参照代码文档
* @return
*/
public Integer getCode() {
return code;
}
private Long total;//总共记录数
private Integer pageNum;//总共页数
/**
* 0代表成功,其他代码请参考《返回值说明文档》
* 请务必按规定填写!
* @param code 结果代码
*/
public void setCode(Integer code) {
this.code = code;
}
public String getMsg() {
return msg;
}
/**
* 错误消息,接口中的错误处理,请务必填写错误消息<br/>
* 当成功时消息应为“success”
* @param msg 错误消息
*/
public void setMsg(String msg) {
this.msg = msg;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
private String msg;
private T data;
/**
* 默认code = 0,<br/>
* msg = "success"
*/
public PayResult() {
this.code = 0;
this.msg = "success";
}
/**
* 默认code = 0,
* msg = "success",<br/>
* 当成功返回结果时,可使用此方法,直接将返回结果填写即可
* @param data ,返回结果
*/
public PayResult(T data) {
this.code = 0;
this.msg = "success";
this.data = data;
}
/**
* 查询列表返回成功
* @param data
* @param pageNum
* @param total
*/
public PayResult(T data, Integer pageNum, Long total) {
this.code = 0;
this.msg = "success";
this.data = data;
this.pageNum = pageNum;
this.total = total;
}
/**
* 产生错误时,需要在枚举中拼接自定义返回的内容
* @param e
* @param msg
*/
public PayResult(ResultEnum e, String msg) {
this.code = e.getCode();
this.msg = String.format(e.getMsg(), msg);
}
/**
* 产生错误时,可以使用此构造方法,在new时直接填写错误代码及消息即可
* @param code
* @param msg
*/
public PayResult(Integer code, String msg) {
this.code = code;
this.msg = msg;
}
public PayResult(Integer code, String msg, T data) {
this.code = code;
this.msg = msg;
this.data = data;
}
@JsonIgnore
public void setResultEnum(ResultEnum e){
this.code = e.getCode();
this.msg = e.getMsg();
}
public PayResult(ResultEnum e) {
this.code = e.getCode();
this.msg = e.getMsg();
}
public PayResult(T data, ResultEnum e) {
this.code = e.getCode();
this.msg = e.getMsg();
this.data = data;
}
public Long getTotal() {
return total;
}
public void setTotal(Long total) {
this.total = total;
}
public Integer getPageNum() {
return pageNum;
}
public void setPageNum(Integer pageNum) {
this.pageNum = pageNum;
}
@Override
public String toString() {
return "Result [code=" + code + ", msg=" + msg + ", data=" + data + "]";
}
/**
* 是否成功
* @return
*/
public boolean succeed() {
return code != null && code == 0;
}
}
package com.clx.performance.param.pc;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
@Data
public class ArtificialCancelOrderParam {
@NotNull(message = "运单编号不能为空")
@ApiModelProperty("运单编号")
private String orderChildNo;
@ApiModelProperty("取消原因")
private String remark;
}
...@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty; ...@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.util.List;
@Data @Data
public class OrderCancelParam { public class OrderCancelParam {
...@@ -20,4 +21,6 @@ public class OrderCancelParam { ...@@ -20,4 +21,6 @@ public class OrderCancelParam {
@ApiModelProperty("取消原因") @ApiModelProperty("取消原因")
private String cancelReason; private String cancelReason;
private List<String> childNoList;
} }
package com.clx.performance.param.pc; package com.clx.performance.param.pc;
import com.msl.common.convertor.type.MoneyInConvert;
import com.msl.common.convertor.type.MoneyOutConvert;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
...@@ -48,6 +50,7 @@ public class OrderGoodsEditParams { ...@@ -48,6 +50,7 @@ public class OrderGoodsEditParams {
private Integer needTruckNum; private Integer needTruckNum;
@ApiModelProperty("挂单运费") @ApiModelProperty("挂单运费")
@MoneyInConvert
private BigDecimal pendingOrderFreight; private BigDecimal pendingOrderFreight;
@ApiModelProperty("创建人用户编号") @ApiModelProperty("创建人用户编号")
......
...@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty; ...@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
/** /**
...@@ -20,6 +21,7 @@ public class PageTruckListParam extends PageParam { ...@@ -20,6 +21,7 @@ public class PageTruckListParam extends PageParam {
@NotNull(message = "需要车数不能为空") @NotNull(message = "需要车数不能为空")
@ApiModelProperty(value = "需要车辆数量", example = "5") @ApiModelProperty(value = "需要车辆数量", example = "5")
@Min(value = 1,message = "需要车数最小为1")
private Integer needTruckNum; private Integer needTruckNum;
@ApiModelProperty(value = "空重车状态 1:空车 2:运单-空车 3:运单-重车", example = "1") @ApiModelProperty(value = "空重车状态 1:空车 2:运单-空车 3:运单-重车", example = "1")
private Integer truckUserStatus; private Integer truckUserStatus;
......
...@@ -7,6 +7,8 @@ import lombok.NoArgsConstructor; ...@@ -7,6 +7,8 @@ import lombok.NoArgsConstructor;
import lombok.Setter; import lombok.Setter;
import lombok.ToString; import lombok.ToString;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.math.BigDecimal; import java.math.BigDecimal;
...@@ -32,6 +34,8 @@ public class BreakContractDriverRecordAddParam { ...@@ -32,6 +34,8 @@ public class BreakContractDriverRecordAddParam {
@ApiModelProperty("违约金") @ApiModelProperty("违约金")
@NotNull(message = "违约金不能为空") @NotNull(message = "违约金不能为空")
@Max(value = 999_999_999L, message = "金额不能超过999999999元")
@Min(value = 0L, message = "金额不能小于0元")
@MoneyInConvert @MoneyInConvert
private BigDecimal figure; private BigDecimal figure;
......
...@@ -7,6 +7,8 @@ import lombok.NoArgsConstructor; ...@@ -7,6 +7,8 @@ import lombok.NoArgsConstructor;
import lombok.Setter; import lombok.Setter;
import lombok.ToString; import lombok.ToString;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.math.BigDecimal; import java.math.BigDecimal;
...@@ -32,6 +34,8 @@ public class BreakContractOwnerRecordAddParam { ...@@ -32,6 +34,8 @@ public class BreakContractOwnerRecordAddParam {
@ApiModelProperty("违约金") @ApiModelProperty("违约金")
@NotNull(message = "违约金不能为空") @NotNull(message = "违约金不能为空")
@Max(value = 999_999_999L, message = "金额不能超过999999999元")
@Min(value = 0L, message = "金额不能小于0元")
@MoneyInConvert @MoneyInConvert
private BigDecimal figure; private BigDecimal figure;
......
package com.clx.performance.param.pc.integral;
import com.clx.performance.vo.pc.integral.AppIntegralRuleVO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import javax.validation.Valid;
/**
* @Author: aiqingguo
* @Description: 新增积分
* @Date: 2023-10-11 17:30:57
* @Version: 1.0
*/
@Setter
@Getter
@ToString
@NoArgsConstructor
public class IntegralRuleUpdateParam {
@Valid
@ApiModelProperty(value = "运单完成积分规则")
private AppIntegralRuleVO.OrderChildCompleteRule orderChildCompleteRule;
@Valid
@ApiModelProperty(value = "货单奖励积分规则")
private AppIntegralRuleVO.OrderAwardRule orderAwardRule;
@Valid
@ApiModelProperty(value = "货单扣减积分规则")
private AppIntegralRuleVO.OrderChildCancelRule orderDiscountRule;
@Valid
@ApiModelProperty(value = "运单超时扣减规则")
private AppIntegralRuleVO.OrderChildTimeoutRule orderChildTimeoutRule;
@Valid
@ApiModelProperty(value = "平台补偿积分规则")
private AppIntegralRuleVO.PlatformCompensationRule platformCompensationRule;
@Valid
@ApiModelProperty(value = "司机上报积分规则")
private AppIntegralRuleVO.DriverReportRule driverReportRule;
}
...@@ -16,5 +16,5 @@ public class ThawAccountParam { ...@@ -16,5 +16,5 @@ public class ThawAccountParam {
private String orderNo; private String orderNo;
// 1: 普通单 2:网运单 // 1: 普通单 2:网运单
private String orderType; private Integer orderType;
} }
package com.clx.performance.param.pc.payment;
import lombok.*;
import java.util.List;
@Getter
@Setter
@ToString
@NoArgsConstructor
public class FreezeUnitDTO {
/** 冻结序列号 */
private String freezeNo;
/** 操作金额(单位分) */
private Long figure;
/** 平台信息费用(单位分) */
private Long fee;
/** 平台信息费收费方式 1from 2to 3all 默认是2 */
private Integer feeType;
/** 返还费用 */
private Long returnFee;
/** 操作类型 1撤销 2完成 3修改*/
private Integer action;
/** 时间戳(单位毫秒) **/
private Long timestamp;
/** 签名使用业务系统私钥签名 不参与签名 **/
private String signature;
/** 备注 不参与签名 可空 */
private String remark;
/** 消费卡列表 */
private List<PayCardDTO> cardList;
/** 分账列表 */
private List<PayChildDTO> childList;
/** 流程标志 1线上2线下 */
private String flag;
/** 补充标记,结合枚举使用(PatchMarkEnum),确定实际业务含义 */
private Integer patchMark;
/** 优惠卷id */
private Integer userCouponId;
}
package com.clx.performance.param.pc.payment;
import lombok.*;
@Getter
@Setter
@ToString
@NoArgsConstructor
public class PayCardDTO {
/** VIP 消费卡ID*/
private Integer cardId;
/** 金额 */
private Integer figure;
}
package com.clx.performance.param.pc.payment;
import lombok.*;
@Getter
@Setter
@ToString
@NoArgsConstructor
public class PayChildDTO {
/** 支付给谁 用户钱包编号 支付给系统时为10000 **/
private Integer to;
/** 交易金额(单位分) 必须为正数 **/
private Integer figure;
/** 备注 不参与签名 可空 */
private String remark;
}
package com.clx.performance.param.pc.payment;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Accessors(chain = true)
public class PayParam {
@NotBlank(message = "支付人不能为空")
@ApiModelProperty(value = "支付来源", example = "2234", dataType = "int")
Integer from;
@NotBlank(message = "支付密码不能为空")
@ApiModelProperty(value = "支付方密码", example = "2356", dataType = "String")
String pwd;
@NotBlank(message = "收款钱包不能为空")
@ApiModelProperty(value = "支付去向", example = "2234", dataType = "int")
Integer to;
@NotBlank(message = "金额不能为空")
@ApiModelProperty(value = "金额", example = "2356", dataType = "int")
Integer figure;
@NotBlank(message = "交易单号不能为空")
@ApiModelProperty(value = "交易单号", example = "2356", dataType = "String")
String tradeNo;
@NotBlank(message = "交易单id不能为空")
@ApiModelProperty(value = "交易单id", example = "23", dataType = "int")
Integer tradeId;
@NotBlank(message = "交易备注不能为空")
@ApiModelProperty(value = "交易备注", example = "23", dataType = "int")
String remark;
}
package com.clx.performance.param.pc.payment;
import lombok.*;
import lombok.experimental.Accessors;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Accessors(chain = true)
public class PayUnitDTO {
/** 支付单元唯一标识*/
private String id;
/** 谁支付 用户钱包编号 */
private Integer from;
/** 支付给谁 用户钱包编号 支付给系统时为10000 **/
private Integer to;
/** 交易金额(单位分) 必须为正数 **/
private Integer figure;
/** 支付类型 参考 <PayUnitTypeEnum> **/
private Integer type;
/** 时间戳(单位毫秒) **/
private Long timestamp;
/** 签名使用业务系统私钥签名 不参与签名 **/
private String signature;
/** 备注 不参与签名 可空 */
private String remark;
/** 关联名称 不参与签名 可空 */
private String relationName;
/** 优惠卷id */
private Integer userCouponId;
/** 订单编码 批量发送 单独处理的订单号 */
private String orderNo;
}
package com.clx.performance.param.pc.payment;
import lombok.*;
import lombok.experimental.Accessors;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Accessors(chain = true)
public class PayUserDTO {
/**用户钱包编号 用户发起的操作必填 */
private Integer userCode;
/** 交易密码 用户发起的操作必填 */
private String pwd;
/** 支付单元 */
PayUnitDTO payUnitDTO;
/** 平台服务续费 **/
private Integer fee = 0;
/** 平台服务续费的去向 **/
private Integer feeToUserCode = 10000;
/** 业务系统编码 参考<SystemCodeEnum> */
private Integer system;
/** 支付结果通知回调地址 */
private String notifyUrl;
/** 操作唯一标识 UUID */
private String uuid;
/** 关联单号 */
private String orderNo;
}
...@@ -164,4 +164,13 @@ public class OrderChildVO { ...@@ -164,4 +164,13 @@ public class OrderChildVO {
return freightPrice.multiply(weight).setScale(2, RoundingMode.HALF_UP); return freightPrice.multiply(weight).setScale(2, RoundingMode.HALF_UP);
} }
@ApiModelProperty("状态MSG")
public String statusMsg;
public String getStatusMsg() {
return OrderChildEnum.Status.getByCode(status).get().getName();
}
@ApiModelProperty("货物类型名称")
public String goodTypeName;
} }
\ No newline at end of file
...@@ -105,5 +105,7 @@ public class OrderGoodsAPPVO { ...@@ -105,5 +105,7 @@ public class OrderGoodsAPPVO {
@ApiModelProperty("创建时间") @ApiModelProperty("创建时间")
private String createTime; private String createTime;
@ApiModelProperty("车牌号")
private String truckNo;
} }
\ No newline at end of file
package com.clx.performance.vo.pc;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import java.math.BigDecimal;
import java.util.List;
/**
* @ClassName OrderChildBussInfoVO
* @Description
* @Author kavin
* @Date 2023/9/24 17:41
* @Version 1.0
*/
@ApiModel(description = "司机取消运单-运单详情")
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class DriverCancelOrderChildInfo {
@ApiModelProperty(value = "取消原因")
private String cancelRemark;
@ApiModelProperty(value = "取消详细原因")
private String cancelDetail;
@ApiModelProperty(value = "图片集合")
private List<String> imageList;
}
package com.clx.performance.vo.pc; package com.clx.performance.vo.pc;
import com.msl.common.convertor.field.Converted;
import com.msl.common.convertor.type.MoneyOutConvert;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
...@@ -16,6 +18,7 @@ public class OrderGoodsEditVO { ...@@ -16,6 +18,7 @@ public class OrderGoodsEditVO {
@ApiModelProperty("拉运吨数") @ApiModelProperty("拉运吨数")
private BigDecimal transportWeight; private BigDecimal transportWeight;
@ApiModelProperty("有效运费") @ApiModelProperty("有效运费")
@MoneyOutConvert
private BigDecimal validFreightPrice; private BigDecimal validFreightPrice;
@ApiModelProperty("用车需求: 1平台车辆 2部分平台车辆 3自有车辆") @ApiModelProperty("用车需求: 1平台车辆 2部分平台车辆 3自有车辆")
private Integer truckDemand; private Integer truckDemand;
...@@ -40,5 +43,7 @@ public class OrderGoodsEditVO { ...@@ -40,5 +43,7 @@ public class OrderGoodsEditVO {
@ApiModelProperty("1:可以全部编辑 0:不能全部编辑") @ApiModelProperty("1:可以全部编辑 0:不能全部编辑")
private boolean editAllFlag; private boolean editAllFlag;
@ApiModelProperty("货单数据")
@Converted(isDynamic = false)
private OrderGoodsVO orderGoodsVO; private OrderGoodsVO orderGoodsVO;
} }
package com.clx.performance.vo.pc;
import com.msl.common.convertor.field.Converted;
import lombok.Data;
@Data
public class OwnerAccountAllVO {
@Converted(isDynamic = true)
private OwnerAccountVO marginAccount;
@Converted(isDynamic = true)
private OwnerAccountVO prepaidFreightAccount;
}
...@@ -66,8 +66,10 @@ public class BreakContractOwnerRuleVO { ...@@ -66,8 +66,10 @@ public class BreakContractOwnerRuleVO {
@ToString @ToString
@NoArgsConstructor @NoArgsConstructor
public static class OrderAmountReduceRule { public static class OrderAmountReduceRule {
@ApiModelProperty(value = "总运费*X%", example = "1.23") @ApiModelProperty(value = "挂单前:总运费*X%", example = "1.23")
private BigDecimal ratio; private BigDecimal beforeRatio;
@ApiModelProperty(value = "挂单后:总运费*X%", example = "1.23")
private BigDecimal afterRatio;
} }
@Getter @Getter
......
package com.clx.performance.vo.pc.integral;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
/**
* @Author: aiqinguo
* @Description: 车辆积分规则
* @Date: 2023/11/06 14:12:53
* @Version: 1.0
*/
@ApiModel(description = "积分规则")
@Getter
@Setter
@ToString
@NoArgsConstructor
public class AppIntegralRuleVO {
@ApiModelProperty(value = "运单完成积分规则")
private OrderChildCompleteRule orderChildCompleteRule;
@ApiModelProperty(value = "货单奖励积分规则")
private OrderAwardRule orderAwardRule;
@ApiModelProperty(value = "货单扣减积分规则")
private OrderChildCancelRule orderChildCancelRule;
@ApiModelProperty(value = "运单超时扣减规则")
private OrderChildTimeoutRule orderChildTimeoutRule;
@ApiModelProperty(value = "平台补偿积分规则")
private PlatformCompensationRule platformCompensationRule;
@ApiModelProperty(value = "司机上报积分规则")
private DriverReportRule driverReportRule;
@Getter
@Setter
@ToString
@NoArgsConstructor
public static class OrderChildCompleteRule{
@ApiModelProperty(value = "当日完成第1笔运单积分x")
@NotNull(message = "参数不能为空")
private Integer integer1;
@ApiModelProperty(value = "当日完成第2笔运单积分x")
@NotNull(message = "参数不能为空")
private Integer integer2;
@ApiModelProperty(value = "当日完成第3笔运单积分x")
@NotNull(message = "参数不能为空")
private Integer integer3;
@ApiModelProperty(value = "当日完成第4笔运单积分x")
@NotNull(message = "参数不能为空")
private Integer integer4;
}
@Getter
@Setter
@ToString
@NoArgsConstructor
public static class OrderAwardRule{
@ApiModelProperty(value = "完成流水单每单附加积分x")
private Integer integerWater;
@ApiModelProperty(value = "当日流水单奖励次数上限x")
private Integer countWaterLimit;
@ApiModelProperty(value = "完成支援单每单附加积分x")
private Integer integerSupport;
@ApiModelProperty(value = "当日支援单奖励次数上限x")
private Integer countSupportLimit;
}
@Getter
@Setter
@ToString
@NoArgsConstructor
public static class OrderChildCancelRule {
@ApiModelProperty(value = "自行取消运单每单扣减积分x")
@NotNull(message = "参数不能为空")
private Integer integralCancel;
@ApiModelProperty(value = "自行取消流水单每单另扣积分x")
private Integer integralWaterCancel;
@ApiModelProperty(value = "自行取消支援单每单另扣积分x")
private Integer integralSupportCancel;
}
@Getter
@Setter
@ToString
@NoArgsConstructor
public static class OrderChildTimeoutRule{
@ApiModelProperty(value = "超时未到达货源地扣积分x")
@NotNull(message = "参数不能为空")
private Integer integralSendAddressTimeout;
@ApiModelProperty(value = "超时未到达目的地扣积分x")
@NotNull(message = "参数不能为空")
private Integer integralReceiveAddressTimeout;
@ApiModelProperty(value = "接单超时扣积分x")
private Integer integralTakeOrderTimeout;
}
@Getter
@Setter
@ToString
@NoArgsConstructor
public static class PlatformCompensationRule{
@ApiModelProperty(value = "平台取消运单补偿积分x")
private Integer integralCancel;
@ApiModelProperty(value = "当日平台补偿积分上限x")
private Integer integralCancelLimit;
@ApiModelProperty(value = "规定时间不能装车补偿x")
private Integer integralLoad;
@ApiModelProperty(value = "规定时间不能卸车补偿x")
private Integer integralUnload;
}
@Getter
@Setter
@ToString
@NoArgsConstructor
public static class DriverReportRule{
@ApiModelProperty(value = "提交基础信息每项积分x")
private Integer integralTruck;
@ApiModelProperty(value = "油表上报积分x")
private Integer integralRefuel;
@ApiModelProperty(value = "上报交通拥堵积分x")
private Integer integralTraffic;
@ApiModelProperty(value = "上报货源地需要排队积分x")
private Integer integralSendAddressWait;
@ApiModelProperty(value = "上报货源地无需排队积分x")
private Integer integralSendAddressNoWait;
@ApiModelProperty(value = "上报目的地需要排队积分x")
private Integer integralReceiveAddressWait;
@ApiModelProperty(value = "上报目的地无需排队积分x")
private Integer integralReceiveAddressNoWait;
@ApiModelProperty(value = "上报煤炭质量问题积分x")
private Integer integralQuality;
@ApiModelProperty(value = "上报拉运异常问题积分x")
private Integer integralAbnormal;
@ApiModelProperty(value = "限制频繁上报奖励间隔x(小时)")
private BigDecimal reportLimit;
@ApiModelProperty(value = "当日上报奖励积分上限x")
private Integer integralLimit;
}
@ApiModelProperty(value = "运单完成积分规则", example = "", hidden = true)
private OrderChildCompleteRule orderChildCompleteRuleJson;
@ApiModelProperty(value = "货单奖励积分规则", example = "", hidden = true)
private OrderAwardRule orderAwardRuleJson;
@ApiModelProperty(value = "货单扣减积分规则", example = "", hidden = true)
private OrderChildCancelRule orderDiscountRuleJson;
@ApiModelProperty(value = "运单超时扣减规则", example = "", hidden = true)
private OrderChildTimeoutRule orderChildTimeoutRuleJson;
@ApiModelProperty(value = "平台补偿积分规则", example = "", hidden = true)
private PlatformCompensationRule platformCompensationRuleJson;
}
\ No newline at end of file
...@@ -3,10 +3,14 @@ package com.clx.performance.component; ...@@ -3,10 +3,14 @@ package com.clx.performance.component;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.clx.performance.constant.RedisConstants; import com.clx.performance.constant.RedisConstants;
import com.clx.performance.dao.OrderGoodsDriverTruckDao; import com.clx.performance.dao.OrderGoodsDriverTruckDao;
import com.clx.performance.dao.OrderGoodsTruckBindDao;
import com.clx.performance.enums.OrderGoodsTruckBindEnum;
import com.clx.performance.model.OrderGoodsDriverTruck; import com.clx.performance.model.OrderGoodsDriverTruck;
import com.clx.performance.model.OrderGoodsTruckBind;
import com.msl.common.base.Optional; import com.msl.common.base.Optional;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -23,6 +27,8 @@ public class GoodsOrderTruckRecordComponent { ...@@ -23,6 +27,8 @@ public class GoodsOrderTruckRecordComponent {
private final OrderGoodsDriverTruckDao orderGoodsDriverTruckDao; private final OrderGoodsDriverTruckDao orderGoodsDriverTruckDao;
private final OrderGoodsTruckBindDao orderGoodsTruckBindDao;
public void saveTruckRecord(String orderGoodsNo, List<String> truckList) { public void saveTruckRecord(String orderGoodsNo, List<String> truckList) {
redisTemplate.opsForSet().add(RedisConstants.ORDER_GOODS_TRUCK_RECORD + orderGoodsNo, truckList.toArray(new String[]{})); redisTemplate.opsForSet().add(RedisConstants.ORDER_GOODS_TRUCK_RECORD + orderGoodsNo, truckList.toArray(new String[]{}));
...@@ -33,7 +39,7 @@ public class GoodsOrderTruckRecordComponent { ...@@ -33,7 +39,7 @@ public class GoodsOrderTruckRecordComponent {
public void deleteTruckRecord(String orderGoodsNo) { public void deleteTruckRecord(String orderGoodsNo) {
redisTemplate.delete(RedisConstants.ORDER_GOODS_TRUCK_RECORD + orderGoodsNo); redisTemplate.delete(RedisConstants.ORDER_GOODS_TRUCK_RECORD + orderGoodsNo);
//redisTemplate.opsForSet().remove(RedisConstants.ORDER_GOODS_TRUCK_RECORD + orderGoodsNo,); //redisTemplate.opsForSet().remove(RedisConstants.ORDER_GOODS_TRUCK_RECORD + orderGoodsNo,);
redisTemplate.opsForSet().remove(RedisConstants.ORDER_GOODS_RECORD, orderGoodsNo); redisTemplate.opsForSet().remove(RedisConstants.ORDER_GOODS_RECORD, RedisConstants.ORDER_GOODS_TRUCK_RECORD + orderGoodsNo);
} }
//删除货单下的指定车牌号 //删除货单下的指定车牌号
...@@ -62,4 +68,24 @@ public class GoodsOrderTruckRecordComponent { ...@@ -62,4 +68,24 @@ public class GoodsOrderTruckRecordComponent {
return truckList; return truckList;
} }
//释放车辆
public void releaseDriverCard(String orderGoodsNo, String truckNo) {
log.info("执行释放车辆,货单号:{},车牌号:{}", orderGoodsNo, truckNo);
orderGoodsTruckBindDao.updateOrderGoodsBindStatus(orderGoodsNo, OrderGoodsTruckBindEnum.Status.SUCCESS.getCode(), truckNo);
this.deleteTruckRecord(orderGoodsNo, truckNo);
}
//定向单接单时,如果接完后没有余量,则释放其他未接单的定向单记录
public void releaseDriverAndTruckBind(String orderGoodsNo, String truckNo) {
List<OrderGoodsTruckBind> truckBindList = orderGoodsTruckBindDao.selectListByOrderGoodsNo(orderGoodsNo);
for (OrderGoodsTruckBind bind : truckBindList) {
if (StringUtils.equals(truckNo, bind.getTruckNo())) {
continue;
}
this.deleteTruckRecord(orderGoodsNo, bind.getTruckNo());
}
orderGoodsTruckBindDao.updateOrderGoodsBindStatusExpire(orderGoodsNo, truckNo);
}
} }
...@@ -8,15 +8,15 @@ import com.clx.performance.constant.RedisConstants; ...@@ -8,15 +8,15 @@ import com.clx.performance.constant.RedisConstants;
import com.clx.performance.dao.OrderChildDao; import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OrderGoodsDao; import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dao.OrderGoodsTruckBindDao; import com.clx.performance.dao.OrderGoodsTruckBindDao;
import com.clx.performance.enums.OrderChildEnum; import com.clx.performance.enums.*;
import com.clx.performance.enums.OrderGoodsStatusEnum;
import com.clx.performance.enums.OrderGoodsTruckBindEnum;
import com.clx.performance.enums.TruckDemandEnum;
import com.clx.performance.extranal.user.DriverService; import com.clx.performance.extranal.user.DriverService;
import com.clx.performance.model.OrderChild; import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
import com.clx.performance.service.OrderChildLogService;
import com.clx.performance.service.breakcontract.BreakContractDriverRecordService;
import com.clx.user.enums.driver.DriverInfoEnum; import com.clx.user.enums.driver.DriverInfoEnum;
import com.msl.common.base.Optional; import com.msl.common.base.Optional;
import com.msl.common.utils.DateUtils;
import com.xxl.job.core.handler.annotation.XxlJob; import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -29,7 +29,10 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -29,7 +29,10 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.ZoneOffset; import java.time.ZoneOffset;
import java.util.*; import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
/** /**
* 货单最晚接单时间、最晚到达货源地时间处理 * 货单最晚接单时间、最晚到达货源地时间处理
...@@ -53,6 +56,11 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean { ...@@ -53,6 +56,11 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean {
private final DriverService driverService; private final DriverService driverService;
private final BreakContractDriverRecordService breakContractDriverRecordService;
private final OrderChildLogService orderChildLogService;
//根据货单最晚接单时间处理 //根据货单最晚接单时间处理
public void expireProduceByLastOrderTime(LocalDateTime localDateTime, String orderGoodsNo) { public void expireProduceByLastOrderTime(LocalDateTime localDateTime, String orderGoodsNo) {
redisTemplate.opsForZSet().add(RedisConstants.ORDER_GOODS_STATUS_LAZY_LAST_ORDER_TIME, orderGoodsNo, localDateTime.toInstant(ZoneOffset.of("+8")).toEpochMilli()); redisTemplate.opsForZSet().add(RedisConstants.ORDER_GOODS_STATUS_LAZY_LAST_ORDER_TIME, orderGoodsNo, localDateTime.toInstant(ZoneOffset.of("+8")).toEpochMilli());
...@@ -119,7 +127,7 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean { ...@@ -119,7 +127,7 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean {
orderGoodsDao.updateOrderGoodsStatusByOrderGoodsNo(orderGoodsNo, OrderGoodsStatusEnum.Status.COMPLETED.getCode()); orderGoodsDao.updateOrderGoodsStatusByOrderGoodsNo(orderGoodsNo, OrderGoodsStatusEnum.Status.COMPLETED.getCode());
} else { } else {
//更新货单已完成 //更新货单已完成
log.info("当前货单虽然可拉运吨数为0,未存在未拉运完成的运单,所以更新为已完成,货单编号{}", orderGoodsNo); log.info("当前货单可拉运吨数为0,未存在未拉运完成的运单,所以更新为已完成,货单编号{}", orderGoodsNo);
orderGoodsDao.updateOrderGoodsStatusByOrderGoodsNo(orderGoodsNo, OrderGoodsStatusEnum.Status.SUCCESS.getCode()); orderGoodsDao.updateOrderGoodsStatusByOrderGoodsNo(orderGoodsNo, OrderGoodsStatusEnum.Status.SUCCESS.getCode());
} }
...@@ -142,8 +150,8 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean { ...@@ -142,8 +150,8 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean {
} }
} }
orderFeign.rollbackOrderWeight(param); orderFeign.rollbackOrderWeight(param);
//更新已完结,并设置剩余吨数为0 //更新已完结
orderGoodsDao.updateOrderGoodsStatusAndRollbackResidueWeightByOrderGoodsNo(orderGoods.getId(), OrderGoodsStatusEnum.Status.COMPLETED.getCode()); orderGoodsDao.updateOrderGoodsStatusByOrderGoodsNo(orderGoodsNo, OrderGoodsStatusEnum.Status.COMPLETED.getCode());
log.info("删除redis ORDER_GOODS_STATUS_LAZY id: {}", orderGoodsId.getValue()); log.info("删除redis ORDER_GOODS_STATUS_LAZY id: {}", orderGoodsId.getValue());
} }
...@@ -165,7 +173,7 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean { ...@@ -165,7 +173,7 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean {
public void consumingLastArriveSendTime() { public void consumingLastArriveSendTime() {
log.info("货单-最晚到达货源地时间-定时器启动"); log.info("货单-最晚到达货源地时间-定时器启动");
long nowTimeMillis = System.currentTimeMillis(); long nowTimeMillis = System.currentTimeMillis();
String now = DateUtils.formatDateTime(LocalDateTime.now(), "yyyy-MM-dd HH:mm:ss").get();
Set<ZSetOperations.TypedTuple<String>> orderGoodsIds = redisTemplate.opsForZSet().rangeByScoreWithScores( Set<ZSetOperations.TypedTuple<String>> orderGoodsIds = redisTemplate.opsForZSet().rangeByScoreWithScores(
RedisConstants.ORDER_GOODS_STATUS_LAZY_LAST_ARRIVE_SEND_TIME, RedisConstants.ORDER_GOODS_STATUS_LAZY_LAST_ARRIVE_SEND_TIME,
0, nowTimeMillis //延时任务score最小值 0, nowTimeMillis //延时任务score最小值
...@@ -198,27 +206,34 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean { ...@@ -198,27 +206,34 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean {
BigDecimal childSum = BigDecimal.ZERO; BigDecimal childSum = BigDecimal.ZERO;
List<Integer> ids = new LinkedList<>(); List<String> childNoList = new LinkedList<>();
for (OrderChild orderChild : orderChildrenList) { for (OrderChild orderChild : orderChildrenList) {
childSum = childSum.add(orderChild.getWeight()); childSum = childSum.add(orderChild.getWeight());
ids.add(orderChild.getId()); childNoList.add(orderChild.getChildNo());
//释放车辆 //释放车辆
driverService.updateOrderStatus(orderChild.getDriverUserNo(), DriverInfoEnum.DriverStatus.NO.getCode(), orderChild.getTruckId(), 1); driverService.updateOrderStatus(orderChild.getDriverUserNo(), DriverInfoEnum.DriverStatus.NO.getCode(), orderChild.getTruckId(), 1);
orderChild.setCancelTime(DateUtils.parseDateTime(now).get());
orderChild.setFinishTime(DateUtils.parseDateTime(now).get());
breakContractDriverRecordService.saveDriverRecordOfOrderChildCancel(orderChild, 0L, "系统");
//保存运单日志数据
orderChildLogService.saveDriverOrderChildLog(orderChild.getChildNo(), OrderChildLogEnum.Type.PLATFORM_CANCEL.getCode(),
OrderChildLogEnum.Type.PLATFORM_CANCEL.getMsg(), 0L, "系统");
} }
log.info("取消运单ID集合:{}", ids); log.info("取消运单ID集合:{}", childNoList);
if (CollectionUtil.isNotEmpty(ids)) { if (CollectionUtil.isNotEmpty(childNoList)) {
orderChildDao.batchUpdateOrderChildStatus(OrderChildEnum.Status.PLATFORM_CANCEL.getCode(), ids); orderChildDao.batchUpdateOrderChildStatus(OrderChildEnum.Status.PLATFORM_CANCEL.getCode(), "系统取消", now, now, childNoList);
} }
RollbackOrderWeightParam param = new RollbackOrderWeightParam();
param.setOrderNo(orderGoods.getOrderNo());
param.setResidueWeight(orderGoods.getResidueTransportWeight());
//当前货单已经到了最晚接单时间,所有相关状态均已经处理完毕,此刻单独处理运单的数据 //当前货单已经到了最晚接单时间,所有相关状态均已经处理完毕,此刻单独处理运单的数据
if (OrderGoodsStatusEnum.Status.SUCCESS.getCode().equals(orderGoods.getOrderGoodsStatus()) if (OrderGoodsStatusEnum.Status.SUCCESS.getCode().equals(orderGoods.getOrderGoodsStatus())
|| OrderGoodsStatusEnum.Status.COMPLETED.getCode().equals(orderGoods.getOrderGoodsStatus()) || OrderGoodsStatusEnum.Status.COMPLETED.getCode().equals(orderGoods.getOrderGoodsStatus())
) { ) {
RollbackOrderWeightParam param = new RollbackOrderWeightParam();
param.setOrderNo(orderGoods.getOrderNo());
param.setResidueWeight(childSum);
//当前情况需要回填订单的余量 //当前情况需要回填订单的余量
if (orderGoods.getTruckDemand().equals(1) || orderGoods.getTruckDemand().equals(3)) { if (orderGoods.getTruckDemand().equals(1) || orderGoods.getTruckDemand().equals(3)) {
param.setOwnResidueCarryWeight(BigDecimal.ZERO); param.setOwnResidueCarryWeight(BigDecimal.ZERO);
...@@ -233,13 +248,15 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean { ...@@ -233,13 +248,15 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean {
} }
} }
//只更新货单已拉运吨数 //只更新货单已拉运吨数
orderGoodsDao.updateOrderGoodsSetAlreadyWeight(childSum, orderGoods.getId()); orderGoodsDao.updateOrderGoodsSetResidueWeightAndAlreadyWeight(childSum, childSum, orderGoods.getId());
orderFeign.rollbackOrderWeight(param); orderFeign.rollbackOrderWeight(param);
} else { } else {
//只更新货单未拉运吨数,已拉运吨数 //只更新货单未拉运吨数,已拉运吨数
orderGoodsDao.updateOrderGoodsSetResidueWeightAndAlreadyWeight(childSum, childSum, orderGoods.getId()); orderGoodsDao.updateOrderGoodsSetResidueWeightAndAlreadyWeight(childSum, childSum, orderGoods.getId());
} }
redisTemplate.opsForZSet().remove(RedisConstants.ORDER_GOODS_STATUS_LAZY_LAST_ARRIVE_SEND_TIME, orderGoodsId.getValue()); redisTemplate.opsForZSet().remove(RedisConstants.ORDER_GOODS_STATUS_LAZY_LAST_ARRIVE_SEND_TIME, orderGoodsId.getValue());
} }
} }
} }
......
package com.clx.performance.config;
import lombok.Getter;
import lombok.Setter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
@Configuration
@Getter
@Setter
public class MslPaymentConfig {
@Value("${msl.payment.host}")
private String host;
@Value("${msl.payment.notifyhost}")
private String notifyhost;
}
package com.clx.performance.config; package com.clx.performance.config;
import com.clx.performance.constant.RabbitKeyConstants; import com.clx.performance.constant.RabbitKeyConstants;
import org.springframework.amqp.core.Binding; import org.springframework.amqp.core.*;
import org.springframework.amqp.core.BindingBuilder; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.amqp.core.DirectExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
...@@ -93,32 +91,32 @@ public class RabbitBeanConfig { ...@@ -93,32 +91,32 @@ public class RabbitBeanConfig {
/** /**
* 货单挂单队列 // * 货单挂单队列
* @return // * @return
*/ // */
@Bean // @Bean
public Queue orderGoodsOnQueue() { // public Queue orderGoodsOnQueue() {
Map<String, Object> params = new HashMap<>(6); // Map<String, Object> params = new HashMap<>(6);
params.put("x-dead-letter-exchange", RabbitKeyConstants.ORDER_GOODS_ON_DEAD_EXCHANGE); // params.put("x-dead-letter-exchange", RabbitKeyConstants.ORDER_GOODS_ON_DEAD_EXCHANGE);
params.put("x-dead-letter-routing-key", RabbitKeyConstants.ORDER_GOODS_ON_DEAD_ROUTE_KEY); // params.put("x-dead-letter-routing-key", RabbitKeyConstants.ORDER_GOODS_ON_DEAD_ROUTE_KEY);
return new Queue(RabbitKeyConstants.ORDER_GOODS_ON_QUEUE, true, false, false, params); // return new Queue(RabbitKeyConstants.ORDER_GOODS_ON_QUEUE, true, false, false, params);
} // }
//
/** // /**
* 货单挂单中交换机 // * 货单挂单中交换机
**/ // **/
@Bean // @Bean
public DirectExchange orderGoodsOnExchange() { // public DirectExchange orderGoodsOnExchange() {
return new DirectExchange(RabbitKeyConstants.ORDER_GOODS_ON_EXCHANGE); // return new DirectExchange(RabbitKeyConstants.ORDER_GOODS_ON_EXCHANGE);
} // }
//
/** // /**
* 货单挂单中绑定 // * 货单挂单中绑定
*/ // */
@Bean // @Bean
public Binding orderGoodsOnExchangeBind() { // public Binding orderGoodsOnExchangeBind() {
return BindingBuilder.bind(orderGoodsOnQueue()).to(orderGoodsOnExchange()).with(RabbitKeyConstants.ORDER_GOODS_ON_ROUTE_KEY); // return BindingBuilder.bind(orderGoodsOnQueue()).to(orderGoodsOnExchange()).with(RabbitKeyConstants.ORDER_GOODS_ON_ROUTE_KEY);
} // }
/** /**
* 死信队列:死信队列处理延迟消息货单挂单 * 死信队列:死信队列处理延迟消息货单挂单
...@@ -133,19 +131,26 @@ public class RabbitBeanConfig { ...@@ -133,19 +131,26 @@ public class RabbitBeanConfig {
* 货单挂单中交换机:死信队列处理延迟消息 * 货单挂单中交换机:死信队列处理延迟消息
**/ **/
@Bean @Bean
public DirectExchange orderGoodsOnDeadExchange() { public CustomExchange orderGoodsOnDeadExchange() {
return new DirectExchange(RabbitKeyConstants.ORDER_GOODS_ON_DEAD_EXCHANGE); Map<String, Object> arguments = new HashMap<>();
//设置路由模式 direct模式
arguments.put("x-delayed-type", "direct");
return new CustomExchange(RabbitKeyConstants.ORDER_GOODS_ON_DEAD_EXCHANGE,"x-delayed-message", true, false, arguments);
} }
/** /**
* 货单挂单中绑定:死信队列处理延迟消息 * 货单挂单中绑定:死信队列处理延迟消息
*/ */
// @Bean
// public Binding orderGoodsDeadExchangeBind() {
// return BindingBuilder.bind(orderGoodsOnDeadQueue()).to(orderGoodsOnDeadExchange()).with(RabbitKeyConstants.ORDER_GOODS_ON_DEAD_ROUTE_KEY);
// }
//绑定交换机,队列和routingKey
@Bean @Bean
public Binding orderGoodsDeadExchangeBind() { public Binding delayedQueueBindingDelayedExchange(@Qualifier("orderGoodsOnDeadQueue")Queue queue,@Qualifier("orderGoodsOnDeadExchange")CustomExchange customExchange) {
return BindingBuilder.bind(orderGoodsOnDeadQueue()).to(orderGoodsOnDeadExchange()).with(RabbitKeyConstants.ORDER_GOODS_ON_DEAD_ROUTE_KEY); return BindingBuilder.bind(queue).to(customExchange).with(RabbitKeyConstants.ORDER_GOODS_ON_DEAD_ROUTE_KEY).noargs();
} }
/** /**
* 订单取消队列 * 订单取消队列
* @return * @return
......
...@@ -2,20 +2,27 @@ package com.clx.performance.controller.app; ...@@ -2,20 +2,27 @@ package com.clx.performance.controller.app;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.mapper.OrderGoodsMapper; import com.clx.performance.mapper.OrderGoodsMapper;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.param.app.OrderGoodsListPageParam; import com.clx.performance.param.app.OrderGoodsListPageParam;
import com.clx.performance.service.OrderGoodsService; import com.clx.performance.service.OrderGoodsService;
import com.clx.performance.service.OrderGoodsTruckBindService;
import com.clx.performance.vo.app.OrderGoodsAPPVO; import com.clx.performance.vo.app.OrderGoodsAPPVO;
import com.clx.performance.vo.pc.OrderGoodsVO; import com.clx.performance.vo.pc.OrderGoodsVO;
import com.msl.common.base.PageData; import com.msl.common.base.PageData;
import com.msl.common.convertor.aspect.UnitCovert; import com.msl.common.convertor.aspect.UnitCovert;
import com.msl.common.result.Result; import com.msl.common.result.Result;
import com.msl.user.data.UserSessionData;
import com.msl.user.utils.TokenUtil;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List;
/** /**
* @ClassName GoodsOrderController * @ClassName GoodsOrderController
* @Description * @Description
...@@ -28,14 +35,13 @@ import org.springframework.web.bind.annotation.*; ...@@ -28,14 +35,13 @@ import org.springframework.web.bind.annotation.*;
@RestController @RestController
@RequestMapping("/app/goodsOrder") @RequestMapping("/app/goodsOrder")
@Validated @Validated
@AllArgsConstructor
@Api(tags = "APP-货单") @Api(tags = "APP-货单")
public class AppGoodsOrderController { public class AppGoodsOrderController {
@Autowired private final OrderGoodsService orderGoodsService;
OrderGoodsService orderGoodsService;
@Autowired private final OrderGoodsTruckBindService orderGoodsTruckBindService;
OrderGoodsMapper orderGoodsMapper;
@ApiOperation(value = "查看货单详情", notes = "<br>By:胡宇帆") @ApiOperation(value = "查看货单详情", notes = "<br>By:胡宇帆")
...@@ -55,10 +61,9 @@ public class AppGoodsOrderController { ...@@ -55,10 +61,9 @@ public class AppGoodsOrderController {
} }
// @ApiOperation(value = "专属货单", notes = "<br>By:胡宇帆") @ApiOperation(value = "司机端无接单位置上报", notes = "<br>By:胡宇帆")
// @PostMapping("/exclusiveOrderGoodsList") @GetMapping("/getCancelOrderGoods")
// @UnitCovert(param = false) public Result<List<OrderGoodsAPPVO>> getCancelOrderGoods(@RequestParam(value = "userNo") Long userNo) {
// public Result<List<OrderGoodsVO>> exclusiveOrderGoodsList(@Validated @RequestBody OrderGoodsListParam orderGoodsListParam) { return Result.ok(orderGoodsTruckBindService.getCancelOrderGoods(userNo));
// return Result.ok(orderGoodsService.openOrderPageGoodsList(orderGoodsListParam)); }
// }
} }
...@@ -26,7 +26,7 @@ public class OrderCancelFeignController { ...@@ -26,7 +26,7 @@ public class OrderCancelFeignController {
private final OrderCancelService orderCancelService; private final OrderCancelService orderCancelService;
@ApiOperation(value = "货主端订单取消", notes = "<br>By:胡宇帆") @ApiOperation(value = "承运单发起订单取消货主端进行确认", notes = "<br>By:胡宇帆")
@PostMapping("/orderCancel") @PostMapping("/orderCancel")
public Result<Object> orderCancel(@RequestBody OrderCancelFeignParam param) { public Result<Object> orderCancel(@RequestBody OrderCancelFeignParam param) {
// OrderCancelParam cancelParam = new OrderCancelParam(); // OrderCancelParam cancelParam = new OrderCancelParam();
...@@ -34,7 +34,7 @@ public class OrderCancelFeignController { ...@@ -34,7 +34,7 @@ public class OrderCancelFeignController {
// cancelParam.setCancelType(3); // cancelParam.setCancelType(3);
// cancelParam.setCreateByType(1); // cancelParam.setCreateByType(1);
// orderCancelService.platformCancelOrderPrePC(cancelParam); // orderCancelService.platformCancelOrderPrePC(cancelParam);
orderCancelService.ownerCancelOrderPre(param.getOrderNo()); orderCancelService.ownerConfirmCancelOrderPre(param.getOrderNo());
return Result.ok(); return Result.ok();
} }
} }
...@@ -4,16 +4,14 @@ import cn.hutool.json.JSONUtil; ...@@ -4,16 +4,14 @@ import cn.hutool.json.JSONUtil;
import com.clx.performance.param.pc.owner.FrozenAccountParam; import com.clx.performance.param.pc.owner.FrozenAccountParam;
import com.clx.performance.param.pc.owner.ThawAccountParam; import com.clx.performance.param.pc.owner.ThawAccountParam;
import com.clx.performance.service.OwnerAccountService; import com.clx.performance.service.OwnerAccountService;
import com.clx.performance.vo.pc.OwnerAccountAllVO;
import com.msl.common.result.Result; import com.msl.common.result.Result;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j @Slf4j
@RestController @RestController
...@@ -40,4 +38,10 @@ public class OwnerAccountFeignController { ...@@ -40,4 +38,10 @@ public class OwnerAccountFeignController {
ownerAccountService.ownerAccountThaw(param); ownerAccountService.ownerAccountThaw(param);
return Result.ok(); return Result.ok();
} }
@ApiOperation(value = "查询用户预付运费和保证金账户", notes = "<br>By:胡宇帆")
@GetMapping("/accountInfo")
public Result<OwnerAccountAllVO> accountInfo(@RequestParam Long userNo) {
return Result.ok(ownerAccountService.accountInfo(userNo));
}
} }
package com.clx.performance.controller.payment;
import com.clx.performance.param.pay.NotifyString;
import com.msl.common.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.Objects;
@Slf4j
@RestController
@RequestMapping(value="/payment/notify")
@Validated
@Api(tags = "承运端-支付回调")
@AllArgsConstructor
public class PayNotifyController {
@ApiOperation(value = "用户支付完成回调接口", notes = " <br>By:胡宁宁")
@RequestMapping(value = "/userPayNotify", method = RequestMethod.POST)
public Result<Object> userPayNotify(@RequestBody NotifyString notify) {
log.info("用户支付完成回调接口 传参 {}", notify);
if (Objects.isNull(notify) || Objects.isNull(notify.getCode()) || Objects.isNull(notify.getAction())) {
return new Result<>();
}
if (notify.getCode() != 0) {
// 支付失败处理
log.info("支付失败处理 唯一id {}", notify.getOrderNo());
} else {
// 支付支付成功处理
log.info(" 支付支付成功处理 唯一id {}", notify.getOrderNo());
}
Result<Object> ret = new Result<>();
return ret;
}
}
...@@ -91,6 +91,12 @@ public class CarrierOrderChildController { ...@@ -91,6 +91,12 @@ public class CarrierOrderChildController {
return Result.page(page.getRecords(), page.getTotal(), page.getPages()); return Result.page(page.getRecords(), page.getTotal(), page.getPages());
} }
@ApiOperation(value = "司机取消运单-运单详情", notes = "<br>By:胡宇帆")
@GetMapping("/driverCancelOrderChildInfo")
public Result<DriverCancelOrderChildInfo> driverCancelOrderChildInfo(@NotBlank(message = "运单编号不能为空") String orderChildNo) {
return Result.ok(orderChildService.driverCancelOrderChildInfo(orderChildNo));
}
//模拟 //模拟
@GetMapping("/orderChildExpect") @GetMapping("/orderChildExpect")
public void getMonitorOrerChildListsByParam() { public void getMonitorOrerChildListsByParam() {
......
...@@ -2,6 +2,7 @@ package com.clx.performance.controller.pc; ...@@ -2,6 +2,7 @@ package com.clx.performance.controller.pc;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.order.feign.OrderFeign; import com.clx.order.feign.OrderFeign;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.param.pc.OrderGoodsCancelParam; import com.clx.performance.param.pc.OrderGoodsCancelParam;
import com.clx.performance.param.pc.UpdateEditOrderGoodsParam; import com.clx.performance.param.pc.UpdateEditOrderGoodsParam;
import com.clx.performance.param.pc.OrderGoodsParams; import com.clx.performance.param.pc.OrderGoodsParams;
...@@ -13,6 +14,7 @@ import com.clx.performance.enums.PerformanceResultEnum; ...@@ -13,6 +14,7 @@ import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.param.pc.UpdateOrderGoodsPriceParam; import com.clx.performance.param.pc.UpdateOrderGoodsPriceParam;
import com.clx.performance.service.OrderChildService; import com.clx.performance.service.OrderChildService;
import com.clx.performance.service.OrderGoodsService; import com.clx.performance.service.OrderGoodsService;
import com.clx.performance.service.OrderGoodsTruckBindService;
import com.clx.performance.vo.pc.OrderChildPCVO; import com.clx.performance.vo.pc.OrderChildPCVO;
import com.clx.performance.vo.pc.OrderGoodsEditVO; import com.clx.performance.vo.pc.OrderGoodsEditVO;
import com.clx.performance.vo.pc.OrderGoodsVO; import com.clx.performance.vo.pc.OrderGoodsVO;
...@@ -20,6 +22,7 @@ import com.msl.common.base.PageData; ...@@ -20,6 +22,7 @@ import com.msl.common.base.PageData;
import com.msl.common.convertor.aspect.UnitCovert; import com.msl.common.convertor.aspect.UnitCovert;
import com.msl.common.exception.ServiceSystemException; import com.msl.common.exception.ServiceSystemException;
import com.msl.common.result.Result; import com.msl.common.result.Result;
import com.msl.common.utils.DateUtils;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -69,6 +72,9 @@ public class GoodsOrderController { ...@@ -69,6 +72,9 @@ public class GoodsOrderController {
@Autowired @Autowired
private GoodsOrderStrategyContext goodsOrderStrategyContext; private GoodsOrderStrategyContext goodsOrderStrategyContext;
@Autowired
private OrderGoodsTruckBindService orderGoodsTruckBindService;
@ApiOperation(value = "提交货单", notes = "<br>By:胡宇帆") @ApiOperation(value = "提交货单", notes = "<br>By:胡宇帆")
@PostMapping("/saveGoodsOrder") @PostMapping("/saveGoodsOrder")
@UnitCovert(result = false) @UnitCovert(result = false)
...@@ -89,11 +95,11 @@ public class GoodsOrderController { ...@@ -89,11 +95,11 @@ public class GoodsOrderController {
goodsOrderStrategyContext.strategyContext.get(truckDemand).saveGoodsOrder(orderGoodsParams, orderInfo, now, rabbitTemplate); goodsOrderStrategyContext.strategyContext.get(truckDemand).saveGoodsOrder(orderGoodsParams, orderInfo, now, rabbitTemplate);
} catch (Exception e) { } catch (Exception e) {
log.error(ExceptionUtils.getStackTrace(e)); log.info(e.getMessage());
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, e.getMessage()); throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, e.getMessage());
} finally { } finally {
try { try {
if (rLock != null && rLock.isLocked()) { if (rLock != null && rLock.isLocked() && rLock.isHeldByCurrentThread()) {
rLock.unlock(); rLock.unlock();
} }
log.info("锁释放完成"); log.info("锁释放完成");
...@@ -130,6 +136,7 @@ public class GoodsOrderController { ...@@ -130,6 +136,7 @@ public class GoodsOrderController {
@ApiOperation(value = "货单编辑查询", notes = "<br>By:胡宇帆") @ApiOperation(value = "货单编辑查询", notes = "<br>By:胡宇帆")
@GetMapping("/findOrderGoodsByBatchNumber") @GetMapping("/findOrderGoodsByBatchNumber")
@UnitCovert
public Result<OrderGoodsEditVO> findOrderGoodsByBatchNumber(@RequestParam(value = "id") Integer id){ public Result<OrderGoodsEditVO> findOrderGoodsByBatchNumber(@RequestParam(value = "id") Integer id){
OrderGoodsEditVO orderGoodsVO = orderGoodsService.findOrderGoodsById(id); OrderGoodsEditVO orderGoodsVO = orderGoodsService.findOrderGoodsById(id);
return Result.ok(orderGoodsVO); return Result.ok(orderGoodsVO);
...@@ -137,6 +144,7 @@ public class GoodsOrderController { ...@@ -137,6 +144,7 @@ public class GoodsOrderController {
@ApiOperation(value = "货单编辑提交", notes = "<br>By:刘海泉") @ApiOperation(value = "货单编辑提交", notes = "<br>By:刘海泉")
@PostMapping("/updateEditOrderGoods") @PostMapping("/updateEditOrderGoods")
@UnitCovert
public Result<Object> updateEditOrderGoods(@RequestBody @Validated UpdateEditOrderGoodsParam param) { public Result<Object> updateEditOrderGoods(@RequestBody @Validated UpdateEditOrderGoodsParam param) {
orderGoodsService.updateEditOrderGoods(param); orderGoodsService.updateEditOrderGoods(param);
return Result.ok(); return Result.ok();
...@@ -188,4 +196,5 @@ public class GoodsOrderController { ...@@ -188,4 +196,5 @@ public class GoodsOrderController {
return Result.ok(); return Result.ok();
} }
} }
package com.clx.performance.controller.pc; package com.clx.performance.controller.pc;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.ArtificialCancelOrderParam;
import com.clx.performance.param.pc.OrderCancelParam; import com.clx.performance.param.pc.OrderCancelParam;
import com.clx.performance.param.pc.PageOrderGoodsListParam;
import com.clx.performance.service.OrderCancelService; import com.clx.performance.service.OrderCancelService;
import com.clx.performance.vo.app.OrderChildVO;
import com.clx.performance.vo.pc.OrderGoodsVO;
import com.msl.common.base.PageData;
import com.msl.common.base.PageParam;
import com.msl.common.convertor.aspect.UnitCovert;
import com.msl.common.result.Result; import com.msl.common.result.Result;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
...@@ -11,6 +19,8 @@ import lombok.extern.slf4j.Slf4j; ...@@ -11,6 +19,8 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List;
@Slf4j @Slf4j
@RestController @RestController
@RequestMapping(value="/pc/order/") @RequestMapping(value="/pc/order/")
...@@ -24,7 +34,6 @@ public class OrderCancelController { ...@@ -24,7 +34,6 @@ public class OrderCancelController {
@ApiOperation(value = "承运端取消订单", notes = "<br>By:胡宇帆") @ApiOperation(value = "承运端取消订单", notes = "<br>By:胡宇帆")
@PostMapping("/platformCancelOrderPre") @PostMapping("/platformCancelOrderPre")
public Result<Object> platformCancelOrderPre(@RequestBody OrderCancelParam param) { public Result<Object> platformCancelOrderPre(@RequestBody OrderCancelParam param) {
param.setCancelType(1);
orderCancelService.platformCancelOrderPre(param); orderCancelService.platformCancelOrderPre(param);
return Result.ok(); return Result.ok();
} }
...@@ -32,8 +41,29 @@ public class OrderCancelController { ...@@ -32,8 +41,29 @@ public class OrderCancelController {
@ApiOperation(value = "货主端取消订单", notes = "<br>By:胡宇帆") @ApiOperation(value = "货主端取消订单", notes = "<br>By:胡宇帆")
@PostMapping("/ownCancelOrderPre") @PostMapping("/ownCancelOrderPre")
public Result<Object> ownCancelOrderPre(@RequestBody OrderCancelParam param) { public Result<Object> ownCancelOrderPre(@RequestBody OrderCancelParam param) {
param.setCancelType(2);
orderCancelService.ownerCancelOrderPre(param); orderCancelService.ownerCancelOrderPre(param);
return Result.ok(); return Result.ok();
} }
@ApiOperation(value = "客服取消运单查询", notes = "<br>By:胡宇帆")
@GetMapping("/findArtificialCancelOrder")
public Result<OrderChildVO> findArtificialCancelOrder(@RequestParam String orderChildNo) {
OrderChildVO vo = orderCancelService.findArtificialCancelOrder(orderChildNo);
return Result.ok(vo);
}
@ApiOperation(value = "客服取消运单", notes = "<br>By:胡宇帆")
@PostMapping("/artificialCancelOrder")
public Result<Object> artificialCancelOrder(@RequestBody ArtificialCancelOrderParam param) {
orderCancelService.artificialCancelOrder(param.getOrderChildNo(), param.getRemark());
return Result.ok();
}
@ApiOperation(value = "取消运单记录", notes = "<br>By:胡宇帆")
@PostMapping("/orderChildCancelRecord")
public Result<PageData<OrderChildVO>> orderChildCancelRecord(PageParam pageParam) {
IPage<OrderChildVO> page = orderCancelService.orderChildCancelRecord(pageParam);
return Result.page(page.getRecords(), page.getTotal(), page.getPages());
}
} }
...@@ -45,6 +45,7 @@ public class CarrierBreakContractOwnerRuleController { ...@@ -45,6 +45,7 @@ public class CarrierBreakContractOwnerRuleController {
if (StringUtils.isBlank(param.getRule().get("A-b"))){throw new ServiceSystemException(ResultCodeEnum.ILLEGAL_PARAMETER);}; if (StringUtils.isBlank(param.getRule().get("A-b"))){throw new ServiceSystemException(ResultCodeEnum.ILLEGAL_PARAMETER);};
if (StringUtils.isBlank(param.getRule().get("A-c"))){throw new ServiceSystemException(ResultCodeEnum.ILLEGAL_PARAMETER);}; if (StringUtils.isBlank(param.getRule().get("A-c"))){throw new ServiceSystemException(ResultCodeEnum.ILLEGAL_PARAMETER);};
if (StringUtils.isBlank(param.getRule().get("A-d"))){throw new ServiceSystemException(ResultCodeEnum.ILLEGAL_PARAMETER);}; if (StringUtils.isBlank(param.getRule().get("A-d"))){throw new ServiceSystemException(ResultCodeEnum.ILLEGAL_PARAMETER);};
if (StringUtils.isBlank(param.getRule().get("A-e"))){throw new ServiceSystemException(ResultCodeEnum.ILLEGAL_PARAMETER);};
breakContractOwnerRuleService.saveRule(param); breakContractOwnerRuleService.saveRule(param);
......
...@@ -56,9 +56,9 @@ public class OwnerAccountController { ...@@ -56,9 +56,9 @@ public class OwnerAccountController {
@ApiOperation(value = "账户信息", notes = "<br>By:胡宇帆") @ApiOperation(value = "账户信息", notes = "<br>By:胡宇帆")
@GetMapping("/accountInfo") @GetMapping("/accountInfo")
@UnitCovert(param = false) @UnitCovert(param = false)
public Result<Map> accountInfo() { public Result<OwnerAccountAllVO> accountInfo() {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo(); UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
Map<String,OwnerAccountVO> result = ownerAccountService.accountInfo(loginUserInfo.getUserNo()); OwnerAccountAllVO result = ownerAccountService.accountInfo(loginUserInfo.getUserNo());
return Result.ok(result); return Result.ok(result);
} }
......
...@@ -9,8 +9,11 @@ import lombok.extern.slf4j.Slf4j; ...@@ -9,8 +9,11 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.NotBlank;
/** /**
* @Author: aiqingguo * @Author: aiqingguo
...@@ -56,4 +59,14 @@ public class TempController { ...@@ -56,4 +59,14 @@ public class TempController {
return Result.ok(); return Result.ok();
} }
@ApiOperation(value = "测试支付划账 (临时接口)", notes = "<br>By:胡宁宁")
@RequestMapping(value = "/paymentTest", method = RequestMethod.GET)
public Result<Void> paymentTest(@RequestParam("fromUser") @NotBlank(message = "扣款方") String fromUser,
@RequestParam("toUser") @NotBlank(message = "收款方") String toUser,
@RequestParam("figure") @NotBlank(message = "金额") String figure) {
tempService.paymentTest(fromUser,toUser,figure);
return Result.ok();
}
} }
...@@ -8,6 +8,8 @@ import com.clx.performance.vo.pc.IntegralRecordVO; ...@@ -8,6 +8,8 @@ import com.clx.performance.vo.pc.IntegralRecordVO;
import com.msl.common.dao.BaseDao; import com.msl.common.dao.BaseDao;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* @Author: aiqinguo * @Author: aiqinguo
* @Description: 积分记录 * @Description: 积分记录
...@@ -21,6 +23,7 @@ public interface IntegralRecordDao extends BaseDao<IntegraRecordMapper, Integral ...@@ -21,6 +23,7 @@ public interface IntegralRecordDao extends BaseDao<IntegraRecordMapper, Integral
Integer sumIntegral(@Param("statisticsId") Integer statisticsId); Integer sumIntegral(@Param("statisticsId") Integer statisticsId);
IntegralRecord selectByStatisticsIdAndType(@Param("statisticsId") Integer statisticsId, @Param("type") Integer type); IntegralRecord selectByStatisticsIdAndType(@Param("statisticsId") Integer statisticsId, @Param("type") Integer type);
Integer sumByStatisticsIdAndTypes(@Param("statisticsId") Integer statisticsId, @Param("list") List<Integer> typeList);
Integer sumByStatisticsIdAndTypeAndTime(@Param("statisticsId") Integer statisticsId, Integer sumByStatisticsIdAndTypeAndTime(@Param("statisticsId") Integer statisticsId,
@Param("type") Integer type, @Param("type") Integer type,
......
...@@ -13,6 +13,7 @@ import com.clx.performance.vo.app.OrderChildVO; ...@@ -13,6 +13,7 @@ import com.clx.performance.vo.app.OrderChildVO;
import com.clx.performance.vo.pc.PageCarrierOrderChildVO; import com.clx.performance.vo.pc.PageCarrierOrderChildVO;
import com.clx.performance.vo.pc.PageOrderChildPoundAuditVO; import com.clx.performance.vo.pc.PageOrderChildPoundAuditVO;
import com.msl.common.base.Optional; import com.msl.common.base.Optional;
import com.msl.common.base.PageParam;
import com.msl.common.dao.BaseDao; import com.msl.common.dao.BaseDao;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -96,8 +97,15 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int ...@@ -96,8 +97,15 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
*/ */
List<OrderChild> selectArriveSendOrderChild(String orderGoodsNo); List<OrderChild> selectArriveSendOrderChild(String orderGoodsNo);
/**
* 查询到达货源地之后的运单
* @param orderGoodsNo
* @return
*/
List<OrderChild> selectArriveSendOrderChildGe(String orderGoodsNo);
void batchUpdateOrderChildStatus(Integer status, List<Integer> ids); void batchUpdateOrderChildStatus(Integer status, String remark, String cancelTime, String finishTime, List<String> childNoList);
List<OrderChild> selectOrderChildListByOrderGoodsNoAndStatusGE(String orderGoodsNo, Integer status); List<OrderChild> selectOrderChildListByOrderGoodsNoAndStatusGE(String orderGoodsNo, Integer status);
...@@ -105,8 +113,18 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int ...@@ -105,8 +113,18 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
List<OrderChild> listOrderChildByOrderNoAndStatus(String orderNo,List<Integer> status); List<OrderChild> listOrderChildByOrderNoAndStatus(String orderNo,List<Integer> status);
/**
* 通过订单号查询在途运单
* @param orderNo
* @return
*/
List<OrderChild> selectInTransitOrderChild(String orderNo); List<OrderChild> selectInTransitOrderChild(String orderNo);
/**
* 通过货单号查询在途运单
* @param orderGoodsNo
* @return
*/
List<OrderChild> selectInTransitOrderChildByOrderGoodsNo(String orderGoodsNo); List<OrderChild> selectInTransitOrderChildByOrderGoodsNo(String orderGoodsNo);
BigDecimal getLinePoundDifferenceRatioAvg(@Param("sendSystemAddressId") Integer sendSystemAddressId, BigDecimal getLinePoundDifferenceRatioAvg(@Param("sendSystemAddressId") Integer sendSystemAddressId,
...@@ -119,4 +137,14 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int ...@@ -119,4 +137,14 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
void updateSendSystemAddress(Integer ownerAddressId, Integer systemAddressId); void updateSendSystemAddress(Integer ownerAddressId, Integer systemAddressId);
void updateReceiveSystemAddress(Integer ownerAddressId, Integer systemAddressId); void updateReceiveSystemAddress(Integer ownerAddressId, Integer systemAddressId);
/**
* 客服查询可以取消的运单
* @param orderChildNo
* @return
*/
OrderChildVO findArtificialCancelOrder(String orderChildNo);
IPage<OrderChildVO> orderChildCancelRecord(PageParam pageParam);
List<OrderChild> selectInOrderChildNoList(List<String> childNoList);
} }
...@@ -38,6 +38,8 @@ public interface OrderGoodsDao extends BaseDao<OrderGoodsMapper, OrderGoods, Int ...@@ -38,6 +38,8 @@ public interface OrderGoodsDao extends BaseDao<OrderGoodsMapper, OrderGoods, Int
void updateOrderGoodsReduceWeightAndStatus(Integer id, BigDecimal orderChildWeight, Integer orderGoodsStatus); void updateOrderGoodsReduceWeightAndStatus(Integer id, BigDecimal orderChildWeight, Integer orderGoodsStatus);
void updateOrderGoodsWeightResidueAndAlreadyAndStatus(Integer id, BigDecimal alreadyTransportWeight,BigDecimal residueTransportWeight,Integer orderGoodsStatus);
IPage<OrderGoodsAPPVO> openOrderPageGoodsList(OrderGoodsListPageParam orderGoodsListPageParam); IPage<OrderGoodsAPPVO> openOrderPageGoodsList(OrderGoodsListPageParam orderGoodsListPageParam);
IPage<OrderGoodsAPPVO> exclusiveOrderPageGoodsList(OrderGoodsListPageParam orderGoodsListPageParam, List<String> orderGoodsNoList); IPage<OrderGoodsAPPVO> exclusiveOrderPageGoodsList(OrderGoodsListPageParam orderGoodsListPageParam, List<String> orderGoodsNoList);
...@@ -71,7 +73,7 @@ public interface OrderGoodsDao extends BaseDao<OrderGoodsMapper, OrderGoods, Int ...@@ -71,7 +73,7 @@ public interface OrderGoodsDao extends BaseDao<OrderGoodsMapper, OrderGoods, Int
OrderGoodsVO findOrderGoodsById(Integer id); OrderGoodsVO findOrderGoodsById(Integer id);
List<OrderGoods> selectListByOrderGoodsList(List<String> orderNos); List<OrderGoods> selectListByOrderGoodsList(List<String> orderGoodsNo);
Integer updateOrderGoods(OrderGoodsEditParams orderGoodsEditParams); Integer updateOrderGoods(OrderGoodsEditParams orderGoodsEditParams);
...@@ -82,4 +84,11 @@ public interface OrderGoodsDao extends BaseDao<OrderGoodsMapper, OrderGoods, Int ...@@ -82,4 +84,11 @@ public interface OrderGoodsDao extends BaseDao<OrderGoodsMapper, OrderGoods, Int
void updateSendSystemAddress(Integer ownerAddressId, Integer systemAddressId); void updateSendSystemAddress(Integer ownerAddressId, Integer systemAddressId);
void updateReceiveSystemAddress(Integer ownerAddressId, Integer systemAddressId); void updateReceiveSystemAddress(Integer ownerAddressId, Integer systemAddressId);
List<OrderGoods> getOrderGoodsListByOrderNoAndStatus(String orderNo);
List<OrderGoodsAPPVO> getCancelOrderGoods(List<String> list);
BigDecimal sumAlreadyTransportWeightByOrderNo(String orderNo);
} }
...@@ -33,10 +33,11 @@ public interface OrderGoodsTruckBindDao extends BaseDao<OrderGoodsTruckBindMappe ...@@ -33,10 +33,11 @@ public interface OrderGoodsTruckBindDao extends BaseDao<OrderGoodsTruckBindMappe
void updateOrderGoodsBindStatus(String orderGoodsNo, Integer code, List<String> truckList); void updateOrderGoodsBindStatus(String orderGoodsNo, Integer code, List<String> truckList);
void updateOrderGoodsBindStatus(String orderGoodsNo, Integer code, String truckNo);
List<OrderGoodsTruckBind> selectListByOrderGoodsNo(String orderGoodsNo); List<OrderGoodsTruckBind> selectListByOrderGoodsNo(String orderGoodsNo);
void updateOrderGoodsBindStatusExpire(String orderGoodsNo); void updateOrderGoodsBindStatusExpire(String orderGoodsNo, String truckNo);
List<OrderGoodsTruckBind> getTrucksBindByOrderGoodsNo(String orderGoodsNo,String truckNo); List<OrderGoodsTruckBind> getTrucksBindByOrderGoodsNo(String orderGoodsNo,String truckNo);
...@@ -44,4 +45,10 @@ public interface OrderGoodsTruckBindDao extends BaseDao<OrderGoodsTruckBindMappe ...@@ -44,4 +45,10 @@ public interface OrderGoodsTruckBindDao extends BaseDao<OrderGoodsTruckBindMappe
List<OrderGoodsTruckBind> judgeTruckIsBindDxOrder(Set<String> set); List<OrderGoodsTruckBind> judgeTruckIsBindDxOrder(Set<String> set);
void deleteByIds(List<Integer> ids); void deleteByIds(List<Integer> ids);
List<OrderGoodsTruckBind> selectCancelRecord(String orderGoodsNo, List<String> truckList);
List<OrderGoodsTruckBind> getCancelOrderGoods(List<String> truckList, String beginTime, String endTime);
void deleteByOrderGoods(String orderGoodsNo);
} }
package com.clx.performance.dao;
import com.clx.performance.mapper.ThirdPartRequestLogMapper;
import com.clx.performance.model.ThirdPartRequestLog;
import com.msl.common.dao.BaseDao;
import java.util.List;
public interface ThirdPartRequestLogDao extends BaseDao<ThirdPartRequestLogMapper, ThirdPartRequestLog, Integer> {
/**
* 查询发送请求失败的数据
*
* @param time
* @return
*/
List<ThirdPartRequestLog> listThirdPartRequestLogError(String time);
/**
* 修改重试次数
*
* @param logId
* @param retryTimes
*/
void updateLogRetryTimes(Integer logId, Integer retryTimes);
}
...@@ -11,6 +11,8 @@ import com.clx.performance.vo.pc.breakcontract.carrier.BreakContractDriverRecord ...@@ -11,6 +11,8 @@ import com.clx.performance.vo.pc.breakcontract.carrier.BreakContractDriverRecord
import com.msl.common.base.Optional; import com.msl.common.base.Optional;
import com.msl.common.dao.BaseDao; import com.msl.common.dao.BaseDao;
import java.time.LocalDateTime;
/** /**
* @author liruixin * @author liruixin
* Date 2023-10-24 * Date 2023-10-24
...@@ -20,7 +22,7 @@ public interface BreakContractDriverRecordDao extends BaseDao<BreakContractDrive ...@@ -20,7 +22,7 @@ public interface BreakContractDriverRecordDao extends BaseDao<BreakContractDrive
boolean updateSettlementNo(BreakContractDriverRecord item); boolean updateSettlementNo(BreakContractDriverRecord item);
Optional<BreakContractDriverRecord> selectLastLimitTimeByDriverUserNo(Long driverUserNo); Optional<BreakContractDriverRecord> selectLastLimitTimeByDriverUserNo(Long driverUserNo, LocalDateTime time);
IPage<BreakContractDriverRecordVO> pageByParam(PageBreakContractDriverRecordParam param); IPage<BreakContractDriverRecordVO> pageByParam(PageBreakContractDriverRecordParam param);
IPage<DriverBreakContractDriverRecordVO> driverPageByParam(DriverPageBreakContractDriverRecordParam param); IPage<DriverBreakContractDriverRecordVO> driverPageByParam(DriverPageBreakContractDriverRecordParam param);
......
...@@ -11,6 +11,8 @@ import com.msl.common.base.Optional; ...@@ -11,6 +11,8 @@ import com.msl.common.base.Optional;
import com.msl.common.dao.impl.BaseDaoImpl; import com.msl.common.dao.impl.BaseDaoImpl;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List;
/** /**
* @Author: aiqinguo * @Author: aiqinguo
...@@ -40,6 +42,11 @@ public class IntegralRecordDaoImpl extends BaseDaoImpl<IntegraRecordMapper, Inte ...@@ -40,6 +42,11 @@ public class IntegralRecordDaoImpl extends BaseDaoImpl<IntegraRecordMapper, Inte
.eq(IntegralRecord::getType, type)); .eq(IntegralRecord::getType, type));
} }
@Override
public Integer sumByStatisticsIdAndTypes(Integer statisticsId, List<Integer> typeList) {
return baseMapper.sumByStatisticsIdAndTypes(statisticsId, typeList);
}
@Override @Override
public Integer sumByStatisticsIdAndTypeAndTime(Integer statisticsId, Integer type, String beginTime, String endTime) { public Integer sumByStatisticsIdAndTypeAndTime(Integer statisticsId, Integer type, String beginTime, String endTime) {
return baseMapper.sumByStatisticsIdAndTypeAndTime(statisticsId, type, beginTime, endTime); return baseMapper.sumByStatisticsIdAndTypeAndTime(statisticsId, type, beginTime, endTime);
......
...@@ -15,9 +15,11 @@ import com.clx.performance.param.pc.PageCarrierOrderChildParam; ...@@ -15,9 +15,11 @@ import com.clx.performance.param.pc.PageCarrierOrderChildParam;
import com.clx.performance.param.pc.PageMonitorOrderChildQCParam; import com.clx.performance.param.pc.PageMonitorOrderChildQCParam;
import com.clx.performance.param.pc.PagePoundAuditParam; import com.clx.performance.param.pc.PagePoundAuditParam;
import com.clx.performance.vo.app.OrderChildVO; import com.clx.performance.vo.app.OrderChildVO;
import com.clx.performance.vo.pc.OrderGoodsVO;
import com.clx.performance.vo.pc.PageCarrierOrderChildVO; import com.clx.performance.vo.pc.PageCarrierOrderChildVO;
import com.clx.performance.vo.pc.PageOrderChildPoundAuditVO; import com.clx.performance.vo.pc.PageOrderChildPoundAuditVO;
import com.msl.common.base.Optional; import com.msl.common.base.Optional;
import com.msl.common.base.PageParam;
import com.msl.common.dao.impl.BaseDaoImpl; import com.msl.common.dao.impl.BaseDaoImpl;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
...@@ -304,8 +306,17 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild, ...@@ -304,8 +306,17 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
} }
@Override @Override
public void batchUpdateOrderChildStatus(Integer status, List<Integer> ids) { public List<OrderChild> selectArriveSendOrderChildGe(String orderGoodsNo) {
baseMapper.updateOrderGoodsSetResidueWeight(status, ids); //查询大于 40 未到达货源地的运单
return baseMapper.selectList(lQrWrapper().eq(OrderChild::getOrderGoodsNo, orderGoodsNo)
.ge(OrderChild::getStatus, OrderChildEnum.Status.ARRIVE_SEND.getCode())
.le(OrderChild::getStatus, OrderChildEnum.Status.COMPLETE.getCode())
);
}
@Override
public void batchUpdateOrderChildStatus(Integer status, String remark, String cancelTime, String finishTime, List<String> childNoList) {
baseMapper.updateOrderGoodsSetResidueWeight(status,remark, cancelTime, finishTime, childNoList);
} }
@Override @Override
...@@ -364,14 +375,31 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild, ...@@ -364,14 +375,31 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
@Override @Override
public List<OrderChild> selectInTransitOrderChild(String orderNo) { public List<OrderChild> selectInTransitOrderChild(String orderNo) {
return baseMapper.selectList(lQrWrapper().eq(OrderChild::getOrderNo, orderNo) return baseMapper.selectList(lQrWrapper().eq(OrderChild::getOrderNo, orderNo)
.lt(OrderChild::getStatus, OrderChildEnum.Status.COMPLETE.getCode()) .lt(OrderChild::getStatus, OrderChildEnum.Status.UNLOAD.getCode())
); );
} }
@Override @Override
public List<OrderChild> selectInTransitOrderChildByOrderGoodsNo(String orderGoodsNo) { public List<OrderChild> selectInTransitOrderChildByOrderGoodsNo(String orderGoodsNo) {
return baseMapper.selectList(lQrWrapper().eq(OrderChild::getOrderGoodsNo, orderGoodsNo) return baseMapper.selectList(lQrWrapper().eq(OrderChild::getOrderGoodsNo, orderGoodsNo)
.lt(OrderChild::getStatus, OrderChildEnum.Status.COMPLETE.getCode()) .lt(OrderChild::getStatus, OrderChildEnum.Status.UNLOAD.getCode())
); }
@Override
public OrderChildVO findArtificialCancelOrder(String orderChildNo) {
return baseMapper.findArtificialCancelOrder(orderChildNo);
}
@Override
public IPage<OrderChildVO> orderChildCancelRecord(PageParam param) {
Page<OrderGoodsVO> page = Page.of(param.getPage(), param.getPageSize());
return baseMapper.orderChildCancelRecord(page);
}
@Override
public List<OrderChild> selectInOrderChildNoList(List<String> childNoList) {
return baseMapper.selectList(lQrWrapper()
.in(OrderChild::getChildNo, childNoList)
); } ); }
@Override @Override
......
...@@ -78,6 +78,11 @@ public class OrderGoodsDaoImpl extends BaseDaoImpl<OrderGoodsMapper, OrderGoods, ...@@ -78,6 +78,11 @@ public class OrderGoodsDaoImpl extends BaseDaoImpl<OrderGoodsMapper, OrderGoods,
baseMapper.updateOrderGoodsWeightAndStatus(id, orderChildWeight, orderGoodsStatus); baseMapper.updateOrderGoodsWeightAndStatus(id, orderChildWeight, orderGoodsStatus);
} }
@Override
public void updateOrderGoodsWeightResidueAndAlreadyAndStatus(Integer id, BigDecimal alreadyTransportWeight,BigDecimal residueTransportWeight,Integer orderGoodsStatus) {
baseMapper.updateOrderGoodsWeightResidueAndAlreadyAndStatus(id, alreadyTransportWeight, residueTransportWeight, orderGoodsStatus);
}
@Override @Override
public IPage<OrderGoodsAPPVO> openOrderPageGoodsList(OrderGoodsListPageParam param) { public IPage<OrderGoodsAPPVO> openOrderPageGoodsList(OrderGoodsListPageParam param) {
Page<OrderGoodsAPPVO> page = Page.of(param.getPage(), param.getPageSize()); Page<OrderGoodsAPPVO> page = Page.of(param.getPage(), param.getPageSize());
...@@ -159,8 +164,7 @@ public class OrderGoodsDaoImpl extends BaseDaoImpl<OrderGoodsMapper, OrderGoods, ...@@ -159,8 +164,7 @@ public class OrderGoodsDaoImpl extends BaseDaoImpl<OrderGoodsMapper, OrderGoods,
@Override @Override
public boolean updateOrderGoodsStatusAndRollbackResidueWeightByOrderGoodsNo(Integer orderGoodsId, Integer status) { public boolean updateOrderGoodsStatusAndRollbackResidueWeightByOrderGoodsNo(Integer orderGoodsId, Integer status) {
return update(lUdWrapper().eq(OrderGoods :: getGoodsId,orderGoodsId) return update(lUdWrapper().eq(OrderGoods :: getGoodsId,orderGoodsId)
.set(OrderGoods :: getOrderGoodsStatus, status) .set(OrderGoods :: getOrderGoodsStatus, status))
.set(OrderGoods::getResidueTransportWeight, BigDecimal.ZERO))
; ;
} }
...@@ -185,8 +189,8 @@ public class OrderGoodsDaoImpl extends BaseDaoImpl<OrderGoodsMapper, OrderGoods, ...@@ -185,8 +189,8 @@ public class OrderGoodsDaoImpl extends BaseDaoImpl<OrderGoodsMapper, OrderGoods,
} }
@Override @Override
public List<OrderGoods> selectListByOrderGoodsList(List<String> orderNos) { public List<OrderGoods> selectListByOrderGoodsList(List<String> orderGoodsNo) {
return baseMapper.selectList(lQrWrapper().in(OrderGoods::getOrderGoodsNo, orderNos)); return baseMapper.selectList(lQrWrapper().in(OrderGoods::getOrderGoodsNo, orderGoodsNo));
} }
@Override @Override
...@@ -208,6 +212,26 @@ public class OrderGoodsDaoImpl extends BaseDaoImpl<OrderGoodsMapper, OrderGoods, ...@@ -208,6 +212,26 @@ public class OrderGoodsDaoImpl extends BaseDaoImpl<OrderGoodsMapper, OrderGoods,
); );
} }
@Override
public List<OrderGoods> getOrderGoodsListByOrderNoAndStatus(String orderNo) {
return baseMapper.selectList(lQrWrapper().eq(OrderGoods::getOrderNo, orderNo)
.ne(OrderGoods::getOrderGoodsStatus, OrderGoodsStatusEnum.Status.SUCCESS.getCode())
.ne(OrderGoods::getOrderGoodsStatus, OrderGoodsStatusEnum.Status.CANCEL.getCode())
.ne(OrderGoods::getOrderGoodsStatus, OrderGoodsStatusEnum.Status.COMPLETED.getCode())
);
}
@Override
public List<OrderGoodsAPPVO> getCancelOrderGoods(List<String> param) {
return baseMapper.getCancelOrderGoods(param);
}
@Override
public BigDecimal sumAlreadyTransportWeightByOrderNo(String orderNo) {
return baseMapper.sumAlreadyTransportWeightByOrderNo(orderNo);
}
@Override @Override
public void updateSendSystemAddress(Integer ownerAddressId, Integer systemAddressId) { public void updateSendSystemAddress(Integer ownerAddressId, Integer systemAddressId) {
......
package com.clx.performance.dao.impl; package com.clx.performance.dao.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.clx.performance.dao.OrderGoodsTruckBindDao; import com.clx.performance.dao.OrderGoodsTruckBindDao;
...@@ -73,7 +74,7 @@ public class OrderGoodsTruckBindDaoImpl extends BaseDaoImpl<OrderGoodsTruckBindM ...@@ -73,7 +74,7 @@ public class OrderGoodsTruckBindDaoImpl extends BaseDaoImpl<OrderGoodsTruckBindM
@Override @Override
public Optional<List<OrderGoodsTruckBind>> selectListByTruckNo(List<String> truckList) { public Optional<List<OrderGoodsTruckBind>> selectListByTruckNo(List<String> truckList) {
return Optional.ofNullable(baseMapper.selectList(new QueryWrapper<OrderGoodsTruckBind>().lambda() return Optional.ofNullable(baseMapper.selectList(new QueryWrapper<OrderGoodsTruckBind>().lambda()
.eq(OrderGoodsTruckBind::getStatus, OrderGoodsTruckBindEnum.Status.SUCCESS.getCode()) .eq(OrderGoodsTruckBind::getStatus, OrderGoodsTruckBindEnum.Status.NORMAL.getCode())
.in(OrderGoodsTruckBind::getTruckNo,truckList).select(OrderGoodsTruckBind::getOrderGoodsNo))); .in(OrderGoodsTruckBind::getTruckNo,truckList).select(OrderGoodsTruckBind::getOrderGoodsNo)));
} }
...@@ -90,17 +91,23 @@ public class OrderGoodsTruckBindDaoImpl extends BaseDaoImpl<OrderGoodsTruckBindM ...@@ -90,17 +91,23 @@ public class OrderGoodsTruckBindDaoImpl extends BaseDaoImpl<OrderGoodsTruckBindM
update(lUdWrapper() update(lUdWrapper()
.set(OrderGoodsTruckBind::getStatus, code) .set(OrderGoodsTruckBind::getStatus, code)
.eq(OrderGoodsTruckBind::getOrderGoodsNo, orderGoodsNo) .eq(OrderGoodsTruckBind::getOrderGoodsNo, orderGoodsNo)
.in(OrderGoodsTruckBind::getTruckNo, truckList) .notIn(CollectionUtil.isNotEmpty(truckList), OrderGoodsTruckBind::getTruckNo, truckList)
.or() );
}
@Override
public void updateOrderGoodsBindStatus(String orderGoodsNo, Integer code, String truckNo) {
update(lUdWrapper()
.set(OrderGoodsTruckBind::getStatus, code)
.eq(OrderGoodsTruckBind::getOrderGoodsNo, orderGoodsNo) .eq(OrderGoodsTruckBind::getOrderGoodsNo, orderGoodsNo)
.eq(OrderGoodsTruckBind::getStatus, OrderGoodsTruckBindEnum.Status.SUCCESS.getCode()) .eq(OrderGoodsTruckBind::getTruckNo, truckNo)
); );
} }
@Override @Override
public List<OrderGoodsTruckBind> selectListByOrderGoodsNo(String orderGoodsNo) { public List<OrderGoodsTruckBind> selectListByOrderGoodsNo(String orderGoodsNo) {
return baseMapper.selectList(lQrWrapper().eq(OrderGoodsTruckBind::getOrderGoodsNo, orderGoodsNo) return baseMapper.selectList(lQrWrapper().eq(OrderGoodsTruckBind::getOrderGoodsNo, orderGoodsNo)
.eq(OrderGoodsTruckBind::getStatus, OrderGoodsTruckBindEnum.Status.SUCCESS.getCode()) .eq(OrderGoodsTruckBind::getStatus, OrderGoodsTruckBindEnum.Status.NORMAL.getCode())
.or() .or()
.eq(OrderGoodsTruckBind::getOrderGoodsNo, orderGoodsNo) .eq(OrderGoodsTruckBind::getOrderGoodsNo, orderGoodsNo)
.eq(OrderGoodsTruckBind::getStatus, OrderGoodsTruckBindEnum.Status.GET.getCode()) .eq(OrderGoodsTruckBind::getStatus, OrderGoodsTruckBindEnum.Status.GET.getCode())
...@@ -108,10 +115,11 @@ public class OrderGoodsTruckBindDaoImpl extends BaseDaoImpl<OrderGoodsTruckBindM ...@@ -108,10 +115,11 @@ public class OrderGoodsTruckBindDaoImpl extends BaseDaoImpl<OrderGoodsTruckBindM
} }
@Override @Override
public void updateOrderGoodsBindStatusExpire(String orderGoodsNo) { public void updateOrderGoodsBindStatusExpire(String orderGoodsNo, String truckNo) {
update(lUdWrapper() update(lUdWrapper()
.eq(OrderGoodsTruckBind::getOrderGoodsNo, orderGoodsNo) .eq(OrderGoodsTruckBind::getOrderGoodsNo, orderGoodsNo)
.eq(OrderGoodsTruckBind::getStatus, OrderGoodsTruckBindEnum.Status.SUCCESS.getCode()) .ne(OrderGoodsTruckBind::getTruckNo, truckNo)
.eq(OrderGoodsTruckBind::getStatus, OrderGoodsTruckBindEnum.Status.NORMAL.getCode())
.set(OrderGoodsTruckBind::getStatus, OrderGoodsTruckBindEnum.Status.EXPIRE.getCode()) .set(OrderGoodsTruckBind::getStatus, OrderGoodsTruckBindEnum.Status.EXPIRE.getCode())
); );
} }
...@@ -124,7 +132,7 @@ public class OrderGoodsTruckBindDaoImpl extends BaseDaoImpl<OrderGoodsTruckBindM ...@@ -124,7 +132,7 @@ public class OrderGoodsTruckBindDaoImpl extends BaseDaoImpl<OrderGoodsTruckBindM
if(StringUtils.isNotBlank(truckNo)){ if(StringUtils.isNotBlank(truckNo)){
query.eq(OrderGoodsTruckBind::getTruckNo, truckNo); query.eq(OrderGoodsTruckBind::getTruckNo, truckNo);
} }
query.in(OrderGoodsTruckBind::getStatus, OrderGoodsTruckBindEnum.Status.SUCCESS.getCode(),OrderGoodsTruckBindEnum.Status.GET.getCode()); query.in(OrderGoodsTruckBind::getStatus, OrderGoodsTruckBindEnum.Status.NORMAL.getCode(),OrderGoodsTruckBindEnum.Status.GET.getCode());
query.orderByDesc(OrderGoodsTruckBind :: getCreateTime); query.orderByDesc(OrderGoodsTruckBind :: getCreateTime);
return baseMapper.selectList(query); return baseMapper.selectList(query);
} }
...@@ -133,7 +141,7 @@ public class OrderGoodsTruckBindDaoImpl extends BaseDaoImpl<OrderGoodsTruckBindM ...@@ -133,7 +141,7 @@ public class OrderGoodsTruckBindDaoImpl extends BaseDaoImpl<OrderGoodsTruckBindM
public List<OrderGoodsTruckBind> judgeTruckIsBindDxOrder(Set<String> set) { public List<OrderGoodsTruckBind> judgeTruckIsBindDxOrder(Set<String> set) {
LambdaQueryWrapper<OrderGoodsTruckBind> query = new LambdaQueryWrapper<>(); LambdaQueryWrapper<OrderGoodsTruckBind> query = new LambdaQueryWrapper<>();
query.in(OrderGoodsTruckBind::getTruckNo, set); query.in(OrderGoodsTruckBind::getTruckNo, set);
query.in(OrderGoodsTruckBind :: getStatus,OrderGoodsTruckBindEnum.Status.SUCCESS.getCode(),OrderGoodsTruckBindEnum.Status.GET.getCode()); query.in(OrderGoodsTruckBind :: getStatus,OrderGoodsTruckBindEnum.Status.NORMAL.getCode(),OrderGoodsTruckBindEnum.Status.GET.getCode());
return baseMapper.selectList(query); return baseMapper.selectList(query);
} }
...@@ -141,4 +149,25 @@ public class OrderGoodsTruckBindDaoImpl extends BaseDaoImpl<OrderGoodsTruckBindM ...@@ -141,4 +149,25 @@ public class OrderGoodsTruckBindDaoImpl extends BaseDaoImpl<OrderGoodsTruckBindM
public void deleteByIds(List<Integer> ids) { public void deleteByIds(List<Integer> ids) {
baseMapper.deleteBatchIds(ids); baseMapper.deleteBatchIds(ids);
} }
@Override
public List<OrderGoodsTruckBind> selectCancelRecord(String orderGoodsNo, List<String> truckList) {
return baseMapper.selectList(lQrWrapper().eq(OrderGoodsTruckBind::getOrderGoodsNo, orderGoodsNo)
.in(CollectionUtil.isNotEmpty(truckList), OrderGoodsTruckBind::getTruckNo, truckList)
);
}
@Override
public List<OrderGoodsTruckBind> getCancelOrderGoods(List<String> truckList, String beginTime, String endTime) {
return baseMapper.selectList(lQrWrapper().in(OrderGoodsTruckBind::getTruckNo, truckList)
// .eq(OrderGoodsTruckBind::getStatus, OrderGoodsTruckBindEnum.Status.CANCEL.getCode())
.le(OrderGoodsTruckBind::getCreateTime, endTime)
.ge(OrderGoodsTruckBind::getCreateTime, beginTime)
);
}
@Override
public void deleteByOrderGoods(String orderGoodsNo) {
baseMapper.delete(lQrWrapper().eq(OrderGoodsTruckBind::getOrderGoodsNo, orderGoodsNo));
}
} }
package com.clx.performance.dao.impl;
import com.clx.performance.dao.SeniorLogisticsManagerDao;
import com.clx.performance.dao.ThirdPartRequestLogDao;
import com.clx.performance.enums.ThirdRequestStatusEnum;
import com.clx.performance.enums.ThirdRequestTypeEnum;
import com.clx.performance.mapper.SeniorLogisticsManagerMapper;
import com.clx.performance.mapper.ThirdPartRequestLogMapper;
import com.clx.performance.model.SeniorLogisticsManager;
import com.clx.performance.model.ThirdPartRequestLog;
import com.msl.common.base.Optional;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.springframework.stereotype.Repository;
import java.util.Collections;
import java.util.List;
/**
* @author kavin
* Date 2023-09-17
* Time 16:45
*/
@Repository
public class ThirdPartRequestLogDaoImpl extends BaseDaoImpl<ThirdPartRequestLogMapper, ThirdPartRequestLog, Integer> implements ThirdPartRequestLogDao {
/**
* 查询发送请求失败的数据
*
* @param time
* @return
*/
@Override
public List<ThirdPartRequestLog> listThirdPartRequestLogError(String time) {
return Optional.ofBlank(time)
.map(t -> lQrWrapper()
.eq(ThirdPartRequestLog::getRequestType, ThirdRequestTypeEnum.SEND.getCode())
.le(ThirdPartRequestLog::getRetryTimes, 5)
.in(ThirdPartRequestLog::getStatus, ThirdRequestStatusEnum.HAVING.getCode())
.le(ThirdPartRequestLog::getCreateTime, t))
.map(super::list)
.orElseGet(Collections::emptyList);
}
/**
* 修改重试次数
*
* @param logId
* @param retryTimes
*/
@Override
public void updateLogRetryTimes(Integer logId, Integer retryTimes) {
super.update(lUdWrapper().eq(ThirdPartRequestLog::getId, logId)
.set(ThirdPartRequestLog::getRetryTimes, retryTimes));
}
}
\ No newline at end of file
...@@ -14,6 +14,8 @@ import com.msl.common.base.Optional; ...@@ -14,6 +14,8 @@ import com.msl.common.base.Optional;
import com.msl.common.dao.impl.BaseDaoImpl; import com.msl.common.dao.impl.BaseDaoImpl;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.time.LocalDateTime;
/** /**
* @author liruixin * @author liruixin
* Date 2023-10-24 * Date 2023-10-24
...@@ -31,11 +33,12 @@ public class BreakContractDriverRecordDaoImpl extends BaseDaoImpl<BreakContractD ...@@ -31,11 +33,12 @@ public class BreakContractDriverRecordDaoImpl extends BaseDaoImpl<BreakContractD
} }
@Override @Override
public Optional<BreakContractDriverRecord> selectLastLimitTimeByDriverUserNo(Long driverUserNo) { public Optional<BreakContractDriverRecord> selectLastLimitTimeByDriverUserNo(Long driverUserNo, LocalDateTime time) {
return Optional.of(driverUserNo) return Optional.of(driverUserNo)
.map(item -> lQrWrapper() .map(item -> lQrWrapper()
.eq(BreakContractDriverRecord::getDriverUserNo, item) .eq(BreakContractDriverRecord::getDriverUserNo, item)
.isNotNull(BreakContractDriverRecord::getLimitTime) .isNotNull(BreakContractDriverRecord::getLimitTime)
.ge(BreakContractDriverRecord::getLimitTime, time)
.orderByDesc(BreakContractDriverRecord::getLimitTime) .orderByDesc(BreakContractDriverRecord::getLimitTime)
.last("limit 1") .last("limit 1")
) )
......
package com.clx.performance.dao.impl.integral;
import com.clx.performance.dao.integral.IntegralRuleDao;
import com.clx.performance.mapper.integral.IntegralRuleMapper;
import com.clx.performance.model.integral.IntegralRule;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.springframework.stereotype.Repository;
/**
* @Author: aiqinguo
* @Description: 积分规则
* @Date: 2023-10-9 12:00:54
* @Version: 1.0
*/
@Repository
public class IntegralRuleDaoImpl extends BaseDaoImpl<IntegralRuleMapper, IntegralRule, Integer> implements IntegralRuleDao {
@Override
public boolean update(IntegralRule item) {
return update(lUdWrapper()
.eq(IntegralRule::getId, item.getId())
.set(IntegralRule::getOrderChildCompleteRuleJson, item.getOrderChildCompleteRuleJson())
.set(IntegralRule::getOrderAwardRuleJson, item.getOrderAwardRuleJson())
.set(IntegralRule::getOrderDiscountRuleJson, item.getOrderDiscountRuleJson())
.set(IntegralRule::getOrderChildTimeoutRuleJson, item.getOrderChildTimeoutRuleJson())
.set(IntegralRule::getPlatformCompensationRuleJson, item.getPlatformCompensationRuleJson())
.set(IntegralRule::getDriverReportRuleJson, item.getDriverReportRuleJson())
);
}
}
package com.clx.performance.dao.integral;
import com.clx.performance.mapper.integral.IntegralRuleMapper;
import com.clx.performance.model.integral.IntegralRule;
import com.msl.common.dao.BaseDao;
/**
* @Author: aiqinguo
* @Description: 积分规则
* @Date: 2023-10-9 11:55:36
* @Version: 1.0
*/
public interface IntegralRuleDao extends BaseDao<IntegralRuleMapper, IntegralRule, Integer> {
boolean update(IntegralRule item);
}
package com.clx.performance.encryption.oldmsl;
import com.clx.performance.param.pc.payment.FreezeUnitDTO;
import com.clx.performance.param.pc.payment.PayUnitDTO;
import java.util.List;
/**
*
* @author xujianke
* @date 2017年4月18日
* @description
*/
public class PayEncryptTools {
/**
* 生成签名,签名结果直接赋值到PayUnitDTO签名字段
* @param
* @param privateKeyBytes
* @return 签名是否成功
*/
public static boolean sign(PayUnitDTO payDTO, byte[] privateKeyBytes){
if(payDTO == null ){//参数错误
return false;
}
byte[] data=makeByte(payDTO);
String sign = RSACoder.sign(data, privateKeyBytes);
if(sign == null){//签名失败
return false;
}
payDTO.setSignature(sign);
return true;
}
/**
* 生成签名,签名结果直接赋值到FreezeUnitDTO签名字段
* @param freezeDTO
* @param privateKeyBytes
* @return 签名是否成功
*/
public static boolean sign(FreezeUnitDTO freezeDTO, byte[] privateKeyBytes){
if(freezeDTO == null ){//参数错误
return false;
}
byte[] data=makeByte(freezeDTO);
String sign = RSACoder.sign(data, privateKeyBytes);
if(sign == null){//签名失败
return false;
}
freezeDTO.setSignature(sign);
return true;
}
/**
* 验证签名
* @param payDTO
* @param publicKeyBytes
* @return
*/
public static boolean verify(PayUnitDTO payDTO, byte[] publicKeyBytes){
if(payDTO == null || payDTO.getSignature() == null){
//参数错误
return false;
}
byte[] data=makeByte(payDTO);
return RSACoder.verify(data, publicKeyBytes, payDTO.getSignature());
}
/**
* 验证签名
* @param freezeDTO
* @param publicKeyBytes
* @return
*/
public static boolean verify(FreezeUnitDTO freezeDTO, byte[] publicKeyBytes){
if(freezeDTO == null || freezeDTO.getSignature() == null){
//参数错误
return false;
}
byte[] data=makeByte(freezeDTO);
return RSACoder.verify(data, publicKeyBytes, freezeDTO.getSignature());
}
/**
* 组装需要签名的字符串
* @param payDTO
* @return 字符串的字节数组
*/
public static byte[] makeByte(PayUnitDTO payDTO){
StringBuilder sb = new StringBuilder();
sb.append(payDTO.getFigure());
sb.append(':').append(payDTO.getId());
sb.append(':').append(payDTO.getFrom());
sb.append(':').append(payDTO.getTimestamp());
sb.append(':').append(payDTO.getTo());
sb.append(':').append(payDTO.getType());
String text = sb.toString();
return text.getBytes();
}
/**
* 组装需要签名的字符串
* @param freezeDTO
* @return 字符串的字节数组
*/
public static byte[] makeByte(FreezeUnitDTO freezeDTO){
StringBuilder sb = new StringBuilder();
sb.append(freezeDTO.getAction());
sb.append(':').append(freezeDTO.getFigure());
sb.append(':').append(freezeDTO.getFee());
sb.append(':').append(freezeDTO.getFeeType());
sb.append(':').append(freezeDTO.getFreezeNo());
sb.append(':').append(freezeDTO.getTimestamp());
if(freezeDTO.getReturnFee() != null){
sb.append(':').append(freezeDTO.getReturnFee());
}
String text = sb.toString();
return text.getBytes();
}
/**
* 批量签名
* @param privateKeyBytes
* @return 成功签名的个数
*/
public static int signBatch(List<PayUnitDTO> list, byte[] privateKeyBytes){
int count = 0;
boolean b;
for(PayUnitDTO payDTO:list){
b = sign(payDTO, privateKeyBytes);
if(b){
count++;
}
}
return count;
}
/**
* 批量验证签名
* @param publicKeyBytes
* @return
*/
public static int verifyBatch(List<PayUnitDTO> list, byte[] publicKeyBytes){
boolean ret = true;
int i;
PayUnitDTO payDTO;
for(i= 0; i<list.size();i++){
payDTO = list.get(i);
ret = verify(payDTO,publicKeyBytes);
if(!ret){
break;
}
}
return i;
}
}
package com.clx.performance.encryption.oldmsl;
import org.bouncycastle.util.encoders.Base64;
/**
* 加密使用的私钥配置类(等于商户的)
*/
public class PrivateKeyConfig {
/** 非对称加密RSA私钥 私钥长度1024字节 单次最多加密53个字符
* 对应公钥为 SecretConfig.PAYMENT_PUBLIC_KEY
* */
private static final String privateKey="MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAOT9q9k4SE5s"
+ "RC1xOtbRzKCwPa2Zp0j9/IGGQ1DUQzhJ1dtMaOzUs66ddMTokoG7nzUyFk8+50QbSb8AQTd+CoGa47oM4P48W9n91"
+ "fAsA1QHpSv4cBrVRbkZv77/XCPZgibnGSoP3IdaMp/GTGwUVnNuUtszNglG8mRB/IFLWMNLAgMBAAECgYBc0eqHuU"
+ "Wt7DrShLRKAW7Fr8rAhKkHcFSbGBZPPEsnFN7H7rgVT76pyA9eBbvlNG07fdsHMkNCGyGQd4T3/nI5BH/xwgT7P4E"
+ "pYy8PnyrIj185CEY7VplgH4l9cHPMcY8pKCwJZjbHBUlgS6ZCA3+DRB7c+7MZZiV/DX2Ay3IBeQJBAPdlTO7i9ncr"
+ "QWMI7So6byt9OSHQz6Gxdml6YS51gQTFKTCMc8n45yAhr7D7XxhgHSDqkSCmkcWkLlKm15XXkvUCQQDs9ICzCWE+I"
+ "viGhVNu2XZQwMiMLQZoC1go+ZBo0mPoxt8YDWVBJ+PqJ4y1fkASKQTdphuoEtpqCx4mzGAL15U/AkA6BiVcJhlea+"
+ "PDIZXWgKwQTCd5Oeto5iF6rbxbVC31e3SksVx684jp7VyyqtJr+ib60GlHeinYbCB9PCp2N4B9AkEAtJLTbRzNzUN"
+ "rL2B1J3lzL7DqY+CADFPw2DDvOuJyHtdG9hZnPlL+3ddL5JeUjgJSYfMPCnNrnPph/OEspHmikwJAIcOTlQmik37h"
+ "BsaoRTEoJG4X5NrqGx5apjXwkIbf4jjfMP4TdyZBX73yjWKNbPdXLd7Aixoqam5CP0nUg3uWKg==";
public static final byte[] privateKeyByte = Base64.decode(privateKey);
}
package com.clx.performance.encryption.oldmsl;
/**
* 业务系统编码枚举类
* @author xujianke
* @date 2017年4月21日
* @description
*/
public enum SystemCodeEnum {
USER_SERVICE(1,"用户服务"),ORDER_SERVICE(2,"订单服务"),PAYMENT_SERVICE(3,"支付服务"),
MESSAGE_SERVICE(4,"消息服务"),MANAGE_SERVICE(5,"管理服务"),MERCHANT_SERVICE(6,"商户服务"),
TRADE_SERVICE(7,"交易平台服务"),AUCTION_SERVICE(8,"竞拍服务"),PERFORMANCE_SERVICE(9,"履约服务");
// 成员变量
private String msg;
private int code;
// 构造方法
private SystemCodeEnum(int code, String msg) {
this.msg = msg;
this.code = code;
}
// 普通方法
public static String getMsg(int code) {
for (SystemCodeEnum c : SystemCodeEnum.values()) {
if (c.getCode() == code) {
return c.msg;
}
}
return null;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
}
package com.clx.performance.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum HttpEnum {
PERFORMANCE_PAY_CLX_PAYMENT(10000, "履约服务向老马上来发起钱包转账","/payment-service/performance/payUserWalletTransfer"),
;
private final int code;
private final String mark;
private final String url;
public static HttpEnum getMsg(int code) {
for (HttpEnum httpEnum : HttpEnum.values()) {
if (httpEnum.getCode() == code) {
return httpEnum;
}
}
return null;
}
}
package com.clx.performance.enums;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
* Created by cuiwanzhe on 2017/6/2.
* 支付备注枚举
*/
public enum PayRemarkEnum {
OWNER_CREDIT(1, "货主冻结押金"),
DRIVER_CREDIT(2, "司机冻结押金"),
OWNER_FREIGHT(3, "货主冻结运费"),
OWNER_INSURANCE(4, "货主冻结保险"),
DRIVER_UNFREEZE(5, "司机解冻押金"),
INSURANCE_UNFREEZE(6, "解冻保险到系统账户"),
COMPENSATION_TO_DRIVER(7, "司机赔偿货主"),
FREIGHT_TO_OWNER(8, "货主支付运费给司机"),
UPDATE_FREIGHT(9, "修正运费"),
UPDATE_INSURANCE(10, "修正保险"),
OWNER_UNFREEZE(11, "解冻货主的押金"),
DRIVER_SALE(12, "冻结司机的消费"),
DRIVER_SALE_UNFREEZE(13, "司机支付货款给货主"),
//v78 解冻保险
UNFREEZE_INSURANCE(14, "解冻保险"),
;
private static Map<Integer, String> map = new ConcurrentHashMap<>();
static {
for(PayRemarkEnum payRemarkEnum : PayRemarkEnum.values()){
map.put(payRemarkEnum.getValue(), payRemarkEnum.getDisplayValue());
}
}
private int value;
private String displayValue;
public void setValue(int value) {
this.value = value;
}
public String getDisplayValue() {
return displayValue;
}
public void setDisplayValue(String displayValue) {
this.displayValue = displayValue;
}
private PayRemarkEnum(int value, String displayValue){
this.value = value;
this.displayValue = displayValue;
}
public int getValue(){
return value;
}
public static String toString(int value){
return map.get(value);
}
}
package com.clx.performance.enums;
public enum PayUnitTypeEnum {
FREEZE(100,"冻结"),
FREEZE_OWNER_DEPOSIT(101,"冻结货主保证金"),FREEZE_FREIGHT(102,"冻结货主运费"),FREEZE_DRIVER_DEPOSIT(103,"冻结司机保证金"),
FREEZE_INSURANCE_FEE(104,"冻结货物担保"),FREEZE_PLATFORM_FEE(105,"冻结平台信息费"),FREEZE_WITHDRAW_DEPOSIT(106,"冻结提现金额"),
FREEZE_SALE(107,"冻结货款"),FREEZE_SETTLEMENT_FEE(108,"冻结提现手续费"),FREEZE_SETTLEMENT_MER(109, "冻结子钱包提现金额"),
FREEZE_SETTLEMENT_MER_FEE(110,"冻结提现手续费"),FREEZE_TRANSFER_WITHDRAW_DEPOSIT(111,"冻结转账提现金额"),FREEZE_TRANSFER_DEPOSIT(112,"转账收入"),
FREEZE_TRADE_DEPOSIT(113,"冻结交易平台保证金"),FREEZE_TRADE_PAYMENT_GOODS(114,"冻结交易平台货款"),
FREEZE_OIL_DRIVER_TO_MERCHANT(115,"冻结司机余额给商户用于加油"),FREEZE_AUCTION_DEPOSIT(116,"冻结竞拍保证金"),
FREEZE_GROUP_SIGN_UP_DEPOSIT(117,"集采集销的保证金冻结"),FREEZE_WALLET_CARD(118,"消费卡消费到钱包冻结"),FREEZE_MERCHANT_CARD(119,"消费卡消费到商户冻结"),
FREEZE_ORDER_CHILD(120, "冻结提现金额-运费自动提现"),
UNFREEZE(200,"解冻"),
UNFREEZE_OWNER_DEPOSIT(201,"解冻货主保证金"),UNFREEZE_FREIGHT(202,"解冻货主运费"),UNFREEZE_DRIVER_DEPOSIT(203,"解冻司机保证金"),
UNFREEZE_INSURANCE_FEE(204,"解冻货物担保"),UNFREEZE_PLATFORM_FEE(205,"解冻平台信息费"),UNFREEZE_WITHDRAW_DEPOSIT(206,"解冻提现金额"),
UNFREEZE_SALE(207,"解冻货款"),UNFREEZE_SETTLEMENT_FEE(208,"解冻提现手续费"),UNFREEZE_SETTLEMENT_MER(209, "解冻子钱包提现金额"),
UNFREEZE_SETTLEMENT_MER_FEE(210,"解冻提现手续费"),UNFREEZE_TRANSFER_DEPOSIT(212,"解冻转账收入"),
UNFREEZE_TRADE_DEPOSIT(213,"解冻交易平台保证金"),UNFREEZE_TRADE_PAYMENT_GOODS(214,"解冻交易平台货款"),
UNFREEZE_OIL_DRIVER_TO_MERCHANT(215,"解冻司机余额给商户用于加油"),UNFREEZE_AUCTION_DEPOSIT(216,"解冻竞拍保证金"),
UNFREEZE_FREEZE_GROUP_SIGN_UP_DEPOSIT(217,"集采集销的保证金冻结解冻"),UNFREEZE_WALLET_CARD(218,"消费卡消费到钱包解冻"),UNFREEZE_MERCHANT_CARD(219,"消费卡消费到商户解冻"),
FREEZE_PAY(300,"从冻结支付"),
FREEZE_PAY_OWNER_DEPOSIT(301,"支付货主保证金"),FREEZE_PAY_FREIGHT(302,"支付货物运费"),
FREEZE_PAY_DRIVER_DEPOSIT(303,"支付司机保证金"),FREEZE_PAY_INSURANCE_FEE(304,"支付货物担保"),
FREEZE_PAY_PLATFORM_FEE(305,"支付平台信息费"),FREEZE_PAY_WITHDRAW_DEPOSIT(306,"支付提现金额"),
FREEZE_PAY_SALE(307,"支付货款"),FREEZE_PAY_SETTLEMENT_FEE(308,"支付提现手续费"),
FREEZE_PAY_SETTLEMENT_MER(309, "支付子钱包提现金额"),FREEZE_PAY_SETTLEMENT_MER_FEE(310, "支付子钱包手续费"),
FREEZE_PAY_TRANSFER_WITHDRAW_DEPOSIT(311,"支付余额转账提现金额"),FREEZE_PAY_TRANSFER_DEPOSIT(312,"支付转账收入"),
FREEZE_PAY_TRADE_DEPOSIT(313,"保证金冻结"),FREEZE_PAY_TRADE_PAYMENT_GOODS(314,"货款扣款"),
FREEZE_PAY_OIL_DRIVER_TO_MERCHANT(315,"消费"),FREEZE_PAY_AUCTION_DEPOSIT(316,"竞拍保证金冻结"),
FREEZE_PAY_GROUP_SIGN_UP_DEPOSIT(317,"集采集销的保证金冻结"),FREEZE_PAY_WALLET_CARD(318,"消费"),FREEZE_PAY_MERCHANT_CARD(319,"消费"),
FREEZE_PAY_ORDER_CHILD(320, "自动支付提现金额"),
FREEZE_MODIFY(400,"修正冻结资金"),
FREEZE_MODIFY_OWNER_DEPOSIT(401,"修正货主保证金"),FREEZE_MODIFY_FREIGHT(402,"修正货主运费"),
FREEZE_MODIFY_DRIVER_DEPOSIT(403,"修正司机保证金"),FREEZE_MODIFY_INSURANCE_FEE(404,"修正货物担保"),
FREEZE_MODIFY_PLATFORM_FEE(405,"修正平台信息费"),FREEZE_MODIFY_WITHDRAW_DEPOSIT(406,"修正提现金额"),
FREEZE_MODIFY_SALE(407,"修正货款"),FREEZE_MODIFY_SETTLEMENT_FEE(408,"修正提现手续费"),
FREEZE_MODIFY_SETTLEMENT_MER(409, "修正子钱包提现金额"), FREEZE_MODIFY_SETTLEMENT_MER_FEE(410, "修正子钱包提现手续费"),
FREEZE_MODIFY_TRANSFER_DEPOSIT(412,"修正转账收入"),FREEZE_MODIFY_TRADE_PAYMENT_GOODS(414,"修正交易平台冻结货款"),
RESIDUE_PAY(500,"余额支付"),RESIDUE_ACTIVITY_RETURN(502,"余额活动返现"),RESIDUE_ACTIVITY_RETURN_CARD(503,"余额活动返现到消费卡"),
/** 支付违约金 */
RESIDUE_PAY_DEFAULT(501,"支付违约金"),
CARD_PAY(600,"消费卡支付到钱包"),CARD_PAY_WALLET(601,"消费卡支付到子钱包"),
SYSTEM_PAY(701, "系统支付到用户余额"),SYSTEM_PAY_CARD(702, "系统支付到用户消费卡"),SYSTEM_ACTIVITY_PAY(703, "系统活动返现到余额"),
;
// 成员变量
private String msg;
private int code;
// 构造方法
private PayUnitTypeEnum(int code, String msg) {
this.msg = msg;
this.code = code;
}
// 普通方法
public static String getMsg(int code) {
for (PayUnitTypeEnum c : PayUnitTypeEnum.values()) {
if (c.getCode() == code) {
return c.msg;
}
}
return null;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
}
...@@ -7,6 +7,7 @@ import com.clx.performance.enums.RoleEnum; ...@@ -7,6 +7,7 @@ import com.clx.performance.enums.RoleEnum;
import com.clx.performance.param.pc.OrderCancelParam; import com.clx.performance.param.pc.OrderCancelParam;
import com.clx.performance.service.OrderCancelService; import com.clx.performance.service.OrderCancelService;
import com.clx.performance.service.breakcontract.BreakContractSettlementOwnerService; import com.clx.performance.service.breakcontract.BreakContractSettlementOwnerService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -19,29 +20,17 @@ import java.util.Objects; ...@@ -19,29 +20,17 @@ import java.util.Objects;
*/ */
@Slf4j @Slf4j
@Component @Component
@AllArgsConstructor
public class OrderCancelHandler { public class OrderCancelHandler {
@Autowired private final OrderCancelService orderCancelService;
private OrderCancelService orderCancelService;
@Autowired
private BreakContractSettlementOwnerService breakContractSettlementOwnerService;
@RabbitListener(queues = RabbitKeyConstants.ORDER_CANCEL_QUEUE) @RabbitListener(queues = RabbitKeyConstants.ORDER_CANCEL_QUEUE)
public void onMessage(String message) { public void onMessage(String message) {
log.info("处理订单取消监听器执行,订单No为{}", message); log.info("处理订单取消监听器执行,订单No为{}", message);
OrderCancelParam param = JSONUtil.toBean(message, OrderCancelParam.class); OrderCancelParam param = JSONUtil.toBean(message, OrderCancelParam.class);
if (ObjectUtil.equals(param.getCancelType(), 1)) { orderCancelService.orderCancelProcess(param);
orderCancelService.orderCancelProcess(param);
} else {
orderCancelService.orderCancelProcess(param);
}
// //货主端取消订单进行违约计费
// if(Objects.equals(param.getCreateByType(), RoleEnum.Type.OWNER)){
// breakContractSettlementOwnerService.saveSettlementOwnerForCancelOrder(param.getOrderNo());
// }
} }
} }
...@@ -42,9 +42,14 @@ public class RabbitOrderGoodsStatusOnHandler { ...@@ -42,9 +42,14 @@ public class RabbitOrderGoodsStatusOnHandler {
orderGoodsDao.updateOrderGoodsStatusByOrderGoodsNo(orderGoods.getOrderGoodsNo(), OrderGoodsStatusEnum.Status.PAYING.getCode()); orderGoodsDao.updateOrderGoodsStatusByOrderGoodsNo(orderGoods.getOrderGoodsNo(), OrderGoodsStatusEnum.Status.PAYING.getCode());
// 添加积分货单 // 添加积分货单
integralMqService.orderGoodsAdd(orderGoods.getOrderGoodsNo(), try {
orderGoods.getSendAddressId(), orderGoods.getSendAddressShorter(), integralMqService.orderGoodsAdd(orderGoods.getOrderGoodsNo(),
orderGoods.getReceiveAddressId(), orderGoods.getReceiveAddressShorter()); orderGoods.getSendAddressId(), orderGoods.getSendAddressShorter(),
orderGoods.getReceiveAddressId(), orderGoods.getReceiveAddressShorter());
}catch (Exception e) {
e.printStackTrace();
}
} }
} }
......
...@@ -6,13 +6,14 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; ...@@ -6,13 +6,14 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.model.IntegralRecord; import com.clx.performance.model.IntegralRecord;
import com.clx.performance.param.pc.pageIntegralStatisticsDetailParam; import com.clx.performance.param.pc.pageIntegralStatisticsDetailParam;
import com.clx.performance.sqlProvider.IntegralRecordSqlProvider; import com.clx.performance.sqlProvider.IntegralRecordSqlProvider;
import com.clx.performance.sqlProvider.IntegralTruckSqlProvider;
import com.clx.performance.vo.pc.IntegralRecordVO; import com.clx.performance.vo.pc.IntegralRecordVO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.SelectProvider; import org.apache.ibatis.annotations.SelectProvider;
import java.util.List;
/** /**
* @Author: aiqinguo * @Author: aiqinguo
* @Description: 积分记录 * @Description: 积分记录
...@@ -29,6 +30,12 @@ public interface IntegraRecordMapper extends BaseMapper<IntegralRecord> { ...@@ -29,6 +30,12 @@ public interface IntegraRecordMapper extends BaseMapper<IntegralRecord> {
@SelectProvider(type = IntegralRecordSqlProvider.class, method = "pageByParam") @SelectProvider(type = IntegralRecordSqlProvider.class, method = "pageByParam")
IPage<IntegralRecordVO> pageByParam(@Param("page") Page<IntegralRecordVO> page, @Param("param") pageIntegralStatisticsDetailParam param); IPage<IntegralRecordVO> pageByParam(@Param("page") Page<IntegralRecordVO> page, @Param("param") pageIntegralStatisticsDetailParam param);
@Select("<script>select sum(integral) from integral_record where " +
" type in <foreach collection='list' item='item' open='(' separator=',' close=')'>#{item}</foreach> " +
" and statistics_id = #{statisticsId}" +
"</script>")
Integer sumByStatisticsIdAndTypes(@Param("statisticsId") Integer statisticsId, @Param("list") List<Integer> typeList);
@Select("select sum(integral) from integral_record where statistics_id = #{statisticsId} and type = #{type} and create_time >= #{beginTime} and create_time < #{endTime}") @Select("select sum(integral) from integral_record where statistics_id = #{statisticsId} and type = #{type} and create_time >= #{beginTime} and create_time < #{endTime}")
Integer sumByStatisticsIdAndTypeAndTime(@Param("statisticsId") Integer statisticsId, Integer sumByStatisticsIdAndTypeAndTime(@Param("statisticsId") Integer statisticsId,
@Param("type") Integer type, @Param("type") Integer type,
......
...@@ -10,11 +10,13 @@ import com.clx.performance.param.pc.PageCarrierOrderChildParam; ...@@ -10,11 +10,13 @@ import com.clx.performance.param.pc.PageCarrierOrderChildParam;
import com.clx.performance.param.pc.PagePoundAuditParam; import com.clx.performance.param.pc.PagePoundAuditParam;
import com.clx.performance.sqlProvider.OrderChildSqlProvider; import com.clx.performance.sqlProvider.OrderChildSqlProvider;
import com.clx.performance.vo.app.OrderChildVO; import com.clx.performance.vo.app.OrderChildVO;
import com.clx.performance.vo.pc.OrderGoodsVO;
import com.clx.performance.vo.pc.PageCarrierOrderChildVO; import com.clx.performance.vo.pc.PageCarrierOrderChildVO;
import com.clx.performance.vo.pc.PageOrderChildPoundAuditVO; import com.clx.performance.vo.pc.PageOrderChildPoundAuditVO;
import org.apache.ibatis.annotations.*; import org.apache.ibatis.annotations.*;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List; import java.util.List;
...@@ -66,4 +68,14 @@ public interface OrderChildMapper extends BaseMapper<OrderChild> { ...@@ -66,4 +68,14 @@ public interface OrderChildMapper extends BaseMapper<OrderChild> {
@Param("receiveSystemAddressId") Integer receiveSystemAddressId, @Param("receiveSystemAddressId") Integer receiveSystemAddressId,
@Param("beginTime") String beginTime); @Param("beginTime") String beginTime);
Integer updateOrderGoodsSetResidueWeight(@Param(value = "status") Integer status, @Param(value = "remark") String remark,
@Param(value = "cancelTime") String cancelTime, @Param(value = "finishTime") String finishTime,
@Param(value = "childNoList") List<String> childNoList);
@SelectProvider(type = OrderChildSqlProvider.class, method = "findArtificialCancelOrder")
OrderChildVO findArtificialCancelOrder(@Param("orderChildNo") String orderChildNo);
@SelectProvider(type = OrderChildSqlProvider.class, method = "orderChildCancelRecord")
IPage<OrderChildVO> orderChildCancelRecord(@Param("page")Page<OrderGoodsVO> page);
} }
\ No newline at end of file
...@@ -9,10 +9,7 @@ import com.clx.performance.model.OrderGoods; ...@@ -9,10 +9,7 @@ import com.clx.performance.model.OrderGoods;
import com.clx.performance.sqlProvider.OrderGoodsSqlProvider; import com.clx.performance.sqlProvider.OrderGoodsSqlProvider;
import com.clx.performance.vo.app.OrderGoodsAPPVO; import com.clx.performance.vo.app.OrderGoodsAPPVO;
import com.clx.performance.vo.pc.OrderGoodsVO; import com.clx.performance.vo.pc.OrderGoodsVO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.*;
import org.apache.ibatis.annotations.SelectProvider;
import org.apache.ibatis.annotations.Update;
import org.apache.ibatis.annotations.UpdateProvider;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List; import java.util.List;
...@@ -42,6 +39,14 @@ public interface OrderGoodsMapper extends BaseMapper<OrderGoods> { ...@@ -42,6 +39,14 @@ public interface OrderGoodsMapper extends BaseMapper<OrderGoods> {
" where id = #{id}") " where id = #{id}")
void updateOrderGoodsWeightAndStatus(@Param("id") Integer id, @Param("weight") BigDecimal orderChildWeight, @Param("orderGoodsStatus") Integer orderGoodsStatus); void updateOrderGoodsWeightAndStatus(@Param("id") Integer id, @Param("weight") BigDecimal orderChildWeight, @Param("orderGoodsStatus") Integer orderGoodsStatus);
@Update(" update order_goods set " +
" residue_transport_weight = residue_transport_weight-#{residueTransportWeight}," +
" already_transport_weight = already_transport_weight+#{alreadyTransportWeight}," +
"order_goods_status = #{orderGoodsStatus} " +
" where id = #{id}")
void updateOrderGoodsWeightResidueAndAlreadyAndStatus(@Param("id") Integer id, @Param("alreadyTransportWeight") BigDecimal alreadyTransportWeight, @Param("residueTransportWeight") BigDecimal residueTransportWeight,@Param("orderGoodsStatus") Integer orderGoodsStatus);
@SelectProvider(type = OrderGoodsSqlProvider.class, method = "openOrderPageGoodsList") @SelectProvider(type = OrderGoodsSqlProvider.class, method = "openOrderPageGoodsList")
IPage<OrderGoodsAPPVO> openOrderPageGoodsList(Page<OrderGoodsAPPVO> page); IPage<OrderGoodsAPPVO> openOrderPageGoodsList(Page<OrderGoodsAPPVO> page);
...@@ -66,8 +71,15 @@ public interface OrderGoodsMapper extends BaseMapper<OrderGoods> { ...@@ -66,8 +71,15 @@ public interface OrderGoodsMapper extends BaseMapper<OrderGoods> {
OrderGoodsVO findOrderGoodsById(Integer id); OrderGoodsVO findOrderGoodsById(Integer id);
@UpdateProvider(type = OrderGoodsSqlProvider.class, method = "updateOrderGoods") @UpdateProvider(type = OrderGoodsSqlProvider.class, method = "updateOrderGoods")
Integer updateOrderGoods(@Param(value = "param") OrderGoodsEditParams orderGoodsEditParams); Integer updateOrderGoods(@Param(value = "params") OrderGoodsEditParams orderGoodsEditParams);
@UpdateProvider(type = OrderGoodsSqlProvider.class, method = "updateOrderGoodsSetResidueWeightAndAlreadyWeightAndStatus") @UpdateProvider(type = OrderGoodsSqlProvider.class, method = "updateOrderGoodsSetResidueWeightAndAlreadyWeightAndStatus")
Integer updateOrderGoodsSetResidueWeightAndAlreadyWeightAndStatus(@Param(value = "residueWeight") BigDecimal residueWeight,@Param(value = "alreadyWeight") BigDecimal alreadyWeight,@Param(value = "status") Integer status,@Param(value = "id") Integer id); Integer updateOrderGoodsSetResidueWeightAndAlreadyWeightAndStatus(@Param(value = "residueWeight") BigDecimal residueWeight,@Param(value = "alreadyWeight") BigDecimal alreadyWeight,@Param(value = "status") Integer status,@Param(value = "id") Integer id);
@SelectProvider(type = OrderGoodsSqlProvider.class, method = "getCancelOrderGoods")
List<OrderGoodsAPPVO> getCancelOrderGoods(@Param(value = "param") List<String> param);
@Select("select sum(already_transport_weight) from order_goods where order_no=#{orderNo}")
BigDecimal sumAlreadyTransportWeightByOrderNo(@Param("orderNo")String orderNo);
} }
package com.clx.performance.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.clx.performance.model.ThirdPartRequestLog;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface ThirdPartRequestLogMapper extends BaseMapper<ThirdPartRequestLog> {
}
package com.clx.performance.mapper.integral;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.clx.performance.model.integral.IntegralRule;
import org.apache.ibatis.annotations.Mapper;
/**
* @Author: aiqinguo
* @Description: 积分规则
* @Date: 2023-10-9 11:52:22
* @Version: 1.0
*/
@Mapper
public interface IntegralRuleMapper extends BaseMapper<IntegralRule> {
}
\ No newline at end of file
package com.clx.performance.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.msl.common.config.KeyColumn;
import com.msl.common.model.HasKey;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
@Getter
@Setter
@Accessors(chain = true)
@TableName("third_part_request_log")
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ThirdPartRequestLog implements HasKey<Integer> {
@TableId(value = "id", type = IdType.AUTO)
@ApiModelProperty(value = "ID")
private Integer id;
@ApiModelProperty(value = "请求id")
private String requestId;
@ApiModelProperty(value = "应用编号")
private Long appNo;
@ApiModelProperty(value = "请求类型: 1-发送请求;2-接收请求")
private Integer requestType;
@ApiModelProperty(value = "操作类型")
private String action;
@ApiModelProperty(value = "请求地址")
private String url;
@ApiModelProperty(value = "请求参数(JSON格式)")
private String requestContent;
@ApiModelProperty(value = "返回数据(JSON格式)")
private String responseContent;
@ApiModelProperty(value = "返回状态码")
private Integer statusCode;
@ApiModelProperty(value = "状态: 0-请求中,1-成功,2-失败")
private Integer status;
@ApiModelProperty(value = "重试次数")
private Integer retryTimes;
@ApiModelProperty(value = "其他字段")
private String otherFields;
@ApiModelProperty(value = "创建时间")
private LocalDateTime createTime;
@ApiModelProperty(value = "修改时间")
private LocalDateTime modifiedTime;
@KeyColumn("id")
@Override
public Integer gainKey() {
return id;
}
}
package com.clx.performance.model.integral;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.msl.common.config.KeyColumn;
import com.msl.common.model.HasKey;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.time.LocalDateTime;
/**
* @Author: aiqinguo
* @Description: 积分规则
* @Date: 2023/11/06 16:14:44
* @Version: 1.0
*/
@Getter
@Setter
@NoArgsConstructor
@TableName(autoResultMap = true)
public class IntegralRule implements HasKey<Integer> {
@TableId(value = "id", type = IdType.AUTO)
private Integer id; //id
private String orderChildCompleteRuleJson; //运单完成积分规则
private String orderAwardRuleJson; //货单奖励积分规则
private String orderDiscountRuleJson; //货单扣减积分规则
private String orderChildTimeoutRuleJson; //运单超时扣减规则
private String platformCompensationRuleJson; //平台补偿积分规则
private String driverReportRuleJson; //司机上报积分规则
private LocalDateTime createTime; //创建时间
private LocalDateTime modifiedTime; //修改时间
@KeyColumn("id")
@Override
public Integer gainKey() {
return id;
}
}
\ No newline at end of file
...@@ -9,6 +9,8 @@ public interface IntegralRecordService { ...@@ -9,6 +9,8 @@ public interface IntegralRecordService {
void addRecord(IntegralRecordAddParam param); void addRecord(IntegralRecordAddParam param);
void addPlatformCompensationRecord(String truckNo);
IntegralRecord save(Integer statisticsId, LocalDateTime statisticsDate, String truckNo, Integer type, Integer integral, String remark); IntegralRecord save(Integer statisticsId, LocalDateTime statisticsDate, String truckNo, Integer type, Integer integral, String remark);
} }
package com.clx.performance.service; package com.clx.performance.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.OrderCancelParam; import com.clx.performance.param.pc.OrderCancelParam;
import com.clx.performance.vo.app.OrderChildVO;
import com.msl.common.base.PageParam;
import java.util.List;
public interface OrderCancelService { public interface OrderCancelService {
// void platformCancelOrderPre(String orderNo); /**
// * 承运端取消订单,货主同意调用此接口
// void platformCancelOrder(String orderNo); * @param orderNo
// */
void ownerCancelOrderPre(String orderNo); void ownerConfirmCancelOrderPre(String orderNo);
//
void ownerCancelOrder(String orderNo); void ownerConfirmCancelProcess(String orderNo);
/** /**
* 货主取消订单前置(只修改订单状态) * 货主取消订单前置(只修改订单状态)
...@@ -30,4 +35,18 @@ public interface OrderCancelService { ...@@ -30,4 +35,18 @@ public interface OrderCancelService {
*/ */
void orderCancelProcess(OrderCancelParam param); void orderCancelProcess(OrderCancelParam param);
/**
* 客服取消
* @param orderChildNo
*/
void artificialCancelOrder(String orderChildNo, String remark);
/**
* 客服取消运单查询
* @param orderChildNo
* @return
*/
OrderChildVO findArtificialCancelOrder(String orderChildNo);
IPage<OrderChildVO> orderChildCancelRecord(PageParam pageParam);
} }
...@@ -77,4 +77,8 @@ public interface OrderChildService { ...@@ -77,4 +77,8 @@ public interface OrderChildService {
* @return * @return
*/ */
List<OrderChild> selectInTransitOrderChild(String orderNo); List<OrderChild> selectInTransitOrderChild(String orderNo);
void orderChildFinish(String childNo);
DriverCancelOrderChildInfo driverCancelOrderChildInfo(String orderChildNo);
} }
...@@ -2,6 +2,7 @@ package com.clx.performance.service; ...@@ -2,6 +2,7 @@ package com.clx.performance.service;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.model.OrderChild;
import com.clx.performance.param.pc.OrderGoodsCancelParam; import com.clx.performance.param.pc.OrderGoodsCancelParam;
import com.clx.performance.param.pc.UpdateEditOrderGoodsParam; import com.clx.performance.param.pc.UpdateEditOrderGoodsParam;
import com.clx.performance.param.pc.PageOrderGoodsListParam; import com.clx.performance.param.pc.PageOrderGoodsListParam;
...@@ -31,8 +32,8 @@ public interface OrderGoodsService { ...@@ -31,8 +32,8 @@ public interface OrderGoodsService {
IPage<OrderGoodsVO> pageOrderGoodsList(PageOrderGoodsListParam param); IPage<OrderGoodsVO> pageOrderGoodsList(PageOrderGoodsListParam param);
void updateOrderGoodsReduceWeightAndStatus(Integer id, BigDecimal orderChildWeight, Integer orderGoodsStatus); void updateOrderGoodsReduceWeightAndStatusAmountLoad(OrderGoods orderGoods, BigDecimal orderChildWeight, Integer orderGoodsStatus);
void updateOrderGoodsReduceWeightAndStatus(OrderGoods orderGoods, BigDecimal orderChildWeight, Integer orderGoodsStatus); void updateOrderGoodsReduceWeightAndStatus(OrderGoods orderGoods, OrderChild orderChild, Integer orderGoodsStatus);
IPage<OrderGoodsAPPVO> indexOrderGoodsList(OrderGoodsListPageParam orderGoodsListParam); IPage<OrderGoodsAPPVO> indexOrderGoodsList(OrderGoodsListPageParam orderGoodsListParam);
......
package com.clx.performance.service; package com.clx.performance.service;
import com.clx.performance.vo.app.OrderGoodsAPPVO;
import java.util.List; import java.util.List;
public interface OrderGoodsTruckBindService { public interface OrderGoodsTruckBindService {
List<Integer> getTrucksByOrderGoodsNo(String orderGoodsNo); List<Integer> getTrucksByOrderGoodsNo(String orderGoodsNo);
List<OrderGoodsAPPVO> getCancelOrderGoods(Long userNo);
void updateCancelTruckBind(String orderGoodsNo);
} }
...@@ -9,6 +9,7 @@ import com.clx.performance.param.pc.*; ...@@ -9,6 +9,7 @@ import com.clx.performance.param.pc.*;
import com.clx.performance.param.pc.owner.CreteAccountParam; import com.clx.performance.param.pc.owner.CreteAccountParam;
import com.clx.performance.param.pc.owner.FrozenAccountParam; import com.clx.performance.param.pc.owner.FrozenAccountParam;
import com.clx.performance.param.pc.owner.ThawAccountParam; import com.clx.performance.param.pc.owner.ThawAccountParam;
import com.clx.performance.vo.pc.OwnerAccountAllVO;
import com.clx.performance.vo.pc.OwnerAccountRunningWaterRecordVO; import com.clx.performance.vo.pc.OwnerAccountRunningWaterRecordVO;
import com.clx.performance.vo.pc.OwnerAccountVO; import com.clx.performance.vo.pc.OwnerAccountVO;
import com.clx.user.param.pc.owner.UpdateOwnerBindCardFeignParam; import com.clx.user.param.pc.owner.UpdateOwnerBindCardFeignParam;
...@@ -25,7 +26,7 @@ public interface OwnerAccountService { ...@@ -25,7 +26,7 @@ public interface OwnerAccountService {
IPage<OwnerAccountRunningWaterRecordVO> prepaidFreightAccountPageList(PagePlatformPrepaidFreightAccountParam param); IPage<OwnerAccountRunningWaterRecordVO> prepaidFreightAccountPageList(PagePlatformPrepaidFreightAccountParam param);
Map<String,OwnerAccountVO> accountInfo(Long ownerUserNo); OwnerAccountAllVO accountInfo(Long ownerUserNo);
Long accountTopUp(OwnerTopUpParam param); Long accountTopUp(OwnerTopUpParam param);
......
package com.clx.performance.service;
import com.clx.performance.param.pc.payment.PayParam;
import com.msl.common.result.Result;
public interface PaymentService {
Result paymentWallet( PayParam noCheckPwd);
}
...@@ -6,4 +6,6 @@ public interface TempService { ...@@ -6,4 +6,6 @@ public interface TempService {
void updateBreakContractDriverSettlementFinish(String settlementNo); void updateBreakContractDriverSettlementFinish(String settlementNo);
void paymentTest(String fromUser,String toUser,String figure);
} }
package com.clx.performance.service;
import com.clx.performance.model.ThirdPartRequestLog;
import com.msl.common.base.Optional;
import com.msl.common.result.Result;
public interface ThirdPartRequestLogService {
/**
* 保存第三方接口调用记录
*
* @param log
*/
void save(ThirdPartRequestLog log);
/**
* 修改第三方接口返回值
*
* @param logId
* @param result
*/
void updateResult(Integer logId, Result<?> result);
/**
* 修改重试次数
*
* @param logId
* @param retryTimes
*/
void updateLogRetryTimes(Integer logId, Integer retryTimes);
/**
* 根据id 查询
*/
Optional<ThirdPartRequestLog> getById(Integer id);
}
...@@ -8,6 +8,8 @@ import com.clx.performance.vo.pc.breakcontract.carrier.PageCarrierBreakContractS ...@@ -8,6 +8,8 @@ import com.clx.performance.vo.pc.breakcontract.carrier.PageCarrierBreakContractS
import com.clx.performance.vo.pc.owner.settle.SettlementPlatformAccountVO; import com.clx.performance.vo.pc.owner.settle.SettlementPlatformAccountVO;
import org.apache.poi.xssf.streaming.SXSSFWorkbook; import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import java.math.BigDecimal;
/** /**
* @author liruixin * @author liruixin
* Date 2023-10-24 * Date 2023-10-24
...@@ -38,7 +40,7 @@ public interface BreakContractSettlementOwnerService { ...@@ -38,7 +40,7 @@ public interface BreakContractSettlementOwnerService {
void saveSettlementOwnerForTonnageDown(OrderAdjustTonnageDownParam param); void saveSettlementOwnerForTonnageDown(OrderAdjustTonnageDownParam param);
void saveSettlementOwnerForCancelOrder(String orderNo); void saveSettlementOwnerForCancelOrder(BigDecimal transportWeight, BigDecimal validFreightPrice, String orderNo, Integer cancelType);
SettlementPlatformAccountVO getCarrierSettlementPlatformAccount(Integer id); SettlementPlatformAccountVO getCarrierSettlementPlatformAccount(Integer id);
......
...@@ -4,18 +4,22 @@ import com.clx.performance.dao.IntegralRecordDao; ...@@ -4,18 +4,22 @@ import com.clx.performance.dao.IntegralRecordDao;
import com.clx.performance.dao.IntegralStatisticsDao; import com.clx.performance.dao.IntegralStatisticsDao;
import com.clx.performance.dao.IntegralTruckDao; import com.clx.performance.dao.IntegralTruckDao;
import com.clx.performance.enums.PerformanceResultEnum; import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.enums.integral.IntegralRecordEnum;
import com.clx.performance.model.IntegralRecord; import com.clx.performance.model.IntegralRecord;
import com.clx.performance.model.IntegralStatistics; import com.clx.performance.model.IntegralStatistics;
import com.clx.performance.model.IntegralTruck; import com.clx.performance.model.IntegralTruck;
import com.clx.performance.param.pc.IntegralRecordAddParam; import com.clx.performance.param.pc.IntegralRecordAddParam;
import com.clx.performance.service.IntegralMqService; import com.clx.performance.service.IntegralMqService;
import com.clx.performance.service.IntegralRecordService; import com.clx.performance.service.IntegralRecordService;
import com.clx.performance.service.integral.IntegralRuleService;
import com.clx.performance.utils.LocalDateTimeUtils; import com.clx.performance.utils.LocalDateTimeUtils;
import com.clx.performance.vo.pc.integral.AppIntegralRuleVO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Arrays;
@Slf4j @Slf4j
@Service @Service
...@@ -32,6 +36,8 @@ public class IntegralRecordServiceImpl implements IntegralRecordService { ...@@ -32,6 +36,8 @@ public class IntegralRecordServiceImpl implements IntegralRecordService {
@Autowired @Autowired
private IntegralMqService integralMqService; private IntegralMqService integralMqService;
@Autowired
private IntegralRuleService integralRuleService;
@Override @Override
public void addRecord(IntegralRecordAddParam param) { public void addRecord(IntegralRecordAddParam param) {
...@@ -57,6 +63,53 @@ public class IntegralRecordServiceImpl implements IntegralRecordService { ...@@ -57,6 +63,53 @@ public class IntegralRecordServiceImpl implements IntegralRecordService {
} }
@Override
public void addPlatformCompensationRecord(String truckNo) {
// 查找规则
AppIntegralRuleVO ruleInfo = integralRuleService.getRuleInfo();
Integer type = IntegralRecordEnum.Type.ORDER_CHILD_PLATFORM_COMPENSATION.getValue();
Integer integral = ruleInfo.getPlatformCompensationRule().getIntegralCancel();
String remark = IntegralRecordEnum.Type.ORDER_CHILD_PLATFORM_COMPENSATION.getMsg();
String statisticsDate = LocalDateTimeUtils.getWeekStart();
IntegralTruck truck = integralTruckDao.getByTruckNo(truckNo).orNull();
if (truck == null) {return;}
// 查找最新统计
IntegralStatistics statistics = integralStatisticsDao.selectByTruckNoAndStatisticsDate(truckNo, statisticsDate).orNull();
if (statistics == null) {return;}
Integer sum = integralRecordDao.sumByStatisticsIdAndTypes(statistics.getId(), Arrays.asList(IntegralRecordEnum.Type.ORDER_CHILD_PLATFORM_COMPENSATION.getValue()));
if (sum == null) {sum = 0;}
if (sum > ruleInfo.getPlatformCompensationRule().getIntegralCancelLimit()){
log.info("平台补偿超上限,本次无效, truckNo:{}, type:{}, integral:{}, remark:{}", truckNo, type, integral, remark);
return;
}
else if (sum+integral > ruleInfo.getPlatformCompensationRule().getIntegralCancelLimit()){
integral = ruleInfo.getPlatformCompensationRule().getIntegralCancelLimit()-sum;
}
else {
}
// 更新积分
statistics.setIntegral(statistics.getIntegral()+integral);
integralStatisticsDao.updateIntegral(statistics);
truck.setIntegral(statistics.getIntegral());
integralTruckDao.updateIntegral(truck);
// 新增积分记录
IntegralRecord record = save(statistics.getId(), statistics.getStatisticsDate(), statistics.getTruckNo(), type, integral, remark);
// 发送mq (新增积分记录)
integralMqService.integralRecordAdd(record.getStatisticsId(), record.getTruckNo(), record.getType(), record.getIntegral(), record.getRemark());
}
@Override @Override
public IntegralRecord save(Integer statisticsId, LocalDateTime statisticsDate, String truckNo, Integer type, Integer integral, String remark){ public IntegralRecord save(Integer statisticsId, LocalDateTime statisticsDate, String truckNo, Integer type, Integer integral, String remark){
IntegralRecord record = new IntegralRecord(); IntegralRecord record = new IntegralRecord();
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论