资金账户

master
ljw 2026-01-22 10:38:24 +08:00
parent 9650d2144e
commit 0c7cd31afb
13 changed files with 354 additions and 16 deletions

View File

@ -0,0 +1,18 @@
package com.njzscloud.dispose.cst.customer.pojo.result;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
@Getter
@Setter
@ToString
@Accessors(chain = true)
public class AddCustomerResult {
private Long customerId;
private Long orgId;
}

View File

@ -16,6 +16,7 @@ import com.njzscloud.dispose.cst.customer.mapper.CustomerMapper;
import com.njzscloud.dispose.cst.customer.pojo.entity.CustomerEntity;
import com.njzscloud.dispose.cst.customer.pojo.param.AddCustomerParam;
import com.njzscloud.dispose.cst.customer.pojo.param.SearchCustomerParam;
import com.njzscloud.dispose.cst.customer.pojo.result.AddCustomerResult;
import com.njzscloud.dispose.cst.customer.pojo.result.SearchCustomerResult;
import com.njzscloud.dispose.cst.org.pojo.param.AddOrgParam;
import com.njzscloud.dispose.cst.org.service.OrgService;
@ -45,7 +46,7 @@ public class CustomerService extends ServiceImpl<CustomerMapper, CustomerEntity>
*
*/
@Transactional(rollbackFor = Exception.class)
public void add(AddCustomerParam addCustomerParam) {
public AddCustomerResult add(AddCustomerParam addCustomerParam) {
Boolean manager = addCustomerParam.getManager();
Long orgId = null;
AddOrgParam addOrgParam = addCustomerParam.getAddOrgParam();
@ -72,6 +73,10 @@ public class CustomerService extends ServiceImpl<CustomerMapper, CustomerEntity>
}
this.save(entity);
AddCustomerResult customerResult = new AddCustomerResult();
customerResult.setCustomerId(entity.getId());
customerResult.setOrgId(orgId);
return customerResult;
}
/**

View File

@ -0,0 +1,24 @@
package com.njzscloud.dispose.finance.constant;
import com.njzscloud.common.core.ienum.DictStr;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
/**
* AccountType
*
*
* @author ljw
*/
@Getter
@RequiredArgsConstructor
public enum AccountType implements DictStr {
GeRen("GeRen", "个人"),
QiYe("QiYe", "企业");
private final String val;
private final String txt;
}

View File

