From 664b43179733548f2f31e3acbcbf1e45dcfdcc44 Mon Sep 17 00:00:00 2001 From: gxwebsoft Date: Mon, 3 Jun 2024 23:26:44 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A1=E3=80=81=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E7=B1=BB=E5=9E=8B=E3=80=81=E5=B0=8F=E7=A8=8B=E5=BA=8F?= =?UTF-8?q?=E6=A0=B8=E9=94=80=E7=A0=81=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../booking/controller/ItemController.java | 110 ++++++++++++++++++ .../com/gxwebsoft/booking/entity/Item.java | 48 ++++++++ .../gxwebsoft/booking/mapper/ItemMapper.java | 37 ++++++ .../booking/mapper/xml/ItemMapper.xml | 48 ++++++++ .../gxwebsoft/booking/param/ItemParam.java | 44 +++++++ .../booking/service/ItemService.java | 42 +++++++ .../booking/service/impl/ItemServiceImpl.java | 47 ++++++++ .../common/core/utils/RequestUtil.java | 19 +++ .../shop/controller/OrderController.java | 45 ++++++- .../shop/service/impl/OrderServiceImpl.java | 15 ++- .../gxwebsoft/generator/BookingGenerator.java | 3 +- 11 files changed, 450 insertions(+), 8 deletions(-) create mode 100644 src/main/java/com/gxwebsoft/booking/controller/ItemController.java create mode 100644 src/main/java/com/gxwebsoft/booking/entity/Item.java create mode 100644 src/main/java/com/gxwebsoft/booking/mapper/ItemMapper.java create mode 100644 src/main/java/com/gxwebsoft/booking/mapper/xml/ItemMapper.xml create mode 100644 src/main/java/com/gxwebsoft/booking/param/ItemParam.java create mode 100644 src/main/java/com/gxwebsoft/booking/service/ItemService.java create mode 100644 src/main/java/com/gxwebsoft/booking/service/impl/ItemServiceImpl.java diff --git a/src/main/java/com/gxwebsoft/booking/controller/ItemController.java b/src/main/java/com/gxwebsoft/booking/controller/ItemController.java new file mode 100644 index 0000000..a592234 --- /dev/null +++ b/src/main/java/com/gxwebsoft/booking/controller/ItemController.java @@ -0,0 +1,110 @@ +package com.gxwebsoft.booking.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.booking.service.ItemService; +import com.gxwebsoft.booking.entity.Item; +import com.gxwebsoft.booking.param.ItemParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 项目类型控制器 + * + * @author 科技小王子 + * @since 2024-06-03 13:43:02 + */ +@Api(tags = "项目类型管理") +@RestController +@RequestMapping("/api/booking/item") +public class ItemController extends BaseController { + @Resource + private ItemService itemService; + + @ApiOperation("分页查询项目类型") + @GetMapping("/page") + public ApiResult> page(ItemParam param) { + // 使用关联查询 + return success(itemService.pageRel(param)); + } + + @ApiOperation("查询全部项目类型") + @GetMapping() + public ApiResult> list(ItemParam param) { + // 使用关联查询 + return success(itemService.listRel(param)); + } + + @PreAuthorize("hasAuthority('booking:item:list')") + @ApiOperation("根据id查询项目类型") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(itemService.getByIdRel(id)); + } + + @ApiOperation("添加项目类型") + @PostMapping() + public ApiResult save(@RequestBody Item item) { + if (itemService.save(item)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改项目类型") + @PutMapping() + public ApiResult update(@RequestBody Item item) { + if (itemService.updateById(item)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除项目类型") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (itemService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加项目类型") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (itemService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改项目类型") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(itemService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除项目类型") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (itemService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/booking/entity/Item.java b/src/main/java/com/gxwebsoft/booking/entity/Item.java new file mode 100644 index 0000000..1001ff7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/booking/entity/Item.java @@ -0,0 +1,48 @@ +package com.gxwebsoft.booking.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 项目类型 + * + * @author 科技小王子 + * @since 2024-06-03 13:43:02 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Item对象", description = "项目类型") +@TableName("booking_item") +public class Item implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "项目类型") + private String name; + + @ApiModelProperty(value = "项目备注") + private String comments; + + @ApiModelProperty(value = "状态") + private Integer status; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private LocalDateTime createTime; + +} diff --git a/src/main/java/com/gxwebsoft/booking/mapper/ItemMapper.java b/src/main/java/com/gxwebsoft/booking/mapper/ItemMapper.java new file mode 100644 index 0000000..2656a8e --- /dev/null +++ b/src/main/java/com/gxwebsoft/booking/mapper/ItemMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.booking.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.booking.entity.Item; +import com.gxwebsoft.booking.param.ItemParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 项目类型Mapper + * + * @author 科技小王子 + * @since 2024-06-03 13:43:02 + */ +public interface ItemMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ItemParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ItemParam param); + +} diff --git a/src/main/java/com/gxwebsoft/booking/mapper/xml/ItemMapper.xml b/src/main/java/com/gxwebsoft/booking/mapper/xml/ItemMapper.xml new file mode 100644 index 0000000..4e1fa06 --- /dev/null +++ b/src/main/java/com/gxwebsoft/booking/mapper/xml/ItemMapper.xml @@ -0,0 +1,48 @@ + + + + + + + SELECT a.* + FROM booking_item a + + + AND a.id = #{param.id} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/booking/param/ItemParam.java b/src/main/java/com/gxwebsoft/booking/param/ItemParam.java new file mode 100644 index 0000000..b773aea --- /dev/null +++ b/src/main/java/com/gxwebsoft/booking/param/ItemParam.java @@ -0,0 +1,44 @@ +package com.gxwebsoft.booking.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 项目类型查询参数 + * + * @author 科技小王子 + * @since 2024-06-03 13:43:02 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ItemParam对象", description = "项目类型查询参数") +public class ItemParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "项目类型") + private String name; + + @ApiModelProperty(value = "项目备注") + private String comments; + + @ApiModelProperty(value = "状态") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + +} diff --git a/src/main/java/com/gxwebsoft/booking/service/ItemService.java b/src/main/java/com/gxwebsoft/booking/service/ItemService.java new file mode 100644 index 0000000..b55c0de --- /dev/null +++ b/src/main/java/com/gxwebsoft/booking/service/ItemService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.booking.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.booking.entity.Item; +import com.gxwebsoft.booking.param.ItemParam; + +import java.util.List; + +/** + * 项目类型Service + * + * @author 科技小王子 + * @since 2024-06-03 13:43:02 + */ +public interface ItemService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ItemParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ItemParam param); + + /** + * 根据id查询 + * + * @param id ID + * @return Item + */ + Item getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/booking/service/impl/ItemServiceImpl.java b/src/main/java/com/gxwebsoft/booking/service/impl/ItemServiceImpl.java new file mode 100644 index 0000000..b85b2a6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/booking/service/impl/ItemServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.booking.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.booking.mapper.ItemMapper; +import com.gxwebsoft.booking.service.ItemService; +import com.gxwebsoft.booking.entity.Item; +import com.gxwebsoft.booking.param.ItemParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 项目类型Service实现 + * + * @author 科技小王子 + * @since 2024-06-03 13:43:02 + */ +@Service +public class ItemServiceImpl extends ServiceImpl implements ItemService { + + @Override + public PageResult pageRel(ItemParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ItemParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public Item getByIdRel(Integer id) { + ItemParam param = new ItemParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/utils/RequestUtil.java b/src/main/java/com/gxwebsoft/common/core/utils/RequestUtil.java index 333aabb..a216411 100644 --- a/src/main/java/com/gxwebsoft/common/core/utils/RequestUtil.java +++ b/src/main/java/com/gxwebsoft/common/core/utils/RequestUtil.java @@ -119,4 +119,23 @@ public class RequestUtil { } return null; } + + public String getMpOrderQrCode(String orderNo) { + String path = "/wx-login/getOrderQRCode/"; + try { + // 链式构建请求 + System.out.println("path = " + host.concat(path).concat(orderNo)); + final String body = HttpRequest.get(host.concat(path).concat(orderNo)) + .header("Authorization", ACCESS_TOKEN) + .header("tenantId", TENANT_ID) + .timeout(20000) + .execute().body(); + final JSONObject jsonObject = JSONObject.parseObject(body); + final String qrCode = jsonObject.getString("message"); + return qrCode; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } } diff --git a/src/main/java/com/gxwebsoft/shop/controller/OrderController.java b/src/main/java/com/gxwebsoft/shop/controller/OrderController.java index 5408a22..8de058a 100644 --- a/src/main/java/com/gxwebsoft/shop/controller/OrderController.java +++ b/src/main/java/com/gxwebsoft/shop/controller/OrderController.java @@ -2,10 +2,15 @@ package com.gxwebsoft.shop.controller; import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.extension.api.R; import com.gxwebsoft.booking.entity.Card; import com.gxwebsoft.booking.entity.UserCard; import com.gxwebsoft.booking.param.UserCardParam; @@ -13,7 +18,10 @@ import com.gxwebsoft.booking.service.CardService; import com.gxwebsoft.booking.service.UserCardService; import com.gxwebsoft.common.core.security.JwtUtil; import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.utils.RequestUtil; +import com.gxwebsoft.common.core.utils.WxUtil; import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.Role; import com.gxwebsoft.shop.entity.OrderInfo; import com.gxwebsoft.shop.service.OrderGoodsService; import com.gxwebsoft.shop.service.OrderInfoService; @@ -29,14 +37,23 @@ import com.gxwebsoft.common.system.entity.User; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.aspectj.weaver.ast.Or; +import org.springframework.http.HttpRequest; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; +import java.io.File; import java.math.BigDecimal; +import java.util.Arrays; +import java.util.HashMap; import java.util.List; +import java.util.Set; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +import static com.gxwebsoft.common.core.constants.RedisConstants.ACCESS_TOKEN_KEY; /** * 订单控制器 @@ -58,6 +75,8 @@ public class OrderController extends BaseController { private UserCardService userCardService; @Resource private CardService cardService; + @Resource + private RequestUtil requestUtil; @ApiOperation("分页查询订单") @GetMapping("/page") @@ -81,6 +100,31 @@ public class OrderController extends BaseController { return success(orderService.getByIdRel(id)); } + @ApiOperation("根据orderNo查询订单") + @GetMapping("/getByOrderNo/{orderNo}") + public ApiResult getByOrderNo(@PathVariable("orderNo") String orderNo){ + final User loginUser = getLoginUser(); + if(loginUser == null){ + return fail("请先登录",null); + } + +// final Set collect = loginUser.getRoles().stream().map(Role::getRoleCode).collect(Collectors.toSet()); +// final boolean superAdmin = Arrays.asList(collect).contains("superAdmin"); +// if(superAdmin){ +// +// } + + final Order order = orderService.getByOutTradeNo(orderNo); + if(order != null){ + final List orderInfoList = orderInfoService.list(new LambdaQueryWrapper().eq(OrderInfo::getOrderId, order.getOrderId())); + order.setOrderInfo(orderInfoList); + // 生成订单核销码 + requestUtil.setTenantId(order.getTenantId().toString()); + order.setQrcode(requestUtil.getMpOrderQrCode(orderNo)); + } + return success(order); + } + @PreAuthorize("hasAuthority('sys:order:save')") @ApiOperation("下单") @PostMapping() @@ -266,5 +310,4 @@ public class OrderController extends BaseController { } return fail("删除失败"); } - } diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/OrderServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/OrderServiceImpl.java index 6ba5198..91b1080 100644 --- a/src/main/java/com/gxwebsoft/shop/service/impl/OrderServiceImpl.java +++ b/src/main/java/com/gxwebsoft/shop/service/impl/OrderServiceImpl.java @@ -3,6 +3,7 @@ package com.gxwebsoft.shop.service.impl; import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -14,6 +15,7 @@ import com.gxwebsoft.booking.service.UserCardService; import com.gxwebsoft.common.core.config.ConfigProperties; import com.gxwebsoft.common.core.exception.BusinessException; import com.gxwebsoft.common.core.security.JwtUtil; +import com.gxwebsoft.common.core.utils.CommonUtil; import com.gxwebsoft.common.core.utils.RedisUtil; import com.gxwebsoft.common.core.utils.RequestUtil; import com.gxwebsoft.common.core.web.ApiResult; @@ -37,6 +39,7 @@ import com.wechat.pay.java.service.payments.jsapi.model.Amount; import com.wechat.pay.java.service.payments.jsapi.model.Payer; import com.wechat.pay.java.service.payments.jsapi.model.PrepayRequest; import com.wechat.pay.java.service.payments.jsapi.model.PrepayWithRequestPaymentResponse; +import io.swagger.annotations.ApiOperation; import org.springframework.beans.BeansException; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.*; @@ -45,10 +48,12 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.client.RestTemplate; import javax.annotation.Resource; import java.beans.Beans; +import java.io.File; import java.math.BigDecimal; import java.util.HashMap; import java.util.List; @@ -73,9 +78,7 @@ public class OrderServiceImpl extends ServiceImpl implements @Resource private ConfigProperties config; @Resource - private SettingService settingService; - @Resource - private UserService userService; + private RequestUtil requestUtil; @Resource private OrderService orderService; @Resource @@ -158,10 +161,10 @@ public class OrderServiceImpl extends ServiceImpl implements if (!CollectionUtils.isEmpty(list)) { final OrderInfo orderInfo = list.get(0); final int i = orderInfo.getDateTime().compareTo(DateUtil.today()); - System.out.println("order = " + orderInfo.getDateTime()); - System.out.println("DateUtil.today() = " + DateUtil.today()); - System.out.println("iiiiiiii = " + i); } + // 生成订单核销码 + requestUtil.setTenantId(order.getTenantId().toString()); + order.setQrcode(requestUtil.getMpOrderQrCode(order.getOrderNo())); return order; } return null; diff --git a/src/test/java/com/gxwebsoft/generator/BookingGenerator.java b/src/test/java/com/gxwebsoft/generator/BookingGenerator.java index 23fb8d2..af28b79 100644 --- a/src/test/java/com/gxwebsoft/generator/BookingGenerator.java +++ b/src/test/java/com/gxwebsoft/generator/BookingGenerator.java @@ -60,7 +60,8 @@ public class BookingGenerator { // "booking_user_coupon", // "booking_user_invoice", // "booking_user_card", - "booking_user_card_log" +// "booking_user_card_log", + "booking_item" }; // 需要去除的表前缀 private static final String[] TABLE_PREFIX = new String[]{