Merge branch 'master' into pjfk

# Conflicts:
#	pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserController.java
#	pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysUserServiceImpl.java
This commit is contained in:
zjf committed 2025-07-09 12:28:26 +08:00
commit dd983527f3
529 files changed
+22179 -1213

No files matched your search

@@ -20,6 +20,13 @@ public interface RemoterThirdKsService {
@PostMapping("/third-ks/sku-submit")
R<KsSkuSubmitVo> skuSubmit(@RequestBody KsSkuSubmitDto dto);
/**
* 常规SKU修改
*/
@NoToken
@PostMapping("/third-ks/sku-edit")
R<KsSkuEditVo> skuEdit(@RequestBody KsSkuEditDto dto, @RequestParam String ks_sku_id);
/**
* 集合SKU提交审核(未公开)
*/
@@ -0,0 +1,19 @@
package com.bsd.pjcloud.thirdparty.api.feign;
import com.bsd.pjcloud.common.core.constant.ServiceNameConstants;
import com.bsd.pjcloud.common.core.util.R;
import com.bsd.pjcloud.common.feign.annotation.NoToken;
import com.bsd.pjcloud.thirdparty.dto.lb.LbH5LoginDto;
import com.bsd.pjcloud.thirdparty.vo.lb.LbH5LoginVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@FeignClient(contextId = "remoterThirdLbApiService", value = ServiceNameConstants.THIRDPARTY_SERVICE)
public interface RemoterThirdLbApiService {
@NoToken
@PostMapping("/third-lb/h5-login")
R<LbH5LoginVo> h5Login(@RequestBody LbH5LoginDto dto);
}
@@ -0,0 +1,28 @@
package com.bsd.pjcloud.thirdparty.constant;
import cn.hutool.core.util.ObjectUtil;
import com.bsd.pjcloud.thirdparty.constant.pay.ThirdPayApiBizTypeEnum;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
/**
* 第三方key类型
*/
@AllArgsConstructor
@Getter
public enum ThirdKeyTypeEnum {
LB("10", "宁波银行"),
;
private final String type;
private final String description;
public static ThirdKeyTypeEnum valueOfByType(String type) {
if (ObjectUtil.isEmpty(type)) return null;
return Arrays.stream(values()).filter(v -> ObjectUtil.equals(type, v.getType())).findFirst().get();
}
}
@@ -0,0 +1,30 @@
package com.bsd.pjcloud.thirdparty.constant.pay;
import cn.hutool.core.util.ObjectUtil;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
/**
* 第三方统一支付api类型
*/
@AllArgsConstructor
@Getter
public enum ThirdPayApiBizTypeEnum {
PAY("10", "支付"),
REFUND("20", "退款"),
WALLET_INFO("30", "钱包详情"),
WATER("40", "流水"),
DETAIL("50", "订单详情"),
;
private final String type;
private final String description;
public static ThirdPayApiBizTypeEnum valueOfByType(String type) {
if (ObjectUtil.isEmpty(type)) return null;
return Arrays.stream(values()).filter(v -> ObjectUtil.equals(type, v.getType())).findFirst().get();
}
}
@@ -0,0 +1,27 @@
package com.bsd.pjcloud.thirdparty.constant.pay;
import cn.hutool.core.util.ObjectUtil;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
/**
* 第三方统一支付来源类型
*/
@AllArgsConstructor
@Getter
public enum ThirdPaySoureBizTypeEnum {
LB("10", "宁波银行"),
;
private final String type;
private final String description;
public static ThirdPaySoureBizTypeEnum valueOfByType(String type) {
if (ObjectUtil.isEmpty(type)) return null;
return Arrays.stream(values()).filter(v -> ObjectUtil.equals(type, v.getType())).findFirst().get();
}
}
@@ -0,0 +1,39 @@
package com.bsd.pjcloud.thirdparty.constant.pay;
import cn.hutool.core.util.ObjectUtil;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
/**
* 支付状态返回枚举
*/
@AllArgsConstructor
@Getter
public enum ThirdPayVoStatusEnum {
SUCCESS(200, "成功"),
SIGN_ERROR(400, "签名验证失败"),
PARAMS_ERROR(500, "参数错误"),
USER_EXIST(501, "用户不存在"),
ORDER_EXIST(502, "订单不存在"),
MCH_EXIST(503, "第三方商户未配置"),
ORDER_REFUND_EXIST(504, "订单未退款"),
BALANCE_NOT_ENOUGH(505, "用户余额不足"),
ORDER_HAVE_PAY(506, "订单已支付"),
ORDER_HAVE_REFUND(507, "订单已退款"),
DETAIL_ITEM_NOT_ONE(508, "查询详情条目不为一"),
REFUND_TOTAL_PRICE(509, "退款总金额大于支付总金额"),
UNKNOWN_ERROR(599, "未知错误,请联系管理员"),
;
private final int type;
private final String description;
public static ThirdPayVoStatusEnum valueOfByType(String type) {
if (ObjectUtil.isEmpty(type)) return null;
return Arrays.stream(values()).filter(v -> ObjectUtil.equals(type, v.getType())).findFirst().get();
}
}
@@ -2,14 +2,12 @@ package com.bsd.pjcloud.thirdparty.dto.ks;
import lombok.Data;
import java.util.List;
import java.util.Map;
@Data
public class KsSkuEditDto {
/**
* 该字段为超级收银员平台的sku_id,提交SKU审核后由系统返回,作为资源ID传递,是请求地址中的一部分,不需要提交到form表单
*/
private String ks_sku_id;
/**
* 该字段为使用方系统sku_name,建议使用品牌名+商品名,如统一冰红茶
*/
@@ -23,7 +21,7 @@ public class KsSkuEditDto {
/**
* SKU图片仅在SKU因图片原因审核不通过的情况下支持修改,一旦SKU被审核通过,SKU图片将不再允许修改,如有相关需求,请重新申请SKU
*/
private String img_urls;
private List<String> img_urls;
/**
* 审核结果回调地址
@@ -33,5 +31,5 @@ public class KsSkuEditDto {
/**
* 该字段为SKU所对应的规格,包含口味、容量、重量,taste表示口味,capacity表示容量,单位:ml,weight表示重量,单位:g
*/
private String specs;
private Map<String, String> specs;
}
@@ -32,7 +32,7 @@ public class KsSkuSubmitCallbackDto {
* 2:审核通过
* 3:审核不通过
*/
private Integer code;
private String code;
private String desc;
@@ -2,6 +2,9 @@ package com.bsd.pjcloud.thirdparty.dto.ks;
import lombok.Data;
import java.util.List;
import java.util.Map;
@Data
public class KsSkuSubmitDto {
/**
@@ -22,7 +25,7 @@ public class KsSkuSubmitDto {
/**
* 该字段为SKU不同方位视图,所需拍摄的图片数量及角度请参考商品建模文档,参数具体值为图片资源地址,如资源为使用方所属,请确保外部可以访问,请注意图片尺寸及质量,综合质量不佳可能会导致审核不通过。图片尺寸不小于1920*1080,压缩质量不低于70%,长宽比介于16:9同1:1之间。
*/
private String img_urls;
private List<String> img_urls;
/**
* 审核结果回调地址
@@ -32,6 +35,6 @@ public class KsSkuSubmitDto {
/**
* 该字段为SKU所对应的规格,包含口味、容量、重量,taste表示口味,capacity表示容量,单位:ml,weight表示重量,单位:g
*/
private String specs;
private Map<String, String> specs;
}
@@ -0,0 +1,15 @@
package com.bsd.pjcloud.thirdparty.dto.lb;
import jakarta.validation.constraints.NotEmpty;
import lombok.Data;
@Data
public class LbH5LoginDto {
/**
* 用户手机号
*/
@NotEmpty(message = "手机号不能为空")
private String phone;
}
@@ -0,0 +1,18 @@
package com.bsd.pjcloud.thirdparty.dto.pay;
import lombok.Data;
@Data
public class PayDetailDto {
/**
* 第三方订单id(thirdOrderId、thirdRefundId二选一)
*/
private String thirdOrderId;
/**
* 第三方退款(thirdOrderId、thirdRefundId二选一,有退款操作才能查询到数据,否则返回null)
*/
private String thirdRefundId;
}
@@ -0,0 +1,60 @@
package com.bsd.pjcloud.thirdparty.dto.pay;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.util.List;
@Data
public class PayDto {
/**
* 用户id
*/
@NotNull(message = "用户id不能为空")
private Long userId;
/**
* 第三方唯一流水id
*/
@NotEmpty(message = "第三方唯一流水id不能为空")
private String thirdOrderId;
/**
* 扣款金额(分)
*/
@NotNull(message = "扣款金额不能为空")
private Integer price;
/**
* 商品列表
*/
private List<Product> products;
@Data
public static class Product {
/**
* 商品名
*/
private String name;
/**
* 商品图片(网络可访问)
*/
private String pic;
/**
* 商品价格(分)
*/
private Integer price;
/**
* 商品数量
*/
private Integer count;
}
}
@@ -0,0 +1,18 @@
package com.bsd.pjcloud.thirdparty.dto.pay;
import lombok.Data;
@Data
public class PayGetWalletInfoDto {
/**
* sm4加密后的手机号(优先级userId>signPhone)
*/
private String signPhone;
/**
* 用户id(优先级userId>signPhone)
*/
private Long userId;
}
@@ -0,0 +1,28 @@
package com.bsd.pjcloud.thirdparty.dto.pay;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@Data
public class RefundDto {
/**
* 平台唯一订单号
*/
@NotEmpty(message = "平台唯一订单号不能为空")
private String platformOrderId;
/**
* 第三方退款流水号
*/
@NotEmpty(message = "第三方退款流水号不能为空")
private String thirdRefundId;
/**
* 退款金额(单位分)
*/
@NotNull(message = "退款金额不能为空")
private Integer price;
}
@@ -0,0 +1,13 @@
package com.bsd.pjcloud.thirdparty.dto.pay;
import com.bsd.pjcloud.thirdparty.entity.api.ThirdPayLogEntity;
import lombok.Data;
import java.time.LocalDate;
@Data
public class ThirdPayLogDto extends ThirdPayLogEntity {
private LocalDate[] createTimeList;
}
@@ -0,0 +1,26 @@
package com.bsd.pjcloud.thirdparty.dto.pay;
import lombok.Data;
@Data
public class WaterDto {
/**
* 当前页号(默认1)
*/
private Long current;
/**
* 当前页数据条数(默认100,最大200)
*/
private Long size;
/**
* 订单状态
* 1创建订单(未支付)
* 5已经支付
* 10退款
*/
private String orderStatus;
}
@@ -0,0 +1,115 @@
package com.bsd.pjcloud.thirdparty.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.bsd.pjcloud.common.core.util.TenantTable;
import java.time.LocalDateTime;
/**
* 第三方密钥管理
*
* @author dzc
* @date 2025-04-30 15:18:13
*/
@Data
@TenantTable
@TableName("third_key_manage")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "第三方密钥管理")
public class ThirdKeyManageEntity extends Model<ThirdKeyManageEntity> {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description="主键")
private Long id;
/**
* 第三方名字
*/
@Schema(description="第三方名字")
private String name;
/**
* 第三方类型id(常量)
*/
@Schema(description="第三方类型id(常量)")
private String bizType;
/**
* appKey
*/
@Schema(description="appKey")
private String appKey;
/**
* appSecret
*/
@Schema(description="appSecret")
private String appSecret;
/**
* 字段加密key
*/
@Schema(description="字段加密key")
private String fieldKey;
/**
* 状态
*/
@Schema(description="状态")
private String status;
/**
* 备注
*/
@Schema(description="备注")
private String remark;
/**
* 创建人
*/
@TableField(fill = FieldFill.INSERT)
@Schema(description="创建人")
private String createBy;
/**
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
@Schema(description="创建时间")
private LocalDateTime createTime;
/**
* 更新人
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@Schema(description="更新人")
private String updateBy;
/**
* 更新时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@Schema(description="更新时间")
private LocalDateTime updateTime;
/**
* 删除时间
*/
@TableLogic
@TableField(fill = FieldFill.INSERT)
@Schema(description="删除时间")
private String delFlag;
/**
* tenantId
*/
@Schema(description="tenantId")
private Long tenantId;
}
@@ -0,0 +1,127 @@
package com.bsd.pjcloud.thirdparty.entity.api;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import com.bsd.pjcloud.common.core.util.TenantTable;
import java.time.LocalDateTime;
/**
* 第三方支付日志
*/
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Data
@TenantTable
@TableName("third_pay_log")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "第三方支付日志")
public class ThirdPayLogEntity extends Model<ThirdPayLogEntity> {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "主键")
private Long id;
/**
* 支付发起方类型id
*/
@Schema(description = "支付发起方类型id")
private String paySourceType;
/**
* 支付类型
*/
@Schema(description = "支付类型")
private String bizType;
/**
* 支付类型id
*/
@Schema(description = "支付类型id")
private String bizId;
/**
* api-url
*/
@Schema(description = "api-url")
private String apiUrl;
/**
* header
*/
@Schema(description = "header")
private String header;
/**
* res
*/
@Schema(description = "res")
private String res;
/**
* req
*/
@Schema(description = "req")
private String req;
/**
* 调用错误
*/
@Schema(description = "调用错误")
private String error;
/**
* 耗时(毫秒)
*/
@Schema(description = "耗时(毫秒)")
private String timeConsuming;
/**
* 创建人
*/
@TableField(fill = FieldFill.INSERT)
@Schema(description = "创建人")
private String createBy;
/**
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
@Schema(description = "创建时间")
private LocalDateTime createTime;
/**
* 更新人
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@Schema(description = "更新人")
private String updateBy;
/**
* 更新时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@Schema(description = "更新时间")
private LocalDateTime updateTime;
/**
* 删除时间
*/
@TableLogic
@TableField(fill = FieldFill.INSERT)
@Schema(description = "删除时间")
private String delFlag;
/**
* tenantId
*/
@Schema(description = "tenantId")
private Long tenantId;
}
@@ -3,7 +3,7 @@ package com.bsd.pjcloud.thirdparty.vo.ks;
import lombok.Data;
@Data
public class KsSkuDeleteVo {
public class KsSkuDeleteVo extends KsBaseInnerVo {
/**
* 该sku_id为使用方sku_id
@@ -3,7 +3,7 @@ package com.bsd.pjcloud.thirdparty.vo.ks;
import lombok.Data;
@Data
public class KsSkuEditVo {
public class KsSkuEditVo extends KsBaseInnerVo {
/**
* 该sku_id为使用方sku_id
@@ -3,24 +3,27 @@ package com.bsd.pjcloud.thirdparty.vo.ks;
import lombok.Data;
@Data
public class KsSkuResultVo {
public class KsSkuResultVo extends KsBaseInnerVo {
/**
* 该字段返回结果为字典值,不同code代表不同结果
* <p>
* 0:待审核
* <p>
* 1:审核中
* <p>
* 2:审核通过
* <p>
* 3:审核不通过
*/
private String result;
private Result result;
/**
* 审核不通过时该字段才有值
*/
private String comments;
@Data
public static class Result {
private String code;
private String desc;
}
}
@@ -0,0 +1,18 @@
package com.bsd.pjcloud.thirdparty.vo.lb;
import lombok.Data;
@Data
public class LbH5LoginVo {
private Integer code;
private String msg;
private String data;
public boolean isSuccess() {
return code == 200;
}
}
@@ -0,0 +1,20 @@
package com.bsd.pjcloud.thirdparty.vo.pay;
import com.bsd.pjcloud.thirdparty.constant.pay.ThirdPayVoStatusEnum;
import lombok.Data;
@Data
public class PayBaseVo<T> {
private Integer code;
private String message;
private T data;
public void set(ThirdPayVoStatusEnum type) {
code = type.getType();
message = type.getDescription();
}
}
@@ -0,0 +1,24 @@
package com.bsd.pjcloud.thirdparty.vo.pay;
import lombok.Data;
@Data
public class PayGetWalletInfoVo {
/**
* sm4加密后的手机号
*/
private String signPhone;
/**
* 用户真实姓名
*/
private String name;
/**
* 用户余额(分)
*/
private int balance;
}
@@ -0,0 +1,28 @@
package com.bsd.pjcloud.thirdparty.vo.pay;
import lombok.Data;
@Data
public class PayRefundVo {
/**
* 平台退款id
*/
private String platformRefundId;
/**
* 第三方退款id
*/
private String thirdRefundId;
/**
* 退款金额(分)
*/
private Integer refundPrice;
/**
* 退款时间(yyyy-MM-dd HH:mm:ss格式)
*/
private String refundTime;
}
@@ -0,0 +1,25 @@
package com.bsd.pjcloud.thirdparty.vo.pay;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class PayVo {
/**
* 平台唯一订单号
*/
private String platformOrderId;
/**
* 第三方唯一订单号
*/
private String thirdOrderId;
/**
* 平台支付时间(yyyy-MM-dd HH:mm:ss格式)
*/
private String payTime;
}
@@ -0,0 +1,28 @@
package com.bsd.pjcloud.thirdparty.vo.pay;
import lombok.Data;
@Data
public class PayWalletInfoVo {
/**
* 用户id
*/
private Long userId;
/**
* sm4加密后的手机号
*/
private String signPhone;
/**
* 用户真实姓名
*/
private String name;
/**
* 用户余额(分)
*/
private Integer balance;
}
@@ -0,0 +1,63 @@
package com.bsd.pjcloud.thirdparty.vo.pay;
import lombok.Data;
import java.util.List;
@Data
public class PayWaterVo {
/**
* 用户id
*/
private Long userId;
/**
* 用户真实姓名
*/
private String name;
/**
* sm4加密后的手机号
*/
private String signPhone;
/**
* 平台订单id
*/
private String platformOrderId;
/**
* 第三方订单id
*/
private String thirdOrderId;
/**
* 订单状态
* 1创建订单(未支付)
* 5已经支付
* 10退款
*/
private String orderStatus;
/**
* 订单价格(分)
*/
private Integer orderPrice;
/**
* 支付时间(yyyy-MM-dd HH:mm:ss格式)
*/
private String payTime;
/**
* 总退款价格(分)
*/
private Integer refundTotalPrice;
/**
* 退款列表
*/
private List<PayRefundVo> refundList;
}
@@ -0,0 +1,39 @@
package com.bsd.pjcloud.thirdparty.vo.pay;
import lombok.Data;
@Data
public class RefundVo {
/**
* 平台唯一订单号
*/
private String platformOrderId;
/**
* 平台唯一退款单号
*/
private String platformRefundId;
/**
* 第三方唯一订单号
*/
private String thirdOrderId;
/**
* 第三方唯一退款单号
*/
private String thirdRefundId;
/**
* 退款金额(单位分)
*/
private Integer price;
/**
* 退款时间(yyyy-MM-dd HH:mm:ss格式)
*/
private String refundTime;
}