mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-04-20 02:55:04 +08:00
add 积分系统功能
This commit is contained in:
@@ -0,0 +1,141 @@
|
||||
package com.jsowell.web.controller.pile;
|
||||
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.jsowell.common.core.controller.BaseController;
|
||||
import com.jsowell.common.core.domain.AjaxResult;
|
||||
import com.jsowell.common.core.page.TableDataInfo;
|
||||
import com.jsowell.pile.domain.MemberPointsInfo;
|
||||
import com.jsowell.pile.domain.MemberPointsRecord;
|
||||
import com.jsowell.pile.service.MemberPointsInfoService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import io.swagger.annotations.ApiParam;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 会员积分Controller
|
||||
*
|
||||
* @author jsowell
|
||||
*/
|
||||
@Api(tags = "会员积分管理")
|
||||
@RestController
|
||||
@RequestMapping("/points")
|
||||
public class MemberPointsInfoController extends BaseController {
|
||||
|
||||
@Autowired
|
||||
private MemberPointsInfoService memberPointsInfoService;
|
||||
|
||||
/**
|
||||
* 查询个人积分余额
|
||||
*/
|
||||
@ApiOperation("查询个人积分余额")
|
||||
@PreAuthorize("@ss.hasPermi('member:points:query')")
|
||||
@GetMapping("/balance")
|
||||
public AjaxResult getBalance(@ApiParam(value = "会员ID", required = true) @RequestParam String memberId) {
|
||||
try {
|
||||
MemberPointsInfo pointsInfo = memberPointsInfoService.selectByMemberId(memberId);
|
||||
if (pointsInfo == null) {
|
||||
pointsInfo = MemberPointsInfo.builder()
|
||||
.memberId(memberId)
|
||||
.totalPoints(BigDecimal.ZERO)
|
||||
.build();
|
||||
}
|
||||
return AjaxResult.success(pointsInfo);
|
||||
} catch (Exception e) {
|
||||
logger.error("查询积分余额失败,memberId: {}", memberId, e);
|
||||
return AjaxResult.error("查询积分余额失败");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询积分明细列表
|
||||
*/
|
||||
@ApiOperation("查询积分明细列表")
|
||||
@PreAuthorize("@ss.hasPermi('member:points:list')")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo list(
|
||||
@ApiParam(value = "会员ID", required = true) @RequestParam String memberId,
|
||||
@ApiParam(value = "页码") @RequestParam(defaultValue = "1") Integer pageNum,
|
||||
@ApiParam(value = "每页数量") @RequestParam(defaultValue = "10") Integer pageSize) {
|
||||
PageHelper.startPage(pageNum, pageSize);
|
||||
List<MemberPointsRecord> list = memberPointsInfoService.getPointsRecordList(memberId);
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 增加积分(充电奖励)
|
||||
*/
|
||||
@ApiOperation("增加积分(充电奖励)")
|
||||
@PreAuthorize("@ss.hasPermi('member:points:add')")
|
||||
@PostMapping("/add")
|
||||
public AjaxResult addPoints(
|
||||
@ApiParam(value = "会员ID", required = true) @RequestParam String memberId,
|
||||
@ApiParam(value = "积分数量", required = true) @RequestParam BigDecimal points,
|
||||
@ApiParam(value = "关联订单号") @RequestParam(required = false) String orderCode) {
|
||||
try {
|
||||
boolean result = memberPointsInfoService.addPoints(memberId, points, orderCode);
|
||||
if (result) {
|
||||
return AjaxResult.success("积分增加成功");
|
||||
} else {
|
||||
return AjaxResult.error("积分增加失败");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.error("增加积分失败,memberId: {}, points: {}", memberId, points, e);
|
||||
return AjaxResult.error(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 扣减积分(消费抵扣)
|
||||
*/
|
||||
@ApiOperation("扣减积分(消费抵扣)")
|
||||
@PreAuthorize("@ss.hasPermi('member:points:deduct')")
|
||||
@PostMapping("/deduct")
|
||||
public AjaxResult deductPoints(
|
||||
@ApiParam(value = "会员ID", required = true) @RequestParam String memberId,
|
||||
@ApiParam(value = "积分数量", required = true) @RequestParam BigDecimal points,
|
||||
@ApiParam(value = "关联订单号") @RequestParam(required = false) String orderCode) {
|
||||
try {
|
||||
boolean result = memberPointsInfoService.deductPoints(memberId, points, orderCode);
|
||||
if (result) {
|
||||
return AjaxResult.success("积分扣减成功");
|
||||
} else {
|
||||
return AjaxResult.error("积分扣减失败");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.error("扣减积分失败,memberId: {}, points: {}", memberId, points, e);
|
||||
return AjaxResult.error(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化会员积分账户
|
||||
*/
|
||||
@ApiOperation("初始化会员积分账户")
|
||||
@PreAuthorize("@ss.hasPermi('member:points:init')")
|
||||
@PostMapping("/init")
|
||||
public AjaxResult initMemberPoints(
|
||||
@ApiParam(value = "会员ID", required = true) @RequestParam String memberId) {
|
||||
try {
|
||||
// 检查是否已存在
|
||||
MemberPointsInfo existInfo = memberPointsInfoService.selectByMemberId(memberId);
|
||||
if (existInfo != null) {
|
||||
return AjaxResult.error("该会员积分账户已存在");
|
||||
}
|
||||
int result = memberPointsInfoService.initMemberPoints(memberId);
|
||||
if (result > 0) {
|
||||
return AjaxResult.success("积分账户初始化成功");
|
||||
} else {
|
||||
return AjaxResult.error("积分账户初始化失败");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.error("初始化积分账户失败,memberId: {}", memberId, e);
|
||||
return AjaxResult.error("初始化积分账户失败");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user