package com.ruoyi.system.controller; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletResponse; import com.ruoyi.system.controllerUtil.VerificationResult; import com.ruoyi.system.controllerUtil.OrderUtil; import com.ruoyi.system.domain.*; import com.ruoyi.system.service.*; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.service.IServiceGoodsService; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.system.domain.ServiceGoods; /** * 服务订单Controller * * @author ruoyi * @date 2025-05-13 */ @RestController @RequestMapping("/system/Order") public class OrderController extends BaseController { @Autowired private IOrderService orderService; @Autowired private IServiceGoodsService serviceGoodsService; @Autowired IUsersService usersService; @Autowired IOrderCallService orderCallService; @Autowired IOrderCommentService orderCommentService; @Autowired IOrderSoundLogService orderSoundLogService; @Autowired IOrderSoundService orderSoundService; @Autowired IOrderLogService orderLogService; @Autowired INotifyOrderService notifyOrderService; @Autowired private ISysUserService sysUserService; /** * 查询服务订单列表 */ @PreAuthorize("@ss.hasPermi('system:Order:list')") @GetMapping("/list") public TableDataInfo list(Order order) { startPage(); List list = orderService.selectOrderList(order); for (Order orderdata : list) { ServiceGoods serviceGoods = serviceGoodsService.selectServiceGoodsById(orderdata.getProductId()); if (serviceGoods != null) { orderdata.setProductName(serviceGoods.getTitle()); } Users users = usersService.selectUsersById(orderdata.getUid()); if (users != null) { orderdata.setUname(users.getName()); } orderdata.setThjl(orderCallService.selectCountOrderCallByOid(orderdata.getId())); orderdata.setFwpj(orderCommentService.selectCountOrderCommentByOid(orderdata.getId())); orderdata.setLywj(orderSoundService.selectCountOrderSoundByOid(orderdata.getId())); orderdata.setJdjl(orderLogService.selectCountOrderLogByOrderId(orderdata.getOrderId())); orderdata.setTzjl(notifyOrderService.selectNotifyOrderCountByOid(orderdata.getId())); } return getDataTable(list); } /** * 导出服务订单列表 */ @PreAuthorize("@ss.hasPermi('system:Order:export')") @Log(title = "服务订单", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, Order order) { List list = orderService.selectOrderList(order); ExcelUtil util = new ExcelUtil(Order.class); util.exportExcel(response, list, "服务订单数据"); } /** * 获取服务订单详细信息 */ @PreAuthorize("@ss.hasPermi('system:Order:query')") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { Order order = orderService.selectOrderById(id); if (order != null){ order.setOrderLog(new OrderLog()); } return success(order); } /** * 获取服务订单详细信息 */ @PreAuthorize("@ss.hasPermi('system:Order:query')") @GetMapping(value = "generateCode") public AjaxResult generateCode() { return success(OrderUtil.generateCode()); } /** * 新增服务订单 */ @PreAuthorize("@ss.hasPermi('system:Order:add')") @Log(title = "服务订单", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody Order order) { OrderUtil orderUtil = new OrderUtil(); //1,根据用户手机号和地址判断用户的数据数据和地址数据 //如果用户数据不存在,则添加用户数据 //如果用户地址不存在,则添加用户地址数据 if (order.getType() == 1) { Map map = orderUtil.isUser(order.getPhone(), order.getAddress()); if (map.get("code").equals("1")) { Users usersdata = (Users) map.get("users"); UserAddress userAddressdata = (UserAddress) map.get("UserAddress"); if (userAddressdata != null) { order.setAddressId(userAddressdata.getId()); } if (usersdata != null) { order.setUid(usersdata.getId()); } } } //添加订单日志记录 int flg= orderService.insertOrder(order); if (flg>0){ return toAjax(orderUtil.SaveOrderLog(order)); }else{ return error(); } } /** * 获取服务订单详细信息 */ @PreAuthorize("@ss.hasPermi('system:Order:query')") @GetMapping(value = "/selectBaseProjectList/{id}") public AjaxResult selectBaseProjectList(@PathVariable("id") Long id) { Order order = orderService.selectOrderById(id); if (order != null){ ServiceGoods serviceGoods=serviceGoodsService.selectServiceGoodsById(order.getProductId()); if(serviceGoods!=null){ return success(serviceGoods); }else{ return error(); } }else{ return error(); } } /** * 修改服务订单 */ @PreAuthorize("@ss.hasPermi('system:Order:edit')") @Log(title = "服务订单", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody Order order) { //插入订单日志记录 OrderUtil orderUtil = new OrderUtil(); Order oldorder=orderService.selectOrderById(order.getId()); //验证订单状态 VerificationResult verificationResult = orderUtil.validateOrderStatusChange(order, oldorder); if (verificationResult.getCode().equals(VerificationResult.CODE_SUCCESS)){ //特殊情况,状态不变的情况下,不插入日志记录 if (!verificationResult.getData().equals("NODATA")){ //开始服务,需要给order做标记 orderUtil.SaveOrderLog(order); }else{ if(!order.getStatus().equals(oldorder.getStatus())){ orderUtil.SaveOrderLog(order); } } return toAjax(orderService.updateOrder(order)); }else{ return error(verificationResult.getData()); } } /** * 删除服务订单 */ @PreAuthorize("@ss.hasPermi('system:Order:remove')") @Log(title = "服务订单", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(orderService.deleteOrderByIds(ids)); } /** * 获取订单接单记录 */ @PreAuthorize("@ss.hasPermi('system:Order:query')") @GetMapping("/receive-records/{orderId}") public AjaxResult getReceiveRecords(@PathVariable("orderId") String orderId) { List list = orderLogService.selectOrderLogByOrderId(orderId); for (OrderLog orderLogdata : list) { Users users = usersService.selectUsersById(orderLogdata.getWorkerId()); if (users != null) { orderLogdata.setWorkerName(users.getName()); } } return success(list); } // /** // * 获取订单通话记录 // */ @PreAuthorize("@ss.hasPermi('system:Order:query')") @GetMapping("/call-records/{orderId}") public AjaxResult getCallRecords(@PathVariable("orderId") String orderId) { Order data = orderService.selectOrderByOrderId(orderId); ; if (data != null) { return success(orderCallService.selectOrderCallByOid(data.getId())); } else { return AjaxResult.error("订单不存在"); } } /** * 获取订单录音文件 */ @PreAuthorize("@ss.hasPermi('system:Order:query')") @GetMapping("/audio-records/{orderId}") public AjaxResult getAudioRecords(@PathVariable("orderId") String orderId) { Order data = orderService.selectOrderByOrderId(orderId); ; if (data != null) { List list = orderSoundService.selectOrderSoundByOid(data.getId()); for (OrderSound orderSounddata : list) { orderSounddata.setFile("https://img.huafurenjia.cn/" + orderSounddata.getFile()); // https://img.huafurenjia.cn/ Users users = usersService.selectUsersById(orderSounddata.getWorkerUid()); Order order = orderService.selectOrderById(orderSounddata.getOid()); if (users != null) { orderSounddata.setWorkerName(users.getName()); } if (order != null) { orderSounddata.setOcode(order.getOrderId()); } } return success(list); } else { return AjaxResult.error("订单不存在"); } } /** * 获取订单通知记录 */ @PreAuthorize("@ss.hasPermi('system:Order:query')") @GetMapping("/notify-records/{orderId}") public AjaxResult getNotifyRecords(@PathVariable("orderId") String orderId) { Order data = orderService.selectOrderByOrderId(orderId); ; if (data != null) { return success(notifyOrderService.selectNotifyOrderByOid(data.getId())); } else { return AjaxResult.error("订单不存在"); } } /** * 获取订单通知记录 */ @PreAuthorize("@ss.hasPermi('system:Order:query')") @GetMapping("/comment-records/{orderId}") public AjaxResult getCommentRecords(@PathVariable("orderId") String orderId) { Order data = orderService.selectOrderByOrderId(orderId); ; if (data != null) { List list = orderCommentService.selectOrderCommentByOid(data.getId()); for (OrderComment orderCommentdata : list) { Users users = usersService.selectUsersById(orderCommentdata.getUid()); if (users != null) { orderCommentdata.setUname(users.getName()); } } return success(list); } else { return AjaxResult.error("订单不存在"); } } /** * 获取用户下拉列表 */ @GetMapping("/userOptions") public AjaxResult getUserOptions() { List users = sysUserService.selectUserList(new SysUser()); return AjaxResult.success(users); } /** * 获取商品下拉列表 */ @GetMapping("/serviceGoodsOptions") public AjaxResult getServiceGoodsOptions() { List goods = serviceGoodsService.selectServiceGoodsList(new ServiceGoods()); return AjaxResult.success(goods); } }