puzhibing
1 天以前 985e48474a3decdcab3d5d99dc0b5211b381c2a6
Merge branch '2.0' of http://120.76.84.145:10101/gitblit/r/java/HongRuiTang into 2.0

# Conflicts:
# ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/miniapp/AppHomeController.java
11个文件已修改
171 ■■■■ 已修改文件
ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/domain/TLotteryEvent.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteMemberFallbackFactory.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteMemberService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/business/MerLotteryEventController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/ShopLotteryDrawListVo.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/resources/mapper/lottery/LotteryEventMapper.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppCouponController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java 107 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/miniapp/AppHomeController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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")
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;
            }
        };
    }
}
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);
}
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());
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;
}
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
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);
    }
}
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("");
        //构建特定商品数据
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);
        }
    }
}
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);
}
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());