diff --git a/cweb/src/main/java/com/cweb/controller/BsUserController.java b/cweb/src/main/java/com/cweb/controller/BsUserController.java index f8810cf..0a98a9b 100644 --- a/cweb/src/main/java/com/cweb/controller/BsUserController.java +++ b/cweb/src/main/java/com/cweb/controller/BsUserController.java @@ -2,6 +2,7 @@ package com.cweb.controller; import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.alipay.api.request.AlipaySystemOauthTokenRequest; import com.alipay.api.response.AlipaySystemOauthTokenResponse; @@ -15,13 +16,17 @@ import com.hfkj.common.utils.HttpsUtils; import com.hfkj.common.utils.MemberValidateUtil; import com.hfkj.common.utils.RedisUtil; import com.hfkj.common.utils.ResponseMsgUtil; +import com.hfkj.config.CommonSysConst; import com.hfkj.config.WxMaConfiguration; import com.hfkj.entity.BsAgentApiParam; +import com.hfkj.entity.BsDiscountUser; import com.hfkj.model.ResponseData; import com.hfkj.model.SecUserSessionObject; import com.hfkj.model.UserSessionObject; import com.hfkj.service.agent.BsAgentApiParamService; +import com.hfkj.service.discount.BsDiscountUserService; import com.hfkj.service.user.BsUserService; +import com.hfkj.sysenum.discount.DiscountUserStatusEnum; import com.hfkj.sysenum.user.UserLoginPlatform; import com.hfkj.sysenum.user.UserLoginType; import io.swagger.annotations.Api; @@ -55,6 +60,8 @@ public class BsUserController { @Resource private BsAgentApiParamService agentApiParamService; @Resource + private BsDiscountUserService discountUserService; + @Resource private BsUserService userService; @RequestMapping(value = "/autoLogin", method = RequestMethod.POST) @@ -218,11 +225,33 @@ public class BsUserController { @ApiOperation(value = "查询用户信息") public ResponseData queryUser() { try { + UserSessionObject userSessionObject = userCenter.getSessionModel(UserSessionObject.class); + JSONObject data = JSONObject.parseObject(JSONObject.toJSONString(userSessionObject), JSONObject.class); + + int totalDiscountCoupon = 0; + // 加油优惠券数量 + Map param = new HashMap<>(); + param.put("userId", userSessionObject.getUser().getId()); + param.put("status", DiscountUserStatusEnum.type1.getCode()); + totalDiscountCoupon += discountUserService.getUserDiscountList(param).size(); - return ResponseMsgUtil.success(userCenter.getSessionModel(UserSessionObject.class)); + // 非油优惠券数量 + try { + param.clear(); + param.put("appid", CommonSysConst.getSysConfig().getPhgAppid()); + param.put("phone", userSessionObject.getUser().getPhone()); + param.put("status", 1); // 状态 0:已过期 1:未使用 2:已使用 + param.put("sign", SignatureUtil.createSign(param, CommonSysConst.getSysConfig().getPhgAppSecret())); + JSONObject response = HttpsUtils.doPost(CommonSysConst.getSysConfig().getPhgReqUrl()+"/crest/output/getListUserDiscount", JSONObject.toJSONString(param)); + if (response.getString("return_code").equals("000000")) { + totalDiscountCoupon += response.getJSONArray("return_data").size(); + }; + } catch (Exception e) {} + data.put("couponNum", totalDiscountCoupon); + return ResponseMsgUtil.success(data); } catch (Exception e) { - log.error("LoginController --> wechatMaPhone() error!", e); + log.error("LoginController --> queryUser() error!", e); return ResponseMsgUtil.exception(e); } } diff --git a/cweb/src/main/java/com/cweb/controller/TestController.java b/cweb/src/main/java/com/cweb/controller/TestController.java index 3f3e32e..11e2550 100644 --- a/cweb/src/main/java/com/cweb/controller/TestController.java +++ b/cweb/src/main/java/com/cweb/controller/TestController.java @@ -58,7 +58,14 @@ public class TestController { @ApiOperation(value = "结算订单") public ResponseData settleOrder() { try { - gasOrderSpreadService.settleOrder(4L); + List accountList = userSpreadAccountService.getList(new HashMap<>()); + for (BsUserSpreadAccount account : accountList) { + try { + gasOrderSpreadService.settleOrder(account.getUserId()); + } catch (Exception e) { + System.out.println("用户ID:"+account.getUserId()+",账户结算异常"); + } + } return ResponseMsgUtil.success(""); @@ -90,7 +97,10 @@ public class TestController { public ResponseData cancelTransferBills(@RequestParam(value = "outBillNo", required = true) String outBillNo) { try { - return ResponseMsgUtil.success(WxUtils.cancelTransferBills(outBillNo)); + userSpreadAccountService.cancelWithdraw(outBillNo); + + // return ResponseMsgUtil.success(WxUtils.cancelTransferBills(outBillNo)); + return ResponseMsgUtil.success(""); } catch (Exception e) { return ResponseMsgUtil.exception(e); diff --git a/cweb/src/main/java/com/cweb/controller/WeiXinNotifyController.java b/cweb/src/main/java/com/cweb/controller/WeiXinNotifyController.java index 442ebac..f674d34 100644 --- a/cweb/src/main/java/com/cweb/controller/WeiXinNotifyController.java +++ b/cweb/src/main/java/com/cweb/controller/WeiXinNotifyController.java @@ -62,6 +62,9 @@ public class WeiXinNotifyController { if (record != null) { String state = data.getString("state"); if (state.equals("CANCELLED") || state.equals("FAIL")) { + record.setStatus(0); + userSpreadAccountRecordService.update(record); + // 充值余账户余额 Map otherParam = new HashMap<>(); otherParam.put("sourceContent", state.equals("CANCELLED")?"撤销提现":"转账失败"); diff --git a/service/src/main/java/com/hfkj/dao/BsGasOrderMapperExt.java b/service/src/main/java/com/hfkj/dao/BsGasOrderMapperExt.java index 587363d..1674f01 100644 --- a/service/src/main/java/com/hfkj/dao/BsGasOrderMapperExt.java +++ b/service/src/main/java/com/hfkj/dao/BsGasOrderMapperExt.java @@ -60,7 +60,7 @@ public interface BsGasOrderMapperExt { "") int countTodayOrder(@Param("userPhone") String userPhone); @Select("") @Results({ @Result(column="id", property="id", jdbcType= JdbcType.BIGINT, id=true), diff --git a/service/src/main/java/com/hfkj/dao/BsGasOrderSpreadMapperExt.java b/service/src/main/java/com/hfkj/dao/BsGasOrderSpreadMapperExt.java index e616035..756ec42 100644 --- a/service/src/main/java/com/hfkj/dao/BsGasOrderSpreadMapperExt.java +++ b/service/src/main/java/com/hfkj/dao/BsGasOrderSpreadMapperExt.java @@ -14,15 +14,24 @@ import java.util.Map; public interface BsGasOrderSpreadMapperExt { @Select(" select " + - " DATE_SUB(CURDATE(), INTERVAL 1 DAY) settle_date," + - " case when sum(b.gains_rebate_amount) is not null then sum(b.gains_rebate_amount) else 0 end gains_rebate_amount," + - " case when sum(b.gains_rebate_one_amount) is not null then sum(b.gains_rebate_one_amount) else 0 end gains_rebate_one_amount," + - " case when sum(b.gains_rebate_two_amount) is not null then sum(b.gains_rebate_two_amount) else 0 end gains_rebate_two_amount" + - " from bs_gas_order a" + - " LEFT JOIN bs_gas_order_spread b on a.order_no = b.order_no" + - " WHERE DATE_FORMAT(a.pay_time, '%Y-%m-%d') = DATE_SUB(CURDATE(), INTERVAL 1 DAY)" + - " and (gains_rebate_user_id = #{param.userId} or gains_rebate_one_user_id = #{param.userId} or gains_rebate_two_user_id = #{param.userId})" + - " and a.`status` = 2") + " DATE_SUB(CURDATE(), INTERVAL 1 DAY) settleDate," + + " case when sum(totalAmount) is not null then sum(totalAmount) else 0 end settleAmount" + + " from (" + + " select " + + " sum(b.gains_rebate_amount) totalAmount" + + " from bs_gas_order a LEFT JOIN bs_gas_order_spread b on a.order_no = b.order_no" + + " WHERE DATE_FORMAT(a.pay_time, '%Y-%m-%d') = DATE_SUB(CURDATE(), INTERVAL 1 DAY) and a.`status` = 2 and b.gains_rebate_user_id = #{param.userId}" + + " union all" + + " select " + + " sum(b.gains_rebate_one_amount) totalAmount" + + " from bs_gas_order a LEFT JOIN bs_gas_order_spread b on a.order_no = b.order_no" + + " WHERE DATE_FORMAT(a.pay_time, '%Y-%m-%d') = DATE_SUB(CURDATE(), INTERVAL 1 DAY) and a.`status` = 2 and b.gains_rebate_one_user_id = #{param.userId}" + + " union all" + + " select " + + " sum(b.gains_rebate_two_amount) totalAmount" + + " from bs_gas_order a LEFT JOIN bs_gas_order_spread b on a.order_no = b.order_no" + + " WHERE DATE_FORMAT(a.pay_time, '%Y-%m-%d') = DATE_SUB(CURDATE(), INTERVAL 1 DAY) and a.`status` = 2 and b.gains_rebate_two_user_id = #{param.userId}" + + " ) a") HashMap querySettleOrderList(@Param("param") Map param); @Select(" select " + diff --git a/service/src/main/java/com/hfkj/service/gas/impl/BsGasOrderSpreadServiceImpl.java b/service/src/main/java/com/hfkj/service/gas/impl/BsGasOrderSpreadServiceImpl.java index fe05767..5d80533 100644 --- a/service/src/main/java/com/hfkj/service/gas/impl/BsGasOrderSpreadServiceImpl.java +++ b/service/src/main/java/com/hfkj/service/gas/impl/BsGasOrderSpreadServiceImpl.java @@ -8,6 +8,7 @@ import com.hfkj.service.spread.BsUserSpreadAccountService; import com.hfkj.service.spread.BsUserSpreadOilChannelService; import com.hfkj.service.spread.BsUserSpreadRelService; import com.hfkj.sysenum.spread.UserSpreadAccountRecordSourceTypeEnum; +import org.apache.commons.collections4.MapUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -61,16 +62,16 @@ public class BsGasOrderSpreadServiceImpl implements BsGasOrderSpreadService { // 查询一级 BsUserSpreadRel userSpreadOneRel = userSpreadRelService.getDetailByUser(userSpreadRel.getParentUserId()); if (userSpreadOneRel != null) { - gasOrderSpread.setGainsRebateUserId(userSpreadOneRel.getParentUserId()); - gasOrderSpread.setGainsRebateRate(channel.getRebateOne()); - gasOrderSpread.setGainsRebateAmount(order.getPayablePrice().multiply(channel.getRebateOne().divide(new BigDecimal("100"))).setScale(2, BigDecimal.ROUND_HALF_DOWN)); + gasOrderSpread.setGainsRebateOneUserId(userSpreadOneRel.getParentUserId()); + gasOrderSpread.setGainsRebateOneRate(channel.getRebateOne()); + gasOrderSpread.setGainsRebateOneAmount(order.getPayablePrice().multiply(channel.getRebateOne().divide(new BigDecimal("100"))).setScale(2, BigDecimal.ROUND_HALF_DOWN)); // 查询二级 BsUserSpreadRel userSpreadTwoRel = userSpreadRelService.getDetailByUser(userSpreadOneRel.getParentUserId()); if (userSpreadTwoRel != null) { - gasOrderSpread.setGainsRebateUserId(userSpreadTwoRel.getParentUserId()); - gasOrderSpread.setGainsRebateRate(channel.getRebateTwo()); - gasOrderSpread.setGainsRebateAmount(order.getPayablePrice().multiply(channel.getRebateTwo().divide(new BigDecimal("100"))).setScale(2, BigDecimal.ROUND_HALF_DOWN)); + gasOrderSpread.setGainsRebateTwoUserId(userSpreadTwoRel.getParentUserId()); + gasOrderSpread.setGainsRebateTwoRate(channel.getRebateTwo()); + gasOrderSpread.setGainsRebateTwoAmount(order.getPayablePrice().multiply(channel.getRebateTwo().divide(new BigDecimal("100"))).setScale(2, BigDecimal.ROUND_HALF_DOWN)); } } editData(gasOrderSpread); @@ -94,21 +95,13 @@ public class BsGasOrderSpreadServiceImpl implements BsGasOrderSpreadService { // 获取结算订单数据 Map dataParam = new HashMap<>(); dataParam.put("userId", userId); - HashMap data = gasOrderSpreadMapper.querySettleOrderList(dataParam); - // 直属佣金 - BigDecimal gainsRebateAmount = new BigDecimal(""+data.get("gains_rebate_amount")); - // 一级佣金 - BigDecimal gainsRebateOneAmount = new BigDecimal(""+data.get("gains_rebate_one_amount")); - // 二级佣金 - BigDecimal gainsRebateTwoAmount = new BigDecimal(""+data.get("gains_rebate_two_amount")); - // 总佣金 - BigDecimal totalRebateAmount = gainsRebateAmount.add(gainsRebateOneAmount).add(gainsRebateTwoAmount); - + Map settleData = gasOrderSpreadMapper.querySettleOrderList(dataParam); // 佣金大于0充值 - if (totalRebateAmount.compareTo(new BigDecimal("0")) >= 1) { + BigDecimal settleAmount = new BigDecimal(MapUtils.getString(settleData, "settleAmount")); + if (settleAmount.compareTo(new BigDecimal("0")) >= 1) { Map otherParam = new HashMap<>(); - otherParam.put("sourceContent", data.get("settle_date")+"佣金"); - userSpreadAccountService.increase(userId, totalRebateAmount, UserSpreadAccountRecordSourceTypeEnum.type1,otherParam); + otherParam.put("sourceContent", MapUtils.getString(settleData, "settleDate")+"佣金"); + userSpreadAccountService.increase(userId, settleAmount, UserSpreadAccountRecordSourceTypeEnum.type1,otherParam); } } diff --git a/service/src/main/java/com/hfkj/service/order/OrderRefundBusiness.java b/service/src/main/java/com/hfkj/service/order/OrderRefundBusiness.java index 73186cf..f9a7d91 100644 --- a/service/src/main/java/com/hfkj/service/order/OrderRefundBusiness.java +++ b/service/src/main/java/com/hfkj/service/order/OrderRefundBusiness.java @@ -27,10 +27,10 @@ import com.hfkj.sysenum.spread.UserSpreadAccountRecordSourceTypeEnum; import org.springframework.stereotype.Component; import javax.annotation.Resource; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.util.*; /** * 退款业务 @@ -172,7 +172,11 @@ public class OrderRefundBusiness { } catch (Exception e) {} // 分销 - if (DateUtil.getMinutesDiff(gasOrder.getPayTime(), new Date()) >= (7*24)) { + Calendar payTime = Calendar.getInstance(); + payTime.setTime(gasOrder.getPayTime()); + LocalDate date = LocalDate.of(payTime.get(Calendar.YEAR),payTime.get(Calendar.MONDAY)+1,payTime.get(Calendar.DATE)); + // 不是今日的订单 + if (date.isBefore(LocalDate.now())) { // 扣除账户 BsGasOrderSpread gasOrderSpread = gasOrderSpreadService.getDetailByOrderNo(gasOrder.getOrderNo()); if (gasOrderSpread != null) { @@ -209,8 +213,6 @@ public class OrderRefundBusiness { } } - - } } diff --git a/service/src/main/java/com/hfkj/service/spread/BsUserSpreadAccountRecordService.java b/service/src/main/java/com/hfkj/service/spread/BsUserSpreadAccountRecordService.java index 7b3f26f..f70bfde 100644 --- a/service/src/main/java/com/hfkj/service/spread/BsUserSpreadAccountRecordService.java +++ b/service/src/main/java/com/hfkj/service/spread/BsUserSpreadAccountRecordService.java @@ -18,6 +18,12 @@ public interface BsUserSpreadAccountRecordService { */ void create(BsUserSpreadAccountRecord data); + /** + * 修改数据 + * @param data + */ + void update(BsUserSpreadAccountRecord data); + /** * 查询记录 * @param orderNo diff --git a/service/src/main/java/com/hfkj/service/spread/impl/BsUserSpreadAccountRecordServiceImpl.java b/service/src/main/java/com/hfkj/service/spread/impl/BsUserSpreadAccountRecordServiceImpl.java index 8c96371..653bc9a 100644 --- a/service/src/main/java/com/hfkj/service/spread/impl/BsUserSpreadAccountRecordServiceImpl.java +++ b/service/src/main/java/com/hfkj/service/spread/impl/BsUserSpreadAccountRecordServiceImpl.java @@ -33,6 +33,11 @@ public class BsUserSpreadAccountRecordServiceImpl implements BsUserSpreadAccount userSpreadAccountRecordMapper.insert(data); } + @Override + public void update(BsUserSpreadAccountRecord data) { + userSpreadAccountRecordMapper.updateByPrimaryKey(data); + } + @Override public BsUserSpreadAccountRecord getRecordByOrderNo(String orderNo) { BsUserSpreadAccountRecordExample example = new BsUserSpreadAccountRecordExample(); diff --git a/service/src/main/java/com/hfkj/service/spread/impl/BsUserSpreadAccountServiceImpl.java b/service/src/main/java/com/hfkj/service/spread/impl/BsUserSpreadAccountServiceImpl.java index abd93f7..534704b 100644 --- a/service/src/main/java/com/hfkj/service/spread/impl/BsUserSpreadAccountServiceImpl.java +++ b/service/src/main/java/com/hfkj/service/spread/impl/BsUserSpreadAccountServiceImpl.java @@ -54,7 +54,7 @@ public class BsUserSpreadAccountServiceImpl implements BsUserSpreadAccountServic account.setStatus(1); account.setCreateTime(new Date()); account.setUpdateTime(new Date()); - userSpreadAccountMapper.updateByPrimaryKey(account); + userSpreadAccountMapper.insert(account); } @Override @@ -85,9 +85,9 @@ public class BsUserSpreadAccountServiceImpl implements BsUserSpreadAccountServic @Override public JSONObject withdraw(Long userId, String openId,BigDecimal amount) throws Exception { - /* if (amount.compareTo(new BigDecimal("20")) < 0 || amount.compareTo(new BigDecimal("200")) > 0) { - throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "提现金额20-200之间"); - }*/ + if (amount.compareTo(new BigDecimal("20")) < 0 || amount.compareTo(new BigDecimal("200")) > 0) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "金额20-200之间"); + } // 推广账户 BsUserSpreadAccount userSpreadAccount = getDetailByUser(userId); if (userSpreadAccount == null) { @@ -150,8 +150,8 @@ public class BsUserSpreadAccountServiceImpl implements BsUserSpreadAccountServic // 计算金额 account.setAmount(account.getAmount().add(amount)); // 累积提现金额 - if (UserSpreadAccountRecordSourceTypeEnum.type2.getType().equals(sourceType.getType())) { - account.setCashOutAmount(account.getCashOutAmount().add(amount)); + if (UserSpreadAccountRecordSourceTypeEnum.type4.getType().intValue() == sourceType.getType()) { + account.setCashOutAmount(account.getCashOutAmount().subtract(amount)); } update(account); // 变更后金额 @@ -210,8 +210,8 @@ public class BsUserSpreadAccountServiceImpl implements BsUserSpreadAccountServic // 计算金额 account.setAmount(account.getAmount().subtract(amount)); // 累积提现金额 - if (UserSpreadAccountRecordSourceTypeEnum.type4.getType().equals(sourceType.getType())) { - account.setCashOutAmount(account.getCashOutAmount().subtract(amount)); + if (UserSpreadAccountRecordSourceTypeEnum.type2.getType().intValue() == sourceType.getType()) { + account.setCashOutAmount(account.getCashOutAmount().add(amount)); } update(account); // 变更后金额