加入renrenkaiyuan搭建基本框架,辅助开发

develop
ddyd 1 month ago
parent 0d9157daac
commit 427dfc49c0

@ -32,6 +32,12 @@
<spring-cloud.version>2025.0.0</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>com.bookstore.bookmall</groupId>
<artifactId>mall-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>

@ -1,13 +0,0 @@
package com.bookstore.bookmall.bookproduct;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class BookProductApplication {
public static void main(String[] args) {
SpringApplication.run(BookProductApplication.class, args);
}
}

@ -0,0 +1,90 @@
package com.bookstore.bookmall.product.controller;
import java.util.Arrays;
import java.util.Map;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.bookstore.bookmall.product.entity.AttrAttrgroupRelationEntity;
import com.bookstore.bookmall.product.service.AttrAttrgroupRelationService;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.common.utils.R;
/**
* &
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@RestController
@RequestMapping("product/attrattrgrouprelation")
public class AttrAttrgroupRelationController {
@Autowired
private AttrAttrgroupRelationService attrAttrgroupRelationService;
/**
*
*/
@RequestMapping("/list")
@RequiresPermissions("product:attrattrgrouprelation:list")
public R list(@RequestParam Map<String, Object> params){
PageUtils page = attrAttrgroupRelationService.queryPage(params);
return R.ok().put("page", page);
}
/**
*
*/
@RequestMapping("/info/{id}")
@RequiresPermissions("product:attrattrgrouprelation:info") //shiro的权限注解
public R info(@PathVariable("id") Long id){
AttrAttrgroupRelationEntity attrAttrgroupRelation = attrAttrgroupRelationService.getById(id);
return R.ok().put("attrAttrgroupRelation", attrAttrgroupRelation);
}
/**
*
*/
@RequestMapping("/save")
@RequiresPermissions("product:attrattrgrouprelation:save")
public R save(@RequestBody AttrAttrgroupRelationEntity attrAttrgroupRelation){
attrAttrgroupRelationService.save(attrAttrgroupRelation);
return R.ok();
}
/**
*
*/
@RequestMapping("/update")
@RequiresPermissions("product:attrattrgrouprelation:update")
public R update(@RequestBody AttrAttrgroupRelationEntity attrAttrgroupRelation){
attrAttrgroupRelationService.updateById(attrAttrgroupRelation);
return R.ok();
}
/**
*
*/
@RequestMapping("/delete")
@RequiresPermissions("product:attrattrgrouprelation:delete")
public R delete(@RequestBody Long[] ids){
attrAttrgroupRelationService.removeByIds(Arrays.asList(ids));
return R.ok();
}
}

@ -0,0 +1,90 @@
package com.bookstore.bookmall.product.controller;
import java.util.Arrays;
import java.util.Map;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.bookstore.bookmall.product.entity.AttrEntity;
import com.bookstore.bookmall.product.service.AttrService;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.common.utils.R;
/**
*
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@RestController
@RequestMapping("product/attr")
public class AttrController {
@Autowired
private AttrService attrService;
/**
*
*/
@RequestMapping("/list")
@RequiresPermissions("product:attr:list")
public R list(@RequestParam Map<String, Object> params){
PageUtils page = attrService.queryPage(params);
return R.ok().put("page", page);
}
/**
*
*/
@RequestMapping("/info/{attrId}")
@RequiresPermissions("product:attr:info")
public R info(@PathVariable("attrId") Long attrId){
AttrEntity attr = attrService.getById(attrId);
return R.ok().put("attr", attr);
}
/**
*
*/
@RequestMapping("/save")
@RequiresPermissions("product:attr:save")
public R save(@RequestBody AttrEntity attr){
attrService.save(attr);
return R.ok();
}
/**
*
*/
@RequestMapping("/update")
@RequiresPermissions("product:attr:update")
public R update(@RequestBody AttrEntity attr){
attrService.updateById(attr);
return R.ok();
}
/**
*
*/
@RequestMapping("/delete")
@RequiresPermissions("product:attr:delete")
public R delete(@RequestBody Long[] attrIds){
attrService.removeByIds(Arrays.asList(attrIds));
return R.ok();
}
}

@ -0,0 +1,90 @@
package com.bookstore.bookmall.product.controller;
import java.util.Arrays;
import java.util.Map;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.bookstore.bookmall.product.entity.AttrGroupEntity;
import com.bookstore.bookmall.product.service.AttrGroupService;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.common.utils.R;
/**
*
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@RestController
@RequestMapping("product/attrgroup")
public class AttrGroupController {
@Autowired
private AttrGroupService attrGroupService;
/**
*
*/
@RequestMapping("/list")
@RequiresPermissions("product:attrgroup:list")
public R list(@RequestParam Map<String, Object> params){
PageUtils page = attrGroupService.queryPage(params);
return R.ok().put("page", page);
}
/**
*
*/
@RequestMapping("/info/{attrGroupId}")
@RequiresPermissions("product:attrgroup:info")
public R info(@PathVariable("attrGroupId") Long attrGroupId){
AttrGroupEntity attrGroup = attrGroupService.getById(attrGroupId);
return R.ok().put("attrGroup", attrGroup);
}
/**
*
*/
@RequestMapping("/save")
@RequiresPermissions("product:attrgroup:save")
public R save(@RequestBody AttrGroupEntity attrGroup){
attrGroupService.save(attrGroup);
return R.ok();
}
/**
*
*/
@RequestMapping("/update")
@RequiresPermissions("product:attrgroup:update")
public R update(@RequestBody AttrGroupEntity attrGroup){
attrGroupService.updateById(attrGroup);
return R.ok();
}
/**
*
*/
@RequestMapping("/delete")
@RequiresPermissions("product:attrgroup:delete")
public R delete(@RequestBody Long[] attrGroupIds){
attrGroupService.removeByIds(Arrays.asList(attrGroupIds));
return R.ok();
}
}

@ -0,0 +1,90 @@
package com.bookstore.bookmall.product.controller;
import java.util.Arrays;
import java.util.Map;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.bookstore.bookmall.product.entity.BrandEntity;
import com.bookstore.bookmall.product.service.BrandService;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.common.utils.R;
/**
*
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@RestController
@RequestMapping("product/brand")
public class BrandController {
@Autowired
private BrandService brandService;
/**
*
*/
@RequestMapping("/list")
@RequiresPermissions("product:brand:list")
public R list(@RequestParam Map<String, Object> params){
PageUtils page = brandService.queryPage(params);
return R.ok().put("page", page);
}
/**
*
*/
@RequestMapping("/info/{brandId}")
@RequiresPermissions("product:brand:info")
public R info(@PathVariable("brandId") Long brandId){
BrandEntity brand = brandService.getById(brandId);
return R.ok().put("brand", brand);
}
/**
*
*/
@RequestMapping("/save")
@RequiresPermissions("product:brand:save")
public R save(@RequestBody BrandEntity brand){
brandService.save(brand);
return R.ok();
}
/**
*
*/
@RequestMapping("/update")
@RequiresPermissions("product:brand:update")
public R update(@RequestBody BrandEntity brand){
brandService.updateById(brand);
return R.ok();
}
/**
*
*/
@RequestMapping("/delete")
@RequiresPermissions("product:brand:delete")
public R delete(@RequestBody Long[] brandIds){
brandService.removeByIds(Arrays.asList(brandIds));
return R.ok();
}
}

@ -0,0 +1,90 @@
package com.bookstore.bookmall.product.controller;
import java.util.Arrays;
import java.util.Map;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.bookstore.bookmall.product.entity.CategoryBrandRelationEntity;
import com.bookstore.bookmall.product.service.CategoryBrandRelationService;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.common.utils.R;
/**
*
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@RestController
@RequestMapping("product/categorybrandrelation")
public class CategoryBrandRelationController {
@Autowired
private CategoryBrandRelationService categoryBrandRelationService;
/**
*
*/
@RequestMapping("/list")
@RequiresPermissions("product:categorybrandrelation:list")
public R list(@RequestParam Map<String, Object> params){
PageUtils page = categoryBrandRelationService.queryPage(params);
return R.ok().put("page", page);
}
/**
*
*/
@RequestMapping("/info/{id}")
@RequiresPermissions("product:categorybrandrelation:info")
public R info(@PathVariable("id") Long id){
CategoryBrandRelationEntity categoryBrandRelation = categoryBrandRelationService.getById(id);
return R.ok().put("categoryBrandRelation", categoryBrandRelation);
}
/**
*
*/
@RequestMapping("/save")
@RequiresPermissions("product:categorybrandrelation:save")
public R save(@RequestBody CategoryBrandRelationEntity categoryBrandRelation){
categoryBrandRelationService.save(categoryBrandRelation);
return R.ok();
}
/**
*
*/
@RequestMapping("/update")
@RequiresPermissions("product:categorybrandrelation:update")
public R update(@RequestBody CategoryBrandRelationEntity categoryBrandRelation){
categoryBrandRelationService.updateById(categoryBrandRelation);
return R.ok();
}
/**
*
*/
@RequestMapping("/delete")
@RequiresPermissions("product:categorybrandrelation:delete")
public R delete(@RequestBody Long[] ids){
categoryBrandRelationService.removeByIds(Arrays.asList(ids));
return R.ok();
}
}

@ -0,0 +1,90 @@
package com.bookstore.bookmall.product.controller;
import java.util.Arrays;
import java.util.Map;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.bookstore.bookmall.product.entity.CategoryEntity;
import com.bookstore.bookmall.product.service.CategoryService;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.common.utils.R;
/**
*
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@RestController
@RequestMapping("product/category")
public class CategoryController {
@Autowired
private CategoryService categoryService;
/**
*
*/
@RequestMapping("/list")
@RequiresPermissions("product:category:list")
public R list(@RequestParam Map<String, Object> params){
PageUtils page = categoryService.queryPage(params);
return R.ok().put("page", page);
}
/**
*
*/
@RequestMapping("/info/{catId}")
@RequiresPermissions("product:category:info")
public R info(@PathVariable("catId") Long catId){
CategoryEntity category = categoryService.getById(catId);
return R.ok().put("category", category);
}
/**
*
*/
@RequestMapping("/save")
@RequiresPermissions("product:category:save")
public R save(@RequestBody CategoryEntity category){
categoryService.save(category);
return R.ok();
}
/**
*
*/
@RequestMapping("/update")
@RequiresPermissions("product:category:update")
public R update(@RequestBody CategoryEntity category){
categoryService.updateById(category);
return R.ok();
}
/**
*
*/
@RequestMapping("/delete")
@RequiresPermissions("product:category:delete")
public R delete(@RequestBody Long[] catIds){
categoryService.removeByIds(Arrays.asList(catIds));
return R.ok();
}
}

@ -0,0 +1,90 @@
package com.bookstore.bookmall.product.controller;
import java.util.Arrays;
import java.util.Map;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.bookstore.bookmall.product.entity.CommentReplayEntity;
import com.bookstore.bookmall.product.service.CommentReplayService;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.common.utils.R;
/**
*
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@RestController
@RequestMapping("product/commentreplay")
public class CommentReplayController {
@Autowired
private CommentReplayService commentReplayService;
/**
*
*/
@RequestMapping("/list")
@RequiresPermissions("product:commentreplay:list")
public R list(@RequestParam Map<String, Object> params){
PageUtils page = commentReplayService.queryPage(params);
return R.ok().put("page", page);
}
/**
*
*/
@RequestMapping("/info/{id}")
@RequiresPermissions("product:commentreplay:info")
public R info(@PathVariable("id") Long id){
CommentReplayEntity commentReplay = commentReplayService.getById(id);
return R.ok().put("commentReplay", commentReplay);
}
/**
*
*/
@RequestMapping("/save")
@RequiresPermissions("product:commentreplay:save")
public R save(@RequestBody CommentReplayEntity commentReplay){
commentReplayService.save(commentReplay);
return R.ok();
}
/**
*
*/
@RequestMapping("/update")
@RequiresPermissions("product:commentreplay:update")
public R update(@RequestBody CommentReplayEntity commentReplay){
commentReplayService.updateById(commentReplay);
return R.ok();
}
/**
*
*/
@RequestMapping("/delete")
@RequiresPermissions("product:commentreplay:delete")
public R delete(@RequestBody Long[] ids){
commentReplayService.removeByIds(Arrays.asList(ids));
return R.ok();
}
}

@ -0,0 +1,90 @@
package com.bookstore.bookmall.product.controller;
import java.util.Arrays;
import java.util.Map;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.bookstore.bookmall.product.entity.ProductAttrValueEntity;
import com.bookstore.bookmall.product.service.ProductAttrValueService;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.common.utils.R;
/**
* spu
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@RestController
@RequestMapping("product/productattrvalue")
public class ProductAttrValueController {
@Autowired
private ProductAttrValueService productAttrValueService;
/**
*
*/
@RequestMapping("/list")
@RequiresPermissions("product:productattrvalue:list")
public R list(@RequestParam Map<String, Object> params){
PageUtils page = productAttrValueService.queryPage(params);
return R.ok().put("page", page);
}
/**
*
*/
@RequestMapping("/info/{id}")
@RequiresPermissions("product:productattrvalue:info")
public R info(@PathVariable("id") Long id){
ProductAttrValueEntity productAttrValue = productAttrValueService.getById(id);
return R.ok().put("productAttrValue", productAttrValue);
}
/**
*
*/
@RequestMapping("/save")
@RequiresPermissions("product:productattrvalue:save")
public R save(@RequestBody ProductAttrValueEntity productAttrValue){
productAttrValueService.save(productAttrValue);
return R.ok();
}
/**
*
*/
@RequestMapping("/update")
@RequiresPermissions("product:productattrvalue:update")
public R update(@RequestBody ProductAttrValueEntity productAttrValue){
productAttrValueService.updateById(productAttrValue);
return R.ok();
}
/**
*
*/
@RequestMapping("/delete")
@RequiresPermissions("product:productattrvalue:delete")
public R delete(@RequestBody Long[] ids){
productAttrValueService.removeByIds(Arrays.asList(ids));
return R.ok();
}
}

