diff --git a/pjcloud-app-server/pjcloud-app-server-biz/pom.xml b/pjcloud-app-server/pjcloud-app-server-biz/pom.xml
index 6788632a8..cfd96feff 100644
--- a/pjcloud-app-server/pjcloud-app-server-biz/pom.xml
+++ b/pjcloud-app-server/pjcloud-app-server-biz/pom.xml
@@ -13,6 +13,10 @@
pjcloud-app-server-biz
+
+ com.bsd
+ pjcloud-upms-api
+
org.springframework.boot
diff --git a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/dto/CanteenSpuUpdateStockReqDTO.java b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/dto/CanteenSpuUpdateStockReqDTO.java
new file mode 100644
index 000000000..328dafaf9
--- /dev/null
+++ b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/dto/CanteenSpuUpdateStockReqDTO.java
@@ -0,0 +1,47 @@
+package com.bsd.pjcloud.canteen.dto;
+
+import jakarta.validation.constraints.NotNull;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * 商品 SKU 更新库存 Request DTO
+ *
+ * @author LeeYan9
+ * @since 2022-08-26
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class CanteenSpuUpdateStockReqDTO {
+
+ /**
+ * 商品 SKU
+ */
+ @NotNull(message = "商品 SPU 不能为空")
+ private List- items;
+
+ @Data
+ public static class Item {
+
+ /**
+ * 商品 SKU 编号
+ */
+ @NotNull(message = "商品 SPU 编号不能为空")
+ private Long id;
+
+ /**
+ * 库存变化数量
+ *
+ * 正数:增加库存
+ * 负数:扣减库存
+ */
+ @NotNull(message = "库存变化数量不能为空")
+ private Integer incrCount;
+
+ }
+
+}
diff --git a/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/vo/ADCanteenDailyMenuListVO.java b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/vo/ADCanteenDailyMenuListVO.java
new file mode 100644
index 000000000..c428ad969
--- /dev/null
+++ b/pjcloud-canteen/pjcloud-canteen-api/src/main/java/com/bsd/pjcloud/canteen/vo/ADCanteenDailyMenuListVO.java
@@ -0,0 +1,42 @@
+package com.bsd.pjcloud.canteen.vo;
+
+import lombok.Data;
+
+@Data
+public class ADCanteenDailyMenuListVO {
+ /**
+ * 每日菜品id
+ */
+ private Long id;
+
+ /**
+ * spuid
+ */
+ private Long spuId;
+
+ /**
+ * 菜品名称
+ */
+ private String name;
+ /**
+ * 商品价格,单位使用:分
+ */
+ private Integer price;
+ /**
+ * 菜品分类编号
+ */
+ private Long categoryId;
+ /**
+ * 菜品封面图
+ */
+ private String picUrl;
+ /**
+ * 库存
+ */
+ private Integer stock;
+
+ /**
+ * 时间类型
+ */
+ private Integer hourType;
+}
diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenDailyMenuController.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenDailyMenuController.java
index 78f3ad657..0ed91fb9d 100644
--- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenDailyMenuController.java
+++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenDailyMenuController.java
@@ -171,4 +171,14 @@ public class CanteenDailyMenuController {
}
+// ---------APP------------
+ @GetMapping("/ad/getCanteenList")
+ @SysLog("查询每日菜品列表")
+ public R getCanteenList(@RequestParam("day") String day,
+ @RequestParam(value = "hourType", required = false) Integer hourType,
+ @RequestParam(value = "categoryId", required = false) Long categoryId) {
+
+ return R.ok(canteenDailyMenuService.getCanteenMenuList(day,hourType,categoryId));
+ }
+
}
\ No newline at end of file
diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenSpuController.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenSpuController.java
index bc5d3e64b..4919cb4ac 100644
--- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenSpuController.java
+++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/controller/CanteenSpuController.java
@@ -7,6 +7,7 @@ import com.alibaba.excel.util.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.bsd.pjcloud.canteen.dto.CanteenSpuUpdateStockReqDTO;
import com.bsd.pjcloud.canteen.entity.CanteenDailyMenuEntity;
import com.bsd.pjcloud.common.core.util.R;
import com.bsd.pjcloud.common.log.annotation.SysLog;
@@ -126,4 +127,13 @@ public class CanteenSpuController {
+
+// --------------APP-----------------
+
+
+ @PostMapping("/ad/updateSkuStock")
+ @SysLog("更新菜品库存")
+ public R updateSkuStock(@RequestBody CanteenSpuUpdateStockReqDTO updateStockReqDTO){
+ return canteenSpuService.updateSkuStock(updateStockReqDTO);
+ }
}
\ No newline at end of file
diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/mapper/CanteenDailyMenuMapper.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/mapper/CanteenDailyMenuMapper.java
index 52be9acaa..db089491e 100644
--- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/mapper/CanteenDailyMenuMapper.java
+++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/mapper/CanteenDailyMenuMapper.java
@@ -15,4 +15,15 @@ public interface CanteenDailyMenuMapper extends PjcloudBaseMapper selectTimeFood(@Param("time") String time,@Param("merchantId") Long merchantId,
@Param("categoryId") Long categoryId, DataScope dataScope);
+
+
+ /**
+ * ad查询菜品列表
+ * @param day
+ * @param hourType
+ * @param categoryId
+ * @return
+ */
+ Object getCanteenMenuList(@Param("day") String day,@Param("hourType") Integer hourType,
+ @Param("categoryId") Long categoryId,DataScope dataScope);
}
\ No newline at end of file
diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/mapper/CanteenSpuMapper.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/mapper/CanteenSpuMapper.java
index d46219ba0..2449b7b3c 100644
--- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/mapper/CanteenSpuMapper.java
+++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/mapper/CanteenSpuMapper.java
@@ -1,5 +1,6 @@
package com.bsd.pjcloud.canteen.mapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.bsd.pjcloud.canteen.dto.DailyMenuAll;
import com.bsd.pjcloud.common.data.datascope.DataScope;
import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper;
@@ -12,7 +13,27 @@ import java.util.List;
public interface CanteenSpuMapper extends PjcloudBaseMapper {
-
-
-
+ /**
+ * 更新商品 SPU 库存
+ *
+ * @param id 商品 SPU 编号
+ * @param incrCount 增加的库存数量
+ */
+ default int updateStock(Long id, Integer incrCount) {
+ // 拼接 SQL
+ if (incrCount == 0) {
+ return 0;
+ }
+ String sql;
+ if (incrCount > 0) {
+ sql = " stock = stock + " + incrCount + ", sales_count = sales_count - " + incrCount;
+ } else {
+ sql = " stock = stock - " + Math.abs(incrCount) + ", sales_count = sales_count + " + Math.abs(incrCount);
+ }
+ // 执行更新
+ LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper()
+ .setSql(sql)
+ .eq(CanteenSpuEntity::getId, id);
+ return update(null, updateWrapper);
+ }
}
\ No newline at end of file
diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/CanteenDailyMenuService.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/CanteenDailyMenuService.java
index 7c498753e..d3596762a 100644
--- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/CanteenDailyMenuService.java
+++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/CanteenDailyMenuService.java
@@ -28,4 +28,14 @@ public interface CanteenDailyMenuService extends IService {
Object selectFoodList(LambdaQueryWrapper wrapper);
+ /**
+ * 更新库存
+ * @param updateStockReqDTO
+ * @return
+ */
+ R updateSkuStock(CanteenSpuUpdateStockReqDTO updateStockReqDTO);
+
}
\ No newline at end of file
diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenDailyMenuServiceImpl.java b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenDailyMenuServiceImpl.java
index 05d9a40a8..d758ee9bb 100644
--- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenDailyMenuServiceImpl.java
+++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/java/com/bsd/pjcloud/canteen/service/impl/CanteenDailyMenuServiceImpl.java
@@ -88,4 +88,11 @@ public class CanteenDailyMenuServiceImpl extends ServiceImpl implements CanteenSpuService {
+
+ private final CanteenDailyMenuService coupleDailyMenuService;
@Override
public Object selectFoodList(LambdaQueryWrapper wrapper) {
return baseMapper.selectListByScope(wrapper, DataScope.of());
}
+ @Override
+ @Transactional
+ public R updateSkuStock(CanteenSpuUpdateStockReqDTO updateStockReqDTO) {
+ // 更新 SKU 库存
+ updateStockReqDTO.getItems().forEach(item -> {
+ int i = baseMapper.updateStock(item.getId(), item.getIncrCount());
+ if (item.getIncrCount() < 0) {
+ if (i == 0) {
+ R.failed("商品库存不足");
+ }
+ }
+ });
+
+ return R.ok();
+ }
+
+
}
\ No newline at end of file
diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/mapper/CanteenDailyMenuMapper.xml b/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/mapper/CanteenDailyMenuMapper.xml
index 2040387d7..cba747499 100644
--- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/mapper/CanteenDailyMenuMapper.xml
+++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/mapper/CanteenDailyMenuMapper.xml
@@ -17,6 +17,18 @@
+
+
+
\ No newline at end of file
diff --git a/pjcloud-common/pjcloud-common-security/src/main/java/com/bsd/pjcloud/common/security/service/PjcloudTocDefaultUserDetailsServiceImpl.java b/pjcloud-common/pjcloud-common-security/src/main/java/com/bsd/pjcloud/common/security/service/PjcloudTocDefaultUserDetailsServiceImpl.java
index 30770e223..b93b7fbac 100644
--- a/pjcloud-common/pjcloud-common-security/src/main/java/com/bsd/pjcloud/common/security/service/PjcloudTocDefaultUserDetailsServiceImpl.java
+++ b/pjcloud-common/pjcloud-common-security/src/main/java/com/bsd/pjcloud/common/security/service/PjcloudTocDefaultUserDetailsServiceImpl.java
@@ -17,6 +17,8 @@
package com.bsd.pjcloud.common.security.service;
import cn.hutool.core.util.ArrayUtil;
+import com.bsd.pjcloud.admin.api.dto.UserInfo;
+import com.bsd.pjcloud.admin.api.feign.RemoteUserService;
import com.bsd.pjcloud.app.api.dto.AppUserInfo;
import com.bsd.pjcloud.app.api.entity.AppUser;
import com.bsd.pjcloud.app.api.feign.RemoteAppUserService;
@@ -57,6 +59,8 @@ public class PjcloudTocDefaultUserDetailsServiceImpl implements PjcloudUserDetai
private final Optional remoteAppUserServiceOptional;
+ private final RemoteUserService remoteUserService;
+
/**
* 用户密码登录
*
@@ -66,16 +70,26 @@ public class PjcloudTocDefaultUserDetailsServiceImpl implements PjcloudUserDetai
@Override
@SneakyThrows
public UserDetails loadUserByUsername(String username) {
- Cache cache = cacheManager.getCache(CacheConstants.USER_DETAILS_MINI);
+// Cache cache = cacheManager.getCache(CacheConstants.USER_DETAILS_MINI);
+// if (Objects.nonNull(cache) && Objects.nonNull(cache.get(username))) {
+// AppUserInfo appUserInfo = cache.get(username, AppUserInfo.class);
+// return getUserDetailsAppUser(R.ok(appUserInfo));
+// }
+//
+// R result = remoteAppUserServiceOptional.get().info(username);
+// Optional userInfoOptional = RetOps.of(result).getData();
+// userInfoOptional.ifPresent(userInfo -> Objects.requireNonNull(cache).put(username, userInfo));
+// return getUserDetailsAppUser(result);
+
+ Cache cache = cacheManager.getCache(CacheConstants.USER_DETAILS);
if (Objects.nonNull(cache) && Objects.nonNull(cache.get(username))) {
- AppUserInfo appUserInfo = cache.get(username, AppUserInfo.class);
- return getUserDetailsAppUser(R.ok(appUserInfo));
+ return getUserDetails(Optional.ofNullable(cache.get(username, UserInfo.class)));
}
- R result = remoteAppUserServiceOptional.get().info(username);
- Optional userInfoOptional = RetOps.of(result).getData();
+ R result = remoteUserService.info(username);
+ Optional userInfoOptional = RetOps.of(result).getData();
userInfoOptional.ifPresent(userInfo -> Objects.requireNonNull(cache).put(username, userInfo));
- return getUserDetailsAppUser(result);
+ return getUserDetails(userInfoOptional);
}
@Override
diff --git a/pjcloud-gateway/pjcloud.lnk b/pjcloud-gateway/pjcloud.lnk
new file mode 100644
index 000000000..a64a24afe
Binary files /dev/null and b/pjcloud-gateway/pjcloud.lnk differ
diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/entity/SupermarketSpuEntity.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/entity/SupermarketSpuEntity.java
index d4f17e98b..558ee43f2 100644
--- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/entity/SupermarketSpuEntity.java
+++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/entity/SupermarketSpuEntity.java
@@ -310,9 +310,11 @@ public class SupermarketSpuEntity extends Model {
private Long tenantId;
@Schema(description = "辅助条码集合对象")
+ @TableField(exist = false)
private List supermarketAuxiliaryCodeEntityList;
@Schema(description = "包装对象集合对象")
+ @TableField(exist = false)
private List supermarketUnitEntityList;
}
\ No newline at end of file