From bae167072d4044f6fd63936e99a7974c5f6eccfc Mon Sep 17 00:00:00 2001 From: hu177768073 <177768073@qq.com> Date: Wed, 23 Apr 2025 16:15:29 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/BsUserSpreadController.java | 35 +++++++++++++ .../hfkj/dao/BsGasOrderSpreadMapperExt.java | 6 +-- .../hfkj/dao/BsUserSpreadRelMapperExt.java | 5 +- .../spread/BsUserSpreadAccountService.java | 14 +++++- .../impl/BsUserSpreadAccountServiceImpl.java | 49 ++++++++++++++++++- .../spread/UserSpreadAccountStatusEnum.java | 33 +++++++++++++ 6 files changed, 135 insertions(+), 7 deletions(-) create mode 100644 service/src/main/java/com/hfkj/sysenum/spread/UserSpreadAccountStatusEnum.java diff --git a/bweb/src/main/java/com/bweb/controller/BsUserSpreadController.java b/bweb/src/main/java/com/bweb/controller/BsUserSpreadController.java index 32a1ed1..6aa98ad 100644 --- a/bweb/src/main/java/com/bweb/controller/BsUserSpreadController.java +++ b/bweb/src/main/java/com/bweb/controller/BsUserSpreadController.java @@ -13,6 +13,7 @@ import com.hfkj.entity.BsUserSpreadPower; import com.hfkj.entity.BsUserSpreadRel; import com.hfkj.model.ResponseData; import com.hfkj.model.UserSessionObject; +import com.hfkj.service.spread.BsUserSpreadAccountService; import com.hfkj.service.spread.BsUserSpreadOilChannelService; import com.hfkj.service.spread.BsUserSpreadPowerService; import com.hfkj.service.spread.BsUserSpreadRelService; @@ -41,6 +42,8 @@ public class BsUserSpreadController { @Resource private BsUserSpreadOilChannelService userSpreadOilChannelService; @Resource + private BsUserSpreadAccountService userSpreadAccountService; + @Resource private BsUserSpreadRelService userSpreadRelService; @RequestMapping(value = "/editOilChannel", method = RequestMethod.POST) @@ -104,6 +107,38 @@ public class BsUserSpreadController { } } + @RequestMapping(value = "/freezeUserSpread", method = RequestMethod.POST) + @ResponseBody + @ApiOperation(value = "冻结用户推广功能") + public ResponseData freezeUserSpread(@RequestBody JSONObject body) { + try { + if (body == null || body.getLong("userId") == null) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, ""); + } + userSpreadAccountService.freezeUserSpread(body.getLong("userId")); + return ResponseMsgUtil.success("操作成功"); + + } catch (Exception e) { + return ResponseMsgUtil.exception(e); + } + } + + @RequestMapping(value = "/unfreezeUserSpread", method = RequestMethod.POST) + @ResponseBody + @ApiOperation(value = "解冻用户推广功能") + public ResponseData unfreezeUserSpread(@RequestBody JSONObject body) { + try { + if (body == null || body.getLong("userId") == null) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, ""); + } + userSpreadAccountService.unfreezeUserSpread(body.getLong("userId")); + return ResponseMsgUtil.success("操作成功"); + + } catch (Exception e) { + return ResponseMsgUtil.exception(e); + } + } + @RequestMapping(value = "/getOilChannelList", method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "查询油站渠道列表") diff --git a/service/src/main/java/com/hfkj/dao/BsGasOrderSpreadMapperExt.java b/service/src/main/java/com/hfkj/dao/BsGasOrderSpreadMapperExt.java index 756ec42..ee85fe8 100644 --- a/service/src/main/java/com/hfkj/dao/BsGasOrderSpreadMapperExt.java +++ b/service/src/main/java/com/hfkj/dao/BsGasOrderSpreadMapperExt.java @@ -20,17 +20,17 @@ public interface BsGasOrderSpreadMapperExt { " select " + " sum(b.gains_rebate_amount) totalAmount" + " from bs_gas_order a LEFT JOIN bs_gas_order_spread b on a.order_no = b.order_no" + - " WHERE DATE_FORMAT(a.pay_time, '%Y-%m-%d') = DATE_SUB(CURDATE(), INTERVAL 1 DAY) and a.`status` = 2 and b.gains_rebate_user_id = #{param.userId}" + + " WHERE DATE_FORMAT(a.pay_time, '%Y-%m-%d') = DATE_SUB(CURDATE(), INTERVAL 1 DAY) and a.`status` = 2 and b.`status` = 1 and b.gains_rebate_user_id = #{param.userId}" + " union all" + " select " + " sum(b.gains_rebate_one_amount) totalAmount" + " from bs_gas_order a LEFT JOIN bs_gas_order_spread b on a.order_no = b.order_no" + - " WHERE DATE_FORMAT(a.pay_time, '%Y-%m-%d') = DATE_SUB(CURDATE(), INTERVAL 1 DAY) and a.`status` = 2 and b.gains_rebate_one_user_id = #{param.userId}" + + " WHERE DATE_FORMAT(a.pay_time, '%Y-%m-%d') = DATE_SUB(CURDATE(), INTERVAL 1 DAY) and a.`status` = 2 and b.`status` = 1 and b.gains_rebate_one_user_id = #{param.userId}" + " union all" + " select " + " sum(b.gains_rebate_two_amount) totalAmount" + " from bs_gas_order a LEFT JOIN bs_gas_order_spread b on a.order_no = b.order_no" + - " WHERE DATE_FORMAT(a.pay_time, '%Y-%m-%d') = DATE_SUB(CURDATE(), INTERVAL 1 DAY) and a.`status` = 2 and b.gains_rebate_two_user_id = #{param.userId}" + + " WHERE DATE_FORMAT(a.pay_time, '%Y-%m-%d') = DATE_SUB(CURDATE(), INTERVAL 1 DAY) and a.`status` = 2 and b.`status` = 1 and b.gains_rebate_two_user_id = #{param.userId}" + " ) a") HashMap querySettleOrderList(@Param("param") Map param); diff --git a/service/src/main/java/com/hfkj/dao/BsUserSpreadRelMapperExt.java b/service/src/main/java/com/hfkj/dao/BsUserSpreadRelMapperExt.java index 2e80efc..62a84bb 100644 --- a/service/src/main/java/com/hfkj/dao/BsUserSpreadRelMapperExt.java +++ b/service/src/main/java/com/hfkj/dao/BsUserSpreadRelMapperExt.java @@ -31,7 +31,8 @@ public interface BsUserSpreadRelMapperExt { " b.id userId," + " b.user_name userName," + " b.phone," + - " b.create_time createTime," + + " a.create_time createTime," + + " a.status," + " count(c.id) spreadCount" + " from bs_user_spread_power a" + " LEFT JOIN bs_user b on b.id = a.user_id" + @@ -39,7 +40,7 @@ public interface BsUserSpreadRelMapperExt { " where 1 = 1" + " and b.phone like concat('%',#{param.phone},'%') " + " GROUP BY b.id" + - " ORDER BY b.create_time desc" + + " ORDER BY a.create_time desc" + "") List> getUserSpreadList(@Param("param") Map param); } diff --git a/service/src/main/java/com/hfkj/service/spread/BsUserSpreadAccountService.java b/service/src/main/java/com/hfkj/service/spread/BsUserSpreadAccountService.java index d913049..bce13d5 100644 --- a/service/src/main/java/com/hfkj/service/spread/BsUserSpreadAccountService.java +++ b/service/src/main/java/com/hfkj/service/spread/BsUserSpreadAccountService.java @@ -28,7 +28,19 @@ public interface BsUserSpreadAccountService { void update(BsUserSpreadAccount data); /** - * 查询用户余额 + * 冻结账户 + * @param userId + */ + void freezeUserSpread(Long userId); + + /** + * 解除冻结 + * @param userId + */ + void unfreezeUserSpread(Long userId); + + /** + * 查询详情 * @param userId * @return */ diff --git a/service/src/main/java/com/hfkj/service/spread/impl/BsUserSpreadAccountServiceImpl.java b/service/src/main/java/com/hfkj/service/spread/impl/BsUserSpreadAccountServiceImpl.java index 534704b..4beac2c 100644 --- a/service/src/main/java/com/hfkj/service/spread/impl/BsUserSpreadAccountServiceImpl.java +++ b/service/src/main/java/com/hfkj/service/spread/impl/BsUserSpreadAccountServiceImpl.java @@ -11,9 +11,11 @@ import com.hfkj.dao.BsUserSpreadAccountMapper; import com.hfkj.entity.*; import com.hfkj.service.spread.BsUserSpreadAccountRecordService; import com.hfkj.service.spread.BsUserSpreadAccountService; +import com.hfkj.service.spread.BsUserSpreadPowerService; import com.hfkj.service.user.BsUserService; import com.hfkj.sysenum.merchant.MerchantAccountRecordTypeEnum; import com.hfkj.sysenum.spread.UserSpreadAccountRecordSourceTypeEnum; +import com.hfkj.sysenum.spread.UserSpreadAccountStatusEnum; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.data.redis.core.RedisTemplate; @@ -43,6 +45,8 @@ public class BsUserSpreadAccountServiceImpl implements BsUserSpreadAccountServic @Resource private BsUserSpreadAccountRecordService userSpreadAccountRecordService; @Resource + private BsUserSpreadPowerService userSpreadPowerService; + @Resource private RedisTemplate redisTemplate; private static final String LOCK_KEY = "USER_SPREAD_ACCOUNT_LOCK_"; @Override @@ -63,10 +67,44 @@ public class BsUserSpreadAccountServiceImpl implements BsUserSpreadAccountServic userSpreadAccountMapper.updateByPrimaryKey(data); } + @Override + public void freezeUserSpread(Long userId) { + // 查询账户 + BsUserSpreadAccount account = getDetailByUser(userId); + if (account == null) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未找到账户"); + } + account.setStatus(UserSpreadAccountStatusEnum.status2.getType()); + update(account); + // 推广权限 + BsUserSpreadPower userSpreadPower = userSpreadPowerService.getDetailByUser(account.getUserId()); + if (userSpreadPower != null) { + userSpreadPower.setStatus(UserSpreadAccountStatusEnum.status2.getType()); + userSpreadPowerService.editData(userSpreadPower); + } + } + + @Override + public void unfreezeUserSpread(Long userId) { + // 查询账户 + BsUserSpreadAccount account = getDetailByUser(userId); + if (account == null) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未找到账户"); + } + account.setStatus(UserSpreadAccountStatusEnum.status1.getType()); + update(account); + // 推广权限 + BsUserSpreadPower userSpreadPower = userSpreadPowerService.getDetailByUser(account.getUserId()); + if (userSpreadPower != null) { + userSpreadPower.setStatus(UserSpreadAccountStatusEnum.status1.getType()); + userSpreadPowerService.editData(userSpreadPower); + } + } + @Override public BsUserSpreadAccount getDetailByUser(Long userId) { BsUserSpreadAccountExample example = new BsUserSpreadAccountExample(); - example.createCriteria().andUserIdEqualTo(userId).andStatusNotEqualTo(0); + example.createCriteria().andUserIdEqualTo(userId).andStatusNotEqualTo(UserSpreadAccountStatusEnum.status0.getType()); List list = userSpreadAccountMapper.selectByExample(example); if (!list.isEmpty()){ return list.get(0); @@ -93,6 +131,9 @@ public class BsUserSpreadAccountServiceImpl implements BsUserSpreadAccountServic if (userSpreadAccount == null) { throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未找到账户"); } + if (!userSpreadAccount.getStatus().equals(UserSpreadAccountStatusEnum.status1.getType())) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "账户已被冻结"); + } if (userSpreadAccount.getAmount().compareTo(amount) < 0) { throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "余额不足"); } @@ -145,6 +186,9 @@ public class BsUserSpreadAccountServiceImpl implements BsUserSpreadAccountServic if (account == null) { throw ErrorHelp.genException(SysCode.OpenApi, ErrorCode.OPEN_API_COMMON, "未知账户"); } + if (!account.getStatus().equals(UserSpreadAccountStatusEnum.status1.getType())) { + throw ErrorHelp.genException(SysCode.OpenApi, ErrorCode.OPEN_API_COMMON, "账户不可用"); + } // 变更前金额 BigDecimal beforeAmount = account.getAmount(); // 计算金额 @@ -205,6 +249,9 @@ public class BsUserSpreadAccountServiceImpl implements BsUserSpreadAccountServic if (account == null) { throw ErrorHelp.genException(SysCode.OpenApi, ErrorCode.OPEN_API_COMMON, "未知账户"); } + if (!account.getStatus().equals(UserSpreadAccountStatusEnum.status1.getType())) { + throw ErrorHelp.genException(SysCode.OpenApi, ErrorCode.OPEN_API_COMMON, "账户不可用"); + } // 变更前金额 BigDecimal beforeAmount = account.getAmount(); // 计算金额 diff --git a/service/src/main/java/com/hfkj/sysenum/spread/UserSpreadAccountStatusEnum.java b/service/src/main/java/com/hfkj/sysenum/spread/UserSpreadAccountStatusEnum.java new file mode 100644 index 0000000..441d20f --- /dev/null +++ b/service/src/main/java/com/hfkj/sysenum/spread/UserSpreadAccountStatusEnum.java @@ -0,0 +1,33 @@ +package com.hfkj.sysenum.spread; + +import lombok.Getter; + +/** + * + * @author hurui + */ +@Getter +public enum UserSpreadAccountStatusEnum { + /** + * 不可用 + */ + status0(0 , "不可用"), + /** + * 正常 + */ + status1(1 , "正常"), + /** + * 已冻结 + */ + status2(2 , "已冻结"), + ; + + private Integer type; + private String name; + + UserSpreadAccountStatusEnum(int type , String name) { + this.type = type; + this.name = name; + } + +}