游戏薪资后台操作
This commit is contained in:
@@ -13,4 +13,6 @@ public class UsersVo extends Users {
|
||||
private double diamondsNum;
|
||||
|
||||
private double guildUsdNum;
|
||||
|
||||
private double gameUsdNum;
|
||||
}
|
||||
|
@@ -12,12 +12,14 @@ import com.accompany.admin.vo.OfficialGoldAllRecordVo;
|
||||
import com.accompany.admin.vo.OfficialGoldRecordVo;
|
||||
import com.accompany.business.constant.OfficalSendTypeEnum;
|
||||
import com.accompany.business.constant.guild.GuildUsdOperateTypeEnum;
|
||||
import com.accompany.business.constant.guildgame.GameUsdOperateTypeEnum;
|
||||
import com.accompany.business.model.OfficialGoldBusType;
|
||||
import com.accompany.business.model.UserPurse;
|
||||
import com.accompany.business.model.guild.GuildMember;
|
||||
import com.accompany.business.service.WebConfigService;
|
||||
import com.accompany.business.service.guild.GuildMemberService;
|
||||
import com.accompany.business.service.guild.GuildUsdBillRecordService;
|
||||
import com.accompany.business.service.guildgame.GameUsdBillRecordService;
|
||||
import com.accompany.business.service.purse.UserPurseService;
|
||||
import com.accompany.business.service.record.BillRecordService;
|
||||
import com.accompany.business.service.user.UsersService;
|
||||
@@ -96,6 +98,8 @@ public class OfficialGoldRecordService extends BaseService {
|
||||
private GuildMemberService guildMemberService;
|
||||
@Autowired
|
||||
private GuildUsdBillRecordService guildUsdBillRecordService;
|
||||
@Autowired
|
||||
private GameUsdBillRecordService gameUsdBillRecordService;
|
||||
|
||||
public List<Map<String, Object>> listType(int adminId){
|
||||
boolean hasLimit = officialGoldRoleLimitService.hasLimit(adminId);
|
||||
@@ -156,6 +160,12 @@ public class OfficialGoldRecordService extends BaseService {
|
||||
case OFFICAL_PLUS_GUILD_USD:
|
||||
adjustUsd(ernos, type.getValue(), num, adminId, remark, busType, Boolean.TRUE);
|
||||
break;
|
||||
case OFFICAL_MINUS_GAME_USD:
|
||||
adjustGameUsd(ernos, type.getValue(), num, adminId, remark, busType, Boolean.FALSE);
|
||||
break;
|
||||
case OFFICAL_PLUS_GAME_USD:
|
||||
adjustGameUsd(ernos, type.getValue(), num, adminId, remark, busType, Boolean.TRUE);
|
||||
break;
|
||||
default:
|
||||
throw new AdminServiceException(BusiStatus.REQUEST_PARAM_ERROR);
|
||||
}
|
||||
@@ -332,7 +342,7 @@ public class OfficialGoldRecordService extends BaseService {
|
||||
}
|
||||
|
||||
/**
|
||||
* 官方调整薪资(增加或减少)
|
||||
* 官方调整公会薪资(增加或减少)
|
||||
* @param ernos 用户耳伴号列表,多个用换行分隔
|
||||
* @param type 操作类型
|
||||
* @param num 调整数量
|
||||
@@ -403,6 +413,78 @@ public class OfficialGoldRecordService extends BaseService {
|
||||
this.jedisLockService.unlock(RedisKey.lock_official_gold_send.getKey(), lockval);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 官方调整游戏薪资(增加或减少)
|
||||
* @param ernos 用户耳伴号列表,多个用换行分隔
|
||||
* @param type 操作类型
|
||||
* @param num 调整数量
|
||||
* @param optId 操作人ID
|
||||
* @param remark 备注
|
||||
* @param busType 业务类型
|
||||
* @param isPlus 是否为增加操作 true:增加 false:减少
|
||||
* @throws Exception
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void adjustGameUsd(String ernos, byte type, BigDecimal num, int optId, String remark, Integer busType, boolean isPlus) {
|
||||
|
||||
String lockval = null;
|
||||
try {
|
||||
lockval = this.jedisLockService.lock(RedisKey.lock_official_gold_send.getKey(), 3000);
|
||||
if (StringUtils.isEmpty(lockval)) {
|
||||
throw new AdminServiceException(BusiStatus.SERVERBUSY);
|
||||
}
|
||||
|
||||
List<String> erbanNos = Arrays.asList(ernos.trim().split("\n"));
|
||||
Map<Long, GuildMember> guildMemberMap = new HashMap<>();
|
||||
Map<Long, Users> usersMap = new HashMap<>();
|
||||
for (String erbanNoStr : erbanNos) {
|
||||
Long erbanNo = Long.parseLong(erbanNoStr.trim());
|
||||
if (usersMap.containsKey(erbanNo)) {
|
||||
continue;
|
||||
}
|
||||
Users u = usersService.getUserByErbanNo(erbanNo);
|
||||
if (u == null) {
|
||||
throw new AdminServiceException(BusiStatus.USERNOTEXISTS);
|
||||
}
|
||||
Long uid = u.getUid();
|
||||
GuildMember guildMemberByUid = guildMemberService.getVaildGuildMemberByUid(uid);
|
||||
if (guildMemberByUid == null) {
|
||||
throw new AdminServiceException("ID:" + erbanNoStr + " but not in guild, not allow operate");
|
||||
}
|
||||
guildMemberMap.put(uid, guildMemberByUid);
|
||||
usersMap.put(uid, u);
|
||||
}
|
||||
|
||||
// 分隔耳伴号,多个耳伴号用换行分隔
|
||||
for (Users users : usersMap.values()) {
|
||||
Long recordId = DefaultIdentifierGenerator.getInstance().nextId(null);
|
||||
Long uid = users.getUid();
|
||||
GuildMember guildMember = guildMemberMap.get(uid);
|
||||
|
||||
// 增加官方赠送活动记录
|
||||
addGoldRecord(recordId, users, type, Constant.WalletCurrencyType.gameUsd, num, optId, remark, busType, null);
|
||||
|
||||
if (isPlus) {
|
||||
// 增加账户usd数量
|
||||
UserPurse userPurse = userPurseService.addGameUsd(uid, num.doubleValue(), BillObjTypeEnum.PLUS_GAME_USD,
|
||||
(up) -> billRecordService.insertGeneralBillRecord(uid, uid, BillObjTypeEnum.PLUS_GAME_USD, num.doubleValue(), up));
|
||||
gameUsdBillRecordService.insert(UUIDUtil.get(), guildMember.getPartitionId(), guildMember.getId(), guildMember.getGuildId(), uid,
|
||||
guildMember.getId(), uid, GameUsdOperateTypeEnum.SYSTEM_PLUS_GAME_USD, null, userPurse, num, null, recordId, remark, new Date());
|
||||
logger.info("plusGameUsd success, erpan_no: {}, type: {}, num: {}, recordId: {}, remark: {}", users.getErbanNo(), type, num, recordId, remark);
|
||||
} else {
|
||||
// 减少账户usd数量
|
||||
UserPurse userPurse = userPurseService.subGameUsd(uid, num, BillObjTypeEnum.MIUNS_GAME_USD, NOT_ENOUGH_GUILD_USD,
|
||||
(up)-> billRecordService.insertGeneralBillRecord(uid, uid, BillObjTypeEnum.MIUNS_GUILD_USD, num.doubleValue(), up));
|
||||
gameUsdBillRecordService.insert(UUIDUtil.get(), guildMember.getPartitionId(), guildMember.getId(), guildMember.getGuildId(), uid,
|
||||
guildMember.getId(), uid, GameUsdOperateTypeEnum.SYSTEM_MIUNS_GAME_USD, userPurse, null, num, null, recordId, remark, new Date());
|
||||
logger.info("minusGameUsd success, erpan_no: {}, type: {}, num: {}, recordId: {}, remark: {}", users.getErbanNo(), type, num, recordId, remark);
|
||||
}
|
||||
|
||||
}
|
||||
} finally {
|
||||
this.jedisLockService.unlock(RedisKey.lock_official_gold_send.getKey(), lockval);
|
||||
}
|
||||
}
|
||||
|
||||
public long addGoldRecord(Long recordId, Users user, byte type, byte currencyType, BigDecimal num, int optId, String remark, Integer busType, BigDecimal actualAmount) {
|
||||
Long uid = user.getUid();
|
||||
@@ -412,7 +494,9 @@ public class OfficialGoldRecordService extends BaseService {
|
||||
if (Constant.OfficialType.interSendGold.byteValue() == type
|
||||
|| Constant.OfficialType.clearUserGold.byteValue() == type
|
||||
|| Constant.OfficialType.plusGuildUsd == type
|
||||
|| Constant.OfficialType.miunsGuildUsd == type) {
|
||||
|| Constant.OfficialType.miunsGuildUsd == type
|
||||
|| Constant.OfficialType.plusGameUsd == type
|
||||
|| Constant.OfficialType.miunsGameUsd == type) {
|
||||
diamondNum = num;
|
||||
} else {
|
||||
goldNum = num;
|
||||
|
@@ -42,11 +42,12 @@
|
||||
<result column="radish_num" property="radishNum" jdbcType="BIGINT"/>
|
||||
<result column="diamonds_num" property="diamondsNum" jdbcType="DOUBLE"/>
|
||||
<result column="guild_usd" property="guildUsdNum" jdbcType="DOUBLE"/>
|
||||
<result column="game_usd" property="gameUsdNum" jdbcType="DOUBLE"/>
|
||||
</resultMap>
|
||||
|
||||
<select id="selectUserWithGold" parameterType="java.util.Map" resultMap="BaseResultMap">
|
||||
/* SHARDINGSPHERE_HINT: WRITE_ROUTE_ONLY=true */
|
||||
select b.erban_no,b.nick,b.avatar,golds as gold_num, diamonds as diamonds_num, crystals as radish_num, guild_usd from
|
||||
select b.erban_no,b.nick,b.avatar,golds as gold_num, diamonds as diamonds_num, crystals as radish_num, guild_usd, game_usd from
|
||||
user_purse as a
|
||||
join users as b on a.uid=b.uid
|
||||
where b.erban_no in
|
||||
|
@@ -46,6 +46,8 @@ public class Constant {
|
||||
public static Byte interSendGold = 62; // 官方直接送钻石
|
||||
public static Byte miunsGuildUsd = 63; // 官方直接消除薪资
|
||||
public static Byte plusGuildUsd = 64; // 官方直接赠送薪资
|
||||
public static Byte miunsGameUsd = 65; // 官方直接消除薪资
|
||||
public static Byte plusGameUsd = 66; // 官方直接赠送薪资
|
||||
}
|
||||
|
||||
public static class AppVersion {
|
||||
@@ -2536,7 +2538,8 @@ public class Constant {
|
||||
public static final Byte gold = 0; // 金币 现为钻石
|
||||
public static final Byte radish = 1; // 水晶
|
||||
public static final Byte diamonds = 2; //钻石 现为金币
|
||||
public static final Byte usd = 4;
|
||||
public static final Byte usd = 4;//公会USD
|
||||
public static final Byte gameUsd = 5;//游戏USD
|
||||
}
|
||||
|
||||
public static class PrizePoolType {
|
||||
|
@@ -22,9 +22,13 @@ public enum OfficalSendTypeEnum {
|
||||
|
||||
OFFICAL_REDUCE_DIAMONDS(Constant.OfficialType.officalDiamondReduce,"官方金币消除", (byte)2),
|
||||
|
||||
OFFICAL_MINUS_GUILD_USD(Constant.OfficialType.miunsGuildUsd, "消除薪资", Constant.WalletCurrencyType.usd),
|
||||
OFFICAL_MINUS_GUILD_USD(Constant.OfficialType.miunsGuildUsd, "消除公会薪资", Constant.WalletCurrencyType.usd),
|
||||
|
||||
OFFICAL_PLUS_GUILD_USD(Constant.OfficialType.plusGuildUsd,"赠送薪资", Constant.WalletCurrencyType.usd),
|
||||
OFFICAL_PLUS_GUILD_USD(Constant.OfficialType.plusGuildUsd,"赠送公会薪资", Constant.WalletCurrencyType.usd),
|
||||
|
||||
OFFICAL_MINUS_GAME_USD(Constant.OfficialType.miunsGameUsd, "消除游戏薪资", Constant.WalletCurrencyType.gameUsd),
|
||||
|
||||
OFFICAL_PLUS_GAME_USD(Constant.OfficialType.plusGameUsd,"赠送游戏薪资", Constant.WalletCurrencyType.gameUsd),
|
||||
;
|
||||
|
||||
private byte value;
|
||||
|
@@ -55,6 +55,16 @@ public enum GameUsdOperateTypeEnum {
|
||||
false, CurrencyEnum.GAME_USD, null, null,
|
||||
BillObjTypeEnum.GAME_USD_TO_PLATFORM_OUT, null),
|
||||
|
||||
SYSTEM_PLUS_GAME_USD(9, null, null, null,
|
||||
false, null, CurrencyEnum.GAME_USD, null,
|
||||
null, BillObjTypeEnum.PLUS_GAME_USD),
|
||||
|
||||
SYSTEM_MIUNS_GAME_USD(10, null, null, null,
|
||||
false, CurrencyEnum.GAME_USD, null, null,
|
||||
BillObjTypeEnum.MIUNS_GAME_USD, null),
|
||||
|
||||
|
||||
|
||||
;
|
||||
|
||||
private int type;
|
||||
|
Reference in New Issue
Block a user