This commit is contained in:
dute7liang
2023-12-30 18:24:06 +08:00
parent 8d4a3ba746
commit a6f7c6bd0e
20 changed files with 240 additions and 26 deletions

View File

@@ -0,0 +1,55 @@
package com.ruoyi.cai.cache;
import com.ruoyi.cai.constant.RedisConstant;
import com.ruoyi.cai.enums.SystemConfigEnum;
import com.ruoyi.cai.manager.SystemConfigManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.concurrent.TimeUnit;
@Component
public class DynamicTotalCache {
@Autowired
private SystemConfigManager systemConfigManager;
@Autowired
private StringRedisTemplate redisTemplate;
public String getKey(Long userId){
String now = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
return String.format(RedisConstant.DYNAMIC_TOTAL_CACHE_REDIS,now,userId);
}
public void add(Long userId){
String key = getKey(userId);
redisTemplate.opsForValue().increment(key);
redisTemplate.expire(key,1, TimeUnit.DAYS);
}
public int get(Long userId){
String va = redisTemplate.opsForValue().get(getKey(userId));
if(va == null){
return 0;
}
return Integer.parseInt(va);
}
public boolean checkAllPush(Long userId){
String va = redisTemplate.opsForValue().get(getKey(userId));
if(va == null){
return true;
}
Integer config = systemConfigManager.getSystemConfigOfInt(SystemConfigEnum.DAY_MAX_DYNAMIC);
if(config > Integer.parseInt(va)){
return true;
}
return false;
}
}

View File