@ -0,0 +1,90 @@
package com.bookstore.bookmall.product.controller;
import java.util.Arrays;
import java.util.Map;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.bookstore.bookmall.product.entity.SkuImagesEntity;
import com.bookstore.bookmall.product.service.SkuImagesService;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.common.utils.R;
/**
* sku
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@RestController
@RequestMapping("product/skuimages")
public class SkuImagesController {
@Autowired
private SkuImagesService skuImagesService;
/**
*
*/
@RequestMapping("/list")
@RequiresPermissions("product:skuimages:list")
public R list(@RequestParam Map<String, Object> params){
PageUtils page = skuImagesService.queryPage(params);
return R.ok().put("page", page);
}
/**
*
*/
@RequestMapping("/info/{id}")
@RequiresPermissions("product:skuimages:info")
public R info(@PathVariable("id") Long id){
SkuImagesEntity skuImages = skuImagesService.getById(id);
return R.ok().put("skuImages", skuImages);
}
/**
*
*/
@RequestMapping("/save")
@RequiresPermissions("product:skuimages:save")
public R save(@RequestBody SkuImagesEntity skuImages){
skuImagesService.save(skuImages);
return R.ok();
}
/**
*
*/
@RequestMapping("/update")
@RequiresPermissions("product:skuimages:update")
public R update(@RequestBody SkuImagesEntity skuImages){
skuImagesService.updateById(skuImages);
return R.ok();
}
/**
*
*/
@RequestMapping("/delete")
@RequiresPermissions("product:skuimages:delete")
public R delete(@RequestBody Long[] ids){
skuImagesService.removeByIds(Arrays.asList(ids));
return R.ok();
}
}

@ -0,0 +1,90 @@
package com.bookstore.bookmall.product.controller;
import java.util.Arrays;
import java.util.Map;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.bookstore.bookmall.product.entity.SkuInfoEntity;
import com.bookstore.bookmall.product.service.SkuInfoService;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.common.utils.R;
/**
* sku
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@RestController
@RequestMapping("product/skuinfo")
public class SkuInfoController {
@Autowired
private SkuInfoService skuInfoService;
/**
*
*/
@RequestMapping("/list")
@RequiresPermissions("product:skuinfo:list")
public R list(@RequestParam Map<String, Object> params){
PageUtils page = skuInfoService.queryPage(params);
return R.ok().put("page", page);
}
/**
*
*/
@RequestMapping("/info/{skuId}")
@RequiresPermissions("product:skuinfo:info")
public R info(@PathVariable("skuId") Long skuId){
SkuInfoEntity skuInfo = skuInfoService.getById(skuId);
return R.ok().put("skuInfo", skuInfo);
}
/**
*
*/
@RequestMapping("/save")
@RequiresPermissions("product:skuinfo:save")
public R save(@RequestBody SkuInfoEntity skuInfo){
skuInfoService.save(skuInfo);
return R.ok();
}
/**
*
*/
@RequestMapping("/update")
@RequiresPermissions("product:skuinfo:update")
public R update(@RequestBody SkuInfoEntity skuInfo){
skuInfoService.updateById(skuInfo);
return R.ok();
}
/**
*
*/
@RequestMapping("/delete")
@RequiresPermissions("product:skuinfo:delete")
public R delete(@RequestBody Long[] skuIds){
skuInfoService.removeByIds(Arrays.asList(skuIds));
return R.ok();
}
}

@ -0,0 +1,90 @@
package com.bookstore.bookmall.product.controller;
import java.util.Arrays;
import java.util.Map;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.bookstore.bookmall.product.entity.SkuSaleAttrValueEntity;
import com.bookstore.bookmall.product.service.SkuSaleAttrValueService;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.common.utils.R;
/**
* sku&
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@RestController
@RequestMapping("product/skusaleattrvalue")
public class SkuSaleAttrValueController {
@Autowired
private SkuSaleAttrValueService skuSaleAttrValueService;
/**
*
*/
@RequestMapping("/list")
@RequiresPermissions("product:skusaleattrvalue:list")
public R list(@RequestParam Map<String, Object> params){
PageUtils page = skuSaleAttrValueService.queryPage(params);
return R.ok().put("page", page);
}
/**
*
*/
@RequestMapping("/info/{id}")
@RequiresPermissions("product:skusaleattrvalue:info")
public R info(@PathVariable("id") Long id){
SkuSaleAttrValueEntity skuSaleAttrValue = skuSaleAttrValueService.getById(id);
return R.ok().put("skuSaleAttrValue", skuSaleAttrValue);
}
/**
*
*/
@RequestMapping("/save")
@RequiresPermissions("product:skusaleattrvalue:save")
public R save(@RequestBody SkuSaleAttrValueEntity skuSaleAttrValue){
skuSaleAttrValueService.save(skuSaleAttrValue);
return R.ok();
}
/**
*
*/
@RequestMapping("/update")
@RequiresPermissions("product:skusaleattrvalue:update")
public R update(@RequestBody SkuSaleAttrValueEntity skuSaleAttrValue){
skuSaleAttrValueService.updateById(skuSaleAttrValue);
return R.ok();
}
/**
*
*/
@RequestMapping("/delete")
@RequiresPermissions("product:skusaleattrvalue:delete")
public R delete(@RequestBody Long[] ids){
skuSaleAttrValueService.removeByIds(Arrays.asList(ids));
return R.ok();
}
}

@ -0,0 +1,90 @@
package com.bookstore.bookmall.product.controller;
import java.util.Arrays;
import java.util.Map;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.bookstore.bookmall.product.entity.SpuCommentEntity;
import com.bookstore.bookmall.product.service.SpuCommentService;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.common.utils.R;
/**
*
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@RestController
@RequestMapping("product/spucomment")
public class SpuCommentController {
@Autowired
private SpuCommentService spuCommentService;
/**
*
*/
@RequestMapping("/list")
@RequiresPermissions("product:spucomment:list")
public R list(@RequestParam Map<String, Object> params){
PageUtils page = spuCommentService.queryPage(params);
return R.ok().put("page", page);
}
/**
*
*/
@RequestMapping("/info/{id}")
@RequiresPermissions("product:spucomment:info")
public R info(@PathVariable("id") Long id){
SpuCommentEntity spuComment = spuCommentService.getById(id);
return R.ok().put("spuComment", spuComment);
}
/**
*
*/
@RequestMapping("/save")
@RequiresPermissions("product:spucomment:save")
public R save(@RequestBody SpuCommentEntity spuComment){
spuCommentService.save(spuComment);
return R.ok();
}
/**
*
*/
@RequestMapping("/update")
@RequiresPermissions("product:spucomment:update")
public R update(@RequestBody SpuCommentEntity spuComment){
spuCommentService.updateById(spuComment);
return R.ok();
}
/**
*
*/
@RequestMapping("/delete")
@RequiresPermissions("product:spucomment:delete")
public R delete(@RequestBody Long[] ids){
spuCommentService.removeByIds(Arrays.asList(ids));
return R.ok();
}
}

@ -0,0 +1,90 @@
package com.bookstore.bookmall.product.controller;
import java.util.Arrays;
import java.util.Map;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.bookstore.bookmall.product.entity.SpuImagesEntity;
import com.bookstore.bookmall.product.service.SpuImagesService;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.common.utils.R;
/**
* spu
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@RestController
@RequestMapping("product/spuimages")
public class SpuImagesController {
@Autowired
private SpuImagesService spuImagesService;
/**
*
*/
@RequestMapping("/list")
@RequiresPermissions("product:spuimages:list")
public R list(@RequestParam Map<String, Object> params){
PageUtils page = spuImagesService.queryPage(params);
return R.ok().put("page", page);
}
/**
*
*/
@RequestMapping("/info/{id}")
@RequiresPermissions("product:spuimages:info")
public R info(@PathVariable("id") Long id){
SpuImagesEntity spuImages = spuImagesService.getById(id);
return R.ok().put("spuImages", spuImages);
}
/**
*
*/
@RequestMapping("/save")
@RequiresPermissions("product:spuimages:save")
public R save(@RequestBody SpuImagesEntity spuImages){
spuImagesService.save(spuImages);
return R.ok();
}
/**
*
*/
@RequestMapping("/update")
@RequiresPermissions("product:spuimages:update")
public R update(@RequestBody SpuImagesEntity spuImages){
spuImagesService.updateById(spuImages);
return R.ok();
}
/**
*
*/
@RequestMapping("/delete")
@RequiresPermissions("product:spuimages:delete")
public R delete(@RequestBody Long[] ids){
spuImagesService.removeByIds(Arrays.asList(ids));
return R.ok();
}
}

@ -0,0 +1,90 @@
package com.bookstore.bookmall.product.controller;
import java.util.Arrays;
import java.util.Map;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.bookstore.bookmall.product.entity.SpuInfoEntity;
import com.bookstore.bookmall.product.service.SpuInfoService;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.common.utils.R;
/**
* spu
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@RestController
@RequestMapping("product/spuinfo")
public class SpuInfoController {
@Autowired
private SpuInfoService spuInfoService;
/**
*
*/
@RequestMapping("/list")
@RequiresPermissions("product:spuinfo:list")
public R list(@RequestParam Map<String, Object> params){
PageUtils page = spuInfoService.queryPage(params);
return R.ok().put("page", page);
}
/**
*
*/
@RequestMapping("/info/{id}")
@RequiresPermissions("product:spuinfo:info")
public R info(@PathVariable("id") Long id){
SpuInfoEntity spuInfo = spuInfoService.getById(id);
return R.ok().put("spuInfo", spuInfo);
}
/**
*
*/
@RequestMapping("/save")
@RequiresPermissions("product:spuinfo:save")
public R save(@RequestBody SpuInfoEntity spuInfo){
spuInfoService.save(spuInfo);
return R.ok();
}
/**
*
*/
@RequestMapping("/update")
@RequiresPermissions("product:spuinfo:update")
public R update(@RequestBody SpuInfoEntity spuInfo){
spuInfoService.updateById(spuInfo);
return R.ok();
}
/**
*
*/
@RequestMapping("/delete")
@RequiresPermissions("product:spuinfo:delete")
public R delete(@RequestBody Long[] ids){
spuInfoService.removeByIds(Arrays.asList(ids));
return R.ok();
}
}

@ -0,0 +1,90 @@
package com.bookstore.bookmall.product.controller;
import java.util.Arrays;
import java.util.Map;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.bookstore.bookmall.product.entity.SpuInfoDescEntity;
import com.bookstore.bookmall.product.service.SpuInfoDescService;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.common.utils.R;
/**
* spu
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@RestController
@RequestMapping("product/spuinfodesc")
public class SpuInfoDescController {
@Autowired
private SpuInfoDescService spuInfoDescService;
/**
*
*/
@RequestMapping("/list")
@RequiresPermissions("product:spuinfodesc:list")
public R list(@RequestParam Map<String, Object> params){
PageUtils page = spuInfoDescService.queryPage(params);
return R.ok().put("page", page);
}
/**
*
*/
@RequestMapping("/info/{spuId}")
@RequiresPermissions("product:spuinfodesc:info")
public R info(@PathVariable("spuId") Long spuId){
SpuInfoDescEntity spuInfoDesc = spuInfoDescService.getById(spuId);
return R.ok().put("spuInfoDesc", spuInfoDesc);
}
/**
*
*/
@RequestMapping("/save")
@RequiresPermissions("product:spuinfodesc:save")
public R save(@RequestBody SpuInfoDescEntity spuInfoDesc){
spuInfoDescService.save(spuInfoDesc);
return R.ok();
}
/**
*
*/
@RequestMapping("/update")
@RequiresPermissions("product:spuinfodesc:update")
public R update(@RequestBody SpuInfoDescEntity spuInfoDesc){
spuInfoDescService.updateById(spuInfoDesc);
return R.ok();
}
/**
*
*/
@RequestMapping("/delete")
@RequiresPermissions("product:spuinfodesc:delete")
public R delete(@RequestBody Long[] spuIds){
spuInfoDescService.removeByIds(Arrays.asList(spuIds));
return R.ok();
}
}

@ -0,0 +1,17 @@
package com.bookstore.bookmall.product.dao;
import com.bookstore.bookmall.product.entity.AttrAttrgroupRelationEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* &
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@Mapper
public interface AttrAttrgroupRelationDao extends BaseMapper<AttrAttrgroupRelationEntity> {
}

@ -0,0 +1,17 @@
package com.bookstore.bookmall.product.dao;
import com.bookstore.bookmall.product.entity.AttrEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
*
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@Mapper
public interface AttrDao extends BaseMapper<AttrEntity> {
}

@ -0,0 +1,17 @@
package com.bookstore.bookmall.product.dao;
import com.bookstore.bookmall.product.entity.AttrGroupEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
*
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@Mapper
public interface AttrGroupDao extends BaseMapper<AttrGroupEntity> {
}

@ -0,0 +1,17 @@
package com.bookstore.bookmall.product.dao;
import com.bookstore.bookmall.product.entity.BrandEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
*
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@Mapper
public interface BrandDao extends BaseMapper<BrandEntity> {
}

@ -0,0 +1,17 @@
package com.bookstore.bookmall.product.dao;
import com.bookstore.bookmall.product.entity.CategoryBrandRelationEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
*
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@Mapper
public interface CategoryBrandRelationDao extends BaseMapper<CategoryBrandRelationEntity> {
}

@ -0,0 +1,17 @@
package com.bookstore.bookmall.product.dao;
import com.bookstore.bookmall.product.entity.CategoryEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
*
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@Mapper
public interface CategoryDao extends BaseMapper<CategoryEntity> {
}

@ -0,0 +1,17 @@
package com.bookstore.bookmall.product.dao;
import com.bookstore.bookmall.product.entity.CommentReplayEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
*
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@Mapper
public interface CommentReplayDao extends BaseMapper<CommentReplayEntity> {
}

@ -0,0 +1,17 @@
package com.bookstore.bookmall.product.dao;
import com.bookstore.bookmall.product.entity.ProductAttrValueEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* spu
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@Mapper
public interface ProductAttrValueDao extends BaseMapper<ProductAttrValueEntity> {
}

@ -0,0 +1,17 @@
package com.bookstore.bookmall.product.dao;
import com.bookstore.bookmall.product.entity.SkuImagesEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* sku
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@Mapper
public interface SkuImagesDao extends BaseMapper<SkuImagesEntity> {
}

