21分布式电商项目 - 商家审核

简介: 21分布式电商项目 - 商家审核

需求分析

商家申请入驻后,需要网站运营人员在运营商后台进行审核,审核后商家才可以登陆系统。

状态值: 0:未审核 1:已审核 2:审核未通过 3:关闭

商家待审核列表

修改 seller_1.html

引入 JS

<link rel="stylesheet" href="../plugins/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" href="../plugins/adminLTE/css/AdminLTE.css">
<link rel="stylesheet"
  href="../plugins/adminLTE/css/skins/_all-skins.min.css">
<link rel="stylesheet" href="../css/style.css">
<script src="../plugins/jQuery/jquery-2.2.3.min.js"></script>
<script src="../plugins/bootstrap/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="../plugins/angularjs/pagination.css">
<script src="../plugins/angularjs/angular.min.js"></script>
<script src="../plugins/angularjs/pagination.js"></script>
<script type="text/javascript" src="../js/base_pagination.js"></script>
<script type="text/javascript" src="../js/service/sellerService.js"></script>
<script type="text/javascript" src="../js/controller/baseController.js"></script>
<script type="text/javascript" src="../js/controller/sellerController.js"></script>

指令

<body ng-app="pyg" ng-controller="sellerController" ng-init="searchEntity={status:'0'}"
      class="hold-transition skin-red sidebar-mini">

加入分页控件

<tr ng-repeat="entity in list">
                    <td><input type="checkbox"></td>
                    <td>{{entity.sellerId}}</td>
                    <td>{{entity.name}}</td>
                    <td>{{entity.nickName}}</td>
                    <td>{{entity.linkmanName}}</td>
                    <td>{{entity.telephone}}</td>
                    <td class="text-center">
                        <button type="button" class="btn bg-olive btn-xs"
                                data-toggle="modal" data-target="#sellerModal"
                                ng-click="findOne(entity.sellerId)">详情
                        </button>
                    </td>
                </tr>

商家详情

(1)绑定页面弹出窗口

<table class="table table-bordered table-striped" width="800px">
  <tr>
    <td>公司名称</td>
    <td>{{entity.name}}</td>
  </tr>
  <tr>
    <td>公司手机</td>
    <td>{{entity.mobile}}</td>
  </tr>
  <tr>
    <td>公司电话</td>
    <td>{{entity.telephone}}</td>
  </tr>
  <tr>
    <td>公司详细地址</td>
    <td>{{entity.addressDetail}}</td>
  </tr>
</table>

(2)列表的“详情”按钮

<button type="button" class="btn bg-olive btn-xs" data-toggle="modal" data-target="#sellerModal" ng-click="findOne(entity.sellerId)">详情</button>

商家审核

1.后端代码

(1)在 pinyougou-sellergoods-interface 工程的 SellerService.java 服务接口新增方法定义

/**
* 更改状态
* @param id
* @param status
*/
public void updateStatus(String sellerId,String status);

(2)在 pinyougou-sellergoods-service 的 SellerServiceImpl.java 新增方法

@Override
public void updateStatus(String sellerId, String status) {
TbSeller seller = sellerMapper.selectByPrimaryKey(sellerId);
seller.setStatus(status);
sellerMapper.updateByPrimaryKey(seller);
}

(3)在 pinyougou-manager-web 的 SellerController.java 新增方法

/**
* 更改状态
* @param sellerId 商家 ID
* @param status 状态
*/
@RequestMapping("/updateStatus")
public Result updateStatus(String sellerId, String status){
  try {
    sellerService.updateStatus(sellerId, status);
    return new Result(true, "成功");
  } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    return new Result(false, "失败");
}
}
2.前端的代码

修改 pinyougou-manager-web 的 sellerService.js

//更改状态
this.updateStatus=function(sellerId,status){
  return $http.get('../seller/updateStatus.do?sellerId='+sellerId+'&status='+status);
}

修改 pinyougou-manager-web 的 sellerController.js

$scope.updateStatus=function(sellerId,status){
sellerService.updateStatus(sellerId,status).success(
  function(response){
    if(response.success){
      $scope.reloadList();//刷新列表
    }else{
      alert("失败");
    }
    }
  );
}

