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

网站怎么做备案软件开发下载

网站怎么做备案,软件开发下载,广州h5网站制作,办公空间设计要素删除收获地址 1 删除收获地址-持久层 1.1 规划sql语句 在删除操作之前判断该数据是否存在#xff0c;判断该条地址的归属是否是当前的用户执行删除收货地址的操作 delete from t_address where aid? 如果用户删除的时默认地址#xff0c;将剩下地址的某一条作为默认收货地…删除收获地址 1 删除收获地址-持久层 1.1 规划sql语句 在删除操作之前判断该数据是否存在判断该条地址的归属是否是当前的用户执行删除收货地址的操作 delete from t_address where aid? 如果用户删除的时默认地址将剩下地址的某一条作为默认收货地址自定义规则是最新修改的收货地址信息是默认地址可以通过修改时间进行降序排列 limit 0,1 limit(n-1)*n,pageSize,第一个参数时第几页第二个参数是当前页展示多少条 select * from t_address where uid? order by modified_time DESC limit 0,1 如果用户本身只有一条收货地址删除后就不用进行其他操作了 1.2 编写接口层以及抽象方法 /*** 根据aid删除收货地址数据* param* return*/Integer deleteByAid(Integer aid);/*** 根据用户id查询用户最后一次修改的收货地址数据* param uid 用户id* return 返回值是用户最后一次修改的收货地址数据*/Address findLastModified(Integer uid);1.3 xml文件中进行sql映射 delete iddeleteByAidDELETE FROM t_address WHERE aid#{aid}/delete!-- 查询该用户最新修改地址的信息 第一页一条 --select idfindLastModified resultMapAddressEntityMapselect * from t_address where uid#{uid} order by modified_time desc limit 0,1/select 1.4 进行测试 在AddressMapperTest类中进行测试 Testvoid deleteByAid() {Integer integer addressMapper.deleteByAid(7);System.out.println(integer);}Testpublic void findLastModified() {Address address addressMapper.findLastModified(9);System.out.println(address);} 2 删除收获地址-业务层 2.1 异常规划 在执行删除的时候哦可能会产生未知的删除异常导致数据不能删除成功则抛出DeleteException异常 package com.cy.store.service.ex;/**删除数据时产生的异常*/ public class DeleteException extends ServiceException{public DeleteException() {super();}public DeleteException(String message) {super(message);}public DeleteException(String message, Throwable cause) {super(message, cause);}public DeleteException(Throwable cause) {super(cause);}protected DeleteException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {super(message, cause, enableSuppression, writableStackTrace);} }2.2 service层接口和抽象方法 /*** 删除收货地址* param aid 收货地址id* param uid 用户id* param username 用户名*/void delete(Integer aid, Integer uid, String username);2.3 实现类实现接口重写抽象方法 /*** 删除收货地址* param aid 收货地址id* param uid 用户id* param username 用户名*/Overridepublic void delete(Integer aid, Integer uid, String username) { // 判断收货地址是否存在Address address addressMapper.findByAid(aid);if (addressnull){throw new AddressNotFoundException(收货地址数据不存在);} // 判断用户id与收货地址数据中的用户id是否相同if (!address.getUid().equals(uid)){throw new AccessDeniedException(非法数据访问);} // 删除收货地址操作Integer rows addressMapper.deleteByAid(aid); // 如果删除失败抛出删除异常if (rows!1){throw new DeleteException(删除数据时产生未知的异常);} // 统计用户的收货地址数量如果为0就直接终止程序Integer count addressMapper.countByUid(uid);if (count0){ // 直接终止程序return;} // 如果删除的收货地址是默认收货地址则将用户最新修改的收货地址设置为默认收货地址if (address.getIsDefault()1){ // 查询 用户最新修改的收货地址Address lastModified addressMapper.findLastModified(uid); // 设置为默认值Integer integer addressMapper.updateDefaultByAid(lastModified.getAid(), username, new Date());if (integer!1){throw new UpdateException(更新数据时产生未知的异常);}}}2.4 测试业务 在assressServiceTest中进行测试 Testvoid delete() {addressService.delete(6,9,admin);} 3 删除收获地址-控制层 3.1 处理DeleteException异常 在BaseController中需要处理DeleteException /*** 控制层基类*/ public class BaseController {//操作成功的状态码public static final int OK 200;/*** 全局异常处理器用于捕获并处理业务层抛出的异常。** param e 捕获的异常对象* return 返回封装后的 JsonResult 对象包含状态码和错误信息*/ // 该项目中产生了异常会被统一拦截到此方法中这个方法此时就充当了请求处理方法方法的返回值直接给前端浏览器返回给前端的数据中状态码状态码对应信息数据ExceptionHandler({ServiceException.class, FileUploadException.class})public JsonResultVoid handleException(Throwable e) {// 创建一个 JsonResult 实例并初始化异常消息JsonResultVoid result new JsonResult(e);// 判断异常类型设置对应的状态码和提示信息if (e instanceof UsernameDuplicatedException){// 用户名被占用时返回 400 状态码和相应提示result.setState(4000);result.setMessage(用户名被占用);} else if (e instanceof InsertException){// 插入数据失败时返回 500 状态码和相应提示result.setState(4000);result.setMessage(注册时产生未知的异常);}else if (e instanceof UsernameNotFoundException){result.setState(4001);result.setMessage(用户数据不存在);}else if (e instanceof PasswordNotMatchException){result.setState(4002);result.setMessage(用户密码错误);}else if (e instanceof AddressCountLimitException){result.setState(4003);result.setMessage(收货地址超出上限);}else if (e instanceof AccessDeniedException){result.setState(4004);result.setMessage(收货地址数据非法访问);}else if (e instanceof AddressNotFoundException){result.setState(4005);result.setMessage(收货地址数据不存在);}else if (e instanceof DeleteException){result.setState(5002);result.setMessage(删除数据时产生未知的异常);}else if (e instanceof UpdateException){result.setState(5003);result.setMessage(更新数据时产生未知的异常);} else if (e instanceof FileEmptyException) {result.setState(6000);} else if (e instanceof FileSizeException) {result.setState(6001);} else if (e instanceof FileTypeException) {result.setState(6002);} else if (e instanceof FileStateException) {result.setState(6003);} else if (e instanceof FileUploadIOException) {result.setState(6004);}// 返回最终的响应结果return result;}/*** 从Session中获取当前登录用户的uid* * param session HttpSession对象用于获取会话中的用户ID* return 当前登录用户的uid* * protected 表示该方法只能被同一个包内的类或子类访问。* final 表示该方法不能被子类重写。*/protected final Integer getUidFromSession(HttpSession session) {// 从Session中获取uid// 从会话中获取uid属性并转换为整数类型返回return Integer.valueOf(session.getAttribute(uid).toString());}/*** 从Session中获取当前登录用户的用户名* param session HttpSession对象用于获取会话中的用户名* return 当前登录用户的用户名*/protected final String getUsernameFromSession(HttpSession session) {// 从Session中获取当前登录的用户名return session.getAttribute(username).toString();}}3.2 设计请求 请求路径/address/delete/{aid} 请求方式POST 请求参数Integer aid,HttpSession session 返回值类型JsonResultVoid 3.3 编写AddressController类代码实现请求 /*** 删除收货地址* param aid 收货地址id* param session 当前登录的用户的会话* return*/RequestMapping(/delete/{aid})public JsonResultVoid delete(PathVariable(aid) Integer aid, HttpSession session){Integer uid getUidFromSession(session);String username getUsernameFromSession(session);addressService.delete(aid,uid,username);return new JsonResult(OK);} 4 Address.html前端页面 4.1 给删除按钮绑定点击事件 4.2 编写deleteById()函数方法发送请求 function deleteById(aid){$.ajax({url: /addresses/delete/ aid,type: POST,dataType: json,success: function (json) {if (json.state 200) {alert(删除收货地址成功)// 将列表的tr清空替代成新的tr// 重新调用获取列表的方法showAddressList();}else{alert(删除地址失败)}},error: function (xhr) {alert(删除收货地址时产生未知的异常xhr.message)}})}; 但是可能会出现这个问题 Uncaught SyntaxError: Invalid or unexpected token (at address.html:1:12) 在检查代码和业务逻辑没有问题后发现可能是 #{aid} 是占位符在后续被替换为真实值。但如果替换失败或未正确处理最终渲染出来的 HTML 可能会是 a οnclicksetDefault() classbtn btn-xs add-def btn-default设为默认/a 此时 setDefault() 调用缺少参数如果函数定义要求必须传参如 function setDefault(aid)当点击按钮时就会因为参数缺失导致 JS 报错甚至出现 Invalid or unexpected token 这类错误  解决方法 let tr tr\n td#{tag}/td\n td#{name}/td\n td#{address}/td\n td#{phone}/td\n tda classbtn btn-xs btn-infospan classfa fa-edit/span 修改/a/td\n tda onclickdeleteById(#{aid}) classbtn btn-xs add-del btn-infospan classfa fa-trash-o/span 删除/a/td\n tda onclicksetDefault(#{aid}) classbtn btn-xs add-def btn-default设为默认/a/td\n /tr;tr tr.replace(#{tag}, list[i].tag).replace(#{name}, list[i].name).replace(#{address}, list[i].address).replace(#{phone}, list[i].phone).replace(/#{aid}/g, list[i].aid); // 注意这里使用全局替换使用 .replace(/#{aid}/g, ...) 可以确保所有匹配的 #{aid} 都被替换 重启项目运行就没有问题了✌ 热销排行 1. 创建数据库表 CREATE TABLE t_product (id int(20) NOT NULL COMMENT 商品id,category_id int(20) DEFAULT NULL COMMENT 分类id,item_type varchar(100) DEFAULT NULL COMMENT 商品系列,title varchar(100) DEFAULT NULL COMMENT 商品标题,sell_point varchar(150) DEFAULT NULL COMMENT 商品卖点,price bigint(20) DEFAULT NULL COMMENT 商品单价,num int(10) DEFAULT NULL COMMENT 库存数量,image varchar(500) DEFAULT NULL COMMENT 图片路径,status int(1) DEFAULT 1 COMMENT 商品状态 1上架 2下架 3删除,priority int(10) DEFAULT NULL COMMENT 显示优先级,created_time datetime DEFAULT NULL COMMENT 创建时间,modified_time datetime DEFAULT NULL COMMENT 最后修改时间,created_user varchar(50) DEFAULT NULL COMMENT 创建人,modified_user varchar(50) DEFAULT NULL COMMENT 最后修改人,PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8;2. 创建实体类 package com.cy.store.entity;import lombok.Data;/** 商品数据的实体类 */ Data public class Product extends BaseEntity {private Integer id;private Integer categoryId;private String itemType;private String title;private String sellPoint;private Long price;private Integer num;private String image;private Integer status;private Integer priority; } 3. 持久层 3.1 编写sql priority根据优先级进行排序降序 select * from t_product where status1 order by priority desc limit 0,4 3.2 编写mapper接口以及抽象方法 创建ProductMapper 接口编写抽象方法返回值是一个集合 Mapper public interface ProductMapper {/*** 查询热销商品* return 热销商品列表*/ListProduct findHotList(); }3.3 编写sql映射 ?xml version1.0 encodingUTF-8 ? !DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.cy.store.mapper.ProductMapperresultMap idProductEntityMap typecom.cy.store.entity.Productid columnid propertyid/result columncategory_id propertycategoryId/result columnitem_type propertyitemType/result columnsell_point propertysellPoint/result columncreated_user propertycreatedUser/result columncreated_time propertycreatedTime/result columnmodified_user propertymodifiedUser/result columnmodified_time propertymodifiedTime//resultMap!-- 查询热销商品列表 --!-- 返回值为商品列表包含id,categoryId,itemType,sellPoint等字段 --!-- SQL说明从t_product表中查询状态为1上架的商品按优先级降序排列取前4条记录 --select idfindHotList resultMapProductEntityMapselect * from t_product where status1 order by priority desc limit 0,4/select /mapper 4. 业务层 4.1 service接口编写抽象方法 public interface ProductService {/** 查询热销商品 */ListProduct findHotList(); }4.2 实现类实现接口重写抽象方法 Service public class ProductServiceImpl implements ProductService {Autowiredprivate ProductMapper productMapper;/*** 查询热销商品列表* return 热销商品列表*/Overridepublic ListProduct findHotList() {ListProduct list productMapper.findHotList(); // 将前端用户到的数据设为null减小体量for (Product product : list) {product.setPriority(null);product.setCreatedUser(null);product.setCreatedTime(null);product.setModifiedUser(null);product.setModifiedTime(null);}return list;}} 5. controller控制层 5.1 设计请求 请求路径/products/hotList 请求方式GET 响应结果JsonResultListProduct 5.2 将商品的页面进行白名单放行 在LoginInterceptorConfigure类中配置放行白名单 5.3 PruductController类实现请求 package com.cy.store.controller;import com.cy.store.entity.Product; import com.cy.store.service.ProductService; import com.cy.store.util.JsonResult; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;import java.util.List;RestController RequestMapping(/products) public class ProductController extends BaseController{Autowiredprivate ProductService productService;RequestMapping(/hotList)public JsonResultListProduct getHotList(){ListProduct data productService.findHotList();return new JsonResult(OK,data);} }6. 前端页面 当页面展示时就调用方法获取热门商品列表信息进行渲染hrefproduct.html?id#{id} 将id拼接到href上当点击商品信息时跳转到对应的商品详情页/#{image}/g将所有的属性进行替换 script typetext/javascript$(document).ready(function() {showHotList();});function showHotList() {$(#hot-list).empty();$.ajax({url: /products/hotList,type: GET,success: function(json) {var list json.data;for (var i 0; i list.length; i) {console.log(list[i].title);//调试用var html div classcol-md-12 div classcol-md-7 text-row-2a hrefproduct.html?id#{id}#{title}/a/div div classcol-md-2¥#{price}/div div classcol-md-3img src..#{image}collect.png classimg-responsive //div /div;html html.replace(/#{id}/g, list[i].id);html html.replace(/#{title}/g, list[i].title);html html.replace(/#{price}/g, list[i].price);html html.replace(/#{image}/g, list[i].image);$(#hot-list).append(html);}}});}/script
http://www.zqtcl.cn/news/804496/

