ChinaMobileRestApiController.java 39.7 KB
Newer Older
liqin's avatar
liqin committed
1
package cn.chnmuseum.party.web.controller;
liqin's avatar
liqin committed
2

liqin's avatar
liqin committed
3 4 5 6 7 8 9 10 11 12 13 14 15 16
import cn.chnmuseum.party.auth.SHA256PasswordEncryptionService;
import cn.chnmuseum.party.auth.util.AESUtils;
import cn.chnmuseum.party.auth.util.JwtTokenUtil;
import cn.chnmuseum.party.common.enums.AuditOperationEnum;
import cn.chnmuseum.party.common.enums.FileCatEnum;
import cn.chnmuseum.party.common.enums.FileTypeEnum;
import cn.chnmuseum.party.common.enums.LanguageEnum;
import cn.chnmuseum.party.common.util.TimeUtils;
import cn.chnmuseum.party.common.validator.groups.Add;
import cn.chnmuseum.party.common.vo.GenericPageParam;
import cn.chnmuseum.party.model.*;
import cn.chnmuseum.party.service.*;
import cn.chnmuseum.party.service.impl.*;
import cn.chnmuseum.party.web.controller.base.BaseController;
liqin's avatar
liqin committed
17
import com.alibaba.fastjson.JSONObject;
liqin's avatar
liqin committed
18
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
yangtianyou's avatar
yangtianyou committed
19
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
wzp's avatar
wzp committed
20
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
liqin's avatar
liqin committed
21
import com.baomidou.mybatisplus.core.metadata.IPage;
liqin's avatar
liqin committed
22
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
liqin's avatar
liqin committed
23
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
liqin's avatar
liqin committed
24
import io.swagger.annotations.Api;
liqin's avatar
liqin committed
25 26
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
liqin's avatar
liqin committed
27
import io.swagger.annotations.ApiOperation;
liqin's avatar
liqin committed
28
import lombok.extern.slf4j.Slf4j;
liqin's avatar
liqin committed
29
import org.apache.commons.lang3.StringUtils;
wzp's avatar
wzp committed
30
import org.apache.shiro.authc.DisabledAccountException;
liqin's avatar
liqin committed
31
import org.apache.shiro.authc.IncorrectCredentialsException;
wzp's avatar
wzp committed
32
import org.apache.shiro.authz.annotation.RequiresAuthentication;
liqin's avatar
liqin committed
33
import org.springframework.data.redis.core.StringRedisTemplate;
wzp's avatar
wzp committed
34
import org.springframework.scheduling.annotation.Scheduled;
yangtianyou's avatar
yangtianyou committed
35
import org.springframework.validation.annotation.Validated;
liqin's avatar
liqin committed
36 37 38
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
wzp's avatar
wzp committed
39
import java.time.LocalDate;
liqin's avatar
liqin committed
40
import java.time.LocalDateTime;
liqin's avatar
liqin committed
41
import java.util.*;
liqin's avatar
liqin committed
42
import java.util.concurrent.TimeUnit;
liqin's avatar
liqin committed
43
import java.util.stream.Collectors;
liqin's avatar
liqin committed
44

liqin's avatar
liqin committed
45
@Slf4j
liqin's avatar
liqin committed
46 47
@RestController()
@RequestMapping("/cmRestApi")
liqin's avatar
liqin committed
48
@Api(tags = {"中国移动API"})
liqin's avatar
liqin committed
49 50 51 52 53
public class ChinaMobileRestApiController extends BaseController {

    @Resource
    private StringRedisTemplate stringRedisTemplate;

wzp's avatar
wzp committed
54 55 56
    @Resource
    private TUserServiceImpl userService;

wzp's avatar
wzp committed
57 58 59
    @Resource
    private TOrganServiceImpl organService;

wzp's avatar
wzp committed
60 61 62
    @Resource
    private RunLogServiceImpl runLogService;

wzp's avatar
wzp committed
63 64 65
    @Resource
    private AssetServiceImpl assetService;

liqin's avatar
liqin committed
66 67 68
    @Resource
    private VideoContentService videoContentService;

wzp's avatar
wzp committed
69 70 71
    @Resource
    private TBoxOperationServiceImpl boxOperationService;

liqin's avatar
liqin committed
72 73 74
    @Resource
    private ExhibitionBoardService exhibitionBoardService;

yangtianyou's avatar
yangtianyou committed
75 76 77
    @Resource
    private TBoardStatisticService tBoardStatisticService;

liqin's avatar
liqin committed
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
    @Resource
    private LearningProjectService learningProjectService;

    @Resource
    private LearningContentService learningContentService;

    @Resource
    private ExhibitionBoardCatService exhibitionBoardCatService;

    @Resource
    private CopyrightOwnerService copyrightOwnerService;

    @Resource
    private LearningContentBoardService learningContentBoardService;

yangtianyou's avatar
yangtianyou committed
93 94 95 96 97 98 99 100 101
    @Resource
    private TAppVersionService appVersionService;

    @Resource
    private TAppDirPicService appDirPicService;

