Procházet zdrojové kódy

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

qh před 2 roky
rodič
revize
b53de22353
49 změnil soubory, kde provedl 2789 přidání a 7 odebrání
  1. 1 1
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/BusMarketCouponsCashController.java
  2. 196 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/BusMarketMealCouponsController.java
  3. 346 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/BusMarketMealCouponsUsedController.java
  4. 178 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/BusMeetingRoomController.java
  5. 82 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/BusMeetingRoomScheduleController.java
  6. 237 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/BusMemberBalanceLogController.java
  7. 39 1
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/BusMemberCardController.java
  8. 181 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/BusMemberPointLogController.java
  9. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/dto/BusMeetingRoomScheduleDetailDto.java
  10. 15 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/dto/BusMeetingRoomScheduleDto.java
  11. 83 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/BusMarketMealCoupons.java
  12. 113 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/BusMarketMealCouponsUsed.java
  13. 92 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/BusMeetingRoom.java
  14. 103 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/BusMeetingRoomSchedule.java
  15. 85 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/BusMeetingRoomScheduleDetail.java
  16. 109 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/BusMemberBalanceLog.java
  17. 73 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/BusMemberPointLog.java
  18. 21 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/BusMarketMealCouponsMapper.java
  19. 53 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/BusMarketMealCouponsUsedMapper.java
  20. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/BusMeetingRoomMapper.java
  21. 16 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/BusMeetingRoomScheduleDetailMapper.java
  22. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/BusMeetingRoomScheduleMapper.java
  23. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/BusMemberBalanceLogMapper.java
  24. 17 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/BusMemberPointLogMapper.java
  25. 22 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/BusMarketMealCouponsMapper.xml
  26. 5 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/BusMarketMealCouponsUsedMapper.xml
  27. 5 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/BusMeetingRoomMapper.xml
  28. 5 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/BusMemberBalanceLogMapper.xml
  29. 5 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/BusMemberPointLogMapper.xml
  30. 9 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IBusMarketCouponsCashService.java
  31. 24 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IBusMarketMealCouponsService.java
  32. 38 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IBusMarketMealCouponsUsedService.java
  33. 16 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IBusMeetingRoomScheduleDetailService.java
  34. 14 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IBusMeetingRoomService.java
  35. 22 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IBusMemberBalanceLogService.java
  36. 22 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IBusMemberPointLogService.java
  37. 20 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/BusMarketCouponsCashServiceImpl.java
  38. 49 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/BusMarketMealCouponsServiceImpl.java
  39. 106 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/BusMarketMealCouponsUsedServiceImpl.java
  40. 37 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/BusMeetingRoomScheduleDetailServiceImpl.java
  41. 83 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/BusMeetingRoomScheduleServiceImpl.java
  42. 19 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/BusMeetingRoomServiceImpl.java
  43. 83 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/BusMemberBalanceLogServiceImpl.java
  44. 69 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/BusMemberPointLogServiceImpl.java
  45. 24 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/vo/MealCouponStatVo.java
  46. 1 1
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/controller/CesGoodsController.java
  47. 0 3
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/controller/CesGoodsUnitController.java
  48. 2 1
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/service/CesGoodStockRecordsServiceImpl.java
  49. 1 0
      jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/service/CesGoodsServiceImpl.java

+ 1 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/BusMarketCouponsCashController.java

@@ -133,7 +133,7 @@ public class BusMarketCouponsCashController extends JeecgController<BusMarketCou
 	//@RequiresPermissions("business:bus_market_coupons_cash_info:delete")
 	@DeleteMapping(value = "/delete")
 	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
-		busMarketCouponsCashService.removeById(id);
+		busMarketCouponsCashService.removeCouponsAndCouponsUsedById(id);
 		return Result.OK("删除成功!");
 	}
 	

+ 196 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/BusMarketMealCouponsController.java

