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 CODE_NOT_TIME = new ErrorCode(1_007_904_008, "二维码过期");
|
||||
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 ORDER_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;
|
||||
@Schema(description = "人脸")
|
||||
private Long faceId;
|
||||
|
||||
@Schema(description = "人脸")
|
||||
private String type;
|
||||
}
|
||||
|
@ -106,7 +106,7 @@ public class AppStoreOrderController {
|
||||
}
|
||||
|
||||
@GetMapping("/refund")
|
||||
@Operation(summary = "退款")
|
||||
@Operation(summary = "用户退款申请")
|
||||
public CommonResult<Long> refund(Integer orderId) {
|
||||
return success(storeOrderService.refund(orderId));
|
||||
}
|
||||
@ -117,4 +117,15 @@ public class AppStoreOrderController {
|
||||
storeOrderService.reduction(orderId, money);
|
||||
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 javax.validation.Valid;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@ -108,4 +109,6 @@ public interface DiningPlatesService {
|
||||
List<String> getBindDiningPlatesList();
|
||||
|
||||
Map<String, String> checkBindAndUnBind(String diningPlatesNum, Long storeId);
|
||||
|
||||
BigDecimal getOrderMoney(Long orderId);
|
||||
}
|
@ -524,4 +524,11 @@ public class DiningPlatesServiceImpl implements DiningPlatesService {
|
||||
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.service.amount.DeductionService;
|
||||
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.refund.RefundService;
|
||||
import cn.iocoder.yudao.module.member.util.MemberConstants;
|
||||
@ -87,6 +88,8 @@ public class OrderServiceImpl implements OrderService {
|
||||
private BusinessService businessService;
|
||||
@Resource
|
||||
private DeductionService deductionService;
|
||||
@Resource
|
||||
private DiningPlatesService diningPlatesService;
|
||||
|
||||
@Override
|
||||
public Long createOrder(AppOrderSaveReqVO createReqVO) {
|
||||
@ -478,7 +481,12 @@ public class OrderServiceImpl implements OrderService {
|
||||
}
|
||||
|
||||
} 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);
|
||||
|
||||
|
@ -94,4 +94,6 @@ public interface StoreOrderService {
|
||||
Long refund(Integer orderId);
|
||||
|
||||
List<StoreOrderDO> selectPayOrder();
|
||||
|
||||
AddReqVO refundAdmin(Integer orderId);
|
||||
}
|
@ -309,6 +309,10 @@ public class StoreOrderServiceImpl implements StoreOrderService {
|
||||
@Override
|
||||
public void reduction(Long orderId, BigDecimal money) {
|
||||
StoreOrderDO storeOrderDO = storeOrderMapper.selectById(orderId);
|
||||
|
||||
|
||||
|
||||
|
||||
Double totalPrice = storeOrderDO.getTotalPrice();
|
||||
BigDecimal total = BigDecimal.valueOf(totalPrice).setScale(2, RoundingMode.HALF_UP);
|
||||
Double reductionPrice = storeOrderDO.getReductionPrice();
|
||||
@ -571,6 +575,58 @@ public class StoreOrderServiceImpl implements StoreOrderService {
|
||||
.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() {
|
||||
//计算金额
|
||||
//if (total.compareTo(wxAmount) <= 0) {
|
||||
|
@ -77,10 +77,11 @@ public class QRCodeWithJWTUtil {
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
String encode = DigestUtil.md5Hex("340"+ System.currentTimeMillis());
|
||||
System.out.println(encode);
|
||||
String encode = "https://yclhit.com:8896/qrCodes/code?id=177799";
|
||||
// System.out.println(encode);
|
||||
String fileName = "QRCode_" + "test" + ".png";
|
||||
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 timeSlot;
|
||||
|
||||
private Integer dailySigns;
|
||||
}
|
@ -80,4 +80,6 @@ public class DishesDO extends BaseDO {
|
||||
private String weekTime;
|
||||
|
||||
private String timeSlot;
|
||||
|
||||
private Integer dailySigns;
|
||||
}
|
@ -31,7 +31,9 @@ import org.springframework.validation.annotation.Validated;
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.time.format.TextStyle;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@ -74,7 +76,7 @@ public class DishesServiceImpl implements DishesService {
|
||||
LocalDateTime today = LocalDateTime.now();
|
||||
int hour = today.getHour();
|
||||
String time = dishesMapper.getTime(hour);
|
||||
String dayOfWeekInChinese = today.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.CHINESE);
|
||||
String dayOfWeekInChinese = getToday();
|
||||
if(StrUtil.isBlank(createReqVO.getWeekTime())){
|
||||
dishes.setWeekTime(dayOfWeekInChinese);
|
||||
}
|
||||
@ -124,7 +126,7 @@ public class DishesServiceImpl implements DishesService {
|
||||
LocalDateTime today = LocalDateTime.now();
|
||||
int hour = today.getHour();
|
||||
String time = dishesMapper.getTime(hour);
|
||||
String dayOfWeekInChinese = today.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.CHINESE);
|
||||
String dayOfWeekInChinese = getToday();
|
||||
dishes.setWeekTime(dayOfWeekInChinese);
|
||||
dishes.setTimeSlot(time);
|
||||
//计算每g多少钱
|
||||
@ -274,11 +276,7 @@ public class DishesServiceImpl implements DishesService {
|
||||
LocalDateTime today = LocalDateTime.now();
|
||||
int hour = today.getHour();
|
||||
String time = dishesMapper.getTime(hour);
|
||||
String dayOfWeekInChinese = today.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.CHINESE);
|
||||
|
||||
ArrayList<String> week = new ArrayList<>();
|
||||
week.add(dayOfWeekInChinese);
|
||||
week.add("整周");
|
||||
String dayOfWeekInChinese = getToday();
|
||||
|
||||
ArrayList<String> todayTime = new ArrayList<>();
|
||||
todayTime.add(time);
|
||||
@ -287,9 +285,9 @@ public class DishesServiceImpl implements DishesService {
|
||||
Long carteenId = deviceInfoService.getCarteen(getHearder());
|
||||
List<DishesDO> dishesDOS = dishesMapper.selectList(Wrappers.<DishesDO>lambdaQuery()
|
||||
.eq(DishesDO::getCarteenId, carteenId)
|
||||
.in(DishesDO::getWeekTime, week)
|
||||
.and(w->w.eq(DishesDO::getWeekTime, dayOfWeekInChinese).or().eq(DishesDO::getDailySigns, 1))
|
||||
.in(DishesDO::getTimeSlot, todayTime)
|
||||
.orderByDesc(DishesDO::getCreateTime));
|
||||
.orderByDesc(DishesDO::getDailySigns,DishesDO::getCreateTime));
|
||||
return dishesDOS;
|
||||
}
|
||||
|
||||
@ -302,15 +300,12 @@ public class DishesServiceImpl implements DishesService {
|
||||
}
|
||||
@Override
|
||||
public List<DishesDO> getTodayDishesNew() {
|
||||
LocalDateTime today = LocalDateTime.now();
|
||||
String dayOfWeekInChinese = today.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.CHINESE);
|
||||
|
||||
ArrayList<String> week = new ArrayList<>();
|
||||
week.add(dayOfWeekInChinese);
|
||||
week.add("整周");
|
||||
String dayOfWeekInChinese = getToday();
|
||||
|
||||
List<DishesDO> dishesDOS = dishesMapper.selectList(Wrappers.<DishesDO>lambdaQuery()
|
||||
.in(DishesDO::getWeekTime, week)
|
||||
.eq(DishesDO::getWeekTime, dayOfWeekInChinese)
|
||||
.or()
|
||||
.eq(DishesDO::getDailySigns,1)
|
||||
.orderByDesc(DishesDO::getCreateTime));
|
||||
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