基本信息管理:banner 小程序banner
parent
12c8eb5bc7
commit
5ae7336862
|
|
@ -0,0 +1,71 @@
|
|||
package com.wyh.admin.controller.basic.banner;
|
||||
|
||||
import com.wyh.admin.aop.Log;
|
||||
import com.wyh.admin.service.IBannerService;
|
||||
import com.wyh.admin.validate.basic.banner.BannerCreateValidate;
|
||||
import com.wyh.admin.validate.basic.banner.BannerSearchValidate;
|
||||
import com.wyh.admin.validate.basic.banner.BannerUpdateValidate;
|
||||
import com.wyh.admin.validate.commons.IdValidate;
|
||||
|
||||
import com.wyh.admin.validate.commons.PageValidate;
|
||||
|
||||
import com.wyh.admin.vo.basic.banner.BannerDetailVo;
|
||||
import com.wyh.admin.vo.basic.banner.BannerListedVo;
|
||||
import com.wyh.common.core.AjaxResult;
|
||||
import com.wyh.common.core.PageResult;
|
||||
import com.wyh.common.validator.annotation.IDMust;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("api/banner")
|
||||
@Api(tags = "banner信息管理")
|
||||
public class BannerController {
|
||||
|
||||
@Resource
|
||||
IBannerService iBannerService;
|
||||
|
||||
@GetMapping("/list")
|
||||
@ApiOperation(value="banner信息列表")
|
||||
public AjaxResult<PageResult<BannerListedVo>> list(@Validated PageValidate pageValidate,
|
||||
@Validated BannerSearchValidate searchValidate) {
|
||||
PageResult<BannerListedVo> list = iBannerService.list(pageValidate, searchValidate);
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
|
||||
@GetMapping("/detail")
|
||||
@ApiOperation(value="banner信息详情")
|
||||
public AjaxResult<BannerDetailVo> detail(@Validated @IDMust() @RequestParam("id") Integer id) {
|
||||
BannerDetailVo detail = iBannerService.detail(id);
|
||||
return AjaxResult.success(detail);
|
||||
}
|
||||
|
||||
@Log(title = "banner信息新增")
|
||||
@PostMapping("/add")
|
||||
@ApiOperation(value="banner信息新增")
|
||||
public AjaxResult<Object> add(@Validated @RequestBody BannerCreateValidate createValidate) {
|
||||
iBannerService.add(createValidate);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@Log(title = "banner信息编辑")
|
||||
@PostMapping("/edit")
|
||||
@ApiOperation(value="banner信息编辑")
|
||||
public AjaxResult<Object> edit(@Validated @RequestBody BannerUpdateValidate updateValidate) {
|
||||
iBannerService.edit(updateValidate);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@Log(title = "banner信息删除")
|
||||
@PostMapping("/del")
|
||||
@ApiOperation(value="banner信息删除")
|
||||
public AjaxResult<Object> del(@Validated @RequestBody IdValidate idValidate) {
|
||||
iBannerService.del(idValidate.getId());
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,70 @@
|
|||
package com.wyh.admin.controller.basic.bannerfront;
|
||||
|
||||
import com.wyh.admin.aop.Log;
|
||||
import com.wyh.admin.service.IBannerFrontService;
|
||||
import com.wyh.admin.validate.basic.bannerfront.BannerFrontCreateValidate;
|
||||
import com.wyh.admin.validate.basic.bannerfront.BannerFrontSearchValidate;
|
||||
import com.wyh.admin.validate.basic.bannerfront.BannerFrontUpdateValidate;
|
||||
import com.wyh.admin.validate.commons.IdValidate;
|
||||
import com.wyh.admin.validate.commons.PageValidate;
|
||||
|
||||
import com.wyh.admin.vo.basic.bannerfront.BannerFrontDetailVo;
|
||||
import com.wyh.admin.vo.basic.bannerfront.BannerFrontListedVo;
|
||||
import com.wyh.common.core.AjaxResult;
|
||||
import com.wyh.common.core.PageResult;
|
||||
import com.wyh.common.validator.annotation.IDMust;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("api/bannerfront")
|
||||
@Api(tags = "小程序banner管理管理")
|
||||
public class BannerFrontController {
|
||||
|
||||
@Resource
|
||||
IBannerFrontService iBannerFrontService;
|
||||
|
||||
@GetMapping("/list")
|
||||
@ApiOperation(value="小程序banner管理列表")
|
||||
public AjaxResult<PageResult<BannerFrontListedVo>> list(@Validated PageValidate pageValidate,
|
||||
@Validated BannerFrontSearchValidate searchValidate) {
|
||||
PageResult<BannerFrontListedVo> list = iBannerFrontService.list(pageValidate, searchValidate);
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
|
||||
@GetMapping("/detail")
|
||||
@ApiOperation(value="小程序banner管理详情")
|
||||
public AjaxResult<BannerFrontDetailVo> detail(@Validated @IDMust() @RequestParam("id") Integer id) {
|
||||
BannerFrontDetailVo detail = iBannerFrontService.detail(id);
|
||||
return AjaxResult.success(detail);
|
||||
}
|
||||
|
||||
@Log(title = "小程序banner管理新增")
|
||||
@PostMapping("/add")
|
||||
@ApiOperation(value="小程序banner管理新增")
|
||||
public AjaxResult<Object> add(@Validated @RequestBody BannerFrontCreateValidate createValidate) {
|
||||
iBannerFrontService.add(createValidate);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@Log(title = "小程序banner管理编辑")
|
||||
@PostMapping("/edit")
|
||||
@ApiOperation(value="小程序banner管理编辑")
|
||||
public AjaxResult<Object> edit(@Validated @RequestBody BannerFrontUpdateValidate updateValidate) {
|
||||
iBannerFrontService.edit(updateValidate);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@Log(title = "小程序banner管理删除")
|
||||
@PostMapping("/del")
|
||||
@ApiOperation(value="小程序banner管理删除")
|
||||
public AjaxResult<Object> del(@Validated @RequestBody IdValidate idValidate) {
|
||||
iBannerFrontService.del(idValidate.getId());
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
package com.wyh.admin.controller.basic.company;
|
||||
|
||||
import com.wyh.admin.aop.Log;
|
||||
import com.wyh.admin.service.ICaseService;
|
||||
import com.wyh.admin.validate.basic.company.CaseCreateValidate;
|
||||
import com.wyh.admin.validate.basic.company.CaseSearchValidate;
|
||||
import com.wyh.admin.validate.basic.company.CaseUpdateValidate;
|
||||
import com.wyh.admin.validate.commons.IdValidate;
|
||||
import com.wyh.admin.validate.commons.PageValidate;
|
||||
import com.wyh.admin.vo.basic.company.CaseDetailVo;
|
||||
import com.wyh.admin.vo.basic.company.CaseListedVo;
|
||||
import com.wyh.common.core.AjaxResult;
|
||||
import com.wyh.common.core.PageResult;
|
||||
import com.wyh.common.validator.annotation.IDMust;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("api/case")
|
||||
@Api(tags = "成功案例信息管理")
|
||||
public class CaseController {
|
||||
|
||||
@Resource
|
||||
ICaseService iCaseService;
|
||||
|
||||
@GetMapping("/list")
|
||||
@ApiOperation(value="成功案例信息列表")
|
||||
public AjaxResult<PageResult<CaseListedVo>> list(@Validated PageValidate pageValidate,
|
||||
@Validated CaseSearchValidate searchValidate) {
|
||||
PageResult<CaseListedVo> list = iCaseService.list(pageValidate, searchValidate);
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
|
||||
@GetMapping("/detail")
|
||||
@ApiOperation(value="成功案例信息详情")
|
||||
public AjaxResult<CaseDetailVo> detail(@Validated @IDMust() @RequestParam("id") Integer id) {
|
||||
CaseDetailVo detail = iCaseService.detail(id);
|
||||
return AjaxResult.success(detail);
|
||||
}
|
||||
|
||||
@Log(title = "成功案例信息新增")
|
||||
@PostMapping("/add")
|
||||
@ApiOperation(value="成功案例信息新增")
|
||||
public AjaxResult<Object> add(@Validated @RequestBody CaseCreateValidate createValidate) {
|
||||
iCaseService.add(createValidate);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@Log(title = "成功案例信息编辑")
|
||||
@PostMapping("/edit")
|
||||
@ApiOperation(value="成功案例信息编辑")
|
||||
public AjaxResult<Object> edit(@Validated @RequestBody CaseUpdateValidate updateValidate) {
|
||||
iCaseService.edit(updateValidate);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@Log(title = "成功案例信息删除")
|
||||
@PostMapping("/del")
|
||||
@ApiOperation(value="成功案例信息删除")
|
||||
public AjaxResult<Object> del(@Validated @RequestBody IdValidate idValidate) {
|
||||
iCaseService.del(idValidate.getId());
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -4,10 +4,10 @@ import com.alibaba.fastjson2.JSONArray;
|
|||
import com.wyh.admin.aop.Log;
|
||||
import com.wyh.admin.service.IGoodsCateService;
|
||||
import com.wyh.admin.validate.commons.IdValidate;
|
||||
import com.wyh.admin.validate.GoodsCateCreateValidate;
|
||||
import com.wyh.admin.validate.GoodsCateUpdateValidate;
|
||||
import com.wyh.admin.validate.GoodsCateSearchValidate;
|
||||
import com.wyh.admin.vo.GoodsCateDetailVo;
|
||||
import com.wyh.admin.validate.goods.GoodsCateCreateValidate;
|
||||
import com.wyh.admin.vo.goods.GoodsCateDetailVo;
|
||||
import com.wyh.common.core.AjaxResult;
|
||||
import com.wyh.common.validator.annotation.IDMust;
|
||||
import io.swagger.annotations.Api;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,61 @@
|
|||
package com.wyh.admin.service;
|
||||
|
||||
import com.wyh.admin.validate.basic.bannerfront.BannerFrontCreateValidate;
|
||||
import com.wyh.admin.validate.basic.bannerfront.BannerFrontSearchValidate;
|
||||
import com.wyh.admin.validate.basic.bannerfront.BannerFrontUpdateValidate;
|
||||
import com.wyh.admin.validate.commons.PageValidate;
|
||||
import com.wyh.admin.vo.basic.bannerfront.BannerFrontDetailVo;
|
||||
import com.wyh.admin.vo.basic.bannerfront.BannerFrontListedVo;
|
||||
import com.wyh.common.core.PageResult;
|
||||
|
||||
|
||||
/**
|
||||
* 小程序banner管理服务接口类
|
||||
* @author wyh
|
||||
*/
|
||||
public interface IBannerFrontService {
|
||||
|
||||
/**
|
||||
* 小程序banner管理列表
|
||||
*
|
||||
* @author wyh
|
||||
* @param pageValidate 分页参数
|
||||
* @param searchValidate 搜索参数
|
||||
* @return PageResult<BannerFrontListedVo>
|
||||
*/
|
||||
PageResult<BannerFrontListedVo> list(PageValidate pageValidate, BannerFrontSearchValidate searchValidate);
|
||||
|
||||
/**
|
||||
* 小程序banner管理详情
|
||||
*
|
||||
* @author wyh
|
||||
* @param id 主键ID
|
||||
* @return BannerFrontDetailVo
|
||||
*/
|
||||
BannerFrontDetailVo detail(Integer id);
|
||||
|
||||
/**
|
||||
* 小程序banner管理新增
|
||||
*
|
||||
* @author wyh
|
||||
* @param createValidate 参数
|
||||
*/
|
||||
void add(BannerFrontCreateValidate createValidate);
|
||||
|
||||
/**
|
||||
* 小程序banner管理编辑
|
||||
*
|
||||
* @author wyh
|
||||
* @param updateValidate 参数
|
||||
*/
|
||||
void edit(BannerFrontUpdateValidate updateValidate);
|
||||
|
||||
/**
|
||||
* 小程序banner管理删除
|
||||
*
|
||||
* @author wyh
|
||||
* @param id 主键ID
|
||||
*/
|
||||
void del(Integer id);
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
package com.wyh.admin.service;
|
||||
|
||||
import com.wyh.admin.validate.basic.banner.BannerCreateValidate;
|
||||
import com.wyh.admin.validate.basic.banner.BannerSearchValidate;
|
||||
import com.wyh.admin.validate.basic.banner.BannerUpdateValidate;
|
||||
import com.wyh.admin.validate.commons.PageValidate;
|
||||
import com.wyh.admin.vo.basic.banner.BannerDetailVo;
|
||||
import com.wyh.admin.vo.basic.banner.BannerListedVo;
|
||||
import com.wyh.common.core.PageResult;
|
||||
|
||||
|
||||
/**
|
||||
* banner信息服务接口类
|
||||
* @author LikeAdmin
|
||||
*/
|
||||
public interface IBannerService {
|
||||
|
||||
/**
|
||||
* banner信息列表
|
||||
*
|
||||
* @author LikeAdmin
|
||||
* @param pageValidate 分页参数
|
||||
* @param searchValidate 搜索参数
|
||||
* @return PageResult<BannerListedVo>
|
||||
*/
|
||||
PageResult<BannerListedVo> list(PageValidate pageValidate, BannerSearchValidate searchValidate);
|
||||
|
||||
/**
|
||||
* banner信息详情
|
||||
*
|
||||
* @author LikeAdmin
|
||||
* @param id 主键ID
|
||||
* @return BannerDetailVo
|
||||
*/
|
||||
BannerDetailVo detail(Integer id);
|
||||
|
||||
/**
|
||||
* banner信息新增
|
||||
*
|
||||
* @author LikeAdmin
|
||||
* @param createValidate 参数
|
||||
*/
|
||||
void add(BannerCreateValidate createValidate);
|
||||
|
||||
/**
|
||||
* banner信息编辑
|
||||
*
|
||||
* @author LikeAdmin
|
||||
* @param updateValidate 参数
|
||||
*/
|
||||
void edit(BannerUpdateValidate updateValidate);
|
||||
|
||||
/**
|
||||
* banner信息删除
|
||||
*
|
||||
* @author LikeAdmin
|
||||
* @param id 主键ID
|
||||
*/
|
||||
void del(Integer id);
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
package com.wyh.admin.service;
|
||||
|
||||
import com.wyh.admin.validate.basic.company.CaseCreateValidate;
|
||||
import com.wyh.admin.validate.basic.company.CaseSearchValidate;
|
||||
import com.wyh.admin.validate.basic.company.CaseUpdateValidate;
|
||||
import com.wyh.admin.validate.commons.PageValidate;
|
||||
import com.wyh.admin.vo.basic.company.CaseDetailVo;
|
||||
import com.wyh.admin.vo.basic.company.CaseListedVo;
|
||||
import com.wyh.common.core.PageResult;
|
||||
|
||||
|
||||
/**
|
||||
* 成功案例信息服务接口类
|
||||
* @author wyh
|
||||
*/
|
||||
public interface ICaseService {
|
||||
|
||||
/**
|
||||
* 成功案例信息列表
|
||||
*
|
||||
* @author wyh
|
||||
* @param pageValidate 分页参数
|
||||
* @param searchValidate 搜索参数
|
||||
* @return PageResult<CaseListedVo>
|
||||
*/
|
||||
PageResult<CaseListedVo> list(PageValidate pageValidate, CaseSearchValidate searchValidate);
|
||||
|
||||
/**
|
||||
* 成功案例信息详情
|
||||
*
|
||||
* @author wyh
|
||||
* @param id 主键ID
|
||||
* @return CaseDetailVo
|
||||
*/
|
||||
CaseDetailVo detail(Integer id);
|
||||
|
||||
/**
|
||||
* 成功案例信息新增
|
||||
*
|
||||
* @author wyh
|
||||
* @param createValidate 参数
|
||||
*/
|
||||
void add(CaseCreateValidate createValidate);
|
||||
|
||||
/**
|
||||
* 成功案例信息编辑
|
||||
*
|
||||
* @author wyh
|
||||
* @param updateValidate 参数
|
||||
*/
|
||||
void edit(CaseUpdateValidate updateValidate);
|
||||
|
||||
/**
|
||||
* 成功案例信息删除
|
||||
*
|
||||
* @author wyh
|
||||
* @param id 主键ID
|
||||
*/
|
||||
void del(Integer id);
|
||||
|
||||
}
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
package com.wyh.admin.service;
|
||||
|
||||
import com.alibaba.fastjson2.JSONArray;
|
||||
import com.wyh.admin.validate.GoodsCateCreateValidate;
|
||||
import com.wyh.admin.validate.GoodsCateUpdateValidate;
|
||||
import com.wyh.admin.validate.GoodsCateSearchValidate;
|
||||
import com.wyh.admin.vo.GoodsCateDetailVo;
|
||||
import com.wyh.admin.validate.goods.GoodsCateCreateValidate;
|
||||
import com.wyh.admin.vo.goods.GoodsCateDetailVo;
|
||||
|
||||
/**
|
||||
* 产品分类服务接口类
|
||||
|
|
|
|||
|
|
@ -0,0 +1,168 @@
|
|||
package com.wyh.admin.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.github.yulichang.query.MPJQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.wyh.admin.service.IBannerFrontService;
|
||||
import com.wyh.admin.validate.basic.bannerfront.BannerFrontCreateValidate;
|
||||
import com.wyh.admin.validate.basic.bannerfront.BannerFrontSearchValidate;
|
||||
import com.wyh.admin.validate.basic.bannerfront.BannerFrontUpdateValidate;
|
||||
import com.wyh.admin.validate.commons.PageValidate;
|
||||
|
||||
import com.wyh.admin.vo.basic.bannerfront.BannerFrontDetailVo;
|
||||
import com.wyh.admin.vo.basic.bannerfront.BannerFrontListedVo;
|
||||
import com.wyh.common.config.GlobalConfig;
|
||||
import com.wyh.common.core.PageResult;
|
||||
|
||||
import com.wyh.common.entity.basic.bannerfront.BannerFront;
|
||||
import com.wyh.common.mapper.basic.bannerfront.BannerFrontMapper;
|
||||
import com.wyh.common.util.ListUtils;
|
||||
import com.wyh.common.util.TimeUtils;
|
||||
import com.wyh.common.util.UrlUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 小程序banner管理实现类
|
||||
* @author wyh
|
||||
*/
|
||||
@Service
|
||||
public class BannerFrontServiceImpl implements IBannerFrontService {
|
||||
|
||||
@Resource
|
||||
BannerFrontMapper bannerFrontMapper;
|
||||
|
||||
/**
|
||||
* 小程序banner管理列表
|
||||
*
|
||||
* @author wyh
|
||||
* @param pageValidate 分页参数
|
||||
* @param searchValidate 搜索参数
|
||||
* @return PageResult<BannerFrontListedVo>
|
||||
*/
|
||||
@Override
|
||||
public PageResult<BannerFrontListedVo> list(PageValidate pageValidate, BannerFrontSearchValidate searchValidate) {
|
||||
Integer page = pageValidate.getPageNo();
|
||||
Integer limit = pageValidate.getPageSize();
|
||||
|
||||
QueryWrapper<BannerFront> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("is_delete", 0);
|
||||
queryWrapper.orderByDesc(Arrays.asList("sort", "id"));
|
||||
|
||||
bannerFrontMapper.setSearch(queryWrapper, searchValidate, new String[]{
|
||||
"like:title:str",
|
||||
"=:isShow@is_show:int",
|
||||
"like:linkAddress@link_address:int",
|
||||
|
||||
});
|
||||
|
||||
IPage<BannerFront> iPage = bannerFrontMapper.selectPage(new Page<>(page, limit), queryWrapper);
|
||||
|
||||
List<BannerFrontListedVo> list = new LinkedList<>();
|
||||
for(BannerFront item : iPage.getRecords()) {
|
||||
BannerFrontListedVo vo = new BannerFrontListedVo();
|
||||
BeanUtils.copyProperties(item, vo);
|
||||
vo.setImg(UrlUtils.toAbsoluteUrl(item.getImg()));
|
||||
vo.setCreateTime(TimeUtils.timestampToDate(item.getCreateTime()));
|
||||
vo.setUpdateTime(TimeUtils.timestampToDate(item.getUpdateTime()));
|
||||
list.add(vo);
|
||||
}
|
||||
|
||||
return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 小程序banner管理详情
|
||||
*
|
||||
* @author wyh
|
||||
* @param id 主键参数
|
||||
* @return BannerFront
|
||||
*/
|
||||
@Override
|
||||
public BannerFrontDetailVo detail(Integer id) {
|
||||
BannerFront model = bannerFrontMapper.selectOne(
|
||||
new QueryWrapper<BannerFront>()
|
||||
.eq("id", id)
|
||||
.eq("is_delete", 0)
|
||||
.last("limit 1"));
|
||||
|
||||
Assert.notNull(model, "数据不存在");
|
||||
|
||||
BannerFrontDetailVo vo = new BannerFrontDetailVo();
|
||||
BeanUtils.copyProperties(model, vo);
|
||||
vo.setImg(UrlUtils.toAbsoluteUrl(model.getImg()));
|
||||
return vo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 小程序banner管理新增
|
||||
*
|
||||
* @author wyh
|
||||
* @param createValidate 参数
|
||||
*/
|
||||
@Override
|
||||
public void add(BannerFrontCreateValidate createValidate) {
|
||||
BannerFront model = new BannerFront();
|
||||
model.setTitle(createValidate.getTitle());
|
||||
model.setCreateTime(System.currentTimeMillis() / 1000);
|
||||
model.setUpdateTime(System.currentTimeMillis() / 1000);
|
||||
model.setSort(createValidate.getSort());
|
||||
model.setIsShow(createValidate.getIsShow());
|
||||
model.setImg(UrlUtils.toRelativeUrl(createValidate.getImg()));
|
||||
model.setLinkAddress(createValidate.getLinkAddress());
|
||||
bannerFrontMapper.insert(model);
|
||||
}
|
||||
|
||||
/**
|
||||
* 小程序banner管理编辑
|
||||
*
|
||||
* @author wyh
|
||||
* @param updateValidate 参数
|
||||
*/
|
||||
@Override
|
||||
public void edit(BannerFrontUpdateValidate updateValidate) {
|
||||
BannerFront model = bannerFrontMapper.selectOne(
|
||||
new QueryWrapper<BannerFront>()
|
||||
.eq("id", updateValidate.getId())
|
||||
.eq("is_delete", 0)
|
||||
.last("limit 1"));
|
||||
|
||||
Assert.notNull(model, "数据不存在!");
|
||||
|
||||
model.setId(updateValidate.getId());
|
||||
model.setTitle(updateValidate.getTitle());
|
||||
model.setUpdateTime(System.currentTimeMillis() / 1000);
|
||||
model.setSort(updateValidate.getSort());
|
||||
model.setIsShow(updateValidate.getIsShow());
|
||||
model.setImg(UrlUtils.toRelativeUrl(updateValidate.getImg()));
|
||||
model.setLinkAddress(updateValidate.getLinkAddress());
|
||||
bannerFrontMapper.updateById(model);
|
||||
}
|
||||
|
||||
/**
|
||||
* 小程序banner管理删除
|
||||
*
|
||||
* @author wyh
|
||||
* @param id 主键ID
|
||||
*/
|
||||
@Override
|
||||
public void del(Integer id) {
|
||||
BannerFront model = bannerFrontMapper.selectOne(
|
||||
new QueryWrapper<BannerFront>()
|
||||
.eq("id", id)
|
||||
.eq("is_delete", 0)
|
||||
.last("limit 1"));
|
||||
|
||||
Assert.notNull(model, "数据不存在!");
|
||||
|
||||
model.setIsDelete(1);
|
||||
model.setDeleteTime(System.currentTimeMillis() / 1000);
|
||||
bannerFrontMapper.updateById(model);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,167 @@
|
|||
package com.wyh.admin.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.github.yulichang.query.MPJQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.wyh.admin.service.IBannerService;
|
||||
import com.wyh.admin.validate.basic.banner.BannerCreateValidate;
|
||||
import com.wyh.admin.validate.basic.banner.BannerSearchValidate;
|
||||
import com.wyh.admin.validate.basic.banner.BannerUpdateValidate;
|
||||
import com.wyh.admin.validate.commons.PageValidate;
|
||||
|
||||
import com.wyh.admin.vo.basic.banner.BannerDetailVo;
|
||||
import com.wyh.admin.vo.basic.banner.BannerListedVo;
|
||||
import com.wyh.common.config.GlobalConfig;
|
||||
import com.wyh.common.core.PageResult;
|
||||
|
||||
import com.wyh.common.entity.basic.banner.Banner;
|
||||
import com.wyh.common.mapper.basic.banner.BannerMapper;
|
||||
import com.wyh.common.util.TimeUtils;
|
||||
import com.wyh.common.util.UrlUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* banner信息实现类
|
||||
* @author LikeAdmin
|
||||
*/
|
||||
@Service
|
||||
public class BannerServiceImpl implements IBannerService {
|
||||
|
||||
@Resource
|
||||
BannerMapper bannerMapper;
|
||||
|
||||
/**
|
||||
* banner信息列表
|
||||
*
|
||||
* @author LikeAdmin
|
||||
* @param pageValidate 分页参数
|
||||
* @param searchValidate 搜索参数
|
||||
* @return PageResult<BannerListedVo>
|
||||
*/
|
||||
@Override
|
||||
public PageResult<BannerListedVo> list(PageValidate pageValidate, BannerSearchValidate searchValidate) {
|
||||
Integer page = pageValidate.getPageNo();
|
||||
Integer limit = pageValidate.getPageSize();
|
||||
|
||||
QueryWrapper<Banner> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("is_delete", 0);
|
||||
queryWrapper.orderByDesc(Arrays.asList("sort", "id"));
|
||||
|
||||
bannerMapper.setSearch(queryWrapper, searchValidate, new String[]{
|
||||
"like:title:str",
|
||||
"=:sort:str",
|
||||
"=:isShow@is_show:int",
|
||||
"like:linkAddress@link_address:str",
|
||||
});
|
||||
|
||||
IPage<Banner> iPage = bannerMapper.selectPage(new Page<>(page, limit), queryWrapper);
|
||||
|
||||
List<BannerListedVo> list = new LinkedList<>();
|
||||
for(Banner item : iPage.getRecords()) {
|
||||
BannerListedVo vo = new BannerListedVo();
|
||||
BeanUtils.copyProperties(item, vo);
|
||||
vo.setImg(UrlUtils.toAbsoluteUrl(item.getImg()));
|
||||
vo.setCreateTime(TimeUtils.timestampToDate(item.getCreateTime()));
|
||||
vo.setUpdateTime(TimeUtils.timestampToDate(item.getUpdateTime()));
|
||||
list.add(vo);
|
||||
}
|
||||
|
||||
return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list);
|
||||
}
|
||||
|
||||
/**
|
||||
* banner信息详情
|
||||
*
|
||||
* @author LikeAdmin
|
||||
* @param id 主键参数
|
||||
* @return Banner
|
||||
*/
|
||||
@Override
|
||||
public BannerDetailVo detail(Integer id) {
|
||||
Banner model = bannerMapper.selectOne(
|
||||
new QueryWrapper<Banner>()
|
||||
.eq("id", id)
|
||||
.eq("is_delete", 0)
|
||||
.last("limit 1"));
|
||||
|
||||
Assert.notNull(model, "数据不存在");
|
||||
|
||||
BannerDetailVo vo = new BannerDetailVo();
|
||||
BeanUtils.copyProperties(model, vo);
|
||||
vo.setImg(UrlUtils.toAbsoluteUrl(model.getImg()));
|
||||
return vo;
|
||||
}
|
||||
|
||||
/**
|
||||
* banner信息新增
|
||||
*
|
||||
* @author LikeAdmin
|
||||
* @param createValidate 参数
|
||||
*/
|
||||
@Override
|
||||
public void add(BannerCreateValidate createValidate) {
|
||||
Banner model = new Banner();
|
||||
model.setTitle(createValidate.getTitle());
|
||||
model.setCreateTime(System.currentTimeMillis() / 1000);
|
||||
model.setUpdateTime(System.currentTimeMillis() / 1000);
|
||||
model.setSort(createValidate.getSort());
|
||||
model.setIsShow(createValidate.getIsShow());
|
||||
model.setImg(UrlUtils.toRelativeUrl(createValidate.getImg()));
|
||||
model.setLinkAddress(createValidate.getLinkAddress());
|
||||
bannerMapper.insert(model);
|
||||
}
|
||||
|
||||
/**
|
||||
* banner信息编辑
|
||||
*
|
||||
* @author LikeAdmin
|
||||
* @param updateValidate 参数
|
||||
*/
|
||||
@Override
|
||||
public void edit(BannerUpdateValidate updateValidate) {
|
||||
Banner model = bannerMapper.selectOne(
|
||||
new QueryWrapper<Banner>()
|
||||
.eq("id", updateValidate.getId())
|
||||
.eq("is_delete", 0)
|
||||
.last("limit 1"));
|
||||
|
||||
Assert.notNull(model, "数据不存在!");
|
||||
|
||||
model.setId(updateValidate.getId());
|
||||
model.setTitle(updateValidate.getTitle());
|
||||
model.setUpdateTime(System.currentTimeMillis() / 1000);
|
||||
model.setSort(updateValidate.getSort());
|
||||
model.setIsShow(updateValidate.getIsShow());
|
||||
model.setImg(UrlUtils.toRelativeUrl(updateValidate.getImg()));
|
||||
model.setLinkAddress(updateValidate.getLinkAddress());
|
||||
bannerMapper.updateById(model);
|
||||
}
|
||||
|
||||
/**
|
||||
* banner信息删除
|
||||
*
|
||||
* @author LikeAdmin
|
||||
* @param id 主键ID
|
||||
*/
|
||||
@Override
|
||||
public void del(Integer id) {
|
||||
Banner model = bannerMapper.selectOne(
|
||||
new QueryWrapper<Banner>()
|
||||
.eq("id", id)
|
||||
.eq("is_delete", 0)
|
||||
.last("limit 1"));
|
||||
|
||||
Assert.notNull(model, "数据不存在!");
|
||||
|
||||
model.setIsDelete(1);
|
||||
model.setDeleteTime(System.currentTimeMillis() / 1000);
|
||||
bannerMapper.updateById(model);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,166 @@
|
|||
package com.wyh.admin.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.github.yulichang.query.MPJQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.wyh.admin.service.ICaseService;
|
||||
import com.wyh.admin.validate.basic.company.CaseCreateValidate;
|
||||
import com.wyh.admin.validate.basic.company.CaseSearchValidate;
|
||||
import com.wyh.admin.validate.basic.company.CaseUpdateValidate;
|
||||
import com.wyh.admin.validate.commons.PageValidate;
|
||||
|
||||
import com.wyh.admin.vo.basic.company.CaseDetailVo;
|
||||
import com.wyh.admin.vo.basic.company.CaseListedVo;
|
||||
import com.wyh.common.config.GlobalConfig;
|
||||
import com.wyh.common.core.PageResult;
|
||||
|
||||
import com.wyh.common.entity.basic.company.Case;
|
||||
import com.wyh.common.mapper.basic.company.CaseMapper;
|
||||
import com.wyh.common.util.ListUtils;
|
||||
import com.wyh.common.util.TimeUtils;
|
||||
import com.wyh.common.util.UrlUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 成功案例信息实现类
|
||||
* @author wyh
|
||||
*/
|
||||
@Service
|
||||
public class CaseServiceImpl implements ICaseService {
|
||||
|
||||
@Resource
|
||||
CaseMapper caseMapper;
|
||||
|
||||
/**
|
||||
* 成功案例信息列表
|
||||
*
|
||||
* @author wyh
|
||||
* @param pageValidate 分页参数
|
||||
* @param searchValidate 搜索参数
|
||||
* @return PageResult<CaseListedVo>
|
||||
*/
|
||||
@Override
|
||||
public PageResult<CaseListedVo> list(PageValidate pageValidate, CaseSearchValidate searchValidate) {
|
||||
Integer page = pageValidate.getPageNo();
|
||||
Integer limit = pageValidate.getPageSize();
|
||||
|
||||
QueryWrapper<Case> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("is_delete", 0);
|
||||
queryWrapper.orderByDesc(Arrays.asList("sort", "id"));
|
||||
|
||||
caseMapper.setSearch(queryWrapper, searchValidate, new String[]{
|
||||
"like:name:int",
|
||||
"=:isShow@is_show:int",
|
||||
});
|
||||
|
||||
IPage<Case> iPage = caseMapper.selectPage(new Page<>(page, limit), queryWrapper);
|
||||
|
||||
List<CaseListedVo> list = new LinkedList<>();
|
||||
for(Case item : iPage.getRecords()) {
|
||||
CaseListedVo vo = new CaseListedVo();
|
||||
BeanUtils.copyProperties(item, vo);
|
||||
vo.setImg(UrlUtils.toAbsoluteUrl(item.getImg()));
|
||||
vo.setCreateTime(TimeUtils.timestampToDate(item.getCreateTime()));
|
||||
vo.setUpdateTime(TimeUtils.timestampToDate(item.getUpdateTime()));
|
||||
list.add(vo);
|
||||
}
|
||||
|
||||
return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 成功案例信息详情
|
||||
*
|
||||
* @author wyh
|
||||
* @param id 主键参数
|
||||
* @return Case
|
||||
*/
|
||||
@Override
|
||||
public CaseDetailVo detail(Integer id) {
|
||||
Case model = caseMapper.selectOne(
|
||||
new QueryWrapper<Case>()
|
||||
.eq("id", id)
|
||||
.eq("is_delete", 0)
|
||||
.last("limit 1"));
|
||||
|
||||
Assert.notNull(model, "数据不存在");
|
||||
|
||||
CaseDetailVo vo = new CaseDetailVo();
|
||||
BeanUtils.copyProperties(model, vo);
|
||||
vo.setImg(UrlUtils.toAbsoluteUrl(model.getImg()));
|
||||
return vo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 成功案例信息新增
|
||||
*
|
||||
* @author wyh
|
||||
* @param createValidate 参数
|
||||
*/
|
||||
@Override
|
||||
public void add(CaseCreateValidate createValidate) {
|
||||
Case model = new Case();
|
||||
model.setName(createValidate.getName());
|
||||
model.setCreateTime(System.currentTimeMillis() / 1000);
|
||||
model.setUpdateTime(System.currentTimeMillis() / 1000);
|
||||
model.setSort(createValidate.getSort());
|
||||
model.setIsShow(createValidate.getIsShow());
|
||||
model.setImg(UrlUtils.toRelativeUrl(createValidate.getImg()));
|
||||
model.setContent(createValidate.getContent());
|
||||
caseMapper.insert(model);
|
||||
}
|
||||
|
||||
/**
|
||||
* 成功案例信息编辑
|
||||
*
|
||||
* @author wyh
|
||||
* @param updateValidate 参数
|
||||
*/
|
||||
@Override
|
||||
public void edit(CaseUpdateValidate updateValidate) {
|
||||
Case model = caseMapper.selectOne(
|
||||
new QueryWrapper<Case>()
|
||||
.eq("id", updateValidate.getId())
|
||||
.eq("is_delete", 0)
|
||||
.last("limit 1"));
|
||||
|
||||
Assert.notNull(model, "数据不存在!");
|
||||
|
||||
model.setId(updateValidate.getId());
|
||||
model.setName(updateValidate.getName());
|
||||
model.setUpdateTime(System.currentTimeMillis() / 1000);
|
||||
model.setSort(updateValidate.getSort());
|
||||
model.setIsShow(updateValidate.getIsShow());
|
||||
model.setImg(UrlUtils.toRelativeUrl(updateValidate.getImg()));
|
||||
model.setContent(updateValidate.getContent());
|
||||
caseMapper.updateById(model);
|
||||
}
|
||||
|
||||
/**
|
||||
* 成功案例信息删除
|
||||
*
|
||||
* @author wyh
|
||||
* @param id 主键ID
|
||||
*/
|
||||
@Override
|
||||
public void del(Integer id) {
|
||||
Case model = caseMapper.selectOne(
|
||||
new QueryWrapper<Case>()
|
||||
.eq("id", id)
|
||||
.eq("is_delete", 0)
|
||||
.last("limit 1"));
|
||||
|
||||
Assert.notNull(model, "数据不存在!");
|
||||
|
||||
model.setIsDelete(1);
|
||||
model.setDeleteTime(System.currentTimeMillis() / 1000);
|
||||
caseMapper.updateById(model);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -4,14 +4,13 @@ import com.alibaba.fastjson2.JSONArray;
|
|||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.github.yulichang.query.MPJQueryWrapper;
|
||||
import com.wyh.admin.service.IGoodsCateService;
|
||||
import com.wyh.admin.validate.GoodsCateCreateValidate;
|
||||
import com.wyh.admin.validate.GoodsCateUpdateValidate;
|
||||
import com.wyh.admin.validate.GoodsCateSearchValidate;
|
||||
import com.wyh.admin.validate.goods.GoodsCateCreateValidate;
|
||||
import com.wyh.admin.vo.GoodsCateListedVo;
|
||||
import com.wyh.admin.vo.GoodsCateDetailVo;
|
||||
import com.wyh.common.config.GlobalConfig;
|
||||
import com.wyh.common.entity.GoodsCate;
|
||||
import com.wyh.common.mapper.GoodsCateMapper;
|
||||
import com.wyh.admin.vo.goods.GoodsCateDetailVo;
|
||||
import com.wyh.common.entity.goods.GoodsCate;
|
||||
import com.wyh.common.mapper.goods.GoodsCateMapper;
|
||||
import com.wyh.common.util.ListUtils;
|
||||
import com.wyh.common.util.TimeUtils;
|
||||
import com.wyh.common.util.UrlUtils;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,35 @@
|
|||
package com.wyh.admin.validate.basic.banner;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import java.io.Serializable;
|
||||
import javax.validation.constraints.*;
|
||||
|
||||
@Data
|
||||
@ApiModel("banner信息创建参数")
|
||||
public class BannerCreateValidate implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@NotNull(message = "title参数缺失")
|
||||
@ApiModelProperty(value = "标题")
|
||||
private String title;
|
||||
|
||||
@NotNull(message = "sort参数缺失")
|
||||
@ApiModelProperty(value = "排序编号")
|
||||
private Integer sort;
|
||||
|
||||
@NotNull(message = "isShow参数缺失")
|
||||
@ApiModelProperty(value = "是否显示")
|
||||
private Integer isShow;
|
||||
|
||||
@NotNull(message = "img参数缺失")
|
||||
@ApiModelProperty(value = "banner图")
|
||||
private String img;
|
||||
|
||||
@NotNull(message = "linkAddress参数缺失")
|
||||
@ApiModelProperty(value = "链接地址")
|
||||
private String linkAddress;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
package com.wyh.admin.validate.basic.banner;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
@ApiModel("banner信息搜素参数")
|
||||
public class BannerSearchValidate implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty(value = "标题")
|
||||
private String title;
|
||||
|
||||
@ApiModelProperty(value = "排序编号")
|
||||
private Integer sort;
|
||||
|
||||
@ApiModelProperty(value = "是否显示")
|
||||
private Integer isShow;
|
||||
|
||||
@ApiModelProperty(value = "链接地址")
|
||||
private String linkAddress;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
package com.wyh.admin.validate.basic.banner;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import java.io.Serializable;
|
||||
import javax.validation.constraints.*;
|
||||
import com.wyh.common.validator.annotation.IDMust;
|
||||
|
||||
/**
|
||||
* banner信息参数
|
||||
* @author LikeAdmin
|
||||
*/
|
||||
@Data
|
||||
@ApiModel("banner信息更新参数")
|
||||
public class BannerUpdateValidate implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@IDMust(message = "id参数必传且需大于0")
|
||||
@ApiModelProperty(value = "主键")
|
||||
private Integer id;
|
||||
|
||||
@NotNull(message = "title参数缺失")
|
||||
@ApiModelProperty(value = "标题")
|
||||
private String title;
|
||||
|
||||
@NotNull(message = "sort参数缺失")
|
||||
@ApiModelProperty(value = "排序编号")
|
||||
private Integer sort;
|
||||
|
||||
@NotNull(message = "isShow参数缺失")
|
||||
@ApiModelProperty(value = "是否显示")
|
||||
private Integer isShow;
|
||||
|
||||
@NotNull(message = "img参数缺失")
|
||||
@ApiModelProperty(value = "banner图")
|
||||
private String img;
|
||||
|
||||
@NotNull(message = "linkAddress参数缺失")
|
||||
@ApiModelProperty(value = "链接地址")
|
||||
private String linkAddress;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
package com.wyh.admin.validate.basic.bannerfront;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import java.io.Serializable;
|
||||
import javax.validation.constraints.*;
|
||||
|
||||
@Data
|
||||
@ApiModel("小程序banner管理创建参数")
|
||||
public class BannerFrontCreateValidate implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@NotNull(message = "title参数缺失")
|
||||
@ApiModelProperty(value = "banner标题")
|
||||
private String title;
|
||||
|
||||
@NotNull(message = "sort参数缺失")
|
||||
@ApiModelProperty(value = "排序编号")
|
||||
private Integer sort;
|
||||
|
||||
@NotNull(message = "isShow参数缺失")
|
||||
@ApiModelProperty(value = "是否显示: 0=否, 1=是")
|
||||
private Integer isShow;
|
||||
|
||||
@NotNull(message = "img参数缺失")
|
||||
@ApiModelProperty(value = "banner图")
|
||||
private String img;
|
||||
|
||||
@NotNull(message = "linkAddress参数缺失")
|
||||
@ApiModelProperty(value = "链接地址")
|
||||
private String linkAddress;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
package com.wyh.admin.validate.basic.bannerfront;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
@ApiModel("小程序banner管理搜素参数")
|
||||
public class BannerFrontSearchValidate implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty(value = "banner标题")
|
||||
private String title;
|
||||
|
||||
@ApiModelProperty(value = "是否显示: 0=否, 1=是")
|
||||
private Integer isShow;
|
||||
|
||||
@ApiModelProperty(value = "链接地址")
|
||||
private String linkAddress;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
package com.wyh.admin.validate.basic.bannerfront;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import java.io.Serializable;
|
||||
import javax.validation.constraints.*;
|
||||
import com.wyh.common.validator.annotation.IDMust;
|
||||
|
||||
/**
|
||||
* 小程序banner管理参数
|
||||
* @author wyh
|
||||
*/
|
||||
@Data
|
||||
@ApiModel("小程序banner管理更新参数")
|
||||
public class BannerFrontUpdateValidate implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@IDMust(message = "id参数必传且需大于0")
|
||||
@ApiModelProperty(value = "主键")
|
||||
private Integer id;
|
||||
|
||||
@NotNull(message = "title参数缺失")
|
||||
@ApiModelProperty(value = "banner标题")
|
||||
private String title;
|
||||
|
||||
@NotNull(message = "sort参数缺失")
|
||||
@ApiModelProperty(value = "排序编号")
|
||||
private Integer sort;
|
||||
|
||||
@NotNull(message = "isShow参数缺失")
|
||||
@ApiModelProperty(value = "是否显示: 0=否, 1=是")
|
||||
private Integer isShow;
|
||||
|
||||
@NotNull(message = "img参数缺失")
|
||||
@ApiModelProperty(value = "banner图")
|
||||
private String img;
|
||||
|
||||
@NotNull(message = "linkAddress参数缺失")
|
||||
@ApiModelProperty(value = "链接地址")
|
||||
private String linkAddress;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
package com.wyh.admin.validate.basic.company;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import java.io.Serializable;
|
||||
import javax.validation.constraints.*;
|
||||
|
||||
@Data
|
||||
@ApiModel("成功案例信息创建参数")
|
||||
public class CaseCreateValidate implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@NotNull(message = "name参数缺失")
|
||||
@ApiModelProperty(value = "案例名称")
|
||||
private String name;
|
||||
|
||||
@NotNull(message = "sort参数缺失")
|
||||
@ApiModelProperty(value = "排序编号")
|
||||
private Integer sort;
|
||||
|
||||
@NotNull(message = "isShow参数缺失")
|
||||
@ApiModelProperty(value = "是否显示: 0=否, 1=是")
|
||||
private Integer isShow;
|
||||
|
||||
@NotNull(message = "img参数缺失")
|
||||
@ApiModelProperty(value = "案例图片")
|
||||
private String img;
|
||||
|
||||
@ApiModelProperty(value = "案例内容")
|
||||
private String content;
|
||||
}
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
package com.wyh.admin.validate.basic.company;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
@ApiModel("成功案例信息搜素参数")
|
||||
public class CaseSearchValidate implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty(value = "案例名称")
|
||||
private String name;
|
||||
|
||||
@ApiModelProperty(value = "是否显示: 0=否, 1=是")
|
||||
private Integer isShow;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
package com.wyh.admin.validate.basic.company;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import java.io.Serializable;
|
||||
import javax.validation.constraints.*;
|
||||
import com.wyh.common.validator.annotation.IDMust;
|
||||
|
||||
/**
|
||||
* 成功案例信息参数
|
||||
* @author wyh
|
||||
*/
|
||||
@Data
|
||||
@ApiModel("成功案例信息更新参数")
|
||||
public class CaseUpdateValidate implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@IDMust(message = "id参数必传且需大于0")
|
||||
@ApiModelProperty(value = "主键")
|
||||
private Integer id;
|
||||
|
||||
@NotNull(message = "name参数缺失")
|
||||
@ApiModelProperty(value = "案例名称")
|
||||
private String name;
|
||||
|
||||
@NotNull(message = "sort参数缺失")
|
||||
@ApiModelProperty(value = "排序编号")
|
||||
private Integer sort;
|
||||
|
||||
@NotNull(message = "isShow参数缺失")
|
||||
@ApiModelProperty(value = "是否显示: 0=否, 1=是")
|
||||
private Integer isShow;
|
||||
|
||||
@NotNull(message = "img参数缺失")
|
||||
@ApiModelProperty(value = "案例图片")
|
||||
private String img;
|
||||
|
||||
@ApiModelProperty(value = "案例内容")
|
||||
private String content;
|
||||
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.wyh.admin.validate;
|
||||
package com.wyh.admin.validate.goods;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
|
|
@ -18,14 +18,14 @@ public class GoodsCateCreateValidate implements Serializable {
|
|||
|
||||
@NotNull(message = "pid参数缺失")
|
||||
@ApiModelProperty(value = "上级菜单")
|
||||
private String pid;
|
||||
private Integer pid;
|
||||
|
||||
@NotNull(message = "sort参数缺失")
|
||||
@ApiModelProperty(value = "排序编号")
|
||||
private String sort;
|
||||
private Integer sort;
|
||||
|
||||
@NotNull(message = "isShow参数缺失")
|
||||
@ApiModelProperty(value = "是否显示: 0=否, 1=是")
|
||||
private String isShow;
|
||||
private Integer isShow;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ public class GoodsCateUpdateValidate implements Serializable {
|
|||
|
||||
@IDMust(message = "id参数必传且需大于0")
|
||||
@ApiModelProperty(value = "主键")
|
||||
private String id;
|
||||
private Integer id;
|
||||
|
||||
@NotNull(message = "name参数缺失")
|
||||
@ApiModelProperty(value = "产品分类名称")
|
||||
|
|
@ -27,14 +27,14 @@ public class GoodsCateUpdateValidate implements Serializable {
|
|||
|
||||
@NotNull(message = "pid参数缺失")
|
||||
@ApiModelProperty(value = "上级菜单")
|
||||
private String pid;
|
||||
private Integer pid;
|
||||
|
||||
@NotNull(message = "sort参数缺失")
|
||||
@ApiModelProperty(value = "排序编号")
|
||||
private String sort;
|
||||
private Integer sort;
|
||||
|
||||
@NotNull(message = "isShow参数缺失")
|
||||
@ApiModelProperty(value = "是否显示: 0=否, 1=是")
|
||||
private String isShow;
|
||||
private Integer isShow;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,34 @@
|
|||
package com.wyh.admin.vo.basic.banner;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
@ApiModel("banner信息详情Vo")
|
||||
public class BannerDetailVo implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty(value = "主键")
|
||||
private Integer id;
|
||||
|
||||
@ApiModelProperty(value = "标题")
|
||||
private String title;
|
||||
|
||||
@ApiModelProperty(value = "排序编号")
|
||||
private Integer sort;
|
||||
|
||||
@ApiModelProperty(value = "是否显示")
|
||||
private Integer isShow;
|
||||
|
||||
@ApiModelProperty(value = "banner图")
|
||||
private String img;
|
||||
|
||||
@ApiModelProperty(value = "链接地址")
|
||||
private String linkAddress;
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
package com.wyh.admin.vo.basic.banner;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
@ApiModel("banner信息列表Vo")
|
||||
public class BannerListedVo implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty(value = "主键")
|
||||
private Integer id;
|
||||
|
||||
@ApiModelProperty(value = "标题")
|
||||
private String title;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private String createTime;
|
||||
|
||||
@ApiModelProperty(value = "更新时间")
|
||||
private String updateTime;
|
||||
|
||||
@ApiModelProperty(value = "排序编号")
|
||||
private Integer sort;
|
||||
|
||||
@ApiModelProperty(value = "是否显示")
|
||||
private Integer isShow;
|
||||
|
||||
@ApiModelProperty(value = "banner图")
|
||||
private String img;
|
||||
|
||||
@ApiModelProperty(value = "链接地址")
|
||||
private String linkAddress;
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
package com.wyh.admin.vo.basic.bannerfront;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
@ApiModel("小程序banner管理详情Vo")
|
||||
public class BannerFrontDetailVo implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty(value = "主键")
|
||||
private Integer id;
|
||||
|
||||
@ApiModelProperty(value = "banner标题")
|
||||
private String title;
|
||||
|
||||
@ApiModelProperty(value = "排序编号")
|
||||
private Integer sort;
|
||||
|
||||
@ApiModelProperty(value = "是否显示: 0=否, 1=是")
|
||||
private Integer isShow;
|
||||
|
||||
@ApiModelProperty(value = "banner图")
|
||||
private String img;
|
||||
|
||||
@ApiModelProperty(value = "链接地址")
|
||||
private String linkAddress;
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
package com.wyh.admin.vo.basic.bannerfront;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
@ApiModel("小程序banner管理列表Vo")
|
||||
public class BannerFrontListedVo implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty(value = "主键")
|
||||
private Integer id;
|
||||
|
||||
@ApiModelProperty(value = "banner标题")
|
||||
private String title;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private String createTime;
|
||||
|
||||
@ApiModelProperty(value = "更新时间")
|
||||
private String updateTime;
|
||||
|
||||
@ApiModelProperty(value = "排序编号")
|
||||
private Integer sort;
|
||||
|
||||
@ApiModelProperty(value = "是否显示: 0=否, 1=是")
|
||||
private Integer isShow;
|
||||
|
||||
@ApiModelProperty(value = "banner图")
|
||||
private String img;
|
||||
|
||||
@ApiModelProperty(value = "链接地址")
|
||||
private String linkAddress;
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
package com.wyh.admin.vo.basic.company;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
@ApiModel("成功案例信息详情Vo")
|
||||
public class CaseDetailVo implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty(value = "主键")
|
||||
private Integer id;
|
||||
|
||||
@ApiModelProperty(value = "案例名称")
|
||||
private String name;
|
||||
|
||||
@ApiModelProperty(value = "排序编号")
|
||||
private Integer sort;
|
||||
|
||||
@ApiModelProperty(value = "是否显示: 0=否, 1=是")
|
||||
private Integer isShow;
|
||||
|
||||
@ApiModelProperty(value = "案例图片")
|
||||
private String img;
|
||||
|
||||
@ApiModelProperty(value = "案例内容")
|
||||
private String content;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
package com.wyh.admin.vo.basic.company;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
@ApiModel("成功案例信息列表Vo")
|
||||
public class CaseListedVo implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty(value = "主键")
|
||||
private Integer id;
|
||||
|
||||
@ApiModelProperty(value = "案例名称")
|
||||
private String name;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private String createTime;
|
||||
|
||||
@ApiModelProperty(value = "更新时间")
|
||||
private String updateTime;
|
||||
|
||||
@ApiModelProperty(value = "排序编号")
|
||||
private Integer sort;
|
||||
|
||||
@ApiModelProperty(value = "是否显示: 0=否, 1=是")
|
||||
private Integer isShow;
|
||||
|
||||
@ApiModelProperty(value = "案例图片")
|
||||
private String img;
|
||||
|
||||
@ApiModelProperty(value = "案例内容")
|
||||
private String content;
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.wyh.admin.vo;
|
||||
package com.wyh.admin.vo.goods;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
|
|
@ -13,19 +13,19 @@ public class GoodsCateDetailVo implements Serializable {
|
|||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty(value = "主键")
|
||||
private String id;
|
||||
private Integer id;
|
||||
|
||||
@ApiModelProperty(value = "产品分类名称")
|
||||
private String name;
|
||||
|
||||
@ApiModelProperty(value = "上级菜单")
|
||||
private String pid;
|
||||
private Integer pid;
|
||||
|
||||
@ApiModelProperty(value = "排序编号")
|
||||
private String sort;
|
||||
private Integer sort;
|
||||
|
||||
@ApiModelProperty(value = "是否显示: 0=否, 1=是")
|
||||
private String isShow;
|
||||
private Integer isShow;
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,13 +13,13 @@ public class GoodsCateListedVo implements Serializable {
|
|||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty(value = "主键")
|
||||
private String id;
|
||||
private Integer id;
|
||||
|
||||
@ApiModelProperty(value = "产品分类名称")
|
||||
private String name;
|
||||
|
||||
@ApiModelProperty(value = "上级菜单")
|
||||
private String pid;
|
||||
private Integer pid;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private String createTime;
|
||||
|
|
@ -28,10 +28,10 @@ public class GoodsCateListedVo implements Serializable {
|
|||
private String updateTime;
|
||||
|
||||
@ApiModelProperty(value = "排序编号")
|
||||
private String sort;
|
||||
private Integer sort;
|
||||
|
||||
@ApiModelProperty(value = "是否显示: 0=否, 1=是")
|
||||
private String isShow;
|
||||
private Integer isShow;
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,48 @@
|
|||
package com.wyh.common.entity.basic.banner;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
@ApiModel("banner信息实体")
|
||||
public class Banner implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@TableId(value="id", type= IdType.AUTO)
|
||||
@ApiModelProperty(value = "主键")
|
||||
private Integer id;
|
||||
|
||||
@ApiModelProperty(value = "标题")
|
||||
private String title;
|
||||
|
||||
@ApiModelProperty(value = "是否删除")
|
||||
private Integer isDelete;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Long createTime;
|
||||
|
||||
@ApiModelProperty(value = "更新时间")
|
||||
private Long updateTime;
|
||||
|
||||
@ApiModelProperty(value = "删除时间")
|
||||
private Long deleteTime;
|
||||
|
||||
@ApiModelProperty(value = "排序编号")
|
||||
private Integer sort;
|
||||
|
||||
@ApiModelProperty(value = "是否显示")
|
||||
private Integer isShow;
|
||||
|
||||
@ApiModelProperty(value = "banner图")
|
||||
private String img;
|
||||
|
||||
@ApiModelProperty(value = "链接地址")
|
||||
private String linkAddress;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
package com.wyh.common.entity.basic.bannerfront;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
@ApiModel("小程序banner管理实体")
|
||||
public class BannerFront implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@TableId(value="id", type= IdType.AUTO)
|
||||
@ApiModelProperty(value = "主键")
|
||||
private Integer id;
|
||||
|
||||
@ApiModelProperty(value = "banner标题")
|
||||
private String title;
|
||||
|
||||
@ApiModelProperty(value = "是否删除: 0=否, 1=是")
|
||||
private Integer isDelete;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Long createTime;
|
||||
|
||||
@ApiModelProperty(value = "更新时间")
|
||||
private Long updateTime;
|
||||
|
||||
@ApiModelProperty(value = "删除时间")
|
||||
private Long deleteTime;
|
||||
|
||||
@ApiModelProperty(value = "排序编号")
|
||||
private Integer sort;
|
||||
|
||||
@ApiModelProperty(value = "是否显示: 0=否, 1=是")
|
||||
private Integer isShow;
|
||||
|
||||
@ApiModelProperty(value = "banner图")
|
||||
private String img;
|
||||
|
||||
@ApiModelProperty(value = "链接地址")
|
||||
private String linkAddress;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
package com.wyh.common.entity.basic.company;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
@ApiModel("成功案例信息实体")
|
||||
public class Case implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@TableId(value="id", type= IdType.AUTO)
|
||||
@ApiModelProperty(value = "主键")
|
||||
private Integer id;
|
||||
|
||||
@ApiModelProperty(value = "案例名称")
|
||||
private String name;
|
||||
|
||||
@ApiModelProperty(value = "是否删除: 0=否, 1=是")
|
||||
private Integer isDelete;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Long createTime;
|
||||
|
||||
@ApiModelProperty(value = "更新时间")
|
||||
private Long updateTime;
|
||||
|
||||
@ApiModelProperty(value = "删除时间")
|
||||
private Long deleteTime;
|
||||
|
||||
@ApiModelProperty(value = "排序编号")
|
||||
private Integer sort;
|
||||
|
||||
@ApiModelProperty(value = "是否显示: 0=否, 1=是")
|
||||
private Integer isShow;
|
||||
|
||||
@ApiModelProperty(value = "案例图片")
|
||||
private String img;
|
||||
|
||||
@ApiModelProperty(value = "案例内容")
|
||||
private String content;
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package com.wyh.common.entity;
|
||||
package com.wyh.common.entity.goods;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
|
|
@ -16,13 +16,13 @@ public class GoodsCate implements Serializable {
|
|||
|
||||
@TableId(value="id", type= IdType.AUTO)
|
||||
@ApiModelProperty(value = "主键")
|
||||
private String id;
|
||||
private Integer id;
|
||||
|
||||
@ApiModelProperty(value = "产品分类名称")
|
||||
private String name;
|
||||
|
||||
@ApiModelProperty(value = "上级菜单")
|
||||
private String pid;
|
||||
private Integer pid;
|
||||
|
||||
@ApiModelProperty(value = "是否删除: 0=否, 1=是")
|
||||
private Integer isDelete;
|
||||
|
|
@ -37,9 +37,9 @@ public class GoodsCate implements Serializable {
|
|||
private Long deleteTime;
|
||||
|
||||
@ApiModelProperty(value = "排序编号")
|
||||
private String sort;
|
||||
private Integer sort;
|
||||
|
||||
@ApiModelProperty(value = "是否显示: 0=否, 1=是")
|
||||
private String isShow;
|
||||
private Integer isShow;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
package com.wyh.common.mapper.basic.banner;
|
||||
|
||||
|
||||
import com.wyh.common.core.basics.IBaseMapper;
|
||||
import com.wyh.common.entity.basic.banner.Banner;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* banner信息Mapper
|
||||
* @author LikeAdmin
|
||||
*/
|
||||
@Mapper
|
||||
public interface BannerMapper extends IBaseMapper<Banner> {
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
package com.wyh.common.mapper.basic.bannerfront;
|
||||
|
||||
|
||||
import com.wyh.common.core.basics.IBaseMapper;
|
||||
import com.wyh.common.entity.basic.bannerfront.BannerFront;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* 小程序banner管理Mapper
|
||||
* @author wyh
|
||||
*/
|
||||
@Mapper
|
||||
public interface BannerFrontMapper extends IBaseMapper<BannerFront> {
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
package com.wyh.common.mapper.basic.company;
|
||||
|
||||
|
||||
import com.wyh.common.core.basics.IBaseMapper;
|
||||
import com.wyh.common.entity.basic.company.Case;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* 成功案例信息Mapper
|
||||
* @author wyh
|
||||
*/
|
||||
@Mapper
|
||||
public interface CaseMapper extends IBaseMapper<Case> {
|
||||
}
|
||||
|
|
@ -1,7 +1,8 @@
|
|||
package com.wyh.common.mapper;
|
||||
package com.wyh.common.mapper.goods;
|
||||
|
||||
|
||||
import com.wyh.common.core.basics.IBaseMapper;
|
||||
import com.wyh.common.entity.GoodsCate;
|
||||
import com.wyh.common.entity.goods.GoodsCate;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ public class SwaggerConfig {
|
|||
.enable(enabled)
|
||||
.select()
|
||||
.apis(RequestHandlerSelectors.basePackage("com.wyh.front"))
|
||||
|
||||
.build()
|
||||
.groupName("中将业务接口【前台】");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ import com.wyh.front.service.IIndexService;
|
|||
import com.wyh.front.validate.common.SmsValidate;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import io.swagger.annotations.ApiParam;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
|
|
@ -61,7 +62,8 @@ public class IndexController {
|
|||
|
||||
@NotLogin
|
||||
@GetMapping("/policy")
|
||||
@ApiOperation(value="政策协议")
|
||||
@ApiOperation(value="政策协议",notes="类型 service=服务协议,privacy=隐私协议")
|
||||
@ApiParam(name="type",value="类型 service=服务协议,privacy=隐私协议")
|
||||
public AjaxResult<Map<String, String>> policy(@RequestParam String type) {
|
||||
Map<String, String> map = iIndexService.policy(type);
|
||||
return AjaxResult.success(map);
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@
|
|||
"version": "0.0.0",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@amap/amap-jsapi-loader": "^1.0.1",
|
||||
"@element-plus/icons-vue": "^2.0.6",
|
||||
"@highlightjs/vue-plugin": "^2.1.0",
|
||||
"@wangeditor/editor": "^5.1.12",
|
||||
|
|
@ -58,6 +59,11 @@
|
|||
"vue-tsc": "^0.38.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@amap/amap-jsapi-loader": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmmirror.com/@amap/amap-jsapi-loader/-/amap-jsapi-loader-1.0.1.tgz",
|
||||
"integrity": "sha512-nPyLKt7Ow/ThHLkSvn2etQlUzqxmTVgK7bIgwdBRTg2HK5668oN7xVxkaiRe3YZEzGzfV2XgH5Jmu2T73ljejw=="
|
||||
},
|
||||
"node_modules/@ampproject/remapping": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.2.0.tgz",
|
||||
|
|
@ -7260,6 +7266,11 @@
|
|||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"@amap/amap-jsapi-loader": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmmirror.com/@amap/amap-jsapi-loader/-/amap-jsapi-loader-1.0.1.tgz",
|
||||
"integrity": "sha512-nPyLKt7Ow/ThHLkSvn2etQlUzqxmTVgK7bIgwdBRTg2HK5668oN7xVxkaiRe3YZEzGzfV2XgH5Jmu2T73ljejw=="
|
||||
},
|
||||
"@ampproject/remapping": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.2.0.tgz",
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
"lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore"
|
||||
},
|
||||
"dependencies": {
|
||||
"@amap/amap-jsapi-loader": "^1.0.1",
|
||||
"@element-plus/icons-vue": "^2.0.6",
|
||||
"@highlightjs/vue-plugin": "^2.1.0",
|
||||
"@wangeditor/editor": "^5.1.12",
|
||||
|
|
|
|||
|
|
@ -0,0 +1,26 @@
|
|||
import request from '@/utils/request'
|
||||
|
||||
// banner信息列表
|
||||
export function bannerLists(params?: Record<string, any>) {
|
||||
return request.get({ url: '/banner/list', params })
|
||||
}
|
||||
|
||||
// banner信息详情
|
||||
export function bannerDetail(params: Record<string, any>) {
|
||||
return request.get({ url: '/banner/detail', params })
|
||||
}
|
||||
|
||||
// banner信息新增
|
||||
export function bannerAdd(params: Record<string, any>) {
|
||||
return request.post({ url: '/banner/add', params })
|
||||
}
|
||||
|
||||
// banner信息编辑
|
||||
export function bannerEdit(params: Record<string, any>) {
|
||||
return request.post({ url: '/banner/edit', params })
|
||||
}
|
||||
|
||||
// banner信息删除
|
||||
export function bannerDelete(params: Record<string, any>) {
|
||||
return request.post({ url: '/banner/del', params })
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
import request from '@/utils/request'
|
||||
|
||||
// 小程序banner管理列表
|
||||
export function bannerfrontLists(params?: Record<string, any>) {
|
||||
return request.get({ url: '/bannerfront/list', params })
|
||||
}
|
||||
|
||||
// 小程序banner管理详情
|
||||
export function bannerfrontDetail(params: Record<string, any>) {
|
||||
return request.get({ url: '/bannerfront/detail', params })
|
||||
}
|
||||
|
||||
// 小程序banner管理新增
|
||||
export function bannerfrontAdd(params: Record<string, any>) {
|
||||
return request.post({ url: '/bannerfront/add', params })
|
||||
}
|
||||
|
||||
// 小程序banner管理编辑
|
||||
export function bannerfrontEdit(params: Record<string, any>) {
|
||||
return request.post({ url: '/bannerfront/edit', params })
|
||||
}
|
||||
|
||||
// 小程序banner管理删除
|
||||
export function bannerfrontDelete(params: Record<string, any>) {
|
||||
return request.post({ url: '/bannerfront/del', params })
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
import request from '@/utils/request'
|
||||
|
||||
// 成功案例信息列表
|
||||
export function caseLists(params?: Record<string, any>) {
|
||||
return request.get({ url: '/case/list', params })
|
||||
}
|
||||
|
||||
// 成功案例信息详情
|
||||
export function caseDetail(params: Record<string, any>) {
|
||||
return request.get({ url: '/case/detail', params })
|
||||
}
|
||||
|
||||
// 成功案例信息新增
|
||||
export function caseAdd(params: Record<string, any>) {
|
||||
return request.post({ url: '/case/add', params })
|
||||
}
|
||||
|
||||
// 成功案例信息编辑
|
||||
export function caseEdit(params: Record<string, any>) {
|
||||
return request.post({ url: '/case/edit', params })
|
||||
}
|
||||
|
||||
// 成功案例信息删除
|
||||
export function caseDelete(params: Record<string, any>) {
|
||||
return request.post({ url: '/case/del', params })
|
||||
}
|
||||
|
|
@ -207,8 +207,6 @@
|
|||
</div>
|
||||
</file-item>
|
||||
</del-wrap>
|
||||
|
||||
<overflow-tooltip class="mt-1" :content="item.name" />
|
||||
<overflow-tooltip class="mt-2" :content="item.name" />
|
||||
|
||||
<div class="operation-btns flex items-center">
|
||||
|
|
|
|||
|
|
@ -0,0 +1,154 @@
|
|||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup
|
||||
ref="popupRef"
|
||||
:title="popupTitle"
|
||||
:async="true"
|
||||
width="550px"
|
||||
:clickModalClose="true"
|
||||
@confirm="handleSubmit"
|
||||
@close="handleClose"
|
||||
>
|
||||
<el-form ref="formRef" :model="formData" label-width="84px" :rules="formRules">
|
||||
<el-form-item label="标题" prop="title">
|
||||
<el-input v-model="formData.title" placeholder="请输入标题" />
|
||||
</el-form-item>
|
||||
<el-form-item label="是否显示" prop="isShow">
|
||||
<el-radio-group class="flex-1" v-model="formData.isShow" placeholder="请选择是否显示">
|
||||
<el-radio :label="1">显示</el-radio>
|
||||
<el-radio :label="0">不显示</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="banner图" prop="img">
|
||||
<material-picker size="100px" v-model="formData.img" type="video" />
|
||||
</el-form-item>
|
||||
<el-form-item label="排序" prop="menuSort">
|
||||
<div>
|
||||
<el-input-number v-model="formData.sort" :max="9999" />
|
||||
<div class="form-tips">数值越大越排前</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="链接地址" prop="linkAddress">
|
||||
<el-input v-model="formData.linkAddress" placeholder="请输入链接地址" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import { bannerEdit, bannerAdd, bannerDetail } from '@/api/banner'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import feedback from '@/utils/feedback'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
const popupTitle = computed(() => {
|
||||
return mode.value == 'edit' ? '编辑banner信息' : '新增banner信息'
|
||||
})
|
||||
|
||||
|
||||
const formData = reactive({
|
||||
id: null,
|
||||
title: '',
|
||||
sort: 0,
|
||||
isShow: 0,
|
||||
img: '',
|
||||
linkAddress: '',
|
||||
})
|
||||
|
||||
const formRules = {
|
||||
id: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入主键',
|
||||
trigger: ['blur']
|
||||
}
|
||||
],
|
||||
title: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入标题',
|
||||
trigger: ['blur']
|
||||
}
|
||||
],
|
||||
sort: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入排序编号',
|
||||
trigger: ['blur']
|
||||
}
|
||||
],
|
||||
isShow: [
|
||||
{
|
||||
required: true,
|
||||
message: '请选择是否显示',
|
||||
trigger: ['blur']
|
||||
}
|
||||
],
|
||||
img: [
|
||||
{
|
||||
required: true,
|
||||
message: '请选择banner图',
|
||||
trigger: ['blur']
|
||||
}
|
||||
],
|
||||
linkAddress: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入链接地址',
|
||||
trigger: ['blur']
|
||||
}
|
||||
],
|
||||
}
|
||||
|
||||
const handleSubmit = async () => {
|
||||
await formRef.value?.validate()
|
||||
const data: any = { ...formData }
|
||||
console.log(data)
|
||||
mode.value == 'edit' ? await bannerEdit(data) : await bannerAdd(data)
|
||||
popupRef.value?.close()
|
||||
feedback.msgSuccess('操作成功')
|
||||
emit('success')
|
||||
}
|
||||
|
||||
const open = (type = 'add') => {
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
const setFormData = async (data: Record<string, any>) => {
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await bannerDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
||||
|
|
@ -0,0 +1,160 @@
|
|||
<template>
|
||||
<div class="index-lists">
|
||||
<el-card class="!border-none" shadow="never">
|
||||
<el-form ref="formRef" class="mb-[-16px]" :model="queryParams" :inline="true">
|
||||
<el-form-item label="标题" prop="title">
|
||||
<el-input class="w-[280px]" v-model="queryParams.title" />
|
||||
</el-form-item>
|
||||
<el-form-item label="是否显示" prop="isShow">
|
||||
<el-select
|
||||
v-model="queryParams.isShow"
|
||||
class="w-[280px]"
|
||||
clearable
|
||||
>
|
||||
<el-option label="全部" value="" />
|
||||
<el-option
|
||||
v-for="(item, index) in dictData.Integer"
|
||||
:key="index"
|
||||
:label="item.name"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="链接地址" prop="linkAddress">
|
||||
<el-input class="w-[280px]" v-model="queryParams.linkAddress" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none mt-4" shadow="never">
|
||||
<div>
|
||||
<el-button v-perms="['banner:add']" type="primary" @click="handleAdd()">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
class="mt-4"
|
||||
size="large"
|
||||
v-loading="pager.loading"
|
||||
:data="pager.lists"
|
||||
>
|
||||
<el-table-column label="标题" prop="title" min-width="100" show-overflow-tooltip >
|
||||
<template #default="{ row }">
|
||||
<el-link @click.stop="handlePreview(row.img)" :underline="false">
|
||||
{{ row.title }}
|
||||
</el-link>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="banner图" prop="img" min-width="100">
|
||||
<template #default="{ row }">
|
||||
<file-item :uri="row.img" file-size="80px" type="video"></file-item>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="创建时间" prop="createTime" min-width="100" />
|
||||
<el-table-column label="更新时间" prop="updateTime" min-width="100" />
|
||||
<el-table-column label="排序编号" prop="sort" min-width="100" />
|
||||
<el-table-column label="是否显示" prop="isShow" min-width="100">
|
||||
<template #default="{ row }">
|
||||
<dict-value :options="dictData.Integer" :value="row.isShow" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="链接地址" prop="linkAddress" min-width="100" />
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button
|
||||
v-perms="['banner:edit']"
|
||||
type="primary"
|
||||
link
|
||||
@click="handleEdit(row)"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
v-perms="['banner:del']"
|
||||
type="danger"
|
||||
link
|
||||
@click="handleDelete(row.id)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="flex justify-end mt-4">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<edit-popup
|
||||
v-if="showEdit"
|
||||
ref="editRef"
|
||||
:dict-data="dictData"
|
||||
@success="getLists"
|
||||
@close="showEdit = false"
|
||||
/>
|
||||
<preview v-model="showPreview" :url="previewUrl" type="video" />
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts" setup name="banner">
|
||||
import { bannerDelete, bannerLists } from '@/api/banner'
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
import Preview from '@/components/material/preview.vue'
|
||||
import FileItem from "@/components/material/file.vue";
|
||||
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||
const showEdit = ref(false)
|
||||
const queryParams = reactive({
|
||||
title: '',
|
||||
sort: null,
|
||||
isShow: null,
|
||||
linkAddress: '',
|
||||
})
|
||||
|
||||
const { pager, getLists, resetPage, resetParams } = usePaging({
|
||||
fetchFun: bannerLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
const previewUrl = ref('')
|
||||
const showPreview = ref(false)
|
||||
const { dictData } = useDictData<{
|
||||
Integer: any[]
|
||||
}>(['Integer'])
|
||||
|
||||
|
||||
const handleAdd = async () => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
}
|
||||
|
||||
const handleEdit = async (data: any) => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.getDetail(data)
|
||||
}
|
||||
|
||||
const handleDelete = async (id: number) => {
|
||||
await feedback.confirm('确定要删除?')
|
||||
await bannerDelete({ id })
|
||||
feedback.msgSuccess('删除成功')
|
||||
getLists()
|
||||
}
|
||||
|
||||
const handlePreview = (img: string) => {
|
||||
previewUrl.value = img
|
||||
console.log(img)
|
||||
showPreview.value = true
|
||||
}
|
||||
|
||||
getLists()
|
||||
</script>
|
||||
|
|
@ -0,0 +1,153 @@
|
|||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup
|
||||
ref="popupRef"
|
||||
:title="popupTitle"
|
||||
:async="true"
|
||||
width="550px"
|
||||
:clickModalClose="true"
|
||||
@confirm="handleSubmit"
|
||||
@close="handleClose"
|
||||
>
|
||||
<el-form ref="formRef" :model="formData" label-width="110px" :rules="formRules">
|
||||
<el-form-item label="banner标题" prop="title">
|
||||
<el-input v-model="formData.title" placeholder="请输入banner标题" />
|
||||
</el-form-item>
|
||||
<el-form-item label="banner图" prop="img">
|
||||
<material-picker size="100px" v-model="formData.img" />
|
||||
</el-form-item>
|
||||
<el-form-item label="是否显示" prop="isShow">
|
||||
<el-radio-group class="flex-1" v-model="formData.isShow" placeholder="请选择是否显示">
|
||||
<el-radio :label="1">显示</el-radio>
|
||||
<el-radio :label="0">不显示</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="排序" prop="sort">
|
||||
<div>
|
||||
<el-input-number v-model="formData.sort" :max="9999" />
|
||||
<div class="form-tips">数值越大越排前</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
<el-form-item label="链接地址" prop="linkAddress">
|
||||
<el-input v-model="formData.linkAddress" placeholder="请输入链接地址" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import { bannerfrontEdit, bannerfrontAdd, bannerfrontDetail } from '@/api/bannerfront'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import feedback from '@/utils/feedback'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
const popupTitle = computed(() => {
|
||||
return mode.value == 'edit' ? '编辑小程序banner管理' : '新增小程序banner管理'
|
||||
})
|
||||
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
title: '',
|
||||
sort: '',
|
||||
isShow: '',
|
||||
img: '',
|
||||
linkAddress: '',
|
||||
})
|
||||
|
||||
const formRules = {
|
||||
id: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入主键',
|
||||
trigger: ['blur']
|
||||
}
|
||||
],
|
||||
title: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入banner标题',
|
||||
trigger: ['blur']
|
||||
}
|
||||
],
|
||||
sort: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入排序编号',
|
||||
trigger: ['blur']
|
||||
}
|
||||
],
|
||||
isShow: [
|
||||
{
|
||||
required: true,
|
||||
message: '请选择是否显示: 0=否, 1=是',
|
||||
trigger: ['blur']
|
||||
}
|
||||
],
|
||||
img: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入banner图',
|
||||
trigger: ['blur']
|
||||
}
|
||||
],
|
||||
linkAddress: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入链接地址',
|
||||
trigger: ['blur']
|
||||
}
|
||||
],
|
||||
}
|
||||
|
||||
const handleSubmit = async () => {
|
||||
await formRef.value?.validate()
|
||||
const data: any = { ...formData }
|
||||
mode.value == 'edit' ? await bannerfrontEdit(data) : await bannerfrontAdd(data)
|
||||
popupRef.value?.close()
|
||||
feedback.msgSuccess('操作成功')
|
||||
emit('success')
|
||||
}
|
||||
|
||||
const open = (type = 'add') => {
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
const setFormData = async (data: Record<string, any>) => {
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await bannerfrontDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
||||
|
|
@ -0,0 +1,150 @@
|
|||
<template>
|
||||
<div class="index-lists">
|
||||
<el-card class="!border-none" shadow="never">
|
||||
<el-form ref="formRef" class="mb-[-16px]" :model="queryParams" :inline="true">
|
||||
<el-form-item label="banner标题" prop="title">
|
||||
<el-input class="w-[280px]" v-model="queryParams.title" />
|
||||
</el-form-item>
|
||||
<el-form-item label="是否显示" prop="isShow">
|
||||
<el-select
|
||||
v-model="queryParams.isShow"
|
||||
class="w-[280px]"
|
||||
clearable
|
||||
>
|
||||
<el-option label="全部" value="" />
|
||||
<el-option
|
||||
v-for="(item, index) in dictData.Integer"
|
||||
:key="index"
|
||||
:label="item.name"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="链接地址" prop="linkAddress">
|
||||
<el-input class="w-[280px]" v-model="queryParams.linkAddress" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none mt-4" shadow="never">
|
||||
<div>
|
||||
<el-button v-perms="['bannerfront:add']" type="primary" @click="handleAdd()">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
class="mt-4"
|
||||
size="large"
|
||||
v-loading="pager.loading"
|
||||
:data="pager.lists"
|
||||
>
|
||||
<el-table-column label="banner标题" prop="title" min-width="100" />
|
||||
<el-table-column label="banner图" prop="img" min-width="100">
|
||||
<template #default="{ row }">
|
||||
<image-contain
|
||||
:width="100"
|
||||
:height="60"
|
||||
:src="row.img"
|
||||
:preview-src-list="[row.img]"
|
||||
preview-teleported
|
||||
hide-on-click-modal
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="创建时间" prop="createTime" min-width="100" />
|
||||
<el-table-column label="更新时间" prop="updateTime" min-width="100" />
|
||||
<el-table-column label="排序编号" prop="sort" min-width="100" />
|
||||
<el-table-column label="是否显示" prop="isShow" min-width="100">
|
||||
<template #default="{ row }">
|
||||
<dict-value :options="dictData.Integer" :value="row.isShow" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="链接地址" prop="linkAddress" min-width="100" />
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button
|
||||
v-perms="['bannerfront:edit']"
|
||||
type="primary"
|
||||
link
|
||||
@click="handleEdit(row)"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
v-perms="['bannerfront:del']"
|
||||
type="danger"
|
||||
link
|
||||
@click="handleDelete(row.id)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="flex justify-end mt-4">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<edit-popup
|
||||
v-if="showEdit"
|
||||
ref="editRef"
|
||||
:dict-data="dictData"
|
||||
@success="getLists"
|
||||
@close="showEdit = false"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts" setup name="bannerfront">
|
||||
import { bannerfrontDelete, bannerfrontLists } from '@/api/bannerfront'
|
||||
import { useDictData } from '@/hooks/useDictOptions'
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
import FileItem from "@/components/material/file.vue";
|
||||
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||
const showEdit = ref(false)
|
||||
const queryParams = reactive({
|
||||
title: '',
|
||||
isShow: '',
|
||||
linkAddress: '',
|
||||
})
|
||||
|
||||
const { pager, getLists, resetPage, resetParams } = usePaging({
|
||||
fetchFun: bannerfrontLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
const { dictData } = useDictData<{
|
||||
Integer: any[]
|
||||
}>(['Integer'])
|
||||
|
||||
|
||||
const handleAdd = async () => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
}
|
||||
|
||||
const handleEdit = async (data: any) => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.getDetail(data)
|
||||
}
|
||||
|
||||
const handleDelete = async (id: number) => {
|
||||
await feedback.confirm('确定要删除?')
|
||||
await bannerfrontDelete({ id })
|
||||
feedback.msgSuccess('删除成功')
|
||||
getLists()
|
||||
}
|
||||
|
||||
getLists()
|
||||
</script>
|
||||
|
|
@ -0,0 +1,146 @@
|
|||
<template>
|
||||
<div class="edit-popup">
|
||||
<popup
|
||||
ref="popupRef"
|
||||
:title="popupTitle"
|
||||
:async="true"
|
||||
width="1000px"
|
||||
:clickModalClose="true"
|
||||
@confirm="handleSubmit"
|
||||
@close="handleClose"
|
||||
>
|
||||
<el-form ref="formRef" :model="formData" label-width="84px" :rules="formRules">
|
||||
<el-form-item label="案例名称" prop="name" style="width: 550px">
|
||||
<el-input v-model="formData.name" placeholder="请输入案例名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="案例图片" prop="img">
|
||||
<material-picker size="300px" v-model="formData.img" />
|
||||
</el-form-item>
|
||||
<el-form-item label="是否显示" prop="isShow">
|
||||
<el-radio-group class="flex-1" v-model="formData.isShow" placeholder="请选择是否显示">
|
||||
<el-radio :label="1">显示</el-radio>
|
||||
<el-radio :label="0">不显示</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="排序" prop="sort">
|
||||
<div>
|
||||
<el-input-number v-model="formData.sort" :max="9999" />
|
||||
<div class="form-tips">数值越大越排前</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="内容" prop="content">
|
||||
<editor v-model="formData.content" :height="500" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
</popup>
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import { caseEdit, caseAdd, caseDetail } from '@/api/case'
|
||||
import Popup from '@/components/popup/index.vue'
|
||||
import feedback from '@/utils/feedback'
|
||||
import type { PropType } from 'vue'
|
||||
defineProps({
|
||||
dictData: {
|
||||
type: Object as PropType<Record<string, any[]>>,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const emit = defineEmits(['success', 'close'])
|
||||
const formRef = shallowRef<FormInstance>()
|
||||
const popupRef = shallowRef<InstanceType<typeof Popup>>()
|
||||
const mode = ref('add')
|
||||
const popupTitle = computed(() => {
|
||||
return mode.value == 'edit' ? '编辑成功案例信息' : '新增成功案例信息'
|
||||
})
|
||||
|
||||
const formData = reactive({
|
||||
id: '',
|
||||
name: '',
|
||||
sort: '',
|
||||
isShow: '',
|
||||
img: '',
|
||||
content: '',
|
||||
})
|
||||
|
||||
const formRules = {
|
||||
id: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入主键',
|
||||
trigger: ['blur']
|
||||
}
|
||||
],
|
||||
name: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入案例名称',
|
||||
trigger: ['blur']
|
||||
}
|
||||
],
|
||||
sort: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入排序编号',
|
||||
trigger: ['blur']
|
||||
}
|
||||
],
|
||||
isShow: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入是否显示: 0=否, 1=是',
|
||||
trigger: ['blur']
|
||||
}
|
||||
],
|
||||
img: [
|
||||
{
|
||||
required: true,
|
||||
message: '请选择案例图片',
|
||||
trigger: ['blur']
|
||||
}
|
||||
],
|
||||
}
|
||||
|
||||
const handleSubmit = async () => {
|
||||
await formRef.value?.validate()
|
||||
const data: any = { ...formData }
|
||||
mode.value == 'edit' ? await caseEdit(data) : await caseAdd(data)
|
||||
popupRef.value?.close()
|
||||
feedback.msgSuccess('操作成功')
|
||||
emit('success')
|
||||
}
|
||||
|
||||
const open = (type = 'add') => {
|
||||
mode.value = type
|
||||
popupRef.value?.open()
|
||||
}
|
||||
|
||||
const setFormData = async (data: Record<string, any>) => {
|
||||
for (const key in formData) {
|
||||
if (data[key] != null && data[key] != undefined) {
|
||||
//@ts-ignore
|
||||
formData[key] = data[key]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const getDetail = async (row: Record<string, any>) => {
|
||||
const data = await caseDetail({
|
||||
id: row.id
|
||||
})
|
||||
setFormData(data)
|
||||
}
|
||||
|
||||
const handleClose = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
setFormData,
|
||||
getDetail
|
||||
})
|
||||
</script>
|
||||
|
|
@ -0,0 +1,129 @@
|
|||
<template>
|
||||
<div class="index-lists">
|
||||
<el-card class="!border-none" shadow="never">
|
||||
<el-form ref="formRef" class="mb-[-16px]" :model="queryParams" :inline="true">
|
||||
<el-form-item label="案例名称" prop="name">
|
||||
<el-input class="w-[280px]" v-model="queryParams.name" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card class="!border-none mt-4" shadow="never">
|
||||
<div>
|
||||
<el-button v-perms="['case:add']" type="primary" @click="handleAdd()">
|
||||
<template #icon>
|
||||
<icon name="el-icon-Plus" />
|
||||
</template>
|
||||
新增
|
||||
</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
class="mt-4"
|
||||
size="large"
|
||||
v-loading="pager.loading"
|
||||
:data="pager.lists"
|
||||
>
|
||||
<el-table-column label="案例名称" prop="name" min-width="100" />
|
||||
<el-table-column label="案例图片" prop="img" min-width="100">
|
||||
<template #default="{ row }">
|
||||
<image-contain
|
||||
:width="100"
|
||||
:height="60"
|
||||
:src="row.img"
|
||||
:preview-src-list="[row.img]"
|
||||
preview-teleported
|
||||
hide-on-click-modal
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="创建时间" prop="createTime" min-width="100" />
|
||||
<el-table-column label="更新时间" prop="updateTime" min-width="100" />
|
||||
<el-table-column label="排序编号" prop="sort" min-width="100" />
|
||||
<el-table-column label="是否显示" prop="isShow" min-width="100">
|
||||
<template #default="{ row }">
|
||||
<dict-value :options="dictData.Integer" :value="row.isShow" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="操作" width="120" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button
|
||||
v-perms="['case:edit']"
|
||||
type="primary"
|
||||
link
|
||||
@click="handleEdit(row)"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
v-perms="['case:del']"
|
||||
type="danger"
|
||||
link
|
||||
@click="handleDelete(row.id)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="flex justify-end mt-4">
|
||||
<pagination v-model="pager" @change="getLists" />
|
||||
</div>
|
||||
</el-card>
|
||||
<edit-popup
|
||||
v-if="showEdit"
|
||||
ref="editRef"
|
||||
@success="getLists"
|
||||
@close="showEdit = false"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts" setup name="case">
|
||||
import { caseDelete, caseLists } from '@/api/case'
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
import feedback from '@/utils/feedback'
|
||||
import EditPopup from './edit.vue'
|
||||
import {useDictData} from "@/hooks/useDictOptions";
|
||||
const editRef = shallowRef<InstanceType<typeof EditPopup>>()
|
||||
const showEdit = ref(false)
|
||||
const queryParams = reactive({
|
||||
name: '',
|
||||
isShow: '',
|
||||
})
|
||||
|
||||
const { dictData } = useDictData<{
|
||||
Integer: any[]
|
||||
}>(['Integer'])
|
||||
|
||||
const { pager, getLists, resetPage, resetParams } = usePaging({
|
||||
fetchFun: caseLists,
|
||||
params: queryParams
|
||||
})
|
||||
|
||||
|
||||
|
||||
const handleAdd = async () => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('add')
|
||||
}
|
||||
|
||||
const handleEdit = async (data: any) => {
|
||||
showEdit.value = true
|
||||
await nextTick()
|
||||
editRef.value?.open('edit')
|
||||
editRef.value?.getDetail(data)
|
||||
}
|
||||
|
||||
const handleDelete = async (id: number) => {
|
||||
await feedback.confirm('确定要删除?')
|
||||
await caseDelete({ id })
|
||||
feedback.msgSuccess('删除成功')
|
||||
getLists()
|
||||
}
|
||||
|
||||
getLists()
|
||||
</script>
|
||||
|
|
@ -27,22 +27,16 @@
|
|||
<el-form-item label="产品分类名称" prop="name">
|
||||
<el-input v-model="formData.name" placeholder="请输入产品分类名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="菜单排序" prop="menuSort">
|
||||
<el-form-item label="排序" prop="menuSort">
|
||||
<div>
|
||||
<el-input-number v-model="formData.sort" :max="9999" />
|
||||
<div class="form-tips">数值越大越排前</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否显示" prop="status">
|
||||
<el-form-item label="是否显示" prop="isShow">
|
||||
<el-radio-group v-model="formData.isShow" placeholder="请选择是否显示">
|
||||
<el-radio
|
||||
v-for="(item, index) in dictData.Boolean"
|
||||
:key="index"
|
||||
:label="item.value"
|
||||
:disabled="!item.status"
|
||||
>
|
||||
{{ item.name }}
|
||||
</el-radio>
|
||||
<el-radio :label="1">显示</el-radio>
|
||||
<el-radio :label="0">不显示</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
|
@ -73,8 +67,8 @@ const popupTitle = computed(() => {
|
|||
const formData = reactive({
|
||||
id: '',
|
||||
name: '',
|
||||
pid: '',
|
||||
sort: '',
|
||||
pid: 0,
|
||||
sort: 0,
|
||||
isShow: '',
|
||||
})
|
||||
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
>
|
||||
<el-option label="全部" value="" />
|
||||
<el-option
|
||||
v-for="(item, index) in dictData.Boolean"
|
||||
v-for="(item, index) in dictData.Integer"
|
||||
:key="index"
|
||||
:label="item.name"
|
||||
:value="item.value"
|
||||
|
|
@ -53,7 +53,7 @@
|
|||
<el-table-column label="是否显示" prop="isShow" min-width="100">
|
||||
|
||||
<template #default="{ row }">
|
||||
<dict-value :options="dictData.Boolean" :value="row.isShow" />
|
||||
<dict-value :options="dictData.Integer" :value="row.isShow" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="160" fixed="right">
|
||||
|
|
@ -112,15 +112,15 @@ const lists = ref<any[]>([])
|
|||
|
||||
const queryParams = reactive({
|
||||
name: '',
|
||||
pid: '',
|
||||
sort: '',
|
||||
isShow: '',
|
||||
pid: null,
|
||||
sort: null,
|
||||
isShow: null,
|
||||
})
|
||||
|
||||
|
||||
const { dictData } = useDictData<{
|
||||
Boolean: any[]
|
||||
}>(['Boolean'])
|
||||
Integer: any[]
|
||||
}>(['Integer'])
|
||||
|
||||
const getLists = async () => {
|
||||
loading.value = true
|
||||
|
|
|
|||
|
|
@ -2,6 +2,11 @@
|
|||
# yarn lockfile v1
|
||||
|
||||
|
||||
"@amap/amap-jsapi-loader@^1.0.1":
|
||||
version "1.0.1"
|
||||
resolved "https://registry.npmmirror.com/@amap/amap-jsapi-loader/-/amap-jsapi-loader-1.0.1.tgz"
|
||||
integrity sha512-nPyLKt7Ow/ThHLkSvn2etQlUzqxmTVgK7bIgwdBRTg2HK5668oN7xVxkaiRe3YZEzGzfV2XgH5Jmu2T73ljejw==
|
||||
|
||||
"@ampproject/remapping@^2.1.0":
|
||||
version "2.2.0"
|
||||
resolved "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.2.0.tgz"
|
||||
|
|
|
|||
Loading…
Reference in New Issue