    @Resource
    private TAppRunPicService appRunPicService;

wzp's avatar
wzp committed
102
    private static final String SHIRO_JWT_TOKEN = "shiro:jwt:token:";
liqin's avatar
liqin committed
103 104 105 106 107
    //用户登录次数计数  redisKey 前缀
    private static final String SHIRO_LOGIN_COUNT = "shiro_login_count_";
    //用户登录是否被锁定    一小时 redisKey 前缀
    private static final String SHIRO_IS_LOCK = "shiro_is_lock_";

liqin's avatar
liqin committed
108 109
    @ApiOperation(value = "获取机顶盒密钥", notes = "获取机顶盒密钥")
    @GetMapping("/equitment/key")
wzp's avatar
wzp committed
110
    @RequiresAuthentication  //@RequiresPermissions("equitment:key")
liqin's avatar
liqin committed
111 112
    public Map<String, Object> getBoxPrivateKey(@RequestParam(value = "mac") String mac) {
        try {
liqin's avatar
liqin committed
113
            String macAddress = mac.trim().toUpperCase().replaceAll("-|_", ":");
liqin's avatar
liqin committed
114
            final LambdaQueryWrapper<TBoxOperation> queryWrapper = Wrappers.<TBoxOperation>lambdaQuery().eq(TBoxOperation::getMac, macAddress);
liqin's avatar
liqin committed
115 116 117
            final TBoxOperation tBoxOperation = this.boxOperationService.getOne(queryWrapper);
            if (tBoxOperation != null) {
                final String organId = tBoxOperation.getOrganId();
liqin's avatar
liqin committed
118 119
                final TUser tUser = getcurUser();
                if (tUser != null && organId.equals(tUser.getOrgId())) {
liqin's avatar
liqin committed
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
//                    final String countStr = this.stringRedisTemplate.opsForValue().get(macAddress + "_count");
//                    if (StringUtils.isNotBlank(countStr)) {
//                        final long count = Long.parseLong(countStr);
//                        if (count > 1) {
//                            JSONObject jsonObject = new JSONObject();
//                            jsonObject.put("key", "");
//                            return getFailResult("400", "已经获取过一次,无法再次获取", jsonObject);
//                        }
//                    } else if (tBoxOperation.getRequestCount() > 1) {
//                        JSONObject jsonObject = new JSONObject();
//                        jsonObject.put("key", "");
//                        return getFailResult("400", "已经获取过一次,无法再次获取", jsonObject);
//                    }
//                    this.stringRedisTemplate.opsForValue().increment(macAddress + "_count");
//                    tBoxOperation.setRequestCount(tBoxOperation.getRequestCount() + 1);
//                    this.boxOperationService.updateById(tBoxOperation);
liqin's avatar
liqin committed
136

liqin's avatar
liqin committed
137 138 139
                    JSONObject jsonObject = new JSONObject();
                    jsonObject.put("key", tBoxOperation.getPrivateKey());
                    return getResult(jsonObject);
liqin's avatar
liqin committed
140
                } else {
liqin's avatar
liqin committed
141
                    return getFailResult("1109", "账号认证失败");
liqin's avatar
liqin committed
142
                }
liqin's avatar
liqin committed
143
            }
liqin's avatar
liqin committed
144
            return getFailResult("400", "系统未查询到此机顶盒相关信息");
liqin's avatar
liqin committed
145 146 147 148 149 150
        } catch (Exception e) {
            e.printStackTrace();
        }
        return getFailResult();
    }

wzp's avatar
wzp committed
151 152
    @ApiOperation(value = "机顶盒激活状态查询", notes = "机顶盒激活状态查询")
    @GetMapping("/equitment/activity")
wzp's avatar
wzp committed
153
    //@RequiresAuthentication  //@RequiresPermissions("/equitment/activity/")
wzp's avatar
wzp committed
154 155 156
    public Map<String, Object> getActivity(@RequestParam(required = true) String mac) {
        try {
            UpdateWrapper<TBoxOperation> wrapper = new UpdateWrapper<>();
liqin's avatar
liqin committed
157
            wrapper.eq("mac", mac.toUpperCase());
wzp's avatar
wzp committed
158
            TBoxOperation one = boxOperationService.getOne(wrapper);
wzp's avatar
wzp committed
159 160
            HashMap<Object, Object> map = new HashMap<>();
            map.put("activityStatus", false);
wzp's avatar
wzp committed
161
            if (one != null) {
wzp's avatar
wzp committed
162 163 164 165 166 167 168 169
                map.put("activityStatus", true);
            }
            return getResult(map);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return getFailResult();
    }
wzp's avatar
wzp committed
170

liqin's avatar
liqin committed
171
    @RequestMapping(value = "/user/webLogin", method = RequestMethod.POST)
wzp's avatar
wzp committed
172
    public Map<String, Object> login(@RequestParam(value = "username") String username,
liqin's avatar
liqin committed
173 174
                                     @RequestParam(value = "password") String password,
                                     @RequestParam(value = "mac") String mac) {
liqin's avatar
liqin committed
175
        JSONObject resultMap = new JSONObject(true);
wzp's avatar
wzp committed
176
        TUser user;
liqin's avatar
liqin committed
177 178
        if (StringUtils.isNoneBlank(username)) {
            try {
wzp's avatar
wzp committed
179
                //访问一次,计数一次
wzp's avatar
wzp committed
180 181 182 183 184 185
//                ValueOperations<String, String> opsForValue = stringRedisTemplate.opsForValue();
//                if ("LOCK".equals(opsForValue.get(SHIRO_IS_LOCK + username))) {
//                    resultMap.put("resultCode", "400");
//                    resultMap.put("message", "由于密码输入错误次数大于5次,12小时内帐号已禁止登录!请您联系相关管理人员,联系电话:13924551212,邮箱:325346534@zh.com。");
//                    return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(resultMap);
//                }
wzp's avatar
wzp committed
186 187
                user = userService.selectByUsername(username);
                if (user == null) {
wzp's avatar
wzp committed
188
                    resultMap.put("resultCode", "400");
wzp's avatar
wzp committed
189
                    resultMap.put("message", "用户名或密码不正确!");
wzp's avatar
wzp committed
190
                    return resultMap;
wzp's avatar
wzp committed
191
                }
wzp's avatar
wzp committed
192
                TBoxOperation operation = boxOperationService.getOne(new UpdateWrapper<TBoxOperation>().eq("organ_id", user.getOrgId()));
liqin's avatar
liqin committed
193
                if (operation == null || "".equals(operation.getMac())) {
wzp's avatar
wzp committed
194
                    resultMap.put("resultCode", "400");
wzp's avatar
wzp committed
195
                    resultMap.put("message", "用户未激活!");
wzp's avatar
wzp committed
196
                    return resultMap;
wzp's avatar
wzp committed
197
                }
wzp's avatar
wzp committed
198
                //解密
liqin's avatar
liqin committed
199 200
                mac = AESUtils.aesDecrypt(mac);
                password = AESUtils.aesDecrypt(password);
wzp's avatar
wzp committed
201

liqin's avatar
liqin committed
202
                if (!mac.toUpperCase().equals(operation.getMac().toUpperCase())) {
wzp's avatar
wzp committed
203
                    resultMap.put("resultCode", "400");
wzp's avatar
wzp committed
204
                    resultMap.put("message", "mac地址不正确!");
wzp's avatar
wzp committed
205
                    return resultMap;
wzp's avatar
wzp committed
206
                }
wzp's avatar
wzp committed
207
                if (AuditOperationEnum.DISABLE.name().equals(user.getStatus())) {
wzp's avatar
wzp committed
208 209 210 211 212 213 214 215 216 217 218
                    throw new DisabledAccountException("此帐号已禁用,请联系管理员!");
                }

                if (user.getPermanent() != null && !user.getPermanent()) {
                    if (user.getEffectiveDate().isAfter(LocalDate.now()) || user.getExiredDate().isBefore(LocalDate.now())) {
                        throw new DisabledAccountException("此帐号已失效,请联系管理员!");
                    }
                }

                byte[] salt = user.getPasswordSalt();
                if (!new String(SHA256PasswordEncryptionService.createPasswordHash(password, salt)).equals(new String(user.getPasswordHash()))) {
wzp's avatar
wzp committed
219 220 221 222 223 224 225 226 227
//                    opsForValue.increment(SHIRO_LOGIN_COUNT + username, 1);
//                    //计数大于5时,设置用户被锁定一小时
//                    String s = opsForValue.get(SHIRO_LOGIN_COUNT + username);
//                    if (StringUtils.isNotBlank(s)) {
//                        if (Integer.parseInt(s) >= 5) {
//                            opsForValue.set(SHIRO_IS_LOCK + username, "LOCK");
//                            stringRedisTemplate.expire(SHIRO_IS_LOCK + username, 12, TimeUnit.HOURS);
//                        }
//                    }
liqin's avatar
liqin committed
228 229
                    throw new IncorrectCredentialsException("用户名或密码不正确!");
                }
wzp's avatar
wzp committed
230
                String token = JwtTokenUtil.sign(username, user.getId());
liqin's avatar
liqin committed
231
                // 将token信息存入Redis
wzp's avatar
wzp committed
232
                stringRedisTemplate.opsForValue().set(SHIRO_JWT_TOKEN + token, user.getId(), 240, TimeUnit.MINUTES);
liqin's avatar
liqin committed
233 234 235

                JSONObject jsonObject = new JSONObject(true);
                jsonObject.put("token", token);
wzp's avatar
wzp committed
236 237
                jsonObject.put("userId", user.getId());
                jsonObject.put("userName", user.getUserName());
liqin's avatar
liqin committed
238
                jsonObject.put("expire", TimeUtils.format(LocalDateTime.now().plusMinutes(240), TimeUtils.FORMAT_ONE));
wzp's avatar
wzp committed
239
                jsonObject.put("expireDate", user.getExiredDate());
liqin's avatar
liqin committed
240 241
                jsonObject.put("orgId", user.getOrgId());
                jsonObject.put("orgCode", user.getOrgCode());
wzp's avatar
wzp committed
242
                jsonObject.put("orgName", user.getOrgName());
liqin's avatar
liqin committed
243

wzp's avatar
wzp committed
244
                resultMap.put("resultCode", "200");
wzp's avatar
wzp committed
245
                resultMap.put("message", "登录成功");
liqin's avatar
liqin committed
246
                resultMap.put("data", jsonObject);
wzp's avatar
wzp committed
247
                return resultMap;
liqin's avatar
liqin committed
248
            } catch (Exception e) {
wzp's avatar
wzp committed
249
                resultMap.put("resultCode", "500");
liqin's avatar
liqin committed
250 251 252
                resultMap.put("message", e.getMessage());
            }
        }
wzp's avatar
wzp committed
253
        return getFailResult(resultMap.get("message"));
liqin's avatar
liqin committed
254 255 256 257
    }

    @ApiOperation(value = "获取单个成员信息")
    @GetMapping(value = "/user/getUserInfo")
wzp's avatar
wzp committed
258
    @RequiresAuthentication
wzp's avatar
wzp committed
259
    public Map<String, Object> getById(String userId) {
wzp's avatar
wzp committed
260
        JSONObject resultMap = new JSONObject(true);
liqin's avatar
liqin committed
261
        try {
wzp's avatar
wzp committed
262
            TUser user = userService.getById(userId);
wzp's avatar
wzp committed
263
            TOrgan organ = organService.getById(user.getOrgId());
liqin's avatar
liqin committed
264

wzp's avatar
wzp committed
265
            if (null == user) {
wzp's avatar
wzp committed
266
                resultMap.put("resultCode", "400");
wzp's avatar
wzp committed
267 268
                resultMap.put("message", "用户不存在");
                resultMap.put("data", "");
wzp's avatar
wzp committed
269
                return resultMap;
liqin's avatar
liqin committed
270 271
            }

wzp's avatar
wzp committed
272 273 274
            HashMap<String, Object> map = new HashMap<>();
            map.put("userId", user.getId());
            map.put("userName", user.getUserName());
wzp's avatar
wzp committed
275
//            long expire = stringRedisTemplate.getExpire(SHIRO_JWT_TOKEN + token) == null ? 0L : stringRedisTemplate.getExpire(SHIRO_JWT_TOKEN + token);
wzp's avatar
wzp committed
276
            //jsonObject.put("expire", TimeUtils.format(LocalDateTime.now().plusMinutes(expire), TimeUtils.FORMAT_ONE));
wzp's avatar
wzp committed
277 278 279 280
            map.put("effectiveDate", user.getEffectiveDate());
            map.put("expireDate", user.getExiredDate());
            map.put("orgCode", user.getOrgId());
            map.put("orgName", organ.getName());
wzp's avatar
wzp committed
281

wzp's avatar
wzp committed
282
            resultMap.put("resultCode", "200");
liqin's avatar
liqin committed
283
            resultMap.put("message", "成功");
wzp's avatar
wzp committed
284
            resultMap.put("data", map);
wzp's avatar
wzp committed
285
            return resultMap;
liqin's avatar
liqin committed
286
        } catch (Exception e) {
wzp's avatar
wzp committed
287
            resultMap.put("resultCode", "500");
wzp's avatar
wzp committed
288
            resultMap.put("message", "获取单个成员信息失败!");
liqin's avatar
liqin committed
289
        }
wzp's avatar
wzp committed
290
        return getFailResult();
liqin's avatar
liqin committed
291 292
    }

liqin's avatar
liqin committed
293
    @RequestMapping(value = "/user/logout", method = RequestMethod.GET)
wzp's avatar
wzp committed
294
    @RequiresAuthentication
wzp's avatar
wzp committed
295
    public Map<String, Object> logout() {
wzp's avatar
wzp committed
296
        String token = request.getHeader("Authorization");
wzp's avatar
wzp committed
297
        JSONObject resultMap = new JSONObject(true);
wzp's avatar
wzp committed
298 299 300
        if (token.startsWith("Bearer ")) {
            token = token.substring(7);
        }
liqin's avatar
liqin committed
301 302
        try {
            if (StringUtils.isNotBlank(token)) {
wzp's avatar
wzp committed
303
//                SecurityUtils.getSubject().logout();
wzp's avatar
wzp committed
304

liqin's avatar
liqin committed
305 306
                this.stringRedisTemplate.delete(SHIRO_JWT_TOKEN + token);
            }
wzp's avatar
wzp committed
307
            resultMap.put("resultCode", "200");
liqin's avatar
liqin committed
308 309
            resultMap.put("message", "成功");
            resultMap.put("data", "");
wzp's avatar
wzp committed
310
            return resultMap;
liqin's avatar
liqin committed
311
        } catch (Exception e) {
wzp's avatar
wzp committed
312
            resultMap.put("resultCode", "500");
wzp's avatar
wzp committed
313 314
            resultMap.put("message", "注销错误!");
        }
wzp's avatar
wzp committed
315
        return getFailResult("注销错误!");
wzp's avatar
wzp committed
316 317 318 319 320 321
    }

    /**
     * 插入机顶盒日志表
     */
    @ApiOperation(value = "插入机顶盒日志表", notes = "插入机顶盒日志表")
wzp's avatar
wzp committed
322
    @PostMapping(value = "/equitment/runLog")
wzp's avatar
wzp committed
323
    @RequiresAuthentication
wzp's avatar
wzp committed
324
    public Map<String, Object> insertRunLog(RunLog runLog) {
wzp's avatar
wzp committed
325 326 327 328
        JSONObject resultMap = new JSONObject();

        try {
            boolean b = runLogService.insertRunLog(runLog);
wzp's avatar
wzp committed
329
            resultMap.put("resultCode", "200");
wzp's avatar
wzp committed
330 331
            resultMap.put("message", "成功");
            resultMap.put("data", "");
wzp's avatar
wzp committed
332
            return resultMap;
wzp's avatar
wzp committed
333
        } catch (Exception e) {
wzp's avatar
wzp committed
334
            resultMap.put("resultCode", "500");
wzp's avatar
wzp committed
335 336
            resultMap.put("message", "失败");
            resultMap.put("data", "");
liqin's avatar
liqin committed
337
        }
wzp's avatar
wzp committed
338
        return getFailResult();
liqin's avatar
liqin committed
339 340
    }

liqin's avatar
liqin committed
341
    @ApiImplicitParams(value = {
liqin's avatar
liqin committed
342
            @ApiImplicitParam(name = "boardId", value = "展板内容ID", paramType = "query", dataType = "String", required = true)
liqin's avatar
liqin committed
343
    })
liqin's avatar
liqin committed
344
    @ApiOperation(value = "查询展板视频/语音导览语言列表", notes = "查询展板视频/语音导览语言列表")
liqin's avatar
liqin committed
345
    @GetMapping(value = "/exhibitionBoard/language")
wzp's avatar
wzp committed
346
    @RequiresAuthentication
liqin's avatar
liqin committed
347
    public Map<String, Object> getExhibitionBoardVideoLanguageList(@RequestParam(value = "boardId") String boardId) {
wzp's avatar
wzp committed
348
        JSONObject resultMap = new JSONObject();
liqin's avatar
liqin committed
349
        Map<String, List<Map<String, String>>> langMap = new LinkedHashMap<>(2);
wzp's avatar
wzp committed
350
        try {
liqin's avatar
liqin committed
351
            List<Map<String, String>> videoList = new ArrayList<>();
liqin's avatar
liqin committed
352 353
            final ExhibitionBoard exhibitionBoard = this.exhibitionBoardService.getById(boardId);
            final String videoContentId = exhibitionBoard.getVideoContentId();
liqin's avatar
liqin committed
354
            LambdaQueryWrapper<Asset> assetLambdaQueryWrapper = Wrappers.<Asset>lambdaQuery().eq(Asset::getRefItemId, videoContentId).eq(Asset::getPublished, true);
liqin's avatar
liqin committed
355 356 357 358
            List<Asset> assetList = this.assetService.list(assetLambdaQueryWrapper);
            List<String> languageList = assetList.stream().map(Asset::getLanguage).collect(Collectors.toList());
            for (LanguageEnum languageEnum : LanguageEnum.values()) {
                if (languageList.contains(languageEnum.name())) {
liqin's avatar
liqin committed
359
                    Map<String, String> map = new LinkedHashMap<>(2);
liqin's avatar
liqin committed
360 361 362 363 364 365 366 367 368 369
                    map.put("code", languageEnum.name());
                    map.put("name", languageEnum.getName());
                    videoList.add(map);
                }
            }
            langMap.put("video", videoList);

            assetLambdaQueryWrapper.clear();
            List<Map<String, String>> audioList = new ArrayList<>();
            assetLambdaQueryWrapper = Wrappers.<Asset>lambdaQuery().eq(Asset::getRefItemId, boardId);
liqin's avatar
liqin committed
370
            assetLambdaQueryWrapper.eq(Asset::getPublished, true);
liqin's avatar
liqin committed
371 372 373
            assetLambdaQueryWrapper.eq(Asset::getFileCat, FileCatEnum.EXHIBITION_BOARD_AUDIO);
            assetList = this.assetService.list(assetLambdaQueryWrapper);
            languageList = assetList.stream().map(Asset::getLanguage).collect(Collectors.toList());
liqin's avatar
liqin committed
374 375
            for (LanguageEnum languageEnum : LanguageEnum.values()) {
                if (languageList.contains(languageEnum.name())) {
liqin's avatar
liqin committed
376
                    Map<String, String> map = new LinkedHashMap<>(2);
liqin's avatar
liqin committed
377 378
                    map.put("code", languageEnum.name());
                    map.put("name", languageEnum.getName());
liqin's avatar
liqin committed
379
                    audioList.add(map);
liqin's avatar
liqin committed
380
                }
liqin's avatar
liqin committed
381
            }
liqin's avatar
liqin committed
382 383
            langMap.put("audio", audioList);

wzp's avatar
wzp committed
384
            resultMap.put("resultCode", "200");
wzp's avatar
wzp committed
385
            resultMap.put("message", "成功");
liqin's avatar
liqin committed
386
            resultMap.put("data", langMap);
wzp's avatar
wzp committed
387
            return resultMap;
wzp's avatar
wzp committed
388
        } catch (Exception e) {
liqin's avatar
liqin committed
389
            resultMap.put("resultCode", "400");
liqin's avatar
liqin committed
390
            resultMap.put("message", "该展板已下架");
wzp's avatar
wzp committed
391 392
            resultMap.put("data", "");
        }
liqin's avatar
liqin committed
393
        return getFailResult("400", "该展板已下架");
wzp's avatar
wzp committed
394 395
    }

liqin's avatar
liqin committed
396 397 398
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "_index", value = "分页起始偏移量", paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "_size", value = "返回条数", paramType = "query", dataType = "Integer"),
liqin's avatar
liqin committed
399
            @ApiImplicitParam(name = "learningContentId", value = "学习内容ID", paramType = "query", dataType = "String")
liqin's avatar
liqin committed
400
    })
