yangdamao 2 år sedan
förälder
incheckning
d7bb45b42a

+ 9 - 0
zhongzheng-admin-store/src/main/java/com/zhongzheng/controller/category/GoodsCategoryController.java

@@ -74,4 +74,13 @@ public class GoodsCategoryController extends BaseController {
     public AjaxResult<List<GoodsCategoryVo>> categoryTree(GoodsCategoryQueryBo bo) {
         return AjaxResult.success(iGoodsCategoryService.categoryTree(bo));
     }
+
+    /**
+     * 类目详情
+     */
+    @ApiOperation("类目详情")
+    @GetMapping("/detail/{categoryId}")
+    public AjaxResult<GoodsCategoryVo> getCategoryDetail(@PathVariable("categoryId") Long categoryId) {
+        return AjaxResult.success(iGoodsCategoryService.getCategoryDetail(categoryId));
+    }
 }

+ 15 - 0
zhongzheng-admin-store/src/main/java/com/zhongzheng/controller/common/CommonController.java

@@ -0,0 +1,15 @@
+package com.zhongzheng.controller.common;
+
+import com.zhongzheng.common.core.controller.BaseController;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author yangdamao
+ * @date 2023年05月30日 15:23
+ */
+@RestController("/common/store")
+public class CommonController extends BaseController {
+    private static final Logger log = LoggerFactory.getLogger(CommonController.class);
+}

+ 65 - 0
zhongzheng-admin-store/src/main/java/com/zhongzheng/controller/store/GoodsController.java