@ -0,0 +1,17 @@
package com.bookstore.bookmall.product.dao;
import com.bookstore.bookmall.product.entity.SkuInfoEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* sku
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@Mapper
public interface SkuInfoDao extends BaseMapper<SkuInfoEntity> {
}

@ -0,0 +1,17 @@
package com.bookstore.bookmall.product.dao;
import com.bookstore.bookmall.product.entity.SkuSaleAttrValueEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* sku&
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@Mapper
public interface SkuSaleAttrValueDao extends BaseMapper<SkuSaleAttrValueEntity> {
}

@ -0,0 +1,17 @@
package com.bookstore.bookmall.product.dao;
import com.bookstore.bookmall.product.entity.SpuCommentEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
*
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@Mapper
public interface SpuCommentDao extends BaseMapper<SpuCommentEntity> {
}

@ -0,0 +1,17 @@
package com.bookstore.bookmall.product.dao;
import com.bookstore.bookmall.product.entity.SpuImagesEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* spu
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@Mapper
public interface SpuImagesDao extends BaseMapper<SpuImagesEntity> {
}

@ -0,0 +1,17 @@
package com.bookstore.bookmall.product.dao;
import com.bookstore.bookmall.product.entity.SpuInfoEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* spu
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@Mapper
public interface SpuInfoDao extends BaseMapper<SpuInfoEntity> {
}

@ -0,0 +1,17 @@
package com.bookstore.bookmall.product.dao;
import com.bookstore.bookmall.product.entity.SpuInfoDescEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* spu
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@Mapper
public interface SpuInfoDescDao extends BaseMapper<SpuInfoDescEntity> {
}

@ -0,0 +1,40 @@
package com.bookstore.bookmall.product.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* &
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@Data
@TableName("pms_attr_attrgroup_relation")
public class AttrAttrgroupRelationEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId
private Long id;
/**
* id
*/
private Long attrId;
/**
* id
*/
private Long attrGroupId;
/**
*
*/
private Integer attrSort;
}

@ -0,0 +1,64 @@
package com.bookstore.bookmall.product.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
*
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@Data
@TableName("pms_attr")
public class AttrEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId
private Long attrId;
/**
*
*/
private String attrName;
/**
* [0-1-]
*/
private Integer searchType;
/**
* [0-1-]
*/
private Integer valueType;
/**
*
*/
private String icon;
/**
* []
*/
private String valueSelect;
/**
* [0-1-2-]
*/
private Integer attrType;
/**
* [0 - 1 - ]
*/
private Long enable;
/**
*
*/
private Long catelogId;
/**
* 0- 1-sku
*/
private Integer showDesc;
}

@ -0,0 +1,48 @@
package com.bookstore.bookmall.product.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
*
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@Data
@TableName("pms_attr_group")
public class AttrGroupEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId
private Long attrGroupId;
/**
*
*/
private String attrGroupName;
/**
*
*/
private Integer sort;
/**
*
*/
private String descript;
/**
*
*/
private String icon;
/**
* id
*/
private Long catelogId;
}

@ -0,0 +1,52 @@
package com.bookstore.bookmall.product.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
*
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@Data
@TableName("pms_brand")
public class BrandEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId
private Long brandId;
/**
*
*/
private String name;
/**
* logo
*/
private String logo;
/**
*
*/
private String descript;
/**
* [0-1-]
*/
private Integer showStatus;
/**
*
*/
private String firstLetter;
/**
*
*/
private Integer sort;
}

@ -0,0 +1,44 @@
package com.bookstore.bookmall.product.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
*
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@Data
@TableName("pms_category_brand_relation")
public class CategoryBrandRelationEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
@TableId
private Long id;
/**
* id
*/
private Long brandId;
/**
* id
*/
private Long catelogId;
/**
*
*/
private String brandName;
/**
*
*/
private String catelogName;
}

@ -0,0 +1,60 @@
package com.bookstore.bookmall.product.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
*
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@Data
@TableName("pms_category")
public class CategoryEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId
private Long catId;
/**
*
*/
private String name;
/**
* id
*/
private Long parentCid;
/**
*
*/
private Integer catLevel;
/**
* [0-1]
*/
private Integer showStatus;
/**
*
*/
private Integer sort;
/**
*
*/
private String icon;
/**
*
*/
private String productUnit;
/**
*
*/
private Integer productCount;
}

@ -0,0 +1,36 @@
package com.bookstore.bookmall.product.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
*
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@Data
@TableName("pms_comment_replay")
public class CommentReplayEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId
private Long id;
/**
* id
*/
private Long commentId;
/**
* id
*/
private Long replyId;
}

@ -0,0 +1,52 @@
package com.bookstore.bookmall.product.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* spu
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@Data
@TableName("pms_product_attr_value")
public class ProductAttrValueEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId
private Long id;
/**
* id
*/
private Long spuId;
/**
* id
*/
private Long attrId;
/**
*
*/
private String attrName;
/**
*
*/
private String attrValue;
/**
*
*/
private Integer attrSort;
/**
* 0- 1-
*/
private Integer quickShow;
}

@ -0,0 +1,44 @@
package com.bookstore.bookmall.product.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* sku
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@Data
@TableName("pms_sku_images")
public class SkuImagesEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId
private Long id;
/**
* sku_id
*/
private Long skuId;
/**
*
*/
private String imgUrl;
/**
*
*/
private Integer imgSort;
/**
* [0 - 1 - ]
*/
private Integer defaultImg;
}

@ -0,0 +1,69 @@
package com.bookstore.bookmall.product.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.math.BigDecimal;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* sku
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@Data
@TableName("pms_sku_info")
public class SkuInfoEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* skuId
*/
@TableId
private Long skuId;
/**
* spuId
*/
private Long spuId;
/**
* sku
*/
private String skuName;
/**
* sku
*/
private String skuDesc;
/**
* id
*/
private Long catalogId;
/**
* id
*/
private Long brandId;
/**
*
*/
private String skuDefaultImg;
/**
*
*/
private String skuTitle;
/**
*
*/
private String skuSubtitle;
/**
*
*/
private BigDecimal price;
/**
*
*/
private Long saleCount;
}

@ -0,0 +1,48 @@
package com.bookstore.bookmall.product.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* sku&
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@Data
@TableName("pms_sku_sale_attr_value")
public class SkuSaleAttrValueEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId
private Long id;
/**
* sku_id
*/
private Long skuId;
/**
* attr_id
*/
private Long attrId;
/**
*
*/
private String attrName;
/**
*
*/
private String attrValue;
/**
*
*/
private Integer attrSort;
}

@ -0,0 +1,88 @@
package com.bookstore.bookmall.product.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
*
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@Data
@TableName("pms_spu_comment")
public class SpuCommentEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId
private Long id;
/**
* sku_id
*/
private Long skuId;
/**
* spu_id
*/
private Long spuId;
/**
*
*/
private String spuName;
/**
*
*/
private String memberNickName;
/**
*
*/
private Integer star;
/**
* ip
*/
private String memberIp;
/**
*
*/
private Date createTime;
/**
* [0-1-]
*/
private Integer showStatus;
/**
*
*/
private String spuAttributes;
/**
*
*/
private Integer likesCount;
/**
*
*/
private Integer replyCount;
/**
* /[json[{type:,url:}]]
*/
private String resources;
/**
*
*/
private String content;
/**
*
*/
private String memberIcon;
/**
* [0 - 1 - ]
*/
private Integer commentType;
}

@ -0,0 +1,48 @@
package com.bookstore.bookmall.product.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* spu
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@Data
@TableName("pms_spu_images")
public class SpuImagesEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId
private Long id;
/**
* spu_id
*/
private Long spuId;
/**
*
*/
private String imgName;
/**
*
*/
private String imgUrl;
/**
*
*/
private Integer imgSort;
/**
*
*/
private Integer defaultImg;
}

@ -0,0 +1,32 @@
package com.bookstore.bookmall.product.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* spu
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@Data
@TableName("pms_spu_info_desc")
public class SpuInfoDescEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId
private Long spuId;
/**
*
*/
private String decript;
}

@ -0,0 +1,61 @@
package com.bookstore.bookmall.product.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.math.BigDecimal;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* spu
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
@Data
@TableName("pms_spu_info")
public class SpuInfoEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId
private Long id;
/**
*
*/
private String spuName;
/**
*
*/
private String spuDescription;
/**
* id
*/
private Long catalogId;
/**
* id
*/
private Long brandId;
/**
*
*/
private BigDecimal weight;
/**
* [0 - 1 - ]
*/
private Integer publishStatus;
/**
*
*/
private Date createTime;
/**
*
*/
private Date updateTime;
}

@ -0,0 +1,20 @@
package com.bookstore.bookmall.product.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.bookmall.product.entity.AttrAttrgroupRelationEntity;
import java.util.Map;
/**
* &
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
public interface AttrAttrgroupRelationService extends IService<AttrAttrgroupRelationEntity> {
PageUtils queryPage(Map<String, Object> params);
}

@ -0,0 +1,20 @@
package com.bookstore.bookmall.product.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.bookmall.product.entity.AttrGroupEntity;
import java.util.Map;
/**
*
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
public interface AttrGroupService extends IService<AttrGroupEntity> {
PageUtils queryPage(Map<String, Object> params);
}

@ -0,0 +1,20 @@
package com.bookstore.bookmall.product.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.bookmall.product.entity.AttrEntity;
import java.util.Map;
/**
*
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
public interface AttrService extends IService<AttrEntity> {
PageUtils queryPage(Map<String, Object> params);
}

@ -0,0 +1,20 @@
package com.bookstore.bookmall.product.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.bookmall.product.entity.BrandEntity;
import java.util.Map;
/**
*
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
public interface BrandService extends IService<BrandEntity> {
PageUtils queryPage(Map<String, Object> params);
}

@ -0,0 +1,20 @@
package com.bookstore.bookmall.product.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.bookmall.product.entity.CategoryBrandRelationEntity;
import java.util.Map;
/**
*
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
public interface CategoryBrandRelationService extends IService<CategoryBrandRelationEntity> {
PageUtils queryPage(Map<String, Object> params);
}

@ -0,0 +1,20 @@
package com.bookstore.bookmall.product.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.bookmall.product.entity.CategoryEntity;
import java.util.Map;
/**
*
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
public interface CategoryService extends IService<CategoryEntity> {
PageUtils queryPage(Map<String, Object> params);
}

@ -0,0 +1,20 @@
package com.bookstore.bookmall.product.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.bookmall.product.entity.CommentReplayEntity;
import java.util.Map;
/**
*
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
public interface CommentReplayService extends IService<CommentReplayEntity> {
PageUtils queryPage(Map<String, Object> params);
}

@ -0,0 +1,20 @@
package com.bookstore.bookmall.product.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.bookmall.product.entity.ProductAttrValueEntity;
import java.util.Map;
/**
* spu
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
public interface ProductAttrValueService extends IService<ProductAttrValueEntity> {
PageUtils queryPage(Map<String, Object> params);
}

@ -0,0 +1,20 @@
package com.bookstore.bookmall.product.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.bookmall.product.entity.SkuImagesEntity;
import java.util.Map;
/**
* sku
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
public interface SkuImagesService extends IService<SkuImagesEntity> {
PageUtils queryPage(Map<String, Object> params);
}

@ -0,0 +1,20 @@
package com.bookstore.bookmall.product.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.bookmall.product.entity.SkuInfoEntity;
import java.util.Map;
/**
* sku
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
public interface SkuInfoService extends IService<SkuInfoEntity> {
PageUtils queryPage(Map<String, Object> params);
}

@ -0,0 +1,20 @@
package com.bookstore.bookmall.product.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.bookmall.product.entity.SkuSaleAttrValueEntity;
import java.util.Map;
/**
* sku&
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
public interface SkuSaleAttrValueService extends IService<SkuSaleAttrValueEntity> {
PageUtils queryPage(Map<String, Object> params);
}

@ -0,0 +1,20 @@
package com.bookstore.bookmall.product.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.bookmall.product.entity.SpuCommentEntity;
import java.util.Map;
/**
*
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
public interface SpuCommentService extends IService<SpuCommentEntity> {
PageUtils queryPage(Map<String, Object> params);
}

@ -0,0 +1,20 @@
package com.bookstore.bookmall.product.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.bookmall.product.entity.SpuImagesEntity;
import java.util.Map;
/**
* spu
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
public interface SpuImagesService extends IService<SpuImagesEntity> {
PageUtils queryPage(Map<String, Object> params);
}

@ -0,0 +1,20 @@
package com.bookstore.bookmall.product.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.bookmall.product.entity.SpuInfoDescEntity;
import java.util.Map;
/**
* spu
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
public interface SpuInfoDescService extends IService<SpuInfoDescEntity> {
PageUtils queryPage(Map<String, Object> params);
}

@ -0,0 +1,20 @@
package com.bookstore.bookmall.product.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.bookmall.product.entity.SpuInfoEntity;
import java.util.Map;
/**
* spu
*
* @author dy
* @email 2073699128@qq.com
* @date 2025-07-06 21:28:01
*/
public interface SpuInfoService extends IService<SpuInfoEntity> {
PageUtils queryPage(Map<String, Object> params);
}

@ -0,0 +1,29 @@
package com.bookstore.bookmall.product.service.impl;
import org.springframework.stereotype.Service;
import java.util.Map;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.common.utils.Query;
import com.bookstore.bookmall.product.dao.AttrAttrgroupRelationDao;
import com.bookstore.bookmall.product.entity.AttrAttrgroupRelationEntity;
import com.bookstore.bookmall.product.service.AttrAttrgroupRelationService;
@Service("attrAttrgroupRelationService")
public class AttrAttrgroupRelationServiceImpl extends ServiceImpl<AttrAttrgroupRelationDao, AttrAttrgroupRelationEntity> implements AttrAttrgroupRelationService {
@Override
public PageUtils queryPage(Map<String, Object> params) {
IPage<AttrAttrgroupRelationEntity> page = this.page(
new Query<AttrAttrgroupRelationEntity>().getPage(params),
new QueryWrapper<AttrAttrgroupRelationEntity>()
);
return new PageUtils(page);
}
}