liqin's avatar
liqin committed
401
    @PostMapping("/exhibitionBoard/getPage")
wzp's avatar
wzp committed
402
    @RequiresAuthentication  //@RequiresPermissions("exhibition:board:page")
liqin's avatar
liqin committed
403
    @ApiOperation(value = "展板列表查询", notes = "展板列表查询")
liqin's avatar
liqin committed
404
    public Map<String, Object> getExhibitionBoardPageList(@RequestParam(value = "learningContentId", required = false) String learningContentId) {
liqin's avatar
liqin committed
405
        final IPage<ExhibitionBoard> page = this.learningContentBoardService.getBoardPageByLearningContentId(getPage(), learningContentId, null);
liqin's avatar
liqin committed
406
        for (ExhibitionBoard exhibitionBoard : page.getRecords()) {
liqin's avatar
liqin committed
407 408 409
            exhibitionBoard.setLearningContentId(learningContentId);
            if (exhibitionBoard.getVideoContentCopyrightOwnerId() != null) {
                String name = this.copyrightOwnerService.getById(exhibitionBoard.getVideoContentCopyrightOwnerId()).getName();
liqin's avatar
liqin committed
410 411 412 413 414 415
                exhibitionBoard.setBoardCopyrightOwnerName(name);
            }
            if (exhibitionBoard.getExhibitionBoardCatId() != null) {
                String name = this.exhibitionBoardCatService.getById(exhibitionBoard.getExhibitionBoardCatId()).getName();
                exhibitionBoard.setExhibitionBoardCatName(name);
            }
liqin's avatar
liqin committed
416
            if (exhibitionBoard.getVideoContentId() != null) {
liqin's avatar
liqin committed
417
                final VideoContent videoContent = this.videoContentService.getById(exhibitionBoard.getVideoContentId());
liqin's avatar
liqin committed
418
                if (videoContent != null) {
liqin's avatar
liqin committed
419 420
                    exhibitionBoard.setBoardVideoContentThumbnail(videoContent.getThumbnail());
                }
liqin's avatar
liqin committed
421
            }
liqin's avatar
liqin committed
422
            LambdaQueryWrapper<Asset> assetQueryWrapper = Wrappers.<Asset>lambdaQuery().eq(Asset::getRefItemId, exhibitionBoard.getVideoContentId());
liqin's avatar
liqin committed
423
            assetQueryWrapper.eq(Asset::getPublished, true);
liqin's avatar
liqin committed
424
            assetQueryWrapper.eq(Asset::getFileCat, FileCatEnum.VIDEO_CONTENT.name());
liqin's avatar
liqin committed
425
            List<Asset> videoList = this.assetService.list(assetQueryWrapper);
liqin's avatar
liqin committed
426 427 428

            assetQueryWrapper.clear();
            assetQueryWrapper = Wrappers.<Asset>lambdaQuery().eq(Asset::getRefItemId, exhibitionBoard.getId());
liqin's avatar
liqin committed
429
            assetQueryWrapper.eq(Asset::getPublished, true);
liqin's avatar
liqin committed
430 431
            assetQueryWrapper.eq(Asset::getFileCat, FileCatEnum.EXHIBITION_BOARD_DATUM.name());
            List<Asset> datumList = this.assetService.list(assetQueryWrapper);
wzp's avatar
wzp committed
432 433 434
            for (Asset asset : datumList) {
                asset.setExhibitionBoardName(exhibitionBoard.getName());
            }
liqin's avatar
liqin committed
435 436 437
            exhibitionBoard.setDatumList(datumList);

            videoList.addAll(datumList.stream().filter(x -> FileTypeEnum.VIDEO.name().equalsIgnoreCase(x.getFileType())).collect(Collectors.toList()));
liqin's avatar
liqin committed
438
            exhibitionBoard.setVideoList(videoList);
liqin's avatar
liqin committed
439
        }
liqin's avatar
liqin committed
440
        return getResult(page);
liqin's avatar
liqin committed
441 442
    }

