8 changed files with 410 additions and 1 deletions
@ -0,0 +1,136 @@ |
|||||
|
package com.qs.serve.modules.goods.controller; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
||||
|
import com.qs.serve.common.model.annotation.SysLog; |
||||
|
import com.qs.serve.common.model.dto.PageVo; |
||||
|
import com.qs.serve.common.model.dto.R; |
||||
|
import com.qs.serve.common.model.enums.BizType; |
||||
|
import com.qs.serve.common.model.enums.SystemModule; |
||||
|
import com.qs.serve.common.util.AuthContextUtils; |
||||
|
import com.qs.serve.common.util.PageUtil; |
||||
|
import com.qs.serve.common.util.CopierUtil; |
||||
|
import com.qs.serve.common.util.StringUtils; |
||||
|
import com.qs.serve.modules.goods.entity.bo.GoodsFeedbackBo; |
||||
|
import com.qs.serve.modules.sys.service.SysPostUserService; |
||||
|
import lombok.AllArgsConstructor; |
||||
|
import lombok.extern.slf4j.Slf4j; |
||||
|
import org.springframework.security.access.prepost.PreAuthorize; |
||||
|
import org.springframework.web.bind.annotation.*; |
||||
|
|
||||
|
import com.qs.serve.modules.goods.entity.GoodsFeedback; |
||||
|
import com.qs.serve.modules.goods.service.GoodsFeedbackService; |
||||
|
|
||||
|
import javax.validation.Valid; |
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* 商品 问题反馈 |
||||
|
* @author YenHex |
||||
|
* @since 2024-10-25 |
||||
|
*/ |
||||
|
@Slf4j |
||||
|
@AllArgsConstructor |
||||
|
@RestController |
||||
|
@RequestMapping("goods/feedback") |
||||
|
public class GoodsFeedbackController { |
||||
|
|
||||
|
private GoodsFeedbackService goodsFeedbackService; |
||||
|
private SysPostUserService postUserService; |
||||
|
|
||||
|
/** |
||||
|
* 列表 |
||||
|
* @param param |
||||
|
* @return |
||||
|
*/ |
||||
|
//@GetMapping("/list")
|
||||
|
public R<List<GoodsFeedback>> getList(GoodsFeedback param){ |
||||
|
LambdaQueryWrapper<GoodsFeedback> lqw = new LambdaQueryWrapper<>(param); |
||||
|
List<GoodsFeedback> list = goodsFeedbackService.list(lqw); |
||||
|
return R.ok(list); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 翻页(我的) |
||||
|
* @param param |
||||
|
* @return |
||||
|
*/ |
||||
|
@GetMapping("/pageMy") |
||||
|
public R<PageVo<GoodsFeedback>> getPageMy(GoodsFeedback param){ |
||||
|
LambdaQueryWrapper<GoodsFeedback> lqw = new LambdaQueryWrapper<>(param); |
||||
|
PageUtil.startPage(); |
||||
|
lqw.eq(GoodsFeedback::getUserId, AuthContextUtils.getSysUserId()); |
||||
|
List<GoodsFeedback> list = goodsFeedbackService.list(lqw); |
||||
|
return R.byPageHelperList(list); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 翻页(我的和下属的) |
||||
|
* @param param |
||||
|
* @return |
||||
|
*/ |
||||
|
@GetMapping("/pageMyAndChild") |
||||
|
public R<PageVo<GoodsFeedback>> getPageMyAndChild(GoodsFeedback param){ |
||||
|
String userId = AuthContextUtils.getSysUserId(); |
||||
|
List<String> userIds = postUserService.listByChildIds(userId); |
||||
|
userIds.add(userId); |
||||
|
LambdaQueryWrapper<GoodsFeedback> lqw = new LambdaQueryWrapper<>(param); |
||||
|
PageUtil.startPage(); |
||||
|
lqw.eq(GoodsFeedback::getUserId, userIds); |
||||
|
List<GoodsFeedback> list = goodsFeedbackService.list(lqw); |
||||
|
return R.byPageHelperList(list); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* 翻页 |
||||
|
* @param param |
||||
|
* @return |
||||
|
*/ |
||||
|
@GetMapping("/page") |
||||
|
public R<PageVo<GoodsFeedback>> getPage(GoodsFeedback param){ |
||||
|
LambdaQueryWrapper<GoodsFeedback> lqw = new LambdaQueryWrapper<>(param); |
||||
|
PageUtil.startPage(); |
||||
|
List<GoodsFeedback> list = goodsFeedbackService.list(lqw); |
||||
|
return R.byPageHelperList(list); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* ID查询 |
||||
|
* @param id |
||||
|
* @return |
||||
|
*/ |
||||
|
@GetMapping("/getById/{id}") |
||||
|
@SysLog(module = SystemModule.GOODS, title = "问题反馈", biz = BizType.QUERY) |
||||
|
@PreAuthorize("hasRole('goods:feedback:query')") |
||||
|
public R<GoodsFeedback> getById(@PathVariable("id") String id){ |
||||
|
GoodsFeedback goodsFeedback = goodsFeedbackService.getById(id); |
||||
|
return R.ok(goodsFeedback); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 新增 |
||||
|
* @param param |
||||
|
* @return |
||||
|
*/ |
||||
|
@PostMapping("/save") |
||||
|
@SysLog(module = SystemModule.GOODS, title = "问题反馈", biz = BizType.INSERT) |
||||
|
public R<?> save(@RequestBody @Valid GoodsFeedbackBo param){ |
||||
|
goodsFeedbackService.modify(param); |
||||
|
return R.ok(); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 删除 |
||||
|
* @param ids |
||||
|
* @return |
||||
|
*/ |
||||
|
@DeleteMapping("/deleteById/{ids}") |
||||
|
@SysLog(module = SystemModule.GOODS, title = "问题反馈", biz = BizType.DELETE) |
||||
|
public R<?> deleteById(@PathVariable("ids") String ids){ |
||||
|
List<Long> idsLong = StringUtils.splitIdLong(ids); |
||||
|
boolean result = goodsFeedbackService.removeByIds(idsLong); |
||||
|
return R.isTrue(result); |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
@ -0,0 +1,141 @@ |
|||||
|
package com.qs.serve.modules.goods.entity; |
||||
|
|
||||
|
import java.time.LocalDate; |
||||
|
import java.io.Serializable; |
||||
|
import java.math.BigDecimal; |
||||
|
import java.time.LocalDateTime; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.annotation.*; |
||||
|
import com.fasterxml.jackson.annotation.JsonFormat; |
||||
|
import com.fasterxml.jackson.annotation.JsonIgnore; |
||||
|
import com.fasterxml.jackson.annotation.JsonProperty; |
||||
|
import lombok.Data; |
||||
|
import org.hibernate.validator.constraints.Length; |
||||
|
import org.springframework.format.annotation.DateTimeFormat; |
||||
|
|
||||
|
import javax.validation.constraints.NotNull; |
||||
|
import javax.validation.constraints.NotBlank; |
||||
|
|
||||
|
/** |
||||
|
* 问题反馈 实体类 |
||||
|
* @author YenHex |
||||
|
* @since 2024-10-25 |
||||
|
*/ |
||||
|
@Data |
||||
|
@TableName("goods_feedback") |
||||
|
public class GoodsFeedback implements Serializable { |
||||
|
|
||||
|
private static final long serialVersionUID = 1L; |
||||
|
|
||||
|
/** id */ |
||||
|
@TableId(type = IdType.AUTO) |
||||
|
private Long id; |
||||
|
|
||||
|
/** spuId */ |
||||
|
private Long spuId; |
||||
|
|
||||
|
/** 产品编码 */ |
||||
|
@Length(max = 255,message = "产品编码长度不能超过255字") |
||||
|
private String spuCode; |
||||
|
|
||||
|
/** 产品名称 */ |
||||
|
@Length(max = 255,message = "产品名称长度不能超过255字") |
||||
|
private String spuName; |
||||
|
|
||||
|
/** skuId */ |
||||
|
private Long skuId; |
||||
|
|
||||
|
/** sku编码 */ |
||||
|
@Length(max = 255,message = "sku编码长度不能超过255字") |
||||
|
private String skuCode; |
||||
|
|
||||
|
/** sku名称 */ |
||||
|
@Length(max = 255,message = "sku名称长度不能超过255字") |
||||
|
private String skuName; |
||||
|
|
||||
|
/** 反馈图片 */ |
||||
|
@Length(max = 1024,message = "反馈图片长度不能超过1024字") |
||||
|
private String imgUrls; |
||||
|
|
||||
|
/** 反馈类型 */ |
||||
|
@Length(max = 255,message = "反馈类型长度不能超过255字") |
||||
|
private String feedbackType; |
||||
|
|
||||
|
/** 反馈内容 */ |
||||
|
@Length(max = 255,message = "反馈内容长度不能超过255字") |
||||
|
private String feedbackText; |
||||
|
|
||||
|
/** 反馈人id */ |
||||
|
@Length(max = 64,message = "反馈人id长度不能超过64字") |
||||
|
private String userId; |
||||
|
|
||||
|
/** 反馈人编码 */ |
||||
|
@Length(max = 64,message = "反馈人编码长度不能超过64字") |
||||
|
private String userCode; |
||||
|
|
||||
|
/** 反馈人 */ |
||||
|
@Length(max = 64,message = "反馈人长度不能超过64字") |
||||
|
private String userName; |
||||
|
|
||||
|
/** 备注 */ |
||||
|
@Length(max = 255,message = "备注长度不能超过255字") |
||||
|
private String remark; |
||||
|
|
||||
|
/** 创建时间 */ |
||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") |
||||
|
@TableField(fill = FieldFill.INSERT) |
||||
|
private LocalDateTime createTime; |
||||
|
|
||||
|
/** 最后更新时间 */ |
||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") |
||||
|
@TableField(fill = FieldFill.UPDATE) |
||||
|
private LocalDateTime updateTime; |
||||
|
|
||||
|
/** 所属租户 */ |
||||
|
@JsonIgnore |
||||
|
@JsonProperty |
||||
|
private String tenantId; |
||||
|
|
||||
|
/** 逻辑删除标记(0:显示;1:隐藏) */ |
||||
|
@JsonIgnore |
||||
|
@JsonProperty |
||||
|
private String delFlag; |
||||
|
|
||||
|
/** 创建人 */ |
||||
|
@TableField(fill = FieldFill.INSERT) |
||||
|
private String createBy; |
||||
|
|
||||
|
/** 更新人 */ |
||||
|
@TableField(fill = FieldFill.UPDATE) |
||||
|
private String updateBy; |
||||
|
|
||||
|
|
||||
|
public static GoodsFeedback toNewObject(GoodsFeedback source){ |
||||
|
GoodsFeedback feedback = new GoodsFeedback(); |
||||
|
feedback.setId(source.getId()); |
||||
|
feedback.setSpuId(source.getSpuId()); |
||||
|
feedback.setSpuCode(source.getSpuCode()); |
||||
|
feedback.setSpuName(source.getSpuName()); |
||||
|
feedback.setSkuId(source.getSkuId()); |
||||
|
feedback.setSkuCode(source.getSkuCode()); |
||||
|
feedback.setSkuName(source.getSkuName()); |
||||
|
feedback.setImgUrls(source.getImgUrls()); |
||||
|
feedback.setFeedbackType(source.getFeedbackType()); |
||||
|
feedback.setFeedbackText(source.getFeedbackText()); |
||||
|
feedback.setUserId(source.getUserId()); |
||||
|
feedback.setUserCode(source.getUserCode()); |
||||
|
feedback.setUserName(source.getUserName()); |
||||
|
feedback.setRemark(source.getRemark()); |
||||
|
feedback.setCreateTime(source.getCreateTime()); |
||||
|
feedback.setUpdateTime(source.getUpdateTime()); |
||||
|
feedback.setTenantId(source.getTenantId()); |
||||
|
feedback.setDelFlag(source.getDelFlag()); |
||||
|
feedback.setCreateBy(source.getCreateBy()); |
||||
|
feedback.setUpdateBy(source.getUpdateBy()); |
||||
|
return feedback; |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
@ -0,0 +1,32 @@ |
|||||
|
package com.qs.serve.modules.goods.entity.bo; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.annotation.IdType; |
||||
|
import com.baomidou.mybatisplus.annotation.TableId; |
||||
|
import lombok.Data; |
||||
|
import org.hibernate.validator.constraints.Length; |
||||
|
|
||||
|
/** |
||||
|
* @author YenHex |
||||
|
* @since 2024/10/28 |
||||
|
*/ |
||||
|
@Data |
||||
|
public class GoodsFeedbackBo { |
||||
|
|
||||
|
/** spuId */ |
||||
|
private Long spuId; |
||||
|
|
||||
|
/** skuId */ |
||||
|
private Long skuId; |
||||
|
|
||||
|
/** 反馈图片 */ |
||||
|
@Length(max = 1024,message = "反馈图片长度不能超过1024字") |
||||
|
private String imgUrls; |
||||
|
|
||||
|
/** 反馈类型 */ |
||||
|
private String feedbackType; |
||||
|
|
||||
|
/** 反馈内容 */ |
||||
|
@Length(max = 255,message = "反馈内容长度不能超过255字") |
||||
|
private String feedbackText; |
||||
|
|
||||
|
} |
@ -0,0 +1,14 @@ |
|||||
|
package com.qs.serve.modules.goods.mapper; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||
|
import com.qs.serve.modules.goods.entity.GoodsFeedback; |
||||
|
|
||||
|
/** |
||||
|
* 问题反馈 Mapper |
||||
|
* @author YenHex |
||||
|
* @date 2024-10-25 |
||||
|
*/ |
||||
|
public interface GoodsFeedbackMapper extends BaseMapper<GoodsFeedback> { |
||||
|
|
||||
|
} |
||||
|
|
@ -0,0 +1,21 @@ |
|||||
|
package com.qs.serve.modules.goods.service; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.extension.service.IService; |
||||
|
import com.qs.serve.modules.goods.entity.GoodsFeedback; |
||||
|
import com.qs.serve.modules.goods.entity.bo.GoodsFeedbackBo; |
||||
|
|
||||
|
/** |
||||
|
* 问题反馈 服务接口 |
||||
|
* @author YenHex |
||||
|
* @date 2024-10-25 |
||||
|
*/ |
||||
|
public interface GoodsFeedbackService extends IService<GoodsFeedback> { |
||||
|
|
||||
|
/** |
||||
|
* 编辑 |
||||
|
* @param param |
||||
|
*/ |
||||
|
void modify(GoodsFeedbackBo param); |
||||
|
|
||||
|
} |
||||
|
|
@ -0,0 +1,60 @@ |
|||||
|
package com.qs.serve.modules.goods.service.impl; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||
|
import com.qs.serve.common.util.AuthContextUtils; |
||||
|
import com.qs.serve.common.util.CopierUtil; |
||||
|
import com.qs.serve.modules.goods.entity.GoodsSku; |
||||
|
import com.qs.serve.modules.goods.entity.GoodsSpu; |
||||
|
import com.qs.serve.modules.goods.entity.bo.GoodsFeedbackBo; |
||||
|
import com.qs.serve.modules.goods.mapper.GoodsSkuMapper; |
||||
|
import com.qs.serve.modules.goods.mapper.GoodsSpuMapper; |
||||
|
import com.qs.serve.modules.sys.entity.SysUser; |
||||
|
import com.qs.serve.modules.sys.mapper.SysUserMapper; |
||||
|
import lombok.AllArgsConstructor; |
||||
|
import lombok.extern.slf4j.Slf4j; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
import com.qs.serve.modules.goods.entity.GoodsFeedback; |
||||
|
import com.qs.serve.modules.goods.service.GoodsFeedbackService; |
||||
|
import com.qs.serve.modules.goods.mapper.GoodsFeedbackMapper; |
||||
|
|
||||
|
/** |
||||
|
* 问题反馈 服务实现类 |
||||
|
* @author YenHex |
||||
|
* @since 2024-10-25 |
||||
|
*/ |
||||
|
@Slf4j |
||||
|
@Service |
||||
|
@AllArgsConstructor |
||||
|
public class GoodsFeedbackServiceImpl extends ServiceImpl<GoodsFeedbackMapper,GoodsFeedback> implements GoodsFeedbackService { |
||||
|
|
||||
|
private final GoodsSpuMapper goodsSpuMapper; |
||||
|
private final GoodsSkuMapper goodsSkuMapper; |
||||
|
private final SysUserMapper sysUserMapper; |
||||
|
|
||||
|
@Override |
||||
|
public void modify(GoodsFeedbackBo param) { |
||||
|
GoodsFeedback feedback = CopierUtil.copy(param,new GoodsFeedback()); |
||||
|
if(param.getSkuId()!=null){ |
||||
|
GoodsSku goodsSku = goodsSkuMapper.selectById(param.getSkuId()); |
||||
|
GoodsSpu goodsSpu = goodsSpuMapper.selectById(param.getSpuId()); |
||||
|
feedback.setSpuId(goodsSpu.getId()); |
||||
|
feedback.setSpuCode(goodsSpu.getSpuCode()); |
||||
|
feedback.setSpuName(goodsSpu.getName()); |
||||
|
feedback.setSkuId(goodsSku.getId()); |
||||
|
feedback.setSkuCode(goodsSku.getSkuCode()); |
||||
|
feedback.setSkuName(goodsSku.getSkuName()); |
||||
|
}else { |
||||
|
GoodsSpu goodsSpu = goodsSpuMapper.selectById(param.getSpuId()); |
||||
|
feedback.setSpuId(goodsSpu.getId()); |
||||
|
feedback.setSpuCode(goodsSpu.getSpuCode()); |
||||
|
feedback.setSpuName(goodsSpu.getName()); |
||||
|
} |
||||
|
SysUser sysUser = sysUserMapper.selectById(AuthContextUtils.getSysUserId()); |
||||
|
feedback.setUserId(sysUser.getId()); |
||||
|
feedback.setUserCode(sysUser.getCode()); |
||||
|
feedback.setUserName(sysUser.getName()); |
||||
|
super.save(feedback); |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
Loading…
Reference in new issue