Ver código fonte

增加用户余额;补差价是否发货

zoujiajian 1 ano atrás
pai
commit
99c8eec62a

+ 5 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/OrderDonDifferRelate.java

@@ -20,4 +20,9 @@ public class OrderDonDifferRelate extends BaseEntity{
 	 * 操作人员
 	 */
 	private String operator;
+
+	/**
+	 * 是否已开通
+	 */
+	private Boolean isTp;
 }

+ 5 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/UserBalanceSourceRecord.java

@@ -23,6 +23,10 @@ public class UserBalanceSourceRecord extends BaseEntity {
 
 	private String detail;
 
+	private String remark;
+
+	private String operator;
+
 	private Long orderId;
 
 	@Getter
@@ -36,6 +40,7 @@ public class UserBalanceSourceRecord extends BaseEntity {
 		price_differ("订单补差价"),
 		compensate("系统补偿"),
 		manual("手动扣除"),
+		add("手动增加"),
 		distribute_rank("分销排行"),
 		wholesale_differ("返批发差价"),
 		wholesale_order("批发订单"),

+ 6 - 0
netflix-dao/src/main/java/com/cyksj/model/manage/views/OrderDonBackView.java

@@ -315,4 +315,10 @@ public class OrderDonBackView {
 
 	@DbIgnore
 	private String diffOperator;
+
+	/**
+	 * 开通状态
+	 */
+	@DbIgnore
+	private Boolean isTp;
 }

+ 2 - 0
netflix-dao/src/main/java/com/cyksj/model/request/UserBalanceReq.java

@@ -20,4 +20,6 @@ public class UserBalanceReq {
 
 	@NotNull
 	private BigDecimal deductBalance;
+
+	private String remark;
 }

+ 3 - 0
netflix-dao/src/main/java/com/cyksj/model/views/OrderDonDifferRelateView.java

@@ -29,6 +29,9 @@ public class OrderDonDifferRelateView {
 	@DbField("odr.operator")
 	private String operator;
 
+	@DbField("odr.is_tp")
+	private Boolean isTp;
+
 	@DbField("odr.created_time")
 	private Date createdTime;
 

+ 1 - 1
netflix-service/src/main/java/com/cyksj/service/order/impl/GoodsWholesalePayServiceImpl.java

@@ -521,7 +521,7 @@ public class GoodsWholesalePayServiceImpl implements GoodsWholesalePayService {
 		if (orderDon.getBalance() != null && orderDon.getBalance().compareTo(BigDecimal.ZERO) > 0) {
 			Long goodsId = orderDon.getGoodsId();
 			GoodsDon goodsDon = goodsDonMapper.selectById(goodsId);
-			userBenefitsService.recordBalanceBySource(orderDon.getUserId(), orderDon.getBalance().negate(), UserBalanceSourceRecord.Source.wholesale_order, orderDon.getId(), goodsDon.getTitle() + UserBalanceSourceRecord.Source.wholesale_order.getDesc());
+			userBenefitsService.recordBalanceBySource(orderDon.getUserId(), orderDon.getBalance().negate(), UserBalanceSourceRecord.Source.wholesale_order, orderDon.getId(), goodsDon.getTitle() + UserBalanceSourceRecord.Source.wholesale_order.getDesc(), null, null);
 		}
 		try {
 			//发送短信给新科

+ 2 - 2
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -2806,7 +2806,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 
 		//余额使用记录
 		if (orderDon.getBalance().compareTo(BigDecimal.ZERO) > 0) {
-			userBenefitsService.recordBalanceBySource(orderDon.getUserId(), orderDon.getBalance().negate(), UserBalanceSourceRecord.Source.payment, orderDon.getId(), goodsDon.getTitle() + UserBalanceSourceRecord.Source.payment.getDesc());
+			userBenefitsService.recordBalanceBySource(orderDon.getUserId(), orderDon.getBalance().negate(), UserBalanceSourceRecord.Source.payment, orderDon.getId(), goodsDon.getTitle() + UserBalanceSourceRecord.Source.payment.getDesc(), null, null);
 		}
 
 		TASK_POOL.execute(() -> {
@@ -3994,7 +3994,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 
 		//余额使用记录
 		if (orderDon.getBalance().compareTo(BigDecimal.ZERO) > 0) {
-			userBenefitsService.recordBalanceBySource(orderDon.getUserId(), orderDon.getBalance().negate(), UserBalanceSourceRecord.Source.payment, orderDon.getId(), upgradePackage.getName() + UserBalanceSourceRecord.Source.payment.getDesc());
+			userBenefitsService.recordBalanceBySource(orderDon.getUserId(), orderDon.getBalance().negate(), UserBalanceSourceRecord.Source.payment, orderDon.getId(), upgradePackage.getName() + UserBalanceSourceRecord.Source.payment.getDesc(), null, null);
 		}
 
 		if (upgradePackage.getGoodsId() == 26) {

+ 1 - 1
netflix-service/src/main/java/com/cyksj/service/user/UserBenefitsService.java

@@ -36,7 +36,7 @@ public interface UserBenefitsService {
 	/**
 	 * 记录用于余额来源
 	 */
-	void recordBalanceBySource(Long userId, BigDecimal balance, UserBalanceSourceRecord.Source source, Long orderId, String detail);
+	void recordBalanceBySource(Long userId, BigDecimal balance, UserBalanceSourceRecord.Source source, Long orderId, String detail, String remark, String operator);
 
 	void addYhsMoney(Long userId, BigDecimal money);
 

+ 4 - 2
netflix-service/src/main/java/com/cyksj/service/user/impl/UserBenefitsServiceImpl.java

@@ -83,7 +83,7 @@ public class UserBenefitsServiceImpl implements UserBenefitsService {
 			Integer success = userMapper.addUserBalance(user.getId(), balance, addBalance);
 			if (success == 1) {
 				if (isRecord) {
-					recordBalanceBySource(userId, addBalance, source, orderId, detail);
+					recordBalanceBySource(userId, addBalance, source, orderId, detail, null, null);
 				}
 				if (envCommonService.isPrdEnv() && isRecord && yhsId == 0) {
 					try {
@@ -125,13 +125,15 @@ public class UserBenefitsServiceImpl implements UserBenefitsService {
 	}
 
 	@Override
-	public void recordBalanceBySource(Long userId, BigDecimal balance, UserBalanceSourceRecord.Source source, Long orderId, String detail) {
+	public void recordBalanceBySource(Long userId, BigDecimal balance, UserBalanceSourceRecord.Source source, Long orderId, String detail, String remark, String operator) {
 		UserBalanceSourceRecord userBalanceSourceRecord = new UserBalanceSourceRecord();
 		userBalanceSourceRecord.setUserId(userId);
 		userBalanceSourceRecord.setBalance(balance);
 		userBalanceSourceRecord.setSource(source);
 		userBalanceSourceRecord.setOrderId(orderId);
 		userBalanceSourceRecord.setDetail(detail);
+		userBalanceSourceRecord.setRemark(remark);
+		userBalanceSourceRecord.setOperator(operator);
 		userBalanceSourceRecordMapper.insert(userBalanceSourceRecord);
 	}
 

+ 11 - 4
netflix-web/src/main/java/com/cyksj/web/controller/manage/CmsOrderController.java

@@ -134,7 +134,7 @@ public class CmsOrderController {
 
 	@GetMapping("/get")
 	@SaCheckPermission("order:view")
-	public Result<SearchResult<OrderDonBackView>> get(Long channelId, String account, String showId, Long acId, String nickname, String register, Boolean isGoogle, Boolean isSubsidy, Boolean isRenewPackage, Integer otherOrderType, Long userMirrorShopId, String operator, Long diffGoodsId) {
+	public Result<SearchResult<OrderDonBackView>> get(Long channelId, String account, String showId, Long acId, String nickname, String register, Boolean isGoogle, Boolean isSubsidy, Boolean isRenewPackage, Integer otherOrderType, Long userMirrorShopId, String operator, Long diffGoodsId, Boolean isTp) {
 		MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
 		if (channelId != null) {
 			List<Long> popularizeIds = channelPopularizeMapper.getPopularizeIdByChannelId(channelId);
@@ -210,7 +210,7 @@ public class CmsOrderController {
 			}
 			conditionSql += String.format(" exists (select 1 from user_mirror_shop_order_relate umr where mp_id = %s and umr.order_id = o.id limit 1)", userMirrorShopId);
 		}
-		if (diffGoodsId != null || StrUtil.isNotBlank(operator)) {
+		if (diffGoodsId != null || StrUtil.isNotBlank(operator) || isTp != null) {
 			if (StrUtil.isNotEmpty(conditionSql)) {
 				conditionSql += " and ";
 			}
@@ -221,6 +221,9 @@ public class CmsOrderController {
 			if (StrUtil.isNotBlank(operator)) {
 				conditionSql += String.format(" and odr.operator = '%s'", operator);
 			}
+			if (isTp != null && isTp) {
+				conditionSql += String.format(" and odr.is_tp = %s", isTp);
+			}
 			conditionSql += ")";
 		}
 		if (StrUtil.isNotBlank(conditionSql)) {
@@ -310,6 +313,7 @@ public class CmsOrderController {
 					data.setDiffGoodsId(donDifferRelateView.getGoodsId());
 					data.setDiffTitle(donDifferRelateView.getTitle());
 					data.setDiffOperator(donDifferRelateView.getOperator());
+					data.setIsTp(donDifferRelateView.getIsTp());
 				}
 			}
 		});
@@ -361,7 +365,7 @@ public class CmsOrderController {
 	@GetMapping("/export")
 	@SaCheckPermission("order:export")
 	@Log(module = "订单管理/导出订单", businessType = BusinessType.EXPORT, isSaveRequestData = true)
-	public void exportOrders(HttpServletResponse response, Long channelId, String account, String showId, Long acId, String nickname, String register, Boolean isGoogle, Boolean isSubsidy, Boolean isRenewPackage, Integer otherOrderType, Long userMirrorShopId, String operator, Long diffGoodsId) throws InterruptedException {
+	public void exportOrders(HttpServletResponse response, Long channelId, String account, String showId, Long acId, String nickname, String register, Boolean isGoogle, Boolean isSubsidy, Boolean isRenewPackage, Integer otherOrderType, Long userMirrorShopId, String operator, Long diffGoodsId, Boolean isTp) throws InterruptedException {
 		MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
 		if (channelId != null) {
 			List<Long> popularizeIds = channelPopularizeMapper.getPopularizeIdByChannelId(channelId);
@@ -431,7 +435,7 @@ public class CmsOrderController {
 				builder.put("tb", String.format(" inner join user_mirror_shop_order_relate umr on umr.order_id = o.id"));
 			}
 		}
-		if (diffGoodsId != null || StrUtil.isNotBlank(operator)) {
+		if (diffGoodsId != null || StrUtil.isNotBlank(operator) || isTp != null) {
 			if (StrUtil.isNotEmpty(conditionSql)) {
 				conditionSql += " and ";
 			}
@@ -442,6 +446,9 @@ public class CmsOrderController {
 			if (StrUtil.isNotBlank(operator)) {
 				conditionSql += String.format(" and odr.operator = '%s'", operator);
 			}
+			if (isTp != null && isTp) {
+				conditionSql += String.format(" and odr.is_tp = %s", isTp);
+			}
 			conditionSql += ")";
 		}
 		if (userMirrorShopId != null) {

+ 43 - 1
netflix-web/src/main/java/com/cyksj/web/controller/manage/CmsUserController.java

@@ -379,6 +379,8 @@ public class CmsUserController{
         if (deductBalance.compareTo(BigDecimal.ZERO) <= 0) {
             throw BusinessRuntimeException.getInstance("请扣除正确的余额数值");
         }
+        long adminId = StpUtil.getLoginIdAsLong();
+        CmsUser cmsUser = cmsUserMapper.selectById(adminId);
         Long userId = balanceReq.getUserId();
         User user = userMapper.selectById(userId);
         Assert.notNull(user, "用户不存在");
@@ -392,7 +394,35 @@ public class CmsUserController{
         if (update == 0) {
             throw BusinessRuntimeException.getInstance("扣除用户余额失败,请重试...");
         }
-        userBenefitsService.recordBalanceBySource(userId, deductBalance.negate(), UserBalanceSourceRecord.Source.manual, null, UserBalanceSourceRecord.Source.manual.getDesc());
+        userBenefitsService.recordBalanceBySource(userId, deductBalance.negate(), UserBalanceSourceRecord.Source.manual, null, UserBalanceSourceRecord.Source.manual.getDesc(), balanceReq.getRemark(), cmsUser.getNickname());
+        return GatewayResponse.SUCCESS.newBuilder().toResult();
+    }
+
+    /**
+     * 增加余额
+     */
+    @PutMapping("/add/balance")
+    @Transactional(rollbackFor = Throwable.class)
+    @Log(module = "用户管理/增加用户余额", businessType = BusinessType.PUT, isSaveRequestData = true)
+    public Result<String> addBalance(@RequestBody @Validated UserBalanceReq balanceReq) {
+        long adminId = StpUtil.getLoginIdAsLong();
+        CmsUser cmsUser = cmsUserMapper.selectById(adminId);
+        Assert.notNull(cmsUser, "请重新登录");
+        BigDecimal deductBalance = balanceReq.getDeductBalance();
+        if (deductBalance.compareTo(BigDecimal.ZERO) <= 0) {
+            throw BusinessRuntimeException.getInstance("请增加正确的余额数值");
+        }
+        Long userId = balanceReq.getUserId();
+        User user = userMapper.selectById(userId);
+        Assert.notNull(user, "用户不存在");
+        int update = userMapper.update(null, Wrappers.lambdaUpdate(User.class)
+                .set(User::getBalance, user.getBalance().add(deductBalance))
+                .eq(User::getId, userId)
+                .eq(User::getBalance, user.getBalance()));
+        if (update == 0) {
+            throw BusinessRuntimeException.getInstance("增加用户余额失败,请重试...");
+        }
+        userBenefitsService.recordBalanceBySource(userId, deductBalance, UserBalanceSourceRecord.Source.add, null, UserBalanceSourceRecord.Source.add.getDesc(), balanceReq.getRemark(), cmsUser.getNickname());
         return GatewayResponse.SUCCESS.newBuilder().toResult();
     }
 
@@ -528,4 +558,16 @@ public class CmsUserController{
         });
         return GatewayResponse.SUCCESS.newBuilder().toResult(search);
     }
+
+    /**
+     * 手动扣除用户操作记录
+     */
+    @GetMapping("/get/user/balance/sys/operate/record")
+    public Result<SearchResult<UserBalanceSourceRecord>> sysOperate() {
+        SearchResult<UserBalanceSourceRecord> search = beanSearcher.search(UserBalanceSourceRecord.class, MapUtils.flatBuilder(request.getParameterMap())
+                .field(UserBalanceSourceRecord::getSource, List.of(UserBalanceSourceRecord.Source.manual.name(), UserBalanceSourceRecord.Source.add.name())).op(Operator.InList)
+                .orderBy(UserBalanceSourceRecord::getId).desc()
+                .build());
+        return GatewayResponse.SUCCESS.newBuilder().toResult(search);
+    }
 }