ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MgtMemberShopNameDto.java
New file @@ -0,0 +1,22 @@ package com.ruoyi.system.api.domain.dto; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * @ClassName MgtMemberShopNameDto * @Description TODO * @Author jqs * @Date 2023/7/26 17:06 * @Version 1.0 */ @Data public class MgtMemberShopNameDto { @ApiModelProperty(value = "商户id") private Long shopId; @ApiModelProperty(value = "商户名称") private String shopName; } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteMemberFallbackFactory.java
@@ -138,6 +138,11 @@ return null; } @Override public R updateMemberShopName(MgtMemberShopNameDto mgtMemberShopNameDto) { return R.fail("更新商户绑定会员:" + throwable.getMessage()); } }; } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteMemberService.java
@@ -215,4 +215,15 @@ */ @PostMapping("/member/getAreaNewMember") public R<Integer> getAreaNewMember(@RequestBody List<Long> shopIdList); /** * @description 更新会员绑定商户名 * @author jqs * @date 2023/7/26 17:07 * @param mgtMemberShopNameDto * @return R */ @PostMapping("/member/updateMemberShopName") public R updateMemberShopName(@RequestBody MgtMemberShopNameDto mgtMemberShopNameDto); } ruoyi-auth/src/main/resources/bootstrap.yml
@@ -14,12 +14,12 @@ nacos: discovery: # 服务注册地址 #server-addr: 47.109.78.184:5000 server-addr: 127.0.0.1:8848 server-addr: 47.109.78.184:5000 #server-addr: 127.0.0.1:8848 config: # 配置中心地址 #server-addr: 47.109.78.184:5000 server-addr: 127.0.0.1:8848 server-addr: 47.109.78.184:5000 #server-addr: 127.0.0.1:8848 # 配置文件格式 file-extension: yml # 共享配置 ruoyi-gateway/src/main/resources/bootstrap.yml
@@ -14,12 +14,12 @@ nacos: discovery: # 服务注册地址 #server-addr: 47.109.78.184:5000 server-addr: 127.0.0.1:8848 server-addr: 47.109.78.184:5000 #server-addr: 127.0.0.1:8848 config: # 配置中心地址 #server-addr: 47.109.78.184:5000 server-addr: 127.0.0.1:8848 server-addr: 47.109.78.184:5000 #server-addr: 127.0.0.1:8848 # 配置文件格式 file-extension: yml # 共享配置 @@ -35,8 +35,8 @@ datasource: ds1: nacos: #server-addr: 47.109.78.184:5000 server-addr: 127.0.0.1:8848 server-addr: 47.109.78.184:5000 #server-addr: 127.0.0.1:8848 dataId: sentinel-ruoyi-gateway groupId: DEFAULT_GROUP data-type: json ruoyi-modules/ruoyi-file/pom.xml
@@ -80,7 +80,24 @@ <artifactId>wechatpay-apache-httpclient</artifactId> <version>0.4.9</version> </dependency> <!-- 小程序统一服务 --> <dependency> <groupId>com.github.binarywang</groupId> <artifactId>weixin-java-miniapp</artifactId> <version>4.5.0</version> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-core</artifactId> <version>5.8.20</version> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-extra</artifactId> <version>5.8.20</version> </dependency> </dependencies> <build> ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/AppConfig.java
New file @@ -0,0 +1,35 @@ package com.ruoyi.file.config; import cn.binarywang.wx.miniapp.api.WxMaService; import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl; import cn.binarywang.wx.miniapp.config.WxMaConfig; import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * @author jqs34 * @ClassName AppConfig * @description: TODO * @date 2023年02月17日 * @version: 1.0 */ @Configuration public class AppConfig { @Bean public WxMaService wxMaService() { WxMaService service = new WxMaServiceImpl(); service.setWxMaConfig(memberWxMaConfig()); return service; } @Bean public WxMaConfig memberWxMaConfig(){ WxMaDefaultConfigImpl config = new WxMaDefaultConfigImpl(); config.setAppid("wxb7f0ea286fc4e535"); config.setSecret("852a2512a6ab559cafc68bae5d4160ac"); return config; } } ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/ActivityCodeService.java
New file @@ -0,0 +1,37 @@ package com.ruoyi.file.service; import me.chanjar.weixin.common.error.WxErrorException; import java.io.FileNotFoundException; /** * @ClassName ActivityCodeService * @Description TODO * @Author jqs * @Date 2023/7/26 19:12 * @Version 1.0 */ public interface ActivityCodeService { /** * @description 生成活动二维码 * @author jqs * @date 2023/7/26 19:09 * @param activityId * @return void */ public String createActivityCode(String activityId); /** * @description 生成活动二维码 * @author jqs * @date 2023/7/26 19:09 * @param activityId * @return void */ public String createActivityCode(String activityId,String backImageUrl) throws WxErrorException, FileNotFoundException; } ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/ActivityCodeServiceImpl.java
New file @@ -0,0 +1,82 @@ package com.ruoyi.file.service; import cn.binarywang.wx.miniapp.api.WxMaQrcodeService; import cn.binarywang.wx.miniapp.api.WxMaService; import cn.hutool.core.img.ImgUtil; import com.ruoyi.file.utils.OBSUploadUtils; import me.chanjar.weixin.common.error.WxErrorException; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.awt.*; import java.io.*; /** * @ClassName ActivityCodeServiceImpl * @Description TODO * @Author jqs * @Date 2023/7/26 19:12 * @Version 1.0 */ @Service public class ActivityCodeServiceImpl implements ActivityCodeService{ @Resource private WxMaService wxMaService; /** * @description 生成活动二维码 * @author jqs * @date 2023/7/26 19:09 * @param activityId * @return void */ @Override public String createActivityCode(String activityId){ WxMaQrcodeService wxMaQrcodeService = wxMaService.getQrcodeService(); String scene = activityId; String page = ""; String filePath = ""; String fileUrl = null; try { File file = wxMaQrcodeService.createWxaCodeUnlimit(scene,page,filePath); fileUrl = OBSUploadUtils.uploadLocalFile(file); } catch (Exception e) { throw new RuntimeException(e); } return fileUrl; } /** * @description 生成活动二维码 * @author jqs * @date 2023/7/26 19:09 * @param activityId * @return void */ @Override public String createActivityCode(String activityId,String backImageUrl) throws WxErrorException, FileNotFoundException { WxMaQrcodeService wxMaQrcodeService = wxMaService.getQrcodeService(); String scene = activityId; String page = ""; String filePath = ""; String fileUrl = null; File file = wxMaQrcodeService.createWxaCodeUnlimit(scene,page,filePath); ByteArrayOutputStream out = new ByteArrayOutputStream(); InputStream codeStream = new FileInputStream(file); InputStream backStream = new FileInputStream(file); // 将图片合成在一起 ImgUtil.pressImage( backStream, // 主图片 out, // 输出图片 ImgUtil.read(codeStream).getScaledInstance(516, 516, Image.SCALE_DEFAULT), //水印图片 0, //x坐标修正值。 默认在中间,偏移量相对于中间偏移 0, //y坐标修正值。 默认在中间,偏移量相对于中间偏移 1.0f ); InputStream inputStream = new ByteArrayInputStream(out.toByteArray()); return fileUrl; } } ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/ISysFileService.java
@@ -17,4 +17,6 @@ * @throws Exception */ public String uploadFile(MultipartFile file) throws Exception; } ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/LocalSysFileServiceImpl.java
@@ -47,4 +47,16 @@ String url = domain + localFilePrefix + name; return url; } /** * @description 生成活动二维码 * @author jqs * @date 2023/7/26 19:09 * @param activityId * @return void */ @Override public void createActivityCode(String activityId){ } } ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/ImgUtils.java
New file @@ -0,0 +1,36 @@ package com.ruoyi.file.utils; import cn.hutool.core.img.ImgUtil; import java.awt.*; import java.io.*; public class ImgUtils { /** * 使用hutool 工具类 */ public void SyntheticImages2(File codeImage,File backImage) throws FileNotFoundException { // 生成的二维码 // ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); // QrCodeUtil.generate("https://hutool.cn/", 516, 516, ImgUtil.IMAGE_TYPE_JPG, outputStream); // 要输出的图片 ByteArrayOutputStream out = new ByteArrayOutputStream(); InputStream codeStream = new FileInputStream(codeImage); InputStream backStream = new FileInputStream(backImage); // 将图片合成在一起 ImgUtil.pressImage( backStream, // 主图片 out, // 输出图片 ImgUtil.read(codeStream).getScaledInstance(516, 516, Image.SCALE_DEFAULT), //水印图片 0, //x坐标修正值。 默认在中间,偏移量相对于中间偏移 0, //y坐标修正值。 默认在中间,偏移量相对于中间偏移 1.0f ); InputStream inputStream = new ByteArrayInputStream(out.toByteArray()); } } ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/OBSUploadUtils.java
@@ -9,6 +9,7 @@ import com.ruoyi.common.core.utils.uuid.IdUtils; import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.io.InputStream; import java.util.Calendar; @@ -86,4 +87,50 @@ return result.getResponse().getErrorResponseAsString(); } public static String uploadLocalFile (File file) throws Exception { // 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。 String bucketName = "hongruitang"; Calendar calendar = Calendar.getInstance(); // 获取当前年 String year = String.valueOf(calendar.get(Calendar.YEAR)); // 获取当前月 String month = String.valueOf(calendar.get(Calendar.MONTH) + 1); // 获取当前日 String day = String.valueOf(calendar.get(Calendar.DATE)); String filePath = year+"/"+month+"/"+day+"/"; String uuid = IdUtils.fastSimpleUUID(); // 创建OSSClient实例。 OSS ossClient = createOss(); PutObjectResult result = null; try { String fileName =file.getName(); System.out.println(fileName + "开始上传"); String prefix = fileName.substring(fileName.lastIndexOf(".")); String objectName = filePath + uuid + prefix; // 创建PutObject请求。 result = ossClient.putObject(bucketName,objectName,file); // 如果上传成功,则返回200。 System.out.println(fileName + "上传返回" + result.getResponse().getStatusCode()); return result.getResponse().getUri(); } catch (OSSException oe) { System.out.println("Caught an OSSException, which means your request made it to OSS, " + "but was rejected with an error response for some reason."); System.out.println("Error Message:" + oe.getErrorMessage()); System.out.println("Error Code:" + oe.getErrorCode()); System.out.println("Request ID:" + oe.getRequestId()); System.out.println("Host ID:" + oe.getHostId()); } catch (ClientException ce) { System.out.println("Caught an ClientException, which means the client encountered " + "a serious internal problem while trying to communicate with OSS, " + "such as not being able to access the network."); System.out.println("Error Message:" + ce.getMessage()); } finally { if (ossClient != null) { ossClient.shutdown(); } } return result.getResponse().getErrorResponseAsString(); } } ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml
@@ -19,12 +19,12 @@ nacos: discovery: # 服务注册地址 #server-addr: 47.109.78.184:5000 server-addr: 127.0.0.1:8848 server-addr: 47.109.78.184:5000 #server-addr: 127.0.0.1:8848 config: # 配置中心地址 #server-addr: 47.109.78.184:5000 server-addr: 127.0.0.1:8848 server-addr: 47.109.78.184:5000 #server-addr: 127.0.0.1:8848 # 配置文件格式 file-extension: yml # 共享配置 ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml
@@ -14,12 +14,12 @@ nacos: discovery: # 服务注册地址 #server-addr: 47.109.78.184:5000 server-addr: 127.0.0.1:8848 server-addr: 47.109.78.184:5000 #server-addr: 127.0.0.1:8848 config: # 配置中心地址 #server-addr: 47.109.78.184:5000 server-addr: 127.0.0.1:8848 server-addr: 47.109.78.184:5000 #server-addr: 127.0.0.1:8848 # 配置文件格式 file-extension: yml # 共享配置 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/RuoYiGoodsApplication.java
@@ -7,6 +7,7 @@ import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ComponentScans; import org.springframework.scheduling.annotation.EnableScheduling; /** * 商品模块 @@ -17,6 +18,7 @@ @EnableCustomSwagger2 @EnableRyFeignClients @SpringBootApplication @EnableScheduling @ComponentScans(value = {@ComponentScan("com.ruoyi.system.api"),@ComponentScan("com.ruoyi.common.security.utils")}) public class RuoYiGoodsApplication { ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MerActivityPageVo.java
@@ -23,11 +23,11 @@ private String activityName; @ApiModelProperty(value = "活动开始时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd") private Date activityStartTime; @ApiModelProperty(value = "活动结束时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd") private Date activityEndTime; @ApiModelProperty(value = "活动状态") ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/scheduler/ActivityScheduler.java
@@ -22,7 +22,7 @@ /** * 活动定时开始 */ @Scheduled(cron="0 */1 * * * ?") @Scheduled(cron="0 * */1 * * ?") private void timingSendCoupon(){ if(schedulerUtils.getSchedulerRun()) { log.info("活动定时任务开始执行"); ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java
@@ -81,6 +81,7 @@ @Resource private RedisService redisService; @Autowired private RedissonClient redissonClient; @@ -596,4 +597,11 @@ public List<MgtActivityListVo> listStaffActivity(StaffActivityListDto staffActivityListDto){ return activityMapper.listStaffActivity(staffActivityListDto); } private void createActivityCode(String activityId){ } } ruoyi-modules/ruoyi-goods/src/main/resources/bootstrap.yml
@@ -14,12 +14,12 @@ nacos: discovery: # 服务注册地址 #server-addr: 47.109.78.184:5000 server-addr: 127.0.0.1:8848 server-addr: 47.109.78.184:5000 #server-addr: 127.0.0.1:8848 config: # 配置中心地址 #server-addr: 47.109.78.184:5000 server-addr: 127.0.0.1:8848 server-addr: 47.109.78.184:5000 #server-addr: 127.0.0.1:8848 # 配置文件格式 file-extension: yml # 共享配置 ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityMapper.xml
@@ -88,7 +88,7 @@ ta.propaganda_poster propagandaPoster, COUNT(ag.activity_id) goodsNum FROM t_activity ta LEFT JOIN t_activity_goods ag ON ta.activity_id = ag.activity_id LEFT JOIN t_activity_goods ag ON ta.activity_id = ag.activity_id AND ag.del_flag = 0 WHERE ta.del_flag = 0 AND shop_flag = 1 OR (shop_flag = 2 AND FIND_IN_SET(#{param.shopId}, ta.applicable_shop) > 0) group by ta.activity_id ORDER BY ta.activity_status ASC,ta.create_time DESC @@ -132,7 +132,7 @@ ta.propaganda_poster propagandaPoster, ta.activity_introduce activityIntroduce FROM t_activity ta WHERE ta.del_flag = 0 AND (ta.shop_flag = 1 OR (ta.shop_flag = 2 AND FIND_IN_SET(#{shopId}, ta.applicable_shop) > 0)) WHERE ta.del_flag = 0 AND ta.activity_status <=1 AND (ta.shop_flag = 1 OR (ta.shop_flag = 2 AND FIND_IN_SET(#{shopId}, ta.applicable_shop) > 0)) group by ta.activity_id ORDER BY ta.activity_status ASC,ta.create_time DESC </select> ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml
@@ -14,12 +14,12 @@ nacos: discovery: # 服务注册地址 #server-addr: 47.109.78.184:5000 server-addr: 127.0.0.1:8848 server-addr: 47.109.78.184:5000 #server-addr: 127.0.0.1:8848 config: # 配置中心地址 #server-addr: 47.109.78.184:5000 server-addr: 127.0.0.1:8848 server-addr: 47.109.78.184:5000 #server-addr: 127.0.0.1:8848 # 配置文件格式 file-extension: yml # 共享配置 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/RuoYiMemberApplication.java
@@ -7,6 +7,7 @@ import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ComponentScans; import org.springframework.scheduling.annotation.EnableScheduling; /** * 系统模块 @@ -17,6 +18,7 @@ @EnableCustomSwagger2 @EnableRyFeignClients @SpringBootApplication @EnableScheduling @ComponentScans(value = {@ComponentScan("com.ruoyi.system.api"),@ComponentScan("com.ruoyi.common.security.utils")}) public class RuoYiMemberApplication { ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java
@@ -317,4 +317,18 @@ Integer count = memberService.getAreaNewMember(shopIdList); return R.ok(count); } /** * @description 更新会员绑定商户名 * @author jqs * @date 2023/7/26 17:07 * @param mgtMemberShopNameDto * @return R */ @PostMapping("/updateMemberShopName") public R updateMemberShopName(@RequestBody MgtMemberShopNameDto mgtMemberShopNameDto) { memberService.updateMemberShopName(mgtMemberShopNameDto); return R.ok(); } } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/AppMemberPrizePageVo.java
@@ -34,4 +34,14 @@ @ApiModelProperty(value = "核销码") private String verifyCode; @ApiModelProperty(value = "核销时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private String verifyTime; @ApiModelProperty(value = "核销店铺id") private Long shopId; @ApiModelProperty(value = "核销店铺") private String verifyShopName; } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/birthday/BirthdayCardServiceImpl.java
@@ -17,7 +17,9 @@ import com.ruoyi.member.service.birthday.BirthdayGiftService; import com.ruoyi.member.service.member.MemberGiftRecordService; import com.ruoyi.system.api.domain.dto.BirthdayGiftSendDto; import com.ruoyi.system.api.domain.dto.MgtBaseBathDto; import com.ruoyi.system.api.domain.poji.member.MemberGiftRecord; import com.ruoyi.system.api.domain.vo.MgtSimpleShopVo; import com.ruoyi.system.api.service.RemoteShopService; import org.springframework.stereotype.Service; @@ -25,6 +27,7 @@ import java.math.BigDecimal; import java.time.LocalDate; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; /** @@ -519,6 +522,9 @@ birthdayGiftSendDto.setCouponId(birthdayGift.getCouponId()); birthdayGiftSendDto.setCouponNumber(birthdayGift.getCouponNumber()); sendGoodsList.add(birthdayGiftSendDto); memberGiftRecord.setCouponId(birthdayGift.getCouponId()); memberGiftRecord.setCouponName(birthdayGift.getCouponName()); memberGiftRecord.setCouponNumber(birthdayGift.getCouponNumber()); break; case 2: // 礼物类型为2,即商品 @@ -527,16 +533,22 @@ birthdayGiftSendDto.setGoodsId(birthdayGift.getGoodsId()); birthdayGiftSendDto.setCouponNumber(birthdayGift.getGoodsNumber()); sendCouponList.add(birthdayGiftSendDto); memberGiftRecord.setGoodsId(birthdayGift.getGoodsId()); memberGiftRecord.setGoodsName(birthdayGift.getGoodsName()); memberGiftRecord.setGoodsNumber(birthdayGift.getGoodsNumber()); break; case 3: // 礼物类型为3,即现金 appBirthdayGiftVo.setGiftName("现金"); appBirthdayGiftVo.setGiftNumber(memberGiftRecord.getMoney().doubleValue()); memberGiftRecord.setMoney(birthdayGift.getMoney()); break; case 4: // 礼物类型为4,即礼品 appBirthdayGiftVo.setGiftName(birthdayGift.getCouponName()); appBirthdayGiftVo.setGiftNumber(birthdayGift.getCouponNumber()); memberGiftRecord.setGiftName(birthdayGift.getGiftName()); memberGiftRecord.setGiftNumber(birthdayGift.getGiftNumber()); break; default: break; @@ -590,6 +602,9 @@ birthdayGiftSendDto.setCouponId(birthdayGift.getCouponId()); birthdayGiftSendDto.setCouponNumber(birthdayGift.getCouponNumber()); sendGoodsList.add(birthdayGiftSendDto); memberGiftRecord.setCouponId(birthdayGift.getCouponId()); memberGiftRecord.setCouponName(birthdayGift.getCouponName()); memberGiftRecord.setCouponNumber(birthdayGift.getCouponNumber()); break; case 2: // 礼物类型为2,即商品 @@ -598,16 +613,22 @@ birthdayGiftSendDto.setGoodsId(birthdayGift.getGoodsId()); birthdayGiftSendDto.setCouponNumber(birthdayGift.getGoodsNumber()); sendCouponList.add(birthdayGiftSendDto); memberGiftRecord.setGoodsId(birthdayGift.getGoodsId()); memberGiftRecord.setGoodsName(birthdayGift.getGoodsName()); memberGiftRecord.setGoodsNumber(birthdayGift.getGoodsNumber()); break; case 3: // 礼物类型为3,即现金 appBirthdayGiftVo.setGiftName("现金"); appBirthdayGiftVo.setGiftNumber(memberGiftRecord.getMoney().doubleValue()); memberGiftRecord.setMoney(birthdayGift.getMoney()); break; case 4: // 礼物类型为4,即礼品 appBirthdayGiftVo.setGiftName(birthdayGift.getCouponName()); appBirthdayGiftVo.setGiftNumber(birthdayGift.getCouponNumber()); memberGiftRecord.setGiftName(birthdayGift.getGiftName()); memberGiftRecord.setGiftNumber(birthdayGift.getGiftNumber()); break; default: break; @@ -637,8 +658,21 @@ public List<AppMemberPrizePageVo> pageAppMemberPrize(Page page, Long userId){ List<AppMemberPrizePageVo> memberPrizePageVoList = birthdayCardMapper.pageAppMemberPrize(page, userId); if(memberPrizePageVoList!=null&&!memberPrizePageVoList.isEmpty()){ HashSet<Long> shopIdSet = new HashSet<>(); for(AppMemberPrizePageVo appMemberPrizePageVo : memberPrizePageVoList){ appMemberPrizePageVo.setVerifyCode("3-"+appMemberPrizePageVo.getPrizeId()); if(appMemberPrizePageVo.getShopId()!=null){ shopIdSet.add(appMemberPrizePageVo.getShopId()); } } String shopJoinedString = String.join(",", shopIdSet.stream().map(Object::toString).collect(Collectors.toList())); MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto(); mgtBaseBathDto.setIds(shopJoinedString); List<MgtSimpleShopVo> simpleShopVoList = remoteShopService.listShopSimpleVoByIds(mgtBaseBathDto).getData(); Map<Long, MgtSimpleShopVo> shopMap = simpleShopVoList.stream() .collect(Collectors.toMap(MgtSimpleShopVo::getShopId, Function.identity())); for(AppMemberPrizePageVo appMemberPrizePageVo : memberPrizePageVoList){ appMemberPrizePageVo.setVerifyShopName(shopMap.get(appMemberPrizePageVo.getShopId().toString()).getShopName()); } } return memberPrizePageVoList; ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java
@@ -791,7 +791,7 @@ if(validTimeType==1){ validStartTime = merCouponPageVo.getValidStartTime(); validEndTime = merCouponPageVo.getValidEndTime(); validTime = DateUtils.dateTime(validStartTime) + '-' + DateUtils.dateTime(validEndTime); validTime = DateUtils.parseDateToStr("yyyy.MM.dd",validStartTime) + '-' + DateUtils.parseDateToStr("yyyy.MM.dd",validEndTime); }else if(validTimeType==2){ validDay = merCouponPageVo.getValidDay(); validTime = "领取之日起" + validDay.toString() + "天"; @@ -849,7 +849,7 @@ if(validTimeType==1){ validStartTime = merCouponPageVo.getValidStartTime(); validEndTime = merCouponPageVo.getValidEndTime(); validTime = DateUtils.dateTime(validStartTime) + '-' + DateUtils.dateTime(validEndTime); validTime = DateUtils.parseDateToStr("yyyy.MM.dd",validStartTime) + '-' + DateUtils.parseDateToStr("yyyy.MM.dd",validEndTime); }else if(validTimeType==2){ validDay = merCouponPageVo.getValidDay(); validTime = "领取之日起" + validDay.toString() + "天"; ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
@@ -4,6 +4,7 @@ import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; 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.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -199,7 +200,26 @@ String errcode = jsonUserPhoneNumber.getString("errcode"); String errmsg = jsonUserPhoneNumber.getString("errmsg"); if (!"0".equals(errcode)) { throw new ServiceException(errmsg); //因为生产测试差异,临时更新token redisService.deleteObject(SecurityConstant.WX_TOKEN); String responseAccessToken = getAccessTokenByWX(); JSONObject jsonAccessToken = JSONObject.parseObject(responseAccessToken); accessToken = jsonAccessToken.getString("access_token"); errmsg = jsonAccessToken.getString("errmsg"); Long expiresIn = jsonAccessToken.getLong("expires_in"); if (StringUtils.isBlank(accessToken)) { throw new ServiceException(errmsg); } else { expiresIn = expiresIn - 100; redisService.setCacheObject(SecurityConstant.WX_TOKEN, accessToken, Long.valueOf(expiresIn), TimeUnit.SECONDS); } responseUserPhoneNumber = getMobileByWX(accessToken, appUserRegisterDto.getMobileCode()); jsonUserPhoneNumber = JSONObject.parseObject(responseUserPhoneNumber); errcode = jsonUserPhoneNumber.getString("errcode"); errmsg = jsonUserPhoneNumber.getString("errmsg"); if (!"0".equals(errcode)) { throw new ServiceException(errmsg); } } String phoneInfo = jsonUserPhoneNumber.getString("phone_info"); JSONObject jsonUserPhoneInfo = JSONObject.parseObject(phoneInfo); @@ -916,6 +936,7 @@ member.setUpdateTime(new Date()); member.setUpdateUserId(mgtMemberRelEditDto.getUserId()); this.saveOrUpdate(member); memberMapper.updateById(member); } } } @@ -1724,6 +1745,7 @@ Long userId = mgtFrozenMemberDto.getId(); Member member = this.getByUserId(userId); member.setFrozenFlag(mgtFrozenMemberDto.getFrozenFlag()); this.saveOrUpdate(member); sysUserService.frozenUser(mgtFrozenMemberDto); } @@ -1897,4 +1919,19 @@ public Integer getAreaNewMember(List<Long> shopIdList){ return memberMapper.getAreaNewMember(shopIdList); } /** * @description 更新会员绑定商户名 * @author jqs * @date 2023/7/26 17:08 * @param mgtMemberShopNameDto * @return void */ @Override public void updateMemberShopName(MgtMemberShopNameDto mgtMemberShopNameDto){ LambdaUpdateWrapper<Member> updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(Member::getRelationShopId,mgtMemberShopNameDto.getShopId()); updateWrapper.set(Member::getRelationShopName,mgtMemberShopNameDto.getShopName()); this.update(updateWrapper); } } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberService.java
@@ -357,4 +357,13 @@ * @return Integer */ Integer getAreaNewMember(List<Long> shopIdList); /** * @description 更新会员绑定商户名 * @author jqs * @date 2023/7/26 17:08 * @param mgtMemberShopNameDto * @return void */ void updateMemberShopName(MgtMemberShopNameDto mgtMemberShopNameDto); } ruoyi-modules/ruoyi-member/src/main/resources/bootstrap.yml
@@ -14,12 +14,12 @@ nacos: discovery: # 服务注册地址 #server-addr: 47.109.78.184:5000 server-addr: 127.0.0.1:8848 server-addr: 47.109.78.184:5000 #server-addr: 127.0.0.1:8848 config: # 配置中心地址 #server-addr: 47.109.78.184:5000 server-addr: 127.0.0.1:8848 server-addr: 47.109.78.184:5000 #server-addr: 127.0.0.1:8848 # 配置文件格式 file-extension: yml # 共享配置 ruoyi-modules/ruoyi-member/src/main/resources/mapper/birthday/BirthdayCardMapper.xml
@@ -24,12 +24,15 @@ WHEN 1 THEN coupon_name WHEN 2 THEN goods_name WHEN 3 THEN gift_name WHEN 4 THEN "现金" WHEN 4 THEN CONCAT("现金",money,"元") END prizeName, "生日卡" prizeFrom, verify_status verifyStatus, create_time createTime create_time createTime, verify_time verifyTime, shop_id shopId FROM t_member_gift_record WHERE del_flag = 0 AND user_id = #{userId} ORDER BY verify_status ASC </select> </mapper> ruoyi-modules/ruoyi-member/src/main/resources/mapper/coupon/CouponMapper.xml
@@ -157,7 +157,7 @@ tc.valid_day validDay, tct.send_count sendCount, CASE tc.use_scope WHEN 1 THEN '全部' WHEN 1 THEN '全部商品' WHEN 2 THEN '指定商品' END useScope, CASE tc.send_type @@ -193,7 +193,7 @@ <if test="param.createEndTime!=null and param.createEndTime!=''"> AND Date(tc.create_time) <= #{param.createEndTime} </if> ORDER BY tc.create_time ORDER BY tc.create_time DESC </select> <select id="listMgtCouponSimpleVo" resultType="com.ruoyi.member.domain.vo.MgtCouponSimpleListVo"> @@ -217,7 +217,7 @@ tc.valid_end_time validEndTime, tc.valid_day validDay, CASE tc.use_scope WHEN 1 THEN '全部' WHEN 1 THEN '全部商品' WHEN 2 THEN '指定商品' END useScope, CASE tc.send_type @@ -253,7 +253,7 @@ <if test="param.createEndTime!=null and param.createEndTime!=''"> AND Date(tc.create_time) <= #{param.createEndTime} </if> ORDER BY tc.create_time ORDER BY tc.create_time DESC </select> <update id="updateCouponTotal"> @@ -271,7 +271,7 @@ tc.valid_day validDay, tct.send_count sendCount, CASE tc.use_scope WHEN 1 THEN '全部' WHEN 1 THEN '全部商品' WHEN 2 THEN '指定商品' END useScope, CASE tc.send_type @@ -305,7 +305,7 @@ tc.valid_day validDay, tct.send_count sendCount, CASE tc.use_scope WHEN 1 THEN '全部' WHEN 1 THEN '全部商品' WHEN 2 THEN '指定商品' END useScope, CASE tc.send_type @@ -331,6 +331,7 @@ <if test="param.auditStatus != null and param.auditStatus != ''"> AND tc.audit_status = #{param.auditStatus} </if> ORDER BY tc.create_time DESC </select> <select id="listUserUnGetCoupon" resultType="java.lang.String"> @@ -368,5 +369,6 @@ #{item} </foreach> </if> ORDER BY tc.create_time DESC </select> </mapper> ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml
@@ -163,7 +163,7 @@ tmt.last_pay_time lastPayTime FROM t_member tm INNER JOIN t_member_total tmt ON tm.member_id = tmt.member_id WHERE tm.relation_shop_id = #{param.shopId} WHERE tm.relation_shop_id = #{param.shopId} AND tm.binding_flag = 1 <if test="param.memberGender != null and param.memberGender != ''"> AND tm.gender = #{param.memberGender} </if> ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberSuggestMapper.xml
@@ -11,6 +11,7 @@ FROM t_member_suggest WHERE del_flag = 0 AND create_user_id = #{param.userId} AND suggest_type = #{param.suggestType} ORDER BY create_time DESC </select> <update id="deleteMemberSuggestTag"> @@ -79,5 +80,6 @@ <if test="param.shopIds!=null and param.shopIds!=''"> AND tms.shop_id IN (#{param.shopIds}) </if> ORDER BY tms.create_time DESC </select> </mapper> ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/RuoYiOrderApplication.java
@@ -7,6 +7,7 @@ import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ComponentScans; import org.springframework.scheduling.annotation.EnableScheduling; /** * 系统模块 @@ -16,6 +17,7 @@ @EnableCustomConfig @EnableCustomSwagger2 @EnableRyFeignClients @EnableScheduling @SpringBootApplication @ComponentScans(value = {@ComponentScan("com.ruoyi.system.api"),@ComponentScan("com.ruoyi.common.security.utils")}) public class RuoYiOrderApplication ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerTotalOrderVo.java
@@ -15,8 +15,6 @@ @Data public class MerTotalOrderVo { @ApiModelProperty(value = "是否代理商0否1是") private Integer agencyFlag; @ApiModelProperty(value = "总订单数") private Integer orderTotal; ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/scheduler/OrderScheduler.java
@@ -25,7 +25,7 @@ /** * 定时检查跟进任务状态 */ @Scheduled(cron="*/10 * * * *") @Scheduled(cron="0 0/5 * * * ?") private void timingCheckMemberCoupon(){ if(schedulerUtils.getSchedulerRun()) { log.info("定时检查订单状态任务开始执行"); ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -3110,12 +3110,6 @@ public MerTotalOrderVo totalMerOrder(MerBaseDto merBaseDto) { MerTotalOrderVo merTotalOrderVo = new MerTotalOrderVo(); merTotalOrderVo = orderMapper.totalMerOrder(merBaseDto.getShopId()); Shop shop = remoteShopService.getShop(merBaseDto.getShopId()).getData(); if(shop.getShopType()==2){ merTotalOrderVo.setAgencyFlag(1); }else{ merTotalOrderVo.setAgencyFlag(0); } return merTotalOrderVo; } ruoyi-modules/ruoyi-order/src/main/resources/bootstrap.yml
@@ -14,12 +14,12 @@ nacos: discovery: # 服务注册地址 #server-addr: 47.109.78.184:5000 server-addr: 127.0.0.1:8848 server-addr: 47.109.78.184:5000 #server-addr: 127.0.0.1:8848 config: # 配置中心地址 #server-addr: 47.109.78.184:5000 server-addr: 127.0.0.1:8848 server-addr: 47.109.78.184:5000 #server-addr: 127.0.0.1:8848 # 配置文件格式 file-extension: yml # 共享配置 ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/ConsumerGoodsMapper.xml
@@ -196,9 +196,9 @@ <select id="getMemberConsumerGoodsTotalVo" resultType="com.ruoyi.order.domain.vo.MerMemberConsumerGoodsTotalVo"> SELECT SUM(CASE WHEN goods_type = 1 THEN service_num - used_num ELSE 0 END) cycleOrder, SUM(CASE WHEN goods_type = 3 THEN service_num - used_num ELSE 0 END) experienceOrder, SUM(CASE WHEN goods_type = 2 THEN service_num - used_num ELSE 0 END) serviceOrder IFNULL(SUM(CASE WHEN goods_type = 1 THEN service_num - used_num ELSE 0 END),0) cycleOrder, IFNULL(SUM(CASE WHEN goods_type = 3 THEN service_num - used_num ELSE 0 END),0) experienceOrder, IFNULL(SUM(CASE WHEN goods_type = 2 THEN service_num - used_num ELSE 0 END),0) serviceOrder FROM t_consumer_goods tcg WHERE tcg.del_flag = 0 AND tcg.user_id = #{userId} AND tcg.shop_id = #{shopId} </select> ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/RuoYiShopApplication.java
@@ -7,6 +7,7 @@ import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ComponentScans; import org.springframework.scheduling.annotation.EnableScheduling; /** * 系统模块 @@ -17,6 +18,7 @@ @EnableCustomSwagger2 @EnableRyFeignClients @SpringBootApplication @EnableScheduling @ComponentScans(value = {@ComponentScan("com.ruoyi.system.api"),@ComponentScan("com.ruoyi.common.security.utils")}) public class RuoYiShopApplication { ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
@@ -193,6 +193,12 @@ //清空归属 shopRelUserService.deleteByShopId(shop.getShopId()); shopStaffService.clearShopStaffRelation(shop.getShopId()); if(!shop.getShopName().equals(mgtEditShopDto.getShopName())){ MgtMemberShopNameDto mgtMemberShopNameDto = new MgtMemberShopNameDto(); mgtMemberShopNameDto.setShopId(mgtEditShopDto.getShopId()); mgtMemberShopNameDto.setShopName(mgtEditShopDto.getShopName()); remoteMemberService.updateMemberShopName(mgtMemberShopNameDto); } }else{ if(shopSame!=null){ throw new ServiceException(AppErrorConstant.SHOP_DOUBLE); @@ -409,6 +415,7 @@ shop.setFrozenFlag(0); } shop.setShopStatus(handelShopStatus(shop.getFrozenFlag(),shop.getCooperativeFlag(),shop.getAuthFlag())); this.saveOrUpdate(shop); } /** ruoyi-modules/ruoyi-shop/src/main/resources/bootstrap.yml
@@ -14,12 +14,12 @@ nacos: discovery: # 服务注册地址 #server-addr: 47.109.78.184:5000 server-addr: 127.0.0.1:8848 server-addr: 47.109.78.184:5000 #server-addr: 127.0.0.1:8848 config: # 配置中心地址 #server-addr: 47.109.78.184:5000 server-addr: 127.0.0.1:8848 server-addr: 47.109.78.184:5000 #server-addr: 127.0.0.1:8848 # 配置文件格式 file-extension: yml # 共享配置 ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml
@@ -427,7 +427,7 @@ SIN(RADIANS(#{param.longitude})) * SIN(RADIANS(ts.shop_latitude)) ) * 6378 as distance FROM t_shop ts FROM t_shop ts WHERE ts.del_flag = 0 AND ts.shop_status = 1 ORDER BY distance ASC LIMIT 1 </select> @@ -492,7 +492,7 @@ shop_id, shop_name FROM t_shop WHERE del_flag = 0 AND FIND_IN_SET(shop_id,#{shopIds}) > 0 WHERE FIND_IN_SET(shop_id,#{shopIds}) > 0 </select> <select id="pageMgtShopByCityCode" resultType="com.ruoyi.system.api.domain.vo.MgtSimpleShopVo"> ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopSuggestMapper.xml
@@ -10,6 +10,7 @@ FROM t_shop_suggest WHERE del_flag = 0 AND shop_id = #{param.shopId} AND create_user_id = #{param.userId} ORDER BY create_time DESC </select> <update id="deleteShopSuggestTag"> @@ -57,5 +58,6 @@ <if test="param.replayEndTime!=null and param.replayEndTime!=''"> AND Date(tss.replay_time) <= #{param.replayEndTime} </if> ORDER BY tss.create_time DESC </select> </mapper> ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/RuoYiSystemApplication.java
@@ -5,6 +5,7 @@ import com.ruoyi.common.security.annotation.EnableCustomConfig; import com.ruoyi.common.security.annotation.EnableRyFeignClients; import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2; import org.springframework.scheduling.annotation.EnableScheduling; /** * 系统模块 @@ -15,6 +16,7 @@ @EnableCustomSwagger2 @EnableRyFeignClients @SpringBootApplication @EnableScheduling public class RuoYiSystemApplication { public static void main(String[] args) ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/sys/SysUserController.java
@@ -34,6 +34,7 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Arrays; import java.util.List; import java.util.Optional; import java.util.Set; @@ -280,6 +281,9 @@ { return error("当前用户不能删除"); } if(Arrays.stream(userIds).anyMatch((element->element.equals(1L)))){ throw new ServiceException("禁止删除admin"); } return toAjax(userService.deleteUserByIds(userIds)); } @@ -424,6 +428,9 @@ @PostMapping("/frozenUser") public R frozenUser(@RequestBody MgtFrozenMemberDto mgtFrozenMemberDto) { if(mgtFrozenMemberDto.getUserId()==1){ throw new ServiceException("禁止删除admin"); } userService.frozenUser(mgtFrozenMemberDto); return R.ok(); } ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml
@@ -14,12 +14,12 @@ nacos: discovery: # 服务注册地址 #server-addr: 47.109.78.184:5000 server-addr: 127.0.0.1:8848 server-addr: 47.109.78.184:5000 #server-addr: 127.0.0.1:8848 config: # 配置中心地址 #server-addr: 47.109.78.184:5000 server-addr: 127.0.0.1:8848 server-addr: 47.109.78.184:5000 #server-addr: 127.0.0.1:8848 # 配置文件格式 file-extension: yml # 共享配置 ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/StaffSuggestMapper.xml
@@ -51,6 +51,7 @@ <if test="param.replayEndTime!=null and param.replayEndTime!=''"> AND Date(tss.replay_time) <= #{param.replayEndTime} </if> ORDER BY tss.create_time DESC </select> <select id="pageStaffShopSuggest" resultType="com.ruoyi.system.domain.vo.StaffSuggestPageVo"> @@ -61,5 +62,6 @@ FROM t_staff_suggest WHERE del_flag = 0 AND create_user_id = #{param.userId} ORDER BY create_time DESC </select> </mapper> ruoyi-visual/ruoyi-monitor/src/main/resources/bootstrap.yml
@@ -14,12 +14,12 @@ nacos: discovery: # 服务注册地址 #server-addr: 47.109.78.184:5000 server-addr: 127.0.0.1:8848 server-addr: 47.109.78.184:5000 #server-addr: 127.0.0.1:8848 config: # 配置中心地址 #server-addr: 47.109.78.184:5000 server-addr: 127.0.0.1:8848 server-addr: 47.109.78.184:5000 #server-addr: 127.0.0.1:8848 # 配置文件格式 file-extension: yml # 共享配置