Authored by Lixiaodi

资源位定时发布

package com.yoho.ufo.dal;
import com.yoho.ufo.model.resource.Resources;
import com.yohobuy.ufo.resource.req.ResourceReqBo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
... ... @@ -9,13 +10,17 @@ import java.util.List;
* Created by shengguo.cai on 2018/11/16.
*/
public interface ResourcesMapper {
List<Resources> selectResourcesByPage(@Param("start") int start,@Param("size") int size);
List<Resources> selectResourcesByPage(ResourceReqBo bo);
Resources selectById(@Param("id") Integer id);
Resources selectDefaultByCode(String code);
int insert(Resources record);
int updateByPrimaryKeySelective(Resources record);
int selectResourcesCount();
int selectResourcesCount(ResourceReqBo bo);
List<Resources> selectResourcesByCode(String code);
}
... ...
... ... @@ -19,14 +19,45 @@
id, name, sort_id, platform_id, code, match_code, create_time, publish_time, status,
lock_person_name, lock_person_id, lock_time
</sql>
<select id="selectResourcesByCode" resultType="com.yoho.ufo.model.resource.Resources">
select <include refid="Base_Column_List" /> from resources
where status=1 and code = #{code}
order by publish_time desc
</select>
<select id="selectDefaultByCode" resultType="com.yoho.ufo.model.resource.Resources">
select <include refid="Base_Column_List" /> from resources
where status=1 and code = #{code} and publish_time=0
limit 1
</select>
<select id="selectResourcesByPage" resultType="com.yoho.ufo.model.resource.Resources">
select <include refid="Base_Column_List" /> from resources
<include refid="pageCondition"/>
order by id asc
limit #{start},#{size}
</select>
<select id="selectResourcesCount" resultType="java.lang.Integer">
select count(1) from resources
<include refid="pageCondition"/>
</select>
<sql id="pageCondition">
where publish_time=0 and status = 1
<if test="name != null" >
and name like CONCAT('%','#{name}','%' )
</if>
<if test="id != null" >
and id = #{id}
</if>
<if test="platformId != null" >
and platform_id = #{platformId}
</if>
<if test="code != null" >
and code = #{code}
</if>
</sql>
<select id="selectById" resultType="com.yoho.ufo.model.resource.Resources">
select <include refid="Base_Column_List" /> from resources
where id=#{id} limit 1
... ... @@ -71,7 +102,7 @@
</set>
where id = #{id,jdbcType=INTEGER}
</update>
<insert id="insert" parameterType="com.yoho.ufo.model.resource.Resources" >
<insert id="insert" parameterType="com.yoho.ufo.model.resource.Resources" useGeneratedKeys="true" keyProperty="id" >
insert into resources (id, name, sort_id,
platform_id, code, match_code,
create_time, publish_time, lock_person_name,
... ...
... ... @@ -22,6 +22,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.text.ParseException;
import java.util.List;
/**
... ... @@ -39,13 +40,13 @@ public class ResourceController {
private IResourcePoolAndCodeService resourcePoolAndCodeServiceService;
@RequestMapping(value = "/getResources")
public ApiResponse getResources(PageRequestBO req) {
public ApiResponse getResources(ResourceReqBo req) {
LOGGER.info("enter getResources,param is {}",req);
if(req == null){
req = new PageRequestBO();
req = new ResourceReqBo();
}
//暂时不查询total,数据量还不是很大
List<ResourceGetBo> result = this.resourceService.getResources(req);
PageResponseBO<ResourceGetBo> result = this.resourceService.getResources(req);
return new ApiResponse.ApiResponseBuilder().code(200).data(result).build();
}
... ... @@ -59,6 +60,32 @@ public class ResourceController {
return new ApiResponse.ApiResponseBuilder().code(200).data(result).build();
}
///////////////////////////////////////////////
@RequestMapping(value = "/getResourcesByCode")
public ApiResponse getResourcesByCode(String code) {
LOGGER.info("enter getResourcesByCode,code is {}",code);
if(StringUtils.isBlank(code)) {
return new ApiResponse.ApiResponseBuilder().code(500).message("code为空").build();
}
List<ResourceGetBo> result = this.resourceService.getResourcesByCode(code);
return new ApiResponse.ApiResponseBuilder().code(200).data(result).build();
}
@RequestMapping(value = "/editOrUpdateResourcesTime")
public ApiResponse editOrUpdateResourcesTime(ResourceReqBo bo) {
LOGGER.info("enter editOrUpdateResourcesTime,bo is {}", bo);
if (bo == null) {
return new ApiResponse.ApiResponseBuilder().code(500).message("参数为空").build();
}
int result = 0;
try {
result = this.resourceService.editOrUpdateResourcesTime(bo);
} catch (ParseException e) {
return new ApiResponse.ApiResponseBuilder().code(400).message("日期格式有误").data("").build();
}
return new ApiResponse.ApiResponseBuilder().code(200).data(result).build();
}
@RequestMapping(value = "/editResourceContentData")
public ApiResponse editResourceContentData(ResContentDataModifyBo param) {
LOGGER.info("enter editResourceContentData,param is {}",param);
... ...
package com.yoho.ufo.resource.service;
import com.alibaba.fastjson.JSONObject;
import com.yoho.ufo.service.model.PageRequestBO;
import com.yohobuy.ufo.model.common.PageResponseBO;
import com.yohobuy.ufo.resource.req.ResContentDataModifyBo;
import com.yohobuy.ufo.resource.req.ResGoodsPoolEditBo;
import com.yohobuy.ufo.resource.req.ResourceReqBo;
import com.yohobuy.ufo.resource.resp.ResourceGetBo;
import java.text.ParseException;
import java.util.List;
/**
* Created by shengguo.cai on 2018/11/16.
*/
public interface IResourceService {
List<ResourceGetBo> getResources(PageRequestBO req);
PageResponseBO<ResourceGetBo> getResources(ResourceReqBo req);
JSONObject getResourceInfo(Integer id);
List<ResourceGetBo> getResourcesByCode(String code);
void editResourceContentData(ResContentDataModifyBo param);
void batchEditResourceGoodsPool(List<ResGoodsPoolEditBo> param);
... ... @@ -24,4 +27,6 @@ public interface IResourceService {
void addOrUpdateResource(ResourceReqBo req);
void addOrUpdateResourceDeatil(ResourceReqBo req);
int editOrUpdateResourcesTime(ResourceReqBo bo) throws ParseException;
}
... ...
... ... @@ -16,6 +16,7 @@ import com.yoho.ufo.model.resource.ResourcesContentData;
import com.yoho.ufo.model.resource.ResourcesGoodsPool;
import com.yoho.ufo.resource.service.IResourceService;
import com.yoho.ufo.service.model.PageRequestBO;
import com.yohobuy.ufo.model.common.PageResponseBO;
import com.yoho.ufo.util.CollectionUtil;
import com.yoho.ufo.util.DateUtil;
import com.yoho.ufo.util.NamedThreadFactory;
... ... @@ -32,10 +33,9 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
... ... @@ -61,24 +61,24 @@ public class ResourceServiceImpl implements IResourceService{
private ExecutorService exe = Executors.newFixedThreadPool(1, NamedThreadFactory.newThreadFactory("ResourceService"));
@Override
public List<ResourceGetBo> getResources(PageRequestBO req) {
public PageResponseBO<ResourceGetBo> getResources(ResourceReqBo req) {
LOGGER.info("enter getResources,param is {}",req);
int count = resourcesMapper.selectResourcesCount();
List<Resources> resourcesList = resourcesMapper.selectResourcesByPage(req.getStart(),req.getSize());
if(null == resourcesList){
return null;
}
int count = resourcesMapper.selectResourcesCount(req);
if(count == 0){
return new PageResponseBO(count, new ArrayList(), req.getPage(), req.getSize());
}
List<Resources> resourcesList = resourcesMapper.selectResourcesByPage(req);
List<ResourceGetBo> resourceGetBoList = new ArrayList<>();
for(Resources res : resourcesList){
ResourceGetBo bo = new ResourceGetBo(res.getId(), res.getName(), getPlatformName(res.getPlatformId()),
res.getCode(), res.getCreateTime());
bo.setSortId(res.getSortId());
resourceGetBoList.add(bo);
}
return resourceGetBoList;
return new PageResponseBO(count, resourceGetBoList, req.getPage(), req.getSize());
}
@Override
... ... @@ -107,7 +107,39 @@ public class ResourceServiceImpl implements IResourceService{
return result;
}
@Override
@Override
public List<ResourceGetBo> getResourcesByCode(String code) {
List<Resources> resourcesList = resourcesMapper.selectResourcesByCode(code);
List<ResourceGetBo> resourceGetBoList = new ArrayList<>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
boolean isFirst = true;
int now = (int) (System.currentTimeMillis() / 1000);
for (Resources res : resourcesList) {
ResourceGetBo bo = new ResourceGetBo(res.getId(), res.getName(), getPlatformName(res.getPlatformId()),
res.getCode(), res.getCreateTime());
bo.setPublishTime(res.getPublishTime());
if (res.getPublishTime() == 0) {
bo.setPublishTimeStr("");
bo.setPublishStatusStr("默认");
} else {
bo.setPublishTimeStr(sdf.format(new Date(res.getPublishTime() * 1000L)));
if (res.getPublishTime() > now) {
bo.setPublishStatusStr("未发布");
} else {
if (isFirst) {
bo.setPublishStatusStr("进行中");
isFirst = false;
} else {
bo.setPublishStatusStr("已过期");
}
}
}
resourceGetBoList.add(bo);
}
return resourceGetBoList;
}
@Override
public void editResourceContentData(ResContentDataModifyBo param) {
LOGGER.info("enter editResourceContentData param is {}",param);
param.setUpdateTime(DateUtil.getCurrentTimeSeconds());
... ... @@ -182,8 +214,35 @@ public class ResourceServiceImpl implements IResourceService{
}
}
}
@Override
@Override
public int editOrUpdateResourcesTime(ResourceReqBo bo) throws ParseException {
// 保存
if (bo.getId() == null) {
Resources r = resourcesMapper.selectDefaultByCode(bo.getCode());
if (r == null) {
return 0;
}
r.setId(null);
r.setPublishTime((int) (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(bo.getPublishTimeStr()).getTime() / 1000));
r.setLockPersonId("");
r.setLockPersonName("");
r.setMatchCode("");
r.setLockTime(0);
resourcesMapper.insert(r);
return r.getId();
}
Resources r = new Resources();
r.setId(bo.getId());
if (bo.getStatus() != null && bo.getStatus() == 0) {
r.setStatus(0);
} else {
r.setPublishTime((int) (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(bo.getPublishTimeStr()).getTime() / 1000));
}
return resourcesMapper.updateByPrimaryKeySelective(r);
}
@Override
public void addOrUpdateResourceDeatil(ResourceReqBo req) {
if (req.getId() == null || req.getId() < 1) {
throw new ServiceException(400, "资源位id不能为空!");
... ...