Bläddra i källkod

update 特定收款账户特定财务分部

周箭河 5 år sedan
förälder
incheckning
6d6ba60e63

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysTenantAccountService.java

@@ -20,4 +20,15 @@ public interface SysTenantAccountService extends BaseService<Integer, SysTenantA
 	 * @return
 	 */
 	public boolean update(Integer userId, int minutes, String orderNo, TransType type, String transNo, BigDecimal cashAmount, String memo);
+
+	/**
+	 * 后台人工更新账户
+	 * @param teacherId 用户编号
+	 * @param minutes 分钟数
+	 * @param type 交易类型
+	 * @param operatorId 操作人
+	 * @param memo 备注
+	 * @return
+	 */
+	boolean manualUpdate(Integer teacherId, int minutes, TransType type,Integer operatorId, String memo);
 }

+ 44 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysTenantAccountServiceImpl.java

@@ -81,4 +81,48 @@ public class SysTenantAccountServiceImpl extends BaseServiceImpl<Integer, SysTen
 		return true;
 	}
 
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+	public boolean manualUpdate(Integer teacherId, int minutes, TransType type, Integer operatorId, String memo) {
+		Date date = new Date();
+		SysTenantAccount tenantAccount = sysTenantAccountDao.getLocked(teacherId);
+		if (tenantAccount == null) {
+			tenantAccount = new SysTenantAccount();
+			tenantAccount.setUserId(teacherId);
+			tenantAccount.setCreateTime(date);
+			tenantAccount.setUpdateTime(date);
+			tenantAccount.setStatus(AccountStatus.NORMAL);
+			tenantAccount.setAvailableMinutes(0);
+			tenantAccount.setFrozenMinutes(0);
+			sysTenantAccountDao.insert(tenantAccount);
+		}
+
+		if (tenantAccount.getStatus() != AccountStatus.NORMAL) {
+			throw new BizException("账户不可用");
+		}
+		int balance = tenantAccount.getAvailableMinutes() + minutes;
+		if (balance < 0) {
+			throw new BizException("账户[{}]可用时间不足,可用时间剩{}分钟", teacherId, tenantAccount.getAvailableMinutes());
+		}
+
+		tenantAccount.setAvailableMinutes(balance);
+		tenantAccount.setUpdateTime(date);
+		sysTenantAccountDao.update(tenantAccount);
+
+		SysTenantAccountDetail detail = new SysTenantAccountDetail();
+		detail.setTransMinutes(minutes);
+		detail.setTotalAvailableMinutes(tenantAccount.getAvailableMinutes());
+		detail.setMemo(memo);
+		detail.setCreateTime(date);
+		detail.setTransStatus(TransStatus.SUCCESS);
+		detail.setTransType(type);
+		detail.setUpdateTime(date);
+		detail.setUserId(teacherId);
+		detail.setOperatorId(operatorId);
+
+		sysTenantAccountDetailDao.insert(detail);
+
+		return true;
+	}
+
 }

+ 29 - 31
mec-web/src/main/java/com/ym/mec/web/controller/SysTenantAccountController.java

@@ -61,45 +61,43 @@ public class SysTenantAccountController extends BaseController {
     @ApiOperation(value = "增加分钟数")
     @PostMapping("/addMinutes")
     @PreAuthorize("@pcs.hasPermissions('userCashAccount/addMinutes')")
-    public Object addMinutes(Integer minutes, String memo) {
+    public Object addMinutes(Integer teacherId, Integer minutes, String memo) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
-        if(minutes == null || minutes < 0){
-			return failed("充值分钟数必须大于0");
-		}
-		if(memo == null || memo.isEmpty()){
-			return failed("备注信息不能为空");
-		}
-		Integer userId = sysUser.getId();
-		boolean updateRes = sysTenantAccountService.update(userId, minutes, null, SysTenantAccountDetail.TransType.MANUAL_ADD, null, BigDecimal.ZERO, memo);
-		if(!updateRes){
-			return failed("充值失败,请重试");
-		}
-		return succeed("充值成功");
-	}
+        if (minutes == null || minutes < 0) {
+            return failed("充值分钟数必须大于0");
+        }
+        if (memo == null || memo.isEmpty()) {
+            return failed("备注信息不能为空");
+        }
+        boolean updateRes = sysTenantAccountService.manualUpdate(teacherId, minutes, SysTenantAccountDetail.TransType.MANUAL_ADD, sysUser.getId(), memo);
+        if (!updateRes) {
+            return failed("充值失败,请重试");
+        }
+        return succeed("充值成功");
+    }
 
     @ApiOperation(value = "减分钟数")
     @PostMapping("/subtractMinutes")
     @PreAuthorize("@pcs.hasPermissions('userCashAccount/subtractMinutes')")
-    public Object subtractMinutes(Integer minutes, String memo) {
-		SysUser sysUser = sysUserFeignService.queryUserInfo();
-		if (sysUser == null) {
-			return failed(HttpStatus.FORBIDDEN, "请登录");
-		}
-		if(minutes == null || minutes < 0){
-			return failed("扣除分钟数必须大于0");
-		}
-		if(memo == null || memo.isEmpty()){
-			return failed("备注信息不能为空");
-		}
-		Integer userId = sysUser.getId();
-		boolean updateRes = sysTenantAccountService.update(userId, -minutes, null, SysTenantAccountDetail.TransType.MANUAL_SUB, null, BigDecimal.ZERO, memo);
-		if(!updateRes){
-			return failed("充值失败,请重试");
-		}
-		return succeed("充值成功");
+    public Object subtractMinutes(Integer teacherId, Integer minutes, String memo) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        if (minutes == null || minutes < 0) {
+            return failed("扣除分钟数必须大于0");
+        }
+        if (memo == null || memo.isEmpty()) {
+            return failed("备注信息不能为空");
+        }
+        boolean updateRes = sysTenantAccountService.manualUpdate(teacherId, -minutes, SysTenantAccountDetail.TransType.MANUAL_SUB, sysUser.getId(), memo);
+        if (!updateRes) {
+            return failed("充值失败,请重试");
+        }
+        return succeed("充值成功");
     }
 
 }