fushengqian 1 год назад
Родитель
Сommit
5292f62bfd

+ 3 - 0
fuint-application/src/main/java/com/fuint/common/dto/UserGroupDto.java

@@ -35,6 +35,9 @@ public class UserGroupDto implements Serializable {
     @ApiModelProperty("子分组")
     private List<UserGroupDto> children;
 
+    @ApiModelProperty("会员数量")
+    private Long memberNum;
+
     @ApiModelProperty("创建时间")
     private Date createTime;
 

+ 50 - 5
fuint-application/src/main/java/com/fuint/common/service/impl/MemberGroupServiceImpl.java

@@ -83,6 +83,7 @@ public class MemberGroupServiceImpl extends ServiceImpl<MtUserGroupMapper, MtUse
                  UserGroupDto userGroupDto = new UserGroupDto();
                  BeanUtils.copyProperties(mtUserGroup, userGroupDto);
                  userGroupDto.setChildren(getChildren(mtUserGroup.getId()));
+                 userGroupDto.setMemberNum(getMemberNum(mtUserGroup.getId()));
                  userGroupList.add(userGroupDto);
             }
         }
@@ -184,20 +185,64 @@ public class MemberGroupServiceImpl extends ServiceImpl<MtUserGroupMapper, MtUse
         return userGroup;
     }
 
-    public List<UserGroupDto> getChildren(Integer id) {
+    /**
+     * 获取会员分组子类
+     *
+     * @param groupId
+     * @return
+     * */
+    public List<UserGroupDto> getChildren(Integer groupId) {
         Map<String, Object> param = new HashMap<>();
         param.put("STATUS", StatusEnum.ENABLED.getKey());
-        param.put("PARENT_ID", id);
+        param.put("PARENT_ID", groupId);
         List<MtUserGroup> dataList = mtUserGroupMapper.selectByMap(param);
-        List<UserGroupDto> childeren = new ArrayList<>();
+        List<UserGroupDto> children = new ArrayList<>();
         if (dataList != null && dataList.size() > 0) {
             for (MtUserGroup userGroup : dataList) {
                  UserGroupDto userGroupDto = new UserGroupDto();
                  BeanUtils.copyProperties(userGroup, userGroupDto);
                  userGroupDto.setChildren(getChildren(userGroup.getId()));
-                 childeren.add(userGroupDto);
+                 userGroupDto.setMemberNum(getMemberNum(userGroup.getId()));
+                 children.add(userGroupDto);
+            }
+        }
+        return children;
+    }
+
+    /**
+     * 获取分组会员数量
+     *
+     * @param groupId
+     * @return
+     * */
+    public Long getMemberNum(Integer groupId) {
+        List<Integer> groupIds = getGroupIds(groupId);
+        Long totalMember = mtUserGroupMapper.getMemberNum(groupIds);
+        return totalMember;
+    }
+
+    /**
+     * 获取会员分组子类ID
+     *
+     * @param groupId
+     * @return
+     * */
+    public List<Integer> getGroupIds(Integer groupId) {
+        Map<String, Object> param = new HashMap<>();
+        param.put("STATUS", StatusEnum.ENABLED.getKey());
+        param.put("PARENT_ID", groupId);
+        List<MtUserGroup> dataList = mtUserGroupMapper.selectByMap(param);
+        List<Integer> groupIds = new ArrayList<>();
+        groupIds.add(groupId);
+        if (dataList != null && dataList.size() > 0) {
+            for (MtUserGroup userGroup : dataList) {
+                 groupIds.add(userGroup.getId());
+                 List<Integer> childrenIds = getGroupIds(userGroup.getId());
+                 if (childrenIds.size() > 0) {
+                     groupIds.addAll(childrenIds);
+                 }
             }
         }
-        return childeren;
+        return groupIds;
     }
 }

+ 8 - 0
fuint-application/src/main/java/com/fuint/module/backendApi/controller/BackendCashierController.java

@@ -19,6 +19,7 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 import javax.servlet.http.HttpServletRequest;
 import java.lang.reflect.InvocationTargetException;