@ -0,0 +1,29 @@
package com.bookstore.bookmall.product.service.impl;
import org.springframework.stereotype.Service;
import java.util.Map;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.common.utils.Query;
import com.bookstore.bookmall.product.dao.AttrGroupDao;
import com.bookstore.bookmall.product.entity.AttrGroupEntity;
import com.bookstore.bookmall.product.service.AttrGroupService;
@Service("attrGroupService")
public class AttrGroupServiceImpl extends ServiceImpl<AttrGroupDao, AttrGroupEntity> implements AttrGroupService {
@Override
public PageUtils queryPage(Map<String, Object> params) {
IPage<AttrGroupEntity> page = this.page(
new Query<AttrGroupEntity>().getPage(params),
new QueryWrapper<AttrGroupEntity>()
);
return new PageUtils(page);
}
}

@ -0,0 +1,29 @@
package com.bookstore.bookmall.product.service.impl;
import org.springframework.stereotype.Service;
import java.util.Map;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.common.utils.Query;
import com.bookstore.bookmall.product.dao.AttrDao;
import com.bookstore.bookmall.product.entity.AttrEntity;
import com.bookstore.bookmall.product.service.AttrService;
@Service("attrService")
public class AttrServiceImpl extends ServiceImpl<AttrDao, AttrEntity> implements AttrService {
@Override
public PageUtils queryPage(Map<String, Object> params) {
IPage<AttrEntity> page = this.page(
new Query<AttrEntity>().getPage(params),
new QueryWrapper<AttrEntity>()
);
return new PageUtils(page);
}
}

@ -0,0 +1,29 @@
package com.bookstore.bookmall.product.service.impl;
import org.springframework.stereotype.Service;
import java.util.Map;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.common.utils.Query;
import com.bookstore.bookmall.product.dao.BrandDao;
import com.bookstore.bookmall.product.entity.BrandEntity;
import com.bookstore.bookmall.product.service.BrandService;
@Service("brandService")
public class BrandServiceImpl extends ServiceImpl<BrandDao, BrandEntity> implements BrandService {
@Override
public PageUtils queryPage(Map<String, Object> params) {
IPage<BrandEntity> page = this.page(
new Query<BrandEntity>().getPage(params),
new QueryWrapper<BrandEntity>()
);
return new PageUtils(page);
}
}

@ -0,0 +1,29 @@
package com.bookstore.bookmall.product.service.impl;
import org.springframework.stereotype.Service;
import java.util.Map;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.common.utils.Query;
import com.bookstore.bookmall.product.dao.CategoryBrandRelationDao;
import com.bookstore.bookmall.product.entity.CategoryBrandRelationEntity;
import com.bookstore.bookmall.product.service.CategoryBrandRelationService;
@Service("categoryBrandRelationService")
public class CategoryBrandRelationServiceImpl extends ServiceImpl<CategoryBrandRelationDao, CategoryBrandRelationEntity> implements CategoryBrandRelationService {
@Override
public PageUtils queryPage(Map<String, Object> params) {
IPage<CategoryBrandRelationEntity> page = this.page(
new Query<CategoryBrandRelationEntity>().getPage(params),
new QueryWrapper<CategoryBrandRelationEntity>()
);
return new PageUtils(page);
}
}

@ -0,0 +1,29 @@
package com.bookstore.bookmall.product.service.impl;
import org.springframework.stereotype.Service;
import java.util.Map;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.common.utils.Query;
import com.bookstore.bookmall.product.dao.CategoryDao;
import com.bookstore.bookmall.product.entity.CategoryEntity;
import com.bookstore.bookmall.product.service.CategoryService;
@Service("categoryService")
public class CategoryServiceImpl extends ServiceImpl<CategoryDao, CategoryEntity> implements CategoryService {
@Override
public PageUtils queryPage(Map<String, Object> params) {
IPage<CategoryEntity> page = this.page(
new Query<CategoryEntity>().getPage(params),
new QueryWrapper<CategoryEntity>()
);
return new PageUtils(page);
}
}

@ -0,0 +1,29 @@
package com.bookstore.bookmall.product.service.impl;
import org.springframework.stereotype.Service;
import java.util.Map;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.common.utils.Query;
import com.bookstore.bookmall.product.dao.CommentReplayDao;
import com.bookstore.bookmall.product.entity.CommentReplayEntity;
import com.bookstore.bookmall.product.service.CommentReplayService;
@Service("commentReplayService")
public class CommentReplayServiceImpl extends ServiceImpl<CommentReplayDao, CommentReplayEntity> implements CommentReplayService {
@Override
public PageUtils queryPage(Map<String, Object> params) {
IPage<CommentReplayEntity> page = this.page(
new Query<CommentReplayEntity>().getPage(params),
new QueryWrapper<CommentReplayEntity>()
);
return new PageUtils(page);
}
}

@ -0,0 +1,29 @@
package com.bookstore.bookmall.product.service.impl;
import org.springframework.stereotype.Service;
import java.util.Map;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.common.utils.Query;
import com.bookstore.bookmall.product.dao.ProductAttrValueDao;
import com.bookstore.bookmall.product.entity.ProductAttrValueEntity;
import com.bookstore.bookmall.product.service.ProductAttrValueService;
@Service("productAttrValueService")
public class ProductAttrValueServiceImpl extends ServiceImpl<ProductAttrValueDao, ProductAttrValueEntity> implements ProductAttrValueService {
@Override
public PageUtils queryPage(Map<String, Object> params) {
IPage<ProductAttrValueEntity> page = this.page(
new Query<ProductAttrValueEntity>().getPage(params),
new QueryWrapper<ProductAttrValueEntity>()
);
return new PageUtils(page);
}
}

@ -0,0 +1,29 @@
package com.bookstore.bookmall.product.service.impl;
import org.springframework.stereotype.Service;
import java.util.Map;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.common.utils.Query;
import com.bookstore.bookmall.product.dao.SkuImagesDao;
import com.bookstore.bookmall.product.entity.SkuImagesEntity;
import com.bookstore.bookmall.product.service.SkuImagesService;
@Service("skuImagesService")
public class SkuImagesServiceImpl extends ServiceImpl<SkuImagesDao, SkuImagesEntity> implements SkuImagesService {
@Override
public PageUtils queryPage(Map<String, Object> params) {
IPage<SkuImagesEntity> page = this.page(
new Query<SkuImagesEntity>().getPage(params),
new QueryWrapper<SkuImagesEntity>()
);
return new PageUtils(page);
}
}

@ -0,0 +1,29 @@
package com.bookstore.bookmall.product.service.impl;
import org.springframework.stereotype.Service;
import java.util.Map;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.common.utils.Query;
import com.bookstore.bookmall.product.dao.SkuInfoDao;
import com.bookstore.bookmall.product.entity.SkuInfoEntity;
import com.bookstore.bookmall.product.service.SkuInfoService;
@Service("skuInfoService")
public class SkuInfoServiceImpl extends ServiceImpl<SkuInfoDao, SkuInfoEntity> implements SkuInfoService {
@Override
public PageUtils queryPage(Map<String, Object> params) {
IPage<SkuInfoEntity> page = this.page(
new Query<SkuInfoEntity>().getPage(params),
new QueryWrapper<SkuInfoEntity>()
);
return new PageUtils(page);
}
}

@ -0,0 +1,29 @@
package com.bookstore.bookmall.product.service.impl;
import org.springframework.stereotype.Service;
import java.util.Map;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.common.utils.Query;
import com.bookstore.bookmall.product.dao.SkuSaleAttrValueDao;
import com.bookstore.bookmall.product.entity.SkuSaleAttrValueEntity;
import com.bookstore.bookmall.product.service.SkuSaleAttrValueService;
@Service("skuSaleAttrValueService")
public class SkuSaleAttrValueServiceImpl extends ServiceImpl<SkuSaleAttrValueDao, SkuSaleAttrValueEntity> implements SkuSaleAttrValueService {
@Override
public PageUtils queryPage(Map<String, Object> params) {
IPage<SkuSaleAttrValueEntity> page = this.page(
new Query<SkuSaleAttrValueEntity>().getPage(params),
new QueryWrapper<SkuSaleAttrValueEntity>()
);
return new PageUtils(page);
}
}

@ -0,0 +1,29 @@
package com.bookstore.bookmall.product.service.impl;
import org.springframework.stereotype.Service;
import java.util.Map;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.common.utils.Query;
import com.bookstore.bookmall.product.dao.SpuCommentDao;
import com.bookstore.bookmall.product.entity.SpuCommentEntity;
import com.bookstore.bookmall.product.service.SpuCommentService;
@Service("spuCommentService")
public class SpuCommentServiceImpl extends ServiceImpl<SpuCommentDao, SpuCommentEntity> implements SpuCommentService {
@Override
public PageUtils queryPage(Map<String, Object> params) {
IPage<SpuCommentEntity> page = this.page(
new Query<SpuCommentEntity>().getPage(params),
new QueryWrapper<SpuCommentEntity>()
);
return new PageUtils(page);
}
}

@ -0,0 +1,29 @@
package com.bookstore.bookmall.product.service.impl;
import org.springframework.stereotype.Service;
import java.util.Map;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.common.utils.Query;
import com.bookstore.bookmall.product.dao.SpuImagesDao;
import com.bookstore.bookmall.product.entity.SpuImagesEntity;
import com.bookstore.bookmall.product.service.SpuImagesService;
@Service("spuImagesService")
public class SpuImagesServiceImpl extends ServiceImpl<SpuImagesDao, SpuImagesEntity> implements SpuImagesService {
@Override
public PageUtils queryPage(Map<String, Object> params) {
IPage<SpuImagesEntity> page = this.page(
new Query<SpuImagesEntity>().getPage(params),
new QueryWrapper<SpuImagesEntity>()
);
return new PageUtils(page);
}
}

@ -0,0 +1,29 @@
package com.bookstore.bookmall.product.service.impl;
import org.springframework.stereotype.Service;
import java.util.Map;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.common.utils.Query;
import com.bookstore.bookmall.product.dao.SpuInfoDescDao;
import com.bookstore.bookmall.product.entity.SpuInfoDescEntity;
import com.bookstore.bookmall.product.service.SpuInfoDescService;
@Service("spuInfoDescService")
public class SpuInfoDescServiceImpl extends ServiceImpl<SpuInfoDescDao, SpuInfoDescEntity> implements SpuInfoDescService {
@Override
public PageUtils queryPage(Map<String, Object> params) {
IPage<SpuInfoDescEntity> page = this.page(
new Query<SpuInfoDescEntity>().getPage(params),
new QueryWrapper<SpuInfoDescEntity>()
);
return new PageUtils(page);
}
}

