diff --git a/src/main/java/com/sqx/modules/app/dao/UserMoneyDao.java b/src/main/java/com/sqx/modules/app/dao/UserMoneyDao.java index 6d1959ee..c97d8ed1 100644 --- a/src/main/java/com/sqx/modules/app/dao/UserMoneyDao.java +++ b/src/main/java/com/sqx/modules/app/dao/UserMoneyDao.java @@ -9,6 +9,8 @@ public interface UserMoneyDao extends BaseMapper { void updateMayMoney(@Param("type") Integer type, @Param("userId")Long userId, @Param("money") Double money); + void updateMayAmount(@Param("type") Integer type, @Param("userId")Long userId, @Param("money") Double amount); + void updateSysMoney(@Param("type") Integer type, @Param("sysUserId")Long sysUserId, @Param("money") Double money); } diff --git a/src/main/java/com/sqx/modules/app/entity/UserMoney.java b/src/main/java/com/sqx/modules/app/entity/UserMoney.java index f990c3df..f6818712 100644 --- a/src/main/java/com/sqx/modules/app/entity/UserMoney.java +++ b/src/main/java/com/sqx/modules/app/entity/UserMoney.java @@ -32,6 +32,12 @@ public class UserMoney implements Serializable { @ApiModelProperty("钱包金豆") private BigDecimal money; + /** + * 钱包金豆 + */ + @ApiModelProperty("钱包余额 钱") + private BigDecimal amount; + /** * 用户id */ diff --git a/src/main/java/com/sqx/modules/app/service/UserMoneyService.java b/src/main/java/com/sqx/modules/app/service/UserMoneyService.java index ab795e29..a18a38b8 100644 --- a/src/main/java/com/sqx/modules/app/service/UserMoneyService.java +++ b/src/main/java/com/sqx/modules/app/service/UserMoneyService.java @@ -11,6 +11,8 @@ public interface UserMoneyService extends IService { void updateMoney(int i, Long userId, double money); + void updateAmount(int i, Long userId, double amount); + void updateSysMoney(int i, Long userId, double money); } diff --git a/src/main/java/com/sqx/modules/app/service/impl/UserMoneyServiceImpl.java b/src/main/java/com/sqx/modules/app/service/impl/UserMoneyServiceImpl.java index 51da5eaf..0cfcb905 100644 --- a/src/main/java/com/sqx/modules/app/service/impl/UserMoneyServiceImpl.java +++ b/src/main/java/com/sqx/modules/app/service/impl/UserMoneyServiceImpl.java @@ -18,6 +18,12 @@ public class UserMoneyServiceImpl extends ServiceImpl i baseMapper.updateMayMoney(i,userId,money); } + @Override + public void updateAmount(int i, Long userId, double amount){ + selectUserMoneyByUserId(userId); + baseMapper.updateMayAmount(i,userId,amount); + } + @Override public void updateSysMoney(int i, Long userId, double money){ selectSysUserMoneyByUserId(userId); diff --git a/src/main/java/com/sqx/modules/discSpinning/controller/DiscSpinningController.java b/src/main/java/com/sqx/modules/discSpinning/controller/DiscSpinningController.java index fe3c6661..1fe9da6d 100644 --- a/src/main/java/com/sqx/modules/discSpinning/controller/DiscSpinningController.java +++ b/src/main/java/com/sqx/modules/discSpinning/controller/DiscSpinningController.java @@ -1,10 +1,16 @@ package com.sqx.modules.discSpinning.controller; - import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.sqx.common.utils.DateUtils; import com.sqx.common.utils.Result; +import com.sqx.modules.app.entity.UserEntity; +import com.sqx.modules.app.entity.UserMoney; +import com.sqx.modules.app.entity.UserMoneyDetails; +import com.sqx.modules.app.service.UserMoneyDetailsService; +import com.sqx.modules.app.service.UserMoneyService; +import com.sqx.modules.app.service.UserService; +import com.sqx.modules.common.entity.CommonInfo; import com.sqx.modules.common.service.CommonInfoService; import com.sqx.modules.discSpinning.entity.DiscSpinning; import com.sqx.modules.discSpinning.entity.DiscSpinningRecord; @@ -12,37 +18,55 @@ import com.sqx.modules.discSpinning.service.DiscSpinningRecordService; import com.sqx.modules.discSpinning.service.DiscSpinningService; import com.sqx.modules.orders.entity.Orders; import com.sqx.modules.orders.service.OrdersService; +import com.sqx.modules.pay.entity.CashOut; +import com.sqx.modules.pay.service.CashOutService; +import com.sqx.modules.pay.wuyou.BaseResp; +import com.sqx.modules.pay.wuyou.WuyouPay; +import com.sqx.modules.utils.AliPayOrderUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import java.math.BigDecimal; import java.math.RoundingMode; +import java.text.SimpleDateFormat; import java.util.*; @Slf4j @RestController @Api(value = "大转盘", tags = {"大转盘"}) -@RequestMapping(value = "/discSpinning") +@RequestMapping public class DiscSpinningController { private final DiscSpinningService discSpinningService; private final CommonInfoService commonRepository; private final OrdersService ordersService; private final DiscSpinningRecordService recordService; + private final UserMoneyService userMoneyService; + private final UserMoneyDetailsService userMoneyDetailsService; + private final UserService userService; + private final CashOutService cashOutService; @Autowired - public DiscSpinningController(CommonInfoService commonRepository, DiscSpinningService discSpinningService,OrdersService ordersService,DiscSpinningRecordService recordService) { + public DiscSpinningController(CommonInfoService commonRepository, DiscSpinningService discSpinningService, + UserMoneyDetailsService userMoneyDetailsService, CashOutService cashOutService, + OrdersService ordersService, DiscSpinningRecordService recordService, UserMoneyService userMoneyService, UserService userService) { this.commonRepository = commonRepository; this.discSpinningService = discSpinningService; this.ordersService = ordersService; this.recordService = recordService; + this.userMoneyService = userMoneyService; + this.userMoneyDetailsService = userMoneyDetailsService; + this.userService = userService; + this.cashOutService = cashOutService; } - @PostMapping("/insertDiscSpinning") + @PostMapping("/discSpinning/insertDiscSpinning") @ApiOperation("添加大转盘") public Result insertDiscSpinning(@RequestBody DiscSpinning discSpinning) { discSpinning.setCreateTime(DateUtils.format(new Date())); @@ -50,16 +74,16 @@ public class DiscSpinningController { return Result.success(); } - @GetMapping("/{id}") + @GetMapping("/discSpinning/{id}") @ApiOperation("通过Id查询详情") public Result selectOne(@PathVariable Integer id) { return Result.success().put("data", discSpinningService.getById(id)); } - @PostMapping("/updateDiscSpinning") + @PostMapping("/discSpinning/updateDiscSpinning") @ApiOperation("修改大转盘") public Result updateDiscSpinning(@RequestBody DiscSpinning discSpinning) { - List prizes = discSpinningService.list(new QueryWrapper().orderByAsc("type","id")); + List prizes = discSpinningService.list(new QueryWrapper().orderByAsc("type", "id")); BigDecimal number = BigDecimal.ZERO; List prizesResult = new ArrayList<>(); for (DiscSpinning prize : prizes) { @@ -68,7 +92,7 @@ public class DiscSpinningController { discSpinning.setNumber(number); prize.setOdds(discSpinning.getOdds()); prizesResult.add(discSpinning); - }else if (number.compareTo(BigDecimal.ZERO) > 0) { + } else if (number.compareTo(BigDecimal.ZERO) > 0) { number = number.add(prize.getOdds()); prize.setNumber(number); prizesResult.add(prize); @@ -85,20 +109,20 @@ public class DiscSpinningController { return Result.success(); } - @PostMapping("/deleteDiscSpinning") + @PostMapping("/discSpinning/deleteDiscSpinning") @ApiOperation("删除大转盘") public Result deleteDiscSpinning(Long id) { discSpinningService.removeById(id); return Result.success(); } - @GetMapping("/selectDiscSpinning") + @GetMapping("/app/discSpinning/selectDiscSpinning") @ApiOperation("查询大转盘") public Result selectDiscSpinning() { return Result.success().put("data", discSpinningService.page(new Page<>(0, 8), new QueryWrapper().orderByAsc("odds"))); } - @PostMapping("/draw") + @PostMapping("/app/discSpinning/draw") @ApiOperation("抽取大转盘") public Result draw(Long orderId, @RequestAttribute("userId") Long userId) { int drawCount = Integer.parseInt(commonRepository.findOne(901).getValue()); @@ -107,12 +131,74 @@ public class DiscSpinningController { return Result.error("当日可抽奖次数已超限"); } Orders order = ordersService.selectOrderById(orderId); - return new Result().put("data", draws(order.getPayMoney().doubleValue(),order.getOrdersId(), userId)); + return new Result().put("data", draws(order.getPayMoney().doubleValue(), order.getOrdersId(), userId)); } + @PostMapping("/app/discSpinning/receive") + @ApiOperation("大转盘奖项领取") + @Transactional + public Result receive(DiscSpinningRecord receive) { + UserEntity userInfo = userService.queryByUserId(receive.getUserId()); + if (StringUtils.isNotBlank(userInfo.getZhiFuBao()) && StringUtils.isNotBlank(userInfo.getZhiFuBaoName())) { + receive.setTarget("1"); + //提现 + withdraw(receive, receive.getUserId(), receive.getNumber().doubleValue()); + }else { + UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); + userMoneyDetails.setClassify(5); + userMoneyDetails.setMoney(receive.getNumber()); + userMoneyDetails.setUserId(receive.getUserId()); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + userMoneyDetails.setCreateTime(simpleDateFormat.format(new Date())); + userMoneyDetails.setContent("现金大转盘:现金红包奖励"); + userMoneyDetails.setTitle("现金大转盘:现金红包奖励" + receive.getNumber() + "元"); + userMoneyDetails.setState(2); + userMoneyDetails.setType(1); + //存入余额 钱 + userMoneyService.updateAmount(1, receive.getUserId(), receive.getNumber().doubleValue()); + receive.setTarget("2"); + userMoneyDetailsService.save(userMoneyDetails); + receive.setTargetId(userMoneyDetails.getId()); + } + recordService.updateById(receive); + return Result.success(); + } - public DiscSpinning draws(double orderAmount,Long orderId,Long userId) { - DiscSpinning result = new DiscSpinning("谢谢惠顾",1,null); + public void withdraw(DiscSpinningRecord record, Long userId, Double money) { + UserEntity userInfo = userService.queryByUserId(userId); + //最高提现金额 + CommonInfo one2 = commonRepository.findOne(910); + CashOut cashOut = new CashOut(); + cashOut.setIsOut(false); + cashOut.setMoney(money.toString()); + cashOut.setUserId(userInfo.getUserId()); + cashOut.setZhifubao(userInfo.getZhiFuBao()); + cashOut.setZhifubaoName(userInfo.getZhiFuBaoName()); + + cashOut.setState(0); + cashOut.setRate(0.00); + cashOut.setUserType(1); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String date = sdf.format(new Date()); + cashOut.setCreateAt(date); + if (one2 != null && money >= Double.parseDouble(one2.getValue())) { + cashOutService.saveBody(cashOut); + return; + } + + String outOrderNo = AliPayOrderUtil.createOrderId(); + cashOut.setOrderNumber(outOrderNo); + BaseResp baseResp = WuyouPay.extractOrder(outOrderNo, cashOut.getMoney(), cashOut.getZhifubao(), cashOut.getZhifubaoName()); + if (baseResp.getStatus().equals(2)) { + cashOut.setState(1); + } + cashOutService.saveBody(cashOut); + record.setTargetId(cashOut.getId()); + } + + @Transactional + public DiscSpinningRecord draws(double orderAmount, Long orderId, Long userId) { + DiscSpinning result = new DiscSpinning("谢谢惠顾", 1, null); List prizes = discSpinningService.list(); Random random = new Random(); double randomDouble; @@ -149,15 +235,16 @@ public class DiscSpinningController { if (resultAmount > maxAmount) { resultAmount = maxAmount; } - result = new DiscSpinning(prize.getName(),2,new BigDecimal(resultAmount).setScale(2, RoundingMode.HALF_UP)); - }else { + result = new DiscSpinning(prize.getName(), 2, new BigDecimal(resultAmount).setScale(2, RoundingMode.HALF_UP)); + } else { result = prize; } } } - recordService.save(new DiscSpinningRecord(result.getName(),orderId,userId,result.getType(), - result.getNumber(),DateUtils.formatYMD(new Date()),DateUtils.format(new Date()))); - return result; + DiscSpinningRecord record = new DiscSpinningRecord(result.getName(), orderId, userId, result.getType(), + result.getNumber(), DateUtils.formatYMD(new Date()), DateUtils.format(new Date())); + recordService.save(record); + return record; } } diff --git a/src/main/java/com/sqx/modules/discSpinning/controller/DiscSpinningRecordController.java b/src/main/java/com/sqx/modules/discSpinning/controller/DiscSpinningRecordController.java index fe0fa7c8..2484457e 100644 --- a/src/main/java/com/sqx/modules/discSpinning/controller/DiscSpinningRecordController.java +++ b/src/main/java/com/sqx/modules/discSpinning/controller/DiscSpinningRecordController.java @@ -18,7 +18,7 @@ import java.util.Date; @Slf4j @RestController @Api(value = "大转盘抽奖记录", tags = {"大转盘抽奖记录"}) -@RequestMapping(value = "/discSpinningRecord") +@RequestMapping(value = "/app/discSpinningRecord") public class DiscSpinningRecordController { /** * 服务对象 diff --git a/src/main/java/com/sqx/modules/discSpinning/entity/DiscSpinningRecord.java b/src/main/java/com/sqx/modules/discSpinning/entity/DiscSpinningRecord.java index bffbe195..8a407b59 100644 --- a/src/main/java/com/sqx/modules/discSpinning/entity/DiscSpinningRecord.java +++ b/src/main/java/com/sqx/modules/discSpinning/entity/DiscSpinningRecord.java @@ -40,7 +40,10 @@ public class DiscSpinningRecord extends Model { //创建时间 private String createTime; - public DiscSpinningRecord(String name,Long orderId, Long userId, Integer type, BigDecimal number, String drawDay, String createTime) { + public DiscSpinningRecord() { + } + + public DiscSpinningRecord(String name, Long orderId, Long userId, Integer type, BigDecimal number, String drawDay, String createTime) { this.name = name; this.userId = userId; this.orderId = orderId; diff --git a/src/main/java/com/sqx/modules/job/task/CashOutTask.java b/src/main/java/com/sqx/modules/job/task/CashOutTask.java new file mode 100644 index 00000000..141f54a3 --- /dev/null +++ b/src/main/java/com/sqx/modules/job/task/CashOutTask.java @@ -0,0 +1,40 @@ +package com.sqx.modules.job.task; + +import com.sqx.modules.pay.dao.CashOutDao; +import com.sqx.modules.pay.entity.CashOut; +import com.sqx.modules.pay.wuyou.BaseResp; +import com.sqx.modules.pay.wuyou.WuyouPay; +import com.sqx.modules.utils.AliPayOrderUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component("CashOutTask") +public class CashOutTask implements ITask{ + + @Autowired + private CashOutDao cashOutDao; + + private Logger logger = LoggerFactory.getLogger(getClass()); + + @Override + public void run(String params) { + logger.info("提现开始"); + List cashOuts = cashOutDao.selectYesterday(); + for (CashOut cashOut : cashOuts) { + String outOrderNo = AliPayOrderUtil.createOrderId(); + cashOut.setOrderNumber(outOrderNo); + BaseResp baseResp = WuyouPay.extractOrder(outOrderNo, cashOut.getMoney(), cashOut.getZhifubao(), cashOut.getZhifubaoName()); + if (baseResp.getStatus().equals(2)) { + cashOut.setState(1); + }else { + cashOut.setRefund(baseResp.getMsg()); + } + cashOutDao.updateById(cashOut); + } + logger.info("提现结束"); + } +} diff --git a/src/main/java/com/sqx/modules/pay/controller/CashController.java b/src/main/java/com/sqx/modules/pay/controller/CashController.java index 5496c7a9..4def651f 100644 --- a/src/main/java/com/sqx/modules/pay/controller/CashController.java +++ b/src/main/java/com/sqx/modules/pay/controller/CashController.java @@ -471,5 +471,11 @@ public class CashController { } + @GetMapping(value = "/withdraw") + @ApiOperation("发起提现 余额 金钱") + public Result withdraw(Long userId,Double amount) + { + return cashOutService.withdraw(userId,amount); + } } \ No newline at end of file diff --git a/src/main/java/com/sqx/modules/pay/controller/app/WuyouController.java b/src/main/java/com/sqx/modules/pay/controller/app/WuyouController.java index 0f3895f7..6f4d7316 100644 --- a/src/main/java/com/sqx/modules/pay/controller/app/WuyouController.java +++ b/src/main/java/com/sqx/modules/pay/controller/app/WuyouController.java @@ -1,20 +1,26 @@ package com.sqx.modules.pay.controller.app; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.sqx.common.utils.DateUtils; import com.sqx.common.utils.Result; import com.sqx.modules.app.entity.UserEntity; +import com.sqx.modules.app.entity.UserMoney; import com.sqx.modules.app.service.UserService; import com.sqx.modules.invite.service.InviteService; import com.sqx.modules.orders.entity.Orders; import com.sqx.modules.orders.service.OrdersService; +import com.sqx.modules.pay.dao.CashOutDao; import com.sqx.modules.pay.dao.PayDetailsDao; +import com.sqx.modules.pay.entity.CashOut; import com.sqx.modules.pay.entity.PayDetails; +import com.sqx.modules.pay.service.CashOutService; import com.sqx.modules.pay.wuyou.*; import com.sqx.modules.utils.AliPayOrderUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; @@ -37,14 +43,16 @@ public class WuyouController { private final PayDetailsDao payDetailsDao; private final UserService userService; private final InviteService inviteService; + private final CashOutDao cashOutDao; private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - WuyouController(OrdersService ordersService, PayDetailsDao payDetailsDao, UserService userService, InviteService inviteService) { + WuyouController(OrdersService ordersService, PayDetailsDao payDetailsDao, UserService userService, InviteService inviteService, CashOutDao cashOutDao) { this.ordersService = ordersService; this.payDetailsDao = payDetailsDao; this.userService = userService; this.inviteService = inviteService; + this.cashOutDao = cashOutDao; } @ApiOperation("支付订单") @@ -99,7 +107,14 @@ public class WuyouController { log.error("无忧支付提现回调签名错误, 参数: {},签名结果:{}", JSONObject.toJSONString(notifyDto), sign); return "签名错误"; } - + CashOut cashOut = cashOutDao.selectOne(new QueryWrapper().eq("order_number", notifyDto.getOut_trade_no())); + if (cashOut != null) { + if(notifyDto.getStatus().equals("2")){ + cashOut.setState(1); + }else { + cashOut.setRefund(notifyDto.getMsg()); + } + } return "success"; } diff --git a/src/main/java/com/sqx/modules/pay/dao/CashOutDao.java b/src/main/java/com/sqx/modules/pay/dao/CashOutDao.java index 5a8b0a79..7561dbbd 100644 --- a/src/main/java/com/sqx/modules/pay/dao/CashOutDao.java +++ b/src/main/java/com/sqx/modules/pay/dao/CashOutDao.java @@ -19,6 +19,8 @@ public interface CashOutDao extends BaseMapper { List selectCashOutLimit3(); + List selectYesterday(); + Double selectCashOutSum(@Param("userId") Long userId, @Param("startTime") Date startTime, @Param("endTime") Date endTime); Double sumMoney(@Param("time") String time, @Param("flag") Integer flag); diff --git a/src/main/java/com/sqx/modules/pay/service/CashOutService.java b/src/main/java/com/sqx/modules/pay/service/CashOutService.java index 79e32493..6439d431 100644 --- a/src/main/java/com/sqx/modules/pay/service/CashOutService.java +++ b/src/main/java/com/sqx/modules/pay/service/CashOutService.java @@ -42,4 +42,12 @@ public interface CashOutService { Result sysCashMoney(Long userId, Double money); + /** + * + * @param userId 用户Id tb_user的id + * @param money 提现金额 + * @return + */ + Result withdraw(Long userId, Double money); + } diff --git a/src/main/java/com/sqx/modules/pay/service/impl/CashOutServiceImpl.java b/src/main/java/com/sqx/modules/pay/service/impl/CashOutServiceImpl.java index 218e429c..878a289e 100644 --- a/src/main/java/com/sqx/modules/pay/service/impl/CashOutServiceImpl.java +++ b/src/main/java/com/sqx/modules/pay/service/impl/CashOutServiceImpl.java @@ -19,8 +19,11 @@ import com.sqx.modules.message.entity.MessageInfo; import com.sqx.modules.pay.dao.CashOutDao; import com.sqx.modules.pay.entity.CashOut; import com.sqx.modules.pay.service.CashOutService; +import com.sqx.modules.pay.wuyou.BaseResp; +import com.sqx.modules.pay.wuyou.WuyouPay; import com.sqx.modules.sys.entity.SysUserEntity; import com.sqx.modules.sys.service.SysUserService; +import com.sqx.modules.utils.AliPayOrderUtil; import com.sqx.modules.utils.AmountCalUtils; import com.sqx.modules.utils.excel.ExcelData; import org.apache.commons.lang.StringUtils; @@ -45,7 +48,7 @@ import java.util.List; * 提现申请记录 */ @Service -public class CashOutServiceImpl extends ServiceImpl implements CashOutService { +public class CashOutServiceImpl extends ServiceImpl implements CashOutService{ /** * 提现申请记录 @@ -74,8 +77,8 @@ public class CashOutServiceImpl extends ServiceImpl impleme private SysUserService sysUserService; @Override - public PageUtils selectCashOutList(Integer page,Integer limit,CashOut cashOut) { - return new PageUtils(baseMapper.selectCashOutPage(new Page<>(page,limit),cashOut)); + public PageUtils selectCashOutList(Integer page, Integer limit, CashOut cashOut) { + return new PageUtils(baseMapper.selectCashOutPage(new Page<>(page, limit), cashOut)); } @@ -85,34 +88,43 @@ public class CashOutServiceImpl extends ServiceImpl impleme ExcelData data = new ExcelData(); data.setName("提现列表"); List titles = new ArrayList(); - titles.add("编号");titles.add("用户类型");titles.add("用户名称");titles.add("支付宝账号");titles.add("支付宝名称"); - titles.add("提现金豆");titles.add("状态"); - titles.add("拒绝原因");titles.add("申请时间");titles.add("转账/拒绝时间");titles.add("转账订单号"); + titles.add("编号"); + titles.add("用户类型"); + titles.add("用户名称"); + titles.add("支付宝账号"); + titles.add("支付宝名称"); + titles.add("提现金豆"); + titles.add("状态"); + titles.add("拒绝原因"); + titles.add("申请时间"); + titles.add("转账/拒绝时间"); + titles.add("转账订单号"); data.setTitles(titles); List> rows = new ArrayList(); - for(CashOut cashOut:cashOutList){ + for (CashOut cashOut : cashOutList) { List row = new ArrayList(); row.add(cashOut.getId()); - if (cashOut.getUserType()==1){ + if (cashOut.getUserType() == 1) { row.add("用户"); row.add(cashOut.getUserName()); - }else{ + } else { row.add("分销商"); row.add(cashOut.getSysUserName()); } - row.add(cashOut.getZhifubao());row.add(cashOut.getZhifubaoName()); + row.add(cashOut.getZhifubao()); + row.add(cashOut.getZhifubaoName()); row.add(cashOut.getMoney()); - if(cashOut.getState()==-1){ + if (cashOut.getState() == -1) { row.add("已拒绝"); - }else if(cashOut.getState()==0){ + } else if (cashOut.getState() == 0) { row.add("待转账"); - }else{ + } else { row.add("成功"); } - row.add(cashOut.getRefund()==null?"":cashOut.getRefund()); + row.add(cashOut.getRefund() == null ? "" : cashOut.getRefund()); row.add(cashOut.getCreateAt()); - row.add(StringUtils.isEmpty(cashOut.getOutAt())?"":cashOut.getOutAt()); + row.add(StringUtils.isEmpty(cashOut.getOutAt()) ? "" : cashOut.getOutAt()); row.add(cashOut.getOrderNumber()); rows.add(row); } @@ -141,7 +153,7 @@ public class CashOutServiceImpl extends ServiceImpl impleme @Override public void cashOutSuccess(String openId, String date, String money, String payWay, String url) { UserEntity userByWxId = userService.queryByWxOpenId(openId); - if(userByWxId!=null){ + if (userByWxId != null) { MessageInfo messageInfo = new MessageInfo(); messageInfo.setState(String.valueOf(5)); messageInfo.setIsSee("0"); @@ -232,7 +244,7 @@ public class CashOutServiceImpl extends ServiceImpl impleme @Override public void updateMayMoney(int i, Long userId, Double money) { - cashOutDao.updateMayMoney(i,userId,money); + cashOutDao.updateMayMoney(i, userId, money); } @@ -268,43 +280,43 @@ public class CashOutServiceImpl extends ServiceImpl impleme @Override @Transactional - public Result cashMoney(Long userId, Double money){ - if(money==null || money<=0.00){ + public Result cashMoney(Long userId, Double money) { + if (money == null || money <= 0.00) { return Result.error("请不要输入小于0的数字,请输入正确的提现金豆!"); } //最低提现金豆 CommonInfo one = commonInfoService.findOne(112); - if(one!=null && money=Double.parseDouble(one2.getValue())){ - return Result.error(-100,"输入金豆过大,不能大于"+one2.getValue()+",请重新输入!"); + if (one2 != null && money >= Double.parseDouble(one2.getValue())) { + return Result.error(-100, "输入金豆过大,不能大于" + one2.getValue() + ",请重新输入!"); } //手续费 CommonInfo one1 = commonInfoService.findOne(152); Double mul = AmountCalUtils.mul(money, Double.parseDouble(one1.getValue())); - if(mul<0.01){ - mul=0.01; + if (mul < 0.01) { + mul = 0.01; } // UserMoney userMoney=userMoneyService.selectUserMoneyByUserId(userId); InviteMoney inviteMoney = inviteMoneyService.selectInviteMoneyByUserId(userId); UserEntity userEntity = userService.selectUserById(userId); //提现判断金豆是否足够 Double moneySum = AmountCalUtils.add(new BigDecimal(money), new BigDecimal(mul)).doubleValue(); //金豆=提现金豆+手续费 - if(inviteMoney.getMoney()>=moneySum){ //用户金豆足够 + if (inviteMoney.getMoney() >= moneySum) { //用户金豆足够 //扣除可提现金豆 - inviteMoneyService.updateInviteMoneyCashOut(2,moneySum,userId); + inviteMoneyService.updateInviteMoneyCashOut(2, moneySum, userId); //增加金豆操作记录 - UserMoneyDetails userMoneyDetails=new UserMoneyDetails(); + UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); userMoneyDetails.setUserId(userId); - userMoneyDetails.setTitle("提现:"+money); - userMoneyDetails.setContent("支付宝提现:"+money+",手续费:"+mul+",总计:"+moneySum); + userMoneyDetails.setTitle("提现:" + money); + userMoneyDetails.setContent("支付宝提现:" + money + ",手续费:" + mul + ",总计:" + moneySum); userMoneyDetails.setType(2); userMoneyDetails.setClassify(2); userMoneyDetails.setMoney(new BigDecimal(moneySum)); - SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); userMoneyDetails.setCreateTime(sdf.format(new Date())); userMoneyDetailsService.save(userMoneyDetails); CashOut cashOut = new CashOut(); @@ -320,50 +332,50 @@ public class CashOutServiceImpl extends ServiceImpl impleme baseMapper.insert(cashOut); // inviteMoneyDao.updateInviteMoneyCashOut(1,money,userId); return Result.success("提现成功,将在三个工作日内到账,请耐心等待!"); - }else{ + } else { return Result.error("金豆不足,请输入正确的提现金豆!"); } } @Override @Transactional - public Result sysCashMoney(Long userId, Double money){ - if(money==null || money<=0.00){ + public Result sysCashMoney(Long userId, Double money) { + if (money == null || money <= 0.00) { return Result.error("请不要输入小于0的数字,请输入正确的提现金豆!"); } //最低提现金豆 CommonInfo one = commonInfoService.findOne(112); - if(one!=null && money=Double.parseDouble(one2.getValue())){ - return Result.error(-100,"输入金豆过大,不能大于"+one2.getValue()+",请重新输入!"); + if (one2 != null && money >= Double.parseDouble(one2.getValue())) { + return Result.error(-100, "输入金豆过大,不能大于" + one2.getValue() + ",请重新输入!"); } //手续费 CommonInfo one1 = commonInfoService.findOne(152); Double mul = AmountCalUtils.mul(money, Double.parseDouble(one1.getValue())); - if(mul<0.01){ - mul=0.01; + if (mul < 0.01) { + mul = 0.01; } - UserMoney userMoney=userMoneyService.selectSysUserMoneyByUserId(userId); + UserMoney userMoney = userMoneyService.selectSysUserMoneyByUserId(userId); SysUserEntity sysUserEntity = sysUserService.getById(userId); //提现判断金豆是否足够 Double moneySum = AmountCalUtils.add(new BigDecimal(money), new BigDecimal(mul)).doubleValue(); //金豆=提现金豆+手续费 - if(userMoney.getMoney().doubleValue()>=moneySum){ //用户金豆足够 + if (userMoney.getMoney().doubleValue() >= moneySum) { //用户金豆足够 //扣除可提现金豆 - userMoneyService.updateSysMoney(2,userId,moneySum); + userMoneyService.updateSysMoney(2, userId, moneySum); //增加金豆操作记录 - UserMoneyDetails userMoneyDetails=new UserMoneyDetails(); + UserMoneyDetails userMoneyDetails = new UserMoneyDetails(); userMoneyDetails.setSysUserId(userId); - userMoneyDetails.setTitle("提现:"+money); - userMoneyDetails.setContent("提现:"+money+",手续费:"+mul+",总计:"+moneySum); + userMoneyDetails.setTitle("提现:" + money); + userMoneyDetails.setContent("提现:" + money + ",手续费:" + mul + ",总计:" + moneySum); userMoneyDetails.setType(2); userMoneyDetails.setClassify(2); userMoneyDetails.setMoney(new BigDecimal(moneySum)); - SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); userMoneyDetails.setCreateTime(sdf.format(new Date())); userMoneyDetailsService.save(userMoneyDetails); CashOut cashOut = new CashOut(); @@ -380,9 +392,64 @@ public class CashOutServiceImpl extends ServiceImpl impleme baseMapper.insert(cashOut); // inviteMoneyDao.updateInviteMoneyCashOut(1,money,userId); return Result.success("提现成功,将在三个工作日内到账,请耐心等待!"); - }else{ + } else { return Result.error("金豆不足,请输入正确的提现金豆!"); } } + + @Override + @Transactional + public Result withdraw(Long userId, Double money) { + if (money == null || money <= 0.00) { + return Result.error("请不要输入小于0的数字,请输入正确的提现金额!"); + } + UserEntity userInfo = userService.queryByUserId(userId); + //最低提现金额 +// CommonInfo one = commonInfoService.findOne(112); +// if(one!=null && money= money) { //用户金豆足够 + //扣除可提现余额 + userMoneyService.updateAmount(2, userId, money); + }else { + return Result.success("可提现余额不足!"); + } + BaseResp baseResp = WuyouPay.extractOrder(outOrderNo, cashOut.getMoney(), cashOut.getZhifubao(), cashOut.getZhifubaoName()); + if (baseResp.getStatus().equals(2)) { + userMoneyDetails.setContent("成功提现:" + money); + userMoneyDetails.setState(2); + cashOut.setState(1); + } + userMoneyDetailsService.save(userMoneyDetails); + baseMapper.insert(cashOut); + return Result.success("提现成功,将在三个工作日内到账,请耐心等待!"); + } + } diff --git a/src/main/java/com/sqx/modules/pay/wuyou/WuyouPay.java b/src/main/java/com/sqx/modules/pay/wuyou/WuyouPay.java index 1c281bd5..340f00bd 100644 --- a/src/main/java/com/sqx/modules/pay/wuyou/WuyouPay.java +++ b/src/main/java/com/sqx/modules/pay/wuyou/WuyouPay.java @@ -43,6 +43,12 @@ public class WuyouPay { return JSONObject.parseObject(body, BaseResp.class); } + /** + * 提现 + * @param account 支付宝账号 + * @param userName 支付宝名称 + * @return + */ public static BaseResp extractOrder(String outOrderNo, String amount, String account, String userName) { Map params = getBaseParams(); diff --git a/src/main/resources/mapper/app/UserMoneyDao.xml b/src/main/resources/mapper/app/UserMoneyDao.xml index a70a1e12..8782f93e 100644 --- a/src/main/resources/mapper/app/UserMoneyDao.xml +++ b/src/main/resources/mapper/app/UserMoneyDao.xml @@ -14,6 +14,17 @@ where user_id=#{userId} + + update user_money set + + amount=amount+#{amount} + + + amount=amount-#{amount} + + where user_id=#{userId} + + update user_money set diff --git a/src/main/resources/mapper/pay/CashDao.xml b/src/main/resources/mapper/pay/CashDao.xml index cf5b7e1d..75073d42 100644 --- a/src/main/resources/mapper/pay/CashDao.xml +++ b/src/main/resources/mapper/pay/CashDao.xml @@ -7,6 +7,14 @@ select * from cash_out where state=1 order by out_at desc limit 3 + +