一个Spring boot的完整请求流程

1,由前端发起请求

uni.request({
				url: this.domainUrl+"/zyymall/queryorderlist/"+this.cmsSiteId+"/"+this.VolId+"/"+this.orderStatus,
				method: 'GET',
				data:{
					"VolId":this.VolId,
					"orderStatus":this.orderStatus,
				},
				header: {
					"Content-Type": this.contenttype,
					"volauth":this.volauth
				},
				success: (res) => {
					console.log(res);
					if (res.statusCode == 200) {
						this.orderList=res.data.orders;
						console.log(this.orderList);
						uni.hideLoading();
					}
					
				}
			});	

2,根据路径,Springboot会加载相应的Controller进行拦截

	@GetMapping("/queryorderlist/{cmsSiteId}/{volId}/{orderStatus}")
	public ResponseEntity<?> queryOrderList(@PathVariable Integer cmsSiteId,@PathVariable Integer volId,@PathVariable Integer orderStatus,
			@RequestParam Map<String,Integer> params){
		Map<String, ?>cmsSite = CmsSiteCheckUtil.querySiteInfo(cmsSiteId);
		if (cmsSite.get("status") != null) {
			return ResponseEntity.ok(cmsSite);
		}
		params.put("volId", volId);
		params.put("orderStatus", orderStatus);
		return ResponseEntity.ok(mallOrderService.queryOrderList(params));
	}

3,拦截处理后,跳转到相应的Service处理层

public interface MallOrderService {
/**
	 * 查询订单列表
	 * @param volId 志愿者ID,orderStatus 订单状态
	 * @return 返回成功或失败
	 */
	Map<String, Object> queryOrderList(Map<String, Integer> params);
}

4,跳转到ServiceImplement(service实现类)

@Service
public class MallOrderServiceImpl implements MallOrderService {
@Autowired
	private MallOrderDao mallOrderDao;`
	@Override
	public Map<String, Object> queryOrderList(Map<String, Integer> params) {
		Map<String,Object> resultMap = Maps.newConcurrentMap();
		//根据用户ID查询用户订单
		List<MallOrder> orderList = mallOrderDao.queryOrderListByUid(params);
		if (orderList==null || orderList.isEmpty()) {
			resultMap.put("status", ResponseConstants.HTTP_RESPONSE_MALL_ORDER_NULL_FAIL);
			resultMap.put("msg", ResponseConstants.HTTP_RESPONSE_MALL_ORDER_NULL_FAIL_DESC);
			return resultMap;
		}else {
			try {
				for (MallOrder mallOrder : orderList) {
					List<MallOrderGoods> goodsList = mallOrderDao.queryGoodsListByOrderId(mallOrder.getOrderId());
					mallOrder.setMallOrderGoods(goodsList);
				}
				resultMap.put("orders",orderList);
			} catch (Exception e) {
				e.printStackTrace();
				resultMap.put("status", ResponseConstants.HTTP_RESPONSE_FAIL_REGEDIT);
				resultMap.put("msg", ResponseConstants.HTTP_RESPONSE_FAIL_REGEDIT_DESC);
				return resultMap;
			}
			resultMap.put("status", ResponseConstants.HTTP_RESPONSE_SUCCESS);
			resultMap.put("msg",ResponseConstants.HTTP_RESPONSE_SUCCESS_DESC);
			return resultMap;
		}
	}
}

5,在执行serviceimplement时会加载Dao层,操作数据库

public interface MallOrderDao {
	//根据志愿者ID查询订单
	List<MallOrder> queryOrderListByUid(Map<String, Integer> params);
}

6,再跳到Dao层实现类

@Repository
public class MallOrderDaoImpl implements MallOrderDao {
@Override
	public List<MallOrder> queryOrderListByUid(Map<String, Integer> params) {
		return mallOrderMapper.queryOrderListByUid(params);
	}
}

7,执行会跳转到mapper层

public interface MallOrderMapper {
	List<MallOrder> queryOrderListByUid(Map<String, Integer> params);
}

8,然后MallMapper会继续找对应的mapper.xml配置文件

<?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.zyy.datasource.mall.mapper.MallOrderMapper">
  <resultMap id="BaseResultMap" type="org.zyy.datasource.mall.entity.MallOrder">
  	<!-- 快递号 -->
    <result column="express_no" jdbcType="VARCHAR" property="expressNo" />
    <!-- 下单时间 -->
    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
  </resultMap>
    <select id="queryOrderListByUid" parameterType="java.lang.Integer" resultMap="BaseResultMap">
  	select * from vol_demand.mall_order
  	where vol_id =#{volId,jdbcType=INTEGER}
  	<if test="orderStatus != 3">
  		and	order_status =#{orderStatus,jdbcType=INTEGER}
  	</if>
  </select>
</mapper>

之后便会跳转到第4步继续执行,执行完毕后会将结果返回到第1步,然后

ResponseEntity.ok(mallOrderService.queryOrderList(params));

便会将数据以JSON的形式返回到页面,同时返回状态码,正常则会返回200,便会回到步骤1中查询判断。

success: (res) => {
					console.log(res);
					if (res.statusCode == 200) {
						this.orderList=res.data.orders;
						console.log(this.orderList);
						uni.hideLoading();
					}
					
				}

如果判断正常。前端根据数据遍历显示

	<!-- 商品列表 -->
		<view class="orderlist">
			<view v-for="(item,index) in orderList"  class="ordermenu"  @tap="redirectToDetail(item)">
				<view>
					<text style="font-size: 30rpx;margin-top: 12rpx;margin-left: 12rpx;">订单详情</text>
					<text class="orderstatus" v-if="item.orderStatus==-3">已拒收</text>
					<text class="orderstatus" v-if="item.orderStatus==-2">待付款</text>
					<text class="orderstatus" v-if="item.orderStatus==0">待发货</text>
					<text class="orderstatus" v-if="item.orderStatus==1">配送中</text>
					<text class="orderstatus" v-if="item.orderStatus==2">已收货</text>
				</view>
				<view class="ptp" v-for="(goodsItem,goodsIndex) in item.mallOrderGoods">
					<view class="shopname" >
						<text>{{goodsItem.orgName}}</text>
						<!-- <text class="orderstatus">{{orderStatusMap['goodsItem.orderStatus']}}</text> -->
					</view>
					<image :src="goodsItem.goodsTitleImg" mode="scaleToFill" class="image-wrapper"></image>
					<view class="goodsprice1" >
						¥{{goodsItem.goodsPrice}}
						<text class="goodsnum1" >×{{goodsItem.goodsNum}}</text>
					</view>
					<text class="titleclamp">{{goodsItem.goodsTitle}}</text>
				</view>
				<view class="itemmoney" style="">合计
					<text class="texthournum">¥{{item.goodsMoney}}</text>
				</view>
			</view>
		</view>

这就是我理解的一个请求的完整流程

  • 12
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值