@ -0,0 +1,29 @@
package com.bookstore.bookmall.product.service.impl;
import org.springframework.stereotype.Service;
import java.util.Map;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bookstore.common.utils.PageUtils;
import com.bookstore.common.utils.Query;
import com.bookstore.bookmall.product.dao.SpuInfoDao;
import com.bookstore.bookmall.product.entity.SpuInfoEntity;
import com.bookstore.bookmall.product.service.SpuInfoService;
@Service("spuInfoService")
public class SpuInfoServiceImpl extends ServiceImpl<SpuInfoDao, SpuInfoEntity> implements SpuInfoService {
@Override
public PageUtils queryPage(Map<String, Object> params) {
IPage<SpuInfoEntity> page = this.page(
new Query<SpuInfoEntity>().getPage(params),
new QueryWrapper<SpuInfoEntity>()
);
return new PageUtils(page);
}
}

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bookstore.bookmall.product.dao.AttrAttrgroupRelationDao">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="com.bookstore.bookmall.product.entity.AttrAttrgroupRelationEntity" id="attrAttrgroupRelationMap">
<result property="id" column="id"/>
<result property="attrId" column="attr_id"/>
<result property="attrGroupId" column="attr_group_id"/>
<result property="attrSort" column="attr_sort"/>
</resultMap>
</mapper>

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bookstore.bookmall.product.dao.AttrDao">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="com.bookstore.bookmall.product.entity.AttrEntity" id="attrMap">
<result property="attrId" column="attr_id"/>
<result property="attrName" column="attr_name"/>
<result property="searchType" column="search_type"/>
<result property="valueType" column="value_type"/>
<result property="icon" column="icon"/>
<result property="valueSelect" column="value_select"/>
<result property="attrType" column="attr_type"/>
<result property="enable" column="enable"/>
<result property="catelogId" column="catelog_id"/>
<result property="showDesc" column="show_desc"/>
</resultMap>
</mapper>

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bookstore.bookmall.product.dao.AttrGroupDao">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="com.bookstore.bookmall.product.entity.AttrGroupEntity" id="attrGroupMap">
<result property="attrGroupId" column="attr_group_id"/>
<result property="attrGroupName" column="attr_group_name"/>
<result property="sort" column="sort"/>
<result property="descript" column="descript"/>
<result property="icon" column="icon"/>
<result property="catelogId" column="catelog_id"/>
</resultMap>
</mapper>

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bookstore.bookmall.product.dao.BrandDao">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="com.bookstore.bookmall.product.entity.BrandEntity" id="brandMap">
<result property="brandId" column="brand_id"/>
<result property="name" column="name"/>
<result property="logo" column="logo"/>
<result property="descript" column="descript"/>
<result property="showStatus" column="show_status"/>
<result property="firstLetter" column="first_letter"/>
<result property="sort" column="sort"/>
</resultMap>
</mapper>

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bookstore.bookmall.product.dao.CategoryBrandRelationDao">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="com.bookstore.bookmall.product.entity.CategoryBrandRelationEntity" id="categoryBrandRelationMap">
<result property="id" column="id"/>
<result property="brandId" column="brand_id"/>
<result property="catelogId" column="catelog_id"/>
<result property="brandName" column="brand_name"/>
<result property="catelogName" column="catelog_name"/>
</resultMap>
</mapper>

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bookstore.bookmall.product.dao.CategoryDao">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="com.bookstore.bookmall.product.entity.CategoryEntity" id="categoryMap">
<result property="catId" column="cat_id"/>
<result property="name" column="name"/>
<result property="parentCid" column="parent_cid"/>
<result property="catLevel" column="cat_level"/>
<result property="showStatus" column="show_status"/>
<result property="sort" column="sort"/>
<result property="icon" column="icon"/>
<result property="productUnit" column="product_unit"/>
<result property="productCount" column="product_count"/>
</resultMap>
</mapper>

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bookstore.bookmall.product.dao.CommentReplayDao">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="com.bookstore.bookmall.product.entity.CommentReplayEntity" id="commentReplayMap">
<result property="id" column="id"/>
<result property="commentId" column="comment_id"/>
<result property="replyId" column="reply_id"/>
</resultMap>
</mapper>

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bookstore.bookmall.product.dao.ProductAttrValueDao">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="com.bookstore.bookmall.product.entity.ProductAttrValueEntity" id="productAttrValueMap">
<result property="id" column="id"/>
<result property="spuId" column="spu_id"/>
<result property="attrId" column="attr_id"/>
<result property="attrName" column="attr_name"/>
<result property="attrValue" column="attr_value"/>
<result property="attrSort" column="attr_sort"/>
<result property="quickShow" column="quick_show"/>
</resultMap>
</mapper>

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bookstore.bookmall.product.dao.SkuImagesDao">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="com.bookstore.bookmall.product.entity.SkuImagesEntity" id="skuImagesMap">
<result property="id" column="id"/>
<result property="skuId" column="sku_id"/>
<result property="imgUrl" column="img_url"/>
<result property="imgSort" column="img_sort"/>
<result property="defaultImg" column="default_img"/>
</resultMap>
</mapper>

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bookstore.bookmall.product.dao.SkuInfoDao">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="com.bookstore.bookmall.product.entity.SkuInfoEntity" id="skuInfoMap">
<result property="skuId" column="sku_id"/>
<result property="spuId" column="spu_id"/>
<result property="skuName" column="sku_name"/>
<result property="skuDesc" column="sku_desc"/>
<result property="catalogId" column="catalog_id"/>
<result property="brandId" column="brand_id"/>
<result property="skuDefaultImg" column="sku_default_img"/>
<result property="skuTitle" column="sku_title"/>
<result property="skuSubtitle" column="sku_subtitle"/>
<result property="price" column="price"/>
<result property="saleCount" column="sale_count"/>
</resultMap>
</mapper>

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bookstore.bookmall.product.dao.SkuSaleAttrValueDao">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="com.bookstore.bookmall.product.entity.SkuSaleAttrValueEntity" id="skuSaleAttrValueMap">
<result property="id" column="id"/>
<result property="skuId" column="sku_id"/>
<result property="attrId" column="attr_id"/>
<result property="attrName" column="attr_name"/>
<result property="attrValue" column="attr_value"/>
<result property="attrSort" column="attr_sort"/>
</resultMap>
</mapper>

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bookstore.bookmall.product.dao.SpuCommentDao">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="com.bookstore.bookmall.product.entity.SpuCommentEntity" id="spuCommentMap">
<result property="id" column="id"/>
<result property="skuId" column="sku_id"/>
<result property="spuId" column="spu_id"/>
<result property="spuName" column="spu_name"/>
<result property="memberNickName" column="member_nick_name"/>
<result property="star" column="star"/>
<result property="memberIp" column="member_ip"/>
<result property="createTime" column="create_time"/>
<result property="showStatus" column="show_status"/>
<result property="spuAttributes" column="spu_attributes"/>
<result property="likesCount" column="likes_count"/>
<result property="replyCount" column="reply_count"/>
<result property="resources" column="resources"/>
<result property="content" column="content"/>
<result property="memberIcon" column="member_icon"/>
<result property="commentType" column="comment_type"/>
</resultMap>
</mapper>

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bookstore.bookmall.product.dao.SpuImagesDao">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="com.bookstore.bookmall.product.entity.SpuImagesEntity" id="spuImagesMap">
<result property="id" column="id"/>
<result property="spuId" column="spu_id"/>
<result property="imgName" column="img_name"/>
<result property="imgUrl" column="img_url"/>
<result property="imgSort" column="img_sort"/>
<result property="defaultImg" column="default_img"/>
</resultMap>
</mapper>

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bookstore.bookmall.product.dao.SpuInfoDao">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="com.bookstore.bookmall.product.entity.SpuInfoEntity" id="spuInfoMap">
<result property="id" column="id"/>
<result property="spuName" column="spu_name"/>
<result property="spuDescription" column="spu_description"/>
<result property="catalogId" column="catalog_id"/>
<result property="brandId" column="brand_id"/>
<result property="weight" column="weight"/>
<result property="publishStatus" column="publish_status"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
</mapper>

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bookstore.bookmall.product.dao.SpuInfoDescDao">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="com.bookstore.bookmall.product.entity.SpuInfoDescEntity" id="spuInfoDescMap">
<result property="spuId" column="spu_id"/>
<result property="decript" column="decript"/>
</resultMap>
</mapper>

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>bookmall</artifactId>
<groupId>com.bookstore.bookmall</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>mall-common</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
</project>

@ -16,6 +16,9 @@
<module>book-ware</module>
<module>book-coupon</module>
<module>book-product</module>
<module>renren-fast</module>
<module>renren-generator</module>
<module>mall-common</module>
</modules>

@ -0,0 +1,7 @@
FROM java:8
EXPOSE 8080
VOLUME /tmp
ADD renren-fast.jar /app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","/app.jar"]

