Sfoglia il codice sorgente

会员各种统计

gqx 2 anni fa
parent
commit
764e78c4fc

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

@@ -1,52 +1,36 @@
 package org.jeecg.modules.business.controller;
 package org.jeecg.modules.business.controller;
 
 
 import java.util.Arrays;
 import java.util.Arrays;
-import java.util.Date;
-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.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponse;
 
 
-import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.ObjectUtils;
-import org.apache.tomcat.util.modeler.Util;
 import org.jeecg.common.api.vo.Result;
 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.query.QueryGenerator;
-import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.TokenUtils;
 import org.jeecg.modules.business.dto.UserGroupDto;
 import org.jeecg.modules.business.dto.UserGroupDto;
 import org.jeecg.modules.business.dto.UserLabelDto;
 import org.jeecg.modules.business.dto.UserLabelDto;
 import org.jeecg.modules.business.entity.*;
 import org.jeecg.modules.business.entity.*;
 import org.jeecg.modules.business.service.*;
 import org.jeecg.modules.business.service.*;
 
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.extern.slf4j.Slf4j;
 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.modules.business.vo.MemberCardStatVo;
 import org.jeecg.common.system.base.controller.JeecgController;
 import org.jeecg.common.system.base.controller.JeecgController;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 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 org.springframework.web.servlet.ModelAndView;
-import com.alibaba.fastjson.JSON;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiOperation;
 import org.jeecg.common.aspect.annotation.AutoLog;
 import org.jeecg.common.aspect.annotation.AutoLog;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
 
 
- /**
+/**
  * @Description: bus_member_card
  * @Description: bus_member_card
  * @Author: jeecg-boot
  * @Author: jeecg-boot
  * @Date:   2023-03-10
  * @Date:   2023-03-10
@@ -118,6 +102,12 @@ public class BusMemberCardController extends JeecgController<BusMemberCard, IBus
 		});
 		});
 		return Result.OK(pageList);
 		return Result.OK(pageList);
 	}
 	}
+
+	 @GetMapping(value = "/stat")
+	 public Result stat(@RequestParam(name="hotelId") String hotelId) {
+		 MemberCardStatVo vo = busMemberCardService.stat(hotelId);
+		 return Result.OK(vo);
+	 }
 	
 	
 	/**
 	/**
 	 *   添加
 	 *   添加
@@ -130,6 +120,20 @@ public class BusMemberCardController extends JeecgController<BusMemberCard, IBus
 	//@RequiresPermissions("business:bus_member_card:add")
 	//@RequiresPermissions("business:bus_member_card:add")
 	@PostMapping(value = "/add")
 	@PostMapping(value = "/add")
 	public Result<String> add(@RequestBody BusMemberCard busMemberCard) {
 	public Result<String> add(@RequestBody BusMemberCard busMemberCard) {
+		LoginUser user = TokenUtils.getAuthUser();
+		if (user.getRelTenantIds() != null && !user.getRelTenantIds().equals("")) {
+			busMemberCard.setTenantId(user.getRelTenantIds());
+		} else {
+			throw new JeecgBootException("当前登录人租户信息错误");
+		}
+		LambdaQueryWrapper<BusMemberCard> queryWrapper = new LambdaQueryWrapper<>();
+		queryWrapper.eq(BusMemberCard::getMobile, busMemberCard.getMobile());
+		queryWrapper.eq(BusMemberCard::getHotelId,busMemberCard.getHotelId()).last("limit 1");
+		BusMemberCard memeber = busMemberCardService.getOne(queryWrapper);
+		if (memeber != null) {
+			return Result.error("该手机号已存在!");
+		}
+		busMemberCardService.getOne(queryWrapper);
 		busMemberCardService.save(busMemberCard);
 		busMemberCardService.save(busMemberCard);
 		return Result.OK("添加成功!");
 		return Result.OK("添加成功!");
 	}
 	}
@@ -145,6 +149,14 @@ public class BusMemberCardController extends JeecgController<BusMemberCard, IBus
 	//@RequiresPermissions("business:bus_member_card:edit")
 	//@RequiresPermissions("business:bus_member_card:edit")
 	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
 	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
 	public Result<String> edit(@RequestBody BusMemberCard busMemberCard) {
 	public Result<String> edit(@RequestBody BusMemberCard busMemberCard) {
+		LambdaQueryWrapper<BusMemberCard> queryWrapper = new LambdaQueryWrapper<>();
+		queryWrapper.eq(BusMemberCard::getMobile, busMemberCard.getMobile());
+		queryWrapper.eq(BusMemberCard::getHotelId,busMemberCard.getHotelId());
+		queryWrapper.ne(BusMemberCard::getId,busMemberCard.getId()).last("limit 1");
+		BusMemberCard memeber = busMemberCardService.getOne(queryWrapper);
+		if (memeber != null) {
+			return Result.error("该手机号已存在!");
+		}
 		busMemberCardService.updateById(busMemberCard);
 		busMemberCardService.updateById(busMemberCard);
 		return Result.OK("编辑成功!");
 		return Result.OK("编辑成功!");
 	}
 	}

+ 1 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/entity/BusMemberCard.java

@@ -69,7 +69,7 @@ public class BusMemberCard implements Serializable {
 	/**付款方式*/
 	/**付款方式*/
 	@Excel(name = "付款方式", width = 15)
 	@Excel(name = "付款方式", width = 15)
     @ApiModelProperty(value = "付款方式")
     @ApiModelProperty(value = "付款方式")
-    private Integer paymentMethod;
+    private String paymentMethod;
 	/**会员姓名*/
 	/**会员姓名*/
 	@Excel(name = "会员姓名", width = 15)
 	@Excel(name = "会员姓名", width = 15)
     @ApiModelProperty(value = "会员姓名")
     @ApiModelProperty(value = "会员姓名")