liqin's avatar
liqin committed
443
    @ApiOperation(value = "展板详情查询", notes = "展板详情查询")
liqin's avatar
liqin committed
444
    @ApiImplicitParams({
liqin's avatar
liqin committed
445
            @ApiImplicitParam(name = "boardId", value = "展板ID", dataType = "String", paramType = "query"),
liqin's avatar
liqin committed
446 447
            @ApiImplicitParam(name = "videoLanguage", value = "语言", dataType = "String", paramType = "query"),
            @ApiImplicitParam(name = "audioLanguage", value = "语言", dataType = "String", paramType = "query")
liqin's avatar
liqin committed
448
    })
liqin's avatar
liqin committed
449
    @GetMapping("/exhibitionBoard/getBoardInfo")
wzp's avatar
wzp committed
450
    @RequiresAuthentication
liqin's avatar
liqin committed
451 452 453
    public Map<String, Object> getById(@RequestParam(value = "boardId") String id,
                                       @RequestParam(value = "videoLanguage", required = false) LanguageEnum videoLanguage,
                                       @RequestParam(value = "audioLanguage", required = false) LanguageEnum audioLanguage) {
liqin's avatar
liqin committed
454
        ExhibitionBoard exhibitionBoard = exhibitionBoardService.getById(id);
liqin's avatar
liqin committed
455 456 457 458 459 460 461 462
        String exhibitionBoardCatId = exhibitionBoard.getExhibitionBoardCatId();
        if (exhibitionBoardCatId != null) {
            exhibitionBoard.setExhibitionBoardCatName(this.exhibitionBoardCatService.getById(exhibitionBoardCatId).getName());
        }
        String boardCopyrightOwnerId = exhibitionBoard.getBoardCopyrightOwnerId();
        if (boardCopyrightOwnerId != null) {
            exhibitionBoard.setBoardCopyrightOwnerName(this.copyrightOwnerService.getById(boardCopyrightOwnerId).getName());
        }
liqin's avatar
liqin committed
463 464 465 466
        if (exhibitionBoard.getVideoContentCopyrightOwnerId() != null) {
            String name = this.copyrightOwnerService.getById(exhibitionBoard.getVideoContentCopyrightOwnerId()).getName();
            exhibitionBoard.setVideoContentCopyrightOwnerName(name);
        }
liqin's avatar
liqin committed
467 468 469 470
        if (exhibitionBoard.getVideoContentId() != null) {
            String thumbnail = this.videoContentService.getById(exhibitionBoard.getVideoContentId()).getThumbnail();
            exhibitionBoard.setBoardVideoContentThumbnail(thumbnail);
        }
liqin's avatar
liqin committed
471

liqin's avatar
liqin committed
472
        LambdaQueryWrapper<Asset> assetQueryWrapper = Wrappers.<Asset>lambdaQuery().eq(Asset::getRefItemId, id);
liqin's avatar
liqin committed
473
        assetQueryWrapper.eq(Asset::getPublished, true);
liqin's avatar
liqin committed
474
        assetQueryWrapper.eq(Asset::getFileCat, FileCatEnum.EXHIBITION_BOARD_AUDIO.name());
liqin's avatar
liqin committed
475 476
        if (audioLanguage != null) {
            assetQueryWrapper.eq(Asset::getLanguage, audioLanguage.name());
liqin's avatar
liqin committed
477
        }
liqin's avatar
liqin committed
478
        final List<Asset> audioList = this.assetService.list(assetQueryWrapper);
liqin's avatar
liqin committed
479 480 481 482 483 484 485 486 487 488
        List<String> languageList = audioList.stream().map(Asset::getLanguage).collect(Collectors.toList());
        List<Map<String, String>> audioLanguageList = new ArrayList<>();
        for (LanguageEnum languageEnum : LanguageEnum.values()) {
            if (languageList.contains(languageEnum.name())) {
                Map<String, String> map = new LinkedHashMap<>(2);
                map.put("code", languageEnum.name());
                map.put("name", languageEnum.getName());
                audioLanguageList.add(map);
            }
        }
liqin's avatar
liqin committed
489
        exhibitionBoard.setAudioList(audioList);
liqin's avatar
liqin committed
490
        exhibitionBoard.setAudioLanguageList(audioLanguageList);
liqin's avatar
liqin committed
491 492

        assetQueryWrapper.clear();
liqin's avatar
liqin committed
493
        assetQueryWrapper = Wrappers.<Asset>lambdaQuery().eq(Asset::getRefItemId, id);
liqin's avatar
liqin committed
494
        assetQueryWrapper.eq(Asset::getPublished, true);
liqin's avatar
liqin committed
495 496 497 498 499 500 501 502 503 504 505
        assetQueryWrapper.eq(Asset::getFileCat, FileCatEnum.EXHIBITION_BOARD_DATUM.name());
        final List<Asset> datumList = this.assetService.list(assetQueryWrapper);
        exhibitionBoard.setDatumList(datumList);

        final String videoContentId = exhibitionBoard.getVideoContentId();
        if (videoContentId != null) {
            final VideoContent videoContent = this.videoContentService.getById(videoContentId);
            exhibitionBoard.setVideoContentName(videoContent.getName());

            assetQueryWrapper.clear();
            assetQueryWrapper = Wrappers.<Asset>lambdaQuery().eq(Asset::getRefItemId, videoContentId);
liqin's avatar
liqin committed
506
            assetQueryWrapper.eq(Asset::getPublished, true);
liqin's avatar
liqin committed
507
            assetQueryWrapper.eq(Asset::getFileCat, FileCatEnum.VIDEO_CONTENT.name());
liqin's avatar
liqin committed
508 509
            if (videoLanguage != null) {
                assetQueryWrapper.eq(Asset::getLanguage, videoLanguage.name());
liqin's avatar
liqin committed
510
            }
liqin's avatar
liqin committed
511
            final List<Asset> videoList = this.assetService.list(assetQueryWrapper);
liqin's avatar
liqin committed
512 513 514 515 516 517 518 519 520 521 522
            languageList.clear();
            languageList = videoList.stream().map(Asset::getLanguage).collect(Collectors.toList());
            List<Map<String, String>> videoLanguageList = new ArrayList<>();
            for (LanguageEnum languageEnum : LanguageEnum.values()) {
                if (languageList.contains(languageEnum.name())) {
                    Map<String, String> map = new LinkedHashMap<>(2);
                    map.put("code", languageEnum.name());
                    map.put("name", languageEnum.getName());
                    videoLanguageList.add(map);
                }
            }
liqin's avatar
liqin committed
523
            exhibitionBoard.setVideoList(videoList);
liqin's avatar
liqin committed
524
            exhibitionBoard.setVideoLanguageList(videoLanguageList);
liqin's avatar
liqin committed
525
        }
liqin's avatar
liqin committed
526
        return getResult(exhibitionBoard);
liqin's avatar
liqin committed
527 528
    }

