package com.iplatform.base.controller;
import com.iplatform.base.PlatformAdapterController;
import com.iplatform.base.PlatformRuntimeException;
import com.iplatform.base.cache.FormCacheProvider;
import com.iplatform.base.pojo.GroupDataParam;
import com.iplatform.base.pojo.KeywordsParam;
import com.iplatform.base.pojo.form.FormData;
import com.iplatform.base.pojo.group.GroupData;
import com.iplatform.base.service.GroupServiceImpl;
import com.iplatform.model.po.S_group;
import com.iplatform.model.po.S_group_data;
import com.walker.db.page.GenericPager;
import com.walker.infrastructure.utils.DateUtils;
import com.walker.infrastructure.utils.JsonUtils;
import com.walker.infrastructure.utils.StringUtils;
import com.walker.infrastructure.utils.UrlUtils;
import com.walker.web.ResponseValue;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* 平台分组数据管理。
*
实现配置功能块能包含哪些内容项,如:手机首页导航栏可配置等。
* @author 时克英
* @date 2023-05-20
*/
@RestController
@RequestMapping("/system/group")
public class GroupController extends PlatformAdapterController {
@Autowired
public GroupController(GroupServiceImpl groupService, FormCacheProvider formCacheProvider){
this.groupService = groupService;
this.formCacheProvider = formCacheProvider;
}
@RequestMapping(value = "/update", method = RequestMethod.POST)
public ResponseValue updateGroup(
// @RequestParam Integer id,
@RequestBody S_group group){
if(group == null || StringUtils.isEmpty(group.getName()) || group.getId() == null){
return ResponseValue.error("参数错误");
}
// group.setId(id);
group.setUpdate_time(DateUtils.getDateTimeNumber());
this.groupService.save(group);
return ResponseValue.success();
}
@RequestMapping(value = "/delete", method = RequestMethod.GET)
public ResponseValue deleteGroup(Integer id){
if(id == null){throw new IllegalArgumentException("缺少参数");}
S_group_data groupData = new S_group_data();
groupData.setGid(id);
List groupDataList = this.groupService.select(groupData);
if(!StringUtils.isEmptyList(groupDataList)){
return ResponseValue.error("分组下存在数据项,无法删除!");
}
this.groupService.delete(new S_group(id));
return ResponseValue.success();
}
@RequestMapping(value = "/save", method = RequestMethod.POST)
public ResponseValue saveGroup(@RequestBody S_group group){
if(group == null){
return ResponseValue.error("参数错误");
}
group.setCreate_time(DateUtils.getDateTimeNumber());
group.setUpdate_time(group.getCreate_time());
group.setId(this.groupService.queryGroupNextId());
this.groupService.insert(group);
return ResponseValue.success();
}
@RequestMapping(value = "/data/delete", method = RequestMethod.GET)
public ResponseValue deleteData(@RequestParam(value = "id") Integer id){
this.groupService.delete(new S_group_data(id));
return ResponseValue.success();
}
@RequestMapping(value = "/data/update", method = RequestMethod.POST)
public ResponseValue updateData(@RequestParam Integer id, @RequestBody GroupData groupData){
if(groupData == null || id == null){
return ResponseValue.error("参数错误");
}
String value = this.acquireFormValue(groupData.getForm());
S_group_data group_data = new S_group_data();
group_data.setGid(groupData.getGid());
group_data.setValue(this.clearCdnPrefix(value));
group_data.setSort(groupData.getForm().getSort());
group_data.setStatus(groupData.getForm().getStatus());
group_data.setUpdate_time(group_data.getCreate_time());
group_data.setId(id);
this.groupService.save(group_data);
return ResponseValue.success();
}
// @ApiOperation(value = "新增:分组列表项")
@RequestMapping(value = "/data/save", method = RequestMethod.POST)
public ResponseValue saveData(@RequestBody GroupData groupData){
if(groupData == null){
return ResponseValue.error("参数错误");
}
String value = this.acquireFormValue(groupData.getForm());
int nextId = this.groupService.queryGroupDataNextId();
S_group_data group_data = new S_group_data();
group_data.setGid(groupData.getGid());
group_data.setValue(this.clearCdnPrefix(value));
group_data.setSort(groupData.getForm().getSort());
group_data.setStatus(groupData.getForm().getStatus());
group_data.setCreate_time(DateUtils.getDateTimeNumber());
group_data.setUpdate_time(group_data.getCreate_time());
group_data.setId(nextId);
this.groupService.insert(group_data);
return ResponseValue.success();
}
private String acquireFormValue(FormData formData){
this.formCacheProvider.validateForm(formData);
try {
return JsonUtils.objectToJsonString(formData);
} catch (Exception e) {
throw new PlatformRuntimeException("转换Json字符串失败:" + formData.getId(), e);
}
}
@RequestMapping(value = "/data/list", method = RequestMethod.GET)
public ResponseValue listData(GroupDataParam groupDataParam){
if(groupDataParam == null || groupDataParam.getGid() == null){
throw new IllegalArgumentException("参数错误:groupDataParam");
}
GenericPager pager = this.groupService.queryPageGroupDataList(groupDataParam.getGid(), groupDataParam.getStatus());
pager.getDatas().stream().forEach(data -> {
try {
// 把value转成Json,重新格式化一遍,返回前端。
FormData formData = JsonUtils.jsonStringToObject(data.getValue(), FormData.class);
data.setValue(JsonUtils.objectToJsonString(formData));
logger.info(data.getValue());
} catch (Exception e) {
throw new RuntimeException(e);
}
});
return ResponseValue.success(pager);
}
@RequestMapping(value = "/list", method = RequestMethod.GET)
public ResponseValue list(KeywordsParam keywordsParam){
String keywords = null;
if(keywordsParam != null && StringUtils.isNotEmpty(keywordsParam.getKeywords())){
keywords = UrlUtils.decode(keywordsParam.getKeywords());
}
GenericPager pager = this.groupService.queryPageGroupList(keywords);
return ResponseValue.success(pager);
}
private GroupServiceImpl groupService;
private FormCacheProvider formCacheProvider;
}