no message
This commit is contained in:
parent
bd78980529
commit
b2ddfb1502
|
|
@ -534,8 +534,40 @@ public class OrderController extends BaseController {
|
|||
List<GoodsStandard> goodsList = goodsStandardService.selectByIds(goodsStandardIds);
|
||||
logger.info("商品信息{}", goodsList);
|
||||
// 商品所属师傅
|
||||
// 获取商品信息
|
||||
Goods goods = goodsService.selectById(goodsList.get(0).getGoodsId());
|
||||
logger.info("下单后的师傅信息{}", goods);
|
||||
OrderMaster orderMaster = new OrderMaster();
|
||||
orderMaster.setOrderType(0);
|
||||
// 判断是否是配件商品
|
||||
if (goods.getType() != null && goods.getType() == 2) {
|
||||
// 配件商品,需要获取对应的服务商品
|
||||
logger.info("当前商品是配件商品,需要获取对应的服务商品");
|
||||
|
||||
// 通过商品的类目ID获取类目信息
|
||||
DeptGoodsCategory deptGoodsCategory = deptGoodsCategoryService.get(goods.getDeptGoodsCategoryId());
|
||||
if (deptGoodsCategory != null && deptGoodsCategory.getServiceCategoryId() != null) {
|
||||
logger.info("配件商品的服务类目ID: {}", deptGoodsCategory.getServiceCategoryId());
|
||||
|
||||
// 通过服务类目ID查询对应的服务商品
|
||||
Goods serviceGoodsQuery = new Goods();
|
||||
serviceGoodsQuery.setDeptGoodsCategoryId(deptGoodsCategory.getServiceCategoryId());
|
||||
serviceGoodsQuery.setType(1); // 服务商品类型
|
||||
serviceGoodsQuery.setStatus(0); // 上架状态
|
||||
|
||||
List<Goods> serviceGoodsList = goodsService.selectGoodsList(serviceGoodsQuery);
|
||||
if (CollectionUtils.isNotEmpty(serviceGoodsList)) {
|
||||
Goods serviceGoods = serviceGoodsList.get(0); // 取第一个服务商品
|
||||
logger.info("找到对应的服务商品: {}", serviceGoods);
|
||||
orderMaster.setOrderType(1);
|
||||
orderMaster.setServerGoodsId(serviceGoods.getGoodsId());
|
||||
} else {
|
||||
logger.warn("未找到服务类目ID为 {} 的服务商品", deptGoodsCategory.getServiceCategoryId());
|
||||
}
|
||||
} else {
|
||||
logger.warn("配件商品的类目信息中未配置服务类目ID");
|
||||
}
|
||||
}
|
||||
// 师傅信息
|
||||
Worker worker = workerService.selectById(goods.getWorkerId());
|
||||
// 商户ID
|
||||
|
|
@ -543,10 +575,8 @@ public class OrderController extends BaseController {
|
|||
Assert.notNull(deptId, "deptId is null!");
|
||||
|
||||
// 生成主单
|
||||
OrderMaster orderMaster = new OrderMaster();
|
||||
orderMaster.setDeptId(deptId);
|
||||
orderMaster.setCode(orderMasterService.createOrderCode());
|
||||
orderMaster.setOrderType(0);
|
||||
orderMaster.setPayType(appOrderRequest.getPayType());
|
||||
orderMaster.setOrderStatus(OrderStatus.RECEIVE.code());
|
||||
orderMaster.setCustomerId(appOrderRequest.getCustomerId());
|
||||
|
|
@ -563,7 +593,6 @@ public class OrderController extends BaseController {
|
|||
|
||||
//处理新增订单的地址
|
||||
CustomerAddress customerAddress = customerAddressService.selectByCustomerAddressId(appOrderRequest.getAddressId());
|
||||
logger.info("传入的新订单信息{},获取到的地址信息{}",appOrderRequest,customerAddress);
|
||||
SysArea sysArea = sysAreaService.selectById(customerAddress.getStreetId());
|
||||
String addressSysArea = sysArea.getMergerName();
|
||||
String[] array = addressSysArea.split(",");
|
||||
|
|
@ -642,6 +671,9 @@ public class OrderController extends BaseController {
|
|||
} catch (Exception e) {
|
||||
logger.error(e.getMessage(), e);
|
||||
}
|
||||
|
||||
|
||||
|
||||
return AjaxResult.success(orderMaster);
|
||||
}
|
||||
|
||||
|
|
@ -1886,4 +1918,173 @@ public class OrderController extends BaseController {
|
|||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 为配件订单生成对应的服务订单
|
||||
*
|
||||
* @param request 包含主单ID和服务金额的请求参数
|
||||
* @return AjaxResult 返回生成的服务订单信息
|
||||
*/
|
||||
@PostMapping("/generate/service/order")
|
||||
@ResponseBody
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public AjaxResult generateServiceOrder(@RequestBody Map<String, Object> request) {
|
||||
try {
|
||||
Long orderMasterId = Long.valueOf(request.get("orderMasterId").toString());
|
||||
|
||||
// 获取传入的服务金额
|
||||
BigDecimal serviceMoney = BigDecimal.ZERO;
|
||||
if (request.get("serviceMoney") != null) {
|
||||
serviceMoney = new BigDecimal(request.get("serviceMoney").toString());
|
||||
}
|
||||
|
||||
// 校验参数
|
||||
if (orderMasterId == null) {
|
||||
return AjaxResult.error("主单ID不能为空");
|
||||
}
|
||||
|
||||
if (serviceMoney.compareTo(BigDecimal.ZERO) < 0) {
|
||||
return AjaxResult.error("服务金额不能为负数");
|
||||
}
|
||||
|
||||
// 查询配件主单信息
|
||||
OrderMaster accessoryOrderMaster = orderMasterService.selectById(orderMasterId);
|
||||
if (accessoryOrderMaster == null) {
|
||||
return AjaxResult.error("主单不存在");
|
||||
}
|
||||
|
||||
// 判断是否为配件订单
|
||||
if (accessoryOrderMaster.getOrderType() == null || accessoryOrderMaster.getOrderType() != 1) {
|
||||
return AjaxResult.error("当前订单不是配件订单,无法生成服务订单");
|
||||
}
|
||||
|
||||
// 检查是否已经有对应的服务商品
|
||||
if (accessoryOrderMaster.getServerGoodsId() == null) {
|
||||
return AjaxResult.error("配件订单未关联服务商品,无法生成服务订单");
|
||||
}
|
||||
|
||||
// 获取服务商品信息
|
||||
Goods serverGoods = goodsService.selectById(accessoryOrderMaster.getServerGoodsId());
|
||||
if (serverGoods == null) {
|
||||
return AjaxResult.error("关联的服务商品不存在");
|
||||
}
|
||||
|
||||
// 获取服务商品的师傅信息
|
||||
Worker serverWorker = workerService.selectById(serverGoods.getWorkerId());
|
||||
if (serverWorker == null) {
|
||||
return AjaxResult.error("服务商品未关联师傅信息");
|
||||
}
|
||||
|
||||
// 创建服务主单
|
||||
OrderMaster serviceOrderMaster = new OrderMaster();
|
||||
serviceOrderMaster.setDeptId(accessoryOrderMaster.getDeptId());
|
||||
serviceOrderMaster.setCode(orderMasterService.createOrderCode());
|
||||
serviceOrderMaster.setOrderType(0); // 服务订单类型为0
|
||||
serviceOrderMaster.setPayType(accessoryOrderMaster.getPayType());
|
||||
serviceOrderMaster.setOrderStatus(OrderStatus.RECEIVE.code());
|
||||
serviceOrderMaster.setCustomerId(accessoryOrderMaster.getCustomerId());
|
||||
serviceOrderMaster.setAddressId(accessoryOrderMaster.getAddressId());
|
||||
serviceOrderMaster.setPayStatus(PayStatus.WAIT_PAY.getCode());
|
||||
serviceOrderMaster.setCreateTime(new Date());
|
||||
serviceOrderMaster.setWorkerId(serverWorker.getWorkerId()); // 使用服务商品的师傅
|
||||
serviceOrderMaster.setGoodsId(serverGoods.getGoodsId()); // 使用服务商品ID
|
||||
serviceOrderMaster.setRemark("由配件订单[" + accessoryOrderMaster.getCode() + "]自动生成的服务订单,服务金额:" + serviceFee);
|
||||
serviceOrderMaster.setExpectTimeStart(accessoryOrderMaster.getExpectTimeStart());
|
||||
serviceOrderMaster.setExpectTimeEnd(accessoryOrderMaster.getExpectTimeEnd());
|
||||
serviceOrderMaster.setInsuranceId(accessoryOrderMaster.getInsuranceId());
|
||||
|
||||
// 复制地址信息
|
||||
serviceOrderMaster.setProvinceId(accessoryOrderMaster.getProvinceId());
|
||||
serviceOrderMaster.setCityId(accessoryOrderMaster.getCityId());
|
||||
serviceOrderMaster.setCountryId(accessoryOrderMaster.getCountryId());
|
||||
serviceOrderMaster.setStreetId(accessoryOrderMaster.getStreetId());
|
||||
serviceOrderMaster.setAddress(accessoryOrderMaster.getAddress());
|
||||
serviceOrderMaster.setName(accessoryOrderMaster.getName());
|
||||
serviceOrderMaster.setPhone(accessoryOrderMaster.getPhone());
|
||||
serviceOrderMaster.setProvinceName(accessoryOrderMaster.getProvinceName());
|
||||
serviceOrderMaster.setCityName(accessoryOrderMaster.getCityName());
|
||||
serviceOrderMaster.setCountryName(accessoryOrderMaster.getCountryName());
|
||||
serviceOrderMaster.setStreetName(accessoryOrderMaster.getStreetName());
|
||||
|
||||
// 保存服务主单
|
||||
orderMasterService.insertOrderMaster(serviceOrderMaster);
|
||||
Assert.notNull(serviceOrderMaster.getId(), "ServiceOrderMaster.id is null!");
|
||||
|
||||
// 获取服务商品的规格信息(取第一个可用规格)
|
||||
GoodsStandard serviceGoodsStandard = null;
|
||||
List<GoodsStandard> serviceGoodsStandards = goodsStandardService.selectByGoodsId(serverGoods.getGoodsId());
|
||||
if (CollectionUtils.isNotEmpty(serviceGoodsStandards)) {
|
||||
serviceGoodsStandard = serviceGoodsStandards.get(0); // 取第一个规格
|
||||
}
|
||||
|
||||
if (serviceGoodsStandard == null) {
|
||||
throw new RuntimeException("服务商品没有可用的规格信息");
|
||||
}
|
||||
|
||||
// 生成财务主单(使用传入的服务金额)
|
||||
FinancialMaster serviceFinancialMaster = new FinancialMaster(
|
||||
financialMasterService.createCode(),
|
||||
accessoryOrderMaster.getDeptId(),
|
||||
serviceOrderMaster.getId(),
|
||||
serviceOrderMaster.getCode(),
|
||||
serviceMoney,
|
||||
BigDecimal.ZERO,
|
||||
serviceMoney
|
||||
);
|
||||
serviceFinancialMaster.setServerMoney(serviceMoney);
|
||||
financialMasterService.insertFinancialMaster(serviceFinancialMaster);
|
||||
Assert.notNull(serviceFinancialMaster.getId(), "ServiceFinancialMaster.id is null!");
|
||||
|
||||
// 生成服务商品订单
|
||||
OrderGoods serviceOrderGoods = new OrderGoods(
|
||||
serviceOrderMaster.getId(),
|
||||
serviceGoodsStandard.getGoodsStandardId(),
|
||||
serviceGoodsStandard.getGoodsStandardName(),
|
||||
1, // 数量默认为1
|
||||
0
|
||||
);
|
||||
orderGoodsService.insertOrderGoods(serviceOrderGoods);
|
||||
|
||||
// 更新配件主单,关联生成的服务订单
|
||||
OrderMaster accessoryUpdate = new OrderMaster();
|
||||
accessoryUpdate.setId(accessoryOrderMaster.getId());
|
||||
accessoryUpdate.setRemark(accessoryOrderMaster.getRemark() + " [已生成服务订单:" + serviceOrderMaster.getCode() + ",服务金额:" + serviceFee + "]");
|
||||
orderMasterService.updateOrderMaster(accessoryUpdate);
|
||||
|
||||
// 通知服务师傅新订单
|
||||
try {
|
||||
Map<String, Object> paramsNew = new HashMap<>();
|
||||
paramsNew.put("thing21", "您帐号收到1条新服务订单");
|
||||
paramsNew.put("thing31", "请进入【我的订单--新订单】操作处理");
|
||||
CustomerAddress address = customerAddressService.selectByCustomerAddressId(serviceOrderMaster.getAddressId());
|
||||
paramsNew.put("thing14", address.getName());
|
||||
paramsNew.put("time4", com.ghy.common.utils.DateUtils.parseDateToStr("yyyy年MM月dd日 HH:mm", new Date()));
|
||||
WechatMsgUtils.sendWeChatMsg(WechatMsgUtils.getToken(), serverWorker.getWxOpenId(), WxMsgEnum.NORMAL_ORDER, paramsNew);
|
||||
} catch (Exception e) {
|
||||
logger.error("发送微信通知失败: {}", e.getMessage(), e);
|
||||
}
|
||||
|
||||
// 构建返回结果
|
||||
Map<String, Object> result = new HashMap<>();
|
||||
result.put("accessoryOrderId", accessoryOrderMaster.getId());
|
||||
result.put("accessoryOrderCode", accessoryOrderMaster.getCode());
|
||||
result.put("serviceOrderId", serviceOrderMaster.getId());
|
||||
result.put("serviceOrderCode", serviceOrderMaster.getCode());
|
||||
result.put("serviceFee", serviceFee);
|
||||
result.put("serviceGoodsId", serverGoods.getGoodsId());
|
||||
result.put("serviceGoodsName", serverGoods.getGoodsName());
|
||||
result.put("serviceWorkerId", serverWorker.getWorkerId());
|
||||
result.put("serviceWorkerName", serverWorker.getName());
|
||||
result.put("serviceWorkerPhone", serverWorker.getPhone());
|
||||
|
||||
logger.info("成功为配件订单[{}]生成服务订单[{}],服务金额:{}",
|
||||
accessoryOrderMaster.getCode(), serviceOrderMaster.getCode(), serviceFee);
|
||||
|
||||
return AjaxResult.success("服务订单生成成功", result);
|
||||
|
||||
} catch (Exception e) {
|
||||
logger.error("生成服务订单失败: {}", e.getMessage(), e);
|
||||
return AjaxResult.error("生成服务订单失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -237,4 +237,13 @@ public class OrderMaster extends BaseEntity {
|
|||
private String streetName;
|
||||
|
||||
private Integer withdrawn;
|
||||
|
||||
@Excel(name = "服务商品ID")
|
||||
private Long serverGoodsId;
|
||||
|
||||
@Excel(name = "关联商品订单主单ID")
|
||||
private Long goodsOrderMasterId;
|
||||
|
||||
@Excel(name = "物流单号")
|
||||
private String trackingNumber;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -51,6 +51,9 @@
|
|||
<result property="countryName" column="country_name"/>
|
||||
<result property="streetName" column="street_name"/>
|
||||
<result property="withdrawn" column="withdrawn"/>
|
||||
<result property="serverGoodsId" column="server_goods_id"/>
|
||||
<result property="goodsOrderMasterId" column="goods_order_master_id"/>
|
||||
<result property="trackingNumber" column="tracking_number"/>
|
||||
|
||||
</resultMap>
|
||||
|
||||
|
|
@ -99,7 +102,10 @@
|
|||
street_name ,
|
||||
phone,
|
||||
has_dispatched_all,
|
||||
withdrawn
|
||||
withdrawn,
|
||||
server_goods_id,
|
||||
goods_order_master_id,
|
||||
tracking_number
|
||||
|
||||
FROM order_master
|
||||
</sql>
|
||||
|
|
@ -148,7 +154,10 @@
|
|||
om.street_name ,
|
||||
om.phone,
|
||||
om.has_dispatched_all,
|
||||
om.withdrawn
|
||||
om.withdrawn,
|
||||
om.server_goods_id,
|
||||
om.goods_order_master_id,
|
||||
om.tracking_number
|
||||
FROM order_master om
|
||||
LEFT JOIN customer_address ca ON ca.customer_address_id = om.address_id
|
||||
LEFT JOIN goods g ON g.goods_id = om.goods_id
|
||||
|
|
@ -440,6 +449,9 @@
|
|||
<if test="isContact != null">is_contact = #{isContact},</if>
|
||||
<if test="timeout != null">timeout_ = #{timeout},</if>
|
||||
<if test="insuranceId != null">insurance_id = #{insuranceId},</if>
|
||||
<if test="serverGoodsId != null">server_goods_id = #{serverGoodsId},</if>
|
||||
<if test="goodsOrderMasterId != null">goods_order_master_id = #{goodsOrderMasterId},</if>
|
||||
<if test="trackingNumber != null">tracking_number = #{trackingNumber},</if>
|
||||
update_time = SYSDATE()
|
||||
</set>
|
||||
WHERE id = #{id}
|
||||
|
|
@ -494,6 +506,9 @@
|
|||
<if test="cityName != null">city_name,</if>
|
||||
<if test="countryName != null">country_name,</if>
|
||||
<if test="streetName != null">street_name,</if>
|
||||
<if test="serverGoodsId != null">server_goods_id,</if>
|
||||
<if test="goodsOrderMasterId != null">goods_order_master_id,</if>
|
||||
<if test="trackingNumber != null and trackingNumber != ''">tracking_number,</if>
|
||||
create_time
|
||||
)VALUES(
|
||||
<if test="deptId != null and deptId != 0">#{deptId},</if>
|
||||
|
|
@ -529,6 +544,9 @@
|
|||
<if test="cityName != null">#{cityName},</if>
|
||||
<if test="countryName != null">#{countryName},</if>
|
||||
<if test="streetName != null">#{streetName},</if>
|
||||
<if test="serverGoodsId != null">#{serverGoodsId},</if>
|
||||
<if test="goodsOrderMasterId != null">#{goodsOrderMasterId},</if>
|
||||
<if test="trackingNumber != null and trackingNumber != ''">#{trackingNumber},</if>
|
||||
SYSDATE()
|
||||
)
|
||||
</insert>
|
||||
|
|
|
|||
Loading…
Reference in New Issue