yangtianyou's avatar
yangtianyou committed
529
    @PostMapping("/equitment/playLog")
wzp's avatar
wzp committed
530
    @RequiresAuthentication  //@RequiresPermissions("t:board:statistic:statisticBoardInfo")
yangtianyou's avatar
yangtianyou committed
531 532 533
    @ApiOperation(value = "播放记录信息反馈", notes = "播放记录信息反馈")
    public Map<String, Object> boardStatisticInfo(@Validated(value = {Add.class}) TBoardStatistic tBoardStatistic) {
        // 展板信息统计
liqin's avatar
liqin committed
534 535
        try {
            Object result = tBoardStatisticService.boardStatisticInfo(tBoardStatistic, false);
yangtianyou's avatar
yangtianyou committed
536
            // 返回操作结果
liqin's avatar
liqin committed
537
            if (result != null && (boolean) result) {
yangtianyou's avatar
yangtianyou committed
538 539
                return getSuccessResult();
            }
liqin's avatar
liqin committed
540
        } catch (Exception e) {
yangtianyou's avatar
yangtianyou committed
541 542 543 544 545 546
            e.printStackTrace();
        }
        // 保存失败
        return getFailResult();
    }

wzp's avatar
wzp committed
547
    @Scheduled(cron = "0 0/5 * * * *")
