主管理员 1 month ago
parent
commit
c3a3a300d7
12 changed files with 183 additions and 24 deletions
  1. +10
    -0
      jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/AppletUser.java
  2. +4
    -3
      jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/controller/AppletApiLoginController.java
  3. +9
    -0
      jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/controller/AppletApiSubscribeController.java
  4. +2
    -0
      jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/AppletApiSubscribeService.java
  5. +10
    -3
      jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/impl/AppletApiLoginService.java
  6. +49
    -1
      jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/impl/AppletApiOrderServiceImpl.java
  7. +24
    -2
      jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/impl/AppletApiPromotionServiceImpl.java
  8. +36
    -0
      jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/impl/AppletApiSubscribeServiceImpl.java
  9. +8
    -0
      jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletProduct/entity/AppletProduct.java
  10. +7
    -0
      jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSubscribeDetection/entity/AppletSubscribeDetection.java
  11. +9
    -4
      jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletWater/entity/AppletWater.java
  12. +15
    -11
      jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletproductspectype/controller/AppletproductspectypeController.java

+ 10
- 0
jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/AppletUser.java View File

@ -83,6 +83,16 @@ public class AppletUser implements Serializable {
@Schema(description = "是否实名认证")
private java.lang.String isCard;
@Schema(description = "一级邀请人")
private String inviterOne;
@Schema(description = "二级邀请人")
private String inviterTwo;
@Schema(description = "当前佣金")
private BigDecimal commission;
@Schema(description = "总佣金")
private BigDecimal commissionTotal;
@TableField(exist = false)
@Schema(description = "姓名")


+ 4
- 3
jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/controller/AppletApiLoginController.java View File

@ -39,15 +39,16 @@ public class AppletApiLoginController {
@Operation(summary = "微信小程序登录", description = "通过微信code进行小程序登录")
@IgnoreAuth
public Result<Map<String, Object>> wxLogin(
@Parameter(description = "微信登录code", required = true)
String code) {
@Parameter(description = "微信登录code", required = true) String code,
@Parameter(description = "微信登录code", required = true) String inviter
) {
if (StringUtils.isBlank(code)) {
return Result.error("微信登录code不能为空");
}
log.info("收到小程序登录请求,code: {}", code);
return appletApiLoginService.login(code);
return appletApiLoginService.login(code, inviter);
}
/**


+ 9
- 0
jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/controller/AppletApiSubscribeController.java View File

@ -102,4 +102,13 @@ public class AppletApiSubscribeController {
appletApiSubscribeService.logistics(id, logisticsNo);
return Result.OK();
}
/**
* 获取进度条以及进度
*/
@Operation(summary = "获取进度条以及进度", description = "获取进度条以及进度")
@GetMapping(value = "/progress")
public Result<List<Object>> progress(){
return Result.OK(appletApiSubscribeService.progress());
}
}

+ 2
- 0
jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/AppletApiSubscribeService.java View File

@ -21,4 +21,6 @@ public interface AppletApiSubscribeService {
void cancel(String id);
void logistics(String id, String logisticsNo);
List<Object> progress();
}

+ 10
- 3
jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/impl/AppletApiLoginService.java View File

@ -4,6 +4,7 @@ import com.alibaba.druid.sql.visitor.functions.Nil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.annotations.One;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.constant.CommonConstant;
@ -54,7 +55,7 @@ public class AppletApiLoginService {
* @param code 微信登录code
* @return 登录结果
*/
public Result<Map<String, Object>> login(String code) {
public Result<Map<String, Object>> login(String code, String inviter) {
try {
log.info("开始小程序登录,code: {}", code);
@ -82,7 +83,7 @@ public class AppletApiLoginService {
log.info("微信登录成功,openid: {}", openid);
// 查找或创建用户
AppletUser appletUser = findOrCreateUser(openid, unionid);
AppletUser appletUser = findOrCreateUser(openid, unionid, inviter);
// 生成JWT token
String token = JwtUtil.sign(appletUser.getOpenid(), appletUser.getId());
@ -182,7 +183,7 @@ public class AppletApiLoginService {
* @param unionid 微信unionid
* @return 用户信息
*/
private AppletUser findOrCreateUser(String openid, String unionid) {
private AppletUser findOrCreateUser(String openid, String unionid, String inviter) {
try {
// 根据openid查找用户
AppletUser user = appletUserService.getByOpenid(openid);
@ -194,6 +195,12 @@ public class AppletApiLoginService {
// user.setName("微信用户" + openid.substring(0, 8));
user.setCreateTime(new Date());
user.setCreateBy("system");
AppletUser byId = appletUserService.getById(inviter);
if (StringUtils.isNotEmpty(inviter) && byId != null){
user.setInviterOne(inviter);
user.setInviterTwo(byId.getInviterOne());
}
// TODO: 如果需要unionid字段需要在AppletUser实体类中添加该字段
// user.setUnionid(unionid);


+ 49
- 1
jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/impl/AppletApiOrderServiceImpl.java View File

@ -13,10 +13,12 @@ import org.jeecg.common.api.IAppletUserService;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.common.system.util.AppletUserUtil;
import org.jeecg.common.system.vo.AppletUser;
import org.jeecg.modules.applet.bo.CreateOrderBo;
import org.jeecg.modules.applet.bo.CreateOrderItemBo;
import org.jeecg.modules.applet.service.AppletApiOrderService;
import org.jeecg.modules.demo.appletCar.service.IAppletCarService;
import org.jeecg.modules.demo.appletConfig.service.IAppletConfigService;
import org.jeecg.modules.demo.appletOrder.entity.AppletOrder;
import org.jeecg.modules.demo.appletOrder.entity.AppletOrderProduct;
import org.jeecg.modules.demo.appletOrder.service.IAppletOrderProductService;
@ -35,6 +37,8 @@ import org.jeecg.modules.demo.appletShippingAddress.entity.AppletShippingAddress
import org.jeecg.modules.demo.appletShippingAddress.service.IAppletShippingAddressService;
import org.jeecg.modules.demo.appletSubscribeDetection.entity.AppletSubscribeDetection;
import org.jeecg.modules.demo.appletSubscribeDetection.service.IAppletSubscribeDetectionService;
import org.jeecg.modules.demo.appletWater.entity.AppletWater;
import org.jeecg.modules.demo.appletWater.service.IAppletWaterService;
import org.jeecg.modules.pay.MpWxPayService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -86,6 +90,12 @@ public class AppletApiOrderServiceImpl implements AppletApiOrderService {
@Autowired
private IAppletUserService appletUserService;
@Autowired
private IAppletConfigService appletConfigService;
@Autowired
private IAppletWaterService appletWaterService;
/**
* 订单列表查询
*
@ -366,6 +376,9 @@ public class AppletApiOrderServiceImpl implements AppletApiOrderService {
handleSpecialProducts(order.getId(), order);
// 处理分销
handleDistribution(order);
log.info("订单支付成功,订单ID: {}, payId: {}", order.getId(), outTradeNo);
} else {
log.warn("订单状态异常,当前状态: {}, 订单ID: {}", order.getOrderStatus(), order.getId());
@ -425,6 +438,42 @@ public class AppletApiOrderServiceImpl implements AppletApiOrderService {
}
}
public void handleDistribution(AppletOrder order){
AppletUser user = appletUserService.getById(order.getUserId());//下单的用户
AppletUser inviterOne = appletUserService.getById(user.getInviterOne());//一级邀请人
AppletUser inviterTwo = appletUserService.getById(user.getInviterTwo());//二级邀请人
handleDistributionGiven(inviterOne, order.getOrderAmount(), order, "commission_one");
handleDistributionGiven(inviterTwo, order.getOrderAmount(), order, "commission_two");
}
public void handleDistributionGiven(AppletUser inviter, BigDecimal orderAmount, AppletOrder order, String code){
String content = appletConfigService.getContentByCode(code);
if (StringUtils.isEmpty(content)) {
return;
}
BigDecimal decimal = new BigDecimal(content);
orderAmount = orderAmount.multiply(decimal);
if (inviter != null) {
BigDecimal commission = inviter.getCommission() == null ? BigDecimal.ZERO : inviter.getCommission();
inviter.setCommission(commission.add(orderAmount));
appletUserService.updateById(inviter);
AppletWater water = new AppletWater();
water.setUserId(inviter.getId());
water.setFromId(order.getUserId());
water.setPrice(orderAmount);
water.setOrderId(order.getId());
water.setType("1");
water.setCreateTime(new Date());
water.setOldMoney(commission);
water.setTitle("佣金");
appletWaterService.save(water);
}
}
/**
* 生成订单号
* @return 订单号
@ -587,7 +636,6 @@ public class AppletApiOrderServiceImpl implements AppletApiOrderService {
.orderByDesc(AppletOrderEvaluate::getCreateTime)
.page(page);
for (AppletOrderEvaluate evaluate : list.getRecords()) {
evaluate.setUser(appletUserService.getById(evaluate.getUserId()));
}


+ 24
- 2
jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/impl/AppletApiPromotionServiceImpl.java View File

@ -4,6 +4,8 @@ import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.log4j.Log4j2;
import org.apache.commons.lang3.StringUtils;
import org.jeecg.common.api.IAppletUserService;
import org.jeecg.common.system.util.AppletUserUtil;
import org.jeecg.common.system.vo.AppletUser;
import org.jeecg.common.util.oss.OssBootUtil;
@ -11,6 +13,7 @@ import org.jeecg.modules.applet.service.AppletApiPromotionService;
import org.jeecg.modules.common.wxUtils.WxHttpUtils;
import org.jeecg.modules.demo.appletConfig.service.IAppletConfigService;
import org.jeecg.modules.demo.appletWater.entity.AppletWater;
import org.jeecg.modules.demo.appletWater.service.IAppletWaterService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
@ -42,6 +45,10 @@ public class AppletApiPromotionServiceImpl implements AppletApiPromotionService
@Autowired
private IAppletConfigService appletConfigService;
@Autowired
private IAppletUserService appletUserService;
@Autowired
private IAppletWaterService appletWaterService;
@Autowired
private WxHttpUtils wxHttpUtils;
@ -138,12 +145,27 @@ public class AppletApiPromotionServiceImpl implements AppletApiPromotionService
@Override
public IPage<AppletUser> getTeam(Page<AppletUser> page, String name) {
return null;
AppletUser user = AppletUserUtil.getCurrentAppletUser();
return appletUserService.lambdaQuery()
.and(e -> {
e.eq(AppletUser::getInviterOne, user.getId())
.or()
.eq(AppletUser::getPhone, user.getId());
})
.like(StringUtils.isNotEmpty(name), AppletUser::getName, name)
.page(page);
}
@Override
public IPage<AppletWater> getWater(Page<AppletWater> waterPage) {
return null;
AppletUser user = AppletUserUtil.getCurrentAppletUser();
Page<AppletWater> page = appletWaterService.lambdaQuery()
.eq(AppletWater::getUserId, user.getId())
.eq(AppletWater::getType, "1")
.page(waterPage);
return page;
}
/**


+ 36
- 0
jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/applet/service/impl/AppletApiSubscribeServiceImpl.java View File

@ -4,7 +4,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.commons.lang3.StringUtils;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.common.system.util.AppletUserUtil;
import org.jeecg.modules.applet.service.AppletApiSubscribeService;
import org.jeecg.modules.demo.appletConfig.service.IAppletConfigService;
import org.jeecg.modules.demo.appletHospital.entity.AppletHospital;
import org.jeecg.modules.demo.appletHospital.service.IAppletHospitalService;
import org.jeecg.modules.demo.appletOrder.service.IAppletOrderProductService;
@ -15,6 +17,9 @@ import org.jeecg.modules.demo.appletSubscribeDetection.service.IAppletSubscribeD
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
@Service
@ -32,6 +37,9 @@ public class AppletApiSubscribeServiceImpl implements AppletApiSubscribeService
@Autowired
private IAppletOrderProductService appletOrderProductService;
@Autowired
private IAppletConfigService appletConfigService;
@Override
public IPage<AppletSubscribeDetection> getAppletSubscribeDetection(Integer pageNo, Integer pageSize, String type) {
@ -117,5 +125,33 @@ public class AppletApiSubscribeServiceImpl implements AppletApiSubscribeService
appletSubscribeDetectionService.updateById(detection);
}
@Override
public List<Object> progress() {
String userId = AppletUserUtil.getCurrentAppletUserId();
ArrayList<Object> list = new ArrayList<>();
AppletSubscribeDetection one = appletSubscribeDetectionService
.lambdaQuery()
.eq(AppletSubscribeDetection::getUserId, userId)
.orderByDesc(AppletSubscribeDetection::getCreateTime)
.select(AppletSubscribeDetection::getStatus,
AppletSubscribeDetection::getCreateTime,
AppletSubscribeDetection::getUpdateTime,
AppletSubscribeDetection::getId)
.last("limit 1")
.one();
if (one != null){
String contentByCode = appletConfigService.getContentByCode("applet_subscribe_detection_progress");
if (StringUtils.isNotEmpty(contentByCode)){
one.setProgress(Arrays.asList(contentByCode.split(",")));
}
list.add(one);
}
return list;
}
}

+ 8
- 0
jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletProduct/entity/AppletProduct.java View File

@ -115,6 +115,14 @@ public class AppletProduct implements Serializable {
@Excel(name = "服务", width = 15)
@Schema(description = "服务")
private java.lang.String service;
/**品类*/
@Excel(name = "品类", width = 15)
@Schema(description = "品类")
private java.lang.String category;
/**推荐图片*/
@Excel(name = "推荐图片", width = 15)
@Schema(description = "推荐图片")
private java.lang.String recommendedAnswersImage;
/**合作医院*/
@Excel(name = "合作医院", width = 15, dictTable = "applet_hospital", dicText = "name", dicCode = "id")
@Dict(dictTable = "applet_hospital", dicText = "name", dicCode = "id")


+ 7
- 0
jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletSubscribeDetection/entity/AppletSubscribeDetection.java View File

@ -4,10 +4,12 @@ import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.math.BigDecimal;
import java.util.List;
import com.baomidou.mybatisplus.annotation.*;
import lombok.*;
import org.jeecg.common.constant.ProvinceCityArea;
import org.jeecg.common.system.vo.DictModel;
import org.jeecg.common.util.SpringContextUtils;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.jeecg.modules.demo.appletOrder.entity.AppletOrderProduct;
@ -145,6 +147,11 @@ public class AppletSubscribeDetection implements Serializable {
@Schema(description = "回寄物流单号")
private java.lang.String logisticsNo;
@Schema(description = "检查报告PDF")
private String inspectionReport;
@TableField(exist = false)
private AppletOrderProduct orderProduct;
private List<String> progress;
}

+ 9
- 4
jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletWater/entity/AppletWater.java View File

@ -72,12 +72,17 @@ public class AppletWater implements Serializable {
@Excel(name = "原钱包金额", width = 15)
@Schema(description = "原钱包金额")
private java.math.BigDecimal oldMoney;
/**来源用户*/
@Excel(name = "来源用户", width = 15)
@Schema(description = "来源用户")
private java.lang.String fromId;
/**佣金*/
@Excel(name = "佣金", width = 15,replace = {"是_Y","否_N"} )
@Schema(description = "佣金")
private java.lang.String isCommission;
@Excel(name = "类型")
@Schema(description = "类型 0购物 1佣金 2提现")
private java.lang.String type;
@Excel(name = "标题")
@Schema(description = "标题")
private java.lang.String title;
}

+ 15
- 11
jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/demo/appletproductspectype/controller/AppletproductspectypeController.java View File

@ -94,7 +94,7 @@ public class AppletproductspectypeController extends JeecgController<Appletprodu
@Operation(summary="小程序产品规格类型-添加")
// @RequiresPermissions("appletproductspectype:appletproductspectype:add")
@PostMapping(value = "/add")
public Result<String> add(@RequestBody Appletproductspectype appletproductspectype) {
public Result<String> add(Appletproductspectype appletproductspectype) {
// 参数校验产品ID类型必填并约束二级分类的父子关系
if (oConvertUtils.isEmpty(appletproductspectype.getProductId()) || oConvertUtils.isEmpty(appletproductspectype.getType())) {
return Result.error("缺少产品ID或类型");
@ -112,7 +112,9 @@ public class AppletproductspectypeController extends JeecgController<Appletprodu
return Result.error("规格项必须关联父规格类型");
}
QueryWrapper<Appletproductspectype> parentQuery = new QueryWrapper<>();
parentQuery.eq("id", pid).eq("product_id", appletproductspectype.getProductId()).eq("type", "0");
parentQuery.lambda().eq(Appletproductspectype::getId, pid)
.eq(Appletproductspectype::getProductId, appletproductspectype.getProductId())
.eq(Appletproductspectype::getType, "0");
Appletproductspectype parentType = appletproductspectypeService.getOne(parentQuery);
if (parentType == null) {
return Result.error("父规格类型不存在或不匹配该产品");
@ -133,7 +135,7 @@ public class AppletproductspectypeController extends JeecgController<Appletprodu
@Operation(summary="小程序产品规格类型-编辑")
// @RequiresPermissions("appletproductspectype:appletproductspectype:edit")
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
public Result<String> edit(@RequestBody Appletproductspectype appletproductspectype) {
public Result<String> edit(Appletproductspectype appletproductspectype) {
if (oConvertUtils.isEmpty(appletproductspectype.getId())) {
return Result.error("缺少ID");
}
@ -163,7 +165,9 @@ public class AppletproductspectypeController extends JeecgController<Appletprodu
return Result.error("规格项必须关联父规格类型");
}
QueryWrapper<Appletproductspectype> parentQuery = new QueryWrapper<>();
parentQuery.eq("id", pid).eq("product_id", appletproductspectype.getProductId()).eq("type", "0");
parentQuery.lambda().eq(Appletproductspectype::getId, pid)
.eq(Appletproductspectype::getProductId, appletproductspectype.getProductId())
.eq(Appletproductspectype::getType, "0");
Appletproductspectype parentType = appletproductspectypeService.getOne(parentQuery);
if (parentType == null) {
return Result.error("父规格类型不存在或不匹配该产品");
@ -201,7 +205,7 @@ public class AppletproductspectypeController extends JeecgController<Appletprodu
if ("0".equals(entity.getType())) {
// 如果是规格类型需要检查其下的所有规格项
QueryWrapper<Appletproductspectype> childQuery = new QueryWrapper<>();
childQuery.eq("pid", id);
childQuery.lambda().eq(Appletproductspectype::getPid, id);
List<Appletproductspectype> childItems = appletproductspectypeService.list(childQuery);
for (Appletproductspectype item : childItems) {
if (appletProductSpecService.hasOnShelfAssociatedSpecs(productId, item.getTitle())) {
@ -232,7 +236,7 @@ public class AppletproductspectypeController extends JeecgController<Appletprodu
Appletproductspectype entity = appletproductspectypeService.getById(id);
if (entity != null && "0".equals(entity.getType())) {
QueryWrapper<Appletproductspectype> childQuery = new QueryWrapper<>();
childQuery.eq("pid", id);
childQuery.lambda().eq(Appletproductspectype::getPid, id);
appletproductspectypeService.remove(childQuery);
}
}
@ -268,8 +272,8 @@ public class AppletproductspectypeController extends JeecgController<Appletprodu
public Result<Map<String, Object>> queryByProductId(@RequestParam(name="productId",required=true) String productId) {
try {
QueryWrapper<Appletproductspectype> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("product_id", productId);
queryWrapper.orderByAsc("type", "create_time");
queryWrapper.lambda().eq(Appletproductspectype::getProductId, productId)
.orderByAsc(Appletproductspectype::getType, Appletproductspectype::getCreateTime);
List<Appletproductspectype> allSpecs = appletproductspectypeService.list(queryWrapper);
@ -305,8 +309,8 @@ public class AppletproductspectypeController extends JeecgController<Appletprodu
try {
// 查询该产品的所有规格类型和规格项
QueryWrapper<Appletproductspectype> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("product_id", productId);
queryWrapper.orderByAsc("type", "create_time");
queryWrapper.lambda().eq(Appletproductspectype::getProductId, productId)
.orderByAsc(Appletproductspectype::getType, Appletproductspectype::getCreateTime);
List<Appletproductspectype> allSpecs = appletproductspectypeService.list(queryWrapper);
@ -316,7 +320,7 @@ public class AppletproductspectypeController extends JeecgController<Appletprodu
// 获取所有已存在的规格实体用于后续清理
QueryWrapper<AppletProductSpec> allExistingSpecsQuery = new QueryWrapper<>();
allExistingSpecsQuery.eq("product_id", productId);
allExistingSpecsQuery.lambda().eq(AppletProductSpec::getProductId, productId);
List<AppletProductSpec> allExistingSpecs = appletProductSpecService.list(allExistingSpecsQuery);
// 用于存储新生成的规格名称以便与现有规格进行比较


Loading…
Cancel
Save