diff --git a/yami-shop-admin/src/main/java/com/yami/shop/admin/WebApplication.java b/yami-shop-admin/src/main/java/com/yami/shop/admin/WebApplication.java index 756bee2..c676a62 100644 --- a/yami-shop-admin/src/main/java/com/yami/shop/admin/WebApplication.java +++ b/yami-shop-admin/src/main/java/com/yami/shop/admin/WebApplication.java @@ -28,6 +28,7 @@ public class WebApplication extends SpringBootServletInitializer{ public static void main(String[] args) { SpringApplication.run(WebApplication.class, args); + System.out.println("ヾ(◍°∇°◍)ノ゙金桐商户管理平台启动啦,ヾ(◍°∇°◍)ノ゙"); } @Override diff --git a/yami-shop-admin/src/main/java/com/yami/shop/admin/controller/AdminLoginController.java b/yami-shop-admin/src/main/java/com/yami/shop/admin/controller/AdminLoginController.java index d9a7446..2f865eb 100644 --- a/yami-shop-admin/src/main/java/com/yami/shop/admin/controller/AdminLoginController.java +++ b/yami-shop-admin/src/main/java/com/yami/shop/admin/controller/AdminLoginController.java @@ -99,23 +99,25 @@ public class AdminLoginController { userInfoInToken.setUserId(String.valueOf(sysUser.getUserId())); userInfoInToken.setSysType(SysTypeEnum.ADMIN.value()); userInfoInToken.setEnabled(sysUser.getStatus() == 1); - userInfoInToken.setPerms(getUserPermissions(sysUser.getUserId())); + userInfoInToken.setPerms(getUserPermissions(sysUser.getUserId(),sysUser.getIsAdmin())); userInfoInToken.setNickName(sysUser.getUsername()); userInfoInToken.setShopId(sysUser.getShopId()); + userInfoInToken.setIsAdmin(sysUser.getIsAdmin()); // 存储token返回vo TokenInfoVO tokenInfoVO = tokenStore.storeAndGetVo(userInfoInToken); return ServerResponseEntity.success(tokenInfoVO); } - private Set getUserPermissions(Long userId) { + private Set getUserPermissions(Long userId,Integer isAdmin) { List permsList; //系统管理员,拥有最高权限 - if(userId == Constant.SUPER_ADMIN_ID){ + if (userId == Constant.SUPER_ADMIN_ID || isAdmin == 1) { + List menuList = sysMenuService.list(Wrappers.emptyWrapper()); permsList = menuList.stream().map(SysMenu::getPerms).collect(Collectors.toList()); - }else{ + } else { permsList = sysUserService.queryAllPerms(userId); } return permsList.stream().flatMap((perms)->{ @@ -126,4 +128,7 @@ public class AdminLoginController { } ).collect(Collectors.toSet()); } + + + } diff --git a/yami-shop-admin/src/main/java/com/yami/shop/admin/controller/ProductController.java b/yami-shop-admin/src/main/java/com/yami/shop/admin/controller/ProductController.java index 20ee1af..b3159c6 100644 --- a/yami-shop-admin/src/main/java/com/yami/shop/admin/controller/ProductController.java +++ b/yami-shop-admin/src/main/java/com/yami/shop/admin/controller/ProductController.java @@ -15,6 +15,7 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.yami.shop.bean.model.Product; +import com.yami.shop.bean.model.ShopDetail; import com.yami.shop.bean.model.Sku; import com.yami.shop.bean.param.ProductParam; import com.yami.shop.common.exception.YamiShopBindException; @@ -22,19 +23,19 @@ import com.yami.shop.common.response.ServerResponseEntity; import com.yami.shop.common.util.Json; import com.yami.shop.common.util.PageParam; import com.yami.shop.security.admin.util.SecurityUtils; -import com.yami.shop.service.BasketService; -import com.yami.shop.service.ProdTagReferenceService; -import com.yami.shop.service.ProductService; -import com.yami.shop.service.SkuService; +import com.yami.shop.service.*; import cn.hutool.core.bean.BeanUtil; +import jodd.util.StringUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import jakarta.validation.Valid; + import java.util.Date; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; /** @@ -58,6 +59,8 @@ public class ProductController { @Autowired private BasketService basketService; + @Autowired + private ShopDetailService shopDetailService; /** * 分页获取商品信息 @@ -65,13 +68,34 @@ public class ProductController { @GetMapping("/page") @PreAuthorize("@pms.hasPermission('prod:prod:page')") public ServerResponseEntity> page(ProductParam product, PageParam page) { + List shopList = null; + List shopIdList = null; + + if (!StringUtil.isEmpty(product.getShopName())) { + shopList = shopDetailService.list(new LambdaQueryWrapper().like(ShopDetail::getShopName, product.getShopName())); + // 将 shopList 转换为包含 shopId 的列表 + if (shopList != null && !shopList.isEmpty()) { + shopIdList = shopList.stream() + .map(ShopDetail::getShopId) + .collect(Collectors.toList()); + } + } IPage products = productService.page(page, new LambdaQueryWrapper() .like(StrUtil.isNotBlank(product.getProdName()), Product::getProdName, product.getProdName()) - .eq(Product::getShopId, SecurityUtils.getSysUser().getShopId()) + .eq(!SecurityUtils.getSysUser().checkAdmin(), Product::getShopId, SecurityUtils.getSysUser().getShopId()) .eq(product.getStatus() != null, Product::getStatus, product.getStatus()) .eq(product.getProductType() != null, Product::getProductType, product.getProductType()) + .in(shopIdList != null && !shopIdList.isEmpty(),Product::getShopId,shopIdList) .orderByDesc(Product::getPutawayTime)); + List records = products.getRecords(); + records.forEach(prod->{ + ShopDetail shop = shopDetailService.getById(prod.getShopId()); + if (shop != null) { + prod.setShopName(shop.getShopName()); + } + }); + products.setRecords(records); return ServerResponseEntity.success(products); } @@ -91,6 +115,10 @@ public class ProductController { //获取分组标签 List listTagId = prodTagReferenceService.listTagIdByProdId(prodId); prod.setTagList(listTagId); + + ShopDetail shopDetail = shopDetailService.getById(prod.getShopId()); + prod.setShopName(shopDetail.getShopName()); + return ServerResponseEntity.success(prod); } @@ -210,6 +238,22 @@ public class ProductController { } return ServerResponseEntity.success(); } + /** + * 更新商品状态 + */ + @PostMapping("/prodZone") + @PreAuthorize("@pms.hasPermission('prod:prod:updateZone')") + public ServerResponseEntity setZone(@RequestBody Product product) { + + productService.updateById(product); + productService.removeProductCacheByProdId(product.getProdId()); + List userIds = basketService.listUserIdByProdId(product.getProdId()); + for (String userId : userIds) { + basketService.removeShopCartItemsCacheByUserId(userId); + } + return ServerResponseEntity.success(); + } + private void checkParam(ProductParam productParam) { if (CollectionUtil.isEmpty(productParam.getTagList())) { diff --git a/yami-shop-api/src/main/java/com/yami/shop/api/ApiApplication.java b/yami-shop-api/src/main/java/com/yami/shop/api/ApiApplication.java index 5c5f18b..7b17094 100644 --- a/yami-shop-api/src/main/java/com/yami/shop/api/ApiApplication.java +++ b/yami-shop-api/src/main/java/com/yami/shop/api/ApiApplication.java @@ -26,8 +26,9 @@ public class ApiApplication extends SpringBootServletInitializer{ public static void main(String[] args) { SpringApplication.run(ApiApplication.class, args); + System.out.println("(*¯︶¯*)金桐手机api启动啦,(*¯︶¯*)"); } - + @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(ApiApplication.class); diff --git a/yami-shop-bean/src/main/java/com/yami/shop/bean/param/ProductParam.java b/yami-shop-bean/src/main/java/com/yami/shop/bean/param/ProductParam.java index 3e6a9cf..379ab31 100644 --- a/yami-shop-bean/src/main/java/com/yami/shop/bean/param/ProductParam.java +++ b/yami-shop-bean/src/main/java/com/yami/shop/bean/param/ProductParam.java @@ -42,6 +42,8 @@ public class ProductParam { @Size(max = 200, message = "商品名称长度应该小于{max}") private String prodName; + private String shopName; + /** * 商品价格 @@ -110,5 +112,12 @@ public class ProductParam { * 商品专区 */ private Integer productType; - + /** + * 购买积分 + */ + private Integer payScore; + /** + * 赠送积分 + */ + private Integer giveScore; } diff --git a/yami-shop-security/yami-shop-security-admin/src/main/java/com/yami/shop/security/admin/model/YamiSysUser.java b/yami-shop-security/yami-shop-security-admin/src/main/java/com/yami/shop/security/admin/model/YamiSysUser.java index 24c1821..918d1f5 100644 --- a/yami-shop-security/yami-shop-security-admin/src/main/java/com/yami/shop/security/admin/model/YamiSysUser.java +++ b/yami-shop-security/yami-shop-security-admin/src/main/java/com/yami/shop/security/admin/model/YamiSysUser.java @@ -33,4 +33,15 @@ public class YamiSysUser { private String username; private Long shopId; + private Integer isAdmin; + + public boolean checkAdmin() { + if (this.isAdmin == null) { + this.isAdmin = 0; + } + if (this.isAdmin == 1) { + return true; + } + return false; + } } diff --git a/yami-shop-security/yami-shop-security-admin/src/main/java/com/yami/shop/security/admin/util/SecurityUtils.java b/yami-shop-security/yami-shop-security-admin/src/main/java/com/yami/shop/security/admin/util/SecurityUtils.java index 76916d7..fcb7977 100644 --- a/yami-shop-security/yami-shop-security-admin/src/main/java/com/yami/shop/security/admin/util/SecurityUtils.java +++ b/yami-shop-security/yami-shop-security-admin/src/main/java/com/yami/shop/security/admin/util/SecurityUtils.java @@ -32,6 +32,7 @@ public class SecurityUtils { details.setUsername(userInfoInTokenBO.getNickName()); details.setAuthorities(userInfoInTokenBO.getPerms()); details.setShopId(userInfoInTokenBO.getShopId()); + details.setIsAdmin(userInfoInTokenBO.getIsAdmin()); return details; } } diff --git a/yami-shop-sys/src/main/java/com/yami/shop/sys/model/SysUser.java b/yami-shop-sys/src/main/java/com/yami/shop/sys/model/SysUser.java index b45055f..bb69aec 100644 --- a/yami-shop-sys/src/main/java/com/yami/shop/sys/model/SysUser.java +++ b/yami-shop-sys/src/main/java/com/yami/shop/sys/model/SysUser.java @@ -15,79 +15,82 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; - import jakarta.validation.constraints.Email; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Pattern; import jakarta.validation.constraints.Size; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + import java.io.Serializable; import java.util.Date; import java.util.List; /** * 系统用户 + * * @author lanhai */ @Data @TableName("tz_sys_user") public class SysUser implements Serializable { - private static final long serialVersionUID = 1L; - - /** - * 用户ID - * - */ - @TableId - private Long userId; - - /** - * 用户名 - */ - @NotBlank(message="用户名不能为空") - @Size(min = 2,max = 20,message = "用户名长度要在2-20之间") - private String username; - - /** - * 密码 - */ - @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) - private String password; - - /** - * 邮箱 - */ - @NotBlank(message="邮箱不能为空") - @Email(message="邮箱格式不正确") - private String email; - - /** - * 手机号 - */ - @Pattern(regexp="0?1[0-9]{10}",message = "请输入正确的手机号") - private String mobile; - - /** - * 状态 0:禁用 1:正常 - */ - private Integer status; - - /** - * 用户所在店铺id - */ - private Long shopId; - - /** - * 角色ID列表 - */ - @TableField(exist=false) - private List roleIdList; - - /** - * 创建时间 - */ - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private Date createTime; + private static final long serialVersionUID = 1L; + + /** + * 用户ID + */ + @TableId + private Long userId; + + /** + * 用户名 + */ + @NotBlank(message = "用户名不能为空") + @Size(min = 2, max = 20, message = "用户名长度要在2-20之间") + private String username; + + /** + * 密码 + */ + @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) + private String password; + + /** + * 邮箱 + */ + @NotBlank(message = "邮箱不能为空") + @Email(message = "邮箱格式不正确") + private String email; + + /** + * 手机号 + */ + @Pattern(regexp = "0?1[0-9]{10}", message = "请输入正确的手机号") + private String mobile; + + /** + * 状态 0:禁用 1:正常 + */ + private Integer status; + + /** + * 用户所在店铺id + */ + private Long shopId; + + /** + * 角色ID列表 + */ + @TableField(exist = false) + private List roleIdList; + + /** + * 创建时间 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @TableField(value = "is_admin") + private Integer isAdmin; + }