From 5411033adfa31ffba337dfdfafb6f0f34d584272 Mon Sep 17 00:00:00 2001 From: Augcl <17674666882@163.com> Date: Sun, 6 Oct 2024 22:14:12 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E6=8E=A5=E5=8F=A3=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E8=A1=A5=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/TravelVideoController.java | 2 +- .../modules/travelVideo/entity/TravelVideo.java | 5 +- .../travelVideo/mapper/TravelVideoMapper.java | 2 +- .../travelVideo/service/ITravelVideoService.java | 2 +- .../service/impl/TravelVideoServiceImpl.java | 2 +- .../modules/travelVideo/vue/TravelVideoList.vue | 2 +- .../travelVideo/vue/modules/TravelVideoForm.vue | 2 +- .../modules/travelVideo/vue3/TravelVideo.data.ts | 2 +- .../controller/TravelWaresOrderController.java | 171 +++++++++++++++++ .../travelWaresOrder/entity/TravelWaresOrder.java | 81 ++++++++ .../mapper/TravelWaresOrderMapper.java | 17 ++ .../mapper/xml/TravelWaresOrderMapper.xml | 5 + .../service/ITravelWaresOrderService.java | 14 ++ .../service/impl/TravelWaresOrderServiceImpl.java | 19 ++ .../travelWaresOrder/vue/TravelWaresOrderList.vue | 209 +++++++++++++++++++++ .../vue/modules/TravelWaresOrderForm.vue | 134 +++++++++++++ .../modules/TravelWaresOrderModal.Style#Drawer.vue | 84 +++++++++ .../vue/modules/TravelWaresOrderModal.vue | 60 ++++++ .../travelWaresOrder/vue3/TravelWaresOrder.api.ts | 61 ++++++ .../travelWaresOrder/vue3/TravelWaresOrder.data.ts | 93 +++++++++ .../travelWaresOrder/vue3/TravelWaresOrderList.vue | 162 ++++++++++++++++ .../vue3/components/TravelWaresOrderModal.vue | 58 ++++++ .../jeecg-boot-module-system.iml | 1 + jeecg-boot-module-system/pom.xml | 7 + .../api/travelController/IndexApiController.java | 14 ++ .../api/travelController/OrderApiController.java | 25 ++- .../jeecg/modules/apiBean/WaresOrderApiBean.java | 15 ++ .../jeecg/modules/apiService/IndexApiService.java | 12 ++ .../apiService/impl/IndexApiServiceImpl.java | 98 +++++++++- .../jeecg/modules/apiUtils/TxtToSoundUtils.java | 77 ++++++++ 30 files changed, 1421 insertions(+), 15 deletions(-) create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/controller/TravelWaresOrderController.java create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/entity/TravelWaresOrder.java create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/mapper/TravelWaresOrderMapper.java create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/mapper/xml/TravelWaresOrderMapper.xml create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/service/ITravelWaresOrderService.java create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/service/impl/TravelWaresOrderServiceImpl.java create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/vue/TravelWaresOrderList.vue create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/vue/modules/TravelWaresOrderForm.vue create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/vue/modules/TravelWaresOrderModal.Style#Drawer.vue create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/vue/modules/TravelWaresOrderModal.vue create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/vue3/TravelWaresOrder.api.ts create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/vue3/TravelWaresOrder.data.ts create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/vue3/TravelWaresOrderList.vue create mode 100644 jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/vue3/components/TravelWaresOrderModal.vue create mode 100644 jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiBean/WaresOrderApiBean.java create mode 100644 jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiUtils/TxtToSoundUtils.java diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelVideo/controller/TravelVideoController.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelVideo/controller/TravelVideoController.java index 7d736a1..3eaeea0 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelVideo/controller/TravelVideoController.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelVideo/controller/TravelVideoController.java @@ -39,7 +39,7 @@ import org.jeecg.common.aspect.annotation.AutoLog; /** * @Description: 视频信息表 * @Author: jeecg-boot - * @Date: 2024-09-14 + * @Date: 2024-10-06 * @Version: V1.0 */ @Api(tags="视频信息表") diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelVideo/entity/TravelVideo.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelVideo/entity/TravelVideo.java index 7be2c38..834a078 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelVideo/entity/TravelVideo.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelVideo/entity/TravelVideo.java @@ -20,7 +20,7 @@ import lombok.experimental.Accessors; /** * @Description: 视频信息表 * @Author: jeecg-boot - * @Date: 2024-09-14 + * @Date: 2024-10-06 * @Version: V1.0 */ @Data @@ -36,6 +36,7 @@ public class TravelVideo implements Serializable { @ApiModelProperty(value = "主键") private java.lang.String id; /**创建人*/ + @Dict(dictTable = "travel_role_info", dicText = "role_name", dicCode = "id") @ApiModelProperty(value = "创建人") private java.lang.String createBy; /**创建日期*/ @@ -62,5 +63,5 @@ public class TravelVideo implements Serializable { /**点赞量*/ @Excel(name = "点赞量", width = 15) @ApiModelProperty(value = "点赞量") - private java.lang.String videoThumpup; + private java.lang.Integer videoThumpup; } diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelVideo/mapper/TravelVideoMapper.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelVideo/mapper/TravelVideoMapper.java index f192b3a..8818335 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelVideo/mapper/TravelVideoMapper.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelVideo/mapper/TravelVideoMapper.java @@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** * @Description: 视频信息表 * @Author: jeecg-boot - * @Date: 2024-09-14 + * @Date: 2024-10-06 * @Version: V1.0 */ public interface TravelVideoMapper extends BaseMapper { diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelVideo/service/ITravelVideoService.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelVideo/service/ITravelVideoService.java index c1b9a1a..f7a3e6f 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelVideo/service/ITravelVideoService.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelVideo/service/ITravelVideoService.java @@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService; /** * @Description: 视频信息表 * @Author: jeecg-boot - * @Date: 2024-09-14 + * @Date: 2024-10-06 * @Version: V1.0 */ public interface ITravelVideoService extends IService { diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelVideo/service/impl/TravelVideoServiceImpl.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelVideo/service/impl/TravelVideoServiceImpl.java index 1ac91fc..b59b2d8 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelVideo/service/impl/TravelVideoServiceImpl.java +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelVideo/service/impl/TravelVideoServiceImpl.java @@ -10,7 +10,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; /** * @Description: 视频信息表 * @Author: jeecg-boot - * @Date: 2024-09-14 + * @Date: 2024-10-06 * @Version: V1.0 */ @Service diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelVideo/vue/TravelVideoList.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelVideo/vue/TravelVideoList.vue index 01514a4..2800bd7 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelVideo/vue/TravelVideoList.vue +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelVideo/vue/TravelVideoList.vue @@ -180,7 +180,7 @@ fieldList.push({type:'string',value:'videoImage',text:'视频封面',dictCode:''}) fieldList.push({type:'string',value:'videoTitle',text:'视频标题',dictCode:''}) fieldList.push({type:'string',value:'videoContent',text:'视频内容',dictCode:''}) - fieldList.push({type:'string',value:'videoThumpup',text:'点赞量',dictCode:''}) + fieldList.push({type:'int',value:'videoThumpup',text:'点赞量',dictCode:''}) this.superFieldList = fieldList } } diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelVideo/vue/modules/TravelVideoForm.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelVideo/vue/modules/TravelVideoForm.vue index f7a6818..6fc2b2e 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelVideo/vue/modules/TravelVideoForm.vue +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelVideo/vue/modules/TravelVideoForm.vue @@ -20,7 +20,7 @@ - + diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelVideo/vue3/TravelVideo.data.ts b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelVideo/vue3/TravelVideo.data.ts index 9fe26f3..37f3d44 100644 --- a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelVideo/vue3/TravelVideo.data.ts +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelVideo/vue3/TravelVideo.data.ts @@ -54,6 +54,6 @@ export const formSchema: FormSchema[] = [ { label: '点赞量', field: 'videoThumpup', - component: 'Input', + component: 'InputNumber', }, ]; diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/controller/TravelWaresOrderController.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/controller/TravelWaresOrderController.java new file mode 100644 index 0000000..ee0a425 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/controller/TravelWaresOrderController.java @@ -0,0 +1,171 @@ +package org.jeecg.modules.travelWaresOrder.controller; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +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.common.util.oConvertUtils; +import org.jeecg.modules.travelWaresOrder.entity.TravelWaresOrder; +import org.jeecg.modules.travelWaresOrder.service.ITravelWaresOrderService; + +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.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +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.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.jeecg.common.aspect.annotation.AutoLog; + + /** + * @Description: 商品订单表 + * @Author: jeecg-boot + * @Date: 2024-10-06 + * @Version: V1.0 + */ +@Api(tags="商品订单表") +@RestController +@RequestMapping("/travelWaresOrder/travelWaresOrder") +@Slf4j +public class TravelWaresOrderController extends JeecgController { + @Autowired + private ITravelWaresOrderService travelWaresOrderService; + + /** + * 分页列表查询 + * + * @param travelWaresOrder + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "商品订单表-分页列表查询") + @ApiOperation(value="商品订单表-分页列表查询", notes="商品订单表-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(TravelWaresOrder travelWaresOrder, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(travelWaresOrder, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = travelWaresOrderService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param travelWaresOrder + * @return + */ + @AutoLog(value = "商品订单表-添加") + @ApiOperation(value="商品订单表-添加", notes="商品订单表-添加") + @PostMapping(value = "/add") + public Result add(@RequestBody TravelWaresOrder travelWaresOrder) { + travelWaresOrderService.save(travelWaresOrder); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param travelWaresOrder + * @return + */ + @AutoLog(value = "商品订单表-编辑") + @ApiOperation(value="商品订单表-编辑", notes="商品订单表-编辑") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody TravelWaresOrder travelWaresOrder) { + travelWaresOrderService.updateById(travelWaresOrder); + 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) { + travelWaresOrderService.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.travelWaresOrderService.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) { + TravelWaresOrder travelWaresOrder = travelWaresOrderService.getById(id); + if(travelWaresOrder==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(travelWaresOrder); + } + + /** + * 导出excel + * + * @param request + * @param travelWaresOrder + */ + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, TravelWaresOrder travelWaresOrder) { + return super.exportXls(request, travelWaresOrder, TravelWaresOrder.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, TravelWaresOrder.class); + } + +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/entity/TravelWaresOrder.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/entity/TravelWaresOrder.java new file mode 100644 index 0000000..80af5a4 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/entity/TravelWaresOrder.java @@ -0,0 +1,81 @@ +package org.jeecg.modules.travelWaresOrder.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-06 + * @Version: V1.0 + */ +@Data +@TableName("travel_wares_order") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="travel_wares_order对象", description="商品订单表") +public class TravelWaresOrder implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键") + private java.lang.String id; + /**创建人*/ + @ApiModelProperty(value = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @ApiModelProperty(value = "创建日期") + private java.util.Date createTime; + /**更新人*/ + @ApiModelProperty(value = "更新人") + private java.lang.String updateBy; + /**更新日期*/ + @ApiModelProperty(value = "更新日期") + private java.util.Date updateTime; + /**关联商品id*/ + @Excel(name = "关联商品id", width = 15, dictTable = "travel_wares", dicText = "wares_title", dicCode = "id") + @Dict(dictTable = "travel_wares", dicText = "wares_title", dicCode = "id") + @ApiModelProperty(value = "关联商品id") + private java.lang.String waresId; + /**关联收件人地址id*/ + @Excel(name = "关联收件人地址id", width = 15, dictTable = "travel_address", dicText = "address", dicCode = "id") + @Dict(dictTable = "travel_address", dicText = "address", dicCode = "id") + @ApiModelProperty(value = "关联收件人地址id") + private java.lang.String addressId; + /**下单须知*/ + @Excel(name = "下单须知", width = 15) + @ApiModelProperty(value = "下单须知") + private java.lang.String statement; + /**产品数量*/ + @Excel(name = "产品数量", width = 15) + @ApiModelProperty(value = "产品数量") + private java.lang.Integer number; + /**产品总价格*/ + @Excel(name = "产品总价格", width = 15) + @ApiModelProperty(value = "产品总价格") + private java.lang.Double price; + /**关联用户*/ + @Excel(name = "关联用户", width = 15, dictTable = "han_hai_member", dicText = "nick_name", dicCode = "id") + @Dict(dictTable = "han_hai_member", dicText = "nick_name", dicCode = "id") + @ApiModelProperty(value = "关联用户") + private java.lang.String userId; + /**订单状态(0-待支付 1-已支付 2-已完成)*/ + @Excel(name = "订单状态(0-待支付 1-已支付 2-已完成)", width = 15) + @ApiModelProperty(value = "订单状态(0-待支付 1-已支付 2-已完成)") + private java.lang.Integer status; +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/mapper/TravelWaresOrderMapper.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/mapper/TravelWaresOrderMapper.java new file mode 100644 index 0000000..6be8e85 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/mapper/TravelWaresOrderMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.travelWaresOrder.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.travelWaresOrder.entity.TravelWaresOrder; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 商品订单表 + * @Author: jeecg-boot + * @Date: 2024-10-06 + * @Version: V1.0 + */ +public interface TravelWaresOrderMapper extends BaseMapper { + +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/mapper/xml/TravelWaresOrderMapper.xml b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/mapper/xml/TravelWaresOrderMapper.xml new file mode 100644 index 0000000..44b0e83 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/mapper/xml/TravelWaresOrderMapper.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/travelWaresOrder/service/ITravelWaresOrderService.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/service/ITravelWaresOrderService.java new file mode 100644 index 0000000..0bb0f50 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/service/ITravelWaresOrderService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.travelWaresOrder.service; + +import org.jeecg.modules.travelWaresOrder.entity.TravelWaresOrder; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 商品订单表 + * @Author: jeecg-boot + * @Date: 2024-10-06 + * @Version: V1.0 + */ +public interface ITravelWaresOrderService extends IService { + +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/service/impl/TravelWaresOrderServiceImpl.java b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/service/impl/TravelWaresOrderServiceImpl.java new file mode 100644 index 0000000..20dd423 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/service/impl/TravelWaresOrderServiceImpl.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.travelWaresOrder.service.impl; + +import org.jeecg.modules.travelWaresOrder.entity.TravelWaresOrder; +import org.jeecg.modules.travelWaresOrder.mapper.TravelWaresOrderMapper; +import org.jeecg.modules.travelWaresOrder.service.ITravelWaresOrderService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 商品订单表 + * @Author: jeecg-boot + * @Date: 2024-10-06 + * @Version: V1.0 + */ +@Service +public class TravelWaresOrderServiceImpl extends ServiceImpl implements ITravelWaresOrderService { + +} diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/vue/TravelWaresOrderList.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/vue/TravelWaresOrderList.vue new file mode 100644 index 0000000..fb686bb --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/vue/TravelWaresOrderList.vue @@ -0,0 +1,209 @@ + + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/vue/modules/TravelWaresOrderForm.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/vue/modules/TravelWaresOrderForm.vue new file mode 100644 index 0000000..f46e14f --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/vue/modules/TravelWaresOrderForm.vue @@ -0,0 +1,134 @@ + + + \ No newline at end of file diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/vue/modules/TravelWaresOrderModal.Style#Drawer.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/vue/modules/TravelWaresOrderModal.Style#Drawer.vue new file mode 100644 index 0000000..4b7ac8b --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/vue/modules/TravelWaresOrderModal.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/travelWaresOrder/vue/modules/TravelWaresOrderModal.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/vue/modules/TravelWaresOrderModal.vue new file mode 100644 index 0000000..4762056 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/vue/modules/TravelWaresOrderModal.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/travelWaresOrder/vue3/TravelWaresOrder.api.ts b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/vue3/TravelWaresOrder.api.ts new file mode 100644 index 0000000..cc6f32a --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/vue3/TravelWaresOrder.api.ts @@ -0,0 +1,61 @@ +import {defHttp} from '/@/utils/http/axios'; +import {Modal} from 'ant-design-vue'; + +enum Api { + list = '/travelWaresOrder/travelWaresOrder/list', + save='/travelWaresOrder/travelWaresOrder/add', + edit='/travelWaresOrder/travelWaresOrder/edit', + deleteOne = '/travelWaresOrder/travelWaresOrder/delete', + deleteBatch = '/travelWaresOrder/travelWaresOrder/deleteBatch', + importExcel = '/travelWaresOrder/travelWaresOrder/importExcel', + exportXls = '/travelWaresOrder/travelWaresOrder/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/travelWaresOrder/vue3/TravelWaresOrder.data.ts b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/vue3/TravelWaresOrder.data.ts new file mode 100644 index 0000000..693f678 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/vue3/TravelWaresOrder.data.ts @@ -0,0 +1,93 @@ +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: '关联商品id', + align:"center", + dataIndex: 'waresId_dictText' + }, + { + title: '关联收件人地址id', + align:"center", + dataIndex: 'addressId_dictText' + }, + { + title: '下单须知', + align:"center", + dataIndex: 'statement', + slots: { customRender: 'htmlSlot' }, + }, + { + title: '产品数量', + align:"center", + dataIndex: 'number' + }, + { + title: '产品总价格', + align:"center", + dataIndex: 'price' + }, + { + title: '关联用户', + align:"center", + dataIndex: 'userId_dictText' + }, + { + title: '订单状态(0-待支付 1-已支付 2-已完成)', + align:"center", + dataIndex: 'status' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '关联商品id', + field: 'waresId', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"travel_wares,wares_title,id" + }, + }, + { + label: '关联收件人地址id', + field: 'addressId', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"travel_address,address,id" + }, + }, + { + label: '下单须知', + field: 'statement', + component: 'JCodeEditor', //TODO String后缀暂未添加 + }, + { + label: '产品数量', + field: 'number', + component: 'InputNumber', + }, + { + label: '产品总价格', + field: 'price', + component: 'InputNumber', + }, + { + label: '关联用户', + field: 'userId', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"han_hai_member,nick_name,id" + }, + }, + { + label: '订单状态(0-待支付 1-已支付 2-已完成)', + field: 'status', + component: 'InputNumber', + }, +]; diff --git a/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/vue3/TravelWaresOrderList.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/vue3/TravelWaresOrderList.vue new file mode 100644 index 0000000..0e01c63 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/vue3/TravelWaresOrderList.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/travelWaresOrder/vue3/components/TravelWaresOrderModal.vue b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/vue3/components/TravelWaresOrderModal.vue new file mode 100644 index 0000000..58c2495 --- /dev/null +++ b/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/travelWaresOrder/vue3/components/TravelWaresOrderModal.vue @@ -0,0 +1,58 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot-module-system/jeecg-boot-module-system.iml b/jeecg-boot-module-system/jeecg-boot-module-system.iml index 4a1bf6f..3c2c6d0 100644 --- a/jeecg-boot-module-system/jeecg-boot-module-system.iml +++ b/jeecg-boot-module-system/jeecg-boot-module-system.iml @@ -289,6 +289,7 @@ + diff --git a/jeecg-boot-module-system/pom.xml b/jeecg-boot-module-system/pom.xml index 1ddbd2a..658bdfa 100644 --- a/jeecg-boot-module-system/pom.xml +++ b/jeecg-boot-module-system/pom.xml @@ -74,6 +74,13 @@ compile + + + com.hynnet + jacob + 1.18 + + diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/travelController/IndexApiController.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/travelController/IndexApiController.java index 5b9c014..75f75ee 100644 --- a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/travelController/IndexApiController.java +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/travelController/IndexApiController.java @@ -45,6 +45,13 @@ public class IndexApiController { return indexApiService.queryVedioById(roleInfoId, pageBean); } + //根据id给视频点赞 + @ApiOperation(value="小程序-根据id给视频点赞", notes="小程序-根据id给视频点赞") + @RequestMapping(value = "/addThumpup", method = {RequestMethod.POST}) + public Result addThumpup(String videoId){ + return indexApiService.addThumpup(videoId); + } + //根据分类获取文章列表 @ApiOperation(value="小程序-根据标题模糊查询文章", notes="小程序-根据标题模糊查询文章") @RequestMapping(value = "/queryArticleListByTitle", method = {RequestMethod.GET}) @@ -87,6 +94,13 @@ public class IndexApiController { return indexApiService.querySpotList(areaId, categoryId, pageBean); } + //语音播放 + @ApiOperation(value="小程序-语音播放", notes="小程序-语音播放") + @RequestMapping(value = "/textToAudio", method = {RequestMethod.GET}) + public Result textToAudio(String text){ + return indexApiService.textToAudio(text); + } + diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/travelController/OrderApiController.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/travelController/OrderApiController.java index a0a7be0..a601758 100644 --- a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/travelController/OrderApiController.java +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/travelController/OrderApiController.java @@ -9,6 +9,7 @@ import org.jeecg.modules.apiService.IndexApiService; import org.jeecg.modules.apiService.OrderApiService; import org.jeecg.modules.travelOrder.entity.TravelOrder; import org.jeecg.modules.travelTime.entity.TravelTime; +import org.jeecg.modules.travelWaresOrder.entity.TravelWaresOrder; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; @@ -40,13 +41,29 @@ public class OrderApiController { return indexApiService.queryOrderList(token, orderType, pageBean); } - //创建订单 - @ApiOperation(value = "创建订单",notes = "创建订单") + //创建预约订单 + @ApiOperation(value = "创建预约订单",notes = "创建预约订单") @PostMapping("/createOrder") - public Result addOrder(TravelOrder travelOrder){ - return orderApiService.addOrder(travelOrder); + public Result addOrder(@RequestHeader("X-Access-Token") String token, TravelWaresOrder travelWaresOrder){ + return indexApiService.addWaresOrder(token, travelWaresOrder); } + //查询文创好物订单信息 + @ApiOperation(value="小程序-查询文创好物订单列表", notes="查询文创好物订单列表") + @RequestMapping(value = "/queryWaresOrderList", method = {RequestMethod.GET}) + public Result queryWaresOrderList(@RequestHeader("X-Access-Token") String token, PageBean pageBean){ + return indexApiService.queryWaresOrderList(token, pageBean); + } + + //创建文创好物订单 + @ApiOperation(value = "创建文创好物订单",notes = "创建文创好物订单") + @PostMapping("/addWaresOrder") + public Result addWaresOrder(@RequestHeader("X-Access-Token") String token, TravelWaresOrder travelWaresOrder){ + return indexApiService.addWaresOrder(token, travelWaresOrder); + } + + + //立即支付 @ApiOperation(value = "立即支付",notes = "立即支付") @PostMapping("/payOrder") diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiBean/WaresOrderApiBean.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiBean/WaresOrderApiBean.java new file mode 100644 index 0000000..ef3263f --- /dev/null +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiBean/WaresOrderApiBean.java @@ -0,0 +1,15 @@ +package org.jeecg.modules.apiBean; + +import lombok.Data; +import org.jeecg.modules.travelAddress.entity.TravelAddress; +import org.jeecg.modules.travelWares.entity.TravelWares; +import org.jeecg.modules.travelWaresOrder.entity.TravelWaresOrder; + +@Data +public class WaresOrderApiBean { + + TravelWares travelWares; + TravelAddress travelAddress; + TravelWaresOrder travelWaresOrder; + +} diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/IndexApiService.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/IndexApiService.java index 2eceabb..b7dee09 100644 --- a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/IndexApiService.java +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/IndexApiService.java @@ -10,6 +10,7 @@ import org.jeecg.modules.travelOrder.entity.TravelOrder; import org.jeecg.modules.travelShopcar.entity.TravelShopcar; import org.jeecg.modules.travelTime.entity.TravelTime; import org.jeecg.modules.travelVolunteer.entity.TravelVolunteer; +import org.jeecg.modules.travelWaresOrder.entity.TravelWaresOrder; public interface IndexApiService { //获取小程序任一文章或服务 @@ -20,6 +21,9 @@ public interface IndexApiService { //获取视频列表 public Result queryVideoList(PageBean pageBean); + //根据id给视频点赞 + public Result addThumpup(String videoId); + //获取文章列表-申遗历程/非遗体验 public Result queryArticleList(PageBean pageBean); @@ -92,6 +96,12 @@ public interface IndexApiService { //查询预约订单列表 public Result queryOrderList(String token, String orderType, PageBean pageBean); + //查询文创好物订单列表 + public Result queryWaresOrderList(String token, PageBean pageBean); + + //创建创好物订单 + public Result addWaresOrder(String token, TravelWaresOrder travelWaresOrder); + //获取文创好物列表 public Result queryWaresList(PageBean pageBean); @@ -116,6 +126,8 @@ public interface IndexApiService { //获取用户个人信息 public Result updateHanHaiMemberById(String token, HanHaiMember hanHaiMember); + //语音播放 + public Result textToAudio(String text); //文创好物-待补充 diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/IndexApiServiceImpl.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/IndexApiServiceImpl.java index f801c78..b2f3596 100644 --- a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/IndexApiServiceImpl.java +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiService/impl/IndexApiServiceImpl.java @@ -6,7 +6,9 @@ import org.jeecg.common.api.vo.Result; import org.jeecg.config.shiro.ShiroRealm; import org.jeecg.modules.apiBean.PageBean; import org.jeecg.modules.apiBean.ShopcarApiBean; +import org.jeecg.modules.apiBean.WaresOrderApiBean; import org.jeecg.modules.apiService.IndexApiService; +import org.jeecg.modules.apiUtils.TxtToSoundUtils; import org.jeecg.modules.hanHaiMember.entity.HanHaiMember; import org.jeecg.modules.hanHaiMember.service.IHanHaiMemberService; import org.jeecg.modules.travelAddress.entity.TravelAddress; @@ -44,6 +46,8 @@ import org.jeecg.modules.travelVolunteer.entity.TravelVolunteer; import org.jeecg.modules.travelVolunteer.service.ITravelVolunteerService; import org.jeecg.modules.travelWares.entity.TravelWares; import org.jeecg.modules.travelWares.service.ITravelWaresService; +import org.jeecg.modules.travelWaresOrder.entity.TravelWaresOrder; +import org.jeecg.modules.travelWaresOrder.service.ITravelWaresOrderService; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -110,6 +114,10 @@ public class IndexApiServiceImpl implements IndexApiService { @Resource private ITravelWaresService travelWaresService; + //商品订单表 + @Resource + private ITravelWaresOrderService travelWaresOrderService; + //收藏表 @Resource private ITravelCollectionService travelCollectionService; @@ -126,7 +134,7 @@ public class IndexApiServiceImpl implements IndexApiService { @Resource private ITravelVolunteerService travelVolunteerService; - + // @@ -170,6 +178,33 @@ public class IndexApiServiceImpl implements IndexApiService { return Result.OK("视频列表", pageList); } + //根据id给视频点赞 + @Override + public Result addThumpup(String videoId) { + TravelVideo video = queryVideoById(videoId); + int newThumpup = video.getVideoThumpup() + 1; + video.setVideoThumpup(newThumpup); + + boolean flag = travelVideoService.saveOrUpdate(video); + if(flag){ + return Result.OK("点赞成功!"); + }else { + return Result.OK("点赞失败!"); + } + + } + + //根据id查询视频信息 + public TravelVideo queryVideoById(String videoId) { + + TravelVideo video = travelVideoService + .lambdaQuery() + .eq(TravelVideo::getId, videoId) + .one(); + + return video; + } + //获取文章列表带分页 @Override public Result queryArticleList(PageBean pageBean) { @@ -791,7 +826,7 @@ public class IndexApiServiceImpl implements IndexApiService { .orderByDesc(TravelOrder::getCreateTime) .page(page); } - return Result.OK("订单列表", pageList); + return Result.OK("预约订单列表", pageList); } //获取文创好物列表 @@ -819,6 +854,60 @@ public class IndexApiServiceImpl implements IndexApiService { return Result.OK("文创好物详情", one); } + //获取文创好物订单列表 + @Override + public Result queryWaresOrderList(String token, PageBean pageBean) { + HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token); + + List waresOrderApiBeans = new ArrayList<>(); + + List travelWaresOrders = travelWaresOrderService + .lambdaQuery() + .eq(TravelWaresOrder::getUserId, hanHaiMember.getId()) + .list(); + + for (TravelWaresOrder travelWaresOrder : travelWaresOrders) { + WaresOrderApiBean waresOrderApiBean = new WaresOrderApiBean(); + + String waresId = travelWaresOrder.getWaresId(); + String addressId = travelWaresOrder.getAddressId(); + + TravelWares wares = travelWaresService + .lambdaQuery() + .eq(TravelWares::getId, waresId) + .one(); + + TravelAddress address = travelAddressService + .lambdaQuery() + .eq(TravelAddress::getId, addressId) + .one(); + + waresOrderApiBean.setTravelWaresOrder(travelWaresOrder); + waresOrderApiBean.setTravelWares(wares); + waresOrderApiBean.setTravelAddress(address); + waresOrderApiBeans.add(waresOrderApiBean); + + } + + return Result.OK("文创好物订单列表", waresOrderApiBeans); + } + + //创建文创好物订单 + @Override + public Result addWaresOrder(String token, TravelWaresOrder travelWaresOrder) { + //HanHaiMember hanHaiMember = shiroRealm.checkUserTokenIsEffectHanHaiOpenId(token); + + travelWaresOrder.setUserId("1830937399972528130"); + travelWaresOrder.setStatus(0); + + boolean flag = travelWaresOrderService.save(travelWaresOrder); + if(flag){ + return Result.OK("创建文创好物订单成功!"); + }else { + return Result.OK("创建文创好物订单失败!"); + } + } + // //获取购物车列表 // @Override // public Result queryShopcarList(String token, PageBean pageBean) { @@ -983,6 +1072,11 @@ public class IndexApiServiceImpl implements IndexApiService { return Result.OK("用户个人信息!", one); } + @Override + public Result textToAudio(String text) { + TxtToSoundUtils.textToSpeech(text); + return null; + } //我要帮助-添加建议 diff --git a/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiUtils/TxtToSoundUtils.java b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiUtils/TxtToSoundUtils.java new file mode 100644 index 0000000..d9eec89 --- /dev/null +++ b/jeecg-boot-module-system/src/main/java/org/jeecg/modules/apiUtils/TxtToSoundUtils.java @@ -0,0 +1,77 @@ +package org.jeecg.modules.apiUtils; + + +import com.jacob.activeX.ActiveXComponent; +import com.jacob.com.Dispatch; +import com.jacob.com.Variant; + + +public class TxtToSoundUtils { + + public static void main(String[] args) { + textToSpeech("余告之曰:其形也,翩若惊鸿,婉若游龙。荣曜秋菊,华茂春松。髣髴兮若轻云之蔽月,飘飖兮若流风之回雪。远而望之,皎若太阳升朝霞;迫而察之,灼若芙蕖出渌波。穠纤得衷,修短合度。肩若削成,腰如约素。延颈秀项,皓质呈露。芳泽无加,铅华弗御。云髻峨峨,修眉联娟。丹唇外朗,皓齿内鲜。明眸善睐,靥辅承权。瓌姿艳逸,仪静体闲。柔情绰态,媚于语言。奇服旷世,骨像应图。披罗衣之璀粲兮,珥瑶碧之华琚。戴金翠之首饰,缀明珠以耀躯。践远游之文履,曳雾绡之轻裾。微幽兰之芳蔼兮,步踟蹰于山隅。于是忽焉纵体,以遨以嬉。左倚采旄,右荫桂旗。攘皓腕于神浒兮,采湍濑之玄芝。"); + System.out.println("生成成功!"); + } + + /** + * 语音转文字并播放 + * + * @param text + */ + public static Dispatch textToSpeech(String text) { + ActiveXComponent ax; + Dispatch spVoice = null; + try { + ax = new ActiveXComponent("Sapi.SpVoice"); + // 运行时输出语音内容 + spVoice = ax.getObject(); + // 音量 0-100 + ax.setProperty("Volume", new Variant(100)); + // 语音朗读速度 -10 到 +10 + ax.setProperty("Rate", new Variant(-2)); + // 执行朗读 + //Dispatch.call(spVoice, "Speak", new Variant(text)); + + // 下面是构建文件流把生成语音文件 + ax = new ActiveXComponent("Sapi.SpFileStream"); + Dispatch spFileStream = ax.getObject(); + + ax = new ActiveXComponent("Sapi.SpAudioFormat"); + Dispatch spAudioFormat = ax.getObject(); + + // 设置音频流格式 + Dispatch.put(spAudioFormat, "Type", new Variant(22)); + // 设置文件输出流格式 + Dispatch.putRef(spFileStream, "Format", spAudioFormat); + // 调用输出 文件流打开方法,创建一个.wav文件 + Dispatch.call(spFileStream, "Open", new Variant("D:\\File\\TestFile.wav"), new Variant(3), new Variant(true)); + // 设置声音对象的音频输出流为输出文件对象 + Dispatch.putRef(spVoice, "AudioOutputStream", spFileStream); + // 设置音量 0到100 + Dispatch.put(spVoice, "Volume", new Variant(100)); + // 设置朗读速度 + Dispatch.put(spVoice, "Rate", new Variant(-2)); + // 开始朗读 + Dispatch.call(spVoice, "Speak", new Variant(text)); + + // 关闭输出文件 + Dispatch.call(spFileStream, "Close"); + Dispatch.putRef(spVoice, "AudioOutputStream", null); + + spAudioFormat.safeRelease(); + spFileStream.safeRelease(); + spVoice.safeRelease(); + ax.safeRelease(); + + + + } catch (Exception e) { + e.printStackTrace(); + }finally { + + } + + return null; + } + +}