+ 12 - 3
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/BusMemberCardMapper.java

@@ -1,10 +1,9 @@
 package org.jeecg.modules.business.mapper;
 package org.jeecg.modules.business.mapper;
 
 
-import java.util.List;
-
-import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 import org.jeecg.modules.business.entity.BusMemberCard;
 import org.jeecg.modules.business.entity.BusMemberCard;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.business.vo.MemberCardStatVo;
 
 
 /**
 /**
  * @Description: bus_member_card
  * @Description: bus_member_card
@@ -14,4 +13,14 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
  */
 public interface BusMemberCardMapper extends BaseMapper<BusMemberCard> {
 public interface BusMemberCardMapper extends BaseMapper<BusMemberCard> {
 
 
+    /**
+     * 统计
+     * @param hotelId
+     * @return
+     */
+    @Select("select count(0) as count,sum(CASE WHEN DATEDIFF(create_time,now())=0 THEN 1 ELSE 0 END) as day_count,\n" +
+            "sum(CASE WHEN substring(certificate_no,11,4)=DATE_FORMAT(Now(),'%m%d') THEN 1 ELSE 0 END) as birthday_count,\n" +
+            "sum(CASE WHEN substring(certificate_no,11,2)=DATE_FORMAT(Now(),'%m') THEN 1 ELSE 0 END) as month_birthday_count\n" +
+            "from bus_member_card where hotel_id = #{hotelId}")
+    public MemberCardStatVo stat(String hotelId);
 }
 }

+ 7 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/IBusMemberCardService.java

@@ -5,7 +5,7 @@ import org.jeecg.modules.business.dto.UserGroupDto;
 import org.jeecg.modules.business.dto.UserLabelDto;
 import org.jeecg.modules.business.dto.UserLabelDto;
 import org.jeecg.modules.business.entity.BusMemberCard;
 import org.jeecg.modules.business.entity.BusMemberCard;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
-import org.springframework.transaction.annotation.Transactional;
+import org.jeecg.modules.business.vo.MemberCardStatVo;
 
 
 /**
 /**
  * @Description: bus_member_card
  * @Description: bus_member_card
@@ -27,4 +27,10 @@ public interface IBusMemberCardService extends IService<BusMemberCard> {
      * @return
      * @return
      */
      */
     public Result lableBatch(UserLabelDto dto);
     public Result lableBatch(UserLabelDto dto);
+
+    /**
+     * 统计
+     * @return
+     */
+    public MemberCardStatVo stat(String hotelId);
 }
 }

+ 11 - 14
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/service/impl/BusMemberCardServiceImpl.java

@@ -1,33 +1,21 @@
 package org.jeecg.modules.business.service.impl;
 package org.jeecg.modules.business.service.impl;
 
 
-import cn.hutool.core.date.DateTime;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.ObjectUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.api.vo.Result;
-import org.jeecg.common.exception.JeecgBootException;
-import org.jeecg.modules.business.dto.ProvideCouponsUsedDto;
 import org.jeecg.modules.business.dto.UserGroupDto;
 import org.jeecg.modules.business.dto.UserGroupDto;
 import org.jeecg.modules.business.dto.UserLabelDto;
 import org.jeecg.modules.business.dto.UserLabelDto;
 import org.jeecg.modules.business.entity.*;
 import org.jeecg.modules.business.entity.*;
-import org.jeecg.modules.business.enums.CouponsStatusEnum;
-import org.jeecg.modules.business.mapper.BusMarketCouponsCashMapper;
-import org.jeecg.modules.business.mapper.BusMarketMemberGroupMapper;
-import org.jeecg.modules.business.mapper.BusMarketMemberLableMapper;
-import org.jeecg.modules.business.mapper.BusMemberCardMapper;
+import org.jeecg.modules.business.mapper.*;
 import org.jeecg.modules.business.service.IBusMemberCardService;
 import org.jeecg.modules.business.service.IBusMemberCardService;
+import org.jeecg.modules.business.vo.MemberCardStatVo;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
 
 
 /**
 /**
  * @Description: bus_member_card
  * @Description: bus_member_card
@@ -41,6 +29,8 @@ public class BusMemberCardServiceImpl extends ServiceImpl<BusMemberCardMapper, B
     private BusMarketMemberGroupMapper busMarketMemberGroupMapper;
     private BusMarketMemberGroupMapper busMarketMemberGroupMapper;
     @Resource
     @Resource
     private BusMarketMemberLableMapper busMarketMemberLableMapper;
     private BusMarketMemberLableMapper busMarketMemberLableMapper;
+    @Resource
+    private BusMemberCardMapper busMemberCardMapper;
     /**
     /**
      * 设置用户分组
      * 设置用户分组
      * @param dto
      * @param dto
@@ -85,4 +75,11 @@ public class BusMemberCardServiceImpl extends ServiceImpl<BusMemberCardMapper, B
         return Result.ok("标签成功");
         return Result.ok("标签成功");
     }
     }
 
 
+    /**
+     * 统计
+     * @return
+     */
+    public MemberCardStatVo stat(String hotelId) {
+        return busMemberCardMapper.stat(hotelId);
+    }
 }
 }

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

@@ -0,0 +1,24 @@
+package org.jeecg.modules.business.vo;
+
+import lombok.Data;
+
+
+@Data
+public class MemberCardStatVo {
+    /**
+     * 会员总数
+     */
+    private Integer count;
+    /**
+     * 会员当天新增总数
+     */
+    private Integer dayCount;
+    /**
+     * 会员当天生日总数
+     */
+    private Integer birthdayCount;
+    /**
+     * 会员当月生日总数
+     */
+    private Integer monthBirthdayCount;
+}