package com.pt.service;
import com.pt.dao.TicketInspectRecordDao;
import com.pt.model.TicketInspectRecord;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.support.DefaultTransactionDefinition;
import javax.annotation.Resource;
import java.util.Date;
@Service
public class TicketInspectRecordService {
@Autowired
private TicketProductService ticketProductService;
@Autowired
private SchedulingService schedulingService;
@Autowired
private TicketInspectRecordDao ticketInspectRecordDao;
@Autowired
private PlatformTransactionManager transactionManager;
private Integer stock = 0;
private final static Object obj = new Object();
private String msg = "false";
public String ticket(Integer sd_id) {
if (sd_id != null) {
this.stock = schedulingService.findStock(sd_id);
}
if (this.stock > 0) {
TicketInspectRecord ticketInspectRecord = new TicketInspectRecord();
ticketInspectRecord.setTir_tcr_id(1);
ticketInspectRecord.setTir_tp_id(1);
ticketInspectRecord.setTir_u_id(1);
ticketInspectRecord.setTir_date(new Date());
Thread thread = new Thread() {
@Override
public void run() {
synchronized (obj) {
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
TransactionStatus status = transactionManager.getTransaction(def);
try {
ticketInspectRecordDao.inTicket(ticketInspectRecord);
ticketInspectRecordDao.uStock(sd_id);//这一句必报错误,然后进入rollback方法
msg = "true";
transactionManager.commit(status);
} catch (Exception e) {
e.printStackTrace();
transactionManager.rollback(status);
msg = "false";
}
}
}
};
thread.start();
try {
thread.join();
}catch (InterruptedException e){
e.printStackTrace();
}
}
return msg;
}
}