0
点赞
收藏
分享

微信扫一扫

基于javaweb+SSM在线商城购物商城美妆商城(前台、后台)

一点读书 2022-04-14 阅读 48
javamysql

开发工具:eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

								   <c:if test="${shopCar.article.discount != 0.0}">
								        折后价:<span class="discountPrice"><fmt:formatNumber value="${shopCar.article.discountPrice}" pattern="0.00"></fmt:formatNumber></span>
								  </c:if>
								</td>
								<td><span class="glyphicon glyphicon-minus" onclick="minuFun('${shopCar.article.id}')"></span>
									
									<input id="${shopCar.article.id}" value="${shopCar.buynum}"
									style="width: 40px; text-align: center;" onblur="validNum(this,'${shopCar.article.id}')"/> 
									
									<span class="glyphicon glyphicon-plus"
									onclick="addFun('${shopCar.article.id}')"></span>
								</td>
								<td><fmt:formatNumber value="${shopCar.article.discountPrice* shopCar.buynum}" pattern="0.00"></fmt:formatNumber></td>
								<td><a href="${pageContext.request.contextPath}/shopCar/deleteShopCar.do?id=${shopCar.article.id}">删除</a>
									<a>收藏</a></td>
							</tr>
						</c:forEach>
						

					
						</tbody>
					</table>
				</div>
			</div>
			<!-- 内容主体结束 -->
		</div>
		<!--/row-->
        <form action="${pageContext.request.contextPath}/order/checkOrder.do" method="post" id="form">
            <!-- 通过隐藏输入框 将订单相关信息传递至后台 -->
	@Autowired
	private OrderMapper orderMapper;
	
	@Autowired
	private OrderItemMapper orderItemMapper;

	/* (non-Javadoc)
	 * 提交订单
	 * #1_2_216.0#5_1_158.4   == >  1_2_216.0#5_1_158.4
	 */
	@Override
	public Order orderSubmit(String orderInfo) {
		// TODO Auto-generated method stub
		//创建订单对象
		Order order = new Order();
		try {
			String[]  orderInfos = orderInfo.substring(1).split("#");
			
			
			//指定下单时间
			order.setCreateDate(new Date());
	<nav class="navbar navbar-fixed-top navbar-inverse" role="navigation">
		<div class="container">
			<div class="navbar-header">
				<button type="button" class="navbar-toggle collapsed"
					data-toggle="collapse" data-target="#navbar" aria-expanded="false"
					aria-controls="navbar">
					<span class="sr-only">显示导航条</span> <span class="icon-bar"></span> <span
						class="icon-bar"></span> <span class="icon-bar"></span>
				</button>
				<a class="navbar-brand" href="${ctx}/article/index">美妆商城</a>
			</div>
			<div id="navbar" class="collapse navbar-collapse">
				<ul class="nav navbar-nav">
					<li class="active"><a href="${ctx}/article/index">首页</a></li>
					<li><a href="${ctx}/shopCar/showShopCar.do">购物车</a></li>
					<li><a href="${ctx}/order/showOrder.do">我的订单</a></li>
				</ul>

				<ul class="nav navbar-nav navbar-right">
					<c:choose>
						<c:when test="${not empty session_user}">
						  	<li><a href="#"> <span style='color: red;'></span>
							</a></li>
							<li><a href="#">欢迎[<font color="red">${session_user.name}</font>]访问!</a></li>
							<li><a href="${ctx}/user/logout">退出</a></li>
							<li><a href="${ctx}/register">免费注册</a></li>
						</c:when>


	/**
	 * @return the pageSize
	 */
	public int getPageSize() {
		return pageSize;
	}


	/**
	 * @param pageSize the pageSize to set
	 */
	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}


	/**
	 * @return the totalNum
	 */
	public int getTotalNum() {
		return totalNum;
        String sign = WXPayUtil.generateSignature(mp, ConfigConstant.key);

        StringBuilder sb = new StringBuilder();
        sb.append("<xml>");
        sb.append("<appid>" + mp.get("appid") + "</appid>");
        sb.append("<mch_id><![CDATA[" + mp.get("mch_id") + "]]></mch_id>");
        sb.append("<out_trade_no><![CDATA[" + mp.get("out_trade_no") + "]]></out_trade_no>");
        sb.append("<nonce_str>" + mp.get("nonce_str") + "</nonce_str>");
        sb.append("<sign><![CDATA[" + sign + "]]></sign>");
        sb.append("</xml>");

        String url = "https://api.mch.weixin.qq.com/pay/orderquery";
        String str = UrlPreUtils.post(url, sb.toString());

        Map<String, String> retmap = new HashMap<String, String>();
        try {
        	//与微信交互并获取信息
            retmap = WXPayUtil.xmlToMap(str);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return retmap;
							<li>常见问题</li>
							<li>购物指南</li>
						</ul>

					</div>
					<div class="yui3-u-1-6">
						<h4>配送方式</h4>
						<ul class="unstyled">
							<li>上门自提</li>
							<li>211限时达</li>
							<li>配送服务查询</li>
							<li>配送费收取标准</li>
							<li>海外配送</li>
						</ul>
					</div>
					<div class="yui3-u-1-6">
						<h4>支付方式</h4>
						<ul class="unstyled">
							<li>货到付款</li>
							<li>在线支付</li>
							<li>分期付款</li>
							<li>邮局汇款</li>
							<li>公司转账</li>
						</ul>
					</div>
					<div class="yui3-u-1-6">
						<h4>售后服务</h4>
						<ul class="unstyled">
							<li>售后政策</li>
	   //获取库存数
	   var kucun = parseInt("${article.storage}")
	   //重新给输入框中的value赋值
		obj.value = (num + 1) > kucun ?  kucun : num + 1; 
	   
		//发送请求更新购物车中购买的数量 
		window.location = "${pageContext.request.contextPath}/shopCar/updateShopcar.do?id="+articleId+"&number="+obj.value;
		   
}

 //为购买的数量对应的输入框  绑定失去焦点事件
 function validNum(obj,articleId){
 	//用户输入的数字 必须为 大于等于1的正整数,并且不能大于库存
 	
 	//1、判断用户输入的是否是数字   isNaN: is Not a Number
 	if(isNaN(obj.value)||obj.value < 1){
 		//用户输入的不是数字或者小于1的数字 都不合法,则 使用默认购买数量
 		obj.value = 1;
 	}else if(obj.value > parseInt("${article.storage}")){
 		obj.value = 1;
 		alert("购买数量已超过库存数,请核实");
 	}else{
 		//防止用户用户输入小数    假设用户输入3 == 》3  用户输入  3.5 == 》4   对用户输入的值 进行向上取整
 		obj.value = Math.ceil(obj.value);
 		//发送请求更新购物车中购买的数量 
    public static final String HMACSHA256 = "HMAC-SHA256";
    public static final String MD5 = "MD5";

    public static final String FIELD_SIGN = "sign";
    public static final String FIELD_SIGN_TYPE = "sign_type";

    public static final String WXPAYSDK_VERSION = "WXPaySDK/3.0.9";
    public static final String USER_AGENT = WXPAYSDK_VERSION +
            " (" + System.getProperty("os.arch") + " " + System.getProperty("os.name") + " " + System.getProperty("os.version") +
            ") Java/" + System.getProperty("java.version") + " HttpClient/" + HttpClient.class.getPackage().getImplementationVersion();

    public static final String MICROPAY_URL_SUFFIX     = "/pay/micropay";
    public static final String UNIFIEDORDER_URL_SUFFIX = "/pay/unifiedorder";
    public static final String ORDERQUERY_URL_SUFFIX   = "/pay/orderquery";
    public static final String REVERSE_URL_SUFFIX      = "/secapi/pay/reverse";
    public static final String CLOSEORDER_URL_SUFFIX   = "/pay/closeorder";
    public static final String REFUND_URL_SUFFIX       = "/secapi/pay/refund";
    public static final String REFUNDQUERY_URL_SUFFIX  = "/pay/refundquery";
    public static final String DOWNLOADBILL_URL_SUFFIX = "/pay/downloadbill";
    public static final String REPORT_URL_SUFFIX       = "/payitil/report";
    public static final String SHORTURL_URL_SUFFIX     = "/tools/shorturl";
    public static final String AUTHCODETOOPENID_URL_SUFFIX = "/tools/authcodetoopenid";

    // sandbox
 		//用户输入的不是数字或者小于1的数字 都不合法,则 使用默认购买数量
 		obj.value = 1;
 	}else if(obj.value > parseInt("${article.storage}")){
 		obj.value = 1;
 		alert("购买数量已超过库存数,请核实");
 	}else{
 		//防止用户用户输入小数    假设用户输入3 == 》3  用户输入  3.5 == 》4   对用户输入的值 进行向上取整
 		obj.value = Math.ceil(obj.value);
 		//发送请求更新购物车中购买的数量 
		window.location = "${pageContext.request.contextPath}/shopCar/updateShopcar.do?id="+articleId+"&number="+obj.value;
		   
 		
 	}
 	
 }
 
 
 //为全选绑定单击事件
 function checkAll(checkObj){
	
	
	 //获取所有的子 checkbox 
	 var boxes = document.getElementsByName("box");
	 //alert(boxes.length);
	 
	  //将订单相关信息存放在 隐藏输入框中
	 var orderInfo = document.getElementById("orderInfo");
	  
	 orderInfo.value = "";
				<div class="form-group">
					<label class="col-sm-2 control-label">地址</label>
					<div class="col-sm-8">
						<textarea id="address" name="address" rows="4" cols="30"
							class="form-control" placeholder="请输入您的地址信息"></textarea>
					</div>
				</div>
				<div class="form-group">
					<label class="col-sm-2 control-label">电子邮箱:</label>
					<div class="col-sm-3">
						<input type="text" id="email" value="" name="email"
							class="form-control" placeholder="请输入您的邮箱">
					</div>
					<div class="col-sm-3">
						<span style="color: red;"></span>
					</div>
				</div>

				<div class="form-group">
    /**
     * 生成带有 sign 的 XML 格式字符串
     *
     * @param data Map类型数据
     * @param key API密钥
     * @param signType 签名类型
     * @return 含有sign字段的XML
     */
    public static String generateSignedXml(final Map<String, String> data, String key, SignType signType) throws Exception {
        String sign = generateSignature(data, key, signType);
        data.put(WXPayConstants.FIELD_SIGN, sign);
        return mapToXml(data);
    }


    /**
     * 判断签名是否正确
					
					page.append("&nbsp; <span>&nbsp;"+pageModel.getPageIndex()+"&nbsp;页/共&nbsp; "+totalPage+"页 ,共 "+pageModel.getTotalNum()+"条数据 </span>");
					
				}else{
					//当前页码在中间
					page.append("<a href='"+submitUrl+"&pageIndex="+1+"'>首页</a>");
					page.append("<a href='"+submitUrl+"&pageIndex="+(pageModel.getPageIndex()-1)+"'>上一页</a>");
					
                    page.append("<a href='"+submitUrl+"&pageIndex="+(pageModel.getPageIndex()+1)+"'>下一页</a>");
					
					page.append("<a href='"+submitUrl+"&pageIndex="+totalPage+"'>尾页</a>");
					
					page.append("&nbsp; <span>&nbsp;"+pageModel.getPageIndex()+"&nbsp;页/共&nbsp; "+totalPage+"页 ,共 "+pageModel.getTotalNum()+"条数据 </span>");
				}
				
				
			}
			
			write.print(page.toString());
			
			write.flush();
			
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}

<body>
<%-- 	<jsp:include page="/WEB-INF/jsp/commons/banner.jsp"></jsp:include> --%>
<nav class="navbar navbar-fixed-top navbar-inverse" role="navigation">
    <div class="container">
        <div class="navbar-header">
            <a class="navbar-brand" href="<c:url value="/article_manager/getAll.action"/>">电商系统,卖家系统-商品管理</a>
        </div>
        
         <div id="navbar" class="collapse navbar-collapse">
        	<ul class="nav navbar-nav">
        	   <li><a href="<c:url value="/article_manager/getAll.action"/>">商品管理</a></li>
	           <li><a href="<c:url value="/articleType_manager/getAll.action"/>">商品类型管理</a></li>
	           <li><a href="<c:url value="/order_manager/getAll.action"/>">订单管理</a></li>
          	</ul>
        
            <ul class="nav navbar-nav navbar-right">
					<c:choose>
						<c:when test="${not empty session_user}">
						  	<li><a href="#"> <span style='color: red;'></span>
					</li>
					<li class="grid-service-item  intro intro4">

						<i class="serivce-item fl"></i>
						<div class="service-text">
							<h4>正品保障</h4>
							<p>正品保障,提供发票</p>
						</div>

					</li>
					<li class="grid-service-item intro intro5">

						<i class="serivce-item fl"></i>
						<div class="service-text">
							<h4>正品保障</h4>
							<p>正品保障,提供发票</p>
							</tr>
						</thead>
						<tbody>
						
						<c:forEach items="${shopCars}" var="shopCar">
						     <tr>
								<td style="vertical-align: middle;"><input type="checkbox"
									 name="box" value="${shopCar.article.id}_${shopCar.buynum}_${shopCar.article.discountPrice* shopCar.buynum}"  onclick="checkboxFun(this.value)"/> <span id="total_1"
									style="display: none;">${shopCar.article.price}</span></td>
								<td><img alt="商品图片"
									src="${pageContext.request.contextPath}/image/article/${shopCar.article.image}" style="width:200px;height:200px"></td>
								<td>${shopCar.article.title}</td>
								<td>
								
								   价格:<span class="${shopCar.article.discount!=0.0 ? 'price':''}">${shopCar.article.price}</span>
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.demo.shop.bean.User;
import com.demo.manage.mapper.ManagerUserMapper;
import com.demo.manage.service.ManagerUserServiceI;
import com.sun.mail.smtp.SMTPMessage;


@Service(value="muserService")
@Transactional
public class ManagerUserServicempl implements ManagerUserServiceI {
	
	@Autowired
	private ManagerUserMapper userMapper;

		</footer>

		<script>
			/*  $('#registerForm').bootstrapValidator({
				//       live: 'disabled',
				message : 'This value is not valid',
				feedbackIcons : {
					valid : 'glyphicon glyphicon-ok',
					invalid : 'glyphicon glyphicon-remove',
					validating : 'glyphicon glyphicon-refresh'
				},
				fields : {
					"user.name" : {
						validators : {
							notEmpty : {
								message : '真实姓名不能为空'
							}
						}
					},
					"user.loginName" : {
						message : '用户名验证失败',
						validators : {
							notEmpty : {
import com.demo.shop.bean.ArticleType;
import com.demo.manage.service.ManagerArticleServiceI;
import com.demo.manage.service.ManagerArticleTypeServiceI;
import com.demo.manage.util.pager.PageModel;


@Controller
@RequestMapping("/article_manager")
public class ManagerArticleController {
	
	 @Autowired   
	 private ManagerArticleServiceI articleService;
	 
	 @Autowired   
	 private ManagerArticleTypeServiceI articleTypeService;
	
	
	     //展示首页商品信息	
		 @RequestMapping("/getAll.action")
		 public String getAllArticles(Model model,String typeCode,String title,PageModel pageModel) {
			 
			 //根据商品类型以及商品的标题获取商品信息
			 List<Article> articles = articleService.getAllArticles(typeCode,title,pageModel);
			 model.addAttribute("articles", articles);
			 
			 model.addAttribute("pageModel", pageModel);
			 
			 
			}else {
				//maxCode:00010009   ==  >00010010
				code.append(parentCode);
				Integer code2 = Integer.valueOf(maxCode.substring(4)) + 1;
				
				for(int i=0;i<4 - String.valueOf(code2).length() ; i++) {
					code.append("0");
				}
				code.append(code2);

			}
			
		}else {
			//获取最大的一级物品类型code
			String maxFirstCode = articleTypeMapper.findMaxFiCode();
			
			
			Integer code2 = Integer.valueOf(maxFirstCode) + 1;
			
			for(int i=0;i<4 - String.valueOf(code2).length() ; i++) {
				code.append("0");
			}
			code.append(code2);
			
		}
							class="form-control" placeholder="请输入您的邮箱">
					</div>
					<div class="col-sm-3">
						<span style="color: red;"></span>
					</div>
				</div>

				<div class="form-group">
					<label class="col-sm-2 control-label"></label>
					<div class="col-sm-3">
						<button type="button" id="btn_submit" class="btn btn-success">
							<span class="glyphicon glyphicon-user">注册
						</button>
						<button type="reset" class="btn btn-info">
							<span class="glyphicon glyphicon-edit">重置
						</button>
					</div>
				</div>
			</form>
		</div>
		<footer>

运行环境

Java≥6、Tomcat≥7.0、MySQL≥5.5

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

技术框架

JavaBean MVC JSP SSM(Spring SpringMVC MyBatis) MySQL Bootstrap JavaScript

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

前台:

首页展示商品信息,注册,登录,查询商品,看商品详情,添加商品至购物车,更新、删除购物车中商品信息,下订单、订单查看等操作

后台:登录,商品上架下架、商品信息修改、添加,订单查看,类型管理:商品类型新增删除以及修改查询等

20220312174423

前台:

20220312173557

20220312172322

20220312172343

20220312172910

20220312172922

20220312172932

20220312172950

20220312173134

后台:

20220312173616

20220312173630

20220312173637

20220312173652


举报

相关推荐

0 条评论