yonge 5 years ago
parent
commit
194aff5f86

+ 12 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentManageAccountBaseInfoDto.java

@@ -12,6 +12,9 @@ public class StudentManageAccountBaseInfoDto {
 
     @ApiModelProperty(value = "账户余额",required = false)
     private BigDecimal balance;
+    
+    @ApiModelProperty(value = "课程余额",required = false)
+    private BigDecimal courseBalance;
 
     @ApiModelProperty(value = "银行名称",required = false)
     private String bankName;
@@ -27,7 +30,15 @@ public class StudentManageAccountBaseInfoDto {
         this.balance = balance;
     }
 
-    public String getBankName() {
+    public BigDecimal getCourseBalance() {
+		return courseBalance;
+	}
+
+	public void setCourseBalance(BigDecimal courseBalance) {
+		this.courseBalance = courseBalance;
+	}
+
+	public String getBankName() {
         return bankName;
     }
 

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SysUserCashAccount.java

@@ -33,6 +33,10 @@ public class SysUserCashAccount {
 	@ApiModelProperty(value = "保证金余额",required = false)
 	private BigDecimal marginBalance;
 	
+	/** 课程余额余额 */
+	@ApiModelProperty(value = "课程余额",required = false)
+	private BigDecimal courseBalance;
+	
 	/** 账户状态(0,冻结,1,正常;-1,注销;) */
 	@ApiModelProperty(value = "账户状态",required = false)
 	private PlatformCashAccountStatusEnum status;
@@ -93,6 +97,14 @@ public class SysUserCashAccount {
 		this.marginBalance = marginBalance;
 	}
 
+	public BigDecimal getCourseBalance() {
+		return courseBalance;
+	}
+
+	public void setCourseBalance(BigDecimal courseBalance) {
+		this.courseBalance = courseBalance;
+	}
+
 	public PlatformCashAccountStatusEnum getStatus() {
 		return status;
 	}

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysUserCashAccountService.java

@@ -14,4 +14,11 @@ public interface SysUserCashAccountService extends BaseService<Integer, SysUserC
 	 * @return
 	 */
 	boolean updateBalance(Integer userId, BigDecimal decimal);
+
+	/**
+	 * 将课程余额转入到可用余额
+	 * @param userId
+	 * @return
+	 */
+	boolean transferCourseBalanceToBalance(Integer userId);
 }

+ 41 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysUserCashAccountServiceImpl.java

@@ -9,7 +9,11 @@ import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
 import com.ym.mec.biz.dal.dao.SysUserCashAccountDao;
+import com.ym.mec.biz.dal.dao.SysUserCashAccountDetailDao;
 import com.ym.mec.biz.dal.entity.SysUserCashAccount;
+import com.ym.mec.biz.dal.entity.SysUserCashAccountDetail;
+import com.ym.mec.biz.dal.enums.DealStatusEnum;
+import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
 import com.ym.mec.biz.dal.enums.PlatformCashAccountStatusEnum;
 import com.ym.mec.biz.service.SysUserCashAccountService;
 import com.ym.mec.common.dal.BaseDAO;
@@ -22,6 +26,9 @@ public class SysUserCashAccountServiceImpl extends BaseServiceImpl<Integer, SysU
 	@Autowired
 	private SysUserCashAccountDao sysUserCashAccountDao;
 
+	@Autowired
+	private SysUserCashAccountDetailDao sysUserCashAccountDetailDao;
+
 	@Override
 	public BaseDAO<Integer, SysUserCashAccount> getDAO() {
 		return sysUserCashAccountDao;
@@ -52,4 +59,38 @@ public class SysUserCashAccountServiceImpl extends BaseServiceImpl<Integer, SysU
 		return true;
 	}
 
+	@Override
+	@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+	public boolean transferCourseBalanceToBalance(Integer userId) {
+		SysUserCashAccount cashAccount = sysUserCashAccountDao.getLocked(userId);
+		if (cashAccount == null) {
+			throw new BizException("用户[{}]现金账户不存在", userId);
+		}
+
+		if (cashAccount.getStatus() != PlatformCashAccountStatusEnum.NORMAL) {
+			throw new BizException("账户不可用");
+		}
+
+		Date date = new Date();
+
+		SysUserCashAccountDetail detail = new SysUserCashAccountDetail();
+		detail.setAmount(cashAccount.getCourseBalance());
+		detail.setBalance(cashAccount.getBalance().add(cashAccount.getCourseBalance()));
+		detail.setComment("课程余额转账");
+		detail.setCreateTime(date);
+		detail.setStatus(DealStatusEnum.SUCCESS);
+		detail.setType(PlatformCashAccountDetailTypeEnum.FILL_ACCOUNT);
+		detail.setUpdateTime(date);
+		detail.setUserId(userId);
+
+		sysUserCashAccountDetailDao.insert(detail);
+
+		cashAccount.setBalance(cashAccount.getBalance().add(cashAccount.getCourseBalance()));
+		cashAccount.setCourseBalance(new BigDecimal(0));
+		cashAccount.setUpdateTime(date);
+
+		sysUserCashAccountDao.update(cashAccount);
+		return true;
+	}
+
 }

+ 2 - 0
mec-biz/src/main/resources/config/mybatis/StudentManageDao.xml

@@ -27,6 +27,7 @@
 
     <resultMap id="studentManageAccountBaseInfo" type="com.ym.mec.biz.dal.dto.StudentManageAccountBaseInfoDto">
         <result property="balance" column="balance_"/>
+        <result property="courseBalance" column="course_balance_"/>
         <result property="bankName" column="bank_name_"/>
         <result property="cardNo" column="card_no_"/>
     </resultMap>
@@ -292,6 +293,7 @@
     <select id="getStudentAccountBaseInfo" resultMap="studentManageAccountBaseInfo">
         SELECT
             suca.balance_,
+            suca.course_balance_,
             subc.bank_name_,
             subc.card_no_
         FROM

+ 4 - 0
mec-biz/src/main/resources/config/mybatis/SysUserCashAccountMapper.xml

@@ -12,6 +12,7 @@
         <result column="balance_" property="balance"/>
         <result column="frozen_amount_" property="frozenAmount"/>
         <result column="margin_balance_" property="marginBalance"/>
+        <result column="course_balance_" property="courseBalance"/>
         <result column="status_" property="status" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="create_time_" property="createTime"/>
         <result column="update_time" property="updateTime"/>
@@ -61,6 +62,9 @@
             <if test="marginBalance != null">
                 margin_balance_ = #{marginBalance},
             </if>
+            <if test="courseBalance != null">
+                course_balance_ = #{courseBalance},
+            </if>
             <if test="currency != null">
                 currency_ = #{currency},
             </if>

+ 37 - 29
mec-web/src/main/java/com/ym/mec/web/controller/SysUserCashAccountController.java

@@ -1,46 +1,54 @@
 package com.ym.mec.web.controller;
 
-import com.ym.mec.auth.api.client.SysUserFeignService;
-import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.service.SysUserCashAccountService;
-import com.ym.mec.common.controller.BaseController;
-import com.ym.mec.common.page.QueryInfo;
-
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.service.SysUserCashAccountService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.page.QueryInfo;
+
 @RequestMapping("userCashAccount")
 @Api(tags = "用户账户服务")
 @RestController
 public class SysUserCashAccountController extends BaseController {
 
-    @Autowired
-    private SysUserCashAccountService sysUserCashAccountService;
-    @Autowired
-    private SysUserFeignService sysUserFeignService;
-
-    @ApiOperation(value = "获取用户账户信息")
-    @GetMapping("/get")
-    @PreAuthorize("@pcs.hasPermissions('userCashAccount/get')")
-    public Object add() {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if(sysUser == null){
-            return failed("请重新登录");
-        }
-        return succeed(sysUserCashAccountService.get(sysUser.getId()));
-    }
-
-    @ApiOperation(value = "分页查询收费类型列表")
-    @GetMapping("/queryPage")
-    @PreAuthorize("@pcs.hasPermissions('userCashAccount/queryPage')")
-    public Object queryPage(QueryInfo queryInfo) {
-        return succeed(sysUserCashAccountService.queryPage(queryInfo));
-    }
-
+	@Autowired
+	private SysUserCashAccountService sysUserCashAccountService;
+	@Autowired
+	private SysUserFeignService sysUserFeignService;
+
+	@ApiOperation(value = "获取用户账户信息")
+	@GetMapping("/get")
+	@PreAuthorize("@pcs.hasPermissions('userCashAccount/get')")
+	public Object add() {
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if (sysUser == null) {
+			return failed("请重新登录");
+		}
+		return succeed(sysUserCashAccountService.get(sysUser.getId()));
+	}
+
+	@ApiOperation(value = "分页查询收费类型列表")
+	@GetMapping("/queryPage")
+	@PreAuthorize("@pcs.hasPermissions('userCashAccount/queryPage')")
+	public Object queryPage(QueryInfo queryInfo) {
+		return succeed(sysUserCashAccountService.queryPage(queryInfo));
+	}
+
+	@ApiOperation(value = "分页查询收费类型列表")
+	@PostMapping("/transferCourseBalanceToBalance")
+	@PreAuthorize("@pcs.hasPermissions('userCashAccount/transferCourseBalanceToBalance')")
+	public Object transferCourseBalanceToBalance(Integer userId) {
+		sysUserCashAccountService.transferCourseBalanceToBalance(userId);
+		return succeed();
+	}
 }