当前位置: 首页 > news >正文

网站开发的软件环境有哪些个人网站备案号可以做企业网站吗

网站开发的软件环境有哪些,个人网站备案号可以做企业网站吗,网站怎么做下载,wordpress主机模板商品品牌的查询 上面就是我们需要根据分类id去找品牌 假设我们现在拿到的是 商品的分类id#xff0c;我们需要根据分类id查询出对应的品牌即可 下面我们拿到上面的接口#xff0c;直接撸代码 这个是和品牌相关联的操作#xff0c;因为先去看一下BrandMapper,这个mapper是… 商品品牌的查询 上面就是我们需要根据分类id去找品牌 假设我们现在拿到的是 商品的分类id我们需要根据分类id查询出对应的品牌即可 下面我们拿到上面的接口直接撸代码 这个是和品牌相关联的操作因为先去看一下BrandMapper,这个mapper是已经存在了那我们现在去写Controller层 那我们要去完成service层BrandService 下面我们去BrandMapper里面编写sql 再去编写这个sql之前我们来思考一下这个应该是一个什么样的sql语句我们的目的是查出当前类拥有的所有品牌 简单说一下上面查询什么意思先是内连接找出分类与品牌关联的所有数据然后在用一个where ba把我们需要的分类id对应的品牌拿出来这些品牌肯定不能等于NULL,这也是为什么不能使用左连接与右连接的根本原因 那我们去把这条语句写到通用mapper的方法上面 商品描述 商品的规格参数 这里的想表达的是什么意思其实就是当我们添加完了这个商品的最后我们要添上我们新添加的商品的参数啊但是这些参数是什么我们需要通过关联分类id去找这个参数 一个分类下面都多个之前写的tb_category表与tb_spec_param表这两张表是一个1对多的关系 下面我们要去改造一下这个查询规格参数接口 这个都是在参数的相关控制器里面 现在我们把这个代码给重构一下 下面我们去重构SpecificationService里面的代码 好了上面重新启动一下这个微服务模块测试 我们去测试一下这个接口 原因在于cid被配置到gid里面了我们这里cid等于空自然查不到 修改测试 下面说一下sku页面信息的处理 它是spu下面每个商品的不同特征 当我们填写了一些数据之后会在下面给我们生成一个表格比如我们可以填写更多的颜色更多的内存以及更多的机身存储 当我们填写完上面的信息之后下方就会生成一个sku的表格 我们去看一下保存商品信息的前端 里面直接给我们绑定了一个提交事件 当我们点击保存的时候下面我们就能看到请求路径请求方式请求参数与返回值 我们看一下请求参数这里是向服务器发送请求很明显这里也是一个表单请求 下面我们来对这个表单请求进行一个详细的说明 这里的操作很明显就是向数据库里面插入各种表的信息所以一般没有返回值我们可以去前端看一下 上面也就分析的差不多了下面我们去后台实现页面 首先我们需要的实体类spu有了sku没有需要添加spuDetail也没有这个对象会封装spu里面一些比较大的信息需要添加stock库存对象也没有 我们去数据库里面看了一下本身来说sku里面是没有stock这个字段的而这个字段是保存在tb_stock里面又从某种情况来说sku表与stock表是一张表 另外还需要注意的是这个整体的大表单数据是向spu这张表里面做的插入所以我们必须给spu进行属性的扩展扩展一些spu本身没有的属性但是客户端又会传给我们的数据 这个扩展可以放到SpuBo里面这样可以在不改变原对象的基础之上进行属性的扩展下面我们先去扩展SpuBo 扩展的属性是1.商品的详情对象 2.一个List集合用于封装多个sku商品过来 下面我们就要去实现SpuDetail与Sku这个类这两个类在数据库都有实体表与之对应 先来扩展Sku package com.leyou.item.pojo;import lombok.Data;import javax.persistence.*; import java.util.Date;Data Table(name tb_sku) public class Sku {IdGeneratedValue(strategy GenerationType.IDENTITY)private Long id;private Long spuId;private String images;private Long price;private String ownSpec;//商品特殊规格键值对{4:白色,12:3GB,13:16GB}//这里应该是在展示主体商品的时候//我们要展商品的特有属性值private String indexes;//商品特殊规格下标0_0_0这个是与spu表里面special_spec值对应private Boolean enable;//是否有效逻辑删除用private Date createTime;//创建时间private Date lastUpdateTime;//最后的修改时间//注意在我们请求体里面还有一个库存字段//但是这个字段不在我们的sku表里面//所以这里做映射的时候必须忽略这个字段Transientprivate Integer stock;//库存 }上面我们有个库存字段那么我们要把库存信息存入库存表里面 Stock 下面还要扩展一个在数据库中tb_spu_detail对应的类 SpuDetail(这个是主表对应的类我们放在pojo包里面)它不想SpuBo一样是中间扩展出来的类 下面开始写后台代码 这个是对商品的操作所以这里是在商品的控制器页面进行操作 GoodsController 下面我们去GoodsService里面实现上面的saveGoods方法 GoodsService 再去写这个GoodsService方法之前先去写上我们需要的几个Mapper 下面贴上完成的service代码 GoodsService package com.leyou.item.service;import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import com.leyou.common.pojo.PageResult; import com.leyou.item.bo.SpuBo; import com.leyou.item.mapper.*; import com.leyou.item.pojo.Brand; import com.leyou.item.pojo.Spu; import com.leyou.item.pojo.SpuDetail; import com.leyou.item.pojo.Stock; import org.apache.commons.lang.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import tk.mybatis.mapper.entity.Example;import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.stream.Collectors;Service public class GoodsService {//先不考虑引入什么样的mapper//要查spu所以要引入spu的mapper对象Autowiredprivate SpuMapper spuMapper;//我们在想找分类字段的时候我们必须用到CategoryService里面相应的通过id找到分类的方法Autowiredprivate CategoryService categoryService;//我们在考虑通过spu里面的商品id去找直接引入mapper一键搞定Autowiredprivate BrandMapper brandMapper;//插入SpuDetail的mapperAutowiredprivate SpuDetailMapper spuDetailMapper;//插入sku的mapperAutowiredprivate SkuMapper skuMapper;//插入stock的mapperAutowiredprivate StockMapper stockMapper;public PageResultSpuBo querySpuByPageAndSort(Integer page, Integer rows, String key, Boolean saleable) {//这里是查询spu//返回一个带有分页的结果集PageHelper.startPage(page,rows);//这个分页会拼到后面的所有sql语句里面//我们利用通用Mapper来查我们要设置通用条件Example example new Example(Spu.class);Example.Criteria criteria example.createCriteria();//查询上下架if (saleable ! null) {criteria.orEqualTo(saleable,saleable);}//模糊查询如果有key的话if (StringUtils.isNotBlank(key)) {criteria.andLike(title,% key %);}//下面通过spuMapper查Spu对象这个需要一个集合类型的对象//通过上面的PageSpu pageInfo (PageSpu) spuMapper.selectByExample(example);//上面是得到了一个spu,我们的目的是得到一个ListSpuBoListSpuBo list pageInfo.getResult().stream().map(spu - {//处理每一个查寻到的spu对象//我们要把spu对象变成SpuBo对象SpuBo spuBo new SpuBo();//每个对象一进来都会实例一个这个对象//我们把每一个spu的属性给拷贝一下BeanUtils.copyProperties(spu,spuBo);//下面考虑一下问题1.我们的cname怎么取也就是这个spu关联的分类//怎么取是不是要通过spu里面的cid来取这是个ListCategory//我们要把它变成字符串集合对象打印//这个是category表里面的操作调用categoryService里面的具体方法//这里面针对这个品牌来讲是三级目录ListString names categoryService.queryNameByIds(Arrays.asList(spu.getCid1(),spu.getCid2(),spu.getCid3()));//上面我们就先去把这个queryNameByIds这个方法给写出来//上面就查询到了商品的所属分类//把分类赋值给Bo对象spuBo.setCname(StringUtils.join(names,/));//格式化一下//上面查了分类下面就要去查找品牌//品牌的查找我们就考虑要引入品牌的servcie还是mapper//考虑到这里如果mapper能一下给我们找出来就直接mapper//如果不能一下找出来还要经过业务处理那么就走service//这里我们通过Brand的Mapper中的主键查询就能找出来并且没有业务转换直接引入mapperBrand brand brandMapper.selectByPrimaryKey(spu.getBrandId());spuBo.setBname(brand.getName());return spuBo;}).collect(Collectors.toList());//变成了ListspuBo这样一个集合对象//注意要给前端返回一个分页对象并把结果给带过去//现在就是上面的结果集数据全部都封装到了spuBo这个对象里面return new PageResult(pageInfo.getTotal(),list);}//新增商品//这里注意我们需要对三张表进行数据插入//1.spu表与spu_detail表(这两张表本质上来说是一张表)//2.拿到spuId在插入sku表//3.拿到skuid之后在插入stock表更新库存Transactional//注意对事务进行控制public void saveGoods(SpuBo spuBo) {//所有是信息全都给我们封装到了SpuBo这个对象里面//1.先来新增spu表//我说了有些字段没有设置//必须我们自己来进行设置spuBo.setId(null);spuBo.setId(null);spuBo.setSaleable(true);spuBo.setValid(true);spuBo.setCreateTime(new Date());spuBo.setLastUpdateTime(spuBo.getCreateTime());//利用spu的通用mapper进行数据库插入就行了//对于我们不需要插入的字段我们已经做了忽略处理spuMapper.insertSelective(spuBo);//下面又要新增spuDetail这张表//先来获取这样一个对象信息//因为全都是封装到SpuBo里面嘛所以我们//从这个对象里面获取SpuDetail spuDeatil spuBo.getSpuDetail();//在插入之前我们考虑一下有没有没有封装的字段//spuid是需要我们去封装的//这种张表本质上来说就是spu表spuDeatil.setSpuId(spuBo.getId());//然后在把这个对象的信息插入到spu_detail这张表里面spuDetailMapper.insertSelective(spuDeatil);//下面我们要插入sku表与库存表//这里直接做成一个函数saveSkuAndStock(spuBo);}private void saveSkuAndStock(SpuBo spuBo) {//这里利用了一个函数式接口然后用了lambda表达式处理spuBo.getSkus().forEach(sku - {//新增sku//还是那句话有些字段没有处理的要处理上sku.setSpuId(spuBo.getId());sku.setCreateTime(new Date());sku.setLastUpdateTime(sku.getCreateTime());skuMapper.insertSelective(sku);//然后新增库存这张表//本质来说这两张表是同一张表Stock stock new Stock();//利用mapper插入需要一个对象stock.setSkuId(sku.getId());stock.setStock(sku.getStock());stockMapper.insertSelective(stock);});}}下面重启商品微服务然后去测试一下 保存成功就不展示了 我们可以看到数据库里面是插进去了 下面我们去做商品修改部分 看一下对应的方法 下面我们要编写查询SpuDetail接口 这个spu也是针对于商品来说的先来看GoodsController里面的代码 GoodsService 下面看一下这个接口能用不记得重新启动商品微服务 测试了一下接口看到是有数据的 下面我们要去查询sku信息 下面我们要去实现service里面的方法 下面重启这个微服务测试一下接口 下面我们去页面看一下页面有没有被回显 这里之前出现了一个问题这个位置显示不出来 查看静态源代码 提示这个函数没有被加载进来 原因在于之前我们没有在http.js文件里面设置好下面的函数 这个函数的作用是 下面可以看到数据回显了 这样我们可以去修改这些数据然后点击保存就会数据插入到相应的表里面这里上面分析过是一个大的SpuBo的提交表单 但是现在有一个问题是这些数据是会向数据库里面插入但是我们原来的数据应该被删除然后在覆盖 另外需要注意的一点是我们相同的请求路径采用不同的请求方式走的路线也不一样 比如 这里发送的是put请求主要是用于更新或者替换服务器上的资源 点击保存的时候我们发现服务器拒绝了我们的请求 下面我们去把这些页面补上 下面去写GoodsService里面的方法   package com.leyou.item.service;import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import com.leyou.common.pojo.PageResult; import com.leyou.item.bo.SpuBo; import com.leyou.item.mapper.*; import com.leyou.item.pojo.*; import org.apache.commons.lang.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import tk.mybatis.mapper.entity.Example;import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.stream.Collectors;Service public class GoodsService {//先不考虑引入什么样的mapper//要查spu所以要引入spu的mapper对象Autowiredprivate SpuMapper spuMapper;//我们在想找分类字段的时候我们必须用到CategoryService里面相应的通过id找到分类的方法Autowiredprivate CategoryService categoryService;//我们在考虑通过spu里面的商品id去找直接引入mapper一键搞定Autowiredprivate BrandMapper brandMapper;//插入SpuDetail的mapperAutowiredprivate SpuDetailMapper spuDetailMapper;//插入sku的mapperAutowiredprivate SkuMapper skuMapper;//插入stock的mapperAutowiredprivate StockMapper stockMapper;public PageResultSpuBo querySpuByPageAndSort(Integer page, Integer rows, String key, Boolean saleable) {//这里是查询spu//返回一个带有分页的结果集PageHelper.startPage(page,rows);//这个分页会拼到后面的所有sql语句里面//我们利用通用Mapper来查我们要设置通用条件Example example new Example(Spu.class);Example.Criteria criteria example.createCriteria();//查询上下架if (saleable ! null) {criteria.orEqualTo(saleable,saleable);}//模糊查询如果有key的话if (StringUtils.isNotBlank(key)) {criteria.andLike(title,% key %);}//下面通过spuMapper查Spu对象这个需要一个集合类型的对象//通过上面的PageSpu pageInfo (PageSpu) spuMapper.selectByExample(example);//上面是得到了一个spu,我们的目的是得到一个ListSpuBoListSpuBo list pageInfo.getResult().stream().map(spu - {//处理每一个查寻到的spu对象//我们要把spu对象变成SpuBo对象SpuBo spuBo new SpuBo();//每个对象一进来都会实例一个这个对象//我们把每一个spu的属性给拷贝一下BeanUtils.copyProperties(spu,spuBo);//下面考虑一下问题1.我们的cname怎么取也就是这个spu关联的分类//怎么取是不是要通过spu里面的cid来取这是个ListCategory//我们要把它变成字符串集合对象打印//这个是category表里面的操作调用categoryService里面的具体方法//这里面针对这个品牌来讲是三级目录ListString names categoryService.queryNameByIds(Arrays.asList(spu.getCid1(),spu.getCid2(),spu.getCid3()));//上面我们就先去把这个queryNameByIds这个方法给写出来//上面就查询到了商品的所属分类//把分类赋值给Bo对象spuBo.setCname(StringUtils.join(names,/));//格式化一下//上面查了分类下面就要去查找品牌//品牌的查找我们就考虑要引入品牌的servcie还是mapper//考虑到这里如果mapper能一下给我们找出来就直接mapper//如果不能一下找出来还要经过业务处理那么就走service//这里我们通过Brand的Mapper中的主键查询就能找出来并且没有业务转换直接引入mapperBrand brand brandMapper.selectByPrimaryKey(spu.getBrandId());spuBo.setBname(brand.getName());return spuBo;}).collect(Collectors.toList());//变成了ListspuBo这样一个集合对象//注意要给前端返回一个分页对象并把结果给带过去//现在就是上面的结果集数据全部都封装到了spuBo这个对象里面return new PageResult(pageInfo.getTotal(),list);}//新增商品//这里注意我们需要对三张表进行数据插入//1.spu表与spu_detail表(这两张表本质上来说是一张表)//2.拿到spuId在插入sku表//3.拿到skuid之后在插入stock表更新库存Transactional//注意对事务进行控制public void saveGoods(SpuBo spuBo) {//所有是信息全都给我们封装到了SpuBo这个对象里面//1.先来新增spu表//我说了有些字段没有设置//必须我们自己来进行设置spuBo.setId(null);spuBo.setSaleable(true);spuBo.setValid(true);spuBo.setCreateTime(new Date());spuBo.setLastUpdateTime(spuBo.getCreateTime());//利用spu的通用mapper进行数据库插入就行了//对于我们不需要插入的字段我们已经做了忽略处理spuMapper.insertSelective(spuBo);//下面又要新增spuDetail这张表//先来获取这样一个对象信息//因为全都是封装到SpuBo里面嘛所以我们//从这个对象里面获取SpuDetail spuDeatil spuBo.getSpuDetail();//在插入之前我们考虑一下有没有没有封装的字段//spuid是需要我们去封装的//这种张表本质上来说就是spu表spuDeatil.setSpuId(spuBo.getId());//然后在把这个对象的信息插入到spu_detail这张表里面spuDetailMapper.insertSelective(spuDeatil);//下面我们要插入sku表与库存表//这里直接做成一个函数saveSkuAndStock(spuBo);}private void saveSkuAndStock(SpuBo spuBo) {//这里利用了一个函数式接口然后用了lambda表达式处理spuBo.getSkus().forEach(sku - {//新增sku//还是那句话有些字段没有处理的要处理上sku.setSpuId(spuBo.getId());sku.setCreateTime(new Date());sku.setLastUpdateTime(sku.getCreateTime());skuMapper.insertSelective(sku);//然后新增库存这张表//本质来说这两张表是同一张表Stock stock new Stock();//利用mapper插入需要一个对象stock.setSkuId(sku.getId());stock.setStock(sku.getStock());stockMapper.insertSelective(stock);});}public SpuDetail querySpuDetailBySpuId(Long spuId) {return spuDetailMapper.selectByPrimaryKey(spuId);}//我们需要注意的是//为了方便回显我们需要把stock里面的库存//也设置给Sku这个对象public ListSku querySkusBySpuId(Long spuId) {Sku sku new Sku();sku.setSpuId(spuId);ListSku skus skuMapper.select(sku);//把每一个sku的库存给设置进去//这个库存信息存放在Stock表里面//因此我们需要查出stock这个对象skus.forEach(s - {Stock stock stockMapper.selectByPrimaryKey(s.getId());s.setStock(stock.getStock());});return skus;}Transactionalpublic void updateGoods(SpuBo spuBo) {//先查询以前的skuListSku skus querySkusBySpuId(spuBo.getId());//如果以前的sku存在我们需要先删除//这里的思想就是先删除在添加if (!CollectionUtils.isEmpty(skus)) {//需要删除sku先关的库存//那么这里会有很多sku的id关联的库存我们通过stream转变成一个List集合不就好了//这里也就是Listsku-stream(sku)-stream(sku.getId())-Listint skuid的集合ListLong ids skus.stream().map(s - s.getId()).collect(Collectors.toList());//上面有了id的集合下面就可以去删除以前的库存Example example new Example(Stock.class);example.createCriteria().andIn(skuId,ids);//类中与数据库关联的字段stockMapper.deleteByExample(example);//上面删除了库存再删除以前的skuSku record new Sku();record.setSpuId(spuBo.getId());skuMapper.delete(record);//根据sku里面关联的spuid进行删除与当前spu关联的sku都会被删除//这里上面的思想是这样的点击一个spu,后面会设置出多个sku商品//我们先全部删除然后在插入}//下面我们新增修改后的sku和库存saveSkuAndStock(spuBo);//这里是一个新的spuBo过来//下面去更新一下spu信息这张表// 更新spuspuBo.setLastUpdateTime(new Date());spuBo.setCreateTime(null);spuBo.setValid(null);spuBo.setSaleable(null);spuMapper.updateByPrimaryKeySelective(spuBo);//上面使用了默认值的地方不会更新//还要更新一下spu详情//这些数据都是要插入到数据库里面的只是我们从后对象当中拿而已spuDetailMapper.updateByPrimaryKeySelective(spuBo.getSpuDetail());}}重启商品微服务测试自行测试 下面我们要开始搭建前台系统 这个放到资料里面 好了先说到这祝大家早安午安晚安
http://wiki.neutronadmin.com/news/282941/