@@ -0,0 +1,65 @@
+package com.zhongzheng.controller.store;
+
+import com.zhongzheng.common.annotation.Log;
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.common.enums.BusinessType;
+import com.zhongzheng.modules.goods.bo.GoodsAddBo;
+import com.zhongzheng.modules.goods.bo.GoodsEditBo;
+import com.zhongzheng.modules.goods.bo.GoodsQueryBo;
+import com.zhongzheng.modules.goods.service.IGoodsService;
+import com.zhongzheng.modules.goods.vo.GoodsVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 商户店铺管理Controller
+ *
+ * @author hjl
+ * @date 2023-05-18
+ */
+@Api(value = "核销商品管理控制器", tags = {"核销商品管理控制器"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/goods")
+public class GoodsController extends BaseController {
+
+    private final IGoodsService iGoodsService;
+    /**
+     * 新增题库商品
+     */
+    @ApiOperation("新增积分商品")
+    @PreAuthorize("@ss.hasPermi('system:goods:add')")
+    @Log(title = "新增积分商品", businessType = BusinessType.INSERT)
+    @PostMapping("/points")
+    public AjaxResult<Void> addPoints(@RequestBody GoodsAddBo bo) {
+        return toAjax(iGoodsService.insertPointsByAddBo(bo)>0 ? 1 : 0);
+    }
+
+    /**
+     * 新增题库商品
+     */
+    @ApiOperation("编辑积分商品")
+    @PreAuthorize("@ss.hasPermi('system:goods:add')")
+    @Log(title = "编辑积分商品", businessType = BusinessType.INSERT)
+    @PostMapping("/updatePoints")
+    public AjaxResult<Void> updatePoints(@RequestBody GoodsEditBo bo) {
+        return toAjax(iGoodsService.updatePointsByEditBo(bo) ? 1 : 0);
+    }
+
+    @ApiOperation("查询积分商品列表")
+    @PreAuthorize("@ss.hasPermi('system:goods:list')")
+    @GetMapping("/listPoints")
+    public TableDataInfo<GoodsVo> listPoints(GoodsQueryBo bo) {
+        startPage();
+        List<GoodsVo> list = iGoodsService.queryPointsList(bo);
+        return getDataTable(list);
+    }
+}

+ 20 - 0
zhongzheng-admin-store/src/main/java/com/zhongzheng/controller/system/LoginController.java

@@ -121,4 +121,24 @@ public class LoginController extends BaseController {
         map.put("tenant", sysTenantVo);
         return AjaxResult.success(map);
     }
+
+    /**
+     * 获取店铺配置
+     *
+     * @return 获取店铺配置
+     */
+    @ApiOperation("登录用户信息")
+    @GetMapping("/getStoreConfig")
+    public AjaxResult getStoreConfig()
+    {
+        StoreLoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        StoreUser user = iUserService.getOne(new LambdaQueryWrapper<StoreUser>()
+                .eq(StoreUser::getUserId, loginUser.getUser().getUserId()).last("limit 1"));
+
+        Map<String,Object> map = new HashMap<>();
+        map.put("tenantId", user.getTenantId());
+        map.put("storeId", user.getStoreId());
+        map.put("merId", user.getMerId());
+        return AjaxResult.success(map);
+    }
 }

+ 131 - 0
zhongzheng-admin-store/src/main/java/com/zhongzheng/core/config/MybatisFilterConfig.java

@@ -0,0 +1,131 @@
+package com.zhongzheng.core.config;
+
+import com.baomidou.mybatisplus.core.parser.ISqlParser;
+import com.baomidou.mybatisplus.core.parser.ISqlParserFilter;
+import com.baomidou.mybatisplus.core.parser.SqlParserHelper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.tenant.TenantHandler;
+import com.baomidou.mybatisplus.extension.plugins.tenant.TenantSqlParser;
+import net.sf.jsqlparser.expression.Expression;
+import net.sf.jsqlparser.expression.LongValue;
+import org.apache.ibatis.mapping.MappedStatement;
+import org.apache.ibatis.reflection.MetaObject;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.*;
+
+/**
+ * @author yangdamao
+ * @date 2023年05月31日 15:03
+ */
+@Configuration
+@MapperScan(basePackages = {"com.zhongzheng.modules.goods.mapper"})
+public class MybatisFilterConfig {
+
+    @Autowired//自动注入request
+    private HttpServletRequest request;
+
+    private static final Map<String, String> IGNORE_TENANT_SMAP = new HashMap<String, String>() {{
+        // 这些mapper 方法也不修改
+//        put("com.test.first.dao.TestMapper.getId","");
+//        put("com.test.first.dao.TestMapper.getId2","");
+//        put("com.test.first.dao.TestMapper.getId3","");
+    }};
+
+    private static final HashSet<String> TABLE_FILTER = new HashSet();
+
+    static {
+        // 过滤表, 这些表不进行修改
+        TABLE_FILTER.add("sys_tenant");
+        TABLE_FILTER.add("top_merchant");
+//        TABLE_FILTER.add("sys_user2");
+    }
+
+    @Bean
+    @SuppressWarnings("all")
+    public PaginationInterceptor paginationInterceptor() {
+        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
+
+        // sql 解析器
+        List<ISqlParser> sqlParserList = new ArrayList<>();
+        TenantSqlParser tenantSqlParser = new TenantSqlParser();
+        tenantSqlParser.setTenantHandler(new TenantHandler() {
+
+            @Override
+            public Expression getTenantId(boolean select) {
+                // 此处返回sys_code 字段值, 修改sql时候的参数, 从session 里面获取用户,
+                // 或者其他方式获取用户标识, 这里方便直接写死了
+                String storeId = request.getHeader("StoreId");
+                return new LongValue(StringUtils.isNotBlank(storeId)?storeId:"0");
+            }
+            @Override
+            public String getTenantIdColumn() {
+                // 返回增加条件的字段
+                return "store_id";
+            }
+            @Override
+            public boolean doTableFilter(String tableName) {
+                // 这里可以判断是否过滤表
+                // 对没有sys_code 的表格进行过滤
+                if (TABLE_FILTER.contains(tableName) || StringUtils.isBlank(request.getHeader("StoreId"))) {
+                    // 返回true 则不过滤
+                    return true;
+                }
+                return false;
+            }
+        });
+        // 添加到解析器, 如需添加多个, 这个地方是list, 多new几个, new TenantSqlParser(); 即可
+        sqlParserList.add(tenantSqlParser);
+
+        TenantSqlParser tenantSqlParser1 = new TenantSqlParser();
+        tenantSqlParser1.setTenantHandler(new TenantHandler() {
+            @Override
+            public Expression getTenantId(boolean select) {
+                // 此处返回sys_code 字段值, 修改sql时候的参数, 从session 里面获取用户,
+                // 或者其他方式获取用户标识, 这里方便直接写死了
+                String merId = request.getHeader("MerId");
+                return new LongValue(StringUtils.isNotBlank(merId)?merId:"0");
+            }
+            @Override
+            public String getTenantIdColumn() {
+                // 返回增加条件的字段
+                return "mer_id";
+            }
+            @Override
+            public boolean doTableFilter(String tableName) {
+                // 这里可以判断是否过滤表
+                // 对没有sys_code 的表格进行过滤
+                if (TABLE_FILTER.contains(tableName) || StringUtils.isBlank(request.getHeader("MerId"))) {
+                    // 返回true 则不过滤
+                    return true;
+                }
+                return false;
+            }
+        });
+        sqlParserList.add(tenantSqlParser1);
+
+        // 设置解析器集合
+        paginationInterceptor.setSqlParserList(sqlParserList);
+
+        // 过滤函数
+        paginationInterceptor.setSqlParserFilter(new ISqlParserFilter() {
+            @Override
+            public boolean doFilter(MetaObject metaObject) {
+                MappedStatement ms = SqlParserHelper.getMappedStatement(metaObject);
+                // com.test.first.dao.TestMapper.getId 精确到mapper 方法级
+                if (IGNORE_TENANT_SMAP.containsKey(ms.getId())) {
+                    // 不进行修改
+                    return true;
+                }
+                return false;
+            }
+        });
+        return paginationInterceptor;
+    }
+
+}

+ 1 - 2
zhongzheng-common/src/main/java/com/zhongzheng/common/core/bo/SysUserEditBo.java

@@ -10,7 +10,6 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import javax.validation.constraints.Email;
-import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.Size;
 import java.util.List;
 
@@ -40,7 +39,7 @@ public class SysUserEditBo
     private Long deptId;
 
     /** 用户账号 */
-    @NotBlank(message = "用户账号不能为空")
+//    @NotBlank(message = "用户账号不能为空")
     @Size(min = 0, max = 30, message = "用户账号长度不能超过30个字符")
     @Excel(name = "登录名称")
     @ApiModelProperty("用户账号")

+ 2 - 0
zhongzheng-common/src/main/java/com/zhongzheng/common/core/domain/entity/store/StoreUser.java

@@ -58,6 +58,8 @@ private static final long serialVersionUID=1L;
     /** 状态 1正常 0关闭 */
     private Integer status;
     /** 店铺ID */
+    private Long tenantId;
+    /** 店铺ID */
     private Long storeId;
     /** 商户ID */
     private Long merId;

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/bo/GoodsCategoryBo.java

@@ -42,7 +42,7 @@ private static final long serialVersionUID=1L;
     @ApiModelProperty("店铺ID")
     private Long storeId;
     @ApiModelProperty("商户ID")
-    private Long merId;
+    private Long merId = 3L;
 
     private List<Integer> statusList;
 }

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/IGoodsCategoryService.java