liqin's avatar
liqin committed
548
    public void boardStatistic() {
wzp's avatar
wzp committed
549 550 551 552 553 554 555 556 557
        try {
            System.out.println("定时汇总播放记录开始...");
            tBoardStatisticService.boardStatisticInfo(null, true);
            System.out.println("定时汇总播放记录成功...");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

liqin's avatar
liqin committed
558 559 560 561 562 563 564
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "_index", value = "分页起始偏移量", paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "_size", value = "返回条数", paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "nameOrCode", value = "名称或编码", paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "startDate", value = "创建时间-开始", paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "endDate", value = "创建时间-结束", paramType = "query", dataType = "String")
    })
liqin's avatar
liqin committed
565
    @PostMapping("/learningProject/getPage")
wzp's avatar
wzp committed
566
    @RequiresAuthentication  //@RequiresPermissions("learning:project:page")
liqin's avatar
liqin committed
567
    @ApiOperation(value = "查询学习项目", notes = "查询学习项目")
liqin's avatar
liqin committed
568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591
    public Map<String, Object> getLearningProjectPageList(GenericPageParam genericPageParam) {
        LambdaQueryWrapper<LearningProject> queryWrapper = new LambdaQueryWrapper<>();
        // 对名称或编码模糊查询
        if (StringUtils.isNotBlank(genericPageParam.getNameOrCode())) {
            queryWrapper.like(LearningProject::getName, genericPageParam.getNameOrCode());
        }
        // 根据创建时间区间检索
        if (genericPageParam.getStartDate() != null && genericPageParam.getEndDate() != null) {
            queryWrapper.ge(LearningProject::getCreateTime, genericPageParam.getStartDate().atTime(0, 0, 0))
                    .le(LearningProject::getCreateTime, genericPageParam.getEndDate().atTime(23, 59, 59));
        }
        // 设置排序规则
        queryWrapper.orderByDesc(LearningProject::getCreateTime);
        // 设置查询内容
        queryWrapper.select(
                LearningProject::getId,
                LearningProject::getName,
                LearningProject::getRemarks,
                LearningProject::getCreateTime,
                LearningProject::getUpdateTime);
        Page<LearningProject> page = this.learningProjectService.page(getPage(), queryWrapper);
        for (LearningProject learningProject : page.getRecords()) {
            LambdaQueryWrapper<LearningContent> lambdaQueryWrapper = Wrappers.<LearningContent>lambdaQuery()
                    .eq(LearningContent::getLearningProjectId, learningProject.getId())
liqin's avatar
liqin committed
592 593
                    .eq(LearningContent::getPublished, true).orderByDesc(LearningContent::getSortorder);
            lambdaQueryWrapper.select(LearningContent::getName, LearningContent::getCover);
liqin's avatar
liqin committed
594
            List<LearningContent> learningContentList = this.learningContentService.list(lambdaQueryWrapper);
liqin's avatar
liqin committed
595 596 597 598 599
            if (!learningContentList.isEmpty()) {
                String learningContentNames = learningContentList.stream().map(LearningContent::getName).collect(Collectors.joining("、"));
                learningProject.setThumbnail(learningContentList.get(0).getCover());
                learningProject.setLearningContentNames(learningContentNames);
            }
liqin's avatar
liqin committed
600 601 602 603
        }
        return getResult(page);
    }