@@ -0,0 +1,196 @@
+package org.jeecg.modules.business.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.exception.JeecgBootException;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.TokenUtils;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.business.entity.BusHotel;
+import org.jeecg.modules.business.entity.BusMarketMealCoupons;
+import org.jeecg.modules.business.service.IBusHotelService;
+import org.jeecg.modules.business.service.IBusMarketMealCouponsService;
+
+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: bus_market_meal_coupons_info
+ * @Author: jeecg-boot
+ * @Date:   2023-03-14
+ * @Version: V1.0
+ */
+@Api(tags="bus_market_meal_coupons_info")
+@RestController
+@RequestMapping("/business/busMarketMealCoupons")
+@Slf4j
+public class BusMarketMealCouponsController extends JeecgController<BusMarketMealCoupons, IBusMarketMealCouponsService> {
+	@Autowired
+	private IBusMarketMealCouponsService busMarketMealCouponsService;
+	 @Autowired
+	 private IBusHotelService busHotelService;
+	/**
+	 * 分页列表查询
+	 *
+	 * @param busMarketMealCoupons
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "bus_market_meal_coupons_info-分页列表查询")
+	@ApiOperation(value="bus_market_meal_coupons_info-分页列表查询", notes="bus_market_meal_coupons_info-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<BusMarketMealCoupons>> queryPageList(BusMarketMealCoupons busMarketMealCoupons,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+//		QueryWrapper<BusMarketMealCoupons> queryWrapper = QueryGenerator.initQueryWrapper(busMarketMealCoupons, req.getParameterMap());
+		Page<BusMarketMealCoupons> page = new Page<BusMarketMealCoupons>(pageNo, pageSize);
+		IPage<BusMarketMealCoupons> pageList = busMarketMealCouponsService.pageList(page, busMarketMealCoupons);
+		pageList.getRecords().forEach(item -> {
+			BusHotel hotle = busHotelService.getById(item.getHotelId());
+			if (hotle != null) {
+				item.setHotelName(hotle.getName());
+			}
+		});
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param busMarketMealCoupons
+	 * @return
+	 */
+	@AutoLog(value = "bus_market_meal_coupons_info-添加")
+	@ApiOperation(value="bus_market_meal_coupons_info-添加", notes="bus_market_meal_coupons_info-添加")
+	//@RequiresPermissions("business:bus_market_meal_coupons_info:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody BusMarketMealCoupons busMarketMealCoupons) {
+		LoginUser user = TokenUtils.getAuthUser();
+		if (user.getRelTenantIds() != null && !user.getRelTenantIds().equals("")) {
+			busMarketMealCoupons.setTenantId(user.getRelTenantIds());
+		} else {
+			throw new JeecgBootException("当前登录人租户信息错误");
+		}
+		busMarketMealCouponsService.save(busMarketMealCoupons);
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param busMarketMealCoupons
+	 * @return
+	 */
+	@AutoLog(value = "bus_market_meal_coupons_info-编辑")
+	@ApiOperation(value="bus_market_meal_coupons_info-编辑", notes="bus_market_meal_coupons_info-编辑")
+	//@RequiresPermissions("business:bus_market_meal_coupons_info:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody BusMarketMealCoupons busMarketMealCoupons) {
+		busMarketMealCouponsService.updateById(busMarketMealCoupons);
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "bus_market_meal_coupons_info-通过id删除")
+	@ApiOperation(value="bus_market_meal_coupons_info-通过id删除", notes="bus_market_meal_coupons_info-通过id删除")
+	//@RequiresPermissions("business:bus_market_meal_coupons_info:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		busMarketMealCouponsService.removeCouponsAndCouponsUsedById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "bus_market_meal_coupons_info-批量删除")
+	@ApiOperation(value="bus_market_meal_coupons_info-批量删除", notes="bus_market_meal_coupons_info-批量删除")
+	//@RequiresPermissions("business:bus_market_meal_coupons_info:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.busMarketMealCouponsService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "bus_market_meal_coupons_info-通过id查询")
+	@ApiOperation(value="bus_market_meal_coupons_info-通过id查询", notes="bus_market_meal_coupons_info-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<BusMarketMealCoupons> queryById(@RequestParam(name="id",required=true) String id) {
+		BusMarketMealCoupons busMarketMealCoupons = busMarketMealCouponsService.getById(id);
+		if(busMarketMealCoupons==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(busMarketMealCoupons);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param busMarketMealCoupons
+    */
+    //@RequiresPermissions("business:bus_market_meal_coupons_info:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, BusMarketMealCoupons busMarketMealCoupons) {
+        return super.exportXls(request, busMarketMealCoupons, BusMarketMealCoupons.class, "bus_market_meal_coupons_info");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("business:bus_market_meal_coupons_info:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, BusMarketMealCoupons.class);
+    }
+
+}

+ 346 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/BusMarketMealCouponsUsedController.java

@@ -0,0 +1,346 @@
+package org.jeecg.modules.business.controller;
+
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+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 cn.hutool.core.date.DateTime;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import org.apache.commons.lang3.ObjectUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.TokenUtils;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.business.dto.CouponsGenerateDto;
+import org.jeecg.modules.business.dto.PostDataDto;
+import org.jeecg.modules.business.entity.BusMarketCoupons;
+import org.jeecg.modules.business.entity.BusMarketCouponsCashUsed;
+import org.jeecg.modules.business.entity.BusMarketMealCoupons;
+import org.jeecg.modules.business.entity.BusMarketMealCouponsUsed;
+import org.jeecg.modules.business.enums.CouponsStatusEnum;
+import org.jeecg.modules.business.service.IBusMarketCouponsService;
+import org.jeecg.modules.business.service.IBusMarketMealCouponsService;
+import org.jeecg.modules.business.service.IBusMarketMealCouponsUsedService;
+
+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.jeecg.modules.business.vo.MealCouponStatVo;
+import org.jeecg.modules.business.vo.MemberCardStatVo;
+import org.jeecg.modules.rooms.entity.CesMealCoupon;
+import org.jeecg.modules.rooms.entity.CesStockType;
+import org.jeecg.modules.rooms.service.CesMealCouponServiceImpl;
+import org.jeecg.modules.rooms.service.CesStockTypeServiceImpl;
+import org.jeecg.modules.system.entity.SysUser;
+import org.jeecg.modules.system.service.ISysUserService;
+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: bus_market_meal_coupons_used
+ * @Author: jeecg-boot
+ * @Date:   2023-03-14
+ * @Version: V1.0
+ */
+@Api(tags="bus_market_meal_coupons_used")
+@RestController
+@RequestMapping("/business/busMarketMealCouponsUsed")
+@Slf4j
+public class BusMarketMealCouponsUsedController extends JeecgController<BusMarketMealCouponsUsed, IBusMarketMealCouponsUsedService> {
+	@Autowired
+	private IBusMarketMealCouponsUsedService busMarketMealCouponsUsedService;
+	 @Autowired
+	 private IBusMarketMealCouponsService busMarketMealCouponsService;
+	 @Autowired
+	 private CesMealCouponServiceImpl cesMealCouponService;
+	 @Autowired
+	 private ISysUserService sysUserService;
+	/**
+	 * 分页列表查询
+	 *
+	 * @param busMarketMealCouponsUsed
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "bus_market_meal_coupons_used-分页列表查询")
+	@ApiOperation(value="bus_market_meal_coupons_used-分页列表查询", notes="bus_market_meal_coupons_used-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<BusMarketMealCouponsUsed>> queryPageList(BusMarketMealCouponsUsed busMarketMealCouponsUsed,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<BusMarketMealCouponsUsed> queryWrapper = QueryGenerator.initQueryWrapper(busMarketMealCouponsUsed, req.getParameterMap());
+		Page<BusMarketMealCouponsUsed> page = new Page<BusMarketMealCouponsUsed>(pageNo, pageSize);
+		IPage<BusMarketMealCouponsUsed> pageList = busMarketMealCouponsUsedService.page(page, queryWrapper);
+		pageList.getRecords().forEach(item -> {
+			BusMarketMealCoupons coupons = busMarketMealCouponsService.getById(item.getCouponsId());
+			if (coupons != null) {
+				item.setCouponsName(coupons.getName());
+				item.setCost(coupons.getCost());
+				if (ObjectUtils.isNotEmpty(coupons.getType())) {
+					CesMealCoupon cesMealCoupon = cesMealCouponService.getById(coupons.getType());
+					if (cesMealCoupon != null) {
+						item.setTypeName(cesMealCoupon.getName());
+					}
+				}
+			}
+			CouponsStatusEnum couponsStatusEnum = CouponsStatusEnum.val(item.getStatus());
+			if (couponsStatusEnum != null) {
+				item.setStatusName(couponsStatusEnum.getTitle());
+			}
+			if (ObjectUtils.isNotEmpty(item.getUsedUserId())) {
+				SysUser sysUser = sysUserService.getById(item.getUsedUserId());
+				if (sysUser != null) {
+					item.setUsedUserName(sysUser.getUsername());
+				}
+			}
+		});
+		return Result.OK(pageList);
+	}
+
+	 /**
+	  * 核销列表
+	  * @param pageNo
+	  * @param pageSize
+	  * @param hotelId
+	  * @param type
+	  * @param req
+	  * @return
+	  */
+	 @ApiOperation(value="核销列表", notes="核销列表")
+	 @GetMapping(value = "/verifyList")
+	 public Result<IPage<BusMarketMealCouponsUsed>> verifyPageList(@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+																  @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+																   @RequestParam(name="hotelId", required = true) String hotelId,
+																   @RequestParam(name="type", defaultValue="") String type,
+																  HttpServletRequest req) {
+		 Page<BusMarketMealCouponsUsed> page = new Page<BusMarketMealCouponsUsed>(pageNo, pageSize);
+		 IPage<BusMarketMealCouponsUsed> pageList = busMarketMealCouponsUsedService.verifyList(page, hotelId, type);
+		 pageList.getRecords().forEach(item -> {
+			 if (ObjectUtils.isNotEmpty(item.getUsedUserId())) {
+				 SysUser sysUser = sysUserService.getById(item.getUsedUserId());
+				 if (sysUser != null) {
+					 item.setUsedUserName(sysUser.getUsername());
+				 }
+			 }
+		 });
+		 return Result.OK(pageList);
+	 }
+
+	 /**
+	  * 核销各种统计
+	  * @param hotelId
+	  * @return
+	  */
+	 @GetMapping(value = "/stat")
+	 public Result stat(@RequestParam(name="hotelId") String hotelId,@RequestParam(name="type",required = false) String type) {
+		 MealCouponStatVo vo = busMarketMealCouponsUsedService.stat(hotelId,type);
+		 return Result.OK(vo);
+	 }
+
+	/**
+	 *   添加
+	 *
+	 * @param busMarketMealCouponsUsed
+	 * @return
+	 */
+	@AutoLog(value = "bus_market_meal_coupons_used-添加")
+	@ApiOperation(value="bus_market_meal_coupons_used-添加", notes="bus_market_meal_coupons_used-添加")
+	//@RequiresPermissions("business:bus_market_meal_coupons_used:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody BusMarketMealCouponsUsed busMarketMealCouponsUsed) {
+		busMarketMealCouponsUsedService.save(busMarketMealCouponsUsed);
+		return Result.OK("添加成功!");
+	}
+
+	 /**
+	  *   生成餐券
+	  *
+	  * @param dto
+	  * @return
+	  */
+	 @AutoLog(value = "餐券领取使用表-生成")
+	 @ApiOperation(value="餐券领取使用表-生成", notes="餐券领取使用表-生成")
+	 @PostMapping(value = "/generate")
+	 public Result<String> generate(@RequestBody CouponsGenerateDto dto) {
+		 Result res = busMarketMealCouponsUsedService.generate(dto);
+		 return res;
+	 }
+
+	 /**
+	  * 核销
+	  * @param dto
+	  * @return
+	  */
+	 @AutoLog(value = "核销")
+	 @ApiOperation(value="核销", notes="核销")
+	 @RequestMapping(value = "/verify", method = {RequestMethod.POST})
+	 public Result<String> verify(@RequestBody PostDataDto dto) {
+		 BusMarketMealCouponsUsed busMarketMealCouponsUsed = busMarketMealCouponsUsedService.getById(dto.getId());
+		 if (busMarketMealCouponsUsed == null) {
+			 return Result.error("此券不存在!");
+		 }
+		 if (busMarketMealCouponsUsed.getStatus() != CouponsStatusEnum.received.getKey()) {
+			 CouponsStatusEnum couponsStatusEnum = CouponsStatusEnum.val(busMarketMealCouponsUsed.getStatus());
+			 String statusName = "";
+			 if (couponsStatusEnum != null) {
+				 statusName = couponsStatusEnum.getTitle();
+			 }
+			 return Result.error("此券状态" + statusName + ",不可核销!");
+		 }
+		 BusMarketMealCoupons busMarketMealCoupons = busMarketMealCouponsService.getById(busMarketMealCouponsUsed.getCouponsId());
+		 if (busMarketMealCoupons == null) {
+			 return Result.error("此券活动不存在!");
+		 }
+		 CesMealCoupon cesMealCoupon = cesMealCouponService.getById(busMarketMealCoupons.getType());
+		 if (cesMealCoupon == null) {
+			 return Result.error("此券类型不存在!");
+		 }
+		 DateTime dateTime = DateTime.now();
+		 DateFormat startDateFormat = new SimpleDateFormat("yyyy-MM-dd " + cesMealCoupon.getStartDate().trim());
+		 String startDateStr = startDateFormat.format(dateTime);
+		 DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+		 try {
+			 if (dateTime.compareTo(dateFormat.parse(startDateStr)) < 0) {
+				 return Result.error("此券未到核销时间!");
+			 }
+		 } catch (ParseException e) {
+			 return Result.error("此券类型开始时间格式错误!");
+		 }
+
+		 DateFormat endDateFormat = new SimpleDateFormat("yyyy-MM-dd " + cesMealCoupon.getEndDate().trim());
+		 String endDateStr = endDateFormat.format(dateTime);
+		 try {
+			 if (dateTime.compareTo(dateFormat.parse(endDateStr)) > 0) {
+				 return Result.error("此券已超过核销时间!");
+			 }
+		 } catch (ParseException e) {
+			 return Result.error("此券类型截至时间格式错误!");
+		 }
+		 LoginUser user = TokenUtils.getAuthUser();
+		 LambdaUpdateWrapper<BusMarketMealCouponsUsed> updateWrapper = new UpdateWrapper().lambda();
+		 updateWrapper.set(BusMarketMealCouponsUsed::getStatus, CouponsStatusEnum.used.getKey());
+		 updateWrapper.set(BusMarketMealCouponsUsed::getUsedUserId, user.getId());
+		 updateWrapper.set(BusMarketMealCouponsUsed::getUsedTime, DateTime.now());
+		 updateWrapper.eq(BusMarketMealCouponsUsed::getId, dto.getId());
+		 busMarketMealCouponsUsedService.update(updateWrapper);
+		 return Result.OK("编辑成功!");
+	 }
+	
+	/**
+	 *  编辑
+	 *
+	 * @param busMarketMealCouponsUsed
+	 * @return
+	 */
+	@AutoLog(value = "bus_market_meal_coupons_used-编辑")
+	@ApiOperation(value="bus_market_meal_coupons_used-编辑", notes="bus_market_meal_coupons_used-编辑")
+	//@RequiresPermissions("business:bus_market_meal_coupons_used:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody BusMarketMealCouponsUsed busMarketMealCouponsUsed) {
+		busMarketMealCouponsUsedService.updateById(busMarketMealCouponsUsed);
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "bus_market_meal_coupons_used-通过id删除")
+	@ApiOperation(value="bus_market_meal_coupons_used-通过id删除", notes="bus_market_meal_coupons_used-通过id删除")
+	//@RequiresPermissions("business:bus_market_meal_coupons_used:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		busMarketMealCouponsUsedService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "bus_market_meal_coupons_used-批量删除")
+	@ApiOperation(value="bus_market_meal_coupons_used-批量删除", notes="bus_market_meal_coupons_used-批量删除")
+	//@RequiresPermissions("business:bus_market_meal_coupons_used:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.busMarketMealCouponsUsedService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "bus_market_meal_coupons_used-通过id查询")
+	@ApiOperation(value="bus_market_meal_coupons_used-通过id查询", notes="bus_market_meal_coupons_used-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<BusMarketMealCouponsUsed> queryById(@RequestParam(name="id",required=true) String id) {
+		BusMarketMealCouponsUsed busMarketMealCouponsUsed = busMarketMealCouponsUsedService.getById(id);
+		if(busMarketMealCouponsUsed==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(busMarketMealCouponsUsed);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param busMarketMealCouponsUsed
+    */
+    //@RequiresPermissions("business:bus_market_meal_coupons_used:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, BusMarketMealCouponsUsed busMarketMealCouponsUsed) {
+        return super.exportXls(request, busMarketMealCouponsUsed, BusMarketMealCouponsUsed.class, "bus_market_meal_coupons_used");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("business:bus_market_meal_coupons_used:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, BusMarketMealCouponsUsed.class);
+    }
+
+}

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

@@ -0,0 +1,178 @@
+package org.jeecg.modules.business.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.business.entity.BusMeetingRoom;
+import org.jeecg.modules.business.service.IBusMeetingRoomService;
+
+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: bus_meeting_room
+ * @Author: jeecg-boot
+ * @Date:   2023-03-15
+ * @Version: V1.0
+ */
+@Api(tags="bus_meeting_room")
+@RestController
+@RequestMapping("/business/busMeetingRoom")
+@Slf4j
+public class BusMeetingRoomController extends JeecgController<BusMeetingRoom, IBusMeetingRoomService> {
+	@Autowired
+	private IBusMeetingRoomService busMeetingRoomService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param busMeetingRoom
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "bus_meeting_room-分页列表查询")
+	@ApiOperation(value="bus_meeting_room-分页列表查询", notes="bus_meeting_room-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<BusMeetingRoom>> queryPageList(BusMeetingRoom busMeetingRoom,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<BusMeetingRoom> queryWrapper = QueryGenerator.initQueryWrapper(busMeetingRoom, req.getParameterMap());
+		Page<BusMeetingRoom> page = new Page<BusMeetingRoom>(pageNo, pageSize);
+		IPage<BusMeetingRoom> pageList = busMeetingRoomService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param busMeetingRoom
+	 * @return
+	 */
+	@AutoLog(value = "bus_meeting_room-添加")
+	@ApiOperation(value="bus_meeting_room-添加", notes="bus_meeting_room-添加")
+	//@RequiresPermissions("business:bus_meeting_room:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody BusMeetingRoom busMeetingRoom) {
+		busMeetingRoomService.save(busMeetingRoom);
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param busMeetingRoom
+	 * @return
+	 */
+	@AutoLog(value = "bus_meeting_room-编辑")
+	@ApiOperation(value="bus_meeting_room-编辑", notes="bus_meeting_room-编辑")
+	//@RequiresPermissions("business:bus_meeting_room:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody BusMeetingRoom busMeetingRoom) {
+		busMeetingRoomService.updateById(busMeetingRoom);
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "bus_meeting_room-通过id删除")
+	@ApiOperation(value="bus_meeting_room-通过id删除", notes="bus_meeting_room-通过id删除")
+	//@RequiresPermissions("business:bus_meeting_room:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		busMeetingRoomService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "bus_meeting_room-批量删除")
+	@ApiOperation(value="bus_meeting_room-批量删除", notes="bus_meeting_room-批量删除")
+	//@RequiresPermissions("business:bus_meeting_room:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.busMeetingRoomService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "bus_meeting_room-通过id查询")
+	@ApiOperation(value="bus_meeting_room-通过id查询", notes="bus_meeting_room-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<BusMeetingRoom> queryById(@RequestParam(name="id",required=true) String id) {
+		BusMeetingRoom busMeetingRoom = busMeetingRoomService.getById(id);
+		if(busMeetingRoom==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(busMeetingRoom);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param busMeetingRoom
+    */
+    //@RequiresPermissions("business:bus_meeting_room:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, BusMeetingRoom busMeetingRoom) {
+        return super.exportXls(request, busMeetingRoom, BusMeetingRoom.class, "bus_meeting_room");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("business:bus_meeting_room:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, BusMeetingRoom.class);
+    }
+
+}

+ 82 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/BusMeetingRoomScheduleController.java

@@ -0,0 +1,82 @@
+package org.jeecg.modules.business.controller;
+
+
+import cn.hutool.core.collection.CollectionUtil;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
+import org.jeecg.common.Enum.ResultCode;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.business.dto.BusMeetingRoomScheduleDetailDto;
+import org.jeecg.modules.business.dto.BusMeetingRoomScheduleDto;
+import org.jeecg.modules.business.entity.BusMeetingRoomScheduleDetail;
+import org.jeecg.modules.business.service.impl.BusMeetingRoomScheduleServiceImpl;
+import org.jeecg.modules.business.service.impl.BusMeetingRoomServiceImpl;
+import org.springframework.web.bind.annotation.*;
+
+import org.springframework.stereotype.Controller;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 会议室预定表 前端控制器
+ * </p>
+ *
+ * @author fendo
+ * @since 2023-03-15
+ */
+@RestController
+@RequestMapping("/business/busMeetingRoomSchedule")
+public class BusMeetingRoomScheduleController {
+
+    @Resource
+    private BusMeetingRoomScheduleServiceImpl roomScheduleService;
+
+    @ApiOperation(value="创建会议预定", notes="创建会议预定")
+    @PostMapping(value = "/create")
+    public Result create(@RequestBody BusMeetingRoomScheduleDto dto){
+        if(StringUtils.isBlank(dto.getHotelId())){
+            return Result.error(ResultCode.PARAM_MISS);
+        }
+        if(StringUtils.isBlank(dto.getName())){
+            return Result.error(ResultCode.PARAM_MISS);
+        }
+        if(StringUtils.isBlank(dto.getTheme())){
+            return Result.error(ResultCode.PARAM_MISS);
+        }
+        if(StringUtils.isBlank(dto.getDestinedName())){
+            return Result.error(ResultCode.PARAM_MISS);
+        }
+        if(StringUtils.isBlank(dto.getMobile())){
+            return Result.error(ResultCode.PARAM_MISS);
+        }
+        if(StringUtils.isBlank(dto.getMobile())){
+            return Result.error(ResultCode.PARAM_MISS);
+        }
+        List<BusMeetingRoomScheduleDetailDto> detailList = dto.getDetailList();
+
+        if(CollectionUtil.isEmpty(detailList)){
+            return Result.error(ResultCode.PARAM_MISS,"档期预定不能为空,请重新填入!");
+        }
+        /**
+         * 验证参数是否正确
+         */
+        List<BusMeetingRoomScheduleDetailDto> distinctDetailList = detailList.stream().distinct().collect(Collectors.toList());
+
+        if(distinctDetailList.size() != detailList.size()) {
+            return Result.error(ResultCode.PARAM_VALID_ERROR,"数据重复!");
+        }
+        try {
+            return roomScheduleService.create(dto);
+        }catch (Exception e){
+            return Result.error(e.getMessage());
+        }
+    }
+
+
+
+}
+

+ 237 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/BusMemberBalanceLogController.java

@@ -0,0 +1,237 @@
+package org.jeecg.modules.business.controller;
+
+import java.math.BigDecimal;
+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 cn.hutool.core.date.DateUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.apache.commons.lang3.ObjectUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.exception.JeecgBootException;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.TokenUtils;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.business.entity.BusHotel;
+import org.jeecg.modules.business.entity.BusMemberBalanceLog;
+import org.jeecg.modules.business.entity.BusMemberCard;
+import org.jeecg.modules.business.entity.BusRoomPayType;
+import org.jeecg.modules.business.service.IBusHotelService;
+import org.jeecg.modules.business.service.IBusMemberBalanceLogService;
+
+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.jeecg.modules.business.service.IBusMemberCardService;
+import org.jeecg.modules.business.service.IBusRoomPayTypeService;
+import org.jeecg.modules.system.entity.SysUser;
+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: bus_member_balance_log
+ * @Author: jeecg-boot
+ * @Date:   2023-03-13
+ * @Version: V1.0
+ */
+@Api(tags="bus_member_balance_log")
+@RestController
+@RequestMapping("/business/busMemberBalanceLog")
+@Slf4j
+public class BusMemberBalanceLogController extends JeecgController<BusMemberBalanceLog, IBusMemberBalanceLogService> {
+	@Autowired
+	private IBusMemberBalanceLogService busMemberBalanceLogService;
+	 @Autowired
+	 private IBusHotelService busHotelService;
+	 @Autowired
+	 private IBusMemberCardService busMemberCardService;
+	 @Autowired
+	 private IBusRoomPayTypeService busRoomPayTypeService;
+
+	/**
+	 * 分页列表查询
+	 *
+	 * @param busMemberBalanceLog
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "bus_member_balance_log-分页列表查询")
+	@ApiOperation(value="bus_member_balance_log-分页列表查询", notes="bus_member_balance_log-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<BusMemberBalanceLog>> queryPageList(BusMemberBalanceLog busMemberBalanceLog,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+															@RequestParam(name="startTime",required = false) String startTime,
+															@RequestParam(name="endTime",required = false) String endTime,
+															@RequestParam(name="hotelIds[]",required = false) List<String> hotelIds,
+								   HttpServletRequest req) {
+		LambdaQueryWrapper<BusMemberBalanceLog> queryWrapper = QueryGenerator.initQueryWrapper(busMemberBalanceLog, req.getParameterMap()).lambda();
+		if (ObjectUtils.isNotEmpty(startTime)) {
+			queryWrapper.ge(BusMemberBalanceLog::getCreateTime, DateUtil.parseDate(startTime));
+		}
+		if (ObjectUtils.isNotEmpty(endTime)) {
+			queryWrapper.le(BusMemberBalanceLog::getCreateTime, DateUtil.parseDate(endTime));
+		}
+		if (ObjectUtils.isNotEmpty(hotelIds)) {
+			queryWrapper.and(j -> {
+				for (int k = 0; k < hotelIds.size(); k++) {
+					j = j.or().eq(BusMemberBalanceLog::getHotelId, hotelIds.get(k));
+				}
+			});
+		}
+		Page<BusMemberBalanceLog> page = new Page<BusMemberBalanceLog>(pageNo, pageSize);
+		IPage<BusMemberBalanceLog> pageList = busMemberBalanceLogService.page(page, queryWrapper);
+		pageList.getRecords().forEach(item -> {
+			BusHotel hotle = busHotelService.getById(item.getHotelId());
+			if (hotle != null) {
+				item.setHotelName(hotle.getName());
+			}
+			BusMemberCard member = busMemberCardService.getById(item.getMemberId());
+			if (member != null) {
+				item.setMemberName(member.getName());
+				item.setMobile(member.getMobile());
+				item.setCardNo(member.getCardNo());
+			}
+			BusRoomPayType busRoomPayType = busRoomPayTypeService.getById(item.getPaymentMethod());
+			if (busRoomPayType != null) {
+				item.setPaymentMethodName(busRoomPayType.getName());
+			}
+		});
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param busMemberBalanceLog
+	 * @return
+	 */
+	@AutoLog(value = "bus_member_balance_log-添加")
+	@ApiOperation(value="bus_member_balance_log-添加", notes="bus_member_balance_log-添加")
+	//@RequiresPermissions("business:bus_member_balance_log:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody BusMemberBalanceLog busMemberBalanceLog) {
+		LoginUser user = TokenUtils.getAuthUser();
+		if (user.getRelTenantIds() != null && !user.getRelTenantIds().equals("")) {
+			busMemberBalanceLog.setTenantId(user.getRelTenantIds());
+		} else {
+			throw new JeecgBootException("当前登录人租户信息错误");
+		}
+		busMemberBalanceLogService.saveBalance(busMemberBalanceLog);
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param busMemberBalanceLog
+	 * @return
+	 */
+	@AutoLog(value = "bus_member_balance_log-编辑")
+	@ApiOperation(value="bus_member_balance_log-编辑", notes="bus_member_balance_log-编辑")
+	//@RequiresPermissions("business:bus_member_balance_log:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody BusMemberBalanceLog busMemberBalanceLog) {
+		busMemberBalanceLogService.updateById(busMemberBalanceLog);
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "bus_member_balance_log-通过id删除")
+	@ApiOperation(value="bus_member_balance_log-通过id删除", notes="bus_member_balance_log-通过id删除")
+	//@RequiresPermissions("business:bus_member_balance_log:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		busMemberBalanceLogService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "bus_member_balance_log-批量删除")
+	@ApiOperation(value="bus_member_balance_log-批量删除", notes="bus_member_balance_log-批量删除")
+	//@RequiresPermissions("business:bus_member_balance_log:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.busMemberBalanceLogService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "bus_member_balance_log-通过id查询")
+	@ApiOperation(value="bus_member_balance_log-通过id查询", notes="bus_member_balance_log-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<BusMemberBalanceLog> queryById(@RequestParam(name="id",required=true) String id) {
+		BusMemberBalanceLog busMemberBalanceLog = busMemberBalanceLogService.getById(id);
+		if(busMemberBalanceLog==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(busMemberBalanceLog);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param busMemberBalanceLog
+    */
+    //@RequiresPermissions("business:bus_member_balance_log:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, BusMemberBalanceLog busMemberBalanceLog) {
+        return super.exportXls(request, busMemberBalanceLog, BusMemberBalanceLog.class, "bus_member_balance_log");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("business:bus_member_balance_log:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, BusMemberBalanceLog.class);
+    }
+
+}

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

@@ -1,6 +1,8 @@
 package org.jeecg.modules.business.controller;
 
+import java.math.BigDecimal;
 import java.util.Arrays;
+import java.util.List;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
@@ -68,6 +70,7 @@ public class BusMemberCardController extends JeecgController<BusMemberCard, IBus
 								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
 													  @RequestParam(name="startTime",required = false) String startTime,
 													  @RequestParam(name="endTime",required = false) String endTime,
+													  @RequestParam(name="hotelIds[]",required = false) List<String> hotelIds,
 								   HttpServletRequest req) {
 		LambdaQueryWrapper<BusMemberCard> queryWrapper = QueryGenerator.initQueryWrapper(busMemberCard, req.getParameterMap()).lambda();
 		if (ObjectUtils.isNotEmpty(startTime)) {
@@ -76,6 +79,13 @@ public class BusMemberCardController extends JeecgController<BusMemberCard, IBus
 		if (ObjectUtils.isNotEmpty(endTime)) {
 			queryWrapper.le(BusMemberCard::getCreateTime, DateUtil.parseDate(endTime));
 		}
+		if (ObjectUtils.isNotEmpty(hotelIds)) {
+			queryWrapper.and(j -> {
+				for (int k = 0; k < hotelIds.size(); k++) {
+					j = j.or().eq(BusMemberCard::getHotelId, hotelIds.get(k));
+				}
+			});
+		}
 		Page<BusMemberCard> page = new Page<BusMemberCard>(pageNo, pageSize);
 		IPage<BusMemberCard> pageList = busMemberCardService.page(page, queryWrapper);
 		pageList.getRecords().forEach(item -> {
@@ -103,6 +113,11 @@ public class BusMemberCardController extends JeecgController<BusMemberCard, IBus
 		return Result.OK(pageList);
 	}
 
+	/**
+	 * 会员各种统计
+	 * @param hotelId
+	 * @return
+	 */
 	 @GetMapping(value = "/stat")
 	 public Result stat(@RequestParam(name="hotelId") String hotelId) {
 		 MemberCardStatVo vo = busMemberCardService.stat(hotelId);
@@ -188,6 +203,15 @@ public class BusMemberCardController extends JeecgController<BusMemberCard, IBus
 	//@RequiresPermissions("business:bus_member_card:delete")
 	@DeleteMapping(value = "/delete")
 	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		BusMemberCard member = busMemberCardService.getById(id);
+		if (member != null) {
+			if (member.getIntegral() > 0) {
+				return Result.error("剩余可用积分不可删除!");
+			}
+			if (member.getBalance().compareTo(BigDecimal.ZERO)>0) {
+				return Result.error("剩余可用余额不可删除!");
+			}
+		}
 		busMemberCardService.removeById(id);
 		return Result.OK("删除成功!");
 	}
@@ -203,7 +227,21 @@ public class BusMemberCardController extends JeecgController<BusMemberCard, IBus
 	//@RequiresPermissions("business:bus_member_card:deleteBatch")
 	@DeleteMapping(value = "/deleteBatch")
 	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
-		this.busMemberCardService.removeByIds(Arrays.asList(ids.split(",")));
+		List<String> idList = Arrays.asList(ids.split(","));
+		if (ObjectUtils.isNotEmpty(idList)) {
+			for (int i = 0; i < idList.size(); i++) {
+				BusMemberCard member = busMemberCardService.getById(idList.get(i));
+				if (member != null) {
+					if (member.getIntegral() > 0) {
+						return Result.error("剩余可用积分不可删除!");
+					}
+					if (member.getBalance().compareTo(BigDecimal.ZERO) > 0) {
+						return Result.error("剩余可用余额不可删除!");
+					}
+				}
+			}
+		}
+		this.busMemberCardService.removeByIds(idList);
 		return Result.OK("批量删除成功!");
 	}
 	

+ 181 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/BusMemberPointLogController.java

@@ -0,0 +1,181 @@
+package org.jeecg.modules.business.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.business.entity.BusMemberPointLog;
+import org.jeecg.modules.business.service.IBusMemberCardService;
+import org.jeecg.modules.business.service.IBusMemberPointLogService;
+
+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: bus_member_point_log
+ * @Author: jeecg-boot
+ * @Date:   2023-03-13
+ * @Version: V1.0
+ */
+@Api(tags="bus_member_point_log")
+@RestController
+@RequestMapping("/business/busMemberPointLog")
+@Slf4j
+public class BusMemberPointLogController extends JeecgController<BusMemberPointLog, IBusMemberPointLogService> {
+	@Autowired
+	private IBusMemberPointLogService busMemberPointLogService;
+	@Autowired
+	private IBusMemberCardService busMemberCardService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param busMemberPointLog
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "bus_member_point_log-分页列表查询")
+	@ApiOperation(value="bus_member_point_log-分页列表查询", notes="bus_member_point_log-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<BusMemberPointLog>> queryPageList(BusMemberPointLog busMemberPointLog,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<BusMemberPointLog> queryWrapper = QueryGenerator.initQueryWrapper(busMemberPointLog, req.getParameterMap());
+		Page<BusMemberPointLog> page = new Page<BusMemberPointLog>(pageNo, pageSize);
+		IPage<BusMemberPointLog> pageList = busMemberPointLogService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param busMemberPointLog
+	 * @return
+	 */
+	@AutoLog(value = "bus_member_point_log-添加")
+	@ApiOperation(value="bus_member_point_log-添加", notes="bus_member_point_log-添加")
+	//@RequiresPermissions("business:bus_member_point_log:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody BusMemberPointLog busMemberPointLog) {
+		Result res = busMemberPointLogService.savePoint(busMemberPointLog);
+		return res;
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param busMemberPointLog
+	 * @return
+	 */
+	@AutoLog(value = "bus_member_point_log-编辑")
+	@ApiOperation(value="bus_member_point_log-编辑", notes="bus_member_point_log-编辑")
+	//@RequiresPermissions("business:bus_member_point_log:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody BusMemberPointLog busMemberPointLog) {
+		busMemberPointLogService.updateById(busMemberPointLog);
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "bus_member_point_log-通过id删除")
+	@ApiOperation(value="bus_member_point_log-通过id删除", notes="bus_member_point_log-通过id删除")
+	//@RequiresPermissions("business:bus_member_point_log:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		busMemberPointLogService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "bus_member_point_log-批量删除")
+	@ApiOperation(value="bus_member_point_log-批量删除", notes="bus_member_point_log-批量删除")
+	//@RequiresPermissions("business:bus_member_point_log:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.busMemberPointLogService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "bus_member_point_log-通过id查询")
+	@ApiOperation(value="bus_member_point_log-通过id查询", notes="bus_member_point_log-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<BusMemberPointLog> queryById(@RequestParam(name="id",required=true) String id) {
+		BusMemberPointLog busMemberPointLog = busMemberPointLogService.getById(id);
+		if(busMemberPointLog==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(busMemberPointLog);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param busMemberPointLog
+    */
+    //@RequiresPermissions("business:bus_member_point_log:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, BusMemberPointLog busMemberPointLog) {
+        return super.exportXls(request, busMemberPointLog, BusMemberPointLog.class, "bus_member_point_log");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    //@RequiresPermissions("business:bus_member_point_log:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, BusMemberPointLog.class);
+    }
+
+}

+ 17 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/dto/BusMeetingRoomScheduleDetailDto.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.business.dto;
+
+import lombok.Data;
+
+@Data
+public class BusMeetingRoomScheduleDetailDto {
+    private String meetingRoomId;
+    /**
+     * 会议日期
+     */
+    private String meetingDate;
+
+    /**
+     * 会议时段  1 上午 2 中午 3下午
+     */
+    private Integer timeSpan;
+}

+ 15 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/dto/BusMeetingRoomScheduleDto.java

@@ -0,0 +1,15 @@
+package org.jeecg.modules.business.dto;
+
+import lombok.Data;
+import org.jeecg.modules.business.entity.BusMeetingRoomSchedule;
+
+import java.util.List;
+
+/**
+ * 创建
+ */
+@Data
+public class BusMeetingRoomScheduleDto extends BusMeetingRoomSchedule {
+        private List<BusMeetingRoomScheduleDetailDto> detailList;
+
+}

+ 83 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/BusMarketMealCoupons.java

@@ -0,0 +1,83 @@
+package org.jeecg.modules.business.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.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: bus_market_meal_coupons_info
+ * @Author: jeecg-boot
+ * @Date:   2023-03-14
+ * @Version: V1.0
+ */
+@Data
+@TableName("bus_market_meal_coupons_info")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="bus_market_meal_coupons_info对象", description="bus_market_meal_coupons_info")
+public class BusMarketMealCoupons 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 name;
+	/**餐券类型*/
+	@Excel(name = "餐券类型", width = 15)
+    @ApiModelProperty(value = "餐券类型")
+    private String type;
+	/**金额*/
+	@Excel(name = "金额", width = 15)
+    @ApiModelProperty(value = "金额")
+    private BigDecimal cost;
+	/**说明*/
+	@Excel(name = "说明", width = 15)
+    @ApiModelProperty(value = "说明")
+    private String introduce;
+	/**消费项目id*/
+	@Excel(name = "消费项目id", width = 15)
+    @ApiModelProperty(value = "消费项目id")
+    private String consumeProjectId;
+
+    @TableField(exist = false)
+    private String hotelName;
+    @TableField(exist = false)
+    private String typeName;
+    @TableField(exist = false)
+    private Integer count;
+
+    @TableField(exist = false)
+    private Integer notClaimed;
+
+    @TableField(exist = false)
+    private Integer received;
+
+    @TableField(exist = false)
+    private Integer used;
+    @TableField(exist = false)
+    private Integer voided;
+}

+ 113 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/BusMarketMealCouponsUsed.java

@@ -0,0 +1,113 @@
+package org.jeecg.modules.business.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.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: bus_market_meal_coupons_used
+ * @Author: jeecg-boot
+ * @Date:   2023-03-14
+ * @Version: V1.0
+ */
+@Data
+@TableName("bus_market_meal_coupons_used")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="bus_market_meal_coupons_used对象", description="bus_market_meal_coupons_used")
+public class BusMarketMealCouponsUsed 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 couponsId;
+	/**券号*/
+	@Excel(name = "券号", width = 15)
+    @ApiModelProperty(value = "券号")
+    private String code;
+	/**状态 0未领取 1已领取 2已使用 3已作废*/
+	@Excel(name = "状态 0未领取 1已领取 2已使用 3已作废", width = 15)
+    @ApiModelProperty(value = "状态 0未领取 1已领取 2已使用 3已作废")
+    private Integer status;
+	/**会员id*/
+	@Excel(name = "会员id", width = 15)
+    @ApiModelProperty(value = "会员id")
+    private String userid;
+	/**姓名*/
+	@Excel(name = "姓名", width = 15)
+    @ApiModelProperty(value = "姓名")
+    private String userName;
+	/**房间号*/
+	@Excel(name = "房间号", width = 15)
+    @ApiModelProperty(value = "房间号")
+    private String roomNumber;
+	/**入住单号*/
+	@Excel(name = "入住单号", width = 15)
+    @ApiModelProperty(value = "入住单号")
+    private String checkedInNo;
+	/**手机号*/
+	@Excel(name = "手机号", width = 15)
+    @ApiModelProperty(value = "手机号")
+    private String mobile;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+	/**发放时间*/
+	@Excel(name = "发放时间", width = 15, format = "yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "发放时间")
+    private Date gainTime;
+	/**核销时间*/
+	@Excel(name = "核销时间", width = 15, format = "yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "核销时间")
+    private Date usedTime;
+	/**核销人*/
+	@Excel(name = "核销人", width = 15)
+    @ApiModelProperty(value = "核销人")
+    private String usedUserId;
+	/**发放人*/
+	@Excel(name = "发放人", width = 15)
+    @ApiModelProperty(value = "发放人")
+    private String gainUserId;
+
+    @TableField(exist = false)
+    private String couponsName;
+    @TableField(exist = false)
+    private BigDecimal cost;
+    @TableField(exist = false)
+    private String typeName;
+    @TableField(exist = false)
+    private String statusName;
+    @TableField(exist = false)
+    private String usedUserName;
+}

+ 92 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/BusMeetingRoom.java

@@ -0,0 +1,92 @@
+package org.jeecg.modules.business.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+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: bus_meeting_room
+ * @Author: jeecg-boot
+ * @Date:   2023-03-15
+ * @Version: V1.0
+ */
+@Data
+@TableName("bus_meeting_room")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="bus_meeting_room对象", description="bus_meeting_room")
+public class BusMeetingRoom 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 name;
+	/**规格*/
+	@Excel(name = "规格", width = 15)
+    @ApiModelProperty(value = "规格")
+    private String spec;
+	/**金额*/
+	@Excel(name = "金额", width = 15)
+    @ApiModelProperty(value = "金额")
+    private BigDecimal area;
+	/**人数*/
+	@Excel(name = "人数", width = 15)
+    @ApiModelProperty(value = "人数")
+    private Integer number;
+	/**管理员姓名*/
+	@Excel(name = "管理员姓名", width = 15)
+    @ApiModelProperty(value = "管理员姓名")
+    private String adminName;
+	/**地址*/
+	@Excel(name = "地址", width = 15)
+    @ApiModelProperty(value = "地址")
+    private String address;
+	/**设备*/
+	@Excel(name = "设备", width = 15)
+    @ApiModelProperty(value = "设备")
+    private String facility;
+	/**排序*/
+	@Excel(name = "排序", width = 15)
+    @ApiModelProperty(value = "排序")
+    private Integer sort;
+	/**描述*/
+	@Excel(name = "描述", width = 15)
+    @ApiModelProperty(value = "描述")
+    private String remark;
+	/**状态*/
+	@Excel(name = "状态", width = 15)
+    @ApiModelProperty(value = "状态")
+    private Integer status;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+}

