zq-erp/pom.xml
@@ -444,6 +444,11 @@ <artifactId>mapstruct-processor</artifactId> <version>1.3.0.Final</version> </path> <path> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.12</version> </path> </annotationProcessorPaths> </configuration> </plugin> zq-erp/src/main/java/com/matrix/biz/bean/BizUser.java
@@ -13,6 +13,16 @@ @Extend private static final long serialVersionUID = 1L; /** * 是销售员 */ public static final int IS_SALES = 1; /** * 不是销售员 */ public static final int NOT_SALES = 2; /** * 主键 @@ -24,6 +34,16 @@ * 真实姓名 */ private String userName; /** * 可提现金额 */ private Double withdrawalCash; /** *推广员等级 */ private Double salesmanGrade; /** @@ -177,7 +197,7 @@ /** * 是否是销售员(1=是,0=否) * 是否是销售员(1=是,2=否) */ private Integer isSales; @@ -237,6 +257,21 @@ this.userName=userName; } public Double getWithdrawalCash() { return withdrawalCash; } public void setWithdrawalCash(Double withdrawalCash) { this.withdrawalCash = withdrawalCash; } public Double getSalesmanGrade() { return salesmanGrade; } public void setSalesmanGrade(Double salesmanGrade) { this.salesmanGrade = salesmanGrade; } public String getUserPassword() { return userPassword; zq-erp/src/main/java/com/matrix/config/SwaggerConfig.java
@@ -2,8 +2,6 @@ import io.swagger.annotations.Api; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; @@ -60,9 +58,15 @@ // 添加请求参数,我们这里把token作为请求头部参数传入后端 ParameterBuilder parameterBuilder = new ParameterBuilder(); List<Parameter> parameters = new ArrayList<Parameter>(); parameterBuilder.name("Authorization").description("令牌").modelRef(new ModelRef("string")).parameterType("header") .required(false).build(); parameterBuilder.name("token").description("令牌").modelRef(new ModelRef("string")).parameterType("header") .required(true).build(); parameters.add(parameterBuilder.build()); ParameterBuilder parameterBuilder2 = new ParameterBuilder(); parameterBuilder2.name("companyCode").description("公司编码tangqiaqia.jyymatrix.cc").modelRef(new ModelRef("string")).parameterType("header") .required(true).build(); parameters.add(parameterBuilder2.build()); return new Docket(DocumentationType.SWAGGER_2).apiInfo(wxApiInfo()).enable(swaggerEnable).select().apis(RequestHandlerSelectors.withClassAnnotation(Api.class)) .paths(PathSelectors.ant("/wxapi/**")).build().globalOperationParameters(parameters).groupName("小程序接口"); // .ignoredParameterTypes(MemberEntity.class); zq-erp/src/main/java/com/matrix/system/fenxiao/constant/FenxiaoSettingConstant.java
@@ -21,4 +21,9 @@ * 申请条件 */ public final static String FX_APPLY_CONDITION = "FX_APPLY_CONDITION"; /** * 推广计划 */ public final static String FX_TG_PLAN = "FX_TG_PLAN"; } zq-erp/src/main/java/com/matrix/system/fenxiao/entity/ShopRevenueFlow.java
@@ -7,8 +7,8 @@ /** * @description 收益流水 * @author jyy * @date 2021-03-10 15:22 * @author yourName * @date 2021-03-10 17:34 */ @Data @TableName("shop_revenue_flow") @@ -25,7 +25,7 @@ */ private Long userId; private String userId; /** * 收益说明 zq-erp/src/main/java/com/matrix/system/fenxiao/entity/ShopSalemanSettlement.java
@@ -7,8 +7,8 @@ /** * @description 订单结算记录 * @author jyy * @date 2021-03-10 15:22 * @author yourName * @date 2021-03-10 17:34 */ @Data @TableName("shop_saleman_settlement") zq-erp/src/main/java/com/matrix/system/fenxiao/entity/ShopSalesmanApply.java
@@ -1,22 +1,47 @@ package com.matrix.system.fenxiao.entity; import com.baomidou.mybatisplus.annotation.TableName; import com.matrix.core.anotations.Extend; import com.matrix.system.score.entity.BaseEntity; import lombok.Data; /** * @description 推广员申请记录 * @author jyy * @date 2021-03-10 15:22 * @author yourName * @date 2021-03-10 17:34 */ @Data @TableName("shop_salesman_apply") public class ShopSalesmanApply extends BaseEntity { @Extend private static final long serialVersionUID = 1L; /** * 审核状态-1、待审核 */ public static final int APPLY_STATUS_DSH = 1; /** * 审核状态-2通过 */ public static final int APPLY_STATUS_TG= 2; /** * 审核状态-3未通过 */ public static final int APPLY_STATUS_WTG = 3; /** * 申请方式1、自主申请 */ public static final int APPLY_WAY_SELF=1; /** * 申请方式2、自动添加 */ public static final int APPLY_WAY_AUTO_ADD=2; /** * 申请方式3上级邀请 */ public static final int APPLY_WAY_INVITATION=3; /** * 申请方式 4、手动添加 */ public static final int APPLY_WAY_HAND_ADD=4; @@ -32,14 +57,14 @@ */ private Long userId; private String userId; /** * 邀请用户ID */ private Long parentUserId; private String parentUserId; /** * 申请状态1、待审核,2通过,3未通过 zq-erp/src/main/java/com/matrix/system/fenxiao/entity/ShopSalesmanGrade.java
@@ -7,8 +7,8 @@ /** * @description 推广员等级 * @author jyy * @date 2021-03-10 15:22 * @author yourName * @date 2021-03-10 17:34 */ @Data @TableName("shop_salesman_grade") @@ -46,7 +46,7 @@ */ private Double condition; private Double gradeCondition; /** * 默认等级1是,2不是 zq-erp/src/main/java/com/matrix/system/fenxiao/entity/ShopSalesmanOrder.java
@@ -7,8 +7,8 @@ /** * @description 分销订单 * @author jyy * @date 2021-03-10 15:22 * @author yourName * @date 2021-03-10 17:34 */ @Data @TableName("shop_salesman_order") @@ -32,14 +32,14 @@ */ private Long userId; private String userId; /** * 收益人id */ private Long salesUserId; private String salesUserId; /** * 收益类型1,推广收益,2邀请收益 zq-erp/src/main/java/com/matrix/system/shopXcx/api/WxUserAction.java
@@ -92,6 +92,7 @@ // 新增用户 bizUser = new BizUser(); bizUser.setSessionKey(sessionKey); bizUser.setIsSales(BizUser.NOT_SALES); bizUser.setOpenId(openId); bizUser.setLastLoginTime(new Date()); bizUser.setUserType(AppConstance.USER_TYPE_CUSTOMER); zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxSalesmanAction.java
@@ -1,11 +1,24 @@ package com.matrix.system.shopXcx.api.action; import com.matrix.biz.bean.BizUser; import com.matrix.component.redis.RedisUserLoginUtils; import com.matrix.core.pojo.AjaxResult; import com.matrix.core.tools.StringUtils; import com.matrix.system.common.bean.BusParameterSettings; import com.matrix.system.common.dao.BusParameterSettingsDao; import com.matrix.system.common.interceptor.HostInterceptor; import com.matrix.system.fenxiao.constant.FenxiaoSettingConstant; import com.matrix.system.fenxiao.dao.ShopSalesmanApplyDao; import com.matrix.system.fenxiao.entity.ShopSalesmanApply; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.Date; import java.util.Map; /** * @author wzy @@ -16,9 +29,61 @@ @RequestMapping(value = "/wxapi/salesman") public class WxSalesmanAction { @ApiOperation(value = "测试接口", notes = "测试接口") @GetMapping(value = "/test") public AjaxResult test() { return null; @Autowired BusParameterSettingsDao busParameterSettingsDao; @Autowired ShopSalesmanApplyDao salesmanApplyDao; @Autowired private RedisUserLoginUtils redisUserLoginUtils; @ApiOperation(value = "查询推广计划", notes = "") @GetMapping(value = "/getTgPlan") public AjaxResult getTgPlan() { BusParameterSettings busParameterSettings = busParameterSettingsDao.selectCompanyParamByCode(FenxiaoSettingConstant.FX_TG_PLAN, HostInterceptor.getCompanyId()); AjaxResult ajaxResult = AjaxResult.buildSuccessInstance(""); ajaxResult.putInMap("tgjh",busParameterSettings.getParamValue3()); return ajaxResult; } @ApiOperation(value = "申请成为推广员", notes = "传入参数invitationId 邀请人openId 如: {invitationId:openId}") @ApiResponses({ @ApiResponse(code = 200, message = "ok", response = Map.class) }) @PostMapping(value = "/applyToBeAnSalesman") public AjaxResult applyToBeAnSalesman(@RequestBody Map<String,String> param) { BizUser loginUser = redisUserLoginUtils.getLoginUser(BizUser.class); ShopSalesmanApply shopSalesmanApply=new ShopSalesmanApply(); shopSalesmanApply.setUserId(loginUser.getUserId()); shopSalesmanApply.setCreateBy(loginUser.getNickName()); shopSalesmanApply.setApplyWay(ShopSalesmanApply.APPLY_WAY_SELF); shopSalesmanApply.setApplyStatus(ShopSalesmanApply.APPLY_STATUS_DSH); shopSalesmanApply.setCompanyId(loginUser.getCompanyId()); shopSalesmanApply.setUpdateBy(loginUser.getNickName()); Date date = new Date(); shopSalesmanApply.setCreateTime(date); shopSalesmanApply.setUpdateTime(date); String invitationId = param.get("invitationId"); if(StringUtils.isNotBlank(invitationId)){ shopSalesmanApply.setParentUserId(invitationId); } salesmanApplyDao.insert(shopSalesmanApply); return AjaxResult.buildSuccessInstance("申请成功"); } } zq-erp/src/main/java/com/matrix/system/shopXcx/api/dto/ApplyToBeAnSalesmanDto.java
New file @@ -0,0 +1,16 @@ package com.matrix.system.shopXcx.api.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import javax.validation.constraints.NotBlank; @ApiModel(value = "AddVipDto", description = "添加会员接收参数类") public class ApplyToBeAnSalesmanDto { @NotBlank(message = "性别不能为空") @ApiModelProperty(value = "性别", example = "男/女") private String sex; } zq-erp/src/main/java/com/matrix/system/shopXcx/bean/ShopSku.java
@@ -49,6 +49,14 @@ * 价格 */ private BigDecimal price; /** *推广提成 */ private BigDecimal sealesPrice; /** *邀请提成 */ private BigDecimal invitationPrice; /** * 积分 @@ -82,6 +90,22 @@ @Extend private String goodsName; public BigDecimal getSealesPrice() { return sealesPrice; } public void setSealesPrice(BigDecimal sealesPrice) { this.sealesPrice = sealesPrice; } public BigDecimal getInvitationPrice() { return invitationPrice; } public void setInvitationPrice(BigDecimal invitationPrice) { this.invitationPrice = invitationPrice; } public Long getCompanyId() { return companyId; } zq-erp/src/main/resources/config/db/increment/推广员.sql
New file @@ -0,0 +1,159 @@ ALTER TABLE `biz_user` ADD COLUMN `withdrawal_cash` double(20, 2) NULL COMMENT '可提现金额' AFTER `fenxiao_state`, ADD COLUMN `salesman_grade` bigint(20) NULL COMMENT '推广员等级' AFTER `withdrawal_cash`; ALTER TABLE `shop_sku` ADD COLUMN `seales_price` decimal(20, 2) NULL COMMENT '推广提成' AFTER `company_id`, ADD COLUMN `invitation_price` decimal(20, 2) NULL COMMENT '邀请提成' AFTER `seales_price`; ALTER TABLE `bus_parameter_settings` MODIFY COLUMN `param_value3` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `param_value2`; /** * 收益流水 * @author yourName * @date 2021-03-10 17:34 */ CREATE TABLE shop_revenue_flow( create_by varchar(100) NOT NULL COMMENT '创建人', create_time datetime NOT NULL COMMENT '创建时间', update_by varchar(100) NOT NULL COMMENT '更新人', update_time datetime NOT NULL COMMENT '更新时间', id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', user_id varchar(100) COMMENT '用户id', revenue_content varchar(40) COMMENT '收益说明', amount double(20,2) COMMENT '收益金额', business_id bigint(20) COMMENT '原始订单ID', company_id bigint(20) COMMENT '公司ID', PRIMARY KEY(id) )ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='收益流水'; /** * 订单结算记录 * @author yourName * @date 2021-03-10 17:34 */ CREATE TABLE shop_saleman_settlement( create_by varchar(100) NOT NULL COMMENT '创建人', create_time datetime NOT NULL COMMENT '创建时间', update_by varchar(100) NOT NULL COMMENT '更新人', update_time datetime NOT NULL COMMENT '更新时间', id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', order_no varchar(40) COMMENT '结算编号', settlement_way int(2) COMMENT '结算方式1,线下结算,2余额结算', man_count int(11) COMMENT '结算人数', order_count int(11) COMMENT '结算单数', amount double(20,2) COMMENT '结算金额', user_id int(11) COMMENT '结算人', remark varchar(400) COMMENT '备注', company_id bigint(20) COMMENT '公司ID', PRIMARY KEY(id) )ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='订单结算记录'; /** * 推广员申请记录 * @author yourName * @date 2021-03-10 17:34 */ CREATE TABLE shop_salesman_apply( create_by varchar(100) NOT NULL COMMENT '创建人', create_time datetime NOT NULL COMMENT '创建时间', update_by varchar(100) NOT NULL COMMENT '更新人', update_time datetime NOT NULL COMMENT '更新时间', id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', apply_way int(2) COMMENT '申请方式1、自主申请,2、自动添加,3上级邀请,4、手动添加', user_id varchar(100) COMMENT '申请用户id', parent_user_id varchar(100) COMMENT '邀请用户ID', apply_status int(2) COMMENT '申请状态1、待审核,2通过,3未通过', remark varchar(4000) COMMENT '备注', company_id bigint(20) COMMENT '公司ID', PRIMARY KEY(id) )ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='推广员申请记录'; /** * 推广员等级 * @author yourName * @date 2021-03-10 17:34 */ CREATE TABLE shop_salesman_grade( create_by varchar(100) NOT NULL COMMENT '创建人', create_time datetime NOT NULL COMMENT '创建时间', update_by varchar(100) NOT NULL COMMENT '更新人', update_time datetime NOT NULL COMMENT '更新时间', id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', name varchar(200) COMMENT '等级名称', seales_commission double(20,2) COMMENT '推广提成%', invitation_commission double(20,2) COMMENT '邀请提成 %', grade_condition double(20,2) COMMENT '等级条件(推广金额额)', is_default int(2) COMMENT '默认等级1是,2不是', company_id bigint(20) COMMENT '公司ID', PRIMARY KEY(id) )ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='推广员等级'; /** * 分销订单 * @author yourName * @date 2021-03-10 17:34 */ CREATE TABLE shop_salesman_order( create_by varchar(100) NOT NULL COMMENT '创建人', create_time datetime NOT NULL COMMENT '创建时间', update_by varchar(100) NOT NULL COMMENT '更新人', update_time datetime NOT NULL COMMENT '更新时间', id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', order_id bigint(20) COMMENT '订单id', user_id varchar(100) COMMENT '用户id', sales_user_id varchar(100) COMMENT '收益人id', revenue_type int(2) COMMENT '收益类型1,推广收益,2邀请收益', amount double(20,2) COMMENT '收益金额', order_status int(2) COMMENT '结算状态', settlement_id bigint(20) COMMENT '结算单ID', company_id bigint(20) COMMENT '公司ID', PRIMARY KEY(id) )ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='分销订单'; zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanGradeDao.xml
@@ -13,7 +13,7 @@ <result property="name" column="name" /> <result property="sealesCommission" column="seales_commission" /> <result property="invitationCommission" column="invitation_commission" /> <result property="condition" column="condition" /> <result property="gradeCondition" column="grade_condition" /> <result property="isDefault" column="is_default" /> <result property="companyId" column="company_id" /> </resultMap> @@ -29,7 +29,7 @@ <result property="name" column="name" /> <result property="sealesCommission" column="seales_commission" /> <result property="invitationCommission" column="invitation_commission" /> <result property="condition" column="condition" /> <result property="gradeCondition" column="grade_condition" /> <result property="isDefault" column="is_default" /> <result property="companyId" column="company_id" /> </resultMap> zq-erp/src/main/resources/mybatis/mapper/xcxShop/BizUserDao.xml
@@ -33,6 +33,9 @@ <result property="userTempAvatarUrl" column="user_temp_avatar_url" /> <result property="userType" column="user_type" /> <result property="companyId" column="company_id" /> <result property="isSales" column="is_sales" /> <result property="withdrawalCash" column="withdrawal_cash" /> <result property="salesmanGrade" column="salesman_grade" /> </resultMap> @@ -66,6 +69,9 @@ <result property="userTempAvatarUrl" column="user_temp_avatar_url" /> <result property="userType" column="user_type" /> <result property="companyId" column="company_id" /> <result property="isSales" column="is_sales" /> <result property="withdrawalCash" column="withdrawal_cash" /> <result property="salesmanGrade" column="salesman_grade" /> </resultMap> <!-- 字段sql --> @@ -97,7 +103,11 @@ user_temp_name, user_temp_avatar_url, user_type, company_id company_id, is_sales, withdrawal_cash, salesman_grade </sql> <!-- 属性sql --> @@ -129,7 +139,11 @@ #{item.userTempName}, #{item.userTempAvatarUrl}, #{item.userType}, #{item.companyId} #{item.companyId}, #{item.isSales}, #{item.withdrawalCash}, #{item.salesmanGrade} </sql> <!-- where sql --> @@ -212,6 +226,20 @@ <if test="record.companyId != null and record.companyId !='' "> and company_id = #{record.companyId} </if> <if test="record.isSales != null and record.isSales !='' "> and is_sales = #{record.isSales} </if> <if test="record.withdrawalCash != null and record.withdrawalCash !='' "> and withdrawal_cash = #{record.withdrawalCash} </if> <if test="record.salesmanGrade != null and record.salesmanGrade !='' "> and salesman_grade = #{record.salesmanGrade} </if> <if test="(record.startTime!=null and record.startTime!='') or (record.startTime!='' and record.startTime==0) "> and date_format(create_time,'%Y-%m-%d') >= #{record.startTime} </if> @@ -317,9 +345,25 @@ <if test="_parameter.containsKey('userTempAvatarUrl')"> user_temp_avatar_url = #{userTempAvatarUrl}, </if> <if test="_parameter.containsKey('userType')"> user_type = #{userType}, </if> <if test="_parameter.containsKey('isSales')"> is_sales = #{isSales}, </if> <if test="_parameter.containsKey('withdrawalCash')"> withdrawal_cash = #{withdrawalCash}, </if> <if test="_parameter.containsKey('salesmanGrade')"> salesman_grade = #{salesmanGrade}, </if> </set> WHERE user_id=#{userId} </update> @@ -395,6 +439,17 @@ <if test="record.userType != null "> user_type = #{record.userType}, </if> <if test="record.isSales != null "> is_sales = #{record.isSales}, </if> <if test="record.withdrawalCash != null "> withdrawal_cash = #{record.withdrawalCash}, </if> <if test="record.salesmanGrade != null "> salesman_grade = #{record.salesmanGrade}, </if> </set> WHERE user_id=#{record.userId} </update> zq-erp/src/main/resources/mybatis/mapper/xcxShop/ShopSkuDao.xml
@@ -22,6 +22,8 @@ <result property="sealCount" column="seal_count"/> <result property="stockCode" column="stock_code"/> <result property="shopId" column="shop_id"/> <result property="sealesPrice" column="seales_price"/> <result property="invitationPrice" column="invitation_price"/> @@ -46,6 +48,8 @@ <result property="sealCount" column="seal_count"/> <result property="stockCode" column="stock_code"/> <result property="shopId" column="shop_id"/> <result property="sealesPrice" column="seales_price"/> <result property="invitationPrice" column="invitation_price"/> </resultMap> <!-- 字段sql --> @@ -66,7 +70,9 @@ purchase_price, seal_count, stock_code, shop_id shop_id, seales_price, invitation_price </sql> <!-- 属性sql --> @@ -87,7 +93,9 @@ #{item.purchasePrice}, #{item.sealCount}, #{item.stockCode}, #{item.shopId} #{item.shopId}, #{item.sealesPrice}, #{item.invitationPrice} </sql> @@ -188,6 +196,12 @@ <if test="_parameter.containsKey('stockCode')"> stock_code = #{stockCode}, </if> <if test="_parameter.containsKey('invitationPrice')"> invitation_price = #{invitationPrice}, </if> <if test="_parameter.containsKey('sealesPrice')"> seales_price = #{sealesPrice}, </if> </set> WHERE id=#{id} </update> @@ -231,6 +245,12 @@ <if test="record.stockCode != null "> stock_code = #{record.stockCode}, </if> <if test="record.sealesPrice != null "> seales_price = #{record.sealesPrice}, </if> <if test="record.invitationPrice != null "> invitation_price = #{record.invitationPrice}, </if> </set>