zq-erp/pom.xml
@@ -394,12 +394,12 @@ <exclude>config/test/*</exclude> <exclude>config/xcx/*</exclude> <!----> <!-- <exclude>config/config.json</exclude> <exclude>config/application.properties</exclude> <exclude>config/system.properties</exclude> --> <exclude>**/*.woff</exclude> <exclude>**/*.woff2</exclude> zq-erp/src/main/java/com/matrix/biz/bean/BizUser.java
@@ -43,7 +43,7 @@ /** *推广员等级 */ private Double salesmanGrade; private Long salesmanGrade; /** @@ -265,11 +265,11 @@ this.withdrawalCash = withdrawalCash; } public Double getSalesmanGrade() { public Long getSalesmanGrade() { return salesmanGrade; } public void setSalesmanGrade(Double salesmanGrade) { public void setSalesmanGrade(Long salesmanGrade) { this.salesmanGrade = salesmanGrade; } zq-erp/src/main/java/com/matrix/system/fenxiao/action/FenXiaoUserAction.java
@@ -2,19 +2,26 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.matrix.core.constance.MatrixConstance; import com.matrix.core.pojo.AjaxResult; import com.matrix.core.tools.StringUtils; import com.matrix.core.tools.WebUtil; import com.matrix.system.common.bean.SysUsers; import com.matrix.system.fenxiao.dto.AddSaleManApplyDto; import com.matrix.system.fenxiao.dto.ShopSalesmanAppliingDto; import com.matrix.system.fenxiao.dto.ShopSalesmanApplyDto; import com.matrix.system.fenxiao.service.ShopSalesmanApplyService; import com.matrix.system.fenxiao.vo.ShopSalesmanAppliingVo; import com.matrix.system.fenxiao.vo.ShopSalesmanApplyVo; import com.matrix.system.fenxiao.vo.ShopSalesmanGradeVo; import com.matrix.system.hive.action.util.QueryUtil; import io.swagger.annotations.ApiOperation; 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.List; @RestController @RequestMapping(value = "/fenXiao/fenXiaoUser") @@ -41,23 +48,12 @@ shopSalesmanApplyDto.setOrder("desc"); } Page<ShopSalesmanApplyVo> page = new Page(shopSalesmanApplyDto.getPageNum(), shopSalesmanApplyDto.getPageSize()); IPage<ShopSalesmanApplyVo> rows = shopSalesmanApplyService.findShopSalesmanApplyList(page,shopSalesmanApplyDto); AjaxResult result = AjaxResult.buildSuccessInstance(rows.getRecords(),rows.getTotal()); return result; } /** * 跳转 分销员待审核记录页面 * @RequestMapping(value = "/shopSalesmanAppliing") public String shopSalesmanAppliing() { return "admin/fenxiao/fenxiao-apply"; } */ /** *获取分销员待审核记录 @@ -71,8 +67,6 @@ AjaxResult findShopSalesmanAppliingList(@RequestBody ShopSalesmanAppliingDto shopSalesmanAppliingDto) { //设置用户公司ID QueryUtil.setQueryLimitCom(shopSalesmanAppliingDto); //查询条件待审核状态 shopSalesmanAppliingDto.setApplyStatus(1); //排序 if(StringUtils.isBlank(shopSalesmanAppliingDto.getSort())){ shopSalesmanAppliingDto.setSort("create_time"); @@ -80,9 +74,39 @@ } Page<ShopSalesmanAppliingVo> page = new Page(shopSalesmanAppliingDto.getPageNum(), shopSalesmanAppliingDto.getPageSize()); IPage<ShopSalesmanAppliingVo> rows = shopSalesmanApplyService.findShopSalesmanAppliingList(page,shopSalesmanAppliingDto); IPage<ShopSalesmanAppliingVo> rows = shopSalesmanApplyService.selectBizUserApplyList(page,shopSalesmanAppliingDto); //IPage<ShopSalesmanAppliingVo> rows = shopSalesmanApplyService.findShopSalesmanAppliingList(page,shopSalesmanAppliingDto); AjaxResult result = AjaxResult.buildSuccessInstance(rows.getRecords(),rows.getTotal()); return result; } /** *获取对应的分销员等级 */ @RequestMapping(value = "/getShopSalesmanGrade") private @ResponseBody AjaxResult getShopSalesmanGradeVo(){ AjaxResult result= AjaxResult.buildSuccessInstance("查询成功"); SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); List<ShopSalesmanGradeVo> dataList = shopSalesmanApplyService.getShopSalesmanGradeVo(user.getCompanyId()); result.putInMap("salesGrade", dataList); return result; } /** *新增分销员 */ @ApiOperation(value = "新增分销员") @PostMapping(value = "/addSaleManApply") public @ResponseBody AjaxResult findShopSalesmanAppliingList(@RequestBody AddSaleManApplyDto addSaleManApplyDto) { //设置用户公司ID QueryUtil.setQueryLimitCom(addSaleManApplyDto); AjaxResult result= AjaxResult.buildSuccessInstance("设置成功"); shopSalesmanApplyService.addSaleManApply(addSaleManApplyDto.getUserId(),addSaleManApplyDto.getGradeId()); return result; } } zq-erp/src/main/java/com/matrix/system/fenxiao/dao/ShopSalesmanApplyDao.java
@@ -28,4 +28,7 @@ IPage<ShopSalesmanAppliingVo> findShopSalesmanAppliingList(Page<ShopSalesmanAppliingVo> page, @Param("record")ShopSalesmanAppliingDto shopSalesmanAppliingDto); IPage<ShopSalesmanAppliingVo> selectBizUserApplyList(Page<ShopSalesmanAppliingVo> page, @Param("record")ShopSalesmanAppliingDto shopSalesmanAppliingDto); } zq-erp/src/main/java/com/matrix/system/fenxiao/dao/ShopSalesmanGradeDao.java
@@ -2,6 +2,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.matrix.system.fenxiao.entity.ShopSalesmanGrade; import com.matrix.system.fenxiao.vo.ShopSalesmanGradeVo; import io.lettuce.core.dynamic.annotation.Param; import java.util.List; /** * @description 推广员等级 @@ -10,4 +14,6 @@ */ public interface ShopSalesmanGradeDao extends BaseMapper<ShopSalesmanGrade> { List<ShopSalesmanGradeVo> getShopSalesmanGradeVo(@Param("companyId")Long companyId); } zq-erp/src/main/java/com/matrix/system/fenxiao/dao/ShopSalesmanOrderItemDao.java
New file @@ -0,0 +1,13 @@ package com.matrix.system.fenxiao.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.matrix.system.fenxiao.entity.ShopSalesmanOrderItem; /** * @description 分销单明细 * @author yourName * @date 2021-03-12 13:17 */ public interface ShopSalesmanOrderItemDao extends BaseMapper<ShopSalesmanOrderItem> { } zq-erp/src/main/java/com/matrix/system/fenxiao/dto/AddSaleManApplyDto.java
New file @@ -0,0 +1,20 @@ package com.matrix.system.fenxiao.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel(value = "AddSaleManApplyDto", description = "查询参数") public class AddSaleManApplyDto { @ApiModelProperty(value ="会员ID") private String userId; @ApiModelProperty(value ="等级ID") private String gradeId; @ApiModelProperty(hidden = true) private Long companyId; } zq-erp/src/main/java/com/matrix/system/fenxiao/dto/ShopSalesmanAppliingDto.java
@@ -15,8 +15,6 @@ @ApiModelProperty(hidden = true) private Long companyId; @ApiModelProperty(hidden = true) private Integer applyStatus; } zq-erp/src/main/java/com/matrix/system/fenxiao/entity/ShopSalesmanApply.java
@@ -63,6 +63,9 @@ @ApiModelProperty(value = "备注") private String remark; @ApiModelProperty(value = "等级ID") private long gradeId; /** * 公司ID */ zq-erp/src/main/java/com/matrix/system/fenxiao/entity/ShopSalesmanOrder.java
@@ -13,6 +13,25 @@ @Data @TableName("shop_salesman_order") public class ShopSalesmanOrder extends BaseEntity { /** * 推广收益类型1推广收益 */ public static final Integer REVENUE_TYPE_SALES = 1; /** * 推广收益类型2邀请收益 */ public static final Integer REVENUE_TYPE_INVITATION = 2; /** * 分销单状态1待结算 */ public static final Integer STATUS_DJS = 1; /** * 分销单状态2已结算 */ public static final Integer STATUS_YJS = 2; @Extend private static final long serialVersionUID = 1L; zq-erp/src/main/java/com/matrix/system/fenxiao/entity/ShopSalesmanOrderItem.java
New file @@ -0,0 +1,54 @@ 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 yourName * @date 2021-03-12 13:17 */ @Data @TableName("shop_salesman_order_item") public class ShopSalesmanOrderItem extends BaseEntity { @Extend private static final long serialVersionUID = 1L; /** * 订单id */ private Long orderId ; /** * 分销订单id */ private Long salesmanOrderId; /** * 订单明细id */ private Long orderItemId; /** * 收益金额 */ private Double amount; } zq-erp/src/main/java/com/matrix/system/fenxiao/service/ShopSalesmanApplyService.java
@@ -1,5 +1,6 @@ package com.matrix.system.fenxiao.service; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -11,18 +12,21 @@ 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.dao.ShopSalesmanGradeDao; import com.matrix.system.fenxiao.dto.ShopSalesmanAppliingDto; import com.matrix.system.fenxiao.dto.ShopSalesmanApplyDto; import com.matrix.system.fenxiao.entity.ShopSalesmanApply; import com.matrix.system.fenxiao.entity.ShopSalesmanGrade; import com.matrix.system.fenxiao.vo.ShopSalesmanAppliingVo; import com.matrix.system.fenxiao.vo.ShopSalesmanApplyVo; import com.matrix.system.fenxiao.vo.ShopSalesmanGradeVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Date; import java.util.List; /** * @description 推广员申请记录 @@ -38,6 +42,9 @@ @Autowired ShopSalesmanApplyDao salesmanApplyDao; @Autowired ShopSalesmanGradeDao shopSalesmanGradeDao; @Autowired private BizUserDao bizUserDao; @@ -51,7 +58,7 @@ * @param invitationId * @return */ public ShopSalesmanApply applyToBeAnSalesman(String openId, String invitationId) { public ShopSalesmanApply applyToBeAnSalesman(String openId,String gradeId,String invitationId) { BizUser loginUser=bizUserDao.findByOpenId(openId); //校验审核状态,和是否重复发起 @@ -63,6 +70,7 @@ ShopSalesmanApply shopSalesmanApply=new ShopSalesmanApply(); shopSalesmanApply.setUserId(openId); shopSalesmanApply.setCreateBy(loginUser.getNickName()); shopSalesmanApply.setApplyWay(ShopSalesmanApply.APPLY_WAY_SELF); @@ -78,8 +86,18 @@ //如果曾经是被邀请进来的则自动绑定为之前邀请人的下级 shopSalesmanApply.setParentUserId(loginUser.getParentOpenId()); } if(StringUtils.isNotBlank(gradeId)){ shopSalesmanApply.setGradeId(Long.parseLong(gradeId)); }else{ //获取初始等级ID(公司id,是否为初始等级) Wrapper<ShopSalesmanGrade> queryWrapperOrepool = new QueryWrapper<>(); ((QueryWrapper<ShopSalesmanGrade>) queryWrapperOrepool).eq("company_id", loginUser.getCompanyId()); ((QueryWrapper<ShopSalesmanGrade>) queryWrapperOrepool).eq("is_default", 1); ShopSalesmanGrade shopSalesmanGrade = shopSalesmanGradeDao.selectOne(queryWrapperOrepool); shopSalesmanApply.setGradeId(shopSalesmanGrade.getId()); } BusParameterSettings busParameterSettings = busParameterSettingsDao.selectCompanyParamByCode(FenxiaoSettingConstant.FX_AUDIT_METHOD, HostInterceptor.getCompanyId()); BusParameterSettings busParameterSettings = busParameterSettingsDao.selectCompanyParamByCode(FenxiaoSettingConstant.FX_AUDIT_METHOD, loginUser.getCompanyId()); if(busParameterSettings!=null &&busParameterSettings.getParamValue().equals("1")){ //自动审核 @@ -106,4 +124,33 @@ return salesmanApplyDao.findShopSalesmanAppliingList(page,shopSalesmanAppliingDto); } public IPage<ShopSalesmanAppliingVo> selectBizUserApplyList(Page<ShopSalesmanAppliingVo> page, ShopSalesmanAppliingDto shopSalesmanAppliingDto) { return salesmanApplyDao.selectBizUserApplyList(page,shopSalesmanAppliingDto); } public List<ShopSalesmanGradeVo> getShopSalesmanGradeVo(Long companyId) { return shopSalesmanGradeDao.getShopSalesmanGradeVo(companyId); } public void addSaleManApply(String userId,String gradeId) { BizUser user = bizUserDao.selectById(userId); applyToBeAnSalesman(user.getOpenId(),gradeId, ""); } } zq-erp/src/main/java/com/matrix/system/fenxiao/service/ShopSalesmanOrderItemService.java
New file @@ -0,0 +1,20 @@ package com.matrix.system.fenxiao.service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.matrix.system.fenxiao.dao.ShopSalesmanOrderItemDao; import com.matrix.system.fenxiao.entity.ShopSalesmanOrderItem; import org.springframework.stereotype.Service; /** * @description 分销单明细 * @author yourName * @date 2021-03-12 13:17 */ @Service public class ShopSalesmanOrderItemService extends ServiceImpl<ShopSalesmanOrderItemDao, ShopSalesmanOrderItem>{ } zq-erp/src/main/java/com/matrix/system/fenxiao/vo/ShopSalesmanGradeVo.java
New file @@ -0,0 +1,17 @@ package com.matrix.system.fenxiao.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel(value = "ShopSalesmanGradeVo", description = "返参") public class ShopSalesmanGradeVo { @ApiModelProperty(value = "id") private Long id; @ApiModelProperty(value = "等级名称") private String name; } zq-erp/src/main/java/com/matrix/system/shopXcx/api/action/WxSalesmanAction.java
@@ -54,6 +54,7 @@ @Autowired ShopSalesmanApplyDao salesmanApplyDao; @Autowired ShopSalesmanApplyService shopSalesmanApplyService; @@ -84,7 +85,7 @@ public AjaxResult applyToBeAnSalesman(@RequestBody Map<String,String> param) { BizUser loginUser = redisUserLoginUtils.getLoginUser(BizUser.class); String invitationId = param.get("invitationId"); ShopSalesmanApply shopSalesmanApply= shopSalesmanApplyService.applyToBeAnSalesman(loginUser.getOpenId(),invitationId); ShopSalesmanApply shopSalesmanApply= shopSalesmanApplyService.applyToBeAnSalesman(loginUser.getOpenId(),"",invitationId); loginUser=bizUserDao.selectById(loginUser.getUserId()); redisUserLoginUtils.updateUserInfo(loginUser); return AjaxResult.buildSuccessInstance(shopSalesmanApply); zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/OrderTask.java
@@ -3,11 +3,16 @@ import com.matrix.biz.bean.BizUser; import com.matrix.biz.service.BizUserService; import com.matrix.core.constance.MatrixConstance; import com.matrix.core.tools.LogUtil; import com.matrix.core.tools.StringUtils; import com.matrix.system.common.constance.AppConstance; import com.matrix.system.common.dao.BusParameterSettingsDao; import com.matrix.system.constance.Dictionary; import com.matrix.system.fenxiao.dao.ShopSalesmanGradeDao; import com.matrix.system.fenxiao.dao.ShopSalesmanOrderDao; import com.matrix.system.fenxiao.entity.ShopSalesmanGrade; import com.matrix.system.fenxiao.entity.ShopSalesmanOrder; import com.matrix.system.hive.bean.*; import com.matrix.system.hive.dao.*; import com.matrix.system.hive.service.CodeService; @@ -21,6 +26,7 @@ import com.matrix.system.shopXcx.dao.ShopSkuDao; import com.rabbitmq.client.DeliverCallback; import com.rabbitmq.client.Delivery; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -78,8 +84,15 @@ @Autowired private ShoppingGoodsDao shoppingGoodsDao; @Autowired private ShopSalesmanOrderDao shopSalesmanOrderDao; @Autowired private ShopSalesmanGradeDao shopSalesmanGradeDao; @Transactional(rollbackFor = Exception.class) public void createOrder(ShopOrder orderDto) { public void synchronizationOrderToErp(ShopOrder orderDto) { //判断是否存在需要同步的产品,只有绑定了erp中产品的才同步 boolean needTb=false; for (ShopOrderDetails orderItemDto : orderDto.getDetails()) { @@ -236,7 +249,96 @@ //获取订单详情 List<ShopOrderDetails> orderDetails = shopOrderDetailsDao.selectByOrderId(Integer.valueOf(orderId)); order.setDetails(orderDetails); createOrder(order); //同步订单到erp synchronizationOrderToErp(order); //处理分销订单 handleExtensionOrder(order); } /** * 处理分销订单 * @param order */ @Transactional void handleExtensionOrder(ShopOrder order) { //判读客户是否存在上级,存在则产生上级的收益 BizUser bizUser = bizUserService.findByOpenId(order.getUserId()); if(StringUtils.isNotBlank(bizUser.getParentOpenId())){ LogUtil.debug("处理分销订单userOpid={}",bizUser.getOpenId()); //存在上级 ShopSalesmanOrder salesmanOrder=new ShopSalesmanOrder(); salesmanOrder.setCompanyId(order.getCompanyId()); salesmanOrder.setCreateBy(MatrixConstance.SYSTEM_USER); salesmanOrder.setUpdateBy(MatrixConstance.SYSTEM_USER); salesmanOrder.setCreateTime(new Date()); salesmanOrder.setUpdateTime(new Date()); salesmanOrder.setOrderId(Long.parseLong(order.getId()+"")); salesmanOrder.setUserId(order.getUserId()); salesmanOrder.setSalesUserId(bizUser.getParentOpenId()); salesmanOrder.setRevenueType(ShopSalesmanOrder.REVENUE_TYPE_SALES); salesmanOrder.setOrderStatus(ShopSalesmanOrder.STATUS_DJS); Double salesAmount=0D; Double invitationAmount=0D; Double orderTotal=0D; Double zk=1D; BizUser salesMan=bizUserService.findByOpenId(bizUser.getParentOpenId()); BizUser invitationMan=null; ShopSalesmanOrder invitationOrder=null; boolean hasInvitationMan=StringUtils.isNotBlank(salesMan.getParentOpenId()); //判断推广员是否还存在上级,存在则计算邀请收益 if(hasInvitationMan){ invitationMan=bizUserService.findByOpenId(salesMan.getParentOpenId()); invitationOrder=new ShopSalesmanOrder(); BeanUtils.copyProperties(salesmanOrder,invitationOrder); invitationOrder.setSalesUserId(invitationMan.getOpenId()); invitationOrder.setRevenueType(ShopSalesmanOrder.REVENUE_TYPE_INVITATION); } //收益计算 for (ShopOrderDetails item:order.getDetails() ){ if(StringUtils.isNotBlank(item.getShopProduct().getAttrValues()) && item.getShopProduct().getAttrValues().contains("分销商城")){ if(item.getShopSku().getSealesPrice()==null ||item.getShopSku().getSealesPrice().doubleValue()==0){ //按分销等级计算 ShopSalesmanGrade shopSalesmanGrade = shopSalesmanGradeDao.selectById(salesMan.getSalesmanGrade()); salesAmount+=item.getTotalPrice().doubleValue()*(shopSalesmanGrade.getSealesCommission()/100); if(hasInvitationMan){ ShopSalesmanGrade invitationManGrade = shopSalesmanGradeDao.selectById(invitationMan.getSalesmanGrade()); invitationAmount+=item.getTotalPrice().doubleValue()*(invitationManGrade.getSealesCommission()/100); } }else{ //按产品设置的推广金额计算 salesAmount+=item.getShopSku().getSealesPrice().doubleValue()*item.getCount(); if(hasInvitationMan){ invitationAmount+=item.getShopSku().getInvitationPrice().doubleValue()*item.getCount(); } } orderTotal+=item.getTotalPrice().doubleValue(); } } //整体的优惠金额折算成折扣,* 佣金 zk=order.getOrderMoney().doubleValue()/orderTotal; salesAmount=salesAmount*zk; salesmanOrder.setAmount(salesAmount); shopSalesmanOrderDao.insert(salesmanOrder); if(hasInvitationMan){ invitationAmount=invitationAmount*zk; invitationOrder.setAmount(invitationAmount); shopSalesmanOrderDao.insert(invitationOrder); } }else{ LogUtil.debug("不存在父级userOpid={}",bizUser.getOpenId()); } } } zq-erp/src/main/resources/config/db/increment/推广员.sql
@@ -11,6 +11,29 @@ /** * 分销单明细 * @author yourName * @date 2021-03-12 13:17 */ CREATE TABLE shop_salesman_order_item( 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', salesman_order_id bigint(20) COMMENT '分销订单id', order_item_id bigint(20) COMMENT '订单明细id', amount double(20,2) COMMENT '收益金额', PRIMARY KEY(id) )ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='分销单明细'; /** * 收益流水 * @author yourName * @date 2021-03-10 17:34 zq-erp/src/main/resources/config/test/application.properties
@@ -65,7 +65,7 @@ #定时任务 scheduling.enabled=false swagger.enable=false swagger.enable=true swagger.security.username=admin swagger.security.password=admin zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanApplyDao.xml
@@ -46,7 +46,9 @@ shop_salesman_order b WHERE b.user_id = a.open_id and order_status=2 AND b.sales_user_id = #{openId} ) AS revenueAmount, ( SELECT count( * ) FROM shop_salesman_order c WHERE c.user_id = a.open_id AND c.sales_user_id = #{openId} ) AS orderCount FROM @@ -58,13 +60,15 @@ <select id="findShopSalesmanApplyList" resultType="com.matrix.system.fenxiao.vo.ShopSalesmanApplyVo"> SELECT a.user_id userId a.user_id userId, b.nick_name nickname, (SELECT s.nick_name from biz_user s where s.user_id = a.parent_user_id) parentUser, FROM shop_salesman_apply a LEFT JOIN biz_user b ON a.user_id = b.user_id LEFT JOIN shop_salesman_grade g ON b.salesman_grade = g.id <where> and a.company_id=#{record.companyId} a.company_id=#{record.companyId} <if test="record.shenheState != null and record.shenheState != ''"> and a.apply_status=#{record.shenheState} </if> @@ -82,7 +86,7 @@ shop_salesman_apply a LEFT JOIN biz_user b ON a.user_id = b.user_id <where> and a.company_id = #{record.companyId} a.company_id = #{record.companyId} and a.apply_status = #{record.applyStatus} <if test="record.nickName != null and record.nickName != ''"> and b.nick_name like concat('%',#{record.nickName},'%') @@ -93,5 +97,25 @@ a.${record.sort} ${record.order} </if> </select> <select id="selectBizUserApplyList" resultType="com.matrix.system.fenxiao.vo.ShopSalesmanAppliingVo"> SELECT a.user_id userId, a.nick_name nickName FROM biz_user a LEFT JOIN shop_salesman_apply b ON a.user_id = b.user_id <where> a.company_id = #{record.companyId} and a.is_sales != 1 and b.apply_status != 1 <if test="record.nickName != null and record.nickName != ''"> and a.nick_name like concat('%',#{record.nickName},'%') </if> </where> <if test="record.sort !=null"> order by a.${record.sort} ${record.order} </if> </select> </mapper> zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanGradeDao.xml
@@ -34,4 +34,15 @@ <result property="companyId" column="company_id" /> </resultMap> <select id="getShopSalesmanGradeVo" resultType="com.matrix.system.fenxiao.vo.ShopSalesmanGradeVo"> SELECT a.id, a.name FROM shop_salesman_grade a where a.company_id = #{companyId} </select> </mapper> zq-erp/src/main/resources/mybatis/mapper/fenxiao/ShopSalesmanOrderItemDao.xml
New file @@ -0,0 +1,33 @@ <?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.matrix.system.fenxiao.dao.ShopSalesmanOrderItemDao"> <!-- 定义ShopSalesmanOrderItem 的复杂关联map --> <resultMap type="com.matrix.system.fenxiao.entity.ShopSalesmanOrderItem" id="ShopSalesmanOrderItemMap"> <id property="id" column="id" /> <result property="createBy" column="create_by" /> <result property="createTime" column="create_time" /> <result property="updateBy" column="update_by" /> <result property="updateTime" column="update_time" /> <result property="orderId " column="order_id " /> <result property="salesmanOrderId" column="salesman_order_id" /> <result property="orderItemId" column="order_item_id" /> <result property="amount" column="amount" /> </resultMap> <!-- 定义ShopSalesmanOrderItem 的简单map ,本map不添加其他的关联属性 --> <resultMap type="com.matrix.system.fenxiao.entity.ShopSalesmanOrderItem" id="ShopSalesmanOrderItemSimpleMap"> <id property="id" column="id" /> <result property="createBy" column="create_by" /> <result property="createTime" column="create_time" /> <result property="updateBy" column="update_by" /> <result property="updateTime" column="update_time" /> <result property="orderId " column="order_id " /> <result property="salesmanOrderId" column="salesman_order_id" /> <result property="orderItemId" column="order_item_id" /> <result property="amount" column="amount" /> </resultMap> </mapper> zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-apply.html
@@ -18,12 +18,6 @@ .panel-body{ overflow: hidden; } .rowPanel{ background: #ffffff; padding: 0px 10px ; padding-top: 10px; margin: 0px 0px 10px 0px; } .paginationStyle{ background: #ffffff; padding: 10px 10px; @@ -34,7 +28,7 @@ </head> <body> <div class="panel-body" id="app"> <el-row class="rowPanel" > <el-row style="display:flex;align-items: center;"> <el-form ref="form" :model="form" inline > <el-form-item prop="nickName"> <el-input v-model="form.nickName" placeholder="请输入会员姓名"></el-input> @@ -50,17 +44,28 @@ <el-table id="proj" :data="table.rows" :height="height" stripe @sort-change="sortChange"> <el-table-column prop="userId" label="订单号" width="180"> label="" width="300"> </el-table-column> <el-table-column prop="nickname" label="分销员昵称" width="180"> </el-table-column> <el-table-column prop="salesGrade" label="分销等级" width="180"> <template slot-scope="scope"> <el-select v-model="scope.row.proJbruserValue" @focus="getDatalist(scope.row)" placeholder="请选择" filterable allow-create> <el-option v-for="item in salesGradeList " :key="item.id" :label="item.name" :value="item.id"> </el-option> </el-select> </template> </el-table-column> <el-table-column label="操作"> <template slot-scope="scope"> <el-button type="text" size="small">设置为分销员</el-button> <el-button type="text" size="small" @click="addSaleManApply(scope.row)">设置为分销员</el-button> </template> </el-table-column> </el-table> @@ -102,6 +107,8 @@ order:'', sort:'' }, proJbruserValue : "", salesGradeList: [], height:'calc(100vh - 240px)', }, created: function () { @@ -109,6 +116,38 @@ window.addEventListener("keydown", this.keydown); }, methods: { //设置为分销员 addSaleManApply(row){ let _this = this; let userId = row.userId; let gradeId = row.proJbruserValue; alert(gradeId); let obj = { userId: userId, gradeId: gradeId, } AjaxProxy.requst({ app: _this, data:obj, url: basePath + '/fenXiao/fenXiaoUser/addSaleManApply', callback: function (data) { _this.$message.success(data.info); this.loadData(); } }); }, // select下拉框获取焦点的时候查询对应的下拉框数据源 getDatalist(row) { let _this = this; AjaxProxy.requst({ app: _this, data:[], url: basePath + '/fenXiao/fenXiaoUser/getShopSalesmanGrade', callback: function (data) { _this.salesGradeList = data.mapInfo.salesGrade; } }); }, changePageSize(val) { this.table.pageSize = val; this.loadData(); zq-erp/src/main/resources/templates/views/admin/fenxiao/fenxiao-user.html
@@ -74,8 +74,9 @@ <el-table-column fixed="right" label="操作" width="100"> width="auto"> <template slot-scope="scope"> <el-button type="text" size="small" @click="addSaleManApply(scope.row)">审核</el-button> <el-button @click="handleClick(scope.row)" type="text" size="small">查看</el-button> <el-button type="text" size="small">编辑</el-button> </template> zq-erp/src/main/resources/templates/views/admin/shop/shopProduct-form.html
@@ -229,6 +229,8 @@ <th>积分</th> <th>关联ERP产品</th> <th>排序</th> <th>推广提成</th> <th>邀请提成</th> <th>操作</th> </tr> </table> @@ -357,6 +359,8 @@ <input autocomplete="off" type="hidden" class="form-control" name="erpGoodsCode"> </div></td> <td><input autocomplete="off" type="text" class="form-control" name=""></td> <td><input autocomplete="off" type="text" class="form-control" name=""></td> <td><input autocomplete="off" type="text" class="form-control" name=""></td> <td><i class="fa fa-trash form-control-static" onclick="delThis('trId')"></i></td> </tr> </script> @@ -526,6 +530,16 @@ goodsName = ""; } var sealesPrice = shopSkus[c].sealesPrice; if (sealesPrice == null || typeof sealesPrice == 'undefined') { sealesPrice = ""; } var invitationPrice = shopSkus[c].invitationPrice; if (invitationPrice == null || typeof invitationPrice == 'undefined') { invitationPrice = ""; } var html= '<tr id="'+trId+'">' +'<td style="display:none;"><input autocomplete="off" type="hidden" class="form-control" value="'+shopSkus[c].id+'" ></td>' @@ -538,6 +552,8 @@ +'<td><div id="erpNoDiv"><button class="btn btn-info" onclick="selectProduct(\'shopIdValue\',\''+trId+'\')"><i class="fa fa-plus"></i></button>' +'<p class="form-control-static erpGoodsName">'+ goodsName +'</p><input autocomplete="off" class="form-control" type="hidden" value="'+stockCode+'" name="erpGoodsCode"></div></td>' +'<td><input autocomplete="off" type="text" class="form-control" value="'+sort+'" name=""></td>' +'<td><input autocomplete="off" type="text" class="form-control" value="'+sealesPrice+'" name=""></td>' +'<td><input autocomplete="off" type="text" class="form-control" value="'+invitationPrice+'" name=""></td>' +'<td><i class="fa fa-trash form-control-static" onclick="delThis(\''+trId+'\')"></i></td>' +'</tr>'; $("#skutable").find("tbody").append(html); @@ -617,7 +633,7 @@ //初始化属性下拉选 function initAttrSeclect(seler, def) { $.AjaxProxy().invoke(basePath + "/admin/shopProductAttribute/showSonAttribute?attrCode=service", $.AjaxProxy().invoke(basePath + "/admin/shopProductAttribute/showSonAttribute?attrCode=productColumn", function (loj) { $(seler).createSelectTree( loj.attr("result").rows, @@ -708,61 +724,68 @@ if (i != 0) { var tds = $(this).find("td"); var length = tds.length - 1; var id = tds.eq(length - 8).find("input").val(); var id = tds.eq(length - 10).find("input").val(); if(id == null){ id =""; } sku.id = id; //规格名称 var name = tds.eq(length - 7).find("input").val(); var name = tds.eq(length - 9).find("input").val(); if(name == null){ name = ""; } sku.name = name; //图片地址 var path = tds.eq(length - 6).find("img").attr("src"); var path = tds.eq(length - 8).find("img").attr("src"); if(path == null){ path = ""; } sku.imgPath = path; //库存 var stock = tds.eq(length - 5).find("input").val(); var stock = tds.eq(length - 7).find("input").val(); if(stock == ""){ stock = 0; } sku.stock = stock; //价格 var price = tds.eq(length - 4).find("input").val(); var price = tds.eq(length -6).find("input").val(); if(price == ""){ price =0; } sku.price = price; //积分 var score = tds.eq(length - 3).find("input").val(); var score = tds.eq(length - 5).find("input").val(); if(score == ""){ score = 0; } sku.score = score; //品种编码 var stockCode = tds.eq(length - 2).find("input").val(); var stockCode = tds.eq(length - 4).find("input").val(); if(stockCode == null || typeof stockCode == 'undefined'){ stockCode = ''; } sku.stockCode = stockCode; //排序 var sort = tds.eq(length - 1).find("input").val(); var sort = tds.eq(length - 3).find("input").val(); if(sort == ""){ sort = 0; } sku.sort = sort; //推广提成 var sealesPrice = tds.eq(length - 2).find("input").val(); sku.sealesPrice = sealesPrice; //邀请提成 var invitationPrice = tds.eq(length - 1).find("input").val(); sku.invitationPrice = invitationPrice; skus.push(sku); } @@ -780,7 +803,7 @@ if (i != 0) { var tds = $(this).find("td"); var length = tds.length - 1; var name = tds.eq(length - 7).find("input").val(); var name = tds.eq(length - 9).find("input").val(); if(name == ""){ layer.msg("请填写规格名称",{ icon : 2, @@ -798,7 +821,7 @@ return false; } var stock = tds.eq(length - 5).find("input").val(); var stock = tds.eq(length -7).find("input").val(); if(stock == ""){ layer.msg("请填写库存",{ icon : 2, @@ -807,7 +830,7 @@ flag = true; return false; } var price = tds.eq(length - 4).find("input").val(); var price = tds.eq(length - 6).find("input").val(); if(price == ""){ layer.msg("请填写价格",{ icon : 2,