+ 103 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/BusMeetingRoomSchedule.java

@@ -0,0 +1,103 @@
+package org.jeecg.modules.business.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 会议室预定表
+ * </p>
+ *
+ * @author fendo
+ * @since 2023-03-15
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("bus_meeting_room_schedule")
+public class BusMeetingRoomSchedule extends Model<BusMeetingRoomSchedule> {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    private String id;
+
+    /**
+     * 关联租户
+     */
+    private String tenantId;
+
+    /**
+     * 关联酒店
+     */
+    private String hotelId;
+
+    /**
+     * 公司名称
+     */
+    private String name;
+
+    /**
+     * 会议主题
+     */
+    private String theme;
+
+    /**
+     * 预定人姓名
+     */
+    private String destinedName;
+
+    /**
+     * 联系电话
+     */
+    private String mobile;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 账单状态
+     */
+    private Integer billStatus;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+
+    public static final String ID = "id";
+
+    public static final String TENANT_ID = "tenant_id";
+
+    public static final String HOTEL_ID = "hotel_id";
+
+    public static final String NAME = "name";
+
+    public static final String THEME = "theme";
+
+    public static final String DESTINED_NAME = "destined_name";
+
+    public static final String MOBILE = "mobile";
+
+    public static final String REMARK = "remark";
+
+    public static final String BILL_STATUS = "bill_status";
+
+    public static final String CREATE_TIME = "create_time";
+
+    @Override
+    public Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 85 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/BusMeetingRoomScheduleDetail.java

@@ -0,0 +1,85 @@
+package org.jeecg.modules.business.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 会议室预定档期表
+ * </p>
+ *
+ * @author fendo
+ * @since 2023-03-15
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("bus_meeting_room_schedule_detail")
+public class BusMeetingRoomScheduleDetail extends Model<BusMeetingRoomScheduleDetail> {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    private String id;
+
+    /**
+     * 关联租户
+     */
+    private String tenantId;
+
+    /**
+     * 关联酒店
+     */
+    private String hotelId;
+
+    private String meetingRoomId;
+
+    /**
+     * 预定id
+     */
+    private String meetingRoomScheduleId;
+
+    /**
+     * 会议日期
+     */
+    private LocalDateTime meetingDate;
+
+    /**
+     * 会议时段  1 上午 2 中午 3下午
+     */
+    private Integer timeSpan;
+
+    /**
+     * 状态 0未确认 1 确认
+     */
+    private Integer status;
+
+
+    public static final String ID = "id";
+
+    public static final String TENANT_ID = "tenant_id";
+
+    public static final String HOTEL_ID = "hotel_id";
+
+    public static final  String MEETING_ROOM_ID = "meeting_room_id";
+    public static final String MEETING_ROOM_SCHEDULE_ID = "meeting_room_schedule_id";
+
+    public static final String MEETING_DATE = "meeting_date";
+
+    public static final String TIME_SPAN = "time_span";
+
+    public static final String STATUS = "status";
+
+    @Override
+    public Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 109 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/BusMemberBalanceLog.java

@@ -0,0 +1,109 @@
+package org.jeecg.modules.business.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.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: bus_member_balance_log
+ * @Author: jeecg-boot
+ * @Date:   2023-03-13
+ * @Version: V1.0
+ */
+@Data
+@TableName("bus_member_balance_log")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="bus_member_balance_log对象", description="bus_member_balance_log")
+public class BusMemberBalanceLog 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 Integer type;
+    /**状态*/
+    @Excel(name = "状态", width = 15)
+    @ApiModelProperty(value = "状态")
+    private Integer status;
+	/**充值金额*/
+	@Excel(name = "充值金额", width = 15)
+    @ApiModelProperty(value = "充值金额")
+    private BigDecimal money;
+	/**金额余额*/
+	@Excel(name = "金额余额", width = 15)
+    @ApiModelProperty(value = "金额余额")
+    private BigDecimal balance;
+	/**赠送金额*/
+	@Excel(name = "赠送金额", width = 15)
+    @ApiModelProperty(value = "赠送金额")
+    private BigDecimal giveMoney;
+	/**备注*/
+	@Excel(name = "备注", width = 15)
+    @ApiModelProperty(value = "备注")
+    private String remarks;
+	/**推荐员工*/
+	@Excel(name = "推荐员工", width = 15)
+    @ApiModelProperty(value = "推荐员工")
+    private String staffId;
+	/**支付方式*/
+	@Excel(name = "支付方式", width = 15)
+    @ApiModelProperty(value = "支付方式")
+    private String paymentMethod;
+	/**支付金额*/
+	@Excel(name = "支付金额", width = 15)
+    @ApiModelProperty(value = "支付金额")
+    private BigDecimal payMoney;
+	/**流水号*/
+	@Excel(name = "流水号", width = 15)
+    @ApiModelProperty(value = "流水号")
+    private String code;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    @TableField(exist = false)
+    private String hotelName;
+
+    @TableField(exist = false)
+    private String memberName;
+
+    @TableField(exist = false)
+    private String mobile;
+
+    @TableField(exist = false)
+    private String cardNo;
+
+    @TableField(exist = false)
+    private String paymentMethodName;
+}

