浏览代码

Merge branch 'master' of http://49.4.53.36:3000/hotel/hotel-saas-backend

覃浩 2 年之前
父节点
当前提交
bbd4fa342f
共有 25 个文件被更改,包括 1302 次插入118 次删除
  1. 447 66
      jeecg-mall-api/src/main/java/org/jeecg/modules/bus/controller/HotelController.java
  2. 2 16
      jeecg-mall-api/src/main/java/org/jeecg/modules/bus/controller/OrderMessageController.java
  3. 38 2
      jeecg-mall-api/src/main/java/org/jeecg/modules/bus/controller/OrderRepairController.java
  4. 14 0
      jeecg-mall-api/src/main/java/org/jeecg/modules/bus/vo/CesStockTypeVo.java
  5. 1 1
      jeecg-mall-api/src/main/java/org/jeecg/modules/mall/controller/MallContactController.java
  6. 6 2
      jeecg-mall-api/src/main/java/org/jeecg/modules/wxuser/controller/WxUserController.java
  7. 1 1
      jeecg-mall-api/src/main/java/org/jeecg/modules/wxuser/mapper/UserInfoMapper.java
  8. 1 1
      jeecg-mall-api/src/main/java/org/jeecg/modules/wxuser/service/IUserInfoService.java
  9. 3 2
      jeecg-mall-api/src/main/java/org/jeecg/modules/wxuser/service/impl/UserInfoServiceImpl.java
  10. 18 7
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/BusMemberCardController.java
  11. 8 9
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/BusRoomBookingOrdersController.java
  12. 5 3
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/BusRoomBookingOrdersServiceImpl.java
  13. 81 7
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mall/controller/MallHotelOrderController.java
  14. 178 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mall/controller/MallOrderGoodsController.java
  15. 178 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mall/controller/MallOrderGoodsDetailController.java
  16. 24 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mall/entity/MallHotelOrder.java
  17. 157 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mall/entity/MallOrderGoods.java
  18. 67 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mall/entity/MallOrderGoodsDetail.java
  19. 1 1
      jeecg-mall-api/src/main/java/org/jeecg/modules/wxuser/entity/MallUserInfo.java
  20. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mall/mapper/MallOrderGoodsDetailMapper.java
  21. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mall/mapper/MallOrderGoodsMapper.java
  22. 5 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mall/mapper/xml/MallOrderGoodsDetailMapper.xml
  23. 5 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mall/mapper/xml/MallOrderGoodsMapper.xml
  24. 14 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mall/service/IMallOrderGoodsDetailService.java
  25. 14 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mall/service/IMallOrderGoodsService.java

+ 447 - 66
jeecg-mall-api/src/main/java/org/jeecg/modules/bus/controller/HotelController.java

@@ -1,73 +1,59 @@
 package org.jeecg.modules.bus.controller;
 import cn.hutool.core.date.DateTime;
-import com.alibaba.druid.support.json.JSONUtils;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import net.sf.json.JSON;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.jeecg.annotation.ApiLogin;
 import org.jeecg.com.util.ThirdSessionHolder;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.aspect.annotation.AutoLog;
-import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.exception.JeecgBootException;
-import org.jeecg.common.system.base.controller.JeecgController;
 import org.jeecg.common.system.query.QueryGenerator;
-import org.jeecg.common.system.util.JwtUtil;
-import org.jeecg.common.system.vo.LoginUser;
-import org.jeecg.common.util.RedisUtil;
 import org.jeecg.common.util.TenantContextHolder;
-import org.jeecg.common.util.TokenUtils;
 import org.jeecg.config.ApiVersion;
 import org.jeecg.config.ApiVersionConstant;
 import org.jeecg.config.WebConfig;
+import org.jeecg.modules.bus.vo.CesStockTypeVo;
 import org.jeecg.modules.business.dto.BookingLayoutRoomsDto;
 import org.jeecg.modules.business.dto.BookingOrderSaveDto;
 import org.jeecg.modules.business.entity.*;
+import org.jeecg.modules.business.enums.CheckInTypeEnum;
 import org.jeecg.modules.business.service.*;
-import org.jeecg.modules.business.util.MapUtil;
 import org.jeecg.modules.business.vo.KeLiItemVo;
 import org.jeecg.modules.mall.entity.MallHotelOrder;
+import org.jeecg.modules.mall.entity.MallOrderGoods;
+import org.jeecg.modules.mall.entity.MallOrderGoodsDetail;
 import org.jeecg.modules.mall.service.IMallHotelOrderService;
+import org.jeecg.modules.mall.service.IMallOrderGoodsDetailService;
+import org.jeecg.modules.mall.service.IMallOrderGoodsService;
 import org.jeecg.modules.order.entity.CesOrderComment;
 import org.jeecg.modules.order.service.impl.CesOrderCommentServiceImpl;
 import org.jeecg.modules.rooms.DTO.CanUseRequestParamDto;
 import org.jeecg.modules.rooms.Vo.CanUseResultVo;
-import org.jeecg.modules.rooms.entity.CesRoomLayout;
-import org.jeecg.modules.rooms.entity.CesRoomLayoutPrice;
-import org.jeecg.modules.rooms.entity.CesRooms;
-import org.jeecg.modules.rooms.service.CesRoomLayoutPriceServiceImpl;
-import org.jeecg.modules.rooms.service.CesRoomLayoutServiceImpl;
-import org.jeecg.modules.rooms.service.CesRoomsServiceImpl;
-import org.jeecg.modules.rooms.service.ICesRoomLayoutPriceDateService;
-import org.jeecg.modules.system.entity.SysTenant;
-import org.jeecg.modules.system.service.ISysTenantService;
-import org.jeecg.modules.wxuser.entity.MallUserInfo;
-import org.jeecg.modules.wxuser.entity.ThirdSession;
+import org.jeecg.modules.rooms.entity.*;
+import org.jeecg.modules.rooms.service.*;
+import org.jeecg.modules.mall.entity.MallUserInfo;
 import org.jeecg.modules.wxuser.service.IUserInfoService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
