java开源商城--(11)服务端接口

 如果想编写服务端代码,首先对架构要有一个了解,我们看了架构后,会发现mall-mbg项目和dao层中都有对数据库的操作,顿时有点晕了,到底是该用mapper来操作数据库还是用dao层来操作数据库那,那就要看情况了

如果是简单的针对一个表的操作,mbg中已经为你生成好了方法和mapper xml文件,使用mbg中的类操作数据库就可以了

如果是复杂的自定义查询,可以自己建立dao类文件,并且创建相应的dao xml文件,来操作数据库。

这只是一个约定,不是强制性的。我个人实际上并不赞成分开这种写法。看自己的喜好吧。

下面我们看下怎么创建服务端接口。

1. 在Controller文件中创建一个Controller,写一个方法,访问数据库中的省市区信息,如下

package com.macro.mall.controller;

import com.macro.mall.common.api.CommonResult;
import com.macro.mall.dto.AreaTreeInfo;
import com.macro.mall.model.BsbArea;
import com.macro.mall.model.BsbCity;
import com.macro.mall.model.BsbProvince;
import com.macro.mall.service.BsbAreaService;
import com.macro.mall.service.BsbCityService;
import com.macro.mall.service.BsbProvinceService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.ArrayList;
import java.util.List;

/**
 * 商品管理Controller
 * Created by macro on 2018/4/26.
 */
@Controller
@Api(tags = "BsbAreaController", description = "区域管理")
@RequestMapping("/area")
public class BsbAreaController {
    @Autowired
    private BsbProvinceService bsbProvinceService;

    @Autowired
    private BsbCityService bsbCityService;

    @Autowired
    private BsbAreaService bsbAreaService;

    @ApiOperation("查询树形区域")
    @RequestMapping(value = "/list", method = RequestMethod.POST)
    @ResponseBody
   // @PreAuthorize("hasAuthority('bsb:area:read')")
    public CommonResult<List<AreaTreeInfo>> getList() {
        List<AreaTreeInfo> areaInfoList=new ArrayList<>();

        List<BsbProvince> provinceList=bsbProvinceService.getList();
        List<BsbCity> cityList=bsbCityService.getList();
        List<BsbArea> areaList=bsbAreaService.getList();
        if (provinceList!=null&&provinceList.size()>0)
        {
            for (BsbProvince province:provinceList)
            {
                AreaTreeInfo areaTreeInfo=new AreaTreeInfo();
                areaTreeInfo.setCode(province.getCode());
                areaTreeInfo.setLabel(province.getName());
                List<AreaTreeInfo> childrenCityList=new ArrayList<>();
               if (cityList!=null&&cityList.size()>0)
               {
                   for (BsbCity city:cityList)
                   {
                       if(city.getParentCode().equals(province.getCode()))
                       {
                           List<AreaTreeInfo> childrenAreaList=new ArrayList<>();

                           AreaTreeInfo cityAreaInfo=new AreaTreeInfo();
                           cityAreaInfo.setLabel(city.getCityName());
                           cityAreaInfo.setCode(city.getCityCode());
                            if (areaList!=null&&areaList.size()>0)
                            {
                                for (BsbArea area:areaList)
                                {
                                    if(area.getParentCode().equals(city.getCityCode()))
                                    {
                                        AreaTreeInfo areaInfo=new AreaTreeInfo();
                                        areaInfo.setCode(area.getAreaCode());
                                        areaInfo.setLabel(area.getAreaName());
                                        childrenAreaList.add(areaInfo);
                                    }
                                }
                            }
                           cityAreaInfo.setChildren(childrenAreaList);
                           childrenCityList.add(cityAreaInfo);
                       }
                   }
               }
                areaTreeInfo.setChildren(childrenCityList);
                areaInfoList.add(areaTreeInfo);
            }

        }

        return CommonResult.success(areaInfoList);
    }




}
直接启动项目,然后在浏览中输入http://localhost:8080/swagger-ui.html,就可以测试调用了

2. 前端项目可以直接使用,首先书写调用函数

 

export function fetchArea() {
  return request({
    url:'/area/list',
    method:'post'
  })
}

在created 中调用

 getArea() {
        this.listLoading = true;
        fetchArea().then(response => {
          this.listLoading = false;
          this.data = response.data;
        });
      }

最终效果图如下

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
通用接口实现类LinkJOS 扩展于:public class LinkJOS extends LinkOAuth2(LinkOAuth2 extends JspEasy) 构造函数 LinkJOS(HttpServletRequest request,HttpServletResponse response) 京东JOS接口访问函数 public String link2(String link,String method,Bag sys,Bag apps,String appSecret,String file,String FileField) 作用:访问京东JOS平台的所有接口 参数: String link,京东JOS平台接口访问地址,目前固定为:https://api.jd.com/routerjson String method,向京东JOS平台提交数据时的方法,需要应用级别参数时建议用POST方法,不需要时用GET(参见后边的实例) Bag sys,系统级别参数书包(一般只需在接口参数文件中放入接口方法即可,参见后边的实例) Bag apps,应用级别参数书包(在接口参数文件中放入必须的应用级别参数,若不需要应用级别参数时直接用new Bag(-1)构造一个空书包即可,参见后边的实例) String appSecret,应用证书中的App Secret,前边已经设置,固定用"@{pPage:app_secret}"即可 String file,调用上传文件接口上传文件(如图片)到京东JOS平台时的文件全名(含相对路径,如:images/logo.png),不是调用上传文件接口时为空字符串即可(参见后边的实例) String FileField,调用上传文件接口上传文件(如图片)到京东JOS平台时的字段名,配合前边的参数,不是调用上传文件接口时为空字符串即可(参见后边的实例) 返回为京东JOS平台接口对应的JSON格式的字符串 JSON文本解析方法 public void parseJson(String json) 作用:解析京东JOS平台接口返回的JSON格式的字符串,并根据内容生成N个对应的书包 参数:String json,京东JOS平台接口返回的JSON格式的字符串 根据JSON文本的内容在系统中生成N个书包,根书包名称为j0,下一层的josn文本内容生成的书包名称用上一层的Key放在上一层的书名中,下边用实例说明寻找对应书包的方法: 如店铺信息查询接口jingdong.vender.shop.query返回的json文本为 { "jingdong_vender_shop_query_responce": { "shop_jos_result": { "open_time": "", "shop_id": "", "category_main_name": "", "category_main": "", "vender_id": "", "brief": "", "logo_url": "", "shop_name": "" } } } 找出店铺信息书包名的方法如下 @{j0:jingdong_vender_shop_query_responce} @{@{pPage:bag}:shop_jos_result} 这时候的@{pPage:bag}即为需要的店铺信息书包名 具体用法请阅读下载包中的《京东卖家如何快速开发网店工具软件》
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值