+ 73 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/BusMemberPointLog.java

@@ -0,0 +1,73 @@
+package org.jeecg.modules.business.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+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: bus_member_point_log
+ * @Author: jeecg-boot
+ * @Date:   2023-03-13
+ * @Version: V1.0
+ */
+@Data
+@TableName("bus_member_point_log")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="bus_member_point_log对象", description="bus_member_point_log")
+public class BusMemberPointLog 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 Integer num;
+	/**积分余额*/
+	@Excel(name = "积分余额", width = 15)
+    @ApiModelProperty(value = "积分余额")
+    private Integer balance;
+	/**备注*/
+	@Excel(name = "备注", width = 15)
+    @ApiModelProperty(value = "备注")
+    private String remarks;
+	/**创建时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    /**类型*/
+    @Excel(name = "类型", width = 15)
+    @ApiModelProperty(value = "类型")
+    private Integer type;
+}

+ 21 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/BusMarketMealCouponsMapper.java

@@ -0,0 +1,21 @@
+package org.jeecg.modules.business.mapper;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.business.entity.BusMarketCoupons;
+import org.jeecg.modules.business.entity.BusMarketCouponsCash;
+import org.jeecg.modules.business.entity.BusMarketMealCoupons;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: bus_market_meal_coupons_info
+ * @Author: jeecg-boot
+ * @Date:   2023-03-14
+ * @Version: V1.0
+ */
+public interface BusMarketMealCouponsMapper extends BaseMapper<BusMarketMealCoupons> {
+
+    public List<BusMarketMealCoupons> getMealCouponsList(Page<BusMarketMealCoupons> page, @Param("busMarketMealCoupons") BusMarketMealCoupons model);
+}

