ruoyi-auth/src/main/java/com/ruoyi/auth/controller/QwH5Controller.java
@@ -1,5 +1,6 @@ package com.ruoyi.auth.controller; import com.alibaba.fastjson.JSONObject; import com.ruoyi.auth.service.QywxInnerService; import com.ruoyi.auth.service.SysLoginService; import com.ruoyi.common.core.domain.R; @@ -59,11 +60,11 @@ @ApiOperation("通过code获取访问用户登录") public R<OauthUserVo> oauthUser(@ApiParam(value = "成员授权获取到的code", required = true) @RequestParam("code") String code) throws IOException { // 通过code获取访问用户敏感信息 //JSONObject result = qywxInnerService.getOauthUser(code); //QwUserDetailDto qwUserDetail = JSONObject.parseObject(result.toJSONString(), QwUserDetailDto.class); QwUserDetailDto qwUserDetail = new QwUserDetailDto(); qwUserDetail.setMobile("13882237106"); qwUserDetail.setUserid("146"); JSONObject result = qywxInnerService.getOauthUser(code); QwUserDetailDto qwUserDetail = JSONObject.parseObject(result.toJSONString(), QwUserDetailDto.class); //QwUserDetailDto qwUserDetail = new QwUserDetailDto(); //qwUserDetail.setMobile("13882237106"); //qwUserDetail.setUserid("146"); // 1、查数据库获取人员 QwH5LoginVo qwH5LoginVo = sysLoginService.qwH5Login(qwUserDetail); // 2、生成Token ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java
@@ -1,17 +1,7 @@ package com.ruoyi.common.security.service; import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeUnit; import javax.servlet.http.HttpServletRequest; import com.ruoyi.common.core.constant.Constants; import com.ruoyi.system.api.model.AppMiniLoginVo; import com.ruoyi.system.api.model.OauthUserVo; import com.ruoyi.system.api.model.QwH5LoginVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.ruoyi.common.core.constant.CacheConstants; import com.ruoyi.common.core.constant.Constants; import com.ruoyi.common.core.constant.SecurityConstants; import com.ruoyi.common.core.utils.JwtUtils; import com.ruoyi.common.core.utils.ServletUtils; @@ -20,7 +10,17 @@ import com.ruoyi.common.core.utils.uuid.IdUtils; import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.system.api.model.AppMiniLoginVo; import com.ruoyi.system.api.model.LoginUser; import com.ruoyi.system.api.model.OauthUserVo; import com.ruoyi.system.api.model.QwH5LoginVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.servlet.http.HttpServletRequest; import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeUnit; /** * token验证处理 @@ -81,6 +81,8 @@ // 接口返回信息 Map<String, Object> rspMap = new HashMap<String, Object>(); //用户为空只返回openid rspMap.put("mobile",""); rspMap.put("access_token", ""); if(appMiniLoginVo.getSysUser()!=null){ loginUser.setSysUser(appMiniLoginVo.getSysUser()); String token = IdUtils.fastUUID(); @@ -95,11 +97,13 @@ claimsMap.put(SecurityConstants.DETAILS_USER_ID, userId); claimsMap.put(SecurityConstants.DETAILS_USERNAME, userName); claimsMap.put(SecurityConstants.LOGIN_FROM, Constants.FROM_MINI_APP); rspMap.put("access_token", JwtUtils.createToken(claimsMap)); rspMap.put("expires_in", EXPIRE_TIME); } if(StringUtils.isNotBlank(appMiniLoginVo.getMobile())){ rspMap.put("mobile",appMiniLoginVo.getMobile() ); }else{ rspMap.put("mobile",""); } rspMap.put("access_token", JwtUtils.createToken(claimsMap)); rspMap.put("expires_in", EXPIRE_TIME); } rspMap.put("wx_unionid", appMiniLoginVo.getWxUnionid()); rspMap.put("mini_openid", appMiniLoginVo.getMiniOpenid()); ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityMapper.xml
@@ -89,7 +89,7 @@ COUNT(ag.activity_id) goodsNum FROM t_activity ta LEFT JOIN t_activity_goods ag ON ta.activity_id = ag.activity_id WHERE ta.del_flag = 0 AND FIND_IN_SET(#{param.shopId}, ta.applicable_shop) > 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 </select> ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppCouponController.java
@@ -3,7 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.member.domain.vo.AppUnGetCouponPageVo; import com.ruoyi.member.domain.vo.AppGetAbleCouponPageVo; import com.ruoyi.member.service.coupon.CouponService; import com.ruoyi.member.service.member.MemberService; import com.ruoyi.system.api.domain.dto.AppPageDto; @@ -25,7 +25,7 @@ * @Date 2023/7/9 11:44 * @Version 1.0 */ @Api(value = "小程序配置相关接口", tags = "小程序配置相关接口", description = "小程序配置相关接口") @Api(value = "小程序优惠券相关接口", tags = "小程序优惠券相关接口", description = "小程序优惠券相关接口") @RestController @RequestMapping("/app/coupon") public class AppCouponController { @@ -39,7 +39,7 @@ @RequestMapping(value = "/pageAppUserGetAbleCoupon", method = RequestMethod.POST) @ApiOperation(value = "用户分页获取可领取优惠券列表") public R<Page<AppUnGetCouponPageVo>> pagePlatformMerCoupon(@RequestBody AppPageDto appPageDto) { public R<Page<AppGetAbleCouponPageVo>> pagePlatformMerCoupon(@RequestBody AppPageDto appPageDto) { Long userId = SecurityUtils.getUserId(); if(userId!=null){ Member member = memberService.getByUserId(userId); @@ -47,10 +47,10 @@ } } appPageDto.setUserId(userId); Page<AppUnGetCouponPageVo> page = new Page<>(); Page<AppGetAbleCouponPageVo> page = new Page<>(); page.setSize(appPageDto.getPageSize()); page.setCurrent(appPageDto.getPageNum()); List<AppUnGetCouponPageVo> unGetCouponPageVoList = couponService.pageAppUserGetAbleCoupon(page,appPageDto); List<AppGetAbleCouponPageVo> unGetCouponPageVoList = couponService.pageAppUserGetAbleCoupon(page,appPageDto); return R.ok(page.setRecords(unGetCouponPageVoList)); } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppMemberController.java
@@ -34,7 +34,7 @@ * @date 2023年04月19日 * @version: 1.0 */ @Api(value = "小程序配置相关接口", tags = "小程序配置相关接口", description = "小程序配置相关接口") @Api(value = "小程序会员相关接口", tags = "小程序会员相关接口", description = "小程序会员相关接口") @RestController @RequestMapping("/app/member") public class AppMemberController { ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerCouponEditDto.java
@@ -27,9 +27,12 @@ @ApiModelProperty("优惠券名称") private String couponName; @ApiModelProperty(value = "发送类型1.手动领取2.全部用户3.会员用户4非会员用户5自定义") @ApiModelProperty(value = "发送类型1.手动领取2.指定发放") private Integer sendType; @ApiModelProperty(value = "发送对象2.全部用户3.会员用户4非会员用户5自定义") private Integer sendTarget; @ApiModelProperty("发送时间类型1立即2定时") private Integer sendTimeType; ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/AppGetAbleCouponPageVo.java
File was renamed from ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/AppUnGetCouponPageVo.java @@ -13,7 +13,7 @@ * @Version 1.0 */ @Data public class AppUnGetCouponPageVo { public class AppGetAbleCouponPageVo { @ApiModelProperty(value = "优惠券id") ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerCouponGetVo.java
@@ -28,9 +28,12 @@ @ApiModelProperty("优惠券名称") private String couponName; @ApiModelProperty(value = "发送类型1.手动领取2.全部用户3.会员用户4非会员用户5自定义") @ApiModelProperty(value = "发送类型1.手动领取2.指定发放") private Integer sendType; @ApiModelProperty(value = "发送对象2.全部用户3.会员用户4非会员用户5自定义") private Integer sendTarget; @ApiModelProperty("发送时间类型1立即2定时") private Integer sendTimeType; ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerCouponPageVo.java
@@ -55,6 +55,9 @@ @ApiModelProperty(value = "发送对象") private String sendTarget; @ApiModelProperty(value = "领取限制数量 0为不限") private Integer limitNumber; @ApiModelProperty(value = "门槛金额",hidden = true) private BigDecimal moneyThreshold; ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtTotalMemberTotalVo.java
@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.List; /** @@ -40,9 +41,15 @@ @ApiModelProperty(value = "男人") private Integer manTotal; @ApiModelProperty(value = "男人比例") private BigDecimal manPercent; @ApiModelProperty(value = "女人") private Integer womenTotal; @ApiModelProperty(value = "女人比例") private BigDecimal womenPercent; @ApiModelProperty(value = "会员年龄key") private String[] ageKey; ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/coupon/CouponMapper.java
@@ -95,4 +95,7 @@ * @return List<Long> */ List<String> listUserUnGetCoupon(@Param("userId")Long userId); } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/coupon/CouponService.java
@@ -168,5 +168,5 @@ * @param appPageDto * @return List<AppUnGetCouponPageVo> */ List<AppUnGetCouponPageVo> pageAppUserGetAbleCoupon(Page page, AppPageDto appPageDto); List<AppGetAbleCouponPageVo> pageAppUserGetAbleCoupon(Page page, AppPageDto appPageDto); } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/birthday/BirthdayCardServiceImpl.java
@@ -101,8 +101,8 @@ } // 设置创建时间 birthdayCard.setCreateTime(new Date()); // 如果店铺ID不为空,则进行相关设置 if(mgtBirthdayEditDto.getShopId()!=null){ // 如果店铺ID为空,则进行相关设置 if(mgtBirthdayEditDto.getShopId()==null){ birthdayCard.setAreaFlag(mgtBirthdayEditDto.getAreaFlag()); if(mgtBirthdayEditDto.getAreaFlag()==2){ birthdayCard.setDesignatedArea(mgtBirthdayEditDto.getDesignatedArea()); ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java
@@ -191,6 +191,10 @@ MerCouponGetVo merCouponGetVo = new MerCouponGetVo(); Coupon coupon = this.getById(couponId); BeanUtils.copyProperties(coupon, merCouponGetVo); if(merCouponGetVo.getSendType()>1){ merCouponGetVo.setSendType(2); merCouponGetVo.setSendTarget(merCouponGetVo.getSendType()); } //判断优惠券是否为指定商品 if(coupon.getUseScope()==2){ String relGoodsIds = coupon.getRelGoodsIds(); @@ -757,6 +761,9 @@ coupon.setCouponType(merCouponEditDto.getCouponType()); coupon.setCouponName(merCouponEditDto.getCouponName()); coupon.setSendType(merCouponEditDto.getSendType()); if(merCouponEditDto.getSendType()!=1){ coupon.setSendType(merCouponEditDto.getSendTarget()); } coupon.setSendTimeType(merCouponEditDto.getSendTimeType()); coupon.setSendTime(merCouponEditDto.getSendTime()); coupon.setMoneyThreshold(merCouponEditDto.getMoneyThreshold()); @@ -886,9 +893,10 @@ * @return List<AppUnGetCouponPageVo> */ @Override public List<AppUnGetCouponPageVo> pageAppUserGetAbleCoupon(Page page, AppPageDto appPageDto){ public List<AppGetAbleCouponPageVo> pageAppUserGetAbleCoupon(Page page, AppPageDto appPageDto){ //获取当前已领取完优惠券 List<String> unGetList = couponMapper.listUserUnGetCoupon(appPageDto.getUserId()); //List<AppGetAbleCouponPageVo> getAbleCouponPageVoList = couponMapper.getAbleCouponPageVoList( unGetList); return null; } } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
@@ -240,12 +240,14 @@ member.setCreateTime(new Date()); member.setMobile(mobile); initMemberTotal(memberId); log.info("sysUser01-----------------" + sysUser.toString()); } else { sysUser = sysUserService.getSysUser(member.getUserId()).getData(); log.info("sysUser02-----------------" + sysUser.toString()); } member.setWxUnionid(appUserRegisterDto.getWxUnionid()); member.setMiniOpenid(appUserRegisterDto.getMiniOpenid()); log.info("member-----------------" + member.toString()); log.info("member02-----------------" + member.toString()); this.saveOrUpdate(member); appUserRegisterVo.setMobile(mobile); appUserRegisterVo.setNickName(member.getNickName()); @@ -1070,6 +1072,31 @@ // 获取总会员数和不同年龄段的会员数 MgtTotalMemberTotalVo mgtTotalMemberTotalVo = memberMapper.getTotalMemberTotal(mgtBaseShopDto); MgtAgeTotalVo mgtAgeTotalVo = memberMapper.getTotalMemberTotalAge(mgtBaseShopDto); Integer manTotal = mgtAgeTotalVo.getManTotal(); Integer womenTotal = mgtAgeTotalVo.getWomenTotal(); mgtTotalMemberTotalVo.setManTotal(manTotal); mgtTotalMemberTotalVo.setWomenTotal(womenTotal); Integer personTotal = manTotal + womenTotal; BigDecimal manTotalBig = new BigDecimal(manTotal); BigDecimal personTotalBig = new BigDecimal(personTotal); BigDecimal bigTen = new BigDecimal("100.00"); BigDecimal menPercent = new BigDecimal("100.00"); BigDecimal womenPercent = new BigDecimal("100.00"); if(manTotal==0&&womenTotal==0){ menPercent = new BigDecimal("50.00"); womenPercent = new BigDecimal("50.00"); }else if(manTotal==0&&womenTotal>0){ menPercent = new BigDecimal("0.00"); womenPercent = new BigDecimal("100.00"); }else if(manTotal>0&&womenTotal==0){ menPercent = new BigDecimal("100.00"); womenPercent = new BigDecimal("0.00"); }else{ menPercent = manTotalBig.divide(personTotalBig).setScale(0,BigDecimal.ROUND_HALF_UP); womenPercent = bigTen.subtract(menPercent); } mgtTotalMemberTotalVo.setManPercent(menPercent); mgtTotalMemberTotalVo.setWomenPercent(womenPercent); // 年龄段数组 String[] ageKey = {"<20", "21-30", "31-40", "41-50", ">50"}; // 不同年龄段的会员数数组 @@ -1410,8 +1437,21 @@ BigDecimal manTotalBig = new BigDecimal(manTotal); BigDecimal personTotalBig = new BigDecimal(personTotal); BigDecimal bigTen = new BigDecimal("100.00"); BigDecimal menPercent = manTotalBig.divide(personTotalBig).setScale(0,BigDecimal.ROUND_HALF_UP); BigDecimal womenPercent = bigTen.subtract(menPercent); BigDecimal menPercent = new BigDecimal("100.00"); BigDecimal womenPercent = new BigDecimal("100.00"); if(manTotal==0&&womenTotal==0){ menPercent = new BigDecimal("50.00"); womenPercent = new BigDecimal("50.00"); }else if(manTotal==0&&womenTotal>0){ menPercent = new BigDecimal("0.00"); womenPercent = new BigDecimal("100.00"); }else if(manTotal>0&&womenTotal==0){ menPercent = new BigDecimal("100.00"); womenPercent = new BigDecimal("0.00"); }else{ menPercent = manTotalBig.divide(personTotalBig).setScale(0,BigDecimal.ROUND_HALF_UP); womenPercent = bigTen.subtract(menPercent); } memberFixedTotalVo.setManPercent(menPercent); memberFixedTotalVo.setWomenPercent(womenPercent); // 年龄段数组 ruoyi-modules/ruoyi-member/src/main/resources/mapper/coupon/CouponMapper.xml
@@ -331,7 +331,8 @@ tc.discount_money discountMoney, tc.discount_percent discountPercent, tc.create_time createTime, tc.audit_reason auditReason tc.audit_reason auditReason, tc.limit_number limitNumber FROM t_coupon tc LEFT JOIN t_coupon_total tct ON tc.coupon_id = tct.coupon_id WHERE tc.del_flag = 0 AND tc.coupon_status = 2 AND tc.coupon_from = 2 AND tc.shop_id = #{param.shopId} @@ -345,7 +346,7 @@ tc.coupon_id FROM t_coupon tc LEFT JOIN t_member_coupon_record tmcr ON tc.coupon_id = tmcr.coupon_id AND tmcr.user_id = #{userId} WHERE tc.del_flag = 0 AND tc.coupon_status = 1 AND send_type = 1 AND (tmcr.limit_flag IS NULL OR tmcr.limit_flag = 0) WHERE tc.del_flag = 0 AND tc.coupon_status = 1 AND send_type = 1 AND tmcr.limit_flag = 1 </select> </mapper> ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml
@@ -58,7 +58,7 @@ where user_id = #{userId} </select> <select id="selectMemberByMobile" parameterType="Long" resultMap="MemberResult"> <select id="selectMemberByMobile" parameterType="String" resultMap="MemberResult"> <include refid="selectMemberVo"/> where mobile = #{mobile} </select> ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/miniapp/AppHomeController.java
@@ -8,7 +8,6 @@ import com.ruoyi.shop.service.shop.ShopService; import com.ruoyi.system.api.domain.dto.AppBaseGetDto; import com.ruoyi.system.api.domain.poji.member.Member; import com.ruoyi.system.api.service.RemoteConfigService; import com.ruoyi.system.api.service.RemoteMemberService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -37,7 +36,6 @@ @Resource private RemoteMemberService memberService; RemoteConfigService remoteConfigService; @Resource private ShopService shopService; ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtEditShopDto.java
@@ -29,6 +29,10 @@ @NotNull(message = "商户类型不能为空") private Integer shopType; @ApiModelProperty("商户编号") @NotNull(message = "商户编号不能为空") private String shopNumber; @ApiModelProperty("营业开始时间") private String businessStartTime; ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
@@ -30,6 +30,7 @@ import javax.annotation.Resource; import java.math.BigDecimal; import java.nio.charset.StandardCharsets; import java.text.ParseException; import java.util.*; import java.util.function.Function; @@ -202,6 +203,12 @@ newShop = true; } BeanUtils.copyProperties(mgtEditShopDto,shop); String shopDetail = shop.getShopDetail(); if(StringUtils.isNotBlank(shopDetail)){ byte[] decodedBytes = Base64.getDecoder().decode(shopDetail); shopDetail = new String(decodedBytes, StandardCharsets.UTF_8); shop.setShopDetail(shopDetail); } //商户编号 if(mgtEditShopDto.getShopId()==null){ String shopNo = CodeFactoryUtil.getShopNo(); @@ -495,6 +502,12 @@ Shop shop = this.getById(shopId); //基本信息拷贝 BeanUtils.copyProperties(shop,mgtShopInfoVo); String shopDetail = mgtShopInfoVo.getShopDetail(); if(StringUtils.isNotBlank(shopDetail)){ byte[] encodedBytes = Base64.getEncoder().encode(shopDetail.getBytes(StandardCharsets.UTF_8)); shopDetail = new String(encodedBytes, StandardCharsets.UTF_8); mgtShopInfoVo.setShopDetail(shopDetail); } //商户标签 List<ShopRelTag> shopRelTagList = shopRelTagService.listShopRelTagByShopId(shopId); if(shopRelTagList!=null&&!shopRelTagList.isEmpty()){ ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml
@@ -504,10 +504,13 @@ shop_id, shop_name FROM t_shop WHERE del_flag = 0 AND shop_city_code IN WHERE del_flag = 0 AND shop_status = 1 <if test="param.cityCodeList !=null and param.cityCodeList.size()>0" > AND shop_city_code IN <foreach collection="param.cityCodeList" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> </select> <select id="pageMgtShopAuth" resultType="com.ruoyi.shop.domain.vo.MgtShopAuthPageVo"> ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/AgreementServiceImpl.java
@@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.system.api.constant.AppErrorConstant; import com.ruoyi.system.domain.dto.AppAgreementDto; import com.ruoyi.system.domain.dto.MgtAgreementEditDto; @@ -13,6 +14,8 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.nio.charset.StandardCharsets; import java.util.Base64; import java.util.Date; /** @@ -42,6 +45,12 @@ if(appAgreementVo==null){ throw new ServiceException(AppErrorConstant.AGREEMENT_FAILED); } /*String agreementContent = appAgreementVo.getAgreementContent(); if(StringUtils.isNotBlank(agreementContent)){ byte[] decodedBytes = Base64.getDecoder().decode(agreementContent); agreementContent = new String(decodedBytes, StandardCharsets.UTF_8); appAgreementVo.setAgreementContent(agreementContent); }*/ return appAgreementVo; } @@ -65,7 +74,12 @@ } // 更新协议内容和创建者信息 agreement.setAgreementType(mgtAgreementEditDto.getAgreementType()); agreement.setAgreementContent(mgtAgreementEditDto.getAgreementContent()); String agreementContent = mgtAgreementEditDto.getAgreementContent(); if(StringUtils.isNotBlank(agreementContent)){ byte[] decodedBytes = Base64.getDecoder().decode(agreementContent); agreementContent = new String(decodedBytes, StandardCharsets.UTF_8); agreement.setAgreementContent(agreementContent); } agreement.setCreateUserId(mgtAgreementEditDto.getUserId()); agreement.setCreateTime(new Date()); // 保存或更新协议