相关文章:

  • 怎么查网站空间wordpress快速入门
  • 长沙 网站运营德国服务器网站
  • 有动效网站建网站的书籍
  • 网站模版更新公告2023年ppt模板免费
  • 广饶网站建设北京建设工程监督网站
  • 长沙网站建设电话郑州网站空间
  • 做网站是怎样赚钱的网页制作工具按其制作方式有
  • 网站地图在哪里展现电子商务网站需要做那些准备工作
  • 深圳网站设计收费标准中端网站建设公司
  • 有关wordpress教学的网站wordpress返回旧版
  • php做网站弊端wordpress强大播放器
  • 怎么直接做免费网站wordpress如何自建站
  • 中国建设银行建银购网站金堂企业网站建设
  • 手机微网站开发的目的和意义温州公司网站开发
  • 除了外链 还有什么办法使网站提高排名网站建设珠海 新盈科技
  • 几分钟弄清楚php做网站中国风景摄影网
  • 卡片式网站网页设计公司的市场评估
  • 网站开发的感想wordpress水煮鱼
  • 网站开发入门培训机构自豪地采用wordpress更改
  • 手机网站来几个最近的国际新闻大事件
  • 重庆网站开发设计公司电话资源网站优化排名
  • 国土分局网站建设方案外贸seo网站
  • 营销型网站建设易网拓烟台h5网站建设公司
  • PHP网站开发都需要学什么中介网站模板
  • 网站建设与维护模板官方网站建设费用应入什么科目
  • 网站建设企业关键词seo关键词库
  • 美容院网站源码wordpress scandir
  • 长春电商网站建设报价北京创意设计协会网站
  • 企业3合1网站建设公司加强政协网站建设
  • 专业做互联网招聘的网站有哪些内容百度搜索引擎推广收费标准