+ 53 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/BusMarketMealCouponsUsedMapper.java

@@ -0,0 +1,53 @@
+package org.jeecg.modules.business.mapper;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.jeecg.modules.business.entity.BusMarketCoupons;
+import org.jeecg.modules.business.entity.BusMarketMealCoupons;
+import org.jeecg.modules.business.entity.BusMarketMealCouponsUsed;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.business.vo.MealCouponStatVo;
+import org.jeecg.modules.business.vo.MemberCardStatVo;
+
+/**
+ * @Description: bus_market_meal_coupons_used
+ * @Author: jeecg-boot
+ * @Date:   2023-03-14
+ * @Version: V1.0
+ */
+public interface BusMarketMealCouponsUsedMapper extends BaseMapper<BusMarketMealCouponsUsed> {
+    /**
+     * 已核销餐券列表
+     * @param hotelId
+     * @param status
+     * @param type
+     * @return
+     */
+    @Select("<script>select u.*,c.name as coupons_name,cmc.name as type_name from bus_market_meal_coupons_used u\n" +
+            "left join bus_market_meal_coupons_info c on c.id=u.coupons_id\n" +
+            "left join ces_meal_coupon cmc on cmc.id=c.type where 1=1\n" +
+            "<if test='hotelId != null and hotelId !=\"\"'> and u.hotel_id = #{hotelId} </if>"+
+            "<if test='status >-1'> and u.status = #{status} </if>"+
+            "<if test='type != null and type !=\"\"'> and c.type = #{type} </if>"+
+            "</script>")
+    public List<BusMarketMealCouponsUsed> verifyList(Page<BusMarketMealCouponsUsed> page, String hotelId, Integer status, String type);
+
+    /**
+     * 统计
+     * @param hotelId
+     * @return
+     */
+    @Select("<script>select ifnull(sum(CASE WHEN DATEDIFF(enable_date,now())=0 THEN 1 ELSE 0 END),0) as day_count,\n" +
+            "ifnull(sum(CASE WHEN DATEDIFF(used_time,now())=0 THEN 1 ELSE 0 END),0) as day_used_count,\n" +
+            "ifnull(sum(CASE WHEN DATEDIFF(gain_time,now())=0 THEN 1 ELSE 0 END),0) as day_received_count,\n" +
+            "ifnull(sum(CASE WHEN DATEDIFF(voided_time,now())=0 THEN 1 ELSE 0 END),0) as day_voided_count\n" +
+            "from bus_market_meal_coupons_used u\n"+
+            "left join bus_market_meal_coupons_info c on c.id=u.coupons_id\n" +
+            "where u.hotel_id = #{hotelId}\n"+
+            "<if test='type != null and type !=\"\"'> and c.type = #{type} </if>"+
+            "</script>")
+    public MealCouponStatVo stat(String hotelId,String type);
+}

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