修改按钮,调用方法

<div class="modal-footer">、
  <button class="btn btn-success" data-dismiss="modal" aria-hidden="trueng-click="updateStatus(entity.sellerId,'1')">审核通过</button>
    <button class="btn btn-danger" data-dismiss="modal" aria-hidden="trueng-click="updateStatus(entity.sellerId,'2')">审核未通过</button>
    <button class="btn btn-danger" data-dismiss="modal" aria-hidden="true" 
ng-click="updateStatus(entity.sellerId,'3')">关闭商家</button>
    <button class="btn btn-default" data-dismiss="modal" aria-hidden="true"关闭</button>
</div>



目录
相关文章
|
7月前
|
NoSQL 调度 Redis
19- 你的项目中哪里用到了分布式锁
在一个项目中,为解决集群环境下SpringTask定时任务的重复执行问题,采用了Redis实现分布式锁来管理任务调度,防止资源浪费。后来因任务量和执行规则增加,以及单节点效率限制,系统改用XXL-JOB,分布式锁不再使用。
74 2
|
3月前
|
NoSQL Java Redis
面试官:项目中如何实现分布式锁?
面试官:项目中如何实现分布式锁?
102 6
面试官:项目中如何实现分布式锁?
|
4月前
|
资源调度 Java 调度
项目环境测试问题之Schedulerx2.0通过分布式分片任务解决单机计算瓶颈如何解决
项目环境测试问题之Schedulerx2.0通过分布式分片任务解决单机计算瓶颈如何解决
项目环境测试问题之Schedulerx2.0通过分布式分片任务解决单机计算瓶颈如何解决
|
4月前
|
存储 缓存 开发框架
看看 Asp.net core Webapi 项目如何优雅地使用分布式缓存
看看 Asp.net core Webapi 项目如何优雅地使用分布式缓存
|
5月前
|
SQL NoSQL Java
如何在Java项目中实现分布式锁
如何在Java项目中实现分布式锁
|
5月前
|
消息中间件 Java 中间件
如何在Java项目中实现分布式事务管理
如何在Java项目中实现分布式事务管理
|
7月前
|
XML NoSQL Java
Java单体项目和分布式项目中的锁
Java单体项目和分布式项目中的锁 Java单体项目和分布式项目中的锁
99 2
|
2月前
|
NoSQL Java Redis
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
Redis分布式锁在高并发场景下是重要的技术手段,但其实现过程中常遇到五大深坑:**原子性问题**、**连接耗尽问题**、**锁过期问题**、**锁失效问题**以及**锁分段问题**。这些问题不仅影响系统的稳定性和性能,还可能导致数据不一致。尼恩在实际项目中总结了这些坑,并提供了详细的解决方案,包括使用Lua脚本保证原子性、设置合理的锁过期时间和使用看门狗机制、以及通过锁分段提升性能。这些经验和技巧对面试和实际开发都有很大帮助,值得深入学习和实践。
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
|
22天前
|
存储 NoSQL Java
使用lock4j-redis-template-spring-boot-starter实现redis分布式锁
通过使用 `lock4j-redis-template-spring-boot-starter`,我们可以轻松实现 Redis 分布式锁,从而解决分布式系统中多个实例并发访问共享资源的问题。合理配置和使用分布式锁,可以有效提高系统的稳定性和数据的一致性。希望本文对你在实际项目中使用 Redis 分布式锁有所帮助。
65 5
|
26天前
|
NoSQL Java 数据处理
基于Redis海量数据场景分布式ID架构实践
【11月更文挑战第30天】在现代分布式系统中,生成全局唯一的ID是一个常见且重要的需求。在微服务架构中,各个服务可能需要生成唯一标识符,如用户ID、订单ID等。传统的自增ID已经无法满足在集群环境下保持唯一性的要求,而分布式ID解决方案能够确保即使在多个实例间也能生成全局唯一的标识符。本文将深入探讨如何利用Redis实现分布式ID生成,并通过Java语言展示多个示例,同时分析每个实践方案的优缺点。
55 8

热门文章

最新文章