From 985e48474a3decdcab3d5d99dc0b5211b381c2a6 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期三, 02 七月 2025 09:19:45 +0800 Subject: [PATCH] Merge branch '2.0' of http://120.76.84.145:10101/gitblit/r/java/HongRuiTang into 2.0 --- ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberService.java | 5 + ruoyi-modules/ruoyi-goods/src/main/resources/mapper/lottery/LotteryEventMapper.xml | 3 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteMemberFallbackFactory.java | 5 + ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/miniapp/AppHomeController.java | 4 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/business/MerLotteryEventController.java | 9 ++- ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/domain/TLotteryEvent.java | 6 ++ ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppCouponController.java | 6 + ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java | 107 ++++++++++++++++++++++++++--------- ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteMemberService.java | 11 +++ ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/ShopLotteryDrawListVo.java | 2 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java | 13 ++++ 11 files changed, 136 insertions(+), 35 deletions(-) diff --git a/ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/domain/TLotteryEvent.java b/ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/domain/TLotteryEvent.java index c1a7146..462f1db 100644 --- a/ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/domain/TLotteryEvent.java +++ b/ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/domain/TLotteryEvent.java @@ -110,6 +110,12 @@ @ApiModelProperty("详情介绍") private String activityContent; /** + * 微信小程序二维码 + */ + @TableField("wx_mini_program_qr_code") + @ApiModelProperty("微信小程序二维码") + private String wxMiniProgramQrCode; + /** * 删除标记 */ @TableField("del_flag") diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteMemberFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteMemberFallbackFactory.java index 75e9145..9be611c 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteMemberFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteMemberFallbackFactory.java @@ -181,6 +181,11 @@ public R editMember(Member member) { return R.fail("修改会员失败:" + throwable.getMessage()); } + + @Override + public String getWeiXinQrCode(String scene, String path) { + return null; + } }; } } diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteMemberService.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteMemberService.java index e3d1e8b..87a4ed5 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteMemberService.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteMemberService.java @@ -302,4 +302,15 @@ */ @PostMapping("/member/editMember") R editMember(@RequestBody Member member); + + + /** + * 获取微信二维码 + * + * @param scene + * @param path + * @return + */ + @PostMapping("/member/getWeiXinQrCode") + public String getWeiXinQrCode(@RequestParam("scene") String scene, @RequestParam("path") String path); } \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/business/MerLotteryEventController.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/business/MerLotteryEventController.java index 2a56d53..d6fc5dc 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/business/MerLotteryEventController.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/business/MerLotteryEventController.java @@ -19,6 +19,7 @@ import com.ruoyi.goods.service.lottery.IUserLotteryEventService; import com.ruoyi.system.api.domain.poji.goods.Goods; import com.ruoyi.system.api.domain.poji.shop.Shop; +import com.ruoyi.system.api.service.RemoteMemberService; import com.ruoyi.system.api.service.RemoteShopService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -55,9 +56,9 @@ @Resource private GoodsService goodsService; - -// @Resource -// private WxMaService wxMaService; + + @Resource + private RemoteMemberService remoteMemberService; @RequestMapping(value = "/getShopLotteryDrawList", method = RequestMethod.POST) @@ -115,6 +116,8 @@ public R editShopLotteryDraw(@RequestBody TLotteryEvent lotteryEvent) { if (lotteryEvent.getId() == null) { lotteryEvent.setId(IdUtils.simpleUUID()); + String weiXinQrCode = remoteMemberService.getWeiXinQrCode("id=" + lotteryEvent.getId() + "&activityType=" + lotteryEvent.getActivityType(), "/pages/turntable/index"); + lotteryEvent.setWxMiniProgramQrCode(weiXinQrCode); } lotteryEvent.setUpdateTime(LocalDateTime.now()); lotteryEvent.setUpdateUserId(SecurityUtils.getUserId()); diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/ShopLotteryDrawListVo.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/ShopLotteryDrawListVo.java index 84bfe63..062692d 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/ShopLotteryDrawListVo.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/ShopLotteryDrawListVo.java @@ -21,4 +21,6 @@ private String startTime; @ApiModelProperty("抽奖结束时间") private String endTime; + @ApiModelProperty("微信小程序二维码") + private String wxMiniProgramQrCode; } diff --git a/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/lottery/LotteryEventMapper.xml b/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/lottery/LotteryEventMapper.xml index af20df2..da46cd2 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/lottery/LotteryEventMapper.xml +++ b/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/lottery/LotteryEventMapper.xml @@ -34,7 +34,8 @@ activity_profile as activityProfile, cover_image as coverImage, DATE_FORMAT(start_time, '%Y-%m-%d %H:%i') as startTime, - DATE_FORMAT(end_time, '%Y-%m-%d %H:%i') as endTime + DATE_FORMAT(end_time, '%Y-%m-%d %H:%i') as endTime, + wx_mini_program_qr_code as wxMiniProgramQrCode from t_lottery_event where del_flag == 0 and shop_id = #{shopId} order by create_time desc diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java index 4e62a27..69dcf2d 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java @@ -413,4 +413,17 @@ memberGiftRecordService.save(memberGiftRecord); return R.ok(); } + + + /** + * 获取微信二维码 + * + * @param scene + * @param path + * @return + */ + @PostMapping("/getWeiXinQrCode") + public String getWeiXinQrCode(@RequestParam("scene") String scene, @RequestParam("path") String path) { + return memberService.getWeiXinQrCode(scene, path); + } } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppCouponController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppCouponController.java index 8ed681c..178fd1c 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppCouponController.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppCouponController.java @@ -115,8 +115,10 @@ vo.setDiscountMoney(coupon.getDiscountMoney()); vo.setValidType(coupon.getValidTimeType()); vo.setValidDays(coupon.getValidDay()); - vo.setValidStartTime(sdf.format(coupon.getValidStartTime())); - vo.setValidEndTime(sdf.format(coupon.getValidEndTime())); + if (2 != coupon.getValidTimeType()) { + vo.setValidStartTime(sdf.format(coupon.getValidStartTime())); + vo.setValidEndTime(sdf.format(coupon.getValidEndTime())); + } vo.setPropagandaPoster(coupon.getPropagandaPoster()); vo.setUseGoods(""); //构建特定商品数据 diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java index 3a21f6d..c8a2f2e 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java @@ -1,4 +1,5 @@ package com.ruoyi.member.service.impl.member; + import cn.binarywang.wx.miniapp.api.WxMaService; import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; import com.alibaba.fastjson.JSONObject; @@ -8,15 +9,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.collect.Lists; -import com.ruoyi.common.core.constant.Constants; -import com.ruoyi.common.core.constant.SecurityConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.DateUtils; -import com.ruoyi.common.core.utils.JwtUtils; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.bean.BeanUtils; -import com.ruoyi.common.core.utils.ip.IpUtils; import com.ruoyi.common.core.utils.uuid.IdUtils; import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.common.security.service.TokenService; @@ -41,22 +38,25 @@ import com.ruoyi.system.api.domain.poji.config.SysTag; import com.ruoyi.system.api.domain.poji.member.Member; import com.ruoyi.system.api.domain.poji.shop.Shop; +import com.ruoyi.system.api.domain.poji.sys.SysFile; import com.ruoyi.system.api.domain.poji.sys.SysUser; import com.ruoyi.system.api.domain.vo.*; import com.ruoyi.system.api.model.AppMiniLoginDto; import com.ruoyi.system.api.model.AppMiniLoginVo; -import com.ruoyi.system.api.model.LoginUser; -import com.ruoyi.system.api.service.RemoteConfigService; -import com.ruoyi.system.api.service.RemoteOrderService; -import com.ruoyi.system.api.service.RemoteShopService; -import com.ruoyi.system.api.service.RemoteUserService; +import com.ruoyi.system.api.service.*; +import io.jsonwebtoken.lang.Assert; import lombok.extern.log4j.Log4j2; +import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.ArrayUtils; import org.apache.http.HttpResponse; import org.apache.http.util.EntityUtils; import org.springframework.stereotype.Service; +import org.springframework.util.FileCopyUtils; +import org.springframework.web.multipart.MultipartFile; +import javax.annotation.Nullable; import javax.annotation.Resource; +import java.io.*; import java.math.BigDecimal; import java.time.LocalDate; import java.time.format.DateTimeFormatter; @@ -125,6 +125,9 @@ @Resource private TokenService tokenService; + + @Resource + private RemoteFileService remoteFileService; /** @@ -294,24 +297,6 @@ appUserRegisterVo.setOpenid(member.getMiniOpenid()); appUserRegisterVo.setUnionid(member.getWxUnionid()); appUserRegisterVo.setSysUser(sysUser); - - LoginUser loginUser = new LoginUser(); - // Jwt存储信息 - Map<String, Object> claimsMap = new HashMap<String, Object>(); - loginUser.setSysUser(sysUser); - String token = IdUtils.fastUUID(); - Long userId = loginUser.getSysUser().getUserId(); - String userName = loginUser.getSysUser().getUserName(); - loginUser.setToken(token); - loginUser.setUserid(userId); - loginUser.setUsername(userName); - loginUser.setIpaddr(IpUtils.getIpAddr()); - tokenService.refreshToken(loginUser); - claimsMap.put(SecurityConstants.USER_KEY, token); - claimsMap.put(SecurityConstants.DETAILS_USER_ID, userId); - claimsMap.put(SecurityConstants.DETAILS_USERNAME, userName); - claimsMap.put(SecurityConstants.LOGIN_FROM, Constants.FROM_MINI_APP); - appUserRegisterVo.setToken(JwtUtils.createToken(claimsMap)); return appUserRegisterVo; } @@ -2320,4 +2305,72 @@ memberTotalService.saveOrUpdate(memberTotal); return R.ok(); } + + + @Override + public String getWeiXinQrCode(String scene, String path) { + try { + File file = wxMaService.getQrcodeService().createWxaCodeUnlimit(scene, path); + FileInputStream input = new FileInputStream(file); + MultipartFile multipartFile = new MyMultipartFile("file", file.getName(), "text/plain", IOUtils.toByteArray(input)); + + SysFile sysFile = remoteFileService.upload(multipartFile).getData(); + return sysFile.getUrl(); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + + public class MyMultipartFile implements MultipartFile { + private final String name; + private final byte[] content; + private String originalFilename; + @Nullable + private String contentType; + + + public MyMultipartFile(String name, @Nullable String originalFilename, @Nullable String contentType, @Nullable byte[] content) { + Assert.hasLength(name, "Name must not be null"); + this.name = name; + this.originalFilename = originalFilename != null ? originalFilename : ""; + this.contentType = contentType; + this.content = content != null ? content : new byte[0]; + } + + public String getName() { + return this.name; + } + + public String getOriginalFilename() { + return this.originalFilename; + } + + @Nullable + public String getContentType() { + return this.contentType; + } + + public boolean isEmpty() { + return this.content.length == 0; + } + + public long getSize() { + return (long) this.content.length; + } + + public byte[] getBytes() throws IOException { + return this.content; + } + + public InputStream getInputStream() throws IOException { + return new ByteArrayInputStream(this.content); + } + + public void transferTo(File dest) throws IOException, IllegalStateException { + FileCopyUtils.copy(this.content, dest); + } + } + } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberService.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberService.java index 382d6ec..21168c3 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberService.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberService.java @@ -400,4 +400,9 @@ * @return */ R addIntegralRecord(Integer integral, Long userId, String orderId); + + /** + * 获取微信二维码 + */ + String getWeiXinQrCode(String scene, String path); } diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/miniapp/AppHomeController.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/miniapp/AppHomeController.java index dd4fd8f..7c5e30d 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/miniapp/AppHomeController.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/miniapp/AppHomeController.java @@ -91,14 +91,14 @@ @ApiOperation(value = "门店详情预约操作【2.0】") public R appointmentTime(@RequestBody AppointmentTimeDto dto) { TShopAppointableTime one = shopAppointableTimeService.getOne(new LambdaQueryWrapper<TShopAppointableTime>().eq(TShopAppointableTime::getShopId, dto.getShopId()) - .last(" and DATE_FORMAT(appointment_time, '%Y-%m-%d %H:%i') = '" + dto.getTime() + "'")); + .last(" and DATE_FORMAT(appointment_time, '%Y-%m-%d %H:%i:%s') = '" + dto.getTime() + "'")); if (null != one) { return R.fail("不能重复预约"); } Long userId = SecurityUtils.getUserId(); one = new TShopAppointableTime(); one.setShopId(dto.getShopId()); - one.setAppointmentTime(LocalDateTime.parse(dto.getTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"))); + one.setAppointmentTime(LocalDateTime.parse(dto.getTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); one.setUserId(userId); one.setStatus(1); one.setCreateTime(LocalDateTime.now()); -- Gitblit v1.7.1