@@ -0,0 +1,17 @@
+package org.jeecg.modules.business.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.business.entity.BusMeetingRoom;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: bus_meeting_room
+ * @Author: jeecg-boot
+ * @Date:   2023-03-15
+ * @Version: V1.0
+ */
+public interface BusMeetingRoomMapper extends BaseMapper<BusMeetingRoom> {
+
+}

+ 16 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/BusMeetingRoomScheduleDetailMapper.java

@@ -0,0 +1,16 @@
+package org.jeecg.modules.business.mapper;
+
+import org.jeecg.modules.business.entity.BusMeetingRoomScheduleDetail;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 会议室预定档期表 Mapper 接口
+ * </p>
+ *
+ * @author fendo
+ * @since 2023-03-15
+ */
+public interface BusMeetingRoomScheduleDetailMapper extends BaseMapper<BusMeetingRoomScheduleDetail> {
+
+}

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

@@ -0,0 +1,17 @@
+package org.jeecg.modules.business.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.business.entity.BusMeetingRoomSchedule;
+
+/**
+ * <p>
+ * 会议室预定表 Mapper 接口
+ * </p>
+ *
+ * @author fendo
+ * @since 2023-03-15
+ */
+public interface BusMeetingRoomScheduleMapper extends BaseMapper<BusMeetingRoomSchedule> {
+
+}

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

@@ -0,0 +1,17 @@
+package org.jeecg.modules.business.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.business.entity.BusMemberBalanceLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: bus_member_balance_log
+ * @Author: jeecg-boot
+ * @Date:   2023-03-13
+ * @Version: V1.0
+ */
+public interface BusMemberBalanceLogMapper extends BaseMapper<BusMemberBalanceLog> {
+
+}

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

@@ -0,0 +1,17 @@
+package org.jeecg.modules.business.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.business.entity.BusMemberPointLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: bus_member_point_log
+ * @Author: jeecg-boot
+ * @Date:   2023-03-13
+ * @Version: V1.0
+ */
+public interface BusMemberPointLogMapper extends BaseMapper<BusMemberPointLog> {
+
+}

+ 22 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/BusMarketMealCouponsMapper.xml

