parent
0455cd52ab
commit
15429ed270
@ -0,0 +1,316 @@ |
|||||||
|
package com.bweb.controller.goods; |
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject; |
||||||
|
import com.github.pagehelper.PageHelper; |
||||||
|
import com.github.pagehelper.PageInfo; |
||||||
|
import com.hfkj.common.exception.ErrorCode; |
||||||
|
import com.hfkj.common.exception.ErrorHelp; |
||||||
|
import com.hfkj.common.exception.SysCode; |
||||||
|
import com.hfkj.common.security.UserCenter; |
||||||
|
import com.hfkj.common.utils.ResponseMsgUtil; |
||||||
|
import com.hfkj.entity.GoodsAutoRel; |
||||||
|
import com.hfkj.entity.GoodsAutoTask; |
||||||
|
import com.hfkj.model.ResponseData; |
||||||
|
import com.hfkj.model.SecUserSessionObject; |
||||||
|
import com.hfkj.service.goods.GoodsAutoRelService; |
||||||
|
import com.hfkj.service.goods.GoodsAutoTaskService; |
||||||
|
import com.hfkj.service.goods.GoodsMsgService; |
||||||
|
import com.hfkj.sysenum.SecUserObjectTypeEnum; |
||||||
|
import io.swagger.annotations.Api; |
||||||
|
import io.swagger.annotations.ApiOperation; |
||||||
|
import org.apache.commons.lang3.StringUtils; |
||||||
|
import org.slf4j.Logger; |
||||||
|
import org.slf4j.LoggerFactory; |
||||||
|
import org.springframework.stereotype.Controller; |
||||||
|
import org.springframework.web.bind.annotation.*; |
||||||
|
|
||||||
|
import javax.annotation.Resource; |
||||||
|
import javax.naming.NamingEnumeration; |
||||||
|
import javax.servlet.http.HttpServletRequest; |
||||||
|
import java.util.Date; |
||||||
|
import java.util.HashMap; |
||||||
|
import java.util.List; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
@Controller |
||||||
|
@RequestMapping(value="/goodsAuto") |
||||||
|
@Api(value="商品自动上下架") |
||||||
|
public class GoodsAutoController { |
||||||
|
private static final Logger log = LoggerFactory.getLogger(GoodsAutoController.class); |
||||||
|
|
||||||
|
@Resource |
||||||
|
private GoodsAutoRelService goodsAutoRelService; |
||||||
|
|
||||||
|
@Resource |
||||||
|
private GoodsAutoTaskService goodsAutoTaskService; |
||||||
|
|
||||||
|
@Resource |
||||||
|
private UserCenter userCenter; |
||||||
|
|
||||||
|
@RequestMapping(value="/queryList",method = RequestMethod.GET) |
||||||
|
@ResponseBody |
||||||
|
@ApiOperation(value = "查询列表") |
||||||
|
public ResponseData queryList(@RequestParam(value = "taskTitle" , required = false) String taskTitle, |
||||||
|
@RequestParam(value = "listingTime" , required = false) Long listingTime, |
||||||
|
@RequestParam(value = "removalTime" , required = false) Long removalTime, |
||||||
|
@RequestParam(value = "pageNum" , required = true) Integer pageNum, |
||||||
|
@RequestParam(value = "pageSize" , required = true) Integer pageSize) { |
||||||
|
try { |
||||||
|
SecUserSessionObject sessionModel = userCenter.getSessionModel(SecUserSessionObject.class); |
||||||
|
if (sessionModel == null) { |
||||||
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.ACCOUNT_LOGIN_NOT, ""); |
||||||
|
} |
||||||
|
|
||||||
|
Map<String,Object> param = new HashMap<>(); |
||||||
|
param.put("taskTitle", taskTitle); |
||||||
|
param.put("listingTime", listingTime); |
||||||
|
param.put("removalTime", removalTime); |
||||||
|
|
||||||
|
PageHelper.startPage(pageNum, pageSize); |
||||||
|
return ResponseMsgUtil.success(new PageInfo<>(goodsAutoTaskService.getList(param))); |
||||||
|
|
||||||
|
} catch (Exception e) { |
||||||
|
log.error("error!",e); |
||||||
|
return ResponseMsgUtil.exception(e); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@RequestMapping(value="/goodsAutoTask",method = RequestMethod.POST) |
||||||
|
@ResponseBody |
||||||
|
@ApiOperation(value = "创建商品自动上架任务") |
||||||
|
public ResponseData createGoodPresent(@RequestBody GoodsAutoTask body, HttpServletRequest request) { |
||||||
|
|
||||||
|
try { |
||||||
|
|
||||||
|
SecUserSessionObject sessionModel = userCenter.getSessionModel(SecUserSessionObject.class); |
||||||
|
// 检查sessionModel是否为空,如果为空则抛出账号未登录异常
|
||||||
|
if (sessionModel == null) { |
||||||
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.ACCOUNT_LOGIN_NOT, ""); |
||||||
|
} |
||||||
|
|
||||||
|
// 检查当前用户是否为指定类型(type1),如果不是则抛出无权限异常
|
||||||
|
if (!sessionModel.getAccount().getObjectType().equals(SecUserObjectTypeEnum.type1.getCode())) { |
||||||
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.ROLE_NOT_PERMISSIONS, ""); |
||||||
|
} |
||||||
|
|
||||||
|
// 检查请求参数是否完整,包括上架时间、下架时间和任务标题是否为空
|
||||||
|
if (body == null |
||||||
|
|| body.getType() == null |
||||||
|
|| StringUtils.isBlank(body.getTaskTitle()) |
||||||
|
) { |
||||||
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, ""); |
||||||
|
} |
||||||
|
|
||||||
|
if (body.getType() == 1) { |
||||||
|
if (body.getListingTime() == null || body.getInventory() == null) |
||||||
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, ""); |
||||||
|
} |
||||||
|
if (body.getType() == 2) { |
||||||
|
if (body.getRemovalTime() == null) |
||||||
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, ""); |
||||||
|
} |
||||||
|
|
||||||
|
// 设置创建时间为当前时间
|
||||||
|
body.setCreateTime(new Date()); |
||||||
|
// 设置创建用户ID为当前登录用户的ID
|
||||||
|
body.setCreateUserId(sessionModel.getAccount().getId()); |
||||||
|
// 设置创建用户名为当前登录用户的用户名
|
||||||
|
body.setCreateUserName(sessionModel.getAccount().getUserName()); |
||||||
|
// 设置任务状态为1
|
||||||
|
body.setStatus(1); |
||||||
|
|
||||||
|
// 调用服务层方法创建商品自动任务
|
||||||
|
goodsAutoTaskService.create(body); |
||||||
|
|
||||||
|
return ResponseMsgUtil.success("操作成功"); |
||||||
|
|
||||||
|
} catch (Exception e) { |
||||||
|
log.error("error!",e); |
||||||
|
return ResponseMsgUtil.exception(e); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
@RequestMapping(value="/delete",method = RequestMethod.GET) |
||||||
|
@ResponseBody |
||||||
|
@ApiOperation(value = "删除") |
||||||
|
public ResponseData delete(@RequestParam(value = "id" , required = false) Long id) { |
||||||
|
try { |
||||||
|
|
||||||
|
SecUserSessionObject sessionModel = userCenter.getSessionModel(SecUserSessionObject.class); |
||||||
|
if (sessionModel == null) { |
||||||
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.ACCOUNT_LOGIN_NOT, ""); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
// 创建GoodsAutoTask对象,通过id查询任务详情
|
||||||
|
GoodsAutoTask goodsAutoTask = goodsAutoTaskService.queryDetail(id); |
||||||
|
// 判断任务是否存在,如果不存在则抛出异常
|
||||||
|
if (goodsAutoTask == null) { |
||||||
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "任务不存在"); |
||||||
|
} |
||||||
|
|
||||||
|
// 查询 任务关联商品内容
|
||||||
|
Map<String , Object> map = new HashMap<>(); |
||||||
|
map.put("taskId" , id); |
||||||
|
// 从goodsAutoRelService中获取符合条件的数据列表
|
||||||
|
List<GoodsAutoRel> list = goodsAutoRelService.getList(map); |
||||||
|
|
||||||
|
// 判断列表是否为null或空列表
|
||||||
|
if (list != null && !list.isEmpty()) { |
||||||
|
// 遍历列表中的每个元素
|
||||||
|
for (GoodsAutoRel goodsAutoRel : list) { |
||||||
|
// 删除每个元素对应的记录,第二个参数false表示不进行某种操作(可能是事务或日志记录)
|
||||||
|
goodsAutoRelService.delete(goodsAutoRel.getId() , false); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// 删除指定ID的goodsAutoTask记录,第二个参数false同样表示不进行某种操作
|
||||||
|
goodsAutoTaskService.delete(id , false); |
||||||
|
|
||||||
|
return ResponseMsgUtil.success("删除成功"); |
||||||
|
|
||||||
|
} catch (Exception e) { |
||||||
|
log.error("error!",e); |
||||||
|
return ResponseMsgUtil.exception(e); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@RequestMapping(value="/goodsTaskRel",method = RequestMethod.POST) |
||||||
|
@ResponseBody |
||||||
|
@ApiOperation(value = "自动任务关联商品") |
||||||
|
public ResponseData goodsTaskRel(@RequestBody JSONObject body) { |
||||||
|
|
||||||
|
try { |
||||||
|
|
||||||
|
SecUserSessionObject sessionModel = userCenter.getSessionModel(SecUserSessionObject.class); |
||||||
|
// 检查sessionModel是否为空,如果为空则抛出账号未登录异常
|
||||||
|
if (sessionModel == null) { |
||||||
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.ACCOUNT_LOGIN_NOT, ""); |
||||||
|
} |
||||||
|
|
||||||
|
// 检查当前用户是否为指定类型(type1),如果不是则抛出无权限异常
|
||||||
|
if (!sessionModel.getAccount().getObjectType().equals(SecUserObjectTypeEnum.type1.getCode())) { |
||||||
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.ROLE_NOT_PERMISSIONS, ""); |
||||||
|
} |
||||||
|
|
||||||
|
// 检查请求参数是否完整
|
||||||
|
if (body == null |
||||||
|
|| body.getLong("taskId") == null |
||||||
|
|| StringUtils.isBlank(body.getString("goodsIds")) |
||||||
|
) { |
||||||
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, ""); |
||||||
|
} |
||||||
|
goodsAutoRelService.goodsTaskRel(body.getLong("taskId"), body.getString("goodsIds"), sessionModel.getAccount().getId(), sessionModel.getAccount().getUserName()); |
||||||
|
|
||||||
|
return ResponseMsgUtil.success("操作成功"); |
||||||
|
|
||||||
|
} catch (Exception e) { |
||||||
|
log.error("error!",e); |
||||||
|
return ResponseMsgUtil.exception(e); |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
@RequestMapping(value="/deleteRel",method = RequestMethod.GET) |
||||||
|
@ResponseBody |
||||||
|
@ApiOperation(value = "删除关联内容") |
||||||
|
public ResponseData deleteRel(@RequestParam(value = "id" , required = false) Long id) { |
||||||
|
try { |
||||||
|
|
||||||
|
SecUserSessionObject sessionModel = userCenter.getSessionModel(SecUserSessionObject.class); |
||||||
|
if (sessionModel == null) { |
||||||
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.ACCOUNT_LOGIN_NOT, ""); |
||||||
|
} |
||||||
|
|
||||||
|
// 创建GoodsAutoTask对象,通过id查询任务详情
|
||||||
|
GoodsAutoRel goodsAutoRel = goodsAutoRelService.queryDetail(id); |
||||||
|
// 判断任务是否存在,如果不存在则抛出异常
|
||||||
|
if (goodsAutoRel == null) { |
||||||
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, "任务不存在"); |
||||||
|
} |
||||||
|
|
||||||
|
goodsAutoRelService.delete(id , false); |
||||||
|
|
||||||
|
return ResponseMsgUtil.success("删除成功"); |
||||||
|
|
||||||
|
} catch (Exception e) { |
||||||
|
log.error("error!",e); |
||||||
|
return ResponseMsgUtil.exception(e); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@RequestMapping(value="/queryListTaskGoodsRel",method = RequestMethod.GET) |
||||||
|
@ResponseBody |
||||||
|
@ApiOperation(value = "查询列表") |
||||||
|
public ResponseData queryListTaskGoodsRel(@RequestParam(value = "taskId" , required = false) Long taskId) { |
||||||
|
try { |
||||||
|
SecUserSessionObject sessionModel = userCenter.getSessionModel(SecUserSessionObject.class); |
||||||
|
if (sessionModel == null) { |
||||||
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.ACCOUNT_LOGIN_NOT, ""); |
||||||
|
} |
||||||
|
|
||||||
|
Map<String,Object> param = new HashMap<>(); |
||||||
|
param.put("taskId", taskId); |
||||||
|
|
||||||
|
return ResponseMsgUtil.success(goodsAutoRelService.getList(param)); |
||||||
|
|
||||||
|
} catch (Exception e) { |
||||||
|
log.error("error!",e); |
||||||
|
return ResponseMsgUtil.exception(e); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@RequestMapping(value="/getListingTimeList",method = RequestMethod.GET) |
||||||
|
@ResponseBody |
||||||
|
@ApiOperation(value = "定时查询上架任务") |
||||||
|
public ResponseData getListingTimeList() { |
||||||
|
try { |
||||||
|
|
||||||
|
List<GoodsAutoTask> list = goodsAutoTaskService.getListingTimeList(); |
||||||
|
|
||||||
|
if (!list.isEmpty()) { |
||||||
|
for (GoodsAutoTask goodsAutoTask : list) { |
||||||
|
// 当前时间是否满足上架时间
|
||||||
|
if(goodsAutoTask.getListingTime() != null) { |
||||||
|
// 执行逻辑
|
||||||
|
goodsAutoTaskService.startListingTask(goodsAutoTask , 1); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return ResponseMsgUtil.success("成功"); |
||||||
|
|
||||||
|
} catch (Exception e) { |
||||||
|
log.error("error!",e); |
||||||
|
return ResponseMsgUtil.exception(e); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@RequestMapping(value="/getRemovalTimeList",method = RequestMethod.GET) |
||||||
|
@ResponseBody |
||||||
|
@ApiOperation(value = "定时查询下架任务") |
||||||
|
public ResponseData getRemovalTimeList() { |
||||||
|
try { |
||||||
|
|
||||||
|
List<GoodsAutoTask> list = goodsAutoTaskService.getRemovalTimeList(); |
||||||
|
|
||||||
|
for (GoodsAutoTask goodsAutoTask : list) { |
||||||
|
// 当前时间是否满足上架时间
|
||||||
|
if(goodsAutoTask.getRemovalTime() != null) { |
||||||
|
// 执行逻辑
|
||||||
|
goodsAutoTaskService.startListingTask(goodsAutoTask , 2); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return ResponseMsgUtil.success("成功"); |
||||||
|
|
||||||
|
} catch (Exception e) { |
||||||
|
log.error("error!",e); |
||||||
|
return ResponseMsgUtil.exception(e); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,77 @@ |
|||||||
|
package com.hfkj.service.goods; |
||||||
|
|
||||||
|
import com.hfkj.entity.GoodsAutoRel; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
public interface GoodsAutoRelService { |
||||||
|
|
||||||
|
/** |
||||||
|
* @MethodName create |
||||||
|
* @Description: 创建 |
||||||
|
* @param goodsAutoRel |
||||||
|
* @Author: Sum1Dream |
||||||
|
* @Date: 2025/7/1 下午4:40 |
||||||
|
*/ |
||||||
|
void create(GoodsAutoRel goodsAutoRel); |
||||||
|
|
||||||
|
/** |
||||||
|
* @MethodName update |
||||||
|
* @Description: 更新 |
||||||
|
* @param goodsAutoRel |
||||||
|
* @Author: Sum1Dream |
||||||
|
* @Date: 2025/7/1 下午4:41 |
||||||
|
*/ |
||||||
|
void update(GoodsAutoRel goodsAutoRel); |
||||||
|
|
||||||
|
/** |
||||||
|
* @MethodName delete |
||||||
|
* @Description: 删除 |
||||||
|
* @param id |
||||||
|
* @param fullDelete |
||||||
|
* @Author: Sum1Dream |
||||||
|
* @Date: 2025/7/1 下午4:41 |
||||||
|
*/ |
||||||
|
void delete(Long id , Boolean fullDelete); |
||||||
|
|
||||||
|
/** |
||||||
|
* @MethodName queryDetail |
||||||
|
* @Description: 查询详情 |
||||||
|
* @param id |
||||||
|
* @return: com.hfkj.entity.GoodsAutoRel |
||||||
|
* @Author: Sum1Dream |
||||||
|
* @Date: 2025/7/1 下午4:41 |
||||||
|
*/ |
||||||
|
GoodsAutoRel queryDetail(Long id); |
||||||
|
|
||||||
|
/** |
||||||
|
* @MethodName queryDetailByMap |
||||||
|
* @Description: 根据map查询详情 |
||||||
|
* @param map |
||||||
|
* @return: com.hfkj.entity.GoodsAutoRel |
||||||
|
* @Author: Sum1Dream |
||||||
|
* @Date: 2025/7/1 下午4:41 |
||||||
|
*/ |
||||||
|
GoodsAutoRel queryDetailByMap(Map<String , Object> map); |
||||||
|
|
||||||
|
/** |
||||||
|
* @MethodName goodsTaskRel |
||||||
|
* @Description: 商品任务关联 |
||||||
|
* @param taskId |
||||||
|
* @param goodsIds |
||||||
|
* @param createUserId |
||||||
|
* @param createUserName |
||||||
|
*/ |
||||||
|
void goodsTaskRel(Long taskId , String goodsIds , Long createUserId , String createUserName); |
||||||
|
|
||||||
|
/** |
||||||
|
* @MethodName getList |
||||||
|
* @Description: 查询列表 |
||||||
|
* @param map |
||||||
|
* @return: java.util.List<com.hfkj.entity.GoodsAutoRel> |
||||||
|
* @Author: Sum1Dream |
||||||
|
* @Date: 2025/7/1 下午4:41 |
||||||
|
*/ |
||||||
|
List<GoodsAutoRel> getList(Map<String , Object> map); |
||||||
|
} |
@ -0,0 +1,83 @@ |
|||||||
|
package com.hfkj.service.goods; |
||||||
|
|
||||||
|
import com.hfkj.entity.GoodsAutoTask; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
public interface GoodsAutoTaskService { |
||||||
|
|
||||||
|
/** |
||||||
|
* @MethodName create |
||||||
|
* @Description: 创建 |
||||||
|
* @param goodsAutoTask |
||||||
|
* @Author: Sum1Dream |
||||||
|
* @Date: 2025/7/1 下午4:40 |
||||||
|
*/ |
||||||
|
void create(GoodsAutoTask goodsAutoTask) throws Exception; |
||||||
|
|
||||||
|
/** |
||||||
|
* @MethodName update |
||||||
|
* @Description: 更新 |
||||||
|
* @param goodsAutoTask |
||||||
|
* @Author: Sum1Dream |
||||||
|
* @Date: 2025/7/1 下午4:41 |
||||||
|
*/ |
||||||
|
void update(GoodsAutoTask goodsAutoTask); |
||||||
|
|
||||||
|
/** |
||||||
|
* @MethodName delete |
||||||
|
* @Description: 删除 |
||||||
|
* @param id |
||||||
|
* @param fullDelete |
||||||
|
* @Author: Sum1Dream |
||||||
|
* @Date: 2025/7/1 下午4:41 |
||||||
|
*/ |
||||||
|
void delete(Long id , Boolean fullDelete); |
||||||
|
|
||||||
|
/** |
||||||
|
* @MethodName queryDetail |
||||||
|
* @Description: 查询详情 |
||||||
|
* @param id |
||||||
|
* @return: com.hfkj.entity.GoodsAutoTask |
||||||
|
* @Author: Sum1Dream |
||||||
|
* @Date: 2025/7/1 下午4:41 |
||||||
|
*/ |
||||||
|
GoodsAutoTask queryDetail(Long id); |
||||||
|
|
||||||
|
/** |
||||||
|
* @MethodName queryDetailByMap |
||||||
|
* @Description: 根据map查询详情 |
||||||
|
* @param map |
||||||
|
* @return: com.hfkj.entity.GoodsAutoTask |
||||||
|
* @Author: Sum1Dream |
||||||
|
* @Date: 2025/7/1 下午4:41 |
||||||
|
*/ |
||||||
|
GoodsAutoTask queryDetailByMap(Map<String , Object> map); |
||||||
|
|
||||||
|
/** |
||||||
|
* @MethodName getList |
||||||
|
* @Description: 查询列表 |
||||||
|
* @param map |
||||||
|
* @return: java.util.List<com.hfkj.entity.GoodsAutoTask> |
||||||
|
* @Author: Sum1Dream |
||||||
|
* @Date: 2025/7/1 下午4:41 |
||||||
|
*/ |
||||||
|
List<GoodsAutoTask> getList(Map<String , Object> map); |
||||||
|
|
||||||
|
|
||||||
|
List<GoodsAutoTask> getListingTimeList(); |
||||||
|
|
||||||
|
List<GoodsAutoTask> getRemovalTimeList(); |
||||||
|
|
||||||
|
/** |
||||||
|
* @MethodName startTask |
||||||
|
* @Description: 启动任务 |
||||||
|
* @param goodsAutoTask |
||||||
|
* @throws Exception |
||||||
|
* @Author: Sum1Dream |
||||||
|
* @Date: 2025/7/1 下午4:41 |
||||||
|
*/ |
||||||
|
void startListingTask(GoodsAutoTask goodsAutoTask , Integer taskType); |
||||||
|
|
||||||
|
} |
@ -0,0 +1,204 @@ |
|||||||
|
package com.hfkj.service.goods.impl; |
||||||
|
|
||||||
|
import com.hfkj.common.exception.ErrorCode; |
||||||
|
import com.hfkj.common.exception.ErrorHelp; |
||||||
|
import com.hfkj.common.exception.SysCode; |
||||||
|
import com.hfkj.dao.GoodsAutoRelMapper; |
||||||
|
import com.hfkj.entity.GoodsAutoRel; |
||||||
|
import com.hfkj.entity.GoodsAutoRelExample; |
||||||
|
import com.hfkj.entity.GoodsAutoTask; |
||||||
|
import com.hfkj.entity.GoodsMsg; |
||||||
|
import com.hfkj.service.goods.GoodsAutoRelService; |
||||||
|
import com.hfkj.service.goods.GoodsAutoTaskService; |
||||||
|
import com.hfkj.service.goods.GoodsMsgService; |
||||||
|
import org.apache.commons.collections4.MapUtils; |
||||||
|
import org.apache.commons.lang3.StringUtils; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
import org.springframework.transaction.annotation.Propagation; |
||||||
|
import org.springframework.transaction.annotation.Transactional; |
||||||
|
|
||||||
|
import javax.annotation.Resource; |
||||||
|
import java.util.Collections; |
||||||
|
import java.util.Date; |
||||||
|
import java.util.List; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
@Service("goodsAutoRelService") |
||||||
|
public class GoodsAutoRelServiceImpl implements GoodsAutoRelService { |
||||||
|
|
||||||
|
@Resource |
||||||
|
private GoodsAutoRelMapper goodsAutoRelMapper; |
||||||
|
|
||||||
|
@Resource |
||||||
|
private GoodsMsgService goodsMsgService; |
||||||
|
|
||||||
|
@Resource |
||||||
|
private GoodsAutoTaskService goodsAutoTaskService; |
||||||
|
|
||||||
|
@Override |
||||||
|
public void create(GoodsAutoRel goodsAutoRel) { |
||||||
|
goodsAutoRelMapper.insert(goodsAutoRel); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void update(GoodsAutoRel goodsAutoRel) { |
||||||
|
goodsAutoRelMapper.updateByPrimaryKey(goodsAutoRel); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void delete(Long id, Boolean fullDelete) { |
||||||
|
if (fullDelete) { |
||||||
|
goodsAutoRelMapper.deleteByPrimaryKey(id); |
||||||
|
} else { |
||||||
|
GoodsAutoRel goodsAutoRel = queryDetail(id); |
||||||
|
goodsAutoRel.setStatus(0); |
||||||
|
goodsAutoRel.setUpdateTime(new Date()); |
||||||
|
update(goodsAutoRel); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public GoodsAutoRel queryDetail(Long id) { |
||||||
|
return goodsAutoRelMapper.selectByPrimaryKey(id); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public GoodsAutoRel queryDetailByMap(Map<String, Object> map) { |
||||||
|
GoodsAutoRelExample example = new GoodsAutoRelExample(); |
||||||
|
GoodsAutoRelExample.Criteria criteria = example.createCriteria(); |
||||||
|
|
||||||
|
if (MapUtils.getLong(map, "goodsId") != null) { |
||||||
|
criteria.andGoodsIdEqualTo(MapUtils.getLong(map, "goodsId")); |
||||||
|
} |
||||||
|
if (MapUtils.getInteger(map, "type") != null) { |
||||||
|
criteria.andTypeEqualTo(MapUtils.getInteger(map, "type")); |
||||||
|
} |
||||||
|
if (StringUtils.isNotBlank(MapUtils.getString(map, "taskTitle"))) { |
||||||
|
criteria.andTaskTitleLike("%"+MapUtils.getString(map, "taskTitle")+"%"); |
||||||
|
} |
||||||
|
if (StringUtils.isNotBlank(MapUtils.getString(map, "goodsName"))) { |
||||||
|
criteria.andGoodsNameLike("%"+MapUtils.getString(map, "goodsName")+"%"); |
||||||
|
} |
||||||
|
if (MapUtils.getLong(map, "listingTime") != null) { |
||||||
|
criteria.andListingTimeGreaterThanOrEqualTo(new Date(MapUtils.getLong(map, "listingTime"))); |
||||||
|
} |
||||||
|
if (MapUtils.getLong(map, "removalTime") != null) { |
||||||
|
criteria.andRemovalTimeLessThanOrEqualTo(new Date(MapUtils.getLong(map, "removalTime"))); |
||||||
|
} |
||||||
|
if (MapUtils.getLong(map, "taskId") != null) { |
||||||
|
criteria.andTaskIdEqualTo(MapUtils.getLong(map, "taskId")); |
||||||
|
} |
||||||
|
if (MapUtils.getInteger(map, "status") != null) { |
||||||
|
criteria.andStatusEqualTo(MapUtils.getInteger(map, "status")); |
||||||
|
}else { |
||||||
|
criteria.andStatusNotEqualTo(0); |
||||||
|
} |
||||||
|
if (MapUtils.getLong(map , "id") != null) { |
||||||
|
criteria.andIdEqualTo(MapUtils.getLong(map , "id")); |
||||||
|
} |
||||||
|
example.setOrderByClause("create_time desc"); |
||||||
|
List<GoodsAutoRel> list = goodsAutoRelMapper.selectByExample(example); |
||||||
|
|
||||||
|
return list.isEmpty() ? null : list.get(0); |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
@Transactional(propagation= Propagation.REQUIRES_NEW,rollbackFor= {RuntimeException.class}) |
||||||
|
public void goodsTaskRel(Long taskId, String goodsIds , Long createUserId , String createUserName) { |
||||||
|
|
||||||
|
// 根据任务ID查询任务详情
|
||||||
|
GoodsAutoTask goodsAutoTask = goodsAutoTaskService.queryDetail(taskId); |
||||||
|
if (goodsAutoTask == null) { |
||||||
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "任务不存在!"); |
||||||
|
} |
||||||
|
|
||||||
|
// 将传入的商品ID字符串按逗号分割成数组
|
||||||
|
String [] goodsIdArray = goodsIds.split(","); |
||||||
|
|
||||||
|
// 检查商品ID数组是否为空
|
||||||
|
if (goodsIdArray.length == 0) { |
||||||
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "商品为空!"); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
// 遍历商品ID数组
|
||||||
|
for (String goodsId : goodsIdArray) { |
||||||
|
|
||||||
|
// 根据商品ID查询商品信息
|
||||||
|
GoodsMsg goodsMsg = goodsMsgService.queryDetail(Long.valueOf(goodsId)); |
||||||
|
|
||||||
|
// 检查商品是否存在
|
||||||
|
if (goodsMsg == null) { |
||||||
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "商品不存在!"); |
||||||
|
} |
||||||
|
|
||||||
|
// 创建商品与任务的关联实体对象
|
||||||
|
GoodsAutoRel goodsAutoRel = new GoodsAutoRel(); |
||||||
|
goodsAutoRel.setType(goodsAutoTask.getType()); |
||||||
|
// 设置商品ID
|
||||||
|
goodsAutoRel.setGoodsId(Long.valueOf(goodsId)); |
||||||
|
// 设置商品名称
|
||||||
|
goodsAutoRel.setGoodsName(goodsMsg.getTitle()); |
||||||
|
// 设置任务ID
|
||||||
|
goodsAutoRel.setTaskId(taskId); |
||||||
|
// 设置任务标题
|
||||||
|
goodsAutoRel.setTaskTitle(goodsAutoTask.getTaskTitle()); |
||||||
|
// 设置上架时间
|
||||||
|
goodsAutoRel.setListingTime(goodsAutoTask.getListingTime()); |
||||||
|
// 设置下架时间
|
||||||
|
goodsAutoRel.setRemovalTime(goodsAutoTask.getRemovalTime()); |
||||||
|
// 设置状态为1(正常状态)
|
||||||
|
goodsAutoRel.setStatus(1); |
||||||
|
// 设置创建时间
|
||||||
|
goodsAutoRel.setCreateTime(new Date()); |
||||||
|
// 设置创建用户ID
|
||||||
|
goodsAutoRel.setCreateUserId(createUserId); |
||||||
|
// 设置创建用户名称
|
||||||
|
goodsAutoRel.setCreateUserName(createUserName); |
||||||
|
// 保存商品与任务的关联关系
|
||||||
|
create(goodsAutoRel); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public List<GoodsAutoRel> getList(Map<String, Object> map) { |
||||||
|
|
||||||
|
GoodsAutoRelExample example = new GoodsAutoRelExample(); |
||||||
|
GoodsAutoRelExample.Criteria criteria = example.createCriteria(); |
||||||
|
|
||||||
|
if (MapUtils.getLong(map, "goodsId") != null) { |
||||||
|
criteria.andGoodsIdEqualTo(MapUtils.getLong(map, "goodsId")); |
||||||
|
} |
||||||
|
if (MapUtils.getInteger(map, "type") != null) { |
||||||
|
criteria.andTypeEqualTo(MapUtils.getInteger(map, "type")); |
||||||
|
} |
||||||
|
if (StringUtils.isNotBlank(MapUtils.getString(map, "taskTitle"))) { |
||||||
|
criteria.andTaskTitleLike("%"+MapUtils.getString(map, "taskTitle")+"%"); |
||||||
|
} |
||||||
|
if (StringUtils.isNotBlank(MapUtils.getString(map, "goodsName"))) { |
||||||
|
criteria.andGoodsNameLike("%"+MapUtils.getString(map, "goodsName")+"%"); |
||||||
|
} |
||||||
|
if (MapUtils.getLong(map, "listingTime") != null) { |
||||||
|
criteria.andListingTimeGreaterThanOrEqualTo(new Date(MapUtils.getLong(map, "listingTime"))); |
||||||
|
} |
||||||
|
if (MapUtils.getLong(map, "removalTime") != null) { |
||||||
|
criteria.andRemovalTimeLessThanOrEqualTo(new Date(MapUtils.getLong(map, "removalTime"))); |
||||||
|
} |
||||||
|
if (MapUtils.getLong(map, "taskId") != null) { |
||||||
|
criteria.andTaskIdEqualTo(MapUtils.getLong(map, "taskId")); |
||||||
|
} |
||||||
|
if (MapUtils.getInteger(map, "status") != null) { |
||||||
|
criteria.andStatusEqualTo(MapUtils.getInteger(map, "status")); |
||||||
|
}else { |
||||||
|
criteria.andStatusNotEqualTo(0); |
||||||
|
} |
||||||
|
if (MapUtils.getLong(map , "id") != null) { |
||||||
|
criteria.andIdEqualTo(MapUtils.getLong(map , "id")); |
||||||
|
} |
||||||
|
example.setOrderByClause("create_time desc"); |
||||||
|
return goodsAutoRelMapper.selectByExample(example); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,225 @@ |
|||||||
|
package com.hfkj.service.goods.impl; |
||||||
|
|
||||||
|
import cn.binarywang.wx.miniapp.bean.WxMaGetLiveInfo; |
||||||
|
import com.hfkj.common.exception.ErrorCode; |
||||||
|
import com.hfkj.common.exception.ErrorHelp; |
||||||
|
import com.hfkj.common.exception.SysCode; |
||||||
|
import com.hfkj.dao.GoodsAutoTaskMapper; |
||||||
|
import com.hfkj.entity.*; |
||||||
|
import com.hfkj.service.goods.GoodsAutoRelService; |
||||||
|
import com.hfkj.service.goods.GoodsAutoTaskService; |
||||||
|
import com.hfkj.service.goods.GoodsMsgService; |
||||||
|
import com.hfkj.service.goods.GoodsSpecsService; |
||||||
|
import org.apache.commons.collections4.MapUtils; |
||||||
|
import org.apache.commons.lang3.StringUtils; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
import org.springframework.transaction.annotation.Transactional; |
||||||
|
|
||||||
|
import javax.annotation.Resource; |
||||||
|
import java.util.*; |
||||||
|
|
||||||
|
@Service("goodsAutoTaskService") |
||||||
|
public class GoodsAutoTaskServiceImpl implements GoodsAutoTaskService { |
||||||
|
|
||||||
|
@Resource |
||||||
|
private GoodsAutoTaskMapper goodsAutoTaskMapper; |
||||||
|
|
||||||
|
@Resource |
||||||
|
private GoodsAutoRelService goodsAutoRelService; |
||||||
|
|
||||||
|
@Resource |
||||||
|
private GoodsMsgService goodsMsgService; |
||||||
|
|
||||||
|
@Resource |
||||||
|
private GoodsSpecsService goodsSpecsService; |
||||||
|
|
||||||
|
@Override |
||||||
|
public void create(GoodsAutoTask goodsAutoTask) throws Exception { |
||||||
|
goodsAutoTaskMapper.insert(goodsAutoTask); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void update(GoodsAutoTask goodsAutoTask) { |
||||||
|
goodsAutoTaskMapper.updateByPrimaryKey(goodsAutoTask); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void delete(Long id, Boolean fullDelete) { |
||||||
|
if (fullDelete) { |
||||||
|
goodsAutoTaskMapper.deleteByPrimaryKey(id); |
||||||
|
} else { |
||||||
|
GoodsAutoTask goodsAutoTask = queryDetail(id); |
||||||
|
goodsAutoTask.setStatus(0); |
||||||
|
goodsAutoTask.setUpdateTime(new Date()); |
||||||
|
update(goodsAutoTask); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public GoodsAutoTask queryDetail(Long id) { |
||||||
|
return goodsAutoTaskMapper.selectByPrimaryKey(id); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public GoodsAutoTask queryDetailByMap(Map<String, Object> map) { |
||||||
|
GoodsAutoTaskExample example = new GoodsAutoTaskExample(); |
||||||
|
GoodsAutoTaskExample.Criteria criteria = example.createCriteria(); |
||||||
|
|
||||||
|
if (MapUtils.getLong(map, "listingTime") != null) { |
||||||
|
criteria.andListingTimeGreaterThanOrEqualTo(new Date(MapUtils.getLong(map, "listingTime"))); |
||||||
|
} |
||||||
|
if (MapUtils.getLong(map, "removalTime") != null) { |
||||||
|
criteria.andRemovalTimeLessThanOrEqualTo(new Date(MapUtils.getLong(map, "removalTime"))); |
||||||
|
} |
||||||
|
if (MapUtils.getInteger(map, "type") != null) { |
||||||
|
criteria.andTypeEqualTo(MapUtils.getInteger(map, "type")); |
||||||
|
} |
||||||
|
if (StringUtils.isNotBlank(MapUtils.getString(map, "taskTitle"))) { |
||||||
|
criteria.andTaskTitleLike("%"+MapUtils.getString(map, "taskTitle")+"%"); |
||||||
|
} |
||||||
|
if (MapUtils.getInteger(map, "status") != null) { |
||||||
|
criteria.andStatusEqualTo(MapUtils.getInteger(map, "status")); |
||||||
|
}else { |
||||||
|
criteria.andStatusNotEqualTo(0); |
||||||
|
} |
||||||
|
if (MapUtils.getLong(map , "id") != null) { |
||||||
|
criteria.andIdEqualTo(MapUtils.getLong(map , "id")); |
||||||
|
} |
||||||
|
example.setOrderByClause("create_time desc"); |
||||||
|
List<GoodsAutoTask> list = goodsAutoTaskMapper.selectByExample(example); |
||||||
|
|
||||||
|
return list.isEmpty() ? null : list.get(0); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public List<GoodsAutoTask> getList(Map<String, Object> map) { |
||||||
|
|
||||||
|
GoodsAutoTaskExample example = new GoodsAutoTaskExample(); |
||||||
|
GoodsAutoTaskExample.Criteria criteria = example.createCriteria(); |
||||||
|
|
||||||
|
if (MapUtils.getLong(map, "listingTime") != null) { |
||||||
|
criteria.andListingTimeGreaterThanOrEqualTo(new Date(MapUtils.getLong(map, "listingTime"))); |
||||||
|
} |
||||||
|
if (MapUtils.getInteger(map, "type") != null) { |
||||||
|
criteria.andTypeEqualTo(MapUtils.getInteger(map, "type")); |
||||||
|
} |
||||||
|
if (StringUtils.isNotBlank(MapUtils.getString(map, "taskTitle"))) { |
||||||
|
criteria.andTaskTitleLike("%"+MapUtils.getString(map, "taskTitle")+"%"); |
||||||
|
} |
||||||
|
if (MapUtils.getLong(map, "removalTime") != null) { |
||||||
|
criteria.andRemovalTimeLessThanOrEqualTo(new Date(MapUtils.getLong(map, "removalTime"))); |
||||||
|
} |
||||||
|
if (MapUtils.getInteger(map, "status") != null) { |
||||||
|
criteria.andStatusEqualTo(MapUtils.getInteger(map, "status")); |
||||||
|
}else { |
||||||
|
criteria.andStatusNotEqualTo(0); |
||||||
|
} |
||||||
|
if (MapUtils.getLong(map , "id") != null) { |
||||||
|
criteria.andIdEqualTo(MapUtils.getLong(map , "id")); |
||||||
|
} |
||||||
|
example.setOrderByClause("create_time desc"); |
||||||
|
|
||||||
|
return goodsAutoTaskMapper.selectByExample(example); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public List<GoodsAutoTask> getListingTimeList() { |
||||||
|
return goodsAutoTaskMapper.listingList(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public List<GoodsAutoTask> getRemovalTimeList() { |
||||||
|
return goodsAutoTaskMapper.removalList(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
@Transactional |
||||||
|
public void startListingTask(GoodsAutoTask goodsAutoTask , Integer taskType) { |
||||||
|
|
||||||
|
try { |
||||||
|
// 创建一个HashMap对象,用于存储任务ID
|
||||||
|
Map<String , Object> map = new HashMap<>(); |
||||||
|
// 向map中添加任务ID
|
||||||
|
map.put("taskId" , goodsAutoTask.getId()); |
||||||
|
// 根据任务ID查询商品自动关联关系列表
|
||||||
|
List<GoodsAutoRel> goodsAutoRel = goodsAutoRelService.getList(map); |
||||||
|
|
||||||
|
// 如果商品自动关联关系列表不为空
|
||||||
|
if (!goodsAutoRel.isEmpty()) { |
||||||
|
// 遍历商品自动关联关系列表
|
||||||
|
for (GoodsAutoRel rel : goodsAutoRel) { |
||||||
|
try { |
||||||
|
// 根据商品ID查询商品详情
|
||||||
|
GoodsMsg goodsMsg = goodsMsgService.queryDetail(rel.getGoodsId()); |
||||||
|
// 如果商品详情为空,抛出异常
|
||||||
|
if (goodsMsg == null) { |
||||||
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "商品不存在!"); |
||||||
|
} |
||||||
|
|
||||||
|
// 创建规格查询条件map
|
||||||
|
Map<String , Object> specsMap = new HashMap<>(); |
||||||
|
// 向map中添加商品ID
|
||||||
|
specsMap.put("goodsId" , goodsMsg.getId()); |
||||||
|
|
||||||
|
// 判断是上架操作还是下架操作
|
||||||
|
if (taskType == 1) { |
||||||
|
// 判断商品上架时间是否已到(将时间戳转换为秒进行比较)
|
||||||
|
if (rel.getListingTime().getTime() / 1000 <= System.currentTimeMillis() / 1000) { |
||||||
|
// 上架操作,更新商品状态为上架
|
||||||
|
// 根据商品ID查询规格列表
|
||||||
|
List<GoodsSpecs> specs = goodsSpecsService.getList(specsMap); |
||||||
|
// 如果规格列表为空,抛出异常
|
||||||
|
if (specs.isEmpty()) { |
||||||
|
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "商品规格不存在!"); |
||||||
|
} |
||||||
|
// 遍历规格列表,更新库存和更新时间
|
||||||
|
for (GoodsSpecs spec : specs) { |
||||||
|
spec.setStock(goodsAutoTask.getInventory()); // 设置商品规格的库存数量
|
||||||
|
spec.setUpdateTime(new Date()); // 设置商品规格的更新时间
|
||||||
|
goodsSpecsService.update(spec); // 更新商品规格信息
|
||||||
|
} |
||||||
|
// 更新商品状态和更新时间
|
||||||
|
goodsMsg.setStatus(1); // 设置商品状态为已上架
|
||||||
|
} |
||||||
|
|
||||||
|
} else { |
||||||
|
|
||||||
|
// 检查商品是否应该被下架
|
||||||
|
// 比较商品的下架时间和当前时间(秒级)
|
||||||
|
if (rel.getRemovalTime().getTime() / 1000 <= System.currentTimeMillis() / 1000) { |
||||||
|
// 下架操作,更新商品状态为下架
|
||||||
|
goodsMsg.setStatus(2); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
goodsMsg.setUpdateTime(new Date()); |
||||||
|
goodsMsgService.update(goodsMsg); |
||||||
|
|
||||||
|
// 更新关联关系状态、备注和更新时间
|
||||||
|
rel.setStatus(2); |
||||||
|
rel.setRemak("成功"); |
||||||
|
rel.setUpdateTime(new Date()); |
||||||
|
goodsAutoRelService.update(rel); |
||||||
|
} catch (Exception e) { |
||||||
|
// 处理异常,更新关联关系状态、异常信息和更新时间
|
||||||
|
rel.setStatus(3); |
||||||
|
rel.setUpdateTime(new Date()); |
||||||
|
rel.setRemak(e.getMessage()); |
||||||
|
goodsAutoRelService.update(rel); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
// 更新任务状态和更新时间
|
||||||
|
goodsAutoTask.setStatus(2); |
||||||
|
goodsAutoTask.setUpdateTime(new Date()); |
||||||
|
update(goodsAutoTask); |
||||||
|
} catch (Exception e) { |
||||||
|
// 处理异常,更新任务状态和更新时间
|
||||||
|
goodsAutoTask.setStatus(3); |
||||||
|
goodsAutoTask.setUpdateTime(new Date()); |
||||||
|
update(goodsAutoTask); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue