1. 请问java的商城订单模块,如何解决用户恶意创建订单,但是不支付的问题 求详细解决方案。
其实这种问题应该是从产品的角度来解决的。而不是让一个程序员去想如何限制用户的行为。作为产品应该相处解决方案,然后程序员去实现。不过目前看来你这可能是个练手的项目,我跟你说下我之前项目的一些解决方案。
首先就是对用户频繁下单的限制,这里你可以在redis里写入一个和用户id相关的key。设置20秒左右的失效时间,这样如果是正常用户的话在这个时间里一般会避免这种情况的发生。然后从订单的角度来说,这样一个用户就算下了大量的订单也不会太多,然后写个定时任务,对下单超过30分钟还没支付的订单进行处理,比如给他的订单状态设置成已删除这种。
当然我们做的商城属于一个项目内置的,买周边和虚拟物品的,所以访问量不大。太大的量的话最好还是先让产品来想如何限制。
2. java题:编写类似淘宝一个简单的处理订单发货和进货的程序,要求实现简单的进货和发货以及统计货物量的功能
import java.util.ArrayList;
public class Du {
public static void main(String[] args) throws Exception {
Seller seller = new Seller("My Store");
seller.addGoods("T-shirt", 200);
seller.addGoods("Pill", 100);
seller.addGoods("T-shirt", 100);
seller.addGoods("T-shirt", 50);
seller.addGoods("Pill", 50);
seller.addGoods("Hat", 100);
seller.printGoods();
Seller sell2 = new Seller("The Other Store");
sell2.addGoods("T-shirt", 200);
sell2.addGoods("Hat", 100);
sell2.sellGoods("T-shirt", 50);
sell2.addGoods("Hat", 100);
sell2.printGoods();
}
}
class Seller {
private String sellerName;
private int TotalTypeOfGoods;
private ArrayList<String> goodsNameList = new ArrayList<String>();
private ArrayList<Integer> goodsQuantityList = new ArrayList<Integer>();
public Seller(String sellerName) {
this.sellerName = sellerName;
}
public void addGoods(String goodName, int goodNum) {
int index = goodsNameList.indexOf(goodName);
if (index == -1) {
goodsNameList.add(goodName);
goodsQuantityList.add(new Integer(goodNum));
} else {
goodsQuantityList.set(index, goodsQuantityList.get(index)
.intValue()
+ goodNum);
}
TotalTypeOfGoods = goodsNameList.size();
}
public void sellGoods(String goodName, int goodNum) throws Exception {
if (TotalTypeOfGoods == 0) {
throw new Exception("No goods provided by the shop. Closed!");
}
int index = goodsNameList.indexOf(goodName);
if (index != -1) {
int qty = goodsQuantityList.get(index);
if (goodNum > qty) {
throw new Exception("Insufficient goods in the shop. Sorry!");
}
goodsQuantityList.set(index, qty - goodNum);
}else{
throw new Exception("Our shop doesn't sell " + goodName);
}
}
public void printGoods() {
System.out.print("Seller :" + this.sellerName + "\t");
System.out.println("Totoal Types of Goods is :" + this.TotalTypeOfGoods);
for(int i = 0; i < goodsNameList.size(); i++){
System.out.print("Goods Name: " + goodsNameList.get(i));
System.out.println("Remains: " + goodsQuantityList.get(i));
}
System.out.println();
}
}
-----------------testing
Seller :My Store Totoal Types of Goods is :3
Goods Name: T-shirtRemains: 350
Goods Name: PillRemains: 150
Goods Name: HatRemains: 100
Seller :The Other Store Totoal Types of Goods is :2
Goods Name: T-shirtRemains: 150
Goods Name: HatRemains: 200
3. java一个订单接口,调用订单接口要创建10000份订单,用多线程怎么实现,求助大神!!!!!
{
//重写run方法,run方法的方法体就是现场执行体
publicvoidrun()
{
System.out.println("创建订单");
}
}
publicclassTest{
publicstaticvoidmain(String[]args)
{
newMyThread().start();//开启一个线程
newMyThread().start();//开启一个线程
}
}
4. java 如何实现一个用户 一个订单
package cn.test.logan.day04;
import java.util.ArrayList;
/**
* 订单类
* 包含:订单ID、订单所属用户、订单所包含的商品、订单总金额、订单应付金额
* 500-1000 -------> 8.5折
* 1000-1500 -------> 8折
* 1500-2000 -------> 7折
* 2000以上 -------> 6.5折
* 如果是会员,那么可以基于以上折扣继续折扣
* 一般会员:9.5折
* 中级会员:9折
* 高级会员:8折
* @author QIN
*
*/
public class Order {undefined
// 订单ID
public String ordId;
// 订单所属用户
public User user;
// 订单所包含的商品(多个商品,使用ArrayList)
public ArrayList pds;
// 订单总金额
public float ordAllAmt;
// 订单应付金额
public float payAmt;
// 计算总金额的方法
public void setAllAmt() {undefined
float sum = 0;
for(int i=0;i
sum +=this.pds.get(i).price * this.pds.get(i).number;
}
this.ordAllAmt = sum;
}
// 计算实付金额
public void setPayAmt() {undefined
float tmp = this.ordAllAmt;
// 根据总金额进行折扣
if(this.ordAllAmt >= 500 && this.ordAllAmt < 1000) {undefined
tmp = this.ordAllAmt * 0.85f;
}
if(this.ordAllAmt >= 1000 && this.ordAllAmt < 1500) {undefined
tmp = this.ordAllAmt * 0.8f;
}
if(this.ordAllAmt >= 1500 && this.ordAllAmt < 2000) {undefined
tmp = this.ordAllAmt * 0.7f;
}
if(this.ordAllAmt >= 2000) {undefined
tmp = this.ordAllAmt * 0.65f;
}
// 根据会员等级折扣
if(user.CustLevel.equals("一般会员")) {undefined
tmp = tmp * 0.95f;
}
if(user.CustLevel.equals("中级会员")) {undefined
tmp = tmp * 0.9f;
}
if(user.CustLevel.equals("高级会员")) {undefined
tmp = tmp * 0.8f;
}
//计算结果赋值给对象上的payAmt变量
this.payAmt = tmp;
}
}
参考资料来源:网络贴吧CSDN博主“公子京”
5. java web 开发 购物网站 怎么做订单结算部分
我写过两次订单结算,不过都是asp.net下的,但是应该差不多吧.订单结算是最后的步骤,提交订单之后需要做结算,实际上就是收钱嘛.
传统来讲此时需要一个支付接口,比如说支付宝财付通快钱 网银在线之类的,他们提供接口,我们按照他们说明文档来实现就好.重要的是交易记录哦!!提交订单后需要交易日志(不能从字面意义上来理解"交易",实际上跟别人讨价还价也是交易的一种不是嘛.)转到接口前需要日志,接口返回信息需要日志(表结构差不多啦)这些日志,方便以后退款或者查看状态使用;
不传统来讲除支付接口外,要考虑购物网站个人钱包支付或者线下汇款之类的 建议使用策略模式
额 不知道说啥了.缕一缕在纸上构思下就差不多 但一定要考虑好安全性
6. java实现实时订单推送需要用到什么技术
1:支付技术,订单需要支付
2:流程,订单系统肯定从下单到支付再到送货等一系列需要走流程
3:定位技术,订单需要地理定位,帮助送货员准确送货到买家
4:消息技术,在订单走到任何环节都需要消息及时反馈
5:搜索技术,买家会在系统搜索满意的物品