@@ -0,0 +1,22 @@
+<?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.business.mapper.BusMarketMealCouponsMapper">
+    <select id="getMealCouponsList" parameterType="Object" resultType="org.jeecg.modules.business.entity.BusMarketMealCoupons">
+        select c.*,ifnull(u.count,0) as count,ifnull(u.not_claimed,0) as not_claimed,ifnull(u.received,0) as received,ifnull(u.used,0) as used,ifnull(u.voided,0) as voided,cmc.name as type_name from bus_market_meal_coupons_info c
+        left join (select coupons_id,count(0) as count
+        ,SUM(CASE WHEN `status`  = 0 then 1 else 0 end) as not_claimed
+        ,SUM(CASE WHEN `status`  = 1 then 1 else 0 end) as received
+        ,SUM(CASE WHEN `status`  = 2 then 1 else 0 end) as used
+        ,SUM(CASE WHEN `status`  = 3 then 1 else 0 end) as voided
+        from bus_market_meal_coupons_used  group by coupons_id) u
+        on u.coupons_id=c.id
+        left join ces_meal_coupon cmc on cmc.id=c.type
+        where c.hotel_id = #{busMarketMealCoupons.hotelId}
+        <if test="busMarketMealCoupons.hotelId!= null">
+            <if test="busMarketMealCoupons.name !=null and busMarketMealCoupons.name != ''">
+                and c.name like CONCAT(CONCAT('%', #{busMarketMealCoupons.name}), '%')
+            </if>
+        </if>
+        ORDER BY c.id desc
+    </select>
+</mapper>

+ 5 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/BusMarketMealCouponsUsedMapper.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.demo.business.mapper.BusMarketMealCouponsUsedMapper">
+
+</mapper>

+ 5 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/BusMeetingRoomMapper.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.demo.business.mapper.BusMeetingRoomMapper">
+
+</mapper>

+ 5 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/BusMemberBalanceLogMapper.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.demo.business.mapper.BusMemberBalanceLogMapper">
+
+</mapper>

+ 5 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/BusMemberPointLogMapper.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.demo.business.mapper.BusMemberPointLogMapper">
+
+</mapper>

+ 9 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IBusMarketCouponsCashService.java

@@ -2,6 +2,7 @@ package org.jeecg.modules.business.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.ibatis.annotations.Param;
+import org.jeecg.common.api.vo.Result;
 import org.jeecg.modules.business.entity.BusMarketCoupons;
 import org.jeecg.modules.business.entity.BusMarketCouponsCash;
 import com.baomidou.mybatisplus.extension.service.IService;
@@ -14,4 +15,12 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IBusMarketCouponsCashService extends IService<BusMarketCouponsCash> {
     public Page<BusMarketCouponsCash> pageList(Page<BusMarketCouponsCash> page, @Param("busMarketCouponsCash") BusMarketCouponsCash model);
+
+
+    /**
+     * 删除活动及其券记录
+     * @param id
+     * @return
+     */
+    public Result removeCouponsAndCouponsUsedById(String id);
 }

+ 24 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IBusMarketMealCouponsService.java

@@ -0,0 +1,24 @@
+package org.jeecg.modules.business.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.business.entity.BusMarketMealCoupons;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: bus_market_meal_coupons_info
+ * @Author: jeecg-boot
+ * @Date:   2023-03-14
+ * @Version: V1.0
+ */
+public interface IBusMarketMealCouponsService extends IService<BusMarketMealCoupons> {
+    public Page<BusMarketMealCoupons> pageList(Page<BusMarketMealCoupons> page, BusMarketMealCoupons model);
+
+
+    /**
+     * 删除活动及其券记录
+     * @param id
+     * @return
+     */
+    public Result removeCouponsAndCouponsUsedById(String id);
+}

+ 38 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IBusMarketMealCouponsUsedService.java

@@ -0,0 +1,38 @@
+package org.jeecg.modules.business.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.business.dto.CouponsGenerateDto;
+import org.jeecg.modules.business.entity.BusMarketMealCouponsUsed;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.business.vo.MealCouponStatVo;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * @Description: bus_market_meal_coupons_used
+ * @Author: jeecg-boot
+ * @Date:   2023-03-14
+ * @Version: V1.0
+ */
+public interface IBusMarketMealCouponsUsedService extends IService<BusMarketMealCouponsUsed> {
+    /**
+     * 生成餐券领取使用
+     * @param dto
+     * @return
+     */
+    public Result generate(CouponsGenerateDto dto) ;
+    /**
+     * 已核销餐券列表
+     * @param hotelId
+     * @param type
+     * @return
+     */
+    public Page<BusMarketMealCouponsUsed> verifyList(Page<BusMarketMealCouponsUsed> page, String hotelId, String type);
+
+    /**
+     * 统计
+     * @param hotelId
+     * @return
+     */
+    public MealCouponStatVo stat(String hotelId,String type);
+}

+ 16 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IBusMeetingRoomScheduleDetailService.java

@@ -0,0 +1,16 @@
+package org.jeecg.modules.business.service;
+
+import org.jeecg.modules.business.entity.BusMeetingRoomScheduleDetail;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 会议室预定档期表 服务类
+ * </p>
+ *
+ * @author fendo
+ * @since 2023-03-15
+ */
+public interface IBusMeetingRoomScheduleDetailService extends IService<BusMeetingRoomScheduleDetail> {
+
+}

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

@@ -0,0 +1,14 @@
+package org.jeecg.modules.business.service;
+
+import org.jeecg.modules.business.entity.BusMeetingRoom;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: bus_meeting_room
+ * @Author: jeecg-boot
+ * @Date:   2023-03-15
+ * @Version: V1.0
+ */
+public interface IBusMeetingRoomService extends IService<BusMeetingRoom> {
+
+}

+ 22 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IBusMemberBalanceLogService.java

@@ -0,0 +1,22 @@
+package org.jeecg.modules.business.service;
+
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.business.entity.BusMemberBalanceLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * @Description: bus_member_balance_log
+ * @Author: jeecg-boot
+ * @Date:   2023-03-13
+ * @Version: V1.0
+ */
+public interface IBusMemberBalanceLogService extends IService<BusMemberBalanceLog> {
+    /**
+     * 充值/扣费余额
+     *
+     * @param dto
+     * @return
+     */
+    public Result saveBalance(BusMemberBalanceLog dto);
+}

+ 22 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IBusMemberPointLogService.java

@@ -0,0 +1,22 @@
+package org.jeecg.modules.business.service;
+
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.business.entity.BusMemberPointLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * @Description: bus_member_point_log
+ * @Author: jeecg-boot
+ * @Date:   2023-03-13
+ * @Version: V1.0
+ */
+public interface IBusMemberPointLogService extends IService<BusMemberPointLog> {
+    /**
+     * 调整积分
+     *
+     * @param dto
+     * @return
+     */
+    public Result savePoint(BusMemberPointLog dto);
+}

+ 20 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/BusMarketCouponsCashServiceImpl.java

@@ -1,14 +1,19 @@
 package org.jeecg.modules.business.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.jeecg.common.api.vo.Result;
 import org.jeecg.modules.business.entity.BusMarketCoupons;
 import org.jeecg.modules.business.entity.BusMarketCouponsCash;
+import org.jeecg.modules.business.entity.BusMarketCouponsCashUsed;
+import org.jeecg.modules.business.entity.BusMarketCouponsUsed;
 import org.jeecg.modules.business.mapper.BusMarketCouponsCashMapper;
 import org.jeecg.modules.business.mapper.BusMarketCouponsMapper;
 import org.jeecg.modules.business.service.IBusMarketCouponsCashService;
 import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 
@@ -22,8 +27,23 @@ import javax.annotation.Resource;
 public class BusMarketCouponsCashServiceImpl extends ServiceImpl<BusMarketCouponsCashMapper, BusMarketCouponsCash> implements IBusMarketCouponsCashService {
     @Resource
     private BusMarketCouponsCashMapper busMarketCouponsCashMapper;
+    @Resource
+    private BusMarketCouponsCashUsedServiceImpl busMarketCouponsCashUsedService;
 
     public Page<BusMarketCouponsCash> pageList(Page<BusMarketCouponsCash> page, BusMarketCouponsCash model) {
         return page.setRecords(busMarketCouponsCashMapper.getCouponsCashList(page, model));
     }
+
+    /**
+     * 删除活动及其券记录
+     * @param id
+     * @return
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public Result removeCouponsAndCouponsUsedById(String id) {
+        this.removeById(id);
+        LambdaQueryWrapper<BusMarketCouponsCashUsed> queryWrapper = new LambdaQueryWrapper<BusMarketCouponsCashUsed>().eq(BusMarketCouponsCashUsed::getCouponsId, id);
+        busMarketCouponsCashUsedService.remove(queryWrapper);
+        return Result.ok("删除成功!");
+    }
 }

+ 49 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/BusMarketMealCouponsServiceImpl.java

@@ -0,0 +1,49 @@
+package org.jeecg.modules.business.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.business.entity.BusMarketCoupons;
+import org.jeecg.modules.business.entity.BusMarketCouponsUsed;
+import org.jeecg.modules.business.entity.BusMarketMealCoupons;
+import org.jeecg.modules.business.entity.BusMarketMealCouponsUsed;
+import org.jeecg.modules.business.mapper.BusMarketCouponsMapper;
+import org.jeecg.modules.business.mapper.BusMarketMealCouponsMapper;
+import org.jeecg.modules.business.service.IBusMarketMealCouponsService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+
+/**
+ * @Description: bus_market_meal_coupons_info
+ * @Author: jeecg-boot
+ * @Date:   2023-03-14
+ * @Version: V1.0
+ */
+@Service
+public class BusMarketMealCouponsServiceImpl extends ServiceImpl<BusMarketMealCouponsMapper, BusMarketMealCoupons> implements IBusMarketMealCouponsService {
+    @Resource
+    private BusMarketMealCouponsMapper busMarketMealCouponsMapper;
+    @Resource
+    private BusMarketMealCouponsUsedServiceImpl busMarketMealCouponsUsedService;
+
+    public Page<BusMarketMealCoupons> pageList(Page<BusMarketMealCoupons> page, BusMarketMealCoupons model) {
+        return page.setRecords(busMarketMealCouponsMapper.getMealCouponsList(page, model));
+    }
+
+    /**
+     * 删除活动及其券记录
+     * @param id
+     * @return
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public Result removeCouponsAndCouponsUsedById(String id) {
+        this.removeById(id);
+        LambdaQueryWrapper<BusMarketMealCouponsUsed> queryWrapper = new LambdaQueryWrapper<BusMarketMealCouponsUsed>().eq(BusMarketMealCouponsUsed::getCouponsId, id);
+        busMarketMealCouponsUsedService.remove(queryWrapper);
+        return Result.ok("删除成功!");
+    }
+}

+ 106 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/BusMarketMealCouponsUsedServiceImpl.java

@@ -0,0 +1,106 @@
+package org.jeecg.modules.business.service.impl;
+
+import cn.hutool.core.date.DateTime;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.ibatis.annotations.Select;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.util.TokenUtils;
+import org.jeecg.modules.business.dto.CouponsGenerateDto;
+import org.jeecg.modules.business.entity.BusMarketCouponsCash;
+import org.jeecg.modules.business.entity.BusMarketCouponsCashUsed;
+import org.jeecg.modules.business.entity.BusMarketMealCoupons;
+import org.jeecg.modules.business.entity.BusMarketMealCouponsUsed;
+import org.jeecg.modules.business.enums.CouponsStatusEnum;
+import org.jeecg.modules.business.mapper.BusMarketCouponsCashMapper;
+import org.jeecg.modules.business.mapper.BusMarketMealCouponsMapper;
+import org.jeecg.modules.business.mapper.BusMarketMealCouponsUsedMapper;
+import org.jeecg.modules.business.service.IBusMarketMealCouponsUsedService;
+import org.jeecg.modules.business.vo.MealCouponStatVo;
+import org.jeecg.modules.business.vo.MemberCardStatVo;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+import java.util.UUID;
+
+/**
+ * @Description: bus_market_meal_coupons_used
+ * @Author: jeecg-boot
+ * @Date:   2023-03-14
+ * @Version: V1.0
+ */
+@Service
+public class BusMarketMealCouponsUsedServiceImpl extends ServiceImpl<BusMarketMealCouponsUsedMapper, BusMarketMealCouponsUsed> implements IBusMarketMealCouponsUsedService {
+    @Resource
+    private BusMarketMealCouponsMapper busMarketMealCouponsMapper;
+    @Resource
+    private BusMarketMealCouponsUsedMapper busMarketMealCouponsUsedMapper;
+    /**
+     * 生成16位数字+prefix
+     * @param prefix
+     * @return
+     */
+    private String randomNumber(String prefix) {
+        int first = new Random(10).nextInt(8) + 1;
+        int hashCode = UUID.randomUUID().toString().hashCode();
+        if (hashCode < 0) {
+            hashCode = -hashCode;
+        }
+        return prefix + first + String.format("%015d", hashCode);
+    }
+    /**
+     * 生成餐券领取使用
+     * @param dto
+     * @return
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public Result generate(CouponsGenerateDto dto) {
+        if (ObjectUtils.isEmpty(dto.getCouponsId())) return Result.error("餐券id不能为空");
+        if (dto.getNum() <= 0) return Result.error("生成数量不能小于1!");
+        BusMarketMealCoupons coupons = busMarketMealCouponsMapper.selectById(dto.getCouponsId());
+        if (ObjectUtils.isEmpty(coupons)) {
+            return Result.error("餐券活动不存在");
+        }
+        List<BusMarketMealCouponsUsed> busMarketMealCouponsUsedList = new ArrayList<>();
+        while (dto.getNum() > 0) {
+            BusMarketMealCouponsUsed busMarketMealCouponsUsed = new BusMarketMealCouponsUsed();
+            busMarketMealCouponsUsed.setTenantId(TokenUtils.currentTenantId());
+            busMarketMealCouponsUsed.setHotelId(coupons.getHotelId());
+            busMarketMealCouponsUsed.setCouponsId(dto.getCouponsId());
+            busMarketMealCouponsUsed.setCode(randomNumber("CJ"));
+            busMarketMealCouponsUsed.setStatus(0);
+            busMarketMealCouponsUsed.setCreateTime(DateTime.now());
+            busMarketMealCouponsUsedList.add(busMarketMealCouponsUsed);
+            dto.setNum(dto.getNum() - 1);
+        }
+        this.saveBatch(busMarketMealCouponsUsedList);
+        return Result.ok("创建成功");
+    }
+
+
+
+    /**
+     * 已核销餐券列表
+     * @param hotelId
+     * @param type
+     * @return
+     */
+    public Page<BusMarketMealCouponsUsed> verifyList(Page<BusMarketMealCouponsUsed> page, String hotelId,String type) {
+        return page.setRecords(busMarketMealCouponsUsedMapper.verifyList(page, hotelId, CouponsStatusEnum.used.getKey(),type));
+    }
+
+    /**
+     * 统计
+     * @param hotelId
+     * @return
+     */
+    public MealCouponStatVo stat(String hotelId,String type) {
+        return busMarketMealCouponsUsedMapper.stat(hotelId, type);
+    }
+}

+ 37 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/BusMeetingRoomScheduleDetailServiceImpl.java

@@ -0,0 +1,37 @@
+package org.jeecg.modules.business.service.impl;
+
+import cn.hutool.core.collection.CollectionUtil;
+import org.jeecg.modules.business.entity.BusMeetingRoomScheduleDetail;
+import org.jeecg.modules.business.mapper.BusMeetingRoomScheduleDetailMapper;
+import org.jeecg.modules.business.service.IBusMeetingRoomScheduleDetailService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * <p>
+ * 会议室预定档期表 服务实现类
+ * </p>
+ *
+ * @author fendo
+ * @since 2023-03-15
+ */
+@Service
+public class BusMeetingRoomScheduleDetailServiceImpl extends ServiceImpl<BusMeetingRoomScheduleDetailMapper, BusMeetingRoomScheduleDetail> implements IBusMeetingRoomScheduleDetailService {
+
+    @Resource
+    private BusMeetingRoomScheduleDetailMapper scheduleDetailMapper;
+
+
+    /**
+     * 批量保存 复用接口
+     * @param detailList
+     * @return
+     */
+    public boolean saveBatchDetail(List<BusMeetingRoomScheduleDetail> detailList){
+        if(CollectionUtil.isEmpty(detailList)) return false;
+        return saveBatch(detailList);
+    }
+}

+ 83 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/BusMeetingRoomScheduleServiceImpl.java

@@ -0,0 +1,83 @@
+package org.jeecg.modules.business.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.util.TokenUtils;
+import org.jeecg.modules.business.dto.BusMeetingRoomScheduleDetailDto;
+import org.jeecg.modules.business.dto.BusMeetingRoomScheduleDto;
+import org.jeecg.modules.business.entity.BusMeetingRoomSchedule;
+import org.jeecg.modules.business.entity.BusMeetingRoomScheduleDetail;
+import org.jeecg.modules.business.mapper.BusMeetingRoomScheduleDetailMapper;
+import org.jeecg.modules.business.mapper.BusMeetingRoomScheduleMapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import javax.transaction.Transactional;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>
+ * 会议室预定表 服务实现类
+ * </p>
+ *
+ * @author fendo
+ * @since 2023-03-15
+ */
+@Service
+public class BusMeetingRoomScheduleServiceImpl extends ServiceImpl<BusMeetingRoomScheduleMapper, BusMeetingRoomSchedule> implements IService<BusMeetingRoomSchedule> {
+       @Resource
+       private BusMeetingRoomScheduleMapper meetingRoomScheduleMapper;
+
+        @Resource
+        private BusMeetingRoomScheduleDetailServiceImpl meetingRoomScheduleDetailService;
+
+    /**
+     *
+     * @return
+     */
+    @Transactional(rollbackOn = Exception.class)
+    public Result create(BusMeetingRoomScheduleDto dto){
+        String tenantId = TokenUtils.currentTenantId();
+        String hotelId = dto.getHotelId();
+        /**
+         * 创建主表
+         */
+        BusMeetingRoomSchedule roomSchedule = new BusMeetingRoomSchedule();
+
+        BeanUtil.copyProperties(dto,roomSchedule);
+        roomSchedule.setTenantId(tenantId);
+        roomSchedule.setCreateTime(LocalDateTime.now());
+        meetingRoomScheduleMapper.insert(roomSchedule);
+
+        List<BusMeetingRoomScheduleDetailDto> detailList = dto.getDetailList();
+        List<BusMeetingRoomScheduleDetail> details = new ArrayList<>();
+        DateTimeFormatter struct = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        detailList.forEach(v -> {
+            BusMeetingRoomScheduleDetail detail= new BusMeetingRoomScheduleDetail();
+            LocalDateTime meetingDate = LocalDate.parse(v.getMeetingDate(),struct).atStartOfDay();
+            detail.setMeetingRoomId(v.getMeetingRoomId());
+            detail.setMeetingDate(meetingDate);
+            detail.setTimeSpan(v.getTimeSpan().intValue());
+            detail.setTenantId(tenantId);
+            detail.setMeetingRoomScheduleId(roomSchedule.getId());
+            detail.setHotelId(hotelId);
+            details.add(detail);
+        });
+        meetingRoomScheduleDetailService.saveBatch(details);
+
+        return Result.ok("创建成功!");
+    }
+
+
+
+    public  Result fetch(){
+
+        return Result.ok("");
+    }
+}

+ 19 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/BusMeetingRoomServiceImpl.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.business.service.impl;
+
+import org.jeecg.modules.business.entity.BusMeetingRoom;
+import org.jeecg.modules.business.mapper.BusMeetingRoomMapper;
+import org.jeecg.modules.business.service.IBusMeetingRoomService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: bus_meeting_room
+ * @Author: jeecg-boot
+ * @Date:   2023-03-15
+ * @Version: V1.0
+ */
+@Service
+public class BusMeetingRoomServiceImpl extends ServiceImpl<BusMeetingRoomMapper, BusMeetingRoom> implements IBusMeetingRoomService {
+
+}

+ 83 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/BusMemberBalanceLogServiceImpl.java

@@ -0,0 +1,83 @@
+package org.jeecg.modules.business.service.impl;
+
+import cn.hutool.core.date.DateTime;
+import org.apache.commons.lang3.ObjectUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.business.entity.BusMemberBalanceLog;
+import org.jeecg.modules.business.entity.BusMemberCard;
+import org.jeecg.modules.business.entity.BusMemberPointLog;
+import org.jeecg.modules.business.mapper.BusMemberBalanceLogMapper;
+import org.jeecg.modules.business.mapper.BusMemberCardMapper;
+import org.jeecg.modules.business.service.IBusMemberBalanceLogService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.Random;
+import java.util.UUID;
+
+/**
+ * @Description: bus_member_balance_log
+ * @Author: jeecg-boot
+ * @Date:   2023-03-13
+ * @Version: V1.0
+ */
+@Service
+public class BusMemberBalanceLogServiceImpl extends ServiceImpl<BusMemberBalanceLogMapper, BusMemberBalanceLog> implements IBusMemberBalanceLogService {
+    @Resource
+    private BusMemberCardMapper busMemberCardMapper;
+    /**
+     * 生成16位数字+prefix
+     * @param prefix
+     * @return
+     */
+    private String randomNumber(String prefix) {
+        int first = new Random(10).nextInt(8) + 1;
+        int hashCode = UUID.randomUUID().toString().hashCode();
+        if (hashCode < 0) {
+            hashCode = -hashCode;
+        }
+        return prefix + first + String.format("%015d", hashCode);
+    }
+    /**
+     * 充值/扣费余额
+     *
+     * @param dto
+     * @return
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public Result saveBalance(BusMemberBalanceLog dto) {
+        if (ObjectUtils.isEmpty(dto.getMemberId())) return Result.error("会员id不能为空");
+        if (dto.getMoney().compareTo(BigDecimal.ZERO) <= 0) return Result.error("金额不能小于1!");
+        BusMemberCard member = busMemberCardMapper.selectById(dto.getMemberId());
+        if (ObjectUtils.isEmpty(member)) {
+            return Result.error("会员不存在");
+        }
+        String prefix="";
+        BigDecimal balance = new BigDecimal(0);
+        switch (dto.getType()) {
+            case 1:
+                balance = member.getBalance().add(dto.getMoney()).add(dto.getGiveMoney());
+                prefix="CZ";
+                break;
+            case 2:
+                balance = member.getBalance().subtract(dto.getMoney());
+                prefix="KF";
+                break;
+        }
+        if (balance.compareTo(BigDecimal.ZERO) < 0) balance = new BigDecimal(0);
+        member.setBalance(balance);
+        Integer res = busMemberCardMapper.updateById(member);
+        if (res > 0) {
+            dto.setBalance(balance);
+            dto.setCode(randomNumber(prefix));
+            dto.setStatus(1);
+            dto.setCreateTime(DateTime.now());
+            this.save(dto);
+        }
+        return Result.ok("创建成功");
+    }
+}

+ 69 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/BusMemberPointLogServiceImpl.java

@@ -0,0 +1,69 @@
+package org.jeecg.modules.business.service.impl;
+
+import cn.hutool.core.date.DateTime;
+import org.apache.commons.lang3.ObjectUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.util.TokenUtils;
+import org.jeecg.modules.business.dto.CouponsGenerateDto;
+import org.jeecg.modules.business.entity.*;
+import org.jeecg.modules.business.mapper.BusMarketCouponsMapper;
+import org.jeecg.modules.business.mapper.BusMarketMemberMapper;
+import org.jeecg.modules.business.mapper.BusMemberCardMapper;
+import org.jeecg.modules.business.mapper.BusMemberPointLogMapper;
+import org.jeecg.modules.business.service.IBusMemberPointLogService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Description: bus_member_point_log
+ * @Author: jeecg-boot
+ * @Date:   2023-03-13
+ * @Version: V1.0
+ */
+@Service
+public class BusMemberPointLogServiceImpl extends ServiceImpl<BusMemberPointLogMapper, BusMemberPointLog> implements IBusMemberPointLogService {
+    @Resource
+    private BusMemberCardMapper busMemberCardMapper;
+
+    /**
+     * 调整积分
+     *
+     * @param dto
+     * @return
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public  Result savePoint(BusMemberPointLog dto) {
+        if (ObjectUtils.isEmpty(dto.getMemberId())) return Result.error("会员id不能为空");
+        if (dto.getNum() <= 0) return Result.error("积分数量不能小于1!");
+        BusMemberCard member = busMemberCardMapper.selectById(dto.getMemberId());
+        if (ObjectUtils.isEmpty(member)) {
+            return Result.error("会员不存在");
+        }
+        Integer balance = 0;
+        switch (dto.getType()) {
+            case 1:
+                balance = member.getIntegral() + dto.getNum();
+                break;
+            case 2:
+                balance = member.getIntegral() - dto.getNum();
+                break;
+            case 3:
+                balance = 0;
+                break;
+        }
+        if (balance < 0) balance = 0;
+        dto.setBalance(balance);
+        Boolean res = this.save(dto);
+        if (res) {
+            member.setIntegral(balance);
+            busMemberCardMapper.updateById(member);
+        }
+        return Result.ok("创建成功");
+    }
+}

+ 24 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/vo/MealCouponStatVo.java

@@ -0,0 +1,24 @@
+package org.jeecg.modules.business.vo;
+
+import lombok.Data;
+
+
+@Data
+public class MealCouponStatVo {
+    /**
+     * 餐券当天总数
+     */
+    private Integer dayCount;
+    /**
+     * 餐券当天已核销总数
+     */
+    private Integer dayUsedCount;
+    /**
+     * 餐券当天待核销总数
+     */
+    private Integer dayReceivedCount;
+    /**
+     * 餐券当天作废总数
+     */
+    private Integer dayVoidedCount;
+}

+ 1 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/controller/CesGoodsController.java

@@ -67,7 +67,7 @@ public class CesGoodsController extends JeecgController<CesGoods,CesGoodsService
 
     @ApiOperation(value="创建", notes="创建")
     @PostMapping(value = "/create")
-    public Result create(CesGoodsDto dto){
+    public Result create(@RequestBody  CesGoodsDto dto){
         if(StringUtils.isBlank(dto.getHotelId())){
             return Result.error(ResultCode.PARAM_MISS);
         }

+ 0 - 3
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/controller/CesGoodsUnitController.java

@@ -1,7 +1,6 @@
 package org.jeecg.modules.rooms.controller;
 
 
-import cn.hutool.core.collection.CollectionUtil;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
 import org.jeecg.common.Enum.ResultCode;
@@ -10,12 +9,10 @@ import org.jeecg.common.aspect.annotation.AutoLog;
 import org.jeecg.modules.rooms.DTO.CesGoodsUnitDeleteBatchDTO;
 import org.jeecg.modules.rooms.DTO.CesGoodsUnitDto;
 import org.jeecg.modules.rooms.DTO.CesGoodsUnitSearchDto;
-import org.jeecg.modules.rooms.DTO.CesRoomLayoutRemoveDto;
 import org.jeecg.modules.rooms.service.CesGoodsUnitServiceImpl;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;

+ 2 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/service/CesGoodStockRecordsServiceImpl.java

@@ -54,10 +54,11 @@ public class CesGoodStockRecordsServiceImpl extends ServiceImpl<CesGoodStockReco
             //开启锁
             lock.lock();
             logger.info("开启 redis 资源锁");
-            
+
             //查询商品是否存在
             CesGoods goods = goodsService.fetchByIdAndHotelId(dto.getGoodId(),dto.getHotelId());
             if(ObjectUtils.isEmpty(goods)) return Result.error("商品数据未找到!");
+
             //业务逻辑处理 减库存 加库存 这样写更清晰
             int num = dto.getGoodNum().intValue();
             int count = goods.getInventory().intValue();

+ 1 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/rooms/service/CesGoodsServiceImpl.java

@@ -139,6 +139,7 @@ public class CesGoodsServiceImpl extends ServiceImpl<CesGoodsMapper, CesGoods> i
      * 修改
      * @param dto
      * @return
+     *
      */
     public Result modify(CesGoodsDto dto){
         CesGoods goods = goodsMapper.selectOne(Wrappers.<CesGoods>lambdaQuery().eq(CesGoods::getId,dto.getId()).eq(CesGoods::getInvalid,false));