liqin's avatar
liqin committed
604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "_index", value = "分页起始偏移量", paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "_size", value = "返回条数", paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "learningProjectId", value = "学习项目ID", paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "nameOrCode", value = "名称或编码", paramType = "query", dataType = "String")
    })
    @PostMapping("/learningContent/getPage")
    @RequiresAuthentication  //@RequiresPermissions("learning:content:page")
    @ApiOperation(value = "查询学习内容", notes = "查询学习内容")
    public Map<String, Object> getLearningContentPageList(GenericPageParam genericPageParam,
                                                          @RequestParam(value = "learningProjectId", required = false) String learningProjectId) {
        LambdaQueryWrapper<LearningContent> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(LearningContent::getPublished, true);
        // 对名称或编码模糊查询
        if (StringUtils.isNotBlank(learningProjectId)) {
            queryWrapper.eq(LearningContent::getLearningProjectId, learningProjectId);
        }
        // 对名称或编码模糊查询
        if (StringUtils.isNotBlank(genericPageParam.getNameOrCode())) {
            queryWrapper.like(LearningContent::getName, genericPageParam.getNameOrCode());
        }
        // 根据创建时间区间检索
        if (genericPageParam.getStartDate() != null && genericPageParam.getEndDate() != null) {
            queryWrapper.ge(LearningContent::getCreateTime, genericPageParam.getStartDate().atTime(0, 0, 0))
                    .le(LearningContent::getCreateTime, genericPageParam.getEndDate().atTime(23, 59, 59));
        }
        // 设置排序规则
        queryWrapper.orderByDesc(LearningContent::getSortorder);
        // 设置查询内容
        queryWrapper.select(
                LearningContent::getId,
                LearningContent::getName,
                LearningContent::getCover,
                LearningContent::getSortorder,
                LearningContent::getCreateTime,
                LearningContent::getUpdateTime);
        Page<LearningContent> page = this.learningContentService.page(getPage(), queryWrapper);
        for (LearningContent learningContent : page.getRecords()) {
            LambdaQueryWrapper<LearningContentBoard> lambdaQueryWrapper = Wrappers.<LearningContentBoard>lambdaQuery().eq(LearningContentBoard::getLearningContentId, learningContent.getId());
            int exhibitionBoardCount = this.learningContentBoardService.count(lambdaQueryWrapper);
            learningContent.setExhibitionBoardCount(exhibitionBoardCount);
        }
        return getResult(page);
    }

liqin's avatar
liqin committed
649
    @ApiImplicitParams(value = {
liqin's avatar
liqin committed
650 651
            @ApiImplicitParam(name = "_index", value = "分页起始偏移量", paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "_size", value = "返回条数", paramType = "query", dataType = "Integer"),
liqin's avatar
liqin committed
652
            @ApiImplicitParam(name = "boardId", value = "展板内容ID", paramType = "path", dataType = "String", required = true)
liqin's avatar
liqin committed
653
    })
liqin's avatar
liqin committed
654
    @GetMapping("/exhibitionBoard/getRefMaterial/{boardId}")
wzp's avatar
wzp committed
655
    @RequiresAuthentication  //@RequiresPermissions("learning:project:page")
liqin's avatar
liqin committed
656
    @ApiOperation(value = "展板参考资料分页查询", notes = "展板参考资料分页查询")
liqin's avatar
liqin committed
657
    public Map<String, Object> getBoardRefMaterial(@PathVariable(value = "boardId") String boardId) {
liqin's avatar
liqin committed
658
        final ExhibitionBoard exhibitionBoard = this.exhibitionBoardService.getById(boardId);
liqin's avatar
liqin committed
659
        final LambdaQueryWrapper<Asset> assetQueryWrapper = Wrappers.<Asset>lambdaQuery().eq(Asset::getRefItemId, exhibitionBoard.getId());
liqin's avatar
liqin committed
660
        assetQueryWrapper.eq(Asset::getPublished, true);
liqin's avatar
liqin committed
661
        assetQueryWrapper.eq(Asset::getFileCat, FileCatEnum.EXHIBITION_BOARD_DATUM.name());
liqin's avatar
liqin committed
662
        final Page<Asset> datumList = this.assetService.page(this.getPage(), assetQueryWrapper);
liqin's avatar
liqin committed
663
        return getResult(datumList);
liqin's avatar
liqin committed
664 665 666 667 668
    }

    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "_index", value = "分页起始偏移量", paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "_size", value = "返回条数", paramType = "query", dataType = "Integer"),
liqin's avatar
liqin committed
669
            @ApiImplicitParam(name = "learningContentId", value = "学习内容ID", paramType = "query", dataType = "String"),
liqin's avatar
liqin committed
670 671 672
            @ApiImplicitParam(name = "nameOrCode", value = "名称或编码", paramType = "query", dataType = "String")
    })
    @PostMapping("/exhibitionBoard/search")
wzp's avatar
wzp committed
673
    @RequiresAuthentication  //@RequiresPermissions("learning:content:board:page")
liqin's avatar
liqin committed
674
    @ApiOperation(value = "模糊搜索查询", notes = "模糊搜索查询")
