Merge remote-tracking branch 'origin/支付优化测试' into 支付优化测试
This commit is contained in:
@ -116,6 +116,7 @@ public interface ErrorCodeConstants {
|
|||||||
ErrorCode AMOUNT_NOT_ENOUGH = new ErrorCode(1_007_904_008, "金额不足");
|
ErrorCode AMOUNT_NOT_ENOUGH = new ErrorCode(1_007_904_008, "金额不足");
|
||||||
ErrorCode CODE_NOT_TIME = new ErrorCode(1_007_904_008, "二维码过期");
|
ErrorCode CODE_NOT_TIME = new ErrorCode(1_007_904_008, "二维码过期");
|
||||||
ErrorCode STATUS_ERROR = new ErrorCode(1_007_904_007, "订单已完成或已退款");
|
ErrorCode STATUS_ERROR = new ErrorCode(1_007_904_007, "订单已完成或已退款");
|
||||||
|
ErrorCode STATUS_ERROR_REFUND = new ErrorCode(1_007_904_007, "订单已退款");
|
||||||
ErrorCode STATUS_ERROR_CANCEL = new ErrorCode(1_007_904_007, "订单已取消");
|
ErrorCode STATUS_ERROR_CANCEL = new ErrorCode(1_007_904_007, "订单已取消");
|
||||||
ErrorCode ORDER_FAIL = new ErrorCode(1_007_904_008, "下单失败");
|
ErrorCode ORDER_FAIL = new ErrorCode(1_007_904_008, "下单失败");
|
||||||
ErrorCode ORDER_CANCEL_FAIL = new ErrorCode(1_007_904_008, "订单取消失败");
|
ErrorCode ORDER_CANCEL_FAIL = new ErrorCode(1_007_904_008, "订单取消失败");
|
||||||
|
@ -64,4 +64,7 @@ public class MemberUserBaseVO {
|
|||||||
private String cardId;
|
private String cardId;
|
||||||
@Schema(description = "人脸")
|
@Schema(description = "人脸")
|
||||||
private Long faceId;
|
private Long faceId;
|
||||||
|
|
||||||
|
@Schema(description = "人脸")
|
||||||
|
private String type;
|
||||||
}
|
}
|
||||||
|
@ -106,7 +106,7 @@ public class AppStoreOrderController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/refund")
|
@GetMapping("/refund")
|
||||||
@Operation(summary = "退款")
|
@Operation(summary = "用户退款申请")
|
||||||
public CommonResult<Long> refund(Integer orderId) {
|
public CommonResult<Long> refund(Integer orderId) {
|
||||||
return success(storeOrderService.refund(orderId));
|
return success(storeOrderService.refund(orderId));
|
||||||
}
|
}
|
||||||
@ -117,4 +117,15 @@ public class AppStoreOrderController {
|
|||||||
storeOrderService.reduction(orderId, money);
|
storeOrderService.reduction(orderId, money);
|
||||||
return CommonResult.success(true);
|
return CommonResult.success(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/refundAdmin")
|
||||||
|
@Operation(summary = "管理员执行退款")
|
||||||
|
public CommonResult<Boolean> refundAdmin(Integer orderId) {
|
||||||
|
AddReqVO addReqVO = storeOrderService.refundAdmin(orderId);
|
||||||
|
//记录
|
||||||
|
memberAsyncService.batchRecord(addReqVO);
|
||||||
|
return success(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
@ -9,6 +9,7 @@ import cn.iocoder.yudao.module.member.controller.app.user.vo.AppUserInfoCardVO;
|
|||||||
import cn.iocoder.yudao.module.member.dal.dataobject.diningplates.DiningPlatesDO;
|
import cn.iocoder.yudao.module.member.dal.dataobject.diningplates.DiningPlatesDO;
|
||||||
|
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -108,4 +109,6 @@ public interface DiningPlatesService {
|
|||||||
List<String> getBindDiningPlatesList();
|
List<String> getBindDiningPlatesList();
|
||||||
|
|
||||||
Map<String, String> checkBindAndUnBind(String diningPlatesNum, Long storeId);
|
Map<String, String> checkBindAndUnBind(String diningPlatesNum, Long storeId);
|
||||||
|
|
||||||
|
BigDecimal getOrderMoney(Long orderId);
|
||||||
}
|
}
|
@ -524,4 +524,11 @@ public class DiningPlatesServiceImpl implements DiningPlatesService {
|
|||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BigDecimal getOrderMoney(Long orderId) {
|
||||||
|
DiningPlatesDO diningPlatesDO = diningPlatesMapper.selectOne(Wrappers.<DiningPlatesDO>lambdaQuery()
|
||||||
|
.eq(DiningPlatesDO::getOrderId, orderId));
|
||||||
|
String s = stringRedisTemplate.opsForValue().get(diningPlatesDO.getDiningPlatesNum() + "-" + diningPlatesDO.getStoreId());
|
||||||
|
return StrUtil.isNotBlank(s)?new BigDecimal(s):null;
|
||||||
|
}
|
||||||
}
|
}
|
@ -31,6 +31,7 @@ import cn.iocoder.yudao.module.member.enums.CostTypeEnum;
|
|||||||
import cn.iocoder.yudao.module.member.enums.TimePeriodEnum;
|
import cn.iocoder.yudao.module.member.enums.TimePeriodEnum;
|
||||||
import cn.iocoder.yudao.module.member.service.amount.DeductionService;
|
import cn.iocoder.yudao.module.member.service.amount.DeductionService;
|
||||||
import cn.iocoder.yudao.module.member.service.business.BusinessService;
|
import cn.iocoder.yudao.module.member.service.business.BusinessService;
|
||||||
|
import cn.iocoder.yudao.module.member.service.diningplates.DiningPlatesService;
|
||||||
import cn.iocoder.yudao.module.member.service.orderdetail.OrderDetailService;
|
import cn.iocoder.yudao.module.member.service.orderdetail.OrderDetailService;
|
||||||
import cn.iocoder.yudao.module.member.service.refund.RefundService;
|
import cn.iocoder.yudao.module.member.service.refund.RefundService;
|
||||||
import cn.iocoder.yudao.module.member.util.MemberConstants;
|
import cn.iocoder.yudao.module.member.util.MemberConstants;
|
||||||
@ -87,6 +88,8 @@ public class OrderServiceImpl implements OrderService {
|
|||||||
private BusinessService businessService;
|
private BusinessService businessService;
|
||||||
@Resource
|
@Resource
|
||||||
private DeductionService deductionService;
|
private DeductionService deductionService;
|
||||||
|
@Resource
|
||||||
|
private DiningPlatesService diningPlatesService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Long createOrder(AppOrderSaveReqVO createReqVO) {
|
public Long createOrder(AppOrderSaveReqVO createReqVO) {
|
||||||
@ -478,7 +481,12 @@ public class OrderServiceImpl implements OrderService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
dishOrderDO.setReductionAmount(dishOrderDO.getReductionAmount().add(money));
|
BigDecimal orderMoney = diningPlatesService.getOrderMoney(orderId);
|
||||||
|
BigDecimal add = dishOrderDO.getReductionAmount().add(money);
|
||||||
|
if (orderMoney != null && orderMoney.compareTo(add) < 0) {
|
||||||
|
add = orderMoney;
|
||||||
|
}
|
||||||
|
dishOrderDO.setReductionAmount(add);
|
||||||
}
|
}
|
||||||
dishOrderMapper.updateById(dishOrderDO);
|
dishOrderMapper.updateById(dishOrderDO);
|
||||||
|
|
||||||
|
@ -94,4 +94,6 @@ public interface StoreOrderService {
|
|||||||
Long refund(Integer orderId);
|
Long refund(Integer orderId);
|
||||||
|
|
||||||
List<StoreOrderDO> selectPayOrder();
|
List<StoreOrderDO> selectPayOrder();
|
||||||
|
|
||||||
|
AddReqVO refundAdmin(Integer orderId);
|
||||||
}
|
}
|
@ -309,6 +309,10 @@ public class StoreOrderServiceImpl implements StoreOrderService {
|
|||||||
@Override
|
@Override
|
||||||
public void reduction(Long orderId, BigDecimal money) {
|
public void reduction(Long orderId, BigDecimal money) {
|
||||||
StoreOrderDO storeOrderDO = storeOrderMapper.selectById(orderId);
|
StoreOrderDO storeOrderDO = storeOrderMapper.selectById(orderId);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Double totalPrice = storeOrderDO.getTotalPrice();
|
Double totalPrice = storeOrderDO.getTotalPrice();
|
||||||
BigDecimal total = BigDecimal.valueOf(totalPrice).setScale(2, RoundingMode.HALF_UP);
|
BigDecimal total = BigDecimal.valueOf(totalPrice).setScale(2, RoundingMode.HALF_UP);
|
||||||
Double reductionPrice = storeOrderDO.getReductionPrice();
|
Double reductionPrice = storeOrderDO.getReductionPrice();
|
||||||
@ -571,6 +575,58 @@ public class StoreOrderServiceImpl implements StoreOrderService {
|
|||||||
.eq(StoreOrderDO::getStatus,StoreOrderStatusEnum.PAY.getCode()));
|
.eq(StoreOrderDO::getStatus,StoreOrderStatusEnum.PAY.getCode()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AddReqVO refundAdmin(Integer orderId) {
|
||||||
|
StoreOrderDO storeOrderDO;
|
||||||
|
synchronized (getStoreOrderLock(LockManager.CANCEL_KEY)) {
|
||||||
|
storeOrderDO = storeOrderMapper.selectById(orderId);
|
||||||
|
if(ObjectUtil.isEmpty(storeOrderDO)){
|
||||||
|
throw exception(STORE_ORDER_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
if( storeOrderDO.getStatus().equals(StoreOrderStatusEnum.REFUND.getCode())){
|
||||||
|
throw exception(STATUS_ERROR_REFUND);
|
||||||
|
}
|
||||||
|
if(storeOrderDO.getStatus().equals(StoreOrderStatusEnum.CANCEL.getCode())){
|
||||||
|
throw exception(STATUS_ERROR_CANCEL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//修改状态
|
||||||
|
storeOrderDO.setStatus(StoreOrderStatusEnum.REFUND.getCode());
|
||||||
|
storeOrderMapper.updateById(storeOrderDO);
|
||||||
|
|
||||||
|
//退款
|
||||||
|
deductionService.reduction(storeOrderDO.getUserId(),BigDecimal.valueOf(storeOrderDO.getTotalPrice())
|
||||||
|
,BigDecimal.ZERO,BigDecimal.valueOf(storeOrderDO.getTotalPrice()),BigDecimal.ZERO);
|
||||||
|
|
||||||
|
//更新库存
|
||||||
|
List<StoreOrderDetailDO> listByOrderId = orderDetailService.getListByOrderId(storeOrderDO.getOrderId());
|
||||||
|
|
||||||
|
AddReqVO addReqVO = new AddReqVO();
|
||||||
|
addReqVO.setType(InventoryTypeEnum.IN.getCode());
|
||||||
|
addReqVO.setOutType(OutTypeEnum.ORDER_ADD.getCode());
|
||||||
|
List<GoodsInfoReqVO> infos = new ArrayList<>();
|
||||||
|
for (StoreOrderDetailDO detail : listByOrderId){
|
||||||
|
GoodsInfoReqVO vo = new GoodsInfoReqVO();
|
||||||
|
BeanUtil.copyProperties(detail,vo);
|
||||||
|
vo.setCarteenId(storeOrderDO.getCarteenId());
|
||||||
|
infos.add(vo);
|
||||||
|
}
|
||||||
|
addReqVO.setList(infos);
|
||||||
|
storeGoodsInventoryService.createStoreGoodsInventory(addReqVO);
|
||||||
|
|
||||||
|
//营业数据
|
||||||
|
StatisticsVo statisticsVo = new StatisticsVo();
|
||||||
|
statisticsVo.setCarteenId(storeOrderDO.getCarteenId());
|
||||||
|
statisticsVo.setTotalMoney(BigDecimal.valueOf(storeOrderDO.getTotalPrice()).negate());
|
||||||
|
statisticsVo.setOrderSum(-1);
|
||||||
|
statisticsVo.setTime(storeOrderDO.getCreateTime());
|
||||||
|
statisticsVo.setOrderId(storeOrderDO.getOrderId().longValue());
|
||||||
|
storeBusinessService.updateStatistics(statisticsVo);
|
||||||
|
|
||||||
|
return addReqVO;
|
||||||
|
}
|
||||||
|
|
||||||
public void test() {
|
public void test() {
|
||||||
//计算金额
|
//计算金额
|
||||||
//if (total.compareTo(wxAmount) <= 0) {
|
//if (total.compareTo(wxAmount) <= 0) {
|
||||||
|
@ -77,10 +77,11 @@ public class QRCodeWithJWTUtil {
|
|||||||
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
String encode = DigestUtil.md5Hex("340"+ System.currentTimeMillis());
|
String encode = "https://yclhit.com:8896/qrCodes/code?id=177799";
|
||||||
System.out.println(encode);
|
// System.out.println(encode);
|
||||||
String fileName = "QRCode_" + "test" + ".png";
|
String fileName = "QRCode_" + "test" + ".png";
|
||||||
String path = QRCodeWithJWTUtil.BASE_PATH+fileName;
|
String path = QRCodeWithJWTUtil.BASE_PATH+fileName;
|
||||||
QRCodeWithJWTUtil.generateQRCode(encode, 350, 350, path);
|
String s = QRCodeWithJWTUtil.generateQRCode(encode, 350, 350, path);
|
||||||
|
System.out.println(s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -67,4 +67,6 @@ public class DishesSaveReqVO {
|
|||||||
private String weekTime;
|
private String weekTime;
|
||||||
|
|
||||||
private String timeSlot;
|
private String timeSlot;
|
||||||
|
|
||||||
|
private Integer dailySigns;
|
||||||
}
|
}
|
@ -80,4 +80,6 @@ public class DishesDO extends BaseDO {
|
|||||||
private String weekTime;
|
private String weekTime;
|
||||||
|
|
||||||
private String timeSlot;
|
private String timeSlot;
|
||||||
|
|
||||||
|
private Integer dailySigns;
|
||||||
}
|
}
|
@ -31,7 +31,9 @@ import org.springframework.validation.annotation.Validated;
|
|||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.time.format.TextStyle;
|
import java.time.format.TextStyle;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -74,7 +76,7 @@ public class DishesServiceImpl implements DishesService {
|
|||||||
LocalDateTime today = LocalDateTime.now();
|
LocalDateTime today = LocalDateTime.now();
|
||||||
int hour = today.getHour();
|
int hour = today.getHour();
|
||||||
String time = dishesMapper.getTime(hour);
|
String time = dishesMapper.getTime(hour);
|
||||||
String dayOfWeekInChinese = today.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.CHINESE);
|
String dayOfWeekInChinese = getToday();
|
||||||
if(StrUtil.isBlank(createReqVO.getWeekTime())){
|
if(StrUtil.isBlank(createReqVO.getWeekTime())){
|
||||||
dishes.setWeekTime(dayOfWeekInChinese);
|
dishes.setWeekTime(dayOfWeekInChinese);
|
||||||
}
|
}
|
||||||
@ -124,7 +126,7 @@ public class DishesServiceImpl implements DishesService {
|
|||||||
LocalDateTime today = LocalDateTime.now();
|
LocalDateTime today = LocalDateTime.now();
|
||||||
int hour = today.getHour();
|
int hour = today.getHour();
|
||||||
String time = dishesMapper.getTime(hour);
|
String time = dishesMapper.getTime(hour);
|
||||||
String dayOfWeekInChinese = today.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.CHINESE);
|
String dayOfWeekInChinese = getToday();
|
||||||
dishes.setWeekTime(dayOfWeekInChinese);
|
dishes.setWeekTime(dayOfWeekInChinese);
|
||||||
dishes.setTimeSlot(time);
|
dishes.setTimeSlot(time);
|
||||||
//计算每g多少钱
|
//计算每g多少钱
|
||||||
@ -274,11 +276,7 @@ public class DishesServiceImpl implements DishesService {
|
|||||||
LocalDateTime today = LocalDateTime.now();
|
LocalDateTime today = LocalDateTime.now();
|
||||||
int hour = today.getHour();
|
int hour = today.getHour();
|
||||||
String time = dishesMapper.getTime(hour);
|
String time = dishesMapper.getTime(hour);
|
||||||
String dayOfWeekInChinese = today.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.CHINESE);
|
String dayOfWeekInChinese = getToday();
|
||||||
|
|
||||||
ArrayList<String> week = new ArrayList<>();
|
|
||||||
week.add(dayOfWeekInChinese);
|
|
||||||
week.add("整周");
|
|
||||||
|
|
||||||
ArrayList<String> todayTime = new ArrayList<>();
|
ArrayList<String> todayTime = new ArrayList<>();
|
||||||
todayTime.add(time);
|
todayTime.add(time);
|
||||||
@ -287,9 +285,9 @@ public class DishesServiceImpl implements DishesService {
|
|||||||
Long carteenId = deviceInfoService.getCarteen(getHearder());
|
Long carteenId = deviceInfoService.getCarteen(getHearder());
|
||||||
List<DishesDO> dishesDOS = dishesMapper.selectList(Wrappers.<DishesDO>lambdaQuery()
|
List<DishesDO> dishesDOS = dishesMapper.selectList(Wrappers.<DishesDO>lambdaQuery()
|
||||||
.eq(DishesDO::getCarteenId, carteenId)
|
.eq(DishesDO::getCarteenId, carteenId)
|
||||||
.in(DishesDO::getWeekTime, week)
|
.and(w->w.eq(DishesDO::getWeekTime, dayOfWeekInChinese).or().eq(DishesDO::getDailySigns, 1))
|
||||||
.in(DishesDO::getTimeSlot, todayTime)
|
.in(DishesDO::getTimeSlot, todayTime)
|
||||||
.orderByDesc(DishesDO::getCreateTime));
|
.orderByDesc(DishesDO::getDailySigns,DishesDO::getCreateTime));
|
||||||
return dishesDOS;
|
return dishesDOS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -302,15 +300,12 @@ public class DishesServiceImpl implements DishesService {
|
|||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public List<DishesDO> getTodayDishesNew() {
|
public List<DishesDO> getTodayDishesNew() {
|
||||||
LocalDateTime today = LocalDateTime.now();
|
String dayOfWeekInChinese = getToday();
|
||||||
String dayOfWeekInChinese = today.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.CHINESE);
|
|
||||||
|
|
||||||
ArrayList<String> week = new ArrayList<>();
|
|
||||||
week.add(dayOfWeekInChinese);
|
|
||||||
week.add("整周");
|
|
||||||
|
|
||||||
List<DishesDO> dishesDOS = dishesMapper.selectList(Wrappers.<DishesDO>lambdaQuery()
|
List<DishesDO> dishesDOS = dishesMapper.selectList(Wrappers.<DishesDO>lambdaQuery()
|
||||||
.in(DishesDO::getWeekTime, week)
|
.eq(DishesDO::getWeekTime, dayOfWeekInChinese)
|
||||||
|
.or()
|
||||||
|
.eq(DishesDO::getDailySigns,1)
|
||||||
.orderByDesc(DishesDO::getCreateTime));
|
.orderByDesc(DishesDO::getCreateTime));
|
||||||
return dishesDOS;
|
return dishesDOS;
|
||||||
}
|
}
|
||||||
@ -326,4 +321,11 @@ public class DishesServiceImpl implements DishesService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getToday(){
|
||||||
|
LocalDate currentDate = LocalDate.now();
|
||||||
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
||||||
|
return currentDate.format(formatter);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
Reference in New Issue
Block a user