统计美化

This commit is contained in:
Leo
2025-04-01 20:33:40 +08:00
parent a6682ad2bf
commit 5c72c3da3e
3 changed files with 65 additions and 53 deletions

View File

@@ -5,6 +5,7 @@ import cn.van.business.model.jd.OrderRow;
import cn.van.business.model.jd.ProductOrder;
import cn.van.business.repository.OrderRowRepository;
import cn.van.business.repository.ProductOrderRepository;
import com.alibaba.fastjson2.JSON;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.jd.open.api.sdk.DefaultJdClient;
import com.jd.open.api.sdk.JdClient;
@@ -674,7 +675,7 @@ public class JDUtil {
try {
String skuId = "";
double amount = 0.0;
String owner = "自营";
String owner = "pop";
switch (state.getCurrentStep()) {
case STEP_PRODUCT_LINK:
skuId = parseSkuFromUrl(message);
@@ -698,6 +699,7 @@ public class JDUtil {
//
//logger.debug("商品信息已收集SKU={}, Owner={}, WDIS={}", skuId, owner, productInfo.getBaseBigFieldInfo().getWdis()); // 新增
String productInfo = skuId;
state.getCollectedFields().put("skuId", skuId);
state.setCurrentStep(STEP_AMOUNT);
String prompt = String.format("商品SKU\n %s\n 请输入开通金额(元):", productInfo);
wxUtil.sendTextMessage(fromWxid, prompt, 1, fromWxid);
@@ -739,7 +741,10 @@ public class JDUtil {
logger.debug("礼金参数准备完成SKU={},金额={}元,数量={}Owner={}", state.getCollectedFields().get("skuId"), amount, quantity, state.getCollectedFields().get("owner")); // 新增
String giftKey = createGiftCoupon(skuId, amount, quantity, owner);
String giftKey = createGiftCoupon(state.getCollectedFields().get("skuId"),
Double.parseDouble(state.getCollectedFields().get("amount")),
quantity,
owner);
if (giftKey == null) {
logger.error("用户 {} 礼金创建失败SKU={}, 金额={}, 数量={}, Owner={}", fromWxid, skuId, amount, quantity, owner); // 新增
wxUtil.sendTextMessage(fromWxid, "❌ 礼金创建失败,请检查商品是否符合要求", 1, fromWxid);
@@ -801,58 +806,65 @@ public class JDUtil {
// 新增礼金创建方法
public String createGiftCoupon(String skuId, double amount, int quantity, String owner) throws Exception {
public String createGiftCoupon(String skuId, double amount, int quantity, String owner) throws Exception {
logger.debug("准备创建礼金SKU={}, 金额={}元,数量={}, Owner={}", skuId, amount, quantity, owner);
logger.debug("准备创建礼金SKU={}, 金额={}元,数量={}, Owner={}", skuId, amount, quantity, owner); // 新增
JdClient client = new DefaultJdClient(SERVER_URL, ACCESS_TOKEN, LPF_APP_KEY_WZ, LPF_APP_KEY_WZ);
UnionOpenCouponGiftGetRequest request = new UnionOpenCouponGiftGetRequest();
CreateGiftCouponReq couponReq = new CreateGiftCouponReq();
couponReq.setSkuMaterialId(skuId); // 使用SKU或链接
couponReq.setDiscount(amount);
couponReq.setAmount(quantity);
//owner g=自营p=pop
// 自营的只能设置一天pop的只能设置7天默认为自营
String startTime;
String endTime;
if ("pop".equals(owner)) {
startTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH"));
endTime = LocalDateTime.now().plusDays(6).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH"));
} else {
startTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH"));
endTime = LocalDateTime.now().plusDays(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH"));
}
couponReq.setReceiveStartTime(startTime);
couponReq.setReceiveEndTime(endTime);
couponReq.setEffectiveDays(7);
couponReq.setIsSpu(1);
couponReq.setExpireType(1);
couponReq.setShare(-1);
couponReq.setCouponTitle(skuId);
couponReq.setContentMatch(1);
request.setCouponReq(couponReq);
request.setVersion("1.0");
request.setSignmethod("md5");
request.setTimestamp(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
logger.debug("请求参数:{}", request); // 新增
UnionOpenCouponGiftGetResponse response = client.execute(request);
logger.debug("API响应{}", response); // 新增
if ("200".equals(response.getCode())) {
String giftKey = response.getGetResult().getData().getGiftCouponKey();
logger.debug("礼金创建成功批次ID={}, 返回数据:{}", giftKey, response.getGetResult().getData()); // 新增
return giftKey;
} else {
logger.error("礼金创建失败:错误码={}, 错误信息={}", response.getCode(), response.getMsg()); // 新增
}
// 参数校验
if (skuId == null || amount <= 0 || quantity <= 0) {
logger.error("礼金创建失败参数错误SKU={}, 金额={}元,数量={}", skuId, amount, quantity);
return null;
}
// 设置默认值
owner = (owner != null) ? owner : "自营";
JdClient client = new DefaultJdClient(SERVER_URL, ACCESS_TOKEN, LPF_APP_KEY_WZ, LPF_APP_KEY_WZ);
UnionOpenCouponGiftGetRequest request = new UnionOpenCouponGiftGetRequest();
CreateGiftCouponReq couponReq = new CreateGiftCouponReq();
couponReq.setSkuMaterialId(skuId); // 使用SKU或链接
couponReq.setDiscount(amount);
couponReq.setAmount(quantity);
// 自营的只能设置一天pop的只能设置7天默认为自营
String startTime;
String endTime;
if ("pop".equals(owner)) {
startTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH"));
endTime = LocalDateTime.now().plusDays(6).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH"));
} else {
startTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH"));
endTime = LocalDateTime.now().plusDays(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH"));
}
couponReq.setReceiveStartTime(startTime);
couponReq.setReceiveEndTime(endTime);
couponReq.setEffectiveDays(7);
couponReq.setIsSpu(1);
couponReq.setExpireType(1);
couponReq.setShare(-1);
couponReq.setCouponTitle(skuId);
couponReq.setContentMatch(1);
request.setCouponReq(couponReq);
request.setVersion("1.0");
logger.debug("请求参数:{}", JSON.toJSONString(request));
UnionOpenCouponGiftGetResponse response = client.execute(request);
logger.debug("API响应{}", JSON.toJSONString(response));
if ("200".equals(response.getCode())) {
String giftKey = response.getGetResult().getData().getGiftCouponKey();
logger.debug("礼金创建成功批次ID={}, 返回数据:{}", giftKey, response.getGetResult().getData());
return giftKey;
} else {
logger.error("礼金创建失败:错误码={}, 错误信息={}", response.getCode(), response.getMsg());
}
return null;
}
// 修改activateGiftMoney方法调用真实接口
private boolean activateGiftMoney(String skuId, double amount, int quantity, String owner) {
try {
@@ -893,7 +905,7 @@ public class JDUtil {
}
try {
double amount = Double.parseDouble(input);
return amount > 1 && amount <= 50;
return amount >= 1 && amount <= 50;
} catch (NumberFormatException e) {
return false;
}

View File

@@ -61,5 +61,5 @@ rocketmq:
consume-thread-max: 64 # 消费线程池最大线程数
consume-message-batch-max-size: 64 # 批量消费最大消息数
isRunning:
wx: true
wx: false
jd: false