Commit 4a9cad45 authored by shiyu's avatar shiyu

用户绑定分销商

parent 8da4b6c7
package com.wwdz.ch.db.dao.distribution;
import com.wwdz.ch.db.domain.distribution.DistributorBind;
import com.wwdz.ch.db.domain.distribution.DistributorProfit;
import com.wwdz.ch.db.domain.distribution.ShopWhiteList;
public interface DistributorBindDao {
/**
* 用户是否绑定过分销商
* @param userId
* @return
*/
boolean isExisted(long userId);
/**
* 根据用户id查询绑定分销商的记录
* @param userId
* @return
*/
DistributorBind findByUserId(long userId);
/**
* 插入新记录
* @param distributorBind
* @return
*/
int insert(DistributorBind distributorBind);
}
...@@ -24,9 +24,17 @@ public interface DistributorProfitDao { ...@@ -24,9 +24,17 @@ public interface DistributorProfitDao {
/** /**
* 利润记录设置为无效 * 利润记录设置为无效
* @param distributionOrderId * @param distributionOrderId
* @param valid
* @return * @return
*/ */
int updateValid(String distributionOrderId); int updateValidState(String distributionOrderId, Boolean valid);
/**
* 根据分销单号查询
* @param distributionOrderId
* @return
*/
DistributorProfit findById(String distributionOrderId);
/** /**
* 统计分销商卖出的商品数量 * 统计分销商卖出的商品数量
......
package com.wwdz.ch.db.dao.distribution;
import com.wwdz.ch.db.domain.distribution.UserRecentBrowse;
public interface UserRecentBrowseDao {
/**
* 用户是否绑定过分销商
* @param userId
* @return
*/
boolean isExisted(long userId);
/**
* 根据用户id查询最近浏览的记录
* @param userId
* @return
*/
UserRecentBrowse findByUserId(long userId);
/**
* 插入新记录
* @param userRecentBrowse
* @return
*/
int insert(UserRecentBrowse userRecentBrowse);
/**
* 更新浏览记录
* @param userRecentBrowse
* @return
*/
int update(UserRecentBrowse userRecentBrowse);
}
package com.wwdz.ch.db.domain.distribution;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import com.xxdxxs.entity.Entity;
import lombok.Data;
/**
* @author shiyu
* @date 2024/02/23
*/
@Data
public class DistributorBind implements Entity {
private Integer id;
/**
* 用户id
*/
private Long userId;
/**
* 分销商id
*/
private Long distributorId;
/**
* 绑定来源的分享记录id
*/
private String bindShareId;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
/**
* 是否有效
*/
private Boolean isValid;
private static final long serialVersionUID = 1L;
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(getClass().getSimpleName());
sb.append(" [");
sb.append("Hash = ").append(hashCode());
sb.append(", id=").append(id);
sb.append(", userId=").append(userId);
sb.append(", distributorId=").append(distributorId);
sb.append(", bindShareId=").append(bindShareId);
sb.append(", createTime=").append(createTime);
sb.append(", updateTime=").append(updateTime);
sb.append(", isValid=").append(isValid);
sb.append(", serialVersionUID=").append(serialVersionUID);
sb.append("]");
return sb.toString();
}
@Override
public boolean equals(Object that) {
if (this == that) {
return true;
}
if (that == null) {
return false;
}
if (getClass() != that.getClass()) {
return false;
}
DistributorBind other = (DistributorBind) that;
return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
&& (this.getUserId() == null ? other.getUserId() == null : this.getUserId().equals(other.getUserId()))
&& (this.getDistributorId() == null ? other.getDistributorId() == null : this.getDistributorId().equals(other.getDistributorId()))
&& (this.getBindShareId() == null ? other.getBindShareId() == null : this.getBindShareId().equals(other.getBindShareId()))
&& (this.getCreateTime() == null ? other.getCreateTime() == null : this.getCreateTime().equals(other.getCreateTime()))
&& (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))
&& (this.getIsValid() == null ? other.getIsValid() == null : this.getIsValid().equals(other.getIsValid()));
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
result = prime * result + ((getUserId() == null) ? 0 : getUserId().hashCode());
result = prime * result + ((getDistributorId() == null) ? 0 : getDistributorId().hashCode());
result = prime * result + ((getBindShareId() == null) ? 0 : getBindShareId().hashCode());
result = prime * result + ((getCreateTime() == null) ? 0 : getCreateTime().hashCode());
result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());
result = prime * result + ((getIsValid() == null) ? 0 : getIsValid().hashCode());
return result;
}
/**
* This enum was generated by MyBatis Generator.
* This enum corresponds to the database table distributor_bind
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public enum Column {
id("id", "id", "INTEGER", false),
userId("user_id", "userId", "BIGINT", false),
distributorId("distributor_id", "distributorId", "BIGINT", false),
bindShareId("bind_share_id", "bindShareId", "VARCHAR", false),
createTime("create_time", "createTime", "TIMESTAMP", false),
updateTime("update_time", "updateTime", "TIMESTAMP", false),
isValid("is_valid", "isValid", "BIT", false);
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table distributor_bind
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
private static final String BEGINNING_DELIMITER = "`";
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table distributor_bind
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
private static final String ENDING_DELIMITER = "`";
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table distributor_bind
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
private final String column;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table distributor_bind
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
private final boolean isColumnNameDelimited;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table distributor_bind
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
private final String javaProperty;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table distributor_bind
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
private final String jdbcType;
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table distributor_bind
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public String value() {
return this.column;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table distributor_bind
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public String getValue() {
return this.column;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table distributor_bind
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public String getJavaProperty() {
return this.javaProperty;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table distributor_bind
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public String getJdbcType() {
return this.jdbcType;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table distributor_bind
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {
this.column = column;
this.javaProperty = javaProperty;
this.jdbcType = jdbcType;
this.isColumnNameDelimited = isColumnNameDelimited;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table distributor_bind
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public String desc() {
return this.getEscapedColumnName() + " DESC";
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table distributor_bind
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public String asc() {
return this.getEscapedColumnName() + " ASC";
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table distributor_bind
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public static Column[] excludes(Column ... excludes) {
ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));
if (excludes != null && excludes.length > 0) {
columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));
}
return columns.toArray(new Column[]{});
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table distributor_bind
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public String getEscapedColumnName() {
if (this.isColumnNameDelimited) {
return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();
} else {
return this.column;
}
}
}
}
\ No newline at end of file
package com.wwdz.ch.db.domain.distribution;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import com.xxdxxs.entity.Entity;
import lombok.Data;
/**
* @author shiyu
* @date 2024/02/23
*/
@Data
public class UserRecentBrowse implements Entity {
private Integer id;
/**
* 用户id
*/
private Long userId;
/**
* 分销商id
*/
private Long distributorId;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
/**
* 浏览的分享记录id
*/
private String shareRecordId;
private static final long serialVersionUID = 1L;
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(getClass().getSimpleName());
sb.append(" [");
sb.append("Hash = ").append(hashCode());
sb.append(", id=").append(id);
sb.append(", userId=").append(userId);
sb.append(", distributorId=").append(distributorId);
sb.append(", createTime=").append(createTime);
sb.append(", updateTime=").append(updateTime);
sb.append(", shareRecordId=").append(shareRecordId);
sb.append(", serialVersionUID=").append(serialVersionUID);
sb.append("]");
return sb.toString();
}
@Override
public boolean equals(Object that) {
if (this == that) {
return true;
}
if (that == null) {
return false;
}
if (getClass() != that.getClass()) {
return false;
}
UserRecentBrowse other = (UserRecentBrowse) that;
return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
&& (this.getUserId() == null ? other.getUserId() == null : this.getUserId().equals(other.getUserId()))
&& (this.getDistributorId() == null ? other.getDistributorId() == null : this.getDistributorId().equals(other.getDistributorId()))
&& (this.getCreateTime() == null ? other.getCreateTime() == null : this.getCreateTime().equals(other.getCreateTime()))
&& (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))
&& (this.getShareRecordId() == null ? other.getShareRecordId() == null : this.getShareRecordId().equals(other.getShareRecordId()));
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
result = prime * result + ((getUserId() == null) ? 0 : getUserId().hashCode());
result = prime * result + ((getDistributorId() == null) ? 0 : getDistributorId().hashCode());
result = prime * result + ((getCreateTime() == null) ? 0 : getCreateTime().hashCode());
result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());
result = prime * result + ((getShareRecordId() == null) ? 0 : getShareRecordId().hashCode());
return result;
}
/**
* This enum was generated by MyBatis Generator.
* This enum corresponds to the database table user_recent_browse
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public enum Column {
id("id", "id", "INTEGER", false),
userId("user_id", "userId", "BIGINT", false),
distributorId("distributor_id", "distributorId", "BIGINT", false),
createTime("create_time", "createTime", "TIMESTAMP", false),
updateTime("update_time", "updateTime", "TIMESTAMP", false),
shareRecordId("share_record_id", "shareRecordId", "VARCHAR", false);
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table user_recent_browse
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
private static final String BEGINNING_DELIMITER = "`";
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table user_recent_browse
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
private static final String ENDING_DELIMITER = "`";
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table user_recent_browse
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
private final String column;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table user_recent_browse
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
private final boolean isColumnNameDelimited;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table user_recent_browse
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
private final String javaProperty;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table user_recent_browse
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
private final String jdbcType;
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table user_recent_browse
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public String value() {
return this.column;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table user_recent_browse
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public String getValue() {
return this.column;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table user_recent_browse
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public String getJavaProperty() {
return this.javaProperty;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table user_recent_browse
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public String getJdbcType() {
return this.jdbcType;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table user_recent_browse
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {
this.column = column;
this.javaProperty = javaProperty;
this.jdbcType = jdbcType;
this.isColumnNameDelimited = isColumnNameDelimited;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table user_recent_browse
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public String desc() {
return this.getEscapedColumnName() + " DESC";
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table user_recent_browse
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public String asc() {
return this.getEscapedColumnName() + " ASC";
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table user_recent_browse
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public static Column[] excludes(Column ... excludes) {
ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));
if (excludes != null && excludes.length > 0) {
columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));
}
return columns.toArray(new Column[]{});
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table user_recent_browse
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public String getEscapedColumnName() {
if (this.isColumnNameDelimited) {
return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();
} else {
return this.column;
}
}
}
}
\ No newline at end of file
package com.wwdz.ch.db.impl.distribution;
import com.wwdz.ch.db.dao.distribution.DistributorBindDao;
import com.wwdz.ch.db.domain.distribution.DistributorBind;
import com.wwdz.ch.db.domain.distribution.DistributorBindExample;
import com.wwdz.ch.db.domain.distribution.ShopWhiteListExample;
import com.wwdz.ch.db.mapper.distribution.DistributorBindMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
@Repository
public class DistributorBindDaoImpl implements DistributorBindDao {
@Autowired
DistributorBindMapper distributorBindMapper;
@Override
public boolean isExisted(long userId) {
DistributorBindExample example = new DistributorBindExample();
DistributorBindExample.Criteria criteria = example.createCriteria();
criteria.andUserIdEqualTo(userId);
criteria.andIsValidEqualTo(true);
return distributorBindMapper.countByExample(example) > 0;
}
@Override
public DistributorBind findByUserId(long userId) {
DistributorBindExample example = new DistributorBindExample();
DistributorBindExample.Criteria criteria = example.createCriteria();
criteria.andUserIdEqualTo(userId);
criteria.andIsValidEqualTo(true);
return distributorBindMapper.selectOneByExample(example);
}
@Override
public int insert(DistributorBind distributorBind) {
return distributorBindMapper.insert(distributorBind);
}
}
...@@ -27,15 +27,23 @@ public class DistributorProfitDaoImpl implements DistributorProfitDao { ...@@ -27,15 +27,23 @@ public class DistributorProfitDaoImpl implements DistributorProfitDao {
} }
@Override @Override
public int updateValid(String distributionOrderId) { public int updateValidState(String distributionOrderId, Boolean valid) {
DistributorProfitExample example = new DistributorProfitExample(); DistributorProfitExample example = new DistributorProfitExample();
DistributorProfitExample.Criteria criteria = example.createCriteria(); DistributorProfitExample.Criteria criteria = example.createCriteria();
criteria.andDistributionOrderIdEqualTo(distributionOrderId); criteria.andDistributionOrderIdEqualTo(distributionOrderId);
DistributorProfit distributorProfit = new DistributorProfit(); DistributorProfit distributorProfit = new DistributorProfit();
distributorProfit.setIsValid(false); distributorProfit.setIsValid(valid);
return distributorProfitMapper.updateByExample(distributorProfit, example); return distributorProfitMapper.updateByExample(distributorProfit, example);
} }
@Override
public DistributorProfit findById(String distributionOrderId) {
DistributorProfitExample example = new DistributorProfitExample();
DistributorProfitExample.Criteria criteria = example.createCriteria();
criteria.andDistributionOrderIdEqualTo(distributionOrderId);
return distributorProfitMapper.selectOneByExample(example);
}
@Override @Override
public Long countSellItemNum(long distributorId) { public Long countSellItemNum(long distributorId) {
Long num = distributorProfitMapper.countSellItemNum(distributorId); Long num = distributorProfitMapper.countSellItemNum(distributorId);
......
package com.wwdz.ch.db.impl.distribution;
import com.wwdz.ch.db.dao.distribution.UserRecentBrowseDao;
import com.wwdz.ch.db.domain.distribution.UserRecentBrowse;
import com.wwdz.ch.db.domain.distribution.UserRecentBrowseExample;
import com.wwdz.ch.db.mapper.distribution.UserRecentBrowseMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import java.util.Date;
@Repository
public class UserRecentBrowseDaoImpl implements UserRecentBrowseDao {
@Autowired
UserRecentBrowseMapper userRecentBrowseMapper;
@Override
public boolean isExisted(long userId) {
UserRecentBrowseExample example = new UserRecentBrowseExample();
UserRecentBrowseExample.Criteria criteria = example.createCriteria();
criteria.andUserIdEqualTo(userId);
return userRecentBrowseMapper.countByExample(example) > 0;
}
@Override
public UserRecentBrowse findByUserId(long userId) {
UserRecentBrowseExample example = new UserRecentBrowseExample();
UserRecentBrowseExample.Criteria criteria = example.createCriteria();
criteria.andUserIdEqualTo(userId);
return userRecentBrowseMapper.selectOneByExample(example);
}
@Override
public int insert(UserRecentBrowse userRecentBrowse) {
return userRecentBrowseMapper.insert(userRecentBrowse);
}
@Override
public int update(UserRecentBrowse userRecentBrowse) {
userRecentBrowse.setUpdateTime(new Date());
return userRecentBrowseMapper.updateByPrimaryKeySelective(userRecentBrowse);
}
}
package com.wwdz.ch.db.mapper.distribution;
import com.wwdz.ch.db.domain.distribution.DistributorBind;
import com.wwdz.ch.db.domain.distribution.DistributorBindExample;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@Mapper
public interface DistributorBindMapper {
long countByExample(DistributorBindExample example);
int deleteByExample(DistributorBindExample example);
int deleteByPrimaryKey(Integer id);
int insert(DistributorBind record);
int insertSelective(DistributorBind record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table distributor_bind
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
DistributorBind selectOneByExample(DistributorBindExample example);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table distributor_bind
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
DistributorBind selectOneByExampleSelective(@Param("example") DistributorBindExample example, @Param("selective") DistributorBind.Column ... selective);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table distributor_bind
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
List<DistributorBind> selectByExampleSelective(@Param("example") DistributorBindExample example, @Param("selective") DistributorBind.Column ... selective);
List<DistributorBind> selectByExample(DistributorBindExample example);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table distributor_bind
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
DistributorBind selectByPrimaryKeySelective(@Param("id") Integer id, @Param("selective") DistributorBind.Column ... selective);
DistributorBind selectByPrimaryKey(Integer id);
int updateByExampleSelective(@Param("record") DistributorBind record, @Param("example") DistributorBindExample example);
int updateByExample(@Param("record") DistributorBind record, @Param("example") DistributorBindExample example);
int updateByPrimaryKeySelective(DistributorBind record);
int updateByPrimaryKey(DistributorBind record);
}
\ No newline at end of file
package com.wwdz.ch.db.mapper.distribution;
import com.wwdz.ch.db.domain.distribution.UserRecentBrowse;
import com.wwdz.ch.db.domain.distribution.UserRecentBrowseExample;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@Mapper
public interface UserRecentBrowseMapper {
long countByExample(UserRecentBrowseExample example);
int deleteByExample(UserRecentBrowseExample example);
int deleteByPrimaryKey(Integer id);
int insert(UserRecentBrowse record);
int insertSelective(UserRecentBrowse record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table user_recent_browse
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
UserRecentBrowse selectOneByExample(UserRecentBrowseExample example);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table user_recent_browse
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
UserRecentBrowse selectOneByExampleSelective(@Param("example") UserRecentBrowseExample example, @Param("selective") UserRecentBrowse.Column ... selective);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table user_recent_browse
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
List<UserRecentBrowse> selectByExampleSelective(@Param("example") UserRecentBrowseExample example, @Param("selective") UserRecentBrowse.Column ... selective);
List<UserRecentBrowse> selectByExample(UserRecentBrowseExample example);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table user_recent_browse
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
UserRecentBrowse selectByPrimaryKeySelective(@Param("id") Integer id, @Param("selective") UserRecentBrowse.Column ... selective);
UserRecentBrowse selectByPrimaryKey(Integer id);
int updateByExampleSelective(@Param("record") UserRecentBrowse record, @Param("example") UserRecentBrowseExample example);
int updateByExample(@Param("record") UserRecentBrowse record, @Param("example") UserRecentBrowseExample example);
int updateByPrimaryKeySelective(UserRecentBrowse record);
int updateByPrimaryKey(UserRecentBrowse record);
}
\ No newline at end of file
...@@ -12,9 +12,11 @@ import com.wwdz.ch.core.util.PriceUtil; ...@@ -12,9 +12,11 @@ import com.wwdz.ch.core.util.PriceUtil;
import com.wwdz.ch.core.util.RedisUtils; import com.wwdz.ch.core.util.RedisUtils;
import com.wwdz.ch.core.util.TimeUtil; import com.wwdz.ch.core.util.TimeUtil;
import com.wwdz.ch.db.dao.distribution.DistributionOrderDao; import com.wwdz.ch.db.dao.distribution.DistributionOrderDao;
import com.wwdz.ch.db.dao.distribution.DistributorBindDao;
import com.wwdz.ch.db.dao.distribution.DistributorProfitDao; import com.wwdz.ch.db.dao.distribution.DistributorProfitDao;
import com.wwdz.ch.db.dao.distribution.SupplierItemDao; import com.wwdz.ch.db.dao.distribution.SupplierItemDao;
import com.wwdz.ch.db.domain.distribution.DistributionOrder; import com.wwdz.ch.db.domain.distribution.DistributionOrder;
import com.wwdz.ch.db.domain.distribution.DistributorBind;
import com.wwdz.ch.db.domain.distribution.DistributorProfit; import com.wwdz.ch.db.domain.distribution.DistributorProfit;
import com.wwdz.ch.db.domain.distribution.SupplierItem; import com.wwdz.ch.db.domain.distribution.SupplierItem;
import com.wwdz.ch.db.dto.request.distribution.DistributionOrderRequestDto; import com.wwdz.ch.db.dto.request.distribution.DistributionOrderRequestDto;
...@@ -76,6 +78,9 @@ public class WxPayCallbackController { ...@@ -76,6 +78,9 @@ public class WxPayCallbackController {
@Autowired @Autowired
SendMsgService sendMsgService; SendMsgService sendMsgService;
@Autowired
DistributorBindDao distributorBindDao;
@RequestMapping(value ="/getPayNotify") @RequestMapping(value ="/getPayNotify")
public synchronized String payNotify(HttpServletRequest request) throws IOException { public synchronized String payNotify(HttpServletRequest request) throws IOException {
logger.info("------------------ 收到微信支付回调通知 ------------------"); logger.info("------------------ 收到微信支付回调通知 ------------------");
...@@ -175,34 +180,27 @@ public class WxPayCallbackController { ...@@ -175,34 +180,27 @@ public class WxPayCallbackController {
distributionOrderDto.setState(DistributionEnum.DistributionOrderStateEnum.PRE_SEND.getCode()); distributionOrderDto.setState(DistributionEnum.DistributionOrderStateEnum.PRE_SEND.getCode());
distributionOrderDao.update(distributionOrderDto); distributionOrderDao.update(distributionOrderDto);
//计算分销商的利润 //用户付款成功后,把分销商利润的记录更新为有效,因为未付款前只是创建了预计利润记录,但并未生效
distributorProfitDao.updateValidState(distributionOrderId, true);
//用户确认签收,新增分销商利润 //用户确认签收,新增分销商利润
DistributorProfit distributorProfit = new DistributorProfit();
DistributionOrder distributionOrder = distributionOrderDao.findById(distributionOrderId); DistributionOrder distributionOrder = distributionOrderDao.findById(distributionOrderId);
SupplierItem supplierItem = supplierItemDao.findById(distributionOrder.getItemId()); SupplierItem supplierItem = supplierItemDao.findById(distributionOrder.getItemId());
//供货成本价
Long distributionTotalPrice = supplierItem.getDistributionPrice() * distributionOrder.getItemNum();
/* //通道费
double channelCost = distributionOrder.getAmount().doubleValue() * 0.006;
if (channelCost < 1) {
channelCost = 0;
}*/
//利润
Double profit = distributionOrder.getAmount().doubleValue() - distributionTotalPrice.doubleValue();
distributorProfit.setDistributionOrderId(distributionOrderId);
distributorProfit.setDistributorId(distributionOrder.getSellerId());
distributorProfit.setItemId(distributionOrder.getItemId());
distributorProfit.setItemNum(distributionOrder.getItemNum());
distributorProfit.setAmount(distributionOrder.getAmount());
distributorProfit.setItemCost(distributionTotalPrice);
distributorProfit.setProfit((long) Math.floor(profit));
distributorProfit.setCreateTime(new Date());
distributorProfit.setIsValid(true);
distributorProfitDao.insert(distributorProfit);
//更新库存 //更新库存
supplierItemService.reduceStock(distributionOrder.getItemId(), distributionOrder.getItemNum()); supplierItemService.reduceStock(distributionOrder.getItemId(), distributionOrder.getItemNum());
logger.info(">>>>>>>>>>>> 微信支付回调通知处理成功,更新订单状态和商品库存 <<<<<<<<<<<<"); logger.info(">>>>>>>>>>>> 微信支付回调通知处理成功,更新订单状态和商品库存 <<<<<<<<<<<<");
//用户首次购买的话,即绑定该分销商
boolean isExisted = distributorBindDao.isExisted(distributionOrder.getBuyerId());
if (!isExisted) {
Date now = new Date();
DistributorBind distributorBind = new DistributorBind();
distributorBind.setUserId(distributionOrder.getBuyerId());
distributorBind.setDistributorId(distributionOrder.getSellerId());
distributorBind.setCreateTime(now);
distributorBind.setUpdateTime(now);
distributorBind.setBindShareId(distributionOrder.getShareRecordId());
distributorBind.setIsValid(true);
distributorBindDao.insert(distributorBind);
}
//用户支付成功,发送模板信息通知分销商 //用户支付成功,发送模板信息通知分销商
try { try {
String openId = sendMsgService.getOpenIdByUserId(distributionOrder.getSellerId()); String openId = sendMsgService.getOpenIdByUserId(distributionOrder.getSellerId());
......
package com.wwdz.ch.wx.impl.distribution; package com.wwdz.ch.wx.impl.distribution;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.wechat.pay.java.service.payments.model.Transaction;
import com.wwdz.ch.core.api.wxpay.WxPayServiceApi; import com.wwdz.ch.core.api.wxpay.WxPayServiceApi;
import com.wwdz.ch.core.consts.ConsignSaleEnum;
import com.wwdz.ch.core.consts.DistributionEnum; import com.wwdz.ch.core.consts.DistributionEnum;
import com.wwdz.ch.core.consts.LogisticsEnum; import com.wwdz.ch.core.consts.LogisticsEnum;
import com.wwdz.ch.core.type.PageSearchResult; import com.wwdz.ch.core.type.PageSearchResult;
...@@ -13,22 +11,18 @@ import com.wwdz.ch.db.dao.distribution.DistributionOrderDao; ...@@ -13,22 +11,18 @@ import com.wwdz.ch.db.dao.distribution.DistributionOrderDao;
import com.wwdz.ch.db.dao.distribution.DistributorProfitDao; import com.wwdz.ch.db.dao.distribution.DistributorProfitDao;
import com.wwdz.ch.db.dao.distribution.DistributorShareRecordDao; import com.wwdz.ch.db.dao.distribution.DistributorShareRecordDao;
import com.wwdz.ch.db.dao.distribution.SupplierItemDao; import com.wwdz.ch.db.dao.distribution.SupplierItemDao;
import com.wwdz.ch.db.domain.ConsignSale;
import com.wwdz.ch.db.domain.distribution.DistributionOrder; import com.wwdz.ch.db.domain.distribution.DistributionOrder;
import com.wwdz.ch.db.domain.distribution.DistributorProfit; import com.wwdz.ch.db.domain.distribution.DistributorProfit;
import com.wwdz.ch.db.domain.distribution.DistributorShareRecord; import com.wwdz.ch.db.domain.distribution.DistributorShareRecord;
import com.wwdz.ch.db.domain.distribution.SupplierItem; import com.wwdz.ch.db.domain.distribution.SupplierItem;
import com.wwdz.ch.db.dto.request.ConsignSaleRequestDto;
import com.wwdz.ch.db.dto.request.distribution.DistributionOrderRequestDto; import com.wwdz.ch.db.dto.request.distribution.DistributionOrderRequestDto;
import com.wwdz.ch.db.dto.request.distribution.SupplierItemRequestDto; import com.wwdz.ch.db.dto.request.distribution.SupplierItemRequestDto;
import com.wwdz.ch.wx.entity.DeliveryNoticeMsg; import com.wwdz.ch.wx.entity.DeliveryNoticeMsg;
import com.wwdz.ch.wx.entity.PayNoticeMsg;
import com.wwdz.ch.wx.entity.SignedNoticeMsg; import com.wwdz.ch.wx.entity.SignedNoticeMsg;
import com.wwdz.ch.wx.entity.vo.distribution.DistributionOrderDetailVo; import com.wwdz.ch.wx.entity.vo.distribution.DistributionOrderDetailVo;
import com.wwdz.ch.wx.entity.vo.distribution.DistributionOrderVo; import com.wwdz.ch.wx.entity.vo.distribution.DistributionOrderVo;
import com.wwdz.ch.wx.service.distribution.DistributionOrderService; import com.wwdz.ch.wx.service.distribution.DistributionOrderService;
import com.wwdz.ch.wx.service.distribution.SendMsgService; import com.wwdz.ch.wx.service.distribution.SendMsgService;
import com.xxdxxs.utils.DateUtils;
import com.xxdxxs.utils.EntityMapper; import com.xxdxxs.utils.EntityMapper;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -75,6 +69,7 @@ public class DistributionOrderServiceImpl implements DistributionOrderService { ...@@ -75,6 +69,7 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
@Autowired @Autowired
SendMsgService sendMsgService; SendMsgService sendMsgService;
@Transactional
@Override @Override
public Result createDistributionOrder(DistributionOrderRequestDto dto) { public Result createDistributionOrder(DistributionOrderRequestDto dto) {
try { try {
...@@ -141,9 +136,26 @@ public class DistributionOrderServiceImpl implements DistributionOrderService { ...@@ -141,9 +136,26 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
Map<String, String> map = new HashMap<>(); Map<String, String> map = new HashMap<>();
map.put("distributionOrderId", distributionOrderId); map.put("distributionOrderId", distributionOrderId);
map.put("prepayId", prepayId); map.put("prepayId", prepayId);
//计算分销商的利润
DistributorProfit distributorProfit = new DistributorProfit();
//供货成本价
Long distributionTotalPrice = supplierItem.getDistributionPrice() * distributionOrder.getItemNum();
//利润,该记录在用户未付款时未无效,仅用于在分销商查看订单详情时,计算预计利润
Double profit = distributionOrder.getAmount().doubleValue() - distributionTotalPrice.doubleValue();
distributorProfit.setDistributionOrderId(distributionOrderId);
distributorProfit.setDistributorId(distributionOrder.getSellerId());
distributorProfit.setItemId(distributionOrder.getItemId());
distributorProfit.setItemNum(distributionOrder.getItemNum());
distributorProfit.setAmount(distributionOrder.getAmount());
distributorProfit.setItemCost(distributionTotalPrice);
distributorProfit.setProfit((long) Math.floor(profit));
distributorProfit.setCreateTime(new Date());
distributorProfit.setIsValid(false);
distributorProfitDao.insert(distributorProfit);
return Result.success(map); return Result.success(map);
} catch (Exception e) { } catch (Exception e) {
logger.error("创建分销订单失败 error : {}", e); logger.error("创建分销订单失败 error : {}", e);
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
} }
return Result.failed("分销订单下单失败"); return Result.failed("分销订单下单失败");
} }
...@@ -173,7 +185,7 @@ public class DistributionOrderServiceImpl implements DistributionOrderService { ...@@ -173,7 +185,7 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
return Result.failed("该订单不是待支付状态,无法直接取消"); return Result.failed("该订单不是待支付状态,无法直接取消");
} }
distributionOrderDao.updateState(dto.getDistributionOrderId(), DistributionEnum.DistributionOrderStateEnum.CANCEL.getCode()); distributionOrderDao.updateState(dto.getDistributionOrderId(), DistributionEnum.DistributionOrderStateEnum.CANCEL.getCode());
distributorProfitDao.updateValid(dto.getDistributionOrderId()); distributorProfitDao.updateValidState(dto.getDistributionOrderId(), false);
return Result.success(); return Result.success();
} catch (Exception e) { } catch (Exception e) {
logger.error("用户取消订单失败 error : {}", e); logger.error("用户取消订单失败 error : {}", e);
...@@ -331,8 +343,10 @@ public class DistributionOrderServiceImpl implements DistributionOrderService { ...@@ -331,8 +343,10 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
distributionOrderDetailVo.setStateName(DistributionEnum.DistributionOrderStateEnum.getNameByCode(distributionOrder.getState())); distributionOrderDetailVo.setStateName(DistributionEnum.DistributionOrderStateEnum.getNameByCode(distributionOrder.getState()));
distributionOrderDetailVo.setHomePageImage(MediaUtil.getHomePageImage(supplierItem.getImages(), supplierItem.getVideos())); distributionOrderDetailVo.setHomePageImage(MediaUtil.getHomePageImage(supplierItem.getImages(), supplierItem.getVideos()));
distributionOrderDetailVo.setLogisticsName(LogisticsEnum.getNameByCode(distributionOrder.getLogisticsCode())); distributionOrderDetailVo.setLogisticsName(LogisticsEnum.getNameByCode(distributionOrder.getLogisticsCode()));
DistributorProfit distributorProfit = distributorProfitDao.findById(dto.getDistributionOrderId());
//供货价 //供货价
Long distributionTotalPrice = supplierItem.getDistributionPrice() * distributionOrder.getItemNum(); Long distributionTotalPrice = distributorProfit.getItemCost();
distributionOrderDetailVo.setDistributionPrice(PriceUtil.convertPriceFenToYuan(distributionTotalPrice)); distributionOrderDetailVo.setDistributionPrice(PriceUtil.convertPriceFenToYuan(distributionTotalPrice));
distributionOrderDetailVo.setChannelCost("6‰"); distributionOrderDetailVo.setChannelCost("6‰");
/* //通道费 /* //通道费
...@@ -342,7 +356,7 @@ public class DistributionOrderServiceImpl implements DistributionOrderService { ...@@ -342,7 +356,7 @@ public class DistributionOrderServiceImpl implements DistributionOrderService {
} }
distributionOrderDetailVo.setChannelCost(PriceUtil.convertDoubleToString(channelCost));*/ distributionOrderDetailVo.setChannelCost(PriceUtil.convertDoubleToString(channelCost));*/
//利润 //利润
Double profit = distributionOrder.getAmount().doubleValue() - distributionTotalPrice.doubleValue(); Double profit = distributorProfit.getProfit().doubleValue();
//支付截止时间,下单后2小时内 //支付截止时间,下单后2小时内
Date date = distributionOrder.getCreateTime(); Date date = distributionOrder.getCreateTime();
Instant instant = date.toInstant().plus(Duration.ofHours(2)); Instant instant = date.toInstant().plus(Duration.ofHours(2));
......
...@@ -5,13 +5,9 @@ import com.wwdz.ch.core.type.PageSearchResult; ...@@ -5,13 +5,9 @@ import com.wwdz.ch.core.type.PageSearchResult;
import com.wwdz.ch.core.type.Result; import com.wwdz.ch.core.type.Result;
import com.wwdz.ch.core.util.MediaUtil; import com.wwdz.ch.core.util.MediaUtil;
import com.wwdz.ch.core.util.PriceUtil; import com.wwdz.ch.core.util.PriceUtil;
import com.wwdz.ch.db.dao.distribution.DistributionOrderDao; import com.wwdz.ch.db.dao.distribution.*;
import com.wwdz.ch.db.dao.distribution.DistributorShareRecordDao;
import com.wwdz.ch.db.dao.distribution.SupplierItemDao;
import com.wwdz.ch.db.domain.AiAssistant; import com.wwdz.ch.db.domain.AiAssistant;
import com.wwdz.ch.db.domain.distribution.DistributionOrder; import com.wwdz.ch.db.domain.distribution.*;
import com.wwdz.ch.db.domain.distribution.DistributorShareRecord;
import com.wwdz.ch.db.domain.distribution.SupplierItem;
import com.wwdz.ch.db.dto.request.distribution.DistributorShareRecordRequestDto; import com.wwdz.ch.db.dto.request.distribution.DistributorShareRecordRequestDto;
import com.wwdz.ch.db.dto.request.distribution.SupplierItemRequestDto; import com.wwdz.ch.db.dto.request.distribution.SupplierItemRequestDto;
import com.wwdz.ch.wx.entity.vo.distribution.SupplierItemVo; import com.wwdz.ch.wx.entity.vo.distribution.SupplierItemVo;
...@@ -25,10 +21,7 @@ import org.slf4j.LoggerFactory; ...@@ -25,10 +21,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -50,6 +43,12 @@ public class SupplierItemServiceImpl implements SupplierItemService { ...@@ -50,6 +43,12 @@ public class SupplierItemServiceImpl implements SupplierItemService {
@Autowired @Autowired
RedissonClient redissonClient; RedissonClient redissonClient;
@Autowired
DistributorBindDao distributorBindDao;
@Autowired
UserRecentBrowseDao userRecentBrowseDao;
@Override @Override
public Result findList(SupplierItemRequestDto dto) { public Result findList(SupplierItemRequestDto dto) {
try { try {
...@@ -80,10 +79,30 @@ public class SupplierItemServiceImpl implements SupplierItemService { ...@@ -80,10 +79,30 @@ public class SupplierItemServiceImpl implements SupplierItemService {
try { try {
Long itemId = dto.getId(); Long itemId = dto.getId();
SupplierItemVo supplierItemVo = new SupplierItemVo(); SupplierItemVo supplierItemVo = new SupplierItemVo();
//只有用户点击商品详情才会有分享id
if (StringUtils.hasLength(dto.getShareRecordId())) { if (StringUtils.hasLength(dto.getShareRecordId())) {
DistributorShareRecord distributorShareRecord = distributorShareRecordDao.findById(dto.getShareRecordId()); DistributorShareRecord distributorShareRecord = distributorShareRecordDao.findById(dto.getShareRecordId());
supplierItemVo.setSalePrice(PriceUtil.convertPriceFenToYuan(distributorShareRecord.getPrice())); supplierItemVo.setSalePrice(PriceUtil.convertPriceFenToYuan(distributorShareRecord.getPrice()));
itemId = distributorShareRecord.getItemId(); itemId = distributorShareRecord.getItemId();
//如果用户绑定过分销商,则不做浏览记录
boolean isBinded = distributorBindDao.isExisted(dto.getUserId());
if (!isBinded) {
//不存在就新增,存在浏览记录就更新
UserRecentBrowse userRecentBrowse = userRecentBrowseDao.findByUserId(dto.getUserId());
if (userRecentBrowse != null && userRecentBrowse.getUserId() != null) {
userRecentBrowse.setShareRecordId(dto.getShareRecordId());
userRecentBrowse.setDistributorId(distributorShareRecord.getDistributorId());
userRecentBrowseDao.update(userRecentBrowse);
} else {
UserRecentBrowse newRecord = new UserRecentBrowse();
newRecord.setShareRecordId(dto.getShareRecordId());
newRecord.setDistributorId(distributorShareRecord.getDistributorId());
newRecord.setUserId(dto.getUserId());
newRecord.setCreateTime(new Date());
newRecord.setUpdateTime(new Date());
userRecentBrowseDao.insert(newRecord);
}
}
} }
SupplierItem supplierItem = supplierItemDao.findById(itemId); SupplierItem supplierItem = supplierItemDao.findById(itemId);
EntityMapper.copyAttribute(supplierItem, supplierItemVo); EntityMapper.copyAttribute(supplierItem, supplierItemVo);
...@@ -133,13 +152,18 @@ public class SupplierItemServiceImpl implements SupplierItemService { ...@@ -133,13 +152,18 @@ public class SupplierItemServiceImpl implements SupplierItemService {
try { try {
//当前用户 //当前用户
long userId = dto.getUserId(); long userId = dto.getUserId();
//查询当前用户最近一次的购买记录 //用户默认展示逍遥分享的商品列表
long sellerId = 0; long sellerId = 291997;
DistributionOrder distributionOrder = distributionOrderDao.findLastedByBuyerId(userId); //查询用户是否绑定过分销商,绑定过则展示该分销商的商品
if (distributionOrder == null || distributionOrder.getSellerId() == null) { DistributorBind distributorBind = distributorBindDao.findByUserId(userId);
sellerId = 291997; if (distributorBind != null && distributorBind.getDistributorId() != null) {
sellerId = distributorBind.getDistributorId();
} else { } else {
sellerId = distributionOrder.getSellerId(); //查询是否有最近一次浏览的分销商记录
UserRecentBrowse userRecentBrowse = userRecentBrowseDao.findByUserId(userId);
if (userRecentBrowse != null && userRecentBrowse.getDistributorId() != null) {
sellerId = userRecentBrowse.getDistributorId();
}
} }
DistributorShareRecordRequestDto distributorShareRecordRequestDto = new DistributorShareRecordRequestDto(); DistributorShareRecordRequestDto distributorShareRecordRequestDto = new DistributorShareRecordRequestDto();
distributorShareRecordRequestDto.setDistributorId(sellerId); distributorShareRecordRequestDto.setDistributorId(sellerId);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment