1
This commit is contained in:
@@ -155,5 +155,26 @@ public class SocialMediaController extends BaseController
|
|||||||
return AjaxResult.error("删除失败: " + e.getMessage());
|
return AjaxResult.error("删除失败: " + e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 闲鱼文案(手动):根据标题+可选型号生成代下单、教你下单文案,不依赖JD接口
|
||||||
|
*/
|
||||||
|
@Log(title = "闲鱼文案(手动)生成", businessType = BusinessType.OTHER)
|
||||||
|
@PostMapping("/xianyu-wenan/generate")
|
||||||
|
public AjaxResult generateXianyuWenan(@RequestBody Map<String, Object> request)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
String title = (String) request.get("title");
|
||||||
|
String remark = (String) request.get("remark");
|
||||||
|
Map<String, Object> result = socialMediaService.generateXianyuWenan(title, remark);
|
||||||
|
if (Boolean.TRUE.equals(result.get("success"))) {
|
||||||
|
return AjaxResult.success(result);
|
||||||
|
}
|
||||||
|
return AjaxResult.error((String) result.get("error"));
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.error("闲鱼文案生成失败", e);
|
||||||
|
return AjaxResult.error("生成失败: " + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -63,5 +63,14 @@ public interface ISocialMediaService
|
|||||||
* 删除提示词模板(恢复默认)
|
* 删除提示词模板(恢复默认)
|
||||||
*/
|
*/
|
||||||
com.ruoyi.common.core.domain.AjaxResult deletePromptTemplate(String key);
|
com.ruoyi.common.core.domain.AjaxResult deletePromptTemplate(String key);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据标题(+可选型号备注)生成闲鱼文案(代下单、教你下单),不依赖JD接口
|
||||||
|
*
|
||||||
|
* @param title 商品标题(必填)
|
||||||
|
* @param remark 型号/备注(可选)
|
||||||
|
* @return 包含代下单、教你下单两种文案的 Map
|
||||||
|
*/
|
||||||
|
Map<String, Object> generateXianyuWenan(String title, String remark);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -52,6 +52,23 @@ public class SocialMediaServiceImpl implements ISocialMediaService
|
|||||||
put("content:both", "通用文案生成提示词模板\n占位符:%s - 商品名称,%s - 价格信息,%s - 关键词信息");
|
put("content:both", "通用文案生成提示词模板\n占位符:%s - 商品名称,%s - 价格信息,%s - 关键词信息");
|
||||||
}};
|
}};
|
||||||
|
|
||||||
|
/** 闲鱼文案-代下单(一键代下)固定正文 */
|
||||||
|
private static final String WENAN_ZCXS =
|
||||||
|
"\n\n 购买后,两小时内出库,物流会电话联系您,同时生成京东官方安装单。送装一体,无需担心。\n\n\n"
|
||||||
|
+ " 1:全新正品,原包装未拆封(京东商城代购,就近直发)\n"
|
||||||
|
+ " 2:可提供下单运单号与电子发票(发票在收到货后找我要)。\n"
|
||||||
|
+ " 3:收货时查看是否有质量或运损问题。可拍照让京东免费申请换新。\n"
|
||||||
|
+ " 4:价格有浮动,不支持补差价,谢谢理解。\n"
|
||||||
|
+ " 5:全国联保,全国统一安装标准。支持官方 400,服务号查询,假一赔十。\n ";
|
||||||
|
/** 闲鱼文案-教你下单固定正文(含“信息更新日期:”占位,生成时替换为当前日期) */
|
||||||
|
private static final String WENAN_FANAN_BX = "本人提供免费指导下单服务,一台也是团购价,细心指导\n" + "\n"
|
||||||
|
+ "【质量】官旗下单,包正的\n" + "【物流】您自己账户可跟踪,24小时发货\n" + "【售后】您自己账户直接联系,无忧售后\n"
|
||||||
|
+ "【安装】专业人员安装,全程无需您操心\n" + "【价格】标价就是到手价,骑共享单车去酒吧,该省省该花花\n"
|
||||||
|
+ "【服务】手把手教您下单,有问题随时咨询\n" + "【体验】所有服务都是官旗提供,价格有内部渠道优惠,同品质更优惠!\n" + "\n"
|
||||||
|
+ "信息更新日期:\n" + "\n" + "捡漏价格不定时有变动,优惠不等人,发「省份+型号」免费咨询当日最低价!";
|
||||||
|
/** 标题/型号清洗:去掉营销敏感词 */
|
||||||
|
private static final String TITLE_CLEAN_REGEX = "以旧|政府|换新|领取|国家|补贴|15%|20%|国补|立减|【|】";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 提取商品标题关键词
|
* 提取商品标题关键词
|
||||||
*/
|
*/
|
||||||
@@ -418,5 +435,40 @@ public class SocialMediaServiceImpl implements ISocialMediaService
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据标题(+可选型号备注)生成闲鱼文案(代下单、教你下单),不依赖JD接口
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Map<String, Object> generateXianyuWenan(String title, String remark) {
|
||||||
|
Map<String, Object> result = new HashMap<>();
|
||||||
|
if (StringUtils.isEmpty(title) || StringUtils.isEmpty(title.trim())) {
|
||||||
|
result.put("success", false);
|
||||||
|
result.put("error", "商品标题不能为空");
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
String cleanTitle = cleanTitleOrRemark(title.trim());
|
||||||
|
String cleanRemark = StringUtils.isNotEmpty(remark) ? cleanTitleOrRemark(remark.trim()) : "";
|
||||||
|
String displayTitle = cleanTitle + cleanRemark;
|
||||||
|
|
||||||
|
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");
|
||||||
|
String format = sdf.format(new java.util.Date());
|
||||||
|
String wenanJiaonixiadan = WENAN_FANAN_BX.replace("信息更新日期:", "信息更新日期:" + format);
|
||||||
|
|
||||||
|
result.put("success", true);
|
||||||
|
result.put("daixiadan", "(一键代下) " + displayTitle + "\n" + WENAN_ZCXS);
|
||||||
|
result.put("jiaonixiadan", "【教你下单】 " + displayTitle + "\n" + wenanJiaonixiadan);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 清洗标题/型号中的敏感词
|
||||||
|
*/
|
||||||
|
private static String cleanTitleOrRemark(String text) {
|
||||||
|
if (text == null) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
return text.replaceAll(TITLE_CLEAN_REGEX, "");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user