修改商城的接口url的前缀
This commit is contained in:
parent
cf2ea3a12f
commit
21a007305e
@ -17,7 +17,7 @@ import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RequestMapping("/app/user/category")
|
||||
@RequestMapping("/app/category")
|
||||
@RestController
|
||||
@Tag(name = "APP - 商品类型")
|
||||
@Validated
|
||||
|
||||
@ -25,7 +25,7 @@ import java.util.List;
|
||||
* @Data: 2025-06-16 20:50
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/app/user/collect")
|
||||
@RequestMapping("/app/collect")
|
||||
@Tag(name = "APP - 商品收藏管理")
|
||||
@Validated
|
||||
@SaCheckLogin(type = StpUtil.TYPE)
|
||||
|
||||
@ -28,7 +28,7 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@RequestMapping("/app/user/goods")
|
||||
@RequestMapping("/app/goods")
|
||||
@RestController
|
||||
@Tag(name = "APP - 商品")
|
||||
@Validated
|
||||
|
||||
@ -33,7 +33,7 @@ import java.util.List;
|
||||
@DecryptionAnnotation
|
||||
@EncryptionAnnotation
|
||||
@RestController
|
||||
@RequestMapping("/app/user/address")
|
||||
@RequestMapping("/app/address")
|
||||
@Tag(name = "APP - 收货地址管理")
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
|
||||
@ -25,7 +25,7 @@ import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/app/user/after-sale")
|
||||
@RequestMapping("/app/after-sale")
|
||||
@Tag(name = "APP - 交易售后")
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
|
||||
@ -22,7 +22,7 @@ import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@RequestMapping("/app/user/mall/cart")
|
||||
@RequestMapping("/app/mall/cart")
|
||||
@RestController
|
||||
@Tag(name = "APP - 购物车")
|
||||
@Validated
|
||||
|
||||
@ -32,7 +32,7 @@ import java.util.List;
|
||||
@Tag(name = "APP - 物流")
|
||||
@Validated
|
||||
@RestController
|
||||
@RequestMapping("/app/user/logistics")
|
||||
@RequestMapping("/app/logistics")
|
||||
@RequiredArgsConstructor
|
||||
public class AppLogisticsController {
|
||||
|
||||
|
||||
@ -45,7 +45,7 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
@Tag(name = "APP - 用户订单")
|
||||
@Validated
|
||||
@RestController
|
||||
@RequestMapping("/app/user/order")
|
||||
@RequestMapping("/app/order")
|
||||
@RequiredArgsConstructor
|
||||
@DecryptionAnnotation
|
||||
@EncryptionAnnotation
|
||||
|
||||
@ -2,6 +2,7 @@ package com.seer.teach.mp.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.seer.teach.mp.entity.MpActivityFormFieldEntity;
|
||||
import org.apache.ibatis.annotations.Delete;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
@ -15,4 +16,6 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
@Mapper
|
||||
public interface MpActivityFormFieldMapper extends BaseMapper<MpActivityFormFieldEntity> {
|
||||
|
||||
@Delete("DELETE FROM mp_activity_form_field WHERE form_id = #{formId}")
|
||||
int deleteByFormId(Integer formId);
|
||||
}
|
||||
@ -1,5 +1,7 @@
|
||||
package com.seer.teach.mp.admin.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.seer.teach.common.constants.CommonConstant;
|
||||
import com.seer.teach.common.utils.CommonUtils;
|
||||
import com.seer.teach.mp.admin.controller.req.ActivityFormReq;
|
||||
@ -7,13 +9,19 @@ import com.seer.teach.mp.admin.controller.resp.AdminActivityFormResp;
|
||||
import com.seer.teach.mp.admin.convert.AdminActivityFormConvert;
|
||||
import com.seer.teach.mp.admin.service.IAdminActivityFormService;
|
||||
import com.seer.teach.mp.entity.MpActivityFormEntity;
|
||||
import com.seer.teach.mp.entity.MpActivityFormFieldEntity;
|
||||
import com.seer.teach.mp.entity.MpActivityFormRelationEntity;
|
||||
import com.seer.teach.mp.service.IMpActivityFormFieldService;
|
||||
import com.seer.teach.mp.service.IMpActivityFormRelationService;
|
||||
import com.seer.teach.mp.service.IMpActivityFormService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
@ -33,12 +41,17 @@ public class AdminActivityFormServiceImpl implements IAdminActivityFormService {
|
||||
|
||||
private final IMpActivityFormRelationService activityFormRelationService;
|
||||
|
||||
private final IMpActivityFormFieldService activityFormFieldService;
|
||||
|
||||
@Override
|
||||
public Boolean save(ActivityFormReq request) {
|
||||
MpActivityFormEntity form = AdminActivityFormConvert.INSTANCE.convertToEntity(request);
|
||||
boolean saveResult = activityFormService.save(form);
|
||||
|
||||
if (saveResult) {
|
||||
// 保存表单字段
|
||||
saveOrUpdateFormFields(form.getId(), request.getFields());
|
||||
|
||||
MpActivityFormRelationEntity relation = new MpActivityFormRelationEntity();
|
||||
relation.setActivityId(request.getActivityId());
|
||||
relation.setFormId(form.getId());
|
||||
@ -71,12 +84,19 @@ public class AdminActivityFormServiceImpl implements IAdminActivityFormService {
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public Boolean update(ActivityFormReq request) {
|
||||
if (request.getId() == null) {
|
||||
return false;
|
||||
}
|
||||
MpActivityFormEntity form = AdminActivityFormConvert.INSTANCE.convertToEntity(request);
|
||||
return activityFormService.updateById(form);
|
||||
boolean updateResult = activityFormService.updateById(form);
|
||||
|
||||
if (updateResult) {
|
||||
// 更新表单字段
|
||||
saveOrUpdateFormFields(form.getId(), request.getFields());
|
||||
}
|
||||
return updateResult;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -106,4 +126,96 @@ public class AdminActivityFormServiceImpl implements IAdminActivityFormService {
|
||||
newRelation.setVersion(CommonUtils.generateVersionNumber(latestRelation.getVersion()));
|
||||
return activityFormRelationService.save(newRelation);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新表单字段
|
||||
*
|
||||
* @param formId 表单ID
|
||||
* @param fields 字段列表JSON字符串
|
||||
*/
|
||||
private void saveOrUpdateFormFields(Integer formId, List<String> fields) {
|
||||
if (CollectionUtil.isEmpty(fields)) {
|
||||
return;
|
||||
}
|
||||
// 如果字段列表为空,删除所有现有字段
|
||||
activityFormFieldService.deleteByFormId(formId);
|
||||
// 保存新的字段
|
||||
int sortOrder = 0;
|
||||
List<MpActivityFormFieldEntity> fieldEntities = buildActivityFormFieldList(formId, fields, sortOrder);
|
||||
if (CollectionUtil.isNotEmpty(fieldEntities)) {
|
||||
boolean savedBatch = activityFormFieldService.saveBatch(fieldEntities);
|
||||
log.info("保存字段到字段表的结果:{}", savedBatch);
|
||||
|
||||
}else{
|
||||
log.info("没有字段需要保存到字段表");
|
||||
}
|
||||
}
|
||||
|
||||
private List<MpActivityFormFieldEntity> buildActivityFormFieldList(Integer formId, List<String> fields, int sortOrder) {
|
||||
List<MpActivityFormFieldEntity> fieldEntities = new ArrayList<>();
|
||||
for (String fieldJson : fields) {
|
||||
try {
|
||||
// 解析字段JSON
|
||||
Map<String, Object> fieldMap = JSONUtil.toBean(fieldJson, Map.class);
|
||||
Map<String, Object> config = (Map<String, Object>) fieldMap.get("__config__");
|
||||
|
||||
MpActivityFormFieldEntity fieldEntity = new MpActivityFormFieldEntity();
|
||||
fieldEntity.setFormId(formId);
|
||||
|
||||
// 设置字段名称
|
||||
fieldEntity.setFieldName((String) config.get("label"));
|
||||
|
||||
String fieldCode = (String) fieldMap.get("__vModel__");
|
||||
if (fieldCode == null || fieldCode.trim().isEmpty()) {
|
||||
fieldCode = generateFieldCode((String) config.get("label"), formId, sortOrder);
|
||||
}
|
||||
fieldEntity.setFieldCode(fieldCode);
|
||||
|
||||
// 设置字段类型
|
||||
String fieldType = (String) fieldMap.get("tag");
|
||||
if (fieldType == null) {
|
||||
fieldType = (String) config.get("tag");
|
||||
}
|
||||
fieldEntity.setFieldType(fieldType);
|
||||
|
||||
// 设置占位符
|
||||
fieldEntity.setPlaceholder((String) fieldMap.get("placeholder"));
|
||||
|
||||
// 设置是否必填
|
||||
Boolean required = (Boolean) config.get("required");
|
||||
fieldEntity.setIsRequired(required != null && required ? 1 : 0);
|
||||
|
||||
// 设置排序
|
||||
fieldEntity.setSortOrder(sortOrder++);
|
||||
|
||||
// 设置字段描述
|
||||
fieldEntity.setDescription((String) config.get("label"));
|
||||
|
||||
if(fieldMap.containsKey("options")){
|
||||
fieldEntity.setFieldOptions(fieldMap.get("options").toString());
|
||||
}
|
||||
|
||||
fieldEntities.add(fieldEntity);
|
||||
} catch (Exception e) {
|
||||
log.error("解析字段JSON失败: {}", fieldJson, e);
|
||||
}
|
||||
}
|
||||
return fieldEntities;
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成字段代码
|
||||
*
|
||||
* @param label 字段标签
|
||||
* @param formId 表单ID
|
||||
* @param index 索引
|
||||
* @return 字段代码
|
||||
*/
|
||||
private String generateFieldCode(String label, Integer formId, int index) {
|
||||
if (label == null) {
|
||||
return "field_" + formId + "_" + index;
|
||||
}
|
||||
// 将标签转换为合适的字段代码格式
|
||||
return label.replaceAll("[^a-zA-Z0-9\\u4e00-\\u9fa5]", "_").toLowerCase() + "_" + formId + "_" + index;
|
||||
}
|
||||
}
|
||||
@ -11,13 +11,26 @@ public class AppActivityFormResp {
|
||||
|
||||
private Integer id;
|
||||
|
||||
@Schema(description = "表单模板名称")
|
||||
private String templateName;
|
||||
/**
|
||||
* 表单名称
|
||||
*/
|
||||
@Schema(description = "表单名称")
|
||||
private String formName;
|
||||
|
||||
/**
|
||||
* 表单描述
|
||||
*/
|
||||
@Schema(description = "表单描述")
|
||||
private String formDescription;
|
||||
|
||||
/**
|
||||
* 配置
|
||||
*/
|
||||
@Schema(description = "配置")
|
||||
private String config;
|
||||
|
||||
@Schema(description = "表单模板描述")
|
||||
private String templateDescription;
|
||||
|
||||
@Schema(description = "表单字段列表")
|
||||
private List<AppActivityFormFieldResp> fields;
|
||||
private List<String> fields;
|
||||
|
||||
}
|
||||
@ -3,18 +3,16 @@ package com.seer.teach.mp.app.convert;
|
||||
import com.seer.teach.mp.app.controller.resp.AppActivityFormExecutionResp;
|
||||
import com.seer.teach.mp.app.controller.resp.AppActivityFormFieldResp;
|
||||
import com.seer.teach.mp.app.controller.resp.AppActivityFormResp;
|
||||
import com.seer.teach.mp.entity.MpActivityFormEntity;
|
||||
import com.seer.teach.mp.entity.MpActivityFormExecutionEntity;
|
||||
import com.seer.teach.mp.entity.MpActivityFormFieldEntity;
|
||||
import com.seer.teach.mp.entity.MpActivityFormEntity;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.Mapping;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
@Mapper
|
||||
public interface AppActivityFormConvert {
|
||||
AppActivityFormConvert INSTANCE = Mappers.getMapper(AppActivityFormConvert.class);
|
||||
|
||||
@Mapping(source = "fields", target = "fields", ignore = true)
|
||||
AppActivityFormResp convertToAppTemplateResp(MpActivityFormEntity entity);
|
||||
|
||||
AppActivityFormFieldResp convertToAppFieldResp(MpActivityFormFieldEntity entity);
|
||||
|
||||
@ -62,18 +62,6 @@ public class AppActivityFormServiceImpl implements IAppActivityFormService {
|
||||
MpActivityFormEntity template = activityFormTemplateService.getById(formId);
|
||||
if (template != null) {
|
||||
AppActivityFormResp resp = AppActivityFormConvert.INSTANCE.convertToAppTemplateResp(template);
|
||||
|
||||
// 获取该表单的所有字段
|
||||
List<MpActivityFormFieldEntity> fields = activityFormFieldService.list(
|
||||
new LambdaQueryWrapper<MpActivityFormFieldEntity>()
|
||||
.eq(MpActivityFormFieldEntity::getFormId, formId)
|
||||
);
|
||||
|
||||
List<AppActivityFormFieldResp> fieldResps = fields.stream()
|
||||
.map(AppActivityFormConvert.INSTANCE::convertToAppFieldResp)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
resp.setFields(fieldResps);
|
||||
return resp;
|
||||
}
|
||||
}
|
||||
@ -84,17 +72,6 @@ public class AppActivityFormServiceImpl implements IAppActivityFormService {
|
||||
MpActivityFormEntity template = activityFormTemplateService.getById(formId);
|
||||
if (template != null) {
|
||||
AppActivityFormResp resp = AppActivityFormConvert.INSTANCE.convertToAppTemplateResp(template);
|
||||
|
||||
// 获取该表单的所有字段
|
||||
List<MpActivityFormFieldEntity> fields = activityFormFieldService.list(
|
||||
new LambdaQueryWrapper<MpActivityFormFieldEntity>()
|
||||
.eq(MpActivityFormFieldEntity::getFormId, formId)
|
||||
);
|
||||
List<AppActivityFormFieldResp> fieldResps = fields.stream()
|
||||
.map(AppActivityFormConvert.INSTANCE::convertToAppFieldResp)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
resp.setFields(fieldResps);
|
||||
return resp;
|
||||
}
|
||||
}
|
||||
|
||||
@ -13,4 +13,12 @@ import com.seer.teach.mp.entity.MpActivityFormFieldEntity;
|
||||
*/
|
||||
public interface IMpActivityFormFieldService extends IService<MpActivityFormFieldEntity> {
|
||||
|
||||
/**
|
||||
* 根据表单ID删除表单字段定义
|
||||
*
|
||||
* @param formId
|
||||
* @return 删除结果
|
||||
*/
|
||||
boolean deleteByFormId(Integer formId);
|
||||
|
||||
}
|
||||
@ -8,6 +8,8 @@ import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 活动表单字段定义表 服务实现类
|
||||
@ -21,4 +23,11 @@ import org.springframework.stereotype.Service;
|
||||
@RequiredArgsConstructor
|
||||
public class MpActivityFormFieldServiceImpl extends ServiceImpl<MpActivityFormFieldMapper, MpActivityFormFieldEntity> implements IMpActivityFormFieldService {
|
||||
|
||||
@Override
|
||||
public boolean deleteByFormId(Integer formId) {
|
||||
if (Objects.isNull(formId) || formId == 0) {
|
||||
return false;
|
||||
}
|
||||
return super.getBaseMapper().deleteByFormId(formId) > 0;
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user