This commit is contained in:
zengtao01
2024-09-29 17:31:59 +08:00
parent 0febebc82f
commit cc46939e86
11 changed files with 96 additions and 86 deletions

View File

@ -1,14 +1,7 @@
package cn.iocoder.yudao.framework.common.pojo;
import cn.iocoder.yudao.framework.common.exception.ErrorCode;
import cn.iocoder.yudao.framework.common.exception.ServiceException;
import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import org.springframework.util.Assert;
import java.io.Serializable;
import java.util.Objects;
/**
* 通用返回
@ -23,7 +16,7 @@ public class StoreResult<T> {
*
* @see ErrorCode#getCode()
*/
private String statusCode;
private Integer statusCode;
/**
* 返回数据
*/
@ -40,7 +33,7 @@ public class StoreResult<T> {
public static <T> StoreResult<T> success(T data) {
StoreResult<T> result = new StoreResult<>();
result.statusCode = "200";
result.statusCode = 200;
result.data = data;
result.message = "操作成功";
result.success = true;
@ -48,8 +41,8 @@ public class StoreResult<T> {
}
public static <T> StoreResult<T> fail(String message) {
StoreResult<T> result = new StoreResult<>();
result.statusCode = "300";
StoreResult<T> result =new StoreResult<>();
result.statusCode = 300;
result.message = message;
result.success = false;
return result;

View File

@ -1,12 +1,11 @@
package cn.iocoder.yudao.module.member.controller.admin.storegoods.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import lombok.Data;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 商品 Response VO")
@Data
@ -15,7 +14,7 @@ public class StoreGoodsRespVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "32656")
@ExcelProperty("编号")
private Integer goodId;
private Integer goodsId;
@Schema(description = "类别Id", example = "28357")
@ExcelProperty("类别Id")

View File

@ -1,16 +1,14 @@
package cn.iocoder.yudao.module.member.controller.admin.storegoods.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import lombok.Data;
@Schema(description = "管理后台 - 商品新增/修改 Request VO")
@Data
public class StoreGoodsSaveReqVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "32656")
private Integer goodId;
private Integer goodsId;
@Schema(description = "类别Id", example = "28357")
private Integer categoryId;

View File

@ -90,11 +90,11 @@ public class AppStoreController {
StoreResult<String> result = new StoreResult<>();
if (b) {
result.setStatusCode("200");
result.setStatusCode(200);
result.setMessage("操作成功");
result.setSuccess(true);
}else{
result.setStatusCode("300");
result.setStatusCode(300);
result.setSuccess(false);
}
return JsonUtils.toJsonString(result);
@ -113,7 +113,7 @@ public class AppStoreController {
if(CollectionUtil.isEmpty(goodsIds)){
return JsonUtils.toJsonString(goodsResult);
}
List<StoreGoodsDO> goodsDOS = storeGoodsService.getAll(null);
List<StoreGoodsDO> goodsDOS = storeGoodsService.getAll(goodsIds);
List<StoreGoodsTypeDO> goodsTypeDOS = goodsTypeService.getAll();
List<StoreGoodsListVo> goodData = BeanUtils.toBean(goodsDOS, StoreGoodsListVo.class);
List<StoreGoodsTypeListVo> categoryData = BeanUtils.toBean(goodsTypeDOS, StoreGoodsTypeListVo.class);
@ -146,11 +146,17 @@ public class AppStoreController {
@PostMapping("/mgcr/order/payByCardOrder")
@Operation(summary = "添加刷卡订单")
public String payByCardOrder(@RequestBody StoreOrderDto dto) {
Boolean b = orderService.cardPay(dto);
if(b){
String s1 = reverseHexAndConvert(dto.getCardNumber());
System.out.println(s1);
dto.setCardNumber(s1);
String s = orderService.cardPay(dto);
if("true".equals(s)){
return JsonUtils.toJsonString(StoreResult.success(null));
}else {
} else if ("false".equals(s)) {
return JsonUtils.toJsonString(StoreResult.fail("余额不足"));
}else {
return JsonUtils.toJsonString(StoreResult.fail(s));
}
}
@ -166,4 +172,23 @@ public class AppStoreController {
public String heartbeat() {
return JsonUtils.toJsonString(StoreResult.success(null));
}
public String reverseHexAndConvert(String hexStr) {
// 将十六进制字符串反转,每两位一组
StringBuilder reversedHex = new StringBuilder();
for (int i = 0; i < hexStr.length(); i += 2) {
reversedHex.insert(0, hexStr.substring(i, i + 2));
}
// 将反转后的十六进制字符串转换为十进制
long decimalNumber = Long.parseLong(reversedHex.toString(), 16);
// 将十进制数转换为字符串并确保它有10位不足的前面补零
String decimalStr = String.valueOf(decimalNumber);
while (decimalStr.length() < 10) {
decimalStr = "0" + decimalStr;
}
return decimalStr;
}
}

View File

@ -1,12 +1,11 @@
package cn.iocoder.yudao.module.member.controller.app.store.vo;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
@Data
public class StoreGoodsListVo {
private Integer goodId;
private Integer goodsId;
/**
* 类别Id
*/

View File

@ -1,11 +1,15 @@
package cn.iocoder.yudao.module.member.dal.dataobject.storegoods;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
/**
* 商品 DO
@ -26,7 +30,7 @@ public class StoreGoodsDO extends BaseDO {
* 编号
*/
@TableId
private Integer goodId;
private Integer goodsId;
/**
* 类别Id
*/

View File

@ -1,23 +1,21 @@
package cn.iocoder.yudao.module.member.service.storegoods;
import cn.hutool.core.collection.CollectionUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.member.controller.admin.storegoods.vo.StoreGoodsPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.storegoods.vo.StoreGoodsSaveReqVO;
import cn.iocoder.yudao.module.member.dal.dataobject.storegoods.StoreGoodsDO;
import cn.iocoder.yudao.module.member.dal.mysql.storegoods.StoreGoodsMapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import cn.iocoder.yudao.module.member.controller.admin.storegoods.vo.*;
import cn.iocoder.yudao.module.member.dal.dataobject.storegoods.StoreGoodsDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.member.dal.mysql.storegoods.StoreGoodsMapper;
import javax.annotation.Resource;
import java.util.List;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.*;
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.STORE_GOODS_NOT_EXISTS;
/**
* 商品 Service 实现类
@ -37,13 +35,13 @@ public class StoreGoodsServiceImpl implements StoreGoodsService {
StoreGoodsDO storeGoods = BeanUtils.toBean(createReqVO, StoreGoodsDO.class);
storeGoodsMapper.insert(storeGoods);
// 返回
return storeGoods.getGoodId();
return storeGoods.getGoodsId();
}
@Override
public void updateStoreGoods(StoreGoodsSaveReqVO updateReqVO) {
// 校验存在
validateStoreGoodsExists(updateReqVO.getGoodId());
validateStoreGoodsExists(updateReqVO.getGoodsId());
// 更新
StoreGoodsDO updateObj = BeanUtils.toBean(updateReqVO, StoreGoodsDO.class);
storeGoodsMapper.updateById(updateObj);
@ -78,7 +76,7 @@ public class StoreGoodsServiceImpl implements StoreGoodsService {
if (CollectionUtil.isEmpty(goodsIds)) {
return storeGoodsMapper.selectList();
}else {
return storeGoodsMapper.selectList(new LambdaQueryWrapper<StoreGoodsDO>().in(StoreGoodsDO::getGoodId, goodsIds));
return storeGoodsMapper.selectList(new LambdaQueryWrapper<StoreGoodsDO>().in(StoreGoodsDO::getGoodsId, goodsIds));
}
}

View File

@ -1,16 +1,15 @@
package cn.iocoder.yudao.module.member.service.storeorder;
import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.member.controller.admin.storeorder.vo.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.member.controller.admin.storeorder.vo.StoreOrderPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.storeorder.vo.StoreOrderSaveReqVO;
import cn.iocoder.yudao.module.member.controller.app.store.dto.FacePayDto;
import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreOrderDto;
import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreOrderUploadDto;
import cn.iocoder.yudao.module.member.controller.app.store.vo.UserInfoVo;
import cn.iocoder.yudao.module.member.dal.dataobject.storeorder.StoreOrderDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import org.springframework.web.bind.annotation.RequestBody;
import javax.validation.Valid;
/**
* 商品订单 Service 接口
@ -61,7 +60,7 @@ public interface StoreOrderService {
UserInfoVo facePay(FacePayDto dto);
Boolean cardPay(StoreOrderDto dto);
String cardPay(StoreOrderDto dto);
void batchCacheOrder(StoreOrderUploadDto dto);
}

View File

@ -1,48 +1,40 @@
package cn.iocoder.yudao.module.member.service.storeorder;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.math.Money;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.iocoder.yudao.framework.common.exception.ServiceException;
import cn.iocoder.yudao.module.member.controller.app.store.dto.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.member.controller.admin.storeorder.vo.StoreOrderPageReqVO;
import cn.iocoder.yudao.module.member.controller.admin.storeorder.vo.StoreOrderSaveReqVO;
import cn.iocoder.yudao.module.member.controller.app.store.dto.FacePayDto;
import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreGoodsDto;
import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreLocalOrderDto;
import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreOrderDto;
import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreOrderUploadDto;
import cn.iocoder.yudao.module.member.controller.app.store.vo.UserInfoVo;
import cn.iocoder.yudao.module.member.dal.dataobject.card.CardDO;
import cn.iocoder.yudao.module.member.dal.dataobject.diningplates.DiningPlatesDO;
import cn.iocoder.yudao.module.member.dal.dataobject.order.DishOrderDO;
import cn.iocoder.yudao.module.member.dal.dataobject.storeorder.StoreOrderDO;
import cn.iocoder.yudao.module.member.dal.dataobject.storeorderdetail.StoreOrderDetailDO;
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
import cn.iocoder.yudao.module.member.dal.mysql.card.CardMapper;
import cn.iocoder.yudao.module.member.dal.mysql.storeorder.StoreOrderMapper;
import cn.iocoder.yudao.module.member.enums.CostTypeEnum;
import cn.iocoder.yudao.module.member.enums.TimePeriodEnum;
import cn.iocoder.yudao.module.member.service.card.CardService;
import cn.iocoder.yudao.module.member.service.storeorderdetail.StoreOrderDetailService;
import cn.iocoder.yudao.module.member.service.user.MemberUserService;
import com.sun.org.apache.regexp.internal.RE;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
import cn.iocoder.yudao.module.member.controller.admin.storeorder.vo.*;
import cn.iocoder.yudao.module.member.dal.dataobject.storeorder.StoreOrderDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.member.dal.mysql.storeorder.StoreOrderMapper;
import java.util.ArrayList;
import java.util.List;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.*;
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.STORE_ORDER_NOT_EXISTS;
/**
* 商品订单 Service 实现类
@ -147,18 +139,18 @@ public class StoreOrderServiceImpl implements StoreOrderService {
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean cardPay(StoreOrderDto dto) {
public String cardPay(StoreOrderDto dto) {
Double totalPrice = createOrder(dto).getTotalPrice();
BigDecimal total = BigDecimal.valueOf(totalPrice).setScale(2, RoundingMode.HALF_UP);
MemberUserDO userDO = userService.getByCardId(dto.getCardNumber());
if (ObjectUtil.isEmpty(userDO)){
throw new ServiceException(CARD_NOT_BIND_USER);
return "该卡未绑定用户";
}
BigDecimal compute = compute(total, userDO.getId());
if (compute.compareTo(BigDecimal.ZERO) < 0) {
return false;
return "false";
} else {
return true;
return "true";
}
}

View File

@ -130,6 +130,9 @@ public class DeviceInfoServiceImpl implements DeviceInfoService {
List<FaceDeviceInfoDO> faceDeviceInfoDOS = faceDeviceInfoMapper.selectList();
List<String> macList = faceDeviceInfoDOS.stream().map(FaceDeviceInfoDO::getMac).collect(Collectors.toList());
for (String deviceSn : macList){
if(StringUtils.isBlank(deviceSn)){
continue;
}
String time = RedisTemplate.opsForValue().get(deviceSn);
if(StringUtils.isBlank(time)){
upList.add(deviceSn);

View File

@ -12,8 +12,8 @@ spring:
servlet:
# 文件上传相关配置项
multipart:
max-file-size: 20MB # 单个文件大小
max-request-size: 40MB # 设置总上传的文件大小
max-file-size: 200MB # 单个文件大小
max-request-size: 400MB # 设置总上传的文件大小
mvc:
pathmatch:
matching-strategy: ANT_PATH_MATCHER # 解决 SpringFox 与 SpringBoot 2.6.x 不兼容的问题,参见 SpringFoxHandlerProviderBeanPostProcessor 类