From 6b27589a92d0222563936f400a7c6e832cfc7c00 Mon Sep 17 00:00:00 2001 From: cgx <2606784146@qq.com> Date: Sat, 19 Oct 2024 18:45:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=A5=E4=BB=B7=E5=B1=95=E7=A4=BA=E6=8A=A5?= =?UTF-8?q?=E4=BB=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/org/jeecg/config/Swagger2Config.java | 1 - .../java/org/jeecg/config/shiro/ShiroConfig.java | 1 + .../product/controller/TbProductController.java | 157 ++++++++++++ .../jeecg/modules/product/entity/TbProduct.java | 125 ++++++++++ .../modules/product/mapper/TbProductMapper.java | 14 ++ .../modules/product/mapper/xml/TbProductMapper.xml | 5 + .../modules/product/service/ITbProductService.java | 14 ++ .../product/service/impl/TbProductServiceImpl.java | 19 ++ .../jeecg/modules/product/vue/TbProductList.vue | 262 +++++++++++++++++++++ .../modules/product/vue/modules/TbProductForm.vue | 147 ++++++++++++ .../vue/modules/TbProductModal.Style#Drawer.vue | 84 +++++++ .../modules/product/vue/modules/TbProductModal.vue | 60 +++++ .../jeecg/modules/product/vue3/TbProduct.api.ts | 61 +++++ .../jeecg/modules/product/vue3/TbProduct.data.ts | 162 +++++++++++++ .../jeecg/modules/product/vue3/TbProductList.vue | 162 +++++++++++++ .../product/vue3/components/TbProductModal.vue | 58 +++++ .../alUser/controller/ProductController.java | 72 ++++++ .../alUser/service/impl/UserServiceImpl.java | 4 +- .../jeecg/modules/product/entity/ProductReq.java | 67 ++++++ .../modules/product/service/ProductService.java | 16 ++ .../product/service/impl/ProductServiceImpl.java | 56 +++++ 21 files changed, 1544 insertions(+), 3 deletions(-) create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/controller/TbProductController.java create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/entity/TbProduct.java create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/mapper/TbProductMapper.java create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/mapper/xml/TbProductMapper.xml create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/service/ITbProductService.java create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/service/impl/TbProductServiceImpl.java create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/vue/TbProductList.vue create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/vue/modules/TbProductForm.vue create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/vue/modules/TbProductModal.Style#Drawer.vue create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/vue/modules/TbProductModal.vue create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/vue3/TbProduct.api.ts create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/vue3/TbProduct.data.ts create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/vue3/TbProductList.vue create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/vue3/components/TbProductModal.vue create mode 100644 jeecg-boot-module-system/src/main/java/org/jeecg/modules/alUser/controller/ProductController.java create mode 100644 jeecg-boot-module-system/src/main/java/org/jeecg/modules/product/entity/ProductReq.java create mode 100644 jeecg-boot-module-system/src/main/java/org/jeecg/modules/product/service/ProductService.java create mode 100644 jeecg-boot-module-system/src/main/java/org/jeecg/modules/product/service/impl/ProductServiceImpl.java diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/Swagger2Config.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/Swagger2Config.java index 6096847..7ff68d1 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/Swagger2Config.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/Swagger2Config.java @@ -56,7 +56,6 @@ public class Swagger2Config implements WebMvcConfigurer { registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); } - /** * swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等 * diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java index 665762e..ebc8cc9 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java @@ -75,6 +75,7 @@ public class ShiroConfig { filterChainDefinitionMap.put("/city/**", "anon"); filterChainDefinitionMap.put("/alUser/**", "anon"); + filterChainDefinitionMap.put("/index/**", "anon"); filterChainDefinitionMap.put("/sys/oss/file/upload", "anon"); //图片上传验证放开 filterChainDefinitionMap.put("/sys/common/upload", "anon"); //图片上传验证放开 diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/controller/TbProductController.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/controller/TbProductController.java new file mode 100644 index 0000000..b4f60ca --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/controller/TbProductController.java @@ -0,0 +1,157 @@ +package org.jeecg.modules.product.controller; + +import java.util.Arrays; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.modules.product.entity.TbProduct; +import org.jeecg.modules.product.service.ITbProductService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.jeecg.common.aspect.annotation.AutoLog; + + /** + * @Description: 产品报价表 + * @Author: jeecg-boot + * @Date: 2024-10-19 + * @Version: V1.0 + */ +@Api(tags="产品报价表") +@RestController +@RequestMapping("/product/tbProduct") +@Slf4j +public class TbProductController extends JeecgController { + @Autowired + private ITbProductService tbProductService; + + /** + * 分页列表查询 + * + * @param tbProduct + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "产品报价表-分页列表查询") + @ApiOperation(value="产品报价表-分页列表查询", notes="产品报价表-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(TbProduct tbProduct, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(tbProduct, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = tbProductService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param tbProduct + * @return + */ + @AutoLog(value = "产品报价表-添加") + @ApiOperation(value="产品报价表-添加", notes="产品报价表-添加") + @PostMapping(value = "/add") + public Result add(@RequestBody TbProduct tbProduct) { + tbProduct.setDelFlag(0); + tbProductService.save(tbProduct); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param tbProduct + * @return + */ + @AutoLog(value = "产品报价表-编辑") + @ApiOperation(value="产品报价表-编辑", notes="产品报价表-编辑") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody TbProduct tbProduct) { + tbProductService.updateById(tbProduct); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "产品报价表-通过id删除") + @ApiOperation(value="产品报价表-通过id删除", notes="产品报价表-通过id删除") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + tbProductService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "产品报价表-批量删除") + @ApiOperation(value="产品报价表-批量删除", notes="产品报价表-批量删除") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.tbProductService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "产品报价表-通过id查询") + @ApiOperation(value="产品报价表-通过id查询", notes="产品报价表-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + TbProduct tbProduct = tbProductService.getById(id); + if(tbProduct==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(tbProduct); + } + + /** + * 导出excel + * + * @param request + * @param tbProduct + */ + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, TbProduct tbProduct) { + return super.exportXls(request, tbProduct, TbProduct.class, "产品报价表"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, TbProduct.class); + } + +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/entity/TbProduct.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/entity/TbProduct.java new file mode 100644 index 0000000..dbc26a6 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/entity/TbProduct.java @@ -0,0 +1,125 @@ +package org.jeecg.modules.product.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 产品报价表 + * @Author: jeecg-boot + * @Date: 2024-10-19 + * @Version: V1.0 + */ +@Data +@TableName("tb_product") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="tb_product对象", description="产品报价表") +public class TbProduct implements Serializable { + private static final long serialVersionUID = 1L; + + /**id*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "id") + private java.lang.String id; + /**用户id*/ + @Excel(name = "用户id", width = 15) + @ApiModelProperty(value = "用户id") + private java.lang.String userId; + /**采购用户id*/ + @Excel(name = "采购用户id", width = 15) + @ApiModelProperty(value = "采购用户id") + private java.lang.String buyUserId; + /**供应商名称*/ + @Excel(name = "供应商名称", width = 15) + @ApiModelProperty(value = "供应商名称") + private java.lang.String companyName; + /**客户姓名*/ + @Excel(name = "客户姓名", width = 15) + @ApiModelProperty(value = "客户姓名") + private java.lang.String userName; + /**客户电话*/ + @Excel(name = "客户电话", width = 15) + @ApiModelProperty(value = "客户电话") + private java.lang.String phone; + /**提货地址*/ + @Excel(name = "提货地址", width = 15) + @ApiModelProperty(value = "提货地址") + private java.lang.String address; + /**地址id*/ + @Excel(name = "地址id", width = 15) + @ApiModelProperty(value = "地址id") + private java.lang.String addressId; + /**报价照片*/ + @Excel(name = "报价照片", width = 15) + @ApiModelProperty(value = "报价照片") + private java.lang.String pic; + /**单价*/ + @Excel(name = "单价", width = 15) + @ApiModelProperty(value = "单价") + private java.math.BigDecimal price; + /**暂定数量、*/ + @Excel(name = "暂定数量、", width = 15) + @ApiModelProperty(value = "暂定数量、") + private java.lang.Integer num; + /**审核状态 0审核中 1 审核通过 2审核未通过*/ + @Excel(name = "审核状态 0审核中 1 审核通过 2审核未通过", width = 15, dicCode = "audit_status") + @Dict(dicCode = "audit_status") + @ApiModelProperty(value = "审核状态 0审核中 1 审核通过 2审核未通过") + private java.lang.Integer auditStatus; + /**挂单状态 0挂单 1 已撤单 2未挂单*/ + @Excel(name = "挂单状态 0挂单 1 已撤单 2未挂单", width = 15, dicCode = "show_status") + @Dict(dicCode = "show_status") + @ApiModelProperty(value = "挂单状态 0挂单 1 已撤单 2未挂单") + private java.lang.Integer showStatus; + /**期货现货 0期货 1 现货*/ + @Excel(name = "期货现货 0期货 1 现货", width = 15, dicCode = "product_type") + @Dict(dicCode = "product_type") + @ApiModelProperty(value = "期货现货 0期货 1 现货") + private java.lang.Integer productType; + /**交货时间*/ + @Excel(name = "交货时间", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "交货时间") + private java.util.Date transactionTime; + /**创建人*/ + @ApiModelProperty(value = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "创建日期") + private java.util.Date createTime; + /**更新人*/ + @ApiModelProperty(value = "更新人") + private java.lang.String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "更新日期") + private java.util.Date updateTime; + /**所属部门*/ + @ApiModelProperty(value = "所属部门") + private java.lang.String sysOrgCode; + /**删除标识0-正常,1-已删除*/ + @Excel(name = "删除标识0-正常,1-已删除", width = 15) + @ApiModelProperty(value = "删除标识0-正常,1-已删除") + private java.lang.Integer delFlag; + @ApiModelProperty(value = "后台排序字段") + private java.lang.Integer sortNum; + +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/mapper/TbProductMapper.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/mapper/TbProductMapper.java new file mode 100644 index 0000000..df0a82a --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/mapper/TbProductMapper.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.product.mapper; + +import org.jeecg.modules.product.entity.TbProduct; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 产品报价表 + * @Author: jeecg-boot + * @Date: 2024-10-19 + * @Version: V1.0 + */ +public interface TbProductMapper extends BaseMapper { + +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/mapper/xml/TbProductMapper.xml b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/mapper/xml/TbProductMapper.xml new file mode 100644 index 0000000..88d9485 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/mapper/xml/TbProductMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/service/ITbProductService.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/service/ITbProductService.java new file mode 100644 index 0000000..3eb202a --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/service/ITbProductService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.product.service; + +import org.jeecg.modules.product.entity.TbProduct; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 产品报价表 + * @Author: jeecg-boot + * @Date: 2024-10-19 + * @Version: V1.0 + */ +public interface ITbProductService extends IService { + +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/service/impl/TbProductServiceImpl.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/service/impl/TbProductServiceImpl.java new file mode 100644 index 0000000..426b0c2 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/service/impl/TbProductServiceImpl.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.product.service.impl; + +import org.jeecg.modules.product.entity.TbProduct; +import org.jeecg.modules.product.mapper.TbProductMapper; +import org.jeecg.modules.product.service.ITbProductService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 产品报价表 + * @Author: jeecg-boot + * @Date: 2024-10-19 + * @Version: V1.0 + */ +@Service +public class TbProductServiceImpl extends ServiceImpl implements ITbProductService { + +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/vue/TbProductList.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/vue/TbProductList.vue new file mode 100644 index 0000000..f46c922 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/vue/TbProductList.vue @@ -0,0 +1,262 @@ + + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/vue/modules/TbProductForm.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/vue/modules/TbProductForm.vue new file mode 100644 index 0000000..a5d5c13 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/vue/modules/TbProductForm.vue @@ -0,0 +1,147 @@ + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/vue/modules/TbProductModal.Style#Drawer.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/vue/modules/TbProductModal.Style#Drawer.vue new file mode 100644 index 0000000..b2132b3 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/vue/modules/TbProductModal.Style#Drawer.vue @@ -0,0 +1,84 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/vue/modules/TbProductModal.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/vue/modules/TbProductModal.vue new file mode 100644 index 0000000..be72558 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/vue/modules/TbProductModal.vue @@ -0,0 +1,60 @@ + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/vue3/TbProduct.api.ts b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/vue3/TbProduct.api.ts new file mode 100644 index 0000000..720e736 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/vue3/TbProduct.api.ts @@ -0,0 +1,61 @@ +import {defHttp} from '/@/utils/http/axios'; +import {Modal} from 'ant-design-vue'; + +enum Api { + list = '/product/tbProduct/list', + save='/product/tbProduct/add', + edit='/product/tbProduct/edit', + deleteOne = '/product/tbProduct/delete', + deleteBatch = '/product/tbProduct/deleteBatch', + importExcel = '/product/tbProduct/importExcel', + exportXls = '/product/tbProduct/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + Modal.confirm({ + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/vue3/TbProduct.data.ts b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/vue3/TbProduct.data.ts new file mode 100644 index 0000000..37606b2 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/vue3/TbProduct.data.ts @@ -0,0 +1,162 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '供应商名称', + align:"center", + dataIndex: 'companyName' + }, + { + title: '提货地址', + align:"center", + dataIndex: 'address' + }, + { + title: '报价照片', + align:"center", + dataIndex: 'pic', + customRender:render.renderAvatar, + }, + { + title: '单价', + align:"center", + dataIndex: 'price' + }, + { + title: '暂定数量、', + align:"center", + dataIndex: 'num' + }, + { + title: '审核状态 0审核中 1 审核通过 2审核未通过', + align:"center", + dataIndex: 'auditStatus_dictText' + }, + { + title: '挂单状态 0挂单 1 已撤单', + align:"center", + dataIndex: 'showStatus_dictText' + }, + { + title: '期货现货 0期货 1 现货', + align:"center", + dataIndex: 'productType_dictText' + }, + { + title: '交货时间', + align:"center", + dataIndex: 'transactionTime', + customRender:({text}) =>{ + return !text?"":(text.length>10?text.substr(0,10):text) + }, + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ + { + label: "供应商名称", + field: "companyName", + component: 'Input', + colProps: {span: 6}, + }, + { + label: "客户电话", + field: "phone", + component: 'Input', + colProps: {span: 6}, + }, + { + label: "审核状态 0审核中 1 审核通过 2审核未通过", + field: "auditStatus", + component: 'JDictSelectTag', + componentProps:{ + dictCode:"audit_status" + }, + colProps: {span: 6}, + }, + { + label: "挂单状态 0挂单 1 已撤单", + field: "showStatus", + component: 'JDictSelectTag', + componentProps:{ + dictCode:"show_status" + }, + colProps: {span: 6}, + }, + { + label: "期货现货 0期货 1 现货", + field: "productType", + component: 'JDictSelectTag', + componentProps:{ + dictCode:"product_type" + }, + colProps: {span: 6}, + }, +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '供应商名称', + field: 'companyName', + component: 'Input', + }, + { + label: '提货地址', + field: 'address', + component: 'Input', + }, + { + label: '报价照片', + field: 'pic', + component: 'JImageUpload', + componentProps:{ + }, + }, + { + label: '单价', + field: 'price', + component: 'InputNumber', + dynamicRules: ({model,schema}) => { + return [ + { required: true, message: '请输入单价!'}, + ]; + }, + }, + { + label: '暂定数量、', + field: 'num', + component: 'InputNumber', + }, + { + label: '审核状态 0审核中 1 审核通过 2审核未通过', + field: 'auditStatus', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"audit_status" + }, + }, + { + label: '挂单状态 0挂单 1 已撤单', + field: 'showStatus', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"show_status" + }, + }, + { + label: '期货现货 0期货 1 现货', + field: 'productType', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"product_type" + }, + }, + { + label: '交货时间', + field: 'transactionTime', + component: 'DatePicker', + }, +]; diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/vue3/TbProductList.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/vue3/TbProductList.vue new file mode 100644 index 0000000..dccf8a5 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/vue3/TbProductList.vue @@ -0,0 +1,162 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/vue3/components/TbProductModal.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/vue3/components/TbProductModal.vue new file mode 100644 index 0000000..5666339 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/product/vue3/components/TbProductModal.vue @@ -0,0 +1,58 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/alUser/controller/ProductController.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/alUser/controller/ProductController.java new file mode 100644 index 0000000..4c74b1a --- /dev/null +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/alUser/controller/ProductController.java @@ -0,0 +1,72 @@ +package org.jeecg.modules.alUser.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.base.controller.JeecgController; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.modules.product.entity.ProductReq; +import org.jeecg.modules.product.entity.TbProduct; +import org.jeecg.modules.product.service.ProductService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; + +/** +* @Description: 产品报价表 +* @Author: jeecg-boot +* @Date: 2024-10-19 +* @Version: V1.0 +*/ +@Api(tags="产品报价") +@RestController +@RequestMapping("/product") +@Slf4j +public class ProductController extends JeecgController { + @Autowired + private ProductService tbProductService; + + /** + * 分页列表查询 + * + * @param tbProduct + * @param pageNo + * @param pageSize + * @param req + * @return + */ + @ApiOperation(value="产品报价分页列表", notes="产品报价分页列表") + @GetMapping(value = "/productList") + public Result> queryPageList( + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(new TbProduct(), req.getParameterMap()); + queryWrapper.eq("show_status",0).eq("audit_status",1) + .orderByDesc("sort_num","create_time"); + Page page = new Page(pageNo, pageSize); + IPage pageList = tbProductService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param + * @return + */ + @ApiOperation(value="产品报价", notes="产品报价") + @PostMapping(value = "/addProduct") + public Result addProduct(@RequestBody ProductReq productReq, @RequestHeader("X-Access-Token") String token) { + tbProductService.addProduct(productReq,token); + return Result.OK("添加成功!"); + } + + + +} diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/alUser/service/impl/UserServiceImpl.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/alUser/service/impl/UserServiceImpl.java index 0ce01f1..b0acae8 100644 --- a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/alUser/service/impl/UserServiceImpl.java +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/alUser/service/impl/UserServiceImpl.java @@ -145,7 +145,7 @@ public class UserServiceImpl implements UserService { queryWrapper.eq(HanHaiMember::getAccount, reqUserRole.getUserName()); HanHaiMember one = iHanHaiMemberService.getOne(queryWrapper); if (ValidateTool.isNull(one)) { - result.error500("用户不存在"); + return result.error500("用户不存在"); } //2. 校验用户名或密码是否正确 String userpassword = PasswordUtil.encrypt(reqUserRole.getUserName(), reqUserRole.getPassword(), one.getPasswordSalt()); @@ -167,7 +167,7 @@ public class UserServiceImpl implements UserService { } TbUserRole tbUserRole = new TbUserRole(); BeanUtils.copyProperties(reqUserRole, tbUserRole); - tbUserRole.setUserId(one1.getUserId()).getId(); + tbUserRole.setUserId(one.getId()); tbUserRole.setAuditStatus(0); tbUserRoleService.save(tbUserRole); return result; diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/product/entity/ProductReq.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/product/entity/ProductReq.java new file mode 100644 index 0000000..e89d427 --- /dev/null +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/product/entity/ProductReq.java @@ -0,0 +1,67 @@ +package org.jeecg.modules.product.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecg.common.aspect.annotation.Dict; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * @Description: 产品报价表 + * @Author: jeecg-boot + * @Date: 2024-10-19 + * @Version: V1.0 + */ +@Data +@Accessors(chain = true) +@ApiModel(value="tb_product对象", description="产品报价表") +public class ProductReq implements Serializable { + private static final long serialVersionUID = 1L; + + /**供应商名称*/ + @Excel(name = "供应商名称", width = 15) + @ApiModelProperty(value = "供应商名称") + private String companyName; + /**客户姓名*/ + @Excel(name = "客户姓名", width = 15) + @ApiModelProperty(value = "客户姓名") + private String userName; + /**客户电话*/ + @Excel(name = "客户电话", width = 15) + @ApiModelProperty(value = "客户电话") + private String phone; + /**地址id*/ + @Excel(name = "地址id", width = 15) + @ApiModelProperty(value = "地址id") + private String addressId; + /**报价照片*/ + @Excel(name = "报价照片", width = 15) + @ApiModelProperty(value = "报价照片") + private String pic; + /**单价*/ + @Excel(name = "单价", width = 15) + @ApiModelProperty(value = "单价") + private BigDecimal price; + /**暂定数量、*/ + @Excel(name = "暂定数量、", width = 15) + @ApiModelProperty(value = "暂定数量、") + private Integer num; + /**交货时间*/ + @Excel(name = "交货时间", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "交货时间") + private Date transactionTime; + +} diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/product/service/ProductService.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/product/service/ProductService.java new file mode 100644 index 0000000..b3ad225 --- /dev/null +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/product/service/ProductService.java @@ -0,0 +1,16 @@ +package org.jeecg.modules.product.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.product.entity.ProductReq; +import org.jeecg.modules.product.entity.TbProduct; + +/** + * @Description: 产品报价表 + * @Author: jeecg-boot + * @Date: 2024-10-19 + * @Version: V1.0 + */ +public interface ProductService extends IService { + + void addProduct(ProductReq productReq,String token); +} diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/product/service/impl/ProductServiceImpl.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/product/service/impl/ProductServiceImpl.java new file mode 100644 index 0000000..13330a6 --- /dev/null +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/product/service/impl/ProductServiceImpl.java @@ -0,0 +1,56 @@ +package org.jeecg.modules.product.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import org.jeecg.config.shiro.ShiroRealm; +import org.jeecg.modules.hanHaiMember.entity.HanHaiMember; +import org.jeecg.modules.hanHaiMember.service.IHanHaiMemberService; +import org.jeecg.modules.product.entity.ProductReq; +import org.jeecg.modules.product.entity.TbProduct; +import org.jeecg.modules.product.mapper.TbProductMapper; +import org.jeecg.modules.product.service.ProductService; +import org.jeecg.modules.userRole.entity.TbUserRole; +import org.jeecg.modules.userRole.service.ITbUserRoleService; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; + +/** + * @Description: 产品报价表 + * @Author: jeecg-boot + * @Date: 2024-10-19 + * @Version: V1.0 + */ +@Service +public class ProductServiceImpl extends ServiceImpl implements ProductService { + @Resource + private ShiroRealm shiroRealm; + @Resource + private IHanHaiMemberService hanHaiMemberService; + @Resource + private ITbUserRoleService tbUserRoleService; + @Resource + private TbProductMapper tbProductMapper; + + @Transactional(rollbackFor = Exception.class) + @Override + public void addProduct(ProductReq productReq,String token) { + + HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiAccount(token); + LambdaQueryWrapper objectLambdaQueryWrapper = new LambdaQueryWrapper<>(); + objectLambdaQueryWrapper.eq(TbUserRole::getUserId,hanHaiMember.getId()). + eq(TbUserRole::getRole,1).eq(TbUserRole::getAuditStatus,1); + TbUserRole one1 = tbUserRoleService.getOne(objectLambdaQueryWrapper); + TbProduct product = new TbProduct(); + BeanUtils.copyProperties(productReq, product); + product.setUserId(hanHaiMember.getId()); + product.setCompanyName(one1.getCompanyName()); + product.setAuditStatus(0); + product.setShowStatus(2); + product.setProductType(2); + tbProductMapper.insert(product); + } +}