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