@@ -77,8 +77,6 @@ public class ChatManager {
callResp.setToNickname(toUser.getNickname()); callResp.setToNickname(toUser.getNickname());
callResp.setToAvatar(toUser.getAvatar()); callResp.setToAvatar(toUser.getAvatar());
callResp.setSocketUrl(weSocketUrl); callResp.setSocketUrl(weSocketUrl);
callResp.setSkillName(anchor.getSkillName());
callResp.setSkillIcon(anchor.getSkillIcon());
callResp.setPrice(anchor.getPrice()); callResp.setPrice(anchor.getPrice());
callResp.setScore(anchor.getGiveScore()); callResp.setScore(anchor.getGiveScore());
callResp.setServiceCount(anchor.getServiceCount()); callResp.setServiceCount(anchor.getServiceCount());
@@ -117,8 +115,6 @@ public class ChatManager {
getRoomResp.setToNickname(toUser.getNickname()); getRoomResp.setToNickname(toUser.getNickname());
getRoomResp.setToAvatar(toUser.getAvatar()); getRoomResp.setToAvatar(toUser.getAvatar());
getRoomResp.setSocketUrl(weSocketUrl); getRoomResp.setSocketUrl(weSocketUrl);
getRoomResp.setSkillName(anchor.getSkillName());
getRoomResp.setSkillIcon(anchor.getSkillIcon());
getRoomResp.setPrice(anchor.getPrice()); getRoomResp.setPrice(anchor.getPrice());
getRoomResp.setScore(anchor.getGiveScore()); getRoomResp.setScore(anchor.getGiveScore());
getRoomResp.setServiceCount(anchor.getServiceCount()); getRoomResp.setServiceCount(anchor.getServiceCount());

View File

@@ -4,4 +4,5 @@ public class RedisConstant {
public static final String REDIS_P = "cai-"; public static final String REDIS_P = "cai-";
public static final String SYSTEM_CONFIG = REDIS_P + "system-config"; public static final String SYSTEM_CONFIG = REDIS_P + "system-config";
public static final String CITY_CACHE_REDIS = REDIS_P + "city"; public static final String CITY_CACHE_REDIS = REDIS_P + "city";
public static final String DYNAMIC_TOTAL_CACHE_REDIS = REDIS_P + "synamicTotal:%s:%s";
} }

View File

@@ -1,16 +1,20 @@
package com.ruoyi.cai.controller.app; package com.ruoyi.cai.controller.app;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.cai.domain.CaiBanner;
import com.ruoyi.cai.dto.app.query.AnchorListQuery; import com.ruoyi.cai.dto.app.query.AnchorListQuery;
import com.ruoyi.cai.dto.app.query.UserQuery; import com.ruoyi.cai.dto.app.query.UserQuery;
import com.ruoyi.cai.dto.app.vo.AnchorListVo; import com.ruoyi.cai.dto.app.vo.AnchorListVo;
import com.ruoyi.cai.dto.app.vo.IndexBannerVo;
import com.ruoyi.cai.dto.app.vo.UserInfoVo; import com.ruoyi.cai.dto.app.vo.UserInfoVo;
import com.ruoyi.cai.dto.app.vo.UserListVo; import com.ruoyi.cai.dto.app.vo.UserListVo;
import com.ruoyi.cai.service.CaiAnchorService; import com.ruoyi.cai.service.CaiAnchorService;
import com.ruoyi.cai.service.CaiBannerService;
import com.ruoyi.cai.service.CaiUserService; import com.ruoyi.cai.service.CaiUserService;
import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.utils.BeanConvertUtil;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -18,6 +22,8 @@ import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController @RestController
@RequestMapping("/api/index") @RequestMapping("/api/index")
@@ -28,6 +34,15 @@ public class CaiIndexController {
private CaiAnchorService anchorService; private CaiAnchorService anchorService;
@Autowired @Autowired
private CaiUserService caiUserService; private CaiUserService caiUserService;
@Autowired
private CaiBannerService bannerService;
@GetMapping("/banner")
@Operation(summary = "获取首页banner图")
public R<List<IndexBannerVo>> banner(){
List<CaiBanner> res = bannerService.index();
return R.ok(BeanConvertUtil.convertListTo(res, IndexBannerVo::new));
}
@GetMapping("/anchor/page") @GetMapping("/anchor/page")
@Operation(summary = "查询主播-分页") @Operation(summary = "查询主播-分页")

View File

@@ -1,15 +1,11 @@
package com.ruoyi.cai.controller.app; package com.ruoyi.cai.controller.app;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.cai.domain.CaiCitys; import com.ruoyi.cai.domain.*;
import com.ruoyi.cai.domain.CaiGoods; import com.ruoyi.cai.dto.app.vo.GiftVo;
import com.ruoyi.cai.domain.CaiReportCate; import com.ruoyi.cai.service.*;
import com.ruoyi.cai.domain.CaiWithdrawExchange;
import com.ruoyi.cai.service.CaiCitysService;
import com.ruoyi.cai.service.CaiGoodsService;
import com.ruoyi.cai.service.CaiReportCateService;
import com.ruoyi.cai.service.CaiWithdrawExchangeService;
import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.utils.BeanConvertUtil;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -33,6 +29,8 @@ public class CaiSettingAppController {
private CaiReportCateService reportCateService; private CaiReportCateService reportCateService;
@Autowired @Autowired
private CaiCitysService citysService; private CaiCitysService citysService;
@Autowired
private CaiGiftService giftService;
@GetMapping("/goods") @GetMapping("/goods")
@Operation(summary = "充值配置") @Operation(summary = "充值配置")
@@ -64,4 +62,12 @@ public class CaiSettingAppController {
public R<Map<Long,String>> city(){ public R<Map<Long,String>> city(){
return R.ok(citysService.all()); return R.ok(citysService.all());
} }
@GetMapping("/gift")
@Operation(summary = "礼物配置")
public R<List<GiftVo>> gift(){
List<CaiGift> res = giftService.all();
return R.ok(BeanConvertUtil.convertListTo(res, GiftVo::new));
}
} }

View File

@@ -24,10 +24,6 @@ public class CaiBanner implements Serializable {
*/ */
@TableId(value = "id") @TableId(value = "id")
private Integer id; private Integer id;
/**
* 0 图片 1 视频
*/
private Integer type;
/** /**
* 类别 1 首页轮播 * 类别 1 首页轮播
*/ */

View File

@@ -0,0 +1,30 @@
package com.ruoyi.cai.dto.app.vo;
import lombok.Data;
import java.io.Serializable;
@Data
public class GiftVo implements Serializable {
private Integer id;
/**
* 类型 0 普通礼物 1svga礼物
*/
private Integer type;
/**
* 礼物名称
*/
private String name;
/**
* 礼物价格
*/
private Long price;
/**
* 礼物图片地址
*/
private String img;
/**
* svga地址
*/
private String svga;
}

View File

@@ -0,0 +1,11 @@
package com.ruoyi.cai.dto.app.vo;
import lombok.Data;
@Data
public class IndexBannerVo {
private String title;
private String image;
private String linkType;
private String linkUrl;
}

View File

@@ -15,10 +15,16 @@ public class UserGiftVo {
*/ */
@Schema(description = "礼物ID") @Schema(description = "礼物ID")
private Long giftId; private Long giftId;
@Schema(description = "礼物名称")
private String name;
@Schema(description = "礼物图片")
private String img;
@Schema(description = "礼物价格")
private String price;
/** /**
* 礼物数量 * 礼物数量
*/ */
@Schema(description = "礼物数量") @Schema(description = "礼物数量")
private Long giftCount; private Long count;
} }

View File

@@ -44,14 +44,17 @@ public class UserInfoVo {
@Schema(description = "用户状态") @Schema(description = "用户状态")
private String status; private String status;
@Schema(description = "用户状态描述")
private String statusMsg;
@Schema(description = "相册集合") @Schema(description = "相册集合")
private List<String> albumList = Collections.emptyList(); private List<String> albumList = Collections.emptyList();
@Schema(description = "守护列表") @Schema(description = "守护列表")
private List<GuardTotalVo> guardTotalList = Collections.emptyList(); private List<GuardTotalVo> guardTotalList = Collections.emptyList();
@Schema(description = "动态列表") @Schema(description = "最近的动态图片")
private List<DynamicVo> dynamicList = Collections.emptyList(); private List<String> dynamicList = Collections.emptyList();
@Schema(description = "礼物列表") @Schema(description = "礼物列表")
private List<UserGiftVo> giftList = Collections.emptyList(); private List<UserGiftVo> giftList = Collections.emptyList();

View File

@@ -0,0 +1,20 @@
package com.ruoyi.cai.dto.app.vo.info;
import lombok.Data;
import java.util.List;
@Data
public class GuardInfoVo {
private Integer guardPrice;
private List<String> avatarList;
private String diffNum;
private String nickname;
private String avatar;
}

View File

@@ -10,6 +10,7 @@ import lombok.Getter;
*/ */
public enum SystemConfigEnum { public enum SystemConfigEnum {
GUARD_PRICE("1314", "守护价格"), GUARD_PRICE("1314", "守护价格"),
DAY_MAX_DYNAMIC("10", "每日运行发布的最大动态数"),
; ;

View File

@@ -3,6 +3,8 @@ package com.ruoyi.cai.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.cai.domain.CaiBanner; import com.ruoyi.cai.domain.CaiBanner;
import java.util.List;
/** /**
* 轮播Service接口 * 轮播Service接口
* *
@@ -10,4 +12,5 @@ import com.ruoyi.cai.domain.CaiBanner;
* @date 2023-12-21 * @date 2023-12-21
*/ */
public interface CaiBannerService extends IService<CaiBanner> { public interface CaiBannerService extends IService<CaiBanner> {
List<CaiBanner> index();
} }

View File

@@ -3,6 +3,8 @@ package com.ruoyi.cai.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.cai.domain.CaiGift; import com.ruoyi.cai.domain.CaiGift;
import java.util.List;
/** /**
* 礼物Service接口 * 礼物Service接口
* *
@@ -11,4 +13,5 @@ import com.ruoyi.cai.domain.CaiGift;
*/ */
public interface CaiGiftService extends IService<CaiGift> { public interface CaiGiftService extends IService<CaiGift> {
List<CaiGift> all();
} }

View File

@@ -1,11 +1,14 @@
package com.ruoyi.cai.service.impl; package com.ruoyi.cai.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cai.domain.CaiBanner; import com.ruoyi.cai.domain.CaiBanner;
import com.ruoyi.cai.mapper.CaiBannerMapper; import com.ruoyi.cai.mapper.CaiBannerMapper;
import com.ruoyi.cai.service.CaiBannerService; import com.ruoyi.cai.service.CaiBannerService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List;
/** /**
* 轮播Service业务层处理 * 轮播Service业务层处理
* *
@@ -15,4 +18,9 @@ import org.springframework.stereotype.Service;
@Service @Service
public class CaiBannerServiceImpl extends ServiceImpl<CaiBannerMapper,CaiBanner> implements CaiBannerService { public class CaiBannerServiceImpl extends ServiceImpl<CaiBannerMapper,CaiBanner> implements CaiBannerService {
@Override
public List<CaiBanner> index() {
List<CaiBanner> list = this.list(Wrappers.lambdaQuery(CaiBanner.class));
return list;
}
} }

View File

@@ -4,17 +4,23 @@ import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cai.cache.DynamicTotalCache;
import com.ruoyi.cai.domain.CaiDynamic; import com.ruoyi.cai.domain.CaiDynamic;
import com.ruoyi.cai.domain.CaiDynamicImages; import com.ruoyi.cai.domain.CaiDynamicImages;
import com.ruoyi.cai.domain.CaiUser;
import com.ruoyi.cai.dto.app.query.DynamicAddReq; import com.ruoyi.cai.dto.app.query.DynamicAddReq;
import com.ruoyi.cai.dto.app.query.DynamicQuery; import com.ruoyi.cai.dto.app.query.DynamicQuery;
import com.ruoyi.cai.dto.app.vo.DynamicImageVo; import com.ruoyi.cai.dto.app.vo.DynamicImageVo;
import com.ruoyi.cai.dto.app.vo.DynamicListVo; import com.ruoyi.cai.dto.app.vo.DynamicListVo;
import com.ruoyi.cai.dto.app.vo.DynamicVo; import com.ruoyi.cai.dto.app.vo.DynamicVo;
import com.ruoyi.cai.enums.SystemConfigEnum;
import com.ruoyi.cai.manager.SystemConfigManager;
import com.ruoyi.cai.mapper.CaiDynamicMapper; import com.ruoyi.cai.mapper.CaiDynamicMapper;
import com.ruoyi.cai.service.CaiDynamicImagesService; import com.ruoyi.cai.service.CaiDynamicImagesService;
import com.ruoyi.cai.service.CaiDynamicService; import com.ruoyi.cai.service.CaiDynamicService;
import com.ruoyi.cai.service.CaiUserService;
import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.BeanConvertUtil; import com.ruoyi.common.utils.BeanConvertUtil;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -36,6 +42,12 @@ public class CaiDynamicServiceImpl extends ServiceImpl<CaiDynamicMapper,CaiDynam
@Autowired @Autowired
private CaiDynamicImagesService dynamicImagesService; private CaiDynamicImagesService dynamicImagesService;
@Autowired
private DynamicTotalCache dynamicTotalCache;
@Autowired
private CaiUserService userService;
@Autowired
private SystemConfigManager systemConfigManager;
@Override @Override
public List<DynamicVo> selectDynamicList(Long userId, Integer limit) { public List<DynamicVo> selectDynamicList(Long userId, Integer limit) {
@@ -79,7 +91,26 @@ public class CaiDynamicServiceImpl extends ServiceImpl<CaiDynamicMapper,CaiDynam
@Override @Override
public void saveDynamic(DynamicAddReq res) { public void saveDynamic(DynamicAddReq res) {
if(res.getImageList() != null && res.getImageList().size() > 9){
throw new ServiceException("最多只能发送9张照片哦");
}
CaiUser user = userService.getById(res.getUserId());
if(user.getSendDynamic() == 0){
throw new ServiceException("您已被禁止发送动态");
}
Integer maxNum = systemConfigManager.getSystemConfigOfInt(SystemConfigEnum.DAY_MAX_DYNAMIC);
if(maxNum > 0){
int alreadySendNum = dynamicTotalCache.get(res.getUserId());
if(alreadySendNum > maxNum){
throw new ServiceException("每天最大可发送"+maxNum+"条动态");
}
}
CaiDynamic caiDynamic = BeanConvertUtil.convertTo(res, CaiDynamic::new); CaiDynamic caiDynamic = BeanConvertUtil.convertTo(res, CaiDynamic::new);
if(CollectionUtil.isNotEmpty(res.getImageList())){
caiDynamic.setIsAttach(1);
}else{
caiDynamic.setIsAttach(0);
}
this.save(caiDynamic); this.save(caiDynamic);
List<DynamicImageVo> imageList = res.getImageList(); List<DynamicImageVo> imageList = res.getImageList();
if(CollectionUtil.isNotEmpty(imageList)){ if(CollectionUtil.isNotEmpty(imageList)){

View File

@@ -1,5 +1,6 @@
package com.ruoyi.cai.service.impl; package com.ruoyi.cai.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cai.domain.CaiGift; import com.ruoyi.cai.domain.CaiGift;
import com.ruoyi.cai.mapper.CaiGiftMapper; import com.ruoyi.cai.mapper.CaiGiftMapper;
@@ -7,6 +8,8 @@ import com.ruoyi.cai.service.CaiGiftService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List;
/** /**
* 礼物Service业务层处理 * 礼物Service业务层处理
* *
@@ -17,4 +20,10 @@ import org.springframework.stereotype.Service;
@Service @Service
public class CaiGiftServiceImpl extends ServiceImpl<CaiGiftMapper,CaiGift> implements CaiGiftService { public class CaiGiftServiceImpl extends ServiceImpl<CaiGiftMapper,CaiGift> implements CaiGiftService {
@Override
public List<CaiGift> all() {
return this.list(Wrappers.lambdaQuery(CaiGift.class).eq(CaiGift::getStatus,0)
.orderByAsc(CaiGift::getSort)
.select(CaiGift::getId,CaiGift::getName,CaiGift::getPrice,CaiGift::getImg,CaiGift::getSvga));
}
} }

View File

@@ -68,6 +68,7 @@ public class CaiUserServiceImpl extends ServiceImpl<CaiUserMapper, CaiUser> impl
} }
CaiAnchor anchor = anchorService.getByUserId(userId); CaiAnchor anchor = anchorService.getByUserId(userId);
UserInfoVo vo = new UserInfoVo(); UserInfoVo vo = new UserInfoVo();
vo.setUserId(userId);
vo.setIsAnchor(caiUser.getIsAnchor()); vo.setIsAnchor(caiUser.getIsAnchor());
vo.setUsercode(caiUser.getUsercode()); vo.setUsercode(caiUser.getUsercode());
vo.setNickname(caiUser.getNickname()); vo.setNickname(caiUser.getNickname());
@@ -82,12 +83,14 @@ public class CaiUserServiceImpl extends ServiceImpl<CaiUserMapper, CaiUser> impl
vo.setFansNum(userFollowService.getFansNumByUserId(userId)); vo.setFansNum(userFollowService.getFansNumByUserId(userId));
vo.setStar(userFollowService.checkStar(currentUserId, userId)); vo.setStar(userFollowService.checkStar(currentUserId, userId));
vo.setAlbumList(caiUserAlbumService.getUserAlbum(userId,caiUser.getIsAnchor())); vo.setAlbumList(caiUserAlbumService.getUserAlbum(userId,caiUser.getIsAnchor()));
// 在线状态
// vo.setStatus();
if(caiUser.getIsAnchor() == 1){ if(caiUser.getIsAnchor() == 1){
vo.setGuardTotalList(guardTotalService.selectGuardTotalLimit(userId,10)); vo.setGuardTotalList(guardTotalService.selectGuardTotalLimit(userId,10));
vo.setDynamicList(dynamicService.selectDynamicList(userId,10)); // vo.setDynamicList(dynamicService.selectDynamicList(userId,10));
vo.setGiftList(userGiftService.selectGiftList(userId)); vo.setGiftList(userGiftService.selectGiftList(userId));
} }
// vo.setStatus();
return vo; return vo;
} }

View File

@@ -8,9 +8,11 @@ import java.util.Base64;
public class AES { public class AES {
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
String jsonData ="asdjkljfiohweioufhkjshjkvbajkdsbjksjasdhfjanskjd"; // 要加密的JSON 数据 String jsonData ="zTmtrzE4t6jFriRIde3X+C3rgTo2LdYZSgiP8yg6cXY/0/05hSvBlfa97rZKGrDfq0ebvNdSdZcI91PW6SToHYN368c9x9FNMeexOg50FEmw0rtPJo/rt3JWOGG80FYvu9ZO31rKZZryoThMJfbP5tLwXrvbpv+ac5Z/Jgafy3QwHrByIFeYL263CXnymiIyN1FKOAfV5pd86x0V5ktUELW381sE/3axHpm/T0nj85yJ56U20TjnWSPAcFbJGr3PsvVCT1WRT6OfGvp8vxH0JOAj0zez4B/j8bVcJ23Y7pPBkR+8u16dEeOK7Qp9NR0CBbE/nVuYIVWCS70FE+fhpTH574ajU8GhQg+oFXLpf1p+67/7iRfIkJAT9mPJ/aU3uOpGb6BLNSDln362yupTZRVllc9PakZpcaJFd6iBU15fvhYBrXlYb148I7+LqH7UYL0c+eKtJMWYEA62+D0Jb5yjb6nGhkXShP3pPdOkCwvdfWXvV0mPBzGCPmDTBOuGKnjQODTOdiMSZK4HeNg4vJGvXRv8imy3rF4QqpzimL2dTMGYKB++7CcSeAeuQEQxmLGXik3hDiH+AHhUQqgcuS+RskdImWiUt2U/awL6TX8PgabkwHh36idip/L1Rhod6foVFy3EUIDFG+1ItgqaWexxEGgVG1Dmazb5lVTMTiFYw8H/DT2R2psfMTqppRKB/uwwOd5kFMeXYpFyjeI+Y1P6GgtvyZOzalrYEF/4Ghd8BH9sdOsKzy4h3cSqq1UsnHTfUbAoUWXjUoDwMXciYlk3YGRBLJQl61oPpoYX7OkaFMVnFWRhv6NVbDDt7/xOP8yPRK3ah3IrIJVMdsBkfWJjQxIZWdMoNzmPKVoNZQpGrODvQA8FCR7FpOA9zqkK6JEinLdEHq5I098QmCPSIPLv8gWQG5tsFit7GSWhB8UgJ/YZDOK0dYT5dOjLzm5BYQE9rPFj9PrWChkBnJq1uHQvLV0+opAK9O9q/asff3kaFMVnFWRhv6NVbDDt7/xOsj8tI+jsdVw/D92kdYkgAbQ2ISm8h3aCz9EyjvE6BgZIf5yHHdj6zTVeBd3oNsRkdWV9osEqK9gz1PrOXSOdgu9wFM9qHsOiAWmH0oZJCbgleXcFX9YHSuvpnLr/FxwN6QyDla2tWtIY6c2MxcORNjYbTfbFdRq5amAkf8myp2d+FEvKmkadm4YgW8pf61mMZPVw5kIMSt4b3udAfJvHngm1eWyulp2iaBv39zvFad1b5cK6iQl+3lQ1Q8DX03ti4J315g2b4ZC/ikkozVr+7UuZaZSfuhFzsii0GdVdLOJa0Ut87UIL9Gqe7gvikS8svZ+pOg64pE2iEWS7D1VCLFXqSCD9vPimrzcuz9ISTL7Uaa4JEpAnlfbzsHFo+omzJcBW1oClmNwkMGLOHcjSBEmzjdl5YGQe5ZJQ7hbj87k2zLOZ0A0C3fXAdLRQMrfDpTLW1HZ5kKs7Wtkb9mcgapDl/x36rYV/oelaOH3MbldeCIkM1v2Fl/6ezzM6MtbNmqcUZw/kgOOEeFWyZeqXVL/O6iXlJmRp0oAGtm3I0tD6jrMqbuWJCf01c2i1XpMUHZy0LT60lgF8I/AGSEYh0enW5SKMMX05JW3Tj/hlalK8zYAQh4sS7iDg1igTBI9Aj47igz3VE+aq+axyso0qsaW3i/QiWLmXuduRrePzcnP7ikiaqxMToqPEmVwgK0qpJgIn4OlQAv2h4yqKiPKWuTj+9xE21YNLkFHbNghXS0SY57z5eR3ZKWKNfbKePxPlsdzgCoSaj2qGN7/h2STSYT1CkhckHKSGPdZl3YSVEl6702SAGAw/t67mMvhxeHR05ppIRo0kKIGs0V0L5sR5awozHl3lPNQKkizE7LXrpc3PfUhrPjPreBodqC9xDzTpygi7345kpsbhhjXVHp7Wtj5nCaGh1MjhccwxgnGqNKUiGHOxMZbyaGe+m/CaWLA1nttJ47hFfpM586LQboHUoq5w5Xs/vQmqktEpfEi16H/dnOdeQlKg5tu4kud8gj2iZ8/fI39UqL7b/Sm4s5hU/9WqxNi9D6ImOvjxuef63xV/a+S/1hXjjfC+WNegh35FAu9HCZ9/pNaSyEku1rUvAkidsVE/+0jEfTeK2ZRFrMk="; // 要加密的JSON 数据
String key = "K2AwvosrwtoAgOEp"; // String jsonData = "123";
System.out.println(encrypt(jsonData,key)); String key = "K2AwvosrwtoAgOEP";
String encod = encrypt(jsonData, key);
System.out.println(decrypt(jsonData,key));
} }
public static String encrypt(String data, String key) throws Exception { public static String encrypt(String data, String key) throws Exception {
@@ -20,4 +22,14 @@ public class AES {
byte[] encryptedBytes = cipher.doFinal(data.getBytes(StandardCharsets.UTF_8)); byte[] encryptedBytes = cipher.doFinal(data.getBytes(StandardCharsets.UTF_8));
return Base64.getEncoder().encodeToString(encryptedBytes); return Base64.getEncoder().encodeToString(encryptedBytes);
} }
public static String decrypt(String data,String key) throws Exception{
byte[] decode = Base64.getDecoder().decode(data);
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(StandardCharsets.UTF_8), "AES");
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
byte[] encryptedBytes = cipher.doFinal(decode);
return new String(encryptedBytes,StandardCharsets.UTF_8);
}
} }

View File

@@ -15,8 +15,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="createTime" column="create_time"/> <result property="createTime" column="create_time"/>
</resultMap> </resultMap>
<select id="selectGiftList" resultType="com.ruoyi.cai.dto.app.vo.UserGiftVo"> <select id="selectGiftList" resultType="com.ruoyi.cai.dto.app.vo.UserGiftVo">
select to_uid, gift_id, sum(gift_count) as gift_count select to_uid, gift_id,
from cai_user_gift t t2.name,
t2.img,
t2.price,
sum(gift_count) as gift_count
from cai_user_gift t1
join cai_gift t2 on t1.gift_id = t2.id
where to_uid = #{userId} where to_uid = #{userId}
group by gift_id group by gift_id
</select> </select>