@ -4,6 +4,8 @@ import com.njzscloud.common.core.utils.R;
import com.njzscloud.common.mp.support.PageParam;
import com.njzscloud.common.mp.support.PageResult;
import com.njzscloud.dispose.finance.pojo.entity.MoneyAccountEntity;
import com.njzscloud.dispose.finance.pojo.param.SearchMoneyAccountParam;
import com.njzscloud.dispose.finance.pojo.result.MoneyAccountResult;
import com.njzscloud.dispose.finance.service.MoneyAccountService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -54,7 +56,7 @@ public class MoneyAccountController {
*
*/
@GetMapping("/detail")
public R<MoneyAccountEntity> detail(@RequestParam("id") Long id) {
public R<MoneyAccountResult> detail(@RequestParam("id") Long id) {
return R.success(moneyAccountService.detail(id));
}
@ -62,8 +64,8 @@ public class MoneyAccountController {
*
*/
@GetMapping("/paging")
public R<PageResult<MoneyAccountEntity>> paging(PageParam pageParam, MoneyAccountEntity moneyAccountEntity) {
return R.success(moneyAccountService.paging(pageParam, moneyAccountEntity));
public R<PageResult<MoneyAccountResult>> paging(PageParam pageParam, SearchMoneyAccountParam param) {
return R.success(moneyAccountService.paging(pageParam, param));
}
}

View File

@ -1,14 +1,25 @@
package com.njzscloud.dispose.finance.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njzscloud.dispose.finance.pojo.entity.MoneyAccountEntity;
import com.njzscloud.dispose.finance.pojo.result.MoneyAccountResult;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
*
*
* @author ljw
*/
@Mapper
public interface MoneyAccountMapper extends BaseMapper<MoneyAccountEntity> {
IPage<MoneyAccountResult> paging(Page<Object> page, @Param("ew") QueryWrapper<?> ew);
MoneyAccountResult detail(@Param("id") Long id);
}

View File

@ -1,16 +1,18 @@
package com.njzscloud.dispose.finance.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.njzscloud.dispose.common.pojo.entity.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import com.njzscloud.dispose.finance.constant.AccountType;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
*
*
* @author ljw
*/
@Getter
@ -18,7 +20,13 @@ import java.math.BigDecimal;
@ToString
@Accessors(chain = true)
@TableName(value = "fin_money_account", autoResultMap = true)
public class MoneyAccountEntity extends BaseEntity {
public class MoneyAccountEntity {
/**
*
*/
@TableId(type = IdType.ASSIGN_ID)
private Long id;
/**
*
@ -28,7 +36,7 @@ public class MoneyAccountEntity extends BaseEntity {
/**
* account_typeGeRen-->QiYe-->
*/
private String accountType;
private AccountType accountType;
/**
* Id
@ -55,5 +63,35 @@ public class MoneyAccountEntity extends BaseEntity {
*/
private BigDecimal recharge;
/**
* Idsys_user.id
*/
@TableField(fill = FieldFill.INSERT)
private Long creatorId;
/**
* Id sys_user.id
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long modifierId;
/**
*
*/
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/**
*
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime modifyTime;
/**
* 0-->1-->
*/
@TableLogic
private Boolean deleted;
}

View File

@ -0,0 +1,36 @@
package com.njzscloud.dispose.finance.pojo.param;
import com.njzscloud.dispose.finance.constant.AccountType;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
/**
*
*
* @author ljw
*/
@Getter
@Setter
@ToString
@Accessors(chain = true)
public class SearchMoneyAccountParam {
/**
*
*/
private String sn;
/**
*
*/
private String accountName;
/**
* account_typeGeRen-->QiYe-->
*/
private AccountType accountType;
}

View File

@ -0,0 +1,101 @@
package com.njzscloud.dispose.finance.pojo.result;
import com.baomidou.mybatisplus.annotation.*;
import com.njzscloud.dispose.finance.constant.AccountType;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
*
*
* @author ljw
*/
@Getter
@Setter
@ToString
@Accessors(chain = true)
public class MoneyAccountResult {
/**
*
*/
@TableId(type = IdType.ASSIGN_ID)
private Long id;
/**
*
*/
private String sn;
/**
*
*/
private String accountName;
/**
* account_typeGeRen-->QiYe-->
*/
private AccountType accountType;
/**
* Id
*/
private Long userId;
/**
* Id
*/
private Long customerId;
/**
* Id
*/
private Long orgId;
/**
*
*/
private BigDecimal revenue;
/**
*
*/
private BigDecimal recharge;
/**
* Idsys_user.id
*/
@TableField(fill = FieldFill.INSERT)
private Long creatorId;
/**
* Id sys_user.id
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long modifierId;
/**
*
*/
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/**
*
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime modifyTime;
/**
* 0-->1-->
*/
@TableLogic
private Boolean deleted;
}

View File

@ -4,11 +4,14 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.njzscloud.common.mp.support.PageParam;
import com.njzscloud.common.mp.support.PageResult;
import com.njzscloud.dispose.finance.pojo.entity.MoneyAccountEntity;
import com.njzscloud.dispose.finance.pojo.param.SearchMoneyAccountParam;
import com.njzscloud.dispose.finance.pojo.result.MoneyAccountResult;
import java.util.List;
/**
*
*
* @author ljw
*/
public interface MoneyAccountService extends IService<MoneyAccountEntity> {
@ -31,11 +34,11 @@ public interface MoneyAccountService extends IService<MoneyAccountEntity> {
/**
*
*/
MoneyAccountEntity detail(Long id);
MoneyAccountResult detail(Long id);
/**
*
*/
PageResult<MoneyAccountEntity> paging(PageParam pageParam, MoneyAccountEntity moneyAccountEntity);
PageResult<MoneyAccountResult> paging(PageParam pageParam, SearchMoneyAccountParam param);
}

View File

@ -1,11 +1,15 @@
package com.njzscloud.dispose.finance.service.impl;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njzscloud.common.mp.support.PageParam;
import com.njzscloud.common.mp.support.PageResult;
import com.njzscloud.common.sn.support.SnUtil;
import com.njzscloud.dispose.finance.mapper.MoneyAccountMapper;
import com.njzscloud.dispose.finance.pojo.entity.MoneyAccountEntity;
import com.njzscloud.dispose.finance.pojo.param.SearchMoneyAccountParam;
import com.njzscloud.dispose.finance.pojo.result.MoneyAccountResult;
import com.njzscloud.dispose.finance.service.MoneyAccountService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -29,6 +33,7 @@ public class MoneyAccountServiceImpl extends ServiceImpl<MoneyAccountMapper, Mon
*/
@Override
public void add(MoneyAccountEntity moneyAccountEntity) {
moneyAccountEntity.setSn(this.generateSn());
this.save(moneyAccountEntity);
}
@ -53,16 +58,39 @@ public class MoneyAccountServiceImpl extends ServiceImpl<MoneyAccountMapper, Mon
*
*/
@Override
public MoneyAccountEntity detail(Long id) {
return this.getById(id);
public MoneyAccountResult detail(Long id) {
return baseMapper.detail(id);
}
/**
*
*/
@Override
public PageResult<MoneyAccountEntity> paging(PageParam pageParam, MoneyAccountEntity moneyAccountEntity) {
return PageResult.of(this.page(pageParam.toPage(), Wrappers.query(moneyAccountEntity)));
public PageResult<MoneyAccountResult> paging(PageParam pageParam, SearchMoneyAccountParam param) {
return PageResult.of(baseMapper.paging(pageParam.toPage(), Wrappers.query()
.eq("fma.deleted", 0)
.like(StrUtil.isNotBlank(param.getSn()), "fma.sn", param.getSn())
.and(StrUtil.isNotBlank(param.getAccountName()), wrapper ->
wrapper.like("cc.customer_name", param.getAccountName())
.or()
.like("co.org_name", param.getAccountName())
)
.eq(param.getAccountType() != null, "fma.account_type", param.getAccountType())
));
}
/**
*
*
* @return sn
*/
public String generateSn() {
String sn = SnUtil.next("Account-SN");
if (this.exists(Wrappers.<MoneyAccountEntity>lambdaQuery().eq(MoneyAccountEntity::getSn, sn)
.eq(MoneyAccountEntity::getDeleted, Boolean.FALSE))) {
this.generateSn();
}
return sn;
}
}

View File

@ -18,8 +18,12 @@ import com.njzscloud.common.wechat.param.Code2SessionParam;
import com.njzscloud.common.wechat.result.Code2SessionResult;
import com.njzscloud.dispose.cst.customer.constant.IdentityCategory;
import com.njzscloud.dispose.cst.customer.pojo.param.AddCustomerParam;
import com.njzscloud.dispose.cst.customer.pojo.result.AddCustomerResult;
import com.njzscloud.dispose.cst.customer.service.CustomerService;
import com.njzscloud.dispose.cst.org.pojo.param.AddOrgParam;
import com.njzscloud.dispose.finance.constant.AccountType;
import com.njzscloud.dispose.finance.pojo.entity.MoneyAccountEntity;
import com.njzscloud.dispose.finance.service.MoneyAccountService;
import com.njzscloud.dispose.sys.auth.service.AuthService;
import com.njzscloud.dispose.sys.role.pojo.entity.RoleEntity;
import com.njzscloud.dispose.sys.role.pojo.result.RoleDetailResult;
@ -56,6 +60,7 @@ public class UserService extends ServiceImpl<UserMapper, UserEntity> implements
private final UserRoleService userRoleService;
private final CustomerService customerService;
private final AuthService authService;
private final MoneyAccountService moneyAccountService;
/**
*
@ -177,7 +182,7 @@ public class UserService extends ServiceImpl<UserMapper, UserEntity> implements
customer.setUserId(userId);
UserRegisterParam.Org org = userRegisterParam.getOrg();
customerService.add(BeanUtil.copyProperties(customer, AddCustomerParam.class)
AddCustomerResult customerResult = customerService.add(BeanUtil.copyProperties(customer, AddCustomerParam.class)
.setAddOrgParam(BeanUtil.copyProperties(org, AddOrgParam.class)));
List<RoleDetailResult> roleDetailResults = userRoleService.listRole(userId);
@ -187,6 +192,17 @@ public class UserService extends ServiceImpl<UserMapper, UserEntity> implements
UserDetail userDetail = authService.my(userId, account.getClientCode())
.setAuthWay(userRegisterParam.getAuthWay())
.setRoles(roles);
// 添加账户信息
MoneyAccountEntity moneyAccount = new MoneyAccountEntity();
if (Boolean.TRUE.equals(customer.getManager())) {
moneyAccount.setAccountType(AccountType.QiYe);
moneyAccount.setOrgId(customerResult.getOrgId());
} else {
moneyAccount.setAccountType(AccountType.GeRen);
}
moneyAccount.setUserId(userId);
moneyAccount.setCustomerId(customerResult.getCustomerId());
moneyAccountService.add(moneyAccount);
return SecurityUtil.registrationUser(userDetail);
}

View File

@ -90,7 +90,7 @@ public class InOrderService extends ServiceImpl<InOrderMapper, InOrderEntity> {
public PageResult<SearchInOrderResult> paging(PageParam pageParam, SearchInOrderParam param) {
return PageResult.of(baseMapper.paging(pageParam.toPage(), Wrappers.query()
.eq("wio.deleted", 0)
.eq(StrUtil.isNotBlank(param.getSn()), "wio.sn", param.getSn())
.like(StrUtil.isNotBlank(param.getSn()), "wio.sn", param.getSn())
.eq(StrUtil.isNotBlank(param.getOrderSn()), "wio.order_sn", param.getOrderSn())
.eq(StrUtil.isNotBlank(param.getWarehouseName()), "ww.warehouse_name", param.getWarehouseName())
.eq(StrUtil.isNotBlank(param.getGoodsName()), "wio.goods_name", param.getGoodsName())

View File

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.njzscloud.dispose.finance.mapper.MoneyAccountMapper">
<resultMap id="BaseResultMap" type="com.njzscloud.dispose.finance.pojo.result.MoneyAccountResult">
<id column="id" property="id"/>
<result column="sn" property="sn"/>
<result column="account_name" property="accountName"/>
<result column="account_type" property="accountType"/>
<result column="user_id" property="userId"/>
<result column="customer_id" property="customerId"/>
<result column="org_id" property="orgId"/>
<result column="revenue" property="revenue"/>
<result column="recharge" property="recharge"/>
<result column="creator_id" property="creatorId"/>
<result column="modifier_id" property="modifierId"/>
<result column="create_time" property="createTime"/>
<result column="modify_time" property="modifyTime"/>
<result column="deleted" property="deleted"/>
</resultMap>
<sql id="SearchMoneyAccountResultSql">
SELECT fma.id,
fma.sn,
fma.account_type,
fma.user_id,
CASE fma.account_type
WHEN 'GeRen' THEN cc.customer_name
WHEN 'QiYe' THEN co.org_name
ELSE NULL
END as account_name,
fma.customer_id,
fma.org_id,
fma.revenue,
fma.recharge,
fma.creator_id,
fma.modifier_id,
fma.create_time,
fma.modify_time,
fma.deleted
FROM fin_money_account fma
LEFT JOIN cst_customer cc ON cc.id = fma.customer_id
LEFT JOIN cst_org co ON co.id = fma.org_id
</sql>
<select id="paging" resultMap="BaseResultMap">
<include refid="SearchMoneyAccountResultSql"/>
<if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
${ew.customSqlSegment}
</if>
</select>
<select id="detail" resultMap="BaseResultMap">
<include refid="SearchMoneyAccountResultSql"/>
WHERE fma.id = #{id}
</select>
</mapper>