@@ -20,4 +20,5 @@ public interface IGoodsCategoryService extends IService<GoodsCategory> {
 
     List<GoodsCategoryVo> categoryTree(GoodsCategoryQueryBo bo);
 
+    GoodsCategoryVo getCategoryDetail(Long categoryId);
 }

+ 9 - 3
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsCategoryServiceImpl.java

@@ -69,9 +69,9 @@ public class GoodsCategoryServiceImpl extends ServiceImpl<GoodsCategoryMapper, G
         }
         List<GoodsCategoryVo> categoryVos = list.stream().map(x ->{
             GoodsCategoryVo goodsCategoryVo = BeanUtil.toBean(x, GoodsCategoryVo.class);
-            TopStore store = topStoreService.getById(item.getStoreId());
+            TopStore store = topStoreService.getById(x.getStoreId());
             goodsCategoryVo.setStoreName(store.getStoreName());
-            TopMerchant merchant = topMerchantService.getById(item.getMerId());
+            TopMerchant merchant = topMerchantService.getById(x.getMerId());
             goodsCategoryVo.setMerName(merchant.getMerName());
             return goodsCategoryVo;
         }).collect(Collectors.toList());
@@ -94,7 +94,7 @@ public class GoodsCategoryServiceImpl extends ServiceImpl<GoodsCategoryMapper, G
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean updateCategory(GoodsCategoryBo bo) {
-        validEntity(bo);
+//        validEntity(bo);
         GoodsCategory categoryCategory = getById(bo.getCategoryId());
         if (ObjectUtil.isNull(categoryCategory)){
             throw new CustomException("类目信息获取失败");
@@ -166,6 +166,12 @@ public class GoodsCategoryServiceImpl extends ServiceImpl<GoodsCategoryMapper, G
         return categoryVos;
     }
 
+    @Override
+    public GoodsCategoryVo getCategoryDetail(Long categoryId) {
+        GoodsCategory category = getById(categoryId);
+        return BeanUtil.toBean(category,GoodsCategoryVo.class);
+    }
+
     //校验
     private void validEntity(GoodsCategoryBo bo){
         int count = count(new LambdaQueryWrapper<GoodsCategory>()