更新全选打包

This commit is contained in:
19991905653 2024-04-03 17:32:49 +08:00
parent 39a5096151
commit d98de3cfee
3 changed files with 225 additions and 207 deletions

View File

@ -7,11 +7,26 @@ import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
@Slf4j
@Component
@WebFilter(urlPatterns = {"/order-service/order/*"},filterName = "customFilter")
public class CustomFilter implements Filter {
private static final List<String> unFilterUrlList= Arrays.asList("/order-service/pay/returnOrder");
private boolean isfilter(String url){
for (String s : unFilterUrlList) {
if(s.equals(url)){
return true;
}
}
return false;
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
log.info(">>>> customFilter init <<<<");
@ -20,14 +35,30 @@ public class CustomFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
log.info(">>>> customFilter doFilter start <<<<");
RequestWrapper requestWapper = null;
if (servletRequest instanceof HttpServletRequest) {
requestWapper = new RequestWrapper((HttpServletRequest) servletRequest);
}
// RequestWrapper requestWapper = null;
//// if (servletRequest instanceof HttpServletRequest) {
//// requestWapper = new RequestWrapper((HttpServletRequest) servletRequest);
//// }
//// if (requestWapper != null) {
//// filterChain.doFilter(requestWapper,servletResponse);
//// } else {
//// filterChain.doFilter(servletRequest,servletResponse);
//// }
HttpServletRequest request=(HttpServletRequest) servletRequest;
if(isfilter(request.getRequestURI().toString())){
RequestWrapper requestWapper = null;
if (servletRequest instanceof HttpServletRequest) {
requestWapper = new RequestWrapper((HttpServletRequest) servletRequest);
}
if (requestWapper != null) {
filterChain.doFilter(requestWapper,servletResponse);
} else {
if (requestWapper != null) {
servletResponse.setContentType("text/plain;charset=UTF-8");
filterChain.doFilter(requestWapper,servletResponse);
} else {
servletResponse.setContentType("text/plain;charset=UTF-8");
filterChain.doFilter(servletRequest,servletResponse);
}
}else {
filterChain.doFilter(servletRequest,servletResponse);
}
}

View File

@ -74,66 +74,65 @@ public class PayService {
private String backUrl;
public Result queryPayType(String shopId){
return Result.success(CodeEnum.SUCCESS,tbShopPayTypeMapper.selectByShopId(shopId));
public Result queryPayType(String shopId) {
return Result.success(CodeEnum.SUCCESS, tbShopPayTypeMapper.selectByShopId(shopId));
}
@Transactional(rollbackFor = Exception.class)
public Result scanPay(String orderId,String authCode,String ip,String token){
if(ObjectUtil.isEmpty(orderId)||ObjectUtil.isEmpty(authCode)||ObjectUtil.isEmpty(ip)){
public Result scanPay(String orderId, String authCode, String ip, String token) {
if (ObjectUtil.isEmpty(orderId) || ObjectUtil.isEmpty(authCode) || ObjectUtil.isEmpty(ip)) {
return Result.fail(CodeEnum.PARAM);
}
TbOrderInfo orderInfo= tbOrderInfoMapper.selectByPrimaryKey(Integer.valueOf(orderId));
TbOrderInfo orderInfo = tbOrderInfoMapper.selectByPrimaryKey(Integer.valueOf(orderId));
if(ObjectUtil.isEmpty(orderInfo)){
if (ObjectUtil.isEmpty(orderInfo)) {
return Result.fail(CodeEnum.ORDERNOEXIST);
}
if(!"unpaid".equals(orderInfo.getStatus())&&!"paying".equals(orderInfo.getStatus())){
if (!"unpaid".equals(orderInfo.getStatus()) && !"paying".equals(orderInfo.getStatus())) {
return Result.fail(CodeEnum.ORDERSTATUSERROR);
}
if(ObjectUtil.isNull(orderInfo.getMerchantId())||ObjectUtil.isEmpty(orderInfo.getMerchantId())){
if (ObjectUtil.isNull(orderInfo.getMerchantId()) || ObjectUtil.isEmpty(orderInfo.getMerchantId())) {
return Result.fail(CodeEnum.NOCUSTOMER);
}
TbMerchantThirdApply thirdApply= tbMerchantThirdApplyMapper.selectByPrimaryKey(Integer.valueOf(orderInfo.getMerchantId()));
if(ObjectUtil.isEmpty(thirdApply)||ObjectUtil.isNull(thirdApply)){
TbMerchantThirdApply thirdApply = tbMerchantThirdApplyMapper.selectByPrimaryKey(Integer.valueOf(orderInfo.getMerchantId()));
if (ObjectUtil.isEmpty(thirdApply) || ObjectUtil.isNull(thirdApply)) {
return Result.fail(CodeEnum.NOCUSTOMER);
}
String payType=null;
String payName=null;
String qpay=null;
String payType = null;
String payName = null;
String qpay = null;
String payTypeCode = authCode.substring(0, 1);// 判断收款码
switch (payTypeCode){
switch (payTypeCode) {
case "1":
payType="wechatPay";
payName="微信支付";
qpay="scanCode";
payType = "wechatPay";
payName = "微信支付";
qpay = "scanCode";
break;
case "2":
payType="aliPay";
payName="支付宝支付";
qpay="scanCode";
payType = "aliPay";
payName = "支付宝支付";
qpay = "scanCode";
break;
}
int count= tbShopPayTypeMapper.countSelectByShopIdAndPayType(orderInfo.getShopId(),qpay);
if(count<1){
int count = tbShopPayTypeMapper.countSelectByShopIdAndPayType(orderInfo.getShopId(), qpay);
if (count < 1) {
return Result.fail(CodeEnum.PAYTYPENOEXIST);
}
TbOrderPayment payment=tbOrderPaymentMapper.selectByOrderId(orderId);
if(ObjectUtil.isEmpty(payment)||payment==null){
payment=new TbOrderPayment();
TbOrderPayment payment = tbOrderPaymentMapper.selectByOrderId(orderId);
if (ObjectUtil.isEmpty(payment) || payment == null) {
payment = new TbOrderPayment();
payment.setPayTypeId("ysk");
payment.setAmount(orderInfo.getOrderAmount());
payment.setPaidAmount(orderInfo.getPayAmount());
@ -148,37 +147,34 @@ public class PayService {
payment.setCreatedAt(System.currentTimeMillis());
payment.setAuthCode(authCode);
tbOrderPaymentMapper.insert(payment);
}else {
} else {
payment.setAuthCode(authCode);
payment.setUpdatedAt(System.currentTimeMillis());
tbOrderPaymentMapper.updateByPrimaryKey(payment);
}
orderInfo.setPayAmount(orderInfo.getOrderAmount());
orderInfo.setPayType(qpay);
orderInfo.setUpdatedAt(System.currentTimeMillis());
tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo);
ScanPayReq scanPayReq=new ScanPayReq();
ScanPayReq scanPayReq = new ScanPayReq();
scanPayReq.setAppId(thirdApply.getAppId());
scanPayReq.setTimestamp(System.currentTimeMillis());
scanPayReq.setAuthCode(authCode);
scanPayReq.setNotifyUrl(backUrl);
scanPayReq.setConsumeFee(payment.getAmount().setScale(2,BigDecimal.ROUND_DOWN).toPlainString());
scanPayReq.setConsumeFee(payment.getAmount().setScale(2, BigDecimal.ROUND_DOWN).toPlainString());
Map<String,Object> map= BeanUtil.transBean2Map(scanPayReq);
scanPayReq.setSign(MD5Util.encrypt(map,thirdApply.getAppToken(),true));
Map<String, Object> map = BeanUtil.transBean2Map(scanPayReq);
scanPayReq.setSign(MD5Util.encrypt(map, thirdApply.getAppToken(), true));
ResponseEntity<String> response= restTemplate.postForEntity(gateWayUrl.concat("merchantOrder/scanPay"),scanPayReq,String.class);
if(response.getStatusCodeValue()==200&&ObjectUtil.isNotEmpty(response.getBody())){
JSONObject object=JSONObject.parseObject(response.getBody());
if(object.get("code").equals("0")){
ResponseEntity<String> response = restTemplate.postForEntity(gateWayUrl.concat("merchantOrder/scanPay"), scanPayReq, String.class);
if (response.getStatusCodeValue() == 200 && ObjectUtil.isNotEmpty(response.getBody())) {
JSONObject object = JSONObject.parseObject(response.getBody());
if (object.get("code").equals("0")) {
payment.setTradeNumber(object.getJSONObject("data").get("orderNumber").toString());
payment.setUpdatedAt(System.currentTimeMillis());
tbOrderPaymentMapper.updateByPrimaryKeySelective(payment);
@ -189,25 +185,25 @@ public class PayService {
tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo);
//更新购物车状态
int cartCount= tbCashierCartMapper.updateByOrderId(orderId,"final");
log.info("更新购物车:{}",cartCount);
int cartCount = tbCashierCartMapper.updateByOrderId(orderId, "final");
log.info("更新购物车:{}", cartCount);
//更新子单状态
tbOrderDetailMapper.updateStatusByOrderIdAndStatus(Integer.valueOf(orderId),"closed");
tbOrderDetailMapper.updateStatusByOrderIdAndStatus(Integer.valueOf(orderId), "closed");
JSONObject jsonObject=new JSONObject();
jsonObject.put("token",token);
jsonObject.put("type","create");
jsonObject.put("orderId",orderId);
JSONObject jsonObject = new JSONObject();
jsonObject.put("token", token);
jsonObject.put("type", "create");
jsonObject.put("orderId", orderId);
producer.putOrderCollect(jsonObject.toJSONString());
producer.printMechine(orderId);
return Result.success(CodeEnum.SUCCESS,object.getJSONObject("data"));
}else {
String status=ObjectUtil.isNotEmpty(object.getJSONObject("data"))?object.getJSONObject("data").getString("status"):null;
if(ObjectUtil.isNotNull(status)&&"7".equals(status)){
return Result.success(CodeEnum.SUCCESS, object.getJSONObject("data"));
} else {
String status = ObjectUtil.isNotEmpty(object.getJSONObject("data")) ? object.getJSONObject("data").getString("status") : null;
if (ObjectUtil.isNotNull(status) && "7".equals(status)) {
orderInfo.setStatus("paying");
orderInfo.setPayOrderNo(payment.getTradeNumber());
@ -229,53 +225,53 @@ public class PayService {
}
public Result queryOrder(String orderId,String token){
if(ObjectUtil.isEmpty(orderId)){
public Result queryOrder(String orderId, String token) {
if (ObjectUtil.isEmpty(orderId)) {
return Result.fail(CodeEnum.PARAM);
}
TbOrderInfo orderInfo= tbOrderInfoMapper.selectByPrimaryKey(Integer.valueOf(orderId));
TbOrderInfo orderInfo = tbOrderInfoMapper.selectByPrimaryKey(Integer.valueOf(orderId));
if(ObjectUtil.isEmpty(orderInfo)){
if (ObjectUtil.isEmpty(orderInfo)) {
return Result.fail(CodeEnum.ORDERNOEXIST);
}
if("unpaid".equals(orderInfo.getStatus())||"paying".equals(orderInfo.getStatus())){
TbMerchantThirdApply thirdApply= tbMerchantThirdApplyMapper.selectByPrimaryKey(Integer.valueOf(orderInfo.getMerchantId()));
if(ObjectUtil.isEmpty(thirdApply)||ObjectUtil.isNull(thirdApply)){
if ("unpaid".equals(orderInfo.getStatus()) || "paying".equals(orderInfo.getStatus())) {
TbMerchantThirdApply thirdApply = tbMerchantThirdApplyMapper.selectByPrimaryKey(Integer.valueOf(orderInfo.getMerchantId()));
if (ObjectUtil.isEmpty(thirdApply) || ObjectUtil.isNull(thirdApply)) {
return Result.fail(CodeEnum.NOCUSTOMER);
}
TbOrderPayment tbOrderPayment=tbOrderPaymentMapper.selectByOrderId(orderId);
if(ObjectUtil.isNotEmpty(tbOrderPayment)){
TradeQueryReq tradeQueryReq=new TradeQueryReq();
TbOrderPayment tbOrderPayment = tbOrderPaymentMapper.selectByOrderId(orderId);
if (ObjectUtil.isNotEmpty(tbOrderPayment)) {
TradeQueryReq tradeQueryReq = new TradeQueryReq();
tradeQueryReq.setAppId(thirdApply.getAppId());
tradeQueryReq.setTimestamp(System.currentTimeMillis());
tradeQueryReq.setOrderNumber(tbOrderPayment.getTradeNumber());
Map<String,Object> map= BeanUtil.transBean2Map(tradeQueryReq);
tradeQueryReq.setSign(MD5Util.encrypt(map,thirdApply.getAppToken(),true));
ResponseEntity<String> response= restTemplate.postForEntity(gateWayUrl.concat("merchantOrder/tradeQuery"),tradeQueryReq,String.class);
if(response.getStatusCodeValue()==200&&ObjectUtil.isNotEmpty(response.getBody())){
JSONObject object=JSONObject.parseObject(response.getBody());
if(object.get("code").equals("0")){
JSONObject data=object.getJSONObject("data");
if("1".equals(data.getString("status"))){
Map<String, Object> map = BeanUtil.transBean2Map(tradeQueryReq);
tradeQueryReq.setSign(MD5Util.encrypt(map, thirdApply.getAppToken(), true));
ResponseEntity<String> response = restTemplate.postForEntity(gateWayUrl.concat("merchantOrder/tradeQuery"), tradeQueryReq, String.class);
if (response.getStatusCodeValue() == 200 && ObjectUtil.isNotEmpty(response.getBody())) {
JSONObject object = JSONObject.parseObject(response.getBody());
if (object.get("code").equals("0")) {
JSONObject data = object.getJSONObject("data");
if ("1".equals(data.getString("status"))) {
orderInfo.setStatus("closed");
orderInfo.setPayOrderNo(tbOrderPayment.getTradeNumber());
tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo);
//更新购物车状态
int cartCount= tbCashierCartMapper.updateByOrderId(orderId,"final");
log.info("更新购物车:{}",cartCount);
int cartCount = tbCashierCartMapper.updateByOrderId(orderId, "final");
log.info("更新购物车:{}", cartCount);
tbOrderDetailMapper.updateStatusByOrderIdAndStatus(Integer.valueOf(orderId),"closed");
tbOrderDetailMapper.updateStatusByOrderIdAndStatus(Integer.valueOf(orderId), "closed");
JSONObject jsonObject=new JSONObject();
jsonObject.put("token",token);
jsonObject.put("type","create");
jsonObject.put("orderId",orderId);
JSONObject jsonObject = new JSONObject();
jsonObject.put("token", token);
jsonObject.put("type", "create");
jsonObject.put("orderId", orderId);
producer.putOrderCollect(jsonObject.toJSONString());
@ -286,51 +282,51 @@ public class PayService {
}
}
return Result.success(CodeEnum.SUCCESS,orderInfo);
return Result.success(CodeEnum.SUCCESS, orderInfo);
}
@Transactional(rollbackFor = Exception.class)
public Result accountPay(String orderId,String memberId,String token){
if(ObjectUtil.isEmpty(orderId)||ObjectUtil.isEmpty(memberId)){
public Result accountPay(String orderId, String memberId, String token) {
if (ObjectUtil.isEmpty(orderId) || ObjectUtil.isEmpty(memberId)) {
return Result.fail(CodeEnum.PARAM);
}
TbOrderInfo orderInfo= tbOrderInfoMapper.selectByPrimaryKey(Integer.valueOf(orderId));
if(ObjectUtil.isEmpty(orderInfo)){
TbOrderInfo orderInfo = tbOrderInfoMapper.selectByPrimaryKey(Integer.valueOf(orderId));
if (ObjectUtil.isEmpty(orderInfo)) {
return Result.fail(CodeEnum.ORDERNOEXIST);
}
if(!"unpaid".equals(orderInfo.getStatus())){
if (!"unpaid".equals(orderInfo.getStatus())) {
return Result.fail(CodeEnum.ORDERSTATUSERROR);
}
int count= tbShopPayTypeMapper.countSelectByShopIdAndPayType(orderInfo.getShopId(),"deposit");
if(count<1){
int count = tbShopPayTypeMapper.countSelectByShopIdAndPayType(orderInfo.getShopId(), "deposit");
if (count < 1) {
return Result.fail(CodeEnum.PAYTYPENOEXIST);
}
TbShopUser user= tbShopUserMapper.selectByPrimaryKey(Integer.valueOf(memberId));
if(ObjectUtil.isEmpty(user)||!"1".equals(user.getIsVip().toString())){
TbShopUser user = tbShopUserMapper.selectByPrimaryKey(Integer.valueOf(memberId));
if (ObjectUtil.isEmpty(user) || !"1".equals(user.getIsVip().toString())) {
return Result.fail(CodeEnum.MEMBERNOEXIST);
}
if(N.gt(orderInfo.getPayAmount(),user.getAmount())){
if (N.gt(orderInfo.getPayAmount(), user.getAmount())) {
return Result.fail(CodeEnum.MEMBERINSUFFICIENTFUNDS);
}
user.setAmount(user.getAmount().subtract(orderInfo.getOrderAmount()));
user.setConsumeAmount(user.getConsumeAmount().add(orderInfo.getPayAmount()));
user.setConsumeNumber(user.getConsumeNumber()+1);
user.setConsumeNumber(user.getConsumeNumber() + 1);
user.setUpdatedAt(System.currentTimeMillis());
tbShopUserMapper.updateByPrimaryKeySelective(user);
TbShopUserFlow flow=new TbShopUserFlow();
TbShopUserFlow flow = new TbShopUserFlow();
flow.setShopUserId(user.getId());
flow.setBizCode("accountPay");
flow.setBizName("会员储值卡支付");
@ -347,19 +343,19 @@ public class PayService {
orderInfo.setPayOrderNo("deposit".concat(SnowFlakeUtil.generateOrderNo()));
tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo);
//更新购物车状态
int cartCount= tbCashierCartMapper.updateByOrderId(orderId,"final");
int cartCount = tbCashierCartMapper.updateByOrderId(orderId, "final");
tbOrderDetailMapper.updateStatusByOrderId(Integer.valueOf(orderId),"closed");
tbOrderDetailMapper.updateStatusByOrderId(Integer.valueOf(orderId), "closed");
tbOrderDetailMapper.updateStatusByOrderIdAndStatus(Integer.valueOf(orderId),"closed");
tbOrderDetailMapper.updateStatusByOrderIdAndStatus(Integer.valueOf(orderId), "closed");
log.info("更新购物车:{}",cartCount);
log.info("更新购物车:{}", cartCount);
JSONObject jsonObject=new JSONObject();
jsonObject.put("token",token);
jsonObject.put("type","create");
jsonObject.put("orderId",orderId);
JSONObject jsonObject = new JSONObject();
jsonObject.put("token", token);
jsonObject.put("type", "create");
jsonObject.put("orderId", orderId);
producer.putOrderCollect(jsonObject.toJSONString());
@ -369,30 +365,26 @@ public class PayService {
}
@Transactional(rollbackFor = Exception.class)
public Result cashPay(String orderId,String token){
if(ObjectUtil.isEmpty(orderId)){
public Result cashPay(String orderId, String token) {
if (ObjectUtil.isEmpty(orderId)) {
return Result.fail(CodeEnum.PARAM);
}
TbOrderInfo orderInfo= tbOrderInfoMapper.selectByPrimaryKey(Integer.valueOf(orderId));
TbOrderInfo orderInfo = tbOrderInfoMapper.selectByPrimaryKey(Integer.valueOf(orderId));
if(ObjectUtil.isEmpty(orderInfo)){
if (ObjectUtil.isEmpty(orderInfo)) {
return Result.fail(CodeEnum.ORDERNOEXIST);
}
if(!"unpaid".equals(orderInfo.getStatus())){
if (!"unpaid".equals(orderInfo.getStatus())) {
return Result.fail(CodeEnum.ORDERSTATUSERROR);
}
int count= tbShopPayTypeMapper.countSelectByShopIdAndPayType(orderInfo.getShopId(),"cash");
if(count<1){
int count = tbShopPayTypeMapper.countSelectByShopIdAndPayType(orderInfo.getShopId(), "cash");
if (count < 1) {
return Result.fail(CodeEnum.PAYTYPENOEXIST);
}
@ -403,15 +395,15 @@ public class PayService {
orderInfo.setPayOrderNo("cash".concat(SnowFlakeUtil.generateOrderNo()));
tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo);
//更新购物车状态
int cartCount= tbCashierCartMapper.updateByOrderId(orderId,"final");
int cartCount = tbCashierCartMapper.updateByOrderId(orderId, "final");
tbOrderDetailMapper.updateStatusByOrderIdAndStatus(Integer.valueOf(orderId),"closed");
log.info("更新购物车:{}",cartCount);
tbOrderDetailMapper.updateStatusByOrderIdAndStatus(Integer.valueOf(orderId), "closed");
log.info("更新购物车:{}", cartCount);
JSONObject jsonObject=new JSONObject();
jsonObject.put("token",token);
jsonObject.put("type","create");
jsonObject.put("orderId",orderId);
JSONObject jsonObject = new JSONObject();
jsonObject.put("token", token);
jsonObject.put("type", "create");
jsonObject.put("orderId", orderId);
producer.putOrderCollect(jsonObject.toJSONString());
@ -422,28 +414,26 @@ public class PayService {
}
@Transactional(rollbackFor = Exception.class)
public Result bankPay(String orderId,String token){
if(ObjectUtil.isEmpty(orderId)){
public Result bankPay(String orderId, String token) {
if (ObjectUtil.isEmpty(orderId)) {
return Result.fail(CodeEnum.PARAM);
}
TbOrderInfo orderInfo= tbOrderInfoMapper.selectByPrimaryKey(Integer.valueOf(orderId));
TbOrderInfo orderInfo = tbOrderInfoMapper.selectByPrimaryKey(Integer.valueOf(orderId));
if(ObjectUtil.isEmpty(orderInfo)){
if (ObjectUtil.isEmpty(orderInfo)) {
return Result.fail(CodeEnum.ORDERNOEXIST);
}
if(!"unpaid".equals(orderInfo.getStatus())){
if (!"unpaid".equals(orderInfo.getStatus())) {
return Result.fail(CodeEnum.ORDERSTATUSERROR);
}
int count= tbShopPayTypeMapper.countSelectByShopIdAndPayType(orderInfo.getShopId(),"bank");
if(count<1){
int count = tbShopPayTypeMapper.countSelectByShopIdAndPayType(orderInfo.getShopId(), "bank");
if (count < 1) {
return Result.fail(CodeEnum.PAYTYPENOEXIST);
}
@ -454,15 +444,15 @@ public class PayService {
orderInfo.setPayOrderNo("cash".concat(SnowFlakeUtil.generateOrderNo()));
tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo);
//更新购物车状态
int cartCount= tbCashierCartMapper.updateByOrderId(orderId,"final");
int cartCount = tbCashierCartMapper.updateByOrderId(orderId, "final");
tbOrderDetailMapper.updateStatusByOrderIdAndStatus(Integer.valueOf(orderId),"closed");
log.info("更新购物车:{}",cartCount);
tbOrderDetailMapper.updateStatusByOrderIdAndStatus(Integer.valueOf(orderId), "closed");
log.info("更新购物车:{}", cartCount);
JSONObject jsonObject=new JSONObject();
jsonObject.put("token",token);
jsonObject.put("type","create");
jsonObject.put("orderId",orderId);
JSONObject jsonObject = new JSONObject();
jsonObject.put("token", token);
jsonObject.put("type", "create");
jsonObject.put("orderId", orderId);
producer.putOrderCollect(jsonObject.toJSONString());
@ -472,41 +462,40 @@ public class PayService {
}
@Transactional(rollbackFor = Exception.class)
public Result returnOrder(List<TbOrderDetail> list,String token){
if(ObjectUtil.isEmpty(list)||list.size()<=0){
public Result returnOrder(List<TbOrderDetail> list, String token) {
if (ObjectUtil.isEmpty(list) || list.size() <= 0) {
return Result.fail(CodeEnum.PARAM);
}
Integer orderId= list.get(0).getOrderId();
Integer orderId = list.get(0).getOrderId();
String remark=list.get(0).getRemark();
String remark = list.get(0).getRemark();
TbOrderInfo orderInfo= tbOrderInfoMapper.selectByPrimaryKey(orderId);
if(ObjectUtil.isEmpty(orderInfo)||orderInfo.getStatus().equals("refund")){
TbOrderInfo orderInfo = tbOrderInfoMapper.selectByPrimaryKey(orderId);
if (ObjectUtil.isEmpty(orderInfo) || orderInfo.getStatus().equals("refund")) {
return Result.fail(CodeEnum.ORDERSTATUSERROR);
}
List<TbOrderDetail> orderDetails= tbOrderDetailMapper.selectAllByOrderIdAndStatus(list,orderId.toString());
List<TbOrderDetail> orderDetails = tbOrderDetailMapper.selectAllByOrderIdAndStatus(list, orderId.toString());
String merchantId=orderInfo.getMerchantId();
String shopId=orderInfo.getShopId();
String merchantId = orderInfo.getMerchantId();
String shopId = orderInfo.getShopId();
String day = DateUtils.getDay();
String masterId=orderInfo.getMasterId();
String payType=orderInfo.getPayType();
String orderNo= generateReturnOrderNumber();
BigDecimal orderAmount=orderInfo.getPayAmount();
String masterId = orderInfo.getMasterId();
String payType = orderInfo.getPayType();
String orderNo = generateReturnOrderNumber();
BigDecimal orderAmount = orderInfo.getPayAmount();
BigDecimal totalAmount=BigDecimal.ZERO;
BigDecimal packAMount=BigDecimal.ZERO;
BigDecimal saleAmount=BigDecimal.ZERO;
BigDecimal feeAmount=BigDecimal.ZERO;
BigDecimal payAmount=BigDecimal.ZERO;
BigDecimal totalAmount = BigDecimal.ZERO;
BigDecimal packAMount = BigDecimal.ZERO;
BigDecimal saleAmount = BigDecimal.ZERO;
BigDecimal feeAmount = BigDecimal.ZERO;
BigDecimal payAmount = BigDecimal.ZERO;
List<OrderDetailPo> detailPos=new ArrayList<>();
List<OrderDetailPo> detailPos = new ArrayList<>();
// //判断是否全量退款
// if(list.size()==orderDetails.size()){
// //修改主单状态
@ -515,49 +504,51 @@ public class PayService {
// tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo);
// }
List<TbOrderDetail> returnDetail=new ArrayList<>();
List<TbOrderDetail> returnDetail = new ArrayList<>();
// List<ReturnWTZInfo.ReturnDetail> details=new ArrayList<>();
Map<Integer,Integer> map1 = new HashMap<>();
for (TbOrderDetail orderDetail:list){
if (Objects.isNull(orderDetail.getNum())){
map1.put(orderDetail.getId(),0);
}else {
map1.put(orderDetail.getId(),orderDetail.getNum());
Map<Integer, Integer> map1 = new HashMap<>();
for (TbOrderDetail orderDetail : list) {
if (Objects.isNull(orderDetail.getNum())) {
map1.put(orderDetail.getId(), 0);
} else {
map1.put(orderDetail.getId(), orderDetail.getNum());
}
}
for (TbOrderDetail it : orderDetails) {
it=tbOrderDetailMapper.selectByPrimaryKey(it.getId());
it = tbOrderDetailMapper.selectByPrimaryKey(it.getId());
if (it.getStatus().equals("closed")) {
if (it.getStatus().equals("refund")) {
continue;
}
if (map1.get(it.getId()) > it.getNum()-it.getReturnNum()){
throw new MsgException("可退数量:"+ (it.getNum()-it.getReturnNum()));
if (map1.get(it.getId()) > it.getNum() - it.getReturnNum()) {
MsgException.checkNull(null,"可退数量:" + (it.getNum() - it.getReturnNum()));
}
if (map1.get(it.getId()) == 0){
map1.put(it.getId(),it.getNum());
if (map1.get(it.getId()) == 0) {
map1.put(it.getId(), it.getNum());
}
OrderDetailPo detailPo = new OrderDetailPo();
// totalAmount = totalAmount.add(it.getPriceAmount());
totalAmount = totalAmount.add(it.getPriceAmount().divide(new BigDecimal(it.getNum()),2,BigDecimal.ROUND_DOWN).multiply(new BigDecimal(map1.get(it.getId()))));
totalAmount = totalAmount.add(it.getPriceAmount().divide(new BigDecimal(it.getNum()), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(map1.get(it.getId()))));
saleAmount = saleAmount.add(it.getPrice());
payAmount=payAmount.add(it.getPriceAmount().divide(new BigDecimal(it.getNum()),2,BigDecimal.ROUND_DOWN).multiply(new BigDecimal(map1.get(it.getId()))));
payAmount = payAmount.add(it.getPriceAmount().divide(new BigDecimal(it.getNum()), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(map1.get(it.getId()))));
// payAmount=payAmount.add(it.getPriceAmount());
packAMount = packAMount.add(it.getPackAmount().divide(new BigDecimal(it.getNum()),2,BigDecimal.ROUND_DOWN).multiply(new BigDecimal(map1.get(it.getId()))));
packAMount = packAMount.add(it.getPackAmount().divide(new BigDecimal(it.getNum()), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(map1.get(it.getId()))));
detailPo.setId(it.getId());
if (map1.get(it.getId())+it.getReturnNum() >= it.getNum()){
if (map1.get(it.getId()) + it.getReturnNum() >= it.getNum()) {
detailPo.setStatus("refund");
}else {
} else {
detailPo.setStatus("closed");
}
BigDecimal returnAmount = it.getPriceAmount().divide(new BigDecimal(it.getNum()), 2, BigDecimal.ROUND_DOWN).multiply(new BigDecimal(map1.get(it.getId())));
detailPo.setReturnNum(map1.get(it.getId()));
detailPos.add(detailPo);
it.setNum(map1.get(it.getId()));
it.setReturnNum(0);
it.setPriceAmount(returnAmount);
it.setStatus("closed");
it.setCreateTime(new Date());
it.setUpdateTime(null);
@ -568,30 +559,30 @@ public class PayService {
}
TbOrderInfo newOrderInfo = new TbOrderInfo(orderNo, totalAmount, packAMount, totalAmount, saleAmount, totalAmount, feeAmount, orderInfo.getTableId(),
"table", "return",merchantId, shopId,
"", (byte) 1,day,masterId,"refund",payAmount,orderInfo.getPayType(),orderInfo.getTableName());
TbOrderInfo newOrderInfo = new TbOrderInfo(orderNo, totalAmount, packAMount, totalAmount, saleAmount, totalAmount, feeAmount, orderInfo.getTableId(),
"table", "return", merchantId, shopId,
"", (byte) 1, day, masterId, "refund", payAmount, orderInfo.getPayType(), orderInfo.getTableName());
if("scanCode".equals(payType) || "wx_lite".equals(payType)){
TbMerchantThirdApply thirdApply= tbMerchantThirdApplyMapper.selectByPrimaryKey(Integer.valueOf(merchantId));
MsgException.checkNull(thirdApply,"支付参数配置错误");
ReturnOrderReq req=new ReturnOrderReq();
if ("scanCode".equals(payType) || "wx_lite".equals(payType)) {
TbMerchantThirdApply thirdApply = tbMerchantThirdApplyMapper.selectByPrimaryKey(Integer.valueOf(merchantId));
MsgException.checkNull(thirdApply, "支付参数配置错误");
ReturnOrderReq req = new ReturnOrderReq();
req.setAppId(thirdApply.getAppId());
req.setTimestamp(System.currentTimeMillis());
req.setOrderNumber(orderInfo.getPayOrderNo());
req.setAmount(String.format("%.2f",newOrderInfo.getPayAmount().setScale(2,BigDecimal.ROUND_DOWN)));
req.setAmount(String.format("%.2f", newOrderInfo.getPayAmount().setScale(2, BigDecimal.ROUND_DOWN)));
req.setMercRefundNo(orderInfo.getOrderNo());
req.setRefundReason("退货");
req.setPayPassword(thirdApply.getPayPassword());
Map<String,Object> map= BeanUtil.transBean2Map(req);
req.setSign(MD5Util.encrypt(map,thirdApply.getAppToken(),true));
Map<String, Object> map = BeanUtil.transBean2Map(req);
req.setSign(MD5Util.encrypt(map, thirdApply.getAppToken(), true));
log.info("merchantOrderReturn req:{}", JSONUtil.toJsonStr(req));
ResponseEntity<String> response= restTemplate.postForEntity(gateWayUrl.concat("merchantOrder/returnOrder"),req,String.class);
log.info("merchantOrderReturn:{}",response.getBody());
if(response.getStatusCodeValue()==200&&ObjectUtil.isNotEmpty(response.getBody())){
JSONObject object=JSONObject.parseObject(response.getBody());
if(!object.get("code").equals("0")){
MsgException.check(true,"退款渠道调用失败");
ResponseEntity<String> response = restTemplate.postForEntity(gateWayUrl.concat("merchantOrder/returnOrder"), req, String.class);
log.info("merchantOrderReturn:{}", response.getBody());
if (response.getStatusCodeValue() == 200 && ObjectUtil.isNotEmpty(response.getBody())) {
JSONObject object = JSONObject.parseObject(response.getBody());
if (!object.get("code").equals("0")) {
MsgException.check(true, "退款渠道调用失败");
}
// newOrderInfo.setPayOrderNo(object.getJSONObject("data").getString("refundOrderNumber"));
}
@ -599,8 +590,8 @@ public class PayService {
//判断是否修改主单状态
BigDecimal returnAmount= tbOrderDetailMapper.selectByOrderId(orderId.toString());
if(N.egt(returnAmount.add(payAmount),orderAmount)){
BigDecimal returnAmount = tbOrderDetailMapper.selectByOrderId(orderId.toString());
if (N.egt(returnAmount.add(payAmount), orderAmount)) {
orderInfo.setStatus("refund");
}
@ -614,35 +605,31 @@ public class PayService {
tbOrderInfoMapper.insert(newOrderInfo);
//更新子单表
if(ObjectUtil.isNotEmpty(detailPos)&&detailPos.size()>0){
if (ObjectUtil.isNotEmpty(detailPos) && detailPos.size() > 0) {
tbOrderDetailMapper.updateBatchOrderDetail(detailPos);
}
//添加子表信息
if(ObjectUtil.isNotEmpty(returnDetail)&&returnDetail.size()>0){
tbOrderDetailMapper.batchInsert(returnDetail,newOrderInfo.getId().toString());
if (ObjectUtil.isNotEmpty(returnDetail) && returnDetail.size() > 0) {
tbOrderDetailMapper.batchInsert(returnDetail, newOrderInfo.getId().toString());
}
JSONObject jsonObject=new JSONObject();
jsonObject.put("token",token);
jsonObject.put("type","return");
jsonObject.put("orderId",0);
jsonObject.put("amount",newOrderInfo.getPayAmount());
JSONObject jsonObject = new JSONObject();
jsonObject.put("token", token);
jsonObject.put("type", "return");
jsonObject.put("orderId", 0);
jsonObject.put("amount", newOrderInfo.getPayAmount());
// jsonObject.put("data",new ReturnWTZInfo(orderId+"",newOrderInfo.getPayAmount(),details));
producer.putOrderCollect(jsonObject.toJSONString());
producer.printMechine(newOrderInfo.getId()+"");
producer.printMechine(newOrderInfo.getId() + "");
return Result.success(CodeEnum.SUCCESS);
}
public String generateReturnOrderNumber() {
String date = DateUtils.getSdfTimes();
Random random = new Random();
@ -651,9 +638,9 @@ public class PayService {
}
public static void main(String[] args){
public static void main(String[] args) {
System.out.println(String.format("%.2f",new BigDecimal(1).setScale(2,BigDecimal.ROUND_DOWN)));
System.out.println(String.format("%.2f", new BigDecimal(1).setScale(2, BigDecimal.ROUND_DOWN)));
}
}

View File

@ -382,7 +382,7 @@
select * from tb_cashier_cart where order_id=#{orderId} and `status`=#{status}
</select>
<select id="selectAllByMarketId" resultType="com.chaozhanggui.system.cashierservice.entity.TbCashierCart">
select * from tb_cashier_cart where master_id = #{maskerId} and trade_day = #{day} and shop_id = #{shopId} and status = 'create'
select * from tb_cashier_cart where master_id = #{masterId} and trade_day = #{day} and shop_id = #{shopId} and status = 'create'
</select>