猫妈狗爸伴宠师小程序后端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1172 lines
52 KiB

5 months ago
4 months ago
5 months ago
4 months ago
4 months ago
5 months ago
4 months ago
4 months ago
4 months ago
5 months ago
5 months ago
5 months ago
4 months ago
5 months ago
5 months ago
4 months ago
5 months ago
3 months ago
5 months ago
5 months ago
4 months ago
5 months ago
4 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
4 months ago
5 months ago
5 months ago
4 months ago
4 months ago
5 months ago
5 months ago
3 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
4 months ago
5 months ago
4 months ago
5 months ago
5 months ago
4 months ago
3 months ago
4 months ago
5 months ago
4 months ago
4 months ago
4 months ago
5 months ago
5 months ago
5 months ago
4 months ago
5 months ago
5 months ago
5 months ago
5 months ago
4 months ago
5 months ago
4 months ago
5 months ago
5 months ago
5 months ago
5 months ago
4 months ago
5 months ago
4 months ago
5 months ago
5 months ago
4 months ago
5 months ago
5 months ago
4 months ago
5 months ago
4 months ago
5 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
3 months ago
4 months ago
5 months ago
5 months ago
5 months ago
5 months ago
4 months ago
5 months ago
5 months ago
5 months ago
5 months ago
4 months ago
5 months ago
5 months ago
5 months ago
3 months ago
5 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
5 months ago
5 months ago
5 months ago
5 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
5 months ago
5 months ago
5 months ago
5 months ago
4 months ago
5 months ago
5 months ago
4 months ago
5 months ago
  1. package com.ruoyi.applet.contoller;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  4. import com.cyl.h5.pojo.vo.H5OrderVO;
  5. import com.cyl.h5.service.H5OrderService;
  6. import com.cyl.h5.service.H5PetCareService;
  7. import com.cyl.h5.service.H5PetService;
  8. import com.cyl.manager.oms.domain.OmsOrderService;
  9. import com.cyl.manager.oms.domain.Order;
  10. import com.cyl.manager.oms.domain.OrderItem;
  11. import com.cyl.manager.oms.domain.OrderOperateHistory;
  12. import com.cyl.manager.oms.mapper.OmsOrderServiceMapper;
  13. import com.cyl.manager.oms.mapper.OrderItemMapper;
  14. import com.cyl.manager.oms.mapper.OrderMapper;
  15. import com.cyl.manager.oms.mapper.OrderOperateHistoryMapper;
  16. import com.cyl.manager.oms.service.OrderService;
  17. import com.cyl.manager.ums.domain.Pet;
  18. import com.cyl.manager.ums.domain.PetCare;
  19. import com.cyl.manager.ums.mapper.PetMapper;
  20. import com.cyl.manager.ums.pojo.vo.PetVO;
  21. import com.ruoyi.applet.pojo.dto.AppletOrderDateVo;
  22. import com.ruoyi.applet.pojo.vo.AppletOrderDateAddressReturn;
  23. import com.ruoyi.applet.pojo.vo.AppletOrderDateVoReturn;
  24. import com.ruoyi.applet.service.IMallOrderService;
  25. import com.ruoyi.common.constant.Constants;
  26. import com.ruoyi.common.core.controller.BaseController;
  27. import com.ruoyi.common.core.domain.AjaxResult;
  28. import com.ruoyi.common.core.page.TableDataInfo;
  29. import com.ruoyi.common.exception.ServiceException;
  30. import com.ruoyi.common.utils.StringUtils;
  31. import com.ruoyi.common.utils.uuid.IdUtils;
  32. import com.ruoyi.model.domain.*;
  33. import com.ruoyi.model.service.*;
  34. import com.ruoyi.model.service.impl.AppletOrderItemServiceImpl;
  35. import io.swagger.annotations.Api;
  36. import io.swagger.annotations.ApiOperation;
  37. import lombok.Synchronized;
  38. import org.springframework.beans.factory.annotation.Autowired;
  39. import org.springframework.transaction.annotation.Transactional;
  40. import org.springframework.web.bind.annotation.*;
  41. import java.math.BigDecimal;
  42. import java.math.RoundingMode;
  43. import java.text.SimpleDateFormat;
  44. import java.time.LocalDateTime;
  45. import java.time.temporal.ChronoUnit;
  46. import java.util.*;
  47. import java.util.stream.Collectors;
  48. @Api(description = "订单模块 - 接单大厅流程")
  49. @RestController
  50. @RequestMapping("/applet/order")
  51. public class ApiAppletOrderController extends BaseController {
  52. @Autowired
  53. private IAppletOrderService appletOrderService;
  54. @Autowired
  55. private IAppletOrderItemService appletOrderItemService;
  56. @Autowired
  57. private IAppUsersService appUsersService;
  58. @Autowired
  59. private IAppletUsersTeacherService appletUsersTeacherService;
  60. @Autowired
  61. private IAppletConfigService configService;
  62. @Autowired
  63. private IMallOrderService mallOrderService;
  64. @Autowired
  65. private IAppletOrderItemDateService appletOrderItemDateService;
  66. //下单小程序:那边来的订单信息
  67. @Autowired
  68. private H5OrderService h5OrderService;
  69. @Autowired
  70. private OrderService service;
  71. @Autowired
  72. private AppletOrderItemServiceImpl appletOrderItemServiceImpl;
  73. @Autowired
  74. private H5PetService h5PetService;
  75. @Autowired
  76. private H5PetCareService petCareService;
  77. @Autowired
  78. private PetMapper petMapper;
  79. @Autowired
  80. private OrderMapper orderMapper;
  81. @Autowired
  82. private OrderItemMapper orderItemMapper;
  83. @Autowired
  84. private OmsOrderServiceMapper omsOrderServiceMapper;
  85. @Autowired
  86. private IAppletAddressService appletAddressService;
  87. @Autowired
  88. private IAppletOutDateService appletOutDateService;
  89. @Autowired
  90. private IAppletOrderDateFrequencyService appletOrderDateFrequencyService;
  91. @Autowired
  92. private OrderOperateHistoryMapper orderOperateHistoryMapper;
  93. @ApiOperation("接单大厅列表-带分页")
  94. @GetMapping("/list")
  95. public AjaxResult outDateList(AppletOrder appletOrder){
  96. if(appletOrder.getType()==null){
  97. return AjaxResult.error("type状态不能为空");
  98. }
  99. if(appletOrder.getUserIdJson() == null){
  100. return AjaxResult.error("userIdJson用户信息标识不能为空");
  101. }
  102. //根据用户标识得到用户信息
  103. AppUsers appUsers = appUsersService.selectAppUsersByUserId(appletOrder.getUserId());
  104. BigDecimal petPayment = new BigDecimal(0);
  105. //得到当前用户角色
  106. if(appUsers.getUserBcs()!=0){
  107. //根据当前等级得到当前的返点比例
  108. AppletConfig petPaymentBcs = configService.selectAppletConfigByClassAndNum("pet_payment_bcs", appUsers.getUserBcs());
  109. petPayment = petPaymentBcs.getParamValueNo();
  110. }
  111. startPage();
  112. List<AppletOrder> list = null;
  113. List<AppletOrderItem> itemList = null;
  114. if(appletOrder.getType().equals("0")){
  115. //查询当前伴宠师地址
  116. List<AppletAddress> addressList = appletAddressService.lambdaQuery()
  117. .eq(AppletAddress::getUserId, appUsers.getUserId())
  118. .list();
  119. //没有接单地址,无法接单
  120. if (addressList.size() == 0){
  121. return AjaxResult.error("补全接单地址,开始接单");
  122. }
  123. boolean addressBoolean = false;
  124. for (AppletAddress appletAddress : addressList) {
  125. if (StringUtils.isNotEmpty(appletAddress.getLatitude()) &&
  126. StringUtils.isNotEmpty(appletAddress.getLongitude()) &&
  127. StringUtils.isNotEmpty(appletAddress.getRangeNo()) &&
  128. "true".equals(appletAddress.getStatus())){
  129. addressBoolean = true;
  130. break;
  131. }
  132. }
  133. list = appletOrderService.lambdaQuery()
  134. .eq(AppletOrder::getStatus, 0)
  135. .eq(AppletOrder::getType, appletOrder.getType())
  136. .eq(AppletOrder::getCompanionLevel, appUsers.getUserBcsRole())
  137. .like(appletOrder.getUserIdJson() != null, AppletOrder::getUserIdJson, appletOrder.getUserIdJson())
  138. .and(addressList.size() > 0 && addressBoolean, q -> {
  139. for (AppletAddress appletAddress : addressList) {
  140. //
  141. if (StringUtils.isNotEmpty(appletAddress.getLatitude()) &&
  142. StringUtils.isNotEmpty(appletAddress.getLongitude()) &&
  143. StringUtils.isNotEmpty(appletAddress.getRangeNo()) &&
  144. "true".equals(appletAddress.getStatus())){
  145. //计算地址范围 getRangeNo getLatitude getLongitude
  146. BigDecimal latitude = new BigDecimal(appletAddress.getLatitude());
  147. BigDecimal longitude = new BigDecimal(appletAddress.getLongitude());
  148. BigDecimal range = new BigDecimal(appletAddress.getRangeNo());//公里数
  149. // 将公里数转换为经纬度范围
  150. // 1度纬度约等于111公里
  151. // 1度经度约等于111*cos(纬度)公里
  152. BigDecimal latRange = range.divide(new BigDecimal("111"), 6, RoundingMode.HALF_UP);
  153. BigDecimal lngRange = range.divide(new BigDecimal("111").multiply(new BigDecimal(Math.cos(latitude.doubleValue() * Math.PI / 180))), 6, RoundingMode.HALF_UP);
  154. // 计算经纬度范围
  155. BigDecimal latMin = latitude.subtract(latRange);
  156. BigDecimal latMax = latitude.add(latRange);
  157. BigDecimal lngMin = longitude.subtract(lngRange);
  158. BigDecimal lngMax = longitude.add(lngRange);
  159. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  160. //查询当前地址不接单的日期
  161. List<String> dates = appletOutDateService
  162. .lambdaQuery()
  163. .select(AppletOutDate::getDate)
  164. .eq(AppletOutDate::getAddressId, appletAddress.getId())
  165. .list().stream()
  166. .map(n -> sdf.format(n.getDate()))
  167. .collect(Collectors.toList());
  168. q.or(w -> {
  169. if(dates.size() > 0){
  170. //根据当前日期从serviceList中查询不符合条件的订单id
  171. List<Long> orderIds = omsOrderServiceMapper.selectList(
  172. Wrappers.<OmsOrderService>lambdaQuery()
  173. .select(OmsOrderService::getOrderId)
  174. .groupBy(OmsOrderService::getOrderId)
  175. .in(OmsOrderService::getServiceDate, dates))
  176. .stream().map(n -> n.getOrderId()).collect(Collectors.toList());
  177. if (orderIds.size() > 0){
  178. w.notIn(AppletOrder::getOrderId, orderIds);
  179. }
  180. }
  181. w.between(AppletOrder::getLatitude, latMin, latMax)
  182. .between(AppletOrder::getLongitude, lngMin, lngMax);
  183. });
  184. }
  185. }
  186. })
  187. .list();
  188. // list = appletOrderService.selectAppletOrderListLikeUserIdJson(appletOrder);
  189. for (AppletOrder order : list) {
  190. H5OrderVO h5OrderVO = h5OrderService.orderDetail(order.getOrderId());
  191. // 得到服务信息
  192. List<OmsOrderService> service = h5OrderVO.getOrderServiceList();
  193. // 使用一个 Set 来跟踪已经添加的 PetVO 的 id
  194. Set<Integer> addedPetIds = new HashSet<>();
  195. List<PetVO> petVOList = new ArrayList<>();
  196. for (OmsOrderService service1 : service) {
  197. // 宠物标识不为空的时候查询数据
  198. if (service1.getPetId() != null) {
  199. PetVO petVO = h5PetService.selectPetById(service1.getPetId());
  200. // 检查 petVO 的 id 是否已经添加过
  201. if (petVO != null && !addedPetIds.contains(petVO.getId())) {
  202. service1.setPetVo(petVO);
  203. petVOList.add(petVO);
  204. addedPetIds.add(petVO.getId()); // 标记该 id 已添加
  205. }
  206. }
  207. }
  208. //得到当前用户角色
  209. if(appUsers.getUserBcs()!=0){
  210. //保留两位小数点
  211. BigDecimal multiply = order.getPrice().multiply(petPayment).setScale(2, RoundingMode.HALF_UP);
  212. order.setOrderGive(multiply);
  213. }else{
  214. order.setOrderGive(new BigDecimal(0));
  215. }
  216. h5OrderVO.setPetVOList(petVOList);
  217. order.setH5OrderVO(h5OrderVO);
  218. }
  219. TableDataInfo dataTable = getDataTable(list);
  220. return AjaxResult.success(dataTable);
  221. }
  222. if (appletOrder.getType().equals("1")){
  223. AppletOrder orderQ = new AppletOrder();
  224. orderQ.setUserIdJson(appletOrder.getUserIdJson());
  225. orderQ.setType("1");
  226. orderQ.setStatus(0);
  227. list = appletOrderService.selectAppletOrderList(orderQ);
  228. for (AppletOrder order : list) {
  229. H5OrderVO h5OrderVO = h5OrderService.orderDetail(order.getOrderId());
  230. // 得到服务信息
  231. List<OmsOrderService> service = h5OrderVO.getOrderServiceList();
  232. // 使用一个 Set 来跟踪已经添加的 PetVO 的 id
  233. Set<Integer> addedPetIds = new HashSet<>();
  234. List<PetVO> petVOList = new ArrayList<>();
  235. for (OmsOrderService service1 : service) {
  236. // 宠物标识不为空的时候查询数据
  237. if (service1.getPetId() != null) {
  238. PetVO petVO = h5PetService.selectPetById(service1.getPetId());
  239. // 检查 petVO 的 id 是否已经添加过
  240. if (petVO != null && !addedPetIds.contains(petVO.getId())) {
  241. service1.setPetVo(petVO);
  242. petVOList.add(petVO);
  243. addedPetIds.add(petVO.getId()); // 标记该 id 已添加
  244. }
  245. }
  246. }
  247. //得到当前用户角色
  248. if(appUsers.getUserBcs()!=0){
  249. //保留两位小数点
  250. BigDecimal multiply = order.getPrice().multiply(petPayment).setScale(2, RoundingMode.HALF_UP);
  251. order.setOrderGive(multiply);
  252. }else{
  253. order.setOrderGive(new BigDecimal(0));
  254. }
  255. h5OrderVO.setPetVOList(petVOList);
  256. order.setH5OrderVO(h5OrderVO);
  257. }
  258. TableDataInfo dataTable = getDataTable(list);
  259. return AjaxResult.success(dataTable);
  260. }
  261. if (appletOrder.getType().equals("2")){
  262. AppletOrderItem appletOrderItem = new AppletOrderItem();
  263. appletOrderItem.setStatus(2);
  264. appletOrderItem.setUserId(appletOrder.getUserId());
  265. itemList = appletOrderItemService.selectAppletOrderItemList(appletOrderItem);
  266. for (AppletOrderItem orderItem:itemList){
  267. H5OrderVO h5OrderVO = h5OrderService.orderDetail(orderItem.getOrderId());
  268. // 得到服务信息
  269. List<OmsOrderService> service = h5OrderVO.getOrderServiceList();
  270. // 使用一个 Set 来跟踪已经添加的 PetVO 的 id
  271. Set<Integer> addedPetIds = new HashSet<>();
  272. List<PetVO> petVOList = new ArrayList<>();
  273. for (OmsOrderService service1 : service) {
  274. // 宠物标识不为空的时候查询数据
  275. if (service1.getPetId() != null) {
  276. PetVO petVO = h5PetService.selectPetById(service1.getPetId());
  277. // 检查 petVO 的 id 是否已经添加过
  278. if (petVO != null && !addedPetIds.contains(petVO.getId())) {
  279. service1.setPetVo(petVO);
  280. petVOList.add(petVO);
  281. addedPetIds.add(petVO.getId()); // 标记该 id 已添加
  282. }
  283. }
  284. }
  285. orderItem.setOrderGive(orderItem.getOrderGivePrice());
  286. h5OrderVO.setPetVOList(petVOList);
  287. orderItem.setH5OrderVO(h5OrderVO);
  288. }
  289. TableDataInfo dataTable = getDataTable(itemList);
  290. return AjaxResult.success(dataTable);
  291. }
  292. return AjaxResult.success();
  293. }
  294. //接单大厅 - 根据订单标识查询订单详情的接口
  295. @ApiOperation("接单大厅 - 根据订单标识查询订单详情的接口")
  296. @GetMapping("/getByOrderId")
  297. public AjaxResult getByOrderId(AppletOrder appletOrder){
  298. if(appletOrder.getId() == null){
  299. return AjaxResult.error("订单标识不能为空");
  300. }
  301. if(appletOrder.getUserId() == null){
  302. return AjaxResult.error("用户标识不能为空");
  303. }
  304. //根据用户标识得到用户信息
  305. AppUsers appUsers = appUsersService.selectAppUsersByUserId(appletOrder.getUserId());
  306. BigDecimal petPayment = new BigDecimal(0);
  307. //得到当前用户角色
  308. if(appUsers.getUserBcs()!=0){
  309. //根据当前等级得到当前的返点比例
  310. AppletConfig petPaymentBcs = configService.selectAppletConfigByClassAndNum("pet_payment_bcs", appUsers.getUserBcs());
  311. petPayment = petPaymentBcs.getParamValueNo();
  312. }
  313. AppletOrder order = appletOrderService.selectAppletOrderById(appletOrder.getId());
  314. //如果是流失订单
  315. if (order==null){
  316. // AppletOrderItem orderQ = new AppletOrderItem();
  317. // orderQ.setUserId(appletOrder.getUserId());
  318. // orderQ.setOrderId(appletOrder.getOrderId());
  319. AppletOrderItem orderItem = appletOrderItemService.selectAppletOrderItemById(appletOrder.getId());
  320. H5OrderVO h5OrderVO = h5OrderService.orderDetail(orderItem.getOrderId());
  321. // 得到服务信息
  322. List<OmsOrderService> service = h5OrderVO.getOrderServiceList();
  323. // 使用一个 Set 来跟踪已经添加的 PetVO 的 id
  324. Set<Integer> addedPetIds = new HashSet<>();
  325. List<PetVO> petVOList = new ArrayList<>();
  326. for (OmsOrderService service1 : service) {
  327. // 宠物标识不为空的时候查询数据
  328. if (service1.getPetId() != null) {
  329. PetVO petVO = h5PetService.selectPetById(service1.getPetId());
  330. // 检查 petVO 的 id 是否已经添加过
  331. if (petVO != null && !addedPetIds.contains(petVO.getId())) {
  332. service1.setPetVo(petVO);
  333. petVOList.add(petVO);
  334. addedPetIds.add(petVO.getId()); // 标记该 id 已添加
  335. }
  336. }
  337. }
  338. //得到当前用户角色
  339. if(appUsers.getUserBcs()!=0){
  340. //保留两位小数点
  341. BigDecimal multiply = orderItem.getPrice().multiply(petPayment).setScale(2, RoundingMode.HALF_UP);
  342. orderItem.setOrderGive(multiply);
  343. }else{
  344. orderItem.setOrderGive(new BigDecimal(0));
  345. }
  346. h5OrderVO.setPetVOList(petVOList);
  347. orderItem.setH5OrderVO(h5OrderVO);
  348. // order.setManagerOrderDetailVO(service.selectById(order.getOrderId()));
  349. Map<String, Object> map = new HashMap();
  350. map.put("order",orderItem);
  351. AppletConfig config = new AppletConfig();
  352. config.setParamClass("pet_payment_bcs");
  353. List<AppletConfig> appletConfigs = configService.selectAppletConfigList(config);
  354. map.put("pet_payment_bcs",appletConfigs);
  355. return AjaxResult.success("接单大厅查看详情",map);
  356. }
  357. H5OrderVO h5OrderVO = h5OrderService.orderDetail(order.getOrderId());
  358. // 得到服务信息
  359. List<OmsOrderService> service = h5OrderVO.getOrderServiceList();
  360. // 使用一个 Set 来跟踪已经添加的 PetVO 的 id
  361. Set<Integer> addedPetIds = new HashSet<>();
  362. List<PetVO> petVOList = new ArrayList<>();
  363. for (OmsOrderService service1 : service) {
  364. // 宠物标识不为空的时候查询数据
  365. if (service1.getPetId() != null) {
  366. PetVO petVO = h5PetService.selectPetById(service1.getPetId());
  367. // 检查 petVO 的 id 是否已经添加过
  368. if (petVO != null && !addedPetIds.contains(petVO.getId())) {
  369. service1.setPetVo(petVO);
  370. petVOList.add(petVO);
  371. addedPetIds.add(petVO.getId()); // 标记该 id 已添加
  372. }
  373. }
  374. }
  375. //得到当前用户角色
  376. if(appUsers.getUserBcs()!=0){
  377. //保留两位小数点
  378. BigDecimal multiply = order.getPrice().multiply(petPayment).setScale(2, RoundingMode.HALF_UP);
  379. order.setOrderGive(multiply);
  380. }else{
  381. order.setOrderGive(new BigDecimal(0));
  382. }
  383. h5OrderVO.setPetVOList(petVOList);
  384. order.setH5OrderVO(h5OrderVO);
  385. // order.setManagerOrderDetailVO(service.selectById(order.getOrderId()));
  386. Map<String, Object> map = new HashMap();
  387. map.put("order",order);
  388. AppletConfig config = new AppletConfig();
  389. config.setParamClass("pet_payment_bcs");
  390. List<AppletConfig> appletConfigs = configService.selectAppletConfigList(config);
  391. map.put("pet_payment_bcs",appletConfigs);
  392. return AjaxResult.success("接单大厅查看详情",map);
  393. }
  394. //接单大厅 - 拒绝、无法接单
  395. @ApiOperation("接单大厅 - 拒绝、无法接单")
  396. @PostMapping("/endByOrderId")
  397. public AjaxResult endByOrderId(@RequestBody AppletOrder appletOrder){
  398. if(appletOrder.getId() == null){
  399. return AjaxResult.error("订单标识不能为空");
  400. }
  401. if(appletOrder.getUserId() == null){
  402. return AjaxResult.error("userId用户信息标识不能为空");
  403. }
  404. if(appletOrder.getReason() == null){
  405. return AjaxResult.error("无法接单原因不能为空");
  406. }
  407. AppletOrder order = appletOrderService.selectAppletOrderById(appletOrder.getId());
  408. //生成我的订单信息
  409. AppletOrderItem appletOrderItem = new AppletOrderItem();
  410. appletOrderItem.setCreateTime(order.getCreateTime());
  411. appletOrderItem.setType(order.getType());
  412. appletOrderItem.setStatus(2);
  413. appletOrderItem.setReason(appletOrder.getReason());
  414. // appletOrderItem.setStartTime(LocalDateTime.now());
  415. appletOrderItem.setUserId(appletOrder.getUserId());
  416. //根据用户标识查询用户认证信息
  417. AppUsers appUsers = appUsersService.selectAppUsersByUserId(appletOrder.getUserId());
  418. AppletUsersTeacher appletUsersTeacher = appletUsersTeacherService.selectAppletUsersTeacherByUserId(appletOrder.getUserId());
  419. appletOrderItem.setName(appletUsersTeacher.getName());
  420. appletOrderItem.setPhone(appletUsersTeacher.getPhone());
  421. appletOrderItem.setOrderStatus(3); //相当于已经取消
  422. //得到当前用户的伴宠师等级
  423. Integer userBcs = appUsers.getUserBcs();
  424. //查询用户的当前分配比例
  425. AppletConfig petPaymentBcs = configService.selectAppletConfigByClassAndNum("pet_payment_bcs", userBcs);
  426. //得到配置百分比
  427. BigDecimal percent = petPaymentBcs.getParamValueNo();
  428. //得到订单支付金额
  429. BigDecimal orderPrice = order.getPrice();
  430. //计算订单佣金 = 支付金额 * 百分比
  431. BigDecimal orderGivePrice = orderPrice.multiply(percent);
  432. appletOrderItem.setPrice(orderPrice);
  433. appletOrderItem.setOrderGiveProportion(percent);
  434. appletOrderItem.setOrderGivePrice(orderGivePrice);
  435. appletOrderItem.setAddress(order.getAddress());
  436. appletOrderItem.setOrderSn(order.getOrderSn());
  437. appletOrderItem.setOrderId(order.getOrderId());
  438. appletOrderItem.setIsPet(0);
  439. appletOrderItem.setIsDate(0);
  440. appletOrderItem.setIsAddress(0);
  441. appletOrderItem.setPayTime(order.getPayTime());
  442. appletOrderItemService.insertAppletOrderItem(appletOrderItem);
  443. appletOrder.setType("0");//派单归为派单中
  444. appletOrder.setStatus(0);
  445. appletOrder.setNum(order.getNum()+1);
  446. appletOrder.setUpdateTime(LocalDateTime.now());
  447. //根据系统派单规则给到所有的接单者 、、还需要修改现在给所有人
  448. //appletUserId 用json形式储存 == 》这个地方还需要调优
  449. AppUsers usersGo = new AppUsers();
  450. usersGo.setUserBcs(1);
  451. List<AppUsers> appUsersList = appUsersService.selectAppUsersList(usersGo);
  452. //得到所有的伴宠师id
  453. String appletUserId = "";
  454. for (AppUsers users : appUsersList) {
  455. if(!appletOrder.getUserId().equals(users.getUserId())){
  456. appletUserId += users.getUserId()+",";
  457. }
  458. }
  459. appletOrder.setUserIdJson(appletUserId);
  460. //清空接单人字段
  461. appletOrder.setUserIdJson("");
  462. appletOrderService.updateAppletOrder(appletOrder);
  463. return AjaxResult.success("拒单成功",appletOrder);
  464. }
  465. //接单大厅 - 立即接单
  466. @ApiOperation("接单大厅 - 立即接单")
  467. @PostMapping("/startByOrderId")
  468. @Synchronized
  469. @Transactional(timeout = 30)
  470. public AjaxResult startByOrderId(@RequestBody AppletOrder appletOrder){
  471. if(appletOrder.getId() == null){
  472. return AjaxResult.error("订单标识不能为空");
  473. }
  474. if(appletOrder.getUserId() == null){
  475. return AjaxResult.error("userId用户信息标识不能为空");
  476. }
  477. AppletOrder order = appletOrderService.selectAppletOrderById(appletOrder.getId());
  478. if (order == null){
  479. return AjaxResult.error("无效订单");
  480. }
  481. if(order.getStatus() == 1){
  482. return AjaxResult.error("该订单已被接单");
  483. }
  484. //生成我的订单信息
  485. AppletOrderItem appletOrderItem = new AppletOrderItem();
  486. long id = System.currentTimeMillis();
  487. appletOrderItem.setId(id);
  488. appletOrderItem.setCreateTime(order.getCreateTime());
  489. appletOrderItem.setType(order.getType());
  490. appletOrderItem.setStatus(1);
  491. // appletOrderItem.setReason(appletOrder.getReason());
  492. appletOrderItem.setStartTime(LocalDateTime.now());
  493. appletOrderItem.setUserId(appletOrder.getUserId());
  494. //根据用户标识查询用户认证信息
  495. AppUsers appUsers = appUsersService.selectAppUsersByUserId(appletOrder.getUserId());
  496. AppletUsersTeacher appletUsersTeacher = appletUsersTeacherService.selectAppletUsersTeacherByUserId(appletOrder.getUserId());
  497. appletOrderItem.setName(appletUsersTeacher.getName());
  498. appletOrderItem.setPhone(appletUsersTeacher.getPhone());
  499. appletOrderItem.setOrderStatus(0);
  500. //得到当前用户的伴宠师等级
  501. Integer userBcs = appUsers.getUserBcs();
  502. //查询用户的当前分配比例
  503. AppletConfig petPaymentBcs = configService.selectAppletConfigByClassAndNum("pet_payment_bcs", userBcs);
  504. //得到配置百分比
  505. BigDecimal percent = petPaymentBcs.getParamValueNo();
  506. //得到订单支付金额
  507. BigDecimal orderPrice = order.getPrice();
  508. //计算订单佣金 = 支付金额 * 百分比
  509. BigDecimal orderGivePrice = orderPrice.multiply(percent);
  510. appletOrderItem.setPrice(orderPrice);
  511. appletOrderItem.setOrderGiveProportion(percent);
  512. appletOrderItem.setOrderGivePrice(orderGivePrice);
  513. appletOrderItem.setAddress(order.getAddress());
  514. appletOrderItem.setOrderSn(order.getOrderSn());
  515. appletOrderItem.setOrderId(order.getOrderId());
  516. appletOrderItem.setIsPet(1);
  517. appletOrderItem.setIsDate(1);
  518. appletOrderItem.setIsAddress(1);
  519. appletOrderItemService.insertAppletOrderItem(appletOrderItem);
  520. order.setStatus(1);//修改状态成已接单
  521. order.setUserId(appletOrder.getUserId());//
  522. order.setAcceptTime(LocalDateTime.now());//接单时间
  523. order.setWhenTakOrders(ChronoUnit.SECONDS.between(order.getPayTime(), order.getAcceptTime()));//接单用时
  524. // 只更新必要的字段
  525. appletOrderService.lambdaUpdate()
  526. .eq(AppletOrder::getId, order.getId())
  527. .set(AppletOrder::getStatus, order.getStatus())
  528. .set(AppletOrder::getUserId, order.getUserId())
  529. .set(AppletOrder::getAcceptTime, order.getAcceptTime())
  530. .set(AppletOrder::getWhenTakOrders, order.getWhenTakOrders())
  531. .update();
  532. H5OrderVO h5OrderVO = h5OrderService.orderDetail(order.getOrderId());
  533. //根据服务频率 服务日期 生成日订单 【废弃】
  534. // for (OmsOrderService service : h5OrderVO.getOrderServiceList()) {
  535. // AppletOrderItemDate appletOrderItemDate = new AppletOrderItemDate();
  536. //
  537. // appletOrderItemDate.setUserId(appletOrder.getUserId());
  538. // appletOrderItemDate.setOrderId(id);
  539. // appletOrderItemDate.setStatus(0);
  540. // appletOrderItemDate.setOrderServiceId(service.getId());
  541. // appletOrderItemDate.setServiceDate(service.getServiceDate());
  542. // appletOrderItemDate.setCityAddress(h5OrderVO.getReceiverProvince() + h5OrderVO.getReceiverCity() + h5OrderVO.getReceiverDistrict());
  543. // appletOrderItemDate.setAddress(h5OrderVO.getReceiverDetailAddress());
  544. // appletOrderItemDateService.insertAppletOrderItemDate(appletOrderItemDate);
  545. // }
  546. //TODO 这里需要优化流失订单的逻辑
  547. //生成其他人的流失订单
  548. String[] split = order.getUserIdJson().split(",");
  549. for (String s : split) {
  550. if (Long.parseLong(s) != appletOrder.getUserId()) {
  551. AppletOrderItem appletOrderItemOther = new AppletOrderItem();
  552. appletOrderItemOther.setCreateTime(order.getCreateTime());
  553. appletOrderItemOther.setType(order.getType());
  554. appletOrderItemOther.setStatus(2);
  555. appletOrderItemOther.setReason("被其他伴宠师接单");
  556. appletOrderItemOther.setUserId(Long.valueOf(s));
  557. //根据用户标识查询用户认证信息
  558. AppUsers appUsersOther = appUsersService.selectAppUsersByUserId(Long.valueOf(s));
  559. AppletUsersTeacher appletUsersTeacherOther = appletUsersTeacherService.selectAppletUsersTeacherByUserId(Long.valueOf(s));
  560. appletOrderItemOther.setName(appletUsersTeacherOther.getName());
  561. appletOrderItemOther.setPhone(appletUsersTeacherOther.getPhone());
  562. appletOrderItemOther.setOrderStatus(3); //相当于已经取消
  563. //得到当前用户的伴宠师等级
  564. Integer userBcsOther = appUsersOther.getUserBcs();
  565. //查询用户的当前分配比例
  566. AppletConfig petPaymentBcsOther = configService.selectAppletConfigByClassAndNum("pet_payment_bcs", userBcsOther);
  567. //得到配置百分比
  568. BigDecimal percentOther = petPaymentBcsOther.getParamValueNo();
  569. //得到订单支付金额
  570. BigDecimal orderPriceOther = order.getPrice();
  571. //计算订单佣金 = 支付金额 * 百分比
  572. BigDecimal orderGivePriceOther = orderPriceOther.multiply(percentOther);
  573. appletOrderItemOther.setPrice(orderPrice);
  574. appletOrderItemOther.setOrderGiveProportion(percent);
  575. appletOrderItemOther.setOrderGivePrice(orderGivePriceOther);
  576. appletOrderItemOther.setAddress(order.getAddress());
  577. appletOrderItemOther.setOrderSn(order.getOrderSn());
  578. appletOrderItemOther.setOrderId(order.getOrderId());
  579. appletOrderItemOther.setIsPet(0);
  580. appletOrderItemOther.setIsDate(0);
  581. appletOrderItemOther.setIsAddress(0);
  582. appletOrderItemOther.setPayTime(order.getPayTime());
  583. appletOrderItemService.insertAppletOrderItem(appletOrderItemOther);
  584. }
  585. }
  586. //生成下单小程序的订单记录
  587. OrderOperateHistory optHistory = new OrderOperateHistory();
  588. optHistory.setOrderId(order.getOrderId());
  589. optHistory.setOrderSn(order.getOrderSn());
  590. optHistory.setOperateMan("接单伴宠师-" + order.getUserId());
  591. optHistory.setOrderStatus(Constants.H5OrderStatus.DELIVERED);
  592. optHistory.setCreateTime(LocalDateTime.now());
  593. optHistory.setCreateBy(order.getUserId());
  594. optHistory.setUpdateBy(order.getUserId());
  595. optHistory.setUpdateTime(LocalDateTime.now());
  596. orderOperateHistoryMapper.insert(optHistory);
  597. //修改下单小程序的订单状态
  598. Order omsOrder = orderMapper.selectById(order.getOrderId());
  599. if (omsOrder != null && omsOrder.getStatus() == Constants.H5OrderStatus.NOT_DELIVERED){
  600. omsOrder.setStatus(Constants.H5OrderStatus.DELIVERED);
  601. orderMapper.updateById(omsOrder);
  602. }else {
  603. throw new ServiceException("订单已被接单");
  604. }
  605. // 生成日订单数据
  606. appletOrderDateFrequencyService.aceptOrdersGenerateDayOrdersByOrderVO(h5OrderVO, appletOrder.getUserId());
  607. return AjaxResult.success("接单成功",appletOrder);
  608. }
  609. //我的订单流程
  610. @ApiOperation("小程序-我的订单流程-总订单")
  611. @GetMapping("/myList")
  612. public AjaxResult myList(AppletOrderItem orderItem){
  613. if(orderItem.getOrderStatus()==null){
  614. return AjaxResult.error("orderStatus状态不能为空");
  615. }
  616. if(orderItem.getUserId() == null){
  617. return AjaxResult.error("userId用户信息标识不能为空");
  618. }
  619. List<AppletOrderItem> itemList = appletOrderItemService.selectAppletOrderItemList(orderItem);
  620. // for (AppletOrderItem item:itemList){
  621. // H5OrderVO h5OrderVO = h5OrderService.orderDetail(item.getOrderId());
  622. // //得到服务信息
  623. // List<OmsOrderService> service = h5OrderVO.getOrderServiceList();
  624. // List<PetVO> petVOList = new ArrayList<>();
  625. // for (OmsOrderService service1:service){
  626. // //宠物标识不为空的时候查询数据
  627. // if(service1.getPetId()!=null){
  628. // PetVO petVO = h5PetService.selectPetById(service1.getPetId());
  629. // service1.setPetVo(petVO);
  630. // petVOList.add(petVO);
  631. // }
  632. // }
  633. // h5OrderVO.setPetVOList(petVOList);
  634. // item.setH5OrderVO(h5OrderVO);
  635. // }
  636. for (AppletOrderItem item:itemList){
  637. H5OrderVO h5OrderVO = h5OrderService.orderDetail(item.getOrderId());
  638. // 得到服务信息
  639. List<OmsOrderService> service = h5OrderVO.getOrderServiceList();
  640. // 使用一个 Set 来跟踪已经添加的 PetVO 的 id
  641. Set<Integer> addedPetIds = new HashSet<>();
  642. List<PetVO> petVOList = new ArrayList<>();
  643. for (OmsOrderService service1 : service) {
  644. // 宠物标识不为空的时候查询数据
  645. if (service1.getPetId() != null) {
  646. PetVO petVO = h5PetService.selectPetById(service1.getPetId());
  647. // 检查 petVO 的 id 是否已经添加过
  648. if (petVO != null && !addedPetIds.contains(petVO.getId())) {
  649. service1.setPetVo(petVO);
  650. petVOList.add(petVO);
  651. addedPetIds.add(petVO.getId()); // 标记该 id 已添加
  652. }
  653. }
  654. }
  655. h5OrderVO.setPetVOList(petVOList);
  656. item.setH5OrderVO(h5OrderVO);
  657. }
  658. TableDataInfo dataTable = getDataTable(itemList);
  659. return AjaxResult.success("我的订单数据列表",dataTable);
  660. }
  661. //
  662. // //我的订单流程
  663. // @ApiOperation("小程序-我的订单流程-日订单")
  664. // @GetMapping("/myDateList")
  665. // public AjaxResult myDateList(AppletOrderDateVo dateVo){
  666. // if(dateVo.getUserId() == null){
  667. // return AjaxResult.error("userId用户标识不能为空");
  668. // }
  669. // if(dateVo.getStatus() == null){
  670. // return AjaxResult.error("status当前状态不能为空");
  671. // }
  672. //
  673. // //查询我所有的日订单数据
  674. // AppletOrderItemDate date = new AppletOrderItemDate();
  675. // date.setUserId(dateVo.getUserId());
  676. // date.setStatus(dateVo.getStatus());
  677. // List<AppletOrderItemDate> addressList = appletOrderItemDateService.selectAppletOrderItemDateList(date);
  678. //
  679. // Set<String> uniqueDates = new HashSet<>();
  680. // List<AppletOrderDateVoReturn> dateVoReturnList = new ArrayList<>();
  681. //
  682. // for (AppletOrderItemDate date1 : addressList) {
  683. // if (uniqueDates.add(date1.getServiceDate())) {
  684. // AppletOrderDateVoReturn dateVoReturn = new AppletOrderDateVoReturn();
  685. // dateVoReturn.setServiceDate(date1.getServiceDate());
  686. //
  687. // if(dateVo.getStatus() == 1){
  688. // AppletOrderItem orders = appletOrderItemService.selectAppletOrderItemById(date1.getOrderId());
  689. // if(orders.getOrderStatus()==2){
  690. // dateVoReturnList.add(dateVoReturn);
  691. // }
  692. // }else{
  693. // dateVoReturnList.add(dateVoReturn);
  694. // }
  695. //
  696. // }
  697. // }
  698. //
  699. //
  700. // //得到日订单集合
  701. // for (AppletOrderDateVoReturn dateVoReturn : dateVoReturnList) {
  702. // //得到日订单日期
  703. // String serviceDate = dateVoReturn.getServiceDate();
  704. //
  705. // //订单下订单集合
  706. // AppletOrderItemDate service = new AppletOrderItemDate();
  707. // service.setServiceDate(serviceDate);
  708. //
  709. // List<AppletOrderItemDate> serviceList = appletOrderItemDateService.selectAppletOrderItemDateList(service);
  710. // List<AppletOrderDateAddressReturn> uniqueOrderDetails = serviceList.stream()
  711. // .collect(Collectors.toMap(
  712. // AppletOrderItemDate::getOrderId, // 使用orderId作为键
  713. // item -> new AppletOrderDateAddressReturn(item.getOrderId(), item.getCityAddress(), item.getAddress()), // 创建OrderDetails对象作为值
  714. // (existing, replacement) -> existing // 如果有重复的orderId,保留现有的(可以根据需要修改合并逻辑)
  715. // ))
  716. // .values()
  717. // .stream()
  718. // .collect(Collectors.toList());
  719. // // 假设dateVoReturn有一个setOrderList方法
  720. //
  721. // dateVoReturn.setOrderList(uniqueOrderDetails);
  722. // dateVoReturn.setNum(uniqueOrderDetails.size());
  723. //
  724. // for (AppletOrderDateAddressReturn uniqueOrderDetail : uniqueOrderDetails) {
  725. // AppletOrderItemDate appletOrderItemDate = new AppletOrderItemDate();
  726. // appletOrderItemDate.setOrderId(uniqueOrderDetail.getOrderId());
  727. // appletOrderItemDate.setServiceDate(serviceDate);
  728. //
  729. //
  730. // List<AppletOrderItemDate> appletOrderItemDates = appletOrderItemDateService.selectAppletOrderItemDateList(appletOrderItemDate);
  731. // for (AppletOrderItemDate appletOrderItemDate1 : appletOrderItemDates) {
  732. // // 组装item
  733. // QueryWrapper<OrderItem> orderItemQw = new QueryWrapper<>();
  734. // orderItemQw.eq("order_service_id", appletOrderItemDate1.getOrderServiceId());
  735. // List<OrderItem> orderItemList = orderItemMapper.selectList(orderItemQw);
  736. // appletOrderItemDate1.setOrderItemList(orderItemList);
  737. //
  738. //
  739. // OmsOrderService omsOrderService = omsOrderServiceMapper.selectById(appletOrderItemDate1.getOrderServiceId());
  740. // omsOrderService.setPetVo(h5PetService.selectPetById(omsOrderService.getPetId()));
  741. // appletOrderItemDate1.setOrderServiceList(omsOrderService);
  742. // }
  743. //
  744. // uniqueOrderDetail.setAppletOrderItemDate(appletOrderItemDates);
  745. //
  746. //
  747. //
  748. // }
  749. //
  750. //
  751. // }
  752. //
  753. //
  754. //
  755. //
  756. //
  757. //
  758. //
  759. // return AjaxResult.success("日订单数据",dateVoReturnList);
  760. // }
  761. @ApiOperation("小程序-我的订单流程-日订单")
  762. @GetMapping("/myDateList")
  763. public AjaxResult myDateList(AppletOrderDateVo dateVo) {
  764. if (dateVo.getUserId() == null) {
  765. return AjaxResult.error("userId用户标识不能为空");
  766. }
  767. if (dateVo.getStatus() == null) {
  768. return AjaxResult.error("status当前状态不能为空");
  769. }
  770. // 查询我所有的日订单数据
  771. AppletOrderItemDate date = new AppletOrderItemDate();
  772. date.setUserId(dateVo.getUserId());
  773. date.setStatus(dateVo.getStatus());
  774. List<AppletOrderItemDate> addressList = appletOrderItemDateService.selectAppletOrderItemDateList(date);
  775. // 用于存储按日期分组的订单
  776. Map<String, List<AppletOrderItemDate>> dateToOrdersMap = new HashMap<>();
  777. for (AppletOrderItemDate dateItem : addressList) {
  778. String serviceDate = dateItem.getServiceDate();
  779. dateToOrdersMap.computeIfAbsent(serviceDate, k -> new ArrayList<>()).add(dateItem);
  780. }
  781. List<AppletOrderDateVoReturn> dateVoReturnList = new ArrayList<>();
  782. // 遍历每个日期
  783. for (Map.Entry<String, List<AppletOrderItemDate>> entry : dateToOrdersMap.entrySet()) {
  784. String serviceDate = entry.getKey();
  785. List<AppletOrderItemDate> ordersForDate = entry.getValue();
  786. // 遍历该日期的所有订单
  787. for (AppletOrderItemDate orderItemDate : ordersForDate) {
  788. AppletOrderDateVoReturn dateVoReturn = new AppletOrderDateVoReturn();
  789. dateVoReturn.setServiceDate(serviceDate);
  790. if (dateVo.getStatus() == 1) {
  791. AppletOrderItem orders = appletOrderItemService.selectAppletOrderItemById(orderItemDate.getOrderId());
  792. if (orders.getOrderStatus() == 2) {
  793. // 直接添加,不进行过滤
  794. dateVoReturnList.add(dateVoReturn);
  795. }
  796. } else {
  797. dateVoReturnList.add(dateVoReturn);
  798. }
  799. // 设置订单详情
  800. List<AppletOrderDateAddressReturn> orderDetailsList = new ArrayList<>();
  801. AppletOrderDateAddressReturn orderDetails = new AppletOrderDateAddressReturn(
  802. orderItemDate.getOrderId(),
  803. orderItemDate.getCityAddress(),
  804. orderItemDate.getAddress()
  805. );
  806. orderDetailsList.add(orderDetails);
  807. dateVoReturn.setOrderList(orderDetailsList);
  808. dateVoReturn.setNum(orderDetailsList.size());
  809. // 设置订单项
  810. AppletOrderItemDate appletOrderItemDate = new AppletOrderItemDate();
  811. appletOrderItemDate.setOrderId(orderItemDate.getOrderId());
  812. appletOrderItemDate.setServiceDate(serviceDate);
  813. List<AppletOrderItemDate> appletOrderItemDates = appletOrderItemDateService.selectAppletOrderItemDateList(appletOrderItemDate);
  814. for (AppletOrderItemDate itemDate : appletOrderItemDates) {
  815. QueryWrapper<OrderItem> orderItemQw = new QueryWrapper<>();
  816. orderItemQw.eq("order_service_id", itemDate.getOrderServiceId());
  817. List<OrderItem> orderItemList = orderItemMapper.selectList(orderItemQw);
  818. itemDate.setOrderItemList(orderItemList);
  819. OmsOrderService omsOrderService = omsOrderServiceMapper.selectById(itemDate.getOrderServiceId());
  820. omsOrderService.setPetVo(h5PetService.selectPetById(omsOrderService.getPetId()));
  821. itemDate.setOrderServiceList(omsOrderService);
  822. }
  823. orderDetails.setAppletOrderItemDate(appletOrderItemDates);
  824. }
  825. }
  826. return AjaxResult.success("日订单数据", dateVoReturnList);
  827. }
  828. //
  829. // @ApiOperation("小程序-我的订单流程-日订单")
  830. // @GetMapping("/myDateList")
  831. // public AjaxResult myDateList(AppletOrderDateVo dateVo) {
  832. // if (dateVo.getUserId() == null) {
  833. // return AjaxResult.error("userId用户标识不能为空");
  834. // }
  835. // if (dateVo.getStatus() == null) {
  836. // return AjaxResult.error("status当前状态不能为空");
  837. // }
  838. //
  839. // // 查询我所有的日订单数据
  840. // AppletOrderItemDate date = new AppletOrderItemDate();
  841. // date.setUserId(dateVo.getUserId());
  842. // date.setStatus(dateVo.getStatus());
  843. // List<AppletOrderItemDate> addressList = appletOrderItemDateService.selectAppletOrderItemDateList(date);
  844. //
  845. // // 用于存储按日期分组的订单
  846. // Map<String, List<AppletOrderItemDate>> dateToOrdersMap = new HashMap<>();
  847. //
  848. // for (AppletOrderItemDate dateItem : addressList) {
  849. // String serviceDate = dateItem.getServiceDate();
  850. // dateToOrdersMap.computeIfAbsent(serviceDate, k -> new ArrayList<>()).add(dateItem);
  851. // }
  852. //
  853. // List<AppletOrderDateVoReturn> dateVoReturnList = new ArrayList<>();
  854. //
  855. // // 遍历每个日期
  856. // for (Map.Entry<String, List<AppletOrderItemDate>> entry : dateToOrdersMap.entrySet()) {
  857. // String serviceDate = entry.getKey();
  858. // List<AppletOrderItemDate> ordersForDate = entry.getValue();
  859. //
  860. // // 创建一个合并的订单对象
  861. // AppletOrderDateVoReturn dateVoReturn = new AppletOrderDateVoReturn();
  862. // dateVoReturn.setServiceDate(serviceDate);
  863. //
  864. // // 合并订单的地址信息(假设所有订单地址相同,或者选择第一个订单的地址)
  865. // if (!ordersForDate.isEmpty()) {
  866. // AppletOrderItemDate firstOrder = ordersForDate.get(0);
  867. // AppletOrderDateAddressReturn orderDetails = new AppletOrderDateAddressReturn(
  868. // firstOrder.getOrderId(),
  869. // firstOrder.getCityAddress(),
  870. // firstOrder.getAddress()
  871. // );
  872. //
  873. // List<AppletOrderDateAddressReturn> orderDetailsList = new ArrayList<>();
  874. // orderDetailsList.add(orderDetails);
  875. //
  876. // dateVoReturn.setOrderList(orderDetailsList);
  877. // dateVoReturn.setNum(ordersForDate.size()); // 设置订单数量
  878. //
  879. // // 设置订单项
  880. // List<AppletOrderItemDate> appletOrderItemDates = new ArrayList<>();
  881. // for (AppletOrderItemDate orderItemDate : ordersForDate) {
  882. // AppletOrderItemDate itemDate = new AppletOrderItemDate();
  883. // itemDate.setOrderId(orderItemDate.getOrderId());
  884. // itemDate.setServiceDate(serviceDate);
  885. //
  886. // // 查询订单项信息
  887. // QueryWrapper<OrderItem> orderItemQw = new QueryWrapper<>();
  888. // orderItemQw.eq("order_service_id", itemDate.getOrderServiceId());
  889. // List<OrderItem> orderItemList = orderItemMapper.selectList(orderItemQw);
  890. // itemDate.setOrderItemList(orderItemList);
  891. //
  892. // OmsOrderService omsOrderService = omsOrderServiceMapper.selectById(itemDate.getOrderServiceId());
  893. // omsOrderService.setPetVo(h5PetService.selectPetById(omsOrderService.getPetId()));
  894. // itemDate.setOrderServiceList(omsOrderService);
  895. //
  896. // appletOrderItemDates.add(itemDate);
  897. // }
  898. //
  899. // orderDetails.setAppletOrderItemDate(appletOrderItemDates);
  900. // }
  901. //
  902. // // 添加合并后的订单到结果列表
  903. // dateVoReturnList.add(dateVoReturn);
  904. // }
  905. //
  906. // return AjaxResult.success("日订单数据", dateVoReturnList);
  907. // }
  908. //我的订单流程
  909. @ApiOperation("小程序-我的订单流程订单详情")
  910. @GetMapping("/getOrderItemById")
  911. public AjaxResult getOrderItemById(AppletOrderItem orderItem){
  912. if(orderItem.getId() == null){
  913. return AjaxResult.error("订单标识不能为空");
  914. }
  915. if(orderItem.getUserId() == null){
  916. return AjaxResult.error("用户标识不能为空");
  917. }
  918. AppletOrderItem order = appletOrderItemService.selectAppletOrderItemById(orderItem.getId());
  919. // H5OrderVO h5OrderVO1 = h5OrderService.orderDetail(order.getOrderId());
  920. H5OrderVO h5OrderVO = h5OrderService.orderDetail(order.getOrderId());
  921. //得到服务信息
  922. List<OmsOrderService> service = h5OrderVO.getOrderServiceList();
  923. List<PetVO> petVOList = new ArrayList<>();
  924. for (OmsOrderService service1:service){
  925. //宠物标识不为空的时候查询数据
  926. if(service1.getPetId()!=null){
  927. PetVO petVO = h5PetService.selectPetById(service1.getPetId());
  928. service1.setPetVo(petVO);
  929. petVOList.add(petVO);
  930. }
  931. h5OrderVO.setPetVOList(petVOList);
  932. }
  933. order.setH5OrderVO(h5OrderVO);
  934. // order.setManagerOrderDetailVO(service.selectById(order.getOrderId()));
  935. Map<String, Object> map = new HashMap();
  936. map.put("order",order);
  937. AppletConfig config = new AppletConfig();
  938. config.setParamClass("pet_payment_bcs");
  939. List<AppletConfig> appletConfigs = configService.selectAppletConfigList(config);
  940. map.put("pet_payment_bcs",appletConfigs);
  941. return AjaxResult.success("我的订单流程订单详情",map);
  942. }
  943. //订单里面的宠物档案里面数据
  944. @ApiOperation("订单里面的宠物档案里面数据")
  945. @GetMapping("/getOrderPetById/{orderId}")
  946. public AjaxResult getOrderPetById(@PathVariable("orderId") Long orderId){
  947. H5OrderVO h5OrderVO = h5OrderService.orderDetail(orderId);
  948. // 得到服务信息
  949. List<OmsOrderService> service = h5OrderVO.getOrderServiceList();
  950. // 使用一个 Set 来跟踪已经添加的 PetVO 的 id
  951. Set<Integer> addedPetIds = new HashSet<>();
  952. List<Pet> petList = new ArrayList<>();
  953. for (OmsOrderService service1 : service) {
  954. // 宠物标识不为空的时候查询数据
  955. if (service1.getPetId() != null) {
  956. Pet pet = petMapper.selectById(service1.getPetId());
  957. // 检查 petVO 的 id 是否已经添加过
  958. if (pet != null && !addedPetIds.contains(pet.getId())) {
  959. service1.setPets(pet);
  960. petList.add(pet);
  961. addedPetIds.add(pet.getId()); // 标记该 id 已添加
  962. }
  963. }
  964. }
  965. // List<PetVO> pets = new ArrayList<>();
  966. // for (OmsOrderService service1 : service) {
  967. // // 宠物标识不为空的时候查询数据
  968. // if (service1.getPetId() != null) {
  969. // PetVO petVO = h5PetService.selectPetById(service1.getPetId());
  970. // // 检查 petVO 的 id 是否已经添加过
  971. // if (petVO != null && !addedPetIds.contains(petVO.getId())) {
  972. // service1.setPetVo(petVO);
  973. // pets.add(petVO);
  974. // addedPetIds.add(petVO.getId()); // 标记该 id 已添加
  975. // }
  976. // }
  977. //
  978. // }
  979. return AjaxResult.success("订单里面的宠物档案里面数据",petList);
  980. }
  981. //根据宠物标识查询重新宠物信息
  982. @ApiOperation("根据宠物标识查询重新宠物信息")
  983. @GetMapping("/getPetById/{petId}")
  984. public AjaxResult getPetById(@PathVariable("petId") Integer petId){
  985. PetVO petVO = h5PetService.selectPetById(petId);
  986. return AjaxResult.success("根据宠物标识查询重新宠物信息",petVO);
  987. }
  988. //根据宠物信息标识查询宠物档案信息列表带分页
  989. @ApiOperation("根据宠物信息标识查询宠物档案信息列表带分页")
  990. @GetMapping("/petList")
  991. public TableDataInfo petList(PetCare petCare) {
  992. startPage();
  993. List<PetCare> list = petCareService.selectPetCareList(petCare);
  994. return getDataTable(list);
  995. }
  996. //根据宠物信息查询宠物档案信息
  997. @ApiOperation("根据宠物信息标识查询宠物档案信息列表带分页")
  998. @GetMapping("/getPetCareByPetId/{petId}")
  999. public AjaxResult petCareList(@PathVariable("petId") Integer petId) {
  1000. PetCare petCare1 = petCareService.selectPetCareByPetId(petId);
  1001. return AjaxResult.success("服务档案信息查询成功",petCare1);
  1002. }
  1003. //测试派单
  1004. @ApiOperation("派单")
  1005. @GetMapping("/dispatch/{orderId}")
  1006. public AjaxResult dispatch(@PathVariable("orderId")Long orderId){
  1007. mallOrderService.dispatch(orderId);
  1008. return AjaxResult.success("派单成功");
  1009. }
  1010. }