-import org.springframework.web.servlet.ModelAndView;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
-import java.text.DateFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.time.LocalDate;
-import java.time.temporal.ChronoUnit;
-import java.time.temporal.Temporal;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 酒店列表
@@ -106,6 +92,18 @@ public class HotelController extends WebConfig {
     private IUserInfoService userInfoService;
     @Resource
     private IBusDictItemService busDictItemService;
+    @Resource
+    private CesHourRoomRuleServiceImpl cesHourRoomRuleService;
+    @Resource
+    private CesGoodsServiceImpl cesGoodsService;
+    @Resource
+    private CesStockTypeServiceImpl cesStockTypeService;
+    @Resource
+    private IMallOrderGoodsService mallOrderGoodsService;
+    @Resource
+    private IMallOrderGoodsDetailService mallOrderGoodsDetailService;
+    @Resource
+    private IBusMemberBalanceLogService busMemberBalanceLogService;
     /**
      * 酒店列表查询
      *
@@ -200,6 +198,15 @@ public class HotelController extends WebConfig {
             throw new JeecgBootException("参数错误");
         if (param.getEndOf() == null || param.getStartOf() == null)
             throw new JeecgBootException("请传入时间范围");
+        if (param.getBookingType().equals(CheckInTypeEnum.HOUR_TIME.getKey())) {
+            LambdaQueryWrapper<CesHourRoomRule> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+            lambdaQueryWrapper.eq(CesHourRoomRule::getHotelId, param.getHotelId());
+            lambdaQueryWrapper.orderByAsc(CesHourRoomRule::getAfterOpenRoom).last("limit 1");
+            CesHourRoomRule cesHourRoomRule = cesHourRoomRuleService.getOne(lambdaQueryWrapper);
+            if (cesHourRoomRule != null) {
+                param.setHourRoomRuleId(cesHourRoomRule.getId());
+            }
+        }
         return Result.ok(cesRoomsService.getCanUseRooms(param));
     }
 
@@ -227,38 +234,39 @@ public class HotelController extends WebConfig {
     }
 
 
-    /**
-     * 酒店预定订单添加
-     *
-     * @param busRoomBookingOrders
-     * @return
-     */
-    @AutoLog(value = "酒店预定订单-添加")
-    @ApiOperation(value = "酒店预定订单-添加", notes = "酒店预定订单-添加")
-    @PostMapping(value = "/hotel-room-booking")
-    @ApiLogin
-    @ApiVersion(group = ApiVersionConstant.FAP_MALLAPI101)
-    public Result<String> hotelRoomBookingAdd(@RequestBody BookingOrderSaveDto busRoomBookingOrders) {
-        Boolean isTeam = busRoomBookingOrders.getOrderInfo().getBookingOrdersType().equals(2);
-        busRoomBookingOrders.getOrderInfo().setBookingOrdersType(1);
-        String tenantId = TenantContextHolder.getTenantId();
-        String userId = ThirdSessionHolder.getUserId();
-        busRoomBookingOrders.getOrderInfo().setThirdLoginUserId(userId);
-        LambdaQueryWrapper<BusMemberCard> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-        lambdaQueryWrapper.eq(BusMemberCard::getUserId, userId);
-        lambdaQueryWrapper.eq(BusMemberCard::getHotelId, busRoomBookingOrders.getHotelId()).last("limit 1");
-        BusMemberCard busMemberCard = busMemberCardService.getOne(lambdaQueryWrapper);
-        if (busMemberCard != null) {
-            busRoomBookingOrders.getOrderInfo().setCustomerType(2);
-            busRoomBookingOrders.getOrderInfo().setVipCustomerId(busMemberCard.getId());
-        } else {
-            busRoomBookingOrders.getOrderInfo().setCustomerType(1);
-        }
-        return Result.OK("预定成功", busRoomBookingOrdersService.bookingOrderSave(busRoomBookingOrders, isTeam));
-    }
+//    /**
+//     * 酒店预定订单添加
+//     *
+//     * @param busRoomBookingOrders
+//     * @return
+//     */
+//    @AutoLog(value = "酒店预定订单-添加")
+//    @ApiOperation(value = "酒店预定订单-添加", notes = "酒店预定订单-添加")
+//    @PostMapping(value = "/hotel-room-booking")
+//    @ApiLogin
+//    @ApiVersion(group = ApiVersionConstant.FAP_MALLAPI101)
+//    public Result<String> hotelRoomBookingAdd(@RequestBody BookingOrderSaveDto busRoomBookingOrders) {
+//        Boolean isTeam = busRoomBookingOrders.getOrderInfo().getBookingOrdersType().equals(2);
+//        busRoomBookingOrders.getOrderInfo().setBookingOrdersType(1);
+//        String tenantId = TenantContextHolder.getTenantId();
+//        String userId = ThirdSessionHolder.getUserId();
+//        busRoomBookingOrders.getOrderInfo().setThirdLoginUserId(userId);
+//        LambdaQueryWrapper<BusMemberCard> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+//        lambdaQueryWrapper.eq(BusMemberCard::getUserId, userId);
+//        lambdaQueryWrapper.eq(BusMemberCard::getHotelId, busRoomBookingOrders.getHotelId()).last("limit 1");
+//        BusMemberCard busMemberCard = busMemberCardService.getOne(lambdaQueryWrapper);
+//        if (busMemberCard != null) {
+//            busRoomBookingOrders.getOrderInfo().setCustomerType(2);
+//            busRoomBookingOrders.getOrderInfo().setVipCustomerId(busMemberCard.getId());
+//        } else {
+//            busRoomBookingOrders.getOrderInfo().setCustomerType(1);
+//        }
+//        return Result.OK("预定成功", busRoomBookingOrdersService.bookingOrderSave(busRoomBookingOrders, isTeam));
+//    }
 
     /**
      * 生成16位数字+prefix
+     *
      * @param prefix
      * @return
      */
@@ -294,6 +302,7 @@ public class HotelController extends WebConfig {
             if (ObjectUtils.isEmpty(coupons)) {
                 return Result.error("优惠券活动不存在");
             }
+            mallHotelOrder.setCouponMoney(coupons.getCost());
             busMarketCouponsCashUsed.setStatus(2);
             busMarketCouponsCashUsed.setUsedTime(DateTime.now());
             busMarketCouponsCashUsedService.updateById(busMarketCouponsCashUsed);
@@ -306,6 +315,27 @@ public class HotelController extends WebConfig {
         mallHotelOrder.setCode(randomNumber(prefix));
         mallHotelOrder.setPayType(1);
         mallHotelOrder.setStatus(5);
+
+        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
+        SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+        Date four = null;
+        try {
+            four = formatter2.parse(formatter.format(mallHotelOrder.getStartDate()) + " " + mallHotelOrder.getArriveTime());
+            mallHotelOrder.setStartDate(four);
+        } catch (ParseException e) {
+
+        }
+        CesHourRoomRule cesHourRoomRule = null;
+        Calendar calendar = new GregorianCalendar();
+        if (mallHotelOrder.getBookingType().equals(2)) {
+            CesRoomLayoutPrice cesRoomLayoutPrice = cesRoomLayoutPriceService.getById(mallHotelOrder.getRoomLayoutPriceId());
+            cesHourRoomRule = cesHourRoomRuleService.getById(cesRoomLayoutPrice.getSellerId());
+            calendar.setTime(mallHotelOrder.getStartDate());
+            calendar.add(Calendar.MINUTE, cesHourRoomRule.getAfterOpenRoom());
+            mallHotelOrder.setEndDate(calendar.getTime());
+        }
+        log.info("getStartDate---------------" + mallHotelOrder.getStartDate());
+        log.info("getEndDate---------------" + mallHotelOrder.getEndDate());
         mallHotelOrderService.save(mallHotelOrder);
 
         //增加临时坑位预定单
@@ -317,7 +347,10 @@ public class HotelController extends WebConfig {
         List<BusBookingLayoutDayPrice> layoutDayPrices = new ArrayList<>();
         long getTime = mallHotelOrder.getEndDate().getTime() - mallHotelOrder.getStartDate().getTime();
         long day = getTime / (1000 * 60 * 60 * 24);
-        Calendar calendar = new GregorianCalendar();
+        if (day == 0) {
+            day = 1;
+        }
+        log.info("day---------------" + day);
         BigDecimal sCouponMoney = couponMoney;
         for (Integer i = 0; i < day; i++) {
             calendar.setTime(mallHotelOrder.getStartDate());
@@ -338,15 +371,7 @@ public class HotelController extends WebConfig {
         busRoomBookingOrders.setLayoutDayPrices(layoutDayPrices);
 
         BusRoomBookingOrders bookingOrders = new BusRoomBookingOrders();
-        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
-        SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
-        Date four = null;
-        try {
-            four = formatter2.parse(formatter.format(mallHotelOrder.getStartDate()) + " 16:50");
-        } catch (ParseException e) {
-
-        }
-        bookingOrders.setArrivalTime(four);
+        bookingOrders.setArrivalTime(mallHotelOrder.getStartDate());
         LambdaQueryWrapper<BusDictItem> lambdaQueryWrapper2 = new LambdaQueryWrapper<>();
         lambdaQueryWrapper2.eq(BusDictItem::getHotelId, mallHotelOrder.getHotelId());
         lambdaQueryWrapper2.eq(BusDictItem::getDictId, "1639544187093995521");
@@ -376,6 +401,9 @@ public class HotelController extends WebConfig {
         bookingOrders.setOuterOrdersNo(mallHotelOrder.getCode());
         bookingOrders.setBookingStatus(3);
         bookingOrders.setBookingType(mallHotelOrder.getBookingType());
+        if (mallHotelOrder.getBookingType().equals(2)) {
+            bookingOrders.setHourRoomId(cesHourRoomRule.getId());
+        }
         busRoomBookingOrders.setOrderInfo(bookingOrders);
 
         List<BookingLayoutRoomsDto> roomIds = new ArrayList<>();
@@ -474,4 +502,357 @@ public class HotelController extends WebConfig {
         List<CesRoomLayoutPrice> list = cesRoomLayoutPriceService.list(lambdaQueryWrapper);
         return Result.ok(list);
     }
+
+    /**
+     * 酒店预定订单列表
+     *
+     * @param mallHotelOrder
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     */
+    @ApiOperation(value = "酒店预定订单列表", notes = "酒店预定订单列表")
+    @GetMapping(value = "/hotel_order-list")
+    @ApiVersion(group = ApiVersionConstant.FAP_MALLAPI101)
+    @ApiLogin
+    public Result<IPage<MallHotelOrder>> getHotelOrderPageList(MallHotelOrder mallHotelOrder,
+                                                               @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                               @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                               HttpServletRequest req) {
+        String tenantId = TenantContextHolder.getTenantId();
+        String userId = ThirdSessionHolder.getUserId();
+        LambdaQueryWrapper<MallHotelOrder> queryWrapper = QueryGenerator.initQueryWrapper(mallHotelOrder, req.getParameterMap()).lambda();
+        queryWrapper.eq(MallHotelOrder::getTenantId, tenantId);
+        queryWrapper.eq(MallHotelOrder::getMallUserId, userId);
+        Page<MallHotelOrder> page = new Page<MallHotelOrder>(pageNo, pageSize);
+        IPage<MallHotelOrder> pageList = mallHotelOrderService.page(page, queryWrapper);
+        pageList.getRecords().forEach(t -> {
+            if (t.getStatus().equals(1)) {
+                t.setStatusName("未付款");
+            } else if (t.getStatus().equals(2)) {
+                t.setStatusName("已付款");
+            } else if (t.getStatus().equals(3)) {
+                t.setStatusName("已取消");
+            } else if (t.getStatus().equals(4)) {
+                t.setStatusName("已完成");
+            } else if (t.getStatus().equals(5)) {
+                t.setStatusName("待入住");
+            } else if (t.getStatus().equals(6)) {
+                t.setStatusName("已入住");
+            } else if (t.getStatus().equals(7)) {
+                t.setStatusName("退款中");
+            }
+            BusHotel hotel = busHotelService.getById(t.getHotelId());
+            if (hotel != null) {
+                t.setHotelName(hotel.getName());
+            }
+            CesRoomLayout layout = cesRoomLayoutService.getById(t.getLayoutId());
+            if (layout != null) {
+                t.setLayoutName(layout.getName());
+            }
+        });
+        return Result.OK(pageList);
+    }
+
+    @ApiOperation(value = "酒店订单确认入住", notes = "酒店订单确认入住")
+    @PostMapping(value = "/confirm-move")
+    @ApiVersion(group = ApiVersionConstant.FAP_MALLAPI101)
+    @ApiLogin
+    public Result<String> confirmMove(@RequestBody MallHotelOrder mallHotelOrder) {
+        MallHotelOrder order = mallHotelOrderService.getById(mallHotelOrder.getId());
+        if (!order.getStatus().equals(5)) {
+            return Result.error("订单不是待入住状态");
+        }
+        order.setStatus(6);
+        mallHotelOrderService.updateById(order);
+
+        LambdaUpdateWrapper<BusRoomBookingOrders> updateWrapper = new UpdateWrapper().lambda();
+        updateWrapper.set(BusRoomBookingOrders::getBookingStatus, 1);
+        updateWrapper.eq(BusRoomBookingOrders::getOuterOrdersNo, order.getCode());
+        busRoomBookingOrdersService.update(updateWrapper);
+        return Result.OK("确认入住成功!");
+    }
+
+    @ApiOperation(value = "酒店订单取消", notes = "酒店订单取消")
+    @PostMapping(value = "/confirm-cancel")
+    @ApiVersion(group = ApiVersionConstant.FAP_MALLAPI101)
+    @ApiLogin
+    public Result<String> confirmCancel(@RequestBody MallHotelOrder mallHotelOrder) {
+        MallHotelOrder order = mallHotelOrderService.getById(mallHotelOrder.getId());
+        if (order.getStatus().equals(4) || order.getStatus().equals(6)) {
+            return Result.error("订单已完成/已入住状态");
+        }
+        order.setStatus(3);
+        mallHotelOrderService.updateById(order);
+        return Result.OK("取消成功!");
+    }
+
+    /**
+     * 通过id查询酒店预定订单详情
+     *
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "通过id查询酒店预定订单详情", notes = "通过id查询酒店预定订单详情")
+    @GetMapping(value = "/hotel_order-info")
+    @ApiVersion(group = ApiVersionConstant.FAP_MALLAPI101)
+    @ApiLogin
+    public Result<MallHotelOrder> getHotelOrderInfo(@RequestParam(name = "id", required = true) String id) {
+        MallHotelOrder mallHotelOrder = mallHotelOrderService.getById(id);
+        if (mallHotelOrder == null) {
+            return Result.error("未找到对应数据");
+        }
+        log.info("mallHotelOrder--------" + mallHotelOrder.toString());
+        String userId = ThirdSessionHolder.getUserId();
+        log.info("userId--------" + userId);
+        if (!mallHotelOrder.getMallUserId().equals(userId)) {
+            return Result.error("未找到对应数据");
+        }
+        BusHotel hotel = busHotelService.getById(mallHotelOrder.getHotelId());
+        mallHotelOrder.setHotel(hotel);
+        if (mallHotelOrder.getStatus().equals(1)) {
+            mallHotelOrder.setStatusName("未付款");
+        } else if (mallHotelOrder.getStatus().equals(2)) {
+            mallHotelOrder.setStatusName("已付款");
+        } else if (mallHotelOrder.getStatus().equals(3)) {
+            mallHotelOrder.setStatusName("已取消");
+        } else if (mallHotelOrder.getStatus().equals(4)) {
+            mallHotelOrder.setStatusName("已完成");
+        } else if (mallHotelOrder.getStatus().equals(5)) {
+            mallHotelOrder.setStatusName("待入住");
+        } else if (mallHotelOrder.getStatus().equals(6)) {
+            mallHotelOrder.setStatusName("已入住");
+        } else if (mallHotelOrder.getStatus().equals(7)) {
+            mallHotelOrder.setStatusName("退款中");
+        }
+        CesRoomLayout layout = cesRoomLayoutService.getById(mallHotelOrder.getLayoutId());
+        if (layout != null) {
+            mallHotelOrder.setLayoutName(layout.getName());
+        }
+        if (StringUtils.isNotBlank(mallHotelOrder.getCouponId())) {
+            BusMarketCouponsCash busMarketCouponsCash = busMarketCouponsCashService.getById(mallHotelOrder.getCouponId());
+            if (busMarketCouponsCash != null) {
+                mallHotelOrder.setCouponName(busMarketCouponsCash.getName());
+            }
+        }
+        return Result.OK(mallHotelOrder);
+    }
+
+    /**
+     * 根据类型分组外卖商品列表
+     *
+     * @param cesGoods
+     * @return
+     */
+    @ApiOperation(value = "根据类型分组外卖商品列表", notes = "根据类型分组外卖商品列表")
+    @GetMapping(value = "/type_group_goods_list")
+    @ApiVersion(group = ApiVersionConstant.FAP_MALLAPI101)
+    @ApiLogin
+    public Result<List<CesStockTypeVo>> queryPageList(CesGoods cesGoods) {
+        List<CesStockType> list = cesStockTypeService.list(Wrappers.<CesStockType>lambdaQuery()
+                .eq(CesStockType::getHotelId, cesGoods.getHotelId())
+                .eq(CesStockType::getInvalid, false)
+                .like(CesStockType::getApplyScope, "1"));
+        List<CesStockTypeVo> voList = new ArrayList<>();
+        List<CesStockType> pList = list.stream().filter(t -> StringUtils.isBlank(t.getParentId()) || t.getParentId().equals("0")).collect(Collectors.toList());
+        pList.forEach(t -> {
+            CesStockTypeVo vo = new CesStockTypeVo();
+            vo.setName(t.getName());
+            LambdaQueryWrapper<CesGoods> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(CesGoods::getInvalid, false);
+            queryWrapper.eq(CesGoods::getIsTemp, false);
+
+            queryWrapper.and(j -> {
+                List<CesStockType> stockTypeList = list.stream().filter(t2 -> t2.getParentId().equals(t.getId())).collect(Collectors.toList());
+                if (ObjectUtils.isNotEmpty(stockTypeList)) {
+                    for (int z = 0; z < stockTypeList.size(); z++) {
+                        j = j.or().eq(CesGoods::getGoodType, stockTypeList.get(z).getId());
+                    }
+                }
+                j = j.or().eq(CesGoods::getGoodType, t.getId());
+            });
+            List<CesGoods> cesGoodsList = cesGoodsService.list(queryWrapper);
+            vo.setList(cesGoodsList);
+            voList.add(vo);
+        });
+        return Result.OK(voList);
+    }
+
+    /**
+     * 对应酒店用户绑定会员卡信息
+     *
+     * @param memberCard
+     * @return
+     */
+    @ApiOperation(value = "对应酒店用户绑定会员卡信息", notes = "对应酒店用户绑定会员卡信息")
+    @GetMapping(value = "/memeber-card-info")
+    @ApiVersion(group = ApiVersionConstant.FAP_MALLAPI101)
+    @ApiLogin
+    public Result<BusMemberCard> getMemeberCard(BusMemberCard memberCard) {
+        String tenantId = TenantContextHolder.getTenantId();
+        String userId = ThirdSessionHolder.getUserId();
+        LambdaQueryWrapper<BusMemberCard> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(BusMemberCard::getUserId, userId);
+        lambdaQueryWrapper.eq(BusMemberCard::getHotelId, memberCard.getHotelId()).last("limit 1");
+        BusMemberCard busMemberCard = busMemberCardService.getOne(lambdaQueryWrapper);
+        return Result.ok(busMemberCard);
+    }
+
+    /**
+     * 提交外卖订单
+     *
+     * @param mallOrderGoods
+     * @return
+     */
+    @ApiOperation(value = "提交外卖订单", notes = "提交外卖订单")
+    @PostMapping(value = "/save-goods-order")
+    @ApiVersion(group = ApiVersionConstant.FAP_MALLAPI101)
+    @ApiLogin
+    @Transactional(rollbackFor = Exception.class)
+    public Result<BusMemberCard> saveGoodsOrder(@RequestBody MallOrderGoods mallOrderGoods) {
+        String tenantId = TenantContextHolder.getTenantId();
+        String userId = ThirdSessionHolder.getUserId();
+
+        if (ObjectUtils.isEmpty(mallOrderGoods.getDetailList())) {
+            return Result.error("订单商品列表不能为空");
+        }
+        if (mallOrderGoods.getIsBalancePay()) {
+            if (StringUtils.isBlank(mallOrderGoods.getBalancePwd())) {
+                return Result.error("请输入会员卡密码");
+            }
+            if (StringUtils.isBlank(mallOrderGoods.getMemberId())) {
+                return Result.error("启用余额支付时,会员卡不能为空");
+            }
+            BusMemberCard busMemberCard = busMemberCardService.getById(mallOrderGoods.getMemberId());
+            if (busMemberCard == null) {
+                return Result.error("会员卡不存在");
+            }
+            if (!busMemberCard.getConsumePassword().equals(mallOrderGoods.getBalancePwd())) {
+                return Result.error("会员卡密码不对");
+            }
+            if (busMemberCard.getBalance().compareTo(mallOrderGoods.getMoney()) < 0) {
+                return Result.error("会员卡余额不够");
+            }
+            BusMemberBalanceLog busMemberBalanceLog = new BusMemberBalanceLog();
+            busMemberBalanceLog.setMoney(mallOrderGoods.getMoney());
+            busMemberBalanceLog.setMemberId(mallOrderGoods.getMemberId());
+            busMemberBalanceLog.setHotelId(mallOrderGoods.getHotelId());
+            busMemberBalanceLog.setPaymentMethod("");
+            busMemberBalanceLog.setType(2);
+            busMemberBalanceLog.setGiveMoney(BigDecimal.ZERO);
+            busMemberBalanceLog.setPayMoney(BigDecimal.ZERO);
+            busMemberBalanceLogService.saveBalance(busMemberBalanceLog);
+        }
+
+        mallOrderGoods.setTenantId(tenantId);
+        mallOrderGoods.setMallUserId(userId);
+        mallOrderGoods.setCreateTime(DateTime.now());
+        mallOrderGoods.setPayStatus(0);
+        mallOrderGoods.setStatus(1);
+        mallOrderGoods.setPaymentMethod(1);
+        mallOrderGoods.setIntegralPayMoney(BigDecimal.ZERO);
+        String prefix = "WM";
+        mallOrderGoods.setCode(randomNumber(prefix));
+        mallOrderGoodsService.save(mallOrderGoods);
+        mallOrderGoods.getDetailList().forEach(t -> {
+            t.setHotelId(mallOrderGoods.getHotelId());
+            t.setTenantId(mallOrderGoods.getTenantId());
+            t.setOrderCode(mallOrderGoods.getCode());
+        });
+        mallOrderGoodsDetailService.saveBatch(mallOrderGoods.getDetailList());
+
+        return Result.ok("提交成功");
+    }
+
+    /**
+     * 酒店外卖订单列表
+     * @param mallOrderGoods
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     */
+    @ApiOperation(value = "酒店外卖订单列表", notes = "酒店外卖订单列表")
+    @GetMapping(value = "/hotel-goods-order-list")
+    @ApiVersion(group = ApiVersionConstant.FAP_MALLAPI101)
+    @ApiLogin
+    public Result<IPage<MallOrderGoods>> getHotelGoodsOrderPageList(MallOrderGoods mallOrderGoods,
+                                                               @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                               @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                               HttpServletRequest req) {
+        String tenantId = TenantContextHolder.getTenantId();
+        String userId = ThirdSessionHolder.getUserId();
+        LambdaQueryWrapper<MallOrderGoods> queryWrapper = QueryGenerator.initQueryWrapper(mallOrderGoods, req.getParameterMap()).lambda();
+        queryWrapper.eq(MallOrderGoods::getTenantId, tenantId);
+        queryWrapper.eq(MallOrderGoods::getMallUserId, userId);
+        Page<MallOrderGoods> page = new Page<MallOrderGoods>(pageNo, pageSize);
+        IPage<MallOrderGoods> pageList = mallOrderGoodsService.page(page, queryWrapper);
+        pageList.getRecords().forEach(t -> {
+            if (t.getStatus().equals(1)) {
+                t.setStatusName("待发货");
+            } else if (t.getStatus().equals(2)) {
+                t.setStatusName("待收货");
+            } else if (t.getStatus().equals(3)) {
+                t.setStatusName("已完成");
+            } else if (t.getStatus().equals(4)) {
+                t.setStatusName("已拒绝");
+            } else if (t.getStatus().equals(5)) {
+                t.setStatusName("已取消");
+            }
+            BusHotel hotel = busHotelService.getById(t.getHotelId());
+            if (hotel != null) {
+                t.setHotelName(hotel.getName());
+            }
+            LambdaQueryWrapper<MallOrderGoodsDetail> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+            lambdaQueryWrapper.eq(MallOrderGoodsDetail::getOrderCode, t.getCode());
+            List<MallOrderGoodsDetail> list=mallOrderGoodsDetailService.list(lambdaQueryWrapper);
+            if(ObjectUtils.isNotEmpty(list)){
+                list.forEach(i->{
+                    i.setGoodsInfo(cesGoodsService.getById(i.getGoodsId()));
+                });
+            }
+            t.setDetailList(list);
+        });
+        return Result.OK(pageList);
+    }
+
+    /**
+     * 通过id查询酒店外卖订单列表
+     *
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "通过id查询酒店外卖订单列表", notes = "通过id查询酒店外卖订单列表")
+    @GetMapping(value = "/hotel-goods-order-info")
+    @ApiVersion(group = ApiVersionConstant.FAP_MALLAPI101)
+    @ApiLogin
+    public Result<MallOrderGoods> getHotelGoodsOrderInfo(@RequestParam(name = "id", required = true) String id) {
+        MallOrderGoods mallOrderGoods = mallOrderGoodsService.getById(id);
+        if (mallOrderGoods.getStatus().equals(1)) {
+            mallOrderGoods.setStatusName("待发货");
+        } else if (mallOrderGoods.getStatus().equals(2)) {
+            mallOrderGoods.setStatusName("待收货");
+        } else if (mallOrderGoods.getStatus().equals(3)) {
+            mallOrderGoods.setStatusName("已完成");
+        } else if (mallOrderGoods.getStatus().equals(4)) {
+            mallOrderGoods.setStatusName("已拒绝");
+        } else if (mallOrderGoods.getStatus().equals(5)) {
+            mallOrderGoods.setStatusName("已取消");
+        }
+        BusHotel hotel = busHotelService.getById(mallOrderGoods.getHotelId());
+        if (hotel != null) {
+            mallOrderGoods.setHotelName(hotel.getName());
+        }
+        LambdaQueryWrapper<MallOrderGoodsDetail> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(MallOrderGoodsDetail::getOrderCode, mallOrderGoods.getCode());
+        List<MallOrderGoodsDetail> list=mallOrderGoodsDetailService.list(lambdaQueryWrapper);
+        if(ObjectUtils.isNotEmpty(list)){
+            list.forEach(i->{
+                i.setGoodsInfo(cesGoodsService.getById(i.getGoodsId()));
+            });
+        }
+        mallOrderGoods.setDetailList(list);
+        return Result.OK(mallOrderGoods);
+    }
 }

+ 2 - 16
jeecg-mall-api/src/main/java/org/jeecg/modules/bus/controller/OrderMessageController.java

@@ -2,25 +2,18 @@ package org.jeecg.modules.bus.controller;
 
 import cn.hutool.core.date.DateTime;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.jeecg.annotation.ApiLogin;
 import org.jeecg.com.util.ThirdSessionHolder;
 import org.jeecg.common.api.vo.Result;
-import org.jeecg.common.aspect.annotation.AutoLog;
-import org.jeecg.common.system.base.controller.JeecgController;
-import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.common.util.TenantContextHolder;
 import org.jeecg.config.ApiVersion;
 import org.jeecg.config.ApiVersionConstant;
 import org.jeecg.config.WebConfig;
 import org.jeecg.modules.business.entity.BusBookingRooms;
-import org.jeecg.modules.business.entity.BusHotel;
 import org.jeecg.modules.business.entity.BusRoomsLivingOrder;
 import org.jeecg.modules.business.service.IBusBookingRoomsService;
 import org.jeecg.modules.business.service.IBusHotelService;
@@ -30,17 +23,11 @@ import org.jeecg.modules.order.entity.CesOrderMessage;
 import org.jeecg.modules.order.service.ICesOrderMessageService;
 import org.jeecg.modules.rooms.entity.CesRooms;
 import org.jeecg.modules.rooms.service.CesRoomsServiceImpl;
-import org.jeecg.modules.wxuser.entity.MallUserInfo;
+import org.jeecg.modules.mall.entity.MallUserInfo;
 import org.jeecg.modules.wxuser.service.IUserInfoService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
-import org.springframework.web.servlet.ModelAndView;
 
 import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.util.Arrays;
-import java.util.List;
 
 /**
  * @Description: ces_order_message
@@ -48,7 +35,7 @@ import java.util.List;
  * @Date:   2023-03-24
  * @Version: V1.0
  */
-@Api(tags="留言/投诉添加")
+@Api(tags="留言投诉添加")
 @RestController
 @RequestMapping("/mall-api/hotel-order-message")
 @Slf4j
@@ -75,7 +62,6 @@ public class OrderMessageController extends WebConfig {
 	 * @param cesOrderMessage
 	 * @return
 	 */
-	@AutoLog(value = "留言/投诉添加")
 	@ApiOperation(value="留言/投诉添加", notes="留言/投诉添加")
 	@ApiLogin
 	@ApiVersion(group = ApiVersionConstant.FAP_MALLAPI101)

+ 38 - 2
jeecg-mall-api/src/main/java/org/jeecg/modules/bus/controller/OrderRepairController.java

@@ -2,9 +2,10 @@ package org.jeecg.modules.bus.controller;
 
 import cn.hutool.core.date.DateTime;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.lowagie.text.LargeElement;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -25,7 +26,7 @@ import org.jeecg.modules.order.entity.CesOrderRepair;
 import org.jeecg.modules.order.service.ICesOrderRepairService;
 import org.jeecg.modules.rooms.entity.CesRooms;
 import org.jeecg.modules.rooms.service.CesRoomsServiceImpl;
-import org.jeecg.modules.wxuser.entity.MallUserInfo;
+import org.jeecg.modules.mall.entity.MallUserInfo;
 import org.jeecg.modules.wxuser.service.IUserInfoService;
 import org.springframework.web.bind.annotation.*;
 
@@ -140,6 +141,7 @@ public class OrderRepairController extends WebConfig {
                }
            }
        }
+       cesOrderRepair.setStatus(1);
        cesOrderRepairService.save(cesOrderRepair);
        return Result.OK("添加成功!");
    }
@@ -202,4 +204,38 @@ public class OrderRepairController extends WebConfig {
         });
         return Result.OK(voList);
     }
+
+    /**
+     * 更改状态
+     * @param dto
+     * @return
+     */
+    @AutoLog(value = "服务维修订单更改状态")
+    @ApiOperation(value="服务维修订单更改状态", notes="服务维修订单更改状态")
+    @RequestMapping(value = "/setStauts", method = {RequestMethod.PUT,RequestMethod.POST})
+    @ApiLogin
+    @ApiVersion(group = ApiVersionConstant.FAP_MALLAPI101)
+    public Result<String> setStauts(@RequestBody CesOrderRepair dto) {
+        LambdaUpdateWrapper<CesOrderRepair> updateWrapper = new UpdateWrapper().lambda();
+        updateWrapper.set(CesOrderRepair::getStatus, dto.getStatus());
+        updateWrapper.eq(CesOrderRepair::getId, dto.getId());
+        cesOrderRepairService.update(updateWrapper);
+        return Result.OK("编辑成功!");
+    }
+
+    /**
+     *   通过id删除
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "ces_order_repair-通过id删除")
+    @ApiOperation(value="ces_order_repair-通过id删除", notes="ces_order_repair-通过id删除")
+    @ApiLogin
+    @ApiVersion(group = ApiVersionConstant.FAP_MALLAPI101)
+    @PostMapping(value = "/delete")
+    public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+        cesOrderRepairService.removeById(id);
+        return Result.OK("删除成功!");
+    }
 }

+ 14 - 0
jeecg-mall-api/src/main/java/org/jeecg/modules/bus/vo/CesStockTypeVo.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.bus.vo;
+
+import lombok.Data;
+import org.jeecg.modules.business.entity.BusServiceRepair;
+import org.jeecg.modules.business.entity.BusServiceRepairCategory;
+import org.jeecg.modules.rooms.entity.CesGoods;
+import org.jeecg.modules.rooms.entity.CesStockType;
+
+import java.util.List;
+
+@Data
+public class CesStockTypeVo extends CesStockType {
+    private List<CesGoods> list;
+}

+ 1 - 1
jeecg-mall-api/src/main/java/org/jeecg/modules/mall/controller/MallContactController.java

@@ -110,7 +110,7 @@ public class MallContactController extends WebConfig {
 	@ApiOperation(value="通过id删除商城联系人", notes="通过id删除商城联系人")
 	@ApiLogin
 	@ApiVersion(group = ApiVersionConstant.FAP_MALLAPI101)
-	@DeleteMapping(value = "/delete")
+	@PostMapping(value = "/delete")
 	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
 		mallContactService.removeById(id);
 		return Result.OK("删除成功!");

+ 6 - 2
jeecg-mall-api/src/main/java/org/jeecg/modules/wxuser/controller/WxUserController.java

@@ -5,14 +5,13 @@ import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
-import org.jeecg.annotation.ApiLogin;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.config.ApiVersion;
 import org.jeecg.config.ApiVersionConstant;
 import org.jeecg.config.WebConfig;
 import org.jeecg.modules.wxuser.dto.LoginDto;
 import org.jeecg.modules.wxuser.dto.WxOpenDataDto;
-import org.jeecg.modules.wxuser.entity.MallUserInfo;
+import org.jeecg.modules.mall.entity.MallUserInfo;
 import org.jeecg.modules.wxuser.service.IUserInfoService;
 import org.springframework.web.bind.annotation.*;
 import springfox.documentation.swagger2.annotations.EnableSwagger2;
@@ -66,6 +65,11 @@ public class WxUserController extends WebConfig {
     public Result loginByPhoneMa(HttpServletRequest request, @RequestBody WxOpenDataDto dto) {
         try {
             String token = request.getHeader("third-session");
+//            String appId = request.getHeader("app-id");
+//            if (StringUtils.isBlank(appId)) {
+//                return Result.error("缺少appid");
+//            }
+//            dto.setAppId(appId);
             MallUserInfo userInfo = userInfoService.loginByPhoneMa(dto, token);
             return Result.ok(userInfo);
         } catch (Exception e) {

+ 1 - 1
jeecg-mall-api/src/main/java/org/jeecg/modules/wxuser/mapper/UserInfoMapper.java

@@ -1,7 +1,7 @@
 package org.jeecg.modules.wxuser.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.jeecg.modules.wxuser.entity.MallUserInfo;
+import org.jeecg.modules.mall.entity.MallUserInfo;
 
 /**
  * @Description: user_info

+ 1 - 1
jeecg-mall-api/src/main/java/org/jeecg/modules/wxuser/service/IUserInfoService.java

@@ -1,9 +1,9 @@
 package org.jeecg.modules.wxuser.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.mall.entity.MallUserInfo;
 import org.jeecg.modules.wxuser.dto.LoginDto;
 import org.jeecg.modules.wxuser.dto.WxOpenDataDto;
-import org.jeecg.modules.wxuser.entity.MallUserInfo;
 
 /**
  * @Description: user_info

+ 3 - 2
jeecg-mall-api/src/main/java/org/jeecg/modules/wxuser/service/impl/UserInfoServiceImpl.java

@@ -18,10 +18,10 @@ import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.common.system.util.JwtUtil;
 import org.jeecg.common.util.RedisUtil;
 import org.jeecg.common.util.TenantContextHolder;
+import org.jeecg.modules.mall.entity.MallUserInfo;
 import org.jeecg.modules.wxuser.dto.LoginDto;
 import org.jeecg.modules.wxuser.dto.WxOpenDataDto;
 import org.jeecg.modules.wxuser.entity.ThirdSession;
-import org.jeecg.modules.wxuser.entity.MallUserInfo;
 import org.jeecg.modules.wxuser.entity.WxAppConfig;
 import org.jeecg.modules.wxuser.entity.WxUser;
 import org.jeecg.modules.wxuser.mapper.UserInfoMapper;
@@ -101,9 +101,10 @@ private IWxAppConfigService wxAppConfigService;
         MallUserInfo userInfo;
         if (wxUser == null || StrUtil.isBlank(wxUser.getId())) {
             //新增微信用户
-            wxUser.setAppId(wxApp.getId());
+            wxUser.setAppId(wxApp.getAppId());
             wxUser.setTenantId(TenantContextHolder.getTenantId());
             wxUser.setAppType(wxApp.getAppType());
+            wxUser.setNickName("微信用户");
             wxUserService.saveOrUpdate(wxUser);
         }
         System.out.println("【授权登录后】" + wxUser.toString());

+ 18 - 7
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/BusMemberCardController.java

@@ -3,11 +3,13 @@ package org.jeecg.modules.business.controller;
 import java.math.BigDecimal;
 import java.util.Arrays;
 import java.util.List;
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.IService;
 import org.apache.commons.lang3.ObjectUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.exception.JeecgBootException;
@@ -25,6 +27,7 @@ import lombok.extern.slf4j.Slf4j;
 
 import org.jeecg.modules.business.vo.MemberCardStatVo;
 import org.jeecg.common.system.base.controller.JeecgController;
+import org.jeecg.modules.mall.entity.MallUserInfo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.servlet.ModelAndView;
@@ -53,6 +56,8 @@ public class BusMemberCardController extends JeecgController<BusMemberCard, IBus
 	 private IBusMarketMemberGroupService busMarketMemberGroupService;
 	 @Autowired
 	 private IBusMarketMemberLableService busMarketMemberLableService;
+	 @Resource
+	 private IService<MallUserInfo> mallUserInfoIService;
 	/**
 	 * 分页列表查询
 	 *
@@ -123,7 +128,7 @@ public class BusMemberCardController extends JeecgController<BusMemberCard, IBus
 		 MemberCardStatVo vo = busMemberCardService.stat(hotelId);
 		 return Result.OK(vo);
 	 }
-	
+
 	/**
 	 *   添加
 	 *
@@ -143,16 +148,22 @@ public class BusMemberCardController extends JeecgController<BusMemberCard, IBus
 		}
 		LambdaQueryWrapper<BusMemberCard> queryWrapper = new LambdaQueryWrapper<>();
 		queryWrapper.eq(BusMemberCard::getMobile, busMemberCard.getMobile());
-		queryWrapper.eq(BusMemberCard::getHotelId,busMemberCard.getHotelId()).last("limit 1");
+		queryWrapper.eq(BusMemberCard::getHotelId, busMemberCard.getHotelId()).last("limit 1");
 		BusMemberCard memeber = busMemberCardService.getOne(queryWrapper);
 		if (memeber != null) {
 			return Result.error("该手机号已存在!");
 		}
-		busMemberCardService.getOne(queryWrapper);
+		LambdaQueryWrapper<MallUserInfo> queryWrapper2 = new LambdaQueryWrapper<>();
+		queryWrapper2.eq(MallUserInfo::getMobile, busMemberCard.getMobile());
+		queryWrapper2.eq(MallUserInfo::getTenantId, busMemberCard.getTenantId()).last("limit 1");
+		MallUserInfo mallUserInfo = mallUserInfoIService.getOne(queryWrapper2);
+		if (mallUserInfo != null) {
+			busMemberCard.setUserId(mallUserInfo.getId());
+		}
 		busMemberCardService.save(busMemberCard);
 		return Result.OK("添加成功!");
 	}
-	
+
 	/**
 	 *  编辑
 	 *
@@ -191,7 +202,7 @@ public class BusMemberCardController extends JeecgController<BusMemberCard, IBus
 		 Result res = busMemberCardService.lableBatch(dto);
 		 return res;
 	 }
-	
+
 	/**
 	 *   通过id删除
 	 *
@@ -215,7 +226,7 @@ public class BusMemberCardController extends JeecgController<BusMemberCard, IBus
 		busMemberCardService.removeById(id);
 		return Result.OK("删除成功!");
 	}
-	
+
 	/**
 	 *  批量删除
 	 *
@@ -244,7 +255,7 @@ public class BusMemberCardController extends JeecgController<BusMemberCard, IBus
 		this.busMemberCardService.removeByIds(idList);
 		return Result.OK("批量删除成功!");
 	}
-	
+
 	/**
 	 * 通过id查询
 	 *

+ 8 - 9
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/BusRoomBookingOrdersController.java

@@ -21,10 +21,7 @@ import org.jeecg.modules.business.dto.BatchOrderSavaDto;
 import org.jeecg.modules.business.dto.BookingOrderSaveDto;
 import org.jeecg.modules.business.dto.UpdateOrderInfoDto;
 import org.jeecg.modules.business.dto.UpdateOrderPriceDto;
-import org.jeecg.modules.business.entity.BusBookingBatch;
-import org.jeecg.modules.business.entity.BusLivingCustomer;
-import org.jeecg.modules.business.entity.BusOrderFee;
-import org.jeecg.modules.business.entity.BusRoomBookingOrders;
+import org.jeecg.modules.business.entity.*;
 import org.jeecg.modules.business.service.IBusRoomBookingOrdersService;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -66,7 +63,7 @@ public class BusRoomBookingOrdersController extends JeecgController<BusRoomBooki
 
 	@Resource
 	private IBusRoomBookingOrdersService busRoomBookingOrdersService;
-	
+
 	/**
 	 * 分页列表查询
 	 *
@@ -88,7 +85,7 @@ public class BusRoomBookingOrdersController extends JeecgController<BusRoomBooki
 		IPage<BusRoomBookingOrders> pageList = busRoomBookingOrdersService.page(page, queryWrapper);
 		return Result.OK(pageList);
 	}
-	
+
 	/**
 	 *   添加
 	 *
@@ -145,7 +142,7 @@ public class BusRoomBookingOrdersController extends JeecgController<BusRoomBooki
 		 BookingOrderEditVo reuslt =  service.getBookingInfoById(bookingOrderId, bookingNo);
 	 	return Result.ok(reuslt);
 	}
-	
+
 	/**
 	 *   通过id删除
 	 *
@@ -190,7 +187,7 @@ public class BusRoomBookingOrdersController extends JeecgController<BusRoomBooki
 		this.busRoomBookingOrdersService.removeByIds(Arrays.asList(ids.split(",")));
 		return Result.OK("批量删除成功!");
 	}
-	
+
 	/**
 	 * 通过id查询
 	 *
@@ -429,10 +426,12 @@ public class BusRoomBookingOrdersController extends JeecgController<BusRoomBooki
 	  */
 	 @ApiOperation(value="酒店预定订单-客历", notes="酒店预定订单-客历")
 	 @RequestMapping(value = "/kedan-orders",method = RequestMethod.GET)
-	 public Result<IPage<KeLiItemVo>> keli(Page<KeLiItemVo> page,String thirdUserId, String keyw, Integer livingStatus,String hotelId,Integer type,Integer bookingStatus){
+	 public Result<IPage<KeLiItemVo>> keli(@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+										   @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,String thirdUserId, String keyw, Integer livingStatus,String hotelId,Integer type,Integer bookingStatus){
 	 	if(type == null) throw new JeecgBootException("参数错误");
 	 	if( type == 1 && livingStatus  == null ) throw new JeecgBootException("参数错误");
 	 	if(type == 2 && bookingStatus == null) throw new JeecgBootException("参数错误");
+		 Page<KeLiItemVo> page = new Page<KeLiItemVo>(pageNo, pageSize);
 	 	if(type == 1 ) return Result.OK(service.getLivingOrderKL(livingStatus,keyw,hotelId,thirdUserId,page));
 	 	if(type == 2) return  Result.OK(service.getBookingOrderKL(bookingStatus,keyw,hotelId,thirdUserId,page));
 	 	return  null;

+ 5 - 3
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/BusRoomBookingOrdersServiceImpl.java

@@ -161,9 +161,11 @@ public class BusRoomBookingOrdersServiceImpl extends ServiceImpl<BusRoomBookingO
                     // save customer
                     BusCustomer newCustomer = new BusCustomer();
                     newCustomer.setCreateTime(new Date());
-                    newCustomer.setCreateUser(user.getId());
-                    newCustomer.setHotelId(user.getRelTenantIds());
-                    newCustomer.setTenantId(user.getRelTenantIds());
+                    if(user!=null) {
+                        newCustomer.setCreateUser(user.getId());
+                        newCustomer.setHotelId(user.getRelTenantIds());
+                        newCustomer.setTenantId(user.getRelTenantIds());
+                    }
                     newCustomer.setName(item.getContactName());
                     newCustomer.setPhone(item.getPhone());
                     newCustomer.setCertType(1); // 身份证

+ 81 - 7
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mall/controller/MallHotelOrderController.java

@@ -7,11 +7,22 @@ import java.util.stream.Collectors;
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+
+import cn.hutool.core.date.DateTime;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.business.entity.BusHotel;
+import org.jeecg.modules.business.entity.BusMarketMealCouponsUsed;
+import org.jeecg.modules.business.entity.BusRoomBookingOrders;
+import org.jeecg.modules.business.enums.CouponsStatusEnum;
+import org.jeecg.modules.business.service.IBusHotelService;
+import org.jeecg.modules.business.service.IBusRoomBookingOrdersService;
 import org.jeecg.modules.mall.entity.MallHotelOrder;
 import org.jeecg.modules.mall.service.IMallHotelOrderService;
 
@@ -20,6 +31,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.extern.slf4j.Slf4j;
 
+import org.jeecg.modules.rooms.entity.CesRoomLayout;
+import org.jeecg.modules.rooms.service.CesRoomLayoutServiceImpl;
 import org.jeecgframework.poi.excel.ExcelImportUtil;
 import org.jeecgframework.poi.excel.def.NormalExcelConstants;
 import org.jeecgframework.poi.excel.entity.ExportParams;
@@ -48,9 +61,14 @@ import org.apache.shiro.authz.annotation.RequiresPermissions;
 @RequestMapping("/mall/mallHotelOrder")
 @Slf4j
 public class MallHotelOrderController extends JeecgController<MallHotelOrder, IMallHotelOrderService> {
-	@Autowired
+	@Resource
 	private IMallHotelOrderService mallHotelOrderService;
-	
+@Resource
+private IBusRoomBookingOrdersService busRoomBookingOrdersService;
+	 @Resource
+	 private IBusHotelService busHotelService;
+	 @Resource
+	 private CesRoomLayoutServiceImpl cesRoomLayoutService;
 	/**
 	 * 分页列表查询
 	 *
@@ -70,9 +88,65 @@ public class MallHotelOrderController extends JeecgController<MallHotelOrder, IM
 		QueryWrapper<MallHotelOrder> queryWrapper = QueryGenerator.initQueryWrapper(mallHotelOrder, req.getParameterMap());
 		Page<MallHotelOrder> page = new Page<MallHotelOrder>(pageNo, pageSize);
 		IPage<MallHotelOrder> pageList = mallHotelOrderService.page(page, queryWrapper);
+		pageList.getRecords().forEach(t -> {
+			if (t.getStatus().equals(1)) {
+				t.setStatusName("未付款");
+			} else if (t.getStatus().equals(2)) {
+				t.setStatusName("已付款");
+			} else if (t.getStatus().equals(3)) {
+				t.setStatusName("已取消");
+			} else if (t.getStatus().equals(4)) {
+				t.setStatusName("已完成");
+			} else if (t.getStatus().equals(5)) {
+				t.setStatusName("待入住");
+			} else if (t.getStatus().equals(6)) {
+				t.setStatusName("已入住");
+			} else if (t.getStatus().equals(7)) {
+				t.setStatusName("退款中");
+			}
+			BusHotel hotel = busHotelService.getById(t.getHotelId());
+			if (hotel != null) {
+				t.setHotelName(hotel.getName());
+			}
+			CesRoomLayout layout = cesRoomLayoutService.getById(t.getLayoutId());
+			if (layout != null) {
+				t.setLayoutName(layout.getName());
+			}
+		});
 		return Result.OK(pageList);
 	}
-	
+
+	 @AutoLog(value = "酒店订单确认入住")
+	 @ApiOperation(value="酒店订单确认入住", notes="酒店订单确认入住")
+	 @PostMapping(value = "/confirm-move")
+	 public Result<String> confirmMove(@RequestBody MallHotelOrder mallHotelOrder) {
+		 MallHotelOrder order = mallHotelOrderService.getById(mallHotelOrder.getId());
+		 if (!order.getStatus().equals(5)) {
+			 return Result.error("订单不是待入住状态");
+		 }
+		 order.setStatus(6);
+		 mallHotelOrderService.updateById(order);
+
+		 LambdaUpdateWrapper<BusRoomBookingOrders> updateWrapper = new UpdateWrapper().lambda();
+		 updateWrapper.set(BusRoomBookingOrders::getBookingStatus,1);
+		 updateWrapper.eq(BusRoomBookingOrders::getOuterOrdersNo, order.getCode());
+		 busRoomBookingOrdersService.update(updateWrapper);
+		 return Result.OK("确认入住成功!");
+	 }
+
+	 @AutoLog(value = "酒店订单取消")
+	 @ApiOperation(value="酒店订单取消", notes="酒店订单取消")
+	 @PostMapping(value = "/confirm-cancel")
+	 public Result<String> confirmCancel(@RequestBody MallHotelOrder mallHotelOrder) {
+		 MallHotelOrder order = mallHotelOrderService.getById(mallHotelOrder.getId());
+		 if (order.getStatus().equals(4)||order.getStatus().equals(6)) {
+			 return Result.error("订单已完成/已入住状态");
+		 }
+		 order.setStatus(3);
+		 mallHotelOrderService.updateById(order);
+		 return Result.OK("取消成功!");
+	 }
+
 	/**
 	 *   添加
 	 *
@@ -87,7 +161,7 @@ public class MallHotelOrderController extends JeecgController<MallHotelOrder, IM
 		mallHotelOrderService.save(mallHotelOrder);
 		return Result.OK("添加成功!");
 	}
-	
+
 	/**
 	 *  编辑
 	 *
@@ -102,7 +176,7 @@ public class MallHotelOrderController extends JeecgController<MallHotelOrder, IM
 		mallHotelOrderService.updateById(mallHotelOrder);
 		return Result.OK("编辑成功!");
 	}
-	
+
 	/**
 	 *   通过id删除
 	 *
@@ -117,7 +191,7 @@ public class MallHotelOrderController extends JeecgController<MallHotelOrder, IM
 		mallHotelOrderService.removeById(id);
 		return Result.OK("删除成功!");
 	}
-	
+
 	/**
 	 *  批量删除
 	 *
@@ -132,7 +206,7 @@ public class MallHotelOrderController extends JeecgController<MallHotelOrder, IM
 		this.mallHotelOrderService.removeByIds(Arrays.asList(ids.split(",")));
 		return Result.OK("批量删除成功!");
 	}
-	
+
 	/**
 	 * 通过id查询
 	 *

+ 178 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mall/controller/MallOrderGoodsController.java

@@ -0,0 +1,178 @@
+package org.jeecg.modules.mall.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.mall.entity.MallOrderGoods;
+import org.jeecg.modules.mall.service.IMallOrderGoodsService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+
+ /**
+ * @Description: mall_order_goods
+ * @Author: jeecg-boot
+ * @Date:   2023-05-06
+ * @Version: V1.0
+ */
+@Api(tags="mall_order_goods")
+@RestController
+@RequestMapping("/mall/mallOrderGoods")
+@Slf4j
+public class MallOrderGoodsController extends JeecgController<MallOrderGoods, IMallOrderGoodsService> {
+	@Autowired
+	private IMallOrderGoodsService mallOrderGoodsService;
+
+	/**
+	 * 分页列表查询
+	 *
+	 * @param mallOrderGoods
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "mall_order_goods-分页列表查询")
+	@ApiOperation(value="mall_order_goods-分页列表查询", notes="mall_order_goods-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<MallOrderGoods>> queryPageList(MallOrderGoods mallOrderGoods,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<MallOrderGoods> queryWrapper = QueryGenerator.initQueryWrapper(mallOrderGoods, req.getParameterMap());
+		Page<MallOrderGoods> page = new Page<MallOrderGoods>(pageNo, pageSize);
+		IPage<MallOrderGoods> pageList = mallOrderGoodsService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+
+	/**
+	 *   添加
+	 *
+	 * @param mallOrderGoods
+	 * @return
+	 */
+	@AutoLog(value = "mall_order_goods-添加")
+	@ApiOperation(value="mall_order_goods-添加", notes="mall_order_goods-添加")
+	//@RequiresPermissions("mall:mall_order_goods:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody MallOrderGoods mallOrderGoods) {
+		mallOrderGoodsService.save(mallOrderGoods);
+		return Result.OK("添加成功!");
+	}
+
+	/**
+	 *  编辑
+	 *
+	 * @param mallOrderGoods
+	 * @return
+	 */
+	@AutoLog(value = "mall_order_goods-编辑")
+	@ApiOperation(value="mall_order_goods-编辑", notes="mall_order_goods-编辑")
+	//@RequiresPermissions("mall:mall_order_goods:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody MallOrderGoods mallOrderGoods) {
+		mallOrderGoodsService.updateById(mallOrderGoods);
+		return Result.OK("编辑成功!");
+	}
+
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "mall_order_goods-通过id删除")
+	@ApiOperation(value="mall_order_goods-通过id删除", notes="mall_order_goods-通过id删除")
+	//@RequiresPermissions("mall:mall_order_goods:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		mallOrderGoodsService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "mall_order_goods-批量删除")
+	@ApiOperation(value="mall_order_goods-批量删除", notes="mall_order_goods-批量删除")
+	//@RequiresPermissions("mall:mall_order_goods:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.mallOrderGoodsService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "mall_order_goods-通过id查询")
+	@ApiOperation(value="mall_order_goods-通过id查询", notes="mall_order_goods-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<MallOrderGoods> queryById(@RequestParam(name="id",required=true) String id) {
+		MallOrderGoods mallOrderGoods = mallOrderGoodsService.getById(id);
+		if(mallOrderGoods==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(mallOrderGoods);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param mallOrderGoods
+    */
+    //@RequiresPermissions("mall:mall_order_goods:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, MallOrderGoods mallOrderGoods) {
+        return super.exportXls(request, mallOrderGoods, MallOrderGoods.class, "mall_order_goods");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("mall:mall_order_goods:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, MallOrderGoods.class);
+    }
+
+}

+ 178 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mall/controller/MallOrderGoodsDetailController.java

@@ -0,0 +1,178 @@
+package org.jeecg.modules.mall.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.mall.entity.MallOrderGoodsDetail;
+import org.jeecg.modules.mall.service.IMallOrderGoodsDetailService;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+
+ /**
+ * @Description: mall_order_goods_detail
+ * @Author: jeecg-boot
+ * @Date:   2023-05-06
+ * @Version: V1.0
+ */
+@Api(tags="mall_order_goods_detail")
+@RestController
+@RequestMapping("/mall/mallOrderGoodsDetail")
+@Slf4j
+public class MallOrderGoodsDetailController extends JeecgController<MallOrderGoodsDetail, IMallOrderGoodsDetailService> {
+	@Autowired
+	private IMallOrderGoodsDetailService mallOrderGoodsDetailService;
+
+	/**
+	 * 分页列表查询
+	 *
+	 * @param mallOrderGoodsDetail
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "mall_order_goods_detail-分页列表查询")
+	@ApiOperation(value="mall_order_goods_detail-分页列表查询", notes="mall_order_goods_detail-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<MallOrderGoodsDetail>> queryPageList(MallOrderGoodsDetail mallOrderGoodsDetail,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<MallOrderGoodsDetail> queryWrapper = QueryGenerator.initQueryWrapper(mallOrderGoodsDetail, req.getParameterMap());
+		Page<MallOrderGoodsDetail> page = new Page<MallOrderGoodsDetail>(pageNo, pageSize);
+		IPage<MallOrderGoodsDetail> pageList = mallOrderGoodsDetailService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+
+	/**
+	 *   添加
+	 *
+	 * @param mallOrderGoodsDetail
+	 * @return
+	 */
+	@AutoLog(value = "mall_order_goods_detail-添加")
+	@ApiOperation(value="mall_order_goods_detail-添加", notes="mall_order_goods_detail-添加")
+	//@RequiresPermissions("mall:mall_order_goods_detail:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody MallOrderGoodsDetail mallOrderGoodsDetail) {
+		mallOrderGoodsDetailService.save(mallOrderGoodsDetail);
+		return Result.OK("添加成功!");
+	}
+
+	/**
+	 *  编辑
+	 *
+	 * @param mallOrderGoodsDetail
+	 * @return
+	 */
+	@AutoLog(value = "mall_order_goods_detail-编辑")
+	@ApiOperation(value="mall_order_goods_detail-编辑", notes="mall_order_goods_detail-编辑")
+	//@RequiresPermissions("mall:mall_order_goods_detail:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody MallOrderGoodsDetail mallOrderGoodsDetail) {
+		mallOrderGoodsDetailService.updateById(mallOrderGoodsDetail);
+		return Result.OK("编辑成功!");
+	}
+
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "mall_order_goods_detail-通过id删除")
+	@ApiOperation(value="mall_order_goods_detail-通过id删除", notes="mall_order_goods_detail-通过id删除")
+	//@RequiresPermissions("mall:mall_order_goods_detail:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		mallOrderGoodsDetailService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "mall_order_goods_detail-批量删除")
+	@ApiOperation(value="mall_order_goods_detail-批量删除", notes="mall_order_goods_detail-批量删除")
+	//@RequiresPermissions("mall:mall_order_goods_detail:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.mallOrderGoodsDetailService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "mall_order_goods_detail-通过id查询")
+	@ApiOperation(value="mall_order_goods_detail-通过id查询", notes="mall_order_goods_detail-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<MallOrderGoodsDetail> queryById(@RequestParam(name="id",required=true) String id) {
+		MallOrderGoodsDetail mallOrderGoodsDetail = mallOrderGoodsDetailService.getById(id);
+		if(mallOrderGoodsDetail==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(mallOrderGoodsDetail);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param mallOrderGoodsDetail
+    */
+    //@RequiresPermissions("mall:mall_order_goods_detail:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, MallOrderGoodsDetail mallOrderGoodsDetail) {
+        return super.exportXls(request, mallOrderGoodsDetail, MallOrderGoodsDetail.class, "mall_order_goods_detail");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("mall:mall_order_goods_detail:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, MallOrderGoodsDetail.class);
+    }
+
+}

+ 24 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mall/entity/MallHotelOrder.java

@@ -9,6 +9,7 @@ import cn.hutool.core.date.DateTime;
 import com.baomidou.mybatisplus.annotation.*;
 import lombok.Data;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import org.jeecg.modules.business.entity.BusHotel;
 import org.springframework.format.annotation.DateTimeFormat;
 import org.jeecgframework.poi.excel.annotation.Excel;
 import org.jeecg.common.aspect.annotation.Dict;
@@ -103,6 +104,10 @@ public class MallHotelOrder implements Serializable {
 	@Excel(name = "优惠券id", width = 15)
     @ApiModelProperty(value = "优惠券id")
     private String couponId;
+    /**优惠券金额*/
+    @Excel(name = "优惠券金额", width = 15)
+    @ApiModelProperty(value = "优惠券金额")
+    private BigDecimal couponMoney;
 	/**会员折扣金额*/
 	@Excel(name = "会员折扣金额", width = 15)
     @ApiModelProperty(value = "会员折扣金额")
@@ -120,10 +125,29 @@ public class MallHotelOrder implements Serializable {
     @DateTimeFormat(pattern="yyyy-MM-dd")
     @ApiModelProperty(value = "创建时间")
     private Date createTime;
+    /**房型价格id*/
+    @Excel(name = "房型价格id", width = 15)
+    @ApiModelProperty(value = "房型价格id")
+    private String roomLayoutPriceId;
 
 	@TableField(exist = false)
 	private BigDecimal dayMoney;
 
     @TableField(exist = false)
     private Integer bookingType;
+
+    @TableField(exist = false)
+    private String statusName;
+
+    @TableField(exist = false)
+    private String hotelName;
+
+    @TableField(exist = false)
+    private String layoutName;
+
+    @TableField(exist = false)
+    private BusHotel hotel;
+
+    @TableField(exist = false)
+    private String couponName;
 }

+ 157 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mall/entity/MallOrderGoods.java

@@ -0,0 +1,157 @@
+package org.jeecg.modules.mall.entity;
+
+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.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: mall_order_goods
+ * @Author: jeecg-boot
+ * @Date:   2023-05-06
+ * @Version: V1.0
+ */
+@Data
+@TableName("mall_order_goods")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="mall_order_goods对象", description="mall_order_goods")
+public class MallOrderGoods implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private String id;
+    /**
+     * 关联租户
+     */
+    @Excel(name = "关联租户", width = 15)
+    @ApiModelProperty(value = "关联租户")
+    private String tenantId;
+    /**
+     * 关联酒店
+     */
+    @Excel(name = "关联酒店", width = 15)
+    @ApiModelProperty(value = "关联酒店")
+    private String hotelId;
+    /**
+     * 会员卡id
+     */
+    @Excel(name = "会员卡id", width = 15)
+    @ApiModelProperty(value = "会员卡id")
+    private String memberId;
+    /**
+     * 订单号
+     */
+    @Excel(name = "订单号", width = 15)
+    @ApiModelProperty(value = "订单号")
+    private String code;
+    /**
+     * 商城用户id
+     */
+    @Excel(name = "商城用户id", width = 15)
+    @ApiModelProperty(value = "商城用户id")
+    private String mallUserId;
+    /**
+     * 客户姓名
+     */
+    @Excel(name = "客户姓名", width = 15)
+    @ApiModelProperty(value = "客户姓名")
+    private String contactName;
+    /**
+     * 联系电话
+     */
+    @Excel(name = "联系电话", width = 15)
+    @ApiModelProperty(value = "联系电话")
+    private String mobile;
+    /**
+     * 房号
+     */
+    @Excel(name = "房号", width = 15)
+    @ApiModelProperty(value = "房号")
+    private String roomNo;
+    /**
+     * 备注
+     */
+    @Excel(name = "备注", width = 15)
+    @ApiModelProperty(value = "备注")
+    private String remarks;
+    /**
+     * 支付方式 1会员卡 2积分 3微信
+     */
+    @Excel(name = "支付方式 1会员卡 2积分 3微信", width = 15)
+    @ApiModelProperty(value = "支付方式 1会员卡 2积分 3微信")
+    private Integer paymentMethod;
+    /**
+     * 积分支付价格
+     */
+    @Excel(name = "积分支付价格", width = 15)
+    @ApiModelProperty(value = "积分支付价格")
+    private BigDecimal integralPayMoney;
+    /**
+     * 价格
+     */
+    @Excel(name = "价格", width = 15)
+    @ApiModelProperty(value = "价格")
+    private BigDecimal money;
+    /**
+     * 付款状态 0未付款 1已付款
+     */
+    @Excel(name = "付款状态 0未付款 1已付款", width = 15)
+    @ApiModelProperty(value = "付款状态 0未付款 1已付款")
+    private Integer payStatus;
+    /**
+     * 订单状态 1待发货 2待收货 3已完成 4已拒绝 5已取消 6 已完成
+     */
+    @Excel(name = "订单状态 1待发货 2待收货 3已完成 4已拒绝 5已取消", width = 15)
+    @ApiModelProperty(value = "订单状态 1待发货 2待收货 3已完成 4已拒绝 5已取消")
+    private Integer status;
+    /**
+     * 第三方支付单号
+     */
+    @Excel(name = "第三方支付单号", width = 15)
+    @ApiModelProperty(value = "第三方支付单号")
+    private String thirdOrderNo;
+    /**
+     * 创建时间
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    @ApiModelProperty(value = "订单商品列表")
+    @TableField(exist = false)
+    private List<MallOrderGoodsDetail> detailList;
+
+    @ApiModelProperty(value = "是否余额支付")
+    @TableField(exist = false)
+    private Boolean isBalancePay;
+
+    @ApiModelProperty(value = "余额支付密码")
+    @TableField(exist = false)
+    private String balancePwd;
+
+    @ApiModelProperty(value = "状态描述")
+    @TableField(exist = false)
+    private String statusName;
+
+    @ApiModelProperty(value = "酒店名称")
+    @TableField(exist = false)
+    private String hotelName;
+}

+ 67 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mall/entity/MallOrderGoodsDetail.java

@@ -0,0 +1,67 @@
+package org.jeecg.modules.mall.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.jeecg.modules.rooms.entity.CesGoods;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: mall_order_goods_detail
+ * @Author: jeecg-boot
+ * @Date:   2023-05-06
+ * @Version: V1.0
+ */
+@Data
+@TableName("mall_order_goods_detail")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="mall_order_goods_detail对象", description="mall_order_goods_detail")
+public class MallOrderGoodsDetail implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private String id;
+	/**关联租户*/
+	@Excel(name = "关联租户", width = 15)
+    @ApiModelProperty(value = "关联租户")
+    private String tenantId;
+	/**关联酒店*/
+	@Excel(name = "关联酒店", width = 15)
+    @ApiModelProperty(value = "关联酒店")
+    private String hotelId;
+	/**订单号*/
+	@Excel(name = "订单号", width = 15)
+    @ApiModelProperty(value = "订单号")
+    private String orderCode;
+	/**商品id*/
+	@Excel(name = "商品id", width = 15)
+    @ApiModelProperty(value = "商品id")
+    private String goodsId;
+	/**数量*/
+	@Excel(name = "数量", width = 15)
+    @ApiModelProperty(value = "数量")
+    private Integer num;
+	/**价格*/
+	@Excel(name = "价格", width = 15)
+    @ApiModelProperty(value = "价格")
+    private BigDecimal money;
+
+	@TableField(exist = false)
+	private CesGoods goodsInfo;
+
+
+}

+ 1 - 1
jeecg-mall-api/src/main/java/org/jeecg/modules/wxuser/entity/MallUserInfo.java

@@ -1,4 +1,4 @@
-package org.jeecg.modules.wxuser.entity;
+package org.jeecg.modules.mall.entity;
 
 import java.io.Serializable;
 import java.io.UnsupportedEncodingException;

+ 17 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mall/mapper/MallOrderGoodsDetailMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.mall.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.mall.entity.MallOrderGoodsDetail;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: mall_order_goods_detail
+ * @Author: jeecg-boot
+ * @Date:   2023-05-06
+ * @Version: V1.0
+ */
+public interface MallOrderGoodsDetailMapper extends BaseMapper<MallOrderGoodsDetail> {
+
+}

+ 17 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mall/mapper/MallOrderGoodsMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.mall.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.mall.entity.MallOrderGoods;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: mall_order_goods
+ * @Author: jeecg-boot
+ * @Date:   2023-05-06
+ * @Version: V1.0
+ */
+public interface MallOrderGoodsMapper extends BaseMapper<MallOrderGoods> {
+
+}

+ 5 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mall/mapper/xml/MallOrderGoodsDetailMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.mall.mapper.MallOrderGoodsDetailMapper">
+
+</mapper>

+ 5 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mall/mapper/xml/MallOrderGoodsMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.mall.mapper.MallOrderGoodsMapper">
+
+</mapper>

+ 14 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mall/service/IMallOrderGoodsDetailService.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.mall.service;
+
+import org.jeecg.modules.mall.entity.MallOrderGoodsDetail;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: mall_order_goods_detail
+ * @Author: jeecg-boot
+ * @Date:   2023-05-06
+ * @Version: V1.0
+ */
+public interface IMallOrderGoodsDetailService extends IService<MallOrderGoodsDetail> {
+
+}

+ 14 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/mall/service/IMallOrderGoodsService.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.mall.service;
+
+import org.jeecg.modules.mall.entity.MallOrderGoods;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: mall_order_goods
+ * @Author: jeecg-boot
+ * @Date:   2023-05-06
+ * @Version: V1.0
+ */
+public interface IMallOrderGoodsService extends IService<MallOrderGoods> {
+
+}