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);
|
List<GoodsStandard> goodsList = goodsStandardService.selectByIds(goodsStandardIds);
|
||||||
logger.info("商品信息{}", goodsList);
|
logger.info("商品信息{}", goodsList);
|
||||||
// 商品所属师傅
|
// 商品所属师傅
|
||||||
|
// 获取商品信息
|
||||||
Goods goods = goodsService.selectById(goodsList.get(0).getGoodsId());
|
Goods goods = goodsService.selectById(goodsList.get(0).getGoodsId());
|
||||||
logger.info("下单后的师傅信息{}", goods);
|
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());
|
Worker worker = workerService.selectById(goods.getWorkerId());
|
||||||
// 商户ID
|
// 商户ID
|
||||||
|
|
@ -543,10 +575,8 @@ public class OrderController extends BaseController {
|
||||||
Assert.notNull(deptId, "deptId is null!");
|
Assert.notNull(deptId, "deptId is null!");
|
||||||
|
|
||||||
// 生成主单
|
// 生成主单
|
||||||
OrderMaster orderMaster = new OrderMaster();
|
|
||||||
orderMaster.setDeptId(deptId);
|
orderMaster.setDeptId(deptId);
|
||||||
orderMaster.setCode(orderMasterService.createOrderCode());
|
orderMaster.setCode(orderMasterService.createOrderCode());
|
||||||
orderMaster.setOrderType(0);
|
|
||||||
orderMaster.setPayType(appOrderRequest.getPayType());
|
orderMaster.setPayType(appOrderRequest.getPayType());
|
||||||
orderMaster.setOrderStatus(OrderStatus.RECEIVE.code());
|
orderMaster.setOrderStatus(OrderStatus.RECEIVE.code());
|
||||||
orderMaster.setCustomerId(appOrderRequest.getCustomerId());
|
orderMaster.setCustomerId(appOrderRequest.getCustomerId());
|
||||||
|
|
@ -563,7 +593,6 @@ public class OrderController extends BaseController {
|
||||||
|
|
||||||
//处理新增订单的地址
|
//处理新增订单的地址
|
||||||
CustomerAddress customerAddress = customerAddressService.selectByCustomerAddressId(appOrderRequest.getAddressId());
|
CustomerAddress customerAddress = customerAddressService.selectByCustomerAddressId(appOrderRequest.getAddressId());
|
||||||
logger.info("传入的新订单信息{},获取到的地址信息{}",appOrderRequest,customerAddress);
|
|
||||||
SysArea sysArea = sysAreaService.selectById(customerAddress.getStreetId());
|
SysArea sysArea = sysAreaService.selectById(customerAddress.getStreetId());
|
||||||
String addressSysArea = sysArea.getMergerName();
|
String addressSysArea = sysArea.getMergerName();
|
||||||
String[] array = addressSysArea.split(",");
|
String[] array = addressSysArea.split(",");
|
||||||
|
|
@ -642,6 +671,9 @@ public class OrderController extends BaseController {
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error(e.getMessage(), e);
|
logger.error(e.getMessage(), e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return AjaxResult.success(orderMaster);
|
return AjaxResult.success(orderMaster);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1886,4 +1918,173 @@ public class OrderController extends BaseController {
|
||||||
}
|
}
|
||||||
return true;
|
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 String streetName;
|
||||||
|
|
||||||
private Integer withdrawn;
|
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="countryName" column="country_name"/>
|
||||||
<result property="streetName" column="street_name"/>
|
<result property="streetName" column="street_name"/>
|
||||||
<result property="withdrawn" column="withdrawn"/>
|
<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>
|
</resultMap>
|
||||||
|
|
||||||
|
|
@ -99,7 +102,10 @@
|
||||||
street_name ,
|
street_name ,
|
||||||
phone,
|
phone,
|
||||||
has_dispatched_all,
|
has_dispatched_all,
|
||||||
withdrawn
|
withdrawn,
|
||||||
|
server_goods_id,
|
||||||
|
goods_order_master_id,
|
||||||
|
tracking_number
|
||||||
|
|
||||||
FROM order_master
|
FROM order_master
|
||||||
</sql>
|
</sql>
|
||||||
|
|
@ -148,7 +154,10 @@
|
||||||
om.street_name ,
|
om.street_name ,
|
||||||
om.phone,
|
om.phone,
|
||||||
om.has_dispatched_all,
|
om.has_dispatched_all,
|
||||||
om.withdrawn
|
om.withdrawn,
|
||||||
|
om.server_goods_id,
|
||||||
|
om.goods_order_master_id,
|
||||||
|
om.tracking_number
|
||||||
FROM order_master om
|
FROM order_master om
|
||||||
LEFT JOIN customer_address ca ON ca.customer_address_id = om.address_id
|
LEFT JOIN customer_address ca ON ca.customer_address_id = om.address_id
|
||||||
LEFT JOIN goods g ON g.goods_id = om.goods_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="isContact != null">is_contact = #{isContact},</if>
|
||||||
<if test="timeout != null">timeout_ = #{timeout},</if>
|
<if test="timeout != null">timeout_ = #{timeout},</if>
|
||||||
<if test="insuranceId != null">insurance_id = #{insuranceId},</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()
|
update_time = SYSDATE()
|
||||||
</set>
|
</set>
|
||||||
WHERE id = #{id}
|
WHERE id = #{id}
|
||||||
|
|
@ -494,6 +506,9 @@
|
||||||
<if test="cityName != null">city_name,</if>
|
<if test="cityName != null">city_name,</if>
|
||||||
<if test="countryName != null">country_name,</if>
|
<if test="countryName != null">country_name,</if>
|
||||||
<if test="streetName != null">street_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
|
create_time
|
||||||
)VALUES(
|
)VALUES(
|
||||||
<if test="deptId != null and deptId != 0">#{deptId},</if>
|
<if test="deptId != null and deptId != 0">#{deptId},</if>
|
||||||
|
|
@ -529,6 +544,9 @@
|
||||||
<if test="cityName != null">#{cityName},</if>
|
<if test="cityName != null">#{cityName},</if>
|
||||||
<if test="countryName != null">#{countryName},</if>
|
<if test="countryName != null">#{countryName},</if>
|
||||||
<if test="streetName != null">#{streetName},</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()
|
SYSDATE()
|
||||||
)
|
)
|
||||||
</insert>
|
</insert>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue