第二次

master
31353 2023-12-31 19:11:53 +08:00
parent cc778ef584
commit 8446839261
13 changed files with 229 additions and 110 deletions

View File

@ -19,14 +19,14 @@ public class Packet {
// 定义一个String类型的变量packetTheme // 定义一个String类型的变量packetTheme
private String packetTheme; private String packetTheme;
// 定义一个Integer类型的变量packetPrice // 定义一个Integer类型的变量packetPrice
private Integer packetPrice; private Double packetPrice;
// 使用@DateTimeFormat注解将Date类型的变量packetDate的格式设置为yyyy-MM-dd // 使用@DateTimeFormat注解将Date类型的变量packetDate的格式设置为yyyy-MM-dd
@DateTimeFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd")
private Date packetDate; private Date packetDate;
// 定义一个Integer类型的变量packetCount // 定义一个Integer类型的变量packetCount
private Integer packetCount; private Integer packetCount;
// 定义一个BigDecimal类型的变量packetRema 剩余 // 定义一个BigDecimal类型的变量packetRema 剩余
private BigDecimal packetRema; private Double packetRema;
// 定义一个Integer类型的变量packetClai 已领取个数 // 定义一个Integer类型的变量packetClai 已领取个数
private Integer packetClai; private Integer packetClai;
// 定义一个Integer类型的变量packetDuration 持续时间 // 定义一个Integer类型的变量packetDuration 持续时间
@ -38,4 +38,5 @@ public class Packet {
// 定义一个Integer类型的变量packetSnag 状态是否抢到 // 定义一个Integer类型的变量packetSnag 状态是否抢到
private Integer packetSnag; private Integer packetSnag;
private Integer userId; private Integer userId;
private Integer packetRequest;
} }

View File