相关文章:

  • 手机网站推荐一个做seo推广做网站有用吗
  • 常州模板建站平台互联网营销是做什么
  • wordpress多站点搭建网站后台是怎样制作
  • 南宁有做网站的公司吗网站首页有哪些内容
  • 网站用户 分析电商平台推广方案
  • 教育主管部门建设的专题资源网站有哪些网站建设公司上线
  • 福田网站建设运营费用wordpress仿小米主题
  • 有关网站空间正确的说法是菏泽网站开发
  • 网站小视频怎么做代理wordpress4.8 php版本
  • .net 网站域账号自动验证码推广引流吸引人的标题
  • 深圳网站建设公司地址电商网站建设应用
  • 阳江招聘网站哪里最好找工作高负载php网站开发
  • 网站搜索排名高怎么做内蒙古城乡住房建设厅网站
  • 一条龙网站建设哪家专业地产平面网站
  • 月熊志网站巴中市做网站
  • 网络直播网站建设在线制作gif表情包生成器
  • 宁波建设网站制作域名绑定ip网站吗
  • 网站建设禁止谷歌收录的办法手机网站标准
  • 深圳品牌网站设计推广苏州网站建设师
  • 广州网站建设菲利宾网站建设需求分析酒类
  • 知乎网站建设wordpress后台登陆美化
  • 大丰网站建设企业网络营销的模式有哪些
  • 自己做的网站为什么访问不永康公司做网站
  • 天津做网站费用私人网站设计公司公司
  • 产业园门户网站建设方案网站可以做信息抓取吗
  • 超实用网站如何备份网站数据库
  • 打开浏览器的网站网络服务协议
  • 抚州网站开发机构嵌入式软件开发薪资
  • 届毕业设计代做网站软件开发5个过程
  • 网上写作最好的网站贝壳房源网