liqin's avatar
liqin committed
675 676
    public Map<String, Object> getLearningContentBoardPageList(GenericPageParam genericPageParam,
                                                               @RequestParam(value = "learningContentId", required = false) String learningContentId) {
liqin's avatar
liqin committed
677
        IPage<ExhibitionBoard> page = this.learningContentBoardService.getBoardPageByLearningContentId(getPage(), learningContentId, genericPageParam.getNameOrCode());
liqin's avatar
liqin committed
678 679 680
        return getResult(page);
    }

liqin's avatar
liqin committed
681 682 683 684 685
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "_index", value = "分页起始偏移量", paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "_size", value = "返回条数", paramType = "query", dataType = "Integer")
    })
    @PostMapping("/asset/search")
wzp's avatar
wzp committed
686
    @RequiresAuthentication  //@RequiresPermissions("learning:content:board:page")
liqin's avatar
liqin committed
687 688 689
    @ApiOperation(value = "获取当前用户可查看的视频信息", notes = "获取当前用户可查看的视频信息")
    public Map<String, Object> getAssetPageByOrganId() {
        final TUser tUser = getcurUser();
liqin's avatar
liqin committed
690 691 692 693 694
        if (tUser != null && tUser.getOrgCode() != null) {
            final String orgCode = tUser.getOrgCode();
            IPage<Asset> page = this.learningContentBoardService.getAssetPageByOrganCode(getPage(), orgCode);
            return getResult(page);
        }
liqin's avatar
liqin committed
695
        return getFailResult("1109", "账号认证失败");
liqin's avatar
liqin committed
696 697
    }

yangtianyou's avatar
yangtianyou committed
698 699 700 701 702
    @ApiOperation(value = "app最新版本查询")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "versionNo", value = "app版本号", dataType = "String", paramType = "query")
    })
    @GetMapping(value = "/version/check")
wzp's avatar
wzp committed
703
    @RequiresAuthentication  //@RequiresPermissions("app:version:check")
liqin's avatar
liqin committed
704
    public Map<String, Object> versionCheck(String versionNo) {
yangtianyou's avatar
yangtianyou committed
705 706 707
        TAppVersion current = new TAppVersion();//当前版本
        // 查询最新版本号信息
        QueryWrapper<TAppVersion> qw = new QueryWrapper<>();
liqin's avatar
liqin committed
708
        qw.eq("is_current", 1);
yangtianyou's avatar
yangtianyou committed
709 710
        qw.select().orderByDesc("update_time");
        List<TAppVersion> currentList = appVersionService.list(qw);
liqin's avatar
liqin committed
711
        if (currentList == null || currentList.size() == 0) {
yangtianyou's avatar
yangtianyou committed
712
            return getFailResult("未设置当前版本信息");
liqin's avatar
liqin committed
713
        } else {
yangtianyou's avatar
yangtianyou committed
714 715 716
            current = currentList.get(0);
        }
        Map map = new HashMap();
liqin's avatar
liqin committed
717 718

        if (StringUtils.isNotBlank(versionNo)) {
liqin's avatar
liqin committed
719 720 721 722 723 724 725 726 727 728 729 730
            final String[] versionNoArray = StringUtils.split(versionNo, ".");
            final String[] currentVersionNoArray = StringUtils.split(current.getAppVersion(), ".");
            if (Integer.parseInt(versionNoArray[0]) >= Integer.parseInt(currentVersionNoArray[0])) {
                if (Integer.parseInt(versionNoArray[1]) >= Integer.parseInt(currentVersionNoArray[1])) {
                    if (Integer.parseInt(versionNoArray[2]) >= Integer.parseInt(currentVersionNoArray[2])) {
                        map.put("isLatest", true);
                    } else {
                        map.put("isLatest", false);
                    }
                } else {
                    map.put("isLatest", false);
                }
liqin's avatar
liqin committed
731 732
            } else {
                map.put("isLatest", false);
liqin's avatar
liqin committed
733
            }
liqin's avatar
liqin committed
734
        } else {
liqin's avatar
liqin committed
735
            map.put("isLatest", false);
liqin's avatar
liqin committed
736
        }
wzp's avatar
wzp committed
737 738 739
        map.put("versionNo", current.getAppVersion());
        map.put("versionUrl", current.getApkUrl());
        map.put("updateLog", current.getUpdateLog());
740
        map.put("updateTime", current.getUpdateTime());
yangtianyou's avatar
yangtianyou committed
741 742
        return getResult(map);
    }
liqin's avatar
liqin committed
743

yangtianyou's avatar
yangtianyou committed
744 745
    @ApiOperation(value = "app界面图片查询")
    @GetMapping(value = "/app/picSelect")
wzp's avatar
wzp committed
746
    //@RequiresAuthentication  //@RequiresPermissions("app:pic:select")
liqin's avatar
liqin committed
747
    public Map<String, Object> appPicSelect() {
yangtianyou's avatar
yangtianyou committed
748 749 750 751
        TAppDirPic currentDir = null;// 当前目录页面
        TAppRunPic currentRun = null;// 当前运行画面
        // 查询当前目录界面信息
        QueryWrapper<TAppDirPic> qw = new QueryWrapper<>();
liqin's avatar
liqin committed
752
        qw.eq("is_current", 1);
yangtianyou's avatar
yangtianyou committed
753 754
        qw.select().orderByDesc("create_time");
        List<TAppDirPic> currentDirList = appDirPicService.list(qw);
liqin's avatar
liqin committed
755
        if (currentDirList != null && currentDirList.size() > 0) {
yangtianyou's avatar
yangtianyou committed
756 757 758
            currentDir = currentDirList.get(0);
        }
        QueryWrapper<TAppRunPic> qw1 = new QueryWrapper<>();
liqin's avatar
liqin committed
759
        qw1.eq("is_current", 1);
yangtianyou's avatar
yangtianyou committed
760 761
        qw1.select().orderByDesc("create_time");
        List<TAppRunPic> currentRunList = appRunPicService.list(qw1);
liqin's avatar
liqin committed
762
        if (currentRunList != null && currentRunList.size() > 0) {
yangtianyou's avatar
yangtianyou committed
763 764
            currentRun = currentRunList.get(0);
        }
liqin's avatar
liqin committed
765

yangtianyou's avatar
yangtianyou committed
766
        Map map = new HashMap();
wzp's avatar
wzp committed
767 768
        map.put("dirImgUrl", currentDir != null ? currentDir.getAppDirPic() : "未设置目录图片");
        map.put("runImgUrl", currentRun != null ? currentRun.getAppRunPic() : "未设置运行图片");
yangtianyou's avatar
yangtianyou committed
769 770
        return getResult(map);
    }
liqin's avatar
liqin committed
771
}