master:用户关注档口功能;

pull/1121/head
liujiang 2025-04-12 10:38:44 +08:00
parent f76a01100c
commit 468445a814
15 changed files with 345 additions and 389 deletions

View File

@ -1,91 +1,71 @@
package com.ruoyi.web.controller.xkt;
import cn.hutool.core.bean.BeanUtil;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.XktBaseController;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.page.Page;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.xkt.domain.UserSubscriptions;
import com.ruoyi.web.controller.xkt.vo.userSubscriptions.UserSubscDeleteVO;
import com.ruoyi.web.controller.xkt.vo.userSubscriptions.UserSubscPageVO;
import com.ruoyi.web.controller.xkt.vo.userSubscriptions.UserSubscVO;
import com.ruoyi.xkt.dto.userSubscriptions.UserSubscDTO;
import com.ruoyi.xkt.dto.userSubscriptions.UserSubscDeleteDTO;
import com.ruoyi.xkt.dto.userSubscriptions.UserSubscPageDTO;
import com.ruoyi.xkt.dto.userSubscriptions.UserSubscPageResDTO;
import com.ruoyi.xkt.service.IUserSubscriptionsService;
import org.springframework.beans.factory.annotation.Autowired;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* uController
* Controller
*
* @author ruoyi
* @date 2025-03-26
*/
@Api(tags = "用户关注档口(只有电商卖家可操作)")
@RequiredArgsConstructor
@RestController
@RequestMapping("/rest/v1/user-subs")
public class UserSubscriptionsController extends XktBaseController {
@Autowired
private IUserSubscriptionsService userSubscriptionsService;
final IUserSubscriptionsService userSubscService;
/**
* u
*/
@PreAuthorize("@ss.hasPermi('system:subscriptions:list')")
@GetMapping("/list")
public TableDataInfo list(UserSubscriptions userSubscriptions) {
startPage();
List<UserSubscriptions> list = userSubscriptionsService.selectUserSubscriptionsList(userSubscriptions);
return getDataTable(list);
}
/**
* u
*/
@PreAuthorize("@ss.hasPermi('system:subscriptions:export')")
@Log(title = "用户关注u档口", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, UserSubscriptions userSubscriptions) {
List<UserSubscriptions> list = userSubscriptionsService.selectUserSubscriptionsList(userSubscriptions);
ExcelUtil<UserSubscriptions> util = new ExcelUtil<UserSubscriptions>(UserSubscriptions.class);
util.exportExcel(response, list, "用户关注u档口数据");
}
/**
* u
*/
@PreAuthorize("@ss.hasPermi('system:subscriptions:query')")
@GetMapping(value = "/{userSubsId}")
public R getInfo(@PathVariable("userSubsId") Long userSubsId) {
return success(userSubscriptionsService.selectUserSubscriptionsByUserSubsId(userSubsId));
}
/**
* u
*
*/
@PreAuthorize("@ss.hasPermi('system:subscriptions:add')")
@Log(title = "用户关注u档口", businessType = BusinessType.INSERT)
@ApiOperation(value = "新增用户关注档口", httpMethod = "POST", response = R.class)
@Log(title = "新增用户关注档口", businessType = BusinessType.INSERT)
@PostMapping
public R add(@RequestBody UserSubscriptions userSubscriptions) {
return success(userSubscriptionsService.insertUserSubscriptions(userSubscriptions));
public R<Integer> create(@Validated @RequestBody UserSubscVO subscVO) {
return R.ok(userSubscService.create(BeanUtil.toBean(subscVO, UserSubscDTO.class)));
}
/**
* u
*
*/
@PreAuthorize("@ss.hasPermi('system:subscriptions:edit')")
@Log(title = "用户关注u档口", businessType = BusinessType.UPDATE)
@PutMapping
public R edit(@RequestBody UserSubscriptions userSubscriptions) {
return success(userSubscriptionsService.updateUserSubscriptions(userSubscriptions));
@PreAuthorize("@ss.hasPermi('system:favorites:list')")
@ApiOperation(value = "用户关注档口列表", httpMethod = "POST", response = R.class)
@PostMapping("/page")
public R<Page<UserSubscPageResDTO>> page(@Validated @RequestBody UserSubscPageVO pageVO) {
return R.ok(userSubscService.page(BeanUtil.toBean(pageVO, UserSubscPageDTO.class)));
}
/**
* u
*
*/
@PreAuthorize("@ss.hasPermi('system:subscriptions:remove')")
@Log(title = "用户关注u档口", businessType = BusinessType.DELETE)
@DeleteMapping("/{userSubsIds}")
public R remove(@PathVariable Long[] userSubsIds) {
return success(userSubscriptionsService.deleteUserSubscriptionsByUserSubsIds(userSubsIds));
@ApiOperation(value = "用户取消关注档口", httpMethod = "DELETE", response = R.class)
@Log(title = "用户取消关注档口", businessType = BusinessType.DELETE)
@DeleteMapping("/batch")
public R<Integer> remove(@Validated @RequestBody UserSubscDeleteVO deleteVO) {
return R.ok(userSubscService.delete(BeanUtil.toBean(deleteVO, UserSubscDeleteDTO.class)));
}
}

View File

@ -0,0 +1,25 @@
package com.ruoyi.web.controller.xkt.vo.userSubscriptions;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* @author liujiang
* @version v1.0
* @date 2025/3/27 15:12
*/
@ApiModel("电商卖家新增店铺关注")
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class UserSubscDeleteVO {
@NotNull(message = "用户关注ID列表不能为空!")
@ApiModelProperty(value = "用户关注ID")
private List<Long> userSubscIdList;
}

View File

@ -0,0 +1,24 @@
package com.ruoyi.web.controller.xkt.vo.userSubscriptions;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.ruoyi.web.controller.xkt.vo.BasePageVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* @author liujiang
* @version v1.0
* @date 2025/3/27 15:12
*/
@EqualsAndHashCode(callSuper = true)
@ApiModel("用户关注档口列表查询入参")
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class UserSubscPageVO extends BasePageVO {
@ApiModelProperty(value = "档口名称")
private String storeName;
}

View File

@ -0,0 +1,25 @@
package com.ruoyi.web.controller.xkt.vo.userSubscriptions;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* @author liujiang
* @version v1.0
* @date 2025/3/27 15:12
*/
@ApiModel("电商卖家取消店铺关注")
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class UserSubscVO {
@NotNull(message = "档口ID不能为空!")
@ApiModelProperty(value = "档口ID")
private Long storeId;
}

View File

@ -2,7 +2,6 @@ package com.ruoyi.xkt.dto.userFavorite;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -40,6 +39,8 @@ public class UserFavoritePageResDTO {
private String prodTitle;
@ApiModelProperty(value = "商品标准尺码列表")
private String standardSize;
@ApiModelProperty(name = "商品状态")
private Integer prodStatus;
@ApiModelProperty(value = "收藏时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;

View File

@ -0,0 +1,24 @@
package com.ruoyi.xkt.dto.userSubscriptions;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @author liujiang
* @version v1.0
* @date 2025/3/27 15:12
*/
@ApiModel("电商卖家新增店铺关注")
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class UserSubscDTO {
@NotNull(message = "档口ID不能为空!")
@ApiModelProperty(value = "档口ID")
private Long storeId;
}

View File

@ -0,0 +1,23 @@
package com.ruoyi.xkt.dto.userSubscriptions;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @author liujiang
* @version v1.0
* @date 2025/3/27 15:12
*/
@ApiModel("电商卖家新增店铺关注")
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class UserSubscDeleteDTO {
@ApiModelProperty(value = "用户关注ID")
private List<Long> userSubscIdList;
}

View File

@ -0,0 +1,24 @@
package com.ruoyi.xkt.dto.userSubscriptions;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.ruoyi.xkt.dto.BasePageDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* @author liujiang
* @version v1.0
* @date 2025/3/27 15:12
*/
@EqualsAndHashCode(callSuper = true)
@ApiModel("用户关注档口列表查询入参")
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class UserSubscPageDTO extends BasePageDTO {
@ApiModelProperty(value = "档口名称")
private String storeName;
}

View File

@ -0,0 +1,37 @@
package com.ruoyi.xkt.dto.userSubscriptions;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* @author liujiang
* @version v1.0
* @date 2025/3/27 15:12
*/
@ApiModel("电商卖家关注档口列表返回数据")
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
@Accessors(chain = true)
public class UserSubscPageResDTO {
@ApiModelProperty(value = "用户关注档口ID")
private Long userSubscId;
@ApiModelProperty(value = "档口ID")
private Long storeId;
@ApiModelProperty(name = "档口名称")
private String storeName;
@ApiModelProperty(name = "联系电话")
private String contactPhone;
@ApiModelProperty(name = "备选联系电话")
private String contactBackPhone;
@ApiModelProperty(name = "微信账号")
private String wechatAccount;
@ApiModelProperty(name = "QQ账号")
private String qqAccount;
@ApiModelProperty(name = "档口地址")
private String storeAddress;
}

View File

@ -14,54 +14,6 @@ import java.util.List;
* @date 2025-03-26
*/
public interface UserFavoritesMapper extends BaseMapper<UserFavorites> {
/**
*
*
* @param id
* @return
*/
public UserFavorites selectUserFavoritesByUserFavoId(Long id);
/**
*
*
* @param userFavorites
* @return
*/
public List<UserFavorites> selectUserFavoritesList(UserFavorites userFavorites);
/**
*
*
* @param userFavorites
* @return
*/
public int insertUserFavorites(UserFavorites userFavorites);
/**
*
*
* @param userFavorites
* @return
*/
public int updateUserFavorites(UserFavorites userFavorites);
/**
*
*
* @param id
* @return
*/
public int deleteUserFavoritesByUserFavoId(Long id);
/**
*
*
* @param userFavoIds
* @return
*/
public int deleteUserFavoritesByUserFavoIds(Long[] userFavoIds);
/**
*
* @param pageDTO

View File

@ -2,6 +2,8 @@ package com.ruoyi.xkt.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.xkt.domain.UserSubscriptions;
import com.ruoyi.xkt.dto.userSubscriptions.UserSubscPageResDTO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -12,51 +14,14 @@ import java.util.List;
* @date 2025-03-26
*/
public interface UserSubscriptionsMapper extends BaseMapper<UserSubscriptions> {
/**
* u
*
* @param id u
* @return u
*/
public UserSubscriptions selectUserSubscriptionsByUserSubsId(Long id);
/**
* u
*
*
* @param userSubscriptions u
* @return u
* @param userId ID
* @param storeName
* @return
*/
public List<UserSubscriptions> selectUserSubscriptionsList(UserSubscriptions userSubscriptions);
List<UserSubscPageResDTO> selectUserSubscPage(@Param("userId") Long userId, @Param("storeName") String storeName);
/**
* u
*
* @param userSubscriptions u
* @return
*/
public int insertUserSubscriptions(UserSubscriptions userSubscriptions);
/**
* u
*
* @param userSubscriptions u
* @return
*/
public int updateUserSubscriptions(UserSubscriptions userSubscriptions);
/**
* u
*
* @param id u
* @return
*/
public int deleteUserSubscriptionsByUserSubsId(Long id);
/**
* u
*
* @param userSubsIds
* @return
*/
public int deleteUserSubscriptionsByUserSubsIds(Long[] userSubsIds);
}

View File

@ -1,61 +1,42 @@
package com.ruoyi.xkt.service;
import com.ruoyi.common.core.page.Page;
import com.ruoyi.xkt.domain.UserSubscriptions;
import com.ruoyi.xkt.dto.userFavorite.UserFavoritePageDTO;
import com.ruoyi.xkt.dto.userSubscriptions.UserSubscDTO;
import com.ruoyi.xkt.dto.userSubscriptions.UserSubscDeleteDTO;
import com.ruoyi.xkt.dto.userSubscriptions.UserSubscPageDTO;
import com.ruoyi.xkt.dto.userSubscriptions.UserSubscPageResDTO;
import java.util.List;
/**
* uService
* Service
*
* @author ruoyi
* @date 2025-03-26
*/
public interface IUserSubscriptionsService {
/**
* u
*
* @param userSubsId u
* @return u
*/
public UserSubscriptions selectUserSubscriptionsByUserSubsId(Long userSubsId);
/**
* u
*
* @param userSubscriptions u
* @return u
*
* @param subscDTO
* @return Integer
*/
public List<UserSubscriptions> selectUserSubscriptionsList(UserSubscriptions userSubscriptions);
Integer create(UserSubscDTO subscDTO);
/**
* u
*
* @param userSubscriptions u
* @return
*
* @param deleteDTO
* @return Integer
*/
public int insertUserSubscriptions(UserSubscriptions userSubscriptions);
Integer delete(UserSubscDeleteDTO deleteDTO);
/**
* u
*
* @param userSubscriptions u
* @return
*
* @param pageDTO
* @return Page<UserSubscPageResDTO>
*/
public int updateUserSubscriptions(UserSubscriptions userSubscriptions);
Page<UserSubscPageResDTO> page(UserSubscPageDTO pageDTO);
/**
* u
*
* @param userSubsIds u
* @return
*/
public int deleteUserSubscriptionsByUserSubsIds(Long[] userSubsIds);
/**
* u
*
* @param userSubsId u
* @return
*/
public int deleteUserSubscriptionsByUserSubsId(Long userSubsId);
}

View File

@ -1,93 +1,107 @@
package com.ruoyi.xkt.service.impl;
import com.ruoyi.common.utils.DateUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.constant.HttpStatus;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.core.page.Page;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.xkt.domain.UserSubscriptions;
import com.ruoyi.xkt.dto.userSubscriptions.UserSubscDTO;
import com.ruoyi.xkt.dto.userSubscriptions.UserSubscDeleteDTO;
import com.ruoyi.xkt.dto.userSubscriptions.UserSubscPageDTO;
import com.ruoyi.xkt.dto.userSubscriptions.UserSubscPageResDTO;
import com.ruoyi.xkt.mapper.UserSubscriptionsMapper;
import com.ruoyi.xkt.service.IUserSubscriptionsService;
import org.springframework.beans.factory.annotation.Autowired;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Optional;
/**
* uService
* Service
*
* @author ruoyi
* @date 2025-03-26
*/
@RequiredArgsConstructor
@Service
public class UserSubscriptionsServiceImpl implements IUserSubscriptionsService {
@Autowired
private UserSubscriptionsMapper userSubscriptionsMapper;
final UserSubscriptionsMapper userSubscMapper;
/**
* u
*
*
* @param userSubsId u
* @return u
*/
@Override
public UserSubscriptions selectUserSubscriptionsByUserSubsId(Long userSubsId) {
return userSubscriptionsMapper.selectUserSubscriptionsByUserSubsId(userSubsId);
}
/**
* u
*
* @param userSubscriptions u
* @return u
*/
@Override
public List<UserSubscriptions> selectUserSubscriptionsList(UserSubscriptions userSubscriptions) {
return userSubscriptionsMapper.selectUserSubscriptionsList(userSubscriptions);
}
/**
* u
*
* @param userSubscriptions u
* @return
* @param subscDTO
* @return Integer
*/
@Override
@Transactional
public int insertUserSubscriptions(UserSubscriptions userSubscriptions) {
userSubscriptions.setCreateTime(DateUtils.getNowDate());
return userSubscriptionsMapper.insertUserSubscriptions(userSubscriptions);
public Integer create(UserSubscDTO subscDTO) {
// 获取当前登录用户
LoginUser loginUser = SecurityUtils.getLoginUser();
// 判断是否已关注过
UserSubscriptions exist = this.userSubscMapper.selectOne(new LambdaQueryWrapper<UserSubscriptions>()
.eq(UserSubscriptions::getUserId, loginUser.getUserId()).eq(UserSubscriptions::getStoreId, subscDTO.getStoreId())
.eq(UserSubscriptions::getDelFlag, Constants.UNDELETED));
if (ObjectUtils.isNotEmpty(exist)) {
throw new ServiceException("已关注过当前档口!", HttpStatus.ERROR);
}
UserSubscriptions userSubscriptions = new UserSubscriptions();
userSubscriptions.setUserId(loginUser.getUserId());
userSubscriptions.setStoreId(subscDTO.getStoreId());
return this.userSubscMapper.insert(userSubscriptions);
}
/**
* u
*
*
* @param userSubscriptions u
* @return
* @param deleteDTO
* @return Integer
*/
@Override
@Transactional
public int updateUserSubscriptions(UserSubscriptions userSubscriptions) {
userSubscriptions.setUpdateTime(DateUtils.getNowDate());
return userSubscriptionsMapper.updateUserSubscriptions(userSubscriptions);
public Integer delete(UserSubscDeleteDTO deleteDTO) {
// 获取当前登录用户
LoginUser loginUser = SecurityUtils.getLoginUser();
List<UserSubscriptions> list = Optional.ofNullable(this.userSubscMapper.selectList(new LambdaQueryWrapper<UserSubscriptions>()
.eq(UserSubscriptions::getUserId, loginUser.getUserId()).in(UserSubscriptions::getId, deleteDTO.getUserSubscIdList())
.eq(UserSubscriptions::getDelFlag, Constants.UNDELETED)))
.orElseThrow(() -> new ServiceException("用户关注档口不存在!", HttpStatus.ERROR));
list.forEach(x -> x.setDelFlag(Constants.DELETED));
return this.userSubscMapper.updateById(list).size();
}
/**
* u
*
*
* @param userSubsIds u
* @return
* @param pageDTO
* @return Page<UserSubscPageResDTO>
*/
@Override
public int deleteUserSubscriptionsByUserSubsIds(Long[] userSubsIds) {
return userSubscriptionsMapper.deleteUserSubscriptionsByUserSubsIds(userSubsIds);
@Transactional(readOnly = true)
public Page<UserSubscPageResDTO> page(UserSubscPageDTO pageDTO) {
// 获取当前登录用户
LoginUser loginUser = SecurityUtils.getLoginUser();
PageHelper.startPage(pageDTO.getPageNum(), pageDTO.getPageSize());
List<UserSubscPageResDTO> list = this.userSubscMapper.selectUserSubscPage(loginUser.getUserId(), pageDTO.getStoreName());
if (CollectionUtils.isEmpty(list)) {
return Page.empty(pageDTO.getPageNum(), pageDTO.getPageSize());
}
// TODO 获取档口最近30天销量和近7日上新数量
// TODO 获取档口最近30天销量和近7日上新数量
return Page.convert(new PageInfo<>(list));
}
/**
* u
*
* @param userSubsId u
* @return
*/
@Override
public int deleteUserSubscriptionsByUserSubsId(Long userSubsId) {
return userSubscriptionsMapper.deleteUserSubscriptionsByUserSubsId(userSubsId);
}
}

View File

@ -17,78 +17,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="updateTime" column="update_time" />
</resultMap>
<sql id="selectUserFavoritesVo">
select id, user_id, store_id, store_prod_id, version, del_flag, create_by, create_time, update_by, update_time from user_favorites
</sql>
<select id="selectUserFavoritesList" parameterType="UserFavorites" resultMap="UserFavoritesResult">
<include refid="selectUserFavoritesVo"/>
<where>
<if test="userId != null "> and user_id = #{userId}</if>
<if test="storeId != null "> and store_id = #{storeId}</if>
<if test="storeProdId != null "> and store_prod_id = #{storeProdId}</if>
<if test="version != null "> and version = #{version}</if>
</where>
</select>
<select id="selectUserFavoritesByUserFavoId" parameterType="Long" resultMap="UserFavoritesResult">
<include refid="selectUserFavoritesVo"/>
where id = #{id}
</select>
<insert id="insertUserFavorites" parameterType="UserFavorites" useGeneratedKeys="true" keyProperty="userFavoId">
insert into user_favorites
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="userId != null">user_id,</if>
<if test="storeId != null">store_id,</if>
<if test="storeProdId != null">store_prod_id,</if>
<if test="version != null">version,</if>
<if test="delFlag != null">del_flag,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="userId != null">#{userId},</if>
<if test="storeId != null">#{storeId},</if>
<if test="storeProdId != null">#{storeProdId},</if>
<if test="version != null">#{version},</if>
<if test="delFlag != null">#{delFlag},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
</trim>
</insert>
<update id="updateUserFavorites" parameterType="UserFavorites">
update user_favorites
<trim prefix="SET" suffixOverrides=",">
<if test="userId != null">user_id = #{userId},</if>
<if test="storeId != null">store_id = #{storeId},</if>
<if test="storeProdId != null">store_prod_id = #{storeProdId},</if>
<if test="version != null">version = #{version},</if>
<if test="delFlag != null">del_flag = #{delFlag},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteUserFavoritesByUserFavoId" parameterType="Long">
delete from user_favorites where id = #{id}
</delete>
<delete id="deleteUserFavoritesByUserFavoIds" parameterType="String">
delete from user_favorites where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<select id="selectUserFavPage" resultType="com.ruoyi.xkt.dto.userFavorite.UserFavoritePageResDTO">
SELECT
uf.id AS user_favorite_id,
@ -97,7 +25,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
s.store_name,
sp.prod_title,
uf.create_time,
sp.prod_art_num
sp.prod_art_num,
sp.prod_status
FROM
user_favorites uf
LEFT JOIN store_product sp ON uf.store_prod_id = sp.id

View File

@ -1,86 +1,38 @@
<?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">
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.xkt.mapper.UserSubscriptionsMapper">
<resultMap type="UserSubscriptions" id="UserSubscriptionsResult">
<result property="id" column="id" />
<result property="userId" column="user_id" />
<result property="storeId" column="store_id" />
<result property="version" column="version" />
<result property="delFlag" column="del_flag" />
<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="id" column="id"/>
<result property="userId" column="user_id"/>
<result property="storeId" column="store_id"/>
<result property="version" column="version"/>
<result property="delFlag" column="del_flag"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
</resultMap>
<sql id="selectUserSubscriptionsVo">
select id, user_id, store_id, version, del_flag, create_by, create_time, update_by, update_time from user_subscriptions
</sql>
<select id="selectUserSubscriptionsList" parameterType="UserSubscriptions" resultMap="UserSubscriptionsResult">
<include refid="selectUserSubscriptionsVo"/>
<where>
<if test="userId != null "> and user_id = #{userId}</if>
<if test="storeId != null "> and store_id = #{storeId}</if>
<if test="version != null "> and version = #{version}</if>
</where>
</select>
<select id="selectUserSubscriptionsByUserSubsId" parameterType="Long" resultMap="UserSubscriptionsResult">
<include refid="selectUserSubscriptionsVo"/>
where id = #{id}
<select id="selectUserSubscPage" resultType="com.ruoyi.xkt.dto.userSubscriptions.UserSubscPageResDTO">
SELECT
us.id AS userSubscId,
us.store_id,
s.store_name,
s.contact_phone,
s.contact_back_phone,
s.wechat_account,
s.qq_account,
s.store_address
FROM
user_subscriptions us
LEFT JOIN store s ON us.store_id = s.id
WHERE
us.del_flag = 0 AND us.user_id = #{userId}
<if test="storeName != null and storeName != ''">and s.store_name = #{storeName}</if>
</select>
<insert id="insertUserSubscriptions" parameterType="UserSubscriptions" useGeneratedKeys="true" keyProperty="userSubsId">
insert into user_subscriptions
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="userId != null">user_id,</if>
<if test="storeId != null">store_id,</if>
<if test="version != null">version,</if>
<if test="delFlag != null">del_flag,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="userId != null">#{userId},</if>
<if test="storeId != null">#{storeId},</if>
<if test="version != null">#{version},</if>
<if test="delFlag != null">#{delFlag},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
</trim>
</insert>
<update id="updateUserSubscriptions" parameterType="UserSubscriptions">
update user_subscriptions
<trim prefix="SET" suffixOverrides=",">
<if test="userId != null">user_id = #{userId},</if>
<if test="storeId != null">store_id = #{storeId},</if>
<if test="version != null">version = #{version},</if>
<if test="delFlag != null">del_flag = #{delFlag},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteUserSubscriptionsByUserSubsId" parameterType="Long">
delete from user_subscriptions where id = #{id}
</delete>
<delete id="deleteUserSubscriptionsByUserSubsIds" parameterType="String">
delete from user_subscriptions where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>