@ -0,0 +1,191 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction, and
distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by the copyright
owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all other entities
that control, are controlled by, or are under common control with that entity.
For the purposes of this definition, "control" means (i) the power, direct or
indirect, to cause the direction or management of such entity, whether by
contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity exercising
permissions granted by this License.
"Source" form shall mean the preferred form for making modifications, including
but not limited to software source code, documentation source, and configuration
files.
"Object" form shall mean any form resulting from mechanical transformation or
translation of a Source form, including but not limited to compiled object code,
generated documentation, and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or Object form, made
available under the License, as indicated by a copyright notice that is included
in or attached to the work (an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object form, that
is based on (or derived from) the Work and for which the editorial revisions,
annotations, elaborations, or other modifications represent, as a whole, an
original work of authorship. For the purposes of this License, Derivative Works
shall not include works that remain separable from, or merely link (or bind by
name) to the interfaces of, the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including the original version
of the Work and any modifications or additions to that Work or Derivative Works
thereof, that is intentionally submitted to Licensor for inclusion in the Work
by the copyright owner or by an individual or Legal Entity authorized to submit
on behalf of the copyright owner. For the purposes of this definition,
"submitted" means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems, and
issue tracking systems that are managed by, or on behalf of, the Licensor for
the purpose of discussing and improving the Work, but excluding communication
that is conspicuously marked or otherwise designated in writing by the copyright
owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf
of whom a Contribution has been received by Licensor and subsequently
incorporated within the Work.
2. Grant of Copyright License.
Subject to the terms and conditions of this License, each Contributor hereby
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
irrevocable copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the Work and such
Derivative Works in Source or Object form.
3. Grant of Patent License.
Subject to the terms and conditions of this License, each Contributor hereby
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
irrevocable (except as stated in this section) patent license to make, have
made, use, offer to sell, sell, import, and otherwise transfer the Work, where
such license applies only to those patent claims licensable by such Contributor
that are necessarily infringed by their Contribution(s) alone or by combination
of their Contribution(s) with the Work to which such Contribution(s) was
submitted. If You institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work or a
Contribution incorporated within the Work constitutes direct or contributory
patent infringement, then any patent licenses granted to You under this License
for that Work shall terminate as of the date such litigation is filed.
4. Redistribution.
You may reproduce and distribute copies of the Work or Derivative Works thereof
in any medium, with or without modifications, and in Source or Object form,
provided that You meet the following conditions:
You must give any other recipients of the Work or Derivative Works a copy of
this License; and
You must cause any modified files to carry prominent notices stating that You
changed the files; and
You must retain, in the Source form of any Derivative Works that You distribute,
all copyright, patent, trademark, and attribution notices from the Source form
of the Work, excluding those notices that do not pertain to any part of the
Derivative Works; and
If the Work includes a "NOTICE" text file as part of its distribution, then any
Derivative Works that You distribute must include a readable copy of the
attribution notices contained within such NOTICE file, excluding those notices
that do not pertain to any part of the Derivative Works, in at least one of the
following places: within a NOTICE text file distributed as part of the
Derivative Works; within the Source form or documentation, if provided along
with the Derivative Works; or, within a display generated by the Derivative
Works, if and wherever such third-party notices normally appear. The contents of
the NOTICE file are for informational purposes only and do not modify the
License. You may add Your own attribution notices within Derivative Works that
You distribute, alongside or as an addendum to the NOTICE text from the Work,
provided that such additional attribution notices cannot be construed as
modifying the License.
You may add Your own copyright statement to Your modifications and may provide
additional or different license terms and conditions for use, reproduction, or
distribution of Your modifications, or for any such Derivative Works as a whole,
provided Your use, reproduction, and distribution of the Work otherwise complies
with the conditions stated in this License.
5. Submission of Contributions.
Unless You explicitly state otherwise, any Contribution intentionally submitted
for inclusion in the Work by You to the Licensor shall be under the terms and
conditions of this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify the terms of
any separate license agreement you may have executed with Licensor regarding
such Contributions.
6. Trademarks.
This License does not grant permission to use the trade names, trademarks,
service marks, or product names of the Licensor, except as required for
reasonable and customary use in describing the origin of the Work and
reproducing the content of the NOTICE file.
7. Disclaimer of Warranty.
Unless required by applicable law or agreed to in writing, Licensor provides the
Work (and each Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
including, without limitation, any warranties or conditions of TITLE,
NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
solely responsible for determining the appropriateness of using or
redistributing the Work and assume any risks associated with Your exercise of
permissions under this License.
8. Limitation of Liability.
In no event and under no legal theory, whether in tort (including negligence),
contract, or otherwise, unless required by applicable law (such as deliberate
and grossly negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special, incidental,
or consequential damages of any character arising as a result of this License or
out of the use or inability to use the Work (including but not limited to
damages for loss of goodwill, work stoppage, computer failure or malfunction, or
any and all other commercial damages or losses), even if such Contributor has
been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability.
While redistributing the Work or Derivative Works thereof, You may choose to
offer, and charge a fee for, acceptance of support, warranty, indemnity, or
other liability obligations and/or rights consistent with this License. However,
in accepting such obligations, You may act only on Your own behalf and on Your
sole responsibility, not on behalf of any other Contributor, and only if You
agree to indemnify, defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason of your
accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work
To apply the Apache License to your work, attach the following boilerplate
notice, with the fields enclosed by brackets "{}" replaced with your own
identifying information. (Don't include the brackets!) The text should be
enclosed in the appropriate comment syntax for the file format. We also
recommend that a file or class name and description of purpose be included on
the same "printed page" as the copyright notice for easier identification within
third-party archives.
Copyright 2019 人人开源
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

@ -0,0 +1,113 @@
**项目说明**
- renren-fast是一个轻量级的前后端分离的Java快速开发平台能快速开发项目并交付【接私活利器】
- 支持MySQL、Oracle、SQL Server、PostgreSQL等主流数据库
- 演示环境http://demo.open.renren.io/renren-security
- 前端Gitee地址https://gitee.com/renrenio/renren-fast-vue
- 前端GitCode地址https://gitcode.com/renrenio/renren-fast-vue
<br>
**具有如下特点**
- 友好的代码结构及注释,便于阅读及二次开发
- 实现前后端分离通过token进行数据交互前端再也不用关注后端技术
- 灵活的权限控制,可控制到页面或按钮,满足绝大部分的权限需求
- 页面交互使用Vue2.x极大的提高了开发效率
- 完善的代码生成机制可在线生成entity、xml、dao、service、vue、sql代码减少70%以上的开发任务
- 引入quartz定时任务可动态完成任务的添加、修改、删除、暂停、恢复及日志查看等功能
- 引入API模板根据token作为登录令牌极大的方便了APP接口开发
- 引入Hibernate Validator校验框架轻松实现后端校验
- 引入云存储服务,已支持:七牛云、阿里云、腾讯云等
- 引入swagger文档支持方便编写API接口文档
<br>
**项目结构**
```
renren-fast
├─db 项目SQL语句
├─common 公共模块
│ ├─aspect 系统日志
│ ├─exception 异常处理
│ ├─validator 后台校验
│ └─xss XSS过滤
├─config 配置信息
├─modules 功能模块
│ ├─app API接口模块(APP调用)
│ ├─job 定时任务模块
│ ├─oss 文件服务模块
│ └─sys 权限模块
├─RenrenApplication 项目启动类
├──resources
│ ├─mapper SQL对应的XML文件
│ └─static 静态资源
```
<br>
**如何交流、反馈、参与贡献?**
- 开发文档https://www.renren.io/guide
- Gitee仓库https://gitee.com/renrenio/renren-fast
- GitCode仓库https://gitcode.com/renrenio/renren-fast
- 人人开源https://www.renren.io
- 官方QQ群324780204、145799952
- 技术讨论、二次开发等咨询、问题和建议,请移步到人人开源社区,我会在第一时间进行解答和回复!
- 如需关注项目最新动态请Watch、Star项目同时也是对项目最好的支持
- 微信扫码并关注【人人开源】,获得项目最新动态及更新提醒
<br>
![输入图片说明](https://images.gitee.com/uploads/images/2019/0307/090140_260d672d_63154.jpeg "在这里输入图片标题")
<br>
**技术选型:**
- 核心框架Spring Boot 2.1
- 安全框架Apache Shiro 1.4
- 视图框架Spring MVC 5.0
- 持久层框架MyBatis 3.3
- 定时器Quartz 2.3
- 数据库连接池Druid 1.0
- 日志管理SLF4J 1.7、Log4j
- 页面交互Vue2.x
<br>
**后端部署**
- 通过git下载源码
- 创建数据库renren_fast数据库编码为UTF-8
- 执行db/mysql.sql文件初始化数据
- 修改application-dev.yml更新MySQL账号和密码
- IDEA运行RenrenApplication.java则可启动项目
- Swagger文档路径http://localhost:8080/renren-fast/swagger/index.html
- Swagger注解路径http://localhost:8080/renren-fast/swagger-ui.html
<br>
**前端部署**
- 本项目是前后端分离的,还需要部署前端,才能运行起来
- 前端Gitee地址https://gitee.com/renrenio/renren-fast-vue
- 前端GitCode地址https://gitcode.com/renrenio/renren-fast-vue
- 前端部署完毕就可以访问项目了账号admin密码admin
<br>
**接口文档效果图:**
![输入图片说明](https://images.gitee.com/uploads/images/2018/0728/145341_73ba6f75_63154.jpeg "在这里输入图片标题")
<br> <br> <br>
**效果图:**
![输入图片说明](https://gitee.com/uploads/images/2018/0505/173115_d3c045ef_63154.jpeg "在这里输入图片标题")
![输入图片说明](https://gitee.com/uploads/images/2018/0624/225728_b06f72b3_63154.jpeg "在这里输入图片标题")
![输入图片说明](https://gitee.com/uploads/images/2018/0505/173140_79928d91_63154.jpeg "在这里输入图片标题")
![输入图片说明](https://gitee.com/uploads/images/2018/0505/173151_12d065db_63154.jpeg "在这里输入图片标题")
<br>

@ -0,0 +1,356 @@
-- 菜单
CREATE TABLE `sys_menu` (
`menu_id` bigint NOT NULL AUTO_INCREMENT,
`parent_id` bigint COMMENT '父菜单ID一级菜单为0',
`name` varchar(50) COMMENT '菜单名称',
`url` varchar(200) COMMENT '菜单URL',
`perms` varchar(500) COMMENT '授权(多个用逗号分隔user:list,user:create)',
`type` int COMMENT '类型 0目录 1菜单 2按钮',
`icon` varchar(50) COMMENT '菜单图标',
`order_num` int COMMENT '排序',
PRIMARY KEY (`menu_id`)
) ENGINE=`InnoDB` DEFAULT CHARACTER SET utf8mb4 COMMENT='菜单管理';
-- 系统用户
CREATE TABLE `sys_user` (
`user_id` bigint NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL COMMENT '用户名',
`password` varchar(100) COMMENT '密码',
`salt` varchar(20) COMMENT '',
`email` varchar(100) COMMENT '邮箱',
`mobile` varchar(100) COMMENT '手机号',
`status` tinyint COMMENT '状态 0禁用 1正常',
`create_user_id` bigint(20) COMMENT '创建者ID',
`create_time` datetime COMMENT '创建时间',
PRIMARY KEY (`user_id`),
UNIQUE INDEX (`username`)
) ENGINE=`InnoDB` DEFAULT CHARACTER SET utf8mb4 COMMENT='系统用户';
-- 系统用户Token
CREATE TABLE `sys_user_token` (
`user_id` bigint(20) NOT NULL,
`token` varchar(100) NOT NULL COMMENT 'token',
`expire_time` datetime DEFAULT NULL COMMENT '过期时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`user_id`),
UNIQUE KEY `token` (`token`)
) ENGINE=`InnoDB` DEFAULT CHARACTER SET utf8mb4 COMMENT='系统用户Token';
-- 系统验证码
CREATE TABLE `sys_captcha` (
`uuid` char(36) NOT NULL COMMENT 'uuid',
`code` varchar(6) NOT NULL COMMENT '验证码',
`expire_time` datetime DEFAULT NULL COMMENT '过期时间',
PRIMARY KEY (`uuid`)
) ENGINE=`InnoDB` DEFAULT CHARACTER SET utf8mb4 COMMENT='系统验证码';
-- 角色
CREATE TABLE `sys_role` (
`role_id` bigint NOT NULL AUTO_INCREMENT,
`role_name` varchar(100) COMMENT '角色名称',
`remark` varchar(100) COMMENT '备注',
`create_user_id` bigint(20) COMMENT '创建者ID',
`create_time` datetime COMMENT '创建时间',
PRIMARY KEY (`role_id`)
) ENGINE=`InnoDB` DEFAULT CHARACTER SET utf8mb4 COMMENT='角色';
-- 用户与角色对应关系
CREATE TABLE `sys_user_role` (
`id` bigint NOT NULL AUTO_INCREMENT,
`user_id` bigint COMMENT '用户ID',
`role_id` bigint COMMENT '角色ID',
PRIMARY KEY (`id`)
) ENGINE=`InnoDB` DEFAULT CHARACTER SET utf8mb4 COMMENT='用户与角色对应关系';
-- 角色与菜单对应关系
CREATE TABLE `sys_role_menu` (
`id` bigint NOT NULL AUTO_INCREMENT,
`role_id` bigint COMMENT '角色ID',
`menu_id` bigint COMMENT '菜单ID',
PRIMARY KEY (`id`)
) ENGINE=`InnoDB` DEFAULT CHARACTER SET utf8mb4 COMMENT='角色与菜单对应关系';
-- 系统配置信息
CREATE TABLE `sys_config` (
`id` bigint NOT NULL AUTO_INCREMENT,
`param_key` varchar(50) COMMENT 'key',
`param_value` varchar(2000) COMMENT 'value',
`status` tinyint DEFAULT 1 COMMENT '状态 0隐藏 1显示',
`remark` varchar(500) COMMENT '备注',
PRIMARY KEY (`id`),
UNIQUE INDEX (`param_key`)
) ENGINE=`InnoDB` DEFAULT CHARACTER SET utf8mb4 COMMENT='系统配置信息表';
-- 系统日志
CREATE TABLE `sys_log` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`username` varchar(50) COMMENT '用户名',
`operation` varchar(50) COMMENT '用户操作',
`method` varchar(200) COMMENT '请求方法',
`params` varchar(5000) COMMENT '请求参数',
`time` bigint NOT NULL COMMENT '执行时长(毫秒)',
`ip` varchar(64) COMMENT 'IP地址',
`create_date` datetime COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=`InnoDB` DEFAULT CHARACTER SET utf8mb4 COMMENT='系统日志';
-- 文件上传
CREATE TABLE `sys_oss` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`url` varchar(200) COMMENT 'URL地址',
`create_date` datetime COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=`InnoDB` DEFAULT CHARACTER SET utf8mb4 COMMENT='文件上传';
-- 定时任务
CREATE TABLE `schedule_job` (
`job_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '任务id',
`bean_name` varchar(200) DEFAULT NULL COMMENT 'spring bean名称',
`params` varchar(2000) DEFAULT NULL COMMENT '参数',
`cron_expression` varchar(100) DEFAULT NULL COMMENT 'cron表达式',
`status` tinyint(4) DEFAULT NULL COMMENT '任务状态 0正常 1暂停',
`remark` varchar(255) DEFAULT NULL COMMENT '备注',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`job_id`)
) ENGINE=`InnoDB` DEFAULT CHARACTER SET utf8mb4 COMMENT='定时任务';
-- 定时任务日志
CREATE TABLE `schedule_job_log` (
`log_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '任务日志id',
`job_id` bigint(20) NOT NULL COMMENT '任务id',
`bean_name` varchar(200) DEFAULT NULL COMMENT 'spring bean名称',
`params` varchar(2000) DEFAULT NULL COMMENT '参数',
`status` tinyint(4) NOT NULL COMMENT '任务状态 0成功 1失败',
`error` varchar(2000) DEFAULT NULL COMMENT '失败信息',
`times` int(11) NOT NULL COMMENT '耗时(单位:毫秒)',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`log_id`),
KEY `job_id` (`job_id`)
) ENGINE=`InnoDB` DEFAULT CHARACTER SET utf8mb4 COMMENT='定时任务日志';
-- 用户表
CREATE TABLE `tb_user` (
`user_id` bigint NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL COMMENT '用户名',
`mobile` varchar(20) NOT NULL COMMENT '手机号',
`password` varchar(64) COMMENT '密码',
`create_time` datetime COMMENT '创建时间',
PRIMARY KEY (`user_id`),
UNIQUE INDEX (`username`)
) ENGINE=`InnoDB` DEFAULT CHARACTER SET utf8mb4 COMMENT='用户';
-- 初始数据
INSERT INTO `sys_user` (`user_id`, `username`, `password`, `salt`, `email`, `mobile`, `status`, `create_user_id`, `create_time`) VALUES ('1', 'admin', '9ec9750e709431dad22365cabc5c625482e574c74adaebba7dd02f1129e4ce1d', 'YzcmCZNvbXocrsz9dm8e', 'root@renren.io', '13612345678', '1', '1', '2016-11-11 11:11:11');
INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (1, 0, '系统管理', NULL, NULL, 0, 'system', 0);
INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (2, 1, '管理员列表', 'sys/user', NULL, 1, 'admin', 1);
INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (3, 1, '角色管理', 'sys/role', NULL, 1, 'role', 2);
INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (4, 1, '菜单管理', 'sys/menu', NULL, 1, 'menu', 3);
INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (5, 1, 'SQL监控', 'http://localhost:8080/renren-fast/druid/sql.html', NULL, 1, 'sql', 4);
INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (6, 1, '定时任务', 'job/schedule', NULL, 1, 'job', 5);
INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (7, 6, '查看', NULL, 'sys:schedule:list,sys:schedule:info', 2, NULL, 0);
INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (8, 6, '新增', NULL, 'sys:schedule:save', 2, NULL, 0);
INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (9, 6, '修改', NULL, 'sys:schedule:update', 2, NULL, 0);
INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (10, 6, '删除', NULL, 'sys:schedule:delete', 2, NULL, 0);
INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (11, 6, '暂停', NULL, 'sys:schedule:pause', 2, NULL, 0);
INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (12, 6, '恢复', NULL, 'sys:schedule:resume', 2, NULL, 0);
INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (13, 6, '立即执行', NULL, 'sys:schedule:run', 2, NULL, 0);
INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (14, 6, '日志列表', NULL, 'sys:schedule:log', 2, NULL, 0);
INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (15, 2, '查看', NULL, 'sys:user:list,sys:user:info', 2, NULL, 0);
INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (16, 2, '新增', NULL, 'sys:user:save,sys:role:select', 2, NULL, 0);
INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (17, 2, '修改', NULL, 'sys:user:update,sys:role:select', 2, NULL, 0);
INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (18, 2, '删除', NULL, 'sys:user:delete', 2, NULL, 0);
INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (19, 3, '查看', NULL, 'sys:role:list,sys:role:info', 2, NULL, 0);
INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (20, 3, '新增', NULL, 'sys:role:save,sys:menu:list', 2, NULL, 0);
INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (21, 3, '修改', NULL, 'sys:role:update,sys:menu:list', 2, NULL, 0);
INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (22, 3, '删除', NULL, 'sys:role:delete', 2, NULL, 0);
INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (23, 4, '查看', NULL, 'sys:menu:list,sys:menu:info', 2, NULL, 0);
INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (24, 4, '新增', NULL, 'sys:menu:save,sys:menu:select', 2, NULL, 0);
INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (25, 4, '修改', NULL, 'sys:menu:update,sys:menu:select', 2, NULL, 0);
INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (26, 4, '删除', NULL, 'sys:menu:delete', 2, NULL, 0);
INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (27, 1, '参数管理', 'sys/config', 'sys:config:list,sys:config:info,sys:config:save,sys:config:update,sys:config:delete', 1, 'config', 6);
INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (29, 1, '系统日志', 'sys/log', 'sys:log:list', 1, 'log', 7);
INSERT INTO `sys_menu`(`menu_id`, `parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`) VALUES (30, 1, '文件上传', 'oss/oss', 'sys:oss:all', 1, 'oss', 6);
INSERT INTO `sys_config` (`param_key`, `param_value`, `status`, `remark`) VALUES ('CLOUD_STORAGE_CONFIG_KEY', '{\"aliyunAccessKeyId\":\"\",\"aliyunAccessKeySecret\":\"\",\"aliyunBucketName\":\"\",\"aliyunDomain\":\"\",\"aliyunEndPoint\":\"\",\"aliyunPrefix\":\"\",\"qcloudBucketName\":\"\",\"qcloudDomain\":\"\",\"qcloudPrefix\":\"\",\"qcloudSecretId\":\"\",\"qcloudSecretKey\":\"\",\"qiniuAccessKey\":\"NrgMfABZxWLo5B-YYSjoE8-AZ1EISdi1Z3ubLOeZ\",\"qiniuBucketName\":\"ios-app\",\"qiniuDomain\":\"http://7xqbwh.dl1.z0.glb.clouddn.com\",\"qiniuPrefix\":\"upload\",\"qiniuSecretKey\":\"uIwJHevMRWU0VLxFvgy0tAcOdGqasdtVlJkdy6vV\",\"type\":1}', '0', '云存储配置信息');
INSERT INTO `schedule_job` (`bean_name`, `params`, `cron_expression`, `status`, `remark`, `create_time`) VALUES ('testTask', 'renren', '0 0/30 * * * ?', '0', '参数测试', now());
-- 账号13612345678 密码admin
INSERT INTO `tb_user` (`username`, `mobile`, `password`, `create_time`) VALUES ('mark', '13612345678', '8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918', '2017-03-23 22:37:41');
-- quartz自带表结构
CREATE TABLE QRTZ_JOB_DETAILS(
SCHED_NAME VARCHAR(120) NOT NULL,
JOB_NAME VARCHAR(200) NOT NULL,
JOB_GROUP VARCHAR(200) NOT NULL,
DESCRIPTION VARCHAR(250) NULL,
JOB_CLASS_NAME VARCHAR(250) NOT NULL,
IS_DURABLE VARCHAR(1) NOT NULL,
IS_NONCONCURRENT VARCHAR(1) NOT NULL,
IS_UPDATE_DATA VARCHAR(1) NOT NULL,
REQUESTS_RECOVERY VARCHAR(1) NOT NULL,
JOB_DATA BLOB NULL,
PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP))
ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE QRTZ_TRIGGERS (
SCHED_NAME VARCHAR(120) NOT NULL,
TRIGGER_NAME VARCHAR(200) NOT NULL,
TRIGGER_GROUP VARCHAR(200) NOT NULL,
JOB_NAME VARCHAR(200) NOT NULL,
JOB_GROUP VARCHAR(200) NOT NULL,
DESCRIPTION VARCHAR(250) NULL,
NEXT_FIRE_TIME BIGINT(13) NULL,
PREV_FIRE_TIME BIGINT(13) NULL,
PRIORITY INTEGER NULL,
TRIGGER_STATE VARCHAR(16) NOT NULL,
TRIGGER_TYPE VARCHAR(8) NOT NULL,
START_TIME BIGINT(13) NOT NULL,
END_TIME BIGINT(13) NULL,
CALENDAR_NAME VARCHAR(200) NULL,
MISFIRE_INSTR SMALLINT(2) NULL,
JOB_DATA BLOB NULL,
PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)
REFERENCES QRTZ_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP))
ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE QRTZ_SIMPLE_TRIGGERS (
SCHED_NAME VARCHAR(120) NOT NULL,
TRIGGER_NAME VARCHAR(200) NOT NULL,
TRIGGER_GROUP VARCHAR(200) NOT NULL,
REPEAT_COUNT BIGINT(7) NOT NULL,
REPEAT_INTERVAL BIGINT(12) NOT NULL,
TIMES_TRIGGERED BIGINT(10) NOT NULL,
PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP))
ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE QRTZ_CRON_TRIGGERS (
SCHED_NAME VARCHAR(120) NOT NULL,
TRIGGER_NAME VARCHAR(200) NOT NULL,
TRIGGER_GROUP VARCHAR(200) NOT NULL,
CRON_EXPRESSION VARCHAR(120) NOT NULL,
TIME_ZONE_ID VARCHAR(80),
PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP))
ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE QRTZ_SIMPROP_TRIGGERS
(
SCHED_NAME VARCHAR(120) NOT NULL,
TRIGGER_NAME VARCHAR(200) NOT NULL,
TRIGGER_GROUP VARCHAR(200) NOT NULL,
STR_PROP_1 VARCHAR(512) NULL,
STR_PROP_2 VARCHAR(512) NULL,
STR_PROP_3 VARCHAR(512) NULL,
INT_PROP_1 INT NULL,
INT_PROP_2 INT NULL,
LONG_PROP_1 BIGINT NULL,
LONG_PROP_2 BIGINT NULL,
DEC_PROP_1 NUMERIC(13,4) NULL,
DEC_PROP_2 NUMERIC(13,4) NULL,
BOOL_PROP_1 VARCHAR(1) NULL,
BOOL_PROP_2 VARCHAR(1) NULL,
PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP))
ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE QRTZ_BLOB_TRIGGERS (
SCHED_NAME VARCHAR(120) NOT NULL,
TRIGGER_NAME VARCHAR(200) NOT NULL,
TRIGGER_GROUP VARCHAR(200) NOT NULL,
BLOB_DATA BLOB NULL,
PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
INDEX (SCHED_NAME,TRIGGER_NAME, TRIGGER_GROUP),
FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP))
ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE QRTZ_CALENDARS (
SCHED_NAME VARCHAR(120) NOT NULL,
CALENDAR_NAME VARCHAR(200) NOT NULL,
CALENDAR BLOB NOT NULL,
PRIMARY KEY (SCHED_NAME,CALENDAR_NAME))
ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE QRTZ_PAUSED_TRIGGER_GRPS (
SCHED_NAME VARCHAR(120) NOT NULL,
TRIGGER_GROUP VARCHAR(200) NOT NULL,
PRIMARY KEY (SCHED_NAME,TRIGGER_GROUP))
ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE QRTZ_FIRED_TRIGGERS (
SCHED_NAME VARCHAR(120) NOT NULL,
ENTRY_ID VARCHAR(95) NOT NULL,
TRIGGER_NAME VARCHAR(200) NOT NULL,
TRIGGER_GROUP VARCHAR(200) NOT NULL,
INSTANCE_NAME VARCHAR(200) NOT NULL,
FIRED_TIME BIGINT(13) NOT NULL,
SCHED_TIME BIGINT(13) NOT NULL,
PRIORITY INTEGER NOT NULL,
STATE VARCHAR(16) NOT NULL,
JOB_NAME VARCHAR(200) NULL,
JOB_GROUP VARCHAR(200) NULL,
IS_NONCONCURRENT VARCHAR(1) NULL,
REQUESTS_RECOVERY VARCHAR(1) NULL,
PRIMARY KEY (SCHED_NAME,ENTRY_ID))
ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE QRTZ_SCHEDULER_STATE (
SCHED_NAME VARCHAR(120) NOT NULL,
INSTANCE_NAME VARCHAR(200) NOT NULL,
LAST_CHECKIN_TIME BIGINT(13) NOT NULL,
CHECKIN_INTERVAL BIGINT(13) NOT NULL,
PRIMARY KEY (SCHED_NAME,INSTANCE_NAME))
ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE QRTZ_LOCKS (
SCHED_NAME VARCHAR(120) NOT NULL,
LOCK_NAME VARCHAR(40) NOT NULL,
PRIMARY KEY (SCHED_NAME,LOCK_NAME))
ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE INDEX IDX_QRTZ_J_REQ_RECOVERY ON QRTZ_JOB_DETAILS(SCHED_NAME,REQUESTS_RECOVERY);
CREATE INDEX IDX_QRTZ_J_GRP ON QRTZ_JOB_DETAILS(SCHED_NAME,JOB_GROUP);
CREATE INDEX IDX_QRTZ_T_J ON QRTZ_TRIGGERS(SCHED_NAME,JOB_NAME,JOB_GROUP);
CREATE INDEX IDX_QRTZ_T_JG ON QRTZ_TRIGGERS(SCHED_NAME,JOB_GROUP);
CREATE INDEX IDX_QRTZ_T_C ON QRTZ_TRIGGERS(SCHED_NAME,CALENDAR_NAME);
CREATE INDEX IDX_QRTZ_T_G ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_GROUP);
CREATE INDEX IDX_QRTZ_T_STATE ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_STATE);
CREATE INDEX IDX_QRTZ_T_N_STATE ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP,TRIGGER_STATE);
CREATE INDEX IDX_QRTZ_T_N_G_STATE ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_GROUP,TRIGGER_STATE);
CREATE INDEX IDX_QRTZ_T_NEXT_FIRE_TIME ON QRTZ_TRIGGERS(SCHED_NAME,NEXT_FIRE_TIME);
CREATE INDEX IDX_QRTZ_T_NFT_ST ON QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_STATE,NEXT_FIRE_TIME);
CREATE INDEX IDX_QRTZ_T_NFT_MISFIRE ON QRTZ_TRIGGERS(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME);
CREATE INDEX IDX_QRTZ_T_NFT_ST_MISFIRE ON QRTZ_TRIGGERS(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME,TRIGGER_STATE);
CREATE INDEX IDX_QRTZ_T_NFT_ST_MISFIRE_GRP ON QRTZ_TRIGGERS(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME,TRIGGER_GROUP,TRIGGER_STATE);
CREATE INDEX IDX_QRTZ_FT_TRIG_INST_NAME ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,INSTANCE_NAME);
CREATE INDEX IDX_QRTZ_FT_INST_JOB_REQ_RCVRY ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,INSTANCE_NAME,REQUESTS_RECOVERY);
CREATE INDEX IDX_QRTZ_FT_J_G ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,JOB_NAME,JOB_GROUP);
CREATE INDEX IDX_QRTZ_FT_JG ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,JOB_GROUP);
CREATE INDEX IDX_QRTZ_FT_T_G ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP);
CREATE INDEX IDX_QRTZ_FT_TG ON QRTZ_FIRED_TRIGGERS(SCHED_NAME,TRIGGER_GROUP);