@@ -102,6 +103,7 @@ public class BackendCashierController extends BaseController {
     @ApiOperation(value = "收银台初始化")
     @RequestMapping(value = "/init/{userId}", method = RequestMethod.GET)
     @CrossOrigin
+    @PreAuthorize("@pms.hasPermission('cashier:index')")
     public ResponseObject init(HttpServletRequest request, @PathVariable("userId") Integer userId) throws BusinessCheckException {
         String token = request.getHeader("Access-Token");
         Integer page = request.getParameter("page") == null ? Constants.PAGE_NUMBER : Integer.parseInt(request.getParameter("page"));
@@ -172,6 +174,7 @@ public class BackendCashierController extends BaseController {
     @ApiOperation(value = "查询商品列表")
     @RequestMapping(value = "/searchGoods", method = RequestMethod.POST)
     @CrossOrigin
+    @PreAuthorize("@pms.hasPermission('cashier:index')")
     public ResponseObject searchGoods(HttpServletRequest request, @RequestBody Map<String, Object> param) throws BusinessCheckException {
         String token = request.getHeader("Access-Token");
         String keyword =  param.get("keyword") == null ? "" : param.get("keyword").toString();
@@ -198,6 +201,7 @@ public class BackendCashierController extends BaseController {
     @ApiOperation(value = "获取商品详情")
     @RequestMapping(value = "/getGoodsInfo/{id}", method = RequestMethod.GET)
     @CrossOrigin
+    @PreAuthorize("@pms.hasPermission('cashier:index')")
     public ResponseObject getGoodsInfo(HttpServletRequest request, @PathVariable("id") Integer goodsId) throws InvocationTargetException, IllegalAccessException {
         String token = request.getHeader("Access-Token");
         AccountInfo accountInfo = TokenUtil.getAccountInfoByToken(token);
@@ -275,6 +279,7 @@ public class BackendCashierController extends BaseController {
     @ApiOperation(value = "搜索会员信息")
     @RequestMapping(value = "/getMemberInfo", method = RequestMethod.POST)
     @CrossOrigin
+    @PreAuthorize("@pms.hasPermission('cashier:index')")
     public ResponseObject getMemberInfo(HttpServletRequest request, @RequestBody Map<String, Object> param) throws BusinessCheckException {
         String token = request.getHeader("Access-Token");
         String keyword = param.get("keyword") == null ? "" : param.get("keyword").toString();
@@ -309,6 +314,7 @@ public class BackendCashierController extends BaseController {
     @ApiOperation(value = "获取会员信息")
     @RequestMapping(value = "/getMemberInfoById/{userId}", method = RequestMethod.GET)
     @CrossOrigin
+    @PreAuthorize("@pms.hasPermission('cashier:index')")
     public ResponseObject getMemberInfoById(HttpServletRequest request, @PathVariable("userId") String userId) throws BusinessCheckException {
         String token = request.getHeader("Access-Token");
         AccountInfo accountInfo = TokenUtil.getAccountInfoByToken(token);
@@ -333,6 +339,7 @@ public class BackendCashierController extends BaseController {
     @ApiOperation(value = "执行挂单")
     @RequestMapping(value = "/doHangUp", method = RequestMethod.POST)
     @CrossOrigin
+    @PreAuthorize("@pms.hasPermission('cashier:index')")
     public ResponseObject doHangUp(HttpServletRequest request, @RequestBody Map<String, Object> param) {
         String token = request.getHeader("Access-Token");
         String cartIds = param.get("cartIds") == null ? "" : param.get("cartIds").toString();
@@ -371,6 +378,7 @@ public class BackendCashierController extends BaseController {
     @ApiOperation(value = "获取挂单列表")
     @RequestMapping(value = "/getHangUpList", method = RequestMethod.GET)
     @CrossOrigin
+    @PreAuthorize("@pms.hasPermission('cashier:index')")
     public ResponseObject getHangUpList(HttpServletRequest request) throws BusinessCheckException {
         String token = request.getHeader("Access-Token");
 

+ 4 - 0
fuint-application/src/main/java/com/fuint/module/backendApi/controller/BackendMemberController.java

@@ -92,6 +92,7 @@ public class BackendMemberController extends BaseController {
         String endTime = request.getParameter("endTime") == null ? "" : request.getParameter("endTime");
         String status = request.getParameter("status");
         String storeIds = request.getParameter("storeIds");
+        String groupIds = request.getParameter("groupIds");
         Integer page = request.getParameter("page") == null ? Constants.PAGE_NUMBER : Integer.parseInt(request.getParameter("page"));
         Integer pageSize = request.getParameter("pageSize") == null ? Constants.PAGE_SIZE : Integer.parseInt(request.getParameter("pageSize"));
 
@@ -124,6 +125,9 @@ public class BackendMemberController extends BaseController {
         if (StringUtil.isNotEmpty(storeIds)) {
             params.put("storeIds", storeIds);
         }
+        if (StringUtil.isNotEmpty(groupIds)) {
+            params.put("groupIds", groupIds);
+        }
         AccountInfo accountInfo = TokenUtil.getAccountInfoByToken(token);
         if (accountInfo == null) {
             return getFailureResult(1001, "请先登录");

+ 5 - 2
fuint-repository/src/main/java/com/fuint/repository/mapper/MtUserGroupMapper.java

@@ -2,6 +2,9 @@ package com.fuint.repository.mapper;
 
 import com.fuint.repository.model.MtUserGroup;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * 会员分组 Mapper 接口
@@ -10,5 +13,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * CopyRight https://www.fuint.cn
  */
 public interface MtUserGroupMapper extends BaseMapper<MtUserGroup> {
-
-}
+    Long getMemberNum(@Param("groupIds") List<Integer> groupIds);
+}

+ 13 - 0
fuint-repository/src/main/resources/mapper/MtUserGroupMapper.xml

@@ -0,0 +1,13 @@
+<?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="com.fuint.repository.mapper.MtUserGroupMapper">
+    <select id="getMemberNum" resultType="java.lang.Long">
+        select count(0) from mt_user t where t.STATUS != 'D'
+        <if test="groupIds != null and groupIds.size > 0">
+            AND t.GROUP_ID IN
+            <foreach collection="groupIds" item="groupId" index="index" open="(" separator="," close=")">
+                #{groupId}
+            </foreach>
+        </if>
+    </select>
+</mapper>