@ -30,7 +30,7 @@ public class User {
// 性别 // 性别
private String sex; private String sex;
// 余额 // 余额
private BigDecimal money; private Double money;
private Integer oneid; private Integer oneid;
private Integer twoid; private Integer twoid;
private Integer threeid; private Integer threeid;

View File

@ -13,8 +13,8 @@ import java.util.Date;
@Data @Data
public class PacketRequest { public class PacketRequest {
private Integer packetPrice; private Double packetPrice;
private Integer packetPrices; private Double packetPrices;
// 使用@DateTimeFormat注解将Date类型的变量packetDate的格式设置为yyyy-MM-dd // 使用@DateTimeFormat注解将Date类型的变量packetDate的格式设置为yyyy-MM-dd
@DateTimeFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd")

View File

@ -14,11 +14,11 @@ public class RedPacketRequest {
// 定义一个Integer类型的变量packetId // 定义一个Integer类型的变量packetId
private Integer packetId; private Integer packetId;
// 定义一个Integer类型的变量packetPrice 金额 // 定义一个Integer类型的变量packetPrice 金额
private Integer packetPrice; private Double packetPrice;
// 定义一个Integer类型的变量packetCount 数量 // 定义一个Integer类型的变量packetCount 数量
private Integer packetCount; private Integer packetCount;
// 定义一个BigDecimal类型的变量packetRema 剩余金额 // 定义一个BigDecimal类型的变量packetRema 剩余金额
private BigDecimal packetRema; private Double packetRema;
// 定义一个Integer类型的变量packetClai 已领取个数 // 定义一个Integer类型的变量packetClai 已领取个数
private Integer packetClai; private Integer packetClai;

View File

@ -17,7 +17,7 @@ public class SendPacket {
// 定义一个String类型的变量packetTheme // 定义一个String类型的变量packetTheme
private String packetTheme; private String packetTheme;
// 定义一个Integer类型的变量packetPrice // 定义一个Integer类型的变量packetPrice
private Integer packetPrice; private Double packetPrice;
@DateTimeFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd")
private Date packetDate; private Date packetDate;
// 定义一个Integer类型的变量packetCount // 定义一个Integer类型的变量packetCount

View File

@ -22,34 +22,63 @@ import java.util.List;
public interface PacketMapper { public interface PacketMapper {
// 根据请求获取包列表
List<Packet> packList(PacketRequest packetRequest); List<Packet> packList(PacketRequest packetRequest);
// 根据用户ID查询好友列表
List<Integer> findFriends(Integer userId); List<Integer> findFriends(Integer userId);
// 根据用户ID查询用户名
List<User> finduserName(@Param("findFriends") List<Integer> findFriends); List<User> finduserName(@Param("findFriends") List<Integer> findFriends);
// 发送包
Integer InterPacket(SendPacket sendPacket); Integer InterPacket(SendPacket sendPacket);
// 给指定用户发送包
void InterGive(@Param("packetId") Integer packetId, @Param("userIds") List<Integer> userIds); void InterGive(@Param("packetId") Integer packetId, @Param("userIds") List<Integer> userIds);
void updateUserMoney(@Param("userId") Integer userId, @Param("packetPrice") Integer packetPrice); // 更新用户余额
void updateUserMoney(@Param("userId") Integer userId, @Param("packetPrice") Double packetPrice);
// 查询包
List<Packet> selectPacket(); List<Packet> selectPacket();
void updateaddUserMoney(@Param("userId") Integer userId, @Param("i") int i); // 更新用户余额
void updateaddUserMoney(@Param("userId") Integer userId, @Param("i") double i);
// 查询结束金额
User selectEndMoney(Integer userId); User selectEndMoney(Integer userId);
Packet selectPacketById(Integer packetId); // 根据包ID查询包
Packet selectPacketById(@Param("packetId") Integer packetId);
// 根据用户ID和包ID查询真实信息
Give findTrue(@Param("userId") Integer userId, @Param("packetId") Integer packetId); Give findTrue(@Param("userId") Integer userId, @Param("packetId") Integer packetId);
// 根据包ID查询包数量
Packet findPackCount(Integer packetId); Packet findPackCount(Integer packetId);
// 更新红包请求
void UpdateRem( RedPacketRequest redPacketRequest); void UpdateRem( RedPacketRequest redPacketRequest);
// 更新发送状态
void UpdateGiveState(@Param("packetId") Integer packetId, @Param("userId") Integer userId); void UpdateGiveState(@Param("packetId") Integer packetId, @Param("userId") Integer userId);
// 更新红包状态
void UpdatePacketSang(@Param("packetId") Integer packetId);
// 更新余额
void UpdateYue(@Param("v") double v, @Param("userId") Integer userId);
// 更新包状态
void UpdatePacketState(Integer packetId);
// 更新红包请求
void UpdateRPacketRequest(Integer packetId);
// 根据包ID查询包数量
Packet findPacketCounts(Integer packetId);
} }

View File

@ -15,16 +15,12 @@ import com.bwie.user.mapper.PacketMapper;
import com.bwie.user.service.PacketService; import com.bwie.user.service.PacketService;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
@ -50,6 +46,7 @@ public class PacketServicelmpl implements PacketService {
/** /**
* *
*
* @param packetRequest * @param packetRequest
* @return * @return
*/ */
@ -62,14 +59,15 @@ public class PacketServicelmpl implements PacketService {
String s = redisTemplate.opsForValue().get(TokenConstants.LOGIN_TOKEN_KEY + userKey); String s = redisTemplate.opsForValue().get(TokenConstants.LOGIN_TOKEN_KEY + userKey);
User user = JSON.parseObject(s, User.class); User user = JSON.parseObject(s, User.class);
//用户只能搜索到用户可以抢到的红包2分 //用户只能搜索到用户可以抢到的红包2分
packetRequest.setUserId(user.getUserId()); packetRequest.setUserId(user.getUserId());
List<Packet> packetList = packetMapper.packList(packetRequest); List<Packet> packetList = packetMapper.packList(packetRequest);
PageInfo info = new PageInfo(packetList); PageInfo info = new PageInfo(packetList);
return Result.success(info.getList(),info.getTotal()+""); return Result.success(info.getList(), info.getTotal() + "");
} }
/** /**
* *
*
* @return * @return
*/ */
@Override @Override
@ -88,6 +86,7 @@ public class PacketServicelmpl implements PacketService {
/** /**
* *
*
* @param sendPacket * @param sendPacket
* @return * @return
*/ */
@ -100,29 +99,28 @@ public class PacketServicelmpl implements PacketService {
String s = redisTemplate.opsForValue().get(TokenConstants.LOGIN_TOKEN_KEY + userKey); String s = redisTemplate.opsForValue().get(TokenConstants.LOGIN_TOKEN_KEY + userKey);
User user = JSON.parseObject(s, User.class); User user = JSON.parseObject(s, User.class);
//余额 //余额
BigDecimal money = user.getMoney(); double newMoney = user.getMoney();
Integer packetPrice = sendPacket.getPacketPrice(); double packetPrice = sendPacket.getPacketPrice();
int newMoney = money.intValue();
if (packetPrice>newMoney){ if (packetPrice > newMoney) {
throw new AuthException("余额不足!!!"); throw new AuthException("余额不足!!!");
} }
sendPacket.setUserId(user.getUserId()); sendPacket.setUserId(user.getUserId());
//添加红包表 //添加红包表
Integer i = packetMapper.InterPacket(sendPacket); Integer i = packetMapper.InterPacket(sendPacket);
if (i>0){ if (i > 0) {
//添加中间表 //添加中间表
List<Integer> userIds = sendPacket.getUserIds(); List<Integer> userIds = sendPacket.getUserIds();
Integer packetId = sendPacket.getPacketId(); Integer packetId = sendPacket.getPacketId();
packetMapper.InterGive(packetId,userIds); packetMapper.InterGive(packetId, userIds);
//修改monry余额 //修改monry余额
packetMapper.updateUserMoney(user.getUserId(),packetPrice); packetMapper.updateUserMoney(user.getUserId(), packetPrice);
//查询当前值 //查询当前值
User endMoney = packetMapper.selectEndMoney(user.getUserId()); User endMoney = packetMapper.selectEndMoney(user.getUserId());
user.setMoney(endMoney.getMoney()); user.setMoney(endMoney.getMoney());
redisTemplate.opsForValue().set(TokenConstants.LOGIN_TOKEN_KEY+userKey,JSON.toJSONString(user)); redisTemplate.opsForValue().set(TokenConstants.LOGIN_TOKEN_KEY + userKey, JSON.toJSONString(user));
//存缓存 key:红包ID 值:红包金额 过期时间:红包持续时间 //存缓存 key:红包ID 值:红包金额 过期时间:红包持续时间
redisTemplate.opsForValue().set(packetId+"",sendPacket.getPacketPrice()+"",sendPacket.getPacketDuration(), TimeUnit.MINUTES); redisTemplate.opsForValue().set(packetId + "", sendPacket.getPacketPrice() + "", sendPacket.getPacketDuration(), TimeUnit.MINUTES);
return Result.success("发送成功"); return Result.success("发送成功");
} }
return Result.error("添加失败"); return Result.error("添加失败");
@ -130,89 +128,112 @@ public class PacketServicelmpl implements PacketService {
/** /**
* 耀 * 耀
*
* @param redPacketRequest * @param redPacketRequest
* @return * @return
*/ */
@Override @Override
public Result redPacket(RedPacketRequest redPacketRequest) { public Result redPacket(RedPacketRequest redPacketRequest) {
//判断红包时间是否过期 //判断红包时间是否过期
if (!redisTemplate.hasKey(redPacketRequest.getPacketId()+"")){ if (!redisTemplate.hasKey(redPacketRequest.getPacketId() + "")) {
throw new AuthException("红包已过期!!!!!!!"); throw new AuthException("红包已过期!!!!!!!");
} }
//获取当前登录人 //获取当前登录人
String token = request.getHeader(TokenConstants.TOKEN); String token = request.getHeader(TokenConstants.TOKEN);
String userKey = JwtUtils.getUserKey(token); String userKey = JwtUtils.getUserKey(token);
String s = redisTemplate.opsForValue().get(TokenConstants.LOGIN_TOKEN_KEY + userKey); String s = redisTemplate.opsForValue().get(TokenConstants.LOGIN_TOKEN_KEY + userKey);
User user = JSON.parseObject(s, User.class); User user = JSON.parseObject(s, User.class);
//检查是否抢到 //检查是否抢到
Give give = packetMapper.findTrue(user.getUserId(),redPacketRequest.getPacketId()); Give give = packetMapper.findTrue(user.getUserId(), redPacketRequest.getPacketId());
if(give.getGiveState() !=1){ if (give.getGiveState() != 1) {
throw new AuthException("已抢过~~~~~"); throw new AuthException("已抢过~~~~~");
} }
//查询红包个数 //查询红包个数
Packet packet = packetMapper.findPackCount(redPacketRequest.getPacketId()); Packet packet = packetMapper.findPackCount(redPacketRequest.getPacketId());
if(packet.getPacketCount()==0){ if (packet.getPacketCount() == 0) {
throw new AuthException("红包已抢完~~~~~"); throw new AuthException("红包已抢完~~~~~");
} }
//红包已领取个数
Integer packetClai = packet.getPacketClai();
//红包总个数
Integer packetCount = packet.getPacketCount();
//查询剩余个数
Integer newCount = packetCount - packetClai;
//红包金额
Double packetPrice = packet.getPacketPrice();
//剩余金额
Double packetRema = packet.getPacketRema();
//发红包的金额
Double newPrice = packetPrice-packetRema;
//创建锁对象 //创建锁对象
// RLock lock = redissonClient.getLock("one"); // RLock lock = redissonClient.getLock("one");
//获取锁 //获取锁
// try { // try {
// lock.tryLock(5,TimeUnit.MINUTES); // lock.tryLock(5,TimeUnit.MINUTES);
//红包金额
Integer totalAmount = redPacketRequest.getPacketPrice();
//红包个数
Integer num = redPacketRequest.getPacketCount();
//转型
int newInt = totalAmount;
double doubleValue = (double) newInt;
//转型
//保留后两位
DecimalFormat decimalFormat = new DecimalFormat("#.##"); DecimalFormat decimalFormat = new DecimalFormat("#.##");
String format = decimalFormat.format(doubleValue); String format = decimalFormat.format(newPrice);
double vv = Double.parseDouble(format); double endPrice = Double.parseDouble(format);
//储存每个红包的金额 //储存每个红包的金额
double[] redPacket = new double[num]; double[] redPacket = new double[newCount];
//创建随机数 //创建随机数
Random random = new Random(); Random random = new Random();
//循环 //循环
for (int i = 0; i < num - 1; i++) { for (int i = 0; i < newCount - 1; i++) {
double amout = random.nextDouble()*(vv/num)*2; double amout = random.nextDouble() * (endPrice / newCount) * 2;
redPacket[i] = amout; redPacket[i] = amout;
vv -=amout; }
} redPacket[newCount - 1] = endPrice;
redPacket[num-1]= vv; Arrays.sort(redPacket);
Arrays.sort(redPacket);
for (double v : redPacket) { //释放锁
//释放锁
// if (lock.isHeldByCurrentThread()){ // if (lock.isHeldByCurrentThread()){
// if (lock.isLocked()){ // if (lock.isLocked()){
// lock.unlock(); // lock.unlock();
// } // }
// } // }
//保留后两位 //保留后两位
DecimalFormat decimalFormats = new DecimalFormat("#.##"); DecimalFormat decimalFormats = new DecimalFormat("#.##");
String formats = decimalFormats.format(v); String formats = decimalFormats.format(redPacket[0]);
double v1 = Double.parseDouble(formats); double v1 = Double.parseDouble(formats);
//修改红包余额 //修改红包余额
//余额等于 红包金额 - 抢到的红包金额 num = 5 //余额等于 红包金额 - 抢到的红包金额 num = 5
double newVv= vv-v; double newVv = endPrice - redPacket[0];
int newLl =num-1; //修改红包个数
BigDecimal bigDecimal = new BigDecimal(Double.toString(newVv));
int a = (int)v; //最后一个包
if (1==newCount){
Packet pa = packetMapper.findPacketCounts(redPacketRequest.getPacketId());
//剩余金额
Double packetRema1 = pa.getPacketRema();
redPacketRequest.setPacketRema(0.00);
redPacketRequest.setPacketPrice(packetRema1);
packetMapper.UpdateRem(redPacketRequest);
//修改红包抢到状态 修改中间表
packetMapper.UpdateGiveState(redPacketRequest.getPacketId(), user.getUserId());
//修改用户余额
packetMapper.UpdateYue(redPacket[0],user.getUserId());
//修改红包状态
packetMapper.UpdatePacketSang(pa.getPacketId());
return Result.success("抢红包成功,恭喜您喜得" + packetRema1 + ",元");
}
redPacketRequest.setPacketRema(bigDecimal);
redPacketRequest.setPacketPrice(a);
redPacketRequest.setPacketCount(newLl); redPacketRequest.setPacketRema(newVv);
packetMapper.UpdateRem(redPacketRequest); redPacketRequest.setPacketPrice(redPacket[0]);
//修改是否抢到 修改中间表
packetMapper.UpdateGiveState(redPacketRequest.getPacketId(),user.getUserId()); packetMapper.UpdateRem(redPacketRequest);
System.out.println("哈哈哈:"+v1+"次数为"+num); //修改红包抢到状态 修改中间表
return Result.success("抢红包成功,恭喜您喜得"+v1+",元"); packetMapper.UpdateGiveState(redPacketRequest.getPacketId(), user.getUserId());
} //修改用户余额
packetMapper.UpdateYue(redPacket[0],user.getUserId());
return Result.success("抢红包成功,恭喜您喜得" + v1 + ",元");
// //
@ -227,31 +248,36 @@ public class PacketServicelmpl implements PacketService {
// lock.unlock(); // lock.unlock();
// } // }
// } // }
return null;
} }
/** /**
* *
*/ */
@Scheduled(cron = "0/10 * * * * ?") @Scheduled(cron = "0/10 * * * * ?")
public void take(){ public void take() {
System.out.println("当当当当>>>>>>定时器启动......轰隆隆!轰隆隆!轰隆隆!轰隆隆!"); System.out.println("当当当当>>>>>>定时器启动......轰隆隆!轰隆隆!轰隆隆!轰隆隆!");
//查询红包表 //查询红包表
List<Packet> packets = packetMapper.selectPacket(); List<Packet> packets = packetMapper.selectPacket();
if (!packets.isEmpty()){ if (!packets.isEmpty()) {
for (Packet packet : packets) { for (Packet packet : packets) {
if (!redisTemplate.hasKey(packet.getPacketId()+"")){ //问题:怎么解决累计加
//查询剩余金额 if (!redisTemplate.hasKey(packet.getPacketId() + "")) {
Packet packet1 = packetMapper.selectPacketById(packet.getPacketId()); //修改红包状态
BigDecimal packetRema = packet1.getPacketRema(); packetMapper.UpdatePacketState(packet.getPacketId());
int i = packetRema.intValue(); //查询剩余金额
if (i>0){ Packet packet1 = packetMapper.selectPacketById(packet.getPacketId());
packetMapper.updateaddUserMoney(packet.getUserId(),i); double packetRema = packet1.getPacketRema();
} if (packetRema > 0.01) {
} //退还用户余额
} packetMapper.updateaddUserMoney(packet.getUserId(), packetRema);
} //修改红包退回状态
packetMapper.UpdateRPacketRequest(packet.getPacketId());
}
}
}
}
} }
} }

View File

@ -21,11 +21,23 @@
update user set money = money+#{i} where user_id = #{userId} update user set money = money+#{i} where user_id = #{userId}
</update> </update>
<update id="UpdateRem"> <update id="UpdateRem">
update packet set packet_price = packet_price-#{packetPrice} ,packet_rema = packet_rema+#{packetRema},packet_count=#{packetCount} where packet_id = #{packetId} update packet set packet_rema = packet_rema+#{packetRema},packet_clai = packet_clai+1 where packet_id = #{packetId}
</update> </update>
<update id="UpdateGiveState"> <update id="UpdateGiveState">
update give set give_state = 2 where packet_id = #{packetId} and user_id = #{userId} update give set give_state = 2 where packet_id = #{packetId} and user_id = #{userId}
</update> </update>
<update id="UpdatePacketSang">
update packet set packet_snag = 2 where packet_id = #{packetId}
</update>
<update id="UpdateYue">
update user set money = money+#{v} where user_id = #{userId}
</update>
<update id="UpdatePacketState">
update packet set packet_snag = 2 where packet_id = #{packetId}
</update>
<update id="UpdateRPacketRequest">
update packet set packet_request = 2 where packet_id = #{packetId}
</update>
<select id="packList" resultType="com.bwie.common.domain.Packet"> <select id="packList" resultType="com.bwie.common.domain.Packet">
SELECT p.*,g.give_state giveState FROM packet p SELECT p.*,g.give_state giveState FROM packet p
@ -71,7 +83,7 @@
where user_id= #{userId}; where user_id= #{userId};
</select> </select>
<select id="selectPacketById" resultType="com.bwie.common.domain.Packet"> <select id="selectPacketById" resultType="com.bwie.common.domain.Packet">
select packet_rema from packet where packet_id=#{packetId} select packet_rema from packet where packet_id=#{packetId} and packet_request = 1
</select> </select>
<select id="findTrue" resultType="com.bwie.common.domain.Give"> <select id="findTrue" resultType="com.bwie.common.domain.Give">
select give_state select give_state
@ -80,7 +92,10 @@
and user_id = #{userId}; and user_id = #{userId};
</select> </select>
<select id="findPackCount" resultType="com.bwie.common.domain.Packet"> <select id="findPackCount" resultType="com.bwie.common.domain.Packet">
select packet_count from packet where packet_id=#{packetId} select packet_count,packet_clai,packet_price,packet_rema from packet where packet_id=#{packetId}
</select>
<select id="findPacketCounts" resultType="com.bwie.common.domain.Packet">
select packet_id,packet_clai,packet_rema from packet where packet_id = #{packetId}
</select> </select>

View File

@ -106,5 +106,11 @@ public class UserController {
public Result updateFriedRequest(@PathVariable("feiId") Integer feiId,@PathVariable("state") Integer state){ public Result updateFriedRequest(@PathVariable("feiId") Integer feiId,@PathVariable("state") Integer state){
return userService.updateFriedRequest(feiId,state); return userService.updateFriedRequest(feiId,state);
} }
/**
*
*/
@PostMapping("/deleteFriedRequest")
public Result deleteFriedRequest(@RequestBody Integer[] ids){
return userService.deleteFriedRequest(ids);
}
} }

View File

@ -21,46 +21,65 @@ import java.util.List;
@Component @Component
@Mapper @Mapper
public interface UserMapper { public interface UserMapper {
// 根据用户名查找用户
User findName(String username); User findName(String username);
// 添加用户
Integer Sign(AddUser addUser); Integer Sign(AddUser addUser);
// 获取用户好友列表
List<Integer> FriendId(Integer userId); List<Integer> FriendId(Integer userId);
// 获取用户好友列表
List<User> FriedList(Conditit conditit); List<User> FriedList(Conditit conditit);
// 获取所有用户
List<Integer> findAllUser(); List<Integer> findAllUser();
// 获取所有用户
List<User> findAddAllUser(Inqri inqri); List<User> findAddAllUser(Inqri inqri);
// 查找好友状态
Friend findCf(@Param("userId") Integer userId, @Param("userId1") Integer userId1); Friend findCf(@Param("userId") Integer userId, @Param("userId1") Integer userId1);
// 添加好友
Integer InsertFei(@Param("userId") Integer userId, @Param("userId1") Integer userId1); Integer InsertFei(@Param("userId") Integer userId, @Param("userId1") Integer userId1);
// 查找好友状态
Fie findFieState(@Param("userId") Integer userId, @Param("userId1") Integer userId1); Fie findFieState(@Param("userId") Integer userId, @Param("userId1") Integer userId1);
// 更新好友状态
void updFriedState(@Param("feiState") Integer feiState, @Param("userId") Integer userId); void updFriedState(@Param("feiState") Integer feiState, @Param("userId") Integer userId);
// 获取好友列表
List<Integer> FieList(Integer userId); List<Integer> FieList(Integer userId);
// 获取所有商品
List<Procut> AllProcut(); List<Procut> AllProcut();
// 添加用户
List<User> findAddAll(@Param("id") List<Integer> id); List<User> findAddAll(@Param("id") List<Integer> id);
// 更新好友请求状态
void updateFriedRequest(@Param("feiId") Integer feiId, @Param("state") Integer state); void updateFriedRequest(@Param("feiId") Integer feiId, @Param("state") Integer state);
// 查找好友id
Fie findUserId(Integer feiId); Fie findUserId(Integer feiId);
// 添加好友
void addFriend(@Param("userId") Integer userId, @Param("id") Integer id); void addFriend(@Param("userId") Integer userId, @Param("id") Integer id);
// 添加好友
void addFriends(@Param("id") Integer id, @Param("userId") Integer userId); void addFriends(@Param("id") Integer id, @Param("userId") Integer userId);
// 删除用户
Integer deleUser(@Param("userId") Integer userId, @Param("userId1") Integer userId1); Integer deleUser(@Param("userId") Integer userId, @Param("userId1") Integer userId1);
// 删除用户
Integer deleUsers(@Param("userId") Integer userId, @Param("userId1") Integer userId1); Integer deleUsers(@Param("userId") Integer userId, @Param("userId1") Integer userId1);
//批量删除好友申请
void deleteFriedRequest(@Param("ids") Integer[] ids);
} }

View File

@ -35,4 +35,5 @@ public interface UserService {
Result updateFriedRequest(Integer feiId, Integer state); Result updateFriedRequest(Integer feiId, Integer state);
Result deleteFriedRequest(Integer[] ids);
} }

View File

@ -18,12 +18,12 @@ import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList; import javax.swing.*;
import java.util.HashSet; import java.util.*;
import java.util.List;
import java.util.Random;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static java.lang.reflect.Array.set;
/** /**
* @author gxb * @author gxb
* @description TODO * @description TODO
@ -143,13 +143,17 @@ public class UserServicelmpl implements UserService{
List<Integer> friendId = userMapper.FriendId(user.getUserId()); List<Integer> friendId = userMapper.FriendId(user.getUserId());
//查询所有用户 //查询所有用户
List<Integer> userList = userMapper.findAllUser(); List<Integer> userList = userMapper.findAllUser();
//去重
HashSet<Integer> friend = new HashSet<>(friendId); //将两个列表转换为集合
HashSet<Integer> userId = new HashSet<>(userList); Set<Integer> set1 = new HashSet<>(friendId);
HashSet<Integer> hashSet = new HashSet<>(); Set<Integer> set2 = new HashSet<>(userList);
hashSet.addAll(friend);
hashSet.addAll(userId); //获取两个集合的不重复值
ArrayList<Integer> newUserIds = new ArrayList<>(hashSet); set2.removeAll(set1);
List<Integer> newUserIds = new ArrayList<Integer>(set2);
System.out.println("去重后的Ids"+newUserIds);
//塞值 //塞值
inqri.setUserIds(newUserIds); inqri.setUserIds(newUserIds);
List<User> users = userMapper.findAddAllUser(inqri); List<User> users = userMapper.findAddAllUser(inqri);
@ -252,6 +256,17 @@ public class UserServicelmpl implements UserService{
return Result.success("成功!!!!!!"); return Result.success("成功!!!!!!");
} }
/**
*
* @param ids
* @return
*/
@Override
public Result deleteFriedRequest(Integer[] ids) {
userMapper.deleteFriedRequest(ids);
return Result.success("删除成功");
}
private List<Procut> getChilren(Procut p,List<Procut> procutList){ private List<Procut> getChilren(Procut p,List<Procut> procutList){

View File

@ -37,6 +37,13 @@
from friend from friend
where user_id = #{userId} and friend_friends = #{userId1}; where user_id = #{userId} and friend_friends = #{userId1};
</delete> </delete>
<delete id="deleteFriedRequest">
delete from fei where fei_id in (
<foreach collection="ids" item="id" separator=",">
#{id}
</foreach>
)
</delete>
<select id="findName" resultType="com.bwie.common.domain.User"> <select id="findName" resultType="com.bwie.common.domain.User">
select <include refid="user"></include> select <include refid="user"></include>