Merge branch 'refs/heads/dev/3.1_release_merge' into dev/dev_xp

This commit is contained in:
2025-11-25 14:25:59 +08:00
11 changed files with 220 additions and 47 deletions

View File

@@ -0,0 +1,9 @@
package com.ai.da.common.constant;
public class AffiliateConstants {
public static final String STATUS_ACTIVE = "Active";
public static final String STATUS_INACTIVE = "Inactive";
public static final String STATUS_DELETE = "Delete";
public static final Integer DELETED = 1;
public static final Integer NOT_DELETED = 0;
}

View File

@@ -31,7 +31,7 @@ public class AccountTask {
accountService.refreshCreditsMonthly(); accountService.refreshCreditsMonthly();
} }
@Scheduled(cron = "0 */5 * * * *") // Run every 5 minutes // @Scheduled(cron = "0 */5 * * * *") // Run every 5 minutes
public void getPaidUser() { public void getPaidUser() {
// 获取code-create 表中 指定日期之后 订单状态为wc-processing的订单 // 获取code-create 表中 指定日期之后 订单状态为wc-processing的订单
accountService.extendValidityForCC(); accountService.extendValidityForCC();

View File

@@ -109,7 +109,7 @@ public class PaymentTask {
affiliateService.syncLinkViewCountToDB(); affiliateService.syncLinkViewCountToDB();
} }
@Scheduled(cron = "0 0 8 28-31 * ?") // @Scheduled(cron = "0 0 8 28-31 * ?")
public void commissionSummaryReminder(){ public void commissionSummaryReminder(){
// 每个月末的最后一天的早上八点执行 // 每个月末的最后一天的早上八点执行
LocalDate today = LocalDate.now(); LocalDate today = LocalDate.now();

View File

@@ -766,7 +766,7 @@ public class SendEmailUtil {
try { try {
String merchantEmail = "kimwong@code-create.com.hk"; String merchantEmail = "kimwong@code-create.com.hk";
String developer = "xupei3360@163.com"; String developer = "xupei3360@163.com";
String[] receiverEmail = {merchantEmail, developer}; String[] receiverEmail = {/*merchantEmail,*/ developer};
Credential cred = new Credential(SECRET_ID, SECRET_KEy); Credential cred = new Credential(SECRET_ID, SECRET_KEy);
// 实例化一个http选项可选的没有特殊需求可以跳过 // 实例化一个http选项可选的没有特殊需求可以跳过
HttpProfile httpProfile = new HttpProfile(); HttpProfile httpProfile = new HttpProfile();
@@ -965,7 +965,7 @@ public class SendEmailUtil {
req.setFromEmailAddress(SEND_ADDRESS); req.setFromEmailAddress(SEND_ADDRESS);
String merchantEmail = "kimwong@code-create.com.hk"; String merchantEmail = "kimwong@code-create.com.hk";
String developerEmail = "xupei@code-create.com.hk"; String developerEmail = "xupei@code-create.com.hk";
req.setDestination(new String[]{merchantEmail, developerEmail}); req.setDestination(new String[]{/*merchantEmail,*/ developerEmail});
Template template = new Template(); Template template = new Template();
req.setSubject("New Credit Purchase Order"); req.setSubject("New Credit Purchase Order");
template.setTemplateID(CREDITS_PURCHASE_MERCHANT); template.setTemplateID(CREDITS_PURCHASE_MERCHANT);

View File

@@ -19,6 +19,7 @@ public class DesignItemDetailPrintServiceImpl extends ServiceImpl<DesignItemDeta
QueryWrapper<DesignItemDetailPrint> queryWrapper = new QueryWrapper<>(); QueryWrapper<DesignItemDetailPrint> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("design_item_detail_id", designItemDetailId); queryWrapper.eq("design_item_detail_id", designItemDetailId);
queryWrapper.eq("print_type", printType); queryWrapper.eq("print_type", printType);
queryWrapper.eq("is_deleted", 0);
return baseMapper.selectList(queryWrapper); return baseMapper.selectList(queryWrapper);
} }

View File

@@ -65,6 +65,7 @@ public class DesignItemDetailServiceImpl extends ServiceImpl<DesignItemDetailMap
public List<DesignItemDetail> selectByDesignItemId(Long designItemId) { public List<DesignItemDetail> selectByDesignItemId(Long designItemId) {
QueryWrapper<DesignItemDetail> queryWrapper = new QueryWrapper<>(); QueryWrapper<DesignItemDetail> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("design_item_id", designItemId); queryWrapper.eq("design_item_id", designItemId);
queryWrapper.eq("is_deleted", 0);
return designItemDetailMapper.selectList(queryWrapper); return designItemDetailMapper.selectList(queryWrapper);
} }

View File

@@ -23,6 +23,7 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.databind.SerializationFeature;
@@ -288,24 +289,50 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
response.setDesignItemUrl(url); response.setDesignItemUrl(url);
//更新item //更新item
updateById(designItem); updateById(designItem);
//删除itemDetail
designItemDetailService.deleteByDesignItemId(designItemId); // 查询现有的记录,用于 saveOrUpdate
List<DesignItemDetail> existingDetails = designItemDetailService.selectByDesignItemId(designItemId);
// 创建 Map以 priority 为 key方便快速查找
Map<Integer, DesignItemDetail> existingDetailMap = existingDetails.stream()
.collect(Collectors.toMap(DesignItemDetail::getPriority, detail -> detail, (old, newVal) -> old));
// 收集新 detail 的 priority用于后续删除不存在的旧记录
Set<Integer> newDetailPriorities = new HashSet<>();
List<DesignItemDetail> designItemDetails = Lists.newArrayList(); List<DesignItemDetail> designItemDetails = Lists.newArrayList();
pythonObjects.getObjects().get(0).getItems().forEach(detail -> { pythonObjects.getObjects().get(0).getItems().forEach(detail -> {
if (null == detail) { if (null == detail) {
return; return;
} }
DesignItemDetail designItemDetail = CopyUtil.copyObject(detail, DesignItemDetail.class); Integer priority = SysFileLevel2TypeEnum.BODY.getRealName().equals(detail.getType()) ? 0 : detail.getPriority();
newDetailPriorities.add(priority);
DesignItemDetail designItemDetail;
// 如果存在相同 priority 的记录,则更新;否则创建新记录
if (existingDetailMap.containsKey(priority)) {
// 更新现有记录
designItemDetail = existingDetailMap.get(priority);
designItemDetail.setUpdateDate(DateUtil.getByTimeZone(timeZone));
} else {
// 创建新记录
designItemDetail = new DesignItemDetail();
designItemDetail.setCreateDate(DateUtil.getByTimeZone(timeZone));
}
// 设置/更新字段
designItemDetail.setAccountId(userInfo.getId()); designItemDetail.setAccountId(userInfo.getId());
designItemDetail.setDesignId(designId); designItemDetail.setDesignId(designId);
designItemDetail.setDesignItemId(designItemId); designItemDetail.setDesignItemId(designItemId);
designItemDetail.setCollectionElementId(detail.getElementId()); designItemDetail.setCollectionElementId(detail.getElementId());
designItemDetail.setCreateDate(DateUtil.getByTimeZone(timeZone)); designItemDetail.setType(detail.getType());
designItemDetail.setPriority(priority);
if (SysFileLevel2TypeEnum.BODY.getRealName().equals(detail.getType())) { if (SysFileLevel2TypeEnum.BODY.getRealName().equals(detail.getType())) {
designItemDetail.setPath(detail.getBody_path()); designItemDetail.setPath(detail.getBody_path());
//BODY不关联businessId //BODY不关联businessId
designItemDetail.setBusinessId(0L); designItemDetail.setBusinessId(0L);
} else {
// 非BODY类型使用path字段
designItemDetail.setPath(detail.getPath());
} }
designItemDetail.setIconPath(detail.getIcon()); designItemDetail.setIconPath(detail.getIcon());
// todo // todo
@@ -314,7 +341,20 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
designItemDetail.setPrintJson(JSON.toJSONString(printObject)); designItemDetail.setPrintJson(JSON.toJSONString(printObject));
designItemDetails.add(designItemDetail); designItemDetails.add(designItemDetail);
}); });
designItemDetailService.saveBatch(designItemDetails);
// 逻辑删除不在新列表中的旧记录
existingDetails.forEach(existingDetail -> {
if (!newDetailPriorities.contains(existingDetail.getPriority())) {
// 该记录不在新列表中,需要逻辑删除
UpdateWrapper<DesignItemDetail> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("id", existingDetail.getId());
updateWrapper.set("is_deleted", (byte) 1);
updateWrapper.set("update_date", DateUtil.getByTimeZone(timeZone));
designItemDetailService.update(null, updateWrapper);
}
});
designItemDetailService.saveOrUpdateBatch(designItemDetails);
//封装item信息 //封装item信息
List<DesignCollectionItemVO> designCollectionItems = CopyUtil.copyList(getByDesignId(designId) List<DesignCollectionItemVO> designCollectionItems = CopyUtil.copyList(getByDesignId(designId)
, DesignCollectionItemVO.class, (o, d) -> { , DesignCollectionItemVO.class, (o, d) -> {
@@ -343,26 +383,51 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
// 1、更新designItem // 1、更新designItem
// updateById(designItem); // updateById(designItem);
updateDesignItem(designItem); updateDesignItem(designItem);
// 2、删除designItemDetail(逻辑删除)
designItemDetailService.deleteByDesignItemId(designItemId); // 2、查询现有的记录用于 saveOrUpdate
List<DesignItemDetail> existingDetails = designItemDetailService.selectByDesignItemId(designItemId);
// 创建 Map以 priority 为 key方便快速查找
Map<Integer, DesignItemDetail> existingDetailMap = existingDetails.stream()
.collect(Collectors.toMap(DesignItemDetail::getPriority, detail -> detail, (old, newVal) -> old));
// 收集新 detail 的 priority用于后续删除不存在的旧记录
Set<Integer> newDetailPriorities = new HashSet<>();
List<DesignItemDetail> designItemDetails = Lists.newArrayList(); List<DesignItemDetail> designItemDetails = Lists.newArrayList();
// 3、保存新的designItemDetail // 3、保存新的designItemDetail(使用 saveOrUpdate 方式)
pythonObjects.getObjects().get(0).getItems().forEach(detail -> { pythonObjects.getObjects().get(0).getItems().forEach(detail -> {
if (null == detail) { if (null == detail) {
return; return;
} }
DesignItemDetail designItemDetail = CopyUtil.copyObject(detail, DesignItemDetail.class); Integer priority = SysFileLevel2TypeEnum.BODY.getRealName().equals(detail.getType()) ? 0 : detail.getPriority();
newDetailPriorities.add(priority);
DesignItemDetail designItemDetail;
// 如果存在相同 priority 的记录,则更新;否则创建新记录
if (existingDetailMap.containsKey(priority)) {
// 更新现有记录
designItemDetail = existingDetailMap.get(priority);
designItemDetail.setUpdateDate(DateUtil.getByTimeZone(timeZone));
} else {
// 创建新记录
designItemDetail = new DesignItemDetail();
designItemDetail.setCreateDate(DateUtil.getByTimeZone(timeZone));
}
// 设置/更新字段
designItemDetail.setAccountId(userId); designItemDetail.setAccountId(userId);
designItemDetail.setDesignId(designId); designItemDetail.setDesignId(designId);
designItemDetail.setDesignItemId(designItemId); designItemDetail.setDesignItemId(designItemId);
designItemDetail.setCollectionElementId(detail.getElementId()); designItemDetail.setCollectionElementId(detail.getElementId());
designItemDetail.setPriority(detail.getPriority()); designItemDetail.setType(detail.getType());
designItemDetail.setCreateDate(DateUtil.getByTimeZone(timeZone)); designItemDetail.setPriority(priority);
if (SysFileLevel2TypeEnum.BODY.getRealName().equals(detail.getType())) { if (SysFileLevel2TypeEnum.BODY.getRealName().equals(detail.getType())) {
designItemDetail.setPath(detail.getBody_path()); designItemDetail.setPath(detail.getBody_path());
//BODY不关联businessId //BODY不关联businessId
designItemDetail.setBusinessId(0L); designItemDetail.setBusinessId(0L);
designItemDetail.setPriority(0); } else {
// 非BODY类型使用path字段
designItemDetail.setPath(detail.getPath());
} }
designItemDetail.setIconPath(detail.getIcon()); designItemDetail.setIconPath(detail.getIcon());
// designItemDetail.setUndividedLayer(priorityAndUndividedLayer.get(detail.getType().toLowerCase())); // designItemDetail.setUndividedLayer(priorityAndUndividedLayer.get(detail.getType().toLowerCase()));
@@ -374,12 +439,25 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
designItemDetail.setPartialDesign(Objects.isNull(detail.getPrint()) ? null : detail.getPrint().getPartial()); designItemDetail.setPartialDesign(Objects.isNull(detail.getPrint()) ? null : detail.getPrint().getPartial());
designItemDetails.add(designItemDetail); designItemDetails.add(designItemDetail);
}); });
// businessId 来自t_sys_file或者t_library
designItemDetailService.saveBatch(designItemDetails);
// 4、保存印花信息到designItemDetailPrint // 逻辑删除不在新列表中的旧记录
existingDetails.forEach(existingDetail -> {
if (!newDetailPriorities.contains(existingDetail.getPriority())) {
// 该记录不在新列表中,需要逻辑删除
UpdateWrapper<DesignItemDetail> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("id", existingDetail.getId());
updateWrapper.set("is_deleted", (byte) 1);
updateWrapper.set("update_date", DateUtil.getByTimeZone(timeZone));
designItemDetailService.update(null, updateWrapper);
}
});
// businessId 来自t_sys_file或者t_library
designItemDetailService.saveOrUpdateBatch(designItemDetails);
// 4、保存印花信息到designItemDetailPrint使用 saveOrUpdate 方式)
List<DesignItemDetailPrint> designItemDetailPrints = setDesignItemDetailPrintList(designItemDetails, designSingleItemDTOList, timeZone); List<DesignItemDetailPrint> designItemDetailPrints = setDesignItemDetailPrintList(designItemDetails, designSingleItemDTOList, timeZone);
designItemDetailPrintService.saveBatch(designItemDetailPrints); designItemDetailPrintService.saveOrUpdateBatch(designItemDetailPrints);
// 5、覆盖designPythonOutfit表中的模特全身图 // 5、覆盖designPythonOutfit表中的模特全身图
TDesignPythonOutfit designPythonOutfit = new TDesignPythonOutfit(); TDesignPythonOutfit designPythonOutfit = new TDesignPythonOutfit();
@@ -388,10 +466,16 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
designPythonOutfit.setUpdateDate(LocalDateTime.now(ZoneId.of(timeZone))); designPythonOutfit.setUpdateDate(LocalDateTime.now(ZoneId.of(timeZone)));
designPythonOutfitService.updateById(designPythonOutfit); designPythonOutfitService.updateById(designPythonOutfit);
// 6、删除designPythonOutfitDetail表中原始的图层信息逻辑删除 // 6、查询现有的图层信息,用于 saveOrUpdate
designPythonOutfitDetailService.deleteByDesignPythonOutfitIdLogical(designPythonOutfit.getId()); List<TDesignPythonOutfitDetail> existingLayers = designPythonOutfitDetailService.getDetailByDesignPythonOutfitId(designPythonOutfit.getId());
// 创建 Map以 priority 为 key方便快速查找
Map<Integer, TDesignPythonOutfitDetail> existingLayerMap = existingLayers.stream()
.collect(Collectors.toMap(TDesignPythonOutfitDetail::getPriority, layer -> layer, (old, newVal) -> old));
// 7、将新生成的图层信息存入designPythonOutfitDetail表 // 收集新 layer 的 priority用于后续删除不存在的旧记录
Set<Integer> newLayerPriorities = new HashSet<>();
// 7、将新生成的图层信息存入designPythonOutfitDetail表使用 saveOrUpdate 方式)
JSONArray layers = outfit.getJSONArray("layers"); JSONArray layers = outfit.getJSONArray("layers");
Map<Integer, List<Long>> priorityOffset = null; Map<Integer, List<Long>> priorityOffset = null;
@@ -399,9 +483,55 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
priorityOffset = designSingleItemDTOList.stream() priorityOffset = designSingleItemDTOList.stream()
.collect(Collectors.toMap(DesignSingleItemDTO::getPriority, DesignSingleItemDTO::getOffset)); .collect(Collectors.toMap(DesignSingleItemDTO::getPriority, DesignSingleItemDTO::getOffset));
} }
List<TDesignPythonOutfitDetail> list = setTDesignPythonOutfitDetailList(layers, designId, designPythonOutfit.getId(), userId, priorityOffset); List<TDesignPythonOutfitDetail> list = new ArrayList<>();
for (int i = 0; i < layers.size(); i++) {
JSONObject jsonObject = layers.getJSONObject(i);
Integer priority = (Integer) jsonObject.get("priority");
newLayerPriorities.add(Math.abs(priority));
designPythonOutfitDetailService.saveBatch(list); TDesignPythonOutfitDetail designPythonOutfitDetail;
// 如果存在相同 priority 的记录,则更新;否则创建新记录
if (existingLayerMap.containsKey(Math.abs(priority))) {
// 更新现有记录
designPythonOutfitDetail = existingLayerMap.get(Math.abs(priority));
designPythonOutfitDetail.setUpdateDate(LocalDateTime.now(ZoneId.of(timeZone)));
} else {
// 创建新记录
designPythonOutfitDetail = new TDesignPythonOutfitDetail();
designPythonOutfitDetail.setCreateDate(LocalDateTime.now(ZoneId.of(timeZone)));
}
// 设置/更新字段
designPythonOutfitDetail.setDesignId(designId);
designPythonOutfitDetail.setDesignPythonOutfitId(designPythonOutfit.getId());
designPythonOutfitDetail.setPosition(jsonObject.getString("position"));
designPythonOutfitDetail.setImageUrl(jsonObject.getString("image_url"));
designPythonOutfitDetail.setImageSize(jsonObject.getString("image_size"));
designPythonOutfitDetail.setImageCategory(jsonObject.getString("image_category"));
designPythonOutfitDetail.setMaskUrl(jsonObject.getString("mask_url"));
designPythonOutfitDetail.setScale(Objects.isNull(jsonObject.getString("resize_scale")) ? "1.0" : jsonObject.getString("resize_scale"));
designPythonOutfitDetail.setUserId(userId);
if (priorityOffset != null && !priorityOffset.isEmpty()){
designPythonOutfitDetail.setOffset(String.valueOf(priorityOffset.get(Math.abs(priority))));
}
designPythonOutfitDetail.setPriority(priority);
list.add(designPythonOutfitDetail);
}
// 逻辑删除不在新列表中的旧记录
existingLayers.forEach(existingLayer -> {
if (!newLayerPriorities.contains(Math.abs(existingLayer.getPriority()))) {
// 该记录不在新列表中,需要逻辑删除
UpdateWrapper<TDesignPythonOutfitDetail> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("id", existingLayer.getId());
updateWrapper.set("is_deleted", 1);
updateWrapper.set("update_date", LocalDateTime.now(ZoneId.of(timeZone)));
designPythonOutfitDetailService.update(null, updateWrapper);
}
});
designPythonOutfitDetailService.saveOrUpdateBatch(list);
return list; return list;
} }
@@ -923,7 +1053,6 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
Map<Integer, Long> designItemDetailTypeIdMap, Map<Integer, Long> designItemDetailTypeIdMap,
String timeZone) { String timeZone) {
// todo 这边这样做对吗
DesignSinglePrintDTO printObject; DesignSinglePrintDTO printObject;
if (printType.equals("print")) { if (printType.equals("print")) {
printObject = designSingleItem.getPrintObject(); printObject = designSingleItem.getPrintObject();
@@ -931,32 +1060,64 @@ public class DesignItemServiceImpl extends ServiceImpl<DesignItemMapper, DesignI
printObject = designSingleItem.getTrims(); printObject = designSingleItem.getTrims();
} }
Long designItemDetailId = designItemDetailTypeIdMap.get(designSingleItem.getPriority());
// 查询现有的记录,用于 saveOrUpdate
List<DesignItemDetailPrint> existingPrints = designItemDetailPrintService.getByDesignItemDetailId(designItemDetailId, printType);
// 创建 Map以 priority 为 key方便快速查找
Map<Integer, DesignItemDetailPrint> existingPrintMap = existingPrints.stream()
.collect(Collectors.toMap(DesignItemDetailPrint::getPriority, print -> print, (old, newVal) -> old));
// 收集新 print 的 priority用于后续删除不存在的旧记录
Set<Integer> newPrintPriorities = new HashSet<>();
if (!CollectionUtil.isEmpty(printObject.getPrints())) { if (!CollectionUtil.isEmpty(printObject.getPrints())) {
// 2、有印花添加到list // 处理新的印花列表
printObject.getPrints().forEach(print -> { printObject.getPrints().forEach(print -> {
// 2.1 判断是否第一次添加印花,是:直接添加
List<DesignItemDetailPrint> designItemDetailPrintList = designItemDetailPrintService.getByDesignItemDetailId(designItemDetailTypeIdMap.get(designSingleItem.getPriority()), printType);
if (!designItemDetailPrintList.isEmpty()) {
// 2.2 否:先删除原始印花,再添加新印花信息
designItemDetailPrintService.deleteByDesignItemDetailId(designItemDetailTypeIdMap.get(designSingleItem.getPriority()));
}
setUriToMinioPath(print); setUriToMinioPath(print);
DesignItemDetailPrint designItemDetailPrint = new DesignItemDetailPrint(); Integer priority = print.getPriority();
designItemDetailPrint.setDesignItemDetailId(designItemDetailTypeIdMap.get(designSingleItem.getPriority())); newPrintPriorities.add(priority);
DesignItemDetailPrint designItemDetailPrint;
// 如果存在相同 priority 的记录,则更新;否则创建新记录
if (existingPrintMap.containsKey(priority)) {
// 更新现有记录
designItemDetailPrint = existingPrintMap.get(priority);
designItemDetailPrint.setUpdateDate(LocalDateTime.now(ZoneId.of(timeZone)));
} else {
// 创建新记录
designItemDetailPrint = new DesignItemDetailPrint();
designItemDetailPrint.setCreateDate(LocalDateTime.now(ZoneId.of(timeZone)));
}
// 设置/更新字段
designItemDetailPrint.setDesignItemDetailId(designItemDetailId);
designItemDetailPrint.setPrintType(printType); designItemDetailPrint.setPrintType(printType);
designItemDetailPrint.setLevel2Type(print.getLevel2Type()); designItemDetailPrint.setLevel2Type(print.getLevel2Type());
designItemDetailPrint.setPath(print.getMinIOPath()); designItemDetailPrint.setPath(print.getMinIOPath());
designItemDetailPrint.setScale(print.getScale().toString()); designItemDetailPrint.setScale(print.getScale().toString());
designItemDetailPrint.setSingleOrOverall(printType.equals("print") ? print.getIfSingle() ? "single" : "overall" : "single"); designItemDetailPrint.setSingleOrOverall(printType.equals("print") ? print.getIfSingle() ? "single" : "overall" : "single");
designItemDetailPrint.setCreateDate(LocalDateTime.now(ZoneId.of(timeZone)));
// single、overall模式下都有position、angle和priority // single、overall模式下都有position、angle和priority
designItemDetailPrint.setPosition(print.getLocation().toString()); designItemDetailPrint.setPosition(print.getLocation().toString());
designItemDetailPrint.setAngle(print.getAngle()); designItemDetailPrint.setAngle(print.getAngle());
designItemDetailPrint.setPriority(print.getPriority()); designItemDetailPrint.setPriority(priority);
designItemDetailPrints.add(designItemDetailPrint); designItemDetailPrints.add(designItemDetailPrint);
}); });
} }
// 逻辑删除不在新列表中的旧记录
existingPrints.forEach(existingPrint -> {
if (!newPrintPriorities.contains(existingPrint.getPriority())) {
// 该记录不在新列表中,需要逻辑删除
UpdateWrapper<DesignItemDetailPrint> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("id", existingPrint.getId());
updateWrapper.set("is_deleted", (byte) 1);
updateWrapper.set("update_date", LocalDateTime.now(ZoneId.of(timeZone)));
designItemDetailPrintService.update(null, updateWrapper);
}
});
} }
// 对印花类型为Generate的图片路径进行特殊处理 // 对印花类型为Generate的图片路径进行特殊处理

View File

@@ -586,7 +586,7 @@ public class EmailServiceImpl implements EmailService {
try { try {
String merchantEmail = "kimwong@code-create.com.hk"; String merchantEmail = "kimwong@code-create.com.hk";
String developer = "xupei3360@163.com"; String developer = "xupei3360@163.com";
List<String> merchantReceiver = Arrays.asList(merchantEmail, developer); List<String> merchantReceiver = Arrays.asList(/*merchantEmail,*/ developer);
String merchantSubject = null; String merchantSubject = null;
String merchantTemplate = null; String merchantTemplate = null;
@@ -730,7 +730,7 @@ public class EmailServiceImpl implements EmailService {
jsonObject.put("quantity", quantity); jsonObject.put("quantity", quantity);
jsonObject.put("totalFee", amount); jsonObject.put("totalFee", amount);
sendEmail(Arrays.asList(merchantEmail,developerEmail), jsonObject, CREDITS_PURCHASE_MERCHANT, "New Credit Purchase Order", null, null); sendEmail(Arrays.asList(/*merchantEmail,*/ developerEmail), jsonObject, CREDITS_PURCHASE_MERCHANT, "New Credit Purchase Order", null, null);
} }
private final static String COMMON_EXCEPTION_REMINDER = "135279_common-exception-reminder.html"; private final static String COMMON_EXCEPTION_REMINDER = "135279_common-exception-reminder.html";

View File

@@ -45,6 +45,7 @@ public class TDesignPythonOutfitDetailServiceImpl extends ServiceImpl<TDesignPyt
public List<TDesignPythonOutfitDetail> getDetailByDesignPythonOutfitId(Long designPythonOutfitId) { public List<TDesignPythonOutfitDetail> getDetailByDesignPythonOutfitId(Long designPythonOutfitId) {
QueryWrapper<TDesignPythonOutfitDetail> queryWrapper = new QueryWrapper<>(); QueryWrapper<TDesignPythonOutfitDetail> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("design_python_outfit_id", designPythonOutfitId); queryWrapper.eq("design_python_outfit_id", designPythonOutfitId);
queryWrapper.eq("is_deleted", 0);
return baseMapper.selectList(queryWrapper); return baseMapper.selectList(queryWrapper);
} }

View File

@@ -2,7 +2,7 @@
#spring.profiles.active=test #spring.profiles.active=test
#<23><><EFBFBD><EFBFBD>application-prod<6F>ļ<EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) #<23><><EFBFBD><EFBFBD>application-prod<6F>ļ<EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
spring.profiles.active=prod #spring.profiles.active=prod
#<23><><EFBFBD><EFBFBD>application-dev<65>ļ<EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) #<23><><EFBFBD><EFBFBD>application-dev<65>ļ<EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
#spring.profiles.active=dev spring.profiles.active=dev

View File

@@ -27,9 +27,9 @@ paypal.webhook_id=1D107312EX592781K
##### Stripe ##### Stripe
# developer # developer
#stripe.private-key=sk_test_51P4ZZL02n1TEydyN8qQHjOA9imsFU7Oxs2HMHGy2urHnnQgSHnZuu5vVP6pKhEACwUpsKNyrbZpdcg5TJWJLRHcY008dEO1fn2 stripe.private-key=sk_test_51P4ZZL02n1TEydyN8qQHjOA9imsFU7Oxs2HMHGy2urHnnQgSHnZuu5vVP6pKhEACwUpsKNyrbZpdcg5TJWJLRHcY008dEO1fn2
# dev 端点 # dev 端点
#stripe.webhook-sign-secret=whsec_e0dBiJngx6qqgJj6yPyJ2A9ouh1Cjv5w stripe.webhook-sign-secret=whsec_e0dBiJngx6qqgJj6yPyJ2A9ouh1Cjv5w
# local 端点 # local 端点
#stripe.webhook-sign-secret=whsec_TJcMSnAkh4uktrNY1M6Iy8XaVze4Rzqm #stripe.webhook-sign-secret=whsec_TJcMSnAkh4uktrNY1M6Iy8XaVze4Rzqm
@@ -43,8 +43,8 @@ paypal.webhook_id=1D107312EX592781K
#stripe.webhook-sign-secret=whsec_pX0pPMQm85PaUSWnFMEzoccb3MGNkjoL #stripe.webhook-sign-secret=whsec_pX0pPMQm85PaUSWnFMEzoccb3MGNkjoL
# kim - live # kim - live
stripe.private-key=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 #stripe.private-key=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
# prod 端点 # prod 端点
stripe.webhook-sign-secret=whsec_hhGDgdelQRHSg4LmChtQe41crj41eb11 #stripe.webhook-sign-secret=whsec_hhGDgdelQRHSg4LmChtQe41crj41eb11
# dev 端点 # dev 端点
#stripe.webhook-sign-secret=whsec_cFUtjUOo8wnrIKZmt4GNvt7ZY1bOfrYr #stripe.webhook-sign-secret=whsec_cFUtjUOo8wnrIKZmt4GNvt7ZY1bOfrYr