@ -0,0 +1,346 @@
-- 菜单
CREATE TABLE sys_menu (
menu_id NUMBER(20, 0) NOT NULL,
parent_id NUMBER(20, 0) NOT NULL,
name varchar2(50),
url varchar2(200),
perms varchar2(500),
type NUMBER(2, 0),
icon varchar2(50),
order_num NUMBER(8, 0),
PRIMARY KEY (menu_id)
);
-- 系统用户
CREATE TABLE sys_user (
user_id NUMBER(20, 0) NOT NULL,
username varchar2(50) NOT NULL,
password varchar2(100),
salt varchar2(20),
email varchar2(100),
mobile varchar2(100),
status NUMBER(2, 0) NOT NULL,
create_user_id NUMBER(20, 0) NOT NULL,
create_time timestamp,
PRIMARY KEY (user_id)
);
CREATE UNIQUE INDEX index_sys_user_username on sys_user(username);
-- 系统用户Token
CREATE TABLE sys_user_token (
user_id NUMBER(20, 0) NOT NULL,
token varchar2(100) NOT NULL,
expire_time timestamp,
update_time timestamp,
PRIMARY KEY (user_id)
);
CREATE UNIQUE INDEX index_token on sys_user_token(token);
-- 系统验证码
CREATE TABLE sys_captcha (
uuid varchar2(36) NOT NULL,
code varchar2(6) NOT NULL,
expire_time timestamp,
PRIMARY KEY (uuid)
);
-- 角色
CREATE TABLE sys_role (
role_id NUMBER(20, 0) NOT NULL,
role_name varchar2(100),
remark varchar2(100),
create_user_id NUMBER(20, 0) NOT NULL,
create_time timestamp,
PRIMARY KEY (role_id)
);
-- 用户与角色对应关系
CREATE TABLE sys_user_role (
id NUMBER(20, 0) NOT NULL,
user_id NUMBER(20, 0) NOT NULL,
role_id NUMBER(20, 0) NOT NULL,
PRIMARY KEY (id)
);
-- 角色与菜单对应关系
CREATE TABLE sys_role_menu (
id NUMBER(20, 0) NOT NULL,
role_id NUMBER(20, 0) NOT NULL,
menu_id NUMBER(20, 0) NOT NULL,
PRIMARY KEY (id)
);
-- 系统配置信息
CREATE TABLE sys_config (
id NUMBER(20, 0) NOT NULL,
param_key varchar2(50),
param_value varchar2(4000),
status NUMBER(2, 0) DEFAULT 1 NOT NULL,
remark varchar2(500),
PRIMARY KEY (id)
);
CREATE UNIQUE INDEX index_param_key on sys_config(param_key);
-- 系统日志
CREATE TABLE sys_log (
id NUMBER(20, 0) NOT NULL,
username varchar2(50),
operation varchar2(50),
method varchar2(200),
params clob,
time NUMBER(20, 0) NOT NULL,
ip varchar2(64),
create_date timestamp,
PRIMARY KEY (id)
);
-- 文件上传
CREATE TABLE sys_oss (
id NUMBER(20, 0) NOT NULL,
url varchar2(200),
create_date timestamp,
PRIMARY KEY (id)
);
-- 定时任务
CREATE TABLE schedule_job (
job_id NUMBER(20, 0) NOT NULL,
bean_name varchar2(200),
params varchar2(2000),
cron_expression varchar2(100),
status NUMBER(2, 0) NOT NULL,
remark varchar2(255),
create_time timestamp,
PRIMARY KEY (job_id)
);
-- 定时任务日志
CREATE TABLE schedule_job_log (
log_id NUMBER(20, 0) NOT NULL,
job_id NUMBER(20, 0) NOT NULL,
bean_name varchar2(200),
params varchar2(2000),
status NUMBER(2, 0) NOT NULL,
error varchar2(2000),
times NUMBER(10, 0) NOT NULL,
create_time timestamp,
PRIMARY KEY (log_id)
);
CREATE INDEX index_job_id on schedule_job_log(job_id);
-- 用户表
CREATE TABLE tb_user (
user_id NUMBER(20, 0) NOT NULL,
username varchar2(50) NOT NULL,
mobile varchar2(20) NOT NULL,
password varchar2(64),
create_time timestamp,
PRIMARY KEY (user_id)
);
CREATE UNIQUE INDEX index_tb_user_username on tb_user(username);
INSERT INTO sys_user (user_id, username, password, salt, email, mobile, status, create_user_id, create_time) VALUES ('1', 'admin', '9ec9750e709431dad22365cabc5c625482e574c74adaebba7dd02f1129e4ce1d', 'YzcmCZNvbXocrsz9dm8e', 'root@renren.io', '13612345678', '1', '1', CURRENT_DATE);
INSERT INTO sys_menu(menu_id, parent_id, name, url, perms, type, icon, order_num) VALUES (1, 0, '系统管理', NULL, NULL, 0, 'system', 0);
INSERT INTO sys_menu(menu_id, parent_id, name, url, perms, type, icon, order_num) VALUES (2, 1, '管理员列表', 'sys/user', NULL, 1, 'admin', 1);
INSERT INTO sys_menu(menu_id, parent_id, name, url, perms, type, icon, order_num) VALUES (3, 1, '角色管理', 'sys/role', NULL, 1, 'role', 2);
INSERT INTO sys_menu(menu_id, parent_id, name, url, perms, type, icon, order_num) VALUES (4, 1, '菜单管理', 'sys/menu', NULL, 1, 'menu', 3);
INSERT INTO sys_menu(menu_id, parent_id, name, url, perms, type, icon, order_num) VALUES (5, 1, 'SQL监控', 'http://localhost:8080/renren-fast/druid/sql.html', NULL, 1, 'sql', 4);
INSERT INTO sys_menu(menu_id, parent_id, name, url, perms, type, icon, order_num) VALUES (6, 1, '定时任务', 'job/schedule', NULL, 1, 'job', 5);
INSERT INTO sys_menu(menu_id, parent_id, name, url, perms, type, icon, order_num) VALUES (7, 6, '查看', NULL, 'sys:schedule:list,sys:schedule:info', 2, NULL, 0);
INSERT INTO sys_menu(menu_id, parent_id, name, url, perms, type, icon, order_num) VALUES (8, 6, '新增', NULL, 'sys:schedule:save', 2, NULL, 0);
INSERT INTO sys_menu(menu_id, parent_id, name, url, perms, type, icon, order_num) VALUES (9, 6, '修改', NULL, 'sys:schedule:update', 2, NULL, 0);
INSERT INTO sys_menu(menu_id, parent_id, name, url, perms, type, icon, order_num) VALUES (10, 6, '删除', NULL, 'sys:schedule:delete', 2, NULL, 0);
INSERT INTO sys_menu(menu_id, parent_id, name, url, perms, type, icon, order_num) VALUES (11, 6, '暂停', NULL, 'sys:schedule:pause', 2, NULL, 0);
INSERT INTO sys_menu(menu_id, parent_id, name, url, perms, type, icon, order_num) VALUES (12, 6, '恢复', NULL, 'sys:schedule:resume', 2, NULL, 0);
INSERT INTO sys_menu(menu_id, parent_id, name, url, perms, type, icon, order_num) VALUES (13, 6, '立即执行', NULL, 'sys:schedule:run', 2, NULL, 0);
INSERT INTO sys_menu(menu_id, parent_id, name, url, perms, type, icon, order_num) VALUES (14, 6, '日志列表', NULL, 'sys:schedule:log', 2, NULL, 0);
INSERT INTO sys_menu(menu_id, parent_id, name, url, perms, type, icon, order_num) VALUES (15, 2, '查看', NULL, 'sys:user:list,sys:user:info', 2, NULL, 0);
INSERT INTO sys_menu(menu_id, parent_id, name, url, perms, type, icon, order_num) VALUES (16, 2, '新增', NULL, 'sys:user:save,sys:role:select', 2, NULL, 0);
INSERT INTO sys_menu(menu_id, parent_id, name, url, perms, type, icon, order_num) VALUES (17, 2, '修改', NULL, 'sys:user:update,sys:role:select', 2, NULL, 0);
INSERT INTO sys_menu(menu_id, parent_id, name, url, perms, type, icon, order_num) VALUES (18, 2, '删除', NULL, 'sys:user:delete', 2, NULL, 0);
INSERT INTO sys_menu(menu_id, parent_id, name, url, perms, type, icon, order_num) VALUES (19, 3, '查看', NULL, 'sys:role:list,sys:role:info', 2, NULL, 0);
INSERT INTO sys_menu(menu_id, parent_id, name, url, perms, type, icon, order_num) VALUES (20, 3, '新增', NULL, 'sys:role:save,sys:menu:list', 2, NULL, 0);
INSERT INTO sys_menu(menu_id, parent_id, name, url, perms, type, icon, order_num) VALUES (21, 3, '修改', NULL, 'sys:role:update,sys:menu:list', 2, NULL, 0);
INSERT INTO sys_menu(menu_id, parent_id, name, url, perms, type, icon, order_num) VALUES (22, 3, '删除', NULL, 'sys:role:delete', 2, NULL, 0);
INSERT INTO sys_menu(menu_id, parent_id, name, url, perms, type, icon, order_num) VALUES (23, 4, '查看', NULL, 'sys:menu:list,sys:menu:info', 2, NULL, 0);
INSERT INTO sys_menu(menu_id, parent_id, name, url, perms, type, icon, order_num) VALUES (24, 4, '新增', NULL, 'sys:menu:save,sys:menu:select', 2, NULL, 0);
INSERT INTO sys_menu(menu_id, parent_id, name, url, perms, type, icon, order_num) VALUES (25, 4, '修改', NULL, 'sys:menu:update,sys:menu:select', 2, NULL, 0);
INSERT INTO sys_menu(menu_id, parent_id, name, url, perms, type, icon, order_num) VALUES (26, 4, '删除', NULL, 'sys:menu:delete', 2, NULL, 0);
INSERT INTO sys_menu(menu_id, parent_id, name, url, perms, type, icon, order_num) VALUES (27, 1, '参数管理', 'sys/config', 'sys:config:list,sys:config:info,sys:config:save,sys:config:update,sys:config:delete', 1, 'config', 6);
INSERT INTO sys_menu(menu_id, parent_id, name, url, perms, type, icon, order_num) VALUES (29, 1, '系统日志', 'sys/log', 'sys:log:list', 1, 'log', 7);
INSERT INTO sys_menu(menu_id, parent_id, name, url, perms, type, icon, order_num) VALUES (30, 1, '文件上传', 'oss/oss', 'sys:oss:all', 1, 'oss', 6);
INSERT INTO sys_config (id, param_key, param_value, status, remark) VALUES (1, 'CLOUD_STORAGE_CONFIG_KEY', '{"aliyunAccessKeyId":"","aliyunAccessKeySecret":"","aliyunBucketName":"","aliyunDomain":"","aliyunEndPoint":"","aliyunPrefix":"","qcloudBucketName":"","qcloudDomain":"","qcloudPrefix":"","qcloudSecretId":"","qcloudSecretKey":"","qiniuAccessKey":"NrgMfABZxWLo5B-YYSjoE8-AZ1EISdi1Z3ubLOeZ","qiniuBucketName":"ios-app","qiniuDomain":"http://7xlij2.com1.z0.glb.clouddn.com","qiniuPrefix":"upload","qiniuSecretKey":"uIwJHevMRWU0VLxFvgy0tAcOdGqasdtVlJkdy6vV","type":1}', '0', '云存储配置信息');
INSERT INTO schedule_job (job_id, bean_name, params, cron_expression, status, remark, create_time) VALUES (1, 'testTask', 'renren', '0 0/30 * * * ?', '0', '参数测试', CURRENT_DATE);
-- 账号13612345678 密码admin
INSERT INTO tb_user (user_id, username, mobile, password, create_time) VALUES (1, 'mark', '13612345678', '8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918', CURRENT_DATE);
-- quartz自带表结构
CREATE TABLE qrtz_job_details
(
SCHED_NAME VARCHAR2(120) NOT NULL,
JOB_NAME VARCHAR2(200) NOT NULL,
JOB_GROUP VARCHAR2(200) NOT NULL,
DESCRIPTION VARCHAR2(250) NULL,
JOB_CLASS_NAME VARCHAR2(250) NOT NULL,
IS_DURABLE VARCHAR2(1) NOT NULL,
IS_NONCONCURRENT VARCHAR2(1) NOT NULL,
IS_UPDATE_DATA VARCHAR2(1) NOT NULL,
REQUESTS_RECOVERY VARCHAR2(1) NOT NULL,
JOB_DATA BLOB NULL,
CONSTRAINT QRTZ_JOB_DETAILS_PK PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)
);
CREATE TABLE qrtz_triggers
(
SCHED_NAME VARCHAR2(120) NOT NULL,
TRIGGER_NAME VARCHAR2(200) NOT NULL,
TRIGGER_GROUP VARCHAR2(200) NOT NULL,
JOB_NAME VARCHAR2(200) NOT NULL,
JOB_GROUP VARCHAR2(200) NOT NULL,
DESCRIPTION VARCHAR2(250) NULL,
NEXT_FIRE_TIME NUMBER(13) NULL,
PREV_FIRE_TIME NUMBER(13) NULL,
PRIORITY NUMBER(13) NULL,
TRIGGER_STATE VARCHAR2(16) NOT NULL,
TRIGGER_TYPE VARCHAR2(8) NOT NULL,
START_TIME NUMBER(13) NOT NULL,
END_TIME NUMBER(13) NULL,
CALENDAR_NAME VARCHAR2(200) NULL,
MISFIRE_INSTR NUMBER(2) NULL,
JOB_DATA BLOB NULL,
CONSTRAINT QRTZ_TRIGGERS_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
CONSTRAINT QRTZ_TRIGGER_TO_JOBS_FK FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)
REFERENCES QRTZ_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP)
);
CREATE TABLE qrtz_simple_triggers
(
SCHED_NAME VARCHAR2(120) NOT NULL,
TRIGGER_NAME VARCHAR2(200) NOT NULL,
TRIGGER_GROUP VARCHAR2(200) NOT NULL,
REPEAT_COUNT NUMBER(7) NOT NULL,
REPEAT_INTERVAL NUMBER(12) NOT NULL,
TIMES_TRIGGERED NUMBER(10) NOT NULL,
CONSTRAINT QRTZ_SIMPLE_TRIG_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
CONSTRAINT QRTZ_SIMPLE_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
);
CREATE TABLE qrtz_cron_triggers
(
SCHED_NAME VARCHAR2(120) NOT NULL,
TRIGGER_NAME VARCHAR2(200) NOT NULL,
TRIGGER_GROUP VARCHAR2(200) NOT NULL,
CRON_EXPRESSION VARCHAR2(120) NOT NULL,
TIME_ZONE_ID VARCHAR2(80),
CONSTRAINT QRTZ_CRON_TRIG_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
CONSTRAINT QRTZ_CRON_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
);
CREATE TABLE qrtz_simprop_triggers
(
SCHED_NAME VARCHAR2(120) NOT NULL,
TRIGGER_NAME VARCHAR2(200) NOT NULL,
TRIGGER_GROUP VARCHAR2(200) NOT NULL,
STR_PROP_1 VARCHAR2(512) NULL,
STR_PROP_2 VARCHAR2(512) NULL,
STR_PROP_3 VARCHAR2(512) NULL,
INT_PROP_1 NUMBER(10) NULL,
INT_PROP_2 NUMBER(10) NULL,
LONG_PROP_1 NUMBER(13) NULL,
LONG_PROP_2 NUMBER(13) NULL,
DEC_PROP_1 NUMERIC(13,4) NULL,
DEC_PROP_2 NUMERIC(13,4) NULL,
BOOL_PROP_1 VARCHAR2(1) NULL,
BOOL_PROP_2 VARCHAR2(1) NULL,
CONSTRAINT QRTZ_SIMPROP_TRIG_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
CONSTRAINT QRTZ_SIMPROP_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
);
CREATE TABLE qrtz_blob_triggers
(
SCHED_NAME VARCHAR2(120) NOT NULL,
TRIGGER_NAME VARCHAR2(200) NOT NULL,
TRIGGER_GROUP VARCHAR2(200) NOT NULL,
BLOB_DATA BLOB NULL,
CONSTRAINT QRTZ_BLOB_TRIG_PK PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
CONSTRAINT QRTZ_BLOB_TRIG_TO_TRIG_FK FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
);
CREATE TABLE qrtz_calendars
(
SCHED_NAME VARCHAR2(120) NOT NULL,
CALENDAR_NAME VARCHAR2(200) NOT NULL,
CALENDAR BLOB NOT NULL,
CONSTRAINT QRTZ_CALENDARS_PK PRIMARY KEY (SCHED_NAME,CALENDAR_NAME)
);
CREATE TABLE qrtz_paused_trigger_grps
(
SCHED_NAME VARCHAR2(120) NOT NULL,
TRIGGER_GROUP VARCHAR2(200) NOT NULL,
CONSTRAINT QRTZ_PAUSED_TRIG_GRPS_PK PRIMARY KEY (SCHED_NAME,TRIGGER_GROUP)
);
CREATE TABLE qrtz_fired_triggers
(
SCHED_NAME VARCHAR2(120) NOT NULL,
ENTRY_ID VARCHAR2(95) NOT NULL,
TRIGGER_NAME VARCHAR2(200) NOT NULL,
TRIGGER_GROUP VARCHAR2(200) NOT NULL,
INSTANCE_NAME VARCHAR2(200) NOT NULL,
FIRED_TIME NUMBER(13) NOT NULL,
SCHED_TIME NUMBER(13) NOT NULL,
PRIORITY NUMBER(13) NOT NULL,
STATE VARCHAR2(16) NOT NULL,
JOB_NAME VARCHAR2(200) NULL,
JOB_GROUP VARCHAR2(200) NULL,
IS_NONCONCURRENT VARCHAR2(1) NULL,
REQUESTS_RECOVERY VARCHAR2(1) NULL,
CONSTRAINT QRTZ_FIRED_TRIGGER_PK PRIMARY KEY (SCHED_NAME,ENTRY_ID)
);
CREATE TABLE qrtz_scheduler_state
(
SCHED_NAME VARCHAR2(120) NOT NULL,
INSTANCE_NAME VARCHAR2(200) NOT NULL,
LAST_CHECKIN_TIME NUMBER(13) NOT NULL,
CHECKIN_INTERVAL NUMBER(13) NOT NULL,
CONSTRAINT QRTZ_SCHEDULER_STATE_PK PRIMARY KEY (SCHED_NAME,INSTANCE_NAME)
);
CREATE TABLE qrtz_locks
(
SCHED_NAME VARCHAR2(120) NOT NULL,
LOCK_NAME VARCHAR2(40) NOT NULL,
CONSTRAINT QRTZ_LOCKS_PK PRIMARY KEY (SCHED_NAME,LOCK_NAME)
);
create index idx_qrtz_j_req_recovery on qrtz_job_details(SCHED_NAME,REQUESTS_RECOVERY);
create index idx_qrtz_j_grp on qrtz_job_details(SCHED_NAME,JOB_GROUP);
create index idx_qrtz_t_j on qrtz_triggers(SCHED_NAME,JOB_NAME,JOB_GROUP);
create index idx_qrtz_t_jg on qrtz_triggers(SCHED_NAME,JOB_GROUP);
create index idx_qrtz_t_c on qrtz_triggers(SCHED_NAME,CALENDAR_NAME);
create index idx_qrtz_t_g on qrtz_triggers(SCHED_NAME,TRIGGER_GROUP);
create index idx_qrtz_t_state on qrtz_triggers(SCHED_NAME,TRIGGER_STATE);
create index idx_qrtz_t_n_state on qrtz_triggers(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP,TRIGGER_STATE);
create index idx_qrtz_t_n_g_state on qrtz_triggers(SCHED_NAME,TRIGGER_GROUP,TRIGGER_STATE);
create index idx_qrtz_t_next_fire_time on qrtz_triggers(SCHED_NAME,NEXT_FIRE_TIME);
create index idx_qrtz_t_nft_st on qrtz_triggers(SCHED_NAME,TRIGGER_STATE,NEXT_FIRE_TIME);
create index idx_qrtz_t_nft_misfire on qrtz_triggers(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME);
create index idx_qrtz_t_nft_st_misfire on qrtz_triggers(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME,TRIGGER_STATE);
create index idx_qrtz_t_nft_st_misfire_grp on qrtz_triggers(SCHED_NAME,MISFIRE_INSTR,NEXT_FIRE_TIME,TRIGGER_GROUP,TRIGGER_STATE);
create index idx_qrtz_ft_trig_inst_name on qrtz_fired_triggers(SCHED_NAME,INSTANCE_NAME);
create index idx_qrtz_ft_inst_job_req_rcvry on qrtz_fired_triggers(SCHED_NAME,INSTANCE_NAME,REQUESTS_RECOVERY);
create index idx_qrtz_ft_j_g on qrtz_fired_triggers(SCHED_NAME,JOB_NAME,JOB_GROUP);
create index idx_qrtz_ft_jg on qrtz_fired_triggers(SCHED_NAME,JOB_GROUP);
create index idx_qrtz_ft_t_g on qrtz_fired_triggers(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP);
create index idx_qrtz_ft_tg on qrtz_fired_triggers(SCHED_